diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml
new file mode 100644
index 00000000..9d078a8f
--- /dev/null
+++ b/.github/codeql/codeql-config.yml
@@ -0,0 +1,15 @@
+name: agent-teams-codeql
+
+paths:
+ - src
+ - packages
+ - agent-teams-controller
+ - mcp-server
+ - scripts
+ - .github/workflows
+
+paths-ignore:
+ - '**/node_modules/**'
+ - 'test/**'
+ - 'landing/**'
+ - 'build/**'
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
new file mode 100644
index 00000000..f9242127
--- /dev/null
+++ b/.github/workflows/codeql.yml
@@ -0,0 +1,67 @@
+name: CodeQL
+
+on:
+ push:
+ branches: [main, dev]
+ paths:
+ - 'src/**'
+ - 'packages/**'
+ - 'agent-teams-controller/**'
+ - 'mcp-server/**'
+ - 'scripts/**'
+ - '.github/workflows/**'
+ - '.github/codeql/**'
+ - 'package.json'
+ - 'pnpm-lock.yaml'
+ - 'pnpm-workspace.yaml'
+ - 'tsconfig*.json'
+ pull_request:
+ paths:
+ - 'src/**'
+ - 'packages/**'
+ - 'agent-teams-controller/**'
+ - 'mcp-server/**'
+ - 'scripts/**'
+ - '.github/workflows/**'
+ - '.github/codeql/**'
+ - 'package.json'
+ - 'pnpm-lock.yaml'
+ - 'pnpm-workspace.yaml'
+ - 'tsconfig*.json'
+ schedule:
+ - cron: '34 3 * * 1'
+
+permissions:
+ contents: read
+
+jobs:
+ analyze:
+ name: Analyze (${{ matrix.language }})
+ runs-on: ubuntu-latest
+ timeout-minutes: 45
+ permissions:
+ actions: read
+ contents: read
+ security-events: write
+
+ strategy:
+ fail-fast: false
+ matrix:
+ language:
+ - actions
+ - javascript-typescript
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v6
+
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v4
+ with:
+ languages: ${{ matrix.language }}
+ config-file: ./.github/codeql/codeql-config.yml
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v4
+ with:
+ category: /language:${{ matrix.language }}
diff --git a/.github/workflows/reviewrouter-interaction.yml b/.github/workflows/reviewrouter-interaction.yml
index a018d65c..773b68d5 100644
--- a/.github/workflows/reviewrouter-interaction.yml
+++ b/.github/workflows/reviewrouter-interaction.yml
@@ -21,7 +21,7 @@ jobs:
if: ${{ github.event_name == 'workflow_dispatch' || ((github.event_name != 'issue_comment' || github.event.issue.pull_request) && github.event.comment.user.type != 'Bot') }}
env:
REVIEWROUTER_API_URL: "https://api.reviewrouter.site"
- REVIEWROUTER_ACTION_VERSION: "c23ae97660c3674a2ebc9076bb5cd4f1bbd85657"
+ REVIEWROUTER_ACTION_VERSION: "1603215454b4c5cf3387b40ae674a46eeb7ee96b"
REVIEWROUTER_OIDC_AUDIENCE: "reviewrouter"
REVIEWROUTER_RUNTIME_CONFIG_MODE: "oidc"
REVIEWROUTER_STATIC_CONFIG_FALLBACK: "true"
@@ -42,7 +42,7 @@ jobs:
- name: Preflight ReviewRouter interaction
id: preflight
- uses: 777genius/review-router@c23ae97660c3674a2ebc9076bb5cd4f1bbd85657
+ uses: 777genius/review-router@1603215454b4c5cf3387b40ae674a46eeb7ee96b
env:
GITHUB_TOKEN: ${{ github.token }}
REVIEW_ROUTER_MODE: "interaction-preflight"
@@ -78,7 +78,7 @@ jobs:
- name: Run ReviewRouter interaction
if: ${{ steps.preflight.outputs.should_run == 'true' }}
- uses: 777genius/review-router@c23ae97660c3674a2ebc9076bb5cd4f1bbd85657
+ uses: 777genius/review-router@1603215454b4c5cf3387b40ae674a46eeb7ee96b
env:
GITHUB_TOKEN: ${{ github.token }}
REVIEW_ROUTER_MODE: "interaction"
diff --git a/README.md b/README.md
index af6e04b0..e23d747c 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@
- You're the CTO, agents are your team. They handle tasks themselves, message each other, review each other. You just look at the kanban board and drink coffee.
+ You're the boss, agents are your team. They handle tasks themselves, message each other, review each other. You just look at the kanban board and drink coffee.
diff --git a/agent-teams-controller/package.json b/agent-teams-controller/package.json
index 902e6d05..9d486238 100644
--- a/agent-teams-controller/package.json
+++ b/agent-teams-controller/package.json
@@ -14,6 +14,6 @@
"test:watch": "vitest --config vitest.config.js"
},
"engines": {
- "node": ">=24.16.0 <25"
+ "node": ">=24.15.0 <25"
}
}
diff --git a/landing/.gitignore b/landing/.gitignore
index 392f1564..f4956f78 100644
--- a/landing/.gitignore
+++ b/landing/.gitignore
@@ -5,6 +5,7 @@ node_modules
.env
--host/
product-docs/.vitepress/dist/
+product-docs/.vitepress/cache/
# Large video files
public/video/*.mp4
diff --git a/landing/README.md b/landing/README.md
index fb679a08..566c0b0f 100644
--- a/landing/README.md
+++ b/landing/README.md
@@ -14,9 +14,35 @@ pnpm generate
pnpm preview
```
+## Render static sites
+
+Landing and docs are deployed as separate Render Static Sites from the `main` branch.
+
+Landing:
+
+```bash
+corepack enable && pnpm install --frozen-lockfile --ignore-scripts && NUXT_PUBLIC_SITE_URL=$RENDER_EXTERNAL_URL NUXT_PUBLIC_DOCS_SITE_URL=https://agent-teams-ai-docs.onrender.com NUXT_PUBLIC_ROBOTS="index, follow" pnpm --filter agent-teams-landing generate
+```
+
+Publish path: `landing/.output/public`
+
+Docs:
+
+```bash
+corepack enable && pnpm install --frozen-lockfile --ignore-scripts && VITEPRESS_BASE=/ VITEPRESS_SITE_URL=$RENDER_EXTERNAL_URL VITEPRESS_LANDING_SITE_URL=https://agent-teams-ai-landing.onrender.com pnpm --filter agent-teams-landing docs:build
+```
+
+Publish path: `landing/product-docs/.vitepress/dist`
+
+Both sites set `NODE_VERSION=24.16.0` and `SKIP_INSTALL_DEPS=true`; the build command runs the pnpm install step explicitly with `--ignore-scripts`.
+
+When a custom landing domain is attached, update `VITEPRESS_LANDING_SITE_URL` on the docs site. When a custom docs domain is attached, `VITEPRESS_SITE_URL=$RENDER_EXTERNAL_URL` can stay unchanged for the Render preview URL or be replaced with the custom domain for canonical SEO.
+
## Notes
+
- Static-first (SSG) by design.
- Locale auto-detection: cookie -> browser settings -> fallback `en`.
- Theme auto-detection: localStorage -> system preference -> fallback `light`.
- Hero video uses the Mux Player embed. Set `NUXT_PUBLIC_MUX_PLAYBACK_ID` to override the default playback id without changing the code.
- Hero background can use a separate Mux asset via `NUXT_PUBLIC_MUX_BACKGROUND_PLAYBACK_ID`; otherwise it reuses `NUXT_PUBLIC_MUX_PLAYBACK_ID`.
+- Set `NUXT_PUBLIC_DOCS_SITE_URL` when the docs are deployed as a separate static site.
diff --git a/landing/assets/styles/cyberpunk-hero.scss b/landing/assets/styles/cyberpunk-hero.scss
index e87b0f5e..14de0691 100644
--- a/landing/assets/styles/cyberpunk-hero.scss
+++ b/landing/assets/styles/cyberpunk-hero.scss
@@ -1943,8 +1943,12 @@
}
@media (max-width: 767px) {
+ #hero.cyber-hero {
+ padding-top: 64px;
+ }
+
.cyber-hero {
- padding: 84px 0 36px;
+ padding: 64px 0 8px;
}
.cyber-hero__background {
@@ -1962,19 +1966,21 @@
}
.cyber-hero__container {
- width: min(100% - 32px, 680px);
+ width: min(100% - 24px, 680px);
+ max-width: min(100% - 24px, 680px) !important;
+ padding-inline: 0 !important;
}
.cyber-hero__layout {
min-width: 0;
- gap: 0;
- overflow: hidden;
+ gap: 8px;
+ overflow: visible;
}
.cyber-hero__copy {
width: 100%;
max-width: 100%;
- padding-bottom: 0;
+ padding: 8px 0 0;
}
.cyber-hero__brand-lockup {
@@ -1988,28 +1994,40 @@
}
.cyber-hero__title {
- gap: 0.12em;
- font-size: clamp(2rem, 9.4vw, 3.1rem);
+ flex-wrap: wrap;
+ gap: 0.06em 0.12em;
+ margin-bottom: 16px;
+ max-width: 9.4em;
+ font-size: 2.35rem;
+ line-height: 0.96;
+ white-space: normal;
}
.cyber-hero__slogan {
display: flex;
width: 100%;
- padding: 10px 14px;
- letter-spacing: 0.04em;
+ margin-bottom: 16px;
+ padding: 9px 13px;
+ flex-wrap: wrap;
+ font-size: 0.72rem;
+ letter-spacing: 0.03em;
+ overflow-wrap: anywhere;
}
.cyber-hero__description {
- font-size: 1rem;
- line-height: 1.62;
+ margin-bottom: 18px;
+ max-width: 100%;
+ font-size: 0.95rem;
+ line-height: 1.5;
+ overflow-wrap: break-word;
}
.cyber-hero__providers {
- margin-bottom: 22px;
+ margin-bottom: 18px;
}
.cyber-hero__provider-list {
- gap: 12px 18px;
+ gap: 10px 14px;
}
.cyber-hero__provider {
@@ -2033,31 +2051,49 @@
.cyber-hero__actions {
display: grid;
grid-template-columns: 1fr;
+ gap: 12px;
+ margin-bottom: 12px;
}
.cyber-action-button.v-btn {
width: 100%;
- min-height: 72px !important;
+ min-height: 60px !important;
min-width: 0 !important;
- padding-inline: 20px !important;
+ padding-inline: 16px !important;
+ }
+
+ .cyber-action-button.v-btn .v-btn__content {
+ gap: 12px;
+ }
+
+ .cyber-action-button__icon {
+ width: 30px;
+ height: 30px;
+ }
+
+ .cyber-action-button__label {
+ font-size: 0.92rem;
+ }
+
+ .cyber-action-button__subtitle {
+ font-size: 0.62rem;
}
.cyber-hero__terminal-note {
- display: inline-flex;
- font-size: 0.68rem;
+ display: none;
}
.cyber-scene {
min-height: auto;
aspect-ratio: auto;
- padding: 96px 0 14px;
+ padding: 86px 0 2px;
transform: none;
}
.cyber-hero__scene {
width: 100%;
max-width: 100%;
- margin-top: 8px;
+ margin-top: 14px;
overflow: hidden;
}
@@ -2070,17 +2106,20 @@
position: relative;
left: auto;
top: auto;
- width: 100%;
+ width: min(100%, 320px);
+ margin-inline: auto;
transform: none;
}
.cyber-scene__robots {
inset: 0 0 auto;
- height: 96px;
+ z-index: 7;
+ height: 76px;
display: flex;
align-items: flex-end;
justify-content: center;
- gap: clamp(18px, 6vw, 34px);
+ gap: 18px;
+ overflow: visible;
}
.cyber-agent {
@@ -2089,7 +2128,7 @@
display: none;
left: auto;
top: auto;
- width: clamp(58px, 18vw, 74px);
+ width: 54px;
transform: none;
}
@@ -2099,7 +2138,7 @@
.cyber-agent[data-agent="planner"] {
z-index: auto;
- width: clamp(58px, 18vw, 74px);
+ width: 54px;
transform: none;
}
@@ -2145,93 +2184,18 @@
display: none;
}
- .cyber-feature-rail {
- grid-template-columns: 1fr;
- gap: 20px;
- padding: 0 4px;
- }
-
.cyber-feature-rail-shell {
- margin-top: clamp(104px, 24vw, 128px);
- }
-
- .cyber-feature-rail__collaboration {
- left: 31%;
- bottom: calc(100% + 8px);
- width: clamp(96px, 30vw, 124px);
- }
-
- .cyber-feature-rail__reviewer {
- --reviewer-robot-width: clamp(58px, 18vw, 72px);
-
- right: clamp(6px, 3vw, 16px);
- bottom: calc(100% + 8px);
- gap: 0;
- }
-
- .cyber-feature-rail__reviewer-card,
- .cyber-feature-rail__reviewer-bubble {
display: none;
}
+}
- .cyber-feature-rail__robot {
- top: 4px;
+@media (max-width: 360px) {
+ .cyber-hero__title {
+ font-size: 2.1rem;
}
- .cyber-feature-rail__item {
- grid-template-columns: 48px 44px minmax(0, 1fr);
- grid-template-rows: auto;
- align-items: center;
- justify-items: start;
- gap: 10px;
- padding: 0;
- text-align: left;
- }
-
- .cyber-feature-rail__icon {
- width: 44px;
- height: 44px;
- }
-
- .cyber-feature-rail__icon::before,
- .cyber-feature-rail__icon::after {
- width: 12px;
- height: 12px;
- }
-
- .cyber-feature-rail__icon .v-icon {
- font-size: 26px !important;
- }
-
- .cyber-feature-rail__node {
- width: 40px;
- height: 40px;
- font-size: 0.8rem;
- }
-
- .cyber-feature-rail__node::before {
- display: none;
- }
-
- .cyber-feature-rail__copy {
- max-width: none;
- padding: 8px 10px 9px;
- }
-
- .cyber-feature-rail__copy::before {
- inset: 0 -6px;
- border-radius: 14px;
- backdrop-filter: blur(9px) saturate(1.06);
- }
-
- .cyber-feature-rail__title {
- margin-bottom: 5px;
- font-size: 0.92rem;
- }
-
- .cyber-feature-rail__text {
- font-size: 0.78rem;
- line-height: 1.42;
+ .cyber-hero__provider-list {
+ gap: 9px 12px;
}
}
diff --git a/landing/components/layout/AppFooter.vue b/landing/components/layout/AppFooter.vue
index 52be6429..e5a8b025 100644
--- a/landing/components/layout/AppFooter.vue
+++ b/landing/components/layout/AppFooter.vue
@@ -1,15 +1,18 @@
diff --git a/landing/components/layout/AppHeader.vue b/landing/components/layout/AppHeader.vue
index fc7ed2bd..301bfe86 100644
--- a/landing/components/layout/AppHeader.vue
+++ b/landing/components/layout/AppHeader.vue
@@ -1,13 +1,18 @@
diff --git a/landing/product-docs/guide/beginner-workflow.md b/landing/product-docs/guide/beginner-workflow.md
new file mode 100644
index 00000000..91efd44e
--- /dev/null
+++ b/landing/product-docs/guide/beginner-workflow.md
@@ -0,0 +1,108 @@
+---
+title: "Beginner Workflow - Agent Teams Docs"
+description: "A structured first-run path for new users. Learn the project, team, task board, task detail, and review surfaces before launching larger teams."
+---
+
+# Beginner Workflow
+
+Use this path when you are new to Agent Teams and want a clear sequence from "open the app" to "approve useful work".
+
+The first run should prove four things:
+
+1. The app can open your project.
+2. A small team can launch with the selected runtime.
+3. Tasks move through the board in a visible way.
+4. You can review and approve changes before they are treated as done.
+
+## The basic model
+
+Agent Teams has four working surfaces:
+
+| Surface | What you do there |
+| --- | --- |
+| Project and team selector | Pick the project and the team that will work on it. |
+| Team editor | Name the team, add members, choose roles, models, and worktree settings. |
+| Task board | Watch work move through Todo, In Progress, Review, Done, and Approved. |
+| Task detail and review | Read the task, inspect logs, check changes, and approve or request fixes. |
+
+
+
+## Recommended guide order
+
+Follow these guides in order for the first successful run:
+
+1. [Create your first team](/guide/create-first-team) - set up a small lead-builder-reviewer team.
+2. [Run and monitor work](/guide/run-and-monitor-work) - give the lead a concrete goal and watch the task board.
+3. [Review and approve](/guide/review-and-approve) - inspect task details, logs, and code changes.
+4. [Troubleshooting](/guide/troubleshooting) - use this if launch, messages, or task logs do not look healthy.
+
+## Before you launch
+
+Start with a Git-tracked project and a known baseline:
+
+```bash
+git status --short
+```
+
+You do not need a perfectly clean tree, but you should know which files are already changed. That makes review safer after agents start editing.
+
+For the first run, keep the team small:
+
+| Member | Good first responsibility |
+| --- | --- |
+| Lead | Split the goal into tasks and coordinate status. |
+| Builder | Implement scoped tasks. |
+| Reviewer | Review completed tasks and ask for fixes. |
+
+Avoid launching many teammates at once. More agents increase logs, concurrent edits, provider usage, and review load.
+
+## First goal template
+
+Use a goal that has clear scope, boundaries, and verification:
+
+```text
+Improve the documentation quickstart. Keep edits inside landing/product-docs, add practical examples, preserve existing VitePress syntax, and run `pnpm --dir landing docs:build` before marking tasks done.
+```
+
+Good first goals are specific, testable, and limited to a known area. Avoid prompts like "make the app better" until you understand the workflow.
+
+## What healthy progress looks like
+
+During a healthy run:
+
+- The lead creates small tasks rather than one huge task.
+- Each teammate posts a plan or progress comment.
+- Work moves from Todo to In Progress.
+- Finished work moves to Review before approval.
+- The task detail shows the description, attachments, changes, and execution logs.
+- The final comment includes the verification command and result.
+
+## When to intervene
+
+Intervene when a task is vague, too broad, blocked, or missing verification. Use a task comment when the message belongs to one task. Use a direct message when you need to redirect a teammate or the lead.
+
+Common intervention prompts:
+
+```text
+Split this into smaller tasks. Each task should have a narrow file scope and a clear verification step.
+```
+
+```text
+Before continuing, post the files you plan to change and the command you will run to verify the result.
+```
+
+```text
+This task is too broad. Keep the change inside the docs guide pages and avoid touching app runtime code.
+```
+
+## Completion checklist
+
+Before you call the first run successful, verify:
+
+- The team launched without runtime errors.
+- At least one task moved through Review.
+- You inspected the task diff.
+- The result comment includes a verification result.
+- You understand which files changed and why.
+
+Then continue to [Create your first team](/guide/create-first-team).
diff --git a/landing/product-docs/guide/create-first-team.md b/landing/product-docs/guide/create-first-team.md
new file mode 100644
index 00000000..bba545a7
--- /dev/null
+++ b/landing/product-docs/guide/create-first-team.md
@@ -0,0 +1,111 @@
+---
+title: "Create Your First Team - Agent Teams Docs"
+description: "Step-by-step setup for a first Agent Teams team with lead, builder, reviewer, roles, models, worktree isolation, and a clear launch brief."
+---
+
+# Create Your First Team
+
+This guide walks through the first team setup. The goal is not to build the biggest team possible. The goal is to create a small team that launches reliably and produces reviewable tasks.
+
+## 1. Open the target project
+
+Open the project you want agents to work in. Prefer a Git-tracked project so Agent Teams can show diffs, task-linked changes, and review state.
+
+Before launching, check the baseline:
+
+```bash
+git status --short
+```
+
+If there are existing user changes, keep them in mind during review. Agent Teams can work in a dirty tree, but review is clearer when you know what existed before launch.
+
+## 2. Create the team
+
+Use the team selector, then create a new team for the current project. Give it a short operational name, such as `docs-onboarding`, `landing-fixes`, or `runtime-audit`.
+
+
+
+## 3. Start with three roles
+
+Use this first-team shape:
+
+| Role | Responsibility | Why it helps |
+| --- | --- | --- |
+| Lead | Splits the goal into tasks, assigns owners, tracks blockers. | Keeps work coordinated. |
+| Builder | Implements scoped tasks. | Produces the actual change. |
+| Reviewer | Reviews completed tasks and asks for fixes. | Prevents unreviewed output from being treated as complete. |
+
+You can add specialists later. For the first run, a small team is easier to debug and review.
+
+## 4. Choose provider and model per member
+
+Each member needs a provider and model. Use the most reliable runtime for the lead, because the lead controls task breakdown and coordination.
+
+Common first setup:
+
+| Member | Suggested provider style |
+| --- | --- |
+| Lead | The most reliable model you have available. |
+| Builder | A fast model that can handle scoped implementation. |
+| Reviewer | A careful model with stronger reasoning. |
+
+If a provider is missing, fix runtime setup before launching. See [Runtime setup](/guide/runtime-setup).
+
+## 5. Decide on Worktree
+
+Enable **Worktree** when teammates may edit the same repository in parallel and you want Git isolation. Keep it off for a very small first run if you want the simplest setup.
+
+Use Worktree when:
+
+- multiple teammates can edit code at the same time
+- you want cleaner diffs per member
+- the project is already Git-tracked
+
+Avoid Worktree when:
+
+- the project is not a Git repo
+- you are only testing the UI flow
+- you want the fewest moving parts for the first launch
+
+## 6. Write member instructions
+
+Give each member a short workflow. The member prompt should describe responsibility, not the whole project.
+
+Lead example:
+
+```text
+Split the user goal into small tasks. Assign clear owners, avoid broad refactors, keep task comments updated, and request review before approval.
+```
+
+Builder example:
+
+```text
+Implement only the assigned task. Keep changes scoped, post the files you changed, and include the verification command and result before marking work complete.
+```
+
+Reviewer example:
+
+```text
+Review completed tasks for correctness, regressions, missing tests, and scope creep. Ask for fixes with specific comments before approving.
+```
+
+## 7. Launch with a narrow goal
+
+Use a launch brief with outcome, scope, boundaries, and verification:
+
+```text
+Improve the docs onboarding path. Keep changes inside landing/product-docs. Create a beginner-friendly guide sequence, add practical examples, preserve VitePress syntax, and run `pnpm --dir landing docs:build`.
+```
+
+## 8. Confirm the launch is healthy
+
+After launch:
+
+- The lead should create tasks.
+- At least one teammate should start a task.
+- The board should show movement into In Progress.
+- Task comments or logs should show what the teammate is doing.
+
+If launch hangs or no tasks appear, go to [Troubleshooting](/guide/troubleshooting#team-does-not-launch).
+
+Next: [Run and monitor work](/guide/run-and-monitor-work).
diff --git a/landing/product-docs/guide/review-and-approve.md b/landing/product-docs/guide/review-and-approve.md
new file mode 100644
index 00000000..9a32c5c5
--- /dev/null
+++ b/landing/product-docs/guide/review-and-approve.md
@@ -0,0 +1,88 @@
+---
+title: "Review and Approve - Agent Teams Docs"
+description: "A beginner-friendly review workflow for task details, execution logs, code changes, hunk decisions, approvals, and fix requests."
+---
+
+# Review and Approve
+
+Do not treat agent work as finished until you have checked the task result, logs, and changes. Review is where you keep quality and scope under control.
+
+## 1. Open the task
+
+Start from a task in Review or Done. Read the title, owner, status, and description first.
+
+
+
+Look for:
+
+- a clear task goal
+- files or areas that match the requested scope
+- a final comment from the teammate
+- a verification command and result
+
+## 2. Check execution evidence
+
+Execution Logs answer the basic trust questions:
+
+| Question | What to look for |
+| --- | --- |
+| Did the agent actually work on this task? | Tool calls, comments, and status changes inside the task timeline. |
+| Did it run verification? | Build, test, lint, or docs commands with visible results. |
+| Did it coordinate with others? | Messages or comments that explain handoffs and blockers. |
+| Did it touch unexpected files? | Changes that do not match the task description. |
+
+If logs and final comment disagree, ask for clarification before approving.
+
+## 3. Review the diff
+
+Open **Changes** and inspect each changed file.
+
+
+
+Use this order:
+
+1. Read the file list.
+2. Open each changed file.
+3. Check whether the changes match the task.
+4. Keep correct hunks.
+5. Undo or reject risky hunks.
+6. Approve only after all important files are reviewed.
+
+## 4. Request fixes clearly
+
+When something is wrong, do not just reject the task. Leave a specific fix request:
+
+```text
+Please keep the copy improvements, but revert the unrelated runtime wording in the provider table. Add the `pnpm --dir landing docs:build` result before resubmitting.
+```
+
+Good fix requests name:
+
+- what to keep
+- what to change
+- what to avoid
+- what verification is required
+
+## 5. Approve only when the result is complete
+
+Approve when:
+
+- the task scope is satisfied
+- the diff matches the task
+- verification passed or the missing verification is explicitly justified
+- no unrelated changes are mixed in
+- comments explain important decisions
+
+If the task changed docs or UI, also open the relevant page or app screen before approval.
+
+## 6. Final checklist
+
+Before closing the review:
+
+- Files changed are expected.
+- The task has a final result comment.
+- Verification result is present.
+- Risky hunks were checked individually.
+- The lead or reviewer marked the task approved.
+
+If anything is unclear, request changes instead of approving.
diff --git a/landing/product-docs/guide/run-and-monitor-work.md b/landing/product-docs/guide/run-and-monitor-work.md
new file mode 100644
index 00000000..e498b8d8
--- /dev/null
+++ b/landing/product-docs/guide/run-and-monitor-work.md
@@ -0,0 +1,100 @@
+---
+title: "Run and Monitor Work - Agent Teams Docs"
+description: "Learn how to brief the lead, read the task board, use messages and comments, open task details, and keep agent work moving."
+---
+
+# Run and Monitor Work
+
+After the team launches, your job is to keep the work visible, scoped, and reviewable. The board is the main operating surface.
+
+## 1. Brief the lead clearly
+
+The lead needs a goal that can be split into tasks. Include:
+
+- the outcome
+- the allowed files or product area
+- what not to touch
+- verification commands
+- when to ask for review
+
+Good brief:
+
+```text
+Create a beginner docs path. Keep edits inside landing/product-docs. Add screenshots where they clarify actions. Do not touch runtime code. Run `pnpm --dir landing docs:build` before marking tasks complete.
+```
+
+Weak brief:
+
+```text
+Improve docs.
+```
+
+The weak brief can work, but it gives the lead too much freedom and makes review harder.
+
+## 2. Read the board by lane
+
+
+
+| Lane | What it means | What you should do |
+| --- | --- | --- |
+| Todo | Tasks exist but are not active yet. | Check whether task titles are specific enough. |
+| In Progress | A teammate is actively working. | Watch for updates and avoid assigning duplicate work. |
+| Review | Work needs inspection. | Open the task and review changes. |
+| Done | Work is completed but may still need review flow. | Confirm review state before trusting it. |
+| Approved | Review passed. | Treat as completed output. |
+
+## 3. Use messages and comments deliberately
+
+Use task comments for task-specific context:
+
+```text
+Please keep this task scoped to the quickstart page. Do not change runtime setup wording in this pass.
+```
+
+Use direct messages for coordination:
+
+```text
+Lead, pause new task creation until the current review queue is cleared.
+```
+
+Prefer task comments when possible. They stay attached to the work and make review easier.
+
+## 4. Open task detail when a card needs attention
+
+Open the task detail when:
+
+- the title is too vague
+- the task has been in progress too long
+- the task is ready for review
+- the output mentions files you did not expect
+- you need to inspect attachments, changes, or logs
+
+
+
+## 5. Keep work unblocked
+
+If a teammate is blocked, ask for the smallest next step:
+
+```text
+Post the blocker, the file or command involved, and the next action you need from the lead or user.
+```
+
+If the task is too large, ask the lead to split it:
+
+```text
+Split this into separate tasks for copy edits, screenshot assets, and navigation updates. Keep each task independently reviewable.
+```
+
+## 6. Decide when to stop the team
+
+Stop or pause when:
+
+- the review queue is larger than you can inspect
+- the lead creates vague tasks repeatedly
+- runtime errors appear in multiple tasks
+- agents start editing unrelated files
+- verification is missing from completed work
+
+You can always relaunch after tightening the brief.
+
+Next: [Review and approve](/guide/review-and-approve).
diff --git a/landing/product-docs/index.md b/landing/product-docs/index.md
index 625c77c5..0a679fd0 100644
--- a/landing/product-docs/index.md
+++ b/landing/product-docs/index.md
@@ -8,8 +8,8 @@ hero:
tagline: Create teams, watch work move across a kanban board, review code changes, and coordinate Claude, Codex, OpenCode, and multimodel workflows without giving up local control.
actions:
- theme: brand
- text: Quickstart
- link: /guide/quickstart
+ text: Beginner workflow
+ link: /guide/beginner-workflow
- theme: alt
text: Install
link: /guide/installation
@@ -62,6 +62,10 @@ Agent Teams is a free desktop app for orchestrating AI agent teams. You are not
After creating your first team, explore these guides to go further:
- **Runtime setup** - configure Claude, Codex, OpenCode, or multimodel providers: [Configure runtimes](/guide/runtime-setup)
+- **Beginner workflow** - follow the complete first-run path from project to approval: [Start the walkthrough](/guide/beginner-workflow)
+- **Create your first team** - set up lead, builder, reviewer, roles, models, and Worktree: [Create the team](/guide/create-first-team)
+- **Run and monitor work** - read the board, comments, task detail, and logs: [Run the team](/guide/run-and-monitor-work)
+- **Review and approve** - inspect task results and code changes before approval: [Review work](/guide/review-and-approve)
- **Agent workflow** - understand how agents coordinate through the task board: [Understand workflow](/guide/agent-workflow)
- **Team brief examples** - learn prompt patterns from real-world briefs: [See examples](/guide/team-brief-examples)
- **Code review** - inspect diffs, accept or reject changes: [Review changes](/guide/code-review)
@@ -77,4 +81,4 @@ Use the reference pages when you need exact terminology, provider behavior, cont
## Product preview
-
+
diff --git a/landing/product-docs/ru/guide/beginner-workflow.md b/landing/product-docs/ru/guide/beginner-workflow.md
new file mode 100644
index 00000000..9dd2670a
--- /dev/null
+++ b/landing/product-docs/ru/guide/beginner-workflow.md
@@ -0,0 +1,109 @@
+---
+title: "Путь новичка - Документация Agent Teams"
+description: "Структурированный первый запуск для новых пользователей: проект, команда, доска задач, карточка задачи и ревью."
+lang: ru-RU
+---
+
+# Путь новичка
+
+Этот маршрут нужен, если вы впервые открыли Agent Teams и хотите пройти путь от запуска приложения до безопасного approval результата.
+
+Первый запуск должен доказать четыре вещи:
+
+1. Приложение открывает ваш проект.
+2. Небольшая команда запускается с выбранным runtime.
+3. Задачи двигаются по доске и их состояние видно.
+4. Вы можете проверить изменения до approval.
+
+## Базовая модель
+
+В Agent Teams есть четыре основные рабочие поверхности:
+
+| Поверхность | Что там делать |
+| --- | --- |
+| Project и team selector | Выбрать проект и команду, которая будет в нём работать. |
+| Team editor | Назвать команду, добавить участников, выбрать роли, модели и worktree-настройки. |
+| Task board | Смотреть, как задачи проходят Todo, In Progress, Review, Done и Approved. |
+| Task detail и review | Читать задачу, проверять логи, смотреть изменения и approve/request fixes. |
+
+
+
+## Рекомендуемый порядок гайдов
+
+Для первого успешного запуска идите в таком порядке:
+
+1. [Создать первую команду](/ru/guide/create-first-team) - собрать небольшую команду lead-builder-reviewer.
+2. [Запустить и отслеживать работу](/ru/guide/run-and-monitor-work) - дать lead конкретную цель и следить за task board.
+3. [Проверить и approve](/ru/guide/review-and-approve) - проверить task detail, logs и code changes.
+4. [Диагностика](/ru/guide/troubleshooting) - если запуск, сообщения или task logs выглядят неправильно.
+
+## Перед запуском
+
+Начинайте с Git-проекта и понятного baseline:
+
+```bash
+git status --short
+```
+
+Чистое дерево не обязательно, но важно понимать, какие изменения уже были до запуска агентов.
+
+Для первого запуска держите команду маленькой:
+
+| Участник | Первая ответственность |
+| --- | --- |
+| Lead | Разбивает цель на задачи и координирует статус. |
+| Builder | Делает ограниченные implementation tasks. |
+| Reviewer | Проверяет завершённые задачи и просит исправления. |
+
+Не запускайте сразу много участников. Больше агентов - больше логов, параллельных правок, provider usage и review-нагрузки.
+
+## Шаблон первой цели
+
+Цель должна иметь scope, границы и verification:
+
+```text
+Improve the documentation quickstart. Keep edits inside landing/product-docs, add practical examples, preserve existing VitePress syntax, and run `pnpm --dir landing docs:build` before marking tasks done.
+```
+
+Хорошая первая цель конкретная, проверяемая и ограничена известной областью.
+
+## Как выглядит здоровый прогресс
+
+В здоровом запуске:
+
+- lead создаёт маленькие задачи, а не одну огромную
+- каждый teammate пишет план или progress comment
+- работа двигается из Todo в In Progress
+- завершённая работа попадает в Review до approval
+- task detail показывает description, attachments, changes и execution logs
+- финальный comment содержит verification command и result
+
+## Когда вмешиваться
+
+Вмешивайтесь, если задача слишком широкая, размытая, заблокирована или без verification. Пишите task comment, если сообщение относится к конкретной задаче. Пишите direct message, если надо перенаправить teammate или lead.
+
+Примеры:
+
+```text
+Split this into smaller tasks. Each task should have a narrow file scope and a clear verification step.
+```
+
+```text
+Before continuing, post the files you plan to change and the command you will run to verify the result.
+```
+
+```text
+This task is too broad. Keep the change inside the docs guide pages and avoid touching app runtime code.
+```
+
+## Checklist завершения
+
+Первый запуск можно считать успешным, если:
+
+- команда запустилась без runtime errors
+- хотя бы одна задача прошла через Review
+- вы открыли и проверили diff
+- result comment содержит verification result
+- понятно, какие файлы изменились и почему
+
+Дальше: [Создать первую команду](/ru/guide/create-first-team).
diff --git a/landing/product-docs/ru/guide/create-first-team.md b/landing/product-docs/ru/guide/create-first-team.md
new file mode 100644
index 00000000..3307dfda
--- /dev/null
+++ b/landing/product-docs/ru/guide/create-first-team.md
@@ -0,0 +1,112 @@
+---
+title: "Создать первую команду - Документация Agent Teams"
+description: "Пошаговая настройка первой команды: lead, builder, reviewer, роли, модели, worktree isolation и launch brief."
+lang: ru-RU
+---
+
+# Создать первую команду
+
+Цель первого setup - не собрать самую большую команду, а создать маленькую команду, которая стабильно запускается и делает reviewable tasks.
+
+## 1. Откройте проект
+
+Откройте проект, в котором агенты будут работать. Лучше использовать Git-проект, чтобы Agent Teams мог показывать diff, task-linked changes и review state.
+
+Перед запуском проверьте baseline:
+
+```bash
+git status --short
+```
+
+Если уже есть ваши изменения, учитывайте их при review.
+
+## 2. Создайте команду
+
+Через team selector создайте новую команду для текущего проекта. Название держите коротким и рабочим: `docs-onboarding`, `landing-fixes`, `runtime-audit`.
+
+
+
+## 3. Начните с трёх ролей
+
+Рекомендуемая первая форма команды:
+
+| Роль | Ответственность | Зачем |
+| --- | --- | --- |
+| Lead | Делит цель на задачи, назначает owners, отслеживает blockers. | Держит работу скоординированной. |
+| Builder | Делает scoped implementation tasks. | Создаёт основное изменение. |
+| Reviewer | Проверяет completed tasks и просит fixes. | Не даёт непроверенному результату стать финальным. |
+
+Специалистов можно добавить позже. Для первого запуска маленькую команду легче диагностировать и ревьюить.
+
+## 4. Выберите provider и model для каждого
+
+Каждому участнику нужен provider и model. Для lead выбирайте самый надёжный runtime, потому что lead управляет decomposition и coordination.
+
+Обычная первая настройка:
+
+| Участник | Какой provider выбрать |
+| --- | --- |
+| Lead | Самую надёжную модель из доступных. |
+| Builder | Быструю модель для scoped implementation. |
+| Reviewer | Более аккуратную модель с сильным reasoning. |
+
+Если provider отсутствует, сначала исправьте runtime setup: [Настройка рантайма](/ru/guide/runtime-setup).
+
+## 5. Решите, нужен ли Worktree
+
+Включайте **Worktree**, когда участники могут параллельно менять один репозиторий и нужна Git-изоляция. Для самого простого первого запуска можно оставить выключенным.
+
+Worktree полезен, когда:
+
+- несколько teammates могут одновременно менять код
+- нужны более чистые diffs по участникам
+- проект уже является Git-репозиторием
+
+Не включайте Worktree, если:
+
+- проект не в Git
+- вы только проверяете UI flow
+- хотите минимум движущихся частей в первом запуске
+
+## 6. Напишите инструкции участникам
+
+Member prompt должен описывать ответственность участника, а не весь проект.
+
+Lead:
+
+```text
+Split the user goal into small tasks. Assign clear owners, avoid broad refactors, keep task comments updated, and request review before approval.
+```
+
+Builder:
+
+```text
+Implement only the assigned task. Keep changes scoped, post the files you changed, and include the verification command and result before marking work complete.
+```
+
+Reviewer:
+
+```text
+Review completed tasks for correctness, regressions, missing tests, and scope creep. Ask for fixes with specific comments before approving.
+```
+
+## 7. Запустите с узкой целью
+
+Launch brief должен содержать outcome, scope, boundaries и verification:
+
+```text
+Improve the docs onboarding path. Keep changes inside landing/product-docs. Create a beginner-friendly guide sequence, add practical examples, preserve VitePress syntax, and run `pnpm --dir landing docs:build`.
+```
+
+## 8. Проверьте, что запуск здоровый
+
+После запуска:
+
+- lead создаёт задачи
+- хотя бы один teammate начинает задачу
+- board показывает движение в In Progress
+- task comments или logs показывают, что делает teammate
+
+Если запуск завис или задач нет, откройте [Диагностику](/ru/guide/troubleshooting#team-does-not-launch).
+
+Дальше: [Запустить и отслеживать работу](/ru/guide/run-and-monitor-work).
diff --git a/landing/product-docs/ru/guide/review-and-approve.md b/landing/product-docs/ru/guide/review-and-approve.md
new file mode 100644
index 00000000..b3de221d
--- /dev/null
+++ b/landing/product-docs/ru/guide/review-and-approve.md
@@ -0,0 +1,89 @@
+---
+title: "Проверить и approve - Документация Agent Teams"
+description: "Понятный workflow ревью: task detail, execution logs, code changes, hunk decisions, approvals и fix requests."
+lang: ru-RU
+---
+
+# Проверить и approve
+
+Не считайте работу агента завершённой, пока не проверили результат задачи, logs и changes. Review удерживает качество и scope.
+
+## 1. Откройте задачу
+
+Начните с задачи в Review или Done. Сначала прочитайте title, owner, status и description.
+
+
+
+Проверьте:
+
+- понятная ли цель задачи
+- совпадают ли файлы с ожидаемым scope
+- есть ли final comment от teammate
+- есть ли verification command и result
+
+## 2. Проверьте execution evidence
+
+Execution Logs отвечают на базовые вопросы доверия:
+
+| Вопрос | Что искать |
+| --- | --- |
+| Агент реально работал над этой задачей? | Tool calls, comments и status changes внутри task timeline. |
+| Он запускал verification? | Build, test, lint или docs commands с результатом. |
+| Он координировался с другими? | Messages или comments с handoffs и blockers. |
+| Он трогал неожиданные файлы? | Changes, которые не совпадают с task description. |
+
+Если logs и final comment расходятся, попросите уточнение до approval.
+
+## 3. Проверьте diff
+
+Откройте **Changes** и просмотрите каждый changed file.
+
+
+
+Порядок:
+
+1. Прочитать file list.
+2. Открыть каждый changed file.
+3. Проверить, что изменения совпадают с задачей.
+4. Keep для правильных hunks.
+5. Undo или reject для рискованных hunks.
+6. Approve только после проверки важных files.
+
+## 4. Просите fixes конкретно
+
+Если что-то не так, не ограничивайтесь reject. Оставьте конкретный fix request:
+
+```text
+Please keep the copy improvements, but revert the unrelated runtime wording in the provider table. Add the `pnpm --dir landing docs:build` result before resubmitting.
+```
+
+Хороший fix request называет:
+
+- что оставить
+- что изменить
+- чего избегать
+- какая verification обязательна
+
+## 5. Approve только полный результат
+
+Approve уместен, когда:
+
+- task scope закрыт
+- diff совпадает с задачей
+- verification прошёл или отсутствие verification объяснено
+- нет unrelated changes
+- comments объясняют важные решения
+
+Если task менял docs или UI, перед approval откройте соответствующую страницу или экран приложения.
+
+## 6. Финальный checklist
+
+Перед закрытием review:
+
+- изменённые files ожидаемые
+- есть final result comment
+- есть verification result
+- risky hunks проверены отдельно
+- lead или reviewer поставил approved
+
+Если что-то непонятно, request changes лучше, чем approve.
diff --git a/landing/product-docs/ru/guide/run-and-monitor-work.md b/landing/product-docs/ru/guide/run-and-monitor-work.md
new file mode 100644
index 00000000..a926b308
--- /dev/null
+++ b/landing/product-docs/ru/guide/run-and-monitor-work.md
@@ -0,0 +1,101 @@
+---
+title: "Запустить и отслеживать работу - Документация Agent Teams"
+description: "Как дать lead понятный brief, читать task board, использовать messages и comments, открывать task detail и удерживать работу в движении."
+lang: ru-RU
+---
+
+# Запустить и отслеживать работу
+
+После запуска команды ваша задача - держать работу видимой, ограниченной и готовой к review. Главная поверхность - board.
+
+## 1. Дайте lead понятный brief
+
+Lead нужна цель, которую можно разбить на задачи. Укажите:
+
+- outcome
+- разрешённые файлы или область продукта
+- что не трогать
+- verification commands
+- когда просить review
+
+Хороший brief:
+
+```text
+Create a beginner docs path. Keep edits inside landing/product-docs. Add screenshots where they clarify actions. Do not touch runtime code. Run `pnpm --dir landing docs:build` before marking tasks complete.
+```
+
+Слабый brief:
+
+```text
+Improve docs.
+```
+
+Слабый brief даёт lead слишком много свободы и усложняет review.
+
+## 2. Читайте board по колонкам
+
+
+
+| Колонка | Что значит | Что делать |
+| --- | --- | --- |
+| Todo | Задачи есть, но ещё не активны. | Проверить, достаточно ли конкретные titles. |
+| In Progress | Teammate активно работает. | Смотреть updates и не назначать duplicate work. |
+| Review | Работу нужно проверить. | Открыть task и review changes. |
+| Done | Работа завершена, но может требовать review flow. | Проверить review state перед доверием результату. |
+| Approved | Review прошёл. | Считать результат завершённым. |
+
+## 3. Используйте messages и comments осознанно
+
+Task comments подходят для контекста конкретной задачи:
+
+```text
+Please keep this task scoped to the quickstart page. Do not change runtime setup wording in this pass.
+```
+
+Direct messages подходят для координации:
+
+```text
+Lead, pause new task creation until the current review queue is cleared.
+```
+
+Если возможно, предпочитайте task comments. Они остаются привязанными к работе.
+
+## 4. Открывайте task detail, когда карточке нужно внимание
+
+Открывайте task detail, если:
+
+- title слишком размытый
+- задача слишком долго in progress
+- задача готова к review
+- output упоминает неожиданные файлы
+- нужно проверить attachments, changes или logs
+
+
+
+## 5. Разблокируйте работу
+
+Если teammate заблокирован, попросите минимальный следующий шаг:
+
+```text
+Post the blocker, the file or command involved, and the next action you need from the lead or user.
+```
+
+Если задача слишком большая, попросите lead разделить её:
+
+```text
+Split this into separate tasks for copy edits, screenshot assets, and navigation updates. Keep each task independently reviewable.
+```
+
+## 6. Когда остановить команду
+
+Остановите или поставьте на паузу, если:
+
+- review queue больше, чем вы можете проверить
+- lead повторно создаёт размытые задачи
+- runtime errors появляются в нескольких задачах
+- агенты начали менять unrelated files
+- completed work не содержит verification
+
+Команду можно перезапустить после уточнения brief.
+
+Дальше: [Проверить и approve](/ru/guide/review-and-approve).
diff --git a/landing/product-docs/ru/index.md b/landing/product-docs/ru/index.md
index f74cde89..50dde499 100644
--- a/landing/product-docs/ru/index.md
+++ b/landing/product-docs/ru/index.md
@@ -9,8 +9,8 @@ hero:
tagline: Создавайте команды, наблюдайте за канбан-доской, ревьюйте изменения и координируйте Claude, Codex, OpenCode и multimodel workflows без потери локального контроля.
actions:
- theme: brand
- text: Быстрый старт
- link: /ru/guide/quickstart
+ text: Путь новичка
+ link: /ru/guide/beginner-workflow
- theme: alt
text: Установка
link: /ru/guide/installation
@@ -63,6 +63,10 @@ Agent Teams - бесплатное desktop-приложение для орке
После создания первой команды изучите эти руководства:
- **Настройка рантайма** - настройте Claude, Codex, OpenCode или multimodel-провайдеров: [Настроить рантаймы](/ru/guide/runtime-setup)
+- **Путь новичка** - полный первый маршрут от проекта до approval: [Начать walkthrough](/ru/guide/beginner-workflow)
+- **Создать первую команду** - lead, builder, reviewer, роли, модели и Worktree: [Создать команду](/ru/guide/create-first-team)
+- **Запустить и отслеживать работу** - board, comments, task detail и logs: [Запустить работу](/ru/guide/run-and-monitor-work)
+- **Проверить и approve** - task results и code changes до approval: [Проверить работу](/ru/guide/review-and-approve)
- **Workflow агентов** - как агенты координируются через task board: [Разобрать workflow](/ru/guide/agent-workflow)
- **Примеры team briefs** - паттерны промптов из реальных примеров: [Примеры](/ru/guide/team-brief-examples)
- **Код-ревью** - проверяйте diff, принимайте или отклоняйте изменения: [Ревью изменений](/ru/guide/code-review)
@@ -78,4 +82,4 @@ Agent Teams - бесплатное desktop-приложение для орке
## Превью продукта
-
+
diff --git a/landing/product-docs/tsconfig.json b/landing/product-docs/tsconfig.json
new file mode 100644
index 00000000..ef62ebe0
--- /dev/null
+++ b/landing/product-docs/tsconfig.json
@@ -0,0 +1,15 @@
+{
+ "compilerOptions": {
+ "target": "ES2022",
+ "module": "ESNext",
+ "moduleResolution": "Bundler",
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
+ "types": ["vitepress/client"],
+ "strict": true,
+ "skipLibCheck": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true
+ },
+ "include": [".vitepress/**/*.ts", ".vitepress/**/*.vue"]
+}
diff --git a/landing/public/docs/index.html b/landing/public/docs/index.html
new file mode 100644
index 00000000..9cf7ee07
--- /dev/null
+++ b/landing/public/docs/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+ Redirecting to Agent Teams Docs
+
+
+ Agent Teams Docs
+
+
diff --git a/landing/public/docs/ru/index.html b/landing/public/docs/ru/index.html
new file mode 100644
index 00000000..c2d0514d
--- /dev/null
+++ b/landing/public/docs/ru/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+ Redirecting to Agent Teams Docs
+
+
+ Agent Teams Docs
+
+
diff --git a/landing/public/screenshots/guides/code-review-annotated.png b/landing/public/screenshots/guides/code-review-annotated.png
new file mode 100644
index 00000000..33688239
Binary files /dev/null and b/landing/public/screenshots/guides/code-review-annotated.png differ
diff --git a/landing/public/screenshots/guides/create-team-annotated.png b/landing/public/screenshots/guides/create-team-annotated.png
new file mode 100644
index 00000000..b93cf64b
Binary files /dev/null and b/landing/public/screenshots/guides/create-team-annotated.png differ
diff --git a/landing/public/screenshots/guides/task-board-annotated.png b/landing/public/screenshots/guides/task-board-annotated.png
new file mode 100644
index 00000000..ec57cbc8
Binary files /dev/null and b/landing/public/screenshots/guides/task-board-annotated.png differ
diff --git a/landing/public/screenshots/guides/task-detail-annotated.png b/landing/public/screenshots/guides/task-detail-annotated.png
new file mode 100644
index 00000000..be8517aa
Binary files /dev/null and b/landing/public/screenshots/guides/task-detail-annotated.png differ
diff --git a/landing/public/screenshots/product-preview.jpg b/landing/public/screenshots/product-preview.jpg
new file mode 100644
index 00000000..d1ae6f0d
Binary files /dev/null and b/landing/public/screenshots/product-preview.jpg differ
diff --git a/landing/server/routes/llms.txt.ts b/landing/server/routes/llms.txt.ts
index 93b8268d..1c43f160 100644
--- a/landing/server/routes/llms.txt.ts
+++ b/landing/server/routes/llms.txt.ts
@@ -1,4 +1,5 @@
import { defaultLocale, getLocalizedPagePath, sitemapPages, supportedLocales } from "~/data/i18n";
+import { normalizeDocsSiteUrl } from "~/utils/docsUrl";
const trimTrailingSlash = (value: string) => value.replace(/\/+$/, "");
@@ -11,6 +12,7 @@ export default defineEventHandler((event) => {
const githubUrl = `https://github.com/${githubRepo}`;
const releasesUrl = `${githubUrl}/releases`;
const toSiteUrl = (path: string) => `${siteUrl}${path === "/" ? "/" : `/${path.replace(/^\/+/, "")}`}`;
+ const docsSiteUrl = normalizeDocsSiteUrl(config.public.docsSiteUrl) || toSiteUrl("/docs/");
setHeader(event, "content-type", "text/plain; charset=utf-8");
@@ -32,8 +34,8 @@ export default defineEventHandler((event) => {
- Homepage (${defaultLocale}): ${toSiteUrl("/")}
- Download: ${toSiteUrl("/download")}
-- Documentation: ${toSiteUrl("/docs/")}
-- Documentation llms.txt: ${toSiteUrl("/docs/llms.txt")}
+- Documentation: ${docsSiteUrl}
+- Documentation llms.txt: ${docsSiteUrl}llms.txt
- GitHub repository: ${githubUrl}
- Releases: ${releasesUrl}
- Sitemap: ${toSiteUrl("/sitemap.xml")}
diff --git a/landing/server/routes/robots.txt.ts b/landing/server/routes/robots.txt.ts
index 71180757..ca59055e 100644
--- a/landing/server/routes/robots.txt.ts
+++ b/landing/server/routes/robots.txt.ts
@@ -1,12 +1,15 @@
+import { normalizeDocsSiteUrl } from "~/utils/docsUrl";
+
export default defineEventHandler((event) => {
const config = useRuntimeConfig();
const siteUrl = ((config.public.siteUrl as string) || "https://777genius.github.io/agent-teams-ai").replace(/\/+$/, "");
+ const docsSiteUrl = normalizeDocsSiteUrl(config.public.docsSiteUrl) || `${siteUrl}/docs/`;
setHeader(event, "content-type", "text/plain; charset=utf-8");
return `User-agent: *
Allow: /
Sitemap: ${siteUrl}/sitemap.xml
-Sitemap: ${siteUrl}/docs/sitemap.xml
+Sitemap: ${docsSiteUrl}sitemap.xml
`;
});
diff --git a/landing/utils/docsUrl.ts b/landing/utils/docsUrl.ts
new file mode 100644
index 00000000..db0796b7
--- /dev/null
+++ b/landing/utils/docsUrl.ts
@@ -0,0 +1,29 @@
+type DocsLocale = string | undefined;
+
+const trimTrailingSlash = (value: string) => value.replace(/\/+$/, '');
+const withTrailingSlash = (value: string) => `${trimTrailingSlash(value)}/`;
+
+export function normalizeDocsSiteUrl(value: unknown): string | null {
+ if (typeof value !== 'string') return null;
+
+ const trimmed = value.trim();
+ if (!trimmed) return null;
+
+ return withTrailingSlash(trimmed);
+}
+
+export function buildDocsHref(args: {
+ locale?: DocsLocale;
+ docsSiteUrl?: unknown;
+ embeddedBaseURL: string;
+}): string {
+ const localizedPath = args.locale === 'ru' ? 'ru/' : '';
+ const externalDocsUrl = normalizeDocsSiteUrl(args.docsSiteUrl);
+
+ if (externalDocsUrl) {
+ return `${externalDocsUrl}${localizedPath}`;
+ }
+
+ const base = args.embeddedBaseURL.replace(/\/?$/, '/');
+ return `${base}${args.locale === 'ru' ? 'docs/ru/' : 'docs/'}`;
+}
diff --git a/mcp-server/package.json b/mcp-server/package.json
index 71e2a285..988eda5a 100644
--- a/mcp-server/package.json
+++ b/mcp-server/package.json
@@ -48,6 +48,6 @@
"vitest": "^3.1.4"
},
"engines": {
- "node": ">=24.16.0 <25"
+ "node": ">=24.15.0 <25"
}
}
diff --git a/package.json b/package.json
index 5d324b81..e0e6ac65 100644
--- a/package.json
+++ b/package.json
@@ -17,7 +17,7 @@
"url": "https://github.com/777genius/agent-teams-ai/issues"
},
"engines": {
- "node": ">=24.16.0 <25"
+ "node": ">=24.15.0 <25"
},
"main": "dist-electron/main/index.cjs",
"scripts": {
diff --git a/packages/agent-graph/package.json b/packages/agent-graph/package.json
index 8eca5d33..f6bb1b1e 100644
--- a/packages/agent-graph/package.json
+++ b/packages/agent-graph/package.json
@@ -4,7 +4,7 @@
"private": true,
"type": "module",
"engines": {
- "node": ">=24.16.0 <25"
+ "node": ">=24.15.0 <25"
},
"main": "src/index.ts",
"types": "src/index.ts",
diff --git a/src/features/localization/renderer/locales/zh/common.json b/src/features/localization/renderer/locales/zh/common.json
index a9112964..fb2a9045 100644
--- a/src/features/localization/renderer/locales/zh/common.json
+++ b/src/features/localization/renderer/locales/zh/common.json
@@ -15,49 +15,49 @@
"copyToClipboard": "复制到剪贴板",
"moreActions": "更多操作",
"closeDialog": "关闭对话框",
- "goToDashboard": "转到仪表盘",
+ "goToDashboard": "转到控制台",
"or": "或",
"hide": "隐藏",
"resetSelection": "重置选择"
},
"code": {
- "line": "{{line}}线",
- "lines": "{{from}}-{{to}}",
- "moreLines": "(单位:千美元){{count}}更多线条... )",
- "moreLines_few": "(单位:千美元){{count}}更多线条... )",
- "moreLines_many": "(单位:千美元){{count}}更多线条... )",
- "moreLines_one": "(单位:千美元){{count}}更多线条... )",
- "moreLines_other": "(单位:千美元){{count}}更多线条... )",
+ "line": "第 {{line}} 行",
+ "lines": "第 {{from}}-{{to}} 行",
+ "moreLines": "({{count}} 更多行…)",
+ "moreLines_few": "({{count}} 更多行…)",
+ "moreLines_many": "({{count}} 更多行…)",
+ "moreLines_one": "({{count}} 更多行…)",
+ "moreLines_other": "({{count}} 更多行…)",
"code": "代码",
"preview": "预览",
- "markdownPreview": "标记下预览",
- "linesParenthesized": "(行数){{from}}- 怎么样?{{to}}页:1",
- "mermaidSyntaxError": "美人鱼语法错误"
+ "markdownPreview": "Markdown 预览",
+ "linesParenthesized": "(第 {{from}}-{{to}} 行)",
+ "mermaidSyntaxError": "Mermaid 语法错误"
},
"contextBadge": {
- "badge": "背景情况",
+ "badge": "上下文",
"breakdown": {
- "text": "文字",
- "thinking": "思维"
+ "text": "文本",
+ "thinking": "思考"
},
"detailsAria": "上下文注入细节",
- "sectionSummary": "{{title}} ({{count}}) ~ {{tokens}} 标志",
+ "sectionSummary": "{{title}} ({{count}}) ~{{tokens}} Token",
"sections": {
- "claudeMdFiles": "CLAUDE.md 文档",
- "mentionedFiles": "引用文件",
+ "claudeMdFiles": "CLAUDE.md 文件",
+ "mentionedFiles": "提及的文件",
"taskCoordination": "任务协调",
- "thinkingText": "思维+ 文字",
+ "thinkingText": "思考 + 文本",
"toolOutputs": "工具输出",
- "userMessages": "用户信件"
+ "userMessages": "用户消息"
},
- "title": "在此转弯时输入新上下文",
- "tokenCount": "~{{tokens}} 符号",
- "totalNewTokens": "新证券共计",
- "turn": "转动 {{turn}}",
- "sectionSummary_few": "{{title}} ({{count}}) ~ {{tokens}} 标志",
- "sectionSummary_many": "{{title}} ({{count}}) ~ {{tokens}} 标志",
- "sectionSummary_one": "{{title}} ({{count}}) ~ {{tokens}} 标志",
- "sectionSummary_other": "{{title}} ({{count}}) ~ {{tokens}} 标志"
+ "title": "本轮注入的新上下文",
+ "tokenCount": "~{{tokens}} Token",
+ "totalNewTokens": "新增 Token 总数",
+ "turn": "第 {{turn}} 轮",
+ "sectionSummary_few": "{{title}} ({{count}}) ~{{tokens}} Token",
+ "sectionSummary_many": "{{title}} ({{count}}) ~{{tokens}} Token",
+ "sectionSummary_one": "{{title}} ({{count}}) ~{{tokens}} Token",
+ "sectionSummary_other": "{{title}} ({{count}}) ~{{tokens}} Token"
},
"locales": {
"emptyMessage": "未找到语言。",
@@ -93,120 +93,120 @@
"vi": "越南语",
"zh": "中文"
},
- "searchPlaceholder": "搜索语言...",
- "selectPlaceholder": "选择应用语言...",
- "systemWithResolved": "系统 - {{locale}}"
+ "searchPlaceholder": "搜索语言…",
+ "selectPlaceholder": "选择应用语言…",
+ "systemWithResolved": "系统-{{locale}}"
},
"members": {
"emptyMessage": "未找到成员。",
- "searchPlaceholder": "搜索成员...",
+ "searchPlaceholder": "搜索成员…",
"unassigned": "未分配",
"teammateFallback": "队友"
},
"providerRuntime": {
"codex": {
"install": {
- "checking": "检查中",
- "downloading": "下载",
- "installCli": "安装代码CLI",
- "installing": "安装",
+ "checking": "检查",
+ "downloading": "正在下载",
+ "installCli": "安装 Codex CLI",
+ "installing": "安装中",
"retryInstall": "重试安装"
}
}
},
"search": {
"noMatchingSuggestions": "没有匹配的建议",
- "searching": "搜索中...",
- "searchingFiles": "正在搜索文件...",
- "findInConversation": "在对话中查找...",
+ "searching": "正在搜索…",
+ "searchingFiles": "正在搜索文件…",
+ "findInConversation": "在对话中查找…",
"resultCount": "{{current}} / {{total}}",
"resultCountCapped": "{{current}} / {{total}}+",
- "noResults": "无结果",
- "previousResultShortcut": "上一个结果 (Shift+Enter)",
- "nextResultShortcut": "下一个结果 (Enter)",
- "closeShortcut": "关闭 (Esc)",
- "nothingFound": "未找到内容",
- "placeholder": "搜索..."
+ "noResults": "没有结果",
+ "previousResultShortcut": "上一个结果(Shift+Enter)",
+ "nextResultShortcut": "下一个结果(Enter)",
+ "closeShortcut": "关闭(Esc)",
+ "nothingFound": "未找到任何内容",
+ "placeholder": "搜索…"
},
"schedules": {
"actions": {
- "addSchedule": "添加计划",
+ "addSchedule": "添加计划任务",
"clearFilters": "清除过滤器",
- "createSchedule": "创建计划",
+ "createSchedule": "创建计划任务",
"delete": "删除",
"edit": "编辑",
"pause": "暂停",
- "resume": "继续",
- "runNow": "快点跑"
+ "resume": "恢复",
+ "runNow": "立即运行"
},
"empty": {
- "description": "在任何团队中创建一个调度, 将 Claude 任务执行自动化, 并带有 cron 表达式 。 所有球队的日程表将在此登场.",
- "noMatches": "没有匹配当前过滤器的时间表",
- "title": "无计划任务"
+ "description": "在任何团队上创建一个计划任务,以使用 cron 表达式自动执行 Claude 任务。所有团队的计划任务都会出现在这里。",
+ "noMatches": "没有与当前过滤器匹配的计划任务",
+ "title": "没有计划任务"
},
"filters": {
- "allTeams": "所有小组"
+ "allTeams": "所有团队"
},
"item": {
- "loadingRunHistory": "正在装入运行历史...",
- "nextRun": "下一个:{{value}}",
- "noRunsYet": "尚未运行"
+ "loadingRunHistory": "正在加载运行历史记录…",
+ "nextRun": "下次运行: {{value}}",
+ "noRunsYet": "尚无运行记录"
},
- "loading": "正在装入时间表...",
- "searchPlaceholder": "搜索时间表...",
+ "loading": "加载计划任务…",
+ "searchPlaceholder": "搜索计划任务…",
"status": {
- "active": "活动",
- "all": "全体",
- "disabled": "已禁用",
- "paused": "暂停"
+ "active": "活跃",
+ "all": "全部",
+ "disabled": "已停用",
+ "paused": "已暂停"
},
- "title": "附表"
+ "title": "计划任务"
},
"sessions": {
"actions": {
"hide": "隐藏",
- "pin": "键",
- "unhide": "弃"
+ "pin": "固定",
+ "unhide": "取消隐藏"
},
"empty": {
- "noMatchingSessions": "没有匹配会话",
- "noMatchingSessionsDescription": "这个项目还没有匹配的会话 。",
- "noMatchingSessionsFiltered": "尝试另一个查询或重置提供者过滤器 。",
+ "noMatchingSessions": "没有匹配的会话",
+ "noMatchingSessionsDescription": "该项目还没有匹配的会话。",
+ "noMatchingSessionsFiltered": "尝试其他查询或重置提供商过滤器。",
"noSessions": "未找到会话",
- "noSessionsDescription": "这个项目还没有开庭",
- "selectProject": "选择查看会话的工程"
+ "noSessionsDescription": "该项目还没有会话",
+ "selectProject": "选择一个项目来查看会话"
},
"errors": {
- "loading": "装入会话出错"
+ "loading": "加载会话时出错"
},
- "loadedMatchingMore": "{{count}} 匹配会话至今已加载 - 滚动到加载更多 。",
- "loadingMore": "正在装入更多会话...",
- "pinned": "固定",
+ "loadedMatchingMore": "当前已加载 {{count}} 匹配会话 - 向下滚动以加载更多内容。",
+ "loadingMore": "正在加载更多会话…",
+ "pinned": "已固定",
"scrollToLoadMore": "滚动加载更多",
"search": {
"clear": "清除会话搜索",
- "placeholder": "搜索会话..."
+ "placeholder": "搜索会话…"
},
"selection": {
"cancel": "取消选择",
"exitMode": "退出选择模式",
- "hideSelected": "隐藏选中的会话",
- "pinSelected": "固定选中的会话",
+ "hideSelected": "隐藏选定的会话",
+ "pinSelected": "固定选定的会话",
"selectSessions": "选择会话",
- "selected": "{{count}}选中",
- "unhideSelected": "取消选中会话",
- "selected_few": "{{count}}选中",
- "selected_many": "{{count}}选中",
- "selected_one": "{{count}}选中",
- "selected_other": "{{count}}选中"
+ "selected": "已选择 {{count}}",
+ "unhideSelected": "取消隐藏选定的会话",
+ "selected_few": "已选择 {{count}}",
+ "selected_many": "已选择 {{count}}",
+ "selected_one": "已选择 {{count}}",
+ "selected_other": "已选择 {{count}}"
},
"sort": {
- "byContext": "按内容",
- "byContextTooltip": "按上下文的消费排序",
+ "byContext": "按上下文",
+ "byContextTooltip": "按上下文消耗排序",
"byRecentTooltip": "按最近排序",
- "contextLoadedOnly": "背景排序只排序已装入的会话 。"
+ "contextLoadedOnly": "上下文排序仅对加载的会话进行排名。"
},
- "title": "会议",
+ "title": "会话",
"visibility": {
"hideHidden": "隐藏隐藏的会话",
"showHidden": "显示隐藏的会话"
@@ -214,285 +214,285 @@
"worktree": {
"switch": "切换工作树"
},
- "loadedMatchingMore_few": "{{count}} 匹配会话至今已加载 - 滚动到加载更多 。",
- "loadedMatchingMore_many": "{{count}} 匹配会话至今已加载 - 滚动到加载更多 。",
- "loadedMatchingMore_one": "{{count}} 匹配会话至今已加载 - 滚动到加载更多 。",
- "loadedMatchingMore_other": "{{count}} 匹配会话至今已加载 - 滚动到加载更多 。",
- "failedToLoad": "装入会话失败",
- "loading": "正在装入会话...",
+ "loadedMatchingMore_few": "当前已加载 {{count}} 匹配会话 - 向下滚动以加载更多内容。",
+ "loadedMatchingMore_many": "当前已加载 {{count}} 匹配会话 - 向下滚动以加载更多内容。",
+ "loadedMatchingMore_one": "当前已加载 {{count}} 匹配会话 - 向下滚动以加载更多内容。",
+ "loadedMatchingMore_other": "当前已加载 {{count}} 匹配会话 - 向下滚动以加载更多内容。",
+ "failedToLoad": "加载会话失败",
+ "loading": "正在加载会话…",
"filter": {
"title": "过滤会话"
},
- "count": "{{count}}届会",
- "count_one": "{{count}}会议",
- "count_other": "{{count}}届会",
- "count_few": "{{count}}届会",
- "count_many": "{{count}}届会",
- "inProgress": "会话正在进行中..."
+ "count": "{{count}} 会话",
+ "count_one": "{{count}} 会话",
+ "count_other": "{{count}} 会话",
+ "count_few": "{{count}} 会话",
+ "count_many": "{{count}} 会话",
+ "inProgress": "会话正在进行中…"
},
"states": {
- "loading": "加载中...",
+ "loading": "加载中…",
"offline": "离线",
- "online": "在线",
+ "online": "在线的",
"unknown": "未知",
"error": "错误"
},
"markdown": {
- "imageFallback": "[图:{{label}}[. ]",
- "largeContentNotice": "内容非常大({{count}}字符). 显示原始预览以保持用户界面响应 。",
- "largeContentTitle": "大型内容显示为原始, 以防止 UI 冻结",
- "raw": "原始内容",
+ "imageFallback": "[图片:{{label}}]",
+ "largeContentNotice": "内容非常大({{count}} 字符)。显示原始预览以保持 UI 响应。",
+ "largeContentTitle": "大内容显示为原始内容以防止 UI 冻结",
+ "raw": "生的",
"rawPreview": "原始预览",
- "renderMarkdown": "降温标记",
- "showAll": "全部显示",
+ "renderMarkdown": "渲染 Markdown",
+ "showAll": "显示全部",
"showMore": "显示更多",
- "showRaw": "显示原始",
+ "showRaw": "显示原始数据",
"showingChars": "显示 {{shown}} / {{total}} 字符",
- "largeContentNotice_few": "内容非常大({{count}}字符). 显示原始预览以保持用户界面响应 。",
- "largeContentNotice_many": "内容非常大({{count}}字符). 显示原始预览以保持用户界面响应 。",
- "largeContentNotice_one": "内容非常大({{count}}字符). 显示原始预览以保持用户界面响应 。",
- "largeContentNotice_other": "内容非常大({{count}}字符). 显示原始预览以保持用户界面响应 。"
+ "largeContentNotice_few": "内容非常大({{count}} 字符)。显示原始预览以保持 UI 响应。",
+ "largeContentNotice_many": "内容非常大({{count}} 字符)。显示原始预览以保持 UI 响应。",
+ "largeContentNotice_one": "内容非常大({{count}} 字符)。显示原始预览以保持 UI 响应。",
+ "largeContentNotice_other": "内容非常大({{count}} 字符)。显示原始预览以保持 UI 响应。"
},
"terminal": {
- "checkOutputForDetails": "检查上面的终端输出详情",
- "closingInSeconds": "在 {{count}}s 关闭...",
- "closingInSeconds_few": "在 {{count}}s 关闭...",
- "closingInSeconds_many": "在 {{count}}s 关闭...",
- "closingInSeconds_one": "在 {{count}}s 关闭...",
- "closingInSeconds_other": "在 {{count}}s 关闭...",
- "completedSuccessfully": "已成功完成",
- "exitCode": "(出口代码{{code}}).",
+ "checkOutputForDetails": "检查上面的终端输出以了解详细信息",
+ "closingInSeconds": "结束于 {{count}}…",
+ "closingInSeconds_few": "结束于 {{count}}…",
+ "closingInSeconds_many": "结束于 {{count}}…",
+ "closingInSeconds_one": "结束于 {{count}}…",
+ "closingInSeconds_other": "结束于 {{count}}…",
+ "completedSuccessfully": "成功完成",
+ "exitCode": "(退出代码 {{code}})",
"processFailed": "进程失败",
"title": "终端"
},
"tokens": {
- "accumulatedWithoutDuplication": "整个届会累积而无重复",
- "cacheRead": "缓存已读",
- "cacheWrite": "快取写入",
- "costUsd": "费用(ZXCVTKEN0ZXCV)",
- "inputTokens": "输入键",
- "model": "型号",
- "outputTokens": "输出键",
- "phase": "阶段{{phase}}页:1{{total}}",
- "promptInputShare": "{{percent}} 快速输入的%",
+ "accumulatedWithoutDuplication": "整个会话持续时间累计,无重复",
+ "cacheRead": "缓存读取",
+ "cacheWrite": "缓存写入",
+ "costUsd": "成本(美元)",
+ "inputTokens": "输入 Token",
+ "model": "模型",
+ "outputTokens": "输出 Token",
+ "phase": "相 {{phase}}/{{total}}",
+ "promptInputShare": "提示词输入的 {{percent}}%",
"taskCoordination": "任务协调",
- "thinkingText": "思维+ 文字",
+ "thinkingText": "思考+文字",
"toolOutputs": "工具输出",
- "total": "共计",
- "userMessages": "用户信件",
- "visibleContext": "可见背景",
- "includesClaudeMd": "包括CLUDE.md×{{count}}",
- "claudeMd": "ZXCVKEN0ZXCV.MD 维基百科中的相关条目: 维基文库中相关的原始文献: 维基文库中相关的原始文献: 维基语录",
- "mentionedFiles": "@ 文件",
- "percentValue": "(单位:千美元){{percent}}(百分比)",
- "approxTokens": "~{{tokens}} 符号",
- "approxTokensParenthesized": "(~~) (中文(简体) ).{{tokens}}页:1"
+ "total": "总计",
+ "userMessages": "用户消息",
+ "visibleContext": "可见的上下文",
+ "includesClaudeMd": "包括。CLAUDE.md ×{{count}}",
+ "claudeMd": "CLAUDE.md",
+ "mentionedFiles": "@文件",
+ "percentValue": "({{percent}}%)",
+ "approxTokens": "~{{tokens}} Token",
+ "approxTokensParenthesized": "(~{{tokens}})"
},
"list": {
"actions": {
"copyTeam": "复制团队",
"createTeam": "创建团队",
- "deleteForever": "永远删除",
+ "deleteForever": "永久删除",
"deletePermanently": "永久删除",
"deleteTeam": "删除团队",
- "launching": "正在发射...",
- "launchTeam": "发射队",
- "relaunchTeam": "发射队",
+ "launching": "正在启动…",
+ "launchTeam": "启动团队",
+ "relaunchTeam": "重新启动团队",
"restore": "恢复",
- "restoreTeam": "恢复小组",
+ "restoreTeam": "恢复队伍",
"retry": "重试",
- "stopTeam": "停止小组",
- "stopping": "正在停止中..."
+ "stopTeam": "停队",
+ "stopping": "停止…"
},
"status": {
- "active": "活动",
- "deleted": "删除",
- "launching": "正在发射...",
+ "active": "活跃",
+ "deleted": "已删除",
+ "launching": "正在启动…",
"offline": "离线",
- "partialFailure": "发射失败的路段",
- "partialPending": "拖带待处理",
+ "partialFailure": "启动中途失败",
+ "partialPending": "引导挂起",
"partialSkipped": "启动跳过的成员",
- "running": "运行"
+ "running": "跑步"
},
"partial": {
- "pending": "上次发射还在调和",
- "skipped": "上次发射已经跳过了队友",
- "skippedWithCount": "最后一次发射跳过{{count}}/{{expected}}队友.",
- "skippedWithCount_few": "最后一次发射跳过{{count}}/{{expected}}队友.",
- "skippedWithCount_many": "最后一次发射跳过{{count}}/{{expected}}队友.",
- "skippedWithCount_one": "最后一次发射跳过{{count}}/{{expected}}队友.",
- "skippedWithCount_other": "最后一次发射跳过{{count}}/{{expected}}队友.",
- "stopped": "最后一次发射在所有队友加入之前就停止了.",
- "stoppedWithCount": "最后一次发射在{{count}}/{{expected}}队友加入之前停止.",
- "stoppedWithCount_few": "最后一次发射在{{count}}/{{expected}}队友加入之前停止.",
- "stoppedWithCount_many": "最后一次发射在{{count}}/{{expected}}队友加入之前停止.",
- "stoppedWithCount_one": "最后一次发射在{{count}}/{{expected}}队友加入之前停止.",
- "stoppedWithCount_other": "最后一次发射在{{count}}/{{expected}}队友加入之前停止."
+ "pending": "上次启动仍在协调中。",
+ "skipped": "上次启动跳过了队友。",
+ "skippedWithCount": "上次启动跳过了 {{count}}/{{expected}} 队友。",
+ "skippedWithCount_few": "上次启动跳过了 {{count}}/{{expected}} 队友。",
+ "skippedWithCount_many": "上次启动跳过了 {{count}}/{{expected}} 队友。",
+ "skippedWithCount_one": "上次启动跳过了 {{count}}/{{expected}} 队友。",
+ "skippedWithCount_other": "上次启动跳过了 {{count}}/{{expected}} 队友。",
+ "stopped": "上次启动在所有队友加入之前停止了。",
+ "stoppedWithCount": "上次启动在 {{count}}/{{expected}} 队友加入之前停止。",
+ "stoppedWithCount_few": "上次启动在 {{count}}/{{expected}} 队友加入之前停止。",
+ "stoppedWithCount_many": "上次启动在 {{count}}/{{expected}} 队友加入之前停止。",
+ "stoppedWithCount_one": "上次启动在 {{count}}/{{expected}} 队友加入之前停止。",
+ "stoppedWithCount_other": "上次启动在 {{count}}/{{expected}} 队友加入之前停止。"
},
- "noDescription": "无说明",
+ "noDescription": "无描述",
"solo": "独奏",
- "membersCount": "成员:{{count}}",
- "membersCount_few": "成员:{{count}}",
- "membersCount_many": "成员:{{count}}",
- "membersCount_one": "成员:{{count}}",
- "membersCount_other": "成员:{{count}}",
- "all": "全体",
- "moreCount": "+ 键{{count}}更多",
- "moreCount_one": "+ 键{{count}}更多",
- "moreCount_other": "+ 键{{count}}更多",
- "moreCount_few": "+ 键{{count}}更多",
- "moreCount_many": "+ 键{{count}}更多"
+ "membersCount": "成员:{{count}}",
+ "membersCount_few": "成员:{{count}}",
+ "membersCount_many": "成员:{{count}}",
+ "membersCount_one": "成员: {{count}}",
+ "membersCount_other": "成员:{{count}}",
+ "all": "全部",
+ "moreCount": "+{{count}} 更多",
+ "moreCount_one": "+{{count}} 更多",
+ "moreCount_other": "+{{count}} 更多",
+ "moreCount_few": "+{{count}} 更多",
+ "moreCount_many": "+{{count}} 更多"
},
"runtimeProvider": {
"defaults": {
- "scopeDescriptionAllProjects": "默认没有自己的 OpenCode 覆盖的每个工程 。",
- "scopeDescriptionProject": "只覆盖选中的项目 。 运行队伍不变.",
- "setAllProjectsDefault": "设置全部项目默认值",
- "setProjectDefault": "设定工程默认",
- "validationContext": "验证背景",
+ "scopeDescriptionAllProjects": "每个没有自己的 OpenCode 覆盖的项目的默认值。",
+ "scopeDescriptionProject": "仅覆盖选定的项目。运行团队没有变化。",
+ "setAllProjectsDefault": "设置所有项目默认值",
+ "setProjectDefault": "设置项目默认值",
+ "validationContext": "验证上下文",
"projectOverrideContext": "项目覆盖上下文",
- "selectProjectHint": "在测试本地模型或保存默认值之前选择一个项目 。",
- "allProjectsHint": "测试使用{{project}}. 默认适用,除非项目有超标。",
- "projectHint": "保存只覆盖 {{project}}."
+ "selectProjectHint": "在测试本地模型或保存默认值之前选择一个项目。",
+ "allProjectsHint": "测试使用 {{project}}。除非项目有覆盖,否则应用默认值。",
+ "projectHint": "保存仅覆盖 {{project}}。"
}
},
"sessionContext": {
"header": {
- "title": "背景情况",
+ "title": "上下文",
"closePanel": "关闭面板",
- "phase": "阶段:",
- "current": "当前",
- "view": "视图:",
+ "phase": "阶段:",
+ "current": "当前的",
+ "view": "看法:",
"category": "类别",
- "bySize": "按大小"
+ "bySize": "按尺寸"
},
"metrics": {
- "unavailable": "无法获取",
- "contextUsed": "使用的背景",
- "promptInput": "提示输入",
- "visibleContext": "可见背景",
- "ofContext": "上下文",
- "ofPrompt": "时速",
- "codexTelemetryUnavailable": "Codex 即时侧用尚未被当前运行时间遥测显示, 因此“ 即时输入” 和“ 上下文” 不可用, 而不是显示假零 。",
- "sessionCost": "会议费用:",
- "parentPlus": "父词 +",
- "subagents": "子剂",
+ "unavailable": "不可用",
+ "contextUsed": "使用的上下文",
+ "promptInput": "提示词输入",
+ "visibleContext": "可见的上下文",
+ "ofContext": "上下文的",
+ "ofPrompt": "提示词的",
+ "codexTelemetryUnavailable": "当前运行时遥测尚未公开 Codex 提示词侧使用情况,因此提示词输入和使用的上下文保持不可用,而不是显示假零。",
+ "sessionCost": "会话费用:",
+ "parentPlus": "家长+",
+ "subagents": "子智能体",
"details": "细节"
},
"help": {
"contextUsed": {
- "title": "使用的背景",
- "description": "正在占用模型上下文窗口的快速输入加输出符 。"
+ "title": "使用的上下文",
+ "description": "提示词输入以及当前占据模型上下文窗口的输出 Token。"
},
"promptInput": {
- "title": "提示输入",
- "description": "托肯斯在一代之前就被送到模型了. 对于克劳德,这包括`input_tokens + cache_creation_input_tokens + cache_read_input_tokens`."
+ "title": "提示词输入",
+ "description": "在生成之前发送到模型的 Token。对于 Claude 来说,这包括“input_tokens + cache_creation_input_tokens + cache_read_input_tokens”。"
},
"visibleContext": {
- "title": "可见背景",
- "description": "可检查的即时输入子集:文件,CLAUDE.md,工具输出,用户信息,以及您可以直接优化的类似注入."
+ "title": "可见的上下文",
+ "description": "提示词输入的可检查子集:文件、CLAUDE.md、工具输出、用户消息以及可以直接优化的类似注入。"
},
"availability": {
"title": "可用性",
- "description": "如果供应商运行时间尚未显示即时侧用量,则面板显示没有指标,而不是假装为零。"
+ "description": "如果提供商运行时尚未公开提示词侧使用情况,面板会将指标显示为不可用,而不是假装它们为零。"
}
},
"items": {
- "turn": "@ 翻转 {{turn}}",
- "tokensApprox": "~{{tokens}} 符号",
- "toolsCount": "{{count}}工具",
+ "turn": "@第 {{turn}} 轮",
+ "tokensApprox": "~{{tokens}} Token",
+ "toolsCount": "{{count}} 工具",
"toolsCount_one": "{{count}} 工具",
- "toolsCount_other": "{{count}}工具",
- "toolsCount_few": "{{count}}工具",
- "toolsCount_many": "{{count}}工具",
- "itemsCount": "{{count}}项目",
- "itemsCount_one": "{{count}}项目",
- "itemsCount_other": "{{count}}项目",
- "itemsCount_few": "{{count}}项目",
- "itemsCount_many": "{{count}}项目",
- "missing": "缺少",
- "thinking": "思维",
- "text": "文字"
+ "toolsCount_other": "{{count}} 工具",
+ "toolsCount_few": "{{count}} 工具",
+ "toolsCount_many": "{{count}} 工具",
+ "itemsCount": "{{count}} 项目",
+ "itemsCount_one": "{{count}} 项目",
+ "itemsCount_other": "{{count}} 项目",
+ "itemsCount_few": "{{count}} 项目",
+ "itemsCount_many": "{{count}} 项目",
+ "missing": "丢失的",
+ "thinking": "思考",
+ "text": "文本"
},
- "empty": "此会话中没有检测到上下文注入",
+ "empty": "此会话中未检测到上下文注入",
"view": {
"grouped": "分组",
- "flat": "平面"
+ "flat": "平坦的"
},
- "claudeMdFiles": "CLAUDE.md 文档",
- "mentionedFiles": "引用文件"
+ "claudeMdFiles": "CLAUDE.md 文件",
+ "mentionedFiles": "提及的文件"
},
"chat": {
"subagent": {
- "fallbackName": "副剂",
- "shutdownConfirmed": "关闭确认",
+ "fallbackName": "子智能体",
+ "shutdownConfirmed": "已确认关闭",
"summary": {
- "tools": "{{count}}工具",
+ "tools": "{{count}} 工具",
"tools_one": "{{count}} 工具",
- "tools_other": "{{count}}工具",
- "tools_few": "{{count}}工具",
- "tools_many": "{{count}}工具"
+ "tools_other": "{{count}} 工具",
+ "tools_few": "{{count}} 工具",
+ "tools_many": "{{count}} 工具"
},
"meta": {
"type": "类型",
- "duration": "会期",
- "model": "型号",
- "id": "身份证"
+ "duration": "持续时间",
+ "model": "模型",
+ "id": "ID"
},
"metrics": {
- "contextWindow": "背景窗口",
- "contextUsage": "背景使用情况",
+ "contextWindow": "上下文窗口",
+ "contextUsage": "上下文使用",
"mainContext": "主要背景",
- "totalOutput": "产出共计",
- "turns": "(单位:千美元){{count}}转弯).",
- "turns_one": "(单位:千美元){{count}}转弯).",
- "turns_other": "(单位:千美元){{count}}转弯).",
- "subagentContext": "子代理上下文",
- "phase": "{{phase}}阶段",
- "turns_few": "(单位:千美元){{count}}转弯).",
- "turns_many": "(单位:千美元){{count}}转弯)."
+ "totalOutput": "总产量",
+ "turns": "({{count}} 转)",
+ "turns_one": "({{count}} 转)",
+ "turns_other": "({{count}} 转)",
+ "subagentContext": "子智能体上下文",
+ "phase": "相 {{phase}}",
+ "turns_few": "({{count}} 转)",
+ "turns_many": "({{count}} 转)"
},
"trace": {
- "title": "执行追踪"
+ "title": "执行跟踪"
}
},
"user": {
- "you": "你们",
+ "you": "你",
"showMore": "显示更多",
- "showLess": "显示较少",
- "backgroundTask": "背景任务",
- "exitCode": "出口 {{code}}",
- "imagesAttached": "附上的 {{count}} 图像",
- "imagesAttached_one": "{{count}} 图像附着",
- "imagesAttached_few": "附上的 {{count}} 图像",
- "imagesAttached_many": "附上的 {{count}} 图像",
- "imagesAttached_other": "附上的 {{count}} 图像"
+ "showLess": "收起",
+ "backgroundTask": "后台任务",
+ "exitCode": "退出 {{code}}",
+ "imagesAttached": "附 {{count}} 图片",
+ "imagesAttached_one": "附 {{count}} 图片",
+ "imagesAttached_few": "附 {{count}} 图片",
+ "imagesAttached_many": "附 {{count}} 图片",
+ "imagesAttached_other": "附 {{count}} 图片"
},
"compact": {
"toggle": "切换压缩内容",
- "contextCompacted": "背景紧凑",
- "freedTokens": "(单位:千美元){{tokens}}(释放)",
- "phase": "{{phase}}阶段",
- "conversationCompacted": "已压缩",
- "summary": "将以前的信件摘要保存上下文 。 完整的对话历史保存在会话文件中.",
+ "contextCompacted": "上下文压缩",
+ "freedTokens": "({{tokens}} 已释放)",
+ "phase": "相 {{phase}}",
+ "conversationCompacted": "对话压缩",
+ "summary": "对之前的消息进行了总结以保存上下文。完整的对话历史记录保存在会话文件中。",
"compacted": "压缩"
},
"executionTrace": {
"empty": "无执行项目",
- "nested": "巢穴: {{name}}",
- "input": "投入"
+ "nested": "嵌套:{{name}}",
+ "input": "输入"
},
"items": {
- "empty": "无要显示的项目"
+ "empty": "没有可显示的项目"
},
"tools": {
- "teammateSpawned": "队友产卵",
- "shutdownRequested": "要求关闭 - >",
+ "teammateSpawned": "队友生成",
+ "shutdownRequested": "请求关闭 ->",
"noResultReceived": "未收到结果",
- "duration": "会期: {{duration}}",
+ "duration": "持续时间:{{duration}}",
"result": "结果",
"write": {
- "createdFile": "创建文件",
+ "createdFile": "已创建文件",
"wroteToFile": "写入文件"
},
"skill": {
@@ -501,27 +501,27 @@
}
},
"lastOutput": {
- "requestInterrupted": "被用户中断的请求",
- "planReadyForApproval": "准备核准计划"
+ "requestInterrupted": "请求被用户中断",
+ "planReadyForApproval": "计划已准备好等待批准"
},
"empty": {
"icon": "💬",
- "title": "没有对话历史",
- "description": "此会话尚未包含任何消息 。"
+ "title": "没有对话历史记录",
+ "description": "此会话尚不包含任何消息。"
},
"context": {
- "remainingPercent": "(单位:千美元){{percent}}剩余百分比)",
- "count": "背景情况({{count}})",
- "count_one": "背景情况({{count}})",
- "count_other": "背景情况({{count}})",
- "count_few": "背景情况({{count}})",
- "count_many": "背景情况({{count}})"
+ "remainingPercent": "({{percent}}%剩余)",
+ "count": "上下文({{count}})",
+ "count_one": "上下文({{count}})",
+ "count_other": "上下文({{count}})",
+ "count_few": "上下文({{count}})",
+ "count_many": "上下文({{count}})"
},
- "scrollToBottom": "向下滚动",
- "bottom": "底层",
+ "scrollToBottom": "滚动到底部",
+ "bottom": "底部",
"teammateMessage": {
- "message": "消息",
- "resent": "拒绝",
+ "message": "信息",
+ "resent": "重新发送",
"fallback": "队友消息"
},
"system": {
@@ -530,310 +530,310 @@
},
"tmuxInstaller": {
"summaryTitle": "tmux 未安装",
- "detectedOs": "探测到的OS: {{os}}",
- "runtimePath": "运行时间路径: {{path}}",
- "phase": "阶段:{{phase}}",
+ "detectedOs": "检测到的操作系统:{{os}}",
+ "runtimePath": "运行时路径:{{path}}",
+ "phase": "相位:{{phase}}",
"actions": {
"cancel": "取消",
- "manualGuide": "手册指南",
+ "manualGuide": "手动引导",
"hideSetupSteps": "隐藏设置步骤",
- "showSetupSteps": "显示设置步骤( {{count}})",
- "showSetupSteps_one": "显示设置步骤( {{count}})",
- "showSetupSteps_other": "显示设置步骤( {{count}})",
+ "showSetupSteps": "显示设置步骤 ({{count}})",
+ "showSetupSteps_one": "显示设置步骤 ({{count}})",
+ "showSetupSteps_other": "显示设置步骤 ({{count}})",
"recheck": "重新检查",
- "showSetupSteps_few": "显示设置步骤( {{count}})",
- "showSetupSteps_many": "显示设置步骤( {{count}})"
+ "showSetupSteps_few": "显示设置步骤 ({{count}})",
+ "showSetupSteps_many": "显示设置步骤 ({{count}})"
},
"installerProgress": "安装进度",
"input": {
- "placeholder": "向安装器发送输入",
+ "placeholder": "将输入发送给安装程序",
"send": "发送输入",
- "passwordNotice": "密码输入直接发送到安装终端,不添加到日志输出中."
+ "passwordNotice": "密码输入直接发送到安装程序终端,不会添加到日志输出中。"
},
"details": {
- "show": "显示细节",
- "hide": "隐藏细节"
+ "show": "显示详情",
+ "hide": "隐藏详细信息"
}
},
"commandPalette": {
"noRecentActivity": "最近没有活动",
- "sessionsCount": "{{count}}届会",
- "sessionsCount_one": "{{count}}会议",
- "sessionsCount_other": "{{count}}届会",
+ "sessionsCount": "{{count}} 会话",
+ "sessionsCount_one": "{{count}} 会话",
+ "sessionsCount_other": "{{count}} 会话",
"mode": {
"searchProjects": "搜索项目",
"searchAcrossProjects": "搜索所有项目",
- "searchInProject": "在工程中搜索"
+ "searchInProject": "在项目中搜索"
},
"currentProject": "当前项目",
- "global": "全球",
+ "global": "全球的",
"placeholders": {
- "projects": "搜索项目...",
- "conversations": "搜索对话..."
+ "projects": "搜索项目…",
+ "conversations": "搜索对话…"
},
"empty": {
- "noProjectsForQuery": "找不到“ {{query}}” 的项目",
- "noProjects": "未找到工程",
- "minChars": "至少输入2个要搜索的字符",
- "noFastResults": "“{{query}}”的近期会议没有快速结果",
- "noResults": "未发现“ {{query}}” 的结果"
+ "noProjectsForQuery": "未找到“{{query}}”的项目",
+ "noProjects": "未找到项目",
+ "minChars": "输入至少 2 个字符进行搜索",
+ "noFastResults": "在最近的会话中没有“{{query}}”的快速结果",
+ "noResults": "未找到“{{query}}”的结果"
},
"footer": {
- "projectsCount": "{{count}}项目",
- "projectsCount_one": "{{count}}项目",
- "projectsCount_other": "{{count}}项目",
- "results": "{{count}} {{speed}}结果",
- "results_one": "{{count}} {{speed}}结果",
- "results_other": "{{count}} {{speed}}结果",
- "resultsAcrossProjects": "{{count}} {{speed}}所有项目的成果",
- "resultsAcrossProjects_one": "{{count}} {{speed}}所有项目的结果",
- "resultsAcrossProjects_other": "{{count}} {{speed}}所有项目的成果",
- "fastPrefix": "快速",
- "typeToSearch": "要搜索的类型",
+ "projectsCount": "{{count}} 项目",
+ "projectsCount_one": "{{count}} 项目",
+ "projectsCount_other": "{{count}} 项目",
+ "results": "{{count}} {{speed}} 结果",
+ "results_one": "{{count}} {{speed}} 结果",
+ "results_other": "{{count}} {{speed}} 结果",
+ "resultsAcrossProjects": "{{count}} {{speed}} 所有项目的结果",
+ "resultsAcrossProjects_one": "{{count}} {{speed}} 所有项目的结果",
+ "resultsAcrossProjects_other": "{{count}} {{speed}} 所有项目的结果",
+ "fastPrefix": "快速地",
+ "typeToSearch": "输入搜索",
"navigate": "导航",
"select": "选择",
"open": "打开",
- "global": "全球",
+ "global": "全球的",
"close": "关闭",
- "results_few": "{{count}} {{speed}}结果",
- "results_many": "{{count}} {{speed}}结果",
- "resultsAcrossProjects_few": "{{count}} {{speed}}所有项目的成果",
- "resultsAcrossProjects_many": "{{count}} {{speed}}所有项目的成果",
- "projectsCount_few": "{{count}}项目",
- "projectsCount_many": "{{count}}项目",
+ "results_few": "{{count}} {{speed}} 结果",
+ "results_many": "{{count}} {{speed}} 结果",
+ "resultsAcrossProjects_few": "{{count}} {{speed}} 所有项目的结果",
+ "resultsAcrossProjects_many": "{{count}} {{speed}} 所有项目的结果",
+ "projectsCount_few": "{{count}} 项目",
+ "projectsCount_many": "{{count}} 项目",
"upDownKey": "↑↓",
- "escapeKey": "埃斯克语"
+ "escapeKey": "Esc 键"
},
- "sessionsCount_few": "{{count}}届会",
- "sessionsCount_many": "{{count}}届会"
+ "sessionsCount_few": "{{count}} 会话",
+ "sessionsCount_many": "{{count}} 会话"
},
"tasksPanel": {
"title": "任务",
- "searchPlaceholder": "搜索任务...",
- "pinned": "固定",
- "groupByLabel": "分组方式:",
- "groupByAria": "分组",
+ "searchPlaceholder": "搜索任务…",
+ "pinned": "已固定",
+ "groupByLabel": "分组依据:",
+ "groupByAria": "分组依据",
"groupModes": {
"none": "无",
"project": "项目",
"time": "时间"
},
- "showArchived": "显示存档",
- "hideArchived": "隐藏存档",
+ "showArchived": "显示已存档",
+ "hideArchived": "隐藏已存档",
"empty": {
"noMatchingTasks": "没有匹配的任务",
"noTasks": "未找到任务"
},
- "teamLabel": "团队: {{team}}",
+ "teamLabel": "队伍:{{team}}",
"showMore": "显示更多",
- "showLess": "显示较少",
+ "showLess": "收起",
"deleteConfirm": {
"title": "删除任务",
- "message": "将任务 #{{taskId}} 移动到垃圾堆中吗?",
+ "message": "将任务 #{{taskId}} 移至垃圾箱?",
"confirmLabel": "删除",
"cancelLabel": "取消"
},
"deleteFailed": {
"title": "删除任务失败",
- "fallbackMessage": "发生了意外错误",
- "confirmLabel": "还好"
+ "fallbackMessage": "发生意外错误",
+ "confirmLabel": "好的"
},
"sort": {
- "byTime": "时间",
- "byUnread": "由未读",
- "byProject": "按项目分列",
+ "byTime": "按时间",
+ "byUnread": "未读",
+ "byProject": "按项目",
"byTeam": "按团队"
}
},
"toolViewer": {
- "input": "投入",
- "replaceAll": "(替换全部)",
- "noInputRecorded": "此工具调用没有记录输入 。",
+ "input": "输入",
+ "replaceAll": "(全部替换)",
+ "noInputRecorded": "没有记录此工具调用的输入。",
"agent": {
- "action": "动作",
+ "action": "行动",
"teammate": "队友",
"team": "团队",
- "runtime": "运行时间",
+ "runtime": "运行时",
"type": "类型",
- "startupInstructionsHidden": "启动指令隐藏在UI中."
+ "startupInstructionsHidden": "启动指令隐藏在 UI 中。"
}
},
"taskContextMenu": {
- "unpin": "撤销",
- "pin": "键",
+ "unpin": "取消固定",
+ "pin": "固定",
"rename": "重命名",
"markUnread": "标记为未读",
- "unarchive": "无存档",
- "archive": "存档",
+ "unarchive": "取消存档",
+ "archive": "档案",
"deleteTask": "删除任务"
},
"updateDialog": {
"closeDialog": "关闭对话框",
- "updateAvailable": "可更新",
- "updateReady": "更新准备",
- "noReleaseNotes": "没有可用的发行注释 。",
+ "updateAvailable": "可用更新",
+ "updateReady": "更新就绪",
+ "noReleaseNotes": "没有可用的发行说明。",
"viewOnGitHub": "在 GitHub 上查看",
- "later": "回头见",
- "restartNow": "重新开始",
+ "later": "之后",
+ "restartNow": "立即重新启动",
"download": "下载"
},
"errorBoundary": {
- "title": "出问题了",
- "description": "应用程序中发生了意外错误 。 您可以尝试重新装入页面或重新设置错误状态 。",
- "componentStack": "组件堆栈",
+ "title": "出了点问题",
+ "description": "应用中发生意外错误。您可以尝试重新加载页面或重置错误状态。",
+ "componentStack": "组件栈",
"tryAgain": "再试一次",
- "copied": "复制",
- "copyErrorDetails": "复制错误细节",
- "reportBugOnGitHub": "GitHub 上的报告错误",
- "reloadApp": "重新装入 App",
- "diagnosticsNotice": "GitHub 错误报告和复制的诊断包括错误消息,堆栈痕迹,app版本,活动标签,选中团队,任务上下文,以及环境细节."
+ "copied": "已复制",
+ "copyErrorDetails": "复制错误详细信息",
+ "reportBugOnGitHub": "在 GitHub 上报告错误",
+ "reloadApp": "重新加载应用",
+ "diagnosticsNotice": "GitHub 错误报告和复制的诊断信息包括错误消息、堆栈跟踪、应用版本、活动选项卡、选定的团队、任务上下文和环境详细信息。"
},
"runtimeBackendSelector": {
- "label": "运行时间后端",
- "resolved": "决定:{{backend}}",
- "current": "当前",
- "recommended": "建议",
- "unavailable": "无法获取",
- "cannotSelectYet": "此后端尚未选中 。",
+ "label": "运行时后端",
+ "resolved": "已解决:{{backend}}",
+ "current": "当前的",
+ "recommended": "推荐",
+ "unavailable": "不可用",
+ "cannotSelectYet": "尚无法选择该后端。",
"auto": "自动",
- "autoCurrently": "自动( 目前: {{backend}})",
+ "autoCurrently": "自动(当前:{{backend}})",
"audience": {
- "internal": "内部"
+ "internal": "内部的"
},
"states": {
- "locked": "已锁定",
- "disabled": "已禁用",
+ "locked": "锁定",
+ "disabled": "已停用",
"authRequired": "需要认证",
- "runtimeMissing": "缺少运行时间",
- "degraded": "有辱人格",
- "unavailable": "无法获取"
+ "runtimeMissing": "运行时缺失",
+ "degraded": "降级",
+ "unavailable": "不可用"
}
},
"providerModelBadges": {
- "checking": "检查中",
- "unavailable": "无法获取",
+ "checking": "检查",
+ "unavailable": "不可用",
"checkFailed": "检查失败",
"free": "免费",
- "freeTooltip": "由OpenCode元数据报告. 可用性和限制可能会改变。"
+ "freeTooltip": "由 OpenCode 元数据报告。可用性和限制可能会发生变化。"
},
"taskFilters": {
- "status": "状态",
+ "status": "地位",
"clearAll": "全部清除",
- "selectAll": "全部选择",
+ "selectAll": "选择全部",
"team": "团队",
- "allTeams": "所有小组",
- "searchTeams": "搜索组...",
- "noTeamsFound": "没有找到团队",
+ "allTeams": "所有团队",
+ "searchTeams": "搜寻队伍…",
+ "noTeamsFound": "未找到队伍",
"project": "项目",
"allProjects": "所有项目",
- "searchProjects": "搜索项目...",
- "noProjects": "无项目",
+ "searchProjects": "搜索项目…",
+ "noProjects": "没有项目",
"comments": "评论",
- "apply": "应用",
+ "apply": "申请",
"read": {
- "all": "全体",
+ "all": "全部",
"unread": "未读",
- "read": "读取"
+ "read": "读"
},
"statusOptions": {
- "todo": "TODO 苏维埃社会主义共和国",
- "inProgress": "在ZXCVKEN0ZXCV",
- "needsFix": "NEEDS ZXCV 1ZXCV",
- "done": "DONE 苏维埃社会主义共和国",
- "review": "REVIEW 苏维埃社会主义共和国",
- "approved": "APPROVED 苏维埃社会主义共和国"
+ "todo": "待办事项",
+ "inProgress": "进行中",
+ "needsFix": "需要修复",
+ "done": "结束",
+ "review": "审核中",
+ "approved": "已批准"
}
},
"sessionItem": {
- "totalContext": "总背景: {{tokens}} 令牌",
- "context": "背景:{{tokens}}",
- "phase": "阶段{{phase}}编号:",
- "compactedTo": "(与{{tokens}}协议)"
+ "totalContext": "总上下文:{{tokens}} Token",
+ "context": "上下文:{{tokens}}",
+ "phase": "{{phase}} 相:",
+ "compactedTo": "(压缩为 {{tokens}})"
},
"notifications": {
"row": {
"team": "团队",
- "subagent": "子剂",
+ "subagent": "子智能体",
"markAsRead": "标记为已读",
"delete": "删除",
"viewInSession": "在会话中查看"
},
"title": "通知",
- "loading": "正在装入通知...",
+ "loading": "正在加载通知…",
"actions": {
- "markFilteredAsRead": "将过滤后标记为已读",
- "markAllAsRead": "全部标为已读",
- "markFilteredRead": "已过滤已读",
- "markAllRead": "标记全部已读",
- "clearFilteredNotifications": "清除过滤通知",
- "clearAllNotifications": "清除全部通知",
+ "markFilteredAsRead": "将筛选结果标记为已读",
+ "markAllAsRead": "全部标记为已读",
+ "markFilteredRead": "将筛选结果标记为已读",
+ "markAllRead": "全部标记为已读",
+ "clearFilteredNotifications": "清除过滤的通知",
+ "clearAllNotifications": "清除所有通知",
"clickToConfirm": "点击确认",
"clearFiltered": "清除过滤",
"clearAll": "全部清除"
},
"counts": {
- "unreadInFilter": "{{count}} 过滤器未读",
- "unreadInFilter_one": "{{count}} 过滤器未读",
- "unreadInFilter_few": "{{count}} 过滤器未读",
- "unreadInFilter_many": "{{count}} 过滤器未读",
- "unreadInFilter_other": "{{count}} 过滤器未读",
- "inFilter": "{{count}}在过滤器中",
- "inFilter_one": "{{count}}在过滤器中",
- "inFilter_few": "{{count}}在过滤器中",
- "inFilter_many": "{{count}}在过滤器中",
- "inFilter_other": "{{count}}在过滤器中",
- "unread": "{{count}}未读",
- "unread_one": "{{count}}未读",
- "unread_few": "{{count}}未读",
- "unread_many": "{{count}}未读",
- "unread_other": "{{count}}未读",
- "total": "{{count}}共计",
- "total_one": "{{count}}共计",
- "total_few": "{{count}}共计",
- "total_many": "{{count}}共计",
- "total_other": "{{count}}共计"
+ "unreadInFilter": "{{count}} 过滤器中未读",
+ "unreadInFilter_one": "{{count}} 过滤器中未读",
+ "unreadInFilter_few": "{{count}} 过滤器中未读",
+ "unreadInFilter_many": "{{count}} 过滤器中未读",
+ "unreadInFilter_other": "{{count}} 过滤器中未读",
+ "inFilter": "过滤器中的 {{count}}",
+ "inFilter_one": "过滤器中的 {{count}}",
+ "inFilter_few": "过滤器中的 {{count}}",
+ "inFilter_many": "过滤器中的 {{count}}",
+ "inFilter_other": "过滤器中的 {{count}}",
+ "unread": "{{count}} 未读",
+ "unread_one": "{{count}} 未读",
+ "unread_few": "{{count}} 未读",
+ "unread_many": "{{count}} 未读",
+ "unread_other": "{{count}} 未读",
+ "total": "{{count}} 总计",
+ "total_one": "{{count}} 总计",
+ "total_few": "{{count}} 总计",
+ "total_many": "{{count}} 总计",
+ "total_other": "{{count}} 总计"
},
"filters": {
- "other": "其他人员"
+ "other": "其他"
},
"empty": {
"noMatching": "没有匹配的通知",
"noNotifications": "无通知",
"tryDifferentFilter": "尝试不同的过滤器",
- "allCaughtUp": "你们都赶上了!"
+ "allCaughtUp": "你们都被抓住了!"
}
},
"updates": {
- "restartToUpdate": "重新开始更新",
- "updateApp": "更新应用程序",
- "downloadedRestartTooltip": "更新下载, 重新启动以应用",
+ "restartToUpdate": "重启即可更新",
+ "updateApp": "更新应用",
+ "downloadedRestartTooltip": "更新已下载,重启即可应用",
"newVersionAvailable": "新版本可用",
- "updatingApp": "更新应用程序",
- "updateReady": "更新就绪",
- "restartNow": "重新开始"
+ "updatingApp": "正在更新应用",
+ "updateReady": "更新准备就绪",
+ "restartNow": "立即重新启动"
},
"layout": {
"github": "GitHub",
- "discord": "调色板",
+ "discord": "不和谐",
"expandSidebar": "展开侧边栏",
- "collapseSidebarShortcut": "折叠侧边栏( {{shortcut}})",
- "sidebarView": "边栏视图",
+ "collapseSidebarShortcut": "折叠侧边栏({{shortcut}})",
+ "sidebarView": "侧边栏视图",
"resizeSidebar": "调整侧边栏大小",
- "closeTab": "关闭标签",
- "openedFromSearch": "从搜索打开",
+ "closeTab": "关闭选项卡",
+ "openedFromSearch": "从搜索中打开",
"pinnedSession": "固定会话",
- "jumpToSection": "跳转到区域",
- "newTab": "新建标签",
- "newTabDashboard": "新建标签( 磁盘)",
+ "jumpToSection": "跳转至部分",
+ "newTab": "新标签页",
+ "newTabDashboard": "新选项卡(控制台)",
"refreshSession": "刷新会话",
- "refreshSessionWithShortcut": "刷新会话( {{shortcut}})",
- "loadingTab": "正在装入标签",
+ "refreshSessionWithShortcut": "刷新会话 ({{shortcut}})",
+ "loadingTab": "加载选项卡",
"menu": {
"teams": "团队",
"settings": "设置",
"extensions": "扩展",
"search": "搜索",
- "schedules": "附表",
+ "schedules": "计划任务",
"docs": "文档",
"exportMarkdown": "导出为 Markdown",
"exportJson": "导出为 JSON",
@@ -841,27 +841,27 @@
"analyzeSession": "分析会话"
},
"tabMenu": {
- "closeTabs": "关闭 {{count}} 标签",
- "closeTabs_one": "关闭 {{count}} 标签",
- "closeTabs_few": "关闭 {{count}} 标签",
- "closeTabs_many": "关闭 {{count}} 标签",
- "closeTabs_other": "关闭 {{count}} 标签",
- "closeTab": "关闭标签",
- "closeOtherTabs": "关闭其他标签",
- "splitRight": "向右分割",
- "splitLeft": "向左分割",
- "pinToSidebar": "平移到侧边栏",
- "unpinFromSidebar": "从侧边栏撤消",
+ "closeTabs": "关闭 {{count}} 选项卡",
+ "closeTabs_one": "关闭 {{count}} 选项卡",
+ "closeTabs_few": "关闭 {{count}} 选项卡",
+ "closeTabs_many": "关闭 {{count}} 选项卡",
+ "closeTabs_other": "关闭 {{count}} 选项卡",
+ "closeTab": "关闭选项卡",
+ "closeOtherTabs": "关闭其他选项卡",
+ "splitRight": "右分割",
+ "splitLeft": "左分割",
+ "pinToSidebar": "固定到侧边栏",
+ "unpinFromSidebar": "从侧边栏取消固定",
"hideFromSidebar": "从侧边栏隐藏",
- "unhideFromSidebar": "从侧边栏解开",
- "closeAllTabs": "关闭全部标签"
+ "unhideFromSidebar": "从侧边栏取消隐藏",
+ "closeAllTabs": "关闭所有选项卡"
},
"sections": {
"team": "团队",
- "sessions": "会议",
- "kanban": "坎班语Name",
- "claudeLogs": "日志",
- "messages": "信件"
+ "sessions": "会话",
+ "kanban": "看板",
+ "claudeLogs": "Claude 日志",
+ "messages": "消息"
}
},
"editorFormatting": {
@@ -871,8 +871,8 @@
"code": "代码"
},
"diff": {
- "changed": "已更改",
- "noChangesDetected": "未检测到变化"
+ "changed": "改变了",
+ "noChangesDetected": "未检测到任何变化"
},
"codexLogin": {
"copyLoginLinkAndCode": "复制 ChatGPT 登录链接和代码",
@@ -888,13 +888,13 @@
"restore": "恢复"
},
"context": {
- "local": "当地",
+ "local": "本地",
"switchingTo": "切换到 {{workspace}}",
- "loadingWorkspace": "正在装入工作空间",
+ "loadingWorkspace": "正在加载工作区",
"switchWorkspace": "切换工作空间"
},
"repositories": {
- "noneAvailable": "没有可用的寄存器",
+ "noneAvailable": "没有可用的仓库",
"remove": "删除仓库"
},
"export": {
@@ -902,26 +902,26 @@
"sessionTitle": "导出会话"
},
"brand": {
- "claude": "Claude"
+ "claude": "克洛德"
},
"sessionReport": {
"noSessionData": "没有可用的会话数据",
- "title": "会议报告"
+ "title": "会话报告"
},
"sessionFilters": {
"project": {
- "selectProject": "选择工程"
+ "selectProject": "选择项目"
}
},
"tasks": {
"date": {
- "updatedPrefix": "上调",
- "updatedYesterday": "昨天上楼了",
- "yesterday": "昨日来"
+ "updatedPrefix": "更新",
+ "updatedYesterday": "昨天更新",
+ "yesterday": "昨天"
},
"reviewState": {
- "needsFix": "需要修改"
+ "needsFix": "需要修复"
},
- "unassigned": "未指定"
+ "unassigned": "未分配的"
}
}
diff --git a/src/features/localization/renderer/locales/zh/dashboard.json b/src/features/localization/renderer/locales/zh/dashboard.json
index a49d1c5f..9c84025b 100644
--- a/src/features/localization/renderer/locales/zh/dashboard.json
+++ b/src/features/localization/renderer/locales/zh/dashboard.json
@@ -1,17 +1,17 @@
{
"cliStatus": {
"actions": {
- "alreadyLoggedIn": "已经登录了吗?",
- "becomeSponsor": "成为提案国",
+ "alreadyLoggedIn": "已经登录?",
+ "becomeSponsor": "成为赞助商",
"cancel": "取消",
- "checkNow": "现在检查",
+ "checkNow": "立即查看",
"checkUpdates": "检查更新",
- "checking": "正在检查...",
+ "checking": "检查…",
"connect": "连接",
"extensions": "扩展",
"login": "登录",
"manage": "管理",
- "manageProviders": "管理供应商",
+ "manageProviders": "管理提供商",
"plan": "计划",
"recheck": "重新检查",
"recheckProvider": "重新检查 {{provider}}",
@@ -20,161 +20,161 @@
"useCode": "使用代码"
},
"atlas": {
- "alt": "地图集云",
- "description": "Atlas Cloud是一个全模式的AI推论平台,它让开发者获得一个单一的AI API来访问视频生成,图像生成,以及LLM API. 与其管理多个供应商集成,不如连接一次,并获得所有模式300+全方位模型的统一访问. 请检查access-date=中的日期值 (帮助) Atlas Cloud新编码计划推广 更方便预算 API访问.",
- "openCodeProvider": "打开代码提供者",
- "plan": "阿特拉斯云编码计划",
- "sponsor": "发起人"
+ "alt": "Atlas Cloud",
+ "description": "Atlas Cloud 是一个全模态 AI 推理平台,为开发者提供单一 AI API 来访问视频生成、图像生成和 LLM API。您无需管理多个提供商集成,只需连接一次即可统一访问跨所有模态的 300 多个精选模型。查看 Atlas Cloud 的新编码计划促销活动,以获取更实惠的 API 访问权限。",
+ "openCodeProvider": "OpenCode 提供商",
+ "plan": "Atlas Cloud 编码计划",
+ "sponsor": "赞助"
},
"errors": {
- "checkStatusFailed": "检查 CLI 状态失败",
+ "checkStatusFailed": "无法检查 CLI 状态",
"installationFailed": "安装失败",
- "refreshFailed": "检查更新失败 。 检查您的网络连接并再次尝试 。",
- "runtimeUpdatedRefreshFailed": "运行时间已更新, 但无法刷新提供者状态 。"
+ "refreshFailed": "无法检查更新。检查您的网络连接并重试。",
+ "runtimeUpdatedRefreshFailed": "运行时已更新,但无法刷新提供商状态。"
},
"hints": {
- "backgroundStatus": "{{runtime}}状态将在背景中检查.",
- "codexApiKeyFallback": "{{hint}} ZXCV 1ZXCV 如果您切换了认证模式,则可以使用密钥倒置。",
- "codexAutoApiKey": "{{hint}} 苏维埃社会主义共和国 自动会继续使用API密钥,直到ChatGPT连接.",
- "codexFinishLogin": "在浏览器中完成 ChatGPT 登录 。 如果提示, 请输入显示的代码 。",
- "codexNoActiveLogin": "用法限制仅在Codex CLI看到一个活动中的ChatGPT账户后出现. 现在它没有报告ChatGPT的登录。",
- "codexNoActiveManagedSession": "用法限制仅在Codex CLI看到一个活动中的ChatGPT账户后出现. 本地 Codex 账户数据已存在, 但目前没有选择活动管理会话 。",
- "codexReconnectNeeded": "用法限制仅在 Codex 刷新当前选中的 ChatGPT 会话后才会出现 。 现在本地会议需要重新连接。",
- "firstCheckSlow": "第一次检查可能要30秒",
- "loginRequiredForTeams": "浏览会话和项目在不登录的情况下工作. 只需要登录即可运行代理团队.",
- "troubleshootTitle": "如果你确定你登录, 尝试这些步骤:"
+ "backgroundStatus": "{{runtime}} 状态将在后台检查。",
+ "codexApiKeyFallback": "如果您切换认证模式,{{hint}} API 密钥备用选项可用。",
+ "codexAutoApiKey": "{{hint}} Auto 将继续使用 API 密钥,直到连接 ChatGPT。",
+ "codexFinishLogin": "在浏览器中完成 ChatGPT 登录。如有提示,请输入显示的代码。",
+ "codexNoActiveLogin": "仅当 Codex CLI 看到有效的 ChatGPT 帐户后,才会出现用量限制。目前,它报告没有有效的 ChatGPT 登录。",
+ "codexNoActiveManagedSession": "仅当 Codex CLI 看到有效的 ChatGPT 帐户后,才会出现用量限制。本地 Codex 帐户数据存在,但目前未选择有效的托管会话。",
+ "codexReconnectNeeded": "仅在 Codex 刷新当前选定的 ChatGPT 会话后才会出现用量限制。现在本地会话需要重新连接。",
+ "firstCheckSlow": "第一次检查最多可能需要 30 秒",
+ "loginRequiredForTeams": "无需登录即可浏览会话和项目。仅需要登录才能运行 Agent Team。",
+ "troubleshootTitle": "如果您确定已登录,请尝试以下步骤:"
},
"installer": {
- "checkingLatest": "正在检查最新版本...",
- "downloading": "正在下载 {{runtime}}...",
- "installing": "正在安装 {{runtime}}...",
+ "checkingLatest": "正在检查最新版本…",
+ "downloading": "正在下载 {{runtime}}…",
+ "installing": "正在安装 {{runtime}}…",
"success": "成功安装 {{runtime}} v{{version}}",
- "verifying": "正在验证校验和..."
+ "verifying": "正在验证校验和…"
},
"labels": {
- "apiKeyRequired": "需要的 API 密钥",
- "comingSoon": "马上就来",
- "collapseProviderDetails": "折叠提供者细节",
- "expandProviderDetails": "扩展提供者细节",
+ "apiKeyRequired": "需要 API 密钥",
+ "comingSoon": "即将推出",
+ "collapseProviderDetails": "折叠提供商详细信息",
+ "expandProviderDetails": "展开提供商详细信息",
"generateLink": "生成链接",
"loadingRateLimits": "速率限制加载",
- "loggedOut": "供应商已登录",
+ "loggedOut": "提供商已注销",
"loginAuthFailed": "认证失败",
- "loginAuthUpdated": "更新认证",
+ "loginAuthUpdated": "认证已更新",
"loginComplete": "登录完成",
"loginFailed": "登录失败",
"loginTitle": "登录",
"logoutFailed": "注销失败",
- "logoutTitle": "注销",
+ "logoutTitle": "退出",
"notLoggedIn": "未登录",
"openLogin": "打开登录",
- "providerActionRequired": "需要提供者采取的行动",
- "resets": "重新发送 {{time}}",
- "runtimeLoginTitle": "{{runtime}} 苏维埃社会主义共和国 登录"
+ "providerActionRequired": "需要提供商采取行动",
+ "resets": "复位 {{time}}",
+ "runtimeLoginTitle": "{{runtime}} 登录"
},
"loading": {
- "aiProviders": "正在检查 AI 提供者...",
- "claudeCli": "正在检查克劳德CLI..."
+ "aiProviders": "检查 AI 提供商…",
+ "claudeCli": "检查 Claude CLI…"
},
"provider": {
"authenticated": "已认证",
- "backend": "后端: {{backend}}",
- "checkingAuthentication": "正在检查认证...",
- "checkingProviders": "正在检查提供者...",
- "configuredLocalCount": "{{count}} 本地配置",
- "configuredLocalCount_few": "{{count}} 本地配置",
- "configuredLocalCount_many": "{{count}} 本地配置",
- "configuredLocalCount_one": "{{count}} 本地配置",
- "configuredLocalCount_other": "{{count}} 本地配置",
- "configuredLocalTitle": "从您的 OpenCode 配置导入本地 OpenCode 路由 。",
- "connectedCount": "供应商:{{connected}}/{{denominator}}连接",
- "freeModels": "免费模式",
- "freeModelsTitle": "OpenCode 包含一些免费的模型选项, 如在您的设置中可用时的 Big Pickle 。 通过OpenCode的OpenRouter也可以曝光自由模型,但并不是每个OpenCode/OpenRouter模型都是免费的. 可用性和限制可能会改变。",
- "loadingModels": "正在装入模型...",
- "modelsUnavailable": "此运行时间构建无法使用的模型",
- "runtime": "运行时间: {{runtime}}",
- "verifiedCount": "{{count}} 经核查",
- "verifiedCount_few": "{{count}} 经核查",
- "verifiedCount_many": "{{count}} 经核查",
- "verifiedCount_one": "{{count}} 经核查",
- "verifiedCount_other": "{{count}} 经核查",
- "verifiedTitle": "带有成功执行证明的 OpenCode 路由 。"
+ "backend": "后端:{{backend}}",
+ "checkingAuthentication": "正在检查认证…",
+ "checkingProviders": "正在检查提供商…",
+ "configuredLocalCount": "{{count}} 配置本地",
+ "configuredLocalCount_few": "{{count}} 配置本地",
+ "configuredLocalCount_many": "{{count}} 配置本地",
+ "configuredLocalCount_one": "{{count}} 配置本地",
+ "configuredLocalCount_other": "{{count}} 配置本地",
+ "configuredLocalTitle": "从 OpenCode 配置导入的本地 OpenCode 路由。",
+ "connectedCount": "提供商:{{connected}}/{{denominator}} 连接",
+ "freeModels": "免费模型",
+ "freeModelsTitle": "OpenCode 包含免费模型选项,例如您的设置中可用的 Big Pickle。 OpenRouter 通过 OpenCode 也可以公开免费模型,但并非每个 OpenCode/OpenRouter 模型都是免费的。可用性和限制可能会发生变化。",
+ "loadingModels": "正在加载模型…",
+ "modelsUnavailable": "模型不适用于此运行时构建",
+ "runtime": "运行时:{{runtime}}",
+ "verifiedCount": "{{count}} 已验证",
+ "verifiedCount_few": "{{count}} 已验证",
+ "verifiedCount_many": "{{count}} 已验证",
+ "verifiedCount_one": "{{count}} 已验证",
+ "verifiedCount_other": "{{count}} 已验证",
+ "verifiedTitle": "OpenCode 路由具有成功的执行证明。"
},
"runtime": {
- "configuredHealthCheckFailed": "配置的 {{runtime}} 失败启动健康检查.",
- "configuredNotFound": "未找到配置的 {{runtime}} 。",
- "foundButFailed": "发现 {{runtime}} 失败启动",
- "healthCheckFailedDescription": "该应用程序发现了配置的{{runtime}},但其启动健康检查失败. 修理或重新安装,然后重试。",
+ "configuredHealthCheckFailed": "配置的 {{runtime}} 启动运行状况检查失败。",
+ "configuredNotFound": "未找到配置的 {{runtime}}。",
+ "foundButFailed": "找到 {{runtime}} 但启动失败",
+ "healthCheckFailedDescription": "应用找到配置的 {{runtime}},但其启动健康检查失败。修复或重新安装,然后重试。",
"install": "安装 {{runtime}}",
- "installRequiredDescription": "{{runtime}}是团队提供和会话管理所需的. 安装开始 。",
- "isRequired": "需要{{runtime}}",
- "reinstall": "莱因斯托尔 {{runtime}}"
+ "installRequiredDescription": "团队配置和会话管理需要 {{runtime}}。安装它即可开始。",
+ "isRequired": "{{runtime}} 为必填项",
+ "reinstall": "重新安装 {{runtime}}"
},
"runtimeInstall": {
- "checking": "检查中",
- "codexTitle": "在应用数据中安装代码CLI",
- "downloading": "下载",
- "downloadingPercent": "下载 {{percent}}%",
+ "checking": "检查",
+ "codexTitle": "将 Codex CLI 安装到应用数据中",
+ "downloading": "正在下载",
+ "downloadingPercent": "正在下载 {{percent}}%",
"install": "安装",
- "installing": "安装",
- "openCodeTitle": "安装 OpenCode 运行时间到应用数据",
+ "installing": "安装中",
+ "openCodeTitle": "将 OpenCode 运行时安装到应用数据中",
"retryInstall": "重试安装"
},
"troubleshoot": {
- "again": "再来一次",
- "authStatusCommand": "您所配置的 CLI 认证状态命令",
- "checkLoggedIn": "- 检查它是否显示\"Logged in\"",
- "click": "单击",
- "loginCommand": "运行时间登录命令",
- "logoutCommand": "运行时间登录命令",
- "openTerminal": "打开终端并运行:",
- "reloginPrefix": "如果上面写着登录但应用程序看不到的话,请试试:",
- "sameRuntime": "确保您的终端中的 CLI 与应用程序使用的运行时间相同",
+ "again": "再次",
+ "authStatusCommand": "您配置的 CLI 认证状态命令",
+ "checkLoggedIn": "- 检查是否显示“已登录”",
+ "click": "点击",
+ "loginCommand": "运行时登录命令",
+ "logoutCommand": "运行时注销命令",
+ "openTerminal": "打开终端并运行:",
+ "reloginPrefix": "如果显示已登录,但应用看不到它,请尝试:",
+ "sameRuntime": "确保终端中的 CLI 与应用使用的运行时相同",
"statusCacheHint": "- 有时状态会缓存几秒钟",
- "then": "接下来"
+ "then": "然后"
},
"warnings": {
- "multipleApiKeysMissing": "一个或多个提供者被设定为API密钥模式,但没有配置API密钥. 打开管理供应商以添加密钥或切换连接模式.",
- "multipleApiKeysNeedAttention": "一个或多个提供者被设定为API密钥模式,需要关注. 打开管理供应商来审查保存的密钥或切换连接模式 。",
- "notAuthenticated": "{{runtime}}已经安装,但您没有认证 。 团队提供和AI功能需要登录.",
- "singleApiKeyMissing": "{{provider}}被设定为API密钥模式,但没有配置API密钥. 打开管理供应商以添加密钥或切换连接模式 。",
- "singleApiKeyNeedsAttention": "{{provider}}设定为API密钥模式,但没有连接. 打开管理提供者来审查保存的密钥或切换连接模式 。"
+ "multipleApiKeysMissing": "一个或多个提供商设置为 API 密钥模式,但未配置 API 密钥。打开管理提供商以添加密钥或切换连接模式。",
+ "multipleApiKeysNeedAttention": "一个或多个提供商已设置为 API 密钥模式,需要引起注意。打开管理提供商以查看保存的密钥或切换连接模式。",
+ "notAuthenticated": "{{runtime}} 已安装,但您未经过认证。团队配置和 AI 功能需要登录。",
+ "singleApiKeyMissing": "{{provider}} 设置为 API 密钥模式,但未配置 API 密钥。打开管理提供商以添加密钥或切换连接模式。",
+ "singleApiKeyNeedsAttention": "{{provider}} 设置为 API 密钥模式,但未连接。打开管理提供商以查看保存的密钥或切换连接模式。"
}
},
"recentProjects": {
- "selectFolderTitle": "选择工程文件夹",
+ "selectFolderTitle": "选择项目文件夹",
"selectFolder": "选择文件夹",
- "failedToLoad": "装入工程失败",
+ "failedToLoad": "无法加载项目",
"retry": "重试",
- "noProjects": "未找到工程",
- "noMatches": "没有“ {{query}}” 的匹配",
+ "noProjects": "未找到项目",
+ "noMatches": "没有匹配“{{query}}”",
"noRecentProjects": "未找到最近的项目",
- "emptyDescription": "最近Claude和Codex的活动会在这里出现.",
- "loadMore": "装入更多",
+ "emptyDescription": "最近的 Claude 和 Codex 活动将出现在这里。",
+ "loadMore": "加载更多",
"card": {
- "deleted": "删除",
- "projectFolderMissing": "项目文件夹已不存在",
+ "deleted": "已删除",
+ "projectFolderMissing": "项目文件夹不再存在",
"taskCounts": {
- "active": "{{count}}活动",
- "active_one": "{{count}}活动",
- "active_other": "{{count}}活动",
- "active_few": "{{count}}活动",
- "active_many": "{{count}}活动",
- "pending": "{{count}}待处理",
- "pending_one": "{{count}}待处理",
- "pending_other": "{{count}}待处理",
- "pending_few": "{{count}}待处理",
- "pending_many": "{{count}}待处理",
- "done": "{{count}}已执行",
- "done_one": "{{count}}已执行",
- "done_other": "{{count}}已执行",
- "done_few": "{{count}}已执行",
- "done_many": "{{count}}已执行"
+ "active": "{{count}} 活跃",
+ "active_one": "{{count}} 活跃",
+ "active_other": "{{count}} 活跃",
+ "active_few": "{{count}} 活跃",
+ "active_many": "{{count}} 活跃",
+ "pending": "{{count}} 待定",
+ "pending_one": "{{count}} 待定",
+ "pending_other": "{{count}} 待定",
+ "pending_few": "{{count}} 待定",
+ "pending_many": "{{count}} 待定",
+ "done": "{{count}} 完成",
+ "done_one": "{{count}} 完成",
+ "done_other": "{{count}} 完成",
+ "done_few": "{{count}} 完成",
+ "done_many": "{{count}} 完成"
}
},
"title": "最近的项目",
"searchResults": "搜索结果",
- "searchPlaceholder": "搜索项目..."
+ "searchPlaceholder": "搜索项目…"
},
"actions": {
"selectTeam": "选择团队",
@@ -182,16 +182,16 @@
"clearSearch": "清除搜索"
},
"windowsAdmin": {
- "title": "建议使用 Windows 管理员模式",
- "description": "OpenCode 运行时间检查可以在代理 Teams AI 没有提升时超时. 在启动 OpenCode 团队前以管理员身份重新启动应用程序 。"
+ "title": "推荐使用 Windows 管理员模式",
+ "description": "当 Agent Teams AI 未提升时,OpenCode 运行时检查可能会超时。在启动 OpenCode 团队之前,使用以管理员身份运行重新启动应用。"
},
"webPreview": {
- "title": "打开桌面应用程序以完整功能",
- "description": "浏览器版本仍在开发中. 这里的项目行动、整合和现场状态更新可能有限。 使用桌面应用程序可靠地访问所有特性 。"
+ "title": "打开桌面应用以获取完整功能",
+ "description": "浏览器版本仍在开发中。项目操作、集成和实时状态更新可能会受到限制。使用桌面应用可靠地访问所有功能。"
},
"updateBanner": {
"newVersionAvailable": "新版本可用",
- "restartNow": "重新开始",
- "viewDetails": "查看细节"
+ "restartNow": "立即重新启动",
+ "viewDetails": "查看详情"
}
}
diff --git a/src/features/localization/renderer/locales/zh/errors.json b/src/features/localization/renderer/locales/zh/errors.json
index 11560dec..2c845706 100644
--- a/src/features/localization/renderer/locales/zh/errors.json
+++ b/src/features/localization/renderer/locales/zh/errors.json
@@ -1,3 +1,3 @@
{
- "fallback": "出了点问题"
+ "fallback": "出了点问题。"
}
diff --git a/src/features/localization/renderer/locales/zh/extensions.json b/src/features/localization/renderer/locales/zh/extensions.json
index f0f490e1..a086de37 100644
--- a/src/features/localization/renderer/locales/zh/extensions.json
+++ b/src/features/localization/renderer/locales/zh/extensions.json
@@ -2,171 +2,171 @@
"store": {
"actions": {
"addCustom": "添加自定义",
- "openDashboard": "打开挂板",
+ "openDashboard": "打开控制台",
"refreshCatalog": "刷新目录"
},
"capabilities": {
- "mcp": "磁共振:{{status}}",
- "plugins": "插件: {{status}}",
- "skills": "技能:{{status}}"
+ "mcp": "MCP:{{status}}",
+ "plugins": "插件:{{status}}",
+ "skills": "技能:{{status}}"
},
- "desktopOnly": "只有桌面应用程序可用 。",
+ "desktopOnly": "仅在桌面应用中可用。",
"provider": {
- "checkingStatus": "正在检查提供者状态...",
+ "checkingStatus": "正在检查提供商状态…",
"connected": "已连接",
- "loading": "正在装入...",
+ "loading": "加载中…",
"needsSetup": "需要设置",
"readyToConfigure": "准备配置",
"unsupported": "不支持"
},
"runtime": {
- "checkingAvailabilityDescription": "扩展需要配置的运行时间来管理插件,MCP服务器,技能和供应商连接.",
- "checkingAvailabilityTitle": "检查扩展运行时间可用性",
- "failedToStartDescription": "在运行时间通过启动健康检查之前,延长时间将被禁用。 打开Dash板修理或重新安装.",
- "failedToStartTitle": "已找到配置的运行时间, 但启动失败",
- "multimodelCapabilitiesDescription": "提供方的支持可因各节而异. 插件仅在运行时间明确宣布支持时显示 。",
- "multimodelCapabilitiesTitle": "多模式运行时间能力",
- "needsSignInDescription": "{{runtime}}被发现了{{version}},但插件安装被禁用,直到从Dashboard上签名.",
- "needsSignInTitle": "{{runtime}}需要登录",
- "notAvailableDescription": "扩展功能在运行时间安装之前被禁用. 打开Dash板安装并重试.",
- "notAvailableTitle": "配置的运行时间不可用",
- "readyDescription": "插件可以从此页{{versionSuffix}}安装.",
- "readyTitle": "{{runtime}}准备好了",
- "requiredForMutations": "安装或卸载扩展需要配置的运行时间. 从Dashboard上安装或修复."
+ "checkingAvailabilityDescription": "扩展需要配置的运行时来管理插件、MCP 服务器、技能和提供商连接。",
+ "checkingAvailabilityTitle": "检查扩展运行时可用性",
+ "failedToStartDescription": "在运行时通过其启动运行状况检查之前,扩展将被禁用。打开控制台进行修复或重新安装。",
+ "failedToStartTitle": "已找到配置的运行时但启动失败",
+ "multimodelCapabilitiesDescription": "不同功能的提供商支持可能不同。仅当运行时明确声明支持时才会显示插件。",
+ "multimodelCapabilitiesTitle": "多模型运行时功能",
+ "needsSignInDescription": "找到了 {{runtime}}{{version}},但在您从控制台登录之前,插件安装将被禁用。",
+ "needsSignInTitle": "{{runtime}} 需要登录",
+ "notAvailableDescription": "在安装运行时之前,扩展将被禁用。打开控制台进行安装并重试。",
+ "notAvailableTitle": "配置的运行时不可用",
+ "readyDescription": "可以从此页面安装插件 {{versionSuffix}}。",
+ "readyTitle": "{{runtime}} 已准备好",
+ "requiredForMutations": "安装或卸载扩展需要配置的运行时。从控制台安装或修复它。"
},
- "sessionsRestartWarning": "运行会话在重新启动前不会接收扩展更改 。",
+ "sessionsRestartWarning": "正在运行的会话在重新启动之前不会获取扩展更改。",
"tabs": {
"apiKeys": {
- "description": "在线服务的秘密密钥 。 在此添加它们, 这样插件, 服务器和集成可以连接和工作 。",
- "label": "API 苏维埃社会主义共和国 键"
+ "description": "在线服务的密钥。将它们添加到此处,以便插件、服务器和集成可以连接和工作。",
+ "label": "API 密钥"
},
"mcpServers": {
- "description": "连接到外部工具和应用程序 。 他们让运行时间读取数据或者做超过这个应用程序的行动.",
- "label": "MCP 苏维埃社会主义共和国 服务器"
+ "description": "与外部工具和应用的连接。它们让运行时读取数据或执行此应用之外的操作。",
+ "label": "MCP 服务器"
},
"plugins": {
- "description": "跑步时间加一点 在多模型模式中,当支持时,它们目前适用于Anthropic会话。 更广泛的提供者支助正在发展之中。",
+ "description": "运行时的小附加组件。在多模型模式下,它们当前适用于受支持的 Anthropic 会话。更广泛的提供商支持正在开发中。",
"label": "插件"
},
"skills": {
- "description": "为普通工作准备的指令。 它们有助于运行时间更一致地处理可重复的任务.",
+ "description": "常见工作的现成说明。它们帮助运行时更一致地处理可重复的任务。",
"label": "技能"
}
},
"title": "扩展"
},
"pluginsPanel": {
- "activeFilters": "{{count}}活动",
- "browseByFit": "以适合方式浏览",
+ "activeFilters": "{{count}} 活跃",
+ "browseByFit": "按适合浏览",
"capabilities": "能力",
"categories": "类别",
"clearAllFilters": "清除所有过滤器",
"clearFilters": "清除过滤器",
"counts": {
- "capabilities": "{{count}}能力",
- "categories": "{{count}}类别",
- "plugins": "{{count}}插件",
- "capabilities_few": "{{count}}能力",
- "capabilities_many": "{{count}}能力",
- "capabilities_one": "{{count}}能力",
- "capabilities_other": "{{count}}能力",
- "categories_few": "{{count}}类别",
- "categories_many": "{{count}}类别",
- "categories_one": "{{count}}类别",
- "categories_other": "{{count}}类别",
- "plugins_few": "{{count}}插件",
- "plugins_many": "{{count}}插件",
- "plugins_one": "{{count}}插件",
- "plugins_other": "{{count}}插件"
+ "capabilities": "{{count}} 能力",
+ "categories": "{{count}} 类别",
+ "plugins": "{{count}} 插件",
+ "capabilities_few": "{{count}} 能力",
+ "capabilities_many": "{{count}} 能力",
+ "capabilities_one": "{{count}} 能力",
+ "capabilities_other": "{{count}} 能力",
+ "categories_few": "{{count}} 类别",
+ "categories_many": "{{count}} 类别",
+ "categories_one": "{{count}} 类别",
+ "categories_other": "{{count}} 类别",
+ "plugins_few": "{{count}} 插件",
+ "plugins_many": "{{count}} 插件",
+ "plugins_one": "{{count}} 插件",
+ "plugins_other": "{{count}} 插件"
},
"empty": {
- "description": "稍后检查新插件",
- "filteredDescription": "尝试调整搜索或过滤标准",
- "filteredTitle": "没有匹配过滤器的插件",
+ "description": "稍后回来查看新插件",
+ "filteredDescription": "尝试调整您的搜索或过滤条件",
+ "filteredTitle": "没有插件符合您的过滤器",
"title": "没有可用的插件"
},
- "filterDescription": "按类别、能力或安装状态缩小目录。",
- "installedOnly": "仅安装",
- "providerSupportNotice": "目前只为Anthropic(克劳德)会议保证插件支持。 我们正在支持插件 跨所有代理。",
- "resultsUpdateInstantly": "精炼过滤器时立即更新结果。",
- "searchPlaceholder": "搜索插件...",
- "selectedCount": "{{count}}选中",
- "showing": "显示{{shown}}页:1{{total}}插件",
+ "filterDescription": "按类别、功能或安装状态缩小目录范围。",
+ "installedOnly": "仅已安装",
+ "providerSupportNotice": "目前仅保证 Anthropic (Claude) 会话的插件支持。我们正在努力支持所有智能体的插件。",
+ "resultsUpdateInstantly": "当您优化过滤器时,结果会立即更新。",
+ "searchPlaceholder": "搜索插件…",
+ "selectedCount": "已选择 {{count}}",
+ "showing": "正在显示 {{shown}} / {{total}} 个插件",
"sort": {
"category": "类别",
- "nameAsc": "名称 A- Z",
- "nameDesc": "名字为Z - A级",
- "popular": "大众"
+ "nameAsc": "名称 A-Z",
+ "nameDesc": "名称 Z-A",
+ "popular": "受欢迎的"
},
- "activeFilters_few": "{{count}}活动",
- "activeFilters_many": "{{count}}活动",
- "activeFilters_one": "{{count}}活动",
- "activeFilters_other": "{{count}}活动",
- "selectedCount_few": "{{count}}选中",
- "selectedCount_many": "{{count}}选中",
- "selectedCount_one": "{{count}}选中",
- "selectedCount_other": "{{count}}选中"
+ "activeFilters_few": "{{count}} 活跃",
+ "activeFilters_many": "{{count}} 活跃",
+ "activeFilters_one": "{{count}} 活跃",
+ "activeFilters_other": "{{count}} 活跃",
+ "selectedCount_few": "已选择 {{count}}",
+ "selectedCount_many": "已选择 {{count}}",
+ "selectedCount_one": "已选择 {{count}}",
+ "selectedCount_other": "已选择 {{count}}"
},
"customMcp": {
"actions": {
"add": "添加",
"cancel": "取消",
"install": "安装",
- "installing": "安装中..."
+ "installing": "正在安装…"
},
- "description": "在没有目录的情况下手动添加服务器 。",
+ "description": "手动添加服务器,无需目录。",
"errors": {
"installFailed": "安装失败",
- "invalidServerName": "无效的服务器名称 。 使用字母数字字符,破折号,下划线,点.",
- "npmPackageRequired": "需要 npm 软件包名称",
- "serverNameRequired": "需要服务器名称",
- "serverUrlRequired": "需要服务器 URL"
+ "invalidServerName": "服务器名称无效。使用字母数字字符、破折号、下划线、点。",
+ "npmPackageRequired": "npm 包名是必需的",
+ "serverNameRequired": "服务器名称为必填项",
+ "serverUrlRequired": "服务器 URL 为必填项"
},
"fields": {
"environmentVariables": "环境变量",
- "headers": "页眉",
- "npmPackage": "npm 软件包",
+ "headers": "标头",
+ "npmPackage": "npm 包",
"scope": "范围",
"serverName": "服务器名称",
- "serverUrl": "服务器 URL",
+ "serverUrl": "服务器地址",
"transport": "运输",
"transportType": "运输类型",
- "versionOptional": "版本( 可选)"
+ "versionOptional": "版本(可选)"
},
"title": "添加自定义 MCP 服务器",
"transport": {
- "httpSse": "ZXCVKEN0ZXCV / ZXCVTKEN1ZXCV",
- "stdio": "Stdio (npm) (英语)."
+ "httpSse": "HTTP/SSE",
+ "stdio": "Stdio (npm)"
},
"placeholders": {
- "headerName": "页眉 - Name",
- "envVarName": "ENV_VAR_NAME 苏维埃社会主义共和国",
+ "headerName": "标头名称",
+ "envVarName": "ENV_VAR_NAME",
"serverName": "我的服务器",
- "latest": "最新消息",
+ "latest": "最新的",
"value": "价值",
- "serverUrl": "https://api.example.com/mcp 苏维埃社会主义共和国"
+ "serverUrl": "https://api.example.com/mcp"
}
},
"mcpDetail": {
"auth": {
- "remoteMayNeedHeaders": "远程 MCP服务器可能仍然需要自定义头或API密钥,即使登记册没有描述它们. 如果安装后连接失败, 请检查提供者 docs 。",
- "required": "此服务器需要认证"
+ "remoteMayNeedHeaders": "即使注册表没有描述,远程 MCP 服务器可能仍然需要自定义标头或 API 密钥。如果安装后连接失败,请检查提供商文档。",
+ "required": "该服务器需要认证"
},
"diagnostics": {
- "launchTarget": "发射目标"
+ "launchTarget": "发送目标"
},
"form": {
"autoFilled": "自动填充",
"environmentVariables": "环境变量",
- "headers": "页眉",
+ "headers": "标头",
"scope": "范围",
"serverName": "服务器名称"
},
"install": {
- "httpTransport": "HTTP: (英语).{{transport}}",
- "manualSetupDescription": "此服务器需要手动设置 。 检查仓库以获取安装指令 。",
+ "httpTransport": "HTTP:{{transport}}",
+ "manualSetupDescription": "该服务器需要手动设置。检查仓库以获取安装说明。",
"manualSetupRequired": "需要手动设置",
- "npmPackage": "注:{{package}}",
+ "npmPackage": "npm: {{package}}",
"manage": "管理安装",
"install": "安装服务器"
},
@@ -177,25 +177,25 @@
},
"metadata": {
"author": "作者",
- "githubStars": "GitHub 星号",
+ "githubStars": "GitHub 之星",
"hosting": "托管",
"installType": "安装类型",
- "license": "许可证",
- "published": "已出版",
+ "license": "执照",
+ "published": "已发表",
"source": "来源",
- "updated": "更新",
+ "updated": "已更新",
"version": "版本"
},
"scope": {
- "local": "当地",
+ "local": "本地",
"project": "项目"
},
"tools": {
- "title": "工具 ({{count}})",
- "title_few": "工具 ({{count}})",
- "title_many": "工具 ({{count}})",
- "title_one": "工具 ({{count}})",
- "title_other": "工具 ({{count}})"
+ "title": "工具({{count}})",
+ "title_few": "工具({{count}})",
+ "title_many": "工具({{count}})",
+ "title_one": "工具({{count}})",
+ "title_other": "工具({{count}})"
},
"placeholders": {
"serverName": "我的服务器"
@@ -205,86 +205,86 @@
"actions": {
"cancel": "取消",
"createSkill": "创建技能",
- "preparing": "准备...",
- "reviewAndCreate": "审查和创建",
- "reviewAndSave": "审查并保存",
+ "preparing": "正在准备…",
+ "reviewAndCreate": "审核和创建",
+ "reviewAndSave": "查看并保存",
"saveSkill": "保存技能"
},
"advanced": {
- "customDescription": "此技能使用自定义的标记下格式, 因此在此直接编辑 。",
- "customTitle": "2. SKILL.md编辑器.",
- "description": "大多数人可以跳过这个。 只有在您想要直接控制原始标记下文件时才打开 。",
+ "customDescription": "该技能使用自定义的 markdown 格式,所以直接在这里编辑。",
+ "customTitle": "2.SKILL.md 编辑器",
+ "description": "大多数人可以跳过这一点。仅当您想直接控制原始 Markdown 文件时才打开它。",
"hide": "隐藏高级编辑器",
"resetFromStructuredFields": "从结构化字段重置",
"show": "显示高级编辑器",
- "title": "4. 高级 SKILL.md 编辑器"
+ "title": "4.高级 SKILL.md 编辑器"
},
"basics": {
- "description": "给这种技能一个明确的名字,选择谁可以使用它,并决定它应该住在哪里.",
- "title": "1. 基本情况"
+ "description": "给这个技能一个清晰的名称,选择谁可以使用它,并决定它应该存在的位置。",
+ "title": "1. 基础知识"
},
"description": {
- "create": "用简单的语言描述工作流程,审查将要创建的文件,然后保存它。",
- "edit": "更新此技能, 审查由此产生的文件更改, 然后保存它 。"
+ "create": "用通俗易懂的语言描述工作流程,查看将创建的文件,然后保存。",
+ "edit": "更新此技能,查看生成的文件更改,然后保存。"
},
"extraFiles": {
- "addedFiles": "添加的文件:",
+ "addedFiles": "添加的文件:",
"assets": "资产",
- "assetsDescription": "添加截图或捆绑的介质,前提是它们有助于解释工作流程.",
- "description": "只有当支持文件、脚本或资产的技能确实需要时,才添加它们。",
- "lockedForEdits": "根和文件夹已锁定用于编辑",
- "optionalDescription": "添加将包含在审查中的启动文件,并与 `SKILL.md` 一起编写.",
+ "assetsDescription": "仅当屏幕截图或捆绑媒体有助于解释工作流程时才添加它们。",
+ "description": "仅当该技能确实需要时才添加支持文档、脚本或资产。",
+ "lockedForEdits": "根目录和文件夹已锁定以进行编辑",
+ "optionalDescription": "添加将包含在评论中并与“SKILL.md”一起编写的入门文件。",
"optionalTitle": "可选文件",
- "references": "参考资料",
- "referencesDescription": "添加支持文件、 链接或运行时间可以查看的例子 。",
+ "references": "参考",
+ "referencesDescription": "添加运行时可以查看的支持文档、链接或示例。",
"scripts": "脚本",
- "scriptsDescription": "添加帮助命令或设置注释. 在分享这种技能之前仔细审查。",
+ "scriptsDescription": "添加帮助命令或设置注释。在分享此技能之前请仔细查看。",
"title": "3. 额外文件"
},
"fields": {
"compatibility": "兼容性",
- "description": "说明",
+ "description": "描述",
"folderName": "文件夹名称",
- "folderNameHint": "我们从技能名称中自动提出这个建议,所以审查立即进行。",
- "invocation": "应如何使用",
- "license": "许可证",
+ "folderNameHint": "我们会根据技能名称自动建议此操作,以便立即进行审核。",
+ "invocation": "应该如何使用",
+ "license": "执照",
"name": "技能名称",
- "notes": "额外纸条或护栏",
- "root": "在哪里储存",
- "scope": "谁能用呢?",
- "steps": "接下来的主要步骤",
- "whenToUse": "什么时候才能找到这个"
+ "notes": "额外注释或护栏",
+ "root": "存放在哪里",
+ "scope": "谁可以使用它",
+ "steps": "需要遵循的主要步骤",
+ "whenToUse": "何时达到这个目标"
},
"instructions": {
- "description": "这些章节为您生成技能文件, 因此您不需要编辑降标, 除非您想要 。",
- "locked": "结构化字段被锁定,因为您切换到下面的手动`SKILL.md`编辑.",
- "title": "2. 指示"
+ "description": "这些部分会为您生成技能文件,因此除非您愿意,否则不需要编辑 Markdown。",
+ "locked": "结构化字段被锁定,因为您切换到下面的手动“SKILL.md”编辑。",
+ "title": "2. 使用说明"
},
"invocation": {
- "auto": "可自动使用",
- "manualOnly": "只有在你要求的时候"
+ "auto": "可以自动使用",
+ "manualOnly": "只有当你要求的时候"
},
"placeholders": {
- "description": "这种技巧能帮助什么",
- "name": "写简洁的技巧名称",
- "notes": "示例:列出缺失的测试,回归和风险假设.",
- "steps": "1. 检查有关档案。\n2. 先解释主要风险。\n3. 提出最安全的解决办法。",
- "whenToUse": "示例: 当任务为代码检讨或错误分类请求时使用此功能 。",
- "license": "MIT 苏维埃社会主义共和国",
- "compatibility": "圆形码,光标"
+ "description": "这项技能有什么帮助",
+ "name": "写出简洁的技能名称",
+ "notes": "示例:指出缺失的测试、回归和风险假设。",
+ "steps": "1.检查相关文件。 2、先说明主要风险。 3.提出最安全的修复建议。",
+ "whenToUse": "示例:当任务是代码审核或错误分类请求时使用此选项。",
+ "license": "麻省理工学院",
+ "compatibility": "Claude Code,光标"
},
"review": {
- "creating": "创造技能",
- "hint": "首先审查文件更改,然后在下一步确认保存 。",
+ "creating": "创建技能",
+ "hint": "首先查看文件更改,然后在下一步中确认保存。",
"saving": "保存此技能"
},
"root": {
- "codexOnly": "- 只有代码",
+ "codexOnly": "- 仅 Codex",
"shared": "- 共享"
},
"scope": {
- "project": "项目:{{project}}",
- "projectUnavailable": "无法执行的项目",
+ "project": "项目:{{project}}",
+ "projectUnavailable": "项目不可用",
"user": "用户"
},
"title": {
@@ -297,10 +297,10 @@
"cancel": "取消",
"delete": "删除",
"deleteSkill": "删除技能",
- "deleting": "正在删除...",
+ "deleting": "正在删除…",
"editSkill": "编辑技能",
"openFolder": "打开文件夹",
- "openSkillFile": "打开 SKILL.md",
+ "openSkillFile": "打开技能.md",
"retry": "重试"
},
"badges": {
@@ -308,381 +308,381 @@
"autoUse": "自动使用",
"hasScripts": "有脚本",
"manualUse": "手动使用",
- "references": "参考资料",
- "storedIn": "存放于{{root}}"
+ "references": "参考",
+ "storedIn": "存储在 {{root}} 中"
},
"deleteDialog": {
- "description": "删除此技能并移动到回收站?",
- "descriptionWithName": "删除\"{{name}}\"并将其移动到垃圾堆? 如果需要, 您可以稍后从回收站恢复它 。",
- "title": "删除技能?"
+ "description": "删除该技能并将其移至垃圾箱?",
+ "descriptionWithName": "删除“{{name}}”并将其移至垃圾箱?如果需要,您可以稍后从“垃圾箱”中恢复它。",
+ "title": "删除技能?"
},
- "descriptionFallback": "检查发现了技能元数据和原始指令.",
+ "descriptionFallback": "检查发现的技能元数据和原始指令。",
"errors": {
"deleteFailed": "删除技能失败",
- "loadFailed": "无法装入此技能 。"
+ "loadFailed": "无法加载该技能。"
},
"files": {
- "advancedDetails": "高级文件细节",
+ "advancedDetails": "高级文件详细信息",
"assets": "资产",
- "references": "参考资料",
+ "references": "参考",
"scripts": "脚本",
- "storedAt": "存放于"
+ "storedAt": "存储于"
},
"includes": {
"assets": "资产",
- "instructionsOnly": "只是技巧指导",
- "references": "参考文献",
+ "instructionsOnly": "只是技能说明",
+ "references": "参考",
"scripts": "脚本"
},
"invocation": {
- "auto": "匹配任务时自动运行 。",
- "manualOnly": "只有在你明确要求的时候才能跑"
+ "auto": "匹配任务时自动运行。",
+ "manualOnly": "仅当您明确要求时才运行。"
},
"issues": {
- "bundledScripts": "此技能包括捆绑的脚本",
- "reviewCarefully": "在使用之前仔细审查一下这个技能"
+ "bundledScripts": "该技能包括捆绑脚本",
+ "reviewCarefully": "使用此技能之前请仔细查看"
},
- "loading": "正在装入技能细节...",
+ "loading": "正在加载技能详细信息…",
"scope": {
- "personal": "你的个人能力",
- "projectOnly": "只有这个项目"
+ "personal": "你的个人技能",
+ "projectOnly": "仅此项目"
},
"summary": {
"howUsed": "如何使用",
- "included": "怎么会这样",
- "whoCanUse": "谁能用呢?"
+ "included": "附带什么",
+ "whoCanUse": "谁可以使用它"
},
- "titleFallback": "技能细节"
+ "titleFallback": "技能详情"
},
"skillsPanel": {
"actions": {
"createSkill": "创建技能",
- "import": "导入"
+ "import": "进口"
},
"badges": {
"assets": "资产",
"hasScripts": "有脚本",
- "needsAttention": "需要关注",
- "references": "参考资料",
- "storedIn": "存放于{{root}}"
+ "needsAttention": "需要注意",
+ "references": "参考",
+ "storedIn": "存储在 {{root}} 中"
},
- "configuredRuntime": "已配置的运行时间",
+ "configuredRuntime": "配置的运行时",
"counts": {
- "codexOnly": "{{count}} 苏维埃社会主义共和国 仅编码",
- "personal": "{{count}}个人",
- "project": "{{count}}项目",
- "shared": "共享 {{count}}",
- "total": "{{count}}共计",
- "codexOnly_few": "{{count}} 苏维埃社会主义共和国 仅编码",
- "codexOnly_many": "{{count}} 苏维埃社会主义共和国 仅编码",
- "codexOnly_one": "{{count}} 苏维埃社会主义共和国 仅编码",
- "codexOnly_other": "{{count}} 苏维埃社会主义共和国 仅编码",
- "personal_few": "{{count}}个人",
- "personal_many": "{{count}}个人",
- "personal_one": "{{count}}个人",
- "personal_other": "{{count}}个人",
- "project_few": "{{count}}项目",
- "project_many": "{{count}}项目",
- "project_one": "{{count}}项目",
- "project_other": "{{count}}项目",
- "shared_few": "共享 {{count}}",
- "shared_many": "共享 {{count}}",
- "shared_one": "共享 {{count}}",
- "shared_other": "共享 {{count}}",
- "total_few": "{{count}}共计",
- "total_many": "{{count}}共计",
- "total_one": "{{count}}共计",
- "total_other": "{{count}}共计"
+ "codexOnly": "{{count}} 仅限 Codex",
+ "personal": "{{count}} 个人",
+ "project": "{{count}} 项目",
+ "shared": "{{count}} 共享",
+ "total": "{{count}} 总计",
+ "codexOnly_few": "{{count}} 仅限 Codex",
+ "codexOnly_many": "{{count}} 仅限 Codex",
+ "codexOnly_one": "{{count}} 仅限 Codex",
+ "codexOnly_other": "{{count}} 仅限 Codex",
+ "personal_few": "{{count}} 个人",
+ "personal_many": "{{count}} 个人",
+ "personal_one": "{{count}} 个人",
+ "personal_other": "{{count}} 个人",
+ "project_few": "{{count}} 项目",
+ "project_many": "{{count}} 项目",
+ "project_one": "{{count}} 项目",
+ "project_other": "{{count}} 项目",
+ "shared_few": "{{count}} 共享",
+ "shared_many": "{{count}} 共享",
+ "shared_one": "{{count}} 共享",
+ "shared_other": "{{count}} 共享",
+ "total_few": "{{count}} 总计",
+ "total_many": "{{count}} 总计",
+ "total_one": "{{count}} 总计",
+ "total_other": "{{count}} 总计"
},
"empty": {
- "noMatches": "没有与搜索相匹配的技能",
- "noMatchesDescription": "尝试不同的搜索术语或切换过滤器 。",
+ "noMatches": "没有符合您搜索条件的技能",
+ "noMatchesDescription": "尝试不同的搜索词或切换过滤器。",
"noSkills": "还没有技能",
- "noSkillsDescription": "创建您的第一个教授可重复工作流程的技能, 或者导入您已经使用的工作流程 。"
+ "noSkillsDescription": "创建您的第一项技能来教授可重复的工作流程,或导入您已经使用的技能。"
},
"filters": {
"all": "所有技能",
- "codexOnly": "仅编码",
+ "codexOnly": "仅 Codex",
"hasScripts": "有脚本",
- "needsAttention": "需要关注",
- "personal": "个人",
+ "needsAttention": "需要注意",
+ "personal": "个人的",
"project": "项目",
"shared": "共享"
},
"hero": {
- "codexAvailable": "使用 `.codex` 当一个技能应该只保留 Codex 时.",
- "codexUnavailable": "现有的`.codex`技能在这里仍然可以编辑,但新的 Codex 唯一技能需要启用 Codex 运行时间.",
- "description": "技能是可重复使用的指示,有助于运行时间更一致地处理同样的任务.",
- "guidance": "将个人技能用于所有你想要的习惯。 将工程技能用于仅在一个代码库内讲得通的工作流程.",
- "personalContext": "你现在只看到个人技能",
- "projectContext": "您看到的是{{project}}的技能 加上您的个人技能。",
+ "codexAvailable": "当技能应仅适用于 Codex 时,请使用“.codex”。",
+ "codexUnavailable": "现有的“.codex”技能在此处保持可编辑状态,但新的仅限 Codex 的技能需要启用 Codex 运行时。",
+ "description": "技能是可重用的指令,可帮助运行时更一致地处理同类任务。",
+ "guidance": "使用个人技能来养成你想要的随处习惯。将项目技能用于仅在一个代码库中有意义的工作流程。",
+ "personalContext": "您现在只能看到您的个人技能。",
+ "projectContext": "您正在看到 {{project}} 的技能以及您的个人技能。",
"title": "教授可重复的工作"
},
"invocation": {
"auto": "适合时自动运行",
- "manualOnly": "只当您明确要求时运行"
+ "manualOnly": "仅在您明确要求时运行"
},
"loading": {
- "loading": "正在装入技能...",
- "refreshing": "刷新技能中..."
+ "loading": "技能加载中…",
+ "refreshing": "技能刷新…"
},
- "runtimeAudience": "`.claude`,`.cursor`和`.agents`的共享技能可以提供给{{audience}}. 存储在`.codex`中的技能在 Codex 支持可用时只保留 Codex.",
+ "runtimeAudience": "{{audience}} 可以使用“.claude”、“.cursor”和“.agents”中的共享技能。当 Codex 支持可用时,存储在“.codex”中的技能仅适用于 Codex。",
"scope": {
- "project": "这个项目",
- "user": "个人"
+ "project": "此项目",
+ "user": "个人的"
},
- "searchPlaceholder": "以技能名称或它能帮助什么搜索...",
+ "searchPlaceholder": "按技能名称或它的帮助进行搜索…",
"sections": {
"personal": {
- "description": "随处可见你想要的卫生用品和指示",
+ "description": "您想要的习惯和说明随处可见。",
"title": "个人技能"
},
"project": {
- "description": "只有这个密码库才有意义的工作流程。",
+ "description": "仅对此代码库有意义的工作流程。",
"title": "项目技能"
}
},
"sort": {
- "label": "排序技能",
- "name": "名称",
- "recent": "近期"
+ "label": "排序技巧",
+ "name": "姓名",
+ "recent": "最近的"
},
"status": {
- "hasScripts": "包括脚本, 所以仔细审查",
- "needsAttention": "依赖它之前需要注意",
+ "hasScripts": "包含脚本,请仔细查看",
+ "needsAttention": "在依赖它之前需要注意",
"ready": "准备使用"
},
"success": {
- "created": "技能创建成功 。",
- "imported": "成功导入技能 。",
- "saved": "技能保存成功 。"
+ "created": "技能创建成功。",
+ "imported": "技能导入成功。",
+ "saved": "技能保存成功。"
}
},
"pluginDetail": {
- "unknown": "未知数",
+ "unknown": "未知",
"metadata": {
"author": "作者",
"category": "类别",
"source": "来源",
"version": "版本",
"capabilities": "能力",
- "installs": "安装"
+ "installs": "安装量"
},
"scope": {
- "label": "范围:",
+ "label": "范围:",
"options": {
- "user": "用户( 全球)",
- "project": "项目(分摊)",
- "local": "当地( 被忽略)"
+ "user": "用户(全球)",
+ "project": "项目(共享)",
+ "local": "本地(gitignored)"
}
},
"links": {
"homepage": "主页",
- "contact": "联系人"
+ "contact": "接触"
},
"readme": {
- "loading": "正在装入 ZXCVTKEN0ZXCV...",
- "empty": "没有ZXCVKEN0ZXCV。"
+ "loading": "正在加载自述文件…",
+ "empty": "没有可用的自述文件。"
}
},
"skillImport": {
"title": "导入技能",
- "description": "选择一个已有的技能文件夹, 审查要复制的内容, 然后导入到您支持的技能位置 。",
+ "description": "选择一个现有技能文件夹,查看将复制的内容,然后将其导入到您支持的技能位置之一。",
"steps": {
"chooseFolder": {
- "title": "1. 选择技能文件夹",
- "description": "此文件夹应该已经包含 `SKILL.md`, `Skill.md`, 或 `skill.md` 文件 。"
+ "title": "1.选择技能文件夹",
+ "description": "该文件夹应该已包含“SKILL.md”、“Skill.md”或“skill.md”文件。"
},
"location": {
- "title": "2. 决定属于何处",
- "description": "个人技能随处可见。 项目技能只为一个代码库出现."
+ "title": "2. 决定它所属的地方",
+ "description": "个人技能无处不在。项目技能仅针对一个代码库显示。"
}
},
"fields": {
"sourceFolder": "源文件夹",
"destinationFolderName": "目标文件夹名称",
- "audience": "谁能用呢?",
- "storage": "在哪里储存"
+ "audience": "谁可以使用它",
+ "storage": "存放在哪里"
},
"placeholders": {
- "defaultFolderName": "源文件夹名称的默认值"
+ "defaultFolderName": "默认为源文件夹名称"
},
"actions": {
"browse": "浏览",
"cancel": "取消",
- "preparing": "准备...",
- "reviewAndImport": "审查和导入",
+ "preparing": "正在准备…",
+ "reviewAndImport": "审核和导入",
"importSkill": "导入技能",
"backToImport": "返回导入"
},
"scope": {
"user": "用户",
- "project": "项目:{{project}}",
- "projectUnavailable": "无法执行的项目"
+ "project": "项目:{{project}}",
+ "projectUnavailable": "项目不可用"
},
"rootSuffix": {
- "codexOnly": "- 只有代码",
+ "codexOnly": "- 仅 Codex",
"shared": "- 共享"
},
- "reviewHint": "首先审查复制的文件,然后在下一步确认导入.",
+ "reviewHint": "首先检查复制的文件,然后在下一步中确认导入。",
"reviewLabel": "导入此技能",
"errors": {
- "missingSkillFile": "此文件夹看起来还不是技能 。 它需要一个SKILL.md,Skill.md,或技能Md文件.",
- "symbolicLinks": "此文件夹包含符号链接 。 导入真实文件而不是链接 。",
- "tooManyFiles": "此技能文件夹太大, 无法同时导入 。 删除额外文件并再次尝试 。",
- "tooLarge": "此技能文件夹太大, 无法安全导入 。 调整大资产,再试一次。",
- "invalidFolderName": "用字母、数字、点、破折号或下划线选择一个更简单的目的文件夹名称。",
- "mustBeDirectory": "选择要导入的文件夹, 而不是一个文件 。",
- "reviewFailed": "审查导入更改失败",
- "importFailed": "导入技能失败"
+ "missingSkillFile": "这个文件夹看起来还不像技能。它需要 SKILL.md、Skill.md 或 skill.md 文件。",
+ "symbolicLinks": "该文件夹包含符号链接。导入真实文件而不是链接。",
+ "tooManyFiles": "该技能文件夹太大,无法一次导入。删除多余的文件并重试。",
+ "tooLarge": "该技能文件夹太大,无法安全导入。修剪大量资产并重试。",
+ "invalidFolderName": "使用字母、数字、点、破折号或下划线选择一个更简单的目标文件夹名称。",
+ "mustBeDirectory": "选择要导入的文件夹,而不是单个文件。",
+ "reviewFailed": "无法审核导入更改",
+ "importFailed": "技能导入失败"
}
},
"mcpPanel": {
"sort": {
- "nameAsc": "名称 A-Z",
- "nameDesc": "名称 Z A",
+ "nameAsc": "名称 A→Z",
+ "nameDesc": "名称 Z→A",
"toolsDesc": "大多数工具"
},
"health": {
- "title": "MCP 苏维埃社会主义共和国 健康状况",
- "checkingViaRuntime": "通过{{runtime}}检查已安装的ZXVTOKEN0ZXCV服务器.",
- "lastChecked": "上次选中的 {{time}}",
- "description": "从此页面运行诊断,以验证已安装的MCP连接.",
- "checking": "正在检查...",
+ "title": "MCP 健康状况",
+ "checkingViaRuntime": "通过 {{runtime}} 检查已安装的 MCP 服务器…",
+ "lastChecked": "最后检查 {{time}}",
+ "description": "从此页面运行诊断以验证已安装的 MCP 连接。",
+ "checking": "检查…",
"checkStatus": "检查状态"
},
"diagnostics": {
- "title": "运行时间 MCP 诊断",
- "serversCount": "{{count}}服务器",
+ "title": "运行时 MCP 诊断",
+ "serversCount": "{{count}} 服务器",
"serversCount_one": "{{count}} 服务器",
- "serversCount_other": "{{count}}服务器",
- "waiting": "等待诊断结果...",
+ "serversCount_other": "{{count}} 服务器",
+ "waiting": "等待诊断结果…",
"disableReasons": {
- "checkingRuntimeStatus": "正在检查运行时间状态...",
- "checkingRuntimeAvailability": "正在检查运行时间可用性...",
- "runtimeFailedToStart": "已找到配置的运行时间, 但启动失败 。 打开Dash板进行修理或重新安装.",
- "runtimeRequired": "需要配置的运行时间 。 从Dashboard上安装或修复."
+ "checkingRuntimeStatus": "正在检查运行时状态…",
+ "checkingRuntimeAvailability": "检查运行时可用性…",
+ "runtimeFailedToStart": "已找到配置的运行时,但启动失败。打开控制台进行修复或重新安装。",
+ "runtimeRequired": "需要配置的运行时。从控制台安装或修复它。"
},
- "serversCount_few": "{{count}}服务器",
- "serversCount_many": "{{count}}服务器"
+ "serversCount_few": "{{count}} 服务器",
+ "serversCount_many": "{{count}} 服务器"
},
- "searchPlaceholder": "搜索 MCP 服务器...",
+ "searchPlaceholder": "搜索 MCP 服务器…",
"runtime": {
- "notAvailable": "{{runtime}}不详",
- "notInstalled": "{{runtime}}未安装",
- "requiredDescription": "MCP 健康检查要求{{runtime}}。去Dashboard安装或修复它。"
+ "notAvailable": "{{runtime}} 不可用",
+ "notInstalled": "{{runtime}} 未安装",
+ "requiredDescription": "MCP 运行状况检查需要 {{runtime}}。转至控制台进行安装或修复。"
},
"empty": {
"searchTitle": "未找到服务器",
"title": "没有可用的 MCP 服务器",
- "searchDescription": "尝试不同的搜索名词",
- "description": "稍后检查新服务器"
+ "searchDescription": "尝试不同的搜索词",
+ "description": "稍后回来查看新服务器"
},
- "loadMore": "装入更多"
+ "loadMore": "加载更多"
},
"apiKeys": {
- "description": "安全存储 API 键,用于安装 MCP 服务器时自动填充.",
+ "description": "安全存储 API 密钥,以便在安装 MCP 服务器时自动填充。",
"storage": {
- "osKeychain": "密钥通过{{backend}}加密,并以限制文件权限存储(只有所有者).",
- "localEncryption": "OS 密钥链不可用 - 密钥在本地用 AES-256加密. 为了加强保护,安装密钥环服务(gnome-keyring,kwallet)."
+ "osKeychain": "密钥通过 {{backend}} 加密并以受限文件权限存储(仅限所有者)。",
+ "localEncryption": "操作系统钥匙串不可用 - 密钥使用 AES-256 在本地加密。为了获得更强的保护,请安装密钥环服务(gnome-keyring、kwallet)。"
},
"actions": {
"add": "添加 API 密钥",
- "addFirst": "添加您的第一个密钥",
+ "addFirst": "添加您的第一把钥匙",
"edit": "编辑",
- "copied": "已复制!",
- "copyEnvVarName": "复制环境变量名",
+ "copied": "复制了!",
+ "copyEnvVarName": "复制环境变量名称",
"confirmDelete": "再次点击确认",
"delete": "删除"
},
"empty": {
- "title": "没有保存 ZXCVKEN0ZXCV 密钥",
- "description": "在安装 MCP 服务器时将密钥添加到自动填充环境变量中."
+ "title": "未保存 API 密钥",
+ "description": "安装 MCP 服务器时添加密钥以自动填充环境变量。"
},
"form": {
"addTitle": "添加 API 密钥",
"editTitle": "编辑 API 密钥",
- "addDescription": "在MCP服务器安装中存储用于自动填充的API密钥.",
- "editDescription": "更新关键细节 。 您必须重新输入值 。",
- "keychainUnavailable": "OS 键链不可用 - 用 AES-256 本地加密的键. 为OS级保护安装 gnome- keyring 。",
- "name": "名称",
- "namePlaceholder": "例如,OpenAI生产",
+ "addDescription": "存储 API 密钥以便在 MCP 服务器安装中自动填充。",
+ "editDescription": "更新关键细节。您必须重新输入该值。",
+ "keychainUnavailable": "操作系统钥匙串不可用 - 使用 AES-256 在本地加密的密钥。安装 gnome-keyring 以实现操作系统级别的保护。",
+ "name": "姓名",
+ "namePlaceholder": "例如 OpenAI 制作",
"environmentVariableName": "环境变量名称",
- "envVarPlaceholder": "例如,OPENAI_API_KEY",
- "value": "数值",
- "reenterValue": "重新输入密钥值",
- "valuePlaceholder": "嘘...",
+ "envVarPlaceholder": "例如 OPENAI_API_KEY",
+ "value": "价值",
+ "reenterValue": "重新输入键值",
+ "valuePlaceholder": "sk-…",
"scope": "范围",
- "userScopeLabel": "用户( 全球)",
- "projectScopeLabel": "项目:{{project}}",
- "projectUnavailable": "无法执行的项目",
- "boundTo": "界于{{path}}",
+ "userScopeLabel": "用户(全球)",
+ "projectScopeLabel": "项目:{{project}}",
+ "projectUnavailable": "项目不可用",
+ "boundTo": "绑定到 {{path}}",
"cancel": "取消",
- "saving": "正在保存...",
+ "saving": "保存…",
"update": "更新",
"save": "保存",
"errors": {
- "invalidEnvVarFormat": "用字母,数字,下划线 必须以字母或下划线开头 。",
- "nameRequired": "需要名称",
- "envVarRequired": "需要环境变量名称",
- "invalidEnvVar": "无效的环境变量名称",
- "valueRequired": "需要关键值",
- "projectScopeRequiresProject": "工程范围 API 密钥需要运行中的项目",
+ "invalidEnvVarFormat": "使用字母、数字、下划线。必须以字母或下划线开头。",
+ "nameRequired": "姓名为必填项",
+ "envVarRequired": "环境变量名称为必填项",
+ "invalidEnvVar": "环境变量名称无效",
+ "valueRequired": "键值必填",
+ "projectScopeRequiresProject": "项目范围的 API 密钥需要一个活动项目",
"saveFailed": "保存失败"
}
}
},
"skillReview": {
- "title": "审查技能变化",
- "description": "{{reviewLabel}}先预览文件系统更改. 在下文确认之前,没有文字。",
- "noPreview": "没有可用的预览 。",
- "confirmPromptPrefix": "查看下面的 diff, 然后使用",
- "confirmPromptSuffix": "应用这些修改。",
- "noChanges": "尚未检测到文件更改 。",
+ "title": "查看技能变更",
+ "description": "{{reviewLabel}} 首先预览文件系统更改。在您确认以下内容之前,不会写入任何内容。",
+ "noPreview": "没有可用的预览。",
+ "confirmPromptPrefix": "查看下面的差异,然后使用",
+ "confirmPromptSuffix": "应用这些更改。",
+ "noChanges": "尚未检测到文件更改。",
"binaryBadge": "二进制",
- "binaryPreviewHidden": "未显示二进制文件预览 。 文件将被复制为-is 。",
+ "binaryPreviewHidden": "不显示二进制文件预览。文件将按原样复制。",
"summary": {
"fileChanges": "{{count}} 文件更改",
"fileChanges_one": "{{count}} 文件更改",
"fileChanges_other": "{{count}} 文件更改",
- "new": "{{count}}新设",
- "updated": "更新 {{count}}",
- "removed": "{{count}}删除",
+ "new": "{{count}} 新",
+ "updated": "{{count}} 已更新",
+ "removed": "{{count}} 已删除",
"binary": "{{count}} 二进制",
"fileChanges_few": "{{count}} 文件更改",
"fileChanges_many": "{{count}} 文件更改"
}
},
"mcpCard": {
- "toolsCount": "{{count}}工具",
+ "toolsCount": "{{count}} 工具",
"toolsCount_one": "{{count}} 工具",
- "toolsCount_other": "{{count}}工具",
- "envCount": "{{count}}内存",
- "envCount_one": "{{count}} 掩体",
- "envCount_other": "{{count}}内存",
- "auth": "自动",
- "byAuthor": "由{{author}}公司制作",
+ "toolsCount_other": "{{count}} 工具",
+ "envCount": "{{count}} 环境",
+ "envCount_one": "{{count}} 环境",
+ "envCount_other": "{{count}} 环境",
+ "auth": "授权",
+ "byAuthor": "通过 {{author}}",
"hosting": {
- "remote": "远程",
- "local": "当地",
- "both": "两者"
+ "remote": "偏僻的",
+ "local": "本地",
+ "both": "两个都"
},
- "toolsCount_few": "{{count}}工具",
- "toolsCount_many": "{{count}}工具",
- "envCount_few": "{{count}}内存",
- "envCount_many": "{{count}}内存",
+ "toolsCount_few": "{{count}} 工具",
+ "toolsCount_many": "{{count}} 工具",
+ "envCount_few": "{{count}} 环境",
+ "envCount_many": "{{count}} 环境",
"repository": "仓库",
"website": "网站"
},
"installButton": {
- "installing": "安装中...",
- "removing": "删除...",
- "done": "写好了",
+ "installing": "正在安装…",
+ "removing": "正在删除…",
+ "done": "完毕",
"retry": "重试",
"uninstall": "卸载",
"install": "安装"
},
"pluginCard": {
- "official": "官方"
+ "official": "官方的"
}
}
diff --git a/src/features/localization/renderer/locales/zh/report.json b/src/features/localization/renderer/locales/zh/report.json
index 198ca917..99f3d9b4 100644
--- a/src/features/localization/renderer/locales/zh/report.json
+++ b/src/features/localization/renderer/locales/zh/report.json
@@ -1,31 +1,31 @@
{
"cost": {
- "breakdownTitle": "成本细目(每100个令牌)",
- "cacheRead": "缓存已读",
- "cacheWrite": "快取写入",
- "cost": "费用",
- "input": "投入",
- "noCommits": "无承诺",
- "noLinesChanged": "无行更改",
- "output": "产出",
- "parent": "父母:{{cost}}",
- "parentCost": "父母费用",
- "perCommit": "提交",
- "perCommitFormula": "{{count}}总费用",
- "perCommitFormula_few": "{{count}}总费用",
- "perCommitFormula_many": "{{count}}总费用",
- "perCommitFormula_one": "{{count}}总费用",
- "perCommitFormula_other": "{{count}}总费用",
- "perLineChanged": "每行变化",
- "perLineFormula": "{{count}}项目",
- "perLineFormula_few": "{{count}}线路",
- "perLineFormula_many": "{{count}}线路",
- "perLineFormula_one": "{{count}}项目",
- "perLineFormula_other": "{{count}}线路",
- "subagent": "副剂: {{cost}}",
- "subagentCost": "亚剂费用",
+ "breakdownTitle": "成本明细(每 100 万个 Token)",
+ "cacheRead": "缓存读取",
+ "cacheWrite": "缓存写入",
+ "cost": "成本",
+ "input": "输入",
+ "noCommits": "没有提交",
+ "noLinesChanged": "没有改变行",
+ "output": "输出",
+ "parent": "父级:{{cost}}",
+ "parentCost": "父级成本",
+ "perCommit": "每次提交",
+ "perCommitFormula": "总成本 ÷ {{count}} 提交",
+ "perCommitFormula_few": "总成本 ÷ {{count}} 提交",
+ "perCommitFormula_many": "总成本 ÷ {{count}} 提交",
+ "perCommitFormula_one": "总成本 ÷ {{count}} 提交",
+ "perCommitFormula_other": "总成本 ÷ {{count}} 提交",
+ "perLineChanged": "每行更改",
+ "perLineFormula": "总成本 ÷ {{count}} 行",
+ "perLineFormula_few": "总成本 ÷ {{count}} 行",
+ "perLineFormula_many": "总成本 ÷ {{count}} 行",
+ "perLineFormula_one": "总成本 ÷ {{count}} 行",
+ "perLineFormula_other": "总成本 ÷ {{count}} 行",
+ "subagent": "子智能体:{{cost}}",
+ "subagentCost": "子智能体成本",
"title": "成本分析",
- "total": "共计"
+ "total": "总计"
},
"insights": {
"agent": "代理人",
@@ -33,185 +33,185 @@
"agent_many": "代理人",
"agent_one": "代理人",
"agent_other": "代理人",
- "agentTree": "代理树 ({{count}}) 代理树 ({{unit}})",
- "background": "(背景情况)",
+ "agentTree": "智能体树 ({{count}} {{unit}})",
+ "background": "(后台)",
"bashCommands": "Bash 命令",
- "outOfScopeFindings": "范围外调查结果({{count}})",
- "questionsAsked": "提出的问题({{count}})",
+ "outOfScopeFindings": "超出范围的调查结果 ({{count}})",
+ "questionsAsked": "提出的问题 ({{count}})",
"repeated": "重复",
- "skillsInvoked": "被举报技能({{count}})",
- "taskDispatches": "任务调度({{count}})",
- "tasksCreated": "创建的任务( {{count}})",
+ "skillsInvoked": "调用的技能 ({{count}})",
+ "taskDispatches": "任务调度 ({{count}})",
+ "tasksCreated": "已创建任务 ({{count}})",
"teamMode": "团队模式",
- "teams": "团队:{{teams}}",
- "title": "会话透视",
- "total": "共计",
- "unique": "独一无二",
- "skillsInvoked_few": "被举报技能({{count}})",
- "skillsInvoked_many": "被举报技能({{count}})",
- "skillsInvoked_one": "被举报技能({{count}})",
- "skillsInvoked_other": "被举报技能({{count}})",
- "taskDispatches_few": "任务调度({{count}})",
- "taskDispatches_many": "任务调度({{count}})",
- "taskDispatches_one": "任务调度({{count}})",
- "taskDispatches_other": "任务调度({{count}})",
- "tasksCreated_few": "创建的任务( {{count}})",
- "tasksCreated_many": "创建的任务( {{count}})",
- "tasksCreated_one": "创建的任务( {{count}})",
- "tasksCreated_other": "创建的任务( {{count}})",
- "questionsAsked_few": "提出的问题({{count}})",
- "questionsAsked_many": "提出的问题({{count}})",
- "questionsAsked_one": "提出的问题({{count}})",
- "questionsAsked_other": "提出的问题({{count}})",
- "agentTree_few": "代理树 ({{count}}) 代理树 ({{unit}})",
- "agentTree_many": "代理树 ({{count}}) 代理树 ({{unit}})",
- "agentTree_one": "代理树 ({{count}}) 代理树 ({{unit}})",
- "agentTree_other": "代理树 ({{count}}) 代理树 ({{unit}})",
- "outOfScopeFindings_few": "范围外调查结果({{count}})",
- "outOfScopeFindings_many": "范围外调查结果({{count}})",
- "outOfScopeFindings_one": "范围外调查结果({{count}})",
- "outOfScopeFindings_other": "范围外调查结果({{count}})",
- "keyTakeaways": "关键外卖"
+ "teams": "队伍:{{teams}}",
+ "title": "会话见解",
+ "total": "总计",
+ "unique": "唯一",
+ "skillsInvoked_few": "调用的技能 ({{count}})",
+ "skillsInvoked_many": "调用的技能 ({{count}})",
+ "skillsInvoked_one": "调用的技能 ({{count}})",
+ "skillsInvoked_other": "调用的技能 ({{count}})",
+ "taskDispatches_few": "任务调度 ({{count}})",
+ "taskDispatches_many": "任务调度 ({{count}})",
+ "taskDispatches_one": "任务调度 ({{count}})",
+ "taskDispatches_other": "任务调度 ({{count}})",
+ "tasksCreated_few": "已创建任务 ({{count}})",
+ "tasksCreated_many": "已创建任务 ({{count}})",
+ "tasksCreated_one": "已创建任务 ({{count}})",
+ "tasksCreated_other": "已创建任务 ({{count}})",
+ "questionsAsked_few": "提出的问题 ({{count}})",
+ "questionsAsked_many": "提出的问题 ({{count}})",
+ "questionsAsked_one": "提出的问题 ({{count}})",
+ "questionsAsked_other": "提出的问题 ({{count}})",
+ "agentTree_few": "智能体树 ({{count}} {{unit}})",
+ "agentTree_many": "智能体树 ({{count}} {{unit}})",
+ "agentTree_one": "智能体树 ({{count}} {{unit}})",
+ "agentTree_other": "智能体树 ({{count}} {{unit}})",
+ "outOfScopeFindings_few": "超出范围的调查结果 ({{count}})",
+ "outOfScopeFindings_many": "超出范围的调查结果 ({{count}})",
+ "outOfScopeFindings_one": "超出范围的调查结果 ({{count}})",
+ "outOfScopeFindings_other": "超出范围的调查结果 ({{count}})",
+ "keyTakeaways": "要点"
},
"quality": {
"chars": "字符",
- "corrections": "惩戒",
+ "corrections": "修正",
"failed": "失败",
"fileReadRedundancy": "文件读取冗余",
- "firstMessage": "第一个消息",
- "firstRun": "第一个运行",
+ "firstMessage": "第一条消息",
+ "firstRun": "第一次运行",
"frictionRate": "摩擦率",
- "lastRun": "上次运行",
- "messagesBeforeWork": "工作前的信件",
+ "lastRun": "最后一次运行",
+ "messagesBeforeWork": "开始工作前消息",
"passed": "通过",
- "promptQuality": "提示质量",
- "readsPerUniqueFile": "读取/ 唯一文件",
- "snapshot": "简介",
+ "promptQuality": "提示词质量",
+ "readsPerUniqueFile": "读取/唯一文件",
+ "snapshot": "快照",
"snapshot_few": "快照",
"snapshot_many": "快照",
- "snapshot_one": "简介",
+ "snapshot_one": "快照",
"snapshot_other": "快照",
- "startupOverhead": "启动间接费用",
- "testProgression": "测试进度",
+ "startupOverhead": "启动开销",
+ "testProgression": "测试进展",
"title": "质量信号",
- "tokensBeforeWork": "工作前托肯斯语Name",
- "totalReads": "读数共计",
- "uniqueFiles": "独一无二的文件",
- "userMessages": "用户信件",
- "percentOfTotal": "占总数的百分比"
+ "tokensBeforeWork": "工作前的 Token",
+ "totalReads": "总读取次数",
+ "uniqueFiles": "唯一文件",
+ "userMessages": "用户消息",
+ "percentOfTotal": "占总数的%"
},
"tokens": {
- "apiCalls": "API 苏维埃社会主义共和国 电话",
+ "apiCalls": "API 调用",
"cacheCreate": "缓存创建",
"cacheEfficiency": "缓存效率",
- "cacheRead": "缓存已读",
- "cacheReadPct": "快取读取%",
+ "cacheRead": "缓存读取",
+ "cacheReadPct": "缓存读取率",
"coldStart": "冷启动",
- "cost": "费用",
- "input": "投入",
- "model": "型号",
- "no": "没有",
- "output": "产出",
- "readWriteRatio": "R/W比率",
- "title": "调用",
- "total": "共计",
- "yes": "对"
+ "cost": "成本",
+ "input": "输入",
+ "model": "模型",
+ "no": "否",
+ "output": "输出",
+ "readWriteRatio": "读/写比",
+ "title": "Token 使用",
+ "total": "总计",
+ "yes": "是"
},
"subagents": {
- "title": "副剂",
+ "title": "子智能体",
"metrics": {
- "count": "计数",
- "totalTokens": "共计",
- "totalDuration": "期间共计",
- "totalCost": "费用共计"
+ "count": "数量",
+ "totalTokens": "Token 总数",
+ "totalDuration": "总持续时间",
+ "totalCost": "总成本"
},
"table": {
- "description": "说明",
+ "description": "描述",
"type": "类型",
- "tokens": "键",
- "duration": "会期",
- "cost": "费用"
+ "tokens": "Token",
+ "duration": "持续时间",
+ "cost": "成本"
}
},
"overview": {
- "title": "概览",
- "yes": "对",
- "no": "没有",
+ "title": "概述",
+ "yes": "是",
+ "no": "否",
"metrics": {
- "duration": "会期",
- "messages": "信件",
- "contextUsage": "背景使用情况",
+ "duration": "持续时间",
+ "messages": "消息",
+ "contextUsage": "上下文使用",
"compactions": "压缩",
- "branch": "处",
- "subagents": "副剂",
+ "branch": "分支",
+ "subagents": "子智能体",
"project": "项目",
- "sessionId": "会话编号"
+ "sessionId": "会话 ID"
}
},
"timeline": {
- "title": "时间线和活动( A)",
+ "title": "时间线与活动",
"idleAnalysis": "空闲分析",
"metrics": {
- "idleGaps": "空闲差距",
- "totalIdle": "闲置共计",
- "activeTime": "活动时间",
- "idlePercent": "闲置%"
+ "idleGaps": "空闲间隙",
+ "totalIdle": "总空闲时间",
+ "activeTime": "活跃时间",
+ "idlePercent": "空闲率"
},
- "modelSwitches": "型号开关({{count}})",
- "modelSwitches_one": "型号开关({{count}})",
- "modelSwitches_other": "型号开关({{count}})",
- "messageNumber": "# 迈克 #{{number}}",
- "keyEvents": "关键事件",
- "modelSwitches_few": "型号开关({{count}})",
- "modelSwitches_many": "型号开关({{count}})"
+ "modelSwitches": "模型切换({{count}})",
+ "modelSwitches_one": "模型切换({{count}})",
+ "modelSwitches_other": "模型切换({{count}})",
+ "messageNumber": "消息#{{number}}",
+ "keyEvents": "重要事件",
+ "modelSwitches_few": "模型切换({{count}})",
+ "modelSwitches_many": "模型切换({{count}})"
},
"tools": {
"title": "工具使用",
- "summary": "{{formattedCount}} 跨越{{toolCount}}工具的总通话量",
+ "summary": "共 {{formattedCount}} 次调用,涵盖 {{toolCount}} 个工具",
"columns": {
"tool": "工具",
- "calls": "电话",
+ "calls": "调用次数",
"errors": "错误",
- "successPercent": "成功率(%)",
- "health": "卫生"
+ "successPercent": "成功率",
+ "health": "健康状态"
}
},
"git": {
"title": "Git 活动",
"commits": "提交",
- "pushes": "推动",
- "linesAdded": "添加的行数",
- "linesRemoved": "删除的行",
- "branchesCreated": "创建分支"
+ "pushes": "推送",
+ "linesAdded": "新增行数",
+ "linesRemoved": "删除行数",
+ "branchesCreated": "创建的分支"
},
"friction": {
- "title": "Friction 信号",
- "rate": "滑动率:{{rate}}百分比(%)",
- "correctionsCount": "{{count}}更正",
- "correctionsCount_one": "{{count}}更正",
- "corrections": "惩戒",
- "thrashingSignals": "闪烁信号",
- "repeatedBashCommands": "重复的巴什命令",
- "reworkedFiles": "重修的文件( 3+编辑)",
- "correctionsCount_few": "{{count}}更正",
- "correctionsCount_many": "{{count}}更正",
- "correctionsCount_other": "{{count}}更正"
+ "title": "摩擦信号",
+ "rate": "摩擦率:{{rate}}%",
+ "correctionsCount": "{{count}} 修正",
+ "correctionsCount_one": "{{count}} 修正",
+ "corrections": "修正",
+ "thrashingSignals": "反复修改信号",
+ "repeatedBashCommands": "重复的 Bash 命令",
+ "reworkedFiles": "返工文件(3 次以上编辑)",
+ "correctionsCount_few": "{{count}} 修正",
+ "correctionsCount_many": "{{count}} 修正",
+ "correctionsCount_other": "{{count}} 修正"
},
"errors": {
"title": "错误",
- "permissionDenied": "拒绝权限",
- "messageIndex": "# 迈克 #{{index}}",
- "input": "投入",
+ "permissionDenied": "权限被拒绝",
+ "messageIndex": "消息#{{index}}",
+ "input": "输入",
"error": "错误",
- "count": "{{count}}错误",
+ "count": "{{count}} 错误",
"count_one": "{{count}} 错误",
- "permissionDenialCount": "{{count}} 许可拒绝",
- "permissionDenialCount_one": "{{count}} 许可被拒绝",
- "count_few": "{{count}}错误",
- "count_many": "{{count}}错误",
- "count_other": "{{count}}错误",
- "permissionDenialCount_few": "{{count}} 许可拒绝",
- "permissionDenialCount_many": "{{count}} 许可拒绝",
- "permissionDenialCount_other": "{{count}} 许可拒绝"
+ "permissionDenialCount": "{{count}} 权限拒绝次数",
+ "permissionDenialCount_one": "{{count}} 权限拒绝次数",
+ "count_few": "{{count}} 错误",
+ "count_many": "{{count}} 错误",
+ "count_other": "{{count}} 错误",
+ "permissionDenialCount_few": "{{count}} 权限拒绝次数",
+ "permissionDenialCount_many": "{{count}} 权限拒绝次数",
+ "permissionDenialCount_other": "{{count}} 权限拒绝次数"
}
}
diff --git a/src/features/localization/renderer/locales/zh/settings.json b/src/features/localization/renderer/locales/zh/settings.json
index 91c4fd5a..2813cffa 100644
--- a/src/features/localization/renderer/locales/zh/settings.json
+++ b/src/features/localization/renderer/locales/zh/settings.json
@@ -1,22 +1,22 @@
{
"tabs": {
"advanced": {
- "description": "动力用户选项:导出/导入配置,重设默认,以及原始配置编辑.",
+ "description": "高级用户选项:导出/导入配置、重置默认值和编辑原始配置。",
"label": "高级"
},
"general": {
- "description": "核心应用程序首选如主题,语言,显示密度,以及启动行为.",
+ "description": "核心应用首选项,例如主题、语言、显示密度和启动行为。",
"label": "常规"
},
- "infoAriaLabel": "何谓{{label}}? 。 。 。",
+ "infoAriaLabel": "{{label}} 是什么?",
"notifications": {
- "description": "控制何时以及如何通知代理活动、任务完成和错误。",
+ "description": "控制您何时以及如何收到有关智能体活动、任务完成和错误的通知。",
"label": "通知"
}
},
"view": {
- "description": "管理您的应用程序偏好",
- "loading": "正在装入设置...",
+ "description": "管理您的应用首选项",
+ "loading": "正在加载设置…",
"title": "设置"
},
"runtimeProvider": {
@@ -26,139 +26,139 @@
},
"defaults": {
"allProjects": "所有项目",
- "allProjectsHint": "测试使用{{project}}. 默认适用,除非项目有超标。",
- "loadingContexts": "正在装入上下文...",
- "projectHint": "保存只覆盖 {{project}}.",
+ "allProjectsHint": "测试使用 {{project}}。除非项目有覆盖,否则应用默认值。",
+ "loadingContexts": "正在加载上下文…",
+ "projectHint": "保存仅覆盖 {{project}}。",
"projectOverrideContext": "项目覆盖上下文",
- "scopeDescriptionAllProjects": "默认没有自己的 OpenCode 覆盖的每个工程 。",
- "scopeDescriptionProject": "只覆盖选中的项目 。 运行队伍不变.",
- "selectProjectContext": "选择工程上下文",
- "selectProjectHint": "在测试本地模型或保存默认值之前选择一个项目 。",
+ "scopeDescriptionAllProjects": "每个没有自己的 OpenCode 覆盖的项目的默认值。",
+ "scopeDescriptionProject": "仅覆盖选定的项目。运行团队没有变化。",
+ "selectProjectContext": "选择项目上下文",
+ "selectProjectHint": "在测试本地模型或保存默认值之前选择一个项目。",
"selectValidationContext": "选择验证上下文",
- "setAllProjectsDefault": "设置全部项目默认值",
- "setProjectDefault": "设定工程默认",
- "thisProject": "这个项目",
+ "setAllProjectsDefault": "设置所有项目默认值",
+ "setProjectDefault": "设置项目默认值",
+ "thisProject": "此项目",
"title": "OpenCode 默认值",
- "validationContext": "验证背景"
+ "validationContext": "验证上下文"
},
"diagnostics": {
- "copied": "复制的诊断",
- "copiedShort": "复制",
+ "copied": "已复制诊断信息",
+ "copiedShort": "已复制",
"copy": "复制诊断",
- "hints": "提示",
- "likelyCause": "可能的原因是:",
- "windowsSymlinkAdminHint": "Windows: 以管理员身份运行 Agent Teams AI"
+ "hints": "提示词",
+ "likelyCause": "可能的原因:",
+ "windowsSymlinkAdminHint": "Windows:以管理员身份运行 Agent Teams AI"
},
"models": {
- "alreadyDefault": "这已经是所选的 OpenCode 默认值 。",
- "empty": "没有找到模型 。",
- "emptyFree": "没有找到免费模型 。",
- "emptyRecommended": "未找到推荐的模型 。",
- "emptyRecommendedFree": "未找到推荐的自由模型 。",
- "freeOnly": "仅自由",
- "launchableDescription": "您可以在团队拾取器中测试或使用的路由:本地配置,免费内置模型,以及当前默认.",
- "launchableTitle": "可启动的 OpenCode 模型",
- "loadingRoutes": "正在装入 OpenCode 模式路线...",
- "noRoutesMatch": "没有OpenCode模式路线匹配\"{{query}}\".",
- "noneReported": "尚未报告可发射的OpenCode模型路线。 在 OpenCode 中配置本地路由, 或者使用提供商标签来检查目录提供者 。",
- "recommendedOnly": "仅建议",
- "searchPlaceholder": "搜索模式",
- "selectProjectBeforeTesting": "在测试模型前选择项目上下文 。",
- "selectProjectBeforeTestingDefaults": "在测试或保存 OpenCode 默认值之前选择工程上下文 。",
- "useInTeamPicker": "用于团队拾取器",
- "testInProgress": "模型测试已在运行。",
- "validationContextRequired": "请先在上方选择验证上下文, 才能启用 Test 和 Set default。保存到 team picker 只会为新团队记录 route。",
- "actionsUnavailable": "操作暂时不可用。",
- "defaultSaveInProgress": "正在保存 OpenCode default。",
- "routeUnavailableAuth": "此 provider 需要先完成身份验证, 才能使用此模型。",
- "routeUnavailableFailed": "此 model route 未通过上次 execution test。",
- "routeUnavailableGeneric": "此 model route 当前无法使用。",
- "routeUnavailableUnknown": "此模型是当前 OpenCode default, 但尚未出现在 live catalog 中。"
+ "alreadyDefault": "这已经是选定的 OpenCode 默认值。",
+ "empty": "未找到模型。",
+ "emptyFree": "未找到免费模型。",
+ "emptyRecommended": "未找到推荐模型。",
+ "emptyRecommendedFree": "未找到推荐的免费模型。",
+ "freeOnly": "仅免费",
+ "launchableDescription": "来自 OpenCode 配置、免费内置模型和当前默认值的已知路由。本地路由在准备团队启动之前需要成功测试。",
+ "launchableTitle": "OpenCode 模型路由",
+ "loadingRoutes": "正在加载 OpenCode 模型路由…",
+ "noRoutesMatch": "没有 OpenCode 模型路由与“{{query}}”匹配。",
+ "noneReported": "尚未报告 OpenCode 模型路由。在 OpenCode 中配置本地路由或使用“提供商”选项卡检查目录提供商。",
+ "recommendedOnly": "仅推荐",
+ "searchPlaceholder": "搜索模型",
+ "selectProjectBeforeTesting": "在测试模型之前选择项目上下文。",
+ "selectProjectBeforeTestingDefaults": "在测试或保存 OpenCode 默认值之前选择项目上下文。",
+ "testInProgress": "模型测试已经开始。",
+ "useInTeamPicker": "保存用于团队选择器",
+ "validationContextRequired": "选择上面的验证上下文以启用测试并设置默认值。保存团队选择器仅存储新团队的路由。",
+ "actionsUnavailable": "暂时无法执行操作。",
+ "defaultSaveInProgress": "正在保存 OpenCode 默认值。",
+ "routeUnavailableAuth": "该提供商需要先进行认证,然后才能使用该模型。",
+ "routeUnavailableFailed": "该模型路由未能通过最后一次执行测试。",
+ "routeUnavailableGeneric": "该模型路由目前无法使用。",
+ "routeUnavailableUnknown": "该模型是当前 OpenCode 默认模型,但在实时目录中尚不可用。"
},
"providers": {
- "catalog": "OpenCode 提供者目录",
- "countFallback": "OpenCode 供应商",
- "description": "{{count}}。首先显示连接和推荐的提供者。",
- "loadMore": "装入更多提供者",
- "loading": "正在装入 OpenCode 提供者",
- "noMatches": "没有提供者匹配搜索。",
- "noneReported": "管理运行时间未报告 OpenCode 提供者 。",
- "recommended": "建议",
+ "catalog": "OpenCode 提供商目录",
+ "countFallback": "OpenCode 提供商",
+ "description": "{{count}}。首先显示已连接和推荐的提供商。",
+ "loadMore": "加载更多提供商",
+ "loading": "加载 OpenCode 提供商",
+ "noMatches": "没有提供商与该搜索匹配。",
+ "noneReported": "托管运行时未报告 OpenCode 提供商。",
+ "recommended": "推荐",
"refreshCatalog": "刷新目录",
- "searchPlaceholder": "搜索提供者",
- "description_few": "{{count}}。首先显示连接和推荐的提供者。",
- "description_many": "{{count}}。首先显示连接和推荐的提供者。",
- "description_one": "{{count}}。首先显示连接和推荐的提供者。",
- "description_other": "{{count}}。首先显示连接和推荐的提供者。"
+ "searchPlaceholder": "搜索提供商",
+ "description_few": "{{count}}。首先显示已连接和推荐的提供商。",
+ "description_many": "{{count}}。首先显示已连接和推荐的提供商。",
+ "description_one": "{{count}}。首先显示已连接和推荐的提供商。",
+ "description_other": "{{count}}。首先显示已连接和推荐的提供商。"
},
"setup": {
- "loading": "正在装入提供者设置..."
+ "loading": "正在加载提供商设置…"
},
"summary": {
- "defaultModel": "OpenCode 默认值: {{model}}",
- "loading": "正在装入管理的 OpenCode 运行时间、 连接的提供者和模型默认...",
- "source": "资料来源:{{source}}。",
- "title": "OpenCode 运行时间"
+ "defaultModel": "OpenCode 默认:{{model}}",
+ "loading": "正在加载托管 OpenCode 运行时、连接的提供商和模型默认值…",
+ "source": "来源:{{source}}",
+ "title": "OpenCode 运行时"
},
"tabs": {
"models": "模型",
- "providers": "供应商"
+ "providers": "提供商"
},
"modelRoutes": {
- "searchPlaceholder": "搜索模式路线"
+ "searchPlaceholder": "搜索模型路由"
},
"badges": {
- "usedInTeamPicker": "选手用的",
+ "usedInTeamPicker": "为团队选择器保存",
"free": "免费",
- "local": "当地",
- "configured": "配置",
+ "local": "本地",
+ "configured": "已配置",
+ "knownRoute": "已知路由",
"connected": "已连接",
- "verified": "已核实",
+ "verified": "已验证",
"needsTest": "需要测试",
"failed": "失败",
- "unknown": "不详",
- "default": "默认",
- "knownRoute": "已知 route"
+ "unknown": "未知",
+ "default": "默认"
},
"compatibleEndpoint": {
- "baseUrlPlaceholder": "http://localhost:1234 苏维埃社会主义共和国"
+ "baseUrlPlaceholder": "http://localhost:1234"
}
},
"general": {
"agentLanguage": {
- "description": "代理通信语言",
- "descriptionWithDetected": "代理通信语言(发现:{{detected}})",
- "emptyMessage": "未找到语言 。",
+ "description": "智能体沟通语言",
+ "descriptionWithDetected": "智能体沟通语言(检测到:{{detected}})",
+ "emptyMessage": "未找到语言。",
"label": "语言",
- "searchPlaceholder": "搜索语言...",
- "selectPlaceholder": "选择语言...",
- "title": "代理语言"
+ "searchPlaceholder": "搜索语言…",
+ "selectPlaceholder": "选择语言…",
+ "title": "智能体语言"
},
"appLanguage": {
- "description": "应用程序接口的语言.",
+ "description": "应用界面的语言。",
"label": "语言",
- "title": "App 语言"
+ "title": "应用语言"
},
"appearance": {
"autoExpandAIGroups": {
- "description": "在打开记录或收到新消息时自动扩展每个响应转折",
- "label": "默认扩展 AI 响应"
+ "description": "打开记录或收到新消息时自动展开每个响应回合",
+ "label": "默认展开 AI 响应"
},
"nativeTitleBar": {
- "description": "使用默认系统窗口框架而不是自定义标题栏",
- "label": "使用本地标题栏",
+ "description": "使用默认的系统窗口框架而不是自定义标题栏",
+ "label": "使用原生标题栏",
"restartConfirm": {
- "confirmLabel": "重新开始",
- "message": "应用程序需要重新启动以应用标题栏更改 。 现在重新开始?",
- "title": "需要重新启动"
+ "confirmLabel": "重启",
+ "message": "应用需要重新启动才能应用标题栏更改。现在重新启动?",
+ "title": "需要重启"
}
},
"theme": {
"description": "选择您喜欢的颜色主题",
"label": "主题",
"options": {
- "dark": "阴暗",
- "light": "光线",
+ "dark": "深色",
+ "light": "浅色",
"system": "系统"
}
},
@@ -166,7 +166,7 @@
},
"browserAccess": {
"serverMode": {
- "description": "启动 HTTP 服务器从浏览器访问UI 或嵌入 Iframes",
+ "description": "启动 HTTP 服务器以从浏览器访问 UI 或嵌入 iframe 中",
"label": "启用服务器模式"
},
"title": "浏览器访问"
@@ -174,86 +174,86 @@
"localClaudeRoot": {
"actions": {
"selectFolder": "选择文件夹",
- "selectFolderManually": "手工选择文件夹",
+ "selectFolderManually": "手动选择文件夹",
"useAutoDetect": "使用自动检测",
"useFolder": "使用文件夹",
"usePath": "使用路径",
"useThisPath": "使用此路径",
- "useWsl": "使用Linux/WSL吗?"
+ "useWsl": "使用 Linux/WSL?"
},
"confirm": {
"noProjectsDir": {
- "message": "此文件夹不含“ 项目” 目录 。 继续?",
- "title": "未找到工程目录"
+ "message": "该文件夹不包含“projects”目录。仍要继续吗?",
+ "title": "找不到项目目录"
},
"notClaudeDir": {
- "message": "这个文件夹被命名为\"{{folderName}}\",而不是\".claude\". 继续?",
- "title": "选中的文件夹不是. claude"
+ "message": "该文件夹名为“{{folderName}}”,而不是“.claude”。仍要继续吗?",
+ "title": "所选文件夹不是 .claude"
},
"noWslPaths": {
- "message": "无法自动找到 Claude 数据的 WSL distros 。 手动选择文件夹吗?",
- "title": "无 ZXCVTKEN0ZXCV 找到克劳德路径"
+ "message": "无法自动找到带有 Claude 数据的 WSL 发行版。手动选择文件夹?",
+ "title": "未找到 WSL Claude 路径"
},
"wslNoProjectsDir": {
- "message": "\"{{path}}\"不包含\"项目\"目录. 继续?",
- "title": "WSL 路径缺失项目目录"
+ "message": "“{{path}}”不包含“projects”目录。仍要继续吗?",
+ "title": "WSL 路径缺少项目目录"
}
},
"current": {
- "autoDetected": "自动探测: {{path}}",
- "autoDetectedPath": "使用自动检测路径",
+ "autoDetected": "自动检测到:{{path}}",
+ "autoDetectedPath": "使用自动检测的路径",
"customPath": "使用自定义路径",
"label": "当前本地根"
},
- "description": "选择哪个本地文件夹被当作您的 Claude 数据根",
+ "description": "选择将哪个本地文件夹视为您的 Claude 数据根",
"errors": {
- "detectWslFailed": "检测 WSL 失败 克劳德根路径",
- "loadFailed": "装入本地 Claude 根设置失败",
- "updateFailed": "更新 Claude root 失败"
+ "detectWslFailed": "无法检测 WSL Claude 根路径",
+ "loadFailed": "无法加载本地 Claude 根目录 设置",
+ "updateFailed": "Claude 根目录更新失败"
},
- "title": "当地克劳德·根",
+ "title": "本地 Claude 根目录",
"wslModal": {
- "closeAriaLabel": "关闭 WSL 路径模式",
- "description": "检测到的WSL分发量和克劳德根候选人",
+ "closeAriaLabel": "关闭 WSL 路径对话框",
+ "description": "检测到的 WSL 发行版和 Claude 根候选",
"noProjectsDir": "未检测到项目目录",
- "title": "选择 WSL 克劳德根"
+ "title": "选择 WSL Claude 根目录"
}
},
"privacy": {
"telemetry": {
- "description": "通过发送匿名崩溃和性能数据帮助改进应用程序",
+ "description": "通过发送匿名崩溃和性能数据来帮助改进应用",
"label": "发送崩溃报告"
},
"title": "隐私"
},
"server": {
- "runningOn": "运行中",
- "standaloneModeDescription": "以独立模式运行 。 HTTP服务器始终活跃. 没有系统通知 -- -- 通知触发器只记录在应用程序中。",
+ "runningOn": "运行于",
+ "standaloneModeDescription": "以独立模式运行。 HTTP 服务器始终处于活动状态。系统通知不可用 - 通知触发器仅记录在应用中。",
"title": "服务器"
},
"startup": {
"launchAtLogin": {
- "description": "登录时自动启动应用程序",
+ "description": "登录时自动启动应用",
"label": "登录时启动"
},
"showDockIcon": {
- "description": "在端口显示应用程序图标( MacOS)",
- "label": "显示端口图标"
+ "description": "在 Dock 中显示应用图标 (macOS)",
+ "label": "显示Dock图标"
},
"title": "启动"
}
},
"notifications": {
"dev": {
- "descriptionPrefix": "通知在开发模式中可能行不通。 macOS将应用程序识别为\"Electron\"(bundle ID).",
- "descriptionSuffix": ")代替生产应用名称. 检查系统设置 > 通知 > 电子以验证权限 。",
- "title": "Dev 模式"
+ "descriptionPrefix": "通知可能无法在开发模式下工作。 macOS 将应用标识为“Electron”(捆绑 ID",
+ "descriptionSuffix": ") 而不是生产应用名称。检查系统设置 > 通知 > Electron 以验证权限。",
+ "title": "开发模式"
},
"ignoredRepositories": {
- "description": "这些寄存器发出的通知将被忽略",
- "empty": "没有忽略寄存器",
- "selectPlaceholder": "选择要忽略的仓库...",
- "title": "已忽略仓库"
+ "description": "来自这些仓库的通知将被忽略",
+ "empty": "没有忽略任何仓库",
+ "selectPlaceholder": "选择要忽略的仓库…",
+ "title": "忽略的仓库"
},
"settings": {
"enabled": {
@@ -261,114 +261,114 @@
"label": "启用系统通知"
},
"sound": {
- "description": "当通知出现时播放声音",
+ "description": "出现通知时播放声音",
"label": "播放声音"
},
"subagentErrors": {
- "description": "检测并通知子代理会话中的错误",
- "label": "包含子代理错误"
+ "description": "检测并通知子智能体会话中的错误",
+ "label": "包括子智能体错误"
},
"title": "通知设置"
},
"snooze": {
- "clear": "清除 Snooze",
- "description": "临时暂停通知",
- "descriptionWithTime": "喷到{{time}}",
- "label": "Snooze 通知",
+ "clear": "取消暂停",
+ "description": "暂时暂停通知",
+ "descriptionWithTime": "暂停至 {{time}}",
+ "label": "暂停通知",
"options": {
- "15": "15分钟",
- "30": "30分钟",
- "60": "1小时",
- "120": "2小时",
- "240": "4小时",
- "-1": "到明天为止"
+ "15": "15 分钟",
+ "30": "30 分钟",
+ "60": "1 小时",
+ "120": "2 小时",
+ "240": "4 小时",
+ "-1": "直到明天"
},
- "selectDuration": "选择持续时间..."
+ "selectDuration": "选择持续时间…"
},
"taskCompletion": {
- "description": "克劳德完成任务时获得本地OS通知 - 声音,横幅,和Dock/taskbar徽章. 工作在macOS,Linux,和Windows上.",
- "installPlugin": "安装 Claude- Notifics-go 插件",
+ "description": "当 Claude 完成任务时接收原生操作系统通知 - 声音、横幅和 Dock/任务栏徽章。适用于 macOS、Linux 和 Windows。",
+ "installPlugin": "安装 claude-notifications-go 插件",
"title": "任务完成通知"
},
"team": {
"allTasksCompleted": {
- "description": "当团队中的每一项任务达到完成状态时通知",
+ "description": "当团队中的每项任务达到完成状态时发出通知",
"label": "所有任务已完成"
},
"autoResumeOnRateLimit": {
- "description": "当克劳德报告重设时间时,在限制重排后为团队主力安排后续的推力",
- "label": "费率限制后自动恢复"
+ "description": "当 Claude 报告重置时间时,在限额重置后为团队领导安排后续继续",
+ "label": "速率限制后自动恢复"
},
"clarifications": {
- "description": "当任务需要输入时显示本地 OS 通知",
+ "description": "当任务需要您的输入时显示原生操作系统通知",
"label": "任务澄清通知"
},
"crossTeamMessage": {
- "description": "当另一个团队发出消息时通知",
- "label": "跨团队信件通知"
+ "description": "当有来自其他团队的消息到达时发出通知",
+ "label": "跨团队消息通知"
},
"leadInbox": {
- "description": "通知队友向队长发送信息的时间",
- "label": "铅信箱通知"
+ "description": "当队友向团队负责人发送消息时发出通知",
+ "label": "团队负责人收件箱通知"
},
"statusChange": {
- "description": "当任务状态发生变化时显示本地 OS 通知",
- "label": "任务状态更改通知",
+ "description": "当任务状态更改时显示原生操作系统通知",
+ "label": "任务状态变更通知",
"onlySolo": {
- "description": "只在球队没有队友时通知",
- "label": "仅在独奏模式下"
+ "description": "仅当团队没有队友时通知",
+ "label": "仅在单人模式下"
},
"statuses": {
- "description": "哪个目标状态触发通知",
- "label": "通知这些状况",
+ "description": "哪些目标状态会触发通知",
+ "label": "通知这些状态",
"options": {
- "approved": "核定数",
+ "approved": "已批准",
"completed": "已完成",
- "deleted": "删除",
- "in_progress": "开始",
- "needsFix": "需要修改",
- "pending": "待决",
- "review": "审查"
+ "deleted": "已删除",
+ "in_progress": "进行中",
+ "needsFix": "需要修复",
+ "pending": "待办的",
+ "review": "审核"
}
}
},
"taskComments": {
- "description": "代理评论任务时显示本地 OS 通知",
- "label": "任务注释通知"
+ "description": "当智能体对任务发表评论时显示原生操作系统通知",
+ "label": "任务评论通知"
},
"taskCreated": {
- "description": "创建新任务时显示本地 OS 通知",
+ "description": "创建新任务时显示原生操作系统通知",
"label": "任务创建通知"
},
"teamLaunched": {
- "description": "当一个团队完成发射并准备就绪时通知",
- "label": "小组发出通知"
+ "description": "当团队完成启动并准备就绪时发出通知",
+ "label": "团队启动通知"
},
"title": "团队通知",
"toolApproval": {
- "description": "当一个工具需要您批准时通知( Allow/ Deny), 而应用程序没有焦点",
- "label": "工具核准通知"
+ "description": "当应用未聚焦时工具需要您的批准(允许/拒绝)时发出通知",
+ "label": "工具批准通知"
},
"userInbox": {
- "description": "队友给你发信息时通知",
+ "description": "当队友给你发送消息时通知",
"label": "用户收件箱通知"
}
},
"test": {
"action": "发送测试",
- "description": "发送测试通知以验证交付",
+ "description": "发送测试通知以验证送达情况",
"failedToSend": "发送测试通知失败",
"label": "测试通知",
- "sending": "正在发送...",
- "sent": "发送!",
+ "sending": "正在发送…",
+ "sent": "发送!",
"unknownError": "未知错误"
}
},
"advanced": {
"about": {
- "appIconAlt": "应用程序图标",
- "description": "集合自主平行工作的AI代理团队,跨团队沟通,在kanban板上管理任务——内置代码审查,直播过程监控,以及完整的工具可见度.",
- "standalone": "独立",
+ "appIconAlt": "应用图标",
+ "description": "组建 Agent Teams AI 团队,这些团队可以并行自主工作、跨团队沟通并在看板上管理任务 - 具有内置代码审核、实时流程监控和完整的工具可见性。",
+ "standalone": "独立式",
"title": "关于",
"version": "版本 {{version}}"
},
@@ -381,31 +381,31 @@
"title": "配置"
},
"updates": {
- "available": "页:1{{version}}可用",
+ "available": "v{{version}} 可用",
"check": "检查更新",
- "checking": "正在检查...",
- "ready": "更新就绪",
- "unknownVersion": "不详",
- "upToDate": "最新数据"
+ "checking": "检查…",
+ "ready": "更新准备就绪",
+ "unknownVersion": "未知",
+ "upToDate": "最新"
},
- "appName": "特工团队AI"
+ "appName": "Agent Teams AI"
},
"configEditor": {
"errors": {
- "loadFailed": "装入配置失败",
+ "loadFailed": "加载配置失败",
"saveFailed": "保存配置失败"
},
"footer": {
- "autoSave": "编辑后自动更改保存",
+ "autoSave": "更改编辑后自动保存",
"toClose": "关闭",
- "escapeKey": "埃斯科"
+ "escapeKey": "Esc 键"
},
- "loading": "正在装入配置...",
+ "loading": "正在加载配置…",
"status": {
"invalidJson": "无效的 JSON",
"saveFailed": "保存失败",
"saved": "已保存",
- "saving": "正在保存..."
+ "saving": "保存…"
},
"title": "编辑配置"
},
@@ -416,57 +416,57 @@
"title": "添加自定义触发器"
},
"builtin": {
- "description": "默认触发随应用程序而来。 您可以启用或禁用它们并自定义它们的图案 。",
+ "description": "应用附带的默认触发器。您可以启用或禁用它们并自定义它们的模式。",
"title": "内置触发器"
},
"card": {
- "builtinBadge": "内建",
+ "builtinBadge": "内置",
"collapseAriaLabel": "折叠",
- "deleteAriaLabel": "删除触发",
+ "deleteAriaLabel": "删除触发器",
"editNameAriaLabel": "编辑名称",
- "expandAriaLabel": "扩展"
+ "expandAriaLabel": "展开"
},
"color": {
- "customHexTitle": "自定义六进制颜色",
+ "customHexTitle": "自定义十六进制颜色",
"invalidHex": "无效的十六进制"
},
"configuration": {
- "alertIfGreaterThan": "警告如果 >",
- "emptyPatternHint": "留空以匹配所有内容 。 使用JavaScript regex语法.",
- "errorStatusDescription": "当工具执行报告错误时触发( is error: true).",
- "tokensUnit": "符号",
- "matchPatternPlaceholder": "例如,错误QQ失败XX例外"
+ "alertIfGreaterThan": "如果 > 则发出警报",
+ "emptyPatternHint": "留空以匹配所有内容。使用 JavaScript 正则表达式语法。",
+ "errorStatusDescription": "当工具执行报告错误 (is_error: true) 时触发。",
+ "tokensUnit": "Token",
+ "matchPatternPlaceholder": "例如,错误|失败|异常"
},
"custom": {
- "description": "创建自己的触发器以获取特定模式或工具输出的通知。",
- "empty": "尚未配置自定义触发器 。",
+ "description": "创建您自己的触发器以获取特定模式或工具输出的通知。",
+ "empty": "尚未配置自定义触发器。",
"title": "自定义触发器"
},
"errors": {
- "invalidRegexPattern": "无效的正则图案"
+ "invalidRegexPattern": "无效的正则表达式模式"
},
"fields": {
"contentType": "内容类型",
"matchField": "匹配字段",
- "matchPattern": "匹配模式( Regex)",
- "scopeToolName": "范围/ 工具名称",
- "scopeToolNameOptional": "范围/ 工具名称( 可选)",
- "threshold": "阈值",
- "tokenType": "托肯类型",
- "triggerNamePlaceholder": "例如,构建失败提醒",
- "triggerNameRequired": "触发名称 *"
+ "matchPattern": "匹配模式(正则表达式)",
+ "scopeToolName": "范围/工具名称",
+ "scopeToolNameOptional": "范围/工具名称(可选)",
+ "threshold": "临界点",
+ "tokenType": "Token 类型",
+ "triggerNamePlaceholder": "例如,构建失败警报",
+ "triggerNameRequired": "触发器名称 *"
},
"ignorePatterns": {
- "hint": "按 Enter 键可添加。 如果模式匹配, 则跳过通知 。",
- "placeholder": "添加忽略 regex...",
+ "hint": "按 Enter 键添加。如果任何模式匹配,则跳过通知。",
+ "placeholder": "添加忽略正则表达式…",
"removeAriaLabel": "删除忽略模式",
- "summary": "高级:排除规则",
- "title": "忽略图案( 如果匹配则滑动)"
+ "summary": "高级:排除规则",
+ "title": "忽略模式(如果匹配则跳过)"
},
"options": {
"contentTypes": {
"text": "文本输出",
- "thinking": "思维",
+ "thinking": "思考",
"tool_result": "工具结果",
"tool_use": "工具使用"
},
@@ -474,61 +474,61 @@
"args": "参数",
"command": "命令",
"content": "内容",
- "description": "说明",
+ "description": "描述",
"file_path": "文件路径",
- "fullInput": "全部输入( JSON)",
- "glob": "Glob 过滤器",
+ "fullInput": "完整输入 (JSON)",
+ "glob": "全局过滤器",
"new_string": "新字符串",
"old_string": "旧字符串",
"path": "路径",
- "pattern": "图案",
- "prompt": "提示",
+ "pattern": "模式",
+ "prompt": "提示词",
"query": "查询",
"skill": "技能名称",
- "subagent_type": "副剂类型",
- "text": "文本内容",
+ "subagent_type": "子智能体类型",
+ "text": "文字内容",
"thinking": "思考内容",
- "url": "URL 苏维埃社会主义共和国"
+ "url": "URL"
},
"modes": {
"content_match": "内容模式",
"error_status": "执行错误",
- "token_threshold": "高调使用"
+ "token_threshold": "高 Token 使用率"
},
"tokenTypes": {
- "input": "输入键",
- "output": "输出键",
- "total": "共计"
+ "input": "输入 Token",
+ "output": "输出 Token",
+ "total": "Token 总数"
},
"toolNames": {
- "anyTool": "任意工具"
+ "anyTool": "任何工具"
}
},
"preview": {
- "defaultTestTriggerName": "测试触发器",
- "detectedSuffix": "错误会被检测到",
- "more": "...还有{{count}}更多",
- "more_few": "...还有{{count}}更多",
- "more_many": "...还有{{count}}更多",
- "more_one": "...还有{{count}}更多",
- "more_other": "...还有{{count}}更多",
- "testTrigger": "测试触发器",
- "testing": "测试...",
+ "defaultTestTriggerName": "测试触发",
+ "detectedSuffix": "错误将会被检测到",
+ "more": "…以及 {{count}} 更多",
+ "more_few": "…以及 {{count}} 更多",
+ "more_many": "…以及 {{count}} 更多",
+ "more_one": "…以及 {{count}} 更多",
+ "more_other": "…以及 {{count}} 更多",
+ "testTrigger": "测试触发",
+ "testing": "测试…",
"title": "预览",
- "truncatedWarning": "搜索提前停止( 超时或计数限制) 。 实际匹配可能更高。",
+ "truncatedWarning": "搜索提前停止(超时或计数限制)。实际匹配可能会更高。",
"viewSession": "查看会话"
},
"repositoryScope": {
- "empty": "没有选择寄存器 - 触发适用于所有寄存器",
- "hint": "当选择寄存器时,这只触发这些寄存器中的错误。",
- "placeholder": "选择要添加的仓库...",
- "summary": "高级:仓库范围",
- "title": "对仓库的限制( 仅适用于选定的寄存器)"
+ "empty": "未选择仓库 - 触发器适用于所有仓库",
+ "hint": "选择仓库后,仅当这些仓库中出现错误时才会触发此触发器。",
+ "placeholder": "选择要添加的仓库…",
+ "summary": "高级:仓库范围",
+ "title": "限制仓库(仅适用于选定的仓库)"
},
"sections": {
"configuration": "配置",
"dotColor": "点颜色",
- "generalInfo": "常规信息",
+ "generalInfo": "一般信息",
"triggerCondition": "触发条件"
}
},
@@ -541,53 +541,53 @@
"save": "保存"
},
"authMethods": {
- "agent": "SSH 苏维埃社会主义共和国 探员",
- "auto": "自动( 从 SSH 配置)",
+ "agent": "SSH 代理",
+ "auto": "自动(来自 SSH 配置)",
"password": "密码",
"privateKey": "私钥"
},
"deleteConfirm": {
"confirmLabel": "删除",
- "message": "您确定要删除“ {{name}}” 吗? 这一点是无法消除的。",
+ "message": "您确定要删除“{{name}}”吗?此操作无法撤消。",
"title": "删除配置文件"
},
- "description": "保存 SSH 连接配置用于快速重联",
+ "description": "保存 SSH 连接配置文件以便快速重新连接",
"empty": {
"description": "添加 SSH 配置文件以快速连接",
- "title": "没有保存配置文件"
+ "title": "没有保存的配置文件"
},
"form": {
"authentication": "认证",
- "host": "东道主",
+ "host": "主机",
"name": "名称",
- "passwordPrompt": "连接时会提醒您密码 。",
+ "passwordPrompt": "连接时系统会提示您输入密码。",
"port": "端口",
"privateKeyPath": "私钥路径",
"username": "用户名",
"namePlaceholder": "我的服务器",
- "hostPlaceholder": "主机名称或IP",
+ "hostPlaceholder": "主机名或 IP",
"usernamePlaceholder": "用户"
},
- "loading": "正在装入配置文件...",
- "title": "工作空间简介"
+ "loading": "正在加载配置文件…",
+ "title": "工作区配置文件"
},
"connection": {
"actions": {
"connect": "连接",
- "connecting": "正在连接...",
- "disconnect": "断开连接",
+ "connecting": "正在连接…",
+ "disconnect": "断开",
"testConnection": "测试连接",
- "testing": "测试..."
+ "testing": "测试…"
},
"currentMode": {
"description": "会话文件的数据源",
"label": "当前模式",
- "local": "当地({{path}})"
+ "local": "本地 ({{path}})"
},
- "description": "连接到远程机器以查看在那里运行的 Claude 代码会话",
+ "description": "连接到远程计算机以查看在那里运行的 Claude Code 会话",
"form": {
"authentication": "认证",
- "host": "东道主",
+ "host": "主机",
"password": "密码",
"port": "端口",
"privateKeyPath": "私钥路径",
@@ -599,14 +599,14 @@
"title": "保存的配置文件"
},
"ssh": {
- "title": "ZXCVKEN0ZXCV 连接"
+ "title": "SSH 连接"
},
"status": {
- "connectedTo": "已连接到 {{host}}",
+ "connectedTo": "连接到 {{host}}",
"remoteSessions": "通过 SSH 查看远程会话"
},
"test": {
- "failed": "连接失败: {{error}}",
+ "failed": "连接失败:{{error}}",
"success": "连接成功",
"unknownError": "未知错误"
},
@@ -619,131 +619,131 @@
"connectChatGpt": "连接 ChatGPT",
"delete": "删除",
"disable": "禁用",
- "disconnectAccount": "断开账户",
+ "disconnectAccount": "断开帐户连接",
"generateLink": "生成链接",
"openLogin": "打开登录",
"reconnectAnthropic": "重新连接 Anthropic",
"refresh": "刷新",
- "replaceKey": "替换密钥",
- "saveEndpoint": "保存结束点",
+ "replaceKey": "更换密钥",
+ "saveEndpoint": "保存端点",
"saveKey": "保存密钥",
- "saving": "正在保存...",
+ "saving": "保存…",
"setApiKey": "设置 API 密钥",
"updateKey": "更新密钥",
"useCode": "使用代码"
},
"apiKey": {
- "loadingStoredCredentials": "正在装入存储的证书...",
+ "loadingStoredCredentials": "正在加载存储的凭据…",
"projectScope": "项目",
"scope": "范围",
- "storedIn": "存放于{{backend}}",
+ "storedIn": "存储在 {{backend}} 中",
"userScope": "用户",
- "storedInApp": "存储在应用程序中",
+ "storedInApp": "存储在应用中",
"providers": {
"anthropic": {
- "name": "ZXCVKEN0ZXCV 键",
+ "name": "Anthropic API 密钥",
"title": "API 密钥",
- "description": "使用直Anthropic API密钥进行API传动访问. 您的 Anthropic 订阅会话在切换回时仍然可用 。",
- "placeholder": "SK -ANT - -这..."
+ "description": "使用直接 Anthropic API 密钥进行 API 计费访问。当您切换回来时,您的 Anthropic 订阅会话仍然可用。",
+ "placeholder": "sk-ant-…"
},
"codex": {
- "name": "代码API 密钥",
+ "name": "Codex API 密钥",
"title": "API 密钥",
- "description": "使用 OpenAI API 键作为二级代码认证路径. 如果您将 Codex 切换到 API 密钥模式,该应用将会将 OPENAI_API_KEY 反射为 CODEX_API_KEY 用于本地发射.",
- "placeholder": "sk -proj - -这..."
+ "description": "使用 OpenAI API 密钥作为辅助 Codex 认证路径。如果您将 Codex 切换到 API 密钥模式,应用会将 OPENAI_API_KEY 镜像到 CODEX_API_KEY 以进行本机启动。",
+ "placeholder": "sk-proj-…"
},
"gemini": {
- "name": "双子座 API 密钥",
+ "name": "Gemini API 密钥",
"title": "API 访问权限",
- "description": "使用`GEMINI_API_KEY`为双子座ZXCVKEN1ZXCV后端. CLI ZXVKEN3ZXCV和ADC不要求这样做.",
- "placeholder": "艾尔扎..."
+ "description": "对 Gemini API 后端使用“GEMINI_API_KEY”。 CLI SDK 和 ADC 不需要它。",
+ "placeholder": "AIza…"
}
}
},
"codex": {
"account": {
- "appServer": "应用服务器: {{state}}",
+ "appServer": "应用服务器:{{state}}",
"connected": "已连接",
- "description": "管理本地的 Codex app-server 账户会话, 授权订阅支持的本地启动 。",
- "loginInProgress": "正在登录",
- "plan": "计划:{{plan}}",
+ "description": "管理本地 Codex 应用服务器帐户会话,为订阅支持的本机启动提供支持。",
+ "loginInProgress": "登录正在进行中",
+ "plan": "计划:{{plan}}",
"reconnectRequired": "需要重新连接",
- "title": "ChatGPT 账户",
+ "title": "ChatGPT 帐户",
"hints": {
- "autoUsesApiKeyUntilChatgpt": "{{message}} 苏维埃社会主义共和国 自动会继续使用检测到的API密钥,直到ChatGPT连接.",
- "detectedApiKeyNeedsApiMode": "{{message}} 苏维埃社会主义共和国 检测到的API密钥仅在您切换到API密钥模式后使用.",
- "localArtifactsNoSession": "Codex CLI目前未报告运行中的ChatGPT账户. 本地 Codex 账户数据已存在,但没有选择活动管理会话 。 使用限制仅在Codex CLI看到后出现.",
- "noActiveAccount": "Codex CLI目前未报告运行中的ChatGPT账户. 使用限制仅在Codex CLI看到后出现.",
- "reconnectBeforeUsage": "Codex有一个本地选择的ChatGPT账户,但当前会话需要重新连接才能在此加载使用限制.",
- "usageLimitsAfterReport": "用法限制在Codex为连接的ChatGPT账户报告后在此出现."
+ "autoUsesApiKeyUntilChatgpt": "{{message}} Auto 将继续使用检测到的 API 密钥,直到连接 ChatGPT。",
+ "detectedApiKeyNeedsApiMode": "{{message}} 检测到的 API 密钥仅在您将 Codex 切换到 API 密钥模式后使用。",
+ "localArtifactsNoSession": "Codex CLI 当前报告没有有效的 ChatGPT 帐户。本地 Codex 帐户数据存在,但未选择有效的托管会话。仅当 Codex CLI 看到用量限制后,此处才会显示用量限制。",
+ "noActiveAccount": "Codex CLI 当前报告没有有效的 ChatGPT 帐户。仅当 Codex CLI 看到用量限制后,此处才会显示用量限制。",
+ "reconnectBeforeUsage": "Codex 有一个本地选择的 ChatGPT 帐户,但当前会话需要重新连接才能在此处加载用量限制。",
+ "usageLimitsAfterReport": "Codex 报告连接的 ChatGPT 帐户的用量限制后,此处会显示用量限制。"
}
},
"install": {
- "checking": "检查中",
- "downloading": "下载",
- "installCli": "安装代码CLI",
- "installing": "安装",
+ "checking": "检查",
+ "downloading": "正在下载",
+ "installCli": "安装 Codex CLI",
+ "installing": "安装中",
"retryInstall": "重试安装",
- "title": "在应用数据中安装代码CLI"
+ "title": "将 Codex CLI 安装到应用数据中"
},
"rateLimits": {
- "credits": "贷项",
- "creditsDescription": "信用与基于窗口的订阅使用分开显示,可能无法用于计划支持的ChatGPT会话.",
- "noSecondaryWindow": "Codex 没有返回此账户快照的二级窗口 。",
- "notReported": "未报告",
- "primaryReset": "初级重置",
+ "credits": "积分",
+ "creditsDescription": "积分与基于窗口的订阅使用情况分开显示,并且可能不适用于计划支持的 ChatGPT 会话。",
+ "noSecondaryWindow": "Codex 未返回此帐户快照的辅助窗口。",
+ "notReported": "未报道",
+ "primaryReset": "主要重置",
"primaryUsed": "主要使用",
"primaryWindow": "主窗口",
- "remainingLeft": "{{value}}左边",
- "remainingUnknown": "剩余未知",
- "secondaryReset": "二级重置",
- "secondaryUsed": "二级",
- "secondaryWindow": "二级窗口",
- "usedQuotaNote": "这些百分比显示使用的配额,而不是剩余的配额。",
- "weeklyReset": "每周重设",
- "weeklyUsed": "每周使用次数",
- "weeklyUsedOneWeek": "每周使用(1w)",
+ "remainingLeft": "{{value}} 左",
+ "remainingUnknown": "仍未知",
+ "secondaryReset": "二次复位",
+ "secondaryUsed": "二次使用",
+ "secondaryWindow": "辅助窗口",
+ "usedQuotaNote": "这些百分比显示已用配额,而不是剩余配额。",
+ "weeklyReset": "每周重置",
+ "weeklyUsed": "每周使用",
+ "weeklyUsedOneWeek": "每周使用(1w)",
"weeklyWindow": "每周窗口",
- "secondaryFallback": "中学",
- "secondaryWindowNote": "周限在{{window}}窗口中单独显示.",
- "usageExplanationGeneric": "显示用过配额, 而非剩余配额 。",
- "usageExplanationWindowOnly": "在当前 {{window}} 窗口中显示使用配额, 而不是保留配额 。",
- "usageExplanationWithRemaining": "{{used}}使用 - 关于{{remaining}}留在当前{{window}}图标。"
+ "secondaryFallback": "辅助",
+ "secondaryWindowNote": "每周限制单独显示在 {{window}} 窗口中。",
+ "usageExplanationGeneric": "显示已用配额,而不是剩余配额。",
+ "usageExplanationWindowOnly": "显示当前 {{window}} 窗口中已使用的配额,而不是剩余配额。",
+ "usageExplanationWithRemaining": "已使用 {{used}};当前 {{window}} 窗口约剩余 {{remaining}}。"
}
},
"compatibleEndpoint": {
- "authToken": "证书",
- "authTokenMissing": "未配置 Auth 令牌 。",
- "baseUrl": "ZXCVKEN0ZXCV基地",
- "description": "使用 Anthropic 兼容本地运行时间终点 。",
- "keepSavedToken": "留空以保留保存的符号",
- "title": "本地/ 兼容端点",
- "tokenStatus": "托肯 {{status}}",
+ "authToken": "认证 Token",
+ "authTokenMissing": "未配置认证 Token。",
+ "baseUrl": "基本 URL",
+ "description": "使用与 Anthropic 兼容的本地运行时端点。",
+ "keepSavedToken": "留空以保留保存的 Token",
+ "title": "本地/兼容端点",
+ "tokenStatus": "Token {{status}}",
"validation": {
- "baseUrlRequired": "需要URL基地",
- "firstPartyAnthropic": "使用自动、 订阅或 API 键用于第一当事方 Anthropic",
- "httpRequired": "Base URL 必须使用 http:// 或 https://",
- "invalidUrl": "无效的 URL",
- "noCredentials": "基地URL不得包括全权证书"
+ "baseUrlRequired": "基本 URL 为必填项",
+ "firstPartyAnthropic": "对第一方 Anthropic 使用自动、订阅或 API 密钥",
+ "httpRequired": "基本 URL 必须使用 http:// 或 https://",
+ "invalidUrl": "无效 URL",
+ "noCredentials": "基本 URL 不得包含凭据"
},
"status": {
- "endpointDisabledTokenKept": "端点已禁用 。 保存了保存的纪念物。",
- "endpointSaved": "结束点已保存",
- "endpointSavedTokenMissing": "结尾已保存 。 未配置 Auth 令牌 。"
+ "endpointDisabledTokenKept": "端点已禁用。保存的 Token 被保留。",
+ "endpointSaved": "端点已保存",
+ "endpointSavedTokenMissing": "端点已保存。未配置认证 Token。"
}
},
"connection": {
- "authenticationMethod": "认证方法",
+ "authenticationMethod": "认证方式",
"descriptions": {
- "anthropic": "选择应用启动的 Anthropic 会话如何认证 。",
- "codex": "在本地运行时间启动时选择 Codex 是否更喜欢您的 ChatGPT 订阅, 还是选择 API 密钥 。",
- "gemini": "配置可选的 API 访问 。 CLI ZXKEN2ZXCV和ADC仍然自动被发现.",
- "opencode": "OpenCode认证和提供者目录由OpenCode运行时间管理."
+ "anthropic": "选择应用启动的 Anthropic 会话的认证方式。",
+ "codex": "选择当本机运行时启动时,Codex 是否应该首选您的 ChatGPT 订阅或 API 密钥。",
+ "gemini": "配置可选的 API 访问权限。 CLI SDK 和 ADC 仍会自动发现。",
+ "opencode": "OpenCode 认证和提供商库存由 OpenCode 运行时管理。"
},
- "method": "连接方法",
- "mode": "模式: {{mode}}",
- "selected": "选中",
- "switching": "正在切换...",
+ "method": "连接方式",
+ "mode": "模式:{{mode}}",
+ "selected": "已选择",
+ "switching": "切换…",
"title": "连接"
},
"connectionCards": {
@@ -751,244 +751,244 @@
"title": "API 密钥"
},
"anthropic": {
- "apiKeyDescription": "使用ANTHROPIC_API_KEY和Anthropic ZXCVKEN1ZXCV计费.",
- "autoDescription": "使用 Anthropic 运行时默认和最佳本地证书可用 。",
- "hint": "自动保存 Anthropic 的默认本地证书分辨率 。",
- "subscriptionDescription": "使用本地的 Anthropic 签名和订阅权限 。",
- "subscriptionTitle": "人类订阅"
+ "apiKeyDescription": "使用 ANTHROPIC_API_KEY 和 Anthropic API 计费。",
+ "autoDescription": "使用 Anthropic 运行时默认值和可用的最佳本地凭据。",
+ "hint": "Auto 使 Anthropic 保持其默认的本地凭证解析。",
+ "subscriptionDescription": "使用您本地的 Anthropic 登录会话和订阅访问权限。",
+ "subscriptionTitle": "Anthropic 订阅"
},
"auto": {
"title": "自动"
},
"codex": {
- "apiKeyDescription": "使用OPENAI_API_KEY和CODEX_API_KEY为本地的Codex发射计费.",
- "autoDescription": "优先使用您的 ChatGPT 账户和订阅 。 仅在需要时使用 API 密钥模式.",
- "chatgptDescription": "使用您连接的 ChatGPT 账户和 Codex 订阅 。",
- "chatgptTitle": "ChatGPT 账户",
- "hint": "Codex总是贯穿本土运行时间. 自动在返回到 API 密钥证书之前,更喜欢您的 ChatGPT 账户 。"
+ "apiKeyDescription": "使用 OPENAI_API_KEY 和 CODEX_API_KEY 计费进行本机 Codex 启动。",
+ "autoDescription": "首选您的 ChatGPT 帐户和订阅。仅在需要时使用 API 密钥模式。",
+ "chatgptDescription": "使用您连接的 ChatGPT 帐户和 Codex 订阅。",
+ "chatgptTitle": "ChatGPT 帐户",
+ "hint": "Codex 始终在本机运行时运行。 Auto 在回退到 API 密钥凭据之前更喜欢使用您的 ChatGPT 帐户。"
}
},
- "description": "管理每个提供者的连接方式,并在支持时管理哪个后端的多模式运行时间应该使用.",
+ "description": "管理每个提供商的连接方式,以及在支持时多模型运行时应使用哪个后端。",
"fastMode": {
"defaultOff": "默认关闭",
- "description": "在解析模型和运行时间允许时,默认应用Claude Code Fast模式用于新的Anthropic团队启动.",
- "disabledHint": "新的Anthropic发射保持正常速度,除非一个团队明确启用快速模式.",
- "enabledHint": "新的Anthropic发射将在解析模型支持时默认请求快速模式.",
- "notExposed": "此 Anthropic 运行时间不显示快模式 。",
- "preferFast": "首选快",
- "title": "快模式默认",
- "unavailableForRuntime": "此 Anthropic 运行时间目前无法使用快速模式 。"
+ "description": "当解析的模型和运行时允许时,默认为新的 Anthropic 团队启动应用于 Claude Code Fast 模式。",
+ "disabledHint": "除非团队明确启用快速模式,否则新的 Anthropic 发布将保持正常速度。",
+ "enabledHint": "当解析的模型支持快速模式时,新的 Anthropic 启动将默认请求快速模式。",
+ "notExposed": "此 Anthropic 运行时未公开快速模式。",
+ "preferFast": "喜欢快",
+ "title": "默认快速模式",
+ "unavailableForRuntime": "目前,快速模式对此 Anthropic 运行时不可用。"
},
"alerts": {
- "anthropicApiKeyMissing": "选择了 API 密钥模式,但是还没有Anthropic API证书可用.",
- "anthropicStoredKeyAvailable": "保存的 API 密钥是可用的,但应用程序启动的Anthropic会话仅在切换到 API 密钥模式后才使用.",
- "anthropicSubscriptionMissing": "选择了 Athropic 订阅模式 。 与 Anthropic 签约使用此提供者 。",
- "authTokenMissing": "未配置 Auth 令牌 。 许多本地的Anthropic兼容端点需要非空代币.",
- "chatgptLoginPending": "等待 ChatGPT 账户登录完成...",
- "chatgptLoginStarting": "开始 ChatGPT 登录...",
- "codexApiKeyMissing": "选择了 API 密钥模式,但还没有OPENAI_API_KEY或CODEX_API_KEY证书可用.",
- "codexLocalArtifactsNoSession": "Codex CLI目前没有活跃的ChatGPT账户. 本地 Codex 账户数据已存在,但没有选择活动管理会话 。",
- "codexNeedsReconnect": "Codex有一个本地选择的ChatGPT账户,但当前会话需要重新连接.",
- "codexNoChatgptAccount": "Codex CLI目前没有活跃的ChatGPT账户. 连接 ChatGPT 以使用您的订阅 。",
- "codexNoCredential": "尚没有 ChatGPT 账户或 API 密钥 。",
- "geminiApiUnavailable": "双子座 API目前无法使用. 在此配置 `GEMINI_API_KEY` 或使用有效的 Google ADC 证书 。",
- "withApiKeyFallback": "{{message}} 苏维埃社会主义共和国 切换到API密钥模式,使用检测到的API密钥."
+ "anthropicApiKeyMissing": "已选择 API 密钥模式,但尚无可用的 Anthropic API 凭证。",
+ "anthropicStoredKeyAvailable": "已保存的 API 密钥可用,但应用启动的 Anthropic 会话仅在您切换到 API 密钥模式后才使用它。",
+ "anthropicSubscriptionMissing": "选择 Anthropic 订阅模式。登录 Anthropic 以使用此提供商。",
+ "authTokenMissing": "未配置认证 Token。许多本地 Anthropic 兼容端点需要非空 Token。",
+ "chatgptLoginPending": "等待 ChatGPT 帐户登录完成…",
+ "chatgptLoginStarting": "正在开始 ChatGPT 登录…",
+ "codexApiKeyMissing": "选择了 API 密钥模式,但尚无可用的 OPENAI_API_KEY 或 CODEX_API_KEY 凭据。",
+ "codexLocalArtifactsNoSession": "Codex CLI 目前没有有效的 ChatGPT 帐户。本地 Codex 帐户数据存在,但未选择有效的托管会话。",
+ "codexNeedsReconnect": "Codex 有一个本地选择的 ChatGPT 帐户,但当前会话需要重新连接。",
+ "codexNoChatgptAccount": "Codex CLI 目前没有有效的 ChatGPT 帐户。连接 ChatGPT 以使用您的订阅。",
+ "codexNoCredential": "尚无可用的 ChatGPT 帐户或 API 密钥。",
+ "geminiApiUnavailable": "Gemini API 目前不可用。在此处配置“GEMINI_API_KEY”或使用有效的 Google ADC 凭据。",
+ "withApiKeyFallback": "{{message}} 切换到 API 密钥模式以使用检测到的 API 密钥。"
},
"authModeDescriptions": {
"anthropic": {
- "apiKey": "强制启动 Anthropic 会话使用 API 密钥证书 。",
- "auto": "使用运行时间默认行为 。 此应用程序中保存的 API 密钥仅在切换到 API 密钥模式后使用.",
- "oauth": "强制应用启动的 Anthropic 会话使用本地的 Anthropic 订阅会话 。"
+ "apiKey": "强制应用启动的 Anthropic 会话使用 API 密钥凭证。",
+ "auto": "使用运行时默认行为。仅当您切换到 API 密钥模式后,才会使用此应用中保存的 API 密钥。",
+ "oauth": "强制应用启动的 Anthropic 会话使用本地 Anthropic 订阅会话。"
},
"codex": {
- "apiKey": "强制本土代码发射使用OPENAI_API_KEY / CODEX_API_KEY计费.",
- "auto": "优先使用您的 ChatGPT 账户 。 仅在需要的时候才返回到 API 密钥模式.",
- "chatgpt": "强制本地代码启动使用您连接的 ChatGPT 账户和订阅 。"
+ "apiKey": "强制本机 Codex 启动使用 OPENAI_API_KEY / CODEX_API_KEY 计费。",
+ "auto": "首选您的 ChatGPT 帐户(如果可用)。仅在需要时回退到 API 密钥模式。",
+ "chatgpt": "强制本机 Codex 启动以使用您连接的 ChatGPT 帐户和订阅。"
}
},
"progress": {
- "applyingConnectionChanges": "正在应用连接更改...",
- "refreshingProviderStatus": "正在刷新提供者状态...",
- "savingCompatibleEndpoint": "保存兼容的终点...",
- "switchingAnthropicSubscription": "正在切换到 Anthropic 订阅...",
- "switchingApiKey": "正在切换到 API 密钥...",
- "switchingApiKeyMode": "正在切换到 API 密钥模式...",
- "switchingAuto": "正在切换到自动...",
- "switchingChatgpt": "正在切换到 ChatGPT 账户模式..."
+ "applyingConnectionChanges": "正在应用连接更改…",
+ "refreshingProviderStatus": "正在刷新提供商状态…",
+ "savingCompatibleEndpoint": "正在保存兼容端点…",
+ "switchingAnthropicSubscription": "正在切换到 Anthropic 订阅…",
+ "switchingApiKey": "正在切换到 API 密钥…",
+ "switchingApiKeyMode": "正在切换到 API 密钥模式…",
+ "switchingAuto": "切换到自动…",
+ "switchingChatgpt": "正在切换到 ChatGPT 帐户模式…"
},
- "provider": "供应商",
+ "provider": "提供商",
"runtime": {
"descriptions": {
- "anthropic": "Anthropic目前没有单独的运行时间后端选择器.",
- "codex": "Codex现在只运行于本地运行时路径.",
- "gemini": "选择双子座运行时的后端多模型应使用哪个 。",
- "opencode": "OpenCode使用自己的管理运行时主机. 桌面目前只显示状态 。"
+ "anthropic": "Anthropic 目前没有单独的运行时后端选择器。",
+ "codex": "Codex 现在仅通过本机运行时路径运行。",
+ "gemini": "选择应使用哪个 Gemini 运行时后端多模型。",
+ "opencode": "OpenCode 使用自己的托管运行时主机。桌面当前仅公开状态。"
},
- "title": "运行时间",
- "updating": "更新运行时间..."
+ "title": "运行时",
+ "updating": "正在更新运行时…"
},
- "runtimeSummary": "运行时间: {{runtime}}",
+ "runtimeSummary": "运行时:{{runtime}}",
"status": {
- "configured": "配置",
- "enabled": "已启用",
+ "configured": "已配置",
+ "enabled": "启用",
"notConfigured": "未配置",
"notSet": "未设置",
- "off": "关",
- "unknown": "未知数"
+ "off": "关闭",
+ "unknown": "未知"
},
- "title": "提供者设置",
+ "title": "提供商设置",
"usage": {
"apiKey": "使用 API 密钥",
- "apiKeyRequired": "需要的 API 密钥",
- "compatibleEndpoint": "使用兼容的终点",
+ "apiKeyRequired": "需要 API 密钥",
+ "compatibleEndpoint": "使用兼容端点",
"notConnected": "未连接",
"usingMethod": "使用 {{method}}"
},
"errors": {
- "apiKeyDeletedRefreshFailed": "API密钥已删除, 但无法刷新提供者状态 。",
- "apiKeySavedRefreshFailed": "API 密钥已保存, 但无法刷新提供者状态 。",
- "connectionUpdatedRefreshFailed": "连接已更新, 但更新提供者状态失败 。",
+ "apiKeyDeletedRefreshFailed": "API 密钥已删除,但无法刷新提供商状态。",
+ "apiKeySavedRefreshFailed": "API 密钥已保存,但无法刷新提供商状态。",
+ "connectionUpdatedRefreshFailed": "连接已更新,但无法刷新提供商状态。",
"deleteApiKey": "删除 API 密钥失败",
"disableEndpoint": "禁用端点失败",
- "endpointDisabledRefreshFailed": "端点已禁用, 但无法刷新提供者状态 。",
- "endpointSavedRefreshFailed": "端点已保存, 但无法刷新提供者状态 。",
- "refreshCodexAccount": "刷新 Codex 账户失败",
- "saveApiKey": "保存 API 密钥失败",
+ "endpointDisabledRefreshFailed": "端点已禁用,但无法刷新提供商状态。",
+ "endpointSavedRefreshFailed": "端点已保存,但无法刷新提供商状态。",
+ "refreshCodexAccount": "刷新 Codex 帐户失败",
+ "saveApiKey": "无法保存 API 密钥",
"saveEndpoint": "保存端点失败",
- "updateAnthropicFastMode": "更新 Anthropic 快模式失败",
+ "updateAnthropicFastMode": "无法更新 Anthropic Fast 模式",
"updateConnection": "更新连接失败",
- "updateRuntimeBackend": "更新运行时间后端失败",
- "apiKeyRequired": "需要API键"
+ "updateRuntimeBackend": "无法更新运行时后端",
+ "apiKeyRequired": "需要 API 密钥"
},
"connectionUi": {
"authMode": {
"auto": "自动",
- "oauth": "订阅/ OAuth",
- "chatgpt": "ChatGPT 账户",
+ "oauth": "订阅/OAuth",
+ "chatgpt": "ChatGPT 帐户",
"apiKey": "API 密钥",
- "anthropicSubscription": "人类订阅"
+ "anthropicSubscription": "Anthropic 订阅"
},
"authMethod": {
"apiKey": "API 密钥",
- "apiKeyHelper": "API 密钥帮助器",
- "oauth": "奥奥特",
- "claudeSubscription": "克劳德订阅",
- "geminiCli": "双子座 CLI",
- "googleAccount": "谷歌账户",
- "serviceAccount": "服务账户"
+ "apiKeyHelper": "API 密钥助手",
+ "oauth": "开放认证",
+ "claudeSubscription": "Claude 订阅",
+ "geminiCli": "Gemini 命令行界面",
+ "googleAccount": "谷歌帐户",
+ "serviceAccount": "服务帐户"
},
"runtime": {
- "codexNative": "本地代码",
- "currentRuntime": "当前运行时间",
- "selectedRuntime": "选中运行时间",
- "summary": "{{prefix}}编号:{{runtime}}"
+ "codexNative": "Codex 本机",
+ "currentRuntime": "当前运行时",
+ "selectedRuntime": "选定运行时",
+ "summary": "{{prefix}}: {{runtime}}"
},
"status": {
- "checking": "正在检查...",
+ "checking": "检查…",
+ "modelsAvailable": "可选模型",
"checked": "已检查",
- "providerActivity": "提供者活动",
+ "providerActivity": "提供商活动",
"notConnected": "未连接",
- "startingChatGptLogin": "开始 ChatGPT 登录...",
- "waitingForChatGptLogin": "正在等待 ChatGPT 账户登录...",
- "chatGptVerificationDegraded": "检测到 ChatGPT 账户 - 账户验证正在退化 。",
- "chatGptAccountReady": "已准备好 ChatGPT 账户",
- "apiKeyReady": "ZXCVKEN0ZXCV 密钥已准备好",
- "codexLocalAccountNeedsReconnect": "Codex有一个本地选择的ChatGPT账户,但当前会话需要重新连接.",
- "codexNoActiveManagedSession": "Codex CLI报告没有活动查特GPT登录. 本地 Codex 账户数据已存在,但没有选择活动管理会话 。",
- "codexNoActiveChatGptLogin": "Codex CLI 报告未激活 ChatGPT 登录",
- "connectChatGptForSubscription": "连接 ChatGPT 账户以使用您的 Codex 订阅 。",
- "codexNativeReady": "本地代码已就绪",
- "codexNativeUnavailable": "无法使用本地编码",
- "unavailableInCurrentRuntime": "当前运行时间不可用",
+ "startingChatGptLogin": "正在开始 ChatGPT 登录…",
+ "waitingForChatGptLogin": "正在等待 ChatGPT 帐户登录…",
+ "chatGptVerificationDegraded": "检测到 ChatGPT 帐户 - 帐户验证当前已降级。",
+ "chatGptAccountReady": "ChatGPT 帐户已准备就绪",
+ "apiKeyReady": "API 密钥已准备就绪",
+ "codexLocalAccountNeedsReconnect": "Codex 有一个本地选择的 ChatGPT 帐户,但当前会话需要重新连接。",
+ "codexNoActiveManagedSession": "Codex CLI 报告没有有效的 ChatGPT 登录。本地 Codex 帐户数据存在,但未选择有效的托管会话。",
+ "codexNoActiveChatGptLogin": "Codex CLI 报告没有有效的 ChatGPT 登录",
+ "connectChatGptForSubscription": "连接 ChatGPT 帐户以使用您的 Codex 订阅。",
+ "codexNativeReady": "Codex 原生就绪",
+ "codexNativeUnavailable": "Codex 原生不可用",
+ "unavailableInCurrentRuntime": "当前运行时不可用",
"connectedViaApiKey": "通过 API 密钥连接",
- "apiKeyConfiguredNotVerified": "配置了 API 密钥,但尚未验证",
- "apiKeyModeMissingCredential": "选择了 API 密钥模式,但没有配置 API 密钥",
- "connectedVia": "通过{{method}}连接",
- "unableToVerify": "无法校验",
- "modelsAvailable": "模型可用"
+ "apiKeyConfiguredNotVerified": "API 密钥已配置,但尚未验证",
+ "apiKeyModeMissingCredential": "选择了 API 密钥模式,但未配置 API 密钥",
+ "connectedVia": "通过 {{method}} 连接",
+ "unableToVerify": "无法验证"
},
"mode": {
- "selectedAuth": "选中的认证: {{authMode}}",
- "preferredAuth": "首选认证: {{authMode}}"
+ "selectedAuth": "所选认证:{{authMode}}",
+ "preferredAuth": "首选授权:{{authMode}}"
},
"credential": {
- "apiKeyConfigured": "API 密钥配置",
- "savedApiKeyAvailable": "管理中保存可用的 API 密钥",
- "apiKeyAlsoConfigured": "API 密钥也在管理中配置",
+ "apiKeyConfigured": "API 密钥已配置",
+ "savedApiKeyAvailable": "已保存的 API 密钥可在“管理”中使用",
+ "apiKeyAlsoConfigured": "API 密钥也在“管理”中配置",
"apiKeyConfiguredInManage": "API 密钥在管理中配置",
- "apiKeyFallbackInManage": "API 密钥作为倒置管理中也可以使用",
- "availableAsFallback": "{{summary}} - 以倒置形式提供",
- "savedApiKeyAvailableIfSwitch": "如果您切换到 API 密钥模式, 管理中可保存 API 密钥",
- "availableIfSwitch": "{{summary}} - 切换到API键模式时可用",
- "autoWillUseUntilChatGpt": "{{summary}} - 自动使用,直到ChatGPT连接为止"
+ "apiKeyFallbackInManage": "API 密钥也可在“管理”中用作备用",
+ "availableAsFallback": "{{summary}} - 可作为备用",
+ "savedApiKeyAvailableIfSwitch": "如果您切换到 API 密钥模式,保存的 API 密钥可在“管理”中使用",
+ "availableIfSwitch": "{{summary}} - 如果切换到 API 密钥模式则可用",
+ "autoWillUseUntilChatGpt": "{{summary}} - 自动将使用此直到 ChatGPT 连接"
},
"actions": {
"connect": "连接",
- "connectAnthropic": "连接Anthropic",
+ "connectAnthropic": "连接 Anthropic",
"connectChatGpt": "连接 ChatGPT",
- "disconnect": "断开连接",
+ "disconnect": "断开",
"openLogin": "打开登录"
},
"disconnect": {
- "anthropicTitle": "断开Anthropic订阅?",
- "anthropic": "从 Claude CLI 运行时间中删除本地的 Anthropic 订阅会话 。",
- "anthropicWithApiKey": "从 Claude CLI 运行时间中删除本地的 Anthropic 订阅会话 。 管理保存的 API 密钥 。",
- "geminiTitle": "断开双子座CLI?",
- "gemini": "这清除了本地的双子座 ZXCVKEN0ZXCV会话元数据. 外部的ADC证书和保存的API密钥不删除."
+ "anthropicTitle": "断开 Anthropic 订阅?",
+ "anthropic": "这将从 Claude CLI 运行时中删除本地 Anthropic 订阅会话。",
+ "anthropicWithApiKey": "这将从 Claude CLI 运行时中删除本地 Anthropic 订阅会话。管理中保存的 API 密钥仍然可用。",
+ "geminiTitle": "断开 Gemini CLI?",
+ "gemini": "这将清除本地 Gemini CLI 会话元数据。外部 ADC 凭据和保存的 API 密钥不会被删除。"
}
}
},
"cliRuntime": {
"actions": {
"checkForUpdates": "检查更新",
- "checking": "正在检查...",
+ "checking": "检查…",
"extensions": "扩展",
"installRuntime": "安装 {{runtime}}",
"manage": "管理",
"recheck": "重新检查",
- "reinstallRuntime": "莱因斯托尔 {{runtime}}",
+ "reinstallRuntime": "重新安装 {{runtime}}",
"retry": "重试",
"update": "更新"
},
"installer": {
- "checkingLatest": "正在检查最新版本...",
- "downloading": "正在下载...",
+ "checkingLatest": "正在检查最新版本…",
+ "downloading": "正在下载…",
"failed": "安装失败",
"installed": "已安装 v{{version}}",
- "installing": "安装中...",
- "latest": "最新消息",
- "verifying": "正在验证校验和..."
+ "installing": "正在安装…",
+ "latest": "最新的",
+ "verifying": "正在验证校验和…"
},
"labels": {
- "multimodel": "多模式"
+ "multimodel": "多模型"
},
"loading": {
- "aiProviders": "正在检查 AI 提供者...",
- "claudeCli": "正在检查克劳德CLI..."
+ "aiProviders": "检查 AI 提供商…",
+ "claudeCli": "检查 Claude CLI…"
},
"provider": {
- "backend": "后端: {{backend}}",
- "loadingModels": "正在装入模型...",
- "modelsUnavailable": "此运行时间构建无法使用的模型",
- "runtime": "运行时间: {{runtime}}"
+ "backend": "后端:{{backend}}",
+ "loadingModels": "正在加载模型…",
+ "modelsUnavailable": "模型不适用于此运行时构建",
+ "runtime": "运行时:{{runtime}}"
},
"providerTerminal": {
"authFailed": "认证失败",
- "authUpdated": "更新认证",
- "loggedOut": "供应商已登录",
+ "authUpdated": "认证已更新",
+ "loggedOut": "提供商已注销",
"login": "登录",
- "logout": "注销",
+ "logout": "退出",
"logoutFailed": "注销失败"
},
"status": {
- "configuredNotFound": "未找到配置的 {{runtime}} 。",
- "foundButFailed": "发现 {{runtime}} 失败启动",
- "healthCheckFailed": "配置的 {{runtime}} 失败启动健康检查.",
- "notInstalled": "{{runtime}}未安装"
+ "configuredNotFound": "未找到配置的 {{runtime}}。",
+ "foundButFailed": "找到 {{runtime}} 但启动失败",
+ "healthCheckFailed": "配置的 {{runtime}} 启动运行状况检查失败。",
+ "notInstalled": "{{runtime}} 未安装"
},
- "title": "CLI 苏维埃社会主义共和国 运行时间"
+ "title": "CLI 运行时"
},
"cliStatus": {
- "versionUpgrade": "v{{current}} - > v{{latest}}"
+ "versionUpgrade": "v{{current}} -> v{{latest}}"
}
}
diff --git a/src/features/localization/renderer/locales/zh/team.json b/src/features/localization/renderer/locales/zh/team.json
index 49abb356..f33b5739 100644
--- a/src/features/localization/renderer/locales/zh/team.json
+++ b/src/features/localization/renderer/locales/zh/team.json
@@ -1,171 +1,171 @@
{
"activity": {
"actions": {
- "createTaskFromMessage": "从信件创建任务",
+ "createTaskFromMessage": "从消息创建任务",
"editMessage": "编辑消息",
- "expandMessage": "扩展消息",
- "replyToMessage": "对信件的答复",
- "restartTeam": "重新启动团队"
+ "expandMessage": "展开消息",
+ "replyToMessage": "回复消息",
+ "restartTeam": "重启团队"
},
"authError": {
- "description": "认证失败 。 重新召集小组将重新开会,并可能解决这个问题。 如果问题依然存在, 请检查您的 API 证书, 或稍后再试 。"
+ "description": "认证失败。重新启动团队将刷新会话并可能解决此问题。如果问题仍然存在,请检查您的 API 凭据或稍后重试。"
},
"automation": {
- "reviewPickup": "要求队友接受审查",
- "stallNudge": "要求队友继续停滞不前的任务",
+ "reviewPickup": "要求队友接手审核",
+ "stallNudge": "要求队友继续停滞的任务",
"workSyncBody": "要求队友同步当前工作"
},
"badges": {
"automation": "自动化",
- "bootstrap": "拖带",
+ "bootstrap": "引导程序",
"command": "命令",
- "comment": "注释",
- "live": "现场直播",
- "note": "说明",
- "rateLimited": "费率有限",
+ "comment": "评论",
+ "live": "实时",
+ "note": "备注",
+ "rateLimited": "速率受限",
"restart": "重新启动",
"result": "结果",
- "session": "届会",
- "stallNudge": "缓冲",
+ "session": "会话",
+ "stallNudge": "停滞提醒",
"start": "开始",
"workSync": "工作同步",
"agentError": "代理错误",
"apiError": "API 错误"
},
"bootstrap": {
- "acknowledged": "靴子已经确认",
- "restarting": "重新开始队友",
- "starting": "开始队友"
+ "acknowledged": "已确认引导",
+ "restarting": "重启队友",
+ "starting": "正在启动队友"
},
- "rawJson": "原始 ZXCVTKEN0ZXCV",
+ "rawJson": "原始 JSON",
"unread": "未读",
"thoughts": {
- "count": "{{count}} 想法",
- "count_one": "{{count}}认为",
- "expand": "扩展想法",
+ "count": "{{count}} 条思考",
+ "count_one": "{{count}} 条思考",
+ "expand": "展开思考",
"showMore": "显示更多",
- "showLess": "显示较少",
- "count_few": "{{count}} 想法",
- "count_many": "{{count}} 想法",
- "count_other": "{{count}} 想法",
- "toolSummary": "{{summary}}",
- "titleForMember": "{{name}}- 考虑"
+ "showLess": "收起",
+ "count_few": "{{count}} 条思考",
+ "count_many": "{{count}} 条思考",
+ "count_other": "{{count}} 条思考",
+ "toolSummary": "🔧{{summary}}",
+ "titleForMember": "{{name}} - 思考"
},
"timeline": {
- "loadingMessages": "正在装入信件...",
- "noMessages": "无消息",
- "emptyHint": "向成员发送信息以查看活动.",
+ "loadingMessages": "正在加载消息…",
+ "noMessages": "没有消息",
+ "emptyHint": "向成员发送消息以查看活动。",
"newSession": "新会话",
- "olderCount": "+ 键{{count}}年龄",
- "showMore": "显示{{count}}更多",
- "showAll": "全部显示",
- "olderCount_one": "+ 键{{count}}年龄",
- "olderCount_few": "+ 键{{count}}年龄",
- "olderCount_many": "+ 键{{count}}年龄",
- "olderCount_other": "+ 键{{count}}年龄"
+ "olderCount": "+{{count}} 条较早消息",
+ "showMore": "再显示 {{count}} 条",
+ "showAll": "显示全部",
+ "olderCount_one": "+{{count}} 条较早消息",
+ "olderCount_few": "+{{count}} 条较早消息",
+ "olderCount_many": "+{{count}} 条较早消息",
+ "olderCount_other": "+{{count}} 条较早消息"
},
"pendingReplies": {
- "title": "等待答复",
- "openMember": "开放成员",
- "messageSentAwaitingReply": "发送信件,等待答复",
- "awaitingReply": "等待答复",
- "externalTeam": "外部小组",
- "crossTeamAwaitingReply": "发送跨小组信息,等待答复",
+ "title": "等待回复",
+ "openMember": "打开成员",
+ "messageSentAwaitingReply": "消息已发送,等待回复",
+ "awaitingReply": "等待回复",
+ "externalTeam": "外部团队",
+ "crossTeamAwaitingReply": "跨团队消息已发送,等待回复",
"user": "用户",
- "awaitingApproval": "等待核准"
+ "awaitingApproval": "等待批准"
},
"reply": {
- "replyingTo": "答复",
- "action": "答复"
+ "replyingTo": "正在回复",
+ "action": "回复"
},
"activeTasks": {
"inProgress": "进行中",
- "expandInProgress": "展开进行中任务",
- "collapseInProgress": "折叠进行中任务",
- "reviewing": "正在审查",
+ "expandInProgress": "展开进行中项",
+ "collapseInProgress": "折叠进行中项",
+ "reviewing": "审核",
"workingOn": "正在处理"
},
"expandDialog": {
- "description": "扩展信件视图"
+ "description": "扩展消息视图"
}
},
"create": {
"actions": {
"create": "创建",
- "creating": "正在创建...",
+ "creating": "正在创建…",
"openExisting": "打开现有团队",
- "skipPreflightAndCreate": "跳过飞行前创建"
+ "skipPreflightAndCreate": "跳过预检并创建"
},
"conflict": {
- "description": "在同一个目录中运行两个团队是危险的——他们可能与编辑相同的文件发生冲突. 考虑使用不同的目录或git工作树进行隔离.",
- "title": "另一个团队\"{{team}}\"已经在运行这个工作目录",
- "workingDirectory": "工作目录:"
+ "description": "在同一目录中运行两个团队是有风险的 - 它们可能会在编辑相同文件时发生冲突。考虑使用不同的目录或 Git worktree进行隔离。",
+ "title": "另一个团队“{{team}}”已经在该工作目录中运行",
+ "workingDirectory": "工作目录:"
},
"description": {
- "copy": "创建一个基于现有团队的新团队。",
- "create": "组织你的团队 选择如何开始"
+ "copy": "在现有团队的基础上创建一个新团队。",
+ "create": "设置您的团队并选择其开始方式。"
},
"errors": {
- "nameExists": "团队名称已经存在",
- "nameLaunching": "这个名字的团队正在启动",
- "createConfigFailed": "创建团队配置失败",
- "loadProjectsFailed": "装入工程失败"
+ "nameExists": "团团队名称称已存在",
+ "nameLaunching": "具有此名称的团队目前正在启动",
+ "createConfigFailed": "无法创建团队配置",
+ "loadProjectsFailed": "无法加载项目"
},
"fields": {
- "color": "颜色( 可选)",
- "description": "描述( 可选)",
- "prompt": "启动小组领导( 可选)",
- "teamName": "团队名称"
+ "color": "颜色(可选)",
+ "description": "说明(可选)",
+ "prompt": "提示团队负责人(可选)",
+ "teamName": "团团队名称称"
},
"launchAfterCreate": {
- "description": "立即通过当地克劳德·CLI启动球队.",
+ "description": "通过本地 Claude CLI 立即启动团队。",
"label": "创建后运行命令"
},
- "localOnly": "仅以本地电子模式提供 。",
- "onDisk": "磁盘上:",
+ "localOnly": "仅在本地 Electron 模式下可用。",
+ "onDisk": "在磁盘上:",
"placeholders": {
- "description": "团队宗旨简述.",
- "prompt": "在供给期间给团队领导的指示.."
+ "description": "团队用途的简要说明",
+ "prompt": "为团队负责人提供说明…"
},
"saved": "已保存",
"solo": {
- "description": "只有团队领队(主进程)将启动——不培养队友. 在您所选择的运行时间( Claude Code, Codex, OpenCode, 双子座) 中像常规代理会话一样工作, 但可以访问任务板进行规划 。 避免队友在高处协调,从而节省代币. 之后可以从团队设置中添加成员.",
- "label": "独奏队"
+ "description": "只有团队领导(主进程)才会启动 - 不会启动任何队友。与您选择的运行时(Claude Code、Codex、OpenCode、Gemini)中的常规智能体会话一样工作,但可以访问任务看板进行规划。通过避免队友协调开销来节省 Token。您可以稍后从团队设置添加成员。",
+ "label": "单人团队"
},
"title": {
"copy": "复制团队",
"create": "创建团队"
},
"optional": {
- "launchSettingsTitle": "可选发射设置",
- "launchSettingsDescription": "快速,安全,和CLI 超过住在这里当你需要它们。",
+ "launchSettingsTitle": "可选启动设置",
+ "launchSettingsDescription": "如有需要,可在此设置提示词、安全和 CLI 覆盖项。",
"teamDetailsTitle": "可选团队详情",
- "teamDetailsDescription": "保存默认的流量压缩, 并仅在您需要额外上下文或自定义颜色时打开 。"
+ "teamDetailsDescription": "保持默认流程紧凑,仅当您需要额外的上下文或自定义颜色时才打开它。"
},
"prepare": {
- "unsupportedPreload": "当前预装版本不支持团队:预装. 重新启动dev应用程序.",
- "selectWorkingDirectory": "选择一个工作目录来验证发射环境.",
- "someProvidersNeedAttention": "一些选定的提供者需要注意。",
- "readyWithNotes": "所有选定的提供者都已准备好,并附有注释。",
- "ready": "所有选中的提供者都准备好了 。",
- "failed": "准备选中的提供者失败",
- "checkingProviders": "正在检查选中的提供者...",
- "preparingEnvironment": "正在准备环境...",
- "selectedProvidersReadyWithNotes": "选中的提供者已就绪( 有注释)",
- "selectedProvidersReady": "选定供应商准备就绪"
+ "unsupportedPreload": "当前preload 版本不支持 team:prepareProvisioning。重新启动开发应用。",
+ "selectWorkingDirectory": "选择一个工作目录来验证启动环境。",
+ "someProvidersNeedAttention": "部分选定提供商需要注意。",
+ "readyWithNotes": "所有选定的提供商均已准备就绪,并附有注释。",
+ "ready": "所有选定提供商均已就绪。",
+ "failed": "无法准备选定的提供商",
+ "checkingProviders": "检查选定的提供商…",
+ "preparingEnvironment": "准备环境…",
+ "selectedProvidersReadyWithNotes": "选定的提供商已准备就绪(带注释)",
+ "selectedProvidersReady": "选定的提供商已准备就绪"
},
"validation": {
- "nameMustContainLetterOrDigit": "名称必须至少包含一个字母或数字",
- "nameTooLong": "名称太长( 最多 128 个字符)",
- "selectWorkingDirectory": "选择工作目录( cwd)",
- "memberNameRequired": "成员名称不能为空",
- "memberNameInvalid": "成员名称必须从字母开始,只使用[a-zA-Z0-9. ],最大128个字符",
- "memberNamesUnique": "成员名字必须是独一无二的",
- "openCodeLeadModelRequired": "OpenCode领导需要一个选定的模型.",
- "openCodeTeammateRequired": "OpenCode领队至少需要一名OpenCode队友.",
- "teamLaunching": "团队目前正在启动",
- "teamNameExists": "团队名称已经存在",
- "checkFormFields": "检查窗体字段"
+ "nameMustContainLetterOrDigit": "名称必须包含至少一个字母或数字",
+ "nameTooLong": "名称太长(最多 128 个字符)",
+ "selectWorkingDirectory": "选择工作目录(cwd)",
+ "memberNameRequired": "成员名不能为空",
+ "memberNameInvalid": "成员名称必须以字母数字开头,仅使用 [a-zA-Z0-9._-],最多 128 个字符",
+ "memberNamesUnique": "成员名称必须是唯一的",
+ "openCodeLeadModelRequired": "OpenCode 引线需要选定的模型。",
+ "openCodeTeammateRequired": "OpenCode 领导者需要至少一名 OpenCode 队友。",
+ "teamLaunching": "目前团队正在启动",
+ "teamNameExists": "团团队名称称已存在",
+ "checkFormFields": "检查表单字段"
}
},
"editTeam": {
@@ -173,117 +173,117 @@
"cancel": "取消",
"save": "保存"
},
- "addMemberLockReason": "使用专门的添加成员对话框在团队直播时添加新的队友.",
- "description": "更改团队名称、描述和颜色",
+ "addMemberLockReason": "在团队上线时,使用专用的“添加成员”对话框添加新的队友。",
+ "description": "更改团团队名称称、描述和颜色",
"errors": {
- "changesSavedRefreshFailed": "团队更改已保存, 但无法刷新最新视图: {{message}}",
- "liveRenameBlocked": "现有队友在球队直播时不能重新命名. 更名为: {{names}}",
- "memberNameEmpty": "成员名称不能为空",
- "memberNameInvalid": "成员名称必须从字母开始,只使用[a-zA-Z0-9. ],最大128个字符",
- "memberNameNumericSuffix": "成员名称\"{{name}}\"不允许使用(保留给克劳德·CLI自动后缀). 改为\"{{base}}\".",
- "memberNameReserved": "成员名称\"{{name}}\"保留.",
- "memberNamesUnique": "成员名字在保存前必须是独有的",
- "newLiveTeammates": "在团队直播时从专用的Add成员对话框中添加新的队友. 编辑团队只支持更新现有的队友.",
- "provisioning": "在提供时无法编辑团队设置 。 等待发射完成,然后再试一次.",
- "restartFailedMany": "团队被救,但未能重新启动这些队友: {{failures}}",
- "restartFailedOne": "团队已保存, 但未能重新启动此队友: {{failures}}",
+ "changesSavedRefreshFailed": "团队更改已保存,但无法刷新最新视图:{{message}}",
+ "liveRenameBlocked": "当团队上线时,现有队友无法重命名。更名:{{names}}",
+ "memberNameEmpty": "成员名不能为空",
+ "memberNameInvalid": "成员名称必须以字母数字开头,仅使用 [a-zA-Z0-9._-],最多 128 个字符",
+ "memberNameNumericSuffix": "不允许成员名称“{{name}}”(为 Claude CLI 自动后缀保留)。请改用“{{base}}”。",
+ "memberNameReserved": "成员名“{{name}}”已保留",
+ "memberNamesUnique": "保存前成员名称必须是唯一的",
+ "newLiveTeammates": "当团队在线时,通过专用的“添加成员”对话框添加新的队友。编辑团队仅支持更新现有队友。",
+ "provisioning": "当配置仍在进行时,无法编辑团队设置。等待启动完成,然后重试。",
+ "restartFailedMany": "团队已保存,但无法重新启动这些队友:{{failures}}",
+ "restartFailedOne": "团队已保存,但无法重新启动该队友:{{failures}}",
"saveFailed": "保存失败",
- "settingsChanged": "此对话框打开时, 团队设置已更改 。 在保存前重新打开并审查最新状态 。",
- "settingsSavedMembersAndRefreshFailed": "团队设置已保存, 但成员更改失败: {{message}}. 刷新也失败: {{refreshError}}",
- "settingsSavedMembersFailed": "团队设置已保存, 但成员更改失败: {{message}}",
- "settingsSavedRefreshFailed": "团队设置已保存, 但无法刷新最新视图: {{message}}",
- "teamNameEmpty": "团队名称不能为空",
- "unsupportedMixedPrimaryMutation": "混合OpenCode团队中的主力队友的现场编辑尚未获得支持. 停止队伍,编辑名册,然后重启. 受影响:{{names}}"
+ "settingsChanged": "此对话框打开时团队设置发生更改。重新打开它并在保存之前查看最新状态。",
+ "settingsSavedMembersAndRefreshFailed": "团队设置已保存,但成员更改失败:{{message}}。刷新也失败:{{refreshError}}",
+ "settingsSavedMembersFailed": "团队设置已保存,但成员更改失败:{{message}}",
+ "settingsSavedRefreshFailed": "团队设置已保存,但无法刷新最新视图:{{message}}",
+ "teamNameEmpty": "团团队名称称不能为空",
+ "unsupportedMixedPrimaryMutation": "尚不支持对混合 OpenCode 团队中主要拥有的队友进行实时编辑。停止团队,编辑名单,然后重新启动。受影响:{{names}}"
},
"fields": {
- "colorOptional": "颜色( 可选)",
- "description": "说明",
- "name": "名称"
+ "colorOptional": "颜色(可选)",
+ "description": "描述",
+ "name": "姓名"
},
- "memberRestartWarning": "保存将重新启动此队友应用角色,工作流程,工作树隔离,提供者,模型,努力,或MCP访问更改.",
+ "memberRestartWarning": "保存将重新启动该队友以应用角色、工作流、工作树隔离、提供商、模型、工作量或 MCP 访问更改。",
"notices": {
- "liveRenameBlocked": "活救因现有队友改名而受阻. 还原那些身份更改或先阻止队伍.",
- "newLiveTeammates": "在团队直播时无法从Edit Team中添加新的队友. 使用添加成员对话框代替 。",
- "provisioning": "团队供给仍在进行中. 编辑暂时锁定,直到发射结束。",
- "restartMany": "保存会重新启动或重新启动这些队友应用角色,工作流程,工作树隔离,提供商,模型,努力,或MCP访问更改:{{names}}.",
- "restartOne": "保存会重新启动或重新启动这个队友应用角色,工作流程,工作树隔离,提供商,模型,努力,或MCP访问更改:{{names}}.",
- "unsupportedMixedPrimaryMutation": "混合OpenCode球队中主力队友的现场编辑/移除需要停赛并重启球队:{{names}}."
+ "liveRenameBlocked": "由于现有队友被重命名,实时保存被阻止。恢复这些身份更改或首先停止团队。",
+ "newLiveTeammates": "当团队处于活动状态时,无法从“编辑团队”添加新队友。请改用“添加成员”对话框。",
+ "provisioning": "团队配置仍在进行中。编辑暂时锁定,直到启动完成。",
+ "restartMany": "保存将重新启动或重新启动这些团队成员以应用角色、工作流、工作树隔离、提供商、模型、工作量或 MCP 访问更改:{{names}}。",
+ "restartOne": "保存将重新启动或重新启动该队友以应用角色、工作流、工作树隔离、提供商、模型、工作量或 MCP 访问更改:{{names}}。",
+ "unsupportedMixedPrimaryMutation": "对混合 OpenCode 团队中主要拥有的队友进行实时编辑/删除需要停止并重新启动团队:{{names}}。"
},
"placeholders": {
- "description": "团队说明(可选)",
- "teamName": "团队名称"
+ "description": "团队描述(可选)",
+ "teamName": "团团队名称称"
},
"teamLead": {
- "changeRuntime": "更改前置运行时间",
- "changeRuntimeDescription": "开放再发射团队,以改变主导提供者,型号,或努力.",
- "modelLockReason": "团队前导运行时间由再发射团队管理.",
- "readOnlyHint": "团队主名和角色在这里只读。 在主行打开运行时间面板以更改提供者,模型,或努力.",
- "role": "团队领导"
+ "changeRuntime": "更改引导运行时",
+ "changeRuntimeDescription": "打开重新启动团队以更改主要提供商、模型或工作量。",
+ "modelLockReason": "团队领导运行时由重新启动团队管理。",
+ "readOnlyHint": "团队负责人姓名和角色在此处保持只读状态。打开前导行上的运行时面板以更改提供商、模型或工作量。",
+ "role": "团队负责人"
},
"title": "编辑团队"
},
"memberDraft": {
"actions": {
"remove": "删除成员",
- "removeAria": "删除{{name}}",
+ "removeAria": "删除 {{name}}",
"restore": "恢复成员",
"restoreAria": "恢复 {{name}}"
},
"anthropicContext": {
"defaultSetting": "默认上下文设置",
- "description": "此次发射的Anthropic背景是全团队的:{{mode}}. 使用前置运行时面板的限制性上下文复选框来更改它.",
- "limitEnabled": "200K 限制启用"
+ "description": "此次启动的 Anthropic 上下文是团队范围的:{{mode}}。使用主运行时面板的“限制上下文”复选框来更改它。",
+ "limitEnabled": "启用 200K 限制"
},
"mcp": {
"buttonInherit": "MCP 继承",
- "buttonScopes": "ZXCVKEN0ZXCV 瞄准镜",
+ "buttonScopes": "MCP 范围",
"chooseScopes": "选择范围",
- "inheritLead": "继承铅",
- "lockedInfo": "MCP代理团队只允许所有队友使用. 这个队友将只使用特工团队服务器发射.",
+ "inheritLead": "继承领先",
+ "lockedInfo": "仅对所有队友启用 Agent Teams MCP。该队友将仅使用 Agent Teams 服务器启动。",
"mode": "MCP 模式",
"scopes": {
- "local": "当地",
+ "local": "本地",
"project": "项目",
"user": "用户"
},
"serverNames": "服务器名称",
- "settingInfo": "MCP特工团队 发射这个团队的队友 只有特工团队服务器。 范围和允许列表模式仅适用于本次队友发射.",
- "strictAllowlist": "严格许可列表",
- "tooltip": "{{label}}:控制这个成员的MCP继承政策.",
- "agentTeamsMcp": "特工团队 MCP"
+ "settingInfo": "Agent Teams MCP 仅使用 Agent Teams 服务器启动此队友。范围和许可名单模式仅适用于该队友启动。",
+ "strictAllowlist": "严格的许可名单",
+ "tooltip": "{{label}}:控制该成员的 MCP 继承策略",
+ "agentTeamsMcp": "Agent Team MCP"
},
"model": {
- "ariaLabel": "{{provider}}供应商,{{model}}",
- "currentLeadRuntime": "当前运行时间",
+ "ariaLabel": "{{provider}} 提供商,{{model}}",
+ "currentLeadRuntime": "当前领先运行时",
"default": "默认",
- "inheritedTooltip": "提供方、模型和努力都是在同步的同时从牵头方继承的。",
- "leadSuffix": "{{label}}(牵头)",
- "liveDisabled": "提供商、模型和努力的变化在团队活动时被禁用。 重新连接团队以安全应用它们.",
- "lockedActionFallback": "提前运行时间改变开放Relaunch Team,其中供应商,模型,和努力可以更新.",
- "restartWholeTeam": "保存这些运行时间变化会重启整个团队."
+ "inheritedTooltip": "启用同步时,提供商、模型和工作量将从团队负责人继承。",
+ "leadSuffix": "{{label}}(团队负责人)",
+ "liveDisabled": "当团队上线时,提供商、模型和工作量更改将被禁用。重新连接团队以安全地应用它们。",
+ "lockedActionFallback": "领导运行时更改打开重新启动团队,可以在其中更新提供商、模型和工作。",
+ "restartWholeTeam": "保存这些运行时更改会重新启动整个团队。"
},
- "nameAria": "成员 {{index}} 名称",
- "nameFallback": "委员 {{index}}",
- "noRole": "无角色",
+ "nameAria": "成员 {{index}} 姓名",
+ "nameFallback": "成员 {{index}}",
+ "noRole": "没有角色",
"removed": "已删除",
"workflow": {
"addTooltip": "添加队友工作流程",
"editTooltip": "编辑队友工作流程",
- "label": "工作流量( 可选)",
- "placeholder": "这个特工应该如何行为,与他人互动...",
+ "label": "工作流程(可选)",
+ "placeholder": "这个代理应该如何表现、与他人互动……",
"saved": "已保存"
},
"worktree": {
- "description": "把这个队友放在另外的树上 应用/拒绝更改工作树的目标,而不是主工作空间.",
+ "description": "在单独的 Git worktree中运行该队友。应用/拒绝更改的目标是工作树,而不是主要工作区。",
"label": "工作树"
},
"addMembers": {
"title": "添加成员",
- "description": "在 {{teamName}} 中增加新成员"
+ "description": "添加新成员至 {{teamName}}"
},
"placeholders": {
"name": "成员名称",
- "mcpServers": "gi,哨兵"
+ "mcpServers": "github、哨兵"
}
},
"detail": {
@@ -292,44 +292,44 @@
"cancel": "取消",
"delete": "删除",
"editCode": "编辑代码",
- "launch": "发射",
- "remove": "删除",
- "stop": "停下来",
+ "launch": "启动",
+ "remove": "消除",
+ "stop": "停止",
"task": "任务",
"visualize": "可视化"
},
"deleteTeam": {
- "description": "删除团队\"{{team}}\"?. 这一行动是不可逆转的。 所有团队数据和任务将被删除.",
+ "description": "删除队伍“{{team}}”?此操作是不可逆转的。所有团队数据和任务都将被删除。",
"title": "删除团队"
},
"draft": {
- "descriptionPrefix": "这是一个起草团队 -",
- "descriptionSuffix": "已配置为{{count}} {{member}}但还没有被CLI提供。 点击启动以选择一个模型并启动团队.",
- "descriptionSuffix_few": "已配置为{{count}} {{member}}但还没有被CLI提供。 点击启动以选择一个模型并启动团队.",
- "descriptionSuffix_many": "已配置为{{count}} {{member}}但还没有被CLI提供。 点击启动以选择一个模型并启动团队.",
- "descriptionSuffix_one": "已配置为{{count}} {{member}}但还没有被CLI提供。 点击启动以选择一个模型并启动团队.",
- "descriptionSuffix_other": "已配置为{{count}} {{member}}但还没有被CLI提供。 点击启动以选择一个模型并启动团队.",
+ "descriptionPrefix": "这是一支选秀队伍——",
+ "descriptionSuffix": "已使用 {{count}} {{member}} 配置,但尚未由 CLI 进行配置。单击启动以选择模型并启动团队。",
+ "descriptionSuffix_few": "已使用 {{count}} {{member}} 配置,但尚未由 CLI 进行配置。单击启动以选择模型并启动团队。",
+ "descriptionSuffix_many": "已使用 {{count}} {{member}} 配置,但尚未由 CLI 进行配置。单击启动以选择模型并启动团队。",
+ "descriptionSuffix_one": "已使用 {{count}} {{member}} 配置,但尚未由 CLI 进行配置。单击启动以选择模型并启动团队。",
+ "descriptionSuffix_other": "已使用 {{count}} {{member}} 配置,但尚未由 CLI 进行配置。单击启动以选择模型并启动团队。",
"member": "成员",
"member_few": "成员",
"member_many": "成员",
"member_one": "成员",
"member_other": "成员",
- "title": "尚未启动小组"
+ "title": "团队尚未启动"
},
- "invalidTab": "无效的团队标签",
- "kanbanSafeData": "完全装入 kanban 失败 。 显示安全数据 。",
- "loadFailed": "装入团队失败",
- "loading": "装入团队",
- "loadingSidebar": "正在装入团队侧边栏",
+ "invalidTab": "团队选项卡无效",
+ "kanbanSafeData": "无法完全加载看板。显示安全数据。",
+ "loadFailed": "无法加载团队",
+ "loading": "装货队",
+ "loadingSidebar": "正在加载团队侧边栏",
"offline": {
- "offline": "队伍下线了",
- "partialFailed": "上次发射失败",
- "partialMissing": "上次发射失败 。{{missing}}页:1{{expected}}队友没有加入",
- "reconciling": "上次发射还在调和"
+ "offline": "团队离线",
+ "partialFailed": "上次启动中途失败",
+ "partialMissing": "上次启动中途失败 - {{missing}}/{{expected}} 队友没有加入",
+ "reconciling": "上次启动仍在协调中"
},
- "previous": "上一个:{{paths}}",
+ "previous": "上一篇:{{paths}}",
"removeMember": {
- "description": "从队伍中删除\"{{member}}\"?. 任务和信件会被保留,但此名称不能重复使用.",
+ "description": "从团队中删除“{{member}}”?任务和消息将被保留,但该名称不能重复使用。",
"title": "删除成员"
},
"sections": {
@@ -337,30 +337,30 @@
},
"solo": "独奏",
"status": {
- "active": "活动",
- "launching": "正在发射...",
- "running": "运行"
+ "active": "活跃",
+ "launching": "正在启动…",
+ "running": "运行中"
},
"telemetry": {
- "cpu": "CPU 苏维埃社会主义共和国",
- "memory": "内存"
+ "cpu": "中央处理器",
+ "memory": "记忆"
},
"tooltips": {
"deleteTeam": "删除团队",
"editTeam": "编辑团队",
- "editUnavailableProvisioning": "正在提供时无法编辑团队",
- "openBuiltInEditor": "在内置编辑器中打开工程",
+ "editUnavailableProvisioning": "当配置仍在进行时,编辑团队不可用",
+ "openBuiltInEditor": "在内置编辑器中打开项目",
"openTeamGraph": "打开团队图",
- "stopTeam": "停止小组"
+ "stopTeam": "停队"
},
- "waitingForProvisioning": "一旦提供完毕,小组数据就会出现",
+ "waitingForProvisioning": "配置完成后将显示团队数据",
"context": {
- "title": "背景情况",
- "loading": "正在加载...",
- "noSessionLoaded": "未加载会话",
+ "title": "上下文",
+ "loading": "加载中…",
+ "noSessionLoaded": "没有加载会话",
"closePanel": "关闭 {{team}} 上下文面板",
- "loadingContext": "正在加载上下文...",
- "openLeadSession": "打开团队负责人会话以查看上下文。"
+ "loadingContext": "正在加载上下文…",
+ "openLeadSession": "打开团队领导会话以查看上下文。"
}
},
"review": {
@@ -368,59 +368,59 @@
"actions": {
"accept": "接受",
"discard": "丢弃",
- "discardTooltip": "丢弃此文件的所有编辑",
- "keepMyDraft": "留着我的草稿",
+ "discardTooltip": "放弃对此文件的所有编辑",
+ "keepMyDraft": "保留我的草稿",
"reject": "拒绝",
- "reloadFromDisk": "从磁盘重新装入",
+ "reloadFromDisk": "从磁盘重新加载",
"restore": "恢复",
- "restoreTooltip": "从预览中创建/ 重存此文件",
+ "restoreTooltip": "从预览中在磁盘上创建/恢复此文件",
"saveFile": "保存文件",
- "saveFileTooltip": "文件保存到磁盘"
+ "saveFileTooltip": "将文件保存到磁盘"
},
"badges": {
- "deleted": "DELETED 苏维埃社会主义共和国",
- "manualReview": "MANUAL ZXCV 1ZXCV",
- "new": "NEW 苏维埃社会主义共和国",
- "worktree": "WORKTREE 苏维埃社会主义共和国"
+ "deleted": "已删除",
+ "manualReview": "人工审核",
+ "new": "新的",
+ "worktree": "工作树"
},
"contentSource": {
"disk-current": "当前磁盘",
- "file-history": "文件历史",
- "git-fallback": "Git 倒计时",
- "ledger-exact": "任务编辑器",
- "ledger-snapshot": "编辑快照",
- "snippet-reconstruction": "已重建",
- "unavailable": "内容不详"
+ "file-history": "文件历史记录",
+ "git-fallback": "Git 回退",
+ "ledger-exact": "任务分类帐",
+ "ledger-snapshot": "账本快照",
+ "snippet-reconstruction": "重建",
+ "unavailable": "内容不可用"
},
"contentUnavailable": {
- "badge": "内容不详",
- "description": "分类账记录了这一变化的元数据,但全文内容不详. 这通常指二进制,大,或只包含散列的内容.",
- "safety": "为避免不安全的磁盘写入,此文件的自动接受/拒绝被禁用 。",
- "title": "没有文本内容"
+ "badge": "内容不可用",
+ "description": "账本记录了此更改的元数据,但全文内容不可用。这通常意味着二进制、大型或仅哈希内容。",
+ "safety": "对此文件禁用自动接受/拒绝,以避免不安全的磁盘写入。",
+ "title": "文本内容不可用"
},
"disabled": {
- "acceptRejectContentUnavailable": "接受/拒绝被禁用, 因为没有完整的文本内容 。",
- "acceptRejectMissingOnDisk": "在磁盘上缺少文件时, 接受/ 拒绝被禁用 。",
- "rejectBaselineUnavailable": "拒绝被禁用, 因为没有原始基线 。",
- "rejectContentUnavailable": "拒绝被禁用, 因为没有完整的文本内容 。",
- "rejectManualLedgerReview": "拒绝被禁用, 因为此分类账更改有二进制、 较大或无法使用的内容 。"
+ "acceptRejectContentUnavailable": "由于全文内容不可用,接受/拒绝被禁用。",
+ "acceptRejectMissingOnDisk": "当文件在磁盘上丢失时,接受/拒绝将被禁用。",
+ "rejectBaselineUnavailable": "由于原始基线不可用,拒绝被禁用。",
+ "rejectContentUnavailable": "由于全文内容不可用,拒绝被禁用。",
+ "rejectManualLedgerReview": "拒绝被禁用,因为此分类账更改包含二进制、大型或不可用的内容。"
},
"externalChange": {
- "changedOnDisk": "在磁盘上更改",
- "deletedOnDisk": "磁盘上已删除",
- "recreatedOnDisk": "在磁盘上重现"
+ "changedOnDisk": "磁盘上已更改",
+ "deletedOnDisk": "已在磁盘上删除",
+ "recreatedOnDisk": "在磁盘上重新创建"
},
"missingOnDisk": {
- "badge": "磁盘丢失",
- "description": "我们仍然可以从代理日志中显示一个预览,但您的文件系统已无法同步 。",
+ "badge": "磁盘上丢失",
+ "description": "我们仍然可以显示代理日志的预览,但您的文件系统不同步。",
"restorePrefix": "使用",
"restoreSuffix": "将预览内容写回磁盘。",
- "restoreUnavailable": "无法自动恢复完整文件内容 。",
- "title": "磁盘上缺少文件"
+ "restoreUnavailable": "无法自动恢复完整文件内容。",
+ "title": "磁盘上文件丢失"
},
"pathChange": {
- "from": "来自{{path}}",
- "to": "前往{{path}}"
+ "from": "来自 {{path}}",
+ "to": "至 {{path}}"
},
"worktree": {
"isolated": "孤立的工作树"
@@ -428,308 +428,308 @@
},
"toolbar": {
"stats": {
- "pending": "{{count}}待处理",
- "pending_one": "{{count}}待处理",
- "pending_other": "{{count}}待处理",
- "accepted": "接受{{count}}",
- "accepted_one": "接受{{count}}",
- "accepted_other": "接受{{count}}",
- "rejected": "{{count}}拒绝",
- "rejected_one": "{{count}}拒绝",
- "rejected_other": "{{count}}拒绝",
- "acrossFiles": "横跨 {{count}} 文件",
- "acrossFiles_one": "横跨 {{count}} 文件",
- "acrossFiles_other": "横跨 {{count}} 文件",
- "edited": "编辑 {{count}}",
- "edited_one": "编辑 {{count}}",
- "edited_other": "编辑 {{count}}",
- "pending_few": "{{count}}待处理",
- "pending_many": "{{count}}待处理",
- "accepted_few": "接受{{count}}",
- "accepted_many": "接受{{count}}",
- "rejected_few": "{{count}}拒绝",
- "rejected_many": "{{count}}拒绝",
- "acrossFiles_few": "横跨 {{count}} 文件",
- "acrossFiles_many": "横跨 {{count}} 文件",
- "edited_few": "编辑 {{count}}",
- "edited_many": "编辑 {{count}}"
+ "pending": "{{count}} 待定",
+ "pending_one": "{{count}} 待定",
+ "pending_other": "{{count}} 待定",
+ "accepted": "{{count}} 已接受",
+ "accepted_one": "{{count}} 已接受",
+ "accepted_other": "{{count}} 已接受",
+ "rejected": "{{count}} 被拒绝",
+ "rejected_one": "{{count}} 被拒绝",
+ "rejected_other": "{{count}} 被拒绝",
+ "acrossFiles": "跨 {{count}} 文件",
+ "acrossFiles_one": "跨 {{count}} 文件",
+ "acrossFiles_other": "跨 {{count}} 文件",
+ "edited": "{{count}} 已编辑",
+ "edited_one": "{{count}} 已编辑",
+ "edited_other": "{{count}} 已编辑",
+ "pending_few": "{{count}} 待定",
+ "pending_many": "{{count}} 待定",
+ "accepted_few": "{{count}} 已接受",
+ "accepted_many": "{{count}} 已接受",
+ "rejected_few": "{{count}} 被拒绝",
+ "rejected_many": "{{count}} 被拒绝",
+ "acrossFiles_few": "跨 {{count}} 文件",
+ "acrossFiles_many": "跨 {{count}} 文件",
+ "edited_few": "{{count}} 已编辑",
+ "edited_many": "{{count}} 已编辑"
},
"actions": {
- "auto": "自动",
- "undo": "撤销",
- "acceptAll": "全部接受( O)",
+ "auto": "汽车",
+ "undo": "撤消",
+ "acceptAll": "全部接受",
"rejectAll": "全部拒绝",
- "applying": "正在应用...",
- "applyRejections": "应用拒绝"
+ "applying": "正在申请…",
+ "applyRejections": "申请拒绝"
},
"tooltips": {
- "autoOn": "滚动到结尾时查看的自动标记文件( ON)",
- "autoOff": "滚动到结束时查看的自动标记文件( OFF)",
- "undo": "撤消上次审查操作( Ctrl+Z)",
- "acceptAll": "接受所有文件中的所有更改",
- "rejectAll": "在所有文件中拒绝所有可安全拒绝的更改",
- "rejectAllDisabled": "没有待决文件有安全的原始基线可以拒绝 。",
- "applyRejections": "将已拒绝的hunks应用到磁盘中; 接受的更改保留为- is"
+ "autoOn": "滚动到末尾时自动将文件标记为已查看(开启)",
+ "autoOff": "滚动到末尾时自动将文件标记为已查看(关闭)",
+ "undo": "撤消上次审阅操作 (Ctrl+Z)",
+ "acceptAll": "接受所有文件的所有更改",
+ "rejectAll": "拒绝所有文件中所有可安全拒绝的更改",
+ "rejectAllDisabled": "没有待处理的文件具有可以拒绝的安全原始基线。",
+ "applyRejections": "将已拒绝的差异片段应用到磁盘;已接受的更改保持原样"
}
},
"diffError": {
- "title": "提供 diff 视图失败",
- "unexpected": "渲染 diff 时发生了意外错误 。",
+ "title": "无法渲染差异视图",
+ "unexpected": "渲染差异时发生意外错误。",
"actions": {
"retry": "重试"
},
"raw": {
- "show": "显示原始 diff 数据",
- "file": "文件: {{file}}",
- "original": "--- 原件",
- "modified": "• 已修改",
- "charsTotal": "... ({{count}}字符总数)",
- "charsTotal_one": ". (......{{count}}字符总计)",
- "charsTotal_other": "... ({{count}}字符总数)",
- "charsTotal_few": "... ({{count}}字符总数)",
- "charsTotal_many": "... ({{count}}字符总数)"
+ "show": "显示原始差异数据",
+ "file": "文件:{{file}}",
+ "original": "- - 原来的",
+ "modified": "+++ 修改",
+ "charsTotal": "…({{count}} 字符总数)",
+ "charsTotal_one": "…({{count}} 字符总数)",
+ "charsTotal_other": "…({{count}} 字符总数)",
+ "charsTotal_few": "…({{count}} 字符总数)",
+ "charsTotal_many": "…({{count}} 字符总数)"
}
},
"fileTree": {
"viewed": "已查看",
"badges": {
- "new": "新设",
- "deleted": "删除"
+ "new": "新的",
+ "deleted": "已删除"
},
"collapseFolder": "折叠 {{name}}",
- "expandFolder": "扩展 {{name}}",
+ "expandFolder": "展开 {{name}}",
"empty": {
- "noChangedFiles": "没有更改文件",
+ "noChangedFiles": "没有更改的文件",
"noMatchingFiles": "没有匹配的文件"
},
- "searchPlaceholder": "搜索文件...",
+ "searchPlaceholder": "搜索文件…",
"filters": {
"unresolved": "未解决",
"rejected": "被拒绝",
- "new": "新设",
+ "new": "新的",
"clear": "清除"
}
},
"diffControls": {
- "previousChunk": "上一块",
+ "previousChunk": "上一个块",
"nextChunk": "下一个块",
- "rejectChange": "拒绝更改 (QQN)",
- "acceptChange": "接受更改 (QQY)",
- "undo": "撤销",
- "keep": "保留",
- "rejectShortcut": "页:1",
- "acceptShortcut": "⌘"
+ "rejectChange": "拒绝更改 (⌘N)",
+ "acceptChange": "接受更改 (⌘Y)",
+ "undo": "撤消",
+ "keep": "保持",
+ "rejectShortcut": "⌘N",
+ "acceptShortcut": "⌘Y"
},
"conflict": {
- "title": "已发现冲突",
- "description": "此文件自代理更改后已被修改",
+ "title": "检测到冲突",
+ "description": "自代理更改后此文件已被修改",
"cancel": "取消",
"saveResolution": "保存分辨率",
"editManually": "手动编辑",
- "useOriginal": "使用原样",
- "keepCurrent": "保持当前"
+ "useOriginal": "使用原始版本",
+ "keepCurrent": "保留当前版本"
},
"fullDiffLoading": {
- "titleOne": "准备完整的 Diff",
- "titleMany": "准备 {{count}} 完整 Diffs",
- "subtitleForFile": "最终确定{{file}}的准确编辑器diff.",
- "subtitleCurrentFile": "最后确定当前文件的确切编辑器 diff 。",
- "subtitleMany": "解析当前装入的文件基线前后的精确度 。",
- "previewsReady": "{{count}}预览已准备好",
- "previewsReady_one": "{{count}} 预览准备",
+ "titleOne": "准备完整的差异",
+ "titleMany": "准备 {{count}} 完整差异",
+ "subtitleForFile": "最终确定 {{file}} 的确切编辑器差异。",
+ "subtitleCurrentFile": "完成当前文件的确切编辑器差异。",
+ "subtitleMany": "解析当前加载文件的准确之前/之后基线。",
+ "previewsReady": "{{count}} 预览就绪",
+ "previewsReady_one": "{{count}} 预览就绪",
"editorViewLoading": "编辑器视图加载",
- "filesInProgress": "{{count}}文件正在进行",
- "filesInProgress_one": "{{count}}文件正在进行",
- "filesReady": "{{ready}}页:1{{total}}文件准备",
- "progressDescription": "{{ready}}准备{{loading}}还在装货 预览 diff 保留在下方可见, 其余基线得到解决 。",
- "singleDescription": "预览 diff 保留在下面, 而准确的基线得到解决 。",
- "previewsReady_few": "{{count}}预览已准备好",
- "previewsReady_many": "{{count}}预览已准备好",
- "previewsReady_other": "{{count}}预览已准备好",
- "filesInProgress_few": "{{count}}文件正在进行",
- "filesInProgress_many": "{{count}}文件正在进行",
- "filesInProgress_other": "{{count}}文件正在进行"
+ "filesInProgress": "{{count}} 文件正在进行中",
+ "filesInProgress_one": "{{count}} 文件正在进行中",
+ "filesReady": "{{ready}}/{{total}} 文件准备就绪",
+ "progressDescription": "{{ready}} 已准备就绪,{{loading}} 仍在加载。当剩余的基线得到解决时,预览差异在下面保持可见。",
+ "singleDescription": "当准确的基线得到解决时,预览差异在下面保持可见。",
+ "previewsReady_few": "{{count}} 预览就绪",
+ "previewsReady_many": "{{count}} 预览就绪",
+ "previewsReady_other": "{{count}} 预览就绪",
+ "filesInProgress_few": "{{count}} 文件正在进行中",
+ "filesInProgress_many": "{{count}} 文件正在进行中",
+ "filesInProgress_other": "{{count}} 文件正在进行中"
},
- "fileMissingPrefix": "磁盘上缺少文件 。 此 diff 可能只是代理日志的预览 。 使用",
+ "fileMissingPrefix": "磁盘上文件丢失。此差异可能只是代理日志的预览。使用",
"restore": "恢复",
"fileMissingSuffix": "在磁盘上创建文件。",
"filePlaceholder": {
- "loading": "正在装入",
- "description": "为此文件准备一个完整的编辑器 diff 。"
+ "loading": "加载中",
+ "description": "为此文件准备完整的编辑器差异。"
},
"loading": {
- "diff": "DIFF 苏维埃社会主义共和国",
- "ledgerObjectsProcessed": "{{count}}处理的分类账对象",
- "ledgerObjectsProcessed_one": "处理的 {{count}} 分类账对象",
- "ledgerObjectsProcessed_other": "{{count}}处理的分类账对象",
- "ledgerObjectsProcessed_few": "{{count}}处理的分类账对象",
- "ledgerObjectsProcessed_many": "{{count}}处理的分类账对象",
+ "diff": "差分法",
+ "ledgerObjectsProcessed": "{{count}} 处理的账本对象",
+ "ledgerObjectsProcessed_one": "{{count}} 已处理的账本对象",
+ "ledgerObjectsProcessed_other": "{{count}} 处理的账本对象",
+ "ledgerObjectsProcessed_few": "{{count}} 处理的账本对象",
+ "ledgerObjectsProcessed_many": "{{count}} 处理的账本对象",
"phases": {
- "readingLedger": "正在读取任务分类账...",
- "resolvingFiles": "正在解析文件状态...",
- "checkingWorktree": "正在检查工作树的背景...",
- "preparingDiffs": "正在准备审查 diffs..."
+ "readingLedger": "读取任务分类帐…",
+ "resolvingFiles": "正在解析文件状态…",
+ "checkingWorktree": "正在检查工作树上下文…",
+ "preparingDiffs": "正在准备审核差异…"
}
},
"progress": {
- "viewed": "{{viewed}}页:1{{total}}浏览"
+ "viewed": "{{viewed}}/{{total}} 已查看"
},
"scope": {
- "readMore": "更多信息",
+ "readMore": "阅读更多",
"tiers": {
"exact": {
- "title": "准确确定任务范围",
- "detail": "在会话日志中找到的开始和完成标记。 diff只包含在这一具体任务中做出的修改——其他修改相同文件的任务被排除在外."
+ "title": "任务范围精确确定",
+ "detail": "在会话日志中找到开始和完成 Token。差异仅包括在此特定任务持续时间所做的更改 - 排除修改相同文件的其他任务。"
},
"endEstimated": {
- "title": "终点估计",
- "detail": "只有起始标记被找到 - 任务还没有完成标记 。 从任务开始到会话结束的更改 。 如果在同一会话中此任务之后还有其它任务,则其更改也可能包括在内."
+ "title": "估计结束边界",
+ "detail": "仅找到开始 Token - 任务尚无完成 Token。显示从任务开始到会话结束的变化。如果同一会话中此任务之后运行了其他任务,则也可能包括它们的更改。"
},
"startEstimated": {
- "title": "开始边界估计",
- "detail": "只有完成标记被找到——没有捕获工程的开始. 如果在同一会话中其他任务运行于此任务之前, 也可以包含对相同文件的更改 。"
+ "title": "估计的起始边界",
+ "detail": "仅找到完成 Token - 未捕获工作开始。如果同一会话中在此任务之前运行了其他任务,则也可能包括它们对相同文件的更改。"
},
"allSession": {
- "title": "显示全部会话更改",
- "detail": "在会话日志中找不到任务标记 。 无法孤立此任务 - 从整个会话中显示所有文件更改, 包括从其他任务中更改 。 这可以在较旧的CLI版本或非标准工作流程中发生."
+ "title": "显示所有会话更改",
+ "detail": "在会话日志中找不到任务 Token。无法隔离此任务 - 显示整个会话中的所有文件更改,包括其他任务的更改。较早消息的 CLI 版本或非标准工作流程可能会发生这种情况。"
}
},
"ledger": {
"exact": {
- "title": "任务分类账记录的变化",
- "detail": "管弦乐手在代理执行此任务时捕获了这些文件的更改.",
- "badge": "编辑器精确"
+ "title": "任务分类帐捕获的更改",
+ "detail": "当代理执行此任务时,编排器捕获了这些文件更改。",
+ "badge": "账本精确"
},
"limited": {
- "title": "可审查性有限的变动",
- "detail": "管弦乐手为这个任务捕捉了这些文件的更改,但至少从一个快照或只使用元数据的来源捕捉到一个更改. 如果有的话,请审查准确的文本diff;二进制或不可用的内容可能需要人工审查。",
- "mixedBadge": "混合可审查性",
- "needsReviewBadge": "需求审查"
+ "title": "捕获的变更具有有限的可审核性",
+ "detail": "编排器捕获了此任务的这些文件更改,但至少有一个更改是从快照或仅元数据源捕获的。查看确切的文本差异(如果有);二进制或不可用的内容可能需要手动审核。",
+ "mixedBadge": "混合审核性",
+ "needsReviewBadge": "需要审核"
}
},
"workInterval": {
- "title": "按持续的工作间隔划分",
- "detail": "任务启动标记在会话日志中没有,因此diff被存储在棋盘上的任务工作间隔所标定.",
- "badge": "间隔范围d"
+ "title": "按持续工作间隔确定范围",
+ "detail": "任务开始 Token 在会话日志中不可用,因此差异的范围由板上存储的任务工作间隔决定。",
+ "badge": "区间范围"
},
"confidence": {
- "high": "高度信心",
- "medium": "中度信任度",
- "low": "信心不足",
- "bestEffort": "尽最大的努力"
+ "high": "高置信度",
+ "medium": "中等置信度",
+ "low": "信心度低",
+ "bestEffort": "尽最大努力"
}
},
"shortcuts": {
"title": "键盘快捷键",
"actions": {
- "nextChange": "下一次更改",
- "previousChange": "以前的变化",
+ "nextChange": "下一步更改",
+ "previousChange": "之前的变更",
"nextFile": "下一个文件",
"previousFile": "上一个文件",
- "acceptChange": "接受更改",
- "rejectChange": "拒绝更改",
+ "acceptChange": "接受变更",
+ "rejectChange": "拒绝改变",
"saveFile": "保存文件",
- "undo": "撤销",
- "redo": "重装",
+ "undo": "撤消",
+ "redo": "重做",
"toggleShortcuts": "切换快捷键",
"closeDialog": "关闭对话框"
}
},
"timeline": {
- "empty": "没有编辑事件",
- "titleWithCount": "编辑时间线( {{count}})"
+ "empty": "无编辑事件",
+ "titleWithCount": "编辑时间线 ({{count}})"
},
"continuousScroll": {
- "empty": "无可审查文件更改"
+ "empty": "没有可审核的文件更改"
},
"empty": {
- "noSafeDiff": "没有安全的 diff 可用",
+ "noSafeDiff": "没有可用的安全差异",
"noFileChangesRecorded": "没有记录文件更改",
- "noSafeDiffDescription": "任务分类账没有披露此任务的安全文件 。",
- "noSafeDiffDiagnosticsDescription": "任务分类账没有披露此任务的安全文件 。 下文的诊断解释了原因。",
- "noFileEventsYet": "任务分类账尚未有此任务的文件事件 。",
- "noFileEvents": "任务分类账对此任务没有文件事件."
+ "noSafeDiffDescription": "任务分类帐未公开此任务的安全文件差异。",
+ "noSafeDiffDiagnosticsDescription": "任务分类帐未公开此任务的安全文件差异。下面的诊断解释了原因。",
+ "noFileEventsYet": "任务分类帐尚无此任务的文件事件。",
+ "noFileEvents": "任务分类帐没有该任务的文件事件。"
}
},
"messages": {
"actions": {
- "bottomSheetActions": "信件底页动作",
- "collapseAll": "折叠所有信件",
- "collapseSheet": "折叠工作表",
- "expandAll": "展开所有信件",
- "expandSheet": "扩展工作表",
- "floatComposer": "浮点编曲",
- "floatMessagesComposer": "Float 信件编曲",
+ "bottomSheetActions": "消息底部工作表操作",
+ "collapseAll": "折叠所有消息",
+ "collapseSheet": "折叠表",
+ "expandAll": "展开所有消息",
+ "expandSheet": "展开表",
+ "floatComposer": "浮动作曲家",
+ "floatMessagesComposer": "浮动消息编辑器",
"hideSearch": "隐藏搜索",
- "loadOlder": "装入旧信件",
- "markAllRead": "全部标为已读",
- "messageActions": "消息动作",
- "moveMessagesToBottomSheet": "将信件移至底盘",
- "moveMessagesToSidebar": "将信件移动到侧边栏",
- "moveToBottomSheet": "移动到底部工作表",
- "moveToInline": "移动到内线",
- "moveToSidebar": "移动到侧边栏",
- "panelActions": "信件面板动作",
- "searchMessages": "搜索信件"
+ "loadOlder": "加载旧消息",
+ "markAllRead": "全部 Token 为已读",
+ "messageActions": "消息操作",
+ "moveMessagesToBottomSheet": "将消息移至底部工作表",
+ "moveMessagesToSidebar": "将消息移至侧边栏",
+ "moveToBottomSheet": "移至底部工作表",
+ "moveToInline": "移至内联",
+ "moveToSidebar": "移至侧边栏",
+ "panelActions": "消息面板操作",
+ "searchMessages": "搜索消息"
},
"delivery": {
- "copied": "复制",
- "copyDebugDetails": "复制调试细节",
+ "copied": "已复制",
+ "copyDebugDetails": "复制调试详细信息",
"details": "细节",
"fields": {
- "acceptanceUnknown": "未知的接受",
- "delivered": "已交付",
+ "acceptanceUnknown": "接受未知",
+ "delivered": "发表",
"diagnostics": "诊断",
- "ledgerStatus": "分类账现状",
- "messageId": "信件编号",
- "providerId": "提供者",
- "queuedBehindMessageId": "队列已排入 MessageId",
- "reason": "理由",
- "responsePending": "响应",
+ "ledgerStatus": "账本状态",
+ "messageId": "消息 ID",
+ "providerId": "提供商 ID",
+ "queuedBehindMessageId": "队列后面消息 ID",
+ "reason": "原因",
+ "responsePending": "响应待处理",
"responseState": "响应状态",
- "statusMessageId": "状态信息",
- "userVisibleMessage": "用户可视度",
- "userVisibleNextReviewAt": "用户VisibleNextReviewAt",
- "userVisibleReasonCode": "用户可视Reason代码",
- "userVisibleState": "用户可视状态",
- "visibleReplyCorrelation": "可见校正",
- "visibleReplyMessageId": "可见回转MessageId"
+ "statusMessageId": "状态消息 ID",
+ "userVisibleMessage": "用户可见消息",
+ "userVisibleNextReviewAt": "userVisibleNextReviewAt",
+ "userVisibleReasonCode": "用户可见原因代码",
+ "userVisibleState": "用户可见状态",
+ "visibleReplyCorrelation": "可见回复相关性",
+ "visibleReplyMessageId": "可见回复消息 ID"
}
},
- "panelMode": "信件面板模式",
- "title": "信件",
+ "panelMode": "消息面板模式",
+ "title": "消息",
"unread": {
- "new": "{{count}}新设",
- "unread": "{{count}}未读",
- "new_few": "{{count}}新设",
- "new_many": "{{count}}新设",
- "new_one": "{{count}}新设",
- "new_other": "{{count}}新设",
- "unread_few": "{{count}}未读",
- "unread_many": "{{count}}未读",
- "unread_one": "{{count}}未读",
- "unread_other": "{{count}}未读"
+ "new": "{{count}} 新",
+ "unread": "{{count}} 未读",
+ "new_few": "{{count}} 新",
+ "new_many": "{{count}} 新",
+ "new_one": "{{count}} 新",
+ "new_other": "{{count}} 新",
+ "unread_few": "{{count}} 未读",
+ "unread_many": "{{count}} 未读",
+ "unread_one": "{{count}} 未读",
+ "unread_other": "{{count}} 未读"
},
"filter": {
"ariaLabel": "过滤消息",
"tooltip": "过滤消息",
"from": "从",
- "to": "改为",
+ "to": "到",
"noData": "无数据",
- "showStatusUpdates": "显示状态更新( idle/ shutdown)",
+ "showStatusUpdates": "显示状态更新(空闲/关闭)",
"actions": {
- "reset": "重设",
+ "reset": "重置",
"save": "保存"
}
},
"status": {
- "title": "状态"
+ "title": "地位"
},
"actionMode": {
- "label": "行动模式"
+ "label": "动作模式"
},
"search": {
- "placeholder": "搜索..."
+ "placeholder": "搜索…"
}
},
"modelSelector": {
@@ -738,362 +738,362 @@
"connected": "已连接",
"failed": "失败",
"free": "免费",
- "local": "当地",
- "needsTest": "需求测试",
+ "local": "本地",
+ "needsTest": "需要测试",
"verified": "已验证",
- "unavailable": "无法获取",
+ "unavailable": "不可用",
"issue": "问题"
},
- "customModelId": "自定义模式 ID",
- "label": "型号( 可选)",
- "multimodelRequired": "Codex和双子座需要多模型模式.",
+ "customModelId": "自定义模型 ID",
+ "label": "模型(可选)",
+ "multimodelRequired": "Codex 和 Gemini 需要多模型模式。",
"openCode": {
- "allSources": "所有 OpenCode 来源",
- "filterSource": "过滤 {{source}}",
+ "allSources": "所有 OpenCode 源",
+ "filterSource": "过滤器 {{source}}",
"filterSources": "过滤 OpenCode 源",
- "freeOnly": "仅自由",
- "freeTooltip": "OpenCode标记此模式为免费.",
- "loadingModels": "正在装入 OpenCode 模型...",
- "noSourcesFound": "没有找到消息源 。",
- "recommendedOnly": "仅建议",
+ "freeOnly": "仅免费",
+ "freeTooltip": "OpenCode 将此模型 Token 为免费。",
+ "loadingModels": "正在加载 OpenCode 模型…",
+ "noSourcesFound": "未找到来源。",
+ "recommendedOnly": "仅推荐",
"searchSources": "搜索来源",
- "sourcesCount": "{{count}} 苏维埃社会主义共和国 打开代码源",
- "sourcesCount_few": "{{count}} 苏维埃社会主义共和国 打开代码源",
- "sourcesCount_many": "{{count}} 苏维埃社会主义共和国 打开代码源",
- "sourcesCount_one": "{{count}} 苏维埃社会主义共和国 打开代码源",
- "sourcesCount_other": "{{count}} 苏维埃社会主义共和国 打开代码源"
+ "sourcesCount": "{{count}} OpenCode 源代码",
+ "sourcesCount_few": "{{count}} OpenCode 源代码",
+ "sourcesCount_many": "{{count}} OpenCode 源代码",
+ "sourcesCount_one": "{{count}} OpenCode 源代码",
+ "sourcesCount_other": "{{count}} OpenCode 源代码"
},
- "reason": "理由:{{reason}}",
- "runtimeModelsSyncing": "从当前运行时间中明确模式加载. 列表同步时默认值仍然可用 。",
+ "reason": "原因:{{reason}}",
+ "runtimeModelsSyncing": "从当前运行时加载显式模型。同步列表时,默认值仍然可用。",
"fastMode": {
- "codexLabel": "快模式(2x 信用)",
- "optionalLabel": "快模式( 可选)",
- "defaultOff": "默认( 关闭)",
- "fast": "快点",
- "off": "关",
- "defaultFast": "默认( 快速)",
- "defaultResolvesTo": "默认当前解决为 {{mode}}.",
- "runtimeBackedHint": "Fast模式是运行时备份的,只有在解析的Anthropic发射模式支持时才会解锁."
+ "codexLabel": "快速模式(2x 学分)",
+ "optionalLabel": "快速模式(可选)",
+ "defaultOff": "默认(关闭)",
+ "fast": "快速地",
+ "off": "关闭",
+ "defaultFast": "默认(快速)",
+ "defaultResolvesTo": "当前默认解析为 {{mode}}。",
+ "runtimeBackedHint": "快速模式是运行时支持的,并且只有在解析的 Anthropic 启动模型支持它时才会解锁。"
},
"anthropicExtraUsage": {
- "pricingDocs": "读取 Athropic 定价文件"
+ "pricingDocs": "阅读人择定价文档"
},
- "searchModels": "搜索模式",
+ "searchModels": "搜索模型",
"defaultModel": "默认",
"empty": {
- "noSearchMatches": "没有匹配此搜索的模型 。",
- "recommendedFreeOpenCode": "当前运行时间列表中没有推荐的免费OpenCode模型.",
- "freeOpenCode": "当前运行时间列表中没有免费的OpenCode模型.",
- "recommendedOpenCode": "当前运行时间列表中没有推荐的 OpenCode 模型 。",
- "noModels": "当前运行时间列表中没有可用的模型 。"
+ "noSearchMatches": "没有与此搜索匹配的模型。",
+ "recommendedFreeOpenCode": "当前运行时列表中没有推荐的免费 OpenCode 模型。",
+ "freeOpenCode": "当前运行时列表中没有可用的免费 OpenCode 模型。",
+ "recommendedOpenCode": "当前运行时列表中没有推荐的 OpenCode 模型。",
+ "noModels": "当前运行时列表中没有可用的模型。"
},
"openCodeStatus": {
"notReadyTitle": "OpenCode 尚未准备好团队启动",
- "freeModelsAvailableTitle": "OpenCode 免费模式",
- "providerNotConnectedTitle": "OpenCode 提供者没有连接",
- "readyTitle": "打开代码",
- "readyMessage": "OpenCode通过提供者准备 。 为这个团队选择使用 OpenCode 模型 。",
- "useOpenCode": "使用 OpenCode 代码",
+ "freeModelsAvailableTitle": "提供 OpenCode 免费模型",
+ "providerNotConnectedTitle": "OpenCode 提供商未连接",
+ "readyTitle": "OpenCode 已准备就绪",
+ "readyMessage": "OpenCode 通过提供商准备工作。选择它以为此团队使用 OpenCode 模型。",
+ "useOpenCode": "使用 OpenCode",
"badges": {
- "check": "检查",
+ "check": "查看",
"install": "安装",
"free": "免费",
"setup": "设置"
},
"summary": {
- "checking": "OpenCode 状态: 检查运行时间",
- "status": "OpenCode 状态: {{parts}}"
+ "checking": "OpenCode 状态:检查运行时",
+ "status": "OpenCode 状态:{{parts}}"
},
"summaryParts": {
"teamLaunchBlocked": "团队启动受阻",
- "providerOptional": "提供者连接可选",
- "providerModelsNeedSetup": "需要设置供应商支持的模型",
- "teamLaunchReady": "准备发射",
- "runtimeDetected": "检测到运行时间",
- "runtimeMissing": "缺少运行时间",
- "freeWithoutAuth": "无认证可自由使用的模式",
- "providerConnected": "连接提供者",
- "providerNotConnected": "未连接提供者"
+ "providerOptional": "提供商连接可选",
+ "providerModelsNeedSetup": "提供商支持的模型需要设置",
+ "teamLaunchReady": "团队启动准备就绪",
+ "runtimeDetected": "检测到运行时",
+ "runtimeMissing": "运行时缺失",
+ "freeWithoutAuth": "无需授权即可使用免费模型",
+ "providerConnected": "提供商已连接",
+ "providerNotConnected": "提供商未连接"
},
"messages": {
- "checking": "应用程序仍在检查 OpenCode 运行时间 。 等待提供者状态完成, 然后再次尝试 。",
- "unsupported": "OpenCode 不安装, 找不到, 也不支持检测到的运行时间 。 安装或更新 OpenCode, 然后刷新提供者状态 。 也可以使用主页上的安装按钮.",
- "freeAvailable": "检测到 OpenCode 。 您可以使用免费的OpenCode模型,如大泡菜,而不连接一个提供者. 仅在您需要供应商支持的模型时连接提供者 。",
- "noFreeListed": "OpenCode被检测,但尚未列出免费的OpenCode模型. 刷新提供者状态, 或在 OpenCode 为提供者支持的模型连接一个提供者 。",
- "launchBlocked": "OpenCode已安装并认证,但代理团队发射准备受阻.",
- "ready": "OpenCode已准备好进行团队启动."
+ "checking": "该应用仍在检查 OpenCode 运行时。等待提供商状态完成,然后重试。",
+ "unsupported": "OpenCode 未安装、未找到或检测到的运行时不受支持。安装或更新 OpenCode,然后刷新提供商状态。您还可以使用主页上的“安装”按钮。",
+ "freeAvailable": "检测到 OpenCode。您可以使用免费的 OpenCode 模型,例如 Big Pickle,而无需连接提供商。仅当您需要提供商支持的模型时才连接提供商。",
+ "noFreeListed": "已检测到 OpenCode,但尚未列出免费的 OpenCode 模型。刷新提供商状态,或在 OpenCode 中连接提供商以获取提供商支持的模型。",
+ "launchBlocked": "OpenCode 已安装并经过认证,但 Agent Teams 启动准备工作被阻止。",
+ "ready": "OpenCode 已准备好供团队启动。"
},
- "loadingRuntime": "OpenCode 运行时状态仍在装入中 。"
+ "loadingRuntime": "OpenCode 运行时状态仍在加载中。"
},
"advisory": {
- "pingNotConfirmed": "小平没有确认",
- "note": "说明"
+ "pingNotConfirmed": "Ping 未确认",
+ "note": "备注"
},
"placeholders": {
- "customModelId": "开源软件国际化之简体中文组"
+ "customModelId": "openai/gpt-oss-20b"
},
"routeGroups": {
- "openCodeConfig": "打开代码配置",
+ "openCodeConfig": "OpenCode 配置",
"builtinFree": "免费内置",
- "connectedProviders": "连接提供者",
+ "connectedProviders": "互联提供商",
"otherCatalog": "其他 OpenCode 目录"
},
"pricing": {
"free": "免费",
- "inputShort": "以 {{rate}} 计算",
- "outputShort": "在{{rate}}区外",
- "perMillionSummary": "{{summary}}/ 1海里",
- "inputTitle": "输入: {{rate}} 每1M个符号",
- "outputTitle": "输出: {{rate}} 每1M个令牌",
- "cacheReadTitle": "缓存读取: {{rate}} 每1M个令牌",
- "cacheWriteTitle": "缓存写法: {{rate}} 每1M个令牌"
+ "inputShort": "在 {{rate}}",
+ "outputShort": "输出 {{rate}}",
+ "perMillionSummary": "{{summary}}/1M",
+ "inputTitle": "输入:每 1M Token {{rate}}",
+ "outputTitle": "输出:每 100 万个 Token {{rate}}",
+ "cacheReadTitle": "缓存读取:每 1M Token {{rate}}",
+ "cacheWriteTitle": "缓存写入:每 1M Token {{rate}}"
},
"defaultTooltip": {
- "anthropicCompatibleWithResolved": "使用与Anthropic兼容的终点默认模式.\n目前解决{{model}}.",
- "anthropicCompatible": "使用与Anthropic兼容的终点默认模式.",
- "anthropic": "使用克劳德团队默认模式.\n决定使用1M上下文的{{longContextModel}},或者在启用限制上下文时使用200K上下文的{{limitedContextModel}}.",
- "openCodeWithResolved": "使用 OpenCode 默认模式 。\n目前解决{{model}}.",
- "openCode": "使用 OpenCode 运行时默认模式 。",
- "runtime": "为选定的提供者使用运行时间默认值 。"
+ "anthropicCompatibleWithResolved": "使用与 Anthropic 兼容的端点默认模型。 目前解析为 {{model}}。",
+ "anthropicCompatible": "使用与 Anthropic 兼容的端点默认模型。",
+ "anthropic": "使用 Claude 团队默认模型。 当启用限制上下文时,解析为具有 1M 上下文的 {{longContextModel}} 或具有 200K 上下文的 {{limitedContextModel}}。",
+ "openCodeWithResolved": "使用 OpenCode 默认模型。 目前解析为 {{model}}。",
+ "openCode": "使用 OpenCode 运行时默认模型。",
+ "runtime": "使用所选提供商的运行时默认值。"
},
- "multimodelOff": "多模式关闭",
- "unavailableInRuntime": "当前运行时间不可用"
+ "multimodelOff": "多模型关闭",
+ "unavailableInRuntime": "当前运行时不可用"
},
"taskDetail": {
"actions": {
"cancel": "取消",
"delete": "删除",
- "markResolved": "标记已解决",
+ "markResolved": "标记为已解决",
"save": "保存"
},
"attachments": {
- "commentAttachment": "注释附件",
- "fromComments": "从评论",
- "preview": "预览{{filename}}"
+ "commentAttachment": "评论附件",
+ "fromComments": "来自评论",
+ "preview": "预览 {{filename}}"
},
"changes": {
"badges": {
- "attention": "请注意",
- "noSafeDiff": "没有安全 diff"
+ "attention": "注意力",
+ "noSafeDiff": "没有安全差异"
},
"empty": {
"noFileChangesRecorded": "没有记录文件更改",
"noFileChangesRecordedYet": "尚未记录文件更改",
- "noReviewableChangesRecovered": "未找到可审查文件更改",
- "noSafeDiffAvailable": "没有安全的 diff 可用"
+ "noReviewableChangesRecovered": "未恢复可审核的文件更改",
+ "noSafeDiffAvailable": "没有可用的安全差异"
},
- "loadFailed": "装入任务更改摘要失败",
- "loading": "正在装入更改...",
- "fileCount": "{{count}}文件",
+ "loadFailed": "无法加载任务更改摘要",
+ "loading": "正在加载更改…",
+ "fileCount": "{{count}} 文件",
"fileRowsHidden": "{{count}} 文件行隐藏",
- "moreDiagnostics": "{{count}}更多的诊断",
+ "moreDiagnostics": "{{count}} 更多诊断",
"moreFiles": "{{count}} 更多文件",
"openInEditor": "在编辑器中打开",
"openTask": "打开任务 {{subject}}",
"refresh": "刷新更改",
- "refreshFailed": "刷新失败: {{error}}",
- "refreshing": "刷新中",
- "refreshingChanges": "正在刷新更改...",
- "refreshTeamChanges": "刷新团队更改",
+ "refreshFailed": "刷新失败:{{error}}",
+ "refreshing": "清爽",
+ "refreshingChanges": "令人耳目一新的变化…",
+ "refreshTeamChanges": "刷新团队变更",
"refreshShort": "刷新",
- "reviewDiff": "复核 diff",
- "reviewTaskDiff": "审查任务 diff",
- "scannedCandidateTasks": "扫描{{requested}}页:1{{eligible}}候选任务",
- "tasksDeferred": "{{count}} 任务推迟此通过",
- "title": "变动",
- "fileCount_few": "{{count}}文件",
- "fileCount_many": "{{count}}文件",
- "fileCount_one": "{{count}}文件",
- "fileCount_other": "{{count}}文件",
+ "reviewDiff": "查看差异",
+ "reviewTaskDiff": "检查任务差异",
+ "scannedCandidateTasks": "已扫描 {{requested}} / {{eligible}} 个候选任务",
+ "tasksDeferred": "{{count}} 任务推迟了本次传递",
+ "title": "变化",
+ "fileCount_few": "{{count}} 文件",
+ "fileCount_many": "{{count}} 文件",
+ "fileCount_one": "{{count}} 文件",
+ "fileCount_other": "{{count}} 文件",
"fileRowsHidden_few": "{{count}} 文件行隐藏",
"fileRowsHidden_many": "{{count}} 文件行隐藏",
"fileRowsHidden_one": "{{count}} 文件行隐藏",
"fileRowsHidden_other": "{{count}} 文件行隐藏",
- "moreDiagnostics_few": "{{count}}更多的诊断",
- "moreDiagnostics_many": "{{count}}更多的诊断",
- "moreDiagnostics_one": "{{count}}更多的诊断",
- "moreDiagnostics_other": "{{count}}更多的诊断",
+ "moreDiagnostics_few": "{{count}} 更多诊断",
+ "moreDiagnostics_many": "{{count}} 更多诊断",
+ "moreDiagnostics_one": "{{count}} 更多诊断",
+ "moreDiagnostics_other": "{{count}} 更多诊断",
"moreFiles_few": "{{count}} 更多文件",
"moreFiles_many": "{{count}} 更多文件",
"moreFiles_one": "{{count}} 更多文件",
"moreFiles_other": "{{count}} 更多文件",
- "tasksDeferred_few": "{{count}} 任务推迟此通过",
- "tasksDeferred_many": "{{count}} 任务推迟此通过",
- "tasksDeferred_one": "{{count}} 任务推迟此通过",
- "tasksDeferred_other": "{{count}} 任务推迟此通过"
+ "tasksDeferred_few": "{{count}} 任务推迟了本次传递",
+ "tasksDeferred_many": "{{count}} 任务推迟了本次传递",
+ "tasksDeferred_one": "{{count}} 任务推迟了本次传递",
+ "tasksDeferred_other": "{{count}} 任务推迟了本次传递"
},
"clarification": {
- "awaitingLead": "等待组长作出澄清",
- "awaitingUser": "等待你们澄清"
+ "awaitingLead": "等待团队负责人的澄清",
+ "awaitingUser": "等待您的澄清"
},
"description": {
- "add": "点击可添加描述...",
+ "add": "点击添加描述…",
"edit": "编辑描述",
- "placeholder": "任务描述( 支持减少标记)"
+ "placeholder": "任务描述(支持 markdown)"
},
"loading": {
"fetchingTeamData": "获取团队数据",
- "title": "正在装入任务..."
+ "title": "正在加载任务…"
},
"logs": {
- "newArriving": "到达新任务日志"
+ "newArriving": "新任务日志到达"
},
"notFound": "未找到任务",
"related": {
- "blockedBy": "被封锁",
- "blocks": "块",
- "linkedFrom": "链接于",
+ "blockedBy": "被阻止",
+ "blocks": "积木",
+ "linkedFrom": "链接自",
"links": "链接",
"title": "相关任务"
},
"review": {
- "reviewer": "审查者:{{reviewer}}"
+ "reviewer": "审稿人:{{reviewer}}"
},
"sections": {
- "attachments": "附录",
- "changes": "变动",
+ "attachments": "附件",
+ "changes": "变化",
"comments": "评论",
- "description": "说明",
+ "description": "描述",
"taskLogs": "任务日志",
- "workflowHistory": "工作流程历史"
+ "workflowHistory": "工作流程历史记录"
},
- "unassigned": "未指定",
+ "unassigned": "未分配",
"workflow": {
- "implementationTimeTitle": "持续工作间隔的执行时间",
- "inProgressTime": "进展时间 {{duration}}"
+ "implementationTimeTitle": "持续工作间隔的实施时间",
+ "inProgressTime": "进行中时间 {{duration}}"
},
"comments": {
- "renderLimit": "显示最新的 {{formattedCount}} 评论,以保持UI响应.",
+ "renderLimit": "显示最新的 {{formattedCount}} 评论以保持 UI 响应。",
"badges": {
- "approved": "核定数",
- "reviewRequested": "要求的审查"
+ "approved": "已批准",
+ "reviewRequested": "已请求审核"
},
"unknownTime": "未知时间",
"actions": {
- "reply": "答复",
- "replyToComment": "对评论的答复",
- "showMore": "显示更多评论意见( {{visible}}/ {{total}})",
+ "reply": "回复",
+ "replyToComment": "回复评论",
+ "showMore": "显示更多评论 ({{visible}}/{{total}})",
"cancelReply": "取消回复",
- "comment": "注释"
+ "comment": "评论"
},
"attachments": {
"previewAlt": "附件预览",
"downloadFailed": "下载失败"
},
- "replyingTo": "答复",
+ "replyingTo": "正在回复",
"input": {
- "placeholder": "添加注释... (输入要发送)",
- "charsLeft": "{{count}}左边的字符",
- "charsLeft_one": "{{count}}字符左边",
- "charsLeft_other": "{{count}}左边的字符",
- "charsLeft_few": "{{count}}左边的字符",
- "charsLeft_many": "{{count}}左边的字符"
+ "placeholder": "添加评论…(输入发送)",
+ "charsLeft": "{{count}} 剩余字符数",
+ "charsLeft_one": "{{count}} 左字符",
+ "charsLeft_other": "{{count}} 剩余字符数",
+ "charsLeft_few": "{{count}} 剩余字符数",
+ "charsLeft_many": "{{count}} 剩余字符数"
}
},
"workflowTimeline": {
- "empty": "没有记录工作流程历史",
- "currentImplementationInterval": "当前执行间隔",
- "implementationIntervalEnded": "执行间隔在此过渡时结束",
- "runningPrefix": "运行",
- "createdAs": "创建于",
- "by": "由",
- "reassigned": "调任",
- "assignedTo": "被指派",
- "unassignedFrom": "未指派自",
- "ownerChanged": "所有者已更改",
- "reviewRequested": "要求的审查",
- "reviewStarted": "开始审查",
- "changesRequested": "要求的更改",
- "approved": "核定数",
+ "empty": "没有记录工作流程历史记录",
+ "currentImplementationInterval": "当前实施间隔",
+ "implementationIntervalEnded": "实施间隔在此过渡时结束",
+ "runningPrefix": "正在运行",
+ "createdAs": "创建为",
+ "by": "经过",
+ "reassigned": "重新分配",
+ "assignedTo": "分配给",
+ "unassignedFrom": "未分配自",
+ "ownerChanged": "所有者已变更",
+ "reviewRequested": "已请求审核",
+ "reviewStarted": "审核开始",
+ "changesRequested": "要求更改",
+ "approved": "已批准",
"unknownEvent": "未知事件"
},
"reviewStates": {
- "approved": "核定数",
- "needsFix": "需要修正",
- "inReview": "正在审查"
+ "approved": "已批准",
+ "needsFix": "需要修复",
+ "inReview": "审核中"
}
},
"tasks": {
"createTask": {
- "assignee": "受指派者",
- "assigneeOptional": "指定对象( 可选)",
- "blockedByOptional": "被任务阻挡( 可选)",
- "blockedBySummary": "任务将被 {{tasks}} 屏蔽",
+ "assignee": "受让人",
+ "assigneeOptional": "受让人(可选)",
+ "blockedByOptional": "被任务阻止(可选)",
+ "blockedBySummary": "任务将被阻止:{{tasks}}",
"cancel": "取消",
"create": "创建",
- "creating": "正在创建...",
- "description": "任务将在团队的任务/目录中创建,并出现在坎班板上.",
- "descriptionOptional": "描述( 可选)",
- "detailsPlaceholder": "任务细节( 支持降级)",
+ "creating": "正在创建…",
+ "description": "该任务将在团队的 tasks/目录中创建并显示在看板上。",
+ "descriptionOptional": "说明(可选)",
+ "detailsPlaceholder": "任务详情(支持 markdown)",
"hideOptionalFields": "隐藏可选字段",
"offlineNotice": {
- "after": "- 启动执行小组",
- "before": "队伍离线了 任务将添加到"
+ "after": "- 启动团队开始执行。",
+ "before": "团队离线。该任务将被添加到"
},
- "promptOptional": "对受让人的提示(可选)",
- "promptPlaceholder": "团队成员自定义指令...",
- "relatedOptional": "相关任务(可选)",
- "relatedSummary": "相关:{{tasks}}",
+ "promptOptional": "提示词受让人(可选)",
+ "promptPlaceholder": "为团队成员定制说明…",
+ "relatedOptional": "相关任务(可选)",
+ "relatedSummary": "相关:{{tasks}}",
"saved": "已保存",
- "searchTasks": "搜索任务...",
+ "searchTasks": "搜索任务…",
"selectMember": "选择成员",
- "selectMemberOptional": "选择成员...",
+ "selectMemberOptional": "选择成员…",
"showOptionalFields": "显示可选字段",
- "startImmediately": "马上开始",
- "startOfflineHint": "队伍离线了 启动小组 立即启动任务",
- "subject": "议题",
- "subjectPlaceholder": "需要做些什么?",
+ "startImmediately": "立即开始",
+ "startOfflineHint": "团队离线。首先启动团队以立即开始任务。",
+ "subject": "主题",
+ "subjectPlaceholder": "需要做什么?",
"title": "创建任务",
- "todo": "TODO 苏维埃社会主义共和国"
+ "todo": "待办事项"
},
"list": {
"columns": {
- "blockedBy": "被封锁",
- "blocks": "块",
- "id": "身份证",
- "owner": "拥有者",
- "status": "状态",
- "subject": "议题"
+ "blockedBy": "被阻止",
+ "blocks": "积木",
+ "id": "ID",
+ "owner": "所有者",
+ "status": "地位",
+ "subject": "主题"
},
- "empty": "本团队没有任务",
+ "empty": "该团队没有任务",
"filters": {
- "allOwners": "所有拥有者",
+ "allOwners": "所有业主",
"allStatuses": "所有状态",
"ownerAria": "按所有者过滤任务",
"statusAria": "按状态过滤任务"
},
- "showing": "显示{{shown}}页:1{{total}}"
+ "showing": "显示 {{shown}} 或 {{total}}"
},
"status": {
- "completed": "已完成",
- "deleted": "删除",
- "inProgress": "进度( P)",
- "pending": "待处理"
+ "completed": "完全的",
+ "deleted": "已删除",
+ "inProgress": "进行中",
+ "pending": "待办的"
},
"statusSummary": {
- "progressAria": "任务完成 {{completed}}/{{total}}",
- "inProgress": "{{count}}进度( P)",
- "inProgress_one": "{{count}}进度( P)",
- "inProgress_other": "{{count}}进度( P)",
- "inProgress_few": "{{count}}进度( P)",
- "inProgress_many": "{{count}}进度( P)",
- "pending": "{{count}}待处理",
- "pending_one": "{{count}}待处理",
- "pending_other": "{{count}}待处理",
- "pending_few": "{{count}}待处理",
- "pending_many": "{{count}}待处理",
- "completed": "{{count}}已完成",
- "completed_one": "{{count}}已完成",
- "completed_other": "{{count}}已完成",
- "completed_few": "{{count}}已完成",
- "completed_many": "{{count}}已完成"
+ "progressAria": "任务 {{completed}}/{{total}} 已完成",
+ "inProgress": "{{count}} 进行中",
+ "inProgress_one": "{{count}} 进行中",
+ "inProgress_other": "{{count}} 进行中",
+ "inProgress_few": "{{count}} 进行中",
+ "inProgress_many": "{{count}} 进行中",
+ "pending": "{{count}} 待定",
+ "pending_one": "{{count}} 待定",
+ "pending_other": "{{count}} 待定",
+ "pending_few": "{{count}} 待定",
+ "pending_many": "{{count}} 待定",
+ "completed": "{{count}} 已完成",
+ "completed_one": "{{count}} 已完成",
+ "completed_other": "{{count}} 已完成",
+ "completed_few": "{{count}} 已完成",
+ "completed_many": "{{count}} 已完成"
},
- "unassigned": "未指定",
- "teamPrefix": "团队:",
- "openTask": "打开任务",
+ "unassigned": "未分配",
+ "teamPrefix": "团队:",
+ "openTask": "开放任务",
"deleteConfirm": {
"title": "删除任务",
- "message": "将任务 #{{taskId}} 移动到垃圾堆中吗?",
+ "message": "将任务 #{{taskId}} 移至垃圾箱?",
"confirmLabel": "删除",
"cancelLabel": "取消"
}
@@ -1102,130 +1102,130 @@
"actions": {
"cancel": "取消",
"closeEditor": "关闭编辑器",
- "closeTab": "关闭标签",
- "closeTooltip": "关闭编辑器( Esc)",
+ "closeTab": "关闭选项卡",
+ "closeTooltip": "关闭编辑器 (Esc)",
"discard": "丢弃",
- "discardAndClose": "丢弃关闭( C)",
- "keep": "保留",
- "keepMine": "留着我的",
+ "discardAndClose": "丢弃并关闭",
+ "keep": "保持",
+ "keepMine": "保留我的",
"keyboardShortcuts": "键盘快捷键",
"overwrite": "覆盖",
- "refreshAria": "刷新( F5)",
+ "refreshAria": "刷新 (F5)",
"refreshTooltip": "刷新 git 状态 (F5)",
- "reload": "重新装入",
+ "reload": "重新加载",
"retry": "重试",
"save": "保存",
- "saveAllAndClose": "保存全部关闭( C)"
+ "saveAllAndClose": "全部保存并关闭"
},
- "ariaLabel": "工程编辑器",
+ "ariaLabel": "项目编辑",
"dialogs": {
- "conflictDescription": "文件在打开后已被外部修改 。 用您的更改覆盖吗?",
- "conflictTitle": "保存冲突",
- "unsavedDescription": "你有未保存的变化。 你想怎么办?",
- "unsavedFileDescription": "此文件有未保存的更改 。 你想怎么办?",
+ "conflictDescription": "自您打开该文件以来,该文件已被外部修改。用您的更改覆盖?",
+ "conflictTitle": "拯救冲突",
+ "unsavedDescription": "您有未保存的更改。你想做什么?",
+ "unsavedFileDescription": "该文件有未保存的更改。你想做什么?",
"unsavedTitle": "未保存的更改"
},
"newFile": {
"validation": {
"nameRequired": "名称不能为空",
- "invalidName": "无效的名称",
+ "invalidName": "名称无效",
"invalidCharacters": "名称包含无效字符",
- "nameTooLong": "名字太长了"
+ "nameTooLong": "名字太长"
},
"placeholders": {
- "fileName": "文件名...",
- "folderName": "文件夹名称..."
+ "fileName": "文件名…",
+ "folderName": "文件夹名称…"
},
"aria": {
- "newFileName": "新建文件名称",
+ "newFileName": "新文件名",
"newFolderName": "新文件夹名称"
}
},
- "draftRecovered": "从上一个会话恢复未保存的更改 。",
+ "draftRecovered": "恢复了上一个会话中未保存的更改。",
"externalChange": {
- "changed": "文件在磁盘上更改 。",
- "deleted": "文件在磁盘上已不存在 。"
+ "changed": "磁盘上的文件已更改。",
+ "deleted": "文件不再存在于磁盘上。"
},
- "saveFailed": "保存失败: {{error}}",
+ "saveFailed": "保存失败:{{error}}",
"sidebar": {
- "explorer": "浏览器",
+ "explorer": "探险家",
"hide": "隐藏侧边栏",
- "hideWithShortcut": "隐藏侧边栏( {{shortcut}})",
+ "hideWithShortcut": "隐藏侧边栏({{shortcut}})",
"show": "显示侧边栏",
- "showWithShortcut": "显示侧边栏( {{shortcut}})"
+ "showWithShortcut": "显示侧边栏 ({{shortcut}})"
},
"searchInFiles": {
"title": "在文件中搜索",
"closeSearch": "关闭搜索",
- "closeSearchShortcut": "关闭搜索( Esc)",
- "searchPlaceholder": "搜索...",
- "matchCase": "匹配大小写",
- "matchCaseToggle": "页:1",
+ "closeSearchShortcut": "关闭搜索 (Esc)",
+ "searchPlaceholder": "搜索…",
+ "matchCase": "火柴盒",
+ "matchCaseToggle": "氨基酸",
"noResults": "未找到结果",
- "resultsSummary": "{{count}}匹配在{{fileCount}}文件",
- "resultsSummary_one": "{{count}}匹配在{{fileCount}}文件",
- "truncated": "(结)",
- "resultsSummary_few": "{{count}}匹配在{{fileCount}}文件",
- "resultsSummary_many": "{{count}}匹配在{{fileCount}}文件",
- "resultsSummary_other": "{{count}}匹配在{{fileCount}}文件"
+ "resultsSummary": "{{count}} 在 {{fileCount}} 文件中匹配",
+ "resultsSummary_one": "在 {{fileCount}} 个文件中找到 {{count}} 个匹配项",
+ "truncated": "(截断)",
+ "resultsSummary_few": "{{count}} 在 {{fileCount}} 文件中匹配",
+ "resultsSummary_many": "{{count}} 在 {{fileCount}} 文件中匹配",
+ "resultsSummary_other": "{{count}} 在 {{fileCount}} 文件中匹配"
},
"fileTree": {
- "failedToLoadFiles": "装入文件失败: {{error}}",
- "loading": "正在装入文件...",
+ "failedToLoadFiles": "加载文件失败:{{error}}",
+ "loading": "正在加载文件…",
"empty": "未找到文件",
- "dropForProjectRoot": "丢到这里进行工程根",
- "moveToTrash": "移动到回收站",
- "moveToTrashConfirm": "将\"{{name}}\"移动到垃圾堆?.",
+ "dropForProjectRoot": "放到此处获取项目根目录",
+ "moveToTrash": "移至垃圾箱",
+ "moveToTrashConfirm": "将“{{name}}”移至垃圾箱?",
"cancel": "取消"
},
"goToLine": {
- "title": "跳转到行",
- "position": "(目前:{{current}},合计:{{total}})",
- "placeholder": "行号,+抵消, -抵消,或%",
- "go": "走开"
+ "title": "前往行",
+ "position": "(当前:{{current}},总计:{{total}})",
+ "placeholder": "行号、+偏移量、-偏移量或%",
+ "go": "去"
},
"searchPanel": {
- "previousMatch": "上一个匹配",
- "nextMatch": "下一个匹配",
+ "previousMatch": "上一场比赛",
+ "nextMatch": "下一场比赛",
"close": "关闭",
- "replacePlaceholder": "替换",
- "replace": "替换",
+ "replacePlaceholder": "代替",
+ "replace": "代替",
"replaceNext": "替换下一个",
- "all": "全体",
+ "all": "全部",
"replaceAll": "全部替换"
},
"statusBar": {
- "position": "无{{line}}页:1{{col}}",
- "enableWatcher": "启用文件监视器",
- "disableWatcher": "禁用文件监视器",
- "watch": "监视",
+ "position": "列 {{line}},列 {{col}}",
+ "enableWatcher": "启用文件观察器",
+ "disableWatcher": "禁用文件观察器",
+ "watch": "手表",
"watching": "观看",
- "watchExternalChanges": "注意外部变化",
- "disableExternalWatcher": "禁用外部更改监视器",
- "encodingUtf8": "ZXCVKEN0ZXCV-8 维基百科中的相关条目: 维基文库中相关的原始文献: 维基文库中相关的原始文献: 维基文库中相关的原始文献: 维基语录",
- "spaces": "空间: {{count}}"
+ "watchExternalChanges": "留意外部变化",
+ "disableExternalWatcher": "禁用外部更改观察程序",
+ "encodingUtf8": "UTF-8",
+ "spaces": "空间:{{count}}"
},
"imagePreview": {
- "loading": "正在装入预览...",
+ "loading": "正在加载预览…",
"openFullSize": "打开全尺寸预览",
"openSystemViewer": "在系统查看器中打开"
},
"quickOpen": {
"title": "快速打开",
- "searchPlaceholder": "按名称搜索文件...",
- "loading": "正在装入文件...",
+ "searchPlaceholder": "按名称搜索文件…",
+ "loading": "正在加载文件…",
"empty": "未找到文件"
},
"errorBoundary": {
- "crashed": "编辑器崩溃",
+ "crashed": "编辑器崩溃了",
"unknownError": "未知错误"
},
"binaryPlaceholder": {
- "file": "二进制文件( {{size}})"
+ "file": "二进制文件({{size}})"
},
"unsavedChanges": "未保存的更改",
"empty": {
- "selectFile": "从树上选择要编辑的文件"
+ "selectFile": "从树中选择要编辑的文件"
},
"search": {
"toggleReplace": "切换替换",
@@ -1238,298 +1238,298 @@
"search": "搜索",
"navigation": "导航",
"editing": "编辑",
- "markdown": "标记",
+ "markdown": "Markdown",
"general": "常规"
},
"actions": {
"quickOpen": "快速打开",
"save": "保存",
"saveAll": "全部保存",
- "closeTab": "关闭标签",
+ "closeTab": "关闭选项卡",
"findInFile": "在文件中查找",
"searchInFiles": "在文件中搜索",
- "goToLine": "跳转到行",
- "nextTab": "下一个标签",
- "previousTab": "上一个标签",
- "cycleTabs": "循环标签",
+ "goToLine": "前往行",
+ "nextTab": "下一个选项卡",
+ "previousTab": "上一个选项卡",
+ "cycleTabs": "循环选项卡",
"toggleSidebar": "切换侧边栏",
- "undo": "撤销",
- "redo": "重装",
- "selectNextMatch": "选择下一个匹配",
- "toggleComment": "切换注释",
- "splitPreview": "拆分预览",
+ "undo": "撤消",
+ "redo": "重做",
+ "selectNextMatch": "选择下一场比赛",
+ "toggleComment": "切换评论",
+ "splitPreview": "分割预览",
"fullPreview": "完整预览",
"closeEditor": "关闭编辑器"
}
},
"toolbar": {
- "enableWordWrap": "启用文字包",
- "disableWordWrap": "禁用词包",
+ "enableWordWrap": "启用自动换行",
+ "disableWordWrap": "禁用自动换行",
"closeSplitPreview": "关闭分割预览",
"closePreview": "关闭预览"
}
},
"launch": {
"actions": {
- "createSchedule": "创建计划",
- "creating": "正在创建...",
- "goToDashboard": "转到 Dashboard",
- "launchTeam": "发射队",
- "launching": "正在发射...",
- "relaunchTeam": "发射队",
- "relaunching": "正在重新启动...",
+ "createSchedule": "创建计划任务",
+ "creating": "正在创建…",
+ "goToDashboard": "转到控制台",
+ "launchTeam": "启动团队",
+ "launching": "正在启动…",
+ "relaunchTeam": "重新启动团队",
+ "relaunching": "重新启动…",
"saveChanges": "保存更改",
- "saving": "正在保存..."
+ "saving": "保存…"
},
"billing": {
- "prefix": "从2026年6月15日开始,Anthropic法案",
- "readArticle": "读取 Athropic 文章",
- "suffix": "和代理SDK的用途 从代理SDK的月度信用,与交互式Claude代码限制分开. 信用转帐周期和未使用的信用不转帐。"
+ "prefix": "自 2026 年 6 月 15 日起,Anthropic 账单",
+ "readArticle": "阅读人类文章",
+ "suffix": "Agent SDK 使用量来自每月 Agent SDK 积分,独立于交互式 Claude Code 限制。积分会重置每个计费周期,未使用的积分不会结转。"
},
"conflict": {
- "description": "在同一个目录中运行两个团队是危险的——他们可能与编辑相同的文件发生冲突. 考虑使用不同的目录或git工作树进行隔离.",
- "title": "另一个团队\"{{team}}\"已经在运行这个工作目录",
- "workingDirectory": "工作目录:"
+ "description": "在同一目录中运行两个团队是有风险的 - 它们可能会在编辑相同文件时发生冲突。考虑使用不同的目录或 Git worktree进行隔离。",
+ "title": "另一个团队“{{team}}”已经在该工作目录中运行",
+ "workingDirectory": "工作目录:"
},
"description": {
- "createSchedule": "自动执行 Claude 任务",
- "createScheduleForTeam": "\"{{team}}\"团队的自动运行时间表",
- "editSchedule": "\"{{team}}\"编组时间表.",
- "launchPrefix": "启动团队",
- "launchSuffix": "通过当地克劳德·CLI.",
+ "createSchedule": "安排自动执行 Claude 任务",
+ "createScheduleForTeam": "为团队“{{team}}”安排自动运行",
+ "editSchedule": "编辑“{{team}}”团队的日程",
+ "launchPrefix": "开始组队",
+ "launchSuffix": "通过本地 Claude CLI。",
"relaunchPrefix": "停止当前运行",
- "relaunchSuffix": "并通过当地Claude CLI重新开始."
+ "relaunchSuffix": "并通过本地 Claude CLI 再次启动它。"
},
"prepare": {
"action": {
- "launch": "发射",
+ "launch": "启动",
"relaunch": "重新启动"
},
- "blocked": "运行时环境不可用 - {{action}} 被屏蔽",
- "checkingProviders": "正在检查选中的提供者...",
- "failed": "准备选中的提供者失败",
- "preflight": "在{{action}}之前进行飞行前检查以发现错误",
- "preparingEnvironment": "正在准备环境...",
- "ready": "所有选中的提供者都准备好了 。",
- "readyWithNotes": "所有选定的提供者都已准备好,并附有注释。",
- "unsupportedPreload": "当前预装版本不支持团队:预装. 重新启动dev应用程序.",
- "selectWorkingDirectory": "选择一个工作目录来验证发射环境.",
- "someProvidersNeedAttention": "一些选定的提供者需要注意。"
+ "blocked": "运行时环境不可用 - {{action}} 被阻止",
+ "checkingProviders": "检查选定的提供商…",
+ "failed": "无法准备选定的提供商",
+ "preflight": "飞行前检查以在 {{action}} 之前捕获错误",
+ "preparingEnvironment": "准备环境…",
+ "ready": "所有选定提供商均已就绪。",
+ "readyWithNotes": "所有选定的提供商均已准备就绪,并附有注释。",
+ "unsupportedPreload": "当前preload 版本不支持 team:prepareProvisioning。重新启动开发应用。",
+ "selectWorkingDirectory": "选择一个工作目录来验证启动环境。",
+ "someProvidersNeedAttention": "部分选定提供商需要注意。"
},
"prompt": {
- "label": "提示",
- "oneShotPrefix": "这个提示会传递给",
- "oneShotSuffix": "用于一弹即决",
+ "label": "提示词",
+ "oneShotPrefix": "该提示词将被传递到",
+ "oneShotSuffix": "用于一次性执行",
"saved": "已保存",
- "schedulePlaceholder": "命令克劳德按计划执行...",
- "teamLeadOptional": "启动小组领导( 可选)",
- "teamLeadPlaceholder": "关于团队领导的指示..."
+ "schedulePlaceholder": "指示 Claude 按计划执行……",
+ "teamLeadOptional": "提示团队负责人(可选)",
+ "teamLeadPlaceholder": "给团队领导的指示…"
},
- "providerChanged": "供应商从{{from}}改为{{to}}. 之前的牵头会话不会恢复,牵头会从新的上下文开始,这样新的运行时间就会被正确应用.",
- "relaunchFreshSession": "团队重启开始新的领头会议。 持久团队状态,任务板,和成员配置被补水进入发射即时.",
+ "providerChanged": "提供商从 {{from}} 更改为 {{to}}。之前的引导会话将不会恢复,并且引导将以新的上下文开始,以便正确应用新的运行时。",
+ "relaunchFreshSession": "团队重新启动将开始新的领导会话。持久的团队状态、任务看板和成员配置会重新融入到启动提示词中。",
"relaunchWarning": {
- "description": "保存这些设置将停止目前的团队进程,坚持更新的名册,并以新的运行时间再次启动团队.",
- "title": "重启将重新启动当前团队运行"
+ "description": "保存这些设置将停止当前的团队进程,保留更新的名单,并使用新的运行时再次启动团队。",
+ "title": "重新启动将重新开始当前的团队运行"
},
"schedule": {
- "labelOptional": "标签( 可选的)",
- "labelPlaceholder": "例如,每日代码审查,夜间测试...",
- "maxBudgetUsd": "最大预算",
- "maxTurns": "最大转弯",
+ "labelOptional": "标签(可选)",
+ "labelPlaceholder": "例如,每日代码审核、每晚测试……",
+ "maxBudgetUsd": "最高预算(美元)",
+ "maxTurns": "最大转数",
"noLimit": "无限制",
- "noMatches": "没有队伍符合你的搜索。",
- "noTeams": "没有小组可用。 先创建团队.",
- "searchTeams": "搜索组...",
- "selectTeam": "选择一个团队...",
+ "noMatches": "没有团队符合您的搜索。",
+ "noTeams": "没有可用的团队。首先创建一个团队。",
+ "searchTeams": "搜寻队伍…",
+ "selectTeam": "选择一个团队…",
"team": "团队",
- "title": "时间表"
+ "title": "日程"
},
"title": {
- "createSchedule": "创建计划",
- "editSchedule": "编辑计划",
- "launch": "发射队",
- "relaunch": "发射队"
+ "createSchedule": "创建计划任务",
+ "editSchedule": "编辑日程",
+ "launch": "发送团队",
+ "relaunch": "重新启动团队"
},
"errors": {
- "loadProjectsFailed": "装入工程失败",
- "saveScheduleFailed": "保存调度失败",
- "relaunchFailed": "重新启动团队失败",
- "launchFailed": "发射团队失败"
+ "loadProjectsFailed": "无法加载项目",
+ "saveScheduleFailed": "保存日程失败",
+ "relaunchFailed": "无法重新启动团队",
+ "launchFailed": "启动团队失败"
},
"validation": {
- "openCodeLeadModelRequired": "OpenCode领导需要一个选定的模型.",
- "openCodeTeammateRequired": "OpenCode领队至少需要一名OpenCode队友.",
- "selectWorkingDirectory": "选择工作目录( cwd)",
- "fixMemberNames": "在发射前确定成员姓名",
- "memberNamesUnique": "成员名字在发射前必须是独一无二的"
+ "openCodeLeadModelRequired": "OpenCode 引线需要选定的模型。",
+ "openCodeTeammateRequired": "OpenCode 领导者需要至少一名 OpenCode 队友。",
+ "selectWorkingDirectory": "选择工作目录(cwd)",
+ "fixMemberNames": "启动前修复成员名称",
+ "memberNamesUnique": "启动前成员名称必须是唯一的"
},
"optionalSettings": {
"relaunchTitle": "重新启动设置",
- "title": "可选发射设置",
- "relaunchDescription": "在重启团队之前审查名册和预赛时间.",
- "description": "将发射流集中在项目路径上,只有在需要额外控制时才能扩展."
+ "title": "可选启动设置",
+ "relaunchDescription": "在重新启动团队之前,请检查名单和领导运行时。",
+ "description": "将启动流程集中在项目路径上,并且仅在需要额外控制时才扩展此流程。"
}
},
"list": {
"actions": {
"copyTeam": "复制团队",
"createTeam": "创建团队",
- "deleteForever": "永远删除",
+ "deleteForever": "永久删除",
"deletePermanently": "永久删除",
"deleteTeam": "删除团队",
- "launching": "正在发射...",
- "launchTeam": "发射队",
- "relaunchTeam": "发射队",
+ "launching": "正在启动…",
+ "launchTeam": "启动团队",
+ "relaunchTeam": "重新启动团队",
"restore": "恢复",
- "restoreTeam": "恢复小组",
+ "restoreTeam": "恢复队伍",
"retry": "重试",
- "stopTeam": "停止小组",
- "stopping": "正在停止中..."
+ "stopTeam": "停队",
+ "stopping": "停止…"
},
"electronOnly": {
- "description": "在浏览器模式下,无法访问本地的`~/.claude/teams`目录.",
- "title": "团队只能使用电动模式"
+ "description": "在浏览器模式下,无法访问本地“~/.claude/teams”目录。",
+ "title": "Teams 仅在 Electron 模式下可用"
},
"empty": {
- "description": "在此创建团队开始 。 它会自动出现在列表中.",
- "localOnly": "团队创建仅以本地电机模式提供.",
- "title": "没有找到团队"
+ "description": "在此创建一个团队以开始。它会自动显示在列表中。",
+ "localOnly": "团队创建仅在本地 Electron 模式下可用。",
+ "title": "未找到队伍"
},
"filter": {
"clearAll": "全部清除",
"label": "过滤团队",
- "projectPriority": "项目优先事项",
- "status": "状态"
+ "projectPriority": "项目优先级",
+ "status": "地位"
},
- "loadFailed": "装入团队失败",
- "loading": "正在装入团队...",
- "localOnly": "仅以本地电态模式提供.",
- "membersCount": "成员:{{count}}",
- "membersCount_few": "成员:{{count}}",
- "membersCount_many": "成员:{{count}}",
- "membersCount_one": "成员:{{count}}",
- "membersCount_other": "成员:{{count}}",
- "noDescription": "无说明",
- "noMatches": "没有匹配当前过滤器的团队",
+ "loadFailed": "无法加载团队",
+ "loading": "正在加载团队…",
+ "localOnly": "仅在本地 Electron 模式下可用。",
+ "membersCount": "成员:{{count}}",
+ "membersCount_few": "成员:{{count}}",
+ "membersCount_many": "成员:{{count}}",
+ "membersCount_one": "成员: {{count}}",
+ "membersCount_other": "成员:{{count}}",
+ "noDescription": "无描述",
+ "noMatches": "没有符合当前筛选条件的团队",
"partial": {
- "pending": "上次发射还在调和",
- "skipped": "上次发射已经跳过了队友",
- "skippedWithCount": "最后一次发射跳过{{count}}/{{expected}}队友.",
- "skippedWithCount_few": "最后一次发射跳过{{count}}/{{expected}}队友.",
- "skippedWithCount_many": "最后一次发射跳过{{count}}/{{expected}}队友.",
- "skippedWithCount_one": "最后一次发射跳过{{count}}/{{expected}}队友.",
- "skippedWithCount_other": "最后一次发射跳过{{count}}/{{expected}}队友.",
- "stopped": "最后一次发射在所有队友加入之前就停止了.",
- "stoppedWithCount": "最后一次发射在{{count}}/{{expected}}队友加入之前停止.",
- "stoppedWithCount_few": "最后一次发射在{{count}}/{{expected}}队友加入之前停止.",
- "stoppedWithCount_many": "最后一次发射在{{count}}/{{expected}}队友加入之前停止.",
- "stoppedWithCount_one": "最后一次发射在{{count}}/{{expected}}队友加入之前停止.",
- "stoppedWithCount_other": "最后一次发射在{{count}}/{{expected}}队友加入之前停止."
+ "pending": "上次启动仍在协调中。",
+ "skipped": "上次启动跳过了队友。",
+ "skippedWithCount": "上次启动跳过了 {{count}}/{{expected}} 队友。",
+ "skippedWithCount_few": "上次启动跳过了 {{count}}/{{expected}} 队友。",
+ "skippedWithCount_many": "上次启动跳过了 {{count}}/{{expected}} 队友。",
+ "skippedWithCount_one": "上次启动跳过了 {{count}}/{{expected}} 队友。",
+ "skippedWithCount_other": "上次启动跳过了 {{count}}/{{expected}} 队友。",
+ "stopped": "上次启动在所有队友加入之前停止了。",
+ "stoppedWithCount": "上次启动在 {{count}}/{{expected}} 队友加入之前停止。",
+ "stoppedWithCount_few": "上次启动在 {{count}}/{{expected}} 队友加入之前停止。",
+ "stoppedWithCount_many": "上次启动在 {{count}}/{{expected}} 队友加入之前停止。",
+ "stoppedWithCount_one": "上次启动在 {{count}}/{{expected}} 队友加入之前停止。",
+ "stoppedWithCount_other": "上次启动在 {{count}}/{{expected}} 队友加入之前停止。"
},
- "searchPlaceholder": "搜索组...",
+ "searchPlaceholder": "搜寻队伍…",
"sections": {
- "otherTeams": "其他小组",
- "projectTeams": "{{project}}的小组",
- "selectedProject": "选定项目"
+ "otherTeams": "其他队伍",
+ "projectTeams": "{{project}} 的团队",
+ "selectedProject": "选定的项目"
},
"solo": "独奏",
"status": {
- "active": "活动",
- "deleted": "删除",
- "launching": "正在发射...",
+ "active": "活跃",
+ "deleted": "已删除",
+ "launching": "正在启动…",
"offline": "离线",
- "partialFailure": "发射失败的路段",
- "partialPending": "拖带待处理",
+ "partialFailure": "启动中途失败",
+ "partialPending": "引导挂起",
"partialSkipped": "启动跳过的成员",
- "running": "运行"
+ "running": "运行中"
},
"title": "选择团队",
- "trash": "废物({{count}})",
- "trash_few": "废物({{count}})",
- "trash_many": "废物({{count}})",
- "trash_one": "废物({{count}})",
- "trash_other": "废物({{count}})",
+ "trash": "垃圾 ({{count}})",
+ "trash_few": "垃圾 ({{count}})",
+ "trash_many": "垃圾 ({{count}})",
+ "trash_one": "垃圾 ({{count}})",
+ "trash_other": "垃圾 ({{count}})",
"deleteDraft": {
"title": "删除草稿",
- "message": "删除草稿组\"{{teamName}}\"? 这一点是无法消除的。",
+ "message": "删除选秀队“{{teamName}}”?此操作无法撤消。",
"confirmLabel": "删除",
"cancelLabel": "取消"
},
"moveToTrash": {
- "title": "移动到垃圾桶",
- "message": "将团队\"{{teamName}}\"移到垃圾堆?. 你可以待会再修",
- "confirmLabel": "移动到垃圾桶",
+ "title": "移至垃圾箱",
+ "message": "将团队“{{teamName}}”移至垃圾箱?您可以稍后恢复它。",
+ "confirmLabel": "移至垃圾箱",
"cancelLabel": "取消"
},
"deleteForever": {
"title": "永久删除",
- "message": "永久删除“{{teamName}}”小组? 所有数据都将丢失。",
- "confirmLabel": "永远删除",
+ "message": "永久删除团队“{{teamName}}”?所有数据都将丢失。",
+ "confirmLabel": "永久删除",
"cancelLabel": "取消"
}
},
"messageComposer": {
"crossTeam": {
- "hint": "提示:跨团队消息到目标团队领先. 如果你想让答案回到你的团队 而不是你,在信息中明确说。"
+ "hint": "提示词:跨团队消息会发送至目标团队负责人。如果您希望回复返回给您的团队领导而不是您,请在消息中明确说明。"
},
"attachments": {
- "attachFiles": "附加文件( 粘贴或拖放) (D)",
- "unavailable": "无附件",
- "disabledHint": "为在线团队领队和在线OpenCode队友提供文件附件支持. 删除附件或切换收件人。",
+ "attachFiles": "附加文件(粘贴或拖放)",
+ "unavailable": "附件不可用",
+ "disabledHint": "在线团队领导和在线 OpenCode 队友支持文件附件。删除附件或切换收件人。",
"restrictions": {
- "crossTeam": "跨团队信件不支持文件附件",
- "teamOffline": "团队必须在线附加文件",
+ "crossTeam": "跨团队消息不支持文件附件",
+ "teamOffline": "团队必须在线才能附加文件",
"unsupportedRecipient": "文件可以发送给团队领导或 OpenCode 队友",
- "openCodeOffline": "团队必须在线为 OpenCode 队友附加文件",
- "sending": "等待当前信件在添加文件前完成发送",
- "maximumReached": "达到的最大附件",
- "leadOnly": "文件只能发送给团队领导"
+ "openCodeOffline": "团队必须在线才能为 OpenCode 队友附加文件",
+ "sending": "等待当前消息发送完成后再添加文件",
+ "maximumReached": "已达到最大附件数",
+ "leadOnly": "文件只能发送给团队负责人"
}
},
"slash": {
"restrictions": {
- "attachments": "斜线命令需要现场团队领导, 不能随附件一起发送",
- "crossTeam": "斜线命令只能运行在目前的团队领导上",
- "notLead": "斜线命令只能发送给团队领导",
- "leadOffline": "斜线命令要求团队线索在线"
+ "attachments": "斜线命令需要现场团队领导,并且不能通过附件发送",
+ "crossTeam": "斜线命令只能在当前团队领导上运行",
+ "notLead": "斜线命令只能发送给队长",
+ "leadOffline": "斜线命令需要团队领导在线"
}
},
"status": {
- "reusedCrossTeamRequest": "重新使用最近的跨小组请求",
+ "reusedCrossTeamRequest": "重用最近的跨团队请求",
"teamOffline": "离线"
},
"revision": {
- "editing": "正在编辑上一条消息",
+ "editing": "编辑上一条消息",
"cancel": "取消",
- "tooltip": "让代理忽略上一条消息,并将其文本恢复到编辑器。"
+ "tooltip": "要求代理忽略之前的消息并将其恢复给作曲家。"
},
"input": {
- "charsLeft": "{{count}}左边的字符",
- "charsLeft_one": "{{count}}字符左边",
- "charsLeft_other": "{{count}}左边的字符",
- "teamLaunchingPlaceholder": "团队正在发布... 消息将被排队 以发送收件箱。",
- "crossTeamPlaceholder": "跨团队消息给 {{team}}...",
+ "charsLeft": "{{count}} 剩余字符数",
+ "charsLeft_one": "{{count}} 左字符",
+ "charsLeft_other": "{{count}} 剩余字符数",
+ "teamLaunchingPlaceholder": "团队正在启动…消息将排队等待收件箱传递。",
+ "crossTeamPlaceholder": "跨团队消息至 {{team}}…",
"teamFallback": "团队",
- "placeholder": "写入信件... (输入发送, Shift+ Enter for new line)",
- "slashTip": "提示:您可以使用\"/\"来运行任何克劳德命令.",
- "charsLeft_few": "{{count}}左边的字符",
- "charsLeft_many": "{{count}}左边的字符"
+ "placeholder": "写一条消息…(Enter 发送,Shift+Enter 换行)",
+ "slashTip": "提示词:您可以使用“/”来运行任何 Claude 命令。",
+ "charsLeft_few": "{{count}} 剩余字符数",
+ "charsLeft_many": "{{count}} 剩余字符数"
},
"teamSelector": {
- "thisTeam": "这个团队",
- "current": "当前",
- "online": "在线",
+ "thisTeam": "这支团队",
+ "current": "当前的",
+ "online": "在线的",
"offline": "离线",
- "onlineTitle": "在线",
+ "onlineTitle": "在线的",
"offlineTitle": "离线"
},
"recipient": {
- "select": "选择...",
- "searchPlaceholder": "搜索...",
- "noResults": "无结果"
+ "select": "选择…",
+ "searchPlaceholder": "搜索…",
+ "noResults": "没有结果"
},
"actions": {
- "voiceToText": "语音对文本",
+ "voiceToText": "语音转文字",
"send": "发送",
"sendingUnavailableLaunching": "团队启动时无法发送"
}
@@ -1539,638 +1539,638 @@
"ariaLabel": "过滤日志",
"tooltip": "过滤日志",
"sections": {
- "stream": "流线",
+ "stream": "溪流",
"content": "内容"
},
"kinds": {
- "output": "产出",
- "thinking": "思维",
+ "output": "输出",
+ "thinking": "思考",
"tool": "工具调用"
},
"actions": {
- "reset": "重设",
+ "reset": "重置",
"save": "保存"
},
"streams": {
- "stdout": "静态",
- "stderr": "标准"
+ "stdout": "标准输出",
+ "stderr": "标准错误"
}
},
- "rawLineCount": "{{formattedCount}}原始线条",
- "rawLineCount_one": "{{formattedCount}}原始线条",
- "rawLinesCaptured": "{{count}}被俘获",
- "emptyRawLogs": "{{count}};还没有一个是助理/工具输出.",
+ "rawLineCount": "{{formattedCount}} 原线",
+ "rawLineCount_one": "{{formattedCount}} 原线",
+ "rawLinesCaptured": "{{count}} 捕获",
+ "emptyRawLogs": "{{count}};还没有一个是助手/工具输出。",
"noLogsYet": "还没有日志。",
- "teamNotRunning": "球队没有运行。",
- "searchPlaceholder": "搜索日志...",
+ "teamNotRunning": "团队没有运行。",
+ "searchPlaceholder": "搜索日志…",
"clearSearch": "清除搜索",
- "newCount": "+ 键{{count}}新设",
- "loading": "正在装入...",
+ "newCount": "+{{count}} 新",
+ "loading": "加载中…",
"showMore": "显示更多",
- "noLogsCaptured": "没有记录",
- "noMatchingLogs": "无匹配日志 。",
- "rawLineCount_few": "{{formattedCount}}原始线条",
- "rawLineCount_many": "{{formattedCount}}原始线条",
- "rawLineCount_other": "{{formattedCount}}原始线条",
+ "noLogsCaptured": "没有捕获日志。",
+ "noMatchingLogs": "没有匹配的日志。",
+ "rawLineCount_few": "{{formattedCount}} 原线",
+ "rawLineCount_many": "{{formattedCount}} 原线",
+ "rawLineCount_other": "{{formattedCount}} 原线",
"openFullscreen": "打开全屏日志",
- "fullscreen": "全屏幕",
+ "fullscreen": "全屏",
"viewingFullscreen": "以全屏模式查看",
"logsTitle": "日志",
"sourceSelect": {
- "placeholder": "选择日志源...",
- "searchPlaceholder": "搜索日志来源...",
- "emptyMessage": "未找到日志来源 。",
+ "placeholder": "选择日志源…",
+ "searchPlaceholder": "搜索日志源…",
+ "emptyMessage": "未找到日志源。",
"ariaLabel": "日志来源",
- "leadLabel": "铅",
- "selectSourceEmpty": "选择日志源 。",
+ "leadLabel": "带领",
+ "selectSourceEmpty": "选择日志源。",
"leadDescription": "团队负责人",
- "removedLabel": "已移除",
- "removedDescription": "已移除"
+ "removedLabel": "已删除",
+ "removedDescription": "已删除"
}
},
"agentGraph": {
"popover": {
- "externalTeam": "外部小组",
+ "externalTeam": "外部团队",
"process": {
- "startedBy": "开始于:",
- "at": "时间:",
+ "startedBy": "开始于:",
+ "at": "在:",
"openUrl": "打开 URL"
},
"overflow": {
"hiddenTasks": "隐藏任务",
- "empty": "没有可用的隐藏任务 。"
+ "empty": "没有可用的隐藏任务。"
},
"member": {
- "lead": "铅",
- "workingOn": "工作情况",
- "recentTools": "最近的工具",
+ "lead": "带领",
+ "workingOn": "正在处理",
+ "recentTools": "最近使用的工具",
"spawn": {
"waitingToStart": "等待开始",
"starting": "开始",
"failed": "失败"
},
"state": {
- "active": "活动",
- "idle": "闲置",
+ "active": "活跃",
+ "idle": "闲置的",
"offline": "离线",
"runningTool": "运行工具"
},
"activeTool": {
- "running": "运行中的工具",
+ "running": "运行工具",
"failed": "工具失败",
- "finished": "工具已完成"
+ "finished": "工具完成"
},
"actions": {
- "message": "消息",
- "profile": "简介",
+ "message": "信息",
+ "profile": "轮廓",
"task": "任务"
}
}
},
"logPreview": {
"logs": "日志",
- "loading": "正在装入日志",
- "more": "+ 键{{count}}更多",
- "more_one": "+ 键{{count}}更多",
- "more_other": "+ 键{{count}}更多",
- "more_few": "+ 键{{count}}更多",
- "more_many": "+ 键{{count}}更多",
- "unsupportedProvider": "不支持的提供商",
+ "loading": "加载日志",
+ "more": "+{{count}} 更多",
+ "more_one": "+{{count}} 更多",
+ "more_other": "+{{count}} 更多",
+ "more_few": "+{{count}} 更多",
+ "more_many": "+{{count}} 更多",
+ "unsupportedProvider": "不受支持的提供商",
"openCodeLogsDelayed": "OpenCode 日志延迟",
"logsUnavailable": "日志不可用",
- "noRecentLogs": "没有最近日志",
+ "noRecentLogs": "没有最近的日志",
"toolError": "工具错误",
"toolResult": "工具结果",
"toolUse": "工具使用",
- "thinking": "思考中",
+ "thinking": "思考",
"error": "错误",
- "logEvent": "日志事件",
- "noErrorOutput": "没有错误输出",
- "noOutput": "没有输出",
- "noInput": "没有输入"
+ "logEvent": "记录事件",
+ "noErrorOutput": "无错误输出",
+ "noOutput": "无输出",
+ "noInput": "无输入"
},
"blockingEdge": {
- "title": "封锁依赖性",
+ "title": "阻塞依赖",
"blocks": "块",
"close": "关闭",
- "blockingHiddenTasks": "屏蔽隐藏任务",
- "blockedHiddenTasks": "已屏蔽隐藏任务",
- "links_one": "{{count}} 个链接",
- "links_other": "{{count}} 个链接",
- "hiddenBlockingLinks_one": "{{count}} 个隐藏阻塞链接",
- "hiddenBlockingLinks_other": "{{count}} 个隐藏阻塞链接",
- "hiddenTaskStack": "隐藏任务堆栈",
- "hiddenTasks_one": "{{count}} 个隐藏任务",
- "hiddenTasks_other": "{{count}} 个隐藏任务",
+ "blockingHiddenTasks": "阻止隐藏任务",
+ "blockedHiddenTasks": "被阻止的隐藏任务",
+ "links_one": "{{count}} 链接",
+ "links_other": "{{count}} 链接",
+ "hiddenBlockingLinks_one": "{{count}} 隐藏阻止链接",
+ "hiddenBlockingLinks_other": "{{count}} 隐藏的阻止链接",
+ "hiddenTaskStack": "隐藏任务栈",
+ "hiddenTasks_one": "{{count}} 隐藏任务",
+ "hiddenTasks_other": "{{count}} 隐藏任务",
"task": "任务",
- "openBlockerStack": "打开阻塞方堆栈",
- "openBlockedStack": "打开被阻塞方堆栈",
- "openBlockerTask": "打开阻塞任务",
- "openBlockedTask": "打开被阻塞任务"
+ "openBlockerStack": "打开拦截器堆栈",
+ "openBlockedStack": "打开阻塞的堆栈",
+ "openBlockerTask": "打开拦截器任务",
+ "openBlockedTask": "打开被阻止的任务"
},
"activityHud": {
"activity": "活动",
"noRecentActivity": "最近没有活动",
- "more": "+ 键{{count}}更多",
- "more_one": "+ 键{{count}}更多",
- "more_other": "+ 键{{count}}更多",
- "more_few": "+ 键{{count}}更多",
- "more_many": "+ 键{{count}}更多"
+ "more": "+{{count}} 更多",
+ "more_one": "+{{count}} 更多",
+ "more_other": "+{{count}} 更多",
+ "more_few": "+{{count}} 更多",
+ "more_many": "+{{count}} 更多"
},
"provisioning": {
- "launchDetails": "发射详情",
- "launchDetailsDescription": "详细团队启动进度,直播输出和CLI日志."
+ "launchDetails": "启动详情",
+ "launchDetailsDescription": "详细的团队启动进度、实时输出和 CLI 日志。"
}
},
"projectPath": {
"label": "项目",
"source": {
- "claude": "克劳德找到的",
- "codex": "由 Codex 找到",
- "mixed": "由克劳德和Codex发现"
+ "claude": "Claude 发现",
+ "codex": "由 Codex 发现",
+ "mixed": "由 Claude 和 Codex 发现"
},
"deleted": {
- "title": "项目文件夹已不存在",
- "label": "删除"
+ "title": "项目文件夹不再存在",
+ "label": "已删除"
},
"mode": {
- "projectList": "从项目列表",
+ "projectList": "来自项目清单",
"customPath": "自定义路径"
},
- "loadingProjects": "正在装入工程...",
- "selectProject": "选择一个工程...",
- "searchPlaceholder": "按名称或路径搜索工程",
- "empty": "什么都没有",
- "selectFromList": "从列表中选择一个工程",
- "noProjects": "未找到工程, 请切换到自定义路径 。",
+ "loadingProjects": "正在加载项目…",
+ "selectProject": "选择一个项目…",
+ "searchPlaceholder": "按名称或路径搜索项目",
+ "empty": "未找到任何内容",
+ "selectFromList": "从列表中选择一个项目",
+ "noProjects": "未找到项目,切换到自定义路径。",
"customWorkingDirectory": "自定义工作目录",
"browse": "浏览",
- "createAutomatically": "如果目录不存在,则会自动创建."
+ "createAutomatically": "如果该目录不存在,则会自动创建。"
},
"members": {
"badges": {
"worktree": "工作树"
},
"runtimeTelemetry": {
- "title": "本地运行时间负荷",
- "description": "只有父母和子女参与。 远程 LLM 推论不包括在内.",
- "cpu": "CPU 苏维埃社会主义共和国",
- "memory": "内存",
- "summedRss": "合计 RSS",
- "sharedHost": "共享 OpenCode 主机参数 。 它不仅限于这个成员。",
- "processTreeCapped": "过程树被封顶 。",
- "rssHint": "RSS可以包括共享页面,因此它最好读作负载信号,而不是独家内存."
+ "title": "本地运行时负载",
+ "description": "仅限父进程和子进程。不包括远程 LLM 推理。",
+ "cpu": "中央处理器",
+ "memory": "记忆",
+ "summedRss": "RSS 汇总",
+ "sharedHost": "共享 OpenCode 主机指标。这并不是该成员独有的。",
+ "processTreeCapped": "该示例的进程树已被限制。",
+ "rssHint": "RSS 可以包含共享页面,因此最好将其作为加载信号来读取,而不是独占内存。"
},
"editor": {
"title": "成员",
"addMember": "添加成员",
"editAsJson": "编辑为 JSON",
- "runInSeparateWorktrees": "在不同的工作树上运行队友",
- "agentTeamsMcpOnly": "仅MCP代理团队",
- "removedCount": "删除( N){{count}}页:1",
- "removedModelLockReason": "删除的成员被保留用于软删除历史. 恢复其编辑设置。",
- "memberNamesUnique": "成员名字必须是独一无二的"
+ "runInSeparateWorktrees": "在单独的工作树中运行队友",
+ "agentTeamsMcpOnly": "仅限 Agent Team MCP",
+ "removedCount": "已删除 ({{count}})",
+ "removedModelLockReason": "已删除的成员将保留软删除历史记录。恢复它们以编辑设置。",
+ "memberNamesUnique": "成员名称必须是唯一的"
},
"stats": {
- "computing": "计算数据...",
- "empty": "没有可用的数据",
- "lines": "线条",
- "linesInfo": "略说. 编辑和写入工具的精确度 。 Bash文件的写法是从命令模式(heredoc,回声,sed)中估计出来的,可能报告不足.",
+ "computing": "计算统计数据…",
+ "empty": "无可用统计数据",
+ "lines": "行",
+ "linesInfo": "近似。适用于编辑和写入工具。 Bash 文件写入是根据命令模式(heredoc、echo、sed)估计的,可能会被低估。",
"files": "文件",
"toolCalls": "工具调用",
- "tokens": "键",
+ "tokens": "Token",
"toolUsage": "工具使用",
- "filesTouched": "触摸过的文件( {{count}})",
+ "filesTouched": "触及的文件 ({{count}})",
"viewAllChanges": "查看所有更改",
- "showLess": "显示较少",
- "moreFiles": "+ 键{{count}}更多",
- "footer": "{{count}}计算{{computedAgo}}",
- "footer_one": "{{count}}计算{{computedAgo}}",
- "footer_few": "{{count}}计算{{computedAgo}}",
- "footer_many": "{{count}}计算{{computedAgo}}",
- "footer_other": "{{count}}计算{{computedAgo}}"
+ "showLess": "收起",
+ "moreFiles": "+{{count}} 更多",
+ "footer": "{{count}} 会话·计算出的 {{computedAgo}}",
+ "footer_one": "{{count}} 会话·计算出的 {{computedAgo}}",
+ "footer_few": "{{count}} 会话·计算出的 {{computedAgo}}",
+ "footer_many": "{{count}} 会话·计算出的 {{computedAgo}}",
+ "footer_other": "{{count}} 会话·计算出的 {{computedAgo}}"
},
"logs": {
- "searching": "正在搜索日志...",
+ "searching": "正在搜索日志…",
"empty": "未找到日志",
- "waitingForTaskActivity": "任务正在进行中 - 等待会话活动(自动更新)...",
- "noTaskActivity": "任务尚未进行会话活动",
- "noMemberActivity": "这个成员还没有记录会议活动",
- "leadSessionTooltip": "完整的团队牵头会话日志 - 对全局管弦乐背景有用,而非此代理",
- "memberSessionTooltip": "完全持久队友会话日志 - 当工作运行在根成员会话中而不是子代理文件时有用",
+ "waitingForTaskActivity": "任务正在进行中 - 等待会话活动(自动刷新)…",
+ "noTaskActivity": "此任务还没有会话活动",
+ "noMemberActivity": "该成员尚未记录会话活动",
+ "leadSessionTooltip": "完整的团队领导会话日志 - 对于全局编排上下文有用,而不是特定于该代理",
+ "memberSessionTooltip": "完整的持久队友会话日志 - 当工作在根成员会话而不是子智能体文件中运行时非常有用",
"startedAt": "开始 {{time}}",
- "active": "活动",
- "showDetails": "显示细节",
- "hideDetails": "隐藏细节",
- "loadingDetails": "正在装入细节...",
- "failedToLoadDetails": "装入细节失败"
+ "active": "活跃",
+ "showDetails": "显示详情",
+ "hideDetails": "隐藏详细信息",
+ "loadingDetails": "正在加载详细信息…",
+ "failedToLoadDetails": "无法加载详细信息"
},
"detail": {
"relaunchOpenCode": "重新启动 OpenCode",
- "restart": "重新开始",
- "legacyLogsFallback": "遗留日志倒计时",
+ "restart": "重启",
+ "legacyLogsFallback": "旧日志回退",
"copyDiagnostics": "复制诊断",
- "pid": "密码{{pid}}",
- "removedAt": "已删除 {{date}}",
- "failedToRestartMember": "重新启动成员失败",
- "sendMessage": "发送信件",
- "assignTask": "指派任务",
- "remove": "删除"
+ "pid": "PID {{pid}}",
+ "removedAt": "删除了 {{date}}",
+ "failedToRestartMember": "重启成员失败",
+ "sendMessage": "发送消息",
+ "assignTask": "分配任务",
+ "remove": "消除"
},
"list": {
- "loading": "正在装入团队成员",
- "unavailable": "成员名册不详",
- "unavailableDescription": "{{count}}队友从团队元数据中得知,但缺少名册细节.",
- "unavailableDescription_one": "{{count}}队友从团队元数据中得知,但缺少名册细节.",
- "soloLeadOnly": "独奏队 - 仅领队",
- "removedCount": "删除( N){{count}}页:1",
- "unavailableDescription_few": "{{count}}队友从团队元数据中得知,但缺少名册细节.",
- "unavailableDescription_many": "{{count}}队友从团队元数据中得知,但缺少名册细节.",
- "unavailableDescription_other": "{{count}}队友从团队元数据中得知,但缺少名册细节."
+ "loading": "正在加载团队成员",
+ "unavailable": "成员名单不可用",
+ "unavailableDescription": "从团队元数据中可以得知 {{count}} 队友,但缺少名单详细信息。",
+ "unavailableDescription_one": "从团队元数据中可以得知 {{count}} 队友,但缺少名单详细信息。",
+ "soloLeadOnly": "单人团队 - 仅领导",
+ "removedCount": "已删除 ({{count}})",
+ "unavailableDescription_few": "从团队元数据中可以得知 {{count}} 队友,但缺少名单详细信息。",
+ "unavailableDescription_many": "从团队元数据中可以得知 {{count}} 队友,但缺少名单详细信息。",
+ "unavailableDescription_other": "从团队元数据中可以得知 {{count}} 队友,但缺少名单详细信息。"
},
"executionLog": {
- "empty": "没什么可展示的",
- "emptyUserMessage": "{{time}}- (空着)",
- "agentInstructions": "代理指令",
- "memberTurn": "{{member}}转弯",
- "agentTurn": "代理转身",
- "turn": "转弯"
+ "empty": "没有可显示的内容",
+ "emptyUserMessage": "{{time}}-(空)",
+ "agentInstructions": "代理须知",
+ "memberTurn": "{{member}} 转",
+ "agentTurn": "代理转",
+ "turn": "转动"
},
"recentMessages": {
- "latest": "最近消息",
- "latestForMember": "最近的消息 - {{member}}",
- "loadMore": "装入更多",
- "expand": "扩展",
- "collapse": "折叠"
+ "latest": "最新消息",
+ "latestForMember": "最新消息 - {{member}}",
+ "loadMore": "加载更多",
+ "expand": "扩张",
+ "collapse": "坍塌"
},
"leadModel": {
"defaultModel": "默认",
- "providerModelAria": "{{provider}}供应商,{{model}}",
- "leadShort": "牵头",
- "teamLead": "团队领导",
- "syncWithTeammates": "与队友同步模式",
- "anthropicTeamWide": "整个团队",
- "runtimeInheritance": "预赛时间适用于队友,除非他们自行设置提供者或模式.",
- "anthropicContextLimit": "200K上下文限制为本次发射中Anthropic运行时间的全队范围,包括定制的Anthropic队友."
+ "providerModelAria": "{{provider}} 提供商,{{model}}",
+ "leadShort": "带领",
+ "teamLead": "团队负责人",
+ "syncWithTeammates": "与队友同步模型",
+ "anthropicTeamWide": "全团队人性化",
+ "runtimeInheritance": "领先运行时适用于队友,除非他们设置自己的提供商或模型。",
+ "anthropicContextLimit": "此次启动的 Anthropic 运行时的 200K 上下文限制是团队范围内的,包括自定义的 Anthropic 团队成员。"
},
"runtimeLogs": {
- "autoRefresh": "自动更新",
- "wrapLines": "环行",
- "loadingTail": "正在装入进程日志尾巴...",
- "empty": "尚未为这个成员捕获进程日志文件 。",
+ "autoRefresh": "自动刷新",
+ "wrapLines": "换行线",
+ "loadingTail": "正在加载进程日志尾部…",
+ "empty": "尚未捕获该成员的进程日志文件。",
"copy": "复制",
"fileEmpty": "进程日志文件为空。",
- "showingLast": "显示最后 {{bytes}}。",
+ "showingLast": "显示最后一个 {{bytes}}。",
"showing": "显示 {{bytes}}。"
},
"tasks": {
- "empty": "没有指派给该成员的任务"
+ "empty": "没有任务分配给该成员"
},
"messages": {
- "loadOlder": "装入旧信件",
+ "loadOlder": "加载旧消息",
"filters": {
- "all": "全体",
- "messages": "信件",
+ "all": "全部",
+ "messages": "消息",
"comments": "评论"
},
"empty": {
- "loading": "正在装入活动...",
- "noComments": "该成员没有评论意见",
- "noLoadedMessages": "尚未为该成员装入信件",
- "noMessages": "没有给这个成员留言",
- "noLoadedActivity": "此成员的未加载活动",
- "noActivity": "与该成员没有活动"
+ "loading": "正在加载活动…",
+ "noComments": "该成员没有评论",
+ "noLoadedMessages": "该成员尚未加载消息",
+ "noMessages": "没有与该成员消息",
+ "noLoadedActivity": "该成员尚未加载任何活动",
+ "noActivity": "该成员没有任何活动"
}
},
"actions": {
- "openProfile": "打开配置文件",
+ "openProfile": "打开个人资料",
"editRole": "编辑角色",
"sendMessage": "发送消息",
- "assignTask": "指派任务"
+ "assignTask": "分配任务"
},
"roleSelect": {
- "customRolePlaceholder": "输入自定义角色..."
+ "customRolePlaceholder": "输入自定义角色…"
}
},
"schedule": {
- "count": "{{count}}时间表",
- "count_one": "{{count}} 时间表",
- "count_other": "{{count}}时间表",
- "nextRun": "下一个:{{next}}",
+ "count": "{{count}} 计划任务",
+ "count_one": "{{count}} 计划任务",
+ "count_other": "{{count}} 计划任务",
+ "nextRun": "下次运行: {{next}}",
"actions": {
- "runNow": "快点跑",
+ "runNow": "立即运行",
"edit": "编辑",
"pause": "暂停",
- "resume": "继续",
+ "resume": "恢复",
"delete": "删除",
- "addSchedule": "添加计划"
+ "addSchedule": "添加计划任务"
},
"runHistory": {
- "loading": "正在装入运行历史...",
- "empty": "尚未运行"
+ "loading": "正在加载运行历史记录…",
+ "empty": "尚无运行记录"
},
- "count_few": "{{count}}时间表",
- "count_many": "{{count}}时间表",
+ "count_few": "{{count}} 计划任务",
+ "count_many": "{{count}} 计划任务",
"runLog": {
"title": "运行日志",
- "exitCode": "出口 {{code}}",
+ "exitCode": "退出 {{code}}",
"retryCount": "重试 {{count}}/{{max}}",
- "stillRunning": "任务仍在运行...",
- "loadingLogs": "正在装入日志...",
+ "stillRunning": "任务仍在运行…",
+ "loadingLogs": "正在加载日志…",
"errors": "错误",
"close": "关闭"
},
"cron": {
- "expression": "线性表达式",
- "highFrequencyWarning": "高频时间表(小于5分钟间隔)",
- "nextRuns": "下一个运行:",
+ "expression": "克朗表达式",
+ "highFrequencyWarning": "高频率计划任务(间隔少于 5 分钟)",
+ "nextRuns": "接下来运行:",
"timezone": "时区",
"selectTimezone": "选择时区",
- "warmUpTime": "温暖时间",
- "warmUpDescription": "在预定执行前准备选定的提供者",
+ "warmUpTime": "预热时间",
+ "warmUpDescription": "在计划执行之前准备选定的提供商",
"errors": {
"enterExpression": "输入 cron 表达式",
"invalidExpression": "无效的 cron 表达式"
},
"presets": {
"everyHour": "每小时",
- "everySixHours": "每6小时",
- "dailyAtNine": "每日9点",
- "weekdaysAtNine": "上午9时的周日",
- "mondayAtNine": "星期一上午9时",
- "everyThirtyMinutes": "每30分钟"
+ "everySixHours": "每 6 小时",
+ "dailyAtNine": "每天上午 9 点",
+ "weekdaysAtNine": "工作日上午 9 点",
+ "mondayAtNine": "周一上午 9 点",
+ "everyThirtyMinutes": "每30 分钟一班"
},
"warmUpOptions": {
- "none": "没有热身",
- "fiveMinutes": "5分钟",
- "tenMinutes": "10分钟",
- "fifteenMinutes": "15分钟",
- "thirtyMinutes": "30分钟"
+ "none": "无需热身",
+ "fiveMinutes": "5 分钟",
+ "tenMinutes": "10 分钟",
+ "fifteenMinutes": "15 分钟",
+ "thirtyMinutes": "30 分钟"
}
},
"empty": {
- "title": "尚无时间表",
- "description": "创建一个运行 Claude 任务在 cron 时间表上自动运行的调度 。"
+ "title": "还没有计划任务",
+ "description": "创建一个计划以按照 cron 计划自动运行 Claude 任务。"
},
- "title": "附表",
+ "title": "计划任务",
"status": {
- "active": "活动",
- "paused": "暂停",
- "disabled": "已禁用"
+ "active": "活跃",
+ "paused": "已暂停",
+ "disabled": "已停用"
},
"runStatus": {
- "pending": "待决",
- "warmingUp": "暖和起来",
- "warm": "温暖",
- "running": "运行",
- "completed": "已完成",
+ "pending": "待办的",
+ "warmingUp": "热身",
+ "warm": "温暖的",
+ "running": "运行中",
+ "completed": "完全的",
"failed": "失败",
- "interrupted": "中断",
- "cancelled": "已取消"
+ "interrupted": "被打断",
+ "cancelled": "取消"
}
},
"openCodeContextConfigHint": {
- "summary": "OpenCode本地模型可以使用OpenCode上下文预算,而不是只使用即时限制.",
- "description": "为这个队友使用的提供者和模型添加匹配限制到OpenCode配置中. 这有助于在本地模型溢出上下文窗口之前, OpenCode 压缩和调色板 。",
- "replacePrefix": "替换",
- "and": "联合国",
- "replaceSuffix": "与您的 OpenCode 设置中的提供者和模式标识。 提示类",
- "promptInstructionsSuffix": "更弱,因为请求是在模型读完之前组装的。",
- "providerLimits": "供应商限额",
+ "summary": "OpenCode 本地模型可以使用 OpenCode 上下文预算,而不是仅限提示词的限制。",
+ "description": "向该队友使用的提供商和模型的 OpenCode 配置添加匹配限制。这有助于 OpenCode 在本地模型溢出其上下文窗口之前进行压缩和修剪。",
+ "replacePrefix": "代替",
+ "and": "和",
+ "replaceSuffix": "使用 OpenCode 设置中的提供商和模型 ID。提示词说明如",
+ "promptInstructionsSuffix": "较弱,因为请求是在模型读取它们之前组装的。",
+ "providerLimits": "提供商限制",
"compactionConfig": "压缩配置"
},
"sessions": {
- "noProjectPath": "没有工程路径链接",
- "provisioningHint": "会话将在团队提供后出现",
- "projectNotFound": "未找到工程",
- "loading": "正在装入会话...",
+ "noProjectPath": "没有链接项目路径",
+ "provisioningHint": "会话将在团队配置后出现",
+ "projectNotFound": "未找到项目",
+ "loading": "正在加载会话…",
"empty": "未找到会话",
- "showAllSessions": "显示全部会话",
- "lead": "牵头",
- "removeFilter": "删除过滤器",
- "filterBySession": "此会话过滤",
- "openSession": "公开会议",
- "title": "会议"
+ "showAllSessions": "显示所有会话",
+ "lead": "带领",
+ "removeFilter": "移除过滤器",
+ "filterBySession": "按此会话过滤",
+ "openSession": "公开会话",
+ "title": "会话"
},
"provisioning": {
- "pid": "密码{{pid}}",
+ "pid": "PID {{pid}}",
"cancel": "取消",
- "moreWarningsHidden": "{{count}} 隐藏更多的警告",
+ "moreWarningsHidden": "{{count}} 隐藏更多警告",
"diagnostics": "诊断",
"liveOutput": "实时输出",
- "diagnosticsCopied": "复制的诊断",
+ "diagnosticsCopied": "已复制诊断信息",
"copyDiagnostics": "复制诊断",
- "copied": "复制",
- "noOutput": "尚未捕获输出 。",
- "cliLogs": "CLI日志",
+ "copied": "已复制",
+ "noOutput": "尚未捕获任何输出。",
+ "cliLogs": "CLI 日志",
"steps": {
"starting": "开始",
"configuring": "团队设置",
"assembling": "成员加入",
- "finalizing": "最后敲定"
+ "finalizing": "敲定"
},
"providerStatus": {
"status": {
- "checking": "检查...",
- "ready": "还好",
- "notes": "OK( 注释)",
- "failed": "ERR 苏维埃社会主义共和国",
- "pending": "等待时"
+ "checking": "检查…",
+ "ready": "好的",
+ "notes": "好的(注释)",
+ "failed": "犯错",
+ "pending": "等待"
},
"detailSummary": {
- "cliBinaryMissing": "ZXCVKEN0ZXCV 二进制缺失",
- "openCodeRuntimeMissing": "OpenCode 运行时间缺失",
- "openCodeWindowsAccessBlocked": "OpenCode Windows 访问受阻",
- "openCodeNoOutput": "OpenCode 运行时检查未返回输出",
- "openCodeMcpUnreachable": "OpenCode app MCP 无法访问",
- "workingDirectoryMissing": "缺少工作目录",
- "cliBinaryCouldNotStart": "CLI 二进制无法启动",
- "cliPreflightIncomplete": "CLI 飞行前未完成",
+ "cliBinaryMissing": "CLI 二进制文件缺失",
+ "openCodeRuntimeMissing": "OpenCode 运行时缺失",
+ "openCodeWindowsAccessBlocked": "OpenCode Windows 访问被阻止",
+ "openCodeNoOutput": "OpenCode 运行时检查未返回任何输出",
+ "openCodeMcpUnreachable": "OpenCode 应用 MCP 无法访问",
+ "workingDirectoryMissing": "工作目录丢失",
+ "cliBinaryCouldNotStart": "CLI 二进制文件无法启动",
+ "cliPreflightIncomplete": "CLI 预检未完成",
"authenticationRequired": "需要认证",
- "runtimeProviderNotConfigured": "未配置运行时间提供者",
- "cliPreflightFailed": "ZXCVKEN0ZXCV 飞行前失败",
- "selectedModelCompatible": "选中模式兼容",
- "selectedModelCompatibilityPending": "选定模式的兼容性待定",
- "selectedModelAvailable": "可选模式",
- "selectedModelVerified": "选中模式已验证",
- "selectedModelUnavailable": "无法选择模式",
- "selectedModelTimedOut": "选中模式验证超时",
- "selectedModelCheckFailed": "选中模式检查失败",
- "selectedModelDeferred": "推迟选定模式核查",
- "selectedModelPingNotConfirmed": "未确认选中模式",
- "readyWithNotes": "备注",
- "needsAttention": "需要关注"
+ "runtimeProviderNotConfigured": "未配置运行时提供商",
+ "cliPreflightFailed": "CLI 预检失败",
+ "selectedModelCompatible": "所选模型兼容",
+ "selectedModelCompatibilityPending": "所选模型兼容性待定",
+ "selectedModelAvailable": "可选模型",
+ "selectedModelVerified": "所选模型已验证",
+ "selectedModelUnavailable": "所选模型不可用",
+ "selectedModelTimedOut": "所选模型验证超时",
+ "selectedModelCheckFailed": "所选模型检查失败",
+ "selectedModelDeferred": "选定的模型验证推迟",
+ "selectedModelPingNotConfirmed": "所选模型 ping 未确认",
+ "readyWithNotes": "准备好备注",
+ "needsAttention": "需要注意"
},
- "modelChecksSummary": "选定型号检查 - {{details}}",
+ "modelChecksSummary": "选定模型检查 - {{details}}",
"modelParts": {
- "unavailable": "{{count}}无法使用模型",
- "unavailable_one": "{{count}}无法使用模型",
- "unavailable_other": "无法使用 {{count}} 模型",
+ "unavailable": "{{count}} 模型不可用",
+ "unavailable_one": "{{count}} 模型不可用",
+ "unavailable_other": "{{count}} 模型不可用",
"checkFailed": "{{count}} 模型检查失败",
"checkFailed_one": "{{count}} 模型检查失败",
"checkFailed_other": "{{count}} 模型检查失败",
"timedOut": "{{count}} 模型超时",
"timedOut_one": "{{count}} 模型超时",
"timedOut_other": "{{count}} 模型超时",
- "deferred": "{{count}}推迟核查",
- "deferred_one": "{{count}}推迟核查",
- "deferred_other": "{{count}}推迟核查",
- "pingNotConfirmed": "{{count}} Ping未确认",
- "pingNotConfirmed_one": "{{count}} Ping未确认",
- "pingNotConfirmed_other": "{{count}} Ping未确认",
- "compatibilityPending": "{{count}}兼容、深入核查",
- "compatibilityPending_one": "{{count}}兼容、深入核查",
- "compatibilityPending_other": "{{count}}兼容、深入核查",
- "compatible": "{{count}}兼容",
- "compatible_one": "{{count}}兼容",
- "compatible_other": "{{count}}兼容",
- "checking": "{{count}}检查",
- "checking_one": "{{count}}检查",
- "checking_other": "{{count}}检查",
- "available": "{{count}}可用",
- "available_one": "{{count}}可用",
- "available_other": "{{count}}可用",
- "verified": "{{count}} 经核查",
- "verified_one": "{{count}} 经核查",
- "verified_other": "{{count}} 经核查",
- "unavailable_few": "无法使用 {{count}} 模型",
- "unavailable_many": "无法使用 {{count}} 模型",
+ "deferred": "{{count}} 验证延迟",
+ "deferred_one": "{{count}} 验证延迟",
+ "deferred_other": "{{count}} 验证延迟",
+ "pingNotConfirmed": "{{count}} ping 未确认",
+ "pingNotConfirmed_one": "{{count}} ping 未确认",
+ "pingNotConfirmed_other": "{{count}} ping 未确认",
+ "compatibilityPending": "{{count}} 兼容,深度验证待定",
+ "compatibilityPending_one": "{{count}} 兼容,深度验证待定",
+ "compatibilityPending_other": "{{count}} 兼容,深度验证待定",
+ "compatible": "{{count}} 兼容",
+ "compatible_one": "{{count}} 兼容",
+ "compatible_other": "{{count}} 兼容",
+ "checking": "{{count}} 检查",
+ "checking_one": "{{count}} 检查",
+ "checking_other": "{{count}} 检查",
+ "available": "{{count}} 可用",
+ "available_one": "{{count}} 可用",
+ "available_other": "{{count}} 可用",
+ "verified": "{{count}} 已验证",
+ "verified_one": "{{count}} 已验证",
+ "verified_other": "{{count}} 已验证",
+ "unavailable_few": "{{count}} 模型不可用",
+ "unavailable_many": "{{count}} 模型不可用",
"checkFailed_few": "{{count}} 模型检查失败",
"checkFailed_many": "{{count}} 模型检查失败",
"timedOut_few": "{{count}} 模型超时",
"timedOut_many": "{{count}} 模型超时",
- "deferred_few": "{{count}}推迟核查",
- "deferred_many": "{{count}}推迟核查",
- "pingNotConfirmed_few": "{{count}} Ping未确认",
- "pingNotConfirmed_many": "{{count}} Ping未确认",
- "compatibilityPending_few": "{{count}}兼容、深入核查",
- "compatibilityPending_many": "{{count}}兼容、深入核查",
- "compatible_few": "{{count}}兼容",
- "compatible_many": "{{count}}兼容",
- "checking_few": "{{count}}检查",
- "checking_many": "{{count}}检查",
- "available_few": "{{count}}可用",
- "available_many": "{{count}}可用",
- "verified_few": "{{count}} 经核查",
- "verified_many": "{{count}} 经核查"
+ "deferred_few": "{{count}} 验证延迟",
+ "deferred_many": "{{count}} 验证延迟",
+ "pingNotConfirmed_few": "{{count}} ping 未确认",
+ "pingNotConfirmed_many": "{{count}} ping 未确认",
+ "compatibilityPending_few": "{{count}} 兼容,深度验证待定",
+ "compatibilityPending_many": "{{count}} 兼容,深度验证待定",
+ "compatible_few": "{{count}} 兼容",
+ "compatible_many": "{{count}} 兼容",
+ "checking_few": "{{count}} 检查",
+ "checking_many": "{{count}} 检查",
+ "available_few": "{{count}} 可用",
+ "available_many": "{{count}} 可用",
+ "verified_few": "{{count}} 已验证",
+ "verified_many": "{{count}} 已验证"
},
"openProviderSettings": "打开 {{provider}} 设置",
- "copied": "复制",
+ "copied": "已复制",
"copyDiagnostics": "复制诊断",
- "deepVerificationPending": "深度核查仍在进行中。 OpenCode自由模型可能需要20秒左右.",
+ "deepVerificationPending": "深度验证仍在运行。 OpenCode 免费模型可能需要大约 20 秒。",
"progress": {
- "checkingSelectedProviders": "正在并行检查选中的提供者...",
- "checkingProvider": "正在检查 {{provider}} 供应商...",
- "checkingProviders": "正在检查 {{providers}} 供应商..."
+ "checkingSelectedProviders": "并行检查选定的提供商…",
+ "checkingProvider": "正在检查 {{provider}} 提供商…",
+ "checkingProviders": "正在检查 {{providers}} 提供商…"
},
"failureHints": {
- "openCodeAccessDenied": "修改文件夹权限或将工程移动到一个用户可写入的文件夹 。 作为管理员运行只是临时工作。",
- "openCodeBridgeNoOutput": "重新启动应用程序和 OpenCode 运行时间, 然后重试 。 如果重复,复制诊断。",
- "workingDirectoryMissing": "选择已有的工作目录, 然后重新打开此对话框 。",
- "authenticationRequired": "在 Claude CLI 中认证所需的提供者, 然后重新打开此对话框 。",
- "runtimeProviderNotConfigured": "配置选中的提供者运行时间, 然后重新打开此对话框 。",
- "openCodeRuntimeMissing": "从提供者状态卡安装或重试 OpenCode 运行时间, 然后重新打开此对话框 。",
- "openCodeAppMcpUnreachable": "重试发射刷新OpenCodeapp MCP桥. 如果重复,请重新启动应用程序和 OpenCode 运行时间 。",
- "cliBinaryMissing": "确保本地的 Claude CLI 二进制存在并可以启动,然后重新打开此对话框 。",
- "default": "解决上面的问题, 然后重开这个对话框 。",
- "openCodeNodeModulesSymlinkPermission": "以管理员身份运行 Agent Teams AI, 然后重试启动。"
+ "openCodeAccessDenied": "修复文件夹权限或将项目移动到用户可写的文件夹。以管理员身份运行只是一个临时解决方法。",
+ "openCodeBridgeNoOutput": "重新启动应用和 OpenCode 运行时,然后重试。如果重复出现,请复制诊断信息。",
+ "workingDirectoryMissing": "选择现有的工作目录,然后重新打开此对话框。",
+ "authenticationRequired": "在 Claude CLI 中验证所需的提供商,然后重新打开此对话框。",
+ "runtimeProviderNotConfigured": "配置选定的提供商运行时,然后重新打开此对话框。",
+ "openCodeRuntimeMissing": "从提供商状态卡安装或重试 OpenCode 运行时,然后重新打开此对话框。",
+ "openCodeAppMcpUnreachable": "重试启动以刷新 OpenCode 应用 MCP 桥。如果重复出现,请重新启动应用和 OpenCode 运行时。",
+ "cliBinaryMissing": "确保本地 Claude CLI 二进制文件存在并且可以启动,然后重新打开此对话框。",
+ "default": "解决上述问题,然后重新打开此对话框。",
+ "openCodeNodeModulesSymlinkPermission": "以管理员身份运行 Agent Teams AI,然后重试启动。"
}
},
"presentation": {
- "awaitingPermission": "{{count}}队友等待批准",
- "nameListWithMore": "{{names}}+ 组合键{{count}}更多",
- "waitingForOpenCode": "正在等待 OpenCode: {{names}}",
- "bootstrapStalled": "靴子档停: {{names}}",
- "bootstrapStalledWithOpenCodeWait": "{{stalled}}; 等待开放代码: {{names}}",
- "namedPendingDiagnostic": "{{label}}编号:{{names}}",
- "countPendingDiagnostic": "{{count}} 个{{label}}",
+ "awaitingPermission": "{{count}} 队友正在等待权限批准",
+ "nameListWithMore": "{{names}}, +{{count}} 更多",
+ "waitingForOpenCode": "等待 OpenCode:{{names}}",
+ "bootstrapStalled": "引导程序停止:{{names}}",
+ "bootstrapStalledWithOpenCodeWait": "{{stalled}};等待 OpenCode:{{names}}",
+ "namedPendingDiagnostic": "{{label}}: {{names}}",
+ "countPendingDiagnostic": "{{count}} {{label}}",
"pendingLabels": {
- "bootstrapStalled": "靴子绑住了",
- "shellOnly": "只有贝壳",
- "waitingForBootstrap": "等待靴子夹",
- "bootstrapUnconfirmed": "未证实的靴子陷阱",
+ "bootstrapStalled": "引导程序停滞",
+ "shellOnly": "仅外壳",
+ "waitingForBootstrap": "等待引导程序",
+ "bootstrapUnconfirmed": "引导程序未经确认",
"awaitingPermission": "等待许可",
- "waitingForRuntime": "等待运行时间",
- "shellOnlyLower": "只有外壳",
- "waitingForBootstrapLower": "等待靴子夹",
- "bootstrapUnconfirmedLower": "未证实的靴子",
+ "waitingForRuntime": "等待运行时",
+ "shellOnlyLower": "仅外壳",
+ "waitingForBootstrapLower": "等待引导程序",
+ "bootstrapUnconfirmedLower": "引导程序未确认",
"awaitingPermissionLower": "等待许可",
- "waitingForRuntimeLower": "等待运行时间"
+ "waitingForRuntimeLower": "等待运行时"
},
"failed": {
- "memberFailedToStart": "{{name}}启动失败",
- "teammatesFailedToStart": "{{count}}队友未能启动",
- "teammatesFailedRatio": "{{count}}页:1{{total}}队友启动失败"
+ "memberFailedToStart": "{{name}} 启动失败",
+ "teammatesFailedToStart": "{{count}} 队友启动失败",
+ "teammatesFailedRatio": "{{count}}/{{total}} 队友启动失败"
},
"skipped": {
- "memberSkipped": "{{name}}跳过这次发射",
- "memberSkippedWithReason": "{{name}}跳过这次发射...{{reason}}",
- "memberSkippedCompact": "{{name}}跳过",
- "teammatesSkipped": "{{count}}队友跳伞",
- "teammatesSkippedList": "跳过队友: {{list}}",
- "teammatesSkippedRatio": "{{count}}页:1{{total}}队友跳过这次发射"
+ "memberSkipped": "{{name}} 跳过本次启动",
+ "memberSkippedWithReason": "本次启动跳过了 {{name}} - {{reason}}",
+ "memberSkippedCompact": "{{name}} 已跳过",
+ "teammatesSkipped": "{{count}} 队友跳过",
+ "teammatesSkippedList": "跳过的队友:{{list}}",
+ "teammatesSkippedRatio": "{{count}}/{{total}} 队友跳过了本次启动"
},
"joining": {
- "teammatesStillJoining": "{{count}}队友仍然参加",
- "teammatesStillJoining_one": "{{count}}队友仍然参加",
- "teammatesStillJoining_few": "{{count}}队友仍然参加",
- "teammatesStillJoining_many": "{{count}}队友仍然参加",
- "teammatesStillJoining_other": "{{count}}队友仍然参加",
- "teammatesConfirmedRatio": "{{count}}页:1{{total}}队友确认"
+ "teammatesStillJoining": "{{count}} 队友仍在加入",
+ "teammatesStillJoining_one": "{{count}} 队友仍在加入",
+ "teammatesStillJoining_few": "{{count}} 队友仍在加入",
+ "teammatesStillJoining_many": "{{count}} 队友仍在加入",
+ "teammatesStillJoining_other": "{{count}} 队友仍在加入",
+ "teammatesConfirmedRatio": "{{count}}/{{total}} 队友确认"
},
"ready": {
- "leadOnline": "在线领导",
- "allTeammatesJoined": "所有{{count}}队友加入",
- "teamProvisionedLeadOnline": "提供团队-在线领导",
- "teamProvisionedAllJoined": "提供团队-所有{{count}}队友加入",
- "teamProvisionedStillJoining": "团队提供 - 队友仍在加入",
- "launchFinishedWithErrors": "发射完成错误 - {{count}}/{{total}}队友未能启动",
- "launchContinuedSkipped": "继续发射 - {{count}}/{{total}}队友跳伞",
- "teamLaunchedLeadOnline": "启动团队 - 领导在线",
- "teamLaunchedAllJoined": "团队启动 - {{count}}全体队友加入"
+ "leadOnline": "在线引导",
+ "allTeammatesJoined": "{{count}} 队友全部加入",
+ "teamProvisionedLeadOnline": "团队配置 - 在线领导",
+ "teamProvisionedAllJoined": "团队配置 - 所有 {{count}} 队友都加入",
+ "teamProvisionedStillJoining": "团队已配置 - 队友仍在加入",
+ "launchFinishedWithErrors": "启动完成但出现错误 - {{count}}/{{total}} 队友启动失败",
+ "launchContinuedSkipped": "启动继续 - {{count}}/{{total}} 队友跳过",
+ "teamLaunchedLeadOnline": "团队启动 - 在线领导",
+ "teamLaunchedAllJoined": "团队启动 - 所有 {{count}} 队友加入"
},
"panel": {
- "launchFailed": "发射失败",
- "launchDetails": "发射详情",
- "launchFinishedWithErrors": "发射完成时有错误",
- "launchContinuedSkipped": "与跳过队友继续发射",
- "coreTeamReady": "核心小组准备就绪",
- "finishingLaunch": "完成发射",
- "teamLaunched": "启动小组",
- "launchingTeam": "发射队"
+ "launchFailed": "启动失败",
+ "launchDetails": "启动详情",
+ "launchFinishedWithErrors": "启动完成但有错误",
+ "launchContinuedSkipped": "与跳过的队友一起继续启动",
+ "coreTeamReady": "核心团队准备就绪",
+ "finishingLaunch": "正在完成启动",
+ "teamLaunched": "团队启动",
+ "launchingTeam": "启动团队"
}
}
},
"liveRuntimeStatus": {
- "title": "实时运行状态",
- "description": "只显示心跳和发射状态 。 流程控制仍低于此。",
- "source": "资料来源:{{source}}",
- "lane": "{{lane}}车道",
- "diagnosticOnly": "仅诊断",
- "updated": "更新的 {{value}}",
+ "title": "实时运行时状态",
+ "description": "仅显示心跳和启动状态。过程控制保留在下面。",
+ "source": "来源:{{source}}",
+ "lane": "{{lane}} 车道",
+ "diagnosticOnly": "仅用于诊断",
+ "updated": "更新 {{value}}",
"states": {
- "running": "运行",
+ "running": "运行中",
"starting": "开始",
- "waiting": "等待时",
- "degraded": "需要关注",
+ "waiting": "等待",
+ "degraded": "需要注意",
"stopped": "已停止",
- "unknown": "未知数"
+ "unknown": "未知"
}
},
"taskLogs": {
"exact": {
- "title": "精确的任务日志",
- "loading": "正在装入精确的任务日志...",
- "description": "精确的笔录切片,与Logs中使用的相同执行记录组件.",
- "emptyTitle": "还没有精确的任务日志",
- "emptyDescription": "在有与任务相关的明确记录元数据时,准确的记录稿捆绑将在此出现。",
+ "title": "确切的任务日志",
+ "loading": "正在加载准确的任务日志…",
+ "description": "使用日志中使用的相同执行日志组件呈现的精确转录切片。",
+ "emptyTitle": "尚无确切的任务日志",
+ "emptyDescription": "当明确的任务链接转录本元数据可用时,精确的转录本包将出现在此处。",
"summaryOnly": "仅摘要"
},
"executionSessions": {
"title": "执行会话",
- "online": "在线",
- "updating": "更新...",
- "description": "以会话为中心的语录浏览和预览."
+ "online": "在线的",
+ "updating": "更新中…",
+ "description": "传统的以会话为中心的成绩单浏览和预览。"
},
"stream": {
"title": "任务日志流"
@@ -2180,73 +2180,73 @@
"taskCard": {
"cancelTask": "取消任务 {{taskId}}",
"cancel": "取消",
- "moveBackToTodoConfirm": "把这个任务移回TODO并通知小组?",
+ "moveBackToTodoConfirm": "将此任务移回 TODO 并通知团队?",
"confirm": "确认",
- "keep": "保留",
- "changesNeedAttention": "变化需要注意",
- "changes": "变动",
+ "keep": "保持",
+ "changesNeedAttention": "变化需要关注",
+ "changes": "变化",
"deleteTask": "删除任务",
- "taskLogsActive": "任务日志活动",
- "newTaskLogsArriving": "到达新任务日志",
+ "taskLogsActive": "任务日志处于活动状态",
+ "newTaskLogsArriving": "新任务日志到达",
"awaitingUser": "等待用户",
- "awaitingLead": "等待领先",
- "blockedBy": "被封锁",
- "blocks": "块",
+ "awaitingLead": "等待线索",
+ "blockedBy": "被阻止",
+ "blocks": "积木",
"start": "开始",
- "complete": "完成",
- "approve": "核准",
- "requestReview": "请求审查",
- "manualReview": "手工审查",
+ "complete": "完全的",
+ "approve": "批准",
+ "requestReview": "请求审核",
+ "manualReview": "人工审核",
"requestChanges": "请求更改"
},
"filter": {
"title": "过滤任务",
- "session": "会议",
- "allSessions": "所有会议",
+ "session": "会话",
+ "allSessions": "所有会话",
"teammate": "队友",
- "unassigned": "(未签名)",
- "column": "栏",
+ "unassigned": "(未分配)",
+ "column": "柱子",
"clearAll": "全部清除"
},
"board": {
"addTask": "添加任务",
- "noTasks": "无任务",
- "showMore": "显示{{count}}更多",
- "hiddenCount": "{{count}}隐藏",
- "trash": "废物",
+ "noTasks": "没有任务",
+ "showMore": "再显示 {{count}} 条",
+ "hiddenCount": "{{count}} 隐藏",
+ "trash": "垃圾",
"gridView": "网格视图",
"columnsView": "列视图"
},
"trash": {
- "title": "废物",
+ "title": "垃圾",
"empty": "没有删除的任务",
- "subject": "议题",
- "owner": "拥有者",
- "deleted": "删除",
- "unassigned": "未指定",
+ "subject": "主题",
+ "owner": "所有者",
+ "deleted": "已删除",
+ "unassigned": "未分配",
"restoreTask": "恢复任务",
"restore": "恢复",
"close": "关闭"
},
"sort": {
- "title": "排序任务",
- "sortBy": "排序为",
- "reset": "重设",
+ "title": "对任务进行排序",
+ "sortBy": "排序方式",
+ "reset": "重置",
"options": {
"updatedAt": {
- "label": "上次更新",
- "description": "最近第一次更新"
+ "label": "最后更新",
+ "description": "最近更新的先"
},
"createdAt": {
"label": "已创建",
- "description": "最新的第一个"
+ "description": "最新的优先"
},
"owner": {
- "label": "拥有者",
+ "label": "所有者",
"description": "按受让人字母顺序排列"
},
"manual": {
- "label": "手动",
+ "label": "手动的",
"description": "拖放顺序"
}
}
@@ -2254,88 +2254,88 @@
"search": {
"clearSearch": "清除搜索",
"tasks": "任务",
- "createdAgo": "创建 {{time}}",
- "updatedAgo": "更新的 {{time}}",
- "placeholder": "搜索任务... (#id 或文本)"
+ "createdAgo": "创建了 {{time}}",
+ "updatedAgo": "更新 {{time}}",
+ "placeholder": "搜索任务…(#id 或文本)"
},
"grid": {
"addTask": "添加任务",
- "noTasks": "无任务"
+ "noTasks": "没有任务"
},
- "title": "坎班语Name",
+ "title": "看板",
"columns": {
- "todo": "TODO 苏维埃社会主义共和国",
- "inProgress": "在ZXCVKEN0ZXCV",
- "review": "REVIEW 苏维埃社会主义共和国",
- "done": "DONE 苏维埃社会主义共和国",
- "approved": "APPROVED 苏维埃社会主义共和国"
+ "todo": "待办事项",
+ "inProgress": "进行中",
+ "review": "审核",
+ "done": "完毕",
+ "approved": "已批准"
}
},
"worktreeGitReadiness": {
- "checking": "正在检查 Git 仓库状态 。",
- "ready": "吉特工作树准备好了",
- "readyOnBranch": "在{{branch}}的分支上,Git工作树已经准备就绪.",
- "needsSetup": "工作树隔离需要设置",
- "initialCommitNotice": "初始承诺动作阶段, 并用信件输入所有当前文件",
+ "checking": "正在检查队友工作树的 Git 仓库状态…",
+ "ready": "Git 工作树已准备就绪。",
+ "readyOnBranch": "Git 工作树已在分支 {{branch}} 上准备就绪。",
+ "needsSetup": "工作树隔离需要 Git 设置",
+ "initialCommitNotice": "初始提交操作阶段并提交带有消息的所有当前文件",
"initializeRepository": "初始化 Git 仓库",
- "createInitialCommit": "创建初始承诺",
- "initialCommitMessage": "胆量:首次承诺"
+ "createInitialCommit": "创建初始提交",
+ "initialCommitMessage": "杂务:初始提交"
},
"toolApproval": {
"settings": "设置",
- "autoAllowAllTools": "自动启用所有工具",
- "autoAllowFileEdits": "自动启用文件编辑( 编辑、 写入、 笔记本编辑)",
- "autoAllowSafeCommands": "自动报警安全命令( git, pnpm, npm, Is...)",
- "onTimeout": "超时:",
- "after": "之后",
- "secondsShort": "秒数",
+ "autoAllowAllTools": "自动允许所有工具",
+ "autoAllowFileEdits": "自动允许文件编辑(编辑、写入、NotebookEdit)",
+ "autoAllowSafeCommands": "自动允许安全命令(git、pnpm、npm、ls…)",
+ "onTimeout": "超时时:",
+ "after": "后",
+ "secondsShort": "秒",
"timeoutActions": {
"wait": "永远等待",
"allow": "允许",
- "deny": "拒绝"
+ "deny": "否定"
},
"submit": "提交",
"allow": "允许",
- "deny": "拒绝",
+ "deny": "否定",
"allowAll": "允许全部",
- "pendingCount": "{{count}}待处理",
- "autoActionIn": "自动{{action}}输入{{time}}",
+ "pendingCount": "{{count}} 待定",
+ "autoActionIn": "将在 {{time}} 后自动{{action}}",
"diff": {
"previewChanges": "预览更改",
- "readingFile": "正在读取文件...",
+ "readingFile": "正在读取文件…",
"binaryFile": "二进制文件 - 无法预览",
- "truncated": "在 2MB - diff 上切换的文件可能不完整",
+ "truncated": "文件被截断为 2MB - diff 可能不完整",
"newFile": "新文件"
}
},
"memberWorkSync": {
"details": {
"title": "成员工作同步",
- "actionableItems": "可采取行动的项目",
+ "actionableItems": "可操作的项目",
"fingerprint": "指纹",
"report": "报告",
"none": "无",
- "shadowWouldNudge": "阴影会冲动",
- "yes": "对",
- "no": "无",
- "moreActionableItems": "{{count}}更多可操作项目",
- "diagnostics": "诊断: {{diagnostics}}"
+ "shadowWouldNudge": "影子会轻推",
+ "yes": "是的",
+ "no": "不",
+ "moreActionableItems": "{{count}} 更多可操作项目",
+ "diagnostics": "诊断:{{diagnostics}}"
},
"title": "成员工作同步",
- "loadingDiagnostics": "装入成员的工作同步诊断。",
- "diagnosticsUnavailable": "成员工作同步诊断不可用."
+ "loadingDiagnostics": "正在加载成员工作同步诊断。",
+ "diagnosticsUnavailable": "成员工作同步诊断不可用。"
},
"advancedCli": {
"title": "高级",
"useWorktree": "使用工作树",
- "recent": "近期",
+ "recent": "最近的",
"commandPreview": "命令预览",
"customArguments": "自定义参数",
- "validate": "校验",
+ "validate": "证实",
"validation": {
- "allFlagsValid": "所有旗帜都有效",
- "unknownFlags": "未知数: {{flags}}",
- "protectedFlags": "保护:{{flags}}",
+ "allFlagsValid": "所有标志均有效",
+ "unknownFlags": "未知:{{flags}}",
+ "protectedFlags": "密码保护:{{flags}}",
"failed": "验证失败"
},
"placeholders": {
@@ -2343,108 +2343,108 @@
}
},
"processes": {
- "ago": "{{time}}刚才",
- "stoppedAgo": "在{{time}}之前停了下来",
- "running": "运行",
+ "ago": "{{time}} 前",
+ "stoppedAgo": "之前停止过 {{time}}",
+ "running": "运行中",
"stopped": "已停止",
- "stopProcess": "停止进程( SIGTERM)",
+ "stopProcess": "停止进程(SIGTERM)",
"kill": "杀",
"openInBrowser": "在浏览器中打开",
"open": "打开",
- "pid": "密码{{pid}}",
- "title": "CLI 苏维埃社会主义共和国 进程"
+ "pid": "PID{{pid}}",
+ "title": "CLI 进程"
},
"taskActivity": {
- "loadingDetails": "正在装入活动细节...",
- "contextUnavailable": "这项活动不再有详细的笔录背景。",
- "loading": "正在装入任务活动...",
- "lowSignalOnly": "尚未找到关键任务活动 。 低级执行详情见以下\"任务日志流\".",
- "empty": "现有记录稿中尚未找到明确的任务活动。 下面的执行会话中可能还会有旧的或休眠的会话记录。",
+ "loadingDetails": "正在加载活动详细信息…",
+ "contextUnavailable": "此活动不再提供详细的文字记录上下文。",
+ "loading": "正在加载任务活动…",
+ "lowSignalOnly": "尚未找到关键任务活动。下面的任务日志流中提供了低级执行详细信息。",
+ "empty": "在可用的记录中尚未发现明确的任务活动。旧的或启发式会话日志可能仍可在下面的执行会话中使用。",
"title": "任务活动",
- "description": "从元数据记录中与这项任务相关的明确的关键运行时间活动。"
+ "description": "从转录元数据链接到此任务的关键显式运行时活动。"
},
"sendMessage": {
- "title": "发送信件",
- "description": "直接给一名队员发信息",
- "recipientLabel": "收件人",
- "selectMemberPlaceholder": "选择成员...",
- "messageLabel": "消息",
- "placeholder": "写入信件... (输入发送)",
+ "title": "发送消息",
+ "description": "向团队成员发送直接消息。",
+ "recipientLabel": "接受者",
+ "selectMemberPlaceholder": "选择成员…",
+ "messageLabel": "信息",
+ "placeholder": "写下您的信息…(输入以发送)",
"send": "发送",
- "sending": "正在发送...",
- "charsLeft": "{{count}}左边的字符",
+ "sending": "正在发送…",
+ "charsLeft": "{{count}} 剩余字符数",
"saved": "已保存",
"attachments": {
- "teamOnlineRequired": "团队必须在线附加文件",
+ "teamOnlineRequired": "团队必须在线才能附加文件",
"recipientUnsupported": "文件可以发送给团队领导或 OpenCode 队友",
- "openCodeOnlineRequired": "团队必须在线为 OpenCode 队友附加文件",
- "disabledHint": "为在线团队领队和在线OpenCode队友提供文件附件支持. 删除附件或切换收件人。",
- "attachFiles": "附加文件( 粘贴或拖放) (D)",
- "unavailable": "无附件"
+ "openCodeOnlineRequired": "团队必须在线才能为 OpenCode 队友附加文件",
+ "disabledHint": "在线团队领导和在线 OpenCode 队友支持文件附件。删除附件或切换收件人。",
+ "attachFiles": "附加文件(粘贴或拖放)",
+ "unavailable": "附件不可用"
},
"quote": {
- "remove": "删除引用",
- "replyingTo": "答复"
+ "remove": "删除报价",
+ "replyingTo": "正在回复"
}
},
"taskComments": {
"cancelReply": "取消回复",
- "replyingTo": "答复",
- "placeholder": "添加注释... (输入要发送)",
- "attachFile": "附加文件( 或粘贴)",
- "voiceToText": "语音对文本",
- "comment": "注释",
- "charsLeft": "{{count}}左边的字符",
+ "replyingTo": "正在回复",
+ "placeholder": "添加评论…(输入发送)",
+ "attachFile": "附加文件(或粘贴)",
+ "voiceToText": "语音转文字",
+ "comment": "评论",
+ "charsLeft": "{{count}} 剩余字符数",
"saved": "已保存",
- "awaitingReplyFrom": "等待回复",
+ "awaitingReplyFrom": "正在等待回复",
"or": "或"
},
"taskAttachments": {
- "dropImageHere": "在此丢弃图像",
- "attachImage": "附加图像",
+ "dropImageHere": "将图像拖放到此处",
+ "attachImage": "附上图片",
"pasteOrDragDrop": "或粘贴/拖放",
- "fromOriginalMessage": "从原始消息",
- "dropFilesHere": "在此丢弃文件",
- "loading": "正在装入附件..."
+ "fromOriginalMessage": "来自原始消息",
+ "dropFilesHere": "将文件拖放到此处",
+ "loading": "正在加载附件…"
},
"permissions": {
"autoApproveAllTools": "自动批准所有工具",
- "autonomousModeDescription": "自主模式:团队工具未经确认即执行. 谨慎行事,不要相信密码",
- "manualModeDescription": "手动模式:您会实时批准或拒绝每个工具调用."
+ "autonomousModeDescription": "自主模式:团队工具无需确认即可执行。对不受信任的代码要小心。",
+ "manualModeDescription": "手动模式:您将实时批准或拒绝每个工具调用。"
},
"memberLogStream": {
"tabs": {
"execution": "执行",
- "process": "进程"
+ "process": "过程"
},
"filters": {
- "all": "全体"
+ "all": "全部"
},
"logs": {
"title": "日志",
- "loading": "正在装入成员日志流...",
- "emptyTitle": "此成员的日志流条目尚未找到 。",
- "emptyDescription": "成员范围记录或运行时间记录将在此备有。"
+ "loading": "正在加载成员日志流…",
+ "emptyTitle": "尚未找到该成员的日志流条目。",
+ "emptyDescription": "成员范围的记录或运行时日志将在可用时显示在此处。"
}
},
"reviewDialog": {
- "placeholder": "描述需要改变什么... (输入以提交)",
+ "placeholder": "描述需要更改的内容…(输入提交)",
"submit": "提交",
- "charsLeft": "{{count}}左边的字符",
+ "charsLeft": "{{count}} 剩余字符数",
"saved": "已保存",
- "title": "请求更改"
+ "title": "请求变更"
},
"dialogs": {
"actions": {
- "openDashboard": "打开挂板",
- "openTeam": "开放团队",
+ "openDashboard": "打开控制台",
+ "openTeam": "开放组队",
"cancel": "取消"
},
"membersJson": {
"hide": "隐藏 JSON"
},
"optional": {
- "badge": "可选"
+ "badge": "选修的"
}
},
"runningTeams": {
@@ -2454,34 +2454,34 @@
"provisioning": "启动中",
"idle": "运行中"
},
- "noProject": "无项目"
+ "noProject": "没有项目"
},
"layout": {
- "maxPanesReached": "达到的最大 {{count}} 面板"
+ "maxPanesReached": "已达到 {{count}} 窗格的最大值"
},
"codexReconnect": {
- "description": "您的编码会话似乎已停滞 。 重新连接继续 。",
+ "description": "您的 Codex 会话似乎已过时。重新连接以继续。",
"useCode": "使用代码",
- "generating": "正在生成...",
+ "generating": "生成…",
"openLogin": "打开登录",
"generateLink": "生成链接"
},
"effortLevel": {
- "label": "努力级别( 可选)",
- "maxDescription": "马克斯给模型提供了困难任务的最推理时间."
+ "label": "努力程度(可选)",
+ "maxDescription": "Max 为模型提供了完成困难任务最多的推理时间。"
},
"contextLimit": {
- "limitTo200k": "上下文限制为 200K 令牌",
- "always200k": "(这个型号总是200K)",
- "tooltipContent": "支持时, 将发射保留在一个 200K 上下文窗口内 。",
+ "limitTo200k": "将上下文限制为 200K Token",
+ "always200k": "(此模型始终为 200K)",
+ "tooltipContent": "如果支持,将启动保持在 200K Token 上下文窗口内。",
"tooltipTitle": "上下文限制"
},
"roleSelect": {
- "noRole": "无角色",
- "customRole": "自定义角色...",
- "searchPlaceholder": "搜索角色...",
- "empty": "没有找到角色 。",
- "reservedRole": "这个角色是保留下来的",
+ "noRole": "没有角色",
+ "customRole": "自定义角色…",
+ "searchPlaceholder": "搜索角色…",
+ "empty": "未找到角色。",
+ "reservedRole": "该角色已保留",
"emptyCustomRole": "角色不能为空"
}
}
diff --git a/src/features/runtime-provider-management/main/infrastructure/AgentTeamsRuntimeProviderManagementCliClient.ts b/src/features/runtime-provider-management/main/infrastructure/AgentTeamsRuntimeProviderManagementCliClient.ts
index 9667402c..68809aa6 100644
--- a/src/features/runtime-provider-management/main/infrastructure/AgentTeamsRuntimeProviderManagementCliClient.ts
+++ b/src/features/runtime-provider-management/main/infrastructure/AgentTeamsRuntimeProviderManagementCliClient.ts
@@ -1096,7 +1096,10 @@ export class AgentTeamsRuntimeProviderManagementCliClient implements RuntimeProv
if (process.platform === 'win32' && isOpenCodeNodeModulesSymlinkError(failure.message)) {
const profileId = extractProfileIdFromSymlinkError(failure.message);
if (profileId) {
- const junctionReady = ensureOpenCodeProfileNodeModulesJunction(profileId, failure.message);
+ const junctionReady = ensureOpenCodeProfileNodeModulesJunction(
+ profileId,
+ failure.message
+ );
if (junctionReady) {
try {
const retryResult = await execCli(
@@ -1116,7 +1119,8 @@ export class AgentTeamsRuntimeProviderManagementCliClient implements RuntimeProv
}
}
- const retryResponse = extractJsonObjectFromError(error);
+ const retryResponse =
+ extractJsonObjectFromError(error);
if (retryResponse) {
return retryResponse;
}
@@ -1176,7 +1180,10 @@ export class AgentTeamsRuntimeProviderManagementCliClient implements RuntimeProv
if (process.platform === 'win32' && isOpenCodeNodeModulesSymlinkError(failure.message)) {
const profileId = extractProfileIdFromSymlinkError(failure.message);
if (profileId) {
- const junctionReady = ensureOpenCodeProfileNodeModulesJunction(profileId, failure.message);
+ const junctionReady = ensureOpenCodeProfileNodeModulesJunction(
+ profileId,
+ failure.message
+ );
if (junctionReady) {
try {
const retryResult = await execCli(
diff --git a/src/main/services/discovery/SessionContentFilter.ts b/src/main/services/discovery/SessionContentFilter.ts
index 7e4bd78d..bc1e721a 100644
--- a/src/main/services/discovery/SessionContentFilter.ts
+++ b/src/main/services/discovery/SessionContentFilter.ts
@@ -21,9 +21,7 @@
* - synthetic assistant messages (model='')
*/
-import {
- HARD_NOISE_TAGS,
-} from '@main/constants/messageTags';
+import { HARD_NOISE_TAGS } from '@main/constants/messageTags';
import { LocalFileSystemProvider } from '@main/services/infrastructure/LocalFileSystemProvider';
import { type ChatHistoryEntry, type ContentBlock } from '@main/types';
import { createLogger } from '@shared/utils/logger';
diff --git a/src/main/services/discovery/SubagentResolver.ts b/src/main/services/discovery/SubagentResolver.ts
index 38055c4f..a244110d 100644
--- a/src/main/services/discovery/SubagentResolver.ts
+++ b/src/main/services/discovery/SubagentResolver.ts
@@ -181,10 +181,7 @@ export class SubagentResolver {
}
private isAuthoredUserMessage(message: ParsedMessage): boolean {
- return (
- isHumanAuthoredParsedUserMessage(message) ||
- isDisplayableTeammateProtocol(message)
- );
+ return isHumanAuthoredParsedUserMessage(message) || isDisplayableTeammateProtocol(message);
}
private extractUserText(message: ParsedMessage): string {
diff --git a/src/renderer/utils/displayItemBuilder.ts b/src/renderer/utils/displayItemBuilder.ts
index 05eb8691..af5e00a4 100644
--- a/src/renderer/utils/displayItemBuilder.ts
+++ b/src/renderer/utils/displayItemBuilder.ts
@@ -405,7 +405,10 @@ export function buildDisplayItemsFromMessages(
// Check for teammate messages (non-meta user messages with content)
// One user message may contain multiple blocks
- if (msg.type === 'user' && (isHumanAuthoredUserTurn(msg) || isDisplayableTeammateProtocol(msg))) {
+ if (
+ msg.type === 'user' &&
+ (isHumanAuthoredUserTurn(msg) || isDisplayableTeammateProtocol(msg))
+ ) {
const rawText =
typeof msg.content === 'string'
? msg.content
diff --git a/src/shared/utils/userTurnProvenance.ts b/src/shared/utils/userTurnProvenance.ts
index e7f1ac47..57ee64f4 100644
--- a/src/shared/utils/userTurnProvenance.ts
+++ b/src/shared/utils/userTurnProvenance.ts
@@ -66,9 +66,7 @@ export function classifyUserTurnProvenance(
return originKind;
}
- const legacyProtocolKind = classifyLegacyProtocolText(
- getTextContent(getMessageContent(message))
- );
+ const legacyProtocolKind = classifyLegacyProtocolText(getTextContent(getMessageContent(message)));
if (legacyProtocolKind) {
return legacyProtocolKind;
}
@@ -97,9 +95,7 @@ export function isSyntheticReplayNoise(message: UserTurnProvenanceInput): boolea
);
}
-export function isDisplayableTeammateProtocol(
- message: UserTurnProvenanceInput
-): boolean {
+export function isDisplayableTeammateProtocol(message: UserTurnProvenanceInput): boolean {
return (
classifyUserTurnProvenance(message) === 'teammate-protocol' &&
message.isMeta !== true &&
@@ -149,9 +145,7 @@ function normalizeOriginKind(
}
}
-function classifyLegacyProtocolText(
- text: string | undefined
-): UserTurnProvenanceKind | undefined {
+function classifyLegacyProtocolText(text: string | undefined): UserTurnProvenanceKind | undefined {
if (!text) {
return undefined;
}
@@ -215,9 +209,7 @@ function hasSystemOutputContent(content: unknown): boolean {
Array.isArray(content) &&
content.some(
(block) =>
- isContentBlock(block) &&
- block.type === 'text' &&
- startsWithSystemOutputTag(block.text)
+ isContentBlock(block) && block.type === 'text' && startsWithSystemOutputTag(block.text)
)
);
}