diff --git a/.github/ISSUE_TEMPLATE/add-provider-model.md b/.github/ISSUE_TEMPLATE/add-provider-model.md new file mode 100644 index 00000000000..f1ef8e33327 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/add-provider-model.md @@ -0,0 +1,13 @@ +--- +name: Add provider model +about: Add a provider model that isn't htere +title: '' +labels: model +assignees: '' +type: Task + +--- + +Name of model: (GPT 5.4) +Model creator: (i.e. Open AI) +Link to model: diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000000..b4ae7eed125 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,34 @@ +--- +name: Bug report +about: Create a report to help us improve +title: "[BUG] " +labels: bug +assignees: '' +type: Bug + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Video** +Add a video of the incident happening, it will help us debug + +**What version of zoo are you running** +i.e. 3.55 + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000000..a481b8cd450 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,21 @@ +--- +name: Feature request +about: What do you want to add to zoo? +title: '' +labels: enhancement +assignees: '' +type: Feature + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/apps/cli/README.md b/apps/cli/README.md index 8dec1f3a1c6..1541f0e048a 100644 --- a/apps/cli/README.md +++ b/apps/cli/README.md @@ -130,81 +130,52 @@ printf '{"command":"start","requestId":"1","prompt":"1+1=?"}\n' | roo --print -- printf '{"command":"start","requestId":"1","taskId":"018f7fc8-7c96-7f7c-98aa-2ec4ff7f6d87","prompt":"1+1=?"}\n' | roo --print --stdin-prompt-stream --output-format stream-json ``` -### Roo Code Cloud Authentication +### Legacy Roo Auth Token Cleanup -To use Roo Code Cloud features (like the provider proxy), you need to authenticate: +Normal CLI usage is login-free. Use `--provider` with your own API key, or set the provider environment variable directly. -```bash -# Log in to Roo Code Cloud (opens browser) -roo auth login +Roo Code Router has been removed from the CLI. The remaining `auth` commands only help inspect or delete any legacy Roo auth token still stored from older releases: -# Check authentication status +```bash +# Check whether a legacy Roo auth token is still stored roo auth status -# Log out +# Remove an old stored Roo auth token roo auth logout ``` -The `auth login` command: - -1. Opens your browser to authenticate with Roo Code Cloud -2. Receives a secure token via localhost callback -3. Stores the token in `~/.config/roo/credentials.json` - -Tokens are valid for 90 days. The CLI will prompt you to re-authenticate when your token expires. - -**Authentication Flow:** - -``` -┌──────┐ ┌─────────┐ ┌───────────────┐ -│ CLI │ │ Browser │ │ Roo Code Cloud│ -└──┬───┘ └────┬────┘ └───────┬───────┘ - │ │ │ - │ Open auth URL │ │ - │─────────────────>│ │ - │ │ │ - │ │ Authenticate │ - │ │─────────────────────>│ - │ │ │ - │ │<─────────────────────│ - │ │ Token via callback │ - │<─────────────────│ │ - │ │ │ - │ Store token │ │ - │ │ │ -``` +If you never used Roo Code Router, you can ignore this section entirely. ## Options -| Option | Description | Default | -| --------------------------------------- | --------------------------------------------------------------------------------------- | ---------------------------------------- | -| `[prompt]` | Your prompt (positional argument, optional) | None | -| `--prompt-file ` | Read prompt from a file instead of command line argument | None | -| `--create-with-session-id ` | Create a new task using the provided session ID (UUID) | None | -| `-w, --workspace ` | Workspace path to operate in | Current directory | -| `-p, --print` | Print response and exit (non-interactive mode) | `false` | -| `--stdin-prompt-stream` | Read NDJSON control commands from stdin (requires `--print`) | `false` | -| `-e, --extension ` | Path to the extension bundle directory | Auto-detected | -| `-d, --debug` | Enable debug output (includes detailed debug information, prompts, paths, etc) | `false` | -| `-a, --require-approval` | Require manual approval before actions execute | `false` | -| `-k, --api-key ` | API key for the LLM provider | From env var | -| `--provider ` | API provider (roo, anthropic, openai, openrouter, etc.) | `openrouter` (or `roo` if authenticated) | -| `-m, --model ` | Model to use | `anthropic/claude-opus-4.6` | -| `--mode ` | Mode to start in (code, architect, ask, debug, etc.) | `code` | -| `--terminal-shell ` | Absolute shell path for inline terminal command execution | Auto-detected shell | -| `-r, --reasoning-effort ` | Reasoning effort level (unspecified, disabled, none, minimal, low, medium, high, xhigh) | `medium` | -| `--consecutive-mistake-limit ` | Consecutive error/repetition limit before guidance prompt (`0` disables the limit) | `10` | -| `--ephemeral` | Run without persisting state (uses temporary storage) | `false` | -| `--oneshot` | Exit upon task completion | `false` | -| `--output-format ` | Output format with `--print`: `text`, `json`, or `stream-json` | `text` | +| Option | Description | Default | +| --------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------- | +| `[prompt]` | Your prompt (positional argument, optional) | None | +| `--prompt-file ` | Read prompt from a file instead of command line argument | None | +| `--create-with-session-id ` | Create a new task using the provided session ID (UUID) | None | +| `-w, --workspace ` | Workspace path to operate in | Current directory | +| `-p, --print` | Print response and exit (non-interactive mode) | `false` | +| `--stdin-prompt-stream` | Read NDJSON control commands from stdin (requires `--print`) | `false` | +| `-e, --extension ` | Path to the extension bundle directory | Auto-detected | +| `-d, --debug` | Enable debug output (includes detailed debug information, prompts, paths, etc) | `false` | +| `-a, --require-approval` | Require manual approval before actions execute | `false` | +| `-k, --api-key ` | API key for the LLM provider | From env var | +| `--provider ` | API provider (anthropic, openai-native, gemini, openrouter, vercel-ai-gateway) | `openrouter` | +| `-m, --model ` | Model to use | `anthropic/claude-opus-4.6` | +| `--mode ` | Mode to start in (code, architect, ask, debug, etc.) | `code` | +| `--terminal-shell ` | Absolute shell path for inline terminal command execution | Auto-detected shell | +| `-r, --reasoning-effort ` | Reasoning effort level (unspecified, disabled, none, minimal, low, medium, high, xhigh) | `medium` | +| `--consecutive-mistake-limit ` | Consecutive error/repetition limit before guidance prompt (`0` disables the limit) | `10` | +| `--ephemeral` | Run without persisting state (uses temporary storage) | `false` | +| `--oneshot` | Exit upon task completion | `false` | +| `--output-format ` | Output format with `--print`: `text`, `json`, or `stream-json` | `text` | ## Auth Commands -| Command | Description | -| ----------------- | ---------------------------------- | -| `roo auth login` | Authenticate with Roo Code Cloud | -| `roo auth logout` | Clear stored authentication token | -| `roo auth status` | Show current authentication status | +| Command | Description | +| ----------------- | ------------------------------------ | +| `roo auth logout` | Clear a stored legacy Roo auth token | +| `roo auth status` | Show legacy Roo token status | ## Environment Variables @@ -212,19 +183,12 @@ The CLI will look for API keys in environment variables if not provided via `--a | Provider | Environment Variable | | ----------------- | --------------------------- | -| roo | `ROO_API_KEY` | | anthropic | `ANTHROPIC_API_KEY` | | openai-native | `OPENAI_API_KEY` | | openrouter | `OPENROUTER_API_KEY` | | gemini | `GOOGLE_API_KEY` | | vercel-ai-gateway | `VERCEL_AI_GATEWAY_API_KEY` | -**Authentication Environment Variables:** - -| Variable | Description | -| ----------------- | -------------------------------------------------------------------- | -| `ROO_WEB_APP_URL` | Override the Roo Code Cloud URL (default: `https://app.roocode.com`) | - ## Architecture ``` @@ -268,7 +232,7 @@ The CLI will look for API keys in environment variables if not provided via `--a ```bash # Run directly from source (no build required) -pnpm dev --provider roo --api-key $ROO_API_KEY --print "Hello" +pnpm dev --provider openrouter --api-key $OPENROUTER_API_KEY --print "Hello" # Run tests pnpm test @@ -280,10 +244,10 @@ pnpm check-types pnpm lint ``` -By default the `start` script points `ROO_CODE_PROVIDER_URL` at `http://localhost:8080/proxy` for local development. To point at the production API instead, override the environment variable: +By default the dev script still points `ROO_CODE_PROVIDER_URL` at `http://localhost:8080/proxy` for local extension-host development. The CLI provider selection itself should use a non-Router provider such as OpenRouter. To point the backend URL at production instead, override the environment variable: ```bash -ROO_CODE_PROVIDER_URL=https://api.roocode.com/proxy pnpm dev --provider roo --api-key $ROO_API_KEY --print "Hello" +ROO_CODE_PROVIDER_URL=https://api.roocode.com/proxy pnpm dev --provider openrouter --api-key $OPENROUTER_API_KEY --print "Hello" ``` ## Releasing diff --git a/apps/cli/src/commands/auth/__tests__/auth-commands.test.ts b/apps/cli/src/commands/auth/__tests__/auth-commands.test.ts new file mode 100644 index 00000000000..0a3c87c16bd --- /dev/null +++ b/apps/cli/src/commands/auth/__tests__/auth-commands.test.ts @@ -0,0 +1,76 @@ +vi.mock("@/lib/storage/index.js", () => ({ + loadToken: vi.fn(), + loadCredentials: vi.fn(), + getCredentialsPath: vi.fn(() => "/tmp/roo/cli-credentials.json"), + hasToken: vi.fn(), + clearToken: vi.fn(), +})) + +vi.mock("@/lib/auth/index.js", () => ({ + isTokenExpired: vi.fn(), + isTokenValid: vi.fn(), + getTokenExpirationDate: vi.fn(), +})) + +import { status } from "../status.js" +import { logout } from "../logout.js" +import { loadToken, loadCredentials, getCredentialsPath, hasToken, clearToken } from "@/lib/storage/index.js" +import { isTokenExpired, isTokenValid, getTokenExpirationDate } from "@/lib/auth/index.js" + +describe("auth commands", () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it("reports missing Roo auth tokens as normal for standard CLI usage", async () => { + vi.mocked(loadToken).mockResolvedValue(null) + const consoleLog = vi.spyOn(console, "log").mockImplementation(() => {}) + + const result = await status() + + expect(result).toEqual({ authenticated: false }) + expect(consoleLog.mock.calls.flat().join("\n")).toContain("Normal CLI usage does not require login.") + expect(consoleLog.mock.calls.flat().join("\n")).toContain("Roo Code Router has been removed") + }) + + it("reports optional Roo auth token details when available", async () => { + const token = "header.payload.signature" + const expiresAt = new Date("2026-05-01T00:00:00.000Z") + + vi.mocked(loadToken).mockResolvedValue(token) + vi.mocked(loadCredentials).mockResolvedValue({ token, createdAt: "2026-04-01T00:00:00.000Z" }) + vi.mocked(isTokenValid).mockReturnValue(true) + vi.mocked(isTokenExpired).mockReturnValue(false) + vi.mocked(getTokenExpirationDate).mockReturnValue(expiresAt) + vi.mocked(getCredentialsPath).mockReturnValue("/tmp/roo/cli-credentials.json") + const consoleLog = vi.spyOn(console, "log").mockImplementation(() => {}) + + const result = await status({ verbose: true }) + + expect(result.authenticated).toBe(true) + expect(consoleLog.mock.calls.flat().join("\n")).toContain("Legacy Roo auth token still stored") + expect(consoleLog.mock.calls.flat().join("\n")).toContain("/tmp/roo/cli-credentials.json") + }) + + it("removes stored Roo auth tokens", async () => { + vi.mocked(hasToken).mockResolvedValue(true) + const consoleLog = vi.spyOn(console, "log").mockImplementation(() => {}) + + const result = await logout() + + expect(result).toEqual({ success: true, wasLoggedIn: true }) + expect(clearToken).toHaveBeenCalledTimes(1) + expect(consoleLog.mock.calls.flat().join("\n")).toContain("Removed stored legacy Roo auth token") + }) + + it("treats missing Roo auth tokens as already logged out", async () => { + vi.mocked(hasToken).mockResolvedValue(false) + const consoleLog = vi.spyOn(console, "log").mockImplementation(() => {}) + + const result = await logout() + + expect(result).toEqual({ success: true, wasLoggedIn: false }) + expect(clearToken).not.toHaveBeenCalled() + expect(consoleLog.mock.calls.flat().join("\n")).toContain("No legacy Roo auth token stored.") + }) +}) diff --git a/apps/cli/src/commands/auth/index.ts b/apps/cli/src/commands/auth/index.ts index 52ae7673a7e..9c499fbd3f7 100644 --- a/apps/cli/src/commands/auth/index.ts +++ b/apps/cli/src/commands/auth/index.ts @@ -1,3 +1,2 @@ -export * from "./login.js" export * from "./logout.js" export * from "./status.js" diff --git a/apps/cli/src/commands/auth/login.ts b/apps/cli/src/commands/auth/login.ts deleted file mode 100644 index ab85385b0f9..00000000000 --- a/apps/cli/src/commands/auth/login.ts +++ /dev/null @@ -1,177 +0,0 @@ -import http from "http" -import { randomBytes } from "crypto" -import net from "net" -import { exec } from "child_process" - -import { AUTH_BASE_URL } from "@/types/index.js" -import { saveToken } from "@/lib/storage/index.js" - -export interface LoginOptions { - timeout?: number - verbose?: boolean -} - -export type LoginResult = - | { - success: true - token: string - } - | { - success: false - error: string - } - -const LOCALHOST = "127.0.0.1" - -export async function login({ timeout = 5 * 60 * 1000, verbose = false }: LoginOptions = {}): Promise { - const state = randomBytes(16).toString("hex") - const port = await getAvailablePort() - const host = `http://${LOCALHOST}:${port}` - - if (verbose) { - console.log(`[Auth] Starting local callback server on port ${port}`) - } - - // Create promise that will be resolved when we receive the callback. - const tokenPromise = new Promise<{ token: string; state: string }>((resolve, reject) => { - const server = http.createServer((req, res) => { - const url = new URL(req.url!, host) - - if (url.pathname === "/callback") { - const receivedState = url.searchParams.get("state") - const token = url.searchParams.get("token") - const error = url.searchParams.get("error") - - if (error) { - const errorUrl = new URL(`${AUTH_BASE_URL}/cli/sign-in?error=error-in-callback`) - errorUrl.searchParams.set("message", error) - res.writeHead(302, { Location: errorUrl.toString() }) - res.end(() => { - server.close() - reject(new Error(error)) - }) - } else if (!token) { - const errorUrl = new URL(`${AUTH_BASE_URL}/cli/sign-in?error=missing-token`) - errorUrl.searchParams.set("message", "Missing token in callback") - res.writeHead(302, { Location: errorUrl.toString() }) - res.end(() => { - server.close() - reject(new Error("Missing token in callback")) - }) - } else if (receivedState !== state) { - const errorUrl = new URL(`${AUTH_BASE_URL}/cli/sign-in?error=invalid-state-parameter`) - errorUrl.searchParams.set("message", "Invalid state parameter") - res.writeHead(302, { Location: errorUrl.toString() }) - res.end(() => { - server.close() - reject(new Error("Invalid state parameter")) - }) - } else { - res.writeHead(302, { Location: `${AUTH_BASE_URL}/cli/sign-in?success=true` }) - res.end(() => { - server.close() - resolve({ token, state: receivedState }) - }) - } - } else { - res.writeHead(404, { "Content-Type": "text/plain" }) - res.end("Not found") - } - }) - - server.listen(port, LOCALHOST) - - const timeoutId = setTimeout(() => { - server.close() - reject(new Error("Authentication timed out")) - }, timeout) - - server.on("close", () => { - clearTimeout(timeoutId) - }) - }) - - const authUrl = new URL(`${AUTH_BASE_URL}/cli/sign-in`) - authUrl.searchParams.set("state", state) - authUrl.searchParams.set("callback", `${host}/callback`) - - console.log("Opening browser for authentication...") - console.log(`If the browser doesn't open, visit: ${authUrl.toString()}`) - - try { - await openBrowser(authUrl.toString()) - } catch (error) { - if (verbose) { - console.warn("[Auth] Failed to open browser automatically:", error) - } - - console.log("Please open the URL above in your browser manually.") - } - - try { - const { token } = await tokenPromise - await saveToken(token) - console.log("✓ Successfully authenticated!") - return { success: true, token } - } catch (error) { - const message = error instanceof Error ? error.message : String(error) - console.error(`✗ Authentication failed: ${message}`) - return { success: false, error: message } - } -} - -async function getAvailablePort(startPort = 49152, endPort = 65535): Promise { - return new Promise((resolve, reject) => { - const server = net.createServer() - let port = startPort - - const tryPort = () => { - server.once("error", (err: NodeJS.ErrnoException) => { - if (err.code === "EADDRINUSE" && port < endPort) { - port++ - tryPort() - } else { - reject(err) - } - }) - - server.once("listening", () => { - server.close(() => { - resolve(port) - }) - }) - - server.listen(port, LOCALHOST) - } - - tryPort() - }) -} - -function openBrowser(url: string): Promise { - return new Promise((resolve, reject) => { - const platform = process.platform - let command: string - - switch (platform) { - case "darwin": - command = `open "${url}"` - break - case "win32": - command = `start "" "${url}"` - break - default: - // Linux and other Unix-like systems. - command = `xdg-open "${url}"` - break - } - - exec(command, (error) => { - if (error) { - reject(error) - } else { - resolve() - } - }) - }) -} diff --git a/apps/cli/src/commands/auth/logout.ts b/apps/cli/src/commands/auth/logout.ts index 61c3cb37a49..8eaa7c37b79 100644 --- a/apps/cli/src/commands/auth/logout.ts +++ b/apps/cli/src/commands/auth/logout.ts @@ -13,7 +13,7 @@ export async function logout({ verbose = false }: LogoutOptions = {}): Promise const token = await loadToken() if (!token) { - console.log("✗ Not authenticated") + console.log("No legacy Roo auth token stored.") console.log("") - console.log("Run: roo auth login") + console.log("Normal CLI usage does not require login.") + console.log("Roo Code Router has been removed, so no legacy Roo sign-in is required.") return { authenticated: false } } @@ -35,9 +36,10 @@ export async function status(options: StatusOptions = {}): Promise const createdAt = credentials?.createdAt ? new Date(credentials.createdAt) : undefined if (expired) { - console.log("✗ Authentication token expired") + console.log("Stored legacy Roo auth token expired.") console.log("") - console.log("Run: roo auth login") + console.log("Standard CLI usage still works without login.") + console.log("Roo Code Router has been removed, so you can safely ignore or delete this token.") return { authenticated: false, @@ -47,9 +49,9 @@ export async function status(options: StatusOptions = {}): Promise } if (expiringSoon) { - console.log("⚠ Expires soon; refresh with `roo auth login`") + console.log("⚠ Legacy Roo auth token expires soon; use `roo auth logout` if you want to clean it up.") } else { - console.log("✓ Authenticated") + console.log("✓ Legacy Roo auth token still stored") } if (expiresAt) { diff --git a/apps/cli/src/commands/cli/__tests__/run-provider-resolution.test.ts b/apps/cli/src/commands/cli/__tests__/run-provider-resolution.test.ts new file mode 100644 index 00000000000..486358d0dbc --- /dev/null +++ b/apps/cli/src/commands/cli/__tests__/run-provider-resolution.test.ts @@ -0,0 +1,50 @@ +import { DEFAULT_PROVIDER } from "@/types/index.js" +import { resolveProviderPreference } from "../run.js" + +describe("run provider resolution", () => { + it("defaults to the login-free provider when nothing is configured", () => { + const result = resolveProviderPreference({}) + + expect(result).toEqual({ + provider: DEFAULT_PROVIDER, + fellBackFromStoredRooPreference: false, + fellBackFromExplicitRooRequest: false, + }) + }) + + it("falls back from saved Roo preferences", () => { + const result = resolveProviderPreference({ + settingsProvider: "roo", + }) + + expect(result).toEqual({ + provider: DEFAULT_PROVIDER, + fellBackFromStoredRooPreference: true, + fellBackFromExplicitRooRequest: false, + }) + }) + + it("falls back from an explicitly requested Roo provider selection", () => { + const result = resolveProviderPreference({ + flagProvider: "roo", + }) + + expect(result).toEqual({ + provider: DEFAULT_PROVIDER, + fellBackFromStoredRooPreference: false, + fellBackFromExplicitRooRequest: true, + }) + }) + + it("preserves supported providers", () => { + const result = resolveProviderPreference({ + settingsProvider: "anthropic", + }) + + expect(result).toEqual({ + provider: "anthropic", + fellBackFromStoredRooPreference: false, + fellBackFromExplicitRooRequest: false, + }) + }) +}) diff --git a/apps/cli/src/commands/cli/list.ts b/apps/cli/src/commands/cli/list.ts index 31898c59cda..3a7e99170f6 100644 --- a/apps/cli/src/commands/cli/list.ts +++ b/apps/cli/src/commands/cli/list.ts @@ -10,7 +10,6 @@ import { getProviderDefaultModelId } from "@roo-code/types" import { ExtensionHost, type ExtensionHostOptions } from "@/agent/index.js" import { readWorkspaceTaskSessions } from "@/lib/task-history/index.js" -import { loadToken } from "@/lib/storage/index.js" import { getDefaultExtensionPath } from "@/lib/utils/extension.js" import { getApiKeyFromEnv } from "@/lib/utils/provider.js" import { isRecord } from "@/lib/utils/guards.js" @@ -106,14 +105,14 @@ function outputSessionsText(sessions: SessionLike[]): void { async function createListHost(options: BaseListOptions, hostOptions: ListHostOptions): Promise { const workspacePath = resolveWorkspacePath(options.workspace) const extensionPath = resolveExtensionPath(options.extension) - const apiKey = options.apiKey || (await loadToken()) || getApiKeyFromEnv("roo") + const apiKey = options.apiKey || getApiKeyFromEnv("openrouter") const extensionHostOptions: ExtensionHostOptions = { mode: "code", reasoningEffort: undefined, user: null, - provider: "roo", - model: getProviderDefaultModelId("roo"), + provider: "openrouter", + model: getProviderDefaultModelId("openrouter"), apiKey, workspacePath, extensionPath, @@ -145,7 +144,7 @@ async function createListHost(options: BaseListOptions, hostOptions: ListHostOpt */ function requestFromExtension( host: ExtensionHost, - requestType: WebviewMessage["type"], + request: WebviewMessage, extract: (message: Record) => T | undefined, ): Promise { return new Promise((resolve, reject) => { @@ -188,17 +187,17 @@ function requestFromExtension( const timeoutId = setTimeout(() => { finish(() => - reject(new Error(`Timed out waiting for ${requestType} response after ${REQUEST_TIMEOUT_MS}ms`)), + reject(new Error(`Timed out waiting for ${request.type} response after ${REQUEST_TIMEOUT_MS}ms`)), ) }, REQUEST_TIMEOUT_MS) host.on("extensionWebviewMessage", onMessage) - host.sendToExtension({ type: requestType }) + host.sendToExtension(request) }) } function requestCommands(host: ExtensionHost): Promise { - return requestFromExtension(host, "requestCommands", (message) => { + return requestFromExtension(host, { type: "requestCommands" }, (message) => { if (message.type !== "commands") { return undefined } @@ -207,7 +206,7 @@ function requestCommands(host: ExtensionHost): Promise { } function requestModes(host: ExtensionHost): Promise { - return requestFromExtension(host, "requestModes", (message) => { + return requestFromExtension(host, { type: "requestModes" }, (message) => { if (message.type !== "modes") { return undefined } @@ -215,27 +214,19 @@ function requestModes(host: ExtensionHost): Promise { }) } -function requestRooModels(host: ExtensionHost): Promise { - return requestFromExtension(host, "requestRooModels", (message) => { - if (message.type !== "singleRouterModelFetchResponse") { - return undefined - } - - const values = isRecord(message.values) ? message.values : undefined - if (values?.provider !== "roo") { - return undefined - } - - if (message.success === false) { - const errorMessage = - typeof message.error === "string" && message.error.length > 0 - ? message.error - : "Failed to fetch Roo models" - throw new Error(errorMessage) - } +function requestOpenRouterModels(host: ExtensionHost): Promise { + return requestFromExtension( + host, + { type: "requestRouterModels", values: { provider: "openrouter" } }, + (message) => { + if (message.type !== "routerModels") { + return undefined + } - return isRecord(values.models) ? (values.models as ModelRecord) : {} - }) + const routerModels = isRecord(message.routerModels) ? message.routerModels : undefined + return isRecord(routerModels?.openrouter) ? (routerModels.openrouter as ModelRecord) : {} + }, + ) } async function withHostAndSignalHandlers( @@ -299,7 +290,7 @@ export async function listModels(options: BaseListOptions): Promise { const format = parseFormat(options.format) await withHostAndSignalHandlers(options, { ephemeral: true }, async (host) => { - const models = await requestRooModels(host) + const models = await requestOpenRouterModels(host) if (format === "json") { outputJson({ models }) diff --git a/apps/cli/src/commands/cli/run.ts b/apps/cli/src/commands/cli/run.ts index 62760919e7e..ae263c55736 100644 --- a/apps/cli/src/commands/cli/run.ts +++ b/apps/cli/src/commands/cli/run.ts @@ -10,20 +10,17 @@ import { setLogger } from "@roo-code/vscode-shim" import { FlagOptions, isSupportedProvider, - OnboardingProviderChoice, supportedProviders, DEFAULT_FLAGS, + DEFAULT_PROVIDER, REASONING_EFFORTS, - SDK_BASE_URL, OutputFormat, } from "@/types/index.js" import { isValidOutputFormat } from "@/types/json-events.js" import { JsonEventEmitter } from "@/agent/json-event-emitter.js" -import { createClient } from "@/lib/sdk/index.js" -import { loadToken, loadSettings } from "@/lib/storage/index.js" +import { loadSettings } from "@/lib/storage/index.js" import { readWorkspaceTaskSessions, resolveWorkspaceResumeSessionId } from "@/lib/task-history/index.js" -import { isRecord } from "@/lib/utils/guards.js" import { getEnvVarName, getApiKeyFromEnv } from "@/lib/utils/provider.js" import { runOnboarding } from "@/lib/utils/onboarding.js" import { validateTerminalShellPath } from "@/lib/utils/shell.js" @@ -36,7 +33,6 @@ import { isExpectedControlFlowError } from "./cancellation.js" import { runStdinStreamMode } from "./stdin-stream.js" const __dirname = path.dirname(fileURLToPath(import.meta.url)) -const ROO_MODEL_WARMUP_TIMEOUT_MS = 10_000 const SIGNAL_ONLY_EXIT_KEEPALIVE_MS = 60_000 const STREAM_RESUME_WAIT_TIMEOUT_MS = 2_000 @@ -54,57 +50,38 @@ function normalizeError(error: unknown): Error { return error instanceof Error ? error : new Error(String(error)) } -async function warmRooModels(host: ExtensionHost): Promise { - await new Promise((resolve, reject) => { - let settled = false - - const cleanup = () => { - clearTimeout(timeoutId) - host.off("extensionWebviewMessage", onMessage) - } - - const finish = (fn: () => void) => { - if (settled) return - settled = true - cleanup() - fn() +export function resolveProviderPreference({ + flagProvider, + settingsProvider, +}: { + flagProvider?: string + settingsProvider?: string +}): { + provider: string + fellBackFromStoredRooPreference: boolean + fellBackFromExplicitRooRequest: boolean +} { + if (flagProvider === "roo") { + return { + provider: DEFAULT_PROVIDER, + fellBackFromStoredRooPreference: false, + fellBackFromExplicitRooRequest: true, } + } - const onMessage = (message: unknown) => { - if (!isRecord(message)) { - return - } - - if (message.type !== "singleRouterModelFetchResponse") { - return - } - - const values = isRecord(message.values) ? message.values : undefined - - if (values?.provider !== "roo") { - return - } - - if (message.success === false) { - const errorMessage = - typeof message.error === "string" && message.error.length > 0 - ? message.error - : "failed to refresh Roo models" - - finish(() => reject(new Error(errorMessage))) - return - } - - finish(() => resolve()) + if (settingsProvider === "roo") { + return { + provider: DEFAULT_PROVIDER, + fellBackFromStoredRooPreference: true, + fellBackFromExplicitRooRequest: false, } + } - const timeoutId = setTimeout(() => { - finish(() => reject(new Error(`timed out waiting for Roo models after ${ROO_MODEL_WARMUP_TIMEOUT_MS}ms`))) - }, ROO_MODEL_WARMUP_TIMEOUT_MS) - - host.on("extensionWebviewMessage", onMessage) - host.sendToExtension({ type: "requestRooModels" }) - }) + return { + provider: flagProvider ?? settingsProvider ?? DEFAULT_PROVIDER, + fellBackFromStoredRooPreference: false, + fellBackFromExplicitRooRequest: false, + } } export async function run(promptArg: string | undefined, flagOptions: FlagOptions) { @@ -169,19 +146,25 @@ export async function run(promptArg: string | undefined, flagOptions: FlagOption // Options - let rooToken = await loadToken() const settings = await loadSettings() const isTuiSupported = process.stdin.isTTY && process.stdout.isTTY const isTuiEnabled = !flagOptions.print && isTuiSupported - const isOnboardingEnabled = isTuiEnabled && !rooToken && !flagOptions.provider && !settings.provider + const isOnboardingEnabled = isTuiEnabled && !flagOptions.provider && !settings.provider // Determine effective values: CLI flags > settings file > DEFAULT_FLAGS. const effectiveMode = flagOptions.mode || settings.mode || DEFAULT_FLAGS.mode const effectiveModel = flagOptions.model || settings.model || DEFAULT_FLAGS.model const effectiveReasoningEffort = flagOptions.reasoningEffort || settings.reasoningEffort || DEFAULT_FLAGS.reasoningEffort - const effectiveProvider = flagOptions.provider ?? settings.provider ?? (rooToken ? "roo" : "openrouter") + const { + provider: resolvedProvider, + fellBackFromStoredRooPreference, + fellBackFromExplicitRooRequest, + } = resolveProviderPreference({ + flagProvider: flagOptions.provider, + settingsProvider: settings.provider, + }) const effectiveWorkspacePath = flagOptions.workspace ? path.resolve(flagOptions.workspace) : process.cwd() const legacyRequireApprovalFromSettings = settings.requireApproval ?? @@ -192,6 +175,25 @@ export async function run(promptArg: string | undefined, flagOptions: FlagOption flagOptions.consecutiveMistakeLimit ?? settings.consecutiveMistakeLimit ?? DEFAULT_FLAGS.consecutiveMistakeLimit const effectiveConsecutiveMistakeLimit = Number(rawConsecutiveMistakeLimit) + if (fellBackFromStoredRooPreference) { + console.warn( + `[CLI] Saved Roo Code Router preference detected in CLI settings. Continuing with the default provider (${DEFAULT_PROVIDER}).`, + ) + } + + if (fellBackFromExplicitRooRequest) { + console.warn( + `[CLI] Roo Code Router is no longer supported by the CLI. Continuing with the default provider (${DEFAULT_PROVIDER}).`, + ) + } + + if (!isSupportedProvider(resolvedProvider)) { + console.error( + `[CLI] Error: Invalid provider: ${resolvedProvider}; must be one of: ${supportedProviders.join(", ")}`, + ) + process.exit(1) + } + if (!Number.isInteger(effectiveConsecutiveMistakeLimit) || effectiveConsecutiveMistakeLimit < 0) { console.error( `[CLI] Error: Invalid consecutive mistake limit: ${rawConsecutiveMistakeLimit}; must be a non-negative integer`, @@ -217,7 +219,7 @@ export async function run(promptArg: string | undefined, flagOptions: FlagOption reasoningEffort: effectiveReasoningEffort === "unspecified" ? undefined : effectiveReasoningEffort, consecutiveMistakeLimit: effectiveConsecutiveMistakeLimit, user: null, - provider: effectiveProvider, + provider: resolvedProvider, model: effectiveModel, workspacePath: effectiveWorkspacePath, extensionPath: path.resolve(flagOptions.extension || getDefaultExtensionPath(__dirname)), @@ -229,76 +231,21 @@ export async function run(promptArg: string | undefined, flagOptions: FlagOption terminalShell, } - // Roo Code Cloud Authentication - if (isOnboardingEnabled) { - let { onboardingProviderChoice } = settings - - if (!onboardingProviderChoice) { - const { choice, token } = await runOnboarding() - onboardingProviderChoice = choice - rooToken = token ?? null - } - - if (onboardingProviderChoice === OnboardingProviderChoice.Roo) { - extensionHostOptions.provider = "roo" - } - } - - if (extensionHostOptions.provider === "roo") { - if (rooToken) { - try { - const client = createClient({ url: SDK_BASE_URL, authToken: rooToken }) - const me = await client.auth.me.query() - - if (me?.type !== "user") { - throw new Error("Invalid token") - } - - extensionHostOptions.apiKey = rooToken - extensionHostOptions.user = me.user - } catch { - // If an explicit API key was provided via flag or env var, fall through - // to the general API key resolution below instead of exiting. - if (!flagOptions.apiKey && !getApiKeyFromEnv(extensionHostOptions.provider)) { - console.error("[CLI] Your Roo Code Router token is not valid.") - console.error("[CLI] Please run: roo auth login") - console.error("[CLI] Or use --api-key or set ROO_API_KEY to provide your own API key.") - process.exit(1) - } - } + if (!settings.onboardingProviderChoice) { + await runOnboarding() } - // If no rooToken, fall through to the general API key resolution below - // which will check flagOptions.apiKey and ROO_API_KEY env var. } // Validations // TODO: Validate the API key for the chosen provider. // TODO: Validate the model for the chosen provider. - if (!isSupportedProvider(extensionHostOptions.provider)) { - console.error( - `[CLI] Error: Invalid provider: ${extensionHostOptions.provider}; must be one of: ${supportedProviders.join(", ")}`, - ) - process.exit(1) - } - - extensionHostOptions.apiKey = - extensionHostOptions.apiKey || flagOptions.apiKey || getApiKeyFromEnv(extensionHostOptions.provider) + extensionHostOptions.apiKey = flagOptions.apiKey || getApiKeyFromEnv(extensionHostOptions.provider) if (!extensionHostOptions.apiKey) { - if (extensionHostOptions.provider === "roo") { - console.error("[CLI] Error: Authentication with Roo Code Cloud failed or was cancelled.") - console.error("[CLI] Please run: roo auth login") - console.error("[CLI] Or use --api-key to provide your own API key.") - } else { - console.error( - `[CLI] Error: No API key provided. Use --api-key or set the appropriate environment variable.`, - ) - console.error( - `[CLI] For ${extensionHostOptions.provider}, set ${getEnvVarName(extensionHostOptions.provider)}`, - ) - } + console.error(`[CLI] Error: No API key provided. Use --api-key or set the appropriate environment variable.`) + console.error(`For ${extensionHostOptions.provider}, set ${getEnvVarName(extensionHostOptions.provider)}`) process.exit(1) } @@ -606,16 +553,6 @@ export async function run(promptArg: string | undefined, flagOptions: FlagOption try { await host.activate() - if (extensionHostOptions.provider === "roo") { - try { - await warmRooModels(host) - } catch (warmupError) { - if (flagOptions.debug) { - const message = warmupError instanceof Error ? warmupError.message : String(warmupError) - console.error(`[CLI] Warning: Roo model warmup failed: ${message}`) - } - } - } if (jsonEmitter) { jsonEmitter.attachToClient(host.client) diff --git a/apps/cli/src/index.ts b/apps/cli/src/index.ts index 2805e6c9099..f4d123f218a 100644 --- a/apps/cli/src/index.ts +++ b/apps/cli/src/index.ts @@ -2,17 +2,7 @@ import { Command } from "commander" import { DEFAULT_FLAGS } from "@/types/constants.js" import { VERSION } from "@/lib/utils/version.js" -import { - run, - login, - logout, - status, - listCommands, - listModes, - listModels, - listSessions, - upgrade, -} from "@/commands/index.js" +import { run, logout, status, listCommands, listModes, listModels, listSessions, upgrade } from "@/commands/index.js" const program = new Command() @@ -45,7 +35,7 @@ program .option("-d, --debug", "Enable debug output (includes detailed debug information)", false) .option("-a, --require-approval", "Require manual approval for actions", false) .option("-k, --api-key ", "API key for the LLM provider") - .option("--provider ", "API provider (roo, anthropic, openai, openrouter, etc.)") + .option("--provider ", "API provider (anthropic, openai-native, gemini, openrouter, etc.)") .option("-m, --model ", "Model to use", DEFAULT_FLAGS.model) .option("--mode ", "Mode to start in (code, architect, ask, debug, etc.)", DEFAULT_FLAGS.mode) .option("--terminal-shell ", "Absolute path to shell executable for inline terminal commands") @@ -79,7 +69,7 @@ const applyListOptions = (command: Command) => command .option("-w, --workspace ", "Workspace directory path (defaults to current working directory)") .option("-e, --extension ", "Path to the extension bundle directory") - .option("-k, --api-key ", "Roo API key (falls back to saved login/session token)") + .option("-k, --api-key ", "OpenRouter API key (falls back to OPENROUTER_API_KEY)") .option("--format ", 'Output format: "json" (default) or "text"', "json") .option("-d, --debug", "Enable debug output", false) @@ -117,7 +107,7 @@ applyListOptions(listCommand.command("modes").description("List available modes" }, ) -applyListOptions(listCommand.command("models").description("List available Roo models")).action( +applyListOptions(listCommand.command("models").description("List available OpenRouter models")).action( async (options: Parameters[0]) => { await runListAction(() => listModels(options)) }, @@ -136,20 +126,11 @@ program await runUpgradeAction(() => upgrade()) }) -const authCommand = program.command("auth").description("Manage authentication for Roo Code Cloud") - -authCommand - .command("login") - .description("Authenticate with Roo Code Cloud") - .option("-v, --verbose", "Enable verbose output", false) - .action(async (options: { verbose: boolean }) => { - const result = await login({ verbose: options.verbose }) - process.exit(result.success ? 0 : 1) - }) +const authCommand = program.command("auth").description("Inspect or remove legacy Roo auth tokens") authCommand .command("logout") - .description("Log out from Roo Code Cloud") + .description("Remove a stored legacy Roo auth token") .option("-v, --verbose", "Enable verbose output", false) .action(async (options: { verbose: boolean }) => { const result = await logout({ verbose: options.verbose }) @@ -158,11 +139,11 @@ authCommand authCommand .command("status") - .description("Show authentication status") + .description("Show whether a legacy Roo auth token is still stored") .option("-v, --verbose", "Enable verbose output", false) .action(async (options: { verbose: boolean }) => { - const result = await status({ verbose: options.verbose }) - process.exit(result.authenticated ? 0 : 1) + await status({ verbose: options.verbose }) + process.exit(0) }) program.parse() diff --git a/apps/cli/src/lib/storage/__tests__/settings.test.ts b/apps/cli/src/lib/storage/__tests__/settings.test.ts index f19b5c3a253..60488c1cb02 100644 --- a/apps/cli/src/lib/storage/__tests__/settings.test.ts +++ b/apps/cli/src/lib/storage/__tests__/settings.test.ts @@ -19,7 +19,7 @@ vi.mock("../config-dir.js", () => ({ // Import after mocking import { loadSettings, saveSettings, resetOnboarding, getSettingsPath } from "../settings.js" -import { OnboardingProviderChoice } from "@/types/index.js" +import { DEFAULT_PROVIDER, OnboardingProviderChoice } from "@/types/index.js" // Re-derive the test config dir for use in tests (must match the hoisted one) const actualTestConfigDir = getTestConfigDir() @@ -30,6 +30,7 @@ describe("Settings Storage", () => { beforeEach(async () => { // Clear test directory before each test await fs.rm(actualTestConfigDir, { recursive: true, force: true }) + vi.spyOn(console, "warn").mockImplementation(() => {}) }) afterAll(async () => { @@ -37,6 +38,10 @@ describe("Settings Storage", () => { await fs.rm(actualTestConfigDir, { recursive: true, force: true }) }) + afterEach(() => { + vi.restoreAllMocks() + }) + describe("getSettingsPath", () => { it("should return the correct settings file path", () => { expect(getSettingsPath()).toBe(expectedSettingsFile) @@ -51,7 +56,7 @@ describe("Settings Storage", () => { it("should load saved settings", async () => { const settingsData = { - onboardingProviderChoice: OnboardingProviderChoice.Roo, + onboardingProviderChoice: OnboardingProviderChoice.Byok, mode: "architect", provider: "anthropic" as const, model: "claude-sonnet-4-20250514", @@ -65,6 +70,32 @@ describe("Settings Storage", () => { expect(loaded).toEqual(settingsData) }) + it("migrates legacy Roo provider settings to the default provider path", async () => { + const legacySettings = { + onboardingProviderChoice: "roo", + provider: "roo", + mode: "architect", + } + + await fs.mkdir(actualTestConfigDir, { recursive: true }) + await fs.writeFile(expectedSettingsFile, JSON.stringify(legacySettings), "utf-8") + + const loaded = await loadSettings() + + expect(loaded).toEqual({ + onboardingProviderChoice: OnboardingProviderChoice.Byok, + provider: DEFAULT_PROVIDER, + mode: "architect", + }) + + const rewritten = JSON.parse(await fs.readFile(expectedSettingsFile, "utf-8")) + expect(rewritten).toEqual({ + onboardingProviderChoice: OnboardingProviderChoice.Byok, + provider: DEFAULT_PROVIDER, + mode: "architect", + }) + }) + it("should load settings with only some fields set", async () => { const settingsData = { mode: "code", @@ -138,7 +169,7 @@ describe("Settings Storage", () => { describe("resetOnboarding", () => { it("should reset onboarding provider choice", async () => { - await saveSettings({ onboardingProviderChoice: OnboardingProviderChoice.Roo }) + await saveSettings({ onboardingProviderChoice: OnboardingProviderChoice.Byok }) await resetOnboarding() diff --git a/apps/cli/src/lib/storage/settings.ts b/apps/cli/src/lib/storage/settings.ts index 86a2d9243e5..541a2ad9a96 100644 --- a/apps/cli/src/lib/storage/settings.ts +++ b/apps/cli/src/lib/storage/settings.ts @@ -2,9 +2,43 @@ import fs from "fs/promises" import path from "path" import type { CliSettings } from "@/types/index.js" +import { + DEFAULT_PROVIDER, + LEGACY_ONBOARDING_PROVIDER_CHOICE_ROO, + LEGACY_PROVIDER_PREFERENCE_ROO, + OnboardingProviderChoice, +} from "@/types/index.js" +import { safeWriteJson } from "../../../../../src/utils/safeWriteJson.js" import { getConfigDir } from "./index.js" +type StoredCliSettings = CliSettings & { + provider?: string + onboardingProviderChoice?: string +} + +async function persistSettings(settingsPath: string, settings: CliSettings): Promise { + await safeWriteJson(settingsPath, settings, { prettyPrint: true }) + await fs.chmod(settingsPath, 0o600) +} + +function migrateLegacySettings(settings: StoredCliSettings): { settings: CliSettings; migrated: boolean } { + let migrated = false + const nextSettings: StoredCliSettings = { ...settings } + + if (nextSettings.provider === LEGACY_PROVIDER_PREFERENCE_ROO) { + nextSettings.provider = DEFAULT_PROVIDER + migrated = true + } + + if (nextSettings.onboardingProviderChoice === LEGACY_ONBOARDING_PROVIDER_CHOICE_ROO) { + nextSettings.onboardingProviderChoice = OnboardingProviderChoice.Byok + migrated = true + } + + return { settings: nextSettings as CliSettings, migrated } +} + export function getSettingsPath(): string { return path.join(getConfigDir(), "cli-settings.json") } @@ -13,7 +47,17 @@ export async function loadSettings(): Promise { try { const settingsPath = getSettingsPath() const data = await fs.readFile(settingsPath, "utf-8") - return JSON.parse(data) as CliSettings + const parsed = JSON.parse(data) as StoredCliSettings + const { settings, migrated } = migrateLegacySettings(parsed) + + if (migrated) { + console.warn( + `[CLI] Detected legacy Roo Code Router selections in CLI settings. Migrating them to the default provider (${DEFAULT_PROVIDER}).`, + ) + await persistSettings(settingsPath, settings) + } + + return settings } catch (error) { if ((error as NodeJS.ErrnoException).code === "ENOENT") { return {} @@ -24,15 +68,10 @@ export async function loadSettings(): Promise { } export async function saveSettings(settings: Partial): Promise { - const configDir = getConfigDir() - await fs.mkdir(configDir, { recursive: true }) - const existing = await loadSettings() const merged = { ...existing, ...settings } - await fs.writeFile(getSettingsPath(), JSON.stringify(merged, null, 2), { - mode: 0o600, - }) + await persistSettings(getSettingsPath(), merged) } export async function resetOnboarding(): Promise { diff --git a/apps/cli/src/lib/utils/onboarding.ts b/apps/cli/src/lib/utils/onboarding.ts index 15da68f540c..dd26ef240c5 100644 --- a/apps/cli/src/lib/utils/onboarding.ts +++ b/apps/cli/src/lib/utils/onboarding.ts @@ -1,7 +1,6 @@ import { createElement } from "react" import { type OnboardingResult, OnboardingProviderChoice } from "@/types/index.js" -import { login } from "@/commands/index.js" import { saveSettings } from "@/lib/storage/index.js" export async function runOnboarding(): Promise { @@ -15,22 +14,10 @@ export async function runOnboarding(): Promise { app.unmount() console.log("") - - if (choice === OnboardingProviderChoice.Roo) { - const result = await login() - await saveSettings({ onboardingProviderChoice: choice }) - - resolve({ - choice: OnboardingProviderChoice.Roo, - token: result.success ? result.token : undefined, - skipped: false, - }) - } else { - console.log("Using your own API key.") - console.log("Set your API key via --api-key or environment variable.") - console.log("") - resolve({ choice: OnboardingProviderChoice.Byok, skipped: false }) - } + console.log("Using the standard login-free provider path.") + console.log("Set your API key via --api-key or environment variable.") + console.log("") + resolve({ choice: OnboardingProviderChoice.Byok, skipped: false }) } const app = render(createElement(OnboardingScreen, { onSelect })) diff --git a/apps/cli/src/lib/utils/provider.ts b/apps/cli/src/lib/utils/provider.ts index 64aec430c1b..26beaf90c45 100644 --- a/apps/cli/src/lib/utils/provider.ts +++ b/apps/cli/src/lib/utils/provider.ts @@ -8,7 +8,6 @@ const envVarMap: Record = { gemini: "GOOGLE_API_KEY", openrouter: "OPENROUTER_API_KEY", "vercel-ai-gateway": "VERCEL_AI_GATEWAY_API_KEY", - roo: "ROO_API_KEY", } export function getEnvVarName(provider: SupportedProvider): string { @@ -48,10 +47,6 @@ export function getProviderSettings( if (apiKey) config.vercelAiGatewayApiKey = apiKey if (model) config.vercelAiGatewayModelId = model break - case "roo": - if (apiKey) config.rooApiKey = apiKey - if (model) config.apiModelId = model - break default: if (apiKey) config.apiKey = apiKey if (model) config.apiModelId = model diff --git a/apps/cli/src/types/constants.ts b/apps/cli/src/types/constants.ts index b291b5f90e1..555d73a0377 100644 --- a/apps/cli/src/types/constants.ts +++ b/apps/cli/src/types/constants.ts @@ -7,6 +7,8 @@ export const DEFAULT_FLAGS = { consecutiveMistakeLimit: 10, } +export const DEFAULT_PROVIDER = "openrouter" as const + export const REASONING_EFFORTS = [...reasoningEffortsExtended, "unspecified", "disabled"] /** diff --git a/apps/cli/src/types/types.ts b/apps/cli/src/types/types.ts index ecd3922aa1c..f7af0a2835c 100644 --- a/apps/cli/src/types/types.ts +++ b/apps/cli/src/types/types.ts @@ -7,7 +7,6 @@ export const supportedProviders = [ "gemini", "openrouter", "vercel-ai-gateway", - "roo", ] as const satisfies ProviderName[] export type SupportedProvider = (typeof supportedProviders)[number] @@ -44,10 +43,15 @@ export type FlagOptions = { } export enum OnboardingProviderChoice { - Roo = "roo", Byok = "byok", } +export const LEGACY_PROVIDER_PREFERENCE_ROO = "roo" as const +export const LEGACY_ONBOARDING_PROVIDER_CHOICE_ROO = "roo" as const + +export type CliProviderPreference = SupportedProvider | typeof LEGACY_PROVIDER_PREFERENCE_ROO +export type CliOnboardingProviderChoice = OnboardingProviderChoice | typeof LEGACY_ONBOARDING_PROVIDER_CHOICE_ROO + export interface OnboardingResult { choice: OnboardingProviderChoice token?: string @@ -55,11 +59,11 @@ export interface OnboardingResult { } export interface CliSettings { - onboardingProviderChoice?: OnboardingProviderChoice + onboardingProviderChoice?: CliOnboardingProviderChoice /** Default mode to use (e.g., "code", "architect", "ask", "debug") */ mode?: string /** Default provider to use */ - provider?: SupportedProvider + provider?: CliProviderPreference /** Default model to use */ model?: string /** Default reasoning effort level */ diff --git a/apps/cli/src/ui/components/onboarding/OnboardingScreen.tsx b/apps/cli/src/ui/components/onboarding/OnboardingScreen.tsx index 86c15f5b274..f22b2098df4 100644 --- a/apps/cli/src/ui/components/onboarding/OnboardingScreen.tsx +++ b/apps/cli/src/ui/components/onboarding/OnboardingScreen.tsx @@ -13,12 +13,11 @@ export function OnboardingScreen({ onSelect }: OnboardingScreenProps) { {ASCII_ROO} - Welcome! How would you like to connect to an LLM provider? + + Welcome! Roo Code works without login. Choose how you want to connect to an LLM provider. + - - - - )} - /> - )} - - -export const getRooCodeCloudModels = async (): Promise => { - const response = await fetch("https://api.roocode.com/proxy/v1/models") - - if (!response.ok) { - return [] - } - - const result = z - .object({ - object: z.literal("list"), - data: z.array(rooCodeCloudModelSchema), - }) - .safeParse(await response.json()) - - if (!result.success) { - console.error(result.error) - return [] - } - - return result.data.data.filter((model) => !model.deprecated).sort((a, b) => a.name.localeCompare(b.name)) -} - -export const useRooCodeCloudModels = () => { - const query = useQuery({ - queryKey: ["getRooCodeCloudModels"], - queryFn: getRooCodeCloudModels, - }) - - const { searchValue, setSearchValue, onFilter } = useFuzzyModelSearch(query.data) - - return { ...query, searchValue, setSearchValue, onFilter } -} diff --git a/apps/web-evals/src/lib/__tests__/normalize-create-run.spec.ts b/apps/web-evals/src/lib/__tests__/normalize-create-run.spec.ts index 947df313545..e517987e42b 100644 --- a/apps/web-evals/src/lib/__tests__/normalize-create-run.spec.ts +++ b/apps/web-evals/src/lib/__tests__/normalize-create-run.spec.ts @@ -4,7 +4,7 @@ describe("normalizeCreateRunForSubmit", () => { it("uses selectedExercises for partial suite", () => { const result = normalizeCreateRunForSubmit( { - model: "roo/model-a", + model: "openrouter/model-a", description: "", suite: "partial", exercises: [], @@ -25,7 +25,7 @@ describe("normalizeCreateRunForSubmit", () => { it("dedupes selectedExercises for partial suite", () => { const result = normalizeCreateRunForSubmit( { - model: "roo/model-a", + model: "openrouter/model-a", description: "", suite: "partial", exercises: [], @@ -45,7 +45,7 @@ describe("normalizeCreateRunForSubmit", () => { it("clears exercises for full suite", () => { const result = normalizeCreateRunForSubmit( { - model: "roo/model-a", + model: "openrouter/model-a", description: "", suite: "full", exercises: ["js/foo"], diff --git a/apps/web-evals/src/lib/__tests__/roo-last-model-selection.spec.ts b/apps/web-evals/src/lib/__tests__/roo-last-model-selection.spec.ts deleted file mode 100644 index 45879b4be5b..00000000000 --- a/apps/web-evals/src/lib/__tests__/roo-last-model-selection.spec.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { - loadRooLastModelSelection, - ROO_LAST_MODEL_SELECTION_KEY, - saveRooLastModelSelection, -} from "../roo-last-model-selection" - -class LocalStorageMock implements Storage { - private store = new Map() - - get length(): number { - return this.store.size - } - - clear(): void { - this.store.clear() - } - - getItem(key: string): string | null { - return this.store.get(key) ?? null - } - - key(index: number): string | null { - return Array.from(this.store.keys())[index] ?? null - } - - removeItem(key: string): void { - this.store.delete(key) - } - - setItem(key: string, value: string): void { - this.store.set(key, value) - } -} - -beforeEach(() => { - Object.defineProperty(globalThis, "localStorage", { - value: new LocalStorageMock(), - configurable: true, - }) -}) - -describe("roo-last-model-selection", () => { - it("saves and loads (deduped + trimmed)", () => { - saveRooLastModelSelection([" roo/model-a ", "roo/model-a", "roo/model-b"]) - expect(loadRooLastModelSelection()).toEqual(["roo/model-a", "roo/model-b"]) - }) - - it("ignores invalid JSON", () => { - localStorage.setItem(ROO_LAST_MODEL_SELECTION_KEY, "{this is not json") - expect(loadRooLastModelSelection()).toEqual([]) - }) - - it("clears when empty", () => { - localStorage.setItem(ROO_LAST_MODEL_SELECTION_KEY, JSON.stringify(["roo/model-a"])) - saveRooLastModelSelection([]) - expect(localStorage.getItem(ROO_LAST_MODEL_SELECTION_KEY)).toBeNull() - }) - - it("does not throw if localStorage access fails", () => { - Object.defineProperty(globalThis, "localStorage", { - value: { - getItem: () => { - throw new Error("blocked") - }, - setItem: () => { - throw new Error("blocked") - }, - removeItem: () => { - throw new Error("blocked") - }, - }, - configurable: true, - }) - - expect(() => loadRooLastModelSelection()).not.toThrow() - expect(() => saveRooLastModelSelection(["roo/model-a"])).not.toThrow() - }) -}) diff --git a/apps/web-evals/src/lib/roo-last-model-selection.ts b/apps/web-evals/src/lib/roo-last-model-selection.ts deleted file mode 100644 index b66d493172f..00000000000 --- a/apps/web-evals/src/lib/roo-last-model-selection.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { z } from "zod" - -export const ROO_LAST_MODEL_SELECTION_KEY = "evals-roo-last-model-selection" - -const modelIdListSchema = z.array(z.string()) - -function hasLocalStorage(): boolean { - try { - return typeof localStorage !== "undefined" - } catch { - return false - } -} - -function safeGetItem(key: string): string | null { - try { - return localStorage.getItem(key) - } catch { - return null - } -} - -function safeSetItem(key: string, value: string): void { - try { - localStorage.setItem(key, value) - } catch { - // ignore - } -} - -function safeRemoveItem(key: string): void { - try { - localStorage.removeItem(key) - } catch { - // ignore - } -} - -function tryParseJson(raw: string | null): unknown { - if (raw === null) return undefined - try { - return JSON.parse(raw) - } catch { - return undefined - } -} - -function normalizeModelIds(modelIds: string[]): string[] { - const unique = new Set() - for (const id of modelIds) { - const trimmed = id.trim() - if (trimmed) unique.add(trimmed) - } - return Array.from(unique) -} - -export function loadRooLastModelSelection(): string[] { - if (!hasLocalStorage()) return [] - - const parsed = modelIdListSchema.safeParse(tryParseJson(safeGetItem(ROO_LAST_MODEL_SELECTION_KEY))) - if (!parsed.success) return [] - - return normalizeModelIds(parsed.data) -} - -export function saveRooLastModelSelection(modelIds: string[]): void { - if (!hasLocalStorage()) return - - const normalized = normalizeModelIds(modelIds) - if (normalized.length === 0) { - safeRemoveItem(ROO_LAST_MODEL_SELECTION_KEY) - return - } - - safeSetItem(ROO_LAST_MODEL_SELECTION_KEY, JSON.stringify(normalized)) -} diff --git a/apps/web-roo-code/src/app/cloud/page.tsx b/apps/web-roo-code/src/app/cloud/page.tsx index 51df0642eec..b5ea834c1e2 100644 --- a/apps/web-roo-code/src/app/cloud/page.tsx +++ b/apps/web-roo-code/src/app/cloud/page.tsx @@ -168,11 +168,6 @@ export default function CloudPage() { - diff --git a/apps/web-roo-code/src/app/cloud/team/page.tsx b/apps/web-roo-code/src/app/cloud/team/page.tsx index 195b709ab2c..c71e0b55976 100644 --- a/apps/web-roo-code/src/app/cloud/team/page.tsx +++ b/apps/web-roo-code/src/app/cloud/team/page.tsx @@ -176,11 +176,6 @@ export default function CloudTeamPage() { - diff --git a/apps/web-roo-code/src/app/pricing/page.tsx b/apps/web-roo-code/src/app/pricing/page.tsx deleted file mode 100644 index 92c1e7bd67b..00000000000 --- a/apps/web-roo-code/src/app/pricing/page.tsx +++ /dev/null @@ -1,395 +0,0 @@ -import { Users, ArrowRight, LucideIcon, Check, SquareTerminal, CornerRightDown, Cloud } from "lucide-react" -import type { Metadata } from "next" -import Link from "next/link" - -import { Button } from "@/components/ui" -import { AnimatedBackground } from "@/components/homepage" -import { SEO } from "@/lib/seo" -import { ogImageUrl } from "@/lib/og" -import { EXTERNAL_LINKS } from "@/lib/constants" - -const TITLE = "Roo Code Pricing" -const DESCRIPTION = - "Simple, transparent pricing for all Roo Code products. The VS Code extension is free forever. Choose the cloud plan that fits your needs." -const OG_DESCRIPTION = "" -const PATH = "/pricing" - -const PRICE_CREDITS = 5 - -export const metadata: Metadata = { - title: TITLE, - description: DESCRIPTION, - alternates: { - canonical: `${SEO.url}${PATH}`, - }, - openGraph: { - title: TITLE, - description: DESCRIPTION, - url: `${SEO.url}${PATH}`, - siteName: SEO.name, - images: [ - { - url: ogImageUrl(TITLE, OG_DESCRIPTION), - width: 1200, - height: 630, - alt: TITLE, - }, - ], - locale: SEO.locale, - type: "website", - }, - twitter: { - card: SEO.twitterCard, - title: TITLE, - description: DESCRIPTION, - images: [ogImageUrl(TITLE, OG_DESCRIPTION)], - }, - keywords: [ - ...SEO.keywords, - "pricing", - "plans", - "subscription", - "cloud pricing", - "AI development pricing", - "team pricing", - "enterprise pricing", - ], -} - -interface PricingTier { - name: string - icon: LucideIcon - price: string - priceSuffix: string - period?: string - creditPrice?: string - trial?: string - description: string - featuresIntro?: string - features: string[] - cta: { - text: string - href?: string - } - learnMoreLink?: string -} - -const pricingTiers: PricingTier[] = [ - { - name: "VS Code Extension", - icon: SquareTerminal, - price: "Free", - priceSuffix: "inference", - description: "The best local coding agent", - features: ["Unlimited local use", "Bring your own model", "Powerful, extensible modes", "Community support"], - cta: { - text: "Install Now", - href: EXTERNAL_LINKS.MARKETPLACE, - }, - }, - { - name: "Cloud Free", - icon: Cloud, - price: "$0", - period: "/mo", - priceSuffix: "credits", - creditPrice: `$${PRICE_CREDITS}`, - description: "For AI-forward engineers", - featuresIntro: "Go beyond the extension with", - features: [ - "Access to Cloud Agents: fully autonomous development you can kick off from GitHub and the web", - "Access to the Roo Code Router", - "Follow your tasks from anywhere", - "Share tasks with friends and co-workers", - "Token usage analytics", - "Professional support", - ], - cta: { - text: "Sign up", - href: EXTERNAL_LINKS.CLOUD_APP_SIGNUP, - }, - }, - { - name: "Cloud Team", - icon: Users, - price: "$99", - priceSuffix: "credits", - period: "/mo", - creditPrice: `$${PRICE_CREDITS}`, - trial: "Free for 14 days, then", - description: "For AI-forward teams", - featuresIntro: "Everything in Free +", - features: [ - "Unlimited users (no per-seat cost)", - "Shared configuration & policies", - "Centralized billing", - "Slack and Linear integrations", - ], - cta: { - text: "Sign up", - href: EXTERNAL_LINKS.CLOUD_APP_SIGNUP + "?redirect_url=/billing", - }, - learnMoreLink: "/cloud/team", - }, -] - -export default function PricingPage() { - return ( - <> - - - {/* Hero Section */} -
-
-
-

Roo Code Pricing

-

- For all of our products: the Roo Code VS Code Extension, Roo Code Cloud and the Roo Code - Router. -

-
-
-
- - {/* Pricing Tiers */} -
-
-
- {pricingTiers.map((tier) => { - const Icon = tier.icon - return ( -
-
-
-

{tier.name}

-
-

{tier.description}

-
-
- -
- -
-

- {tier.featuresIntro}  -

-
    - {tier.features.map((feature) => ( -
  • - - {feature} -
  • - ))} -
- {tier.learnMoreLink && ( -
- - Learn more → - -
- )} -
- -

{tier.trial}

- -

- {tier.price} - {tier.period} + {tier.priceSuffix} - -

- -

- {tier.creditPrice && ( - <> - Cloud Agents: {tier.creditPrice}/hour in credits -
- - )} - Inference:{" "} - - Roo Provider pricing - {" "} - credits or{" "} - - BYOM - -

- - - - {/*
*/} -
-
- ) - })} -
- -
-
-

Roo Code Router

-
-

- On any plan, you can use your own LLM provider API key or use the built-in Roo Code - Router – curated models to work with Roo with no markup, including the latest - Gemini, GPT and Claude. Paid with credits. - - See per model pricing. - -

-
-
-
-

Credits

-

- Credits are pre-paid, in dollars, and are deducted with usage for inference and Cloud - Agent runs. You're always in control of your spend, no surprises. -

-
-
-
-
- - {/* Additional Information */} -
-
-
-

Frequently Asked Questions

-
-
-
-

Wait, is Roo Code free or not?

-

- Yes! The Roo Code VS Code extension is open source and free forever. The extension acts - as a powerful AI coding assistant right in your editor. These are the prices for Roo - Code Cloud. -

-
-
-

Is there a free trial?

-

- Yes, all paid plans come with a 14-day free trial to try out functionality. -

-

- To use Cloud Agents, you can buy credits. -

-
-
-

How do credits work?

-

- Roo Code Cloud credits can be used in two ways: -

-
    -
  • To pay for Cloud Agents running time (${PRICE_CREDITS}/hour)
  • -
  • - To pay for AI model inference costs ( - - varies by model - - ) -
  • -
-

- To cover our infrastructure costs, we charge ${PRICE_CREDITS}/hour while the agent is - running (independent of inference costs). -

-

- There are no markups, no tiers, no dumbing-down of models to increase our profit. -

-
-
-

Do I need a credit card for the free trial?

-

- Yes, but you won't be charged until your trial ends, except for credit purchases. -

-

You can cancel anytime with one click.

-
-
-

What payment methods do you accept?

-

- We accept all major credit cards, debit cards, and can arrange invoice billing for - Enterprise customers. -

-
-
-

Can I cancel or change plans?

-

- Yes, you can upgrade, downgrade or cancel your plan at any time. Changes will be - reflected in your next billing cycle. -

-
-
-

- What if I have enterprise-level needs like SAML/SCIM, large-scale deployments, specific - integrations and custom terms? -

-

- We have an Enterprise plan which can be a fit. Please{" "} - - reach out to our sales team - {" "} - to discuss it. -

-
-
- -
-

- Still have questions?{" "} - - Join our Discord - {" "} - or{" "} - - contact our sales team - -

-
-
-
- - {/* CTA Section */} -
-
-
-

Try Roo Code Cloud now

-

Code from anywhere.

- -
-
-
- - ) -} diff --git a/apps/web-roo-code/src/app/provider/page.tsx b/apps/web-roo-code/src/app/provider/page.tsx index b42e48cb2e0..753c75eeb63 100644 --- a/apps/web-roo-code/src/app/provider/page.tsx +++ b/apps/web-roo-code/src/app/provider/page.tsx @@ -1,8 +1,7 @@ "use client" import { useEffect, useMemo, useState } from "react" -import { ModelCard } from "./pricing/components/model-card" -import { Model, ModelWithTotalPrice, ModelsResponse, SortOption } from "@/lib/types/models" +import { Model, ModelsResponse, SortOption } from "@/lib/types/models" import Link from "next/link" import { ChevronDown, CircleX, Cloud, Loader, LoaderCircle, Puzzle, Search } from "lucide-react" @@ -34,32 +33,10 @@ const faqs = [ question: "How is my data treated?", answer: "The Roo Code Router doesn't keep any of your data, the service only aims to make it easier to use Roo Code. Each model vendor has their own privacy policy though, and usually free models use your data for training, so keep that in mind.", }, - { - question: "How much does the Roo Code Cloud service cost?", - answer: ( - <> - Our{" "} - - service pricing is here. - - - ), - }, ] -function calculateTotalPrice(model: Model): number { - return parseFloat(model.pricing.input) + parseFloat(model.pricing.output) -} - -function enrichModelWithTotalPrice(model: Model): ModelWithTotalPrice { - return { - ...model, - totalPrice: calculateTotalPrice(model), - } -} - export default function ProviderPage() { - const [models, setModels] = useState([]) + const [models, setModels] = useState([]) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const [searchQuery, setSearchQuery] = useState("") @@ -75,8 +52,7 @@ export default function ProviderPage() { throw new Error(`Failed to fetch models: ${response.statusText}`) } const data: ModelsResponse = await response.json() - const enrichedModels = data.data.map(enrichModelWithTotalPrice) - setModels(enrichedModels) + setModels(data.data) } catch (err) { setError(err instanceof Error ? err.message : "An error occurred while fetching models") } finally { @@ -109,12 +85,6 @@ export default function ProviderPage() { case "alphabetical": sorted.sort((a, b) => a.name.localeCompare(b.name)) break - case "price-asc": - sorted.sort((a, b) => a.totalPrice - b.totalPrice) - break - case "price-desc": - sorted.sort((a, b) => b.totalPrice - a.totalPrice) - break case "context-window-asc": sorted.sort((a, b) => a.context_window - b.context_window) break @@ -188,8 +158,6 @@ export default function ProviderPage() { onChange={(e) => setSortOption(e.target.value as SortOption)} className="rounded-full cursor-pointer border border-input bg-background hover:bg-muted pl-4 w-full md:w-auto pr-9 py-2.5 text-base ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 relative appearance-none"> - - @@ -230,13 +198,6 @@ export default function ProviderPage() { )} - {!loading && !error && filteredAndSortedModels.length > 0 && ( -
- {filteredAndSortedModels.map((model) => ( - - ))} -
- )} diff --git a/apps/web-roo-code/src/app/provider/pricing/components/model-card.tsx b/apps/web-roo-code/src/app/provider/pricing/components/model-card.tsx deleted file mode 100644 index 26f35457912..00000000000 --- a/apps/web-roo-code/src/app/provider/pricing/components/model-card.tsx +++ /dev/null @@ -1,190 +0,0 @@ -import { ModelWithTotalPrice } from "@/lib/types/models" -import { formatCurrency, formatTokens } from "@/lib/formatters" -import { - ArrowLeftToLine, - ArrowRightToLine, - Building2, - Check, - Expand, - Gift, - HardDriveDownload, - HardDriveUpload, - RulerDimensionLine, - ChevronDown, - ChevronUp, -} from "lucide-react" -import { useState } from "react" - -interface ModelCardProps { - model: ModelWithTotalPrice -} - -export function ModelCard({ model }: ModelCardProps) { - // Prices are per token, multiply by 1M to get price per million tokens - const inputPrice = parseFloat(model.pricing.input) * 1_000_000 - const outputPrice = parseFloat(model.pricing.output) * 1_000_000 - const cacheReadPrice = parseFloat(model.pricing.input_cache_read || "0") * 1_000_000 - const cacheWritePrice = parseFloat(model.pricing.input_cache_write || "0") * 1_000_000 - - const free = model.tags.includes("free") - // Filter tags to only show vision and reasoning - const displayTags = model.tags.filter((tag) => tag === "vision" || tag === "reasoning") - - // Mobile collapsed/expanded state - const [expanded, setExpanded] = useState(false) - - return ( -
- {/* Header: always visible */} -
-

- {model.name} - {free && ( - - - Free! - - )} -

-

- {model.description} -

-
- - {/* Content - pinned to bottom */} -
- - - {/* Provider: always visible if present */} - {model.owned_by && ( - - - - - )} - - {/* Context Window: always visible */} - - - - - - {/* Max Output Tokens: always visible on >=sm, expandable on mobile */} - - - - - - {/* Input Price: always visible */} - - - - - - {/* Output Price: always visible */} - - - - - - {/* Cache pricing: only visible on mobile when expanded, always visible on >=sm */} - {cacheReadPrice > 0 && ( - - - - - )} - - {cacheWritePrice > 0 && ( - - - - - )} - - {/* Tags row: only show if there are vision or reasoning tags */} - {displayTags.length > 0 && ( - - - - - )} - - {/* Mobile-only toggle row */} - - - - -
- - Provider - {model.owned_by}
- - Context Window - {formatTokens(model.context_window)}
- - Max Output Tokens - {formatTokens(model.max_tokens)}
- - Input Price - - {inputPrice === 0 ? "Free" : `${formatCurrency(inputPrice)}/1M tokens`} -
- - Output Price - - {outputPrice === 0 ? "Free" : `${formatCurrency(outputPrice)}/1M tokens`} -
- - Cache Read - {formatCurrency(cacheReadPrice)}/1M tokens
- - Cache Write - {formatCurrency(cacheWritePrice)}/1M tokens
Features - {displayTags.map((tag) => ( - - - {tag} - - ))} -
- -
-
-
- ) -} diff --git a/apps/web-roo-code/src/components/chromes/nav-bar.tsx b/apps/web-roo-code/src/components/chromes/nav-bar.tsx index 38f8da9c6c6..96bbf7df858 100644 --- a/apps/web-roo-code/src/components/chromes/nav-bar.tsx +++ b/apps/web-roo-code/src/components/chromes/nav-bar.tsx @@ -175,14 +175,6 @@ export function NavBar({ stars, downloads }: NavBarProps) { - {/* Pricing Link */} - - - Pricing - - @@ -247,13 +239,6 @@ export function NavBar({ stars, downloads }: NavBarProps) { onClick={() => setIsMenuOpen(false)}> Docs - setIsMenuOpen(false)}> - Pricing - - {/* Product Section */}
diff --git a/packages/cloud/src/CloudService.ts b/packages/cloud/src/CloudService.ts index 43f52d4b18a..42e09fa6c37 100644 --- a/packages/cloud/src/CloudService.ts +++ b/packages/cloud/src/CloudService.ts @@ -305,9 +305,9 @@ export class CloudService extends EventEmitter implements Di // TelemetryClient - public captureEvent(event: TelemetryEvent): void { + public captureEvent(_event: TelemetryEvent): void { this.ensureInitialized() - this.telemetryClient!.capture(event) + this.log("[CloudService] Skipping cloud telemetry capture in compatibility mode") } // ShareService @@ -390,24 +390,36 @@ export class CloudService extends EventEmitter implements Di throw new Error("CloudService instance already created") } - this._instance = new CloudService(context, log) + const instance = new CloudService(context, log) + this._instance = instance - await this._instance.initialize() - - if (eventHandlers) { - for (const [event, handler] of Object.entries(eventHandlers)) { - if (handler) { - this._instance.on( - event as keyof CloudServiceEvents, - handler as (...args: CloudServiceEvents[keyof CloudServiceEvents]) => void, - ) + try { + await instance.initialize() + + if (eventHandlers) { + for (const [event, handler] of Object.entries(eventHandlers)) { + if (handler) { + instance.on( + event as keyof CloudServiceEvents, + handler as (...args: CloudServiceEvents[keyof CloudServiceEvents]) => void, + ) + } } } - } - await this._instance.authService?.broadcast() + await instance.authService?.broadcast() - return this._instance + return instance + } catch (error) { + try { + instance.dispose() + } catch { + // Best effort cleanup only. + } + + this._instance = null + throw error + } } static hasInstance(): boolean { @@ -422,7 +434,7 @@ export class CloudService extends EventEmitter implements Di } static isEnabled(): boolean { - return !!this._instance?.isAuthenticated() + return false } /** diff --git a/packages/cloud/src/__tests__/CloudService.test.ts b/packages/cloud/src/__tests__/CloudService.test.ts index 8c557ae7ada..6400fcc90ec 100644 --- a/packages/cloud/src/__tests__/CloudService.test.ts +++ b/packages/cloud/src/__tests__/CloudService.test.ts @@ -2,7 +2,8 @@ import * as vscode from "vscode" -import type { ClineMessage } from "@roo-code/types" +import { TelemetryEventName } from "@roo-code/types" +import type { ClineMessage, TelemetryEvent } from "@roo-code/types" import { TaskNotFoundError } from "../errors.js" import { CloudService } from "../CloudService.js" @@ -186,6 +187,13 @@ describe("CloudService", () => { "CloudService instance already created", ) }) + + it("should reset the singleton when initialization fails", async () => { + mockAuthService.initialize.mockRejectedValueOnce(new Error("init failed")) + + await expect(CloudService.createInstance(mockContext)).rejects.toThrow("init failed") + expect(CloudService.hasInstance()).toBe(false) + }) }) describe("authentication methods", () => { @@ -211,6 +219,10 @@ describe("CloudService", () => { expect(result).toBe(false) }) + it("always disables cloud telemetry gating in compatibility mode", () => { + expect(CloudService.isEnabled()).toBe(false) + }) + it("should delegate hasActiveSession to AuthService", () => { const result = cloudService.hasActiveSession() expect(mockAuthService.hasActiveSession).toHaveBeenCalled() @@ -614,5 +626,20 @@ describe("CloudService", () => { expect(mockShareService.shareTask).toHaveBeenCalledWith(taskId, "organization") expect(result).toEqual(expectedResult) }) + + it("captureEvent is a no-op in compatibility mode", async () => { + const log = vi.fn() + const compatService = cloudService + vi.spyOn(compatService as unknown as { log: (...args: unknown[]) => void }, "log").mockImplementation(log) + + const telemetryEvent: TelemetryEvent = { + event: TelemetryEventName.TASK_CREATED, + properties: { taskId: "task-123" }, + } + + compatService.captureEvent(telemetryEvent) + + expect(log).toHaveBeenCalledWith("[CloudService] Skipping cloud telemetry capture in compatibility mode") + }) }) }) diff --git a/packages/types/src/image-generation.ts b/packages/types/src/image-generation.ts index b9c7a7bc9bd..a83759e9482 100644 --- a/packages/types/src/image-generation.ts +++ b/packages/types/src/image-generation.ts @@ -45,13 +45,13 @@ export type ImageGenerationProvider = "openrouter" | "roo" /** * Get the image generation provider with backwards compatibility - * - If provider is explicitly set, use it - * - If a model is already configured (existing users), default to "openrouter" - * - Otherwise default to "roo" (new users) + * - Legacy "roo" selections are downgraded to "openrouter" + * - If provider is explicitly set to "openrouter", keep it + * - Otherwise default to "openrouter" */ export function getImageGenerationProvider( explicitProvider: ImageGenerationProvider | undefined, - hasExistingModel: boolean, + _hasExistingModel: boolean, ): ImageGenerationProvider { - return explicitProvider !== undefined ? explicitProvider : hasExistingModel ? "openrouter" : "roo" + return explicitProvider === "openrouter" ? "openrouter" : "openrouter" } diff --git a/packages/types/src/vscode-extension-host.ts b/packages/types/src/vscode-extension-host.ts index b20539afe49..53bc9567f77 100644 --- a/packages/types/src/vscode-extension-host.ts +++ b/packages/types/src/vscode-extension-host.ts @@ -117,7 +117,6 @@ export interface ExtensionMessage { | "settingsButtonClicked" | "historyButtonClicked" | "marketplaceButtonClicked" - | "cloudButtonClicked" | "didBecomeVisible" | "focusInput" | "switchTab" @@ -500,7 +499,6 @@ export interface WebviewMessage { | "hasOpenedModeSelector" | "lockApiConfigAcrossModes" | "clearCloudAuthSkipModel" - | "cloudButtonClicked" | "rooCloudSignIn" | "cloudLandingPageSignIn" | "rooCloudSignOut" diff --git a/packages/types/src/vscode.ts b/packages/types/src/vscode.ts index fd28f2e9945..71818276db9 100644 --- a/packages/types/src/vscode.ts +++ b/packages/types/src/vscode.ts @@ -33,7 +33,6 @@ export const commandIds = [ "historyButtonClicked", "marketplaceButtonClicked", "popoutButtonClicked", - "cloudButtonClicked", "settingsButtonClicked", "openInNewTab", diff --git a/roo-code-router-removal-prd.md b/roo-code-router-removal-prd.md new file mode 100644 index 00000000000..8f73619fbba --- /dev/null +++ b/roo-code-router-removal-prd.md @@ -0,0 +1,759 @@ +# PRD: Remove Roo Code Router Without Breaking Upgrades + +## Executive summary + +This PRD defines an upgrade-safe plan to remove the Roo Code Router provider option from the extension, webview, CLI, evals management UI, tests, docs, and migration code while ensuring existing users who currently have `apiProvider: "roo"` or Roo-specific model selections do not land in a broken state after upgrading. + +The recommended approach is **not** a hard delete. Instead, it is a staged removal: + +1. **Stop exposing Router as a selectable product option** in runtime UI and CLI surfaces. +2. **Temporarily preserve `roo` as a migration-recognized legacy provider identity** long enough to read old state safely and convert it. +3. **Automatically migrate existing Router-selected users to the current login-free default provider path where possible**. +4. **If an automatic usable fallback cannot be completed**, place the user into a guided, non-broken recovery state that opens the normal provider-setup path instead of crashing or surfacing the retired-provider fatal error. +5. **Preserve minimal legacy import compatibility longer than UI/runtime shims** so old exported settings and dormant profiles do not become unrecoverable. + +The most important design constraint is that Router removal must be implemented as an **upgrade migration problem**, not merely a UI cleanup problem. The current codebase still has active Roo-specific runtime paths in the extension, onboarding, image generation, CLI provider resolution, evals management UI, model-fetch aggregation, and import/export flows, including [src/api/index.ts](src/api/index.ts:115), [src/core/config/ProviderSettingsManager.ts](src/core/config/ProviderSettingsManager.ts:27), [src/core/config/ContextProxy.ts](src/core/config/ContextProxy.ts:226), [src/core/config/importExport.ts](src/core/config/importExport.ts:40), [src/core/webview/webviewMessageHandler.ts](src/core/webview/webviewMessageHandler.ts:947), [webview-ui/src/components/settings/providers/Roo.tsx](webview-ui/src/components/settings/providers/Roo.tsx:19), [webview-ui/src/components/welcome/WelcomeViewProvider.tsx](webview-ui/src/components/welcome/WelcomeViewProvider.tsx:48), [apps/cli/src/commands/cli/run.ts](apps/cli/src/commands/cli/run.ts:71), and [apps/web-evals/src/app/runs/new/new-run.tsx](apps/web-evals/src/app/runs/new/new-run.tsx:111). + +## Problem statement + +The repository has already removed Roo Code Cloud in many areas, but Roo Code Router still exists as an active provider option in multiple product and internal surfaces. That leaves the codebase in an inconsistent state: + +- Users can still select Router in product settings and onboarding via [webview-ui/src/components/settings/providers/Roo.tsx](webview-ui/src/components/settings/providers/Roo.tsx:19) and [webview-ui/src/components/welcome/WelcomeViewProvider.tsx](webview-ui/src/components/welcome/WelcomeViewProvider.tsx:101). +- The extension still knows how to build a Roo provider handler in [src/api/index.ts](src/api/index.ts:170) and aggregate Roo models in [src/core/webview/webviewMessageHandler.ts](src/core/webview/webviewMessageHandler.ts:967). +- Stored profile state, global state, and imported settings still treat `roo` as a valid provider in [packages/types/src/provider-settings.ts](packages/types/src/provider-settings.ts:126), [src/core/config/ContextProxy.ts](src/core/config/ContextProxy.ts:462), and [src/core/config/ProviderSettingsManager.ts](src/core/config/ProviderSettingsManager.ts:603). +- CLI still supports `roo` as a first-class provider in [apps/cli/src/types/types.ts](apps/cli/src/types/types.ts:4) and has special fallback logic in [apps/cli/src/commands/cli/run.ts](apps/cli/src/commands/cli/run.ts:83). +- Evals management still exposes Roo-backed model selection and job-token concepts in [apps/web-evals/src/app/runs/new/new-run.tsx](apps/web-evals/src/app/runs/new/new-run.tsx:125) and [apps/web-evals/src/hooks/use-roo-provider-models.ts](apps/web-evals/src/hooks/use-roo-provider-models.ts:35). +- Image generation still defaults new users toward Roo in [packages/types/src/image-generation.ts](packages/types/src/image-generation.ts:47) and renders Roo as a selectable image provider in [webview-ui/src/components/settings/ImageGenerationSettings.tsx](webview-ui/src/components/settings/ImageGenerationSettings.tsx:109). + +A naïve removal would break several upgrade paths: + +- stored extension users with active `apiProvider: "roo"` +- users with saved provider profiles in secrets +- users with mode-to-profile mappings that point at Roo-backed profiles +- imported settings files containing Roo profiles +- CLI users with `provider=roo` or onboarding choice `roo` +- image-generation settings pointing at Roo +- evals management flows that assume Roo-backed model catalogs or tokens + +## Goals + +1. Remove Roo Code Router as a selectable provider from end-user product surfaces. +2. Preserve a safe upgrade path for users with stored `roo` provider state. +3. Ensure no upgraded user lands on a fatal unsupported-provider error on first launch. +4. Preserve access to old settings/profile data long enough to migrate or recover it. +5. Convert stored state to the current login-free default provider path when a usable fallback is possible. +6. Route users without a usable automatic fallback into a guided setup state rather than a broken runtime state. +7. Remove Router-specific docs, tests, and internal/admin UI references that are no longer needed. +8. Keep [apps/web-roo-code](apps/web-roo-code) out of implementation scope unless later explicitly requested. + +## Non-goals + +1. Do not redesign provider onboarding beyond what is necessary to remove Router. +2. Do not change public website marketing or navigation under [apps/web-roo-code](apps/web-roo-code) in this workstream. +3. Do not build a new hosted provider replacement. +4. Do not attempt to preserve full Router feature parity under another provider. +5. Do not migrate evals execution architecture outside the specific Roo references needed to stop exposing Router. + +## Scope note + +### In scope + +- extension runtime and provider resolution +- webview settings and onboarding +- stored profile and global-state migrations +- import/export compatibility +- CLI provider resolution and onboarding cleanup +- evals management UI cleanup under [apps/web-evals](apps/web-evals) +- tests, changelog, and documentation updates in this repository + +### Explicitly out of scope + +Implementation must **not** change the public website app under [apps/web-roo-code](apps/web-roo-code) unless later requested. This includes existing website references such as [apps/web-roo-code/src/components/chromes/nav-bar.tsx](apps/web-roo-code/src/components/chromes/nav-bar.tsx:104) and the public evals page at [apps/web-roo-code/src/app/evals/evals.tsx](apps/web-roo-code/src/app/evals/evals.tsx:36). Those references may be mentioned in this PRD for inventory purposes, but later implementation should treat them as excluded. + +## Current-state inventory of Router-related code paths by subsystem + +### 1. Active product runtime and provider plumbing + +#### Extension provider construction + +- [src/api/index.ts](src/api/index.ts:115) rejects retired providers but still treats `roo` as active and instantiates `RooHandler` in [src/api/index.ts](src/api/index.ts:170). +- This means `roo` cannot simply disappear from type definitions without first adding a migration-safe path. + +#### Extension model aggregation + +- [src/core/webview/webviewMessageHandler.ts](src/core/webview/webviewMessageHandler.ts:947) includes Roo in aggregate router model fetching. +- Removing Router requires updating the shared router-model fetcher so it no longer requests Roo models. + +#### Extension state refresh behavior + +- [webview-ui/src/context/ExtensionStateContext.tsx](webview-ui/src/context/ExtensionStateContext.tsx:477) refreshes Roo models after auth if Roo is the active provider. +- This effect becomes dead code once Roo is removed from runtime selection. + +#### Product settings UI + +- [webview-ui/src/components/settings/providers/Roo.tsx](webview-ui/src/components/settings/providers/Roo.tsx:19) renders the dedicated Roo settings section. +- It binds to `routerModels?.roo` and uses `rooDefaultModelId`, making it an active product option rather than legacy-only code. + +#### Welcome and onboarding UI + +- [webview-ui/src/components/welcome/WelcomeViewProvider.tsx](webview-ui/src/components/welcome/WelcomeViewProvider.tsx:26) models onboarding as `roo | custom`. +- It writes `apiProvider: "roo"` in [webview-ui/src/components/welcome/WelcomeViewProvider.tsx](webview-ui/src/components/welcome/WelcomeViewProvider.tsx:62) and [webview-ui/src/components/welcome/WelcomeViewProvider.tsx](webview-ui/src/components/welcome/WelcomeViewProvider.tsx:104). +- It triggers Router sign-in in [webview-ui/src/components/welcome/WelcomeViewProvider.tsx](webview-ui/src/components/welcome/WelcomeViewProvider.tsx:115). + +### 2. Stored config, profile, and migration code + +#### Provider schema and validity + +- `roo` is currently an active provider name in [packages/types/src/provider-settings.ts](packages/types/src/provider-settings.ts:126). +- `roo` is **not** currently listed as retired in [packages/types/src/provider-settings.ts](packages/types/src/provider-settings.ts:144). +- This distinction matters because sanitizers preserve retired providers but strip unknown ones. + +#### Global-state sanitization + +- [src/core/config/ContextProxy.ts](src/core/config/ContextProxy.ts:226) preserves active and retired providers, but clears unknown ones. +- [src/core/config/ContextProxy.ts](src/core/config/ContextProxy.ts:448) performs the same sanitization when parsing provider settings. +- If `roo` is removed from active types without a transitional compatibility shim, legacy state risks being stripped before migration can map it. + +#### Secret-stored provider profiles + +- [src/core/config/ProviderSettingsManager.ts](src/core/config/ProviderSettingsManager.ts:580) loads all provider profiles from secrets. +- [src/core/config/ProviderSettingsManager.ts](src/core/config/ProviderSettingsManager.ts:643) sanitizes unknown providers out of saved profiles. +- [src/core/config/ProviderSettingsManager.ts](src/core/config/ProviderSettingsManager.ts:519) preserves retired-provider profiles during export. +- [src/core/config/ProviderSettingsManager.ts](src/core/config/ProviderSettingsManager.ts:27) currently contains Roo-specific model migrations. + +#### Import and export + +- [src/core/config/importExport.ts](src/core/config/importExport.ts:40) currently removes any imported provider that is not an active provider. +- Because it only checks `isProviderName` in [src/core/config/importExport.ts](src/core/config/importExport.ts:52), imported Roo profiles would become invalid immediately once `roo` is removed from active providers unless a dedicated compatibility exception is added. +- [src/core/config/importExport.ts](src/core/config/importExport.ts:163) imports provider profiles before pushing the chosen provider into global state. + +#### Existence checks + +- [src/shared/checkExistApiConfig.ts](src/shared/checkExistApiConfig.ts:8) treats `roo` as needing no configuration. +- That special case becomes wrong after Router removal and must be updated. + +### 3. Image generation + +- [packages/types/src/image-generation.ts](packages/types/src/image-generation.ts:44) limits image-generation providers to `openrouter | roo`. +- [packages/types/src/image-generation.ts](packages/types/src/image-generation.ts:47) defaults new users to `roo` when no explicit provider exists. +- [webview-ui/src/components/settings/ImageGenerationSettings.tsx](webview-ui/src/components/settings/ImageGenerationSettings.tsx:109) renders Roo as an image-generation provider option. +- [src/core/tools/GenerateImageTool.ts](src/core/tools/GenerateImageTool.ts:193) still invokes `RooHandler` for image generation. +- This is a separate but related migration surface because users can be broken even if chat provider migration succeeds. + +### 4. CLI runtime, onboarding, and settings + +#### Supported provider set + +- [apps/cli/src/types/types.ts](apps/cli/src/types/types.ts:4) includes `roo` in `supportedProviders`. +- [apps/cli/src/types/types.ts](apps/cli/src/types/types.ts:46) includes onboarding choice `Roo`. + +#### Provider fallback behavior + +- [apps/cli/src/commands/cli/run.ts](apps/cli/src/commands/cli/run.ts:71) resolves stored Roo preferences to `DEFAULT_PROVIDER` when Roo credentials are missing. +- [apps/cli/src/commands/cli/run.ts](apps/cli/src/commands/cli/run.ts:223) logs fallback from stored Roo preference. +- [apps/cli/src/commands/cli/run.ts](apps/cli/src/commands/cli/run.ts:313) contains token-validation logic only for Roo. +- [apps/cli/src/commands/cli/run.ts](apps/cli/src/commands/cli/run.ts:355) resolves Roo API key differently from other providers. +- [apps/cli/src/commands/cli/run.ts](apps/cli/src/commands/cli/run.ts:95) warms Roo models. + +#### Provider settings mapping + +- [apps/cli/src/lib/utils/provider.ts](apps/cli/src/lib/utils/provider.ts:23) knows how to write Roo settings. + +#### CLI docs + +- [apps/cli/README.md](apps/cli/README.md:133) documents optional Roo auth. +- [apps/cli/README.md](apps/cli/README.md:193) documents `roo` as a provider option and `openrouter` as the default. +- [apps/cli/README.md](apps/cli/README.md:217) documents `ROO_API_KEY`. + +### 5. Evals management UI and evals-related admin flows + +Per the evals skill context, this is **internal evals execution and management UI**, not the public website page. + +#### New-run form + +- [apps/web-evals/src/app/runs/new/new-run.tsx](apps/web-evals/src/app/runs/new/new-run.tsx:111) models the provider source as `roo | openrouter | other`. +- [apps/web-evals/src/app/runs/new/new-run.tsx](apps/web-evals/src/app/runs/new/new-run.tsx:125) fetches Roo catalog models via `useRooProviderModels`. +- [apps/web-evals/src/app/runs/new/new-run.tsx](apps/web-evals/src/app/runs/new/new-run.tsx:277) preserves Roo last-used model selection. +- [apps/web-evals/src/app/runs/new/new-run.tsx](apps/web-evals/src/app/runs/new/new-run.tsx:420) requires a Roo token. +- [apps/web-evals/src/app/runs/new/new-run.tsx](apps/web-evals/src/app/runs/new/new-run.tsx:777) renders a Roo Provider Token field. + +#### Roo model catalog hook + +- [apps/web-evals/src/hooks/use-roo-provider-models.ts](apps/web-evals/src/hooks/use-roo-provider-models.ts:35) fetches a Roo-hosted model catalog from `NEXT_PUBLIC_ROO_EVALS_MODEL_CATALOG_URL`. + +#### Evals docs + +- [packages/evals/README.md](packages/evals/README.md:9) already skews toward OpenRouter setup, which is a useful signal that evals can likely shed Roo support without touching public website code. + +### 6. Documentation, changelog, translations, and historical references + +- [CHANGELOG.md](CHANGELOG.md:347) documents the rename from Roo Code Cloud to Roo Code Router. +- [CHANGELOG.md](CHANGELOG.md:1469) documents Router-selection fixes. +- [apps/cli/CHANGELOG.md](apps/cli/CHANGELOG.md:278) still mentions Roo Code Router auth validation. +- Welcome translations still market Router in locale files such as [webview-ui/src/i18n/locales/de/welcome.json](webview-ui/src/i18n/locales/de/welcome.json:22) and [webview-ui/src/i18n/locales/zh-TW/welcome.json](webview-ui/src/i18n/locales/zh-TW/welcome.json:22). +- The public website app also still references Router, but implementation should not touch [apps/web-roo-code](apps/web-roo-code). + +### 7. Tests that encode Roo behavior + +Representative examples: + +- [src/core/config/**tests**/ProviderSettingsManager.spec.ts](src/core/config/__tests__/ProviderSettingsManager.spec.ts:227) validates Roo model migration behavior. +- [src/shared/**tests**/checkExistApiConfig.spec.ts](src/shared/__tests__/checkExistApiConfig.spec.ts:83) expects Roo to count as configured without a key. +- [webview-ui/src/components/welcome/**tests**/WelcomeViewProvider.spec.tsx](webview-ui/src/components/welcome/__tests__/WelcomeViewProvider.spec.tsx:198) expects Roo and custom radio buttons. +- [webview-ui/src/components/welcome/**tests**/WelcomeViewProvider.spec.tsx](webview-ui/src/components/welcome/__tests__/WelcomeViewProvider.spec.tsx:249) expects onboarding to write `apiProvider: "roo"`. +- [webview-ui/src/components/settings/**tests**/ImageGenerationSettings.spec.tsx](webview-ui/src/components/settings/__tests__/ImageGenerationSettings.spec.tsx:93) expects Roo image-generation provider behavior. +- [apps/cli/src/commands/cli/**tests**/run-provider-resolution.test.ts](apps/cli/src/commands/cli/__tests__/run-provider-resolution.test.ts:4) encodes CLI fallback semantics around Roo. +- [apps/web-evals/src/hooks/use-roo-provider-models.test.ts](apps/web-evals/src/hooks/use-roo-provider-models.test.ts:28) exercises Roo eval-catalog fetching. + +## Key product and migration constraints + +1. **No first-launch breakage after upgrade**. +2. **No fatal unsupported-provider path for users who were valid before upgrade**. +3. **No silent data loss of stored profiles before migration runs**. +4. **No implicit website scope creep into [apps/web-roo-code](apps/web-roo-code)**. +5. **Importer compatibility matters** because old exported settings files may continue to circulate after the removal release. +6. **Image generation must be migrated separately** because it has independent Roo defaults and runtime code. + +## Recommended backward-compatibility strategy + +### Summary + +Use a **two-layer compatibility strategy**: + +1. **Transitional recognition layer** + + - Treat `roo` as a **legacy-recognized provider** for loading, import, and migration. + - Do **not** expose it in user-selectable UI or CLI options. + +2. **Automatic fallback layer** + - When legacy Roo state is detected, automatically migrate to the current login-free default provider path **if that path is immediately usable**. + - If it is **not** immediately usable, move the user into a guided setup state with no Roo selection left active. + +### Why this strategy is preferred + +A hard removal would let sanitizers in [src/core/config/ContextProxy.ts](src/core/config/ContextProxy.ts:230), [src/core/config/ProviderSettingsManager.ts](src/core/config/ProviderSettingsManager.ts:643), and [src/core/config/importExport.ts](src/core/config/importExport.ts:44) erase Roo identity before the app can decide how to recover. That risks users ending up with partially valid profiles, stale model fields, or empty provider state without UX guidance. + +A transitional retired/legacy state keeps enough information alive to: + +- know the user had Router selected +- preserve legacy model IDs long enough to attempt mapping +- preserve profile names and mode bindings +- decide whether fallback is fully automatic or setup-assisted + +## Proposed fallback behavior when Router is detected on upgrade + +### Primary rule + +When upgrading and Router is detected as the active provider or active profile: + +1. Attempt to migrate the user to the **current login-free default provider path**. +2. If that fallback provider already has sufficient credentials or login-free readiness in the current surface, activate it automatically. +3. If no immediately usable fallback exists, clear Roo as the active provider and route the user to the standard provider-setup flow in a controlled state. + +### Recommended fallback target + +- **CLI**: use its existing `DEFAULT_PROVIDER` semantics, which current docs indicate as `openrouter` in [apps/cli/README.md](apps/cli/README.md:193). +- **Extension and webview**: use a single shared fallback resolver that points to the product’s current non-Router default onboarding path, rather than hard-coding Roo removal logic in multiple UI components. + +### User-visible behavior + +#### Case A: fallback is immediately usable + +Example: a user has Router selected, but also already has valid default-provider credentials saved. + +Behavior: + +- migrate active profile away from Roo +- map any compatible model fields +- preserve profile name where possible +- show a one-time informational note that Router was removed and the profile was migrated +- continue into normal chat/settings flow without interruption + +#### Case B: fallback provider exists conceptually but is not usable yet + +Example: a user only had Router and no compatible BYOK credentials. + +Behavior: + +- do **not** keep `apiProvider: "roo"` active +- do **not** let provider construction reach the fatal unsupported-provider path +- activate a setup-needed fallback profile or provider-selection state +- open the normal welcome/settings provider-setup experience +- preserve legacy Roo data in a backup form long enough to support recovery and support diagnostics + +This satisfies the user requirement of “must not end up broken” while still honoring automatic fallback as the primary strategy. + +## Detailed migration plan for stored config, profile, and model state + +### Migration principles + +1. Migrate before sanitizers discard Roo identity. +2. Separate **profile migration** from **active-state migration**. +3. Preserve enough metadata to support rollback, support, and import compatibility. +4. Make migrations **idempotent** so repeated startup/import cycles do not corrupt state. + +### Migration data surfaces + +#### A. Secret-stored provider profiles + +Source: [src/core/config/ProviderSettingsManager.ts](src/core/config/ProviderSettingsManager.ts:580) + +Needs migration for: + +- `apiProvider: "roo"` +- Roo model fields such as `apiModelId` +- active profile name and `modeApiConfigs` +- any Roo-specific secrets such as `rooApiKey` + +Recommended behavior: + +- keep loading Roo as legacy-recognized during the migration release +- add a dedicated `routerRemovedMigrated` migration flag in provider-profile migrations +- for each Roo profile: + - determine fallback provider + - create migrated profile content for fallback provider + - preserve old Roo values in a `legacyRooBackup` object or equivalent migration-only metadata until cleanup window ends + - clear active Roo-only fields from the new runtime profile +- if profile cannot become immediately usable, keep the profile record but mark it as setup-needed under the fallback provider or a provider-unset state + +#### B. Global provider state in ContextProxy + +Source: [src/core/config/ContextProxy.ts](src/core/config/ContextProxy.ts:421) + +Needs migration for: + +- active `apiProvider` +- active model fields +- image-generation provider defaults +- current profile metadata mirrored into global state + +Recommended behavior: + +- add an early startup migration that runs before generic invalid-provider sanitization +- if global `apiProvider === "roo"`, resolve replacement provider and write migrated values +- if no usable fallback exists, clear active provider and set a one-shot `needsProviderSetupAfterRouterRemoval` flag consumed by onboarding/settings UX + +#### C. Import/export payloads + +Source: [src/core/config/importExport.ts](src/core/config/importExport.ts:40) + +Current risk: + +- imported Roo profiles will lose `apiProvider` as soon as Roo is no longer an active provider, because `sanitizeProviderConfig` only preserves active providers. + +Recommended behavior: + +- extend import sanitization to recognize legacy Roo and route it through the same migration resolver used at startup +- produce warnings such as: + - Router was removed + - imported profile was migrated to fallback provider + - imported profile requires provider setup to become usable +- preserve import success when possible rather than outright rejecting files containing Roo + +#### D. CLI persisted settings + +Sources: [apps/cli/src/types/types.ts](apps/cli/src/types/types.ts:57) and [apps/cli/src/commands/cli/run.ts](apps/cli/src/commands/cli/run.ts:71) + +Needs migration for: + +- `settings.provider === "roo"` +- `onboardingProviderChoice === Roo` +- stored Roo auth token references + +Recommended behavior: + +- treat stored `provider=roo` as a legacy preference +- reuse existing fallback pattern in [apps/cli/src/commands/cli/run.ts](apps/cli/src/commands/cli/run.ts:83), but after removal make it unconditional for stored settings, not conditional on credential presence +- remove Roo from supported explicit providers once migration messaging exists +- retain one release of CLI warning text explaining the automatic migration + +#### E. Image generation state + +Source: [packages/types/src/image-generation.ts](packages/types/src/image-generation.ts:47) + +Needs migration for: + +- `imageGenerationProvider === "roo"` +- Roo image-generation models +- Roo-default behavior for new users + +Recommended behavior: + +- migrate existing Roo image-generation provider to `openrouter` if a compatible image model can be mapped and OpenRouter key already exists +- otherwise migrate to `openrouter` with setup-needed status and no broken runtime call path +- change new-user default away from Roo immediately in the same release + +### Model-state migration strategy + +#### Chat/provider model selections + +Current Roo-specific model migration exists only for `roo/code-supernova` in [src/core/config/ProviderSettingsManager.ts](src/core/config/ProviderSettingsManager.ts:27) and is insufficient for provider removal. + +Recommended approach: + +1. Add a Router-removal model migration map that attempts to translate known Roo model IDs to default-provider equivalents when a safe match exists. +2. If no exact model mapping exists: + - set the fallback provider’s default model + - store previous Roo model ID as legacy metadata for diagnostics + - emit a one-time user-facing notice +3. Ensure per-mode profile bindings remain valid after profile migration. + +#### Evals model selections + +- Roo-only last-model selection in [apps/web-evals/src/app/runs/new/new-run.tsx](apps/web-evals/src/app/runs/new/new-run.tsx:277) should be removed or replaced with fallback-provider storage. +- Internal eval runs that still depend on Roo token flow should be explicitly called out as requiring separate admin migration before Roo references are deleted. + +## Proposed implementation design + +### Core design decision + +Introduce a **central Router removal migration resolver** used by all affected surfaces: + +- extension startup migration +- provider profile load/import migration +- CLI settings migration +- image-generation migration + +This resolver should answer: + +- was Router detected +- what fallback provider should be used here +- can migration complete automatically +- what fields are preserved, mapped, cleared, or marked for user action + +### Suggested migration flow + +```mermaid +flowchart TD + A[Upgrade start] --> B[Detect legacy Roo state] + B --> C[Resolve fallback provider] + C --> D{Fallback usable now} + D -->|Yes| E[Migrate profile and model] + D -->|No| F[Clear Roo active selection] + E --> G[Persist migrated state] + F --> H[Mark setup needed] + G --> I[Launch normal UX] + H --> J[Launch provider setup UX] +``` + +## Detailed implementation plan and workstreams + +### Workstream 1: Transitional type and schema support + +**Goal:** allow old Roo state to be read safely while making Roo non-selectable. + +Tasks: + +1. Reclassify Roo from active-provider runtime usage to legacy-recognized migration usage. +2. Decide whether Roo should temporarily move into retired-provider handling or a dedicated legacy alias path. +3. Update provider schema helpers so Roo is preserved during migration but excluded from new selection surfaces. +4. Add a migration flag for Router removal in provider-profile storage. +5. Audit any type unions that must stop advertising Roo to new runtime callers. + +Key files: + +- [packages/types/src/provider-settings.ts](packages/types/src/provider-settings.ts:126) +- [src/core/config/ContextProxy.ts](src/core/config/ContextProxy.ts:226) +- [src/core/config/ProviderSettingsManager.ts](src/core/config/ProviderSettingsManager.ts:643) + +### Workstream 2: Extension startup and stored-profile migration + +**Goal:** prevent broken first-launch behavior in the extension. + +Tasks: + +1. Add a Router-removal migration step before generic invalid-provider sanitization. +2. Migrate secret-stored profiles with `apiProvider: "roo"` to fallback provider profiles. +3. Preserve `modeApiConfigs` and active profile linkage after migration. +4. Migrate global-state mirror values in `ContextProxy`. +5. Add one-shot UX flags for setup-needed recovery. +6. Ensure no code path reaches Roo runtime provider construction after migration completes. + +Key files: + +- [src/core/config/ProviderSettingsManager.ts](src/core/config/ProviderSettingsManager.ts:102) +- [src/core/config/ContextProxy.ts](src/core/config/ContextProxy.ts:421) +- [src/api/index.ts](src/api/index.ts:170) + +### Workstream 3: Webview settings and onboarding removal + +**Goal:** stop offering Router in user-facing UI while keeping upgraded users recoverable. + +Tasks: + +1. Remove the Roo provider card from welcome onboarding. +2. Remove Roo provider-specific settings panel from settings UI. +3. Update any auth-trigger side effects that refresh Roo models. +4. Replace upgrade-time Roo recovery with either: + - migrated fallback profile activation, or + - standard provider-setup entry point +5. Remove Roo-specific welcome translations from locale bundles. +6. Update tests that currently expect Roo onboarding flows. + +Key files: + +- [webview-ui/src/components/welcome/WelcomeViewProvider.tsx](webview-ui/src/components/welcome/WelcomeViewProvider.tsx:101) +- [webview-ui/src/components/settings/providers/Roo.tsx](webview-ui/src/components/settings/providers/Roo.tsx:19) +- [webview-ui/src/context/ExtensionStateContext.tsx](webview-ui/src/context/ExtensionStateContext.tsx:477) +- [webview-ui/src/components/welcome/**tests**/WelcomeViewProvider.spec.tsx](webview-ui/src/components/welcome/__tests__/WelcomeViewProvider.spec.tsx:198) + +### Workstream 4: Router-model fetch and provider-runtime cleanup + +**Goal:** remove active Roo fetch and handler paths after migration support exists. + +Tasks: + +1. Remove Roo from aggregate router-model fetching. +2. Remove Roo handler construction from runtime provider switch after migration safety is in place. +3. Remove Roo-specific warmup and auth-refresh messaging. +4. Remove Roo-specific existence-check shortcuts. +5. Verify no latent callsites still assume `routerModels.roo` exists. + +Key files: + +- [src/core/webview/webviewMessageHandler.ts](src/core/webview/webviewMessageHandler.ts:947) +- [src/api/index.ts](src/api/index.ts:121) +- [src/shared/checkExistApiConfig.ts](src/shared/checkExistApiConfig.ts:8) + +### Workstream 5: Image-generation migration + +**Goal:** prevent Roo image-generation configuration from becoming a hidden breakage path. + +Tasks: + +1. Remove Roo from image-generation provider options. +2. Change new-user image-generation default away from Roo. +3. Migrate existing `imageGenerationProvider=roo` state to the fallback image provider. +4. Remove Roo image-generation runtime invocation. +5. Update image-generation strings and tests. + +Key files: + +- [packages/types/src/image-generation.ts](packages/types/src/image-generation.ts:44) +- [webview-ui/src/components/settings/ImageGenerationSettings.tsx](webview-ui/src/components/settings/ImageGenerationSettings.tsx:109) +- [src/core/tools/GenerateImageTool.ts](src/core/tools/GenerateImageTool.ts:193) + +### Workstream 6: CLI removal and CLI upgrade safety + +**Goal:** keep CLI users from breaking on stored Roo preferences while removing Roo as a supported option. + +Tasks: + +1. Remove Roo from `supportedProviders` after migration messaging is ready. +2. Convert stored `provider=roo` to CLI `DEFAULT_PROVIDER` semantics. +3. Convert `onboardingProviderChoice=Roo` to the non-Router onboarding path. +4. Remove Roo token validation, Roo model warmup, and Roo-specific API key resolution. +5. Remove Roo auth docs and environment-variable docs. +6. Keep one migration-release warning message for users who had Roo configured. + +Key files: + +- [apps/cli/src/types/types.ts](apps/cli/src/types/types.ts:4) +- [apps/cli/src/commands/cli/run.ts](apps/cli/src/commands/cli/run.ts:71) +- [apps/cli/src/lib/utils/provider.ts](apps/cli/src/lib/utils/provider.ts:23) +- [apps/cli/README.md](apps/cli/README.md:133) + +### Workstream 7: Evals management UI cleanup + +**Goal:** remove Roo option from internal eval-run configuration unless separately required for internal-only admin migration. + +Tasks: + +1. Remove Roo as a model source in the new-run form. +2. Remove Roo token field and Roo-only local-storage persistence. +3. Remove Roo catalog hook if no longer needed. +4. Confirm evals execution setup remains OpenRouter-capable. +5. Preserve explicit website out-of-scope boundary with [apps/web-roo-code](apps/web-roo-code). + +Key files: + +- [apps/web-evals/src/app/runs/new/new-run.tsx](apps/web-evals/src/app/runs/new/new-run.tsx:111) +- [apps/web-evals/src/hooks/use-roo-provider-models.ts](apps/web-evals/src/hooks/use-roo-provider-models.ts:35) +- [packages/evals/README.md](packages/evals/README.md:9) + +### Workstream 8: Docs, changelog, and localization cleanup + +**Goal:** remove active-user guidance that still points to Router. + +Tasks: + +1. Update extension welcome and settings copy. +2. Update CLI README and auth help text. +3. Add changelog entry describing Router removal and upgrade migration behavior. +4. Remove or rewrite locale keys that mention Roo Code Router. +5. Leave historical changelog entries intact except where the current release needs clarification. + +Key files: + +- [CHANGELOG.md](CHANGELOG.md:347) +- [apps/cli/README.md](apps/cli/README.md:133) +- [webview-ui/src/i18n/locales/de/welcome.json](webview-ui/src/i18n/locales/de/welcome.json:22) + +### Workstream 9: Test suite conversion + +**Goal:** replace Roo-positive assertions with migration and recovery assertions. + +Tasks: + +1. Replace tests that assert Roo remains selectable. +2. Add tests for startup migration from active Roo state. +3. Add tests for import/export migration of Roo profiles. +4. Add tests for profile backup and idempotent re-run behavior. +5. Add tests for CLI stored Roo preference fallback after removal. +6. Add tests for image-generation migration. +7. Add tests for evals admin UI cleanup if kept in scope. + +## Risks, edge cases, and mitigations + +| Risk | Example | Mitigation | +| ---------------------------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | +| Roo becomes unknown too early | Sanitizer strips `apiProvider: roo` before migration | Run Router-removal migration before invalid-provider sanitization and preserve Roo as legacy-recognized during transition | +| User has only Roo and no fallback credentials | Automatic fallback points to a provider that still needs setup | Convert to setup-needed state and launch standard provider setup UX instead of leaving Roo active | +| Mode bindings point at migrated/deleted profile IDs | `modeApiConfigs` references stale IDs | Migrate profile IDs carefully or update all bound IDs in the same transaction | +| Import of old settings file silently loses Roo intent | Import sanitization removes `apiProvider` | Route imported Roo configs through same legacy migration resolver and return warnings | +| Image generation remains on Roo after chat migration | Hidden runtime failure in image tool | Include image-generation migration in the same release | +| CLI users lose ability to run due to stored Roo preference | `provider=roo` no longer supported | Reuse existing fallback pattern and migrate stored settings before validation | +| Evals internal users still require Roo admin flow | New-run form removal blocks internal process | Confirm internal dependency first; if unavoidable, isolate as internal-only exception rather than product feature | +| Historical profile data is lost | Old model IDs and Roo credentials discarded immediately | Preserve backup metadata or legacy import shim for a defined grace period | + +## Test plan and validation matrix + +### Validation principles + +- test migrations from real legacy Roo state, not only clean-state behavior +- test both usable and unusable fallback scenarios +- test idempotency across repeated launches/imports +- test product, CLI, and admin evals surfaces separately + +### Validation matrix + +| Scenario | Surface | Expected result | +| ------------------------------------------------------------------ | ----------------- | ---------------------------------------------------------------------------- | +| Existing active Roo provider with usable fallback credentials | Extension | User launches successfully on migrated fallback profile | +| Existing active Roo provider with no fallback credentials | Extension | User lands in provider setup state, no fatal provider error | +| Saved Roo profile not currently active | Extension | Profile is migrated or marked setup-needed without corrupting other profiles | +| Mode-specific config points to Roo profile | Extension | Mode binding points to migrated replacement profile | +| Old exported settings file contains Roo profile | Import/export | Import succeeds with warnings and migrated result | +| Global state contains `apiProvider=roo` but profiles are absent | Extension | Global state is repaired and user is routed to safe setup path | +| Image generation provider is Roo | Extension | Migrated to non-Roo image provider or setup-needed state | +| CLI settings file has `provider=roo` | CLI | Command runs through default-provider fallback or instructive setup path | +| CLI onboarding choice is Roo | CLI | Onboarding no longer attempts Roo path | +| User explicitly passes `--provider roo` during deprecation release | CLI | Clear migration/removal error message with recovery guidance | +| Evals new-run form previously stored Roo selections | Web-evals | Form no longer exposes Roo and does not crash on stale local storage | +| Fresh install after removal | Extension and CLI | No Roo UI, no Roo defaults, no Roo docs shown | + +### Required automated test areas + +#### Extension and config tests + +- startup migration from Roo active provider +- provider-profile migration in secrets +- import of Roo profiles from JSON +- idempotent rerun of migration +- per-mode profile remapping +- unsupported-provider guard never triggered for migrated users + +#### Webview tests + +- welcome screen no longer renders Roo option +- settings no longer renders Roo provider panel +- setup-needed upgrade flow opens correct non-Router path +- image-generation settings no longer offer Roo + +#### CLI tests + +- stored Roo preference migration +- onboarding migration +- explicit Roo provider rejection after removal release gates are active +- README and help snapshots if applicable + +#### Evals tests + +- Roo provider source removed from new-run UI +- stale Roo local-storage state does not break rendering +- Roo model catalog hook removed or isolated + +## Rollout plan + +### Phase 1: Compatibility-first removal release + +- keep legacy Roo recognition for migration +- remove Roo from selection UIs +- migrate startup/import/CLI/image state +- ship migration messaging and validation coverage + +### Phase 2: Cleanup release + +- remove heavier runtime shims no longer needed after successful migration window +- keep minimal legacy import recognition if still needed +- remove obsolete tests and dead utility code + +### Phase 3: Long-tail cleanup + +- evaluate whether any legacy Roo import support can be deleted +- only remove remaining compatibility aliases after evidence that old exported configs are no longer expected to work + +## Recommendation on temporary shims and deletion timing + +### Recommendation + +**Preserve temporary migration shims, but split them into short-lived and long-lived categories.** + +#### Keep short-lived shims temporarily + +Keep for the migration release and at least one follow-up stable release: + +- startup migration logic for active Roo users +- setup-needed recovery flags +- one-time user messaging +- CLI stored-setting migration warnings + +These are safe to delete once: + +- no supported upgrade path needs them +- tests confirm post-migration state no longer contains Roo +- support confirms no recurring reports from users upgrading from pre-removal versions + +#### Keep minimal long-lived shims longer + +Keep longer, possibly indefinitely unless product policy explicitly drops old-import support: + +- import-time recognition of legacy Roo profiles +- profile-loader recognition that prevents silent loss of old exported settings + +Rationale: + +Import compatibility is a different promise from runtime support. Removing runtime Router quickly is reasonable. Making old settings files unrecoverable is a worse long-tail regression. + +### Deletion rule of thumb + +- delete **runtime/UI shims** after the migration window proves stable +- keep **import and legacy-profile parsing shims** until the team explicitly decides old config files no longer need to import cleanly + +## Ready for implementation + +### Recommended execution order + +1. Add legacy-recognized Roo migration support in types and config loaders. +2. Implement startup/profile/import migration resolver. +3. Implement extension/webview fallback UX and remove Router UI. +4. Migrate image-generation Roo defaults and runtime. +5. Remove Roo from CLI supported providers and docs while preserving stored-setting migration. +6. Remove Roo from evals management UI. +7. Update docs, locales, changelog, and tests. +8. Run full validation matrix across upgrade scenarios. + +### Handoff summary for Code mode + +Code mode should treat this as a **migration-led provider removal** across: + +- extension runtime +- webview onboarding and settings +- secret-stored profiles +- global provider state +- import/export +- image generation +- CLI provider resolution +- evals management UI + +The implementation should explicitly avoid changing [apps/web-roo-code](apps/web-roo-code) unless later requested. diff --git a/src/__tests__/extension.spec.ts b/src/__tests__/extension.spec.ts index a13e78c4bde..324e0028b8e 100644 --- a/src/__tests__/extension.spec.ts +++ b/src/__tests__/extension.spec.ts @@ -203,12 +203,11 @@ vi.mock("../core/webview/ClineProvider", async () => { }) // Mock modelCache to prevent network requests during module loading -const mockRefreshModels = vi.fn().mockResolvedValue({}) vi.mock("../api/providers/fetchers/modelCache", () => ({ flushModels: vi.fn(), getModels: vi.fn().mockResolvedValue([]), initializeModelCacheRefresh: vi.fn(), - refreshModels: mockRefreshModels, + refreshModels: vi.fn().mockResolvedValue({}), })) describe("extension.ts", () => { @@ -262,18 +261,14 @@ describe("extension.ts", () => { expect(dotenvx.config).toHaveBeenCalledTimes(1) }) - describe("Roo model cache refresh on auth state change (ROO-202)", () => { + describe("cloud auth state handling", () => { beforeEach(() => { vi.resetModules() - mockRefreshModels.mockClear() }) - test("refreshModels is called with session token when auth state changes to active-session", async () => { - const mockAuthService = { - getSessionToken: vi.fn().mockReturnValue("test-session-token"), - } - + test("auth state changes still post webview state without Roo model cache side effects", async () => { const { CloudService } = await import("@roo-code/cloud") + const { ClineProvider } = await import("../core/webview/ClineProvider") vi.mocked(CloudService.createInstance).mockImplementation(async (_context, _logger, handlers) => { if (handlers?.["auth-state-changed"]) { @@ -283,7 +278,7 @@ describe("extension.ts", () => { off: vi.fn(), on: vi.fn(), telemetryClient: null, - authService: mockAuthService, + authService: null, hasActiveSession: vi.fn().mockReturnValue(false), } as any }) @@ -294,54 +289,26 @@ describe("extension.ts", () => { const { activate } = await import("../extension") await activate(mockContext) - // Clear any calls during activation - mockRefreshModels.mockClear() + const provider = (ClineProvider as any).getVisibleInstance() + provider.postStateToWebviewWithoutClineMessages.mockClear() - // Trigger active-session state await authStateChangedHandler!({ state: "active-session" as AuthState, previousState: "logged-out" as AuthState, }) - // Verify refreshModels was called with correct parameters including session token - expect(mockRefreshModels).toHaveBeenCalledWith({ - provider: "roo", - baseUrl: expect.any(String), - apiKey: "test-session-token", - }) + expect(provider.postStateToWebviewWithoutClineMessages).toHaveBeenCalledTimes(1) }) - test("flushModels is called when auth state changes to logged-out", async () => { - const { flushModels } = await import("../api/providers/fetchers/modelCache") + test("activation continues when CloudService initialization fails", async () => { const { CloudService } = await import("@roo-code/cloud") - vi.mocked(CloudService.createInstance).mockImplementation(async (_context, _logger, handlers) => { - if (handlers?.["auth-state-changed"]) { - authStateChangedHandler = handlers["auth-state-changed"] - } - return { - off: vi.fn(), - on: vi.fn(), - telemetryClient: null, - authService: null, - hasActiveSession: vi.fn().mockReturnValue(false), - } as any - }) - - vi.mocked(CloudService.hasInstance).mockReturnValue(true) + vi.mocked(CloudService.createInstance).mockRejectedValue(new Error("cloud init failed")) + vi.mocked(CloudService.hasInstance).mockReturnValue(false) - // Activate the extension const { activate } = await import("../extension") - await activate(mockContext) - - // Trigger logged-out state - await authStateChangedHandler!({ - state: "logged-out" as AuthState, - previousState: "active-session" as AuthState, - }) - // Verify flushModels was called to clear the cache on logout - expect(flushModels).toHaveBeenCalledWith({ provider: "roo" }, false) + await expect(activate(mockContext)).resolves.toBeDefined() }) }) }) diff --git a/src/activate/__tests__/handleUri.spec.ts b/src/activate/__tests__/handleUri.spec.ts new file mode 100644 index 00000000000..73a0f6cf256 --- /dev/null +++ b/src/activate/__tests__/handleUri.spec.ts @@ -0,0 +1,39 @@ +vi.mock("vscode", () => ({ + window: { + showInformationMessage: vi.fn(), + }, +})) + +import * as vscode from "vscode" + +import { handleUri } from "../handleUri" + +const mockVisibleProvider = { + handleOpenRouterCallback: vi.fn(), + handleRequestyCallback: vi.fn(), +} as any + +vi.mock("../../core/webview/ClineProvider", () => ({ + ClineProvider: { + getVisibleInstance: vi.fn(() => mockVisibleProvider), + }, +})) + +describe("handleUri", () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it("ignores legacy cloud auth callback", async () => { + await handleUri({ + path: "/auth/clerk/callback", + query: "code=test-code&state=test-state&organizationId=test-org", + } as any) + + expect(mockVisibleProvider.handleOpenRouterCallback).not.toHaveBeenCalled() + expect(mockVisibleProvider.handleRequestyCallback).not.toHaveBeenCalled() + expect(vscode.window.showInformationMessage).toHaveBeenCalledWith( + "Roo Code Cloud sign-in is currently unavailable. Configure another provider to continue.", + ) + }) +}) diff --git a/src/activate/handleUri.ts b/src/activate/handleUri.ts index c29b66e21af..fc95aa5e48f 100644 --- a/src/activate/handleUri.ts +++ b/src/activate/handleUri.ts @@ -1,7 +1,6 @@ import * as vscode from "vscode" -import { CloudService } from "@roo-code/cloud" - +import { getRouterUnavailableSignInMessage } from "../core/config/routerRemoval" import { ClineProvider } from "../core/webview/ClineProvider" export const handleUri = async (uri: vscode.Uri) => { @@ -30,17 +29,7 @@ export const handleUri = async (uri: vscode.Uri) => { break } case "/auth/clerk/callback": { - const code = query.get("code") - const state = query.get("state") - const organizationId = query.get("organizationId") - const providerModel = query.get("provider_model") - - await CloudService.instance.handleAuthCallback( - code, - state, - organizationId === "null" ? null : organizationId, - providerModel, - ) + vscode.window.showInformationMessage(getRouterUnavailableSignInMessage()) break } default: diff --git a/src/activate/registerCommands.ts b/src/activate/registerCommands.ts index f02ee8309a3..0fb2c9d0406 100644 --- a/src/activate/registerCommands.ts +++ b/src/activate/registerCommands.ts @@ -72,17 +72,6 @@ export const registerCommands = (options: RegisterCommandOptions) => { const getCommandsMap = ({ context, outputChannel, provider }: RegisterCommandOptions): Record => ({ activationCompleted: () => {}, - cloudButtonClicked: () => { - const visibleProvider = getVisibleProviderOrLog(outputChannel) - - if (!visibleProvider) { - return - } - - TelemetryService.instance.captureTitleButtonClicked("cloud") - - visibleProvider.postMessageToWebview({ type: "action", action: "cloudButtonClicked" }) - }, plusButtonClicked: async () => { const visibleProvider = getVisibleProviderOrLog(outputChannel) diff --git a/src/api/index.ts b/src/api/index.ts index 1891113c03b..9e0c4078225 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -3,6 +3,7 @@ import OpenAI from "openai" import { isRetiredProvider, type ProviderSettings, type ModelInfo } from "@roo-code/types" +import { getRouterRemovalMessage } from "../core/config/routerRemoval" import { ApiStream } from "./transform/stream" import { @@ -30,7 +31,6 @@ import { SambaNovaHandler, ZAiHandler, FireworksHandler, - RooHandler, VercelAiGatewayHandler, MiniMaxHandler, BasetenHandler, @@ -112,6 +112,10 @@ export interface ApiHandler { export function buildApiHandler(configuration: ProviderSettings): ApiHandler { const { apiProvider, ...options } = configuration + if (apiProvider === "roo") { + throw new Error(getRouterRemovalMessage()) + } + if (apiProvider && isRetiredProvider(apiProvider)) { throw new Error( `Sorry, this provider is no longer supported. We saw very few Roo users actually using it and we need to reduce the surface area of our codebase so we can keep shipping fast and serving our community well in this space. It was a really hard decision but it lets us focus on what matters most to you. It sucks, we know.\n\nPlease select a different provider in your API profile settings.`, @@ -167,10 +171,6 @@ export function buildApiHandler(configuration: ProviderSettings): ApiHandler { return new ZAiHandler(options) case "fireworks": return new FireworksHandler(options) - case "roo": - // Never throw exceptions from provider constructors - // The provider-proxy server will handle authentication and return appropriate error codes - return new RooHandler(options) case "vercel-ai-gateway": return new VercelAiGatewayHandler(options) case "minimax": diff --git a/src/api/providers/__tests__/roo.spec.ts b/src/api/providers/__tests__/roo.spec.ts index a6a76fe100d..bf7f12ea862 100644 --- a/src/api/providers/__tests__/roo.spec.ts +++ b/src/api/providers/__tests__/roo.spec.ts @@ -198,19 +198,15 @@ describe("RooHandler", () => { handler = new RooHandler(mockOptions) }) - it("should update API key before making request", async () => { - // Set up a fresh token that will be returned when createMessage is called - const freshToken = "fresh-session-token" - mockGetSessionTokenFn.mockReturnValue(freshToken) - + it("should not depend on Cloud session-token refresh before making request", async () => { const stream = handler.createMessage(systemPrompt, messages) // Consume the stream to trigger the API call for await (const _chunk of stream) { // Just consume } - // Verify getSessionToken was called to get the fresh token - expect(mockGetSessionTokenFn).toHaveBeenCalled() + expect(mockCreate).toHaveBeenCalled() + expect(mockGetSessionTokenFn).not.toHaveBeenCalled() }) it("should handle streaming responses", async () => { @@ -325,23 +321,11 @@ describe("RooHandler", () => { }) }) - it("should update API key before making request", async () => { - // Set up a fresh token that will be returned when completePrompt is called - const freshToken = "fresh-session-token" - mockGetSessionTokenFn.mockReturnValue(freshToken) - - // Access the client's apiKey property to verify it gets updated - const clientApiKeyGetter = vitest.fn() - Object.defineProperty(handler["client"], "apiKey", { - get: clientApiKeyGetter, - set: vitest.fn(), - configurable: true, - }) - + it("should not depend on Cloud session-token refresh before making request", async () => { await handler.completePrompt("Test prompt") - // Verify getSessionToken was called to get the fresh token - expect(mockGetSessionTokenFn).toHaveBeenCalled() + expect(mockCreate).toHaveBeenCalled() + expect(mockGetSessionTokenFn).not.toHaveBeenCalled() }) it("should handle API errors", async () => { @@ -486,13 +470,10 @@ describe("RooHandler", () => { }) describe("authentication flow", () => { - it("should use session token as API key", () => { - const testToken = "test-session-token-123" - mockGetSessionTokenFn.mockReturnValue(testToken) - + it("should initialize without relying on Cloud session tokens", () => { handler = new RooHandler(mockOptions) expect(handler).toBeInstanceOf(RooHandler) - expect(mockGetSessionTokenFn).toHaveBeenCalled() + expect(mockGetSessionTokenFn).not.toHaveBeenCalled() }) it("should handle undefined auth service gracefully", () => { diff --git a/src/api/providers/roo.ts b/src/api/providers/roo.ts index b455a1885ed..f9e4ccd129c 100644 --- a/src/api/providers/roo.ts +++ b/src/api/providers/roo.ts @@ -2,7 +2,6 @@ import { Anthropic } from "@anthropic-ai/sdk" import OpenAI from "openai" import { rooDefaultModelId, getApiProtocol, type ImageGenerationApiMethod } from "@roo-code/types" -import { CloudService } from "@roo-code/cloud" import { NativeToolCallParser } from "../../core/assistant-message/NativeToolCallParser" @@ -33,8 +32,7 @@ type RooChatCompletionParams = OpenAI.Chat.ChatCompletionCreateParamsStreaming & } function getSessionToken(): string { - const token = CloudService.hasInstance() ? CloudService.instance.authService?.getSessionToken() : undefined - return token ?? "unauthenticated" + return "unauthenticated" } export class RooHandler extends BaseOpenAiCompatibleProvider { diff --git a/src/core/config/ContextProxy.ts b/src/core/config/ContextProxy.ts index 2825d1c9452..97d4104afc3 100644 --- a/src/core/config/ContextProxy.ts +++ b/src/core/config/ContextProxy.ts @@ -22,6 +22,7 @@ import { TelemetryService } from "@roo-code/telemetry" import { logger } from "../../utils/logging" import { supportPrompt } from "../../shared/support-prompt" +import { downgradeLegacyRooConfig } from "./routerRemoval" type GlobalStateKey = keyof GlobalState type SecretStateKey = keyof SecretState @@ -91,6 +92,9 @@ export class ContextProxy { // Migration: Check for old nested image generation settings and migrate them await this.migrateImageGenerationSettings() + // Migration: Downgrade legacy Roo Code Router state before generic sanitization. + await this.migrateLegacyRooApiProvider() + // Migration: Sanitize invalid/removed API providers await this.migrateInvalidApiProvider() @@ -223,6 +227,33 @@ export class ContextProxy { return hasAllV1Phrases && hasNoV2Features } + /** + * Migrates legacy Roo Code Router selections into a setup-needed state. + */ + private async migrateLegacyRooApiProvider() { + try { + const { config: migratedState, migrated } = downgradeLegacyRooConfig( + this.stateCache as Record, + ) + + if (!migrated) { + return + } + + logger.info("[ContextProxy] Migrating legacy Roo Code Router state to setup-needed fallback") + this.stateCache = migratedState as GlobalState + await Promise.all([ + this.originalContext.globalState.update("apiProvider", undefined), + this.originalContext.globalState.update("apiModelId", undefined), + this.originalContext.globalState.update("rooApiKey", undefined), + ]) + } catch (error) { + logger.error( + `Error during Roo Code Router migration: ${error instanceof Error ? error.message : String(error)}`, + ) + } + } + /** * Migrates unknown apiProvider values by clearing them from storage. * Retired providers are preserved so users can keep historical configuration. @@ -446,11 +477,13 @@ export class ContextProxy { * Active and retired providers are preserved. */ private sanitizeProviderValues(values: RooCodeSettings): RooCodeSettings { + const { config: rooSanitizedValues } = downgradeLegacyRooConfig(values as Record) + let sanitizedValues = rooSanitizedValues as RooCodeSettings + // Remove legacy Claude Code CLI wrapper keys that may still exist in global state. // These keys were used by a removed local CLI runner and are no longer part of ProviderSettings. const legacyKeys = ["claudeCodePath", "claudeCodeMaxOutputTokens"] as const - let sanitizedValues = values for (const key of legacyKeys) { if (key in sanitizedValues) { const copy = { ...sanitizedValues } as Record @@ -460,11 +493,13 @@ export class ContextProxy { } const isKnownProvider = - typeof values.apiProvider === "string" && - (isProviderName(values.apiProvider) || isRetiredProvider(values.apiProvider)) + typeof sanitizedValues.apiProvider === "string" && + (isProviderName(sanitizedValues.apiProvider) || isRetiredProvider(sanitizedValues.apiProvider)) - if (values.apiProvider !== undefined && !isKnownProvider) { - logger.info(`[ContextProxy] Sanitizing invalid provider "${values.apiProvider}" - resetting to undefined`) + if (sanitizedValues.apiProvider !== undefined && !isKnownProvider) { + logger.info( + `[ContextProxy] Sanitizing invalid provider "${sanitizedValues.apiProvider}" - resetting to undefined`, + ) // Return a new values object without the invalid apiProvider const { apiProvider, ...restValues } = sanitizedValues return restValues as RooCodeSettings diff --git a/src/core/config/ProviderSettingsManager.ts b/src/core/config/ProviderSettingsManager.ts index 6088bd68fe2..7195b113738 100644 --- a/src/core/config/ProviderSettingsManager.ts +++ b/src/core/config/ProviderSettingsManager.ts @@ -18,17 +18,14 @@ import { TelemetryService } from "@roo-code/telemetry" import { Mode, modes } from "../../shared/modes" import { buildApiHandler } from "../../api" +import { downgradeLegacyRooConfig } from "./routerRemoval" // Type-safe model migrations mapping type ModelMigrations = { [K in ProviderName]?: Record } -const MODEL_MIGRATIONS: ModelMigrations = { - roo: { - "roo/code-supernova": "roo/code-supernova-1-million", - }, -} as const satisfies ModelMigrations +const MODEL_MIGRATIONS: ModelMigrations = {} as const satisfies ModelMigrations export interface SyncCloudProfilesResult { hasChanges: boolean @@ -48,6 +45,7 @@ export const providerProfilesSchema = z.object({ consecutiveMistakeLimitMigrated: z.boolean().optional(), todoListEnabledMigrated: z.boolean().optional(), claudeCodeLegacySettingsMigrated: z.boolean().optional(), + routerProviderMigrated: z.boolean().optional(), }) .optional(), }) @@ -72,6 +70,7 @@ export class ProviderSettingsManager { consecutiveMistakeLimitMigrated: true, // Mark as migrated on fresh installs todoListEnabledMigrated: true, // Mark as migrated on fresh installs claudeCodeLegacySettingsMigrated: true, // Mark as migrated on fresh installs + routerProviderMigrated: true, // Mark as migrated on fresh installs }, } @@ -144,10 +143,19 @@ export class ProviderSettingsManager { consecutiveMistakeLimitMigrated: false, todoListEnabledMigrated: false, claudeCodeLegacySettingsMigrated: false, + routerProviderMigrated: false, } // Initialize with default values isDirty = true } + if (!providerProfiles.migrations.routerProviderMigrated) { + if (this.migrateLegacyRooProviderProfiles(providerProfiles)) { + isDirty = true + } + providerProfiles.migrations.routerProviderMigrated = true + isDirty = true + } + if (!providerProfiles.migrations.rateLimitSecondsMigrated) { await this.migrateRateLimitSeconds(providerProfiles) providerProfiles.migrations.rateLimitSecondsMigrated = true @@ -313,6 +321,25 @@ export class ProviderSettingsManager { return migrated } + private migrateLegacyRooProviderProfiles(providerProfiles: ProviderProfiles): boolean { + let migrated = false + + for (const [name, apiConfig] of Object.entries(providerProfiles.apiConfigs)) { + const { config: downgradedConfig, migrated: didMigrate } = downgradeLegacyRooConfig( + apiConfig as Record, + ) + + if (!didMigrate) { + continue + } + + providerProfiles.apiConfigs[name] = providerSettingsWithIdSchema.parse(downgradedConfig) + migrated = true + } + + return migrated + } + /** * Clean model ID by removing prefix before "/" */ @@ -359,15 +386,17 @@ export class ProviderSettingsManager { // Preserve the existing ID if this is an update to an existing config. const existingId = providerProfiles.apiConfigs[name]?.id const id = config.id || existingId || this.generateId() + const normalizedConfig = downgradeLegacyRooConfig(config as Record) + .config as ProviderSettingsWithId // For active providers, filter out settings from other providers. // For retired providers, preserve full profile fields (including legacy // provider-specific keys) to avoid data loss — passthrough() keeps // unknown keys that strict parse() would strip. const filteredConfig = - typeof config.apiProvider === "string" && isRetiredProvider(config.apiProvider) - ? providerSettingsWithIdSchema.passthrough().parse(config) - : discriminatedProviderSettingsWithIdSchema.parse(config) + typeof normalizedConfig.apiProvider === "string" && isRetiredProvider(normalizedConfig.apiProvider) + ? providerSettingsWithIdSchema.passthrough().parse(normalizedConfig) + : discriminatedProviderSettingsWithIdSchema.parse(normalizedConfig) providerProfiles.apiConfigs[name] = { ...filteredConfig, id } await this.store(providerProfiles) return id @@ -645,7 +674,7 @@ export class ProviderSettingsManager { return apiConfig } - const config = apiConfig as Record + const { config } = downgradeLegacyRooConfig(apiConfig as Record) const apiProvider = config.apiProvider diff --git a/src/core/config/__tests__/ContextProxy.spec.ts b/src/core/config/__tests__/ContextProxy.spec.ts index 7c1d2a6e3ca..eae05a58862 100644 --- a/src/core/config/__tests__/ContextProxy.spec.ts +++ b/src/core/config/__tests__/ContextProxy.spec.ts @@ -435,6 +435,29 @@ describe("ContextProxy", () => { }) describe("invalid apiProvider migration", () => { + it("should clear Roo provider state during initialization", async () => { + vi.clearAllMocks() + mockGlobalState.get.mockImplementation((key: string) => { + if (key === "apiProvider") { + return "roo" + } + if (key === "apiModelId") { + return "roo/code-supernova" + } + if (key === "rooApiKey") { + return "router-key" + } + return undefined + }) + + const proxyWithRooProvider = new ContextProxy(mockContext) + await proxyWithRooProvider.initialize() + + expect(mockGlobalState.update).toHaveBeenCalledWith("apiProvider", undefined) + expect(mockGlobalState.update).toHaveBeenCalledWith("apiModelId", undefined) + expect(mockGlobalState.update).toHaveBeenCalledWith("rooApiKey", undefined) + }) + it("should clear invalid apiProvider from storage during initialization", async () => { // Reset and create a new proxy with invalid provider in state vi.clearAllMocks() @@ -492,6 +515,20 @@ describe("ContextProxy", () => { }) describe("getProviderSettings", () => { + it("should sanitize Roo provider into a setup-needed fallback", async () => { + await proxy.setValues({ + apiProvider: "roo", + apiModelId: "roo/code-supernova", + rooApiKey: "router-key", + }) + + const settings = proxy.getProviderSettings() + + expect(settings.apiProvider).toBeUndefined() + expect(settings.apiModelId).toBeUndefined() + expect(settings.rooApiKey).toBeUndefined() + }) + it("should sanitize invalid apiProvider before parsing", async () => { // Reset and create a new proxy with an unknown provider in state vi.clearAllMocks() diff --git a/src/core/config/__tests__/ProviderSettingsManager.spec.ts b/src/core/config/__tests__/ProviderSettingsManager.spec.ts index 3f6b4f78478..1099888ae31 100644 --- a/src/core/config/__tests__/ProviderSettingsManager.spec.ts +++ b/src/core/config/__tests__/ProviderSettingsManager.spec.ts @@ -66,6 +66,7 @@ describe("ProviderSettingsManager", () => { consecutiveMistakeLimitMigrated: true, todoListEnabledMigrated: true, claudeCodeLegacySettingsMigrated: true, + routerProviderMigrated: true, }, }), ) @@ -224,7 +225,7 @@ describe("ProviderSettingsManager", () => { expect(storedConfig.migrations.todoListEnabledMigrated).toEqual(true) }) - it("should apply model migrations for all providers", async () => { + it("should migrate legacy Roo provider profiles into a setup-needed fallback", async () => { mockSecrets.get.mockResolvedValue( JSON.stringify({ currentApiConfigName: "default", @@ -253,6 +254,7 @@ describe("ProviderSettingsManager", () => { }, }, migrations: { + routerProviderMigrated: false, rateLimitSecondsMigrated: true, openAiHeadersMigrated: true, consecutiveMistakeLimitMigrated: true, @@ -267,73 +269,41 @@ describe("ProviderSettingsManager", () => { const calls = mockSecrets.store.mock.calls const storedConfig = JSON.parse(calls[calls.length - 1][1]) - // Roo provider configs should be migrated - expect(storedConfig.apiConfigs.default.apiModelId).toEqual("roo/code-supernova-1-million") - expect(storedConfig.apiConfigs.test.apiModelId).toEqual("roo/code-supernova-1-million") - expect(storedConfig.apiConfigs.existing.apiModelId).toEqual("roo/code-supernova-1-million") + // Roo provider configs should be downgraded into an unconfigured fallback state + expect(storedConfig.apiConfigs.default.apiProvider).toBeUndefined() + expect(storedConfig.apiConfigs.default.apiModelId).toBeUndefined() + expect(storedConfig.apiConfigs.test.apiProvider).toBeUndefined() + expect(storedConfig.apiConfigs.test.apiModelId).toBeUndefined() + expect(storedConfig.apiConfigs.existing.apiProvider).toBeUndefined() + expect(storedConfig.apiConfigs.existing.apiModelId).toBeUndefined() + expect(storedConfig.migrations.routerProviderMigrated).toEqual(true) // Non-roo provider configs should not be migrated expect(storedConfig.apiConfigs.otherProvider.apiModelId).toEqual("roo/code-supernova") expect(storedConfig.apiConfigs.noProvider.apiModelId).toEqual("roo/code-supernova") }) - it("should apply model migrations every time, not just once", async () => { - // First load with old model + it("should downgrade Roo provider when saving a profile", async () => { mockSecrets.get.mockResolvedValue( JSON.stringify({ currentApiConfigName: "default", apiConfigs: { - default: { - apiProvider: "roo", - apiModelId: "roo/code-supernova", - id: "default", - }, - }, - migrations: { - rateLimitSecondsMigrated: true, - openAiHeadersMigrated: true, - consecutiveMistakeLimitMigrated: true, - todoListEnabledMigrated: true, - }, - }), - ) - - await providerSettingsManager.initialize() - - // Verify migration happened - let calls = mockSecrets.store.mock.calls - let storedConfig = JSON.parse(calls[calls.length - 1][1]) - expect(storedConfig.apiConfigs.default.apiModelId).toEqual("roo/code-supernova-1-million") - - // Create a new instance to simulate another load - const newManager = new ProviderSettingsManager(mockContext) - - // Somehow the model got reverted (e.g., manual edit, sync issue) - mockSecrets.get.mockResolvedValue( - JSON.stringify({ - currentApiConfigName: "default", - apiConfigs: { - default: { - apiProvider: "roo", - apiModelId: "roo/code-supernova", // Old model again - id: "default", - }, - }, - migrations: { - rateLimitSecondsMigrated: true, - openAiHeadersMigrated: true, - consecutiveMistakeLimitMigrated: true, - todoListEnabledMigrated: true, + default: { id: "default" }, }, + migrations: {}, }), ) - await newManager.initialize() + await providerSettingsManager.saveConfig("router-profile", { + id: "router-id", + apiProvider: "roo", + apiModelId: "roo/code-supernova", + rooApiKey: "router-key", + } as any) - // Verify migration happened again - calls = mockSecrets.store.mock.calls - storedConfig = JSON.parse(calls[calls.length - 1][1]) - expect(storedConfig.apiConfigs.default.apiModelId).toEqual("roo/code-supernova-1-million") + const calls = mockSecrets.store.mock.calls + const storedConfig = JSON.parse(calls[calls.length - 1][1]) + expect(storedConfig.apiConfigs["router-profile"]).toEqual({ id: "router-id" }) }) it("should throw error if secrets storage fails", async () => { diff --git a/src/core/config/__tests__/importExport.spec.ts b/src/core/config/__tests__/importExport.spec.ts index 9873ffde945..dcd7f0089c2 100644 --- a/src/core/config/__tests__/importExport.spec.ts +++ b/src/core/config/__tests__/importExport.spec.ts @@ -843,6 +843,45 @@ describe("importExport", () => { expect(importedProfiles.apiConfigs["another-invalid"].apiProvider).toBeUndefined() }) + it("should downgrade imported Roo profiles without failing the import", async () => { + ;(vscode.window.showOpenDialog as Mock).mockResolvedValue([{ fsPath: "/mock/path/settings.json" }]) + + const mockFileContent = JSON.stringify({ + providerProfiles: { + currentApiConfigName: "router-profile", + apiConfigs: { + "router-profile": { + apiProvider: "roo", + apiModelId: "roo/code-supernova", + rooApiKey: "router-key", + id: "router-id", + }, + }, + }, + globalSettings: { mode: "code" }, + }) + + ;(fs.readFile as Mock).mockResolvedValue(mockFileContent) + + mockProviderSettingsManager.export.mockResolvedValue({ + currentApiConfigName: "default", + apiConfigs: { default: { apiProvider: "anthropic" as ProviderName, id: "default-id" } }, + }) + + const result = await importSettings({ + providerSettingsManager: mockProviderSettingsManager, + contextProxy: mockContextProxy, + customModesManager: mockCustomModesManager, + }) + + expect(result.success).toBe(true) + expect((result as { warnings?: string[] }).warnings?.[0]).toContain("Roo Code Router was removed") + + const importedProfiles = mockProviderSettingsManager.import.mock.calls[0][0] + expect(importedProfiles.currentApiConfigName).toBe("router-profile") + expect(importedProfiles.apiConfigs["router-profile"]).toEqual({ id: "router-id" }) + }) + it("should fallback currentApiConfigName when the imported current profile was skipped", async () => { ;(vscode.window.showOpenDialog as Mock).mockResolvedValue([{ fsPath: "/mock/path/settings.json" }]) diff --git a/src/core/config/importExport.ts b/src/core/config/importExport.ts index 542f5b07430..050a43191ea 100644 --- a/src/core/config/importExport.ts +++ b/src/core/config/importExport.ts @@ -17,6 +17,7 @@ import { TelemetryService } from "@roo-code/telemetry" import { ProviderSettingsManager, providerProfilesSchema } from "./ProviderSettingsManager" import { ContextProxy } from "./ContextProxy" import { CustomModesManager } from "./CustomModesManager" +import { downgradeLegacyRooConfig, ROUTER_REMOVAL_IMPORT_WARNING } from "./routerRemoval" import { resolveDefaultSaveUri, saveLastExportPath } from "../../utils/export" import { t } from "../../i18n" @@ -46,7 +47,14 @@ function sanitizeProviderConfig(configName: string, apiConfig: unknown): { confi return { config: apiConfig } } - const config = apiConfig as Record + const { config, migrated } = downgradeLegacyRooConfig(apiConfig as Record) + + if (migrated) { + return { + config, + warning: `Profile "${configName}": ${ROUTER_REMOVAL_IMPORT_WARNING}`, + } + } // Check if apiProvider is set and if it's still valid if (config.apiProvider !== undefined && !isProviderName(config.apiProvider)) { @@ -319,14 +327,15 @@ export const importSettingsWithFeedback = async ( if (result.success) { provider.settingsImportedAt = Date.now() await provider.postStateToWebview() + const warnings = "warnings" in result ? result.warnings : undefined // Show warnings if any profiles had issues but were still imported (with modifications) - if (result.warnings && result.warnings.length > 0) { + if (warnings && warnings.length > 0) { // Log full details to the console for debugging - console.warn("Settings import completed with warnings:", result.warnings) + console.warn("Settings import completed with warnings:", warnings) // Show a short summary in the toast notification - const count = result.warnings.length + const count = warnings.length const summary = count === 1 ? `1 profile had issues during import.` : `${count} profiles had issues during import.` await vscode.window.showWarningMessage( diff --git a/src/core/config/routerRemoval.ts b/src/core/config/routerRemoval.ts new file mode 100644 index 00000000000..a34143cc357 --- /dev/null +++ b/src/core/config/routerRemoval.ts @@ -0,0 +1,52 @@ +import { t } from "../../i18n" + +export const LEGACY_ROO_PROVIDER = "roo" + +const ROUTER_REMOVAL_I18N_KEY = "common:errors.roo.routerRemoved" +const ROUTER_REMOVAL_DEFAULT_MESSAGE = + "Roo Code Router has been removed. Please select and configure a different provider." + +const ROUTER_SIGN_IN_UNAVAILABLE_I18N_KEY = "common:info.roo.signInUnavailable" +const ROUTER_SIGN_IN_UNAVAILABLE_DEFAULT_MESSAGE = + "Roo Code Cloud sign-in is currently unavailable. Configure another provider to continue." + +function getLocalizedMessage(key: string, defaultValue: string) { + const translated = t(key, { defaultValue }) + return translated === key ? defaultValue : translated +} + +export const getRouterRemovalMessage = () => + getLocalizedMessage(ROUTER_REMOVAL_I18N_KEY, ROUTER_REMOVAL_DEFAULT_MESSAGE) + +export const getRouterUnavailableSignInMessage = () => + getLocalizedMessage(ROUTER_SIGN_IN_UNAVAILABLE_I18N_KEY, ROUTER_SIGN_IN_UNAVAILABLE_DEFAULT_MESSAGE) + +export const ROUTER_REMOVAL_IMPORT_WARNING = + "Roo Code Router was removed. The imported profile was downgraded and needs to be reconfigured." + +type LegacyRooConfig = Record & { + apiProvider: typeof LEGACY_ROO_PROVIDER +} + +export function isLegacyRooConfig(value: unknown): value is LegacyRooConfig { + return ( + typeof value === "object" && + value !== null && + (value as Record).apiProvider === LEGACY_ROO_PROVIDER + ) +} + +export function downgradeLegacyRooConfig>( + config: T, +): { config: Omit; migrated: boolean } { + if (!isLegacyRooConfig(config)) { + return { config: config as Omit, migrated: false } + } + + const { apiProvider: _apiProvider, apiModelId: _apiModelId, rooApiKey: _rooApiKey, ...rest } = config + + return { + config: rest as Omit, + migrated: true, + } +} diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index 005bb0f292b..6f630b8b8ed 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -408,7 +408,7 @@ export class Task extends EventEmitter implements TaskLike { private readonly TOKEN_USAGE_EMIT_INTERVAL_MS = 2000 // 2 seconds private debouncedEmitTokenUsage: ReturnType - // Cloud Sync Tracking + // Historical cloud sync tracking retained only to avoid task resume churn. private cloudSyncedMessageTimestamps: Set = new Set() // Initial status for the task's history item (set at creation time to avoid race conditions) diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index 1106d340050..293b04bc137 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -318,15 +318,6 @@ export class ClineProvider () => instance.off(RooCodeEventName.TaskTokenUsageUpdated, onTaskTokenUsageUpdated), ]) } - - // Initialize Roo Code Cloud profile sync. - if (CloudService.hasInstance()) { - this.initializeCloudProfileSync().catch((error) => { - this.log(`Failed to initialize cloud profile sync: ${error}`) - }) - } else { - this.log("CloudService not ready, deferring cloud profile sync") - } } /** @@ -382,67 +373,21 @@ export class ClineProvider * Initialize cloud profile synchronization */ private async initializeCloudProfileSync() { - try { - // Check if authenticated and sync profiles - if (CloudService.hasInstance() && CloudService.instance.isAuthenticated()) { - await this.syncCloudProfiles() - } - - // Set up listener for future updates - if (CloudService.hasInstance()) { - CloudService.instance.on("settings-updated", this.handleCloudSettingsUpdate) - } - } catch (error) { - this.log(`Error in initializeCloudProfileSync: ${error}`) - } + this.log("Cloud profile synchronization is disabled in compatibility mode") } /** * Handle cloud settings updates */ private handleCloudSettingsUpdate = async () => { - try { - await this.syncCloudProfiles() - } catch (error) { - this.log(`Error handling cloud settings update: ${error}`) - } + this.log("Ignoring cloud settings update because cloud profile synchronization is disabled") } /** * Synchronize cloud profiles with local profiles. */ private async syncCloudProfiles() { - try { - const settings = CloudService.instance.getOrganizationSettings() - - if (!settings?.providerProfiles) { - return - } - - const currentApiConfigName = this.getGlobalState("currentApiConfigName") - - const result = await this.providerSettingsManager.syncCloudProfiles( - settings.providerProfiles, - currentApiConfigName, - ) - - if (result.hasChanges) { - // Update list. - await this.updateGlobalState("listApiConfigMeta", await this.providerSettingsManager.listConfig()) - - if (result.activeProfileChanged && result.activeProfileId) { - // Reload full settings for new active profile. - const profile = await this.providerSettingsManager.getProfile({ - id: result.activeProfileId, - }) - await this.activateProviderProfile({ name: profile.name }) - } - - await this.postStateToWebviewWithoutClineMessages() - } - } catch (error) { - this.log(`Error syncing cloud profiles: ${error}`) - } + this.log("Skipping cloud profile synchronization because it is disabled") } /** @@ -450,18 +395,7 @@ export class ClineProvider * This method is called externally after CloudService has been initialized */ public async initializeCloudProfileSyncWhenReady(): Promise { - try { - if (CloudService.hasInstance() && CloudService.instance.isAuthenticated()) { - await this.syncCloudProfiles() - } - - if (CloudService.hasInstance()) { - CloudService.instance.off("settings-updated", this.handleCloudSettingsUpdate) - CloudService.instance.on("settings-updated", this.handleCloudSettingsUpdate) - } - } catch (error) { - this.log(`Failed to initialize cloud profile sync when ready: ${error}`) - } + this.log("Cloud profile synchronization is disabled in compatibility mode") } // Adds a new Task instance to clineStack, marking the start of a new task. @@ -1971,12 +1905,6 @@ export class ClineProvider this.clineMessagesSeq++ state.clineMessagesSeq = this.clineMessagesSeq this.postMessageToWebview({ type: "state", state }) - - // Check MDM compliance and send user to account tab if not compliant - // Only redirect if there's an actual MDM policy requiring authentication - if (this.mdmService?.requiresCloudAuth() && !this.checkMdmCompliance()) { - await this.postMessageToWebview({ type: "action", action: "cloudButtonClicked" }) - } } /** @@ -1993,11 +1921,6 @@ export class ClineProvider state.clineMessagesSeq = this.clineMessagesSeq const { taskHistory: _omit, ...rest } = state this.postMessageToWebview({ type: "state", state: rest }) - - // Preserve existing MDM redirect behavior - if (this.mdmService?.requiresCloudAuth() && !this.checkMdmCompliance()) { - await this.postMessageToWebview({ type: "action", action: "cloudButtonClicked" }) - } } /** @@ -2015,11 +1938,6 @@ export class ClineProvider const state = await this.getStateToPostToWebview() const { clineMessages: _omitMessages, taskHistory: _omitHistory, ...rest } = state this.postMessageToWebview({ type: "state", state: rest }) - - // Preserve existing MDM redirect behavior - if (this.mdmService?.requiresCloudAuth() && !this.checkMdmCompliance()) { - await this.postMessageToWebview({ type: "action", action: "cloudButtonClicked" }) - } } /** @@ -2335,9 +2253,8 @@ export class ClineProvider codebaseIndexBedrockProfile: codebaseIndexConfig?.codebaseIndexBedrockProfile, codebaseIndexOpenRouterSpecificProvider: codebaseIndexConfig?.codebaseIndexOpenRouterSpecificProvider, }, - // Only set mdmCompliant if there's an actual MDM policy - // undefined means no MDM policy, true means compliant, false means non-compliant - mdmCompliant: this.mdmService?.requiresCloudAuth() ? this.checkMdmCompliance() : undefined, + // Phase 1 cloud removal: do not let Cloud-auth MDM enforcement force login-only UI flows. + mdmCompliant: undefined, profileThresholds: profileThresholds ?? {}, cloudApiUrl: getRooCodeApiUrl(), hasOpenedModeSelector: this.getGlobalState("hasOpenedModeSelector") ?? false, @@ -2427,24 +2344,8 @@ export class ClineProvider let sharingEnabled: boolean = false - try { - sharingEnabled = await CloudService.instance.canShareTask() - } catch (error) { - console.error( - `[getState] failed to get sharing enabled state: ${error instanceof Error ? error.message : String(error)}`, - ) - } - let publicSharingEnabled: boolean = false - try { - publicSharingEnabled = await CloudService.instance.canSharePublicly() - } catch (error) { - console.error( - `[getState] failed to get public sharing enabled state: ${error instanceof Error ? error.message : String(error)}`, - ) - } - let organizationSettingsVersion: number = -1 try { @@ -2460,14 +2361,6 @@ export class ClineProvider let taskSyncEnabled: boolean = false - try { - taskSyncEnabled = CloudService.instance.isTaskSyncEnabled() - } catch (error) { - console.error( - `[getState] failed to get task sync enabled state: ${error instanceof Error ? error.message : String(error)}`, - ) - } - // Return the same structure as before. return { apiConfiguration: providerSettings, diff --git a/src/core/webview/__tests__/ClineProvider.spec.ts b/src/core/webview/__tests__/ClineProvider.spec.ts index da0fb2003fb..4af42985554 100644 --- a/src/core/webview/__tests__/ClineProvider.spec.ts +++ b/src/core/webview/__tests__/ClineProvider.spec.ts @@ -576,6 +576,29 @@ describe("ClineProvider", () => { await expect(provider.postMessageToWebview(message)).resolves.toBeUndefined() }) + test("postStateToWebview does not force action navigation for non-compliant MDM state", async () => { + const mdmService = { + requiresCloudAuth: vi.fn().mockReturnValue(true), + isCompliant: vi.fn().mockReturnValue({ compliant: false, reason: "auth required" }), + } as any + + provider = new ClineProvider( + mockContext, + mockOutputChannel, + "sidebar", + new ContextProxy(mockContext), + mdmService, + ) + + const postMessageSpy = vi.spyOn(provider, "postMessageToWebview").mockImplementation(async () => undefined) + vi.spyOn(provider as any, "getStateToPostToWebview").mockResolvedValue({ version: "1.0.0" }) + + await provider.postStateToWebview() + + expect(postMessageSpy).toHaveBeenCalledTimes(1) + expect(postMessageSpy).not.toHaveBeenCalledWith(expect.objectContaining({ type: "action" })) + }) + test("postMessageToWebview skips postMessage after dispose", async () => { await provider.resolveWebviewView(mockWebviewView) @@ -2470,12 +2493,6 @@ describe("ClineProvider - Router Models", () => { expect(getModels).toHaveBeenCalledWith({ provider: "requesty", apiKey: "requesty-key" }) expect(getModels).toHaveBeenCalledWith({ provider: "unbound" }) expect(getModels).toHaveBeenCalledWith({ provider: "vercel-ai-gateway" }) - expect(getModels).toHaveBeenCalledWith( - expect.objectContaining({ - provider: "roo", - baseUrl: expect.any(String), - }), - ) expect(getModels).toHaveBeenCalledWith({ provider: "litellm", apiKey: "litellm-key", @@ -2489,7 +2506,7 @@ describe("ClineProvider - Router Models", () => { openrouter: mockModels, requesty: mockModels, unbound: mockModels, - roo: mockModels, + roo: {}, litellm: mockModels, ollama: {}, lmstudio: {}, @@ -2524,7 +2541,6 @@ describe("ClineProvider - Router Models", () => { .mockRejectedValueOnce(new Error("Requesty API error")) // requesty fail .mockResolvedValueOnce(mockModels) // unbound success .mockResolvedValueOnce(mockModels) // vercel-ai-gateway success - .mockResolvedValueOnce(mockModels) // roo success .mockRejectedValueOnce(new Error("LiteLLM connection failed")) // litellm fail await messageHandler({ type: "requestRouterModels" }) @@ -2536,7 +2552,7 @@ describe("ClineProvider - Router Models", () => { openrouter: mockModels, requesty: {}, unbound: mockModels, - roo: mockModels, + roo: {}, ollama: {}, lmstudio: {}, litellm: {}, @@ -2631,7 +2647,7 @@ describe("ClineProvider - Router Models", () => { openrouter: mockModels, requesty: mockModels, unbound: mockModels, - roo: mockModels, + roo: {}, litellm: {}, ollama: {}, lmstudio: {}, diff --git a/src/core/webview/__tests__/webviewMessageHandler.cloudAuth.spec.ts b/src/core/webview/__tests__/webviewMessageHandler.cloudAuth.spec.ts new file mode 100644 index 00000000000..a6827d2df89 --- /dev/null +++ b/src/core/webview/__tests__/webviewMessageHandler.cloudAuth.spec.ts @@ -0,0 +1,78 @@ +import { beforeEach, describe, expect, it, vi } from "vitest" + +vi.mock("@roo-code/cloud", () => ({ + CloudService: { + hasInstance: vi.fn(), + instance: { + login: vi.fn(), + handleAuthCallback: vi.fn(), + }, + }, +})) + +vi.mock("@roo-code/telemetry", () => ({ + TelemetryService: { + instance: { + captureEvent: vi.fn(), + }, + }, +})) + +vi.mock("vscode", () => ({ + window: { + showInformationMessage: vi.fn(), + showErrorMessage: vi.fn(), + }, +})) + +import * as vscode from "vscode" + +import { CloudService } from "@roo-code/cloud" + +import { webviewMessageHandler } from "../webviewMessageHandler" + +describe("webviewMessageHandler cloud auth fallbacks", () => { + const mockProvider = { + postMessageToWebview: vi.fn(), + postStateToWebview: vi.fn(), + contextProxy: { + getValue: vi.fn(), + setValue: vi.fn(), + }, + getCurrentTask: vi.fn(), + cwd: "/test/path", + log: vi.fn(), + } as any + + beforeEach(() => { + vi.clearAllMocks() + }) + + it("does not attempt cloud sign-in when CloudService is unavailable", async () => { + vi.mocked(CloudService.hasInstance).mockReturnValue(false) + + await webviewMessageHandler(mockProvider, { + type: "rooCloudSignIn", + useProviderSignup: true, + } as any) + + expect(CloudService.instance.login).not.toHaveBeenCalled() + expect(vscode.window.showInformationMessage).toHaveBeenCalledWith( + "Roo Code Cloud sign-in is currently unavailable. Configure another provider to continue.", + ) + }) + + it("ignores manual auth callback when CloudService is unavailable", async () => { + vi.mocked(CloudService.hasInstance).mockReturnValue(false) + + await webviewMessageHandler(mockProvider, { + type: "rooCloudManualUrl", + text: "vscode://RooVeterinaryInc.roo-cline/auth/clerk/callback?code=test-code&state=test-state", + } as any) + + expect(CloudService.instance.handleAuthCallback).not.toHaveBeenCalled() + expect(vscode.window.showInformationMessage).toHaveBeenCalledWith( + "Roo Code Cloud sign-in is currently unavailable. Configure another provider to continue.", + ) + }) +}) diff --git a/src/core/webview/__tests__/webviewMessageHandler.rooBalance.spec.ts b/src/core/webview/__tests__/webviewMessageHandler.rooBalance.spec.ts index 1eec76b62cb..913416acf06 100644 --- a/src/core/webview/__tests__/webviewMessageHandler.rooBalance.spec.ts +++ b/src/core/webview/__tests__/webviewMessageHandler.rooBalance.spec.ts @@ -1,18 +1,5 @@ import { describe, it, expect, vi, beforeEach } from "vitest" import { webviewMessageHandler } from "../webviewMessageHandler" -import { CloudService } from "@roo-code/cloud" - -vi.mock("@roo-code/cloud", () => ({ - CloudService: { - hasInstance: vi.fn(), - instance: { - cloudAPI: { - creditBalance: vi.fn(), - }, - }, - }, -})) - describe("webviewMessageHandler - requestRooCreditBalance", () => { let mockProvider: any @@ -30,75 +17,8 @@ describe("webviewMessageHandler - requestRooCreditBalance", () => { vi.clearAllMocks() }) - it("should handle requestRooCreditBalance and return balance", async () => { - const mockBalance = 42.75 - const requestId = "test-request-id" - - ;(CloudService.hasInstance as any).mockReturnValue(true) - ;(CloudService.instance.cloudAPI!.creditBalance as any).mockResolvedValue(mockBalance) - - await webviewMessageHandler( - mockProvider as any, - { - type: "requestRooCreditBalance", - requestId, - } as any, - ) - - expect(mockProvider.postMessageToWebview).toHaveBeenCalledWith({ - type: "rooCreditBalance", - requestId, - values: { balance: mockBalance }, - }) - }) - - it("should handle CloudAPI errors", async () => { + it("returns compatibility error because Roo credit balance is retired", async () => { const requestId = "test-request-id" - const errorMessage = "Failed to fetch balance" - - ;(CloudService.hasInstance as any).mockReturnValue(true) - ;(CloudService.instance.cloudAPI!.creditBalance as any).mockRejectedValue(new Error(errorMessage)) - - await webviewMessageHandler( - mockProvider as any, - { - type: "requestRooCreditBalance", - requestId, - } as any, - ) - - expect(mockProvider.postMessageToWebview).toHaveBeenCalledWith({ - type: "rooCreditBalance", - requestId, - values: { error: errorMessage }, - }) - }) - - it("should handle missing CloudService", async () => { - const requestId = "test-request-id" - - ;(CloudService.hasInstance as any).mockReturnValue(false) - - await webviewMessageHandler( - mockProvider as any, - { - type: "requestRooCreditBalance", - requestId, - } as any, - ) - - expect(mockProvider.postMessageToWebview).toHaveBeenCalledWith({ - type: "rooCreditBalance", - requestId, - values: { error: "Cloud service not available" }, - }) - }) - - it("should handle missing cloudAPI", async () => { - const requestId = "test-request-id" - - ;(CloudService.hasInstance as any).mockReturnValue(true) - ;(CloudService.instance as any).cloudAPI = null await webviewMessageHandler( mockProvider as any, @@ -111,7 +31,7 @@ describe("webviewMessageHandler - requestRooCreditBalance", () => { expect(mockProvider.postMessageToWebview).toHaveBeenCalledWith({ type: "rooCreditBalance", requestId, - values: { error: "Cloud service not available" }, + values: { error: "Roo credit balance is no longer available." }, }) }) }) diff --git a/src/core/webview/__tests__/webviewMessageHandler.routerModels.spec.ts b/src/core/webview/__tests__/webviewMessageHandler.routerModels.spec.ts index 111b6c745d1..ee183cdcef0 100644 --- a/src/core/webview/__tests__/webviewMessageHandler.routerModels.spec.ts +++ b/src/core/webview/__tests__/webviewMessageHandler.routerModels.spec.ts @@ -68,8 +68,6 @@ describe("webviewMessageHandler - requestRouterModels provider filter", () => { // Default mock: return distinct model maps per provider so we can verify keys getModelsMock.mockImplementation(async (options: any) => { switch (options?.provider) { - case "roo": - return { "roo/sonnet": { contextWindow: 8192, supportsPromptCache: false } } case "openrouter": return { "openrouter/qwen2.5": { contextWindow: 32768, supportsPromptCache: false } } case "requesty": @@ -84,7 +82,7 @@ describe("webviewMessageHandler - requestRouterModels provider filter", () => { }) }) - it("fetches only requested provider when values.provider is present ('roo')", async () => { + it("returns an empty Roo result when values.provider is present ('roo')", async () => { await webviewMessageHandler( mockProvider as any, { @@ -93,11 +91,6 @@ describe("webviewMessageHandler - requestRouterModels provider filter", () => { } as any, ) - // Should post a single routerModels message - expect(mockProvider.postMessageToWebview).toHaveBeenCalledWith( - expect.objectContaining({ type: "routerModels", routerModels: expect.any(Object) }), - ) - const call = (mockProvider.postMessageToWebview as any).mock.calls.find( (c: any[]) => c[0]?.type === "routerModels", ) @@ -105,14 +98,21 @@ describe("webviewMessageHandler - requestRouterModels provider filter", () => { const payload = call[0] const routerModels = payload.routerModels as Record> - // Only "roo" key should be present - const keys = Object.keys(routerModels) - expect(keys).toEqual(["roo"]) - expect(Object.keys(routerModels.roo || {})).toContain("roo/sonnet") + // No fetch candidates remain for Roo, so the filtered aggregate payload is empty. + expect(routerModels).toEqual({}) - // getModels should have been called exactly once for roo - const providersCalled = getModelsMock.mock.calls.map((c: any[]) => c[0]?.provider) - expect(providersCalled).toEqual(["roo"]) + expect(getModelsMock).not.toHaveBeenCalledWith(expect.objectContaining({ provider: "roo" })) + }) + + it("returns explicit removal error for requestRooModels", async () => { + await webviewMessageHandler(mockProvider as any, { type: "requestRooModels" } as any) + + expect(mockProvider.postMessageToWebview).toHaveBeenCalledWith({ + type: "singleRouterModelFetchResponse", + success: false, + error: "Roo Code Router has been removed. Please select and configure a different provider.", + values: { provider: "roo" }, + }) }) it("defaults to aggregate fetching when no provider filter is sent", async () => { @@ -133,6 +133,7 @@ describe("webviewMessageHandler - requestRouterModels provider filter", () => { expect(routerModels).toHaveProperty("openrouter") expect(routerModels).toHaveProperty("roo") expect(routerModels).toHaveProperty("requesty") + expect(routerModels.roo).toEqual({}) }) it("supports filtering another single provider ('openrouter')", async () => { diff --git a/src/core/webview/__tests__/webviewMessageHandler.spec.ts b/src/core/webview/__tests__/webviewMessageHandler.spec.ts index cb9327c6015..3b0e4dc8f7d 100644 --- a/src/core/webview/__tests__/webviewMessageHandler.spec.ts +++ b/src/core/webview/__tests__/webviewMessageHandler.spec.ts @@ -322,12 +322,6 @@ describe("webviewMessageHandler - requestRouterModels", () => { }), ) expect(mockGetModels).toHaveBeenCalledWith({ provider: "vercel-ai-gateway" }) - expect(mockGetModels).toHaveBeenCalledWith( - expect.objectContaining({ - provider: "roo", - baseUrl: expect.any(String), - }), - ) expect(mockGetModels).toHaveBeenCalledWith({ provider: "litellm", apiKey: "litellm-key", @@ -342,7 +336,7 @@ describe("webviewMessageHandler - requestRouterModels", () => { requesty: mockModels, unbound: mockModels, litellm: mockModels, - roo: mockModels, + roo: {}, ollama: {}, lmstudio: {}, "vercel-ai-gateway": mockModels, @@ -427,7 +421,7 @@ describe("webviewMessageHandler - requestRouterModels", () => { openrouter: mockModels, requesty: mockModels, unbound: mockModels, - roo: mockModels, + roo: {}, litellm: {}, ollama: {}, lmstudio: {}, @@ -454,7 +448,6 @@ describe("webviewMessageHandler - requestRouterModels", () => { .mockRejectedValueOnce(new Error("Requesty API error")) // requesty .mockResolvedValueOnce(mockModels) // unbound .mockResolvedValueOnce(mockModels) // vercel-ai-gateway - .mockResolvedValueOnce(mockModels) // roo .mockRejectedValueOnce(new Error("LiteLLM connection failed")) // litellm await webviewMessageHandler(mockClineProvider, { @@ -483,7 +476,7 @@ describe("webviewMessageHandler - requestRouterModels", () => { openrouter: mockModels, requesty: {}, unbound: mockModels, - roo: mockModels, + roo: {}, litellm: {}, ollama: {}, lmstudio: {}, @@ -501,7 +494,6 @@ describe("webviewMessageHandler - requestRouterModels", () => { .mockRejectedValueOnce(new Error("Requesty API error")) // requesty .mockRejectedValueOnce(new Error("Unbound error")) // unbound .mockRejectedValueOnce(new Error("Vercel AI Gateway error")) // vercel-ai-gateway - .mockRejectedValueOnce(new Error("Roo API error")) // roo .mockRejectedValueOnce(new Error("LiteLLM connection failed")) // litellm await webviewMessageHandler(mockClineProvider, { @@ -540,15 +532,21 @@ describe("webviewMessageHandler - requestRouterModels", () => { expect(mockClineProvider.postMessageToWebview).toHaveBeenCalledWith({ type: "singleRouterModelFetchResponse", success: false, - error: "Roo API error", - values: { provider: "roo" }, + error: "LiteLLM connection failed", + values: { provider: "litellm" }, + }) + }) + + it("returns an explicit removal error for requestRooModels", async () => { + await webviewMessageHandler(mockClineProvider, { + type: "requestRooModels", }) expect(mockClineProvider.postMessageToWebview).toHaveBeenCalledWith({ type: "singleRouterModelFetchResponse", success: false, - error: "LiteLLM connection failed", - values: { provider: "litellm" }, + error: "Roo Code Router has been removed. Please select and configure a different provider.", + values: { provider: "roo" }, }) }) diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index e3b8c1bea88..75abd706ec6 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -47,6 +47,7 @@ import { MessageEnhancer } from "./messageEnhancer" import { CodeIndexManager } from "../../services/code-index/manager" import { checkExistKey } from "../../shared/checkExistApiConfig" +import { getRouterRemovalMessage, getRouterUnavailableSignInMessage } from "../config/routerRemoval" import { experimentDefault } from "../../shared/experiments" import { Terminal } from "../../integrations/terminal/Terminal" import { openFile } from "../../integrations/misc/open-file" @@ -103,6 +104,12 @@ export const webviewMessageHandler = async ( return provider.getCurrentTask()?.cwd || provider.cwd } + const isCloudServiceAvailable = () => CloudService.hasInstance() + + const showCloudUnavailableMessage = () => { + vscode.window.showInformationMessage(getRouterUnavailableSignInMessage()) + } + const getCurrentMode = async (): Promise => { const currentTask = provider.getCurrentTask() @@ -783,48 +790,13 @@ export const webviewMessageHandler = async ( break case "shareCurrentTask": const shareTaskId = provider.getCurrentTask()?.taskId - const clineMessages = provider.getCurrentTask()?.clineMessages if (!shareTaskId) { vscode.window.showErrorMessage(t("common:errors.share_no_active_task")) break } - try { - const visibility = message.visibility || "organization" - const result = await CloudService.instance.shareTask(shareTaskId, visibility, clineMessages) - - if (result.success && result.shareUrl) { - // Show success notification - const messageKey = - visibility === "public" - ? "common:info.public_share_link_copied" - : "common:info.organization_share_link_copied" - vscode.window.showInformationMessage(t(messageKey)) - - // Send success feedback to webview for inline display - await provider.postMessageToWebview({ - type: "shareTaskSuccess", - visibility, - text: result.shareUrl, - }) - } else { - // Handle error - const errorMessage = result.error || "Failed to create share link" - if (errorMessage.includes("Authentication")) { - vscode.window.showErrorMessage(t("common:errors.share_auth_required")) - } else if (errorMessage.includes("sharing is not enabled")) { - vscode.window.showErrorMessage(t("common:errors.share_not_enabled")) - } else if (errorMessage.includes("not found")) { - vscode.window.showErrorMessage(t("common:errors.share_task_not_found")) - } else { - vscode.window.showErrorMessage(errorMessage) - } - } - } catch (error) { - provider.log(`[shareCurrentTask] Unexpected error: ${error}`) - vscode.window.showErrorMessage(t("common:errors.share_task_failed")) - } + vscode.window.showErrorMessage(t("common:errors.share_not_enabled")) break case "showTaskWithId": provider.showTaskWithId(message.text!) @@ -990,16 +962,6 @@ export const webviewMessageHandler = async ( }, }, { key: "vercel-ai-gateway", options: { provider: "vercel-ai-gateway" } }, - { - key: "roo", - options: { - provider: "roo", - baseUrl: process.env.ROO_CODE_PROVIDER_URL ?? "https://api.roocode.com/proxy", - apiKey: CloudService.hasInstance() - ? CloudService.instance.authService?.getSessionToken() - : undefined, - }, - }, ] // LiteLLM is conditional on baseUrl+apiKey @@ -1130,61 +1092,21 @@ export const webviewMessageHandler = async ( break } case "requestRooModels": { - // Specific handler for Roo models only - flushes cache to ensure fresh auth token is used - try { - const rooOptions = { - provider: "roo" as const, - baseUrl: process.env.ROO_CODE_PROVIDER_URL ?? "https://api.roocode.com/proxy", - apiKey: CloudService.hasInstance() - ? CloudService.instance.authService?.getSessionToken() - : undefined, - } - // Flush cache and refresh to ensure fresh models with current auth state - await flushModels(rooOptions, true) - - const rooModels = await getModels(rooOptions) - - // Always send a response, even if no models are returned - provider.postMessageToWebview({ - type: "singleRouterModelFetchResponse", - success: true, - values: { provider: "roo", models: rooModels }, - }) - } catch (error) { - // Send error response - const errorMessage = error instanceof Error ? error.message : String(error) - provider.postMessageToWebview({ - type: "singleRouterModelFetchResponse", - success: false, - error: errorMessage, - values: { provider: "roo" }, - }) - } + provider.postMessageToWebview({ + type: "singleRouterModelFetchResponse", + success: false, + error: getRouterRemovalMessage(), + values: { provider: "roo" }, + }) break } case "requestRooCreditBalance": { - // Fetch Roo credit balance using CloudAPI const requestId = message.requestId - try { - if (!CloudService.hasInstance() || !CloudService.instance.cloudAPI) { - throw new Error("Cloud service not available") - } - - const balance = await CloudService.instance.cloudAPI.creditBalance() - - provider.postMessageToWebview({ - type: "rooCreditBalance", - requestId, - values: { balance }, - }) - } catch (error) { - const errorMessage = error instanceof Error ? error.message : String(error) - provider.postMessageToWebview({ - type: "rooCreditBalance", - requestId, - values: { error: errorMessage }, - }) - } + provider.postMessageToWebview({ + type: "rooCreditBalance", + requestId, + values: { error: "Roo credit balance is no longer available." }, + }) break } case "requestOpenAiModels": @@ -1491,15 +1413,7 @@ export const webviewMessageHandler = async ( break } case "taskSyncEnabled": - const enabled = message.bool ?? false - const updatedSettings: Partial = { taskSyncEnabled: enabled } - - try { - await CloudService.instance.updateUserSettings(updatedSettings) - } catch (error) { - provider.log(`Failed to update cloud settings for task sync: ${error}`) - } - + provider.log("Ignoring taskSyncEnabled update because cloud task sync is disabled") break case "refreshAllMcpServers": { @@ -2345,12 +2259,13 @@ export const webviewMessageHandler = async ( await provider.postStateToWebview() break } - case "cloudButtonClicked": { - // Navigate to the cloud tab. - provider.postMessageToWebview({ type: "action", action: "cloudButtonClicked" }) - break - } case "rooCloudSignIn": { + if (!isCloudServiceAvailable()) { + provider.log("CloudService unavailable; ignoring rooCloudSignIn") + showCloudUnavailableMessage() + break + } + try { TelemetryService.instance.captureEvent(TelemetryEventName.AUTHENTICATION_INITIATED) // Use provider signup flow if useProviderSignup is explicitly true @@ -2363,6 +2278,12 @@ export const webviewMessageHandler = async ( break } case "cloudLandingPageSignIn": { + if (!isCloudServiceAvailable()) { + provider.log("CloudService unavailable; ignoring cloudLandingPageSignIn") + showCloudUnavailableMessage() + break + } + try { const landingPageSlug = message.text || "supernova" TelemetryService.instance.captureEvent(TelemetryEventName.AUTHENTICATION_INITIATED) @@ -2374,6 +2295,12 @@ export const webviewMessageHandler = async ( break } case "rooCloudSignOut": { + if (!isCloudServiceAvailable()) { + await provider.postStateToWebview() + provider.postMessageToWebview({ type: "authenticatedUser", userInfo: undefined }) + break + } + try { await CloudService.instance.logout() await provider.postStateToWebview() @@ -2425,6 +2352,12 @@ export const webviewMessageHandler = async ( break } case "rooCloudManualUrl": { + if (!isCloudServiceAvailable()) { + provider.log("CloudService unavailable; ignoring rooCloudManualUrl") + showCloudUnavailableMessage() + break + } + try { if (!message.text) { vscode.window.showErrorMessage(t("common:errors.manual_url_empty")) diff --git a/src/extension.ts b/src/extension.ts index 19c0d70585a..9b167bb2394 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -48,7 +48,7 @@ import { CodeActionProvider, } from "./activate" import { initializeI18n } from "./i18n" -import { flushModels, initializeModelCacheRefresh, refreshModels } from "./api/providers/fetchers/modelCache" +import { initializeModelCacheRefresh } from "./api/providers/fetchers/modelCache" /** * Built using https://github.com/microsoft/vscode-webview-ui-toolkit @@ -197,61 +197,8 @@ export async function activate(context: vscode.ExtensionContext) { // Initialize Roo Code Cloud service. const postStateListener = () => ClineProvider.getVisibleInstance()?.postStateToWebviewWithoutClineMessages() - authStateChangedHandler = async (data: { state: AuthState; previousState: AuthState }) => { + authStateChangedHandler = async (_data: { state: AuthState; previousState: AuthState }) => { postStateListener() - - // Handle Roo models cache based on auth state (ROO-202) - const handleRooModelsCache = async () => { - try { - if (data.state === "active-session") { - // Refresh with auth token to get authenticated models - const sessionToken = CloudService.hasInstance() - ? CloudService.instance.authService?.getSessionToken() - : undefined - await refreshModels({ - provider: "roo", - baseUrl: process.env.ROO_CODE_PROVIDER_URL ?? "https://api.roocode.com/proxy", - apiKey: sessionToken, - }) - } else { - // Flush without refresh on logout - await flushModels({ provider: "roo" }, false) - } - } catch (error) { - cloudLogger( - `[authStateChangedHandler] Failed to handle Roo models cache: ${error instanceof Error ? error.message : String(error)}`, - ) - } - } - - if (data.state === "active-session" || data.state === "logged-out") { - await handleRooModelsCache() - - // Apply stored provider model to API configuration if present - if (data.state === "active-session") { - try { - const storedModel = context.globalState.get("roo-provider-model") - if (storedModel) { - cloudLogger(`[authStateChangedHandler] Applying stored provider model: ${storedModel}`) - // Get the current API configuration name - const currentConfigName = - provider.contextProxy.getGlobalState("currentApiConfigName") || "default" - // Update it with the stored model using upsertProviderProfile - await provider.upsertProviderProfile(currentConfigName, { - apiProvider: "roo", - apiModelId: storedModel, - }) - // Clear the stored model after applying - await context.globalState.update("roo-provider-model", undefined) - cloudLogger(`[authStateChangedHandler] Applied and cleared stored provider model`) - } - } catch (error) { - cloudLogger( - `[authStateChangedHandler] Failed to apply stored provider model: ${error instanceof Error ? error.message : String(error)}`, - ) - } - } - } } settingsUpdatedHandler = async () => { @@ -262,31 +209,19 @@ export async function activate(context: vscode.ExtensionContext) { postStateListener() } - cloudService = await CloudService.createInstance(context, cloudLogger, { - "auth-state-changed": authStateChangedHandler, - "settings-updated": settingsUpdatedHandler, - "user-info": userInfoHandler, - }) - try { - if (cloudService.telemetryClient) { - TelemetryService.instance.register(cloudService.telemetryClient) - } - } catch (error) { - outputChannel.appendLine( - `[CloudService] Failed to register TelemetryClient: ${error instanceof Error ? error.message : String(error)}`, - ) - } - - // Add to subscriptions for proper cleanup on deactivate. - context.subscriptions.push(cloudService) + cloudService = await CloudService.createInstance(context, cloudLogger, { + "auth-state-changed": authStateChangedHandler, + "settings-updated": settingsUpdatedHandler, + "user-info": userInfoHandler, + }) - // Trigger initial cloud profile sync now that CloudService is ready. - try { - await provider.initializeCloudProfileSyncWhenReady() + // Add to subscriptions for proper cleanup on deactivate. + context.subscriptions.push(cloudService) } catch (error) { + cloudService = undefined outputChannel.appendLine( - `[CloudService] Failed to initialize cloud profile sync: ${error instanceof Error ? error.message : String(error)}`, + `[CloudService] Initialization failed; continuing without cloud startup dependencies: ${error instanceof Error ? error.message : String(error)}`, ) } diff --git a/src/extension/api.ts b/src/extension/api.ts index 4a66b40078d..2cd816ad83c 100644 --- a/src/extension/api.ts +++ b/src/extension/api.ts @@ -21,7 +21,6 @@ import { IpcMessageType, } from "@roo-code/types" import { IpcServer } from "@roo-code/ipc" -import { CloudService } from "@roo-code/cloud" import { Package } from "../shared/package" import { ClineProvider } from "../core/webview/ClineProvider" @@ -137,15 +136,7 @@ export class API extends EventEmitter implements RooCodeAPI { break case TaskCommandName.GetModels: try { - const models = await getModels({ - provider: "roo" as const, - baseUrl: process.env.ROO_CODE_PROVIDER_URL ?? "https://api.roocode.com/proxy", - apiKey: CloudService.hasInstance() - ? CloudService.instance.authService?.getSessionToken() - : undefined, - }) - - sendResponse(RooCodeEventName.ModelsResponse, [models]) + sendResponse(RooCodeEventName.ModelsResponse, [{}]) } catch (error) { sendResponse(RooCodeEventName.ModelsResponse, [{}]) } diff --git a/src/i18n/locales/ca/common.json b/src/i18n/locales/ca/common.json index 33188fce193..59a36758039 100644 --- a/src/i18n/locales/ca/common.json +++ b/src/i18n/locales/ca/common.json @@ -1,10 +1,10 @@ { "input": { - "task_prompt": "Què vols que faci Roo?", + "task_prompt": "Què vols que faci Zoo?", "task_placeholder": "Escriu la teva tasca aquí" }, "extension": { - "name": "Roo Code", + "name": "Zoo Code", "description": "Tot un equip de desenvolupadors d'IA al teu editor." }, "number_format": { @@ -115,7 +115,8 @@ "thinking_complete_recitation": "(Pensament completat, però la sortida s'ha bloquejat a causa de la comprovació de recitació.)" }, "roo": { - "authenticationRequired": "El proveïdor Roo requereix autenticació al núvol. Si us plau, inicieu sessió a Roo Code Cloud." + "authenticationRequired": "El proveïdor Zoo requereix autenticació al núvol. Si us plau, inicieu sessió a Zoo Code Cloud.", + "routerRemoved": "S'ha eliminat Roo Code Router. Selecciona i configura un proveïdor diferent." }, "openAiCodex": { "notAuthenticated": "No esteu autenticat amb OpenAI Codex. Si us plau, inicieu sessió mitjançant el flux OAuth d'OpenAI Codex.", @@ -149,7 +150,7 @@ "warnings": { "no_terminal_content": "No s'ha seleccionat contingut de terminal", "missing_task_files": "Els fitxers d'aquesta tasca falten. Vols eliminar-la de la llista de tasques?", - "auto_import_failed": "Ha fallat la importació automàtica de la configuració de RooCode: {{error}}" + "auto_import_failed": "Ha fallat la importació automàtica de la configuració de ZooCode: {{error}}" }, "info": { "no_changes": "No s'han trobat canvis.", @@ -158,14 +159,17 @@ "custom_storage_path_set": "Ruta d'emmagatzematge personalitzada establerta: {{path}}", "default_storage_path": "S'ha reprès l'ús de la ruta d'emmagatzematge predeterminada", "settings_imported": "Configuració importada correctament.", - "auto_import_success": "Configuració de RooCode importada automàticament des de {{filename}}", + "auto_import_success": "Configuració de ZooCode importada automàticament des de {{filename}}", "share_link_copied": "Enllaç de compartició copiat al portapapers", "image_copied_to_clipboard": "URI de dades de la imatge copiada al portapapers", "image_saved": "Imatge desada a {{path}}", "organization_share_link_copied": "Enllaç de compartició d'organització copiat al porta-retalls!", "public_share_link_copied": "Enllaç de compartició pública copiat al porta-retalls!", "mode_exported": "Mode '{{mode}}' exportat correctament", - "mode_imported": "Mode importat correctament" + "mode_imported": "Mode importat correctament", + "roo": { + "signInUnavailable": "L'inici de sessió de Roo Code Cloud no està disponible en aquest moment. Configura un altre proveïdor per continuar." + } }, "answers": { "yes": "Sí", @@ -191,8 +195,8 @@ }, "storage": { "prompt_custom_path": "Introdueix una ruta d'emmagatzematge personalitzada per a l'historial de converses o deixa-ho buit per utilitzar la ubicació predeterminada", - "path_placeholder": "D:\\RooCodeStorage", - "enter_absolute_path": "Introdueix una ruta completa (p. ex. D:\\RooCodeStorage o /home/user/storage)", + "path_placeholder": "D:\\ZooCodeStorage", + "enter_absolute_path": "Introdueix una ruta completa (p. ex. D:\\ZooCodeStorage o /home/user/storage)", "enter_valid_path": "Introdueix una ruta vàlida" }, "settings": { @@ -222,8 +226,8 @@ }, "mdm": { "errors": { - "cloud_auth_required": "La teva organització requereix autenticació de Roo Code Cloud. Si us plau, inicia sessió per continuar.", - "organization_mismatch": "Has d'estar autenticat amb el compte de Roo Code Cloud de la teva organització.", + "cloud_auth_required": "La teva organització requereix autenticació de Zoo Code Cloud. Si us plau, inicia sessió per continuar.", + "organization_mismatch": "Has d'estar autenticat amb el compte de Zoo Code Cloud de la teva organització.", "manual_url_empty": "Si us plau, introdueix una URL de callback vàlida", "manual_url_no_query": "URL de callback no vàlida: falten paràmetres de consulta", "manual_url_missing_params": "URL de callback no vàlida: falten paràmetres requerits (code i state)", diff --git a/src/i18n/locales/ca/mcp.json b/src/i18n/locales/ca/mcp.json index dcf3cbc76bf..3e28f342608 100644 --- a/src/i18n/locales/ca/mcp.json +++ b/src/i18n/locales/ca/mcp.json @@ -5,7 +5,7 @@ "invalid_settings_validation": "Format de configuració MCP no vàlid: {{errorMessages}}", "create_json": "Ha fallat la creació o obertura de .roo/mcp.json: {{error}}", "failed_update_project": "Ha fallat l'actualització dels servidors MCP del projecte", - "invalidJsonArgument": "Roo ha intentat utilitzar {{toolName}} amb un argument JSON no vàlid. Tornant a intentar...", + "invalidJsonArgument": "Zoo ha intentat utilitzar {{toolName}} amb un argument JSON no vàlid. Tornant a intentar...", "refresh_after_disable": "Ha fallat l'actualització de les connexions MCP després de desactivar", "refresh_after_enable": "Ha fallat l'actualització de les connexions MCP després d'activar", "disconnect_servers_partial": "Ha fallat la desconnexió de {{count}} servidor(s) MCP. Comprova la sortida per més detalls.", diff --git a/src/i18n/locales/ca/tools.json b/src/i18n/locales/ca/tools.json index 7e9385abf0b..223264252e4 100644 --- a/src/i18n/locales/ca/tools.json +++ b/src/i18n/locales/ca/tools.json @@ -6,8 +6,8 @@ "imageTooLarge": "El fitxer d'imatge és massa gran ({{size}} MB). La mida màxima permesa és {{max}} MB.", "imageWithSize": "Fitxer d'imatge ({{size}} KB)" }, - "toolRepetitionLimitReached": "Roo sembla estar atrapat en un bucle, intentant la mateixa acció ({{toolName}}) repetidament. Això podria indicar un problema amb la seva estratègia actual. Considera reformular la tasca, proporcionar instruccions més específiques o guiar-lo cap a un enfocament diferent.", - "unknownToolError": "Roo ha intentat utilitzar una eina desconeguda: \"{{toolName}}\". Reintentant...", + "toolRepetitionLimitReached": "Zoo sembla estar atrapat en un bucle, intentant la mateixa acció ({{toolName}}) repetidament. Això podria indicar un problema amb la seva estratègia actual. Considera reformular la tasca, proporcionar instruccions més específiques o guiar-lo cap a un enfocament diferent.", + "unknownToolError": "Zoo ha intentat utilitzar una eina desconeguda: \"{{toolName}}\". Reintentant...", "codebaseSearch": { "approval": "Cercant '{{query}}' a la base de codi..." }, @@ -25,7 +25,7 @@ "invalidImageFormat": "Format d'imatge no vàlid rebut", "unknownError": "S'ha produït un error desconegut", "roo": { - "authRequired": "Es requereix autenticació de Roo Code Cloud per a la generació d'imatges. Inicia sessió a Roo Code Cloud." + "authRequired": "Es requereix autenticació de Zoo Code Cloud per a la generació d'imatges. Inicia sessió a Zoo Code Cloud." } } } diff --git a/src/i18n/locales/de/common.json b/src/i18n/locales/de/common.json index 861d9da5768..2b0777e23cf 100644 --- a/src/i18n/locales/de/common.json +++ b/src/i18n/locales/de/common.json @@ -1,6 +1,6 @@ { "extension": { - "name": "Roo Code", + "name": "Zoo Code", "description": "Ein komplettes Entwicklerteam mit KI in deinem Editor." }, "number_format": { @@ -112,7 +112,8 @@ "thinking_complete_recitation": "(Denken abgeschlossen, aber die Ausgabe wurde aufgrund der Rezitationsprüfung blockiert.)" }, "roo": { - "authenticationRequired": "Roo-Anbieter erfordert Cloud-Authentifizierung. Bitte melde dich bei Roo Code Cloud an." + "authenticationRequired": "Zoo-Anbieter erfordert Cloud-Authentifizierung. Bitte melde dich bei Zoo Code Cloud an.", + "routerRemoved": "Roo Code Router wurde entfernt. Bitte wähle einen anderen Anbieter und konfiguriere ihn." }, "openAiCodex": { "notAuthenticated": "Nicht bei OpenAI Codex authentifiziert. Bitte melde dich über den OpenAI Codex OAuth-Flow an.", @@ -145,7 +146,7 @@ "warnings": { "no_terminal_content": "Kein Terminal-Inhalt ausgewählt", "missing_task_files": "Die Dateien dieser Aufgabe fehlen. Möchtest du sie aus der Aufgabenliste entfernen?", - "auto_import_failed": "Fehler beim automatischen Import der RooCode-Einstellungen: {{error}}" + "auto_import_failed": "Fehler beim automatischen Import der ZooCode-Einstellungen: {{error}}" }, "info": { "no_changes": "Keine Änderungen gefunden.", @@ -154,14 +155,17 @@ "custom_storage_path_set": "Benutzerdefinierter Speicherpfad festgelegt: {{path}}", "default_storage_path": "Auf Standardspeicherpfad zurückgesetzt", "settings_imported": "Einstellungen erfolgreich importiert.", - "auto_import_success": "RooCode-Einstellungen automatisch importiert aus {{filename}}", + "auto_import_success": "ZooCode-Einstellungen automatisch importiert aus {{filename}}", "share_link_copied": "Share-Link in die Zwischenablage kopiert", "image_copied_to_clipboard": "Bild-Daten-URI in die Zwischenablage kopiert", "image_saved": "Bild gespeichert unter {{path}}", "organization_share_link_copied": "Organisations-Freigabelink in die Zwischenablage kopiert!", "public_share_link_copied": "Öffentlicher Freigabelink in die Zwischenablage kopiert!", "mode_exported": "Modus '{{mode}}' erfolgreich exportiert", - "mode_imported": "Modus erfolgreich importiert" + "mode_imported": "Modus erfolgreich importiert", + "roo": { + "signInUnavailable": "Die Anmeldung bei Roo Code Cloud ist derzeit nicht verfügbar. Konfiguriere einen anderen Anbieter, um fortzufahren." + } }, "answers": { "yes": "Ja", @@ -187,12 +191,12 @@ }, "storage": { "prompt_custom_path": "Gib den benutzerdefinierten Speicherpfad für den Gesprächsverlauf ein, leer lassen für Standardspeicherort", - "path_placeholder": "D:\\RooCodeStorage", - "enter_absolute_path": "Bitte gib einen absoluten Pfad ein (z.B. D:\\RooCodeStorage oder /home/user/storage)", + "path_placeholder": "D:\\ZooCodeStorage", + "enter_absolute_path": "Bitte gib einen absoluten Pfad ein (z.B. D:\\ZooCodeStorage oder /home/user/storage)", "enter_valid_path": "Bitte gib einen gültigen Pfad ein" }, "input": { - "task_prompt": "Was soll Roo tun?", + "task_prompt": "Was soll Zoo tun?", "task_placeholder": "Gib deine Aufgabe hier ein" }, "settings": { @@ -222,8 +226,8 @@ }, "mdm": { "errors": { - "cloud_auth_required": "Deine Organisation erfordert eine Roo Code Cloud-Authentifizierung. Bitte melde dich an, um fortzufahren.", - "organization_mismatch": "Du musst mit dem Roo Code Cloud-Konto deiner Organisation authentifiziert sein.", + "cloud_auth_required": "Deine Organisation erfordert eine Zoo Code Cloud-Authentifizierung. Bitte melde dich an, um fortzufahren.", + "organization_mismatch": "Du musst mit dem Zoo Code Cloud-Konto deiner Organisation authentifiziert sein.", "verification_failed": "Die Organisationsauthentifizierung konnte nicht verifiziert werden." }, "info": { diff --git a/src/i18n/locales/de/mcp.json b/src/i18n/locales/de/mcp.json index 30f3a2ed98f..9a599f047be 100644 --- a/src/i18n/locales/de/mcp.json +++ b/src/i18n/locales/de/mcp.json @@ -5,7 +5,7 @@ "invalid_settings_validation": "Ungültiges MCP-Einstellungen-Format: {{errorMessages}}", "create_json": "Fehler beim Erstellen oder Öffnen von .roo/mcp.json: {{error}}", "failed_update_project": "Fehler beim Aktualisieren der Projekt-MCP-Server", - "invalidJsonArgument": "Roo hat versucht, {{toolName}} mit einem ungültigen JSON-Argument zu verwenden. Wiederhole...", + "invalidJsonArgument": "Zoo hat versucht, {{toolName}} mit einem ungültigen JSON-Argument zu verwenden. Wiederhole...", "refresh_after_disable": "Fehler beim Aktualisieren der MCP-Verbindungen nach dem Deaktivieren", "refresh_after_enable": "Fehler beim Aktualisieren der MCP-Verbindungen nach dem Aktivieren", "disconnect_servers_partial": "Fehler beim Trennen von {{count}} MCP-Server(n). Überprüfe die Ausgabe für Details.", diff --git a/src/i18n/locales/de/tools.json b/src/i18n/locales/de/tools.json index 8dc5e93e702..d04362f2d9e 100644 --- a/src/i18n/locales/de/tools.json +++ b/src/i18n/locales/de/tools.json @@ -6,8 +6,8 @@ "imageTooLarge": "Die Bilddatei ist zu groß ({{size}} MB). Die maximal erlaubte Größe beträgt {{max}} MB.", "imageWithSize": "Bilddatei ({{size}} KB)" }, - "toolRepetitionLimitReached": "Roo scheint in einer Schleife festzustecken und versucht wiederholt dieselbe Aktion ({{toolName}}). Dies könnte auf ein Problem mit der aktuellen Strategie hindeuten. Überlege dir, die Aufgabe umzuformulieren, genauere Anweisungen zu geben oder Roo zu einem anderen Ansatz zu führen.", - "unknownToolError": "Roo hat versucht, ein unbekanntes Tool zu verwenden: \"{{toolName}}\". Wiederhole Versuch...", + "toolRepetitionLimitReached": "Zoo scheint in einer Schleife festzustecken und versucht wiederholt dieselbe Aktion ({{toolName}}). Dies könnte auf ein Problem mit der aktuellen Strategie hindeuten. Überlege dir, die Aufgabe umzuformulieren, genauere Anweisungen zu geben oder Zoo zu einem anderen Ansatz zu führen.", + "unknownToolError": "Zoo hat versucht, ein unbekanntes Tool zu verwenden: \"{{toolName}}\". Wiederhole Versuch...", "codebaseSearch": { "approval": "Suche nach '{{query}}' im Codebase..." }, @@ -25,7 +25,7 @@ "invalidImageFormat": "Ungültiges Bildformat erhalten", "unknownError": "Unbekannter Fehler aufgetreten", "roo": { - "authRequired": "Roo Code Cloud-Authentifizierung ist für die Bildgenerierung erforderlich. Bitte melde dich bei Roo Code Cloud an." + "authRequired": "Zoo Code Cloud-Authentifizierung ist für die Bildgenerierung erforderlich. Bitte melde dich bei Zoo Code Cloud an." } } } diff --git a/src/i18n/locales/en/common.json b/src/i18n/locales/en/common.json index d65fe183679..2bf02164559 100644 --- a/src/i18n/locales/en/common.json +++ b/src/i18n/locales/en/common.json @@ -1,6 +1,6 @@ { "extension": { - "name": "Roo Code", + "name": "Zoo Code", "description": "A whole dev team of AI agents in your editor." }, "number_format": { @@ -112,7 +112,8 @@ "thinking_complete_recitation": "(Thinking complete, but output was blocked due to recitation check.)" }, "roo": { - "authenticationRequired": "Roo provider requires cloud authentication. Please sign in to Roo Code Cloud." + "authenticationRequired": "Zoo provider requires cloud authentication. Please sign in to Zoo Code Cloud.", + "routerRemoved": "Roo Code Router has been removed. Please select and configure a different provider." }, "openAiCodex": { "notAuthenticated": "Not authenticated with OpenAI Codex. Please sign in using the OpenAI Codex OAuth flow.", @@ -145,7 +146,7 @@ "warnings": { "no_terminal_content": "No terminal content selected", "missing_task_files": "This task's files are missing. Would you like to remove it from the task list?", - "auto_import_failed": "Failed to auto-import RooCode settings: {{error}}" + "auto_import_failed": "Failed to auto-import ZooCode settings: {{error}}" }, "info": { "no_changes": "No changes found.", @@ -154,14 +155,17 @@ "custom_storage_path_set": "Custom storage path set: {{path}}", "default_storage_path": "Reverted to using default storage path", "settings_imported": "Settings imported successfully.", - "auto_import_success": "RooCode settings automatically imported from {{filename}}", + "auto_import_success": "ZooCode settings automatically imported from {{filename}}", "share_link_copied": "Share link copied to clipboard", "organization_share_link_copied": "Organization share link copied to clipboard!", "public_share_link_copied": "Public share link copied to clipboard!", "image_copied_to_clipboard": "Image data URI copied to clipboard", "image_saved": "Image saved to {{path}}", "mode_exported": "Mode '{{mode}}' exported successfully", - "mode_imported": "Mode imported successfully" + "mode_imported": "Mode imported successfully", + "roo": { + "signInUnavailable": "Roo Code Cloud sign-in is currently unavailable. Configure another provider to continue." + } }, "answers": { "yes": "Yes", @@ -187,12 +191,12 @@ }, "storage": { "prompt_custom_path": "Enter custom conversation history storage path, leave empty to use default location", - "path_placeholder": "D:\\RooCodeStorage", - "enter_absolute_path": "Please enter an absolute path (e.g. D:\\RooCodeStorage or /home/user/storage)", + "path_placeholder": "D:\\ZooCodeStorage", + "enter_absolute_path": "Please enter an absolute path (e.g. D:\\ZooCodeStorage or /home/user/storage)", "enter_valid_path": "Please enter a valid path" }, "input": { - "task_prompt": "What should Roo do?", + "task_prompt": "What should Zoo do?", "task_placeholder": "Type your task here" }, "customModes": { @@ -219,8 +223,8 @@ }, "mdm": { "errors": { - "cloud_auth_required": "Your organization requires Roo Code Cloud authentication. Please sign in to continue.", - "organization_mismatch": "You must be authenticated with your organization's Roo Code Cloud account.", + "cloud_auth_required": "Your organization requires Zoo Code Cloud authentication. Please sign in to continue.", + "organization_mismatch": "You must be authenticated with your organization's Zoo Code Cloud account.", "verification_failed": "Unable to verify organization authentication." }, "info": { diff --git a/src/i18n/locales/en/mcp.json b/src/i18n/locales/en/mcp.json index 0200e26d223..bca739f4abf 100644 --- a/src/i18n/locales/en/mcp.json +++ b/src/i18n/locales/en/mcp.json @@ -5,7 +5,7 @@ "invalid_settings_validation": "Invalid MCP settings format: {{errorMessages}}", "create_json": "Failed to create or open .roo/mcp.json: {{error}}", "failed_update_project": "Failed to update project MCP servers", - "invalidJsonArgument": "Roo tried to use {{toolName}} with an invalid JSON argument. Retrying...", + "invalidJsonArgument": "Zoo tried to use {{toolName}} with an invalid JSON argument. Retrying...", "refresh_after_disable": "Failed to refresh MCP connections after disabling", "refresh_after_enable": "Failed to refresh MCP connections after enabling", "disconnect_servers_partial": "Failed to disconnect {{count}} MCP server(s). Check the output for details.", diff --git a/src/i18n/locales/en/tools.json b/src/i18n/locales/en/tools.json index 94e1820249b..9c08368e53c 100644 --- a/src/i18n/locales/en/tools.json +++ b/src/i18n/locales/en/tools.json @@ -6,8 +6,8 @@ "imageTooLarge": "Image file is too large ({{size}} MB). The maximum allowed size is {{max}} MB.", "imageWithSize": "Image file ({{size}} KB)" }, - "toolRepetitionLimitReached": "Roo appears to be stuck in a loop, attempting the same action ({{toolName}}) repeatedly. This might indicate a problem with its current strategy. Consider rephrasing the task, providing more specific instructions, or guiding it towards a different approach.", - "unknownToolError": "Roo tried to use an unknown tool: \"{{toolName}}\". Retrying...", + "toolRepetitionLimitReached": "Zoo appears to be stuck in a loop, attempting the same action ({{toolName}}) repeatedly. This might indicate a problem with its current strategy. Consider rephrasing the task, providing more specific instructions, or guiding it towards a different approach.", + "unknownToolError": "Zoo tried to use an unknown tool: \"{{toolName}}\". Retrying...", "codebaseSearch": { "approval": "Searching for '{{query}}' in codebase..." }, @@ -25,7 +25,7 @@ "invalidImageFormat": "Invalid image format received", "unknownError": "Unknown error occurred", "roo": { - "authRequired": "Roo Code Cloud authentication is required for image generation. Please sign in to Roo Code Cloud." + "authRequired": "Zoo Code Cloud authentication is required for image generation. Please sign in to Zoo Code Cloud." } } } diff --git a/src/i18n/locales/es/common.json b/src/i18n/locales/es/common.json index 82be83956b0..da19260cb2d 100644 --- a/src/i18n/locales/es/common.json +++ b/src/i18n/locales/es/common.json @@ -1,6 +1,6 @@ { "extension": { - "name": "Roo Code", + "name": "Zoo Code", "description": "Un equipo completo de desarrolladores con IA en tu editor." }, "number_format": { @@ -112,7 +112,8 @@ "thinking_complete_recitation": "(Pensamiento completado, pero la salida fue bloqueada debido a la comprobación de recitación.)" }, "roo": { - "authenticationRequired": "El proveedor Roo requiere autenticación en la nube. Por favor, inicia sesión en Roo Code Cloud." + "authenticationRequired": "El proveedor Zoo requiere autenticación en la nube. Por favor, inicia sesión en Zoo Code Cloud.", + "routerRemoved": "Roo Code Router ha sido eliminado. Selecciona y configura un proveedor diferente." }, "api": { "invalidKeyInvalidChars": "La clave API contiene caracteres inválidos.", @@ -145,7 +146,7 @@ "warnings": { "no_terminal_content": "No hay contenido de terminal seleccionado", "missing_task_files": "Los archivos de esta tarea faltan. ¿Deseas eliminarla de la lista de tareas?", - "auto_import_failed": "Error al importar automáticamente la configuración de RooCode: {{error}}" + "auto_import_failed": "Error al importar automáticamente la configuración de ZooCode: {{error}}" }, "info": { "no_changes": "No se encontraron cambios.", @@ -154,14 +155,17 @@ "custom_storage_path_set": "Ruta de almacenamiento personalizada establecida: {{path}}", "default_storage_path": "Se ha vuelto a usar la ruta de almacenamiento predeterminada", "settings_imported": "Configuración importada correctamente.", - "auto_import_success": "Configuración de RooCode importada automáticamente desde {{filename}}", + "auto_import_success": "Configuración de ZooCode importada automáticamente desde {{filename}}", "share_link_copied": "Enlace de compartir copiado al portapapeles", "image_copied_to_clipboard": "URI de datos de imagen copiada al portapapeles", "image_saved": "Imagen guardada en {{path}}", "organization_share_link_copied": "¡Enlace de compartición de organización copiado al portapapeles!", "public_share_link_copied": "¡Enlace de compartición pública copiado al portapapeles!", "mode_exported": "Modo '{{mode}}' exportado correctamente", - "mode_imported": "Modo importado correctamente" + "mode_imported": "Modo importado correctamente", + "roo": { + "signInUnavailable": "El inicio de sesión de Roo Code Cloud no está disponible en este momento. Configura otro proveedor para continuar." + } }, "answers": { "yes": "Sí", @@ -187,12 +191,12 @@ }, "storage": { "prompt_custom_path": "Ingresa la ruta de almacenamiento personalizada para el historial de conversaciones, déjala vacía para usar la ubicación predeterminada", - "path_placeholder": "D:\\RooCodeStorage", - "enter_absolute_path": "Por favor, ingresa una ruta absoluta (por ejemplo, D:\\RooCodeStorage o /home/user/storage)", + "path_placeholder": "D:\\ZooCodeStorage", + "enter_absolute_path": "Por favor, ingresa una ruta absoluta (por ejemplo, D:\\ZooCodeStorage o /home/user/storage)", "enter_valid_path": "Por favor, ingresa una ruta válida" }, "input": { - "task_prompt": "¿Qué debe hacer Roo?", + "task_prompt": "¿Qué debe hacer Zoo?", "task_placeholder": "Escribe tu tarea aquí" }, "settings": { @@ -222,8 +226,8 @@ }, "mdm": { "errors": { - "cloud_auth_required": "Tu organización requiere autenticación de Roo Code Cloud. Por favor, inicia sesión para continuar.", - "organization_mismatch": "Debes estar autenticado con la cuenta de Roo Code Cloud de tu organización.", + "cloud_auth_required": "Tu organización requiere autenticación de Zoo Code Cloud. Por favor, inicia sesión para continuar.", + "organization_mismatch": "Debes estar autenticado con la cuenta de Zoo Code Cloud de tu organización.", "verification_failed": "No se pudo verificar la autenticación de la organización." }, "info": { diff --git a/src/i18n/locales/es/mcp.json b/src/i18n/locales/es/mcp.json index 4ee7e9d66f4..23b8803c7d3 100644 --- a/src/i18n/locales/es/mcp.json +++ b/src/i18n/locales/es/mcp.json @@ -5,7 +5,7 @@ "invalid_settings_validation": "Formato de configuración MCP no válido: {{errorMessages}}", "create_json": "Error al crear o abrir .roo/mcp.json: {{error}}", "failed_update_project": "Error al actualizar los servidores MCP del proyecto", - "invalidJsonArgument": "Roo intentó usar {{toolName}} con un argumento JSON no válido. Reintentando...", + "invalidJsonArgument": "Zoo intentó usar {{toolName}} con un argumento JSON no válido. Reintentando...", "refresh_after_disable": "Error al actualizar las conexiones MCP después de desactivar", "refresh_after_enable": "Error al actualizar las conexiones MCP después de activar", "disconnect_servers_partial": "Error al desconectar {{count}} servidor(es) MCP. Revisa la salida para más detalles.", diff --git a/src/i18n/locales/es/tools.json b/src/i18n/locales/es/tools.json index 9103643cfc6..f865a8e4846 100644 --- a/src/i18n/locales/es/tools.json +++ b/src/i18n/locales/es/tools.json @@ -6,8 +6,8 @@ "imageTooLarge": "El archivo de imagen es demasiado grande ({{size}} MB). El tamaño máximo permitido es {{max}} MB.", "imageWithSize": "Archivo de imagen ({{size}} KB)" }, - "toolRepetitionLimitReached": "Roo parece estar atrapado en un bucle, intentando la misma acción ({{toolName}}) repetidamente. Esto podría indicar un problema con su estrategia actual. Considera reformular la tarea, proporcionar instrucciones más específicas o guiarlo hacia un enfoque diferente.", - "unknownToolError": "Roo intentó usar una herramienta desconocida: \"{{toolName}}\". Reintentando...", + "toolRepetitionLimitReached": "Zoo parece estar atrapado en un bucle, intentando la misma acción ({{toolName}}) repetidamente. Esto podría indicar un problema con su estrategia actual. Considera reformular la tarea, proporcionar instrucciones más específicas o guiarlo hacia un enfoque diferente.", + "unknownToolError": "Zoo intentó usar una herramienta desconocida: \"{{toolName}}\". Reintentando...", "codebaseSearch": { "approval": "Buscando '{{query}}' en la base de código..." }, @@ -25,7 +25,7 @@ "invalidImageFormat": "Formato de imagen no válido recibido", "unknownError": "Ocurrió un error desconocido", "roo": { - "authRequired": "Se requiere autenticación de Roo Code Cloud para la generación de imágenes. Por favor, inicia sesión en Roo Code Cloud." + "authRequired": "Se requiere autenticación de Zoo Code Cloud para la generación de imágenes. Por favor, inicia sesión en Zoo Code Cloud." } } } diff --git a/src/i18n/locales/fr/common.json b/src/i18n/locales/fr/common.json index 6fc05ff94a3..d2815d5160a 100644 --- a/src/i18n/locales/fr/common.json +++ b/src/i18n/locales/fr/common.json @@ -1,6 +1,6 @@ { "extension": { - "name": "Roo Code", + "name": "Zoo Code", "description": "Une équipe complète de développeurs IA dans votre éditeur." }, "number_format": { @@ -112,7 +112,8 @@ "thinking_complete_recitation": "(Réflexion terminée, mais la sortie a été bloquée en raison de la vérification de récitation.)" }, "roo": { - "authenticationRequired": "Le fournisseur Roo nécessite une authentification cloud. Veuillez vous connecter à Roo Code Cloud." + "authenticationRequired": "Le fournisseur Zoo nécessite une authentification cloud. Veuillez vous connecter à Zoo Code Cloud.", + "routerRemoved": "Roo Code Router a été supprimé. Sélectionne et configure un autre fournisseur." }, "api": { "invalidKeyInvalidChars": "La clé API contient des caractères invalides.", @@ -145,7 +146,7 @@ "warnings": { "no_terminal_content": "Aucun contenu de terminal sélectionné", "missing_task_files": "Les fichiers de cette tâche sont introuvables. Souhaitez-vous la supprimer de la liste des tâches ?", - "auto_import_failed": "Échec de l'importation automatique des paramètres RooCode : {{error}}" + "auto_import_failed": "Échec de l'importation automatique des paramètres ZooCode : {{error}}" }, "info": { "no_changes": "Aucun changement trouvé.", @@ -154,14 +155,17 @@ "custom_storage_path_set": "Chemin de stockage personnalisé défini : {{path}}", "default_storage_path": "Retour au chemin de stockage par défaut", "settings_imported": "Paramètres importés avec succès.", - "auto_import_success": "Paramètres RooCode importés automatiquement depuis {{filename}}", + "auto_import_success": "Paramètres ZooCode importés automatiquement depuis {{filename}}", "share_link_copied": "Lien de partage copié dans le presse-papiers", "image_copied_to_clipboard": "URI de données d'image copiée dans le presse-papiers", "image_saved": "Image enregistrée dans {{path}}", "organization_share_link_copied": "Lien de partage d'organisation copié dans le presse-papiers !", "public_share_link_copied": "Lien de partage public copié dans le presse-papiers !", "mode_exported": "Mode '{{mode}}' exporté avec succès", - "mode_imported": "Mode importé avec succès" + "mode_imported": "Mode importé avec succès", + "roo": { + "signInUnavailable": "La connexion à Roo Code Cloud n'est pas disponible pour le moment. Configure un autre fournisseur pour continuer." + } }, "answers": { "yes": "Oui", @@ -187,12 +191,12 @@ }, "storage": { "prompt_custom_path": "Entrez le chemin de stockage personnalisé pour l'historique des conversations, laissez vide pour utiliser l'emplacement par défaut", - "path_placeholder": "D:\\RooCodeStorage", - "enter_absolute_path": "Veuillez entrer un chemin absolu (ex. D:\\RooCodeStorage ou /home/user/storage)", + "path_placeholder": "D:\\ZooCodeStorage", + "enter_absolute_path": "Veuillez entrer un chemin absolu (ex. D:\\ZooCodeStorage ou /home/user/storage)", "enter_valid_path": "Veuillez entrer un chemin valide" }, "input": { - "task_prompt": "Que doit faire Roo ?", + "task_prompt": "Que doit faire Zoo ?", "task_placeholder": "Écris ta tâche ici" }, "settings": { @@ -222,8 +226,8 @@ }, "mdm": { "errors": { - "cloud_auth_required": "Votre organisation nécessite une authentification Roo Code Cloud. Veuillez vous connecter pour continuer.", - "organization_mismatch": "Vous devez être authentifié avec le compte Roo Code Cloud de votre organisation.", + "cloud_auth_required": "Votre organisation nécessite une authentification Zoo Code Cloud. Veuillez vous connecter pour continuer.", + "organization_mismatch": "Vous devez être authentifié avec le compte Zoo Code Cloud de votre organisation.", "manual_url_empty": "Veuillez entrer une URL de callback valide", "manual_url_no_query": "URL de callback invalide : paramètres de requête manquants", "manual_url_missing_params": "URL de callback invalide : paramètres requis manquants (code et state)", diff --git a/src/i18n/locales/fr/mcp.json b/src/i18n/locales/fr/mcp.json index 162f9387345..00f2445c5ae 100644 --- a/src/i18n/locales/fr/mcp.json +++ b/src/i18n/locales/fr/mcp.json @@ -5,7 +5,7 @@ "invalid_settings_validation": "Format de paramètres MCP invalide : {{errorMessages}}", "create_json": "Échec de la création ou de l'ouverture de .roo/mcp.json : {{error}}", "failed_update_project": "Échec de la mise à jour des serveurs MCP du projet", - "invalidJsonArgument": "Roo a essayé d'utiliser {{toolName}} avec un argument JSON invalide. Nouvelle tentative...", + "invalidJsonArgument": "Zoo a essayé d'utiliser {{toolName}} avec un argument JSON invalide. Nouvelle tentative...", "refresh_after_disable": "Échec du rafraîchissement des connexions MCP après désactivation", "refresh_after_enable": "Échec du rafraîchissement des connexions MCP après activation", "disconnect_servers_partial": "Échec de la déconnexion de {{count}} serveur(s) MCP. Vérifiez la sortie pour plus de détails.", diff --git a/src/i18n/locales/fr/tools.json b/src/i18n/locales/fr/tools.json index df0a1136cbf..7dd65facc42 100644 --- a/src/i18n/locales/fr/tools.json +++ b/src/i18n/locales/fr/tools.json @@ -6,8 +6,8 @@ "imageTooLarge": "Le fichier image est trop volumineux ({{size}} MB). La taille maximale autorisée est {{max}} MB.", "imageWithSize": "Fichier image ({{size}} Ko)" }, - "toolRepetitionLimitReached": "Roo semble être bloqué dans une boucle, tentant la même action ({{toolName}}) de façon répétée. Cela pourrait indiquer un problème avec sa stratégie actuelle. Envisage de reformuler la tâche, de fournir des instructions plus spécifiques ou de le guider vers une approche différente.", - "unknownToolError": "Roo a tenté d'utiliser un outil inconnu : \"{{toolName}}\". Nouvelle tentative...", + "toolRepetitionLimitReached": "Zoo semble être bloqué dans une boucle, tentant la même action ({{toolName}}) de façon répétée. Cela pourrait indiquer un problème avec sa stratégie actuelle. Envisage de reformuler la tâche, de fournir des instructions plus spécifiques ou de le guider vers une approche différente.", + "unknownToolError": "Zoo a tenté d'utiliser un outil inconnu : \"{{toolName}}\". Nouvelle tentative...", "codebaseSearch": { "approval": "Recherche de '{{query}}' dans la base de code..." }, @@ -25,7 +25,7 @@ "invalidImageFormat": "Format d'image non valide reçu", "unknownError": "Une erreur inconnue s'est produite", "roo": { - "authRequired": "L'authentification Roo Code Cloud est requise pour la génération d'images. Veuillez vous connecter à Roo Code Cloud." + "authRequired": "L'authentification Zoo Code Cloud est requise pour la génération d'images. Veuillez vous connecter à Zoo Code Cloud." } } } diff --git a/src/i18n/locales/hi/common.json b/src/i18n/locales/hi/common.json index 528ed6d45f5..ba3978cab02 100644 --- a/src/i18n/locales/hi/common.json +++ b/src/i18n/locales/hi/common.json @@ -1,6 +1,6 @@ { "extension": { - "name": "Roo Code", + "name": "Zoo Code", "description": "आपके एडिटर में AI डेवलपर्स की पूरी टीम।" }, "number_format": { @@ -112,7 +112,8 @@ "thinking_complete_recitation": "(सोचना पूरा हुआ, लेकिन पाठ जाँच के कारण आउटपुट अवरुद्ध कर दिया गया।)" }, "roo": { - "authenticationRequired": "Roo प्रदाता को क्लाउड प्रमाणीकरण की आवश्यकता है। कृपया Roo Code Cloud में साइन इन करें।" + "authenticationRequired": "Zoo प्रदाता को क्लाउड प्रमाणीकरण की आवश्यकता है। कृपया Zoo Code Cloud में साइन इन करें।", + "routerRemoved": "Roo Code Router हटा दिया गया है। कृपया कोई दूसरा प्रदाता चुनें और कॉन्फ़िगर करें।" }, "api": { "invalidKeyInvalidChars": "API कुंजी में अमान्य वर्ण हैं।", @@ -145,7 +146,7 @@ "warnings": { "no_terminal_content": "कोई टर्मिनल सामग्री चयनित नहीं", "missing_task_files": "इस टास्क की फाइलें गायब हैं। क्या आप इसे टास्क सूची से हटाना चाहते हैं?", - "auto_import_failed": "RooCode सेटिंग्स का स्वचालित आयात विफल: {{error}}" + "auto_import_failed": "ZooCode सेटिंग्स का स्वचालित आयात विफल: {{error}}" }, "info": { "no_changes": "कोई परिवर्तन नहीं मिला।", @@ -154,14 +155,17 @@ "custom_storage_path_set": "कस्टम स्टोरेज पाथ सेट किया गया: {{path}}", "default_storage_path": "डिफ़ॉल्ट स्टोरेज पाथ का उपयोग पुनः शुरू किया गया", "settings_imported": "सेटिंग्स सफलतापूर्वक इम्पोर्ट की गईं।", - "auto_import_success": "RooCode सेटिंग्स {{filename}} से स्वचालित रूप से आयात की गईं", + "auto_import_success": "ZooCode सेटिंग्स {{filename}} से स्वचालित रूप से आयात की गईं", "share_link_copied": "साझा लिंक क्लिपबोर्ड पर कॉपी किया गया", "image_copied_to_clipboard": "छवि डेटा URI क्लिपबोर्ड में कॉपी की गई", "image_saved": "छवि {{path}} में सहेजी गई", "organization_share_link_copied": "संगठन साझाकरण लिंक क्लिपबोर्ड में कॉपी किया गया!", "public_share_link_copied": "सार्वजनिक साझाकरण लिंक क्लिपबोर्ड में कॉपी किया गया!", "mode_exported": "मोड '{{mode}}' सफलतापूर्वक निर्यात किया गया", - "mode_imported": "मोड सफलतापूर्वक आयात किया गया" + "mode_imported": "मोड सफलतापूर्वक आयात किया गया", + "roo": { + "signInUnavailable": "Roo Code Cloud साइन-इन अभी उपलब्ध नहीं है। जारी रखने के लिए कोई दूसरा प्रदाता कॉन्फ़िगर करें।" + } }, "answers": { "yes": "हां", @@ -187,12 +191,12 @@ }, "storage": { "prompt_custom_path": "वार्तालाप इतिहास के लिए कस्टम स्टोरेज पाथ दर्ज करें, डिफ़ॉल्ट स्थान का उपयोग करने के लिए खाली छोड़ दें", - "path_placeholder": "D:\\RooCodeStorage", - "enter_absolute_path": "कृपया एक पूर्ण पाथ दर्ज करें (उदाहरण: D:\\RooCodeStorage या /home/user/storage)", + "path_placeholder": "D:\\ZooCodeStorage", + "enter_absolute_path": "कृपया एक पूर्ण पाथ दर्ज करें (उदाहरण: D:\\ZooCodeStorage या /home/user/storage)", "enter_valid_path": "कृपया एक वैध पाथ दर्ज करें" }, "input": { - "task_prompt": "Roo को क्या करना है?", + "task_prompt": "Zoo को क्या करना है?", "task_placeholder": "अपना कार्य यहाँ लिखें" }, "settings": { @@ -222,8 +226,8 @@ }, "mdm": { "errors": { - "cloud_auth_required": "आपके संगठन को Roo Code Cloud प्रमाणीकरण की आवश्यकता है। कृपया जारी रखने के लिए साइन इन करें।", - "organization_mismatch": "आपको अपने संगठन के Roo Code Cloud खाते से प्रमाणित होना होगा।", + "cloud_auth_required": "आपके संगठन को Zoo Code Cloud प्रमाणीकरण की आवश्यकता है। कृपया जारी रखने के लिए साइन इन करें।", + "organization_mismatch": "आपको अपने संगठन के Zoo Code Cloud खाते से प्रमाणित होना होगा।", "manual_url_empty": "कृपया एक वैध callback URL दर्ज करें", "manual_url_no_query": "अवैध callback URL: क्वेरी पैरामीटर गुम हैं", "manual_url_missing_params": "अवैध callback URL: आवश्यक पैरामीटर गुम हैं (code और state)", diff --git a/src/i18n/locales/hi/mcp.json b/src/i18n/locales/hi/mcp.json index 627aca205c6..e5d3f9b7c07 100644 --- a/src/i18n/locales/hi/mcp.json +++ b/src/i18n/locales/hi/mcp.json @@ -5,7 +5,7 @@ "invalid_settings_validation": "अमान्य MCP सेटिंग्स फॉर्मेट: {{errorMessages}}", "create_json": ".roo/mcp.json बनाने या खोलने में विफल: {{error}}", "failed_update_project": "प्रोजेक्ट MCP सर्वर अपडेट करने में विफल", - "invalidJsonArgument": "Roo ने {{toolName}} को अमान्य JSON आर्गुमेंट के साथ उपयोग करने की कोशिश की। फिर से कोशिश कर रहा है...", + "invalidJsonArgument": "Zoo ने {{toolName}} को अमान्य JSON आर्गुमेंट के साथ उपयोग करने की कोशिश की। फिर से कोशिश कर रहा है...", "refresh_after_disable": "अक्षम करने के बाद MCP कनेक्शन रीफ्रेश करने में विफल", "refresh_after_enable": "सक्षम करने के बाद MCP कनेक्शन रीफ्रेश करने में विफल", "disconnect_servers_partial": "{{count}} MCP सर्वर डिस्कनेक्ट करने में विफल। विवरण के लिए आउटपुट देखें।", diff --git a/src/i18n/locales/hi/tools.json b/src/i18n/locales/hi/tools.json index 73c7729a933..04193d45a03 100644 --- a/src/i18n/locales/hi/tools.json +++ b/src/i18n/locales/hi/tools.json @@ -6,8 +6,8 @@ "imageTooLarge": "छवि फ़ाइल बहुत बड़ी है ({{size}} MB)। अधिकतम अनुमतित आकार {{max}} MB है।", "imageWithSize": "छवि फ़ाइल ({{size}} KB)" }, - "toolRepetitionLimitReached": "Roo एक लूप में फंसा हुआ लगता है, बार-बार एक ही क्रिया ({{toolName}}) को दोहरा रहा है। यह उसकी वर्तमान रणनीति में किसी समस्या का संकेत हो सकता है। कार्य को पुनः परिभाषित करने, अधिक विशिष्ट निर्देश देने, या उसे एक अलग दृष्टिकोण की ओर मार्गदर्शित करने पर विचार करें।", - "unknownToolError": "Roo ने एक अज्ञात उपकरण का उपयोग करने का प्रयास किया: \"{{toolName}}\"। पुनः प्रयास कर रहा है...", + "toolRepetitionLimitReached": "Zoo एक लूप में फंसा हुआ लगता है, बार-बार एक ही क्रिया ({{toolName}}) को दोहरा रहा है। यह उसकी वर्तमान रणनीति में किसी समस्या का संकेत हो सकता है। कार्य को पुनः परिभाषित करने, अधिक विशिष्ट निर्देश देने, या उसे एक अलग दृष्टिकोण की ओर मार्गदर्शित करने पर विचार करें।", + "unknownToolError": "Zoo ने एक अज्ञात उपकरण का उपयोग करने का प्रयास किया: \"{{toolName}}\"। पुनः प्रयास कर रहा है...", "codebaseSearch": { "approval": "कोडबेस में '{{query}}' खोज रहा है..." }, @@ -25,7 +25,7 @@ "invalidImageFormat": "अमान्य छवि प्रारूप प्राप्त हुआ", "unknownError": "एक अज्ञात त्रुटि हुई", "roo": { - "authRequired": "छवि निर्माण के लिए Roo Code Cloud प्रमाणीकरण आवश्यक है। कृपया Roo Code Cloud में साइन इन करें।" + "authRequired": "छवि निर्माण के लिए Zoo Code Cloud प्रमाणीकरण आवश्यक है। कृपया Zoo Code Cloud में साइन इन करें।" } } } diff --git a/src/i18n/locales/id/common.json b/src/i18n/locales/id/common.json index cb1c3231fb8..f315227b4ba 100644 --- a/src/i18n/locales/id/common.json +++ b/src/i18n/locales/id/common.json @@ -1,6 +1,6 @@ { "extension": { - "name": "Roo Code", + "name": "Zoo Code", "description": "Tim pengembang AI lengkap di editor kamu." }, "number_format": { @@ -112,7 +112,8 @@ "thinking_complete_recitation": "(Berpikir selesai, tetapi output diblokir karena pemeriksaan resitasi.)" }, "roo": { - "authenticationRequired": "Penyedia Roo memerlukan autentikasi cloud. Silakan masuk ke Roo Code Cloud." + "authenticationRequired": "Penyedia Zoo memerlukan autentikasi cloud. Silakan masuk ke Zoo Code Cloud.", + "routerRemoved": "Roo Code Router telah dihapus. Pilih dan konfigurasikan penyedia lain." }, "api": { "invalidKeyInvalidChars": "Kunci API mengandung karakter tidak valid.", @@ -145,7 +146,7 @@ "warnings": { "no_terminal_content": "Tidak ada konten terminal yang dipilih", "missing_task_files": "File tugas ini hilang. Apakah kamu ingin menghapusnya dari daftar tugas?", - "auto_import_failed": "Gagal mengimpor pengaturan RooCode secara otomatis: {{error}}" + "auto_import_failed": "Gagal mengimpor pengaturan ZooCode secara otomatis: {{error}}" }, "info": { "no_changes": "Tidak ada perubahan ditemukan.", @@ -154,14 +155,17 @@ "custom_storage_path_set": "Path penyimpanan kustom diatur: {{path}}", "default_storage_path": "Kembali menggunakan path penyimpanan default", "settings_imported": "Pengaturan berhasil diimpor.", - "auto_import_success": "Pengaturan RooCode berhasil diimpor secara otomatis dari {{filename}}", + "auto_import_success": "Pengaturan ZooCode berhasil diimpor secara otomatis dari {{filename}}", "share_link_copied": "Link bagikan disalin ke clipboard", "image_copied_to_clipboard": "Data URI gambar disalin ke clipboard", "image_saved": "Gambar disimpan ke {{path}}", "organization_share_link_copied": "Tautan berbagi organisasi disalin ke clipboard!", "public_share_link_copied": "Tautan berbagi publik disalin ke clipboard!", "mode_exported": "Mode '{{mode}}' berhasil diekspor", - "mode_imported": "Mode berhasil diimpor" + "mode_imported": "Mode berhasil diimpor", + "roo": { + "signInUnavailable": "Masuk ke Roo Code Cloud saat ini tidak tersedia. Konfigurasikan penyedia lain untuk melanjutkan." + } }, "answers": { "yes": "Ya", @@ -187,12 +191,12 @@ }, "storage": { "prompt_custom_path": "Masukkan path penyimpanan riwayat percakapan kustom, biarkan kosong untuk menggunakan lokasi default", - "path_placeholder": "D:\\RooCodeStorage", - "enter_absolute_path": "Silakan masukkan path absolut (misalnya D:\\RooCodeStorage atau /home/user/storage)", + "path_placeholder": "D:\\ZooCodeStorage", + "enter_absolute_path": "Silakan masukkan path absolut (misalnya D:\\ZooCodeStorage atau /home/user/storage)", "enter_valid_path": "Silakan masukkan path yang valid" }, "input": { - "task_prompt": "Apa yang harus Roo lakukan?", + "task_prompt": "Apa yang harus Zoo lakukan?", "task_placeholder": "Ketik tugas kamu di sini" }, "settings": { @@ -222,8 +226,8 @@ }, "mdm": { "errors": { - "cloud_auth_required": "Organisasi kamu memerlukan autentikasi Roo Code Cloud. Silakan masuk untuk melanjutkan.", - "organization_mismatch": "Kamu harus diautentikasi dengan akun Roo Code Cloud organisasi kamu.", + "cloud_auth_required": "Organisasi kamu memerlukan autentikasi Zoo Code Cloud. Silakan masuk untuk melanjutkan.", + "organization_mismatch": "Kamu harus diautentikasi dengan akun Zoo Code Cloud organisasi kamu.", "manual_url_empty": "Silakan masukkan URL callback yang valid", "manual_url_no_query": "URL callback tidak valid: parameter query hilang", "manual_url_missing_params": "URL callback tidak valid: parameter yang diperlukan hilang (code dan state)", diff --git a/src/i18n/locales/id/mcp.json b/src/i18n/locales/id/mcp.json index 60c09242440..57847945336 100644 --- a/src/i18n/locales/id/mcp.json +++ b/src/i18n/locales/id/mcp.json @@ -5,7 +5,7 @@ "invalid_settings_validation": "Format pengaturan MCP tidak valid: {{errorMessages}}", "create_json": "Gagal membuat atau membuka .roo/mcp.json: {{error}}", "failed_update_project": "Gagal memperbarui server MCP proyek", - "invalidJsonArgument": "Roo mencoba menggunakan {{toolName}} dengan argumen JSON yang tidak valid. Mencoba lagi...", + "invalidJsonArgument": "Zoo mencoba menggunakan {{toolName}} dengan argumen JSON yang tidak valid. Mencoba lagi...", "refresh_after_disable": "Gagal me-refresh koneksi MCP setelah menonaktifkan", "refresh_after_enable": "Gagal me-refresh koneksi MCP setelah mengaktifkan", "disconnect_servers_partial": "Gagal memutus koneksi {{count}} server MCP. Periksa output untuk detailnya.", diff --git a/src/i18n/locales/id/tools.json b/src/i18n/locales/id/tools.json index 412711104b8..b6b64fdcaec 100644 --- a/src/i18n/locales/id/tools.json +++ b/src/i18n/locales/id/tools.json @@ -6,8 +6,8 @@ "imageTooLarge": "File gambar terlalu besar ({{size}} MB). Ukuran maksimum yang diizinkan adalah {{max}} MB.", "imageWithSize": "File gambar ({{size}} KB)" }, - "toolRepetitionLimitReached": "Roo tampaknya terjebak dalam loop, mencoba aksi yang sama ({{toolName}}) berulang kali. Ini mungkin menunjukkan masalah dengan strategi saat ini. Pertimbangkan untuk mengubah frasa tugas, memberikan instruksi yang lebih spesifik, atau mengarahkannya ke pendekatan yang berbeda.", - "unknownToolError": "Roo mencoba menggunakan alat yang tidak dikenal: \"{{toolName}}\". Mencoba lagi...", + "toolRepetitionLimitReached": "Zoo tampaknya terjebak dalam loop, mencoba aksi yang sama ({{toolName}}) berulang kali. Ini mungkin menunjukkan masalah dengan strategi saat ini. Pertimbangkan untuk mengubah frasa tugas, memberikan instruksi yang lebih spesifik, atau mengarahkannya ke pendekatan yang berbeda.", + "unknownToolError": "Zoo mencoba menggunakan alat yang tidak dikenal: \"{{toolName}}\". Mencoba lagi...", "codebaseSearch": { "approval": "Mencari '{{query}}' di codebase..." }, @@ -28,7 +28,7 @@ "invalidImageFormat": "Format gambar tidak valid diterima", "unknownError": "Terjadi kesalahan yang tidak diketahui", "roo": { - "authRequired": "Autentikasi Roo Code Cloud diperlukan untuk menghasilkan gambar. Silakan masuk ke Roo Code Cloud." + "authRequired": "Autentikasi Zoo Code Cloud diperlukan untuk menghasilkan gambar. Silakan masuk ke Zoo Code Cloud." } } } diff --git a/src/i18n/locales/it/common.json b/src/i18n/locales/it/common.json index b4e522cb732..9d276c23d20 100644 --- a/src/i18n/locales/it/common.json +++ b/src/i18n/locales/it/common.json @@ -1,6 +1,6 @@ { "extension": { - "name": "Roo Code", + "name": "Zoo Code", "description": "Un intero team di sviluppatori AI nel tuo editor." }, "number_format": { @@ -112,7 +112,8 @@ "thinking_complete_recitation": "(Pensiero completato, ma l'output è stato bloccato a causa del controllo di recitazione.)" }, "roo": { - "authenticationRequired": "Il provider Roo richiede l'autenticazione cloud. Accedi a Roo Code Cloud." + "authenticationRequired": "Il provider Zoo richiede l'autenticazione cloud. Accedi a Zoo Code Cloud.", + "routerRemoved": "Roo Code Router è stato rimosso. Seleziona e configura un provider diverso." }, "api": { "invalidKeyInvalidChars": "La chiave API contiene caratteri non validi.", @@ -145,7 +146,7 @@ "warnings": { "no_terminal_content": "Nessun contenuto del terminale selezionato", "missing_task_files": "I file di questa attività sono mancanti. Vuoi rimuoverla dall'elenco delle attività?", - "auto_import_failed": "Importazione automatica delle impostazioni RooCode fallita: {{error}}" + "auto_import_failed": "Importazione automatica delle impostazioni ZooCode fallita: {{error}}" }, "info": { "no_changes": "Nessuna modifica trovata.", @@ -154,14 +155,17 @@ "custom_storage_path_set": "Percorso di archiviazione personalizzato impostato: {{path}}", "default_storage_path": "Tornato al percorso di archiviazione predefinito", "settings_imported": "Impostazioni importate con successo.", - "auto_import_success": "Impostazioni RooCode importate automaticamente da {{filename}}", + "auto_import_success": "Impostazioni ZooCode importate automaticamente da {{filename}}", "share_link_copied": "Link di condivisione copiato negli appunti", "image_copied_to_clipboard": "URI dati dell'immagine copiato negli appunti", "image_saved": "Immagine salvata in {{path}}", "organization_share_link_copied": "Link di condivisione organizzazione copiato negli appunti!", "public_share_link_copied": "Link di condivisione pubblica copiato negli appunti!", "mode_exported": "Modalità '{{mode}}' esportata con successo", - "mode_imported": "Modalità importata con successo" + "mode_imported": "Modalità importata con successo", + "roo": { + "signInUnavailable": "L'accesso a Roo Code Cloud non è attualmente disponibile. Configura un altro provider per continuare." + } }, "answers": { "yes": "Sì", @@ -187,12 +191,12 @@ }, "storage": { "prompt_custom_path": "Inserisci il percorso di archiviazione personalizzato per la cronologia delle conversazioni, lascia vuoto per utilizzare la posizione predefinita", - "path_placeholder": "D:\\RooCodeStorage", - "enter_absolute_path": "Inserisci un percorso assoluto (ad esempio D:\\RooCodeStorage o /home/user/storage)", + "path_placeholder": "D:\\ZooCodeStorage", + "enter_absolute_path": "Inserisci un percorso assoluto (ad esempio D:\\ZooCodeStorage o /home/user/storage)", "enter_valid_path": "Inserisci un percorso valido" }, "input": { - "task_prompt": "Cosa deve fare Roo?", + "task_prompt": "Cosa deve fare Zoo?", "task_placeholder": "Scrivi il tuo compito qui" }, "settings": { @@ -222,8 +226,8 @@ }, "mdm": { "errors": { - "cloud_auth_required": "La tua organizzazione richiede l'autenticazione Roo Code Cloud. Accedi per continuare.", - "organization_mismatch": "Devi essere autenticato con l'account Roo Code Cloud della tua organizzazione.", + "cloud_auth_required": "La tua organizzazione richiede l'autenticazione Zoo Code Cloud. Accedi per continuare.", + "organization_mismatch": "Devi essere autenticato con l'account Zoo Code Cloud della tua organizzazione.", "manual_url_empty": "Inserisci un URL di callback valido", "manual_url_no_query": "URL di callback non valido: parametri di query mancanti", "manual_url_missing_params": "URL di callback non valido: parametri richiesti mancanti (code e state)", diff --git a/src/i18n/locales/it/mcp.json b/src/i18n/locales/it/mcp.json index 2c890d10f74..a4f0ffebe6f 100644 --- a/src/i18n/locales/it/mcp.json +++ b/src/i18n/locales/it/mcp.json @@ -5,7 +5,7 @@ "invalid_settings_validation": "Formato delle impostazioni MCP non valido: {{errorMessages}}", "create_json": "Impossibile creare o aprire .roo/mcp.json: {{error}}", "failed_update_project": "Errore durante l'aggiornamento dei server MCP del progetto", - "invalidJsonArgument": "Roo ha tentato di usare {{toolName}} con un argomento JSON non valido. Riprovo...", + "invalidJsonArgument": "Zoo ha tentato di usare {{toolName}} con un argomento JSON non valido. Riprovo...", "refresh_after_disable": "Impossibile aggiornare le connessioni MCP dopo la disattivazione", "refresh_after_enable": "Impossibile aggiornare le connessioni MCP dopo l'attivazione", "disconnect_servers_partial": "Impossibile disconnettere {{count}} server MCP. Controlla l'output per i dettagli.", diff --git a/src/i18n/locales/it/tools.json b/src/i18n/locales/it/tools.json index 24022f52ae4..97d851bd7fc 100644 --- a/src/i18n/locales/it/tools.json +++ b/src/i18n/locales/it/tools.json @@ -6,8 +6,8 @@ "imageTooLarge": "Il file immagine è troppo grande ({{size}} MB). La dimensione massima consentita è {{max}} MB.", "imageWithSize": "File immagine ({{size}} KB)" }, - "toolRepetitionLimitReached": "Roo sembra essere bloccato in un ciclo, tentando ripetutamente la stessa azione ({{toolName}}). Questo potrebbe indicare un problema con la sua strategia attuale. Considera di riformulare l'attività, fornire istruzioni più specifiche o guidarlo verso un approccio diverso.", - "unknownToolError": "Roo ha provato ad utilizzare uno strumento sconosciuto: \"{{toolName}}\". Nuovo tentativo...", + "toolRepetitionLimitReached": "Zoo sembra essere bloccato in un ciclo, tentando ripetutamente la stessa azione ({{toolName}}). Questo potrebbe indicare un problema con la sua strategia attuale. Considera di riformulare l'attività, fornire istruzioni più specifiche o guidarlo verso un approccio diverso.", + "unknownToolError": "Zoo ha provato ad utilizzare uno strumento sconosciuto: \"{{toolName}}\". Nuovo tentativo...", "codebaseSearch": { "approval": "Ricerca di '{{query}}' nella base di codice..." }, @@ -25,7 +25,7 @@ "invalidImageFormat": "Formato immagine non valido ricevuto", "unknownError": "Si è verificato un errore sconosciuto", "roo": { - "authRequired": "L'autenticazione Roo Code Cloud è richiesta per la generazione di immagini. Accedi a Roo Code Cloud." + "authRequired": "L'autenticazione Zoo Code Cloud è richiesta per la generazione di immagini. Accedi a Zoo Code Cloud." } } } diff --git a/src/i18n/locales/ja/common.json b/src/i18n/locales/ja/common.json index 7b63b6f7298..989ae512ee7 100644 --- a/src/i18n/locales/ja/common.json +++ b/src/i18n/locales/ja/common.json @@ -1,6 +1,6 @@ { "extension": { - "name": "Roo Code", + "name": "Zoo Code", "description": "エディター内のAIデベロッパーチーム全体。" }, "number_format": { @@ -112,7 +112,8 @@ "thinking_complete_recitation": "(思考完了、引用チェックにより出力ブロック)" }, "roo": { - "authenticationRequired": "Rooプロバイダーはクラウド認証が必要です。Roo Code Cloudにサインインしてください。" + "authenticationRequired": "Zooプロバイダーはクラウド認証が必要です。Zoo Code Cloudにサインインしてください。", + "routerRemoved": "Roo Code Router は削除されました。別のプロバイダーを選択して設定してください。" }, "api": { "invalidKeyInvalidChars": "APIキーに無効な文字が含まれています。", @@ -145,7 +146,7 @@ "warnings": { "no_terminal_content": "選択されたターミナルコンテンツがありません", "missing_task_files": "このタスクのファイルが見つかりません。タスクリストから削除しますか?", - "auto_import_failed": "RooCode設定の自動インポートに失敗しました:{{error}}" + "auto_import_failed": "ZooCode設定の自動インポートに失敗しました:{{error}}" }, "info": { "no_changes": "変更は見つかりませんでした。", @@ -154,14 +155,17 @@ "custom_storage_path_set": "カスタムストレージパスが設定されました:{{path}}", "default_storage_path": "デフォルトのストレージパスに戻りました", "settings_imported": "設定が正常にインポートされました。", - "auto_import_success": "RooCode設定が{{filename}}から自動インポートされました", + "auto_import_success": "ZooCode設定が{{filename}}から自動インポートされました", "share_link_copied": "共有リンクがクリップボードにコピーされました", "image_copied_to_clipboard": "画像データURIがクリップボードにコピーされました", "image_saved": "画像を{{path}}に保存しました", "organization_share_link_copied": "組織共有リンクがクリップボードにコピーされました!", "public_share_link_copied": "公開共有リンクがクリップボードにコピーされました!", "mode_exported": "モード「{{mode}}」が正常にエクスポートされました", - "mode_imported": "モードが正常にインポートされました" + "mode_imported": "モードが正常にインポートされました", + "roo": { + "signInUnavailable": "Roo Code Cloud へのサインインは現在利用できません。続行するには別のプロバイダーを設定してください。" + } }, "answers": { "yes": "はい", @@ -187,12 +191,12 @@ }, "storage": { "prompt_custom_path": "会話履歴のカスタムストレージパスを入力してください。デフォルトの場所を使用する場合は空のままにしてください", - "path_placeholder": "D:\\RooCodeStorage", - "enter_absolute_path": "絶対パスを入力してください(例:D:\\RooCodeStorage または /home/user/storage)", + "path_placeholder": "D:\\ZooCodeStorage", + "enter_absolute_path": "絶対パスを入力してください(例:D:\\ZooCodeStorage または /home/user/storage)", "enter_valid_path": "有効なパスを入力してください" }, "input": { - "task_prompt": "Rooにどんなことをさせますか?", + "task_prompt": "Zooにどんなことをさせますか?", "task_placeholder": "タスクをここに入力してください" }, "settings": { @@ -222,8 +226,8 @@ }, "mdm": { "errors": { - "cloud_auth_required": "あなたの組織では Roo Code Cloud 認証が必要です。続行するにはサインインしてください。", - "organization_mismatch": "組織の Roo Code Cloud アカウントで認証する必要があります。", + "cloud_auth_required": "あなたの組織では Zoo Code Cloud 認証が必要です。続行するにはサインインしてください。", + "organization_mismatch": "組織の Zoo Code Cloud アカウントで認証する必要があります。", "manual_url_empty": "有効なコールバック URL を入力してください", "manual_url_no_query": "無効なコールバック URL:クエリパラメータがありません", "manual_url_missing_params": "無効なコールバック URL:必要なパラメータ(code と state)がありません", diff --git a/src/i18n/locales/ja/mcp.json b/src/i18n/locales/ja/mcp.json index 87c4e0d8ad2..58cfa9d5d85 100644 --- a/src/i18n/locales/ja/mcp.json +++ b/src/i18n/locales/ja/mcp.json @@ -5,7 +5,7 @@ "invalid_settings_validation": "MCP設定フォーマットが無効です:{{errorMessages}}", "create_json": ".roo/mcp.jsonの作成または開くことに失敗しました:{{error}}", "failed_update_project": "プロジェクトMCPサーバーの更新に失敗しました", - "invalidJsonArgument": "Rooが無効なJSON引数で{{toolName}}を使用しようとしました。再試行中...", + "invalidJsonArgument": "Zooが無効なJSON引数で{{toolName}}を使用しようとしました。再試行中...", "refresh_after_disable": "無効化後にMCP接続の更新に失敗しました", "refresh_after_enable": "有効化後にMCP接続の更新に失敗しました", "disconnect_servers_partial": "{{count}}個のMCPサーバーの切断に失敗しました。詳細は出力を確認してください。", diff --git a/src/i18n/locales/ja/tools.json b/src/i18n/locales/ja/tools.json index f79ce9ac2f5..3987b7b745e 100644 --- a/src/i18n/locales/ja/tools.json +++ b/src/i18n/locales/ja/tools.json @@ -6,8 +6,8 @@ "imageTooLarge": "画像ファイルが大きすぎます({{size}} MB)。最大許可サイズは {{max}} MB です。", "imageWithSize": "画像ファイル({{size}} KB)" }, - "toolRepetitionLimitReached": "Rooが同じ操作({{toolName}})を繰り返し試みるループに陥っているようです。これは現在の方法に問題がある可能性を示しています。タスクの言い換え、より具体的な指示の提供、または別のアプローチへの誘導を検討してください。", - "unknownToolError": "Rooが不明なツールを使用しようとしました:「{{toolName}}」。再試行中...", + "toolRepetitionLimitReached": "Zooが同じ操作({{toolName}})を繰り返し試みるループに陥っているようです。これは現在の方法に問題がある可能性を示しています。タスクの言い換え、より具体的な指示の提供、または別のアプローチへの誘導を検討してください。", + "unknownToolError": "Zooが不明なツールを使用しようとしました:「{{toolName}}」。再試行中...", "codebaseSearch": { "approval": "コードベースで '{{query}}' を検索中..." }, @@ -25,7 +25,7 @@ "invalidImageFormat": "無効な画像フォーマットを受信しました", "unknownError": "不明なエラーが発生しました", "roo": { - "authRequired": "画像生成にはRoo Code Cloud認証が必要です。Roo Code Cloudにサインインしてください。" + "authRequired": "画像生成にはZoo Code Cloud認証が必要です。Zoo Code Cloudにサインインしてください。" } } } diff --git a/src/i18n/locales/ko/common.json b/src/i18n/locales/ko/common.json index fbde3225bb1..2635d900798 100644 --- a/src/i18n/locales/ko/common.json +++ b/src/i18n/locales/ko/common.json @@ -1,6 +1,6 @@ { "extension": { - "name": "Roo Code", + "name": "Zoo Code", "description": "에디터 내에서 동작하는 AI 개발팀 전체입니다." }, "number_format": { @@ -112,7 +112,8 @@ "thinking_complete_recitation": "(생각 완료, 암송 확인으로 출력 차단됨)" }, "roo": { - "authenticationRequired": "Roo 제공업체는 클라우드 인증이 필요합니다. Roo Code Cloud에 로그인하세요." + "authenticationRequired": "Zoo 제공업체는 클라우드 인증이 필요합니다. Zoo Code Cloud에 로그인하세요.", + "routerRemoved": "Roo Code Router가 제거되었습니다. 다른 제공업체를 선택하고 구성하세요." }, "api": { "invalidKeyInvalidChars": "API 키에 유효하지 않은 문자가 포함되어 있습니다.", @@ -145,7 +146,7 @@ "warnings": { "no_terminal_content": "선택된 터미널 내용이 없습니다", "missing_task_files": "이 작업의 파일이 누락되었습니다. 작업 목록에서 제거하시겠습니까?", - "auto_import_failed": "RooCode 설정 자동 가져오기 실패: {{error}}" + "auto_import_failed": "ZooCode 설정 자동 가져오기 실패: {{error}}" }, "info": { "no_changes": "변경 사항이 없습니다.", @@ -154,14 +155,17 @@ "custom_storage_path_set": "사용자 지정 저장 경로 설정됨: {{path}}", "default_storage_path": "기본 저장 경로로 되돌아갔습니다", "settings_imported": "설정이 성공적으로 가져와졌습니다.", - "auto_import_success": "{{filename}}에서 RooCode 설정을 자동으로 가져왔습니다", + "auto_import_success": "{{filename}}에서 ZooCode 설정을 자동으로 가져왔습니다", "share_link_copied": "공유 링크가 클립보드에 복사되었습니다", "image_copied_to_clipboard": "이미지 데이터 URI가 클립보드에 복사되었습니다", "image_saved": "이미지가 {{path}}에 저장되었습니다", "organization_share_link_copied": "조직 공유 링크가 클립보드에 복사되었습니다!", "public_share_link_copied": "공개 공유 링크가 클립보드에 복사되었습니다!", "mode_exported": "'{{mode}}' 모드가 성공적으로 내보내졌습니다", - "mode_imported": "모드를 성공적으로 가져왔습니다" + "mode_imported": "모드를 성공적으로 가져왔습니다", + "roo": { + "signInUnavailable": "Roo Code Cloud 로그인은 현재 사용할 수 없습니다. 계속하려면 다른 제공업체를 구성하세요." + } }, "answers": { "yes": "예", @@ -187,12 +191,12 @@ }, "storage": { "prompt_custom_path": "대화 내역을 위한 사용자 지정 저장 경로를 입력하세요. 기본 위치를 사용하려면 비워두세요", - "path_placeholder": "D:\\RooCodeStorage", - "enter_absolute_path": "절대 경로를 입력하세요 (예: D:\\RooCodeStorage 또는 /home/user/storage)", + "path_placeholder": "D:\\ZooCodeStorage", + "enter_absolute_path": "절대 경로를 입력하세요 (예: D:\\ZooCodeStorage 또는 /home/user/storage)", "enter_valid_path": "유효한 경로를 입력하세요" }, "input": { - "task_prompt": "Roo에게 무엇을 시킬까요?", + "task_prompt": "Zoo에게 무엇을 시킬까요?", "task_placeholder": "여기에 작업을 입력하세요" }, "settings": { @@ -222,8 +226,8 @@ }, "mdm": { "errors": { - "cloud_auth_required": "조직에서 Roo Code Cloud 인증이 필요합니다. 계속하려면 로그인하세요.", - "organization_mismatch": "조직의 Roo Code Cloud 계정으로 인증해야 합니다.", + "cloud_auth_required": "조직에서 Zoo Code Cloud 인증이 필요합니다. 계속하려면 로그인하세요.", + "organization_mismatch": "조직의 Zoo Code Cloud 계정으로 인증해야 합니다.", "manual_url_empty": "유효한 콜백 URL을 입력하세요", "manual_url_no_query": "유효하지 않은 콜백 URL: 쿼리 매개변수 누락", "manual_url_missing_params": "유효하지 않은 콜백 URL: 필요한 매개변수 누락 (code와 state)", diff --git a/src/i18n/locales/ko/mcp.json b/src/i18n/locales/ko/mcp.json index 051ca82e838..b7e0731eada 100644 --- a/src/i18n/locales/ko/mcp.json +++ b/src/i18n/locales/ko/mcp.json @@ -5,7 +5,7 @@ "invalid_settings_validation": "잘못된 MCP 설정 형식: {{errorMessages}}", "create_json": ".roo/mcp.json 생성 또는 열기 실패: {{error}}", "failed_update_project": "프로젝트 MCP 서버 업데이트에 실패했습니다", - "invalidJsonArgument": "Roo가 유효하지 않은 JSON 인자로 {{toolName}}을(를) 사용하려고 했습니다. 다시 시도 중...", + "invalidJsonArgument": "Zoo가 유효하지 않은 JSON 인자로 {{toolName}}을(를) 사용하려고 했습니다. 다시 시도 중...", "refresh_after_disable": "비활성화 후 MCP 연결 새로 고침 실패", "refresh_after_enable": "활성화 후 MCP 연결 새로 고침 실패", "disconnect_servers_partial": "{{count}}개의 MCP 서버 연결 해제 실패. 자세한 내용은 출력을 확인하세요.", diff --git a/src/i18n/locales/ko/tools.json b/src/i18n/locales/ko/tools.json index 88cf28cdcc1..cc65e2a80b2 100644 --- a/src/i18n/locales/ko/tools.json +++ b/src/i18n/locales/ko/tools.json @@ -6,8 +6,8 @@ "imageTooLarge": "이미지 파일이 너무 큽니다 ({{size}} MB). 최대 허용 크기는 {{max}} MB입니다.", "imageWithSize": "이미지 파일 ({{size}} KB)" }, - "toolRepetitionLimitReached": "Roo가 같은 동작({{toolName}})을 반복적으로 시도하면서 루프에 갇힌 것 같습니다. 이는 현재 전략에 문제가 있을 수 있음을 나타냅니다. 작업을 다시 표현하거나, 더 구체적인 지침을 제공하거나, 다른 접근 방식으로 안내해 보세요.", - "unknownToolError": "Roo가 알 수 없는 도구를 사용하려고 했습니다: \"{{toolName}}\". 다시 시도 중...", + "toolRepetitionLimitReached": "Zoo가 같은 동작({{toolName}})을 반복적으로 시도하면서 루프에 갇힌 것 같습니다. 이는 현재 전략에 문제가 있을 수 있음을 나타냅니다. 작업을 다시 표현하거나, 더 구체적인 지침을 제공하거나, 다른 접근 방식으로 안내해 보세요.", + "unknownToolError": "Zoo가 알 수 없는 도구를 사용하려고 했습니다: \"{{toolName}}\". 다시 시도 중...", "codebaseSearch": { "approval": "코드베이스에서 '{{query}}' 검색 중..." }, @@ -25,7 +25,7 @@ "invalidImageFormat": "잘못된 이미지 형식을 받았습니다", "unknownError": "알 수 없는 오류가 발생했습니다", "roo": { - "authRequired": "이미지 생성에는 Roo Code Cloud 인증이 필요합니다. Roo Code Cloud에 로그인하세요." + "authRequired": "이미지 생성에는 Zoo Code Cloud 인증이 필요합니다. Zoo Code Cloud에 로그인하세요." } } } diff --git a/src/i18n/locales/nl/common.json b/src/i18n/locales/nl/common.json index eba274c96ec..2c8b8f783b6 100644 --- a/src/i18n/locales/nl/common.json +++ b/src/i18n/locales/nl/common.json @@ -1,6 +1,6 @@ { "extension": { - "name": "Roo Code", + "name": "Zoo Code", "description": "Een compleet ontwikkelteam van AI-agenten in je editor." }, "number_format": { @@ -112,7 +112,8 @@ "thinking_complete_recitation": "(Nadenken voltooid, maar uitvoer is geblokkeerd vanwege recitatiecontrole.)" }, "roo": { - "authenticationRequired": "Roo provider vereist cloud authenticatie. Log in bij Roo Code Cloud." + "authenticationRequired": "Zoo provider vereist cloud authenticatie. Log in bij Zoo Code Cloud.", + "routerRemoved": "Roo Code Router is verwijderd. Selecteer en configureer een andere provider." }, "api": { "invalidKeyInvalidChars": "API-sleutel bevat ongeldige karakters.", @@ -145,7 +146,7 @@ "warnings": { "no_terminal_content": "Geen terminalinhoud geselecteerd", "missing_task_files": "De bestanden van deze taak ontbreken. Wil je deze uit de takenlijst verwijderen?", - "auto_import_failed": "Automatisch importeren van RooCode-instellingen mislukt: {{error}}" + "auto_import_failed": "Automatisch importeren van ZooCode-instellingen mislukt: {{error}}" }, "info": { "no_changes": "Geen wijzigingen gevonden.", @@ -154,14 +155,17 @@ "custom_storage_path_set": "Aangepast opslagpad ingesteld: {{path}}", "default_storage_path": "Terug naar standaard opslagpad", "settings_imported": "Instellingen succesvol geïmporteerd.", - "auto_import_success": "RooCode-instellingen automatisch geïmporteerd van {{filename}}", + "auto_import_success": "ZooCode-instellingen automatisch geïmporteerd van {{filename}}", "share_link_copied": "Deellink gekopieerd naar klembord", "image_copied_to_clipboard": "Afbeelding data-URI gekopieerd naar klembord", "image_saved": "Afbeelding opgeslagen naar {{path}}", "organization_share_link_copied": "Organisatie deel-link gekopieerd naar klembord!", "public_share_link_copied": "Openbare deel-link gekopieerd naar klembord!", "mode_exported": "Modus '{{mode}}' succesvol geëxporteerd", - "mode_imported": "Modus succesvol geïmporteerd" + "mode_imported": "Modus succesvol geïmporteerd", + "roo": { + "signInUnavailable": "Inloggen bij Roo Code Cloud is momenteel niet beschikbaar. Configureer een andere provider om door te gaan." + } }, "answers": { "yes": "Ja", @@ -187,12 +191,12 @@ }, "storage": { "prompt_custom_path": "Voer een aangepast opslagpad voor gespreksgeschiedenis in, laat leeg voor standaardlocatie", - "path_placeholder": "D:\\RooCodeStorage", - "enter_absolute_path": "Voer een absoluut pad in (bijv. D:\\RooCodeStorage of /home/user/storage)", + "path_placeholder": "D:\\ZooCodeStorage", + "enter_absolute_path": "Voer een absoluut pad in (bijv. D:\\ZooCodeStorage of /home/user/storage)", "enter_valid_path": "Voer een geldig pad in" }, "input": { - "task_prompt": "Wat moet Roo doen?", + "task_prompt": "Wat moet Zoo doen?", "task_placeholder": "Typ hier je taak" }, "settings": { @@ -222,8 +226,8 @@ }, "mdm": { "errors": { - "cloud_auth_required": "Je organisatie vereist Roo Code Cloud-authenticatie. Log in om door te gaan.", - "organization_mismatch": "Je moet geauthenticeerd zijn met het Roo Code Cloud-account van je organisatie.", + "cloud_auth_required": "Je organisatie vereist Zoo Code Cloud-authenticatie. Log in om door te gaan.", + "organization_mismatch": "Je moet geauthenticeerd zijn met het Zoo Code Cloud-account van je organisatie.", "manual_url_empty": "Voer een geldige callback-URL in", "manual_url_no_query": "Ongeldige callback-URL: query-parameters ontbreken", "manual_url_missing_params": "Ongeldige callback-URL: vereiste parameters ontbreken (code en state)", diff --git a/src/i18n/locales/nl/mcp.json b/src/i18n/locales/nl/mcp.json index 4599e87bdfc..8fdf07ed46b 100644 --- a/src/i18n/locales/nl/mcp.json +++ b/src/i18n/locales/nl/mcp.json @@ -5,7 +5,7 @@ "invalid_settings_validation": "Ongeldig MCP-instellingenformaat: {{errorMessages}}", "create_json": "Aanmaken of openen van .roo/mcp.json mislukt: {{error}}", "failed_update_project": "Bijwerken van project MCP-servers mislukt", - "invalidJsonArgument": "Roo probeerde {{toolName}} te gebruiken met een ongeldig JSON-argument. Opnieuw proberen...", + "invalidJsonArgument": "Zoo probeerde {{toolName}} te gebruiken met een ongeldig JSON-argument. Opnieuw proberen...", "refresh_after_disable": "Vernieuwen van MCP-verbindingen na uitschakelen mislukt", "refresh_after_enable": "Vernieuwen van MCP-verbindingen na inschakelen mislukt", "disconnect_servers_partial": "Loskoppelen van {{count}} MCP-server(s) mislukt. Controleer de uitvoer voor details.", diff --git a/src/i18n/locales/nl/tools.json b/src/i18n/locales/nl/tools.json index d696a19937e..d157275a7a3 100644 --- a/src/i18n/locales/nl/tools.json +++ b/src/i18n/locales/nl/tools.json @@ -6,8 +6,8 @@ "imageTooLarge": "Afbeeldingsbestand is te groot ({{size}} MB). De maximaal toegestane grootte is {{max}} MB.", "imageWithSize": "Afbeeldingsbestand ({{size}} KB)" }, - "toolRepetitionLimitReached": "Roo lijkt vast te zitten in een lus, waarbij hij herhaaldelijk dezelfde actie ({{toolName}}) probeert. Dit kan duiden op een probleem met de huidige strategie. Overweeg de taak te herformuleren, specifiekere instructies te geven of Roo naar een andere aanpak te leiden.", - "unknownToolError": "Roo probeerde een onbekende tool te gebruiken: \"{{toolName}}\". Opnieuw proberen...", + "toolRepetitionLimitReached": "Zoo lijkt vast te zitten in een lus, waarbij hij herhaaldelijk dezelfde actie ({{toolName}}) probeert. Dit kan duiden op een probleem met de huidige strategie. Overweeg de taak te herformuleren, specifiekere instructies te geven of Zoo naar een andere aanpak te leiden.", + "unknownToolError": "Zoo probeerde een onbekende tool te gebruiken: \"{{toolName}}\". Opnieuw proberen...", "codebaseSearch": { "approval": "Zoeken naar '{{query}}' in codebase..." }, @@ -25,7 +25,7 @@ "invalidImageFormat": "Ongeldig afbeeldingsformaat ontvangen", "unknownError": "Er is een onbekende fout opgetreden", "roo": { - "authRequired": "Roo Code Cloud-authenticatie is vereist voor het genereren van afbeeldingen. Log in bij Roo Code Cloud." + "authRequired": "Zoo Code Cloud-authenticatie is vereist voor het genereren van afbeeldingen. Log in bij Zoo Code Cloud." } } } diff --git a/src/i18n/locales/pl/common.json b/src/i18n/locales/pl/common.json index 20b568281bb..aa72c5aaec5 100644 --- a/src/i18n/locales/pl/common.json +++ b/src/i18n/locales/pl/common.json @@ -1,6 +1,6 @@ { "extension": { - "name": "Roo Code", + "name": "Zoo Code", "description": "Cały zespół programistów AI w Twoim edytorze." }, "number_format": { @@ -112,7 +112,8 @@ "thinking_complete_recitation": "(Myślenie zakończone, ale dane wyjściowe zostały zablokowane przez kontrolę recytacji.)" }, "roo": { - "authenticationRequired": "Dostawca Roo wymaga uwierzytelnienia w chmurze. Zaloguj się do Roo Code Cloud." + "authenticationRequired": "Dostawca Zoo wymaga uwierzytelnienia w chmurze. Zaloguj się do Zoo Code Cloud.", + "routerRemoved": "Roo Code Router został usunięty. Wybierz i skonfiguruj innego dostawcę." }, "api": { "invalidKeyInvalidChars": "Klucz API zawiera nieprawidłowe znaki.", @@ -145,7 +146,7 @@ "warnings": { "no_terminal_content": "Nie wybrano zawartości terminala", "missing_task_files": "Pliki tego zadania są brakujące. Czy chcesz usunąć je z listy zadań?", - "auto_import_failed": "Nie udało się automatycznie zaimportować ustawień RooCode: {{error}}" + "auto_import_failed": "Nie udało się automatycznie zaimportować ustawień ZooCode: {{error}}" }, "info": { "no_changes": "Nie znaleziono zmian.", @@ -154,14 +155,17 @@ "custom_storage_path_set": "Ustawiono niestandardową ścieżkę przechowywania: {{path}}", "default_storage_path": "Wznowiono używanie domyślnej ścieżki przechowywania", "settings_imported": "Ustawienia zaimportowane pomyślnie.", - "auto_import_success": "Ustawienia RooCode zostały automatycznie zaimportowane z {{filename}}", + "auto_import_success": "Ustawienia ZooCode zostały automatycznie zaimportowane z {{filename}}", "share_link_copied": "Link udostępniania skopiowany do schowka", "image_copied_to_clipboard": "URI danych obrazu skopiowane do schowka", "image_saved": "Obraz zapisany w {{path}}", "organization_share_link_copied": "Link udostępniania organizacji skopiowany do schowka!", "public_share_link_copied": "Publiczny link udostępniania skopiowany do schowka!", "mode_exported": "Tryb '{{mode}}' pomyślnie wyeksportowany", - "mode_imported": "Tryb pomyślnie zaimportowany" + "mode_imported": "Tryb pomyślnie zaimportowany", + "roo": { + "signInUnavailable": "Logowanie do Roo Code Cloud jest obecnie niedostępne. Skonfiguruj innego dostawcę, aby kontynuować." + } }, "answers": { "yes": "Tak", @@ -187,12 +191,12 @@ }, "storage": { "prompt_custom_path": "Wprowadź niestandardową ścieżkę przechowywania dla historii konwersacji lub pozostaw puste, aby użyć lokalizacji domyślnej", - "path_placeholder": "D:\\RooCodeStorage", - "enter_absolute_path": "Wprowadź pełną ścieżkę (np. D:\\RooCodeStorage lub /home/user/storage)", + "path_placeholder": "D:\\ZooCodeStorage", + "enter_absolute_path": "Wprowadź pełną ścieżkę (np. D:\\ZooCodeStorage lub /home/user/storage)", "enter_valid_path": "Wprowadź prawidłową ścieżkę" }, "input": { - "task_prompt": "Co ma zrobić Roo?", + "task_prompt": "Co ma zrobić Zoo?", "task_placeholder": "Wpisz swoje zadanie tutaj" }, "settings": { @@ -222,8 +226,8 @@ }, "mdm": { "errors": { - "cloud_auth_required": "Twoja organizacja wymaga uwierzytelnienia Roo Code Cloud. Zaloguj się, aby kontynuować.", - "organization_mismatch": "Musisz być uwierzytelniony kontem Roo Code Cloud swojej organizacji.", + "cloud_auth_required": "Twoja organizacja wymaga uwierzytelnienia Zoo Code Cloud. Zaloguj się, aby kontynuować.", + "organization_mismatch": "Musisz być uwierzytelniony kontem Zoo Code Cloud swojej organizacji.", "manual_url_empty": "Wprowadź prawidłowy URL callback", "manual_url_no_query": "Nieprawidłowy URL callback: brak parametrów zapytania", "manual_url_missing_params": "Nieprawidłowy URL callback: brak wymaganych parametrów (code i state)", diff --git a/src/i18n/locales/pl/mcp.json b/src/i18n/locales/pl/mcp.json index a6536765143..c4ba1256bbf 100644 --- a/src/i18n/locales/pl/mcp.json +++ b/src/i18n/locales/pl/mcp.json @@ -5,7 +5,7 @@ "invalid_settings_validation": "Nieprawidłowy format ustawień MCP: {{errorMessages}}", "create_json": "Nie udało się utworzyć lub otworzyć .roo/mcp.json: {{error}}", "failed_update_project": "Nie udało się zaktualizować serwerów MCP projektu", - "invalidJsonArgument": "Roo próbował użyć {{toolName}} z nieprawidłowym argumentem JSON. Ponawianie...", + "invalidJsonArgument": "Zoo próbował użyć {{toolName}} z nieprawidłowym argumentem JSON. Ponawianie...", "refresh_after_disable": "Nie udało się odświeżyć połączeń MCP po wyłączeniu", "refresh_after_enable": "Nie udało się odświeżyć połączeń MCP po włączeniu", "disconnect_servers_partial": "Nie udało się odłączyć {{count}} serwera(ów) MCP. Sprawdź dane wyjściowe, aby uzyskać szczegóły.", diff --git a/src/i18n/locales/pl/tools.json b/src/i18n/locales/pl/tools.json index d7c0d18c148..fce837aafbe 100644 --- a/src/i18n/locales/pl/tools.json +++ b/src/i18n/locales/pl/tools.json @@ -6,8 +6,8 @@ "imageTooLarge": "Plik obrazu jest zbyt duży ({{size}} MB). Maksymalny dozwolony rozmiar to {{max}} MB.", "imageWithSize": "Plik obrazu ({{size}} KB)" }, - "toolRepetitionLimitReached": "Wygląda na to, że Roo utknął w pętli, wielokrotnie próbując wykonać tę samą akcję ({{toolName}}). Może to wskazywać na problem z jego obecną strategią. Rozważ przeformułowanie zadania, podanie bardziej szczegółowych instrukcji lub nakierowanie go na inne podejście.", - "unknownToolError": "Roo próbował użyć nieznanego narzędzia: \"{{toolName}}\". Ponowna próba...", + "toolRepetitionLimitReached": "Wygląda na to, że Zoo utknął w pętli, wielokrotnie próbując wykonać tę samą akcję ({{toolName}}). Może to wskazywać na problem z jego obecną strategią. Rozważ przeformułowanie zadania, podanie bardziej szczegółowych instrukcji lub nakierowanie go na inne podejście.", + "unknownToolError": "Zoo próbował użyć nieznanego narzędzia: \"{{toolName}}\". Ponowna próba...", "codebaseSearch": { "approval": "Wyszukiwanie '{{query}}' w bazie kodu..." }, @@ -25,7 +25,7 @@ "invalidImageFormat": "Otrzymano nieprawidłowy format obrazu", "unknownError": "Wystąpił nieznany błąd", "roo": { - "authRequired": "Uwierzytelnienie Roo Code Cloud jest wymagane do generowania obrazów. Zaloguj się do Roo Code Cloud." + "authRequired": "Uwierzytelnienie Zoo Code Cloud jest wymagane do generowania obrazów. Zaloguj się do Zoo Code Cloud." } } } diff --git a/src/i18n/locales/pt-BR/common.json b/src/i18n/locales/pt-BR/common.json index 38abc8c8047..69bac459783 100644 --- a/src/i18n/locales/pt-BR/common.json +++ b/src/i18n/locales/pt-BR/common.json @@ -1,10 +1,10 @@ { "input": { - "task_prompt": "O que você quer que o Roo faça?", + "task_prompt": "O que você quer que o Zoo faça?", "task_placeholder": "Digite sua tarefa aqui" }, "extension": { - "name": "Roo Code", + "name": "Zoo Code", "description": "Uma equipe completa de desenvolvedores com IA em seu editor." }, "number_format": { @@ -116,7 +116,8 @@ "thinking_complete_recitation": "(Pensamento concluído, mas a saída foi bloqueada devido à verificação de recitação.)" }, "roo": { - "authenticationRequired": "O provedor Roo requer autenticação na nuvem. Faça login no Roo Code Cloud." + "authenticationRequired": "O provedor Zoo requer autenticação na nuvem. Faça login no Zoo Code Cloud.", + "routerRemoved": "O Roo Code Router foi removido. Selecione e configure um provedor diferente." }, "api": { "invalidKeyInvalidChars": "A chave API contém caracteres inválidos.", @@ -149,7 +150,7 @@ "warnings": { "no_terminal_content": "Nenhum conteúdo do terminal selecionado", "missing_task_files": "Os arquivos desta tarefa estão faltando. Deseja removê-la da lista de tarefas?", - "auto_import_failed": "Falha ao importar automaticamente as configurações do RooCode: {{error}}" + "auto_import_failed": "Falha ao importar automaticamente as configurações do ZooCode: {{error}}" }, "info": { "no_changes": "Nenhuma alteração encontrada.", @@ -158,14 +159,17 @@ "custom_storage_path_set": "Caminho de armazenamento personalizado definido: {{path}}", "default_storage_path": "Retornado ao caminho de armazenamento padrão", "settings_imported": "Configurações importadas com sucesso.", - "auto_import_success": "Configurações do RooCode importadas automaticamente de {{filename}}", + "auto_import_success": "Configurações do ZooCode importadas automaticamente de {{filename}}", "share_link_copied": "Link de compartilhamento copiado para a área de transferência", "image_copied_to_clipboard": "URI de dados da imagem copiada para a área de transferência", "image_saved": "Imagem salva em {{path}}", "organization_share_link_copied": "Link de compartilhamento da organização copiado para a área de transferência!", "public_share_link_copied": "Link de compartilhamento público copiado para a área de transferência!", "mode_exported": "Modo '{{mode}}' exportado com sucesso", - "mode_imported": "Modo importado com sucesso" + "mode_imported": "Modo importado com sucesso", + "roo": { + "signInUnavailable": "O login do Roo Code Cloud não está disponível no momento. Configure outro provedor para continuar." + } }, "answers": { "yes": "Sim", @@ -191,8 +195,8 @@ }, "storage": { "prompt_custom_path": "Digite o caminho de armazenamento personalizado para o histórico de conversas, deixe em branco para usar o local padrão", - "path_placeholder": "D:\\RooCodeStorage", - "enter_absolute_path": "Por favor, digite um caminho absoluto (ex: D:\\RooCodeStorage ou /home/user/storage)", + "path_placeholder": "D:\\ZooCodeStorage", + "enter_absolute_path": "Por favor, digite um caminho absoluto (ex: D:\\ZooCodeStorage ou /home/user/storage)", "enter_valid_path": "Por favor, digite um caminho válido" }, "settings": { @@ -222,8 +226,8 @@ }, "mdm": { "errors": { - "cloud_auth_required": "Sua organização requer autenticação do Roo Code Cloud. Faça login para continuar.", - "organization_mismatch": "Você deve estar autenticado com a conta Roo Code Cloud da sua organização.", + "cloud_auth_required": "Sua organização requer autenticação do Zoo Code Cloud. Faça login para continuar.", + "organization_mismatch": "Você deve estar autenticado com a conta Zoo Code Cloud da sua organização.", "manual_url_empty": "Por favor, insira uma URL de callback válida", "manual_url_no_query": "URL de callback inválida: parâmetros de consulta ausentes", "manual_url_missing_params": "URL de callback inválida: parâmetros obrigatórios ausentes (code e state)", diff --git a/src/i18n/locales/pt-BR/mcp.json b/src/i18n/locales/pt-BR/mcp.json index fbf22e7aa2d..34d12a3d7c4 100644 --- a/src/i18n/locales/pt-BR/mcp.json +++ b/src/i18n/locales/pt-BR/mcp.json @@ -5,7 +5,7 @@ "invalid_settings_validation": "Formato de configurações MCP inválido: {{errorMessages}}", "create_json": "Falha ao criar ou abrir .roo/mcp.json: {{error}}", "failed_update_project": "Falha ao atualizar os servidores MCP do projeto", - "invalidJsonArgument": "Roo tentou usar {{toolName}} com um argumento JSON inválido. Tentando novamente...", + "invalidJsonArgument": "Zoo tentou usar {{toolName}} com um argumento JSON inválido. Tentando novamente...", "refresh_after_disable": "Falha ao atualizar as conexões MCP após desativar", "refresh_after_enable": "Falha ao atualizar as conexões MCP após ativar", "disconnect_servers_partial": "Falha ao desconectar {{count}} servidor(es) MCP. Verifique a saída para detalhes.", diff --git a/src/i18n/locales/pt-BR/tools.json b/src/i18n/locales/pt-BR/tools.json index e8da6dae7f6..65050676076 100644 --- a/src/i18n/locales/pt-BR/tools.json +++ b/src/i18n/locales/pt-BR/tools.json @@ -6,8 +6,8 @@ "imageTooLarge": "Arquivo de imagem é muito grande ({{size}} MB). O tamanho máximo permitido é {{max}} MB.", "imageWithSize": "Arquivo de imagem ({{size}} KB)" }, - "toolRepetitionLimitReached": "Roo parece estar preso em um loop, tentando a mesma ação ({{toolName}}) repetidamente. Isso pode indicar um problema com sua estratégia atual. Considere reformular a tarefa, fornecer instruções mais específicas ou guiá-lo para uma abordagem diferente.", - "unknownToolError": "Roo tentou usar uma ferramenta desconhecida: \"{{toolName}}\". Tentando novamente...", + "toolRepetitionLimitReached": "Zoo parece estar preso em um loop, tentando a mesma ação ({{toolName}}) repetidamente. Isso pode indicar um problema com sua estratégia atual. Considere reformular a tarefa, fornecer instruções mais específicas ou guiá-lo para uma abordagem diferente.", + "unknownToolError": "Zoo tentou usar uma ferramenta desconhecida: \"{{toolName}}\". Tentando novamente...", "codebaseSearch": { "approval": "Pesquisando '{{query}}' na base de código..." }, @@ -25,7 +25,7 @@ "invalidImageFormat": "Formato de imagem inválido recebido", "unknownError": "Ocorreu um erro desconhecido", "roo": { - "authRequired": "A autenticação do Roo Code Cloud é necessária para geração de imagens. Faça login no Roo Code Cloud." + "authRequired": "A autenticação do Zoo Code Cloud é necessária para geração de imagens. Faça login no Zoo Code Cloud." } } } diff --git a/src/i18n/locales/ru/common.json b/src/i18n/locales/ru/common.json index d124f597318..d22c4899405 100644 --- a/src/i18n/locales/ru/common.json +++ b/src/i18n/locales/ru/common.json @@ -1,6 +1,6 @@ { "extension": { - "name": "Roo Code", + "name": "Zoo Code", "description": "Целая команда ИИ-разработчиков в вашем редакторе." }, "number_format": { @@ -112,7 +112,8 @@ "thinking_complete_recitation": "(Размышление завершено, но вывод заблокирован проверкой цитирования.)" }, "roo": { - "authenticationRequired": "Провайдер Roo требует облачной аутентификации. Войдите в Roo Code Cloud." + "authenticationRequired": "Провайдер Zoo требует облачной аутентификации. Войдите в Zoo Code Cloud.", + "routerRemoved": "Roo Code Router был удалён. Выберите и настройте другого провайдера." }, "api": { "invalidKeyInvalidChars": "API-ключ содержит недопустимые символы.", @@ -145,7 +146,7 @@ "warnings": { "no_terminal_content": "Не выбрано содержимое терминала", "missing_task_files": "Файлы этой задачи отсутствуют. Хотите удалить её из списка задач?", - "auto_import_failed": "Не удалось автоматически импортировать настройки RooCode: {{error}}" + "auto_import_failed": "Не удалось автоматически импортировать настройки ZooCode: {{error}}" }, "info": { "no_changes": "Изменения не найдены.", @@ -154,14 +155,17 @@ "custom_storage_path_set": "Установлен пользовательский путь хранения: {{path}}", "default_storage_path": "Возвращено использование пути хранения по умолчанию", "settings_imported": "Настройки успешно импортированы.", - "auto_import_success": "Настройки RooCode автоматически импортированы из {{filename}}", + "auto_import_success": "Настройки ZooCode автоматически импортированы из {{filename}}", "share_link_copied": "Ссылка для совместного использования скопирована в буфер обмена", "image_copied_to_clipboard": "URI данных изображения скопирован в буфер обмена", "image_saved": "Изображение сохранено в {{path}}", "organization_share_link_copied": "Ссылка для совместного доступа организации скопирована в буфер обмена!", "public_share_link_copied": "Публичная ссылка для совместного доступа скопирована в буфер обмена!", "mode_exported": "Режим '{{mode}}' успешно экспортирован", - "mode_imported": "Режим успешно импортирован" + "mode_imported": "Режим успешно импортирован", + "roo": { + "signInUnavailable": "Вход в Roo Code Cloud сейчас недоступен. Настрой другого провайдера, чтобы продолжить." + } }, "answers": { "yes": "Да", @@ -187,12 +191,12 @@ }, "storage": { "prompt_custom_path": "Введите пользовательский путь хранения истории разговоров, оставьте пустым для использования расположения по умолчанию", - "path_placeholder": "D:\\RooCodeStorage", - "enter_absolute_path": "Пожалуйста, введите абсолютный путь (например, D:\\RooCodeStorage или /home/user/storage)", + "path_placeholder": "D:\\ZooCodeStorage", + "enter_absolute_path": "Пожалуйста, введите абсолютный путь (например, D:\\ZooCodeStorage или /home/user/storage)", "enter_valid_path": "Пожалуйста, введите корректный путь" }, "input": { - "task_prompt": "Что должен сделать Roo?", + "task_prompt": "Что должен сделать Zoo?", "task_placeholder": "Введите вашу задачу здесь" }, "settings": { @@ -222,8 +226,8 @@ }, "mdm": { "errors": { - "cloud_auth_required": "Ваша организация требует аутентификации Roo Code Cloud. Войдите в систему, чтобы продолжить.", - "organization_mismatch": "Вы должны быть аутентифицированы с учетной записью Roo Code Cloud вашей организации.", + "cloud_auth_required": "Ваша организация требует аутентификации Zoo Code Cloud. Войдите в систему, чтобы продолжить.", + "organization_mismatch": "Вы должны быть аутентифицированы с учетной записью Zoo Code Cloud вашей организации.", "manual_url_empty": "Введи действительный URL обратного вызова", "manual_url_no_query": "Недействительный URL обратного вызова: отсутствуют параметры запроса", "manual_url_missing_params": "Недействительный URL обратного вызова: отсутствуют обязательные параметры (code и state)", diff --git a/src/i18n/locales/ru/mcp.json b/src/i18n/locales/ru/mcp.json index 581db3cd8db..d1d550301e0 100644 --- a/src/i18n/locales/ru/mcp.json +++ b/src/i18n/locales/ru/mcp.json @@ -5,7 +5,7 @@ "invalid_settings_validation": "Неверный формат настроек MCP: {{errorMessages}}", "create_json": "Не удалось создать или открыть .roo/mcp.json: {{error}}", "failed_update_project": "Не удалось обновить серверы проекта MCP", - "invalidJsonArgument": "Roo попытался использовать {{toolName}} с недопустимым JSON-аргументом. Повторная попытка...", + "invalidJsonArgument": "Zoo попытался использовать {{toolName}} с недопустимым JSON-аргументом. Повторная попытка...", "refresh_after_disable": "Не удалось обновить соединения MCP после отключения", "refresh_after_enable": "Не удалось обновить соединения MCP после включения", "disconnect_servers_partial": "Не удалось отключить {{count}} MCP сервер(ов). Проверьте вывод для получения подробностей.", diff --git a/src/i18n/locales/ru/tools.json b/src/i18n/locales/ru/tools.json index 0e4e1466055..6fecfc272b7 100644 --- a/src/i18n/locales/ru/tools.json +++ b/src/i18n/locales/ru/tools.json @@ -6,8 +6,8 @@ "imageTooLarge": "Файл изображения слишком большой ({{size}} МБ). Максимально допустимый размер {{max}} МБ.", "imageWithSize": "Файл изображения ({{size}} КБ)" }, - "toolRepetitionLimitReached": "Похоже, что Roo застрял в цикле, многократно пытаясь выполнить одно и то же действие ({{toolName}}). Это может указывать на проблему с его текущей стратегией. Попробуйте переформулировать задачу, предоставить более конкретные инструкции или направить его к другому подходу.", - "unknownToolError": "Roo попытался использовать неизвестный инструмент: \"{{toolName}}\". Повторная попытка...", + "toolRepetitionLimitReached": "Похоже, что Zoo застрял в цикле, многократно пытаясь выполнить одно и то же действие ({{toolName}}). Это может указывать на проблему с его текущей стратегией. Попробуйте переформулировать задачу, предоставить более конкретные инструкции или направить его к другому подходу.", + "unknownToolError": "Zoo попытался использовать неизвестный инструмент: \"{{toolName}}\". Повторная попытка...", "codebaseSearch": { "approval": "Поиск '{{query}}' в кодовой базе..." }, @@ -25,7 +25,7 @@ "invalidImageFormat": "Получен недопустимый формат изображения", "unknownError": "Произошла неизвестная ошибка", "roo": { - "authRequired": "Для генерации изображений требуется аутентификация Roo Code Cloud. Войдите в Roo Code Cloud." + "authRequired": "Для генерации изображений требуется аутентификация Zoo Code Cloud. Войдите в Zoo Code Cloud." } } } diff --git a/src/i18n/locales/tr/common.json b/src/i18n/locales/tr/common.json index 00dcf6fc33d..847a364dfc7 100644 --- a/src/i18n/locales/tr/common.json +++ b/src/i18n/locales/tr/common.json @@ -1,6 +1,6 @@ { "extension": { - "name": "Roo Code", + "name": "Zoo Code", "description": "Düzenleyicinizde tam bir AI geliştirici ekibi." }, "number_format": { @@ -112,7 +112,8 @@ "thinking_complete_recitation": "(Düşünme tamamlandı, ancak çıktı okuma kontrolü nedeniyle engellendi.)" }, "roo": { - "authenticationRequired": "Roo sağlayıcısı bulut kimlik doğrulaması gerektirir. Lütfen Roo Code Cloud'a giriş yapın." + "authenticationRequired": "Zoo sağlayıcısı bulut kimlik doğrulaması gerektirir. Lütfen Zoo Code Cloud'a giriş yapın.", + "routerRemoved": "Roo Code Router kaldırıldı. Lütfen farklı bir sağlayıcı seçip yapılandırın." }, "api": { "invalidKeyInvalidChars": "API anahtarı geçersiz karakterler içeriyor.", @@ -145,7 +146,7 @@ "warnings": { "no_terminal_content": "Seçili terminal içeriği yok", "missing_task_files": "Bu görevin dosyaları eksik. Görev listesinden kaldırmak istiyor musunuz?", - "auto_import_failed": "RooCode ayarları otomatik olarak içe aktarılamadı: {{error}}" + "auto_import_failed": "ZooCode ayarları otomatik olarak içe aktarılamadı: {{error}}" }, "info": { "no_changes": "Değişiklik bulunamadı.", @@ -154,14 +155,17 @@ "custom_storage_path_set": "Özel depolama yolu ayarlandı: {{path}}", "default_storage_path": "Varsayılan depolama yoluna geri dönüldü", "settings_imported": "Ayarlar başarıyla içe aktarıldı.", - "auto_import_success": "RooCode ayarları {{filename}} dosyasından otomatik olarak içe aktarıldı", + "auto_import_success": "ZooCode ayarları {{filename}} dosyasından otomatik olarak içe aktarıldı", "share_link_copied": "Paylaşım bağlantısı panoya kopyalandı", "image_copied_to_clipboard": "Resim veri URI'si panoya kopyalandı", "image_saved": "Resim {{path}} konumuna kaydedildi", "organization_share_link_copied": "Kuruluş paylaşım bağlantısı panoya kopyalandı!", "public_share_link_copied": "Herkese açık paylaşım bağlantısı panoya kopyalandı!", "mode_exported": "'{{mode}}' modu başarıyla dışa aktarıldı", - "mode_imported": "Mod başarıyla içe aktarıldı" + "mode_imported": "Mod başarıyla içe aktarıldı", + "roo": { + "signInUnavailable": "Roo Code Cloud girişi şu anda kullanılamıyor. Devam etmek için farklı bir sağlayıcı yapılandırın." + } }, "answers": { "yes": "Evet", @@ -187,12 +191,12 @@ }, "storage": { "prompt_custom_path": "Konuşma geçmişi için özel depolama yolunu girin, varsayılan konumu kullanmak için boş bırakın", - "path_placeholder": "D:\\RooCodeStorage", - "enter_absolute_path": "Lütfen mutlak bir yol girin (örn. D:\\RooCodeStorage veya /home/user/storage)", + "path_placeholder": "D:\\ZooCodeStorage", + "enter_absolute_path": "Lütfen mutlak bir yol girin (örn. D:\\ZooCodeStorage veya /home/user/storage)", "enter_valid_path": "Lütfen geçerli bir yol girin" }, "input": { - "task_prompt": "Roo ne yapsın?", + "task_prompt": "Zoo ne yapsın?", "task_placeholder": "Görevini buraya yaz" }, "settings": { @@ -222,8 +226,8 @@ }, "mdm": { "errors": { - "cloud_auth_required": "Kuruluşunuz Roo Code Cloud kimlik doğrulaması gerektiriyor. Devam etmek için giriş yapın.", - "organization_mismatch": "Kuruluşunuzun Roo Code Cloud hesabıyla kimlik doğrulaması yapmalısınız.", + "cloud_auth_required": "Kuruluşunuz Zoo Code Cloud kimlik doğrulaması gerektiriyor. Devam etmek için giriş yapın.", + "organization_mismatch": "Kuruluşunuzun Zoo Code Cloud hesabıyla kimlik doğrulaması yapmalısınız.", "manual_url_empty": "Lütfen geçerli bir callback URL'si girin", "manual_url_no_query": "Geçersiz callback URL'si: sorgu parametreleri eksik", "manual_url_missing_params": "Geçersiz callback URL'si: gerekli parametreler eksik (code ve state)", diff --git a/src/i18n/locales/tr/mcp.json b/src/i18n/locales/tr/mcp.json index 58e1bf1a740..7a1ea0b6f6a 100644 --- a/src/i18n/locales/tr/mcp.json +++ b/src/i18n/locales/tr/mcp.json @@ -5,7 +5,7 @@ "invalid_settings_validation": "Geçersiz MCP ayarları formatı: {{errorMessages}}", "create_json": ".roo/mcp.json oluşturulamadı veya açılamadı: {{error}}", "failed_update_project": "Proje MCP sunucuları güncellenemedi", - "invalidJsonArgument": "Roo, {{toolName}} aracını geçersiz bir JSON argümanıyla kullanmaya çalıştı. Tekrar deneniyor...", + "invalidJsonArgument": "Zoo, {{toolName}} aracını geçersiz bir JSON argümanıyla kullanmaya çalıştı. Tekrar deneniyor...", "refresh_after_disable": "Devre dışı bıraktıktan sonra MCP bağlantıları yenilenemedi", "refresh_after_enable": "Etkinleştirdikten sonra MCP bağlantıları yenilenemedi", "disconnect_servers_partial": "{{count}} MCP sunucusu bağlantısı kesilemedi. Ayrıntılar için çıktıyı kontrol edin.", diff --git a/src/i18n/locales/tr/tools.json b/src/i18n/locales/tr/tools.json index 2f4263b20da..d2a79a9fabf 100644 --- a/src/i18n/locales/tr/tools.json +++ b/src/i18n/locales/tr/tools.json @@ -6,8 +6,8 @@ "imageTooLarge": "Görüntü dosyası çok büyük ({{size}} MB). İzin verilen maksimum boyut {{max}} MB.", "imageWithSize": "Görüntü dosyası ({{size}} KB)" }, - "toolRepetitionLimitReached": "Roo bir döngüye takılmış gibi görünüyor, aynı eylemi ({{toolName}}) tekrar tekrar deniyor. Bu, mevcut stratejisinde bir sorun olduğunu gösterebilir. Görevi yeniden ifade etmeyi, daha spesifik talimatlar vermeyi veya onu farklı bir yaklaşıma yönlendirmeyi düşünün.", - "unknownToolError": "Roo bilinmeyen bir araç kullanmaya çalıştı: \"{{toolName}}\". Yeniden deneniyor...", + "toolRepetitionLimitReached": "Zoo bir döngüye takılmış gibi görünüyor, aynı eylemi ({{toolName}}) tekrar tekrar deniyor. Bu, mevcut stratejisinde bir sorun olduğunu gösterebilir. Görevi yeniden ifade etmeyi, daha spesifik talimatlar vermeyi veya onu farklı bir yaklaşıma yönlendirmeyi düşünün.", + "unknownToolError": "Zoo bilinmeyen bir araç kullanmaya çalıştı: \"{{toolName}}\". Yeniden deneniyor...", "codebaseSearch": { "approval": "Kod tabanında '{{query}}' aranıyor..." }, @@ -25,7 +25,7 @@ "invalidImageFormat": "Geçersiz görüntü formatı alındı", "unknownError": "Bilinmeyen bir hata oluştu", "roo": { - "authRequired": "Görüntü oluşturma için Roo Code Cloud kimlik doğrulaması gereklidir. Lütfen Roo Code Cloud'da oturum açın." + "authRequired": "Görüntü oluşturma için Zoo Code Cloud kimlik doğrulaması gereklidir. Lütfen Zoo Code Cloud'da oturum açın." } } } diff --git a/src/i18n/locales/vi/common.json b/src/i18n/locales/vi/common.json index decd4ff53ef..51353c06ba7 100644 --- a/src/i18n/locales/vi/common.json +++ b/src/i18n/locales/vi/common.json @@ -1,6 +1,6 @@ { "extension": { - "name": "Roo Code", + "name": "Zoo Code", "description": "Toàn bộ đội ngũ phát triển AI trong trình soạn thảo của bạn." }, "number_format": { @@ -112,7 +112,8 @@ "thinking_complete_recitation": "(Đã suy nghĩ xong nhưng kết quả bị chặn do kiểm tra trích dẫn.)" }, "roo": { - "authenticationRequired": "Nhà cung cấp Roo yêu cầu xác thực đám mây. Vui lòng đăng nhập vào Roo Code Cloud." + "authenticationRequired": "Nhà cung cấp Zoo yêu cầu xác thực đám mây. Vui lòng đăng nhập vào Zoo Code Cloud.", + "routerRemoved": "Roo Code Router đã bị xóa. Vui lòng chọn và cấu hình một nhà cung cấp khác." }, "api": { "invalidKeyInvalidChars": "Khóa API chứa ký tự không hợp lệ.", @@ -145,7 +146,7 @@ "warnings": { "no_terminal_content": "Không có nội dung terminal được chọn", "missing_task_files": "Các tệp của nhiệm vụ này bị thiếu. Bạn có muốn xóa nó khỏi danh sách nhiệm vụ không?", - "auto_import_failed": "Không thể tự động nhập cài đặt RooCode: {{error}}" + "auto_import_failed": "Không thể tự động nhập cài đặt ZooCode: {{error}}" }, "info": { "no_changes": "Không tìm thấy thay đổi nào.", @@ -154,14 +155,17 @@ "custom_storage_path_set": "Đã thiết lập đường dẫn lưu trữ tùy chỉnh: {{path}}", "default_storage_path": "Đã quay lại sử dụng đường dẫn lưu trữ mặc định", "settings_imported": "Cài đặt đã được nhập thành công.", - "auto_import_success": "Cài đặt RooCode đã được tự động nhập từ {{filename}}", + "auto_import_success": "Cài đặt ZooCode đã được tự động nhập từ {{filename}}", "share_link_copied": "Liên kết chia sẻ đã được sao chép vào clipboard", "image_copied_to_clipboard": "URI dữ liệu hình ảnh đã được sao chép vào clipboard", "image_saved": "Hình ảnh đã được lưu vào {{path}}", "organization_share_link_copied": "Liên kết chia sẻ tổ chức đã được sao chép vào clipboard!", "public_share_link_copied": "Liên kết chia sẻ công khai đã được sao chép vào clipboard!", "mode_exported": "Chế độ '{{mode}}' đã được xuất thành công", - "mode_imported": "Chế độ đã được nhập thành công" + "mode_imported": "Chế độ đã được nhập thành công", + "roo": { + "signInUnavailable": "Đăng nhập Roo Code Cloud hiện không khả dụng. Hãy cấu hình nhà cung cấp khác để tiếp tục." + } }, "answers": { "yes": "Có", @@ -187,12 +191,12 @@ }, "storage": { "prompt_custom_path": "Nhập đường dẫn lưu trữ tùy chỉnh cho lịch sử hội thoại, để trống để sử dụng vị trí mặc định", - "path_placeholder": "D:\\RooCodeStorage", - "enter_absolute_path": "Vui lòng nhập đường dẫn tuyệt đối (ví dụ: D:\\RooCodeStorage hoặc /home/user/storage)", + "path_placeholder": "D:\\ZooCodeStorage", + "enter_absolute_path": "Vui lòng nhập đường dẫn tuyệt đối (ví dụ: D:\\ZooCodeStorage hoặc /home/user/storage)", "enter_valid_path": "Vui lòng nhập đường dẫn hợp lệ" }, "input": { - "task_prompt": "Bạn muốn Roo làm gì?", + "task_prompt": "Bạn muốn Zoo làm gì?", "task_placeholder": "Nhập nhiệm vụ của bạn ở đây" }, "settings": { @@ -222,8 +226,8 @@ }, "mdm": { "errors": { - "cloud_auth_required": "Tổ chức của bạn yêu cầu xác thực Roo Code Cloud. Vui lòng đăng nhập để tiếp tục.", - "organization_mismatch": "Bạn phải được xác thực bằng tài khoản Roo Code Cloud của tổ chức.", + "cloud_auth_required": "Tổ chức của bạn yêu cầu xác thực Zoo Code Cloud. Vui lòng đăng nhập để tiếp tục.", + "organization_mismatch": "Bạn phải được xác thực bằng tài khoản Zoo Code Cloud của tổ chức.", "manual_url_empty": "Vui lòng nhập URL callback hợp lệ", "manual_url_no_query": "URL callback không hợp lệ: thiếu tham số truy vấn", "manual_url_missing_params": "URL callback không hợp lệ: thiếu tham số bắt buộc (code và state)", diff --git a/src/i18n/locales/vi/mcp.json b/src/i18n/locales/vi/mcp.json index 7e529b4874d..e8e21cfd32c 100644 --- a/src/i18n/locales/vi/mcp.json +++ b/src/i18n/locales/vi/mcp.json @@ -5,7 +5,7 @@ "invalid_settings_validation": "Định dạng cài đặt MCP không hợp lệ: {{errorMessages}}", "create_json": "Không thể tạo hoặc mở .roo/mcp.json: {{error}}", "failed_update_project": "Không thể cập nhật máy chủ MCP của dự án", - "invalidJsonArgument": "Roo đã cố gắng sử dụng {{toolName}} với tham số JSON không hợp lệ. Đang thử lại...", + "invalidJsonArgument": "Zoo đã cố gắng sử dụng {{toolName}} với tham số JSON không hợp lệ. Đang thử lại...", "refresh_after_disable": "Không thể làm mới kết nối MCP sau khi vô hiệu hóa", "refresh_after_enable": "Không thể làm mới kết nối MCP sau khi kích hoạt", "disconnect_servers_partial": "Không thể ngắt kết nối {{count}} máy chủ MCP. Kiểm tra đầu ra để biết chi tiết.", diff --git a/src/i18n/locales/vi/tools.json b/src/i18n/locales/vi/tools.json index 4bccf1ff48c..96c01743172 100644 --- a/src/i18n/locales/vi/tools.json +++ b/src/i18n/locales/vi/tools.json @@ -6,8 +6,8 @@ "imageTooLarge": "Tệp hình ảnh quá lớn ({{size}} MB). Kích thước tối đa cho phép là {{max}} MB.", "imageWithSize": "Tệp hình ảnh ({{size}} KB)" }, - "toolRepetitionLimitReached": "Roo dường như đang bị mắc kẹt trong một vòng lặp, liên tục cố gắng thực hiện cùng một hành động ({{toolName}}). Điều này có thể cho thấy vấn đề với chiến lược hiện tại. Hãy cân nhắc việc diễn đạt lại nhiệm vụ, cung cấp hướng dẫn cụ thể hơn, hoặc hướng Roo theo một cách tiếp cận khác.", - "unknownToolError": "Roo đã cố gắng sử dụng một công cụ không xác định: \"{{toolName}}\". Đang thử lại...", + "toolRepetitionLimitReached": "Zoo dường như đang bị mắc kẹt trong một vòng lặp, liên tục cố gắng thực hiện cùng một hành động ({{toolName}}). Điều này có thể cho thấy vấn đề với chiến lược hiện tại. Hãy cân nhắc việc diễn đạt lại nhiệm vụ, cung cấp hướng dẫn cụ thể hơn, hoặc hướng Zoo theo một cách tiếp cận khác.", + "unknownToolError": "Zoo đã cố gắng sử dụng một công cụ không xác định: \"{{toolName}}\". Đang thử lại...", "codebaseSearch": { "approval": "Đang tìm kiếm '{{query}}' trong cơ sở mã..." }, @@ -25,7 +25,7 @@ "invalidImageFormat": "Nhận được định dạng hình ảnh không hợp lệ", "unknownError": "Đã xảy ra lỗi không xác định", "roo": { - "authRequired": "Yêu cầu xác thực Roo Code Cloud để tạo hình ảnh. Vui lòng đăng nhập vào Roo Code Cloud." + "authRequired": "Yêu cầu xác thực Zoo Code Cloud để tạo hình ảnh. Vui lòng đăng nhập vào Zoo Code Cloud." } } } diff --git a/src/i18n/locales/zh-CN/common.json b/src/i18n/locales/zh-CN/common.json index 6df1f78b167..fcc5106e81b 100644 --- a/src/i18n/locales/zh-CN/common.json +++ b/src/i18n/locales/zh-CN/common.json @@ -1,6 +1,6 @@ { "extension": { - "name": "Roo Code", + "name": "Zoo Code", "description": "您编辑器中的完整AI开发团队。" }, "number_format": { @@ -117,7 +117,8 @@ "thinking_complete_recitation": "(思考完成,但由于引用检查输出被阻止。)" }, "roo": { - "authenticationRequired": "Roo 提供商需要云认证。请登录 Roo Code Cloud。" + "authenticationRequired": "Zoo 提供商需要云认证。请登录 Zoo Code Cloud。", + "routerRemoved": "Roo Code Router 已被移除。请选择并配置其他提供商。" }, "api": { "invalidKeyInvalidChars": "API 密钥包含无效字符.", @@ -150,7 +151,7 @@ "warnings": { "no_terminal_content": "没有选择终端内容", "missing_task_files": "此任务的文件丢失。您想从任务列表中删除它吗?", - "auto_import_failed": "自动导入 RooCode 设置失败:{{error}}" + "auto_import_failed": "自动导入 ZooCode 设置失败:{{error}}" }, "info": { "no_changes": "未找到更改。", @@ -159,14 +160,17 @@ "custom_storage_path_set": "自定义存储路径已设置:{{path}}", "default_storage_path": "已恢复使用默认存储路径", "settings_imported": "设置已成功导入。", - "auto_import_success": "已自动导入 RooCode 设置:{{filename}}", + "auto_import_success": "已自动导入 ZooCode 设置:{{filename}}", "share_link_copied": "分享链接已复制到剪贴板", "image_copied_to_clipboard": "图片数据 URI 已复制到剪贴板", "image_saved": "图片已保存到 {{path}}", "organization_share_link_copied": "组织分享链接已复制到剪贴板!", "public_share_link_copied": "公开分享链接已复制到剪贴板!", "mode_exported": "模式 '{{mode}}' 已成功导出", - "mode_imported": "模式已成功导入" + "mode_imported": "模式已成功导入", + "roo": { + "signInUnavailable": "Roo Code Cloud 登录当前不可用。请配置其他提供商以继续。" + } }, "answers": { "yes": "是", @@ -192,12 +196,12 @@ }, "storage": { "prompt_custom_path": "输入自定义会话历史存储路径,留空以使用默认位置", - "path_placeholder": "D:\\RooCodeStorage", - "enter_absolute_path": "请输入绝对路径(例如 D:\\RooCodeStorage 或 /home/user/storage)", + "path_placeholder": "D:\\ZooCodeStorage", + "enter_absolute_path": "请输入绝对路径(例如 D:\\ZooCodeStorage 或 /home/user/storage)", "enter_valid_path": "请输入有效的路径" }, "input": { - "task_prompt": "让Roo做什么?", + "task_prompt": "让Zoo做什么?", "task_placeholder": "在这里输入任务" }, "settings": { @@ -227,8 +231,8 @@ }, "mdm": { "errors": { - "cloud_auth_required": "您的组织需要 Roo Code Cloud 身份验证。请登录以继续。", - "organization_mismatch": "您必须使用组织的 Roo Code Cloud 账户进行身份验证。", + "cloud_auth_required": "您的组织需要 Zoo Code Cloud 身份验证。请登录以继续。", + "organization_mismatch": "您必须使用组织的 Zoo Code Cloud 账户进行身份验证。", "manual_url_empty": "请输入有效的回调 URL", "manual_url_no_query": "无效的回调 URL:缺少查询参数", "manual_url_missing_params": "无效的回调 URL:缺少必需参数(code 和 state)", diff --git a/src/i18n/locales/zh-CN/mcp.json b/src/i18n/locales/zh-CN/mcp.json index 58e8fcec3d1..e013a226871 100644 --- a/src/i18n/locales/zh-CN/mcp.json +++ b/src/i18n/locales/zh-CN/mcp.json @@ -5,7 +5,7 @@ "invalid_settings_validation": "MCP设置格式无效:{{errorMessages}}", "create_json": "创建或打开 .roo/mcp.json 失败:{{error}}", "failed_update_project": "更新项目MCP服务器失败", - "invalidJsonArgument": "Roo 尝试使用无效的 JSON 参数调用 {{toolName}}。正在重试...", + "invalidJsonArgument": "Zoo 尝试使用无效的 JSON 参数调用 {{toolName}}。正在重试...", "refresh_after_disable": "禁用后刷新 MCP 连接失败", "refresh_after_enable": "启用后刷新 MCP 连接失败", "disconnect_servers_partial": "断开 {{count}} 个 MCP 服务器失败。请查看输出了解详情。", diff --git a/src/i18n/locales/zh-CN/tools.json b/src/i18n/locales/zh-CN/tools.json index 886706ff85f..9a16e15ac5d 100644 --- a/src/i18n/locales/zh-CN/tools.json +++ b/src/i18n/locales/zh-CN/tools.json @@ -6,8 +6,8 @@ "imageTooLarge": "图片文件过大 ({{size}} MB)。允许的最大大小为 {{max}} MB。", "imageWithSize": "图片文件 ({{size}} KB)" }, - "toolRepetitionLimitReached": "Roo 似乎陷入循环,反复尝试同一操作 ({{toolName}})。这可能表明当前策略存在问题。请考虑重新描述任务、提供更具体的指示或引导其尝试不同的方法。", - "unknownToolError": "Roo 尝试使用未知工具:\"{{toolName}}\"。正在重试...", + "toolRepetitionLimitReached": "Zoo 似乎陷入循环,反复尝试同一操作 ({{toolName}})。这可能表明当前策略存在问题。请考虑重新描述任务、提供更具体的指示或引导其尝试不同的方法。", + "unknownToolError": "Zoo 尝试使用未知工具:\"{{toolName}}\"。正在重试...", "codebaseSearch": { "approval": "正在搜索代码库中的 '{{query}}'..." }, @@ -25,7 +25,7 @@ "invalidImageFormat": "收到的图像格式无效", "unknownError": "发生未知错误", "roo": { - "authRequired": "图像生成需要 Roo Code Cloud 认证。请登录 Roo Code Cloud。" + "authRequired": "图像生成需要 Zoo Code Cloud 认证。请登录 Zoo Code Cloud。" } } } diff --git a/src/i18n/locales/zh-TW/common.json b/src/i18n/locales/zh-TW/common.json index be4a76fc5b9..c8371e67e6f 100644 --- a/src/i18n/locales/zh-TW/common.json +++ b/src/i18n/locales/zh-TW/common.json @@ -1,6 +1,6 @@ { "extension": { - "name": "Roo Code", + "name": "Zoo Code", "description": "您編輯器中的完整 AI 開發團隊。" }, "number_format": { @@ -111,7 +111,8 @@ "thinking_complete_recitation": "(思考完成,但由於引用檢查輸出被阻止。)" }, "roo": { - "authenticationRequired": "Roo 提供者需要雲端認證。請登入 Roo Code Cloud。" + "authenticationRequired": "Zoo 提供者需要雲端認證。請登入 Zoo Code Cloud。", + "routerRemoved": "Roo Code Router 已被移除。請選擇並設定其他提供者。" }, "api": { "invalidKeyInvalidChars": "API 金鑰包含無效字元。", @@ -145,7 +146,7 @@ "warnings": { "no_terminal_content": "沒有選擇終端機內容", "missing_task_files": "此工作的檔案遺失。您想從工作列表中刪除它嗎?", - "auto_import_failed": "自動匯入 RooCode 設定失敗:{{error}}" + "auto_import_failed": "自動匯入 ZooCode 設定失敗:{{error}}" }, "info": { "no_changes": "沒有找到更改。", @@ -154,14 +155,17 @@ "custom_storage_path_set": "自訂儲存路徑已設定:{{path}}", "default_storage_path": "已恢復使用預設儲存路徑", "settings_imported": "設定已成功匯入。", - "auto_import_success": "已自動匯入 RooCode 設定:{{filename}}", + "auto_import_success": "已自動匯入 ZooCode 設定:{{filename}}", "share_link_copied": "分享連結已複製到剪貼簿", "image_copied_to_clipboard": "圖片資料 URI 已複製到剪貼簿", "image_saved": "圖片已儲存至 {{path}}", "organization_share_link_copied": "組織分享連結已複製到剪貼簿!", "public_share_link_copied": "公開分享連結已複製到剪貼簿!", "mode_exported": "模式 '{{mode}}' 已成功匯出", - "mode_imported": "模式已成功匯入" + "mode_imported": "模式已成功匯入", + "roo": { + "signInUnavailable": "Roo Code Cloud 登入目前無法使用。請設定其他提供者以繼續。" + } }, "answers": { "yes": "是", @@ -187,12 +191,12 @@ }, "storage": { "prompt_custom_path": "輸入自訂會話歷史儲存路徑,留空以使用預設位置", - "path_placeholder": "D:\\RooCodeStorage", - "enter_absolute_path": "請輸入絕對路徑(例如 D:\\RooCodeStorage 或 /home/user/storage)", + "path_placeholder": "D:\\ZooCodeStorage", + "enter_absolute_path": "請輸入絕對路徑(例如 D:\\ZooCodeStorage 或 /home/user/storage)", "enter_valid_path": "請輸入有效的路徑" }, "input": { - "task_prompt": "讓 Roo 做什麼?", + "task_prompt": "讓 Zoo 做什麼?", "task_placeholder": "在這裡輸入工作" }, "settings": { @@ -222,8 +226,8 @@ }, "mdm": { "errors": { - "cloud_auth_required": "您的組織需要 Roo Code Cloud 身份驗證。請登入以繼續。", - "organization_mismatch": "您必須使用組織的 Roo Code Cloud 帳戶進行身份驗證。", + "cloud_auth_required": "您的組織需要 Zoo Code Cloud 身份驗證。請登入以繼續。", + "organization_mismatch": "您必須使用組織的 Zoo Code Cloud 帳戶進行身份驗證。", "manual_url_empty": "請輸入有效的回呼 URL", "manual_url_no_query": "無效的回呼 URL:缺少查詢參數", "manual_url_missing_params": "無效的回呼 URL:缺少必要參數(code 和 state)", diff --git a/src/i18n/locales/zh-TW/mcp.json b/src/i18n/locales/zh-TW/mcp.json index 945f09fc0cc..09057ee18bf 100644 --- a/src/i18n/locales/zh-TW/mcp.json +++ b/src/i18n/locales/zh-TW/mcp.json @@ -5,7 +5,7 @@ "invalid_settings_validation": "MCP 設定格式無效:{{errorMessages}}", "create_json": "建立或開啟 .roo/mcp.json 失敗:{{error}}", "failed_update_project": "更新專案 MCP 伺服器失敗", - "invalidJsonArgument": "Roo 嘗試使用無效的 JSON 參數呼叫 {{toolName}}。正在重試...", + "invalidJsonArgument": "Zoo 嘗試使用無效的 JSON 參數呼叫 {{toolName}}。正在重試...", "refresh_after_disable": "停用後重新整理 MCP 連線失敗", "refresh_after_enable": "啟用後重新整理 MCP 連線失敗", "disconnect_servers_partial": "斷開 {{count}} 個 MCP 伺服器失敗。請查看輸出了解詳情。", diff --git a/src/i18n/locales/zh-TW/tools.json b/src/i18n/locales/zh-TW/tools.json index ebd0f104ad1..0d35605211b 100644 --- a/src/i18n/locales/zh-TW/tools.json +++ b/src/i18n/locales/zh-TW/tools.json @@ -6,8 +6,8 @@ "imageTooLarge": "圖片檔案過大 ({{size}} MB)。允許的最大大小為 {{max}} MB。", "imageWithSize": "圖片檔案 ({{size}} KB)" }, - "toolRepetitionLimitReached": "Roo 似乎陷入循環,反覆嘗試同一操作 ({{toolName}})。這可能表明目前策略存在問題。請考慮重新描述工作、提供更具體的指示或引導其嘗試不同的方法。", - "unknownToolError": "Roo 嘗試使用未知工具:「{{toolName}}」。正在重試...", + "toolRepetitionLimitReached": "Zoo 似乎陷入循環,反覆嘗試同一操作 ({{toolName}})。這可能表明目前策略存在問題。請考慮重新描述工作、提供更具體的指示或引導其嘗試不同的方法。", + "unknownToolError": "Zoo 嘗試使用未知工具:「{{toolName}}」。正在重試...", "codebaseSearch": { "approval": "正在搜尋程式碼庫中的「{{query}}」..." }, @@ -25,7 +25,7 @@ "invalidImageFormat": "收到的圖像格式無效", "unknownError": "發生未知錯誤", "roo": { - "authRequired": "圖像生成需要 Roo Code Cloud 認證。請登入 Roo Code Cloud。" + "authRequired": "圖像生成需要 Zoo Code Cloud 認證。請登入 Zoo Code Cloud。" } } } diff --git a/src/package.json b/src/package.json index cb3b93d1602..359ba3bdcce 100644 --- a/src/package.json +++ b/src/package.json @@ -90,11 +90,6 @@ "title": "%command.openInEditor.title%", "icon": "$(link-external)" }, - { - "command": "roo-cline.cloudButtonClicked", - "title": "%command.cloud.title%", - "icon": "$(cloud)" - }, { "command": "roo-cline.settingsButtonClicked", "title": "%command.settings.title%", @@ -223,14 +218,9 @@ "group": "navigation@2", "when": "view == roo-cline.SidebarProvider" }, - { - "command": "roo-cline.cloudButtonClicked", - "group": "navigation@3", - "when": "view == roo-cline.SidebarProvider" - }, { "command": "roo-cline.marketplaceButtonClicked", - "group": "navigation@4", + "group": "navigation@3", "when": "view == roo-cline.SidebarProvider" }, { @@ -255,14 +245,9 @@ "group": "navigation@2", "when": "activeWebviewPanelId == roo-cline.TabPanelProvider" }, - { - "command": "roo-cline.cloudButtonClicked", - "group": "navigation@3", - "when": "activeWebviewPanelId == roo-cline.TabPanelProvider" - }, { "command": "roo-cline.marketplaceButtonClicked", - "group": "navigation@4", + "group": "navigation@3", "when": "activeWebviewPanelId == roo-cline.TabPanelProvider" }, { diff --git a/src/package.nls.ca.json b/src/package.nls.ca.json index 2781ed169cf..a809b001e8c 100644 --- a/src/package.nls.ca.json +++ b/src/package.nls.ca.json @@ -1,5 +1,5 @@ { - "extension.displayName": "Roo Code", + "extension.displayName": "Zoo Code", "extension.description": "Un equip complet de desenvolupament d'agents d'IA al teu editor.", "command.newTask.title": "Nova Tasca", "command.explainCode.title": "Explicar Codi", @@ -15,17 +15,16 @@ "command.terminal.explainCommand.title": "Explicar Aquesta Ordre", "command.acceptInput.title": "Acceptar Entrada/Suggeriment", "command.toggleAutoApprove.title": "Alternar Auto-Aprovació", - "views.activitybar.title": "Roo Code", - "views.contextMenu.label": "Roo Code", - "views.terminalMenu.label": "Roo Code", - "views.sidebar.name": "Roo Code", + "views.activitybar.title": "Zoo Code", + "views.contextMenu.label": "Zoo Code", + "views.terminalMenu.label": "Zoo Code", + "views.sidebar.name": "Zoo Code", "command.history.title": "Historial de Tasques", "command.marketplace.title": "Mercat", "command.openInEditor.title": "Obrir a l'Editor", - "command.cloud.title": "Cloud", "command.settings.title": "Configuració", "command.documentation.title": "Documentació", - "configuration.title": "Roo Code", + "configuration.title": "Zoo Code", "commands.allowedCommands.description": "Ordres que es poden executar automàticament quan 'Aprova sempre les operacions d'execució' està activat", "commands.deniedCommands.description": "Prefixos d'ordres que seran automàticament denegats sense demanar aprovació. En cas de conflictes amb ordres permeses, la coincidència de prefix més llarga té prioritat. Afegeix * per denegar totes les ordres.", "commands.commandExecutionTimeout.description": "Temps màxim en segons per esperar que l'execució de l'ordre es completi abans d'esgotar el temps (0 = sense temps límit, 1-600s, per defecte: 0s)", @@ -34,9 +33,9 @@ "settings.vsCodeLmModelSelector.description": "Configuració per a l'API del model de llenguatge VSCode", "settings.vsCodeLmModelSelector.vendor.description": "El proveïdor del model de llenguatge (p. ex. copilot)", "settings.vsCodeLmModelSelector.family.description": "La família del model de llenguatge (p. ex. gpt-4)", - "settings.customStoragePath.description": "Ruta d'emmagatzematge personalitzada. Deixeu-la buida per utilitzar la ubicació predeterminada. Admet rutes absolutes (p. ex. 'D:\\RooCodeStorage')", - "settings.enableCodeActions.description": "Habilitar correccions ràpides de Roo Code.", - "settings.autoImportSettingsPath.description": "Ruta a un fitxer de configuració de RooCode per importar automàticament en iniciar l'extensió. Admet rutes absolutes i rutes relatives al directori d'inici (per exemple, '~/Documents/roo-code-settings.json'). Deixeu-ho en blanc per desactivar la importació automàtica.", + "settings.customStoragePath.description": "Ruta d'emmagatzematge personalitzada. Deixeu-la buida per utilitzar la ubicació predeterminada. Admet rutes absolutes (p. ex. 'D:\\ZooCodeStorage')", + "settings.enableCodeActions.description": "Habilitar correccions ràpides de Zoo Code.", + "settings.autoImportSettingsPath.description": "Ruta a un fitxer de configuració de ZooCode per importar automàticament en iniciar l'extensió. Admet rutes absolutes i rutes relatives al directori d'inici (per exemple, '~/Documents/roo-code-settings.json'). Deixeu-ho en blanc per desactivar la importació automàtica.", "settings.maximumIndexedFilesForFileSearch.description": "Nombre màxim de fitxers per indexar per a la funció de cerca de fitxers @. Valors més alts proporcionen millors resultats de cerca en projectes grans però poden utilitzar més memòria. Per defecte: 10.000.", "settings.useAgentRules.description": "Activa la càrrega de fitxers AGENTS.md per a regles específiques de l'agent (vegeu https://agent-rules.org/)", "settings.apiRequestTimeout.description": "Temps màxim en segons per esperar les respostes de l'API (0 = sense temps d'espera, 1-3600s, per defecte: 600s). Es recomanen valors més alts per a proveïdors locals com LM Studio i Ollama que poden necessitar més temps de processament.", diff --git a/src/package.nls.de.json b/src/package.nls.de.json index a77a253ef06..c847db0b722 100644 --- a/src/package.nls.de.json +++ b/src/package.nls.de.json @@ -1,5 +1,5 @@ { - "extension.displayName": "Roo Code", + "extension.displayName": "Zoo Code", "extension.description": "Ein komplettes KI-Agenten-Entwicklungsteam in deinem Editor.", "command.newTask.title": "Neue Aufgabe", "command.explainCode.title": "Code Erklären", @@ -15,17 +15,16 @@ "command.terminal.explainCommand.title": "Diesen Befehl Erklären", "command.acceptInput.title": "Eingabe/Vorschlag Akzeptieren", "command.toggleAutoApprove.title": "Auto-Genehmigung Umschalten", - "views.activitybar.title": "Roo Code", - "views.contextMenu.label": "Roo Code", - "views.terminalMenu.label": "Roo Code", - "views.sidebar.name": "Roo Code", + "views.activitybar.title": "Zoo Code", + "views.contextMenu.label": "Zoo Code", + "views.terminalMenu.label": "Zoo Code", + "views.sidebar.name": "Zoo Code", "command.history.title": "Aufgabenverlauf", "command.marketplace.title": "Marktplatz", "command.openInEditor.title": "Im Editor Öffnen", - "command.cloud.title": "Cloud", "command.settings.title": "Einstellungen", "command.documentation.title": "Dokumentation", - "configuration.title": "Roo Code", + "configuration.title": "Zoo Code", "commands.allowedCommands.description": "Befehle, die automatisch ausgeführt werden können, wenn 'Ausführungsoperationen immer genehmigen' aktiviert ist", "commands.deniedCommands.description": "Befehlspräfixe, die automatisch abgelehnt werden, ohne nach Genehmigung zu fragen. Bei Konflikten mit erlaubten Befehlen hat die längste Präfix-Übereinstimmung Vorrang. Füge * hinzu, um alle Befehle abzulehnen.", "commands.commandExecutionTimeout.description": "Maximale Zeit in Sekunden, die auf den Abschluss der Befehlsausführung gewartet wird, bevor ein Timeout auftritt (0 = kein Timeout, 1-600s, Standard: 0s)", @@ -34,9 +33,9 @@ "settings.vsCodeLmModelSelector.description": "Einstellungen für die VSCode-Sprachmodell-API", "settings.vsCodeLmModelSelector.vendor.description": "Der Anbieter des Sprachmodells (z.B. copilot)", "settings.vsCodeLmModelSelector.family.description": "Die Familie des Sprachmodells (z.B. gpt-4)", - "settings.customStoragePath.description": "Benutzerdefinierter Speicherpfad. Leer lassen, um den Standardspeicherort zu verwenden. Unterstützt absolute Pfade (z.B. 'D:\\RooCodeStorage')", - "settings.enableCodeActions.description": "Roo Code Schnelle Problembehebung aktivieren.", - "settings.autoImportSettingsPath.description": "Pfad zu einer RooCode-Konfigurationsdatei, die beim Start der Erweiterung automatisch importiert wird. Unterstützt absolute Pfade und Pfade relativ zum Home-Verzeichnis (z.B. '~/Documents/roo-code-settings.json'). Leer lassen, um den automatischen Import zu deaktivieren.", + "settings.customStoragePath.description": "Benutzerdefinierter Speicherpfad. Leer lassen, um den Standardspeicherort zu verwenden. Unterstützt absolute Pfade (z.B. 'D:\\ZooCodeStorage')", + "settings.enableCodeActions.description": "Zoo Code Schnelle Problembehebung aktivieren.", + "settings.autoImportSettingsPath.description": "Pfad zu einer ZooCode-Konfigurationsdatei, die beim Start der Erweiterung automatisch importiert wird. Unterstützt absolute Pfade und Pfade relativ zum Home-Verzeichnis (z.B. '~/Documents/roo-code-settings.json'). Leer lassen, um den automatischen Import zu deaktivieren.", "settings.maximumIndexedFilesForFileSearch.description": "Maximale Anzahl der zu indizierenden Dateien für die @-Dateisuchfunktion. Höhere Werte bieten bessere Suchergebnisse in großen Projekten, können aber mehr Speicher verbrauchen. Standard: 10.000.", "settings.useAgentRules.description": "Aktiviert das Laden von AGENTS.md-Dateien für agentenspezifische Regeln (siehe https://agent-rules.org/)", "settings.apiRequestTimeout.description": "Maximale Wartezeit in Sekunden auf API-Antworten (0 = kein Timeout, 1-3600s, Standard: 600s). Höhere Werte werden für lokale Anbieter wie LM Studio und Ollama empfohlen, die möglicherweise mehr Verarbeitungszeit benötigen.", diff --git a/src/package.nls.es.json b/src/package.nls.es.json index a1c729080e2..056b6799333 100644 --- a/src/package.nls.es.json +++ b/src/package.nls.es.json @@ -1,5 +1,5 @@ { - "extension.displayName": "Roo Code", + "extension.displayName": "Zoo Code", "extension.description": "Un equipo completo de desarrollo de agentes de IA en tu editor.", "command.newTask.title": "Nueva Tarea", "command.explainCode.title": "Explicar Código", @@ -15,17 +15,16 @@ "command.terminal.explainCommand.title": "Explicar Este Comando", "command.acceptInput.title": "Aceptar Entrada/Sugerencia", "command.toggleAutoApprove.title": "Alternar Auto-Aprobación", - "views.activitybar.title": "Roo Code", - "views.contextMenu.label": "Roo Code", - "views.terminalMenu.label": "Roo Code", - "views.sidebar.name": "Roo Code", + "views.activitybar.title": "Zoo Code", + "views.contextMenu.label": "Zoo Code", + "views.terminalMenu.label": "Zoo Code", + "views.sidebar.name": "Zoo Code", "command.history.title": "Historial de Tareas", "command.marketplace.title": "Mercado", "command.openInEditor.title": "Abrir en Editor", - "command.cloud.title": "Cloud", "command.settings.title": "Configuración", "command.documentation.title": "Documentación", - "configuration.title": "Roo Code", + "configuration.title": "Zoo Code", "commands.allowedCommands.description": "Comandos que pueden ejecutarse automáticamente cuando 'Aprobar siempre operaciones de ejecución' está activado", "commands.deniedCommands.description": "Prefijos de comandos que serán automáticamente denegados sin solicitar aprobación. En caso de conflictos con comandos permitidos, la coincidencia de prefijo más larga tiene prioridad. Añade * para denegar todos los comandos.", "commands.commandExecutionTimeout.description": "Tiempo máximo en segundos para esperar que se complete la ejecución del comando antes de que expire (0 = sin tiempo límite, 1-600s, predeterminado: 0s)", @@ -34,9 +33,9 @@ "settings.vsCodeLmModelSelector.description": "Configuración para la API del modelo de lenguaje VSCode", "settings.vsCodeLmModelSelector.vendor.description": "El proveedor del modelo de lenguaje (ej. copilot)", "settings.vsCodeLmModelSelector.family.description": "La familia del modelo de lenguaje (ej. gpt-4)", - "settings.customStoragePath.description": "Ruta de almacenamiento personalizada. Dejar vacío para usar la ubicación predeterminada. Admite rutas absolutas (ej. 'D:\\RooCodeStorage')", - "settings.enableCodeActions.description": "Habilitar correcciones rápidas de Roo Code.", - "settings.autoImportSettingsPath.description": "Ruta a un archivo de configuración de RooCode para importar automáticamente al iniciar la extensión. Admite rutas absolutas y rutas relativas al directorio de inicio (por ejemplo, '~/Documents/roo-code-settings.json'). Dejar vacío para desactivar la importación automática.", + "settings.customStoragePath.description": "Ruta de almacenamiento personalizada. Dejar vacío para usar la ubicación predeterminada. Admite rutas absolutas (ej. 'D:\\ZooCodeStorage')", + "settings.enableCodeActions.description": "Habilitar correcciones rápidas de Zoo Code.", + "settings.autoImportSettingsPath.description": "Ruta a un archivo de configuración de ZooCode para importar automáticamente al iniciar la extensión. Admite rutas absolutas y rutas relativas al directorio de inicio (por ejemplo, '~/Documents/roo-code-settings.json'). Dejar vacío para desactivar la importación automática.", "settings.maximumIndexedFilesForFileSearch.description": "Número máximo de archivos a indexar para la función de búsqueda de archivos @. Valores más altos proporcionan mejores resultados de búsqueda en proyectos grandes pero pueden usar más memoria. Por defecto: 10.000.", "settings.useAgentRules.description": "Habilita la carga de archivos AGENTS.md para reglas específicas del agente (ver https://agent-rules.org/)", "settings.apiRequestTimeout.description": "Tiempo máximo en segundos de espera para las respuestas de la API (0 = sin tiempo de espera, 1-3600s, por defecto: 600s). Se recomiendan valores más altos para proveedores locales como LM Studio y Ollama que puedan necesitar más tiempo de procesamiento.", diff --git a/src/package.nls.fr.json b/src/package.nls.fr.json index 2d009c0038d..bfb5cfec774 100644 --- a/src/package.nls.fr.json +++ b/src/package.nls.fr.json @@ -1,5 +1,5 @@ { - "extension.displayName": "Roo Code", + "extension.displayName": "Zoo Code", "extension.description": "Une équipe complète de développement d'agents IA dans votre éditeur.", "command.newTask.title": "Nouvelle Tâche", "command.explainCode.title": "Expliquer le Code", @@ -15,17 +15,16 @@ "command.terminal.explainCommand.title": "Expliquer cette Commande", "command.acceptInput.title": "Accepter l'Entrée/Suggestion", "command.toggleAutoApprove.title": "Basculer Auto-Approbation", - "views.activitybar.title": "Roo Code", - "views.contextMenu.label": "Roo Code", - "views.terminalMenu.label": "Roo Code", - "views.sidebar.name": "Roo Code", + "views.activitybar.title": "Zoo Code", + "views.contextMenu.label": "Zoo Code", + "views.terminalMenu.label": "Zoo Code", + "views.sidebar.name": "Zoo Code", "command.history.title": "Historique des Tâches", "command.marketplace.title": "Marché", "command.openInEditor.title": "Ouvrir dans l'Éditeur", - "command.cloud.title": "Cloud", "command.settings.title": "Paramètres", "command.documentation.title": "Documentation", - "configuration.title": "Roo Code", + "configuration.title": "Zoo Code", "commands.allowedCommands.description": "Commandes pouvant être exécutées automatiquement lorsque 'Toujours approuver les opérations d'exécution' est activé", "commands.deniedCommands.description": "Préfixes de commandes qui seront automatiquement refusés sans demander d'approbation. En cas de conflit avec les commandes autorisées, la correspondance de préfixe la plus longue a la priorité. Ajouter * pour refuser toutes les commandes.", "commands.commandExecutionTimeout.description": "Temps maximum en secondes pour attendre que l'exécution de la commande se termine avant expiration (0 = pas de délai, 1-600s, défaut : 0s)", @@ -34,9 +33,9 @@ "settings.vsCodeLmModelSelector.description": "Paramètres pour l'API du modèle de langage VSCode", "settings.vsCodeLmModelSelector.vendor.description": "Le fournisseur du modèle de langage (ex: copilot)", "settings.vsCodeLmModelSelector.family.description": "La famille du modèle de langage (ex: gpt-4)", - "settings.customStoragePath.description": "Chemin de stockage personnalisé. Laisser vide pour utiliser l'emplacement par défaut. Prend en charge les chemins absolus (ex: 'D:\\RooCodeStorage')", - "settings.enableCodeActions.description": "Activer les correctifs rapides de Roo Code.", - "settings.autoImportSettingsPath.description": "Chemin d'accès à un fichier de configuration RooCode à importer automatiquement au démarrage de l'extension. Prend en charge les chemins absolus et les chemins relatifs au répertoire de base (par exemple, '~/Documents/roo-code-settings.json'). Laisser vide pour désactiver l'importation automatique.", + "settings.customStoragePath.description": "Chemin de stockage personnalisé. Laisser vide pour utiliser l'emplacement par défaut. Prend en charge les chemins absolus (ex: 'D:\\ZooCodeStorage')", + "settings.enableCodeActions.description": "Activer les correctifs rapides de Zoo Code.", + "settings.autoImportSettingsPath.description": "Chemin d'accès à un fichier de configuration ZooCode à importer automatiquement au démarrage de l'extension. Prend en charge les chemins absolus et les chemins relatifs au répertoire de base (par exemple, '~/Documents/roo-code-settings.json'). Laisser vide pour désactiver l'importation automatique.", "settings.maximumIndexedFilesForFileSearch.description": "Nombre maximum de fichiers à indexer pour la fonctionnalité de recherche de fichiers @. Des valeurs plus élevées offrent de meilleurs résultats de recherche dans les grands projets mais peuvent consommer plus de mémoire. Par défaut : 10 000.", "settings.useAgentRules.description": "Activer le chargement des fichiers AGENTS.md pour les règles spécifiques à l'agent (voir https://agent-rules.org/)", "settings.apiRequestTimeout.description": "Temps maximum en secondes d'attente pour les réponses de l'API (0 = pas de timeout, 1-3600s, par défaut : 600s). Des valeurs plus élevées sont recommandées pour les fournisseurs locaux comme LM Studio et Ollama qui peuvent nécessiter plus de temps de traitement.", diff --git a/src/package.nls.hi.json b/src/package.nls.hi.json index c51f3ee95ee..7bdfb4f62c6 100644 --- a/src/package.nls.hi.json +++ b/src/package.nls.hi.json @@ -1,5 +1,5 @@ { - "extension.displayName": "Roo Code", + "extension.displayName": "Zoo Code", "extension.description": "आपके एडिटर में एआई एजेंट्स की पूरी डेवलपमेंट टीम।", "command.newTask.title": "नया कार्य", "command.explainCode.title": "कोड समझाएं", @@ -15,17 +15,16 @@ "command.terminal.explainCommand.title": "यह कमांड समझाएं", "command.acceptInput.title": "इनपुट/सुझाव स्वीकारें", "command.toggleAutoApprove.title": "ऑटो-अनुमोदन टॉगल करें", - "views.activitybar.title": "Roo Code", - "views.contextMenu.label": "Roo Code", - "views.terminalMenu.label": "Roo Code", - "views.sidebar.name": "Roo Code", + "views.activitybar.title": "Zoo Code", + "views.contextMenu.label": "Zoo Code", + "views.terminalMenu.label": "Zoo Code", + "views.sidebar.name": "Zoo Code", "command.history.title": "कार्य इतिहास", "command.marketplace.title": "मार्केटप्लेस", "command.openInEditor.title": "एडिटर में खोलें", - "command.cloud.title": "Cloud", "command.settings.title": "सेटिंग्स", "command.documentation.title": "दस्तावेज़ीकरण", - "configuration.title": "Roo Code", + "configuration.title": "Zoo Code", "commands.allowedCommands.description": "वे कमांड जो स्वचालित रूप से निष्पादित की जा सकती हैं जब 'हमेशा निष्पादन संचालन को स्वीकृत करें' सक्रिय हो", "commands.deniedCommands.description": "कमांड प्रीफिक्स जो स्वचालित रूप से अस्वीकार कर दिए जाएंगे बिना अनुमोदन मांगे। अनुमतित कमांड के साथ संघर्ष की स्थिति में, सबसे लंबा प्रीफिक्स मैच प्राथमिकता लेता है। सभी कमांड को अस्वीकार करने के लिए * जोड़ें।", "commands.commandExecutionTimeout.description": "कमांड निष्पादन पूरा होने का इंतजार करने के लिए अधिकतम समय सेकंड में, समय समाप्त होने से पहले (0 = कोई समय सीमा नहीं, 1-600s, डिफ़ॉल्ट: 0s)", @@ -34,9 +33,9 @@ "settings.vsCodeLmModelSelector.description": "VSCode भाषा मॉडल API के लिए सेटिंग्स", "settings.vsCodeLmModelSelector.vendor.description": "भाषा मॉडल का विक्रेता (उदा. copilot)", "settings.vsCodeLmModelSelector.family.description": "भाषा मॉडल का परिवार (उदा. gpt-4)", - "settings.customStoragePath.description": "कस्टम स्टोरेज पाथ। डिफ़ॉल्ट स्थान का उपयोग करने के लिए खाली छोड़ें। पूर्ण पथ का समर्थन करता है (उदा. 'D:\\RooCodeStorage')", - "settings.enableCodeActions.description": "Roo Code त्वरित सुधार सक्षम करें", - "settings.autoImportSettingsPath.description": "RooCode कॉन्फ़िगरेशन फ़ाइल का पथ जिसे एक्सटेंशन स्टार्टअप पर स्वचालित रूप से आयात किया जाएगा। होम डायरेक्टरी के सापेक्ष पूर्ण पथ और पथों का समर्थन करता है (उदाहरण के लिए '~/Documents/roo-code-settings.json')। ऑटो-इंपोर्ट को अक्षम करने के लिए खाली छोड़ दें।", + "settings.customStoragePath.description": "कस्टम स्टोरेज पाथ। डिफ़ॉल्ट स्थान का उपयोग करने के लिए खाली छोड़ें। पूर्ण पथ का समर्थन करता है (उदा. 'D:\\ZooCodeStorage')", + "settings.enableCodeActions.description": "Zoo Code त्वरित सुधार सक्षम करें", + "settings.autoImportSettingsPath.description": "ZooCode कॉन्फ़िगरेशन फ़ाइल का पथ जिसे एक्सटेंशन स्टार्टअप पर स्वचालित रूप से आयात किया जाएगा। होम डायरेक्टरी के सापेक्ष पूर्ण पथ और पथों का समर्थन करता है (उदाहरण के लिए '~/Documents/roo-code-settings.json')। ऑटो-इंपोर्ट को अक्षम करने के लिए खाली छोड़ दें।", "settings.maximumIndexedFilesForFileSearch.description": "@ फ़ाइल खोज सुविधा के लिए अनुक्रमित करने के लिए फ़ाइलों की अधिकतम संख्या। उच्च मान बड़ी परियोजनाओं में बेहतर खोज परिणाम प्रदान करते हैं लेकिन अधिक मेमोरी का उपयोग कर सकते हैं। डिफ़ॉल्ट: 10,000।", "settings.useAgentRules.description": "एजेंट-विशिष्ट नियमों के लिए AGENTS.md फ़ाइलों को लोड करना सक्षम करें (देखें https://agent-rules.org/)", "settings.apiRequestTimeout.description": "एपीआई प्रतिक्रियाओं की प्रतीक्षा करने के लिए सेकंड में अधिकतम समय (0 = कोई टाइमआउट नहीं, 1-3600s, डिफ़ॉल्ट: 600s)। एलएम स्टूडियो और ओलामा जैसे स्थानीय प्रदाताओं के लिए उच्च मानों की सिफारिश की जाती है जिन्हें अधिक प्रसंस्करण समय की आवश्यकता हो सकती है।", diff --git a/src/package.nls.id.json b/src/package.nls.id.json index 2a7607f3e7c..3c685429a96 100644 --- a/src/package.nls.id.json +++ b/src/package.nls.id.json @@ -1,15 +1,14 @@ { - "extension.displayName": "Roo Code", + "extension.displayName": "Zoo Code", "extension.description": "Tim pengembang AI lengkap di editor kamu.", - "views.contextMenu.label": "Roo Code", - "views.terminalMenu.label": "Roo Code", - "views.activitybar.title": "Roo Code", - "views.sidebar.name": "Roo Code", + "views.contextMenu.label": "Zoo Code", + "views.terminalMenu.label": "Zoo Code", + "views.activitybar.title": "Zoo Code", + "views.sidebar.name": "Zoo Code", "command.newTask.title": "Tugas Baru", "command.history.title": "Riwayat Tugas", "command.marketplace.title": "Marketplace", "command.openInEditor.title": "Buka di Editor", - "command.cloud.title": "Cloud", "command.settings.title": "Pengaturan", "command.documentation.title": "Dokumentasi", "command.openInNewTab.title": "Buka di Tab Baru", @@ -25,7 +24,7 @@ "command.terminal.explainCommand.title": "Jelaskan Perintah Ini", "command.acceptInput.title": "Terima Input/Saran", "command.toggleAutoApprove.title": "Alihkan Persetujuan Otomatis", - "configuration.title": "Roo Code", + "configuration.title": "Zoo Code", "commands.allowedCommands.description": "Perintah yang dapat dijalankan secara otomatis ketika 'Selalu setujui operasi eksekusi' diaktifkan", "commands.deniedCommands.description": "Awalan perintah yang akan otomatis ditolak tanpa meminta persetujuan. Jika terjadi konflik dengan perintah yang diizinkan, pencocokan awalan terpanjang akan diprioritaskan. Tambahkan * untuk menolak semua perintah.", "commands.commandExecutionTimeout.description": "Waktu maksimum dalam detik untuk menunggu eksekusi perintah selesai sebelum timeout (0 = tanpa timeout, 1-600s, default: 0s)", @@ -34,9 +33,9 @@ "settings.vsCodeLmModelSelector.description": "Pengaturan untuk API Model Bahasa VSCode", "settings.vsCodeLmModelSelector.vendor.description": "Vendor dari model bahasa (misalnya copilot)", "settings.vsCodeLmModelSelector.family.description": "Keluarga dari model bahasa (misalnya gpt-4)", - "settings.customStoragePath.description": "Path penyimpanan kustom. Biarkan kosong untuk menggunakan lokasi default. Mendukung path absolut (misalnya 'D:\\RooCodeStorage')", - "settings.enableCodeActions.description": "Aktifkan perbaikan cepat Roo Code.", - "settings.autoImportSettingsPath.description": "Path ke file konfigurasi RooCode untuk diimpor secara otomatis saat ekstensi dimulai. Mendukung path absolut dan path relatif terhadap direktori home (misalnya '~/Documents/roo-code-settings.json'). Biarkan kosong untuk menonaktifkan impor otomatis.", + "settings.customStoragePath.description": "Path penyimpanan kustom. Biarkan kosong untuk menggunakan lokasi default. Mendukung path absolut (misalnya 'D:\\ZooCodeStorage')", + "settings.enableCodeActions.description": "Aktifkan perbaikan cepat Zoo Code.", + "settings.autoImportSettingsPath.description": "Path ke file konfigurasi ZooCode untuk diimpor secara otomatis saat ekstensi dimulai. Mendukung path absolut dan path relatif terhadap direktori home (misalnya '~/Documents/roo-code-settings.json'). Biarkan kosong untuk menonaktifkan impor otomatis.", "settings.maximumIndexedFilesForFileSearch.description": "Jumlah maksimum file yang akan diindeks untuk fitur pencarian file @. Nilai yang lebih besar memberikan hasil pencarian yang lebih baik di proyek besar tetapi mungkin menggunakan lebih banyak memori. Default: 10.000.", "settings.useAgentRules.description": "Aktifkan pemuatan file AGENTS.md untuk aturan khusus agen (lihat https://agent-rules.org/)", "settings.apiRequestTimeout.description": "Waktu maksimum dalam detik untuk menunggu respons API (0 = tidak ada batas waktu, 1-3600s, default: 600s). Nilai yang lebih tinggi disarankan untuk penyedia lokal seperti LM Studio dan Ollama yang mungkin memerlukan lebih banyak waktu pemrosesan.", diff --git a/src/package.nls.it.json b/src/package.nls.it.json index c94471355d4..69dddaeae5e 100644 --- a/src/package.nls.it.json +++ b/src/package.nls.it.json @@ -1,5 +1,5 @@ { - "extension.displayName": "Roo Code", + "extension.displayName": "Zoo Code", "extension.description": "Un intero team di sviluppo di agenti IA nel tuo editor.", "command.newTask.title": "Nuovo Task", "command.explainCode.title": "Spiega Codice", @@ -15,17 +15,16 @@ "command.terminal.explainCommand.title": "Spiega Questo Comando", "command.acceptInput.title": "Accetta Input/Suggerimento", "command.toggleAutoApprove.title": "Attiva/Disattiva Auto-Approvazione", - "views.activitybar.title": "Roo Code", - "views.contextMenu.label": "Roo Code", - "views.terminalMenu.label": "Roo Code", - "views.sidebar.name": "Roo Code", + "views.activitybar.title": "Zoo Code", + "views.contextMenu.label": "Zoo Code", + "views.terminalMenu.label": "Zoo Code", + "views.sidebar.name": "Zoo Code", "command.history.title": "Cronologia Attività", "command.marketplace.title": "Marketplace", "command.openInEditor.title": "Apri nell'Editor", - "command.cloud.title": "Cloud", "command.settings.title": "Impostazioni", "command.documentation.title": "Documentazione", - "configuration.title": "Roo Code", + "configuration.title": "Zoo Code", "commands.allowedCommands.description": "Comandi che possono essere eseguiti automaticamente quando 'Approva sempre le operazioni di esecuzione' è attivato", "commands.deniedCommands.description": "Prefissi di comandi che verranno automaticamente rifiutati senza richiedere approvazione. In caso di conflitti con comandi consentiti, la corrispondenza del prefisso più lungo ha la precedenza. Aggiungi * per rifiutare tutti i comandi.", "commands.commandExecutionTimeout.description": "Tempo massimo in secondi per attendere il completamento dell'esecuzione del comando prima del timeout (0 = nessun timeout, 1-600s, predefinito: 0s)", @@ -34,9 +33,9 @@ "settings.vsCodeLmModelSelector.description": "Impostazioni per l'API del modello linguistico VSCode", "settings.vsCodeLmModelSelector.vendor.description": "Il fornitore del modello linguistico (es. copilot)", "settings.vsCodeLmModelSelector.family.description": "La famiglia del modello linguistico (es. gpt-4)", - "settings.customStoragePath.description": "Percorso di archiviazione personalizzato. Lasciare vuoto per utilizzare la posizione predefinita. Supporta percorsi assoluti (es. 'D:\\RooCodeStorage')", - "settings.enableCodeActions.description": "Abilita correzioni rapide di Roo Code.", - "settings.autoImportSettingsPath.description": "Percorso di un file di configurazione di RooCode da importare automaticamente all'avvio dell'estensione. Supporta percorsi assoluti e percorsi relativi alla directory home (ad es. '~/Documents/roo-code-settings.json'). Lasciare vuoto per disabilitare l'importazione automatica.", + "settings.customStoragePath.description": "Percorso di archiviazione personalizzato. Lasciare vuoto per utilizzare la posizione predefinita. Supporta percorsi assoluti (es. 'D:\\ZooCodeStorage')", + "settings.enableCodeActions.description": "Abilita correzioni rapide di Zoo Code.", + "settings.autoImportSettingsPath.description": "Percorso di un file di configurazione di ZooCode da importare automaticamente all'avvio dell'estensione. Supporta percorsi assoluti e percorsi relativi alla directory home (ad es. '~/Documents/roo-code-settings.json'). Lasciare vuoto per disabilitare l'importazione automatica.", "settings.maximumIndexedFilesForFileSearch.description": "Numero massimo di file da indicizzare per la funzionalità di ricerca file @. Valori più alti forniscono migliori risultati di ricerca in progetti grandi ma possono consumare più memoria. Predefinito: 10.000.", "settings.useAgentRules.description": "Abilita il caricamento dei file AGENTS.md per regole specifiche dell'agente (vedi https://agent-rules.org/)", "settings.apiRequestTimeout.description": "Tempo massimo in secondi di attesa per le risposte API (0 = nessun timeout, 1-3600s, predefinito: 600s). Valori più alti sono consigliati per provider locali come LM Studio e Ollama che potrebbero richiedere più tempo di elaborazione.", diff --git a/src/package.nls.ja.json b/src/package.nls.ja.json index ff6040d7734..2e6498925ae 100644 --- a/src/package.nls.ja.json +++ b/src/package.nls.ja.json @@ -1,15 +1,14 @@ { - "extension.displayName": "Roo Code", + "extension.displayName": "Zoo Code", "extension.description": "エディタ内のAIエージェントによる開発チーム。", - "views.contextMenu.label": "Roo Code", - "views.terminalMenu.label": "Roo Code", - "views.activitybar.title": "Roo Code", - "views.sidebar.name": "Roo Code", + "views.contextMenu.label": "Zoo Code", + "views.terminalMenu.label": "Zoo Code", + "views.activitybar.title": "Zoo Code", + "views.sidebar.name": "Zoo Code", "command.newTask.title": "新しいタスク", "command.history.title": "タスク履歴", "command.marketplace.title": "マーケットプレイス", "command.openInEditor.title": "エディタで開く", - "command.cloud.title": "Cloud", "command.settings.title": "設定", "command.documentation.title": "ドキュメント", "command.openInNewTab.title": "新しいタブで開く", @@ -25,7 +24,7 @@ "command.terminal.explainCommand.title": "このコマンドを説明", "command.acceptInput.title": "入力/提案を承認", "command.toggleAutoApprove.title": "自動承認を切替", - "configuration.title": "Roo Code", + "configuration.title": "Zoo Code", "commands.allowedCommands.description": "'常に実行操作を承認する'が有効な場合に自動実行できるコマンド", "commands.deniedCommands.description": "承認を求めずに自動的に拒否されるコマンドプレフィックス。許可されたコマンドとの競合がある場合、最長プレフィックスマッチが優先されます。すべてのコマンドを拒否するには * を追加してください。", "commands.commandExecutionTimeout.description": "コマンド実行の完了を待つ最大時間(秒)、タイムアウトまで(0 = タイムアウトなし、1-600秒、デフォルト: 0秒)", @@ -34,9 +33,9 @@ "settings.vsCodeLmModelSelector.description": "VSCode 言語モデル API の設定", "settings.vsCodeLmModelSelector.vendor.description": "言語モデルのベンダー(例:copilot)", "settings.vsCodeLmModelSelector.family.description": "言語モデルのファミリー(例:gpt-4)", - "settings.customStoragePath.description": "カスタムストレージパス。デフォルトの場所を使用する場合は空のままにします。絶対パスをサポートします(例:'D:\\RooCodeStorage')", - "settings.enableCodeActions.description": "Roo Codeのクイック修正を有効にする。", - "settings.autoImportSettingsPath.description": "拡張機能の起動時に自動的にインポートするRooCode設定ファイルへのパス。絶対パスとホームディレクトリからの相対パスをサポートします(例:'~/Documents/roo-code-settings.json')。自動インポートを無効にするには、空のままにします。", + "settings.customStoragePath.description": "カスタムストレージパス。デフォルトの場所を使用する場合は空のままにします。絶対パスをサポートします(例:'D:\\ZooCodeStorage')", + "settings.enableCodeActions.description": "Zoo Codeのクイック修正を有効にする。", + "settings.autoImportSettingsPath.description": "拡張機能の起動時に自動的にインポートするZooCode設定ファイルへのパス。絶対パスとホームディレクトリからの相対パスをサポートします(例:'~/Documents/roo-code-settings.json')。自動インポートを無効にするには、空のままにします。", "settings.maximumIndexedFilesForFileSearch.description": "@ファイル検索機能のためにインデックス化するファイルの最大数。大きな値は大規模プロジェクトでより良い検索結果を提供しますが、より多くのメモリを使用する可能性があります。デフォルト: 10,000。", "settings.useAgentRules.description": "エージェント固有のルールのためにAGENTS.mdファイルの読み込みを有効にします(参照:https://agent-rules.org/)", "settings.apiRequestTimeout.description": "API応答を待機する最大時間(秒)(0 = タイムアウトなし、1-3600秒、デフォルト: 600秒)。LM StudioやOllamaのような、より多くの処理時間を必要とする可能性のあるローカルプロバイダーには、より高い値が推奨されます。", diff --git a/src/package.nls.json b/src/package.nls.json index 177b392f775..23c9b02d92a 100644 --- a/src/package.nls.json +++ b/src/package.nls.json @@ -1,15 +1,14 @@ { - "extension.displayName": "Roo Code", + "extension.displayName": "Zoo Code", "extension.description": "A whole dev team of AI agents in your editor.", - "views.contextMenu.label": "Roo Code", - "views.terminalMenu.label": "Roo Code", - "views.activitybar.title": "Roo Code", - "views.sidebar.name": "Roo Code", + "views.contextMenu.label": "Zoo Code", + "views.terminalMenu.label": "Zoo Code", + "views.activitybar.title": "Zoo Code", + "views.sidebar.name": "Zoo Code", "command.newTask.title": "New Task", "command.history.title": "Task History", "command.marketplace.title": "Marketplace", "command.openInEditor.title": "Open in Editor", - "command.cloud.title": "Cloud", "command.settings.title": "Settings", "command.documentation.title": "Documentation", "command.openInNewTab.title": "Open In New Tab", @@ -25,7 +24,7 @@ "command.terminal.explainCommand.title": "Explain This Command", "command.acceptInput.title": "Accept Input/Suggestion", "command.toggleAutoApprove.title": "Toggle Auto-Approve", - "configuration.title": "Roo Code", + "configuration.title": "Zoo Code", "commands.allowedCommands.description": "Commands that can be auto-executed when 'Always approve execute operations' is enabled", "commands.deniedCommands.description": "Command prefixes that will be automatically denied without asking for approval. In case of conflicts with allowed commands, the longest prefix match takes precedence. Add * to deny all commands.", "commands.commandExecutionTimeout.description": "Maximum time in seconds to wait for command execution to complete before timing out (0 = no timeout, 1-600s, default: 0s)", @@ -34,9 +33,9 @@ "settings.vsCodeLmModelSelector.description": "Settings for VSCode Language Model API", "settings.vsCodeLmModelSelector.vendor.description": "The vendor of the language model (e.g. copilot)", "settings.vsCodeLmModelSelector.family.description": "The family of the language model (e.g. gpt-4)", - "settings.customStoragePath.description": "Custom storage path. Leave empty to use the default location. Supports absolute paths (e.g. 'D:\\RooCodeStorage')", - "settings.enableCodeActions.description": "Enable Roo Code quick fixes", - "settings.autoImportSettingsPath.description": "Path to a RooCode configuration file to automatically import on extension startup. Supports absolute paths and paths relative to the home directory (e.g. '~/Documents/roo-code-settings.json'). Leave empty to disable auto-import.", + "settings.customStoragePath.description": "Custom storage path. Leave empty to use the default location. Supports absolute paths (e.g. 'D:\\ZooCodeStorage')", + "settings.enableCodeActions.description": "Enable Zoo Code quick fixes", + "settings.autoImportSettingsPath.description": "Path to a ZooCode configuration file to automatically import on extension startup. Supports absolute paths and paths relative to the home directory (e.g. '~/Documents/roo-code-settings.json'). Leave empty to disable auto-import.", "settings.maximumIndexedFilesForFileSearch.description": "Maximum number of files to index for the @ file search feature. Higher values provide better search results in large projects but may use more memory. Default: 10,000.", "settings.useAgentRules.description": "Enable loading of AGENTS.md files for agent-specific rules (see https://agent-rules.org/)", "settings.apiRequestTimeout.description": "Maximum time in seconds to wait for API responses (0 = no timeout, 1-3600s, default: 600s). Higher values are recommended for local providers like LM Studio and Ollama that may need more processing time.", diff --git a/src/package.nls.ko.json b/src/package.nls.ko.json index f0912835b8b..9d925f48a6b 100644 --- a/src/package.nls.ko.json +++ b/src/package.nls.ko.json @@ -1,5 +1,5 @@ { - "extension.displayName": "Roo Code", + "extension.displayName": "Zoo Code", "extension.description": "에디터에서 작동하는 AI 에이전트 개발팀.", "command.newTask.title": "새 작업", "command.explainCode.title": "코드 설명", @@ -15,17 +15,16 @@ "command.terminal.explainCommand.title": "이 명령어 설명", "command.acceptInput.title": "입력/제안 수락", "command.toggleAutoApprove.title": "자동 승인 전환", - "views.activitybar.title": "Roo Code", - "views.contextMenu.label": "Roo Code", - "views.terminalMenu.label": "Roo Code", - "views.sidebar.name": "Roo Code", + "views.activitybar.title": "Zoo Code", + "views.contextMenu.label": "Zoo Code", + "views.terminalMenu.label": "Zoo Code", + "views.sidebar.name": "Zoo Code", "command.history.title": "작업 기록", "command.marketplace.title": "마켓플레이스", "command.openInEditor.title": "에디터에서 열기", - "command.cloud.title": "Cloud", "command.settings.title": "설정", "command.documentation.title": "문서", - "configuration.title": "Roo Code", + "configuration.title": "Zoo Code", "commands.allowedCommands.description": "'항상 실행 작업 승인' 이 활성화되어 있을 때 자동으로 실행할 수 있는 명령어", "commands.deniedCommands.description": "승인을 요청하지 않고 자동으로 거부될 명령어 접두사. 허용된 명령어와 충돌하는 경우 가장 긴 접두사 일치가 우선됩니다. 모든 명령어를 거부하려면 *를 추가하세요.", "commands.commandExecutionTimeout.description": "명령어 실행이 완료되기를 기다리는 최대 시간(초), 타임아웃 전까지 (0 = 타임아웃 없음, 1-600초, 기본값: 0초)", @@ -34,9 +33,9 @@ "settings.vsCodeLmModelSelector.description": "VSCode 언어 모델 API 설정", "settings.vsCodeLmModelSelector.vendor.description": "언어 모델 공급자 (예: copilot)", "settings.vsCodeLmModelSelector.family.description": "언어 모델 계열 (예: gpt-4)", - "settings.customStoragePath.description": "사용자 지정 저장소 경로. 기본 위치를 사용하려면 비워두세요. 절대 경로를 지원합니다 (예: 'D:\\RooCodeStorage')", - "settings.enableCodeActions.description": "Roo Code 빠른 수정 사용 설정", - "settings.autoImportSettingsPath.description": "확장 프로그램 시작 시 자동으로 가져올 RooCode 구성 파일의 경로입니다. 절대 경로 및 홈 디렉토리에 대한 상대 경로를 지원합니다(예: '~/Documents/roo-code-settings.json'). 자동 가져오기를 비활성화하려면 비워 둡니다.", + "settings.customStoragePath.description": "사용자 지정 저장소 경로. 기본 위치를 사용하려면 비워두세요. 절대 경로를 지원합니다 (예: 'D:\\ZooCodeStorage')", + "settings.enableCodeActions.description": "Zoo Code 빠른 수정 사용 설정", + "settings.autoImportSettingsPath.description": "확장 프로그램 시작 시 자동으로 가져올 ZooCode 구성 파일의 경로입니다. 절대 경로 및 홈 디렉토리에 대한 상대 경로를 지원합니다(예: '~/Documents/roo-code-settings.json'). 자동 가져오기를 비활성화하려면 비워 둡니다.", "settings.maximumIndexedFilesForFileSearch.description": "@ 파일 검색 기능을 위해 인덱싱할 최대 파일 수입니다. 더 큰 값은 대형 프로젝트에서 더 나은 검색 결과를 제공하지만 더 많은 메모리를 사용할 수 있습니다. 기본값: 10,000.", "settings.useAgentRules.description": "에이전트별 규칙에 대한 AGENTS.md 파일 로드를 활성화합니다 (참조: https://agent-rules.org/)", "settings.apiRequestTimeout.description": "API 응답을 기다리는 최대 시간(초) (0 = 시간 초과 없음, 1-3600초, 기본값: 600초). 더 많은 처리 시간이 필요할 수 있는 LM Studio 및 Ollama와 같은 로컬 공급자에게는 더 높은 값을 사용하는 것이 좋습니다.", diff --git a/src/package.nls.nl.json b/src/package.nls.nl.json index fef3ca7219c..f070f44175a 100644 --- a/src/package.nls.nl.json +++ b/src/package.nls.nl.json @@ -1,15 +1,14 @@ { - "extension.displayName": "Roo Code", + "extension.displayName": "Zoo Code", "extension.description": "Een compleet ontwikkelteam van AI-agents in je editor.", - "views.contextMenu.label": "Roo Code", - "views.terminalMenu.label": "Roo Code", - "views.activitybar.title": "Roo Code", - "views.sidebar.name": "Roo Code", + "views.contextMenu.label": "Zoo Code", + "views.terminalMenu.label": "Zoo Code", + "views.activitybar.title": "Zoo Code", + "views.sidebar.name": "Zoo Code", "command.newTask.title": "Nieuwe Taak", "command.history.title": "Taakgeschiedenis", "command.marketplace.title": "Marktplaats", "command.openInEditor.title": "Openen in Editor", - "command.cloud.title": "Cloud", "command.settings.title": "Instellingen", "command.documentation.title": "Documentatie", "command.openInNewTab.title": "Openen in Nieuw Tabblad", @@ -25,7 +24,7 @@ "command.terminal.explainCommand.title": "Leg Dit Commando Uit", "command.acceptInput.title": "Invoer/Suggestie Accepteren", "command.toggleAutoApprove.title": "Auto-Goedkeuring Schakelen", - "configuration.title": "Roo Code", + "configuration.title": "Zoo Code", "commands.allowedCommands.description": "Commando's die automatisch kunnen worden uitgevoerd wanneer 'Altijd goedkeuren uitvoerbewerkingen' is ingeschakeld", "commands.deniedCommands.description": "Commando-prefixen die automatisch worden geweigerd zonder om goedkeuring te vragen. Bij conflicten met toegestane commando's heeft de langste prefix-match voorrang. Voeg * toe om alle commando's te weigeren.", "commands.commandExecutionTimeout.description": "Maximale tijd in seconden om te wachten tot commando-uitvoering voltooid is voordat er een timeout optreedt (0 = geen timeout, 1-600s, standaard: 0s)", @@ -34,9 +33,9 @@ "settings.vsCodeLmModelSelector.description": "Instellingen voor VSCode Language Model API", "settings.vsCodeLmModelSelector.vendor.description": "De leverancier van het taalmodel (bijv. copilot)", "settings.vsCodeLmModelSelector.family.description": "De familie van het taalmodel (bijv. gpt-4)", - "settings.customStoragePath.description": "Aangepast opslagpad. Laat leeg om de standaardlocatie te gebruiken. Ondersteunt absolute paden (bijv. 'D:\\RooCodeStorage')", - "settings.enableCodeActions.description": "Snelle correcties van Roo Code inschakelen.", - "settings.autoImportSettingsPath.description": "Pad naar een RooCode-configuratiebestand om automatisch te importeren bij het opstarten van de extensie. Ondersteunt absolute paden en paden ten opzichte van de thuismap (bijv. '~/Documents/roo-code-settings.json'). Laat leeg om automatisch importeren uit te schakelen.", + "settings.customStoragePath.description": "Aangepast opslagpad. Laat leeg om de standaardlocatie te gebruiken. Ondersteunt absolute paden (bijv. 'D:\\ZooCodeStorage')", + "settings.enableCodeActions.description": "Snelle correcties van Zoo Code inschakelen.", + "settings.autoImportSettingsPath.description": "Pad naar een ZooCode-configuratiebestand om automatisch te importeren bij het opstarten van de extensie. Ondersteunt absolute paden en paden ten opzichte van de thuismap (bijv. '~/Documents/roo-code-settings.json'). Laat leeg om automatisch importeren uit te schakelen.", "settings.maximumIndexedFilesForFileSearch.description": "Maximaal aantal bestanden om te indexeren voor de @ bestandszoekfunctie. Hogere waarden bieden betere zoekresultaten in grote projecten maar kunnen meer geheugen gebruiken. Standaard: 10.000.", "settings.useAgentRules.description": "Laden van AGENTS.md-bestanden voor agentspecifieke regels inschakelen (zie https://agent-rules.org/)", "settings.apiRequestTimeout.description": "Maximale tijd in seconden om te wachten op API-reacties (0 = geen time-out, 1-3600s, standaard: 600s). Hogere waarden worden aanbevolen voor lokale providers zoals LM Studio en Ollama die mogelijk meer verwerkingstijd nodig hebben.", diff --git a/src/package.nls.pl.json b/src/package.nls.pl.json index 8c1f66450d1..960ae676ab6 100644 --- a/src/package.nls.pl.json +++ b/src/package.nls.pl.json @@ -1,5 +1,5 @@ { - "extension.displayName": "Roo Code", + "extension.displayName": "Zoo Code", "extension.description": "Pełny zespół programistów AI w twoim edytorze.", "command.newTask.title": "Nowe Zadanie", "command.explainCode.title": "Wyjaśnij Kod", @@ -15,17 +15,16 @@ "command.terminal.explainCommand.title": "Wyjaśnij tę Komendę", "command.acceptInput.title": "Akceptuj Wprowadzanie/Sugestię", "command.toggleAutoApprove.title": "Przełącz Auto-Zatwierdzanie", - "views.activitybar.title": "Roo Code", - "views.contextMenu.label": "Roo Code", - "views.terminalMenu.label": "Roo Code", - "views.sidebar.name": "Roo Code", + "views.activitybar.title": "Zoo Code", + "views.contextMenu.label": "Zoo Code", + "views.terminalMenu.label": "Zoo Code", + "views.sidebar.name": "Zoo Code", "command.history.title": "Historia Zadań", "command.marketplace.title": "Marketplace", "command.openInEditor.title": "Otwórz w Edytorze", - "command.cloud.title": "Cloud", "command.settings.title": "Ustawienia", "command.documentation.title": "Dokumentacja", - "configuration.title": "Roo Code", + "configuration.title": "Zoo Code", "commands.allowedCommands.description": "Polecenia, które mogą być wykonywane automatycznie, gdy włączona jest opcja 'Zawsze zatwierdzaj operacje wykonania'", "commands.deniedCommands.description": "Prefiksy poleceń, które będą automatycznie odrzucane bez pytania o zatwierdzenie. W przypadku konfliktów z dozwolonymi poleceniami, najdłuższe dopasowanie prefiksu ma pierwszeństwo. Dodaj * aby odrzucić wszystkie polecenia.", "commands.commandExecutionTimeout.description": "Maksymalny czas w sekundach oczekiwania na zakończenie wykonania polecenia przed przekroczeniem limitu czasu (0 = brak limitu czasu, 1-600s, domyślnie: 0s)", @@ -34,9 +33,9 @@ "settings.vsCodeLmModelSelector.description": "Ustawienia dla API modelu językowego VSCode", "settings.vsCodeLmModelSelector.vendor.description": "Dostawca modelu językowego (np. copilot)", "settings.vsCodeLmModelSelector.family.description": "Rodzina modelu językowego (np. gpt-4)", - "settings.customStoragePath.description": "Niestandardowa ścieżka przechowywania. Pozostaw puste, aby użyć domyślnej lokalizacji. Obsługuje ścieżki bezwzględne (np. 'D:\\RooCodeStorage')", - "settings.enableCodeActions.description": "Włącz szybkie poprawki Roo Code.", - "settings.autoImportSettingsPath.description": "Ścieżka do pliku konfiguracyjnego RooCode, który ma być automatycznie importowany podczas uruchamiania rozszerzenia. Obsługuje ścieżki bezwzględne i ścieżki względne do katalogu domowego (np. '~/Documents/roo-code-settings.json'). Pozostaw puste, aby wyłączyć automatyczne importowanie.", + "settings.customStoragePath.description": "Niestandardowa ścieżka przechowywania. Pozostaw puste, aby użyć domyślnej lokalizacji. Obsługuje ścieżki bezwzględne (np. 'D:\\ZooCodeStorage')", + "settings.enableCodeActions.description": "Włącz szybkie poprawki Zoo Code.", + "settings.autoImportSettingsPath.description": "Ścieżka do pliku konfiguracyjnego ZooCode, który ma być automatycznie importowany podczas uruchamiania rozszerzenia. Obsługuje ścieżki bezwzględne i ścieżki względne do katalogu domowego (np. '~/Documents/roo-code-settings.json'). Pozostaw puste, aby wyłączyć automatyczne importowanie.", "settings.maximumIndexedFilesForFileSearch.description": "Maksymalna liczba plików do indeksowania dla funkcji wyszukiwania plików @. Wyższe wartości zapewniają lepsze wyniki wyszukiwania w dużych projektach, ale mogą zużywać więcej pamięci. Domyślnie: 10 000.", "settings.useAgentRules.description": "Włącz wczytywanie plików AGENTS.md dla reguł specyficznych dla agenta (zobacz https://agent-rules.org/)", "settings.apiRequestTimeout.description": "Maksymalny czas w sekundach oczekiwania na odpowiedzi API (0 = brak limitu czasu, 1-3600s, domyślnie: 600s). Wyższe wartości są zalecane dla lokalnych dostawców, takich jak LM Studio i Ollama, którzy mogą potrzebować więcej czasu na przetwarzanie.", diff --git a/src/package.nls.pt-BR.json b/src/package.nls.pt-BR.json index 84cbf42c097..22913edd24a 100644 --- a/src/package.nls.pt-BR.json +++ b/src/package.nls.pt-BR.json @@ -1,5 +1,5 @@ { - "extension.displayName": "Roo Code", + "extension.displayName": "Zoo Code", "extension.description": "Uma equipe completa de desenvolvimento de agentes de IA no seu editor.", "command.newTask.title": "Nova Tarefa", "command.explainCode.title": "Explicar Código", @@ -15,17 +15,16 @@ "command.terminal.explainCommand.title": "Explicar Este Comando", "command.acceptInput.title": "Aceitar Entrada/Sugestão", "command.toggleAutoApprove.title": "Alternar Auto-Aprovação", - "views.activitybar.title": "Roo Code", - "views.contextMenu.label": "Roo Code", - "views.terminalMenu.label": "Roo Code", - "views.sidebar.name": "Roo Code", + "views.activitybar.title": "Zoo Code", + "views.contextMenu.label": "Zoo Code", + "views.terminalMenu.label": "Zoo Code", + "views.sidebar.name": "Zoo Code", "command.history.title": "Histórico de Tarefas", "command.marketplace.title": "Marketplace", "command.openInEditor.title": "Abrir no Editor", - "command.cloud.title": "Cloud", "command.settings.title": "Configurações", "command.documentation.title": "Documentação", - "configuration.title": "Roo Code", + "configuration.title": "Zoo Code", "commands.allowedCommands.description": "Comandos que podem ser executados automaticamente quando 'Sempre aprovar operações de execução' está ativado", "commands.deniedCommands.description": "Prefixos de comandos que serão automaticamente negados sem solicitar aprovação. Em caso de conflitos com comandos permitidos, a correspondência de prefixo mais longa tem precedência. Adicione * para negar todos os comandos.", "commands.commandExecutionTimeout.description": "Tempo máximo em segundos para aguardar a conclusão da execução do comando antes do timeout (0 = sem timeout, 1-600s, padrão: 0s)", @@ -34,9 +33,9 @@ "settings.vsCodeLmModelSelector.description": "Configurações para a API do modelo de linguagem do VSCode", "settings.vsCodeLmModelSelector.vendor.description": "O fornecedor do modelo de linguagem (ex: copilot)", "settings.vsCodeLmModelSelector.family.description": "A família do modelo de linguagem (ex: gpt-4)", - "settings.customStoragePath.description": "Caminho de armazenamento personalizado. Deixe vazio para usar o local padrão. Suporta caminhos absolutos (ex: 'D:\\RooCodeStorage')", - "settings.enableCodeActions.description": "Habilitar correções rápidas do Roo Code.", - "settings.autoImportSettingsPath.description": "Caminho para um arquivo de configuração do RooCode para importar automaticamente na inicialização da extensão. Suporta caminhos absolutos e caminhos relativos ao diretório inicial (por exemplo, '~/Documents/roo-code-settings.json'). Deixe em branco para desativar a importação automática.", + "settings.customStoragePath.description": "Caminho de armazenamento personalizado. Deixe vazio para usar o local padrão. Suporta caminhos absolutos (ex: 'D:\\ZooCodeStorage')", + "settings.enableCodeActions.description": "Habilitar correções rápidas do Zoo Code.", + "settings.autoImportSettingsPath.description": "Caminho para um arquivo de configuração do ZooCode para importar automaticamente na inicialização da extensão. Suporta caminhos absolutos e caminhos relativos ao diretório inicial (por exemplo, '~/Documents/roo-code-settings.json'). Deixe em branco para desativar a importação automática.", "settings.maximumIndexedFilesForFileSearch.description": "Número máximo de arquivos a indexar para a funcionalidade de busca de arquivos @. Valores maiores fornecem melhores resultados de busca em projetos grandes, mas podem consumir mais memória. Padrão: 10.000.", "settings.useAgentRules.description": "Habilita o carregamento de arquivos AGENTS.md para regras específicas do agente (consulte https://agent-rules.org/)", "settings.apiRequestTimeout.description": "Tempo máximo em segundos de espera pelas respostas da API (0 = sem tempo limite, 1-3600s, padrão: 600s). Valores mais altos são recomendados para provedores locais como LM Studio e Ollama que podem precisar de mais tempo de processamento.", diff --git a/src/package.nls.ru.json b/src/package.nls.ru.json index be8df040323..0c6c2e5dc1a 100644 --- a/src/package.nls.ru.json +++ b/src/package.nls.ru.json @@ -1,15 +1,14 @@ { - "extension.displayName": "Roo Code", + "extension.displayName": "Zoo Code", "extension.description": "Целая команда ИИ-разработчиков в вашем редакторе.", - "views.contextMenu.label": "Roo Code", - "views.terminalMenu.label": "Roo Code", - "views.activitybar.title": "Roo Code", - "views.sidebar.name": "Roo Code", + "views.contextMenu.label": "Zoo Code", + "views.terminalMenu.label": "Zoo Code", + "views.activitybar.title": "Zoo Code", + "views.sidebar.name": "Zoo Code", "command.newTask.title": "Новая задача", "command.history.title": "История задач", "command.marketplace.title": "Маркетплейс", "command.openInEditor.title": "Открыть в редакторе", - "command.cloud.title": "Cloud", "command.settings.title": "Настройки", "command.documentation.title": "Документация", "command.openInNewTab.title": "Открыть в новой вкладке", @@ -25,7 +24,7 @@ "command.terminal.explainCommand.title": "Объяснить эту команду", "command.acceptInput.title": "Принять ввод/предложение", "command.toggleAutoApprove.title": "Переключить Авто-Подтверждение", - "configuration.title": "Roo Code", + "configuration.title": "Zoo Code", "commands.allowedCommands.description": "Команды, которые могут быть автоматически выполнены, когда включена опция 'Всегда подтверждать операции выполнения'", "commands.deniedCommands.description": "Префиксы команд, которые будут автоматически отклонены без запроса подтверждения. В случае конфликтов с разрешенными командами приоритет имеет самое длинное совпадение префикса. Добавьте * чтобы отклонить все команды.", "commands.commandExecutionTimeout.description": "Максимальное время в секундах для ожидания завершения выполнения команды до истечения времени ожидания (0 = без тайм-аута, 1-600с, по умолчанию: 0с)", @@ -34,9 +33,9 @@ "settings.vsCodeLmModelSelector.description": "Настройки для VSCode Language Model API", "settings.vsCodeLmModelSelector.vendor.description": "Поставщик языковой модели (например, copilot)", "settings.vsCodeLmModelSelector.family.description": "Семейство языковой модели (например, gpt-4)", - "settings.customStoragePath.description": "Пользовательский путь хранения. Оставьте пустым для использования пути по умолчанию. Поддерживает абсолютные пути (например, 'D:\\RooCodeStorage')", - "settings.enableCodeActions.description": "Включить быстрые исправления Roo Code.", - "settings.autoImportSettingsPath.description": "Путь к файлу конфигурации RooCode для автоматического импорта при запуске расширения. Поддерживает абсолютные пути и пути относительно домашнего каталога (например, '~/Documents/roo-code-settings.json'). Оставьте пустым, чтобы отключить автоматический импорт.", + "settings.customStoragePath.description": "Пользовательский путь хранения. Оставьте пустым для использования пути по умолчанию. Поддерживает абсолютные пути (например, 'D:\\ZooCodeStorage')", + "settings.enableCodeActions.description": "Включить быстрые исправления Zoo Code.", + "settings.autoImportSettingsPath.description": "Путь к файлу конфигурации ZooCode для автоматического импорта при запуске расширения. Поддерживает абсолютные пути и пути относительно домашнего каталога (например, '~/Documents/roo-code-settings.json'). Оставьте пустым, чтобы отключить автоматический импорт.", "settings.maximumIndexedFilesForFileSearch.description": "Максимальное количество файлов для индексации при поиске файлов @. Большие значения обеспечивают лучшие результаты поиска в крупных проектах, но могут потреблять больше памяти. По умолчанию: 10 000.", "settings.useAgentRules.description": "Включить загрузку файлов AGENTS.md для специфичных для агента правил (см. https://agent-rules.org/)", "settings.apiRequestTimeout.description": "Максимальное время в секундах для ожидания ответов API (0 = нет тайм-аута, 1-3600 с, по умолчанию: 600 с). Рекомендуются более высокие значения для локальных провайдеров, таких как LM Studio и Ollama, которым может потребоваться больше времени на обработку.", diff --git a/src/package.nls.tr.json b/src/package.nls.tr.json index a815188e8aa..6742a15f6ca 100644 --- a/src/package.nls.tr.json +++ b/src/package.nls.tr.json @@ -1,5 +1,5 @@ { - "extension.displayName": "Roo Code", + "extension.displayName": "Zoo Code", "extension.description": "Düzenleyicinde tam bir AI ajanları geliştirme ekibi.", "command.newTask.title": "Yeni Görev", "command.explainCode.title": "Kodu Açıkla", @@ -15,17 +15,16 @@ "command.terminal.explainCommand.title": "Bu Komutu Açıkla", "command.acceptInput.title": "Girişi/Öneriyi Kabul Et", "command.toggleAutoApprove.title": "Otomatik Onayı Değiştir", - "views.activitybar.title": "Roo Code", - "views.contextMenu.label": "Roo Code", - "views.terminalMenu.label": "Roo Code", - "views.sidebar.name": "Roo Code", + "views.activitybar.title": "Zoo Code", + "views.contextMenu.label": "Zoo Code", + "views.terminalMenu.label": "Zoo Code", + "views.sidebar.name": "Zoo Code", "command.history.title": "Görev Geçmişi", "command.marketplace.title": "Marketplace", "command.openInEditor.title": "Düzenleyicide Aç", - "command.cloud.title": "Cloud", "command.settings.title": "Ayarlar", "command.documentation.title": "Dokümantasyon", - "configuration.title": "Roo Code", + "configuration.title": "Zoo Code", "commands.allowedCommands.description": "'Her zaman yürütme işlemlerini onayla' etkinleştirildiğinde otomatik olarak yürütülebilen komutlar", "commands.deniedCommands.description": "Onay istenmeden otomatik olarak reddedilecek komut önekleri. İzin verilen komutlarla çakışma durumunda en uzun önek eşleşmesi öncelik alır. Tüm komutları reddetmek için * ekleyin.", "commands.commandExecutionTimeout.description": "Komut yürütmesinin tamamlanmasını beklemek için maksimum süre (saniye), zaman aşımından önce (0 = zaman aşımı yok, 1-600s, varsayılan: 0s)", @@ -34,9 +33,9 @@ "settings.vsCodeLmModelSelector.description": "VSCode dil modeli API'si için ayarlar", "settings.vsCodeLmModelSelector.vendor.description": "Dil modelinin sağlayıcısı (örn: copilot)", "settings.vsCodeLmModelSelector.family.description": "Dil modelinin ailesi (örn: gpt-4)", - "settings.customStoragePath.description": "Özel depolama yolu. Varsayılan konumu kullanmak için boş bırakın. Mutlak yolları destekler (örn: 'D:\\RooCodeStorage')", - "settings.enableCodeActions.description": "Roo Code hızlı düzeltmeleri etkinleştir.", - "settings.autoImportSettingsPath.description": "Uzantı başlangıcında otomatik olarak içe aktarılacak bir RooCode yapılandırma dosyasının yolu. Mutlak yolları ve ana dizine göreli yolları destekler (ör. '~/Documents/roo-code-settings.json'). Otomatik içe aktarmayı devre dışı bırakmak için boş bırakın.", + "settings.customStoragePath.description": "Özel depolama yolu. Varsayılan konumu kullanmak için boş bırakın. Mutlak yolları destekler (örn: 'D:\\ZooCodeStorage')", + "settings.enableCodeActions.description": "Zoo Code hızlı düzeltmeleri etkinleştir.", + "settings.autoImportSettingsPath.description": "Uzantı başlangıcında otomatik olarak içe aktarılacak bir ZooCode yapılandırma dosyasının yolu. Mutlak yolları ve ana dizine göreli yolları destekler (ör. '~/Documents/roo-code-settings.json'). Otomatik içe aktarmayı devre dışı bırakmak için boş bırakın.", "settings.maximumIndexedFilesForFileSearch.description": "@ dosya arama özelliği için dizinlenecek maksimum dosya sayısı. Daha yüksek değerler büyük projelerde daha iyi arama sonuçları sağlar ancak daha fazla bellek kullanabilir. Varsayılan: 10.000.", "settings.useAgentRules.description": "Aracıya özgü kurallar için AGENTS.md dosyalarının yüklenmesini etkinleştirin (bkz. https://agent-rules.org/)", "settings.apiRequestTimeout.description": "API yanıtları için beklenecek maksimum süre (saniye cinsinden) (0 = zaman aşımı yok, 1-3600s, varsayılan: 600s). LM Studio ve Ollama gibi daha fazla işlem süresi gerektirebilecek yerel sağlayıcılar için daha yüksek değerler önerilir.", diff --git a/src/package.nls.vi.json b/src/package.nls.vi.json index 6052080dfa3..c0a55709a9b 100644 --- a/src/package.nls.vi.json +++ b/src/package.nls.vi.json @@ -1,5 +1,5 @@ { - "extension.displayName": "Roo Code", + "extension.displayName": "Zoo Code", "extension.description": "Một đội ngũ phát triển các tác nhân AI hoàn chỉnh trong trình soạn thảo của bạn.", "command.newTask.title": "Tác Vụ Mới", "command.explainCode.title": "Giải Thích Mã", @@ -15,17 +15,16 @@ "command.terminal.explainCommand.title": "Giải Thích Lệnh Này", "command.acceptInput.title": "Chấp Nhận Đầu Vào/Gợi Ý", "command.toggleAutoApprove.title": "Bật/Tắt Tự Động Phê Duyệt", - "views.activitybar.title": "Roo Code", - "views.contextMenu.label": "Roo Code", - "views.terminalMenu.label": "Roo Code", - "views.sidebar.name": "Roo Code", + "views.activitybar.title": "Zoo Code", + "views.contextMenu.label": "Zoo Code", + "views.terminalMenu.label": "Zoo Code", + "views.sidebar.name": "Zoo Code", "command.history.title": "Lịch Sử Tác Vụ", "command.marketplace.title": "Marketplace", "command.openInEditor.title": "Mở trong Trình Soạn Thảo", - "command.cloud.title": "Cloud", "command.settings.title": "Cài Đặt", "command.documentation.title": "Tài Liệu", - "configuration.title": "Roo Code", + "configuration.title": "Zoo Code", "commands.allowedCommands.description": "Các lệnh có thể được thực thi tự động khi 'Luôn phê duyệt các thao tác thực thi' được bật", "commands.deniedCommands.description": "Các tiền tố lệnh sẽ được tự động từ chối mà không yêu cầu phê duyệt. Trong trường hợp xung đột với các lệnh được phép, việc khớp tiền tố dài nhất sẽ được ưu tiên. Thêm * để từ chối tất cả các lệnh.", "commands.commandExecutionTimeout.description": "Thời gian tối đa tính bằng giây để chờ việc thực thi lệnh hoàn thành trước khi hết thời gian chờ (0 = không có thời gian chờ, 1-600s, mặc định: 0s)", @@ -34,9 +33,9 @@ "settings.vsCodeLmModelSelector.description": "Cài đặt cho API mô hình ngôn ngữ VSCode", "settings.vsCodeLmModelSelector.vendor.description": "Nhà cung cấp mô hình ngôn ngữ (ví dụ: copilot)", "settings.vsCodeLmModelSelector.family.description": "Họ mô hình ngôn ngữ (ví dụ: gpt-4)", - "settings.customStoragePath.description": "Đường dẫn lưu trữ tùy chỉnh. Để trống để sử dụng vị trí mặc định. Hỗ trợ đường dẫn tuyệt đối (ví dụ: 'D:\\RooCodeStorage')", - "settings.enableCodeActions.description": "Bật sửa lỗi nhanh Roo Code.", - "settings.autoImportSettingsPath.description": "Đường dẫn đến tệp cấu hình RooCode để tự động nhập khi khởi động tiện ích mở rộng. Hỗ trợ đường dẫn tuyệt đối và đường dẫn tương đối đến thư mục chính (ví dụ: '~/Documents/roo-code-settings.json'). Để trống để tắt tính năng tự động nhập.", + "settings.customStoragePath.description": "Đường dẫn lưu trữ tùy chỉnh. Để trống để sử dụng vị trí mặc định. Hỗ trợ đường dẫn tuyệt đối (ví dụ: 'D:\\ZooCodeStorage')", + "settings.enableCodeActions.description": "Bật sửa lỗi nhanh Zoo Code.", + "settings.autoImportSettingsPath.description": "Đường dẫn đến tệp cấu hình ZooCode để tự động nhập khi khởi động tiện ích mở rộng. Hỗ trợ đường dẫn tuyệt đối và đường dẫn tương đối đến thư mục chính (ví dụ: '~/Documents/roo-code-settings.json'). Để trống để tắt tính năng tự động nhập.", "settings.maximumIndexedFilesForFileSearch.description": "Số lượng tệp tối đa để lập chỉ mục cho tính năng tìm kiếm tệp @. Giá trị cao hơn cung cấp kết quả tìm kiếm tốt hơn trong các dự án lớn nhưng có thể sử dụng nhiều bộ nhớ hơn. Mặc định: 10.000.", "settings.useAgentRules.description": "Bật tải tệp AGENTS.md cho các quy tắc dành riêng cho tác nhân (xem https://agent-rules.org/)", "settings.apiRequestTimeout.description": "Thời gian tối đa tính bằng giây để đợi phản hồi API (0 = không có thời gian chờ, 1-3600 giây, mặc định: 600 giây). Nên sử dụng các giá trị cao hơn cho các nhà cung cấp cục bộ như LM Studio và Ollama có thể cần thêm thời gian xử lý.", diff --git a/src/package.nls.zh-CN.json b/src/package.nls.zh-CN.json index 9254d494d9b..13ff532046b 100644 --- a/src/package.nls.zh-CN.json +++ b/src/package.nls.zh-CN.json @@ -1,5 +1,5 @@ { - "extension.displayName": "Roo Code", + "extension.displayName": "Zoo Code", "extension.description": "在你的编辑器中提供完整的 AI 代理开发团队。", "command.newTask.title": "新建任务", "command.explainCode.title": "解释代码", @@ -15,17 +15,16 @@ "command.terminal.explainCommand.title": "解释此命令", "command.acceptInput.title": "接受输入/建议", "command.toggleAutoApprove.title": "切换自动批准", - "views.activitybar.title": "Roo Code", - "views.contextMenu.label": "Roo Code", - "views.terminalMenu.label": "Roo Code", - "views.sidebar.name": "Roo Code", + "views.activitybar.title": "Zoo Code", + "views.contextMenu.label": "Zoo Code", + "views.terminalMenu.label": "Zoo Code", + "views.sidebar.name": "Zoo Code", "command.history.title": "任务历史记录", "command.marketplace.title": "应用市场", "command.openInEditor.title": "在编辑器中打开", - "command.cloud.title": "Cloud", "command.settings.title": "设置", "command.documentation.title": "文档", - "configuration.title": "Roo Code", + "configuration.title": "Zoo Code", "commands.allowedCommands.description": "当启用'始终批准执行操作'时可以自动执行的命令", "commands.deniedCommands.description": "将自动拒绝而无需请求批准的命令前缀。与允许命令冲突时,最长前缀匹配优先。添加 * 拒绝所有命令。", "commands.commandExecutionTimeout.description": "等待命令执行完成的最大时间(秒),超时前(0 = 无超时,1-600秒,默认:0秒)", @@ -34,9 +33,9 @@ "settings.vsCodeLmModelSelector.description": "VSCode 语言模型 API 的设置", "settings.vsCodeLmModelSelector.vendor.description": "语言模型的供应商(例如:copilot)", "settings.vsCodeLmModelSelector.family.description": "语言模型的系列(例如:gpt-4)", - "settings.customStoragePath.description": "自定义存储路径。留空以使用默认位置。支持绝对路径(例如:'D:\\RooCodeStorage')", - "settings.enableCodeActions.description": "启用 Roo Code 快速修复", - "settings.autoImportSettingsPath.description": "RooCode 配置文件的路径,用于在扩展启动时自动导入。支持绝对路径和相对于主目录的路径(例如 '~/Documents/roo-code-settings.json')。留空以禁用自动导入。", + "settings.customStoragePath.description": "自定义存储路径。留空以使用默认位置。支持绝对路径(例如:'D:\\ZooCodeStorage')", + "settings.enableCodeActions.description": "启用 Zoo Code 快速修复", + "settings.autoImportSettingsPath.description": "ZooCode 配置文件的路径,用于在扩展启动时自动导入。支持绝对路径和相对于主目录的路径(例如 '~/Documents/roo-code-settings.json')。留空以禁用自动导入。", "settings.maximumIndexedFilesForFileSearch.description": "为 @ 文件搜索功能建立索引时要索引的最大文件数。较大的值在大型项目中提供更好的搜索结果,但可能占用更多内存。默认值:10,000。", "settings.useAgentRules.description": "为特定于代理的规则启用 AGENTS.md 文件的加载(请参阅 https://agent-rules.org/)", "settings.apiRequestTimeout.description": "等待 API 响应的最长时间(秒)(0 = 无超时,1-3600秒,默认值:600秒)。对于像 LM Studio 和 Ollama 这样可能需要更多处理时间的本地提供商,建议使用更高的值。", diff --git a/src/package.nls.zh-TW.json b/src/package.nls.zh-TW.json index a8030d69141..5493375a5ed 100644 --- a/src/package.nls.zh-TW.json +++ b/src/package.nls.zh-TW.json @@ -1,5 +1,5 @@ { - "extension.displayName": "Roo Code", + "extension.displayName": "Zoo Code", "extension.description": "在你的編輯器中提供完整的 AI 代理開發團隊。", "command.newTask.title": "新建任務", "command.explainCode.title": "解釋程式碼", @@ -15,17 +15,16 @@ "command.terminal.explainCommand.title": "解釋此命令", "command.acceptInput.title": "接受輸入/建議", "command.toggleAutoApprove.title": "切換自動批准", - "views.activitybar.title": "Roo Code", - "views.contextMenu.label": "Roo Code", - "views.terminalMenu.label": "Roo Code", - "views.sidebar.name": "Roo Code", + "views.activitybar.title": "Zoo Code", + "views.contextMenu.label": "Zoo Code", + "views.terminalMenu.label": "Zoo Code", + "views.sidebar.name": "Zoo Code", "command.history.title": "工作歷史記錄", "command.marketplace.title": "應用市場", "command.openInEditor.title": "在編輯器中開啟", - "command.cloud.title": "Cloud", "command.settings.title": "設定", "command.documentation.title": "文件", - "configuration.title": "Roo Code", + "configuration.title": "Zoo Code", "commands.allowedCommands.description": "當啟用'始終批准執行操作'時可以自動執行的命令", "commands.deniedCommands.description": "將自動拒絕而無需請求批准的命令前綴。與允許命令衝突時,最長前綴匹配優先。新增 * 拒絕所有命令。", "commands.commandExecutionTimeout.description": "等待命令執行完成的最大時間(秒),逾時前(0 = 無逾時,1-600秒,預設:0秒)", @@ -34,9 +33,9 @@ "settings.vsCodeLmModelSelector.description": "VSCode 語言模型 API 的設定", "settings.vsCodeLmModelSelector.vendor.description": "語言模型供應商(例如:copilot)", "settings.vsCodeLmModelSelector.family.description": "語言模型系列(例如:gpt-4)", - "settings.customStoragePath.description": "自訂儲存路徑。留空以使用預設位置。支援絕對路徑(例如:'D:\\RooCodeStorage')", - "settings.enableCodeActions.description": "啟用 Roo Code 快速修復。", - "settings.autoImportSettingsPath.description": "RooCode 設定檔案的路徑,用於在擴充功能啟動時自動匯入。支援絕對路徑和相對於主目錄的路徑(例如 '~/Documents/roo-code-settings.json')。留空以停用自動匯入。", + "settings.customStoragePath.description": "自訂儲存路徑。留空以使用預設位置。支援絕對路徑(例如:'D:\\ZooCodeStorage')", + "settings.enableCodeActions.description": "啟用 Zoo Code 快速修復。", + "settings.autoImportSettingsPath.description": "ZooCode 設定檔案的路徑,用於在擴充功能啟動時自動匯入。支援絕對路徑和相對於主目錄的路徑(例如 '~/Documents/roo-code-settings.json')。留空以停用自動匯入。", "settings.maximumIndexedFilesForFileSearch.description": "為 @ 檔案搜尋功能建立索引時要索引的最大檔案數。較大的值在大型專案中提供更好的搜尋結果,但可能佔用更多記憶體。預設值:10,000。", "settings.useAgentRules.description": "為特定於代理的規則啟用 AGENTS.md 檔案的載入(請參閱 https://agent-rules.org/)", "settings.apiRequestTimeout.description": "等待 API 回應的最長時間(秒)(0 = 無超時,1-3600秒,預設值:600秒)。對於像 LM Studio 和 Ollama 這樣可能需要更多處理時間的本地提供商,建議使用更高的值。", diff --git a/src/shared/__tests__/checkExistApiConfig.spec.ts b/src/shared/__tests__/checkExistApiConfig.spec.ts index d6dd1db24f3..4ffb394eb23 100644 --- a/src/shared/__tests__/checkExistApiConfig.spec.ts +++ b/src/shared/__tests__/checkExistApiConfig.spec.ts @@ -80,10 +80,10 @@ describe("checkExistKey", () => { expect(checkExistKey(config)).toBe(true) }) - it("should return true for roo provider without API key", () => { + it("should return false for roo provider without API key", () => { const config: ProviderSettings = { apiProvider: "roo", } - expect(checkExistKey(config)).toBe(true) + expect(checkExistKey(config)).toBe(false) }) }) diff --git a/src/shared/checkExistApiConfig.ts b/src/shared/checkExistApiConfig.ts index ccbda63ae02..357144c168a 100644 --- a/src/shared/checkExistApiConfig.ts +++ b/src/shared/checkExistApiConfig.ts @@ -5,8 +5,8 @@ export function checkExistKey(config: ProviderSettings | undefined) { return false } - // Special case for fake-ai, openai-codex, qwen-code, and roo providers which don't need any configuration. - if (config.apiProvider && ["fake-ai", "openai-codex", "qwen-code", "roo"].includes(config.apiProvider)) { + // Special case for fake-ai, openai-codex, and qwen-code providers which don't need any configuration. + if (config.apiProvider && ["fake-ai", "openai-codex", "qwen-code"].includes(config.apiProvider)) { return true } diff --git a/webview-ui/src/App.tsx b/webview-ui/src/App.tsx index cccb0422ca8..f02da9a34ab 100644 --- a/webview-ui/src/App.tsx +++ b/webview-ui/src/App.tsx @@ -19,12 +19,11 @@ import { MarketplaceView } from "./components/marketplace/MarketplaceView" import { CheckpointRestoreDialog } from "./components/chat/CheckpointRestoreDialog" import { DeleteMessageDialog, EditMessageDialog } from "./components/chat/MessageModificationConfirmationDialog" import ErrorBoundary from "./components/ErrorBoundary" -import { CloudView } from "./components/cloud/CloudView" import { useAddNonInteractiveClickListener } from "./components/ui/hooks/useNonInteractiveClick" import { TooltipProvider } from "./components/ui/tooltip" import { STANDARD_TOOLTIP_DELAY } from "./components/ui/standard-tooltip" -type Tab = "settings" | "history" | "chat" | "marketplace" | "cloud" +type Tab = "settings" | "history" | "chat" | "marketplace" interface DeleteMessageDialogState { isOpen: boolean @@ -49,7 +48,6 @@ const tabsByMessageAction: Partial { @@ -60,10 +58,6 @@ const App = () => { telemetrySetting, telemetryKey, machineId, - cloudUserInfo, - cloudIsAuthenticated, - cloudApiUrl, - cloudOrganizations, renderContext, mdmCompliant, } = useExtensionState() @@ -93,9 +87,7 @@ const App = () => { const switchTab = useCallback( (newTab: Tab) => { - // Only check MDM compliance if mdmCompliant is explicitly false (meaning there's an MDM policy and user is non-compliant) - // If mdmCompliant is undefined or true, allow tab switching - if (mdmCompliant === false && newTab !== "cloud") { + if (mdmCompliant === false) { // Notify the user that authentication is required by their organization vscode.postMessage({ type: "showMdmAuthRequiredNotification" }) return @@ -237,14 +229,6 @@ const App = () => { targetTab={currentMarketplaceTab as "mcp" | "mode" | undefined} /> )} - {tab === "cloud" && ( - - )} ({ }, })) -vi.mock("@src/components/cloud/CloudView", () => ({ - CloudView: function CloudView() { - return
Cloud View
- }, -})) - const mockUseExtensionState = vi.fn() // Mock i18next and react-i18next diff --git a/webview-ui/src/components/chat/ChatTextArea.tsx b/webview-ui/src/components/chat/ChatTextArea.tsx index e72c1726f35..44e57ae1a7e 100644 --- a/webview-ui/src/components/chat/ChatTextArea.tsx +++ b/webview-ui/src/components/chat/ChatTextArea.tsx @@ -32,7 +32,6 @@ import { MAX_IMAGES_PER_MESSAGE } from "./ChatView" import ContextMenu from "./ContextMenu" import { IndexingStatusBadge } from "./IndexingStatusBadge" import { usePromptHistory } from "./hooks/usePromptHistory" -import { CloudAccountSwitcher } from "../cloud/CloudAccountSwitcher" interface ChatTextAreaProps { inputValue: string @@ -96,7 +95,6 @@ export const ChatTextArea = forwardRef( taskHistory, clineMessages, commands, - cloudUserInfo, enterBehavior, lockApiConfigAcrossModes, } = useExtensionState() @@ -1322,11 +1320,7 @@ export const ChatTextArea = forwardRef( />
-
+
{isTtsPlaying && (
diff --git a/webview-ui/src/components/chat/ChatView.tsx b/webview-ui/src/components/chat/ChatView.tsx index 7008dbe590d..291e244c216 100644 --- a/webview-ui/src/components/chat/ChatView.tsx +++ b/webview-ui/src/components/chat/ChatView.tsx @@ -2,10 +2,8 @@ import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo import { useDeepCompareEffect, useEvent } from "react-use" import { Virtuoso, type VirtuosoHandle } from "react-virtuoso" import removeMd from "remove-markdown" -import { VSCodeLink } from "@vscode/webview-ui-toolkit/react" import useSound from "use-sound" import { LRUCache } from "lru-cache" -import { Trans } from "react-i18next" import { useDebounceEffect } from "@src/utils/useDebounceEffect" import { appendImages } from "@src/utils/imageUtils" @@ -31,7 +29,6 @@ import { useSelectedModel } from "@src/components/ui/hooks/useSelectedModel" import RooHero from "@src/components/welcome/RooHero" import RooTips from "@src/components/welcome/RooTips" import { StandardTooltip, Button } from "@src/components/ui" -import { CloudUpsellDialog } from "@src/components/cloud/CloudUpsellDialog" import TelemetryBanner from "../common/TelemetryBanner" import VersionIndicator from "../common/VersionIndicator" @@ -46,10 +43,7 @@ import { CheckpointWarning } from "./CheckpointWarning" import { QueuedMessages } from "./QueuedMessages" import { WorktreeSelector } from "./WorktreeSelector" import FileChangesPanel from "./FileChangesPanel" -import DismissibleUpsell from "../common/DismissibleUpsell" -import { useCloudUpsell } from "@src/hooks/useCloudUpsell" import { useScrollLifecycle } from "@src/hooks/useScrollLifecycle" -import { Cloud } from "lucide-react" export interface ChatViewProps { isHidden: boolean @@ -90,7 +84,6 @@ const ChatViewComponent: React.ForwardRefRenderFunction { inputValueRef.current = inputValue @@ -1634,27 +1618,10 @@ const ChatViewComponent: React.ForwardRefRenderFunction
- {/* Show RooTips when authenticated or when user is new */} - {taskHistory.length < 6 && } + {/* Everyone should see their task history if any */} {taskHistory.length > 0 && }
- {/* Logged out users should see a one-time upsell, but not for brand new users */} - {!cloudIsAuthenticated && taskHistory.length >= 6 && ( - } - onClick={() => openUpsell()} - dismissOnClick={false} - className="bg-none mt-6 border-border rounded-xl p-3 !text-base"> - , - }} - /> - - )} )} @@ -1825,7 +1792,6 @@ const ChatViewComponent: React.ForwardRefRenderFunction - ) } diff --git a/webview-ui/src/components/chat/ShareButton.tsx b/webview-ui/src/components/chat/ShareButton.tsx deleted file mode 100644 index 9e7aa4e8f99..00000000000 --- a/webview-ui/src/components/chat/ShareButton.tsx +++ /dev/null @@ -1,233 +0,0 @@ -import { useState, useEffect } from "react" -import { useTranslation } from "react-i18next" -import { Share2Icon } from "lucide-react" - -import { type HistoryItem, type ShareVisibility, TelemetryEventName } from "@roo-code/types" - -import { vscode } from "@/utils/vscode" -import { telemetryClient } from "@/utils/TelemetryClient" -import { useExtensionState } from "@/context/ExtensionStateContext" -import { useCloudUpsell } from "@/hooks/useCloudUpsell" -import { CloudUpsellDialog } from "@/components/cloud/CloudUpsellDialog" -import { - Popover, - PopoverContent, - PopoverTrigger, - Command, - CommandList, - CommandItem, - CommandGroup, - StandardTooltip, -} from "@/components/ui" -import { LucideIconButton } from "./LucideIconButton" - -interface ShareButtonProps { - item?: HistoryItem - disabled?: boolean -} - -export const ShareButton = ({ item, disabled = false }: ShareButtonProps) => { - const [shareDropdownOpen, setShareDropdownOpen] = useState(false) - const [shareSuccess, setShareSuccess] = useState<{ visibility: ShareVisibility; url: string } | null>(null) - const [wasConnectInitiatedFromShare, setWasConnectInitiatedFromShare] = useState(false) - const { t } = useTranslation() - const { cloudUserInfo } = useExtensionState() - - // Use enhanced cloud upsell hook with auto-open on auth success - const { - isOpen: connectModalOpen, - openUpsell, - closeUpsell, - handleConnect, - isAuthenticated: cloudIsAuthenticated, - sharingEnabled, - publicSharingEnabled, - } = useCloudUpsell({ - onAuthSuccess: () => { - // Auto-open share dropdown after successful authentication - setShareDropdownOpen(true) - setWasConnectInitiatedFromShare(false) - }, - }) - - // Auto-open popover when user becomes authenticated after clicking Connect from share button - useEffect(() => { - if (wasConnectInitiatedFromShare && cloudIsAuthenticated) { - setShareDropdownOpen(true) - setWasConnectInitiatedFromShare(false) - } - }, [wasConnectInitiatedFromShare, cloudIsAuthenticated]) - - // Listen for share success messages from the extension - useEffect(() => { - const handleMessage = (event: MessageEvent) => { - const message = event.data - if (message.type === "shareTaskSuccess") { - setShareSuccess({ - visibility: message.visibility, - url: message.text, - }) - // Auto-hide success message and close popover after 5 seconds - setTimeout(() => { - setShareSuccess(null) - setShareDropdownOpen(false) - }, 5000) - } - } - - window.addEventListener("message", handleMessage) - return () => window.removeEventListener("message", handleMessage) - }, []) - - const handleShare = (visibility: ShareVisibility) => { - // Clear any previous success state - setShareSuccess(null) - - // Send telemetry for share action - if (visibility === "organization") { - telemetryClient.capture(TelemetryEventName.SHARE_ORGANIZATION_CLICKED) - } else { - telemetryClient.capture(TelemetryEventName.SHARE_PUBLIC_CLICKED) - } - - vscode.postMessage({ - type: "shareCurrentTask", - visibility, - }) - // Don't close the dropdown immediately - let success message show first - } - - const handleConnectToCloud = () => { - setWasConnectInitiatedFromShare(true) - handleConnect() - setShareDropdownOpen(false) - } - - const handleShareButtonClick = () => { - // Send telemetry for share button click - telemetryClient.capture(TelemetryEventName.SHARE_BUTTON_CLICKED) - - if (!cloudIsAuthenticated) { - // Show modal for unauthenticated users - openUpsell() - telemetryClient.capture(TelemetryEventName.SHARE_CONNECT_TO_CLOUD_CLICKED) - } else { - // Show popover for authenticated users - setShareDropdownOpen(true) - } - } - - // Determine share button state - const getShareButtonState = () => { - if (!cloudIsAuthenticated) { - return { - disabled: false, - title: t("chat:task.share"), - showPopover: false, // We'll show modal instead - } - } else if (!sharingEnabled) { - return { - disabled: true, - title: t("chat:task.sharingDisabledByOrganization"), - showPopover: false, - } - } else { - return { - disabled: false, - title: t("chat:task.share"), - showPopover: true, - } - } - } - - const shareButtonState = getShareButtonState() - - // Don't render if no item ID - if (!item?.id) { - return null - } - - return ( - <> - {shareButtonState.showPopover ? ( - - - - - - - - - {shareSuccess ? ( -
-
- - - {shareSuccess.visibility === "public" - ? t("chat:task.shareSuccessPublic") - : t("chat:task.shareSuccessOrganization")} - -
-
- ) : ( - - - - {cloudUserInfo?.organizationName && ( - handleShare("organization")} - className="cursor-pointer"> -
- -
- - {t("chat:task.shareWithOrganization")} - - - {t("chat:task.shareWithOrganizationDescription")} - -
-
-
- )} - {publicSharingEnabled && ( - handleShare("public")} - className="cursor-pointer"> -
- -
- {t("chat:task.sharePublicly")} - - {t("chat:task.sharePubliclyDescription")} - -
-
-
- )} -
-
-
- )} -
-
- ) : ( - - )} - - {/* Connect to Cloud Modal */} - - - ) -} diff --git a/webview-ui/src/components/chat/TaskActions.tsx b/webview-ui/src/components/chat/TaskActions.tsx index 7646f4bc0ee..283d8d0b67d 100644 --- a/webview-ui/src/components/chat/TaskActions.tsx +++ b/webview-ui/src/components/chat/TaskActions.tsx @@ -8,7 +8,6 @@ import { useCopyToClipboard } from "@/utils/clipboard" import { useExtensionState } from "@/context/ExtensionStateContext" import { DeleteTaskDialog } from "../history/DeleteTaskDialog" -import { ShareButton } from "./ShareButton" import { CopyIcon, CheckIcon, DownloadIcon, Trash2Icon, FileJsonIcon, MessageSquareCodeIcon } from "lucide-react" import { LucideIconButton } from "./LucideIconButton" @@ -62,7 +61,6 @@ export const TaskActions = ({ item, buttonsDisabled }: TaskActionsProps) => { )} )} - {debug && item?.id && ( <> { const { t } = useTranslation() - const { apiConfiguration, currentTaskItem, clineMessages } = useExtensionState() + const { apiConfiguration, currentTaskItem } = useExtensionState() const { id: modelId, info: model } = useSelectedModel(apiConfiguration) const [isTaskExpanded, setIsTaskExpanded] = useState(false) - const [showLongRunningTaskMessage, setShowLongRunningTaskMessage] = useState(false) - const { isOpen, openUpsell, closeUpsell, handleConnect } = useCloudUpsell({ - autoOpenOnAuth: false, - }) - - // Check if the task is complete by looking at the last relevant message (skipping resume messages) - const isTaskComplete = - clineMessages && clineMessages.length > 0 - ? (() => { - const lastRelevantIndex = findLastIndex( - clineMessages, - (m) => !(m.ask === "resume_task" || m.ask === "resume_completed_task"), - ) - return lastRelevantIndex !== -1 - ? clineMessages[lastRelevantIndex]?.ask === "completion_result" - : false - })() - : false - - useEffect(() => { - const timer = setTimeout(() => { - if (currentTaskItem && !isTaskComplete) { - setShowLongRunningTaskMessage(true) - } - }, 120_000) // Show upsell after 2 minutes - - return () => clearTimeout(timer) - }, [currentTaskItem, isTaskComplete]) const textContainerRef = useRef(null) const textRef = useRef(null) @@ -144,15 +112,6 @@ const TaskHeader = ({ )} - {showLongRunningTaskMessage && !isTaskComplete && ( - openUpsell()} - dismissOnClick={false} - variant="banner"> - {t("cloud:upsell.longRunningTask")} - - )}
}
- ) } diff --git a/webview-ui/src/components/chat/__tests__/ChatView.notification-sound.spec.tsx b/webview-ui/src/components/chat/__tests__/ChatView.notification-sound.spec.tsx index 4c4d70f716e..581fb950417 100644 --- a/webview-ui/src/components/chat/__tests__/ChatView.notification-sound.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/ChatView.notification-sound.spec.tsx @@ -77,13 +77,6 @@ vi.mock("../Announcement", () => ({ }, })) -// Mock DismissibleUpsell component -vi.mock("@/components/common/DismissibleUpsell", () => ({ - default: function MockDismissibleUpsell({ children }: { children: React.ReactNode }) { - return
{children}
- }, -})) - // Mock QueuedMessages component vi.mock("../QueuedMessages", () => ({ QueuedMessages: function MockQueuedMessages({ diff --git a/webview-ui/src/components/chat/__tests__/ChatView.preserve-images.spec.tsx b/webview-ui/src/components/chat/__tests__/ChatView.preserve-images.spec.tsx index a167c09c052..23ed8dd35a1 100644 --- a/webview-ui/src/components/chat/__tests__/ChatView.preserve-images.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/ChatView.preserve-images.spec.tsx @@ -72,13 +72,6 @@ vi.mock("../Announcement", () => ({ }, })) -// Mock DismissibleUpsell component -vi.mock("@/components/common/DismissibleUpsell", () => ({ - default: function MockDismissibleUpsell({ children }: { children: React.ReactNode }) { - return
{children}
- }, -})) - // Mock QueuedMessages component vi.mock("../QueuedMessages", () => ({ QueuedMessages: function MockQueuedMessages({ diff --git a/webview-ui/src/components/chat/__tests__/ChatView.scroll-debug-repro.spec.tsx b/webview-ui/src/components/chat/__tests__/ChatView.scroll-debug-repro.spec.tsx index 9ed1a3756e4..ce399ffbd50 100644 --- a/webview-ui/src/components/chat/__tests__/ChatView.scroll-debug-repro.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/ChatView.scroll-debug-repro.spec.tsx @@ -75,15 +75,6 @@ function nullDefaultModule() { vi.mock("@src/utils/vscode", () => ({ vscode: { postMessage: vi.fn() } })) vi.mock("use-sound", () => ({ default: vi.fn().mockImplementation(() => [vi.fn()]) })) -vi.mock("@src/components/cloud/CloudUpsellDialog", () => ({ CloudUpsellDialog: () => null })) -vi.mock("@src/hooks/useCloudUpsell", () => ({ - useCloudUpsell: () => ({ - isOpen: false, - openUpsell: vi.fn(), - closeUpsell: vi.fn(), - handleConnect: vi.fn(), - }), -})) vi.mock("../common/TelemetryBanner", nullDefaultModule) vi.mock("../common/VersionIndicator", nullDefaultModule) diff --git a/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx b/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx index 63e71c9bd1d..3fba140222c 100644 --- a/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx @@ -98,13 +98,6 @@ vi.mock("../Announcement", () => ({ }, })) -// Mock DismissibleUpsell component -vi.mock("@/components/common/DismissibleUpsell", () => ({ - default: function MockDismissibleUpsell({ children }: { children: React.ReactNode }) { - return
{children}
- }, -})) - // Mock QueuedMessages component vi.mock("../QueuedMessages", () => ({ QueuedMessages: function MockQueuedMessages({ @@ -670,50 +663,12 @@ describe("ChatView - Version Indicator Tests", () => { }) }) -describe("ChatView - DismissibleUpsell Display Tests", () => { +describe("ChatView - Welcome Screen Display Tests", () => { beforeEach(() => vi.clearAllMocks()) - it("does not show DismissibleUpsell when user is authenticated to Cloud", () => { - const { queryByTestId } = renderChatView() - - // Hydrate state with user authenticated to cloud - mockPostMessage({ - cloudIsAuthenticated: true, - taskHistory: [ - { id: "1", ts: Date.now() - 3000 }, - { id: "2", ts: Date.now() - 2000 }, - { id: "3", ts: Date.now() - 1000 }, - { id: "4", ts: Date.now() }, - ], - clineMessages: [], // No active task - }) - - // Should not show DismissibleUpsell when authenticated - expect(queryByTestId("dismissible-upsell")).not.toBeInTheDocument() - }) - - it("does not show DismissibleUpsell when user has only run 3 tasks in their history", () => { - const { queryByTestId } = renderChatView() - - // Hydrate state with user not authenticated but only 3 tasks - mockPostMessage({ - cloudIsAuthenticated: false, - taskHistory: [ - { id: "1", ts: Date.now() - 2000 }, - { id: "2", ts: Date.now() - 1000 }, - { id: "3", ts: Date.now() }, - ], - clineMessages: [], // No active task - }) - - // Should not show DismissibleUpsell with less than 4 tasks - expect(queryByTestId("dismissible-upsell")).not.toBeInTheDocument() - }) - - it("shows DismissibleUpsell when user is not authenticated and has run 6 or more tasks", async () => { - const { getByTestId } = renderChatView() + it("shows RooTips on the welcome screen regardless of task history or cloud auth", async () => { + const { getByTestId, queryByTestId } = renderChatView() - // Hydrate state with user not authenticated and 4 tasks mockPostMessage({ cloudIsAuthenticated: false, taskHistory: [ @@ -728,16 +683,15 @@ describe("ChatView - DismissibleUpsell Display Tests", () => { clineMessages: [], // No active task }) - // Wait for component to render and show DismissibleUpsell await waitFor(() => { - expect(getByTestId("dismissible-upsell")).toBeInTheDocument() + expect(getByTestId("roo-tips")).toBeInTheDocument() }) + expect(queryByTestId("dismissible-upsell")).not.toBeInTheDocument() }) - it("does not show DismissibleUpsell when there is an active task (regardless of auth status)", async () => { + it("does not show welcome content when there is an active task", async () => { const { queryByTestId } = renderChatView() - // Hydrate state with active task mockPostMessage({ cloudIsAuthenticated: false, taskHistory: [ @@ -756,55 +710,12 @@ describe("ChatView - DismissibleUpsell Display Tests", () => { ], }) - // Wait for component to render with active task await waitFor(() => { - // Should not show DismissibleUpsell during active task expect(queryByTestId("dismissible-upsell")).not.toBeInTheDocument() - // Should not show RooTips either since the entire welcome screen is hidden during active tasks expect(queryByTestId("roo-tips")).not.toBeInTheDocument() - // Should not show RooHero either since the entire welcome screen is hidden during active tasks expect(queryByTestId("roo-hero")).not.toBeInTheDocument() }) }) - - it("shows RooTips when user is authenticated (instead of DismissibleUpsell)", () => { - const { queryByTestId, getByTestId } = renderChatView() - - // Hydrate state with user authenticated to cloud - mockPostMessage({ - cloudIsAuthenticated: true, - taskHistory: [ - { id: "1", ts: Date.now() - 3000 }, - { id: "2", ts: Date.now() - 2000 }, - { id: "3", ts: Date.now() - 1000 }, - { id: "4", ts: Date.now() }, - ], - clineMessages: [], // No active task - }) - - // Should not show DismissibleUpsell but should show RooTips - expect(queryByTestId("dismissible-upsell")).not.toBeInTheDocument() - expect(getByTestId("roo-tips")).toBeInTheDocument() - }) - - it("shows RooTips when user has fewer than 6 tasks (instead of DismissibleUpsell)", () => { - const { queryByTestId, getByTestId } = renderChatView() - - // Hydrate state with user not authenticated but fewer than 4 tasks - mockPostMessage({ - cloudIsAuthenticated: false, - taskHistory: [ - { id: "1", ts: Date.now() - 2000 }, - { id: "2", ts: Date.now() - 1000 }, - { id: "3", ts: Date.now() }, - ], - clineMessages: [], // No active task - }) - - // Should not show DismissibleUpsell but should show RooTips - expect(queryByTestId("dismissible-upsell")).not.toBeInTheDocument() - expect(getByTestId("roo-tips")).toBeInTheDocument() - }) }) describe("ChatView - Message Queueing Tests", () => { diff --git a/webview-ui/src/components/chat/__tests__/ShareButton.spec.tsx b/webview-ui/src/components/chat/__tests__/ShareButton.spec.tsx deleted file mode 100644 index 7dba74501f7..00000000000 --- a/webview-ui/src/components/chat/__tests__/ShareButton.spec.tsx +++ /dev/null @@ -1,327 +0,0 @@ -import { useTranslation } from "react-i18next" - -import { render, screen, fireEvent, waitFor } from "@/utils/test-utils" -import { vscode } from "@/utils/vscode" - -import { ShareButton } from "../ShareButton" - -// Mock the vscode utility -vi.mock("@/utils/vscode", () => ({ - vscode: { - postMessage: vi.fn(), - }, -})) - -// Mock react-i18next -vi.mock("react-i18next") - -// Mock the extension state context -vi.mock("@/context/ExtensionStateContext", () => ({ - ExtensionStateContextProvider: ({ children }: { children: React.ReactNode }) => children, - useExtensionState: () => ({ - sharingEnabled: true, - publicSharingEnabled: true, - cloudIsAuthenticated: true, - cloudUserInfo: { - id: "test-user", - email: "test@example.com", - organizationName: "Test Organization", - }, - }), -})) - -// Mock telemetry client -vi.mock("@/utils/TelemetryClient", () => ({ - telemetryClient: { - capture: vi.fn(), - }, -})) - -const mockUseTranslation = vi.mocked(useTranslation) -const mockVscode = vi.mocked(vscode) - -describe("ShareButton", () => { - const mockT = vi.fn((key: string) => key) - const mockItem = { - id: "test-task-id", - number: 1, - ts: Date.now(), - task: "Test Task", - tokensIn: 100, - tokensOut: 50, - totalCost: 0.01, - } - - beforeEach(() => { - vi.clearAllMocks() - - mockUseTranslation.mockReturnValue({ - t: mockT, - i18n: {} as any, - ready: true, - } as any) - }) - - test("renders share button", () => { - render() - - const button = screen.getByRole("button") - expect(button).toBeInTheDocument() - }) - - test("opens popover when clicked", async () => { - render() - - const button = screen.getByRole("button") - fireEvent.click(button) - - await waitFor(() => { - expect(screen.getByText("chat:task.shareWithOrganization")).toBeInTheDocument() - }) - }) - - test("sends organization share message when organization button clicked", async () => { - render() - - // Open popover - const button = screen.getByRole("button") - fireEvent.click(button) - - await waitFor(() => { - expect(screen.getByText("chat:task.shareWithOrganization")).toBeInTheDocument() - }) - - // Click organization share button - const orgButton = screen.getByText("chat:task.shareWithOrganization") - fireEvent.click(orgButton) - - expect(mockVscode.postMessage).toHaveBeenCalledWith({ - type: "shareCurrentTask", - visibility: "organization", - }) - }) - - test("sends public share message when public button clicked", async () => { - render() - - // Open popover - const button = screen.getByRole("button") - fireEvent.click(button) - - await waitFor(() => { - expect(screen.getByText("chat:task.sharePublicly")).toBeInTheDocument() - }) - - // Click public share button - const publicButton = screen.getByText("chat:task.sharePublicly") - fireEvent.click(publicButton) - - expect(mockVscode.postMessage).toHaveBeenCalledWith({ - type: "shareCurrentTask", - visibility: "public", - }) - }) - - test("displays success message when shareTaskSuccess message received", async () => { - const mockAddEventListener = vi.fn() - const mockRemoveEventListener = vi.fn() - - // Mock window.addEventListener - Object.defineProperty(window, "addEventListener", { - value: mockAddEventListener, - writable: true, - }) - Object.defineProperty(window, "removeEventListener", { - value: mockRemoveEventListener, - writable: true, - }) - - render() - - // Get the message event listener that was registered - const messageListener = mockAddEventListener.mock.calls.find((call) => call[0] === "message")?.[1] - - expect(messageListener).toBeDefined() - - // Open popover first - const button = screen.getByRole("button") - fireEvent.click(button) - - await waitFor(() => { - expect(screen.getByText("chat:task.shareWithOrganization")).toBeInTheDocument() - }) - - // Simulate receiving a shareTaskSuccess message - const mockEvent = { - data: { - type: "shareTaskSuccess", - visibility: "organization", - text: "https://example.com/share/123", - }, - } - - messageListener(mockEvent) - - await waitFor(() => { - expect(screen.getByText("chat:task.shareSuccessOrganization")).toBeInTheDocument() - }) - }) - - test("displays different success messages based on visibility", async () => { - const mockAddEventListener = vi.fn() - - Object.defineProperty(window, "addEventListener", { - value: mockAddEventListener, - writable: true, - }) - - render() - - const messageListener = mockAddEventListener.mock.calls.find((call) => call[0] === "message")?.[1] - - // Open popover - const button = screen.getByRole("button") - fireEvent.click(button) - - await waitFor(() => { - expect(screen.getByText("chat:task.shareWithOrganization")).toBeInTheDocument() - }) - - // Test public visibility success message - const publicEvent = { - data: { - type: "shareTaskSuccess", - visibility: "public", - text: "https://example.com/share/456", - }, - } - - messageListener(publicEvent) - - await waitFor(() => { - expect(screen.getByText("chat:task.shareSuccessPublic")).toBeInTheDocument() - }) - }) - - test("auto-hides success message after 5 seconds", async () => { - vi.useFakeTimers({ shouldAdvanceTime: true }) - - const mockAddEventListener = vi.fn() - - Object.defineProperty(window, "addEventListener", { - value: mockAddEventListener, - writable: true, - }) - - render() - - const messageListener = mockAddEventListener.mock.calls.find((call) => call[0] === "message")?.[1] - - // Open popover - const button = screen.getByRole("button") - fireEvent.click(button) - - await vi.waitFor(() => { - expect(screen.getByText("chat:task.shareWithOrganization")).toBeInTheDocument() - }) - - // Simulate success message - const mockEvent = { - data: { - type: "shareTaskSuccess", - visibility: "organization", - text: "https://example.com/share/123", - }, - } - - messageListener(mockEvent) - - await vi.waitFor(() => { - expect(screen.getByText("chat:task.shareSuccessOrganization")).toBeInTheDocument() - }) - - // Fast-forward 5 seconds - await vi.advanceTimersByTimeAsync(5000) - - // The success message and share options should both be gone (popover closed) - expect(screen.queryByText("chat:task.shareSuccessOrganization")).not.toBeInTheDocument() - expect(screen.queryByText("chat:task.shareWithOrganization")).not.toBeInTheDocument() - - vi.useRealTimers() - }) - - test("clears previous success state when sharing again", async () => { - vi.useFakeTimers({ shouldAdvanceTime: true }) - - const mockAddEventListener = vi.fn() - - Object.defineProperty(window, "addEventListener", { - value: mockAddEventListener, - writable: true, - }) - - render() - - const messageListener = mockAddEventListener.mock.calls.find((call) => call[0] === "message")?.[1] - - // Open popover - const button = screen.getByRole("button") - fireEvent.click(button) - - await vi.waitFor(() => { - expect(screen.getByText("chat:task.shareWithOrganization")).toBeInTheDocument() - }) - - // Click organization share button first time - const orgButton = screen.getByText("chat:task.shareWithOrganization") - fireEvent.click(orgButton) - - // Verify first share message was sent - expect(mockVscode.postMessage).toHaveBeenCalledWith({ - type: "shareCurrentTask", - visibility: "organization", - }) - - // Clear mock to track new calls - mockVscode.postMessage.mockClear() - - // Show success message - const mockEvent = { - data: { - type: "shareTaskSuccess", - visibility: "organization", - text: "https://example.com/share/123", - }, - } - - messageListener(mockEvent) - - await vi.waitFor(() => { - expect(screen.getByText("chat:task.shareSuccessOrganization")).toBeInTheDocument() - }) - - // Wait for success message to auto-hide after 5 seconds - await vi.advanceTimersByTimeAsync(5000) - - // Success message should be gone and popover should be closed - expect(screen.queryByText("chat:task.shareSuccessOrganization")).not.toBeInTheDocument() - - // Open popover again - fireEvent.click(button) - await vi.waitFor(() => { - expect(screen.getByText("chat:task.shareWithOrganization")).toBeInTheDocument() - }) - - // Click share again - const orgButton2 = screen.getByText("chat:task.shareWithOrganization") - fireEvent.click(orgButton2) - - // Verify the share message was sent again (no success message should be showing) - expect(mockVscode.postMessage).toHaveBeenCalledWith({ - type: "shareCurrentTask", - visibility: "organization", - }) - - vi.useRealTimers() - }) -}) diff --git a/webview-ui/src/components/chat/__tests__/TaskActions.spec.tsx b/webview-ui/src/components/chat/__tests__/TaskActions.spec.tsx index 4ba0853cd8a..4b096817dbe 100644 --- a/webview-ui/src/components/chat/__tests__/TaskActions.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/TaskActions.spec.tsx @@ -7,57 +7,36 @@ import { useCopyToClipboard } from "@/utils/clipboard" import { TaskActions } from "../TaskActions" -// Mock scrollIntoView for JSDOM Object.defineProperty(Element.prototype, "scrollIntoView", { value: vi.fn(), writable: true, }) -// Mock the vscode utility vi.mock("@/utils/vscode", () => ({ vscode: { postMessage: vi.fn(), }, })) -// Mock the useExtensionState hook vi.mock("@/context/ExtensionStateContext", () => ({ useExtensionState: vi.fn(), })) -// Mock the useCopyToClipboard hook vi.mock("@/utils/clipboard", () => ({ useCopyToClipboard: vi.fn(), })) -const mockPostMessage = vi.mocked(vscode.postMessage) -const mockUseExtensionState = vi.mocked(useExtensionState) -const mockUseCopyToClipboard = vi.mocked(useCopyToClipboard) - -// Mock react-i18next vi.mock("react-i18next", () => ({ useTranslation: () => ({ t: (key: string) => { const translations: Record = { - "chat:task.share": "Share task", "chat:task.export": "Export task history", "chat:task.delete": "Delete Task (Shift + Click to skip confirmation)", - "chat:task.shareWithOrganization": "Share with Organization", - "chat:task.shareWithOrganizationDescription": "Only members of your organization can access", - "chat:task.sharePublicly": "Share Publicly", - "chat:task.sharePubliclyDescription": "Anyone with the link can access", - "chat:task.connectToCloud": "Connect to Cloud", - "chat:task.connectToCloudDescription": "Sign in to Roo Code Cloud to share tasks", - "chat:task.sharingDisabledByOrganization": "Sharing disabled by organization", "chat:task.openApiHistory": "Open API History", "chat:task.openUiHistory": "Open UI History", - "cloud:cloudBenefitsTitle": "Connect to Roo Code Cloud", - "cloud:cloudBenefitHistory": "Access your task history from anywhere", - "cloud:cloudBenefitSharing": "Share tasks with your team", - "cloud:cloudBenefitMetrics": "Track usage and costs", - "cloud:connect": "Connect", "history:copyPrompt": "Copy", } + return translations[key] || key }, }), @@ -67,11 +46,14 @@ vi.mock("react-i18next", () => ({ }, })) -// Mock pretty-bytes vi.mock("pretty-bytes", () => ({ default: (bytes: number) => `${bytes} B`, })) +const mockPostMessage = vi.mocked(vscode.postMessage) +const mockUseExtensionState = vi.mocked(useExtensionState) +const mockUseCopyToClipboard = vi.mocked(useCopyToClipboard) + describe("TaskActions", () => { const mockItem: HistoryItem = { id: "test-task-id", @@ -87,12 +69,7 @@ describe("TaskActions", () => { beforeEach(() => { vi.clearAllMocks() mockUseExtensionState.mockReturnValue({ - sharingEnabled: true, - publicSharingEnabled: true, - cloudIsAuthenticated: true, - cloudUserInfo: { - organizationName: "Test Organization", - }, + debug: false, } as any) mockUseCopyToClipboard.mockReturnValue({ copyWithFeedback: vi.fn(), @@ -100,429 +77,122 @@ describe("TaskActions", () => { }) }) - describe("Share Button Visibility", () => { - it("renders share button when item has id", () => { - render() - - // ShareButton now uses data-testid for reliable testing - const shareButton = screen.getByTestId("share-button") - expect(shareButton).toBeInTheDocument() - }) + it("does not render share button", () => { + render() - it("does not render share button when item has no id", () => { - render() - - // ShareButton returns null when no item ID - const shareButton = screen.queryByTestId("share-button") - expect(shareButton).toBeNull() - }) - - it("renders share button even when not authenticated", () => { - mockUseExtensionState.mockReturnValue({ - sharingEnabled: false, - cloudIsAuthenticated: false, - } as any) - - render() - - // ShareButton should still render when not authenticated - const shareButton = screen.getByTestId("share-button") - expect(shareButton).toBeInTheDocument() - }) + expect(screen.queryByTestId("share-button")).not.toBeInTheDocument() }) - describe("Authenticated User Share Flow", () => { - it("shows organization and public share options when authenticated and sharing enabled", () => { - render() + it("renders export button", () => { + render() - // Find share button by its test ID and click it - const shareButton = screen.getByTestId("share-button") - fireEvent.click(shareButton) - - expect(screen.getByText("Share with Organization")).toBeInTheDocument() - expect(screen.getByText("Share Publicly")).toBeInTheDocument() - }) - - it("sends shareCurrentTask message when organization option is selected", () => { - render() - - // Find share button by its test ID and click it - const shareButton = screen.getByTestId("share-button") - fireEvent.click(shareButton) - - const orgOption = screen.getByText("Share with Organization") - fireEvent.click(orgOption) - - expect(mockPostMessage).toHaveBeenCalledWith({ - type: "shareCurrentTask", - visibility: "organization", - }) - }) - - it("sends shareCurrentTask message when public option is selected", () => { - render() - - // Find share button by its test ID and click it - const shareButton = screen.getByTestId("share-button") - fireEvent.click(shareButton) - - const publicOption = screen.getByText("Share Publicly") - fireEvent.click(publicOption) - - expect(mockPostMessage).toHaveBeenCalledWith({ - type: "shareCurrentTask", - visibility: "public", - }) - }) - - it("does not show organization option when user is not in an organization", () => { - mockUseExtensionState.mockReturnValue({ - sharingEnabled: true, - publicSharingEnabled: true, - cloudIsAuthenticated: true, - cloudUserInfo: { - // No organizationName property - }, - } as any) - - render() - - // Find share button by its test ID and click it - const shareButton = screen.getByTestId("share-button") - fireEvent.click(shareButton) - - expect(screen.queryByText("Share with Organization")).not.toBeInTheDocument() - expect(screen.getByText("Share Publicly")).toBeInTheDocument() - }) + expect(screen.getByLabelText("Export task history")).toBeInTheDocument() }) - describe("Unauthenticated User Login Flow", () => { - beforeEach(() => { - mockUseExtensionState.mockReturnValue({ - sharingEnabled: false, - cloudIsAuthenticated: false, - } as any) - }) - - it("shows connect to cloud option when not authenticated", () => { - render() - - // Find share button by its test ID and click it - const shareButton = screen.getByTestId("share-button") - fireEvent.click(shareButton) + it("sends exportCurrentTask message when export button is clicked", () => { + render() - expect(screen.getByText("Connect to Roo Code Cloud")).toBeInTheDocument() - expect(screen.getByText("Connect")).toBeInTheDocument() - }) - - it("does not show organization and public options when not authenticated", () => { - render() - - // Find share button by its test ID and click it - const shareButton = screen.getByTestId("share-button") - fireEvent.click(shareButton) - - expect(screen.queryByText("Share with Organization")).not.toBeInTheDocument() - expect(screen.queryByText("Share Publicly")).not.toBeInTheDocument() - }) + fireEvent.click(screen.getByLabelText("Export task history")) - it("sends rooCloudSignIn message when connect to cloud is selected", () => { - render() - - // Find share button by its test ID and click it - const shareButton = screen.getByTestId("share-button") - fireEvent.click(shareButton) - - const connectOption = screen.getByText("Connect") - fireEvent.click(connectOption) - - expect(mockPostMessage).toHaveBeenCalledWith({ - type: "rooCloudSignIn", - }) + expect(mockPostMessage).toHaveBeenCalledWith({ + type: "exportCurrentTask", }) }) - describe("Mixed Authentication States", () => { - it("shows disabled share button when authenticated but sharing not enabled", () => { - mockUseExtensionState.mockReturnValue({ - sharingEnabled: false, - cloudIsAuthenticated: true, - } as any) - - render() + it("renders delete button when item has size", () => { + render() - // Find share button by its test ID - const shareButton = screen.getByTestId("share-button") - expect(shareButton).toBeInTheDocument() - expect(shareButton).toBeDisabled() - - // Should not have a popover when sharing is disabled - fireEvent.click(shareButton!) - expect(screen.queryByText("Share with Organization")).not.toBeInTheDocument() - expect(screen.queryByText("Connect to Cloud")).not.toBeInTheDocument() - }) - - it("does not automatically open popover when user becomes authenticated from elsewhere", () => { - // Start with unauthenticated state - mockUseExtensionState.mockReturnValue({ - sharingEnabled: false, - cloudIsAuthenticated: false, - } as any) - - const { rerender } = render() - - // Verify popover is not open initially - expect(screen.queryByText("Share with Organization")).not.toBeInTheDocument() - - // Simulate user becoming authenticated (e.g., from CloudView) - mockUseExtensionState.mockReturnValue({ - sharingEnabled: true, - publicSharingEnabled: true, - cloudIsAuthenticated: true, - cloudUserInfo: { - organizationName: "Test Organization", - }, - } as any) - - rerender() - - // Verify popover does NOT automatically open when auth happens from elsewhere - expect(screen.queryByText("Share with Organization")).not.toBeInTheDocument() - expect(screen.queryByText("Share Publicly")).not.toBeInTheDocument() - }) - - it("automatically opens popover when user authenticates from share button", () => { - // Start with unauthenticated state - mockUseExtensionState.mockReturnValue({ - sharingEnabled: false, - cloudIsAuthenticated: false, - } as any) - - const { rerender } = render() - - // Click share button to open connect modal - const shareButton = screen.getByTestId("share-button") - fireEvent.click(shareButton) - - // Click connect button to initiate authentication - const connectButton = screen.getByText("Connect") - fireEvent.click(connectButton) - - // Verify rooCloudSignIn message was sent - expect(mockPostMessage).toHaveBeenCalledWith({ - type: "rooCloudSignIn", - }) - - // Simulate user becoming authenticated after clicking connect from share button - mockUseExtensionState.mockReturnValue({ - sharingEnabled: true, - publicSharingEnabled: true, - cloudIsAuthenticated: true, - cloudUserInfo: { - organizationName: "Test Organization", - }, - } as any) - - rerender() - - // Verify popover automatically opens when auth was initiated from share button - expect(screen.getByText("Share with Organization")).toBeInTheDocument() - expect(screen.getByText("Share Publicly")).toBeInTheDocument() - }) + expect(screen.getByLabelText("Delete Task (Shift + Click to skip confirmation)")).toBeInTheDocument() }) - describe("Other Actions", () => { - it("renders export button", () => { - render() - - const exportButton = screen.getByLabelText("Export task history") - expect(exportButton).toBeInTheDocument() - }) - - it("sends exportCurrentTask message when export button is clicked", () => { - render() + it("does not render delete button when item has no size", () => { + render() - const exportButton = screen.getByLabelText("Export task history") - fireEvent.click(exportButton) + expect(screen.queryByLabelText("Delete Task (Shift + Click to skip confirmation)")).not.toBeInTheDocument() + }) - expect(mockPostMessage).toHaveBeenCalledWith({ - type: "exportCurrentTask", - }) - }) + it("shows check icon when showCopyFeedback is true", () => { + const { rerender } = render() - it("renders delete button when item has size", () => { - render() + const copyButton = screen.getByLabelText("Copy") + expect(copyButton.querySelector("svg.lucide-copy")).toBeInTheDocument() + expect(copyButton.querySelector("svg.lucide-check")).not.toBeInTheDocument() - const deleteButton = screen.getByLabelText("Delete Task (Shift + Click to skip confirmation)") - expect(deleteButton).toBeInTheDocument() + mockUseCopyToClipboard.mockReturnValue({ + copyWithFeedback: vi.fn(), + showCopyFeedback: true, }) - it("does not render delete button when item has no size", () => { - const itemWithoutSize = { ...mockItem, size: 0 } - render() + rerender() - const deleteButton = screen.queryByLabelText("Delete Task (Shift + Click to skip confirmation)") - expect(deleteButton).not.toBeInTheDocument() - }) + expect(copyButton.querySelector("svg.lucide-check")).toBeInTheDocument() + expect(copyButton.querySelector("svg.lucide-copy")).not.toBeInTheDocument() + }) - it("shows check icon when showCopyFeedback is true", () => { - // First render with showCopyFeedback: false (default) - const { rerender } = render() + it("export and copy buttons remain enabled while delete respects buttonsDisabled", () => { + const { rerender } = render() - // Verify copy icon is shown initially - const copyButton = screen.getByLabelText("Copy") - expect(copyButton).toBeInTheDocument() - expect(copyButton.querySelector("svg.lucide-copy")).toBeInTheDocument() - expect(copyButton.querySelector("svg.lucide-check")).not.toBeInTheDocument() + let exportButton = screen.getByLabelText("Export task history") + let copyButton = screen.getByLabelText("Copy") + let deleteButton = screen.getByLabelText("Delete Task (Shift + Click to skip confirmation)") - // Mock showCopyFeedback: true to simulate successful copy - mockUseCopyToClipboard.mockReturnValue({ - copyWithFeedback: vi.fn(), - showCopyFeedback: true, - }) + expect(exportButton).not.toBeDisabled() + expect(copyButton).not.toBeDisabled() + expect(deleteButton).not.toBeDisabled() - rerender() + rerender() - // Verify check icon is shown after successful copy - expect(copyButton.querySelector("svg.lucide-check")).toBeInTheDocument() - expect(copyButton.querySelector("svg.lucide-copy")).not.toBeInTheDocument() - }) - }) + exportButton = screen.getByLabelText("Export task history") + copyButton = screen.getByLabelText("Copy") + deleteButton = screen.getByLabelText("Delete Task (Shift + Click to skip confirmation)") - describe("Button States", () => { - it("share, export, and copy buttons are always enabled while delete button respects buttonsDisabled state", () => { - // Test with buttonsDisabled = false - const { rerender } = render() - - let shareButton = screen.getByTestId("share-button") - let exportButton = screen.getByLabelText("Export task history") - let copyButton = screen.getByLabelText("Copy") - let deleteButton = screen.getByLabelText("Delete Task (Shift + Click to skip confirmation)") - - expect(shareButton).not.toBeDisabled() - expect(exportButton).not.toBeDisabled() - expect(copyButton).not.toBeDisabled() - expect(deleteButton).not.toBeDisabled() - - // Test with buttonsDisabled = true - rerender() - - shareButton = screen.getByTestId("share-button") - exportButton = screen.getByLabelText("Export task history") - copyButton = screen.getByLabelText("Copy") - deleteButton = screen.getByLabelText("Delete Task (Shift + Click to skip confirmation)") - - // Share, export, and copy remain enabled - expect(shareButton).not.toBeDisabled() - expect(exportButton).not.toBeDisabled() - expect(copyButton).not.toBeDisabled() - // Delete button is disabled - expect(deleteButton).toBeDisabled() - }) + expect(exportButton).not.toBeDisabled() + expect(copyButton).not.toBeDisabled() + expect(deleteButton).toBeDisabled() }) - describe("Debug Buttons", () => { + describe("debug buttons", () => { it("does not render debug buttons when debug is false", () => { - mockUseExtensionState.mockReturnValue({ - sharingEnabled: true, - cloudIsAuthenticated: true, - cloudUserInfo: { organizationName: "Test Organization" }, - debug: false, - } as any) - render() - const apiHistoryButton = screen.queryByLabelText("Open API History") - const uiHistoryButton = screen.queryByLabelText("Open UI History") - - expect(apiHistoryButton).not.toBeInTheDocument() - expect(uiHistoryButton).not.toBeInTheDocument() - }) - - it("does not render debug buttons when debug is undefined", () => { - mockUseExtensionState.mockReturnValue({ - sharingEnabled: true, - cloudIsAuthenticated: true, - cloudUserInfo: { organizationName: "Test Organization" }, - } as any) - - render() - - const apiHistoryButton = screen.queryByLabelText("Open API History") - const uiHistoryButton = screen.queryByLabelText("Open UI History") - - expect(apiHistoryButton).not.toBeInTheDocument() - expect(uiHistoryButton).not.toBeInTheDocument() + expect(screen.queryByLabelText("Open API History")).not.toBeInTheDocument() + expect(screen.queryByLabelText("Open UI History")).not.toBeInTheDocument() }) it("renders debug buttons when debug is true and item has id", () => { - mockUseExtensionState.mockReturnValue({ - sharingEnabled: true, - cloudIsAuthenticated: true, - cloudUserInfo: { organizationName: "Test Organization" }, - debug: true, - } as any) + mockUseExtensionState.mockReturnValue({ debug: true } as any) render() - const apiHistoryButton = screen.getByLabelText("Open API History") - const uiHistoryButton = screen.getByLabelText("Open UI History") - - expect(apiHistoryButton).toBeInTheDocument() - expect(uiHistoryButton).toBeInTheDocument() + expect(screen.getByLabelText("Open API History")).toBeInTheDocument() + expect(screen.getByLabelText("Open UI History")).toBeInTheDocument() }) it("does not render debug buttons when debug is true but item has no id", () => { - mockUseExtensionState.mockReturnValue({ - sharingEnabled: true, - cloudIsAuthenticated: true, - cloudUserInfo: { organizationName: "Test Organization" }, - debug: true, - } as any) + mockUseExtensionState.mockReturnValue({ debug: true } as any) render() - const apiHistoryButton = screen.queryByLabelText("Open API History") - const uiHistoryButton = screen.queryByLabelText("Open UI History") - - expect(apiHistoryButton).not.toBeInTheDocument() - expect(uiHistoryButton).not.toBeInTheDocument() + expect(screen.queryByLabelText("Open API History")).not.toBeInTheDocument() + expect(screen.queryByLabelText("Open UI History")).not.toBeInTheDocument() }) - it("sends openDebugApiHistory message when Open API History button is clicked", () => { - mockUseExtensionState.mockReturnValue({ - sharingEnabled: true, - cloudIsAuthenticated: true, - cloudUserInfo: { organizationName: "Test Organization" }, - debug: true, - } as any) + it("sends openDebugApiHistory message when API history button is clicked", () => { + mockUseExtensionState.mockReturnValue({ debug: true } as any) render() + fireEvent.click(screen.getByLabelText("Open API History")) - const apiHistoryButton = screen.getByLabelText("Open API History") - fireEvent.click(apiHistoryButton) - - expect(mockPostMessage).toHaveBeenCalledWith({ - type: "openDebugApiHistory", - }) + expect(mockPostMessage).toHaveBeenCalledWith({ type: "openDebugApiHistory" }) }) - it("sends openDebugUiHistory message when Open UI History button is clicked", () => { - mockUseExtensionState.mockReturnValue({ - sharingEnabled: true, - cloudIsAuthenticated: true, - cloudUserInfo: { organizationName: "Test Organization" }, - debug: true, - } as any) + it("sends openDebugUiHistory message when UI history button is clicked", () => { + mockUseExtensionState.mockReturnValue({ debug: true } as any) render() + fireEvent.click(screen.getByLabelText("Open UI History")) - const uiHistoryButton = screen.getByLabelText("Open UI History") - fireEvent.click(uiHistoryButton) - - expect(mockPostMessage).toHaveBeenCalledWith({ - type: "openDebugUiHistory", - }) + expect(mockPostMessage).toHaveBeenCalledWith({ type: "openDebugUiHistory" }) }) }) }) diff --git a/webview-ui/src/components/chat/__tests__/TaskHeader.spec.tsx b/webview-ui/src/components/chat/__tests__/TaskHeader.spec.tsx index c4ebe06973a..41aa452ab1b 100644 --- a/webview-ui/src/components/chat/__tests__/TaskHeader.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/TaskHeader.spec.tsx @@ -36,7 +36,7 @@ vi.mock("@vscode/webview-ui-toolkit/react", () => ({ })) // Create a variable to hold the mock state -let mockExtensionState: { +const mockExtensionState: { apiConfiguration: ProviderSettings currentTaskItem: { id: string } | null clineMessages: any[] @@ -55,30 +55,6 @@ vi.mock("@src/context/ExtensionStateContext", () => ({ useExtensionState: () => mockExtensionState, })) -// Mock the useCloudUpsell hook -vi.mock("@src/hooks/useCloudUpsell", () => ({ - useCloudUpsell: () => ({ - isOpen: false, - openUpsell: vi.fn(), - closeUpsell: vi.fn(), - handleConnect: vi.fn(), - }), -})) - -// Mock DismissibleUpsell component -vi.mock("@src/components/common/DismissibleUpsell", () => ({ - default: ({ children, ...props }: any) => ( -
- {children} -
- ), -})) - -// Mock CloudUpsellDialog component -vi.mock("@src/components/cloud/CloudUpsellDialog", () => ({ - CloudUpsellDialog: () => null, -})) - // Mock findLastIndex from @roo/array vi.mock("@roo/array", () => ({ findLastIndex: (array: any[], predicate: (item: any) => boolean) => { @@ -203,184 +179,6 @@ describe("TaskHeader", () => { expect(handleCondenseContext).not.toHaveBeenCalled() }) - describe("DismissibleUpsell behavior", () => { - beforeEach(() => { - vi.useFakeTimers() - // Reset the mock state before each test - mockExtensionState = { - apiConfiguration: { - apiProvider: "anthropic", - apiKey: "test-api-key", - apiModelId: "claude-3-opus-20240229", - } as ProviderSettings, - currentTaskItem: { id: "test-task-id" }, - clineMessages: [], - } - }) - - afterEach(() => { - vi.useRealTimers() - }) - - it("should show DismissibleUpsell after 2 minutes when task is not complete", async () => { - renderTaskHeader() - - // Initially, the upsell should not be visible - expect(screen.queryByTestId("dismissible-upsell")).not.toBeInTheDocument() - - // Fast-forward time by 2 minutes to match component timeout - await vi.advanceTimersByTimeAsync(120_000) - - // The upsell should now be visible - expect(screen.getByTestId("dismissible-upsell")).toBeInTheDocument() - expect(screen.getByText("cloud:upsell.longRunningTask")).toBeInTheDocument() - }) - - it("should not show DismissibleUpsell when task is complete", async () => { - // Set up mock state with a completion_result message - mockExtensionState = { - ...mockExtensionState, - clineMessages: [ - { - type: "ask", - ask: "completion_result", - ts: Date.now(), - text: "Task completed!", - }, - ], - } - - renderTaskHeader() - - // Fast-forward time by more than 2 minutes - await vi.advanceTimersByTimeAsync(130_000) - - // The upsell should not appear - expect(screen.queryByTestId("dismissible-upsell")).not.toBeInTheDocument() - }) - - it("should not show DismissibleUpsell when currentTaskItem is null", async () => { - // Update the mock state to have null currentTaskItem - mockExtensionState = { - ...mockExtensionState, - currentTaskItem: null, - } - - renderTaskHeader() - - // Fast-forward time by more than 2 minutes - await vi.advanceTimersByTimeAsync(130_000) - - // The upsell should not appear - expect(screen.queryByTestId("dismissible-upsell")).not.toBeInTheDocument() - }) - - it("should not show DismissibleUpsell when task has completion_result in clineMessages", async () => { - // Set up mock state with a completion_result message from the start - mockExtensionState = { - ...mockExtensionState, - clineMessages: [ - { - type: "say", - say: "text", - ts: Date.now() - 1000, - text: "Working on task...", - }, - { - type: "ask", - ask: "completion_result", - ts: Date.now(), - text: "Task completed!", - }, - ], - } - - renderTaskHeader() - - // Fast-forward time by more than 2 minutes - await vi.advanceTimersByTimeAsync(130_000) - - // The upsell should not appear because the task is complete - expect(screen.queryByTestId("dismissible-upsell")).not.toBeInTheDocument() - }) - - it("should not show DismissibleUpsell when task has completion_result followed by resume messages", async () => { - // Set up mock state with a completion_result message followed by resume messages - mockExtensionState = { - ...mockExtensionState, - clineMessages: [ - { - type: "say", - say: "text", - ts: Date.now() - 3000, - text: "Working on task...", - }, - { - type: "ask", - ask: "completion_result", - ts: Date.now() - 2000, - text: "Task completed!", - }, - { - type: "ask", - ask: "resume_completed_task", - ts: Date.now() - 1000, - text: "Resume completed task?", - }, - { - type: "ask", - ask: "resume_task", - ts: Date.now(), - text: "Resume task?", - }, - ], - } - - renderTaskHeader() - - // Fast-forward time by more than 2 minutes - await vi.advanceTimersByTimeAsync(130_000) - - // The upsell should not appear because the last relevant message (skipping resume messages) is completion_result - expect(screen.queryByTestId("dismissible-upsell")).not.toBeInTheDocument() - }) - - it("should show DismissibleUpsell when task has non-completion message followed by resume messages", async () => { - // Set up mock state with a non-completion message followed by resume messages - mockExtensionState = { - ...mockExtensionState, - clineMessages: [ - { - type: "say", - say: "text", - ts: Date.now() - 3000, - text: "Working on task...", - }, - { - type: "ask", - ask: "tool", - ts: Date.now() - 2000, - text: "Need permission to use tool", - }, - { - type: "ask", - ask: "resume_task", - ts: Date.now() - 1000, - text: "Resume task?", - }, - ], - } - - renderTaskHeader() - - // Fast-forward time by 2 minutes to trigger the upsell - await vi.advanceTimersByTimeAsync(120_000) - - // The upsell should appear because the last relevant message (skipping resume messages) is not completion_result - expect(screen.getByTestId("dismissible-upsell")).toBeInTheDocument() - }) - }) - describe("Back to parent task button", () => { beforeEach(() => { mockPostMessage.mockClear() diff --git a/webview-ui/src/components/cloud/CloudAccountSwitcher.tsx b/webview-ui/src/components/cloud/CloudAccountSwitcher.tsx deleted file mode 100644 index 0d46f0f5f55..00000000000 --- a/webview-ui/src/components/cloud/CloudAccountSwitcher.tsx +++ /dev/null @@ -1,168 +0,0 @@ -import { useState, useEffect } from "react" -import { Building2, Plus } from "lucide-react" -import { Select, SelectContent, SelectItem, SelectTrigger, SelectSeparator } from "@/components/ui/select" -import { useAppTranslation } from "@src/i18n/TranslationContext" -import { vscode } from "@src/utils/vscode" -import { useExtensionState } from "@src/context/ExtensionStateContext" -import { cn } from "@src/lib/utils" - -export const CloudAccountSwitcher = () => { - const { t } = useAppTranslation() - const { cloudUserInfo, cloudOrganizations = [], cloudApiUrl } = useExtensionState() - const [selectedOrgId, setSelectedOrgId] = useState(cloudUserInfo?.organizationId || null) - const [isLoading, setIsLoading] = useState(false) - - // Update selected org when userInfo changes - useEffect(() => { - setSelectedOrgId(cloudUserInfo?.organizationId || null) - }, [cloudUserInfo?.organizationId]) - - // Show the switcher whenever user is authenticated - if (!cloudUserInfo) { - return null - } - - const handleOrganizationChange = async (value: string) => { - // Handle "Create Team Account" option - if (value === "create-team") { - if (cloudApiUrl) { - const billingUrl = `${cloudApiUrl}/billing` - vscode.postMessage({ type: "openExternal", url: billingUrl }) - } - return - } - - const newOrgId = value === "personal" ? null : value - - // Don't do anything if selecting the same organization - if (newOrgId === selectedOrgId) { - return - } - - setIsLoading(true) - - // Send message to switch organization - vscode.postMessage({ - type: "switchOrganization", - organizationId: newOrgId, - }) - - // Update local state optimistically - setSelectedOrgId(newOrgId) - - // Reset loading state after a delay - setTimeout(() => { - setIsLoading(false) - }, 1000) - } - - const currentValue = selectedOrgId || "personal" - const currentOrg = cloudOrganizations.find((org) => org.organization.id === selectedOrgId) - - // Render the account icon based on current context - const renderAccountIcon = () => { - if (selectedOrgId && currentOrg?.organization.image_url) { - // Organization with logo - return ( - {currentOrg.organization.name} - ) - } else if (selectedOrgId) { - // Organization without logo - return - } else if (cloudUserInfo.picture) { - // Personal account with avatar - return ( - {cloudUserInfo.name - ) - } else { - // Personal account without avatar - show initials - const initial = cloudUserInfo.name?.charAt(0) || cloudUserInfo.email?.charAt(0) || "?" - return ( -
- {initial} -
- ) - } - } - - return ( -
- -
- ) -} diff --git a/webview-ui/src/components/cloud/CloudUpsellDialog.tsx b/webview-ui/src/components/cloud/CloudUpsellDialog.tsx deleted file mode 100644 index 847ab25cf7a..00000000000 --- a/webview-ui/src/components/cloud/CloudUpsellDialog.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import { useTranslation } from "react-i18next" -import { Dialog, DialogContent, DialogHeader, Button } from "@/components/ui" -import RooHero from "../welcome/RooHero" -import { ArrowRight, Brain, Cable, CircleDollarSign, FileStack, Router, Users2 } from "lucide-react" -import { DialogTitle } from "@radix-ui/react-dialog" - -interface CloudUpsellDialogProps { - open: boolean - onOpenChange: (open: boolean) => void - onConnect: () => void -} - -// Reusable method to render cloud benefits content -export const renderCloudBenefitsContent = (t: any) => { - return ( -
-
- -
-

{t("cloud:cloudBenefitsTitle")}

-
-
    -
  • - - {t("cloud:cloudBenefitProvider")} -
  • -
  • - - {t("cloud:cloudBenefitCloudAgents")} -
  • -
  • - - {t("cloud:cloudBenefitTriggers")} -
  • -
  • - - {t("cloud:cloudBenefitWalkaway")} -
  • -
  • - - {t("cloud:cloudBenefitMetrics")} -
  • -
  • - - {t("cloud:cloudBenefitHistory")} -
  • -
-
-
- ) -} - -export const CloudUpsellDialog = ({ open, onOpenChange, onConnect }: CloudUpsellDialogProps) => { - const { t } = useTranslation() - - return ( - - - - {/* Intentionally empty */} - - -
- {renderCloudBenefitsContent(t)} - -
- -
-
-
-
- ) -} diff --git a/webview-ui/src/components/cloud/CloudView.tsx b/webview-ui/src/components/cloud/CloudView.tsx deleted file mode 100644 index 997997ccd0c..00000000000 --- a/webview-ui/src/components/cloud/CloudView.tsx +++ /dev/null @@ -1,299 +0,0 @@ -import { useEffect, useRef, useState } from "react" -import { VSCodeProgressRing, VSCodeTextField } from "@vscode/webview-ui-toolkit/react" - -import { type CloudUserInfo, type CloudOrganizationMembership, TelemetryEventName } from "@roo-code/types" - -import { useAppTranslation } from "@src/i18n/TranslationContext" -import { useExtensionState } from "@src/context/ExtensionStateContext" -import { vscode } from "@src/utils/vscode" -import { telemetryClient } from "@src/utils/TelemetryClient" -import { ToggleSwitch } from "@/components/ui/toggle-switch" -import { renderCloudBenefitsContent } from "./CloudUpsellDialog" -import { ArrowRight, Info, Lock, TriangleAlert } from "lucide-react" -import { cn } from "@/lib/utils" -import { Tab, TabContent } from "../common/Tab" -import { Button } from "@/components/ui/button" -import { OrganizationSwitcher } from "./OrganizationSwitcher" -import { StandardTooltip } from "../ui" - -// Define the production URL constant locally to avoid importing from cloud package in tests -const PRODUCTION_ROO_CODE_API_URL = "https://app.roocode.com" - -type CloudViewProps = { - userInfo: CloudUserInfo | null - isAuthenticated: boolean - cloudApiUrl?: string - organizations?: CloudOrganizationMembership[] -} - -export const CloudView = ({ userInfo, isAuthenticated, cloudApiUrl, organizations = [] }: CloudViewProps) => { - const { t } = useAppTranslation() - const { taskSyncEnabled, setTaskSyncEnabled } = useExtensionState() - const wasAuthenticatedRef = useRef(false) - const timeoutRef = useRef(null) - const manualUrlInputRef = useRef(null) - // Manual URL entry state - const [authInProgress, setAuthInProgress] = useState(false) - const [showManualEntry, setShowManualEntry] = useState(false) - const [manualUrl, setManualUrl] = useState("") - - // Track authentication state changes to detect successful logout - useEffect(() => { - if (isAuthenticated) { - wasAuthenticatedRef.current = true - // Clear auth in progress state when authentication succeeds - setAuthInProgress(false) - setShowManualEntry(false) - if (timeoutRef.current) { - clearTimeout(timeoutRef.current) - timeoutRef.current = null - } - } else if (wasAuthenticatedRef.current && !isAuthenticated) { - // User just logged out successfully - // NOTE: Telemetry events use ACCOUNT_* naming for continuity with existing analytics - // and to maintain historical data consistency, even though the UI now uses "Cloud" terminology - telemetryClient.capture(TelemetryEventName.ACCOUNT_LOGOUT_SUCCESS) - wasAuthenticatedRef.current = false - } - }, [isAuthenticated]) - - // Focus the manual URL input when it becomes visible - useEffect(() => { - if (showManualEntry && manualUrlInputRef.current) { - // Small delay to ensure the DOM is ready - setTimeout(() => { - manualUrlInputRef.current?.focus() - }, 50) - } - }, [showManualEntry]) - - // Cleanup timeout on unmount - useEffect(() => { - return () => { - if (timeoutRef.current) { - clearTimeout(timeoutRef.current) - } - } - }, []) - - const handleConnectClick = () => { - // Send telemetry for cloud connect action - // NOTE: Using ACCOUNT_* telemetry events for backward compatibility with analytics - telemetryClient.capture(TelemetryEventName.ACCOUNT_CONNECT_CLICKED) - vscode.postMessage({ type: "rooCloudSignIn" }) - - // Start auth in progress state - show "Having trouble?" immediately for debugging - setAuthInProgress(true) - } - - const handleManualUrlChange = (e: any) => { - const url = e.target.value - setManualUrl(url) - - // Auto-trigger authentication when a complete URL is pasted (with slight delay to ensure full paste is processed) - setTimeout(() => { - if (url.trim() && url.includes("://") && url.includes("/auth/clerk/callback")) { - vscode.postMessage({ type: "rooCloudManualUrl", text: url.trim() }) - } - }, 100) - } - - const handleKeyDown = (e: any) => { - if (e.key === "Enter") { - const url = manualUrl.trim() - if (url && url.includes("://") && url.includes("/auth/clerk/callback")) { - vscode.postMessage({ type: "rooCloudManualUrl", text: url }) - } - } - } - - const handleShowManualEntry = () => { - setShowManualEntry(true) - } - - const handleReset = () => { - setAuthInProgress(false) - setShowManualEntry(false) - setManualUrl("") - } - - const handleLogoutClick = () => { - // Send telemetry for cloud logout action - // NOTE: Using ACCOUNT_* telemetry events for backward compatibility with analytics - telemetryClient.capture(TelemetryEventName.ACCOUNT_LOGOUT_CLICKED) - vscode.postMessage({ type: "rooCloudSignOut" }) - } - - const handleVisitCloudWebsite = () => { - // Send telemetry for cloud website visit - // NOTE: Using ACCOUNT_* telemetry events for backward compatibility with analytics - telemetryClient.capture(TelemetryEventName.ACCOUNT_CONNECT_CLICKED) - const cloudUrl = cloudApiUrl || PRODUCTION_ROO_CODE_API_URL - vscode.postMessage({ type: "openExternal", url: cloudUrl }) - } - - const handleOpenCloudUrl = () => { - if (cloudApiUrl) { - vscode.postMessage({ type: "openExternal", url: cloudApiUrl }) - } - } - - const handleTaskSyncToggle = () => { - const newValue = !taskSyncEnabled - setTaskSyncEnabled(newValue) - vscode.postMessage({ type: "taskSyncEnabled", bool: newValue }) - } - - return ( - - - {isAuthenticated ? ( - <> - {userInfo && ( -
-
- {userInfo?.picture ? ( - {t("cloud:profilePicture")} - ) : ( -
- {userInfo?.name?.charAt(0) || userInfo?.email?.charAt(0) || "?"} -
- )} -
- {userInfo.name && ( -

{userInfo.name}

- )} - {userInfo?.email && ( -

{userInfo?.email}

- )} - - {/* Organization Switcher - moved below email */} -
- -
-
- )} - - {/* Task Sync Toggle - Always shown when authenticated */} -
-
- - - {t("cloud:taskSync")} - {userInfo?.organizationId && ( - -
- -
-
- )} -
-
-
- {t("cloud:taskSyncDescription")} -
-
- -
- - {t("cloud:usageMetricsAlwaysReported")} -
- -
- - -
- - ) : ( - <> -
-
{renderCloudBenefitsContent(t)}
- - {!authInProgress && ( - - )} - - {/* Manual entry section */} - {authInProgress && !showManualEntry && ( - // Timeout message with "Having trouble?" link -
-
- - {t("cloud:authWaiting")} -
- {!showManualEntry && ( - - )} -
- )} - - {showManualEntry && ( - // Manual URL entry form -
-

- {t("cloud:pasteCallbackUrl")} -

- -

- or{" "} - -

-
- )} -
- - )} - {cloudApiUrl && cloudApiUrl !== PRODUCTION_ROO_CODE_API_URL && ( -
-
- - {t("cloud:cloudUrlPillLabel")} - -
-
- )} -
-
- ) -} diff --git a/webview-ui/src/components/cloud/OrganizationSwitcher.tsx b/webview-ui/src/components/cloud/OrganizationSwitcher.tsx deleted file mode 100644 index 94727827eff..00000000000 --- a/webview-ui/src/components/cloud/OrganizationSwitcher.tsx +++ /dev/null @@ -1,173 +0,0 @@ -import { useState, useEffect } from "react" -import { Building2, User, Plus } from "lucide-react" - -import { type CloudUserInfo, type CloudOrganizationMembership, type ExtensionMessage } from "@roo-code/types" - -import { useAppTranslation } from "@src/i18n/TranslationContext" -import { vscode } from "@src/utils/vscode" - -import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, SelectSeparator } from "@/components/ui/select" - -type OrganizationSwitcherProps = { - userInfo: CloudUserInfo - organizations: CloudOrganizationMembership[] - onOrganizationChange?: (organizationId: string | null) => void - cloudApiUrl?: string -} - -export const OrganizationSwitcher = ({ - userInfo, - organizations, - onOrganizationChange, - cloudApiUrl, -}: OrganizationSwitcherProps) => { - const { t } = useAppTranslation() - const [selectedOrgId, setSelectedOrgId] = useState(userInfo.organizationId || null) - const [isLoading, setIsLoading] = useState(false) - - // Update selected org when userInfo changes - useEffect(() => { - setSelectedOrgId(userInfo.organizationId || null) - }, [userInfo.organizationId]) - - // Listen for organization switch results - useEffect(() => { - const handleMessage = (event: MessageEvent) => { - const message = event.data as ExtensionMessage - if (message.type === "organizationSwitchResult") { - // Reset loading state when we receive the result - setIsLoading(false) - - if (message.success) { - // Update selected org based on the result - setSelectedOrgId(message.organizationId ?? null) - } else { - // Revert to the previous organization on error - setSelectedOrgId(userInfo.organizationId || null) - } - } - } - - window.addEventListener("message", handleMessage) - return () => window.removeEventListener("message", handleMessage) - }, [userInfo.organizationId]) - - const handleOrganizationChange = async (value: string) => { - // Handle "Create Team Account" option - if (value === "create-team") { - if (cloudApiUrl) { - const billingUrl = `${cloudApiUrl}/billing` - vscode.postMessage({ type: "openExternal", url: billingUrl }) - } - return - } - - const newOrgId = value === "personal" ? null : value - - // Don't do anything if selecting the same organization - if (newOrgId === selectedOrgId) { - return - } - - setIsLoading(true) - - // Send message to switch organization - vscode.postMessage({ - type: "switchOrganization", - organizationId: newOrgId, - }) - - // Update local state optimistically - setSelectedOrgId(newOrgId) - - // Call the callback if provided - if (onOrganizationChange) { - onOrganizationChange(newOrgId) - } - } - - // Always show the switcher when user is authenticated - - const currentValue = selectedOrgId || "personal" - - return ( -
- -
- ) -} diff --git a/webview-ui/src/components/cloud/__tests__/CloudUpsellDialog.spec.tsx b/webview-ui/src/components/cloud/__tests__/CloudUpsellDialog.spec.tsx deleted file mode 100644 index 804050ecd2e..00000000000 --- a/webview-ui/src/components/cloud/__tests__/CloudUpsellDialog.spec.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import { render, screen, fireEvent } from "@testing-library/react" -import { vi } from "vitest" -import { CloudUpsellDialog } from "../CloudUpsellDialog" - -// Mock the useTranslation hook -vi.mock("react-i18next", () => ({ - useTranslation: () => ({ - t: (key: string) => { - const translations: Record = { - "cloud:cloudBenefitsTitle": "Try Roo Code Cloud", - "cloud:cloudBenefitProvider": "Access free and paid models that work great with Roo", - "cloud:cloudBenefitCloudAgents": "Give tasks to autonomous Cloud agents", - "cloud:cloudBenefitTriggers": "Get code reviews on GitHub, start tasks from Slack and more", - "cloud:cloudBenefitWalkaway": "Follow and control tasks from anywhere (including your phone)", - "cloud:cloudBenefitHistory": "Access your task history from anywhere and share them with others", - "cloud:cloudBenefitMetrics": "Get a holistic view of your token consumption", - "cloud:connect": "Get started", - } - return translations[key] || key - }, - }), -})) - -describe("CloudUpsellDialog", () => { - const mockOnOpenChange = vi.fn() - const mockOnConnect = vi.fn() - - beforeEach(() => { - vi.clearAllMocks() - }) - - it("renders dialog when open", () => { - render() - - expect(screen.getByText("Try Roo Code Cloud")).toBeInTheDocument() - expect(screen.getByText("Access free and paid models that work great with Roo")).toBeInTheDocument() - expect(screen.getByText("Give tasks to autonomous Cloud agents")).toBeInTheDocument() - expect(screen.getByText("Get code reviews on GitHub, start tasks from Slack and more")).toBeInTheDocument() - expect(screen.getByText("Follow and control tasks from anywhere (including your phone)")).toBeInTheDocument() - expect( - screen.getByText("Access your task history from anywhere and share them with others"), - ).toBeInTheDocument() - expect(screen.getByText("Get a holistic view of your token consumption")).toBeInTheDocument() - expect(screen.getByRole("button", { name: "Get started" })).toBeInTheDocument() - }) - - it("does not render dialog when closed", () => { - render() - - expect(screen.queryByText("Try Roo Code Cloud")).not.toBeInTheDocument() - }) - - it("calls onConnect when connect button is clicked", () => { - render() - - const connectButton = screen.getByRole("button", { name: "Get started" }) - fireEvent.click(connectButton) - - expect(mockOnConnect).toHaveBeenCalledTimes(1) - }) - - it("renders all benefits as list items", () => { - render() - - const listItems = screen.getAllByRole("listitem") - expect(listItems).toHaveLength(6) - }) -}) diff --git a/webview-ui/src/components/cloud/__tests__/CloudView.spec.tsx b/webview-ui/src/components/cloud/__tests__/CloudView.spec.tsx deleted file mode 100644 index 2ed969b2a53..00000000000 --- a/webview-ui/src/components/cloud/__tests__/CloudView.spec.tsx +++ /dev/null @@ -1,216 +0,0 @@ -import { render, screen } from "@/utils/test-utils" - -import { CloudView } from "../CloudView" - -// Mock the translation context -vi.mock("@src/i18n/TranslationContext", () => ({ - useAppTranslation: () => ({ - t: (key: string) => { - const translations: Record = { - "cloud:title": "Cloud", - "settings:common.done": "Done", - "cloud:signIn": "Connect to Roo Code Cloud", - "cloud:cloudBenefitsTitle": "Try Roo Code Cloud", - "cloud:cloudBenefitProvider": "Access free and paid models that work great with Roo", - "cloud:cloudBenefitCloudAgents": "Give tasks to autonomous Cloud agents", - "cloud:cloudBenefitTriggers": "Get code reviews on GitHub, start tasks from Slack and more", - "cloud:cloudBenefitWalkaway": "Follow and control tasks from anywhere (including your phone)", - "cloud:cloudBenefitHistory": "Access your task history from anywhere and share them with others", - "cloud:cloudBenefitMetrics": "Get a holistic view of your token consumption", - "cloud:logOut": "Log out", - "cloud:connect": "Get started", - "cloud:visitCloudWebsite": "Visit Roo Code Cloud", - "cloud:taskSync": "Task sync", - "cloud:taskSyncDescription": "Sync your tasks for viewing and sharing on Roo Code Cloud", - "cloud:taskSyncManagedByOrganization": "Task sync is managed by your organization", - "cloud:usageMetricsAlwaysReported": "Model usage info is always reported when logged in", - "cloud:profilePicture": "Profile picture", - "cloud:cloudUrlPillLabel": "Roo Code Cloud URL: ", - } - return translations[key] || key - }, - }), -})) - -// Mock vscode utilities -vi.mock("@src/utils/vscode", () => ({ - vscode: { - postMessage: vi.fn(), - }, -})) - -// Mock telemetry client -vi.mock("@src/utils/TelemetryClient", () => ({ - telemetryClient: { - capture: vi.fn(), - }, -})) - -// Mock the extension state context -const mockExtensionState = { - taskSyncEnabled: true, - setTaskSyncEnabled: vi.fn(), -} - -vi.mock("@src/context/ExtensionStateContext", () => ({ - useExtensionState: () => mockExtensionState, -})) - -// Mock window global for images -Object.defineProperty(window, "IMAGES_BASE_URI", { - value: "/images", - writable: true, -}) - -describe("CloudView", () => { - it("should display benefits when user is not authenticated", () => { - render() - - // Check that the benefits section is displayed - expect(screen.getByRole("heading", { name: "Try Roo Code Cloud" })).toBeInTheDocument() - expect(screen.getByText("Access free and paid models that work great with Roo")).toBeInTheDocument() - expect(screen.getByText("Give tasks to autonomous Cloud agents")).toBeInTheDocument() - expect(screen.getByText("Get code reviews on GitHub, start tasks from Slack and more")).toBeInTheDocument() - expect(screen.getByText("Follow and control tasks from anywhere (including your phone)")).toBeInTheDocument() - expect( - screen.getByText("Access your task history from anywhere and share them with others"), - ).toBeInTheDocument() - expect(screen.getByText("Get a holistic view of your token consumption")).toBeInTheDocument() - - // Check that the connect button is also present - expect(screen.getByRole("button", { name: "Get started" })).toBeInTheDocument() - }) - - it("should not display benefits when user is authenticated", () => { - const mockUserInfo = { - name: "Test User", - email: "test@example.com", - } - - render() - - // Check that the benefits section is NOT displayed - expect(screen.queryByText("Access free and paid models that work great with Roo")).not.toBeInTheDocument() - expect(screen.queryByText("Give tasks to autonomous Cloud agents")).not.toBeInTheDocument() - expect( - screen.queryByText("Get code reviews on GitHub, start tasks from Slack and more"), - ).not.toBeInTheDocument() - expect( - screen.queryByText("Follow and control tasks from anywhere (including your phone)"), - ).not.toBeInTheDocument() - expect( - screen.queryByText("Access your task history from anywhere and share them with others"), - ).not.toBeInTheDocument() - expect(screen.queryByText("Get a holistic view of your token consumption")).not.toBeInTheDocument() - - // Check that user info is displayed instead - expect(screen.getByText("Test User")).toBeInTheDocument() - expect(screen.getByText("test@example.com")).toBeInTheDocument() - }) - - it("should not display cloud URL pill when pointing to production", () => { - const mockUserInfo = { - name: "Test User", - email: "test@example.com", - } - - render() - - // Check that the cloud URL pill is NOT displayed for production URL - expect(screen.queryByText(/Roo Code Cloud URL:/)).not.toBeInTheDocument() - }) - - it("should display cloud URL pill when pointing to non-production environment", () => { - const mockUserInfo = { - name: "Test User", - email: "test@example.com", - } - - render() - - // Check that the cloud URL pill is displayed with the staging URL - expect(screen.getByText(/Roo Code Cloud URL:/)).toBeInTheDocument() - expect(screen.getByText("https://staging.roocode.com")).toBeInTheDocument() - }) - - it("should display cloud URL pill for non-authenticated users when not pointing to production", () => { - render() - - // Check that the cloud URL pill is displayed even when not authenticated - expect(screen.getByText(/Roo Code Cloud URL:/)).toBeInTheDocument() - expect(screen.getByText("https://dev.roocode.com")).toBeInTheDocument() - }) - - it("should not display cloud URL pill when cloudApiUrl is undefined", () => { - const mockUserInfo = { - name: "Test User", - email: "test@example.com", - } - - render() - - // Check that the cloud URL pill is NOT displayed when cloudApiUrl is undefined - expect(screen.queryByText(/Roo Code Cloud URL:/)).not.toBeInTheDocument() - }) - - it("should disable task sync toggle for organization users", () => { - const mockUserInfo = { - name: "Test User", - email: "test@example.com", - organizationId: "org-123", - organizationName: "Test Organization", - } - - render() - - // Check that the task sync toggle is disabled for organization users - const taskSyncToggle = screen.getByTestId("task-sync-toggle") - expect(taskSyncToggle).toBeInTheDocument() - expect(taskSyncToggle).toHaveAttribute("tabindex", "-1") - - // Check that the lock icon is displayed (indicating organization control) - const lockIcon = screen.getByTestId("task-sync-toggle").parentElement?.querySelector(".lucide-lock") - expect(lockIcon).toBeInTheDocument() - - // Check that the tooltip trigger is present (which contains the organization message) - const tooltipTrigger = screen - .getByTestId("task-sync-toggle") - .parentElement?.querySelector('[data-slot="tooltip-trigger"]') - expect(tooltipTrigger).toBeInTheDocument() - }) - - it("should enable task sync toggle for non-organization users", () => { - const mockUserInfo = { - name: "Test User", - email: "test@example.com", - // No organizationId - regular user - } - - render() - - // Check that the task sync toggle is enabled for non-organization users - const taskSyncToggle = screen.getByTestId("task-sync-toggle") - expect(taskSyncToggle).toBeInTheDocument() - expect(taskSyncToggle).toHaveAttribute("tabindex", "0") - - // Check that the organization message is NOT displayed - expect(screen.queryByText("Task sync is managed by your organization")).not.toBeInTheDocument() - }) - - it("should show task sync state correctly for organization users", () => { - const mockUserInfo = { - name: "Test User", - email: "test@example.com", - organizationId: "org-123", - organizationName: "Test Organization", - } - - // Test with task sync enabled - render() - - // Check that the toggle shows the current state (enabled in this case) - const taskSyncToggle = screen.getByTestId("task-sync-toggle") - expect(taskSyncToggle).toHaveAttribute("aria-checked", "true") - expect(taskSyncToggle).toHaveAttribute("tabindex", "-1") - }) -}) diff --git a/webview-ui/src/components/settings/ApiOptions.tsx b/webview-ui/src/components/settings/ApiOptions.tsx index a6e4cc3f5f6..3af8267779e 100644 --- a/webview-ui/src/components/settings/ApiOptions.tsx +++ b/webview-ui/src/components/settings/ApiOptions.tsx @@ -29,7 +29,6 @@ import { internationalZAiDefaultModelId, mainlandZAiDefaultModelId, fireworksDefaultModelId, - rooDefaultModelId, vercelAiGatewayDefaultModelId, minimaxDefaultModelId, unboundDefaultModelId, @@ -84,7 +83,6 @@ import { Poe, QwenCode, Requesty, - Roo, SambaNova, Unbound, Vertex, @@ -107,7 +105,6 @@ import { TemperatureControl } from "./TemperatureControl" import { RateLimitSecondsControl } from "./RateLimitSecondsControl" import { ConsecutiveMistakeLimitControl } from "./ConsecutiveMistakeLimitControl" import { BedrockCustomArn } from "./providers/BedrockCustomArn" -import { RooBalanceDisplay } from "./providers/RooBalanceDisplay" import { buildDocLink } from "@src/utils/docLinks" import { BookOpenText } from "lucide-react" @@ -133,7 +130,7 @@ const ApiOptions = ({ setErrorMessage, }: ApiOptionsProps) => { const { t } = useAppTranslation() - const { organizationAllowList, cloudIsAuthenticated, openAiCodexIsAuthenticated } = useExtensionState() + const { organizationAllowList, openAiCodexIsAuthenticated } = useExtensionState() const [customHeaders, setCustomHeaders] = useState<[string, string][]>(() => { const headers = apiConfiguration?.openAiHeaders || {} @@ -184,11 +181,13 @@ const ApiOptions = ({ id: selectedModelId, info: selectedModelInfo, } = useSelectedModel(apiConfiguration) + const isLegacyRooSelected = apiConfiguration.apiProvider === "roo" const activeSelectedProvider: ProviderName | undefined = isRetiredProvider(selectedProvider) ? undefined : selectedProvider const isRetiredSelectedProvider = - typeof apiConfiguration.apiProvider === "string" && isRetiredProvider(apiConfiguration.apiProvider) + isLegacyRooSelected || + (typeof apiConfiguration.apiProvider === "string" && isRetiredProvider(apiConfiguration.apiProvider)) const { data: routerModels, refetch: refetchRouterModels } = useRouterModels() @@ -240,7 +239,7 @@ const ApiOptions = ({ vscode.postMessage({ type: "requestLmStudioModels" }) } else if (selectedProvider === "vscode-lm") { vscode.postMessage({ type: "requestVsCodeLmModels" }) - } else if (selectedProvider === "litellm" || selectedProvider === "roo" || selectedProvider === "poe") { + } else if (selectedProvider === "litellm" || selectedProvider === "poe") { vscode.postMessage({ type: "requestRouterModels" }) } }, @@ -361,7 +360,6 @@ const ApiOptions = ({ }, fireworks: { field: "apiModelId", default: fireworksDefaultModelId }, poe: { field: "apiModelId", default: poeDefaultModelId }, - roo: { field: "apiModelId", default: rooDefaultModelId }, "vercel-ai-gateway": { field: "vercelAiGatewayModelId", default: vercelAiGatewayDefaultModelId }, openai: { field: "openAiModelId" }, ollama: { field: "ollamaModelId" }, @@ -439,19 +437,7 @@ const ApiOptions = ({ label, })) - // Pin "roo" to the top if not on welcome screen - if (!fromWelcomeView) { - const rooIndex = options.findIndex((opt) => opt.value === "roo") - if (rooIndex > 0) { - const [rooOption] = options.splice(rooIndex, 1) - options.unshift(rooOption) - } - } else { - // Filter out roo from the welcome view - const filteredOptions = options.filter((opt) => opt.value !== "roo") - options.length = 0 - options.push(...filteredOptions) - + if (fromWelcomeView) { const openRouterIndex = options.findIndex((opt) => opt.value === "openrouter") if (openRouterIndex > 0) { const [openRouterOption] = options.splice(openRouterIndex, 1) @@ -459,23 +445,26 @@ const ApiOptions = ({ } } + if (isLegacyRooSelected) { + options.unshift({ + value: "roo", + label: "Roo Code Router", + }) + } + return options - }, [organizationAllowList, apiConfiguration.apiProvider, fromWelcomeView]) + }, [organizationAllowList, apiConfiguration.apiProvider, fromWelcomeView, isLegacyRooSelected]) return (
- {selectedProvider === "roo" && cloudIsAuthenticated ? ( - - ) : ( - docs && ( - - {t("settings:providers.apiProviderDocs")} - - - ) + {docs && ( + + {t("settings:providers.apiProviderDocs")} + + )}
)} - {selectedProvider === "roo" && ( - - )} - {/* Generic model picker for providers with static models */} {activeSelectedProvider && shouldUseGenericModelPicker(activeSelectedProvider) && ( <> diff --git a/webview-ui/src/components/settings/ImageGenerationSettings.tsx b/webview-ui/src/components/settings/ImageGenerationSettings.tsx index ccbd0a3fff9..fca45476721 100644 --- a/webview-ui/src/components/settings/ImageGenerationSettings.tsx +++ b/webview-ui/src/components/settings/ImageGenerationSettings.tsx @@ -114,9 +114,6 @@ export const ImageGenerationSettings = ({ value={currentProvider} onChange={(e: any) => handleProviderChange(e.target.value)} className="w-full"> - - Roo Code Cloud - OpenRouter diff --git a/webview-ui/src/components/settings/__tests__/ApiOptions.provider-filtering.spec.tsx b/webview-ui/src/components/settings/__tests__/ApiOptions.provider-filtering.spec.tsx index f650424fd0f..444555d87c6 100644 --- a/webview-ui/src/components/settings/__tests__/ApiOptions.provider-filtering.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/ApiOptions.provider-filtering.spec.tsx @@ -131,6 +131,7 @@ describe("ApiOptions Provider Filtering", () => { expect(providerValues).toContain("anthropic") // static provider expect(providerValues).toContain("openrouter") // dynamic provider expect(providerValues).toContain("ollama") // dynamic provider + expect(providerValues).not.toContain("roo") }) it("should hide static providers with empty models", () => { @@ -295,4 +296,31 @@ describe("ApiOptions Provider Filtering", () => { delete (MODELS_BY_PROVIDER as any).testEmptyProvider PROVIDERS.pop() }) + + it("should show a retired Roo option for legacy configurations", () => { + vi.mocked(useExtensionState).mockReturnValue({ + organizationAllowList: undefined, + cloudIsAuthenticated: false, + } as any) + ;(useSelectedModel as any).mockReturnValue({ + provider: "roo", + id: undefined, + info: null, + }) + + renderWithProviders({ + ...defaultProps, + apiConfiguration: { + apiProvider: "roo", + } as ProviderSettings, + }) + + const selectElement = screen.getByTestId("provider-select") + const options = JSON.parse(selectElement.getAttribute("data-options") || "[]") + const providerValues = options.map((opt: any) => opt.value) + + expect(providerValues).toContain("roo") + expect(screen.getByText("Roo Code Router")).toBeInTheDocument() + expect(screen.getByText("settings:providers.retiredProviderMessage")).toBeInTheDocument() + }) }) diff --git a/webview-ui/src/components/settings/__tests__/ApiOptions.spec.tsx b/webview-ui/src/components/settings/__tests__/ApiOptions.spec.tsx index 469dcd914bf..6ef39e3d3d0 100644 --- a/webview-ui/src/components/settings/__tests__/ApiOptions.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/ApiOptions.spec.tsx @@ -215,14 +215,7 @@ vi.mock("../providers/LiteLLM", () => ({ // Mock Roo provider for tests vi.mock("../providers/Roo", () => ({ - Roo: ({ cloudIsAuthenticated }: any) => ( -
{cloudIsAuthenticated ? "Authenticated" : "Not Authenticated"}
- ), -})) - -// Mock RooBalanceDisplay for tests -vi.mock("../providers/RooBalanceDisplay", () => ({ - RooBalanceDisplay: () =>
Balance: $10.00
, + Roo: () =>
Roo Provider
, })) vi.mock("@src/components/ui/hooks/useSelectedModel", () => ({ @@ -570,25 +563,7 @@ describe("ApiOptions", () => { }) describe("Roo provider tests", () => { - it("shows balance display when authenticated", () => { - // Mock useExtensionState to return authenticated state - const useExtensionStateMock = vi.spyOn(ExtensionStateContext, "useExtensionState") - useExtensionStateMock.mockReturnValue({ - cloudIsAuthenticated: true, - organizationAllowList: { providers: {} }, - } as any) - - renderApiOptions({ - apiConfiguration: { - apiProvider: "roo", - }, - }) - - expect(screen.getByTestId("roo-balance-display")).toBeInTheDocument() - }) - - it("does not show balance display when not authenticated", () => { - // Mock useExtensionState to return unauthenticated state + it("renders the retired provider message for legacy roo selections without cloud account UI", () => { const useExtensionStateMock = vi.spyOn(ExtensionStateContext, "useExtensionState") useExtensionStateMock.mockReturnValue({ cloudIsAuthenticated: false, @@ -601,7 +576,11 @@ describe("ApiOptions", () => { }, }) - expect(screen.queryByTestId("roo-balance-display")).not.toBeInTheDocument() + expect(screen.getByTestId("retired-provider-message")).toHaveTextContent( + "settings:providers.retiredProviderMessage", + ) + expect(screen.queryByText("Authenticated")).not.toBeInTheDocument() + expect(screen.queryByText("Not Authenticated")).not.toBeInTheDocument() }) it("pins roo provider to the top when not on welcome screen", () => { diff --git a/webview-ui/src/components/settings/__tests__/ImageGenerationSettings.spec.tsx b/webview-ui/src/components/settings/__tests__/ImageGenerationSettings.spec.tsx index 12ad1af591e..ce772128965 100644 --- a/webview-ui/src/components/settings/__tests__/ImageGenerationSettings.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/ImageGenerationSettings.spec.tsx @@ -90,14 +90,14 @@ describe("ImageGenerationSettings", () => { ).toBeInTheDocument() }) - it("should not render API key field when provider is roo", () => { - const { queryByPlaceholderText } = render( + it("should treat legacy roo provider as openrouter", () => { + const { getByPlaceholderText } = render( , ) expect( - queryByPlaceholderText("settings:experimental.IMAGE_GENERATION.openRouterApiKeyPlaceholder"), - ).not.toBeInTheDocument() + getByPlaceholderText("settings:experimental.IMAGE_GENERATION.openRouterApiKeyPlaceholder"), + ).toBeInTheDocument() }) it("should not render input fields when enabled is false", () => { diff --git a/webview-ui/src/components/settings/constants.ts b/webview-ui/src/components/settings/constants.ts index 14f04cb5b22..87fe828ce83 100644 --- a/webview-ui/src/components/settings/constants.ts +++ b/webview-ui/src/components/settings/constants.ts @@ -60,7 +60,6 @@ export const PROVIDERS = [ { value: "sambanova", label: "SambaNova", proxy: false }, { value: "zai", label: "Z.ai", proxy: false }, { value: "fireworks", label: "Fireworks AI", proxy: false }, - { value: "roo", label: "Roo Code Router", proxy: false }, { value: "vercel-ai-gateway", label: "Vercel AI Gateway", proxy: false }, { value: "minimax", label: "MiniMax", proxy: false }, { value: "baseten", label: "Baseten", proxy: false }, diff --git a/webview-ui/src/components/settings/providers/Roo.tsx b/webview-ui/src/components/settings/providers/Roo.tsx deleted file mode 100644 index b272d8b2f2e..00000000000 --- a/webview-ui/src/components/settings/providers/Roo.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import { - type ProviderSettings, - type OrganizationAllowList, - type RouterModels, - rooDefaultModelId, -} from "@roo-code/types" - -import { useAppTranslation } from "@src/i18n/TranslationContext" -import { vscode } from "@src/utils/vscode" -import { Button } from "@src/components/ui" - -import { ModelPicker } from "../ModelPicker" - -type RooProps = { - apiConfiguration: ProviderSettings - setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void - routerModels?: RouterModels - cloudIsAuthenticated: boolean - organizationAllowList: OrganizationAllowList - modelValidationError?: string - simplifySettings?: boolean -} - -export const Roo = ({ - apiConfiguration, - setApiConfigurationField, - routerModels, - cloudIsAuthenticated, - organizationAllowList, - modelValidationError, - simplifySettings, -}: RooProps) => { - const { t } = useAppTranslation() - - return ( - <> - {cloudIsAuthenticated ? ( -
-
- {t("settings:providers.roo.authenticatedMessage")} -
-
- ) : ( -
- -
- )} - - - ) -} diff --git a/webview-ui/src/components/settings/providers/RooBalanceDisplay.tsx b/webview-ui/src/components/settings/providers/RooBalanceDisplay.tsx deleted file mode 100644 index 755e5a844bd..00000000000 --- a/webview-ui/src/components/settings/providers/RooBalanceDisplay.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { VSCodeLink } from "@vscode/webview-ui-toolkit/react" - -import { useRooCreditBalance } from "@/components/ui/hooks/useRooCreditBalance" -import { useExtensionState } from "@src/context/ExtensionStateContext" - -export const RooBalanceDisplay = () => { - const { data: balance } = useRooCreditBalance() - const { cloudApiUrl } = useExtensionState() - - if (balance === null || balance === undefined) { - return null - } - - const formattedBalance = balance.toFixed(2) - const billingUrl = cloudApiUrl ? `${cloudApiUrl.replace(/\/$/, "")}/billing` : "https://app.roocode.com/billing" - - return ( - - ${formattedBalance} - - ) -} diff --git a/webview-ui/src/components/settings/providers/__tests__/RooBalanceDisplay.spec.tsx b/webview-ui/src/components/settings/providers/__tests__/RooBalanceDisplay.spec.tsx deleted file mode 100644 index 140c96b8049..00000000000 --- a/webview-ui/src/components/settings/providers/__tests__/RooBalanceDisplay.spec.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import { describe, it, expect, vi, beforeEach } from "vitest" -import { render, screen } from "@testing-library/react" -import { RooBalanceDisplay } from "../RooBalanceDisplay" - -// Mock the hooks -vi.mock("@/components/ui/hooks/useRooCreditBalance", () => ({ - useRooCreditBalance: vi.fn(), -})) - -vi.mock("@src/context/ExtensionStateContext", () => ({ - useExtensionState: vi.fn(), -})) - -import { useRooCreditBalance } from "@/components/ui/hooks/useRooCreditBalance" -import { useExtensionState } from "@src/context/ExtensionStateContext" - -describe("RooBalanceDisplay", () => { - beforeEach(() => { - vi.clearAllMocks() - ;(useExtensionState as any).mockReturnValue({ - cloudApiUrl: undefined, - }) - }) - - it("should render balance formatted to 2 decimal places", () => { - ;(useRooCreditBalance as any).mockReturnValue({ - data: 12.34, - isLoading: false, - error: null, - }) - - render() - - expect(screen.getByText("$12.34")).toBeInTheDocument() - }) - - it("should format balance to 2 decimal places when value has 1 decimal", () => { - ;(useRooCreditBalance as any).mockReturnValue({ - data: 7.8, - isLoading: false, - error: null, - }) - - render() - - expect(screen.getByText("$7.80")).toBeInTheDocument() - }) - - it("should format whole numbers with 2 decimal places", () => { - ;(useRooCreditBalance as any).mockReturnValue({ - data: 5, - isLoading: false, - error: null, - }) - - render() - - expect(screen.getByText("$5.00")).toBeInTheDocument() - }) - - it("should return null when balance is null", () => { - ;(useRooCreditBalance as any).mockReturnValue({ - data: null, - isLoading: false, - error: null, - }) - - const { container } = render() - - expect(container.firstChild).toBeNull() - }) - - it("should return null when balance is undefined", () => { - ;(useRooCreditBalance as any).mockReturnValue({ - data: undefined, - isLoading: false, - error: null, - }) - - const { container } = render() - - expect(container.firstChild).toBeNull() - }) - - it("should return null when there is an error", () => { - ;(useRooCreditBalance as any).mockReturnValue({ - data: null, - isLoading: false, - error: "Failed to fetch balance", - }) - - const { container } = render() - - expect(container.firstChild).toBeNull() - }) - - it("should render when balance is zero", () => { - ;(useRooCreditBalance as any).mockReturnValue({ - data: 0, - isLoading: false, - error: null, - }) - - render() - - expect(screen.getByText("$0.00")).toBeInTheDocument() - }) -}) diff --git a/webview-ui/src/components/settings/providers/index.ts b/webview-ui/src/components/settings/providers/index.ts index 4a64ce9586b..7badb543115 100644 --- a/webview-ui/src/components/settings/providers/index.ts +++ b/webview-ui/src/components/settings/providers/index.ts @@ -12,7 +12,6 @@ export { OpenAICompatible } from "./OpenAICompatible" export { OpenRouter } from "./OpenRouter" export { Poe } from "./Poe" export { QwenCode } from "./QwenCode" -export { Roo } from "./Roo" export { Requesty } from "./Requesty" export { SambaNova } from "./SambaNova" export { Unbound } from "./Unbound" diff --git a/webview-ui/src/components/ui/hooks/useRooCreditBalance.ts b/webview-ui/src/components/ui/hooks/useRooCreditBalance.ts deleted file mode 100644 index 19000415cdb..00000000000 --- a/webview-ui/src/components/ui/hooks/useRooCreditBalance.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { useEffect, useState } from "react" - -import type { ExtensionMessage } from "@roo-code/types" - -import { vscode } from "@src/utils/vscode" - -/** - * Hook to fetch Roo Code Cloud credit balance - * Returns the balance in dollars or null if unavailable - */ -export const useRooCreditBalance = () => { - const [balance, setBalance] = useState(null) - const [isLoading, setIsLoading] = useState(false) - const [error, setError] = useState(null) - - useEffect(() => { - setIsLoading(true) - const requestId = `roo-balance-${Date.now()}` - - const handleMessage = (event: MessageEvent) => { - const message: ExtensionMessage = event.data - - if (message.type === "rooCreditBalance" && message.requestId === requestId) { - window.removeEventListener("message", handleMessage) - clearTimeout(timeout) - - if (message.values?.balance !== undefined) { - setBalance(message.values.balance) - setError(null) - } else if (message.values?.error) { - setError(message.values.error) - setBalance(null) - } - - setIsLoading(false) - } - } - - const timeout = setTimeout(() => { - window.removeEventListener("message", handleMessage) - setIsLoading(false) - setError("Request timed out") - }, 10000) - - window.addEventListener("message", handleMessage) - - vscode.postMessage({ type: "requestRooCreditBalance", requestId }) - - return () => { - window.removeEventListener("message", handleMessage) - clearTimeout(timeout) - } - }, []) - - return { data: balance, isLoading, error } -} diff --git a/webview-ui/src/components/welcome/WelcomeViewProvider.tsx b/webview-ui/src/components/welcome/WelcomeViewProvider.tsx index 43546b64242..d7eb66ad47f 100644 --- a/webview-ui/src/components/welcome/WelcomeViewProvider.tsx +++ b/webview-ui/src/components/welcome/WelcomeViewProvider.tsx @@ -1,11 +1,4 @@ -import { useCallback, useEffect, useRef, useState } from "react" -import { - VSCodeLink, - VSCodeProgressRing, - VSCodeRadio, - VSCodeRadioGroup, - VSCodeTextField, -} from "@vscode/webview-ui-toolkit/react" +import { useCallback, useState } from "react" import type { ProviderSettings } from "@roo-code/types" @@ -20,67 +13,13 @@ import { Tab, TabContent } from "../common/Tab" import RooHero from "./RooHero" import { Trans } from "react-i18next" -import { ArrowLeft, ArrowRight, BadgeInfo, Brain, TriangleAlert } from "lucide-react" -import { buildDocLink } from "@/utils/docLinks" - -type ProviderOption = "roo" | "custom" -type AuthOrigin = "landing" | "providerSelection" +import { ArrowLeft, Brain } from "lucide-react" const WelcomeViewProvider = () => { - const { - apiConfiguration, - currentApiConfigName, - setApiConfiguration, - uriScheme, - cloudIsAuthenticated, - cloudAuthSkipModel, - } = useExtensionState() + const { apiConfiguration, currentApiConfigName, setApiConfiguration, uriScheme } = useExtensionState() const { t } = useAppTranslation() const [errorMessage, setErrorMessage] = useState(undefined) - const [selectedProvider, setSelectedProvider] = useState(null) - const [authInProgress, setAuthInProgress] = useState(false) - const [authOrigin, setAuthOrigin] = useState(null) - const [showManualEntry, setShowManualEntry] = useState(false) - const [manualUrl, setManualUrl] = useState("") - const [manualErrorMessage, setManualErrorMessage] = useState(undefined) - const manualUrlInputRef = useRef(null) - - // When auth completes during the provider signup flow, either: - // 1. If user skipped model selection (cloudAuthSkipModel=true), navigate to provider selection with "custom" selected - // 2. Otherwise, save the Roo config and navigate to chat - useEffect(() => { - if (cloudIsAuthenticated && authInProgress) { - if (cloudAuthSkipModel) { - // User skipped model selection during signup - navigate to provider selection with 3rd-party selected - setSelectedProvider("custom") - setAuthInProgress(false) - setShowManualEntry(false) - // Clear the flag so it doesn't affect future flows - vscode.postMessage({ type: "clearCloudAuthSkipModel" }) - } else { - // Auth completed from provider signup flow - save the config now - const rooConfig: ProviderSettings = { - apiProvider: "roo", - } - vscode.postMessage({ - type: "upsertApiConfiguration", - text: currentApiConfigName, - apiConfiguration: rooConfig, - }) - setAuthInProgress(false) - setShowManualEntry(false) - } - } - }, [cloudIsAuthenticated, authInProgress, currentApiConfigName, cloudAuthSkipModel]) - - // Focus the manual URL input when it becomes visible - useEffect(() => { - if (showManualEntry && manualUrlInputRef.current) { - setTimeout(() => { - manualUrlInputRef.current?.focus() - }, 50) - } - }, [showManualEntry]) + const [showProviderSetup, setShowProviderSetup] = useState(false) // Memoize the setApiConfigurationField function to pass to ApiOptions const setApiConfigurationFieldForApiOptions = useCallback( @@ -91,204 +30,29 @@ const WelcomeViewProvider = () => { ) const handleGetStarted = useCallback(() => { - // Landing screen - always trigger auth with Roo - if (selectedProvider === null) { - setAuthOrigin("landing") - vscode.postMessage({ type: "rooCloudSignIn", useProviderSignup: true }) - setAuthInProgress(true) + if (!showProviderSetup) { + setShowProviderSetup(true) + setErrorMessage(undefined) + return } - // Provider Selection screen - else if (selectedProvider === "roo") { - if (cloudIsAuthenticated) { - // Already authenticated - save config and finish - const rooConfig: ProviderSettings = { - apiProvider: "roo", - } - vscode.postMessage({ - type: "upsertApiConfiguration", - text: currentApiConfigName, - apiConfiguration: rooConfig, - }) - } else { - // Need to authenticate - setAuthOrigin("providerSelection") - vscode.postMessage({ type: "rooCloudSignIn", useProviderSignup: true }) - setAuthInProgress(true) - } - } else { - // Custom provider - validate first - const error = apiConfiguration ? validateApiConfiguration(apiConfiguration) : undefined - if (error) { - setErrorMessage(error) - return - } + const error = apiConfiguration ? validateApiConfiguration(apiConfiguration) : undefined - setErrorMessage(undefined) - vscode.postMessage({ type: "upsertApiConfiguration", text: currentApiConfigName, apiConfiguration }) + if (error) { + setErrorMessage(error) + return } - }, [selectedProvider, cloudIsAuthenticated, apiConfiguration, currentApiConfigName]) - const handleNoAccount = useCallback(() => { - // Navigate to Provider Selection, defaulting to Roo option - setSelectedProvider("roo") - }, []) + setErrorMessage(undefined) + vscode.postMessage({ type: "upsertApiConfiguration", text: currentApiConfigName, apiConfiguration }) + }, [showProviderSetup, apiConfiguration, currentApiConfigName]) const handleBackToLanding = useCallback(() => { - // Return to the landing screen - setSelectedProvider(null) + setShowProviderSetup(false) setErrorMessage(undefined) }, []) - const handleGoBack = useCallback(() => { - setAuthInProgress(false) - setShowManualEntry(false) - setManualUrl("") - setManualErrorMessage(false) - - // Return to the appropriate screen based on origin - if (authOrigin === "providerSelection") { - // Keep selectedProvider as-is, user returns to Provider Selection - } else { - // Return to Landing - setSelectedProvider(null) - } - setAuthOrigin(null) - }, [authOrigin]) - - const handleManualUrlChange = (e: any) => { - const url = e.target.value - setManualUrl(url) - - // Auto-trigger authentication when a complete URL is pasted - setTimeout(() => { - if (url.trim() && url.includes("://") && url.includes("/auth/clerk/callback")) { - setManualErrorMessage(false) - vscode.postMessage({ type: "rooCloudManualUrl", text: url.trim() }) - } - }, 100) - } - - const handleSubmit = useCallback(() => { - const url = manualUrl.trim() - if (url && url.includes("://") && url.includes("/auth/clerk/callback")) { - setManualErrorMessage(false) - vscode.postMessage({ type: "rooCloudManualUrl", text: url }) - } else { - setManualErrorMessage(true) - } - }, [manualUrl]) - - const handleOpenSignupUrl = () => { - vscode.postMessage({ type: "rooCloudSignIn", useProviderSignup: false }) - } - - // Render the waiting for cloud state - if (authInProgress) { - return ( - - -
- -

{t("welcome:waitingForCloud.heading")}

-

- {t("welcome:waitingForCloud.description")} -

- -
- -

- - ), - }} - /> -

-
- -
- -
- {!showManualEntry ? ( -

- setShowManualEntry(true)} - className="text-vscode-textLink-foreground hover:text-vscode-textLink-activeForeground underline cursor-pointer bg-transparent border-none p-0 " - /> - ), - }} - /> -

- ) : ( -
-

- {t("welcome:waitingForCloud.pasteUrl")} -

-
- - -
-

- - {t("common:docsLink.label")} - - ), - }} - /> -

- {manualUrl && manualErrorMessage && ( -

- {t("welcome:waitingForCloud.invalidURL")} -

- )} -
- )} -
-
-
- -
- -
-
-
- ) - } - - // Landing screen - shown when selectedProvider === null - if (selectedProvider === null) { + if (!showProviderSetup) { return ( @@ -299,18 +63,12 @@ const WelcomeViewProvider = () => {

-

- -

- - {t("welcome:landing.noAccount")} -
@@ -325,7 +83,6 @@ const WelcomeViewProvider = () => { ) } - // Provider Selection screen - shown when selectedProvider is "roo" or "custom" return ( @@ -336,58 +93,15 @@ const WelcomeViewProvider = () => {

-
- ) => { - const target = ((e as CustomEvent)?.detail?.target || - (e.target as HTMLInputElement)) as HTMLInputElement - setSelectedProvider(target.value as ProviderOption) - }}> - {/* Roo Code Router Option */} - -
-

- {t("welcome:providerSignup.rooCloudProvider")} -

-

- {t("welcome:providerSignup.rooCloudDescription")}{" "} - - {t("welcome:providerSignup.learnMore")} - -

-
-
- - {/* Use Another Provider Option */} - -
-

- {t("welcome:providerSignup.useAnotherProvider")} -

-

- {t("welcome:providerSignup.useAnotherProviderDescription")} -

-
-
-
- - {/* Expand API options only when custom provider is selected, max height is used to force a transition */} -
-
- -
-
+
+
diff --git a/webview-ui/src/components/welcome/__tests__/WelcomeViewProvider.spec.tsx b/webview-ui/src/components/welcome/__tests__/WelcomeViewProvider.spec.tsx index b3fd7ec1f95..3379e1c6bc3 100644 --- a/webview-ui/src/components/welcome/__tests__/WelcomeViewProvider.spec.tsx +++ b/webview-ui/src/components/welcome/__tests__/WelcomeViewProvider.spec.tsx @@ -1,12 +1,12 @@ // npx vitest src/components/welcome/__tests__/WelcomeViewProvider.spec.tsx +import React from "react" import { render, screen, fireEvent } from "@/utils/test-utils" import * as ExtensionStateContext from "@src/context/ExtensionStateContext" const { ExtensionStateContextProvider } = ExtensionStateContext import WelcomeViewProvider from "../WelcomeViewProvider" -import { vscode } from "@src/utils/vscode" // Mock VSCode components vi.mock("@vscode/webview-ui-toolkit/react", () => ({ @@ -15,20 +15,6 @@ vi.mock("@vscode/webview-ui-toolkit/react", () => ({ {children} ), - VSCodeProgressRing: () =>
Loading...
, - VSCodeTextField: ({ value, onKeyUp, placeholder }: any) => ( - - ), - VSCodeRadioGroup: ({ children, value, _onChange }: any) => ( -
- {children} -
- ), - VSCodeRadio: ({ children, value, onClick }: any) => ( -
- {children} -
- ), })) // Mock Button component @@ -128,224 +114,80 @@ describe("WelcomeViewProvider", () => { // Should show introduction expect(screen.getByTestId("trans-welcome:landing.introduction")).toBeInTheDocument() - // Should show account mention - expect(screen.getByTestId("trans-welcome:landing.accountMention")).toBeInTheDocument() + // Router account marketing copy should be removed + expect(screen.queryByTestId("trans-welcome:landing.accountMention")).not.toBeInTheDocument() // Should show "Get Started" button expect(screen.getByTestId("button-primary")).toBeInTheDocument() - // Should show "no account" link - const noAccountLink = screen - .getAllByTestId("vscode-link") - .find((link) => link.textContent?.includes("welcome:landing.noAccount")) - expect(noAccountLink).toBeInTheDocument() + expect(screen.queryByText(/welcome:landing.noAccount/)).not.toBeInTheDocument() }) - it("triggers auth when 'Get Started' is clicked on landing", () => { + it("moves to provider selection when 'Get Started' is clicked on landing", () => { renderWelcomeViewProvider() const getStartedButton = screen.getByTestId("button-primary") fireEvent.click(getStartedButton) - expect(vscode.postMessage).toHaveBeenCalledWith({ - type: "rooCloudSignIn", - useProviderSignup: true, - }) + expect(screen.getByTestId("api-options")).toBeInTheDocument() + expect(screen.getByTestId("trans-welcome:providerSignup.chooseProvider")).toBeInTheDocument() }) - it("shows auth in progress after clicking 'Get Started' on landing", () => { + it("does not enter auth-in-progress state after clicking 'Get Started' on landing", () => { renderWelcomeViewProvider() const getStartedButton = screen.getByTestId("button-primary") fireEvent.click(getStartedButton) - // Should show progress ring - expect(screen.getByTestId("progress-ring")).toBeInTheDocument() - - // Should show waiting heading - expect(screen.getByText(/welcome:waitingForCloud.heading/)).toBeInTheDocument() + expect(screen.queryByTestId("progress-ring")).not.toBeInTheDocument() + expect(screen.getByTestId("api-options")).toBeInTheDocument() }) - it("navigates to provider selection when 'no account' is clicked", () => { + it("does not render the retired Roo onboarding option", () => { renderWelcomeViewProvider() + fireEvent.click(screen.getByTestId("button-primary")) - // Click the "no account" link - const noAccountLink = screen - .getAllByTestId("vscode-link") - .find((link) => link.textContent?.includes("welcome:landing.noAccount")) - fireEvent.click(noAccountLink!) - - // Should now show provider selection screen with radio buttons - expect(screen.getByTestId("radio-group")).toBeInTheDocument() - expect(screen.getByTestId("radio-roo")).toBeInTheDocument() - expect(screen.getByTestId("radio-custom")).toBeInTheDocument() - expect(screen.getByTestId("trans-welcome:providerSignup.chooseProvider")).toBeInTheDocument() + expect(screen.queryByTestId("radio-roo")).not.toBeInTheDocument() + expect(screen.queryByText(/welcome:providerSignup.rooCloudProvider/)).not.toBeInTheDocument() }) }) describe("Provider Selection Screen", () => { const navigateToProviderSelection = () => { - const noAccountLink = screen - .getAllByTestId("vscode-link") - .find((link) => link.textContent?.includes("welcome:landing.noAccount")) - fireEvent.click(noAccountLink!) + fireEvent.click(screen.getByTestId("button-primary")) } - it("shows radio buttons for Roo and Custom providers", () => { + it("shows provider configuration without Router selection controls", () => { renderWelcomeViewProvider() navigateToProviderSelection() - // Should show radio group - expect(screen.getByTestId("radio-group")).toBeInTheDocument() - - // Should show both radio options - expect(screen.getByTestId("radio-roo")).toBeInTheDocument() - expect(screen.getByTestId("radio-custom")).toBeInTheDocument() - - // Should show Roo provider description - expect(screen.getByText(/welcome:providerSignup.rooCloudDescription/)).toBeInTheDocument() - - // Should show custom provider description - expect(screen.getByText(/welcome:providerSignup.useAnotherProviderDescription/)).toBeInTheDocument() + expect(screen.getByTestId("api-options")).toBeInTheDocument() + expect(screen.queryByTestId("radio-group")).not.toBeInTheDocument() }) - it("Roo provider is selected by default", () => { + it("shows provider setup copy", () => { renderWelcomeViewProvider() navigateToProviderSelection() - const radioGroup = screen.getByTestId("radio-group") - expect(radioGroup).toHaveAttribute("data-value", "roo") + expect(screen.getByTestId("trans-welcome:providerSignup.chooseProvider")).toBeInTheDocument() }) - it("does not show API options when Roo provider is selected", () => { + it("shows API options immediately", () => { renderWelcomeViewProvider() navigateToProviderSelection() - // API options exist but should be hidden with max-h-0 (collapsed via CSS) - // We can't easily test CSS visibility, so just verify the element is in the DOM - // but would be hidden by the transition class const apiOptions = screen.queryByTestId("api-options") expect(apiOptions).toBeInTheDocument() }) - it("triggers auth when Get Started is clicked on Roo provider (not authenticated)", () => { - renderWelcomeViewProvider({ cloudIsAuthenticated: false }) - navigateToProviderSelection() - - const getStartedButton = screen.getByTestId("button-primary") - fireEvent.click(getStartedButton) - - expect(vscode.postMessage).toHaveBeenCalledWith({ - type: "rooCloudSignIn", - useProviderSignup: true, - }) - }) - - it("saves config immediately when Get Started is clicked on Roo provider (already authenticated)", () => { - renderWelcomeViewProvider({ cloudIsAuthenticated: true }) - navigateToProviderSelection() - - const getStartedButton = screen.getByTestId("button-primary") - fireEvent.click(getStartedButton) - - expect(vscode.postMessage).toHaveBeenCalledWith({ - type: "upsertApiConfiguration", - text: "default", - apiConfiguration: { - apiProvider: "roo", - }, - }) - }) - - // Note: We can't easily test radio selection changes in the mocked environment - // since the VSCodeRadioGroup component's onChange is complex - // These tests would work in a real browser environment - it.skip("shows API options when custom provider is selected", () => { + it("returns to landing when Back is clicked", () => { renderWelcomeViewProvider() navigateToProviderSelection() - // Would simulate selecting custom provider in real environment - // API options visibility is controlled by CSS transition based on selectedProvider state - }) - - it.skip("validates and saves configuration when Get Started is clicked on custom provider", () => { - // This test would require properly simulating the radio group onChange - // which is complex in the mocked environment - }) - }) - - describe("Auth In Progress State", () => { - it("shows waiting state with progress ring", () => { - renderWelcomeViewProvider() - - const getStartedButton = screen.getByTestId("button-primary") - fireEvent.click(getStartedButton) - - // Should show progress ring - expect(screen.getByTestId("progress-ring")).toBeInTheDocument() - - // Should show waiting heading - expect(screen.getByText(/welcome:waitingForCloud.heading/)).toBeInTheDocument() - - // Should show description (it's rendered via t() not Trans) - expect(screen.getByText(/welcome:waitingForCloud.description/)).toBeInTheDocument() - }) - - it("shows Go Back button in waiting state", () => { - renderWelcomeViewProvider() - - const getStartedButton = screen.getByTestId("button-primary") - fireEvent.click(getStartedButton) - - // Should show secondary button (Go Back) - expect(screen.getByTestId("button-secondary")).toBeInTheDocument() - expect(screen.getByText(/welcome:waitingForCloud.goBack/)).toBeInTheDocument() - }) - - it("returns to landing screen when Go Back is clicked (auth from landing)", () => { - renderWelcomeViewProvider() - - // Start auth from landing - const getStartedButton = screen.getByTestId("button-primary") - fireEvent.click(getStartedButton) - - // Verify we're in auth progress - expect(screen.getByTestId("progress-ring")).toBeInTheDocument() + fireEvent.click(screen.getByTestId("button-secondary")) - // Click Go Back - const goBackButton = screen.getByTestId("button-secondary") - fireEvent.click(goBackButton) - - // Should be back on landing screen expect(screen.getByText(/welcome:landing.greeting/)).toBeInTheDocument() - expect(screen.getByTestId("trans-welcome:landing.introduction")).toBeInTheDocument() - expect(screen.queryByTestId("progress-ring")).not.toBeInTheDocument() - }) - - it("returns to provider selection when Go Back is clicked (auth from provider selection)", () => { - renderWelcomeViewProvider({ cloudIsAuthenticated: false }) - - // Navigate to provider selection - const noAccountLink = screen - .getAllByTestId("vscode-link") - .find((link) => link.textContent?.includes("welcome:landing.noAccount")) - fireEvent.click(noAccountLink!) - - // Start auth from provider selection (Roo is selected by default) - const getStartedButton = screen.getByTestId("button-primary") - fireEvent.click(getStartedButton) - - // Verify we're in auth progress - expect(screen.getByTestId("progress-ring")).toBeInTheDocument() - - // Click Go Back - const goBackButton = screen.getByTestId("button-secondary") - fireEvent.click(goBackButton) - - // Should be back on provider selection screen - expect(screen.getByTestId("radio-group")).toBeInTheDocument() - expect(screen.getByTestId("trans-welcome:providerSignup.chooseProvider")).toBeInTheDocument() - expect(screen.queryByTestId("progress-ring")).not.toBeInTheDocument() + expect(screen.queryByTestId("api-options")).not.toBeInTheDocument() }) }) }) diff --git a/webview-ui/src/context/ExtensionStateContext.tsx b/webview-ui/src/context/ExtensionStateContext.tsx index ce7a607d9a8..10b49e3de09 100644 --- a/webview-ui/src/context/ExtensionStateContext.tsx +++ b/webview-ui/src/context/ExtensionStateContext.tsx @@ -283,7 +283,6 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode }) const [skills, setSkills] = useState([]) const [includeTaskHistoryInEnhance, setIncludeTaskHistoryInEnhance] = useState(true) - const [prevCloudIsAuthenticated, setPrevCloudIsAuthenticated] = useState(false) const [includeCurrentTime, setIncludeCurrentTime] = useState(true) const [includeCurrentCost, setIncludeCurrentCost] = useState(true) @@ -474,17 +473,6 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode vscode.postMessage({ type: "webviewDidLaunch" }) }, []) - // Watch for authentication state changes and refresh Roo models - useEffect(() => { - const currentAuth = state.cloudIsAuthenticated ?? false - const currentProvider = state.apiConfiguration?.apiProvider - if (!prevCloudIsAuthenticated && currentAuth && currentProvider === "roo") { - // User just authenticated and Roo is the active provider - refresh Roo models - vscode.postMessage({ type: "requestRooModels" }) - } - setPrevCloudIsAuthenticated(currentAuth) - }, [state.cloudIsAuthenticated, prevCloudIsAuthenticated, state.apiConfiguration?.apiProvider]) - const contextValue: ExtensionStateContextType = { ...state, reasoningBlockCollapsed: state.reasoningBlockCollapsed ?? true, diff --git a/webview-ui/src/context/__tests__/ExtensionStateContext.roo-auth-gate.spec.tsx b/webview-ui/src/context/__tests__/ExtensionStateContext.roo-auth-gate.spec.tsx index d62adf26e93..76cd7eebc0f 100644 --- a/webview-ui/src/context/__tests__/ExtensionStateContext.roo-auth-gate.spec.tsx +++ b/webview-ui/src/context/__tests__/ExtensionStateContext.roo-auth-gate.spec.tsx @@ -10,7 +10,7 @@ vi.mock("@src/utils/vscode", () => ({ import { ExtensionStateContextProvider } from "@src/context/ExtensionStateContext" import { vscode } from "@src/utils/vscode" -describe("ExtensionStateContext Roo auth gate", () => { +describe("ExtensionStateContext auth change side effects", () => { beforeEach(() => { vi.clearAllMocks() }) @@ -47,7 +47,7 @@ describe("ExtensionStateContext Roo auth gate", () => { }) }) - it("posts requestRooModels when auth flips and provider === 'roo'", async () => { + it("does not post requestRooModels when auth flips and provider === 'roo'", async () => { render(
@@ -62,14 +62,16 @@ describe("ExtensionStateContext Roo auth gate", () => { vi.clearAllMocks() - // Flip to true with provider roo - should trigger + // Flip to true with provider roo - should remain quiet because Router is retired postStateMessage({ cloudIsAuthenticated: true, apiConfiguration: { apiProvider: "roo" }, }) await waitFor(() => { - expect(vscode.postMessage).toHaveBeenCalledWith({ type: "requestRooModels" }) + const calls = (vscode.postMessage as any).mock.calls as any[][] + const hasRequest = calls.some((c) => c[0]?.type === "requestRooModels") + expect(hasRequest).toBe(false) }) }) }) diff --git a/webview-ui/src/hooks/useCloudUpsell.ts b/webview-ui/src/hooks/useCloudUpsell.ts deleted file mode 100644 index 3175fa57db3..00000000000 --- a/webview-ui/src/hooks/useCloudUpsell.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { useState, useCallback, useRef, useEffect } from "react" -import { TelemetryEventName } from "@roo-code/types" -import { vscode } from "@/utils/vscode" -import { telemetryClient } from "@/utils/TelemetryClient" -import { useExtensionState } from "@/context/ExtensionStateContext" - -interface UseCloudUpsellOptions { - onAuthSuccess?: () => void - autoOpenOnAuth?: boolean -} - -export const useCloudUpsell = (options: UseCloudUpsellOptions = {}) => { - const { onAuthSuccess, autoOpenOnAuth = false } = options - const [isOpen, setIsOpen] = useState(false) - const [shouldOpenOnAuth, setShouldOpenOnAuth] = useState(false) - const { cloudIsAuthenticated, sharingEnabled, publicSharingEnabled } = useExtensionState() - const wasUnauthenticatedRef = useRef(false) - const initiatedAuthRef = useRef(false) - - // Track authentication state changes - useEffect(() => { - if (!cloudIsAuthenticated || !sharingEnabled) { - wasUnauthenticatedRef.current = true - } else if (wasUnauthenticatedRef.current && cloudIsAuthenticated && sharingEnabled) { - // User just authenticated - if (initiatedAuthRef.current) { - // Auth was initiated from this hook - telemetryClient.capture(TelemetryEventName.ACCOUNT_CONNECT_SUCCESS) - setIsOpen(false) // Close the upsell dialog - - if (autoOpenOnAuth && shouldOpenOnAuth) { - onAuthSuccess?.() - setShouldOpenOnAuth(false) - } - - initiatedAuthRef.current = false // Reset the flag - } - wasUnauthenticatedRef.current = false - } - }, [cloudIsAuthenticated, sharingEnabled, onAuthSuccess, autoOpenOnAuth, shouldOpenOnAuth]) - - const openUpsell = useCallback(() => { - setIsOpen(true) - }, []) - - const closeUpsell = useCallback(() => { - setIsOpen(false) - setShouldOpenOnAuth(false) - }, []) - - const handleConnect = useCallback(() => { - // Mark that authentication was initiated from this hook - initiatedAuthRef.current = true - setShouldOpenOnAuth(true) - - // Send message to VS Code to initiate sign in - vscode.postMessage({ type: "rooCloudSignIn" }) - - // Close the upsell dialog - closeUpsell() - }, [closeUpsell]) - - return { - isOpen, - openUpsell, - closeUpsell, - handleConnect, - isAuthenticated: cloudIsAuthenticated, - sharingEnabled, - publicSharingEnabled, - } -} diff --git a/webview-ui/src/i18n/locales/ca/chat.json b/webview-ui/src/i18n/locales/ca/chat.json index 889927e8636..641fcb24ea0 100644 --- a/webview-ui/src/i18n/locales/ca/chat.json +++ b/webview-ui/src/i18n/locales/ca/chat.json @@ -1,5 +1,5 @@ { - "greeting": "Benvingut a Roo Code", + "greeting": "Benvingut a Zoo Code!", "task": { "title": "Tasca", "expand": "Expandir tasca", @@ -15,16 +15,6 @@ "export": "Exportar historial de tasques", "delete": "Eliminar tasca (Shift + Clic per ometre confirmació)", "condenseContext": "Condensar context de forma intel·ligent", - "share": "Compartir tasca", - "shareWithOrganization": "Compartir amb l'organització", - "shareWithOrganizationDescription": "Només els membres de la teva organització poden accedir", - "sharePublicly": "Compartir públicament", - "sharePubliclyDescription": "Qualsevol amb l'enllaç pot accedir", - "connectToCloud": "Connecta al núvol", - "connectToCloudDescription": "Inicia sessió a Roo Code Cloud per compartir tasques", - "sharingDisabledByOrganization": "Compartició deshabilitada per l'organització", - "shareSuccessOrganization": "Enllaç d'organització copiat al porta-retalls", - "shareSuccessPublic": "Enllaç públic copiat al porta-retalls", "openApiHistory": "Obrir historial d'API", "openUiHistory": "Obrir historial d'UI", "backToParentTask": "Tasca principal" @@ -98,7 +88,7 @@ "enqueueMessage": "Afegeix el missatge a la cua (s'enviarà quan acabi la tasca actual)", "scrollToBottom": "Desplaça't al final del xat", "scrollToLatestCheckpoint": "Desplaça't al checkpoint anterior", - "about": "Roo Code és tot un equip de desenvolupament d'IA al teu editor.", + "about": "Zoo Code és tot un equip de desenvolupament d'IA al teu editor.", "docs": "Consulta els nostres documents per a més informació.", "onboarding": "La teva llista de tasques en aquest espai de treball està buida.", "rooTips": { @@ -130,7 +120,7 @@ "title": "Modes", "marketplace": "Marketplace de Modes", "settings": "Configuració de Modes", - "description": "Personalitats especialitzades que adapten el comportament de Roo.", + "description": "Personalitats especialitzades que adapten el comportament de Zoo.", "searchPlaceholder": "Cerca modes...", "noResults": "No s'han trobat resultats" }, @@ -144,7 +134,7 @@ "diffError": { "title": "Edició fallida" }, - "troubleMessage": "Roo està tenint problemes...", + "troubleMessage": "Zoo està tenint problemes...", "apiRequest": { "title": "Sol·licitud API", "failed": "Sol·licitud API ha fallat", @@ -162,7 +152,7 @@ "500": "Error del servidor del proveïdor. Quelcom va malament del costat del proveïdor, no hi ha res de malament amb la teva sol·licitud.", "docs": "Documentació", "goToSettings": "Configuració", - "unknown": "Error API desconegut. Si us plau contacta amb el suport de Roo Code.", + "unknown": "Error API desconegut. Si us plau, contacta amb el suport de Zoo Code.", "connection": "Error de connexió. Assegureu-vos que teniu una connexió a Internet funcional.", "claudeCodeNotAuthenticated": "Has d'iniciar sessió per utilitzar Claude Code. Vés a Configuració i fes clic a \"Iniciar sessió a Claude Code\" per autenticar-te." } @@ -190,40 +180,40 @@ "wantsToFetch": "Roo vol obtenir instruccions detallades per ajudar amb la tasca actual." }, "fileOperations": { - "wantsToRead": "Roo vol llegir aquest fitxer", - "wantsToReadOutsideWorkspace": "Roo vol llegir aquest fitxer fora de l'espai de treball", - "didRead": "Roo ha llegit aquest fitxer", - "wantsToEdit": "Roo vol editar aquest fitxer", - "wantsToEditOutsideWorkspace": "Roo vol editar aquest fitxer fora de l'espai de treball", - "wantsToEditProtected": "Roo vol editar un fitxer de configuració protegit", - "wantsToCreate": "Roo vol crear un nou fitxer", + "wantsToRead": "Zoo vol llegir aquest fitxer", + "wantsToReadOutsideWorkspace": "Zoo vol llegir aquest fitxer fora de l'espai de treball", + "didRead": "Zoo ha llegit aquest fitxer", + "wantsToEdit": "Zoo vol editar aquest fitxer", + "wantsToEditOutsideWorkspace": "Zoo vol editar aquest fitxer fora de l'espai de treball", + "wantsToEditProtected": "Zoo vol editar un fitxer de configuració protegit", + "wantsToCreate": "Zoo vol crear un nou fitxer", "wantsToSearchReplace": "Roo vol realitzar cerca i substitució en aquest fitxer", "didSearchReplace": "Roo ha realitzat cerca i substitució en aquest fitxer", - "wantsToInsert": "Roo vol inserir contingut en aquest fitxer", - "wantsToInsertWithLineNumber": "Roo vol inserir contingut a la línia {{lineNumber}} d'aquest fitxer", - "wantsToInsertAtEnd": "Roo vol afegir contingut al final d'aquest fitxer", - "wantsToReadAndXMore": "En Roo vol llegir aquest fitxer i {{count}} més", - "wantsToReadMultiple": "Roo vol llegir diversos fitxers", - "wantsToApplyBatchChanges": "Roo vol aplicar canvis a múltiples fitxers", - "wantsToGenerateImage": "Roo vol generar una imatge", - "wantsToGenerateImageOutsideWorkspace": "Roo vol generar una imatge fora de l'espai de treball", - "wantsToGenerateImageProtected": "Roo vol generar una imatge en una ubicació protegida", - "didGenerateImage": "Roo ha generat una imatge" + "wantsToInsert": "Zoo vol inserir contingut en aquest fitxer", + "wantsToInsertWithLineNumber": "Zoo vol inserir contingut a la línia {{lineNumber}} d'aquest fitxer", + "wantsToInsertAtEnd": "Zoo vol afegir contingut al final d'aquest fitxer", + "wantsToReadAndXMore": "En Zoo vol llegir aquest fitxer i {{count}} més", + "wantsToReadMultiple": "Zoo vol llegir diversos fitxers", + "wantsToApplyBatchChanges": "Zoo vol aplicar canvis a múltiples fitxers", + "wantsToGenerateImage": "Zoo vol generar una imatge", + "wantsToGenerateImageOutsideWorkspace": "Zoo vol generar una imatge fora de l'espai de treball", + "wantsToGenerateImageProtected": "Zoo vol generar una imatge en una ubicació protegida", + "didGenerateImage": "Zoo ha generat una imatge" }, "directoryOperations": { - "wantsToViewTopLevel": "Roo vol veure els fitxers de nivell superior en aquest directori", - "didViewTopLevel": "Roo ha vist els fitxers de nivell superior en aquest directori", - "wantsToViewRecursive": "Roo vol veure recursivament tots els fitxers en aquest directori", - "didViewRecursive": "Roo ha vist recursivament tots els fitxers en aquest directori", - "wantsToSearch": "Roo vol cercar en aquest directori {{regex}}", - "didSearch": "Roo ha cercat en aquest directori {{regex}}", - "wantsToSearchOutsideWorkspace": "Roo vol cercar en aquest directori (fora de l'espai de treball) {{regex}}", - "didSearchOutsideWorkspace": "Roo ha cercat en aquest directori (fora de l'espai de treball) {{regex}}", - "wantsToViewTopLevelOutsideWorkspace": "Roo vol veure els fitxers de nivell superior en aquest directori (fora de l'espai de treball)", - "didViewTopLevelOutsideWorkspace": "Roo ha vist els fitxers de nivell superior en aquest directori (fora de l'espai de treball)", - "wantsToViewRecursiveOutsideWorkspace": "Roo vol veure recursivament tots els fitxers en aquest directori (fora de l'espai de treball)", - "didViewRecursiveOutsideWorkspace": "Roo ha vist recursivament tots els fitxers en aquest directori (fora de l'espai de treball)", - "wantsToViewMultipleDirectories": "Roo vol veure diversos directoris" + "wantsToViewTopLevel": "Zoo vol veure els fitxers de nivell superior en aquest directori", + "didViewTopLevel": "Zoo ha vist els fitxers de nivell superior en aquest directori", + "wantsToViewRecursive": "Zoo vol veure recursivament tots els fitxers en aquest directori", + "didViewRecursive": "Zoo ha vist recursivament tots els fitxers en aquest directori", + "wantsToSearch": "Zoo vol cercar en aquest directori {{regex}}", + "didSearch": "Zoo ha cercat en aquest directori {{regex}}", + "wantsToSearchOutsideWorkspace": "Zoo vol cercar en aquest directori (fora de l'espai de treball) {{regex}}", + "didSearchOutsideWorkspace": "Zoo ha cercat en aquest directori (fora de l'espai de treball) {{regex}}", + "wantsToViewTopLevelOutsideWorkspace": "Zoo vol veure els fitxers de nivell superior en aquest directori (fora de l'espai de treball)", + "didViewTopLevelOutsideWorkspace": "Zoo ha vist els fitxers de nivell superior en aquest directori (fora de l'espai de treball)", + "wantsToViewRecursiveOutsideWorkspace": "Zoo vol veure recursivament tots els fitxers en aquest directori (fora de l'espai de treball)", + "didViewRecursiveOutsideWorkspace": "Zoo ha vist recursivament tots els fitxers en aquest directori (fora de l'espai de treball)", + "wantsToViewMultipleDirectories": "Zoo vol veure diversos directoris" }, "commandOutput": "Sortida de la comanda", "commandExecution": { @@ -245,24 +235,24 @@ "response": "Resposta", "arguments": "Arguments", "text": { - "rooSaid": "En Roo ha dit" + "rooSaid": "En Zoo ha dit" }, "feedback": { "youSaid": "Has dit" }, "mcp": { - "wantsToUseTool": "Roo vol utilitzar una eina al servidor MCP {{serverName}}", - "wantsToAccessResource": "Roo vol accedir a un recurs al servidor MCP {{serverName}}" + "wantsToUseTool": "Zoo vol utilitzar una eina al servidor MCP {{serverName}}", + "wantsToAccessResource": "Zoo vol accedir a un recurs al servidor MCP {{serverName}}" }, "modes": { - "wantsToSwitch": "Roo vol canviar a mode {{mode}}", - "wantsToSwitchWithReason": "Roo vol canviar a mode {{mode}} perquè: {{reason}}", - "didSwitch": "Roo ha canviat a mode {{mode}}", - "didSwitchWithReason": "Roo ha canviat a mode {{mode}} perquè: {{reason}}" + "wantsToSwitch": "Zoo vol canviar a mode {{mode}}", + "wantsToSwitchWithReason": "Zoo vol canviar a mode {{mode}} perquè: {{reason}}", + "didSwitch": "Zoo ha canviat a mode {{mode}}", + "didSwitchWithReason": "Zoo ha canviat a mode {{mode}} perquè: {{reason}}" }, "subtasks": { - "wantsToCreate": "Roo vol crear una nova subtasca en mode {{mode}}", - "wantsToFinish": "Roo vol finalitzar aquesta subtasca", + "wantsToCreate": "Zoo vol crear una nova subtasca en mode {{mode}}", + "wantsToFinish": "Zoo vol finalitzar aquesta subtasca", "newTaskContent": "Instruccions de la subtasca", "completionContent": "Subtasca completada", "resultContent": "Resultats de la subtasca", @@ -271,7 +261,7 @@ "goToSubtask": "Veure tasca" }, "questions": { - "hasQuestion": "Roo té una pregunta" + "hasQuestion": "Zoo té una pregunta" }, "taskCompleted": "Tasca completada", "modelResponseIncomplete": "Resposta del model incompleta", @@ -287,7 +277,7 @@ "copyToClipboard": "Copiar al porta-retalls", "copied": "Copiat!", "diagnostics": "Obtenir informació d'error detallada", - "proxyProvider": "Sembla que estàs utilitzant un proveïdor basat en proxy. Assegura't de comprovar els seus registres i de garantir que no estàs reescrivint les sol·licituds de Roo." + "proxyProvider": "Sembla que estàs utilitzant un proveïdor basat en proxy. Assegura't de comprovar els seus registres i de garantir que no estàs reescrivint les sol·licituds de Zoo." }, "powershell": { "issues": "Sembla que estàs tenint problemes amb Windows PowerShell, si us plau consulta aquesta documentació per a més informació." @@ -330,31 +320,24 @@ } }, "skill": { - "wantsToLoad": "En Roo vol carregar una habilitat", - "didLoad": "En Roo ha carregat una habilitat" + "wantsToLoad": "En Zoo vol carregar una habilitat", + "didLoad": "En Zoo ha carregat una habilitat" }, "followUpSuggest": { "copyToInput": "Copiar a l'entrada (o Shift + clic)", "timerPrefix": "Aprovació automàtica habilitada. Seleccionant en {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}} Llançat", - "support": "Si us plau, dona suport a Roo Code fent una estrella al nostre GitHub.", - "stealthModel": { - "feature": "Model stealth GRATUÏT per temps limitat - Code Supernova: Ara actualitzat amb una finestra de context d'1M tokens! Un model de codificació agèntica versàtil que suporta entrades d'imatges, disponible a través de Roo Code Cloud.", - "note": "(Nota: els prompts i completacions són registrats pel creador del model i utilitzats per millorar-lo)", - "connectButton": "Connectar a Roo Code Cloud", - "selectModel": "Selecciona roo/code-supernova del proveïdor Roo Code Cloud a Configuració per començar.", - "goToSettingsButton": "Anar a Configuració" - }, + "title": "S'ha publicat Zoo Code {{version}}", + "support": "Dona suport a Zoo Code fent-nos una estrella a GitHub.", "handoff": { - "heading": "El plugin Roo Code no desapareix.", - "description": "Potser has vist l'anunci recent que Roo Code ha arribat a 3 milions d'instal·lacions i que l'equip original es bolca completament amb Roomote. Sabem que aquesta notícia ha estat dura per a molts de vosaltres. Aquest plugin ens importa molt, tant a nosaltres com a tu, i t'escoltem. La bona notícia: un equip de la comunitat ha donat un pas endavant per portar Roo Code cap endavant, i estem treballant amb ells en un relleu oficial perquè el plugin en què confies continuï rebent manteniment i millores.", - "readMore": "Llegir l'anunci original de Matt Rubens" + "heading": "Zoo Code ha tornat, ara com a connector mantingut per la comunitat anomenat Zoo Code!!", + "description": "Per si no ho havies seguit, l'equip de Zoo Code ha anunciat fa poc que deixa de desenvolupar Zoo Code i n'arxiva la feina feta. Però no pateixis: la comunitat ha fet un pas endavant per continuar el llegat de Zoo Code amb un nom nou i una llar nova! Ja no som només un sol \"Roo\", som una comunitat, un \"Zoo\" si vols. Zoo Code és un connector mantingut per la comunitat que reprèn el camí on Zoo Code ho va deixar, i ens comprometem a mantenir viu l'esperit de Roo mentre també hi incorporem funcions i millores noves. Volem donar un enorme agraïment a tot l'equip de Zoo Code per la feina increïble que han fet i per haver creat una eina tan extraordinària per als desenvolupadors. Ens fa molta il·lusió continuar construint sobre la seva base i veure fins on porta la comunitat Zoo Code en el futur!", + "readMore": "Mira la nova pàgina principal de Zoo Code i llegeix l'anunci complet" }, "release": { "heading": "Què hi ha de nou:", - "gpt55": "GPT-5.5 via OpenAI Codex: S'ha afegit suport per a GPT-5.5 al proveïdor OpenAI Codex perquè puguis utilitzar el model més recent directament des de Roo Code.", + "gpt55": "GPT-5.5 via OpenAI Codex: S'ha afegit suport per a GPT-5.5 al proveïdor OpenAI Codex perquè puguis fer servir el model més recent directament des de Zoo Code.", "claudeOpus47": "Claude Opus 4.7 a Vertex AI: S'ha afegit Claude Opus 4.7 al proveïdor Vertex AI, el nou model de raonament emblemàtic d'Anthropic.", "checkpointNav": "Navegació per Checkpoints Anteriors: S'han afegit controls al xat per tornar enrere pels checkpoints previs, amb suport complet d'i18n." }, @@ -380,24 +363,24 @@ "profileViolationWarning": "El perfil actual no és compatible amb la configuració de la teva organització", "shellIntegration": { "title": "Advertència d'execució d'ordres", - "description": "La teva ordre s'està executant sense la integració de shell del terminal VSCode. Per suprimir aquest advertiment, pots desactivar la integració de shell a la secció Terminal de la configuració de Roo Code o solucionar problemes d'integració del terminal VSCode utilitzant l'enllaç a continuació.", + "description": "La teva ordre s'està executant sense la integració de shell del terminal VSCode. Per suprimir aquest advertiment, pots desactivar la integració de shell a la secció Terminal de la configuració de Zoo Code o solucionar problemes d'integració del terminal VSCode utilitzant l'enllaç de sota.", "troubleshooting": "Fes clic aquí per a la documentació d'integració de shell." }, "ask": { "autoApprovedRequestLimitReached": { "title": "S'ha arribat al límit de sol·licituds aprovades automàticament", - "description": "Roo ha arribat al límit aprovat automàticament de {{count}} sol·licitud(s) d'API. Vols reiniciar el comptador i continuar amb la tasca?", + "description": "Zoo ha arribat al límit aprovat automàticament de {{count}} sol·licitud(s) d'API. Vols reiniciar el comptador i continuar amb la tasca?", "button": "Reiniciar i continuar" }, "autoApprovedCostLimitReached": { "title": "S'ha arribat al límit de cost d'aprovació automàtica", "button": "Restableix i continua", - "description": "Roo ha arribat al límit de cost aprovat automàticament de ${{count}}. Vols restablir el cost i continuar amb la tasca?" + "description": "Zoo ha arribat al límit de cost aprovat automàticament de ${{count}}. Vols restablir el cost i continuar amb la tasca?" } }, "codebaseSearch": { - "wantsToSearch": "Roo vol cercar a la base de codi {{query}}", - "wantsToSearchWithPath": "Roo vol cercar a la base de codi {{query}} a {{path}}", + "wantsToSearch": "Zoo vol cercar a la base de codi {{query}}", + "wantsToSearchWithPath": "Zoo vol cercar a la base de codi {{query}} a {{path}}", "didSearch_one": "S'ha trobat 1 resultat", "didSearch_other": "S'han trobat {{count}} resultats", "resultTooltip": "Puntuació de similitud: {{score}} (fes clic per obrir el fitxer)" @@ -438,7 +421,7 @@ "ariaLabel": "Versió {{version}} - Feu clic per veure les notes de llançament" }, "rooCloudCTA": { - "title": "Roo Code Cloud està evolucionant!", + "title": "Zoo Code Cloud està evolucionant!", "description": "Executa agents remots al núvol, accedeix a les teves tasques des de qualsevol lloc, col·labora amb altres i molt més.", "joinWaitlist": "Registra't per rebre les últimes actualitzacions." }, @@ -473,8 +456,8 @@ "clickToEdit": "Feu clic per editar el missatge" }, "slashCommand": { - "wantsToRun": "Roo vol executar una comanda slash", - "didRun": "Roo ha executat una comanda slash" + "wantsToRun": "Zoo vol executar una comanda slash", + "didRun": "Zoo ha executat una comanda slash" }, "contextMenu": { "noResults": "Sense resultats", @@ -499,11 +482,11 @@ "openMcpSettings": "Obrir configuració de MCP" }, "readCommandOutput": { - "title": "Roo read command output" + "title": "Zoo read command output" }, "retiredProvider": { "title": "Proveïdor ja no compatible", - "message": "Ho sentim, aquest proveïdor ja no és compatible. Hem vist molt pocs usuaris de Roo que realment l'utilitzaven i necessitem reduir l'abast del nostre codi per poder seguir avançant ràpidament i servir bé la nostra comunitat en aquest espai. Va ser una decisió molt difícil, però ens permet centrar-nos en el que més t'importa. Ho sabem, és una llàstima.", + "message": "Aquest proveïdor ja no està disponible. Selecciona un proveïdor compatible per continuar.", "openSettings": "Obrir configuració" } } diff --git a/webview-ui/src/i18n/locales/ca/cloud.json b/webview-ui/src/i18n/locales/ca/cloud.json deleted file mode 100644 index 8516407fcae..00000000000 --- a/webview-ui/src/i18n/locales/ca/cloud.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "title": "Cloud", - "profilePicture": "Imatge de perfil", - "logOut": "Tancar sessió", - "testApiAuthentication": "Provar autenticació d'API", - "signIn": "Connecta't a Roo Code Cloud", - "connect": "Comença", - "cloudBenefitsTitle": "Prova Roo Code Cloud", - "cloudBenefitProvider": "Accedeix a models gratuïts i de pagament que funcionen molt bé amb Roo", - "cloudBenefitCloudAgents": "Dona tasques a agents autònoms al núvol", - "cloudBenefitTriggers": "Obtén revisions de codi a GitHub, inicia tasques des de Slack i més", - "cloudBenefitWalkaway": "Segueix i controla tasques des de qualsevol lloc (inclòs el telèfon)", - "cloudBenefitHistory": "Accedeix al teu historial de tasques des de qualsevol lloc i comparteix-les amb altres", - "cloudBenefitMetrics": "Obtén una visió holística del teu consum de tokens", - "visitCloudWebsite": "Visita Roo Code Cloud", - "taskSync": "Sincronització de tasques", - "taskSyncDescription": "Sincronitza les teves tasques per veure-les i compartir-les a Roo Code Cloud", - "taskSyncManagedByOrganization": "La sincronització de tasques la gestiona la teva organització", - "usageMetricsAlwaysReported": "La informació d'ús del model sempre es reporta quan s'ha iniciat sessió", - "cloudUrlPillLabel": "URL de Roo Code Cloud", - "authWaiting": "Esperant que es completi l'autenticació...", - "havingTrouble": "Tens problemes?", - "pasteCallbackUrl": "Copia l'URL de redirect del teu navegador i enganxa-la aquí:", - "startOver": "Torna a començar", - "personalAccount": "Compte Personal", - "createTeamAccount": "Crear Compte d'Equip", - "switchAccount": "Canviar Compte de Roo Code Cloud", - "upsell": { - "autoApprovePowerUser": "Donant-li una mica d'independència a Roo? Controla'l des de qualsevol lloc amb Roo Code Cloud. Més informació.", - "longRunningTask": "Això pot trigar una estona. Continua des de qualsevol lloc amb Cloud.", - "taskList": "T'agrada Roo? Fes una ullada a Roo Code Cloud: segueix i controla les teves tasques des de qualsevol lloc, executa agents autònoms al núvol, obtén estadístiques d'ús i més. Aprèn-ne més." - } -} diff --git a/webview-ui/src/i18n/locales/ca/marketplace.json b/webview-ui/src/i18n/locales/ca/marketplace.json index cd4612ae36e..b365bb60181 100644 --- a/webview-ui/src/i18n/locales/ca/marketplace.json +++ b/webview-ui/src/i18n/locales/ca/marketplace.json @@ -1,5 +1,5 @@ { - "title": "Roo Marketplace", + "title": "Zoo Marketplace", "tabs": { "installed": "Instal·lat", "settings": "Configuració", diff --git a/webview-ui/src/i18n/locales/ca/mcp.json b/webview-ui/src/i18n/locales/ca/mcp.json index 654467b4435..0bda1f751a8 100644 --- a/webview-ui/src/i18n/locales/ca/mcp.json +++ b/webview-ui/src/i18n/locales/ca/mcp.json @@ -2,16 +2,16 @@ "title": "Servidors MCP", "done": "Fet", "marketplace": "Mercat de MCP", - "description": "El <0>Model Context Protocol permet la comunicació amb servidors MCP que s'executen localment i proporcionen eines i recursos addicionals per ampliar les capacitats de Roo. Pots utilitzar <1>servidors creats per la comunitat o demanar a Roo que creï noves eines específiques per al teu flux de treball (per exemple, \"afegir una eina que obtingui la documentació més recent de npm\").", + "description": "El <0>Model Context Protocol permet la comunicació amb servidors MCP que s'executen localment i proporcionen eines i recursos addicionals per ampliar les capacitats de Zoo. Pots utilitzar <1>servidors creats per la comunitat o demanar a Zoo que creï noves eines específiques per al teu flux de treball (per exemple, \"afegir una eina que obtingui la documentació més recent de npm\").", "instructions": "Instruccions", "enableToggle": { "title": "Activa els servidors MCP", - "description": "Activa-ho perquè Roo pugui utilitzar eines dels servidors MCP connectats. Això dóna més capacitats a Roo. Si no vols utilitzar aquestes eines addicionals, desactiva-ho per ajudar a reduir el cost dels tokens API." + "description": "Activa-ho perquè Zoo pugui utilitzar eines dels servidors MCP connectats. Això dóna més capacitats a Zoo. Si no vols utilitzar aquestes eines addicionals, desactiva-ho per ajudar a reduir el cost dels tokens API." }, "enableServerCreation": { "title": "Activa la creació de servidors MCP", - "description": "Activa-ho perquè Roo t'ajudi a crear <1>nous servidors MCP personalitzats. <0>Més informació sobre la creació de servidors", - "hint": "Consell: Per reduir el cost dels tokens API, desactiva aquesta opció quan no demanis a Roo que creï un nou servidor MCP." + "description": "Activa-ho perquè Zoo t'ajudi a crear <1>nous servidors MCP personalitzats. <0>Més informació sobre la creació de servidors", + "hint": "Consell: Per reduir el cost dels tokens API, desactiva aquesta opció quan no demanis a Zoo que creï un nou servidor MCP." }, "editGlobalMCP": "Edita MCP global", "editProjectMCP": "Edita MCP del projecte", diff --git a/webview-ui/src/i18n/locales/ca/prompts.json b/webview-ui/src/i18n/locales/ca/prompts.json index f5c9842e904..8df3376f839 100644 --- a/webview-ui/src/i18n/locales/ca/prompts.json +++ b/webview-ui/src/i18n/locales/ca/prompts.json @@ -9,7 +9,7 @@ "editModesConfig": "Editar configuració de modes", "editGlobalModes": "Editar modes globals", "editProjectModes": "Editar modes de projecte (.roomodes)", - "createModeHelpText": "Els modes són persones especialitzades que adapten el comportament de Roo. <0>Aprèn sobre l'ús de modes o <1>Personalització de modes.", + "createModeHelpText": "Els modes són persones especialitzades que adapten el comportament de Zoo. <0>Aprèn sobre l'ús de modes o <1>Personalització de modes.", "selectMode": "Cerqueu modes" }, "apiConfiguration": { @@ -33,7 +33,7 @@ "roleDefinition": { "title": "Definició de rol", "resetToDefault": "Restablir a valors predeterminats", - "description": "Definiu l'experiència i personalitat de Roo per a aquest mode. Aquesta descripció determina com Roo es presenta i aborda les tasques." + "description": "Definiu l'experiència i personalitat de Zoo per a aquest mode. Aquesta descripció determina com Zoo es presenta i aborda les tasques." }, "description": { "title": "Descripció curta (per a humans)", @@ -102,7 +102,7 @@ "types": { "ENHANCE": { "label": "Millorar prompt", - "description": "Utilitzeu la millora de prompts per obtenir suggeriments o millores personalitzades per a les vostres entrades. Això assegura que Roo entengui la vostra intenció i proporcioni les millors respostes possibles. Disponible a través de la icona ✨ al xat." + "description": "Utilitzeu la millora de prompts per obtenir suggeriments o millores personalitzades per a les vostres entrades. Això assegura que Zoo entengui la vostra intenció i proporcioni les millors respostes possibles. Disponible a través de la icona ✨ al xat." }, "CONDENSE": { "label": "Condensació de context", @@ -167,7 +167,7 @@ }, "roleDefinition": { "label": "Definició de rol", - "description": "Definiu l'experiència i personalitat de Roo per a aquest mode." + "description": "Definiu l'experiència i personalitat de Zoo per a aquest mode." }, "whenToUse": { "label": "Quan utilitzar (opcional)", diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json index 9d4be59b285..19a1d23edb7 100644 --- a/webview-ui/src/i18n/locales/ca/settings.json +++ b/webview-ui/src/i18n/locales/ca/settings.json @@ -40,7 +40,7 @@ "ui": "UI", "experimental": "Experimental", "language": "Idioma", - "about": "Sobre Roo Code", + "about": "Sobre Zoo Code", "skills": "Skills" }, "about": { @@ -56,7 +56,7 @@ "label": "Has descobert una vulnerabilitat?", "link": "Segueix el nostre procés de divulgació" }, - "community": "Vols consells o simplement passar l'estona amb altres usuaris de Roo Code? Uneix-te a reddit.com/r/RooCode o discord.gg/roocode", + "community": "Vols consells o simplement passar l'estona amb altres usuaris de Zoo Code? Uneix-te a reddit.com/r/RooCode o discord.gg/roocode", "contactAndCommunity": "Contacte i Comunitat", "manageSettings": "Gestionar Configuració", "debugMode": { @@ -100,7 +100,7 @@ "footer": "Utilitza comandes de barra per accedir ràpidament a indicacions i fluxos de treball utilitzats freqüentment." }, "prompts": { - "description": "Configura les indicacions de suport utilitzades per a accions ràpides com millorar indicacions, explicar codi i solucionar problemes. Aquestes indicacions ajuden Roo a proporcionar millor assistència per a tasques comunes de desenvolupament." + "description": "Configura les indicacions de suport utilitzades per a accions ràpides com millorar indicacions, explicar codi i solucionar problemes. Aquestes indicacions ajuden Zoo a proporcionar millor assistència per a tasques comunes de desenvolupament." }, "codeIndex": { "title": "Indexació de codi", @@ -223,10 +223,10 @@ "disabledAriaLabel": "Aprovació automàtica desactivada: seleccioneu primer les opcions", "readOnly": { "label": "Llegir", - "description": "Quan està activat, Roo veurà automàticament el contingut del directori i llegirà fitxers sense que calgui fer clic al botó Aprovar.", + "description": "Quan està activat, Zoo veurà automàticament el contingut del directori i llegirà fitxers sense que calgui fer clic al botó Aprovar.", "outsideWorkspace": { "label": "Incloure fitxers fora de l'espai de treball", - "description": "Permetre a Roo llegir fitxers fora de l'espai de treball actual sense requerir aprovació." + "description": "Permetre a Zoo llegir fitxers fora de l'espai de treball actual sense requerir aprovació." } }, "write": { @@ -235,11 +235,11 @@ "delayLabel": "Retard després d'escriptura per permetre que els diagnòstics detectin possibles problemes", "outsideWorkspace": { "label": "Incloure fitxers fora de l'espai de treball", - "description": "Permetre a Roo crear i editar fitxers fora de l'espai de treball actual sense requerir aprovació." + "description": "Permetre a Zoo crear i editar fitxers fora de l'espai de treball actual sense requerir aprovació." }, "protected": { "label": "Incloure fitxers protegits", - "description": "Permetre a Roo crear i editar fitxers protegits (com .rooignore i fitxers de configuració .roo/) sense requerir aprovació." + "description": "Permetre a Zoo crear i editar fitxers protegits (com .rooignore i fitxers de configuració .roo/) sense requerir aprovació." } }, "mcp": { @@ -306,7 +306,7 @@ "searchProviderPlaceholder": "Cerca proveïdors", "noProviderMatchFound": "No s'han trobat proveïdors", "noMatchFound": "No s'han trobat perfils coincidents", - "retiredProviderMessage": "Ho sentim, aquest proveïdor ja no és compatible. Hem vist molt pocs usuaris de Roo que realment l'utilitzaven i necessitem reduir l'abast del nostre codi per poder seguir avançant ràpidament i servir bé la nostra comunitat en aquest espai. Va ser una decisió molt difícil, però ens permet centrar-nos en el que més t'importa. Ho sabem, és una llàstima.", + "retiredProviderMessage": "Aquest proveïdor ja no està disponible. Selecciona un proveïdor compatible per continuar.", "vscodeLmDescription": "L'API del model de llenguatge de VS Code us permet executar models proporcionats per altres extensions de VS Code (incloent-hi, però no limitat a, GitHub Copilot). La manera més senzilla de començar és instal·lar les extensions Copilot i Copilot Chat des del VS Code Marketplace.", "awsCustomArnUse": "Introduïu un ARN vàlid d'Amazon Bedrock per al model que voleu utilitzar. Exemples de format:", "awsCustomArnDesc": "Assegureu-vos que la regió a l'ARN coincideix amb la regió d'AWS seleccionada anteriorment.", @@ -456,7 +456,7 @@ "draftModelDesc": "El model d'esborrany ha de ser de la mateixa família de models perquè la descodificació especulativa funcioni correctament.", "selectDraftModel": "Seleccionar model d'esborrany", "noModelsFound": "No s'han trobat models d'esborrany. Assegureu-vos que LM Studio s'està executant amb el mode servidor habilitat.", - "description": "LM Studio permet executar models localment al vostre ordinador. Per a instruccions sobre com començar, consulteu la seva Guia d'inici ràpid. També necessitareu iniciar la funció de Servidor Local de LM Studio per utilitzar-la amb aquesta extensió. Nota: Roo Code utilitza prompts complexos i funciona millor amb models Claude. Els models menys capaços poden no funcionar com s'espera." + "description": "LM Studio permet executar models localment al vostre ordinador. Per a instruccions sobre com començar, consulteu la seva Guia d'inici ràpid. També necessitareu iniciar la funció de Servidor Local de LM Studio per utilitzar-la amb aquesta extensió. Nota: Zoo Code utilitza prompts complexos i funciona millor amb models Claude. Els models menys capaços poden no funcionar com s'espera." }, "ollama": { "baseUrl": "URL base (opcional)", @@ -466,11 +466,7 @@ "numCtx": "Mida de la finestra de context (num_ctx)", "numCtxHelp": "Sobreescriu la mida de la finestra de context per defecte del model. Deixeu-ho en blanc per utilitzar la configuració del Modelfile del model. El valor mínim és 128.", "description": "Ollama permet executar models localment al vostre ordinador. Per a instruccions sobre com començar, consulteu la Guia d'inici ràpid.", - "warning": "Nota: Roo Code utilitza prompts complexos i funciona millor amb models Claude. Els models menys capaços poden no funcionar com s'espera." - }, - "roo": { - "authenticatedMessage": "Autenticat de forma segura a través del teu compte de Roo Code Cloud.", - "connectButton": "Connecta amb Roo Code Cloud" + "warning": "Nota: Zoo Code utilitza prompts complexos i funciona millor amb models Claude. Els models menys capaços poden no funcionar com s'espera." }, "openRouter": { "providerRouting": { @@ -480,7 +476,7 @@ } }, "customModel": { - "capabilities": "Configureu les capacitats i preus per al vostre model personalitzat compatible amb OpenAI. Tingueu cura en especificar les capacitats del model, ja que poden afectar com funciona Roo Code.", + "capabilities": "Configureu les capacitats i preus per al vostre model personalitzat compatible amb OpenAI. Tingueu cura en especificar les capacitats del model, ja que poden afectar com funciona Zoo Code.", "maxTokens": { "label": "Màxim de tokens de sortida", "description": "El nombre màxim de tokens que el model pot generar en una resposta. (Establiu -1 per permetre que el servidor estableixi el màxim de tokens.)" @@ -527,7 +523,7 @@ }, "consecutiveMistakeLimit": { "label": "Límit d'errors i repeticions", - "description": "Nombre d'errors consecutius o accions repetides abans de mostrar el diàleg 'En Roo està tenint problemes'. Estableix a 0 per desactivar aquest mecanisme de seguretat (no s'activarà mai).", + "description": "Nombre d'errors consecutius o accions repetides abans de mostrar el diàleg 'En Zoo està tenint problemes'. Estableix a 0 per desactivar aquest mecanisme de seguretat (no s'activarà mai).", "unlimitedDescription": "Reintents il·limitats habilitats (procediment automàtic). El diàleg no apareixerà mai.", "warning": "⚠️ Establir a 0 permet reintents il·limitats que poden consumir un ús significatiu de l'API" }, @@ -563,18 +559,18 @@ }, "enable": { "label": "Habilitar punts de control automàtics", - "description": "Quan està habilitat, Roo crearà automàticament punts de control durant l'execució de tasques, facilitant la revisió de canvis o la reversió a estats anteriors. <0>Més informació" + "description": "Quan està habilitat, Zoo crearà automàticament punts de control durant l'execució de tasques, facilitant la revisió de canvis o la reversió a estats anteriors. <0>Més informació" } }, "notifications": { "sound": { "label": "Habilitar efectes de so", - "description": "Quan està habilitat, Roo reproduirà efectes de so per a notificacions i esdeveniments.", + "description": "Quan està habilitat, Zoo reproduirà efectes de so per a notificacions i esdeveniments.", "volumeLabel": "Volum" }, "tts": { "label": "Habilitar text a veu", - "description": "Quan està habilitat, Roo llegirà en veu alta les seves respostes utilitzant text a veu.", + "description": "Quan està habilitat, Zoo llegirà en veu alta les seves respostes utilitzant text a veu.", "speedLabel": "Velocitat" } }, @@ -582,7 +578,7 @@ "description": "Controleu quina informació s'inclou a la finestra de context de la IA, afectant l'ús de token i la qualitat de resposta", "autoCondenseContextPercent": { "label": "Llindar per activar la condensació intel·ligent de context", - "description": "Quan la finestra de context assoleix aquest llindar, Roo la condensarà automàticament." + "description": "Quan la finestra de context assoleix aquest llindar, Zoo la condensarà automàticament." }, "condensingApiConfiguration": { "label": "Configuració d'API per a la condensació de context", @@ -598,7 +594,7 @@ }, "autoCondenseContext": { "name": "Activar automàticament la condensació intel·ligent de context", - "description": "Quan està activat, Roo condensarà automàticament el context quan s'assoleixi el llindar. Quan està desactivat, encara pots activar manualment la condensació de context." + "description": "Quan està activat, Zoo condensarà automàticament el context quan s'assoleixi el llindar. Quan està desactivat, encara pots activar manualment la condensació de context." }, "openTabs": { "label": "Límit de context de pestanyes obertes", @@ -614,7 +610,7 @@ }, "maxReadFile": { "label": "Llindar d'auto-truncament de lectura de fitxers", - "description": "Roo llegeix aquest nombre de línies quan el model omet els valors d'inici/final. Si aquest nombre és menor que el total del fitxer, Roo genera un índex de números de línia de les definicions de codi. Casos especials: -1 indica a Roo que llegeixi tot el fitxer (sense indexació), i 0 indica que no llegeixi cap línia i proporcioni només índexs de línia per a un context mínim. Valors més baixos minimitzen l'ús inicial de context, permetent lectures posteriors de rangs de línies precisos. Les sol·licituds amb inici/final explícits no estan limitades per aquesta configuració.", + "description": "Zoo llegeix aquest nombre de línies quan el model omet els valors d'inici/final. Si aquest nombre és menor que el total del fitxer, Zoo genera un índex de números de línia de les definicions de codi. Casos especials: -1 indica a Zoo que llegeixi tot el fitxer (sense indexació), i 0 indica que no llegeixi cap línia i proporcioni només índexs de línia per a un context mínim. Valors més baixos minimitzen l'ús inicial de context, permetent lectures posteriors de rangs de línies precisos. Les sol·licituds amb inici/final explícits no estan limitades per aquesta configuració.", "lines": "línies", "always_full_read": "Llegeix sempre el fitxer sencer" }, @@ -685,15 +681,15 @@ }, "outputLineLimit": { "label": "Límit de sortida del terminal", - "description": "Conserva les primeres i últimes línies i descarta les del mig per mantenir-se sota el límit. Redueix per estalviar tokens; augmenta per donar a Roo més detalls del mig. Roo veu un marcador on s'ha omès el contingut.<0>Aprèn-ne més" + "description": "Conserva les primeres i últimes línies i descarta les del mig per mantenir-se sota el límit. Redueix per estalviar tokens; augmenta per donar a Zoo més detalls del mig. Zoo veu un marcador on s'ha omès el contingut.<0>Aprèn-ne més" }, "outputCharacterLimit": { "label": "Límit de caràcters del terminal", - "description": "Anul·la el límit de línies per evitar problemes de memòria imposant un límit dur a la mida de sortida. Si se supera, manté l'inici i el final i mostra un marcador a Roo on s'ha omès el contingut. <0>Aprèn-ne més" + "description": "Anul·la el límit de línies per evitar problemes de memòria imposant un límit dur a la mida de sortida. Si se supera, manté l'inici i el final i mostra un marcador a Zoo on s'ha omès el contingut. <0>Aprèn-ne més" }, "outputPreviewSize": { "label": "Mida de la previsualització de la sortida d'ordres", - "description": "Controla quanta sortida d'ordres veu Roo directament. La sortida completa sempre es desa i és accessible quan calgui.", + "description": "Controla quanta sortida d'ordres veu Zoo directament. La sortida completa sempre es desa i és accessible quan calgui.", "options": { "small": "Petita (5KB)", "medium": "Mitjana (10KB)", @@ -706,7 +702,7 @@ }, "shellIntegrationDisabled": { "label": "Utilitza terminal en línia (recomanat)", - "description": "Executa comandes al terminal en línia (xat) per evitar perfils/integració del shell per a execucions més ràpides i fiables. Quan està desactivat, Roo usa el terminal de VS Code amb el teu perfil de shell, prompts i connectors. <0>Aprèn-ne més" + "description": "Executa comandes al terminal en línia (xat) per evitar perfils/integració del shell per a execucions més ràpides i fiables. Quan està desactivat, Zoo usa el terminal de VS Code amb el teu perfil de shell, prompts i connectors. <0>Aprèn-ne més" }, "commandDelay": { "label": "Retard de comanda del terminal", @@ -743,7 +739,7 @@ "advanced": { "diff": { "label": "Habilitar edició mitjançant diffs", - "description": "Quan està habilitat, Roo podrà editar fitxers més ràpidament i rebutjarà automàticament escriptures completes de fitxers truncats", + "description": "Quan està habilitat, Zoo podrà editar fitxers més ràpidament i rebutjarà automàticament escriptures completes de fitxers truncats", "strategy": { "label": "Estratègia de diff", "options": { @@ -760,7 +756,7 @@ }, "todoList": { "label": "Habilitar eina de llista de tasques", - "description": "Quan està habilitat, Roo pot crear i gestionar llistes de tasques per fer el seguiment del progrés de les tasques. Això ajuda a organitzar tasques complexes en passos manejables." + "description": "Quan està habilitat, Zoo pot crear i gestionar llistes de tasques per fer el seguiment del progrés de les tasques. Això ajuda a organitzar tasques complexes en passos manejables." } }, "experimental": { @@ -770,15 +766,15 @@ }, "INSERT_BLOCK": { "name": "Utilitzar eina d'inserció de contingut experimental", - "description": "Activar l'eina d'inserció de contingut experimental, permetent a Roo inserir contingut a números de línia específics sense necessitat de crear un diff." + "description": "Activar l'eina d'inserció de contingut experimental, permetent a Zoo inserir contingut a números de línia específics sense necessitat de crear un diff." }, "MULTI_SEARCH_AND_REPLACE": { "name": "Utilitzar eina diff de blocs múltiples experimental", - "description": "Quan està activat, Roo utilitzarà l'eina diff de blocs múltiples. Això intentarà actualitzar múltiples blocs de codi a l'arxiu en una sola petició." + "description": "Quan està activat, Zoo utilitzarà l'eina diff de blocs múltiples. Això intentarà actualitzar múltiples blocs de codi a l'arxiu en una sola petició." }, "CONCURRENT_FILE_READS": { "name": "Habilitar lectura concurrent de fitxers", - "description": "Quan està habilitat, Roo pot llegir múltiples fitxers en una sola sol·licitud. Quan està deshabilitat, Roo ha de llegir fitxers un per un. Deshabilitar-ho pot ajudar quan es treballa amb models menys capaços o quan voleu més control sobre l'accés als fitxers." + "description": "Quan està habilitat, Zoo pot llegir múltiples fitxers en una sola sol·licitud. Quan està deshabilitat, Zoo ha de llegir fitxers un per un. Deshabilitar-ho pot ajudar quan es treballa amb models menys capaços o quan voleu més control sobre l'accés als fitxers." }, "MARKETPLACE": { "name": "Habilitar Marketplace", @@ -786,7 +782,7 @@ }, "PREVENT_FOCUS_DISRUPTION": { "name": "Edició en segon pla", - "description": "Quan s'activa, evita la interrupció del focus de l'editor. Les edicions de fitxers es produeixen en segon pla sense obrir la vista diff o robar el focus. Pots continuar treballant sense interrupcions mentre Roo fa canvis. Els fitxers poden obrir-se sense focus per capturar diagnòstics o romandre completament tancats." + "description": "Quan s'activa, evita la interrupció del focus de l'editor. Les edicions de fitxers es produeixen en segon pla sense obrir la vista diff o robar el focus. Pots continuar treballant sense interrupcions mentre Zoo fa canvis. Els fitxers poden obrir-se sense focus per capturar diagnòstics o romandre completament tancats." }, "ASSISTANT_MESSAGE_PARSER": { "name": "Utilitza el nou analitzador de missatges", @@ -800,7 +796,7 @@ "name": "Habilitar generació d'imatges amb IA", "providerLabel": "Proveïdor", "providerDescription": "Selecciona el proveïdor per a la generació d'imatges.", - "description": "Quan estigui habilitat, Roo pot generar imatges a partir de prompts de text utilitzant els models de generació d'imatges d'OpenRouter. Requereix que es configuri una clau d'API d'OpenRouter.", + "description": "Quan estigui habilitat, Zoo pot generar imatges a partir de prompts de text utilitzant els models de generació d'imatges d'OpenRouter. Requereix que es configuri una clau d'API d'OpenRouter.", "openRouterApiKeyLabel": "Clau API d'OpenRouter", "openRouterApiKeyPlaceholder": "Introdueix la teva clau API d'OpenRouter", "getApiKeyText": "Obté la teva clau API de", @@ -811,11 +807,11 @@ }, "RUN_SLASH_COMMAND": { "name": "Habilitar comandes de barra diagonal iniciades pel model", - "description": "Quan està habilitat, Roo pot executar les vostres comandes de barra diagonal per executar fluxos de treball." + "description": "Quan està habilitat, Zoo pot executar les vostres comandes de barra diagonal per executar fluxos de treball." }, "CUSTOM_TOOLS": { "name": "Habilitar eines personalitzades", - "description": "Quan està habilitat, Roo pot carregar i utilitzar eines TypeScript/JavaScript personalitzades des del directori .roo/tools del vostre projecte o ~/.roo/tools per a eines globals. Nota: aquestes eines s'aprovaran automàticament.", + "description": "Quan està habilitat, Zoo pot carregar i utilitzar eines TypeScript/JavaScript personalitzades des del directori .roo/tools del vostre projecte o ~/.roo/tools per a eines globals. Nota: aquestes eines s'aprovaran automàticament.", "toolsHeader": "Eines personalitzades disponibles", "noTools": "No s'han carregat eines personalitzades. Afegiu fitxers .ts o .js al directori .roo/tools del vostre projecte o ~/.roo/tools per a eines globals.", "refreshButton": "Actualitzar", @@ -827,7 +823,7 @@ }, "promptCaching": { "label": "Desactivar la memòria cau de prompts", - "description": "Quan està marcat, Roo no utilitzarà la memòria cau de prompts per a aquest model." + "description": "Quan està marcat, Zoo no utilitzarà la memòria cau de prompts per a aquest model." }, "temperature": { "useCustom": "Utilitzar temperatura personalitzada", @@ -857,7 +853,7 @@ } }, "modelPicker": { - "automaticFetch": "L'extensió obté automàticament la llista més recent de models disponibles a {{serviceName}}. Si no esteu segur de quin model triar, Roo Code funciona millor amb {{defaultModelId}}. També podeu cercar \"free\" per a opcions gratuïtes actualment disponibles.", + "automaticFetch": "L'extensió obté automàticament la llista més recent de models disponibles a {{serviceName}}. Si no esteu segur de quin model triar, Zoo Code funciona millor amb {{defaultModelId}}. També podeu cercar \"free\" per a opcions gratuïtes actualment disponibles.", "label": "Model", "searchPlaceholder": "Cerca", "noMatchFound": "No s'ha trobat cap coincidència", @@ -867,7 +863,7 @@ "footer": { "telemetry": { "label": "Permetre informes anònims d'errors i ús", - "description": "Ajuda a millorar Roo Code enviant dades d'ús anònimes i informes d'error. Aquesta telemetria no recull codi, prompts o informació personal. Consulta la nostra política de privacitat per a més detalls. Pots desactivar-ho en qualsevol moment." + "description": "Ajuda a millorar Zoo Code enviant dades d'ús anònimes i informes d'error. Aquesta telemetria no recull codi, prompts o informació personal. Consulta la nostra política de privacitat per a més detalls. Pots desactivar-ho en qualsevol moment." }, "settings": { "import": "Importar", diff --git a/webview-ui/src/i18n/locales/ca/welcome.json b/webview-ui/src/i18n/locales/ca/welcome.json index 23a15796b30..e74173a3625 100644 --- a/webview-ui/src/i18n/locales/ca/welcome.json +++ b/webview-ui/src/i18n/locales/ca/welcome.json @@ -1,52 +1,18 @@ { - "routers": { - "requesty": { - "description": "El teu encaminador LLM optimitzat", - "incentive": "Crèdit gratuït de $1" - }, - "openrouter": { - "description": "Una interfície unificada per als LLM" - }, - "roo": { - "description": "Els millors models gratuïts per començar", - "incentive": "Prova Roo gratis" - } - }, "landing": { "greeting": "Benvingut a Roo Code!", "introduction": "Amb una gamma de Modes integrats i ampliables, Roo Code et permet planificar, arquitectar, codificar, depurar i augmentar la teva productivitat com mai abans.", - "accountMention": "Per començar, crea el teu compte Roo Code Cloud. Obtén models potents, control web, analítica, suport i molt més.", - "getStarted": "Crea compte Roo", - "noAccount": "o utilitza sense compte" + "getStarted": "Tria el teu proveïdor" }, "providerSignup": { "heading": "Tria el teu proveïdor", "chooseProvider": "Roo necessita un proveïdor de LLM per funcionar. Tria-ne un per començar, pots afegir-ne més tard.", - "rooCloudProvider": "Proveïdor de Roo Code Cloud", - "rooCloudDescription": "La manera més fàcil de començar és amb el Proveïdor Roo Code Cloud: una mescla acurada de models gratuïts i de pagament a baix cost.", - "learnMore": "Més informació", - "useAnotherProvider": "Proveïdor de tercers", - "useAnotherProviderDescription": "Entra una clau API i comença.", - "noApiKeys": "No vols tractar amb claus API i comptes separats?", - "backToRoo": "Tria el Proveïdor Roo Code Cloud.", "goBack": "Enrere", "finish": "Finalitza" }, - "waitingForCloud": { - "heading": "Connexió a Roo Code Cloud...", - "description": "Et portarem al teu navegador per registrar-te a Roo Code Cloud. Després et portarem aquí per acabar.", - "noPrompt": "Si no se't demana que obris una URL, fes clic aquí.", - "havingTrouble": "Si has acabat de registrar-te però tens problemes, fes clic aquí.", - "pasteUrl": "Enganxa l'URL de devolució de trucada des del teu navegador:", - "docsLink": "No funciona? Consulta la documentació.", - "invalidURL": "Això no sembla una URL de devolució de trucada vàlida. Si us plau, copia el que Roo Code Cloud està mostrant al teu navegador.", - "goBack": "Enrere" - }, - "startRouter": "Recomanem utilitzar un encaminador LLM:", - "startCustom": "O pots portar la teva pròpia clau API:", "telemetry": { - "helpImprove": "Ajuda a millorar Roo Code", - "helpImproveMessage": "Roo Code recopila dades d'errors i ús per ajudar-nos a corregir errors i millorar l'extensió. Aquesta telemetria no recopila codi, indicacions o informació personal. Pots desactivar-la a configuració." + "helpImprove": "Ajuda a millorar Zoo Code", + "helpImproveMessage": "Zoo Code recopila dades d'errors i ús per ajudar-nos a corregir errors i millorar l'extensió. Aquesta telemetria no recopila codi, indicacions o informació personal. Pots desactivar-la a configuració." }, "importSettings": "Importa la configuració" } diff --git a/webview-ui/src/i18n/locales/ca/worktrees.json b/webview-ui/src/i18n/locales/ca/worktrees.json index e84c8a716bf..14c903dff00 100644 --- a/webview-ui/src/i18n/locales/ca/worktrees.json +++ b/webview-ui/src/i18n/locales/ca/worktrees.json @@ -1,28 +1,23 @@ { "title": "Worktrees", "done": "Fet", - "description": "Els worktrees de Git et permeten treballar en diverses branques alhora en directoris separats. Cada worktree té la seva pròpia finestra de VS Code amb Roo Code.", - + "description": "Els worktrees de Git et permeten treballar en diverses branques alhora en directoris separats. Cada worktree té la seva pròpia finestra de VS Code amb Zoo Code.", "notGitRepo": "Aquest espai de treball no és un repositori Git. Els worktrees necessiten un repositori Git per funcionar.", "multiRootNotSupported": "Els worktrees no són compatibles amb espais de treball de múltiples arrels. Obre una sola carpeta per fer servir worktrees.", "subfolderNotSupported": "Aquest espai de treball és una subcarpeta d'un repositori Git. Obre l'arrel del repositori per fer servir worktrees.", "gitRoot": "Arrel de Git", - "includeFileExists": "S'ha trobat el fitxer .worktreeinclude: es copiaran fitxers als worktrees nous", "noIncludeFile": "No s'ha trobat cap fitxer .worktreeinclude", "createFromGitignore": "Crea a partir de .gitignore", - "primary": "Principal", "current": "Actual", "locked": "Bloquejat", "detachedHead": "HEAD separat", "noBranch": "Sense branca", - "switchInThisWindow": "Canvia a worktree", "openInNewWindow": "Obre en una finestra nova", "delete": "Suprimeix", "newWorktree": "Worktree nou", - "createWorktree": "Crea worktree", "branchName": "Nom de la branca", "createNewBranch": "Crea una branca nova", @@ -44,7 +39,6 @@ "copyingFiles": "S'estan copiant fitxers...", "copyingProgress": "{{item}} — {{copied}} copiat", "cancel": "Cancel·la", - "deleteWorktree": "Suprimeix worktree", "deleteWarning": "Aquesta acció no es pot desfer. S'eliminarà:", "deleteWarningBranch": "La branca i qualsevol canvi sense confirmar", @@ -53,11 +47,8 @@ "forceDelete": "Força la supressió", "worktreeIsLocked": "el worktree està bloquejat", "deleting": "S'està suprimint...", - "close": "Tanca", - "showInHomeScreen": "Mostra worktrees a la pantalla d'inici", - "selector": { "worktree": "Worktree", "title": "Worktrees", diff --git a/webview-ui/src/i18n/locales/de/chat.json b/webview-ui/src/i18n/locales/de/chat.json index 8212bc0ab00..a3c82309cb4 100644 --- a/webview-ui/src/i18n/locales/de/chat.json +++ b/webview-ui/src/i18n/locales/de/chat.json @@ -1,5 +1,5 @@ { - "greeting": "Willkommen bei Roo Code", + "greeting": "Willkommen bei Zoo Code!", "task": { "title": "Aufgabe", "expand": "Aufgabe erweitern", @@ -14,17 +14,7 @@ "closeAndStart": "Aufgabe schließen und neue starten", "export": "Aufgabenverlauf exportieren", "delete": "Aufgabe löschen (Shift + Klick zum Überspringen der Bestätigung)", - "share": "Aufgabe teilen", "condenseContext": "Kontext intelligent komprimieren", - "shareWithOrganization": "Mit Organisation teilen", - "shareWithOrganizationDescription": "Nur Mitglieder deiner Organisation können zugreifen", - "sharePublicly": "Öffentlich teilen", - "sharePubliclyDescription": "Jeder mit dem Link kann zugreifen", - "connectToCloud": "Mit Cloud verbinden", - "connectToCloudDescription": "Melde dich bei Roo Code Cloud an, um Aufgaben zu teilen", - "sharingDisabledByOrganization": "Freigabe von der Organisation deaktiviert", - "shareSuccessOrganization": "Organisationslink in die Zwischenablage kopiert", - "shareSuccessPublic": "Öffentlicher Link in die Zwischenablage kopiert", "openApiHistory": "API-Verlauf öffnen", "openUiHistory": "UI-Verlauf öffnen", "backToParentTask": "Übergeordnete Aufgabe" @@ -98,7 +88,7 @@ "enqueueMessage": "Nachricht zur Warteschlange hinzufügen (wird nach Abschluss der aktuellen Aufgabe gesendet)", "scrollToBottom": "Zum Chat-Ende scrollen", "scrollToLatestCheckpoint": "Zum vorherigen Checkpoint scrollen", - "about": "Roo Code ist ein ganzes KI-Entwicklerteam in deinem Editor.", + "about": "Zoo Code ist ein ganzes KI-Entwicklerteam in deinem Editor.", "docs": "Schau in unsere Dokumentation, um mehr zu erfahren.", "onboarding": "Deine Aufgabenliste in diesem Arbeitsbereich ist leer.", "rooTips": { @@ -144,7 +134,7 @@ "diffError": { "title": "Bearbeitung fehlgeschlagen" }, - "troubleMessage": "Roo hat Probleme...", + "troubleMessage": "Zoo hat Probleme...", "apiRequest": { "title": "API-Anfrage", "failed": "API-Anfrage fehlgeschlagen", @@ -162,7 +152,7 @@ "500": "Fehler auf dem Server des Anbieters. Es stimmt etwas mit der Anbieterseite nicht, mit deiner Anfrage stimmt alles.", "docs": "Dokumentation", "goToSettings": "Einstellungen", - "unknown": "Unbekannter API-Fehler. Bitte kontaktiere den Roo Code Support.", + "unknown": "Unbekannter API-Fehler. Bitte kontaktiere den Zoo Code Support.", "connection": "Verbindungsfehler. Stelle sicher, dass du eine funktionierende Internetverbindung hast.", "claudeCodeNotAuthenticated": "Du musst dich anmelden, um Claude Code zu verwenden. Gehe zu den Einstellungen und klicke auf \"Bei Claude Code anmelden\", um dich zu authentifizieren." } @@ -190,40 +180,40 @@ "wantsToFetch": "Roo möchte detaillierte Anweisungen abrufen, um bei der aktuellen Aufgabe zu helfen" }, "fileOperations": { - "wantsToRead": "Roo möchte diese Datei lesen", - "wantsToReadAndXMore": "Roo möchte diese Datei und {{count}} weitere lesen", - "wantsToReadOutsideWorkspace": "Roo möchte diese Datei außerhalb des Arbeitsbereichs lesen", - "didRead": "Roo hat diese Datei gelesen", - "wantsToEdit": "Roo möchte diese Datei bearbeiten", - "wantsToEditOutsideWorkspace": "Roo möchte diese Datei außerhalb des Arbeitsbereichs bearbeiten", - "wantsToEditProtected": "Roo möchte eine geschützte Konfigurationsdatei bearbeiten", - "wantsToCreate": "Roo möchte eine neue Datei erstellen", + "wantsToRead": "Zoo möchte diese Datei lesen", + "wantsToReadAndXMore": "Zoo möchte diese Datei und {{count}} weitere lesen", + "wantsToReadOutsideWorkspace": "Zoo möchte diese Datei außerhalb des Arbeitsbereichs lesen", + "didRead": "Zoo hat diese Datei gelesen", + "wantsToEdit": "Zoo möchte diese Datei bearbeiten", + "wantsToEditOutsideWorkspace": "Zoo möchte diese Datei außerhalb des Arbeitsbereichs bearbeiten", + "wantsToEditProtected": "Zoo möchte eine geschützte Konfigurationsdatei bearbeiten", + "wantsToCreate": "Zoo möchte eine neue Datei erstellen", "wantsToSearchReplace": "Roo möchte in dieser Datei suchen und ersetzen", "didSearchReplace": "Roo hat Suchen und Ersetzen in dieser Datei durchgeführt", - "wantsToInsert": "Roo möchte Inhalte in diese Datei einfügen", - "wantsToInsertWithLineNumber": "Roo möchte Inhalte in diese Datei in Zeile {{lineNumber}} einfügen", - "wantsToInsertAtEnd": "Roo möchte Inhalte am Ende dieser Datei anhängen", - "wantsToReadMultiple": "Roo möchte mehrere Dateien lesen", - "wantsToApplyBatchChanges": "Roo möchte Änderungen an mehreren Dateien vornehmen", - "wantsToGenerateImage": "Roo möchte ein Bild generieren", - "wantsToGenerateImageOutsideWorkspace": "Roo möchte ein Bild außerhalb des Arbeitsbereichs generieren", - "wantsToGenerateImageProtected": "Roo möchte ein Bild an einem geschützten Ort generieren", - "didGenerateImage": "Roo hat ein Bild generiert" + "wantsToInsert": "Zoo möchte Inhalte in diese Datei einfügen", + "wantsToInsertWithLineNumber": "Zoo möchte Inhalte in diese Datei in Zeile {{lineNumber}} einfügen", + "wantsToInsertAtEnd": "Zoo möchte Inhalte am Ende dieser Datei anhängen", + "wantsToReadMultiple": "Zoo möchte mehrere Dateien lesen", + "wantsToApplyBatchChanges": "Zoo möchte Änderungen an mehreren Dateien vornehmen", + "wantsToGenerateImage": "Zoo möchte ein Bild generieren", + "wantsToGenerateImageOutsideWorkspace": "Zoo möchte ein Bild außerhalb des Arbeitsbereichs generieren", + "wantsToGenerateImageProtected": "Zoo möchte ein Bild an einem geschützten Ort generieren", + "didGenerateImage": "Zoo hat ein Bild generiert" }, "directoryOperations": { - "wantsToViewTopLevel": "Roo möchte die Dateien auf oberster Ebene in diesem Verzeichnis anzeigen", - "didViewTopLevel": "Roo hat die Dateien auf oberster Ebene in diesem Verzeichnis angezeigt", - "wantsToViewRecursive": "Roo möchte rekursiv alle Dateien in diesem Verzeichnis anzeigen", - "didViewRecursive": "Roo hat rekursiv alle Dateien in diesem Verzeichnis angezeigt", - "wantsToSearch": "Roo möchte dieses Verzeichnis nach {{regex}} durchsuchen", - "didSearch": "Roo hat dieses Verzeichnis nach {{regex}} durchsucht", - "wantsToSearchOutsideWorkspace": "Roo möchte dieses Verzeichnis (außerhalb des Arbeitsbereichs) nach {{regex}} durchsuchen", - "didSearchOutsideWorkspace": "Roo hat dieses Verzeichnis (außerhalb des Arbeitsbereichs) nach {{regex}} durchsucht", - "wantsToViewTopLevelOutsideWorkspace": "Roo möchte die Dateien auf oberster Ebene in diesem Verzeichnis (außerhalb des Arbeitsbereichs) anzeigen", - "didViewTopLevelOutsideWorkspace": "Roo hat die Dateien auf oberster Ebene in diesem Verzeichnis (außerhalb des Arbeitsbereichs) angezeigt", - "wantsToViewRecursiveOutsideWorkspace": "Roo möchte rekursiv alle Dateien in diesem Verzeichnis (außerhalb des Arbeitsbereichs) anzeigen", - "didViewRecursiveOutsideWorkspace": "Roo hat rekursiv alle Dateien in diesem Verzeichnis (außerhalb des Arbeitsbereichs) angezeigt", - "wantsToViewMultipleDirectories": "Roo möchte mehrere Verzeichnisse anzeigen" + "wantsToViewTopLevel": "Zoo möchte die Dateien auf oberster Ebene in diesem Verzeichnis anzeigen", + "didViewTopLevel": "Zoo hat die Dateien auf oberster Ebene in diesem Verzeichnis angezeigt", + "wantsToViewRecursive": "Zoo möchte rekursiv alle Dateien in diesem Verzeichnis anzeigen", + "didViewRecursive": "Zoo hat rekursiv alle Dateien in diesem Verzeichnis angezeigt", + "wantsToSearch": "Zoo möchte dieses Verzeichnis nach {{regex}} durchsuchen", + "didSearch": "Zoo hat dieses Verzeichnis nach {{regex}} durchsucht", + "wantsToSearchOutsideWorkspace": "Zoo möchte dieses Verzeichnis (außerhalb des Arbeitsbereichs) nach {{regex}} durchsuchen", + "didSearchOutsideWorkspace": "Zoo hat dieses Verzeichnis (außerhalb des Arbeitsbereichs) nach {{regex}} durchsucht", + "wantsToViewTopLevelOutsideWorkspace": "Zoo möchte die Dateien auf oberster Ebene in diesem Verzeichnis (außerhalb des Arbeitsbereichs) anzeigen", + "didViewTopLevelOutsideWorkspace": "Zoo hat die Dateien auf oberster Ebene in diesem Verzeichnis (außerhalb des Arbeitsbereichs) angezeigt", + "wantsToViewRecursiveOutsideWorkspace": "Zoo möchte rekursiv alle Dateien in diesem Verzeichnis (außerhalb des Arbeitsbereichs) anzeigen", + "didViewRecursiveOutsideWorkspace": "Zoo hat rekursiv alle Dateien in diesem Verzeichnis (außerhalb des Arbeitsbereichs) angezeigt", + "wantsToViewMultipleDirectories": "Zoo möchte mehrere Verzeichnisse anzeigen" }, "commandOutput": "Befehlsausgabe", "commandExecution": { @@ -245,24 +235,24 @@ "response": "Antwort", "arguments": "Argumente", "text": { - "rooSaid": "Roo hat gesagt" + "rooSaid": "Zoo hat gesagt" }, "feedback": { "youSaid": "Du hast gesagt" }, "mcp": { - "wantsToUseTool": "Roo möchte ein Tool auf dem {{serverName}} MCP-Server verwenden", - "wantsToAccessResource": "Roo möchte auf eine Ressource auf dem {{serverName}} MCP-Server zugreifen" + "wantsToUseTool": "Zoo möchte ein Tool auf dem {{serverName}} MCP-Server verwenden", + "wantsToAccessResource": "Zoo möchte auf eine Ressource auf dem {{serverName}} MCP-Server zugreifen" }, "modes": { - "wantsToSwitch": "Roo möchte zum {{mode}}-Modus wechseln", - "wantsToSwitchWithReason": "Roo möchte zum {{mode}}-Modus wechseln, weil: {{reason}}", - "didSwitch": "Roo hat zum {{mode}}-Modus gewechselt", - "didSwitchWithReason": "Roo hat zum {{mode}}-Modus gewechselt, weil: {{reason}}" + "wantsToSwitch": "Zoo möchte zum {{mode}}-Modus wechseln", + "wantsToSwitchWithReason": "Zoo möchte zum {{mode}}-Modus wechseln, weil: {{reason}}", + "didSwitch": "Zoo hat zum {{mode}}-Modus gewechselt", + "didSwitchWithReason": "Zoo hat zum {{mode}}-Modus gewechselt, weil: {{reason}}" }, "subtasks": { - "wantsToCreate": "Roo möchte eine neue Teilaufgabe im {{mode}}-Modus erstellen", - "wantsToFinish": "Roo möchte diese Teilaufgabe abschließen", + "wantsToCreate": "Zoo möchte eine neue Teilaufgabe im {{mode}}-Modus erstellen", + "wantsToFinish": "Zoo möchte diese Teilaufgabe abschließen", "newTaskContent": "Teilaufgabenanweisungen", "completionContent": "Teilaufgabe abgeschlossen", "resultContent": "Teilaufgabenergebnisse", @@ -271,7 +261,7 @@ "goToSubtask": "Aufgabe anzeigen" }, "questions": { - "hasQuestion": "Roo hat eine Frage" + "hasQuestion": "Zoo hat eine Frage" }, "taskCompleted": "Aufgabe abgeschlossen", "modelResponseIncomplete": "Modellantwort unvollständig", @@ -330,31 +320,24 @@ } }, "skill": { - "wantsToLoad": "Roo möchte eine Fähigkeit laden", - "didLoad": "Roo hat eine Fähigkeit geladen" + "wantsToLoad": "Zoo möchte eine Fähigkeit laden", + "didLoad": "Zoo hat eine Fähigkeit geladen" }, "followUpSuggest": { "copyToInput": "In Eingabefeld kopieren (oder Shift + Klick)", "timerPrefix": "Automatische Genehmigung aktiviert. Wähle in {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}} veröffentlicht", - "support": "Bitte unterstütze Roo Code, indem du uns auf GitHub einen Stern gibst.", - "stealthModel": { - "feature": "Zeitlich begrenztes KOSTENLOSES Stealth-Modell - Code Supernova: Jetzt mit einem 1M Token Kontextfenster erweitert! Ein vielseitiges agentisches Coding-Modell, das Bildeingaben unterstützt und über Roo Code Cloud zugänglich ist.", - "note": "(Hinweis: Prompts und Vervollständigungen werden vom Modellersteller protokolliert und zur Verbesserung des Modells verwendet)", - "connectButton": "Mit Roo Code Cloud verbinden", - "selectModel": "Wähle roo/code-supernova vom Roo Code Cloud-Provider in den Einstellungen aus, um zu beginnen.", - "goToSettingsButton": "Zu den Einstellungen" - }, + "title": "Zoo Code {{version}} veröffentlicht", + "support": "Bitte unterstütze Zoo Code, indem du uns auf GitHub einen Stern gibst.", "handoff": { - "heading": "Das Roo Code-Plugin verschwindet nicht.", - "description": "Du hast vielleicht die neuliche Ankündigung gesehen, dass Roo Code 3 Millionen Installationen erreicht hat und das ursprüngliche Team sich voll auf Roomote konzentriert. Wir wissen, dass diese Nachricht für viele von euch schwer war. Dieses Plugin bedeutet uns und dir sehr viel, und wir hören dich. Die gute Nachricht: ein Community-Team hat sich bereit erklärt, Roo Code weiterzuführen, und wir arbeiten mit ihnen an einer offiziellen Übergabe, damit das Plugin, auf das du dich verlässt, weiterhin gepflegt und verbessert wird.", - "readMore": "Die ursprüngliche Ankündigung von Matt Rubens lesen" + "heading": "Zoo Code ist zurück – jetzt als Community-gepflegtes Plugin namens Zoo Code!!", + "description": "Falls du es nicht mitbekommen hast: Das Zoo Code Team hat vor Kurzem angekündigt, die Entwicklung von Zoo Code einzustellen und die bisherige Arbeit zu archivieren. Aber keine Sorge: Die Community ist eingesprungen, um das Vermächtnis von Zoo Code unter neuem Namen und in einem neuen Zuhause weiterzuführen! Wir sind nicht mehr nur ein einzelnes \"Roo\", sondern eine Community – ein \"Zoo\", wenn du so willst. Zoo Code ist ein Community-gepflegtes Plugin, das dort weitermacht, wo Zoo Code aufgehört hat. Wir wollen den Geist von Roo bewahren und gleichzeitig neue Funktionen und Verbesserungen einführen. Dem gesamten Zoo Code Team gilt ein riesiges Dankeschön für die unglaubliche Arbeit und dafür, dass es so ein großartiges Tool für Entwickler geschaffen hat. Wir freuen uns darauf, auf diesem Fundament weiterzubauen und zu sehen, wohin die Community Zoo Code in Zukunft führt!", + "readMore": "Sieh dir die neue Zoo Code Startseite an und lies die vollständige Ankündigung" }, "release": { "heading": "Was ist neu:", - "gpt55": "GPT-5.5 via OpenAI Codex: GPT-5.5-Unterstützung im OpenAI Codex-Provider hinzugefügt, damit du das neueste Modell direkt aus Roo Code heraus nutzen kannst.", + "gpt55": "GPT-5.5 via OpenAI Codex: GPT-5.5-Unterstützung im OpenAI Codex-Provider hinzugefügt, damit du das neueste Modell direkt in Zoo Code nutzen kannst.", "claudeOpus47": "Claude Opus 4.7 auf Vertex AI: Claude Opus 4.7 zum Vertex AI-Provider hinzugefügt – Anthropics neuestes Flaggschiff-Reasoning-Modell.", "checkpointNav": "Navigation zu vorherigen Checkpoints: Neue Steuerelemente im Chat, um durch frühere Checkpoints zurückzuspringen, mit vollständiger i18n-Unterstützung." }, @@ -380,24 +363,24 @@ "profileViolationWarning": "Das aktuelle Profil ist nicht kompatibel mit den Einstellungen deiner Organisation", "shellIntegration": { "title": "Befehlsausführungswarnung", - "description": "Dein Befehl wird ohne VSCode Terminal-Shell-Integration ausgeführt. Um diese Warnung zu unterdrücken, kannst du die Shell-Integration im Abschnitt Terminal der Roo Code Einstellungen deaktivieren oder die VSCode Terminal-Integration mit dem Link unten beheben.", + "description": "Dein Befehl wird ohne VSCode Terminal-Shell-Integration ausgeführt. Um diese Warnung zu unterdrücken, kannst du die Shell-Integration im Abschnitt Terminal der Zoo Code Einstellungen deaktivieren oder die VSCode Terminal-Integration mit dem Link unten beheben.", "troubleshooting": "Klicke hier für die Shell-Integrationsdokumentation." }, "ask": { "autoApprovedRequestLimitReached": { "title": "Limit für automatisch genehmigte Anfragen erreicht", - "description": "Roo hat das automatisch genehmigte Limit von {{count}} API-Anfrage(n) erreicht. Möchtest du den Zähler zurücksetzen und mit der Aufgabe fortfahren?", + "description": "Zoo hat das automatisch genehmigte Limit von {{count}} API-Anfrage(n) erreicht. Möchtest du den Zähler zurücksetzen und mit der Aufgabe fortfahren?", "button": "Zurücksetzen und fortfahren" }, "autoApprovedCostLimitReached": { - "description": "Roo hat das automatisch genehmigte Kostenlimit von ${{count}} erreicht. Möchten Sie die Kosten zurücksetzen und mit der Aufgabe fortfahren?", + "description": "Zoo hat das automatisch genehmigte Kostenlimit von ${{count}} erreicht. Möchten Sie die Kosten zurücksetzen und mit der Aufgabe fortfahren?", "title": "Kostengrenze für automatische Genehmigung erreicht", "button": "Zurücksetzen und Fortfahren" } }, "codebaseSearch": { - "wantsToSearch": "Roo möchte den Codebase nach {{query}} durchsuchen", - "wantsToSearchWithPath": "Roo möchte den Codebase nach {{query}} in {{path}} durchsuchen", + "wantsToSearch": "Zoo möchte den Codebase nach {{query}} durchsuchen", + "wantsToSearchWithPath": "Zoo möchte den Codebase nach {{query}} in {{path}} durchsuchen", "didSearch_one": "1 Ergebnis gefunden", "didSearch_other": "{{count}} Ergebnisse gefunden", "resultTooltip": "Ähnlichkeitswert: {{score}} (klicken zum Öffnen der Datei)" @@ -438,7 +421,7 @@ "ariaLabel": "Version {{version}} - Klicken Sie, um die Versionshinweise anzuzeigen" }, "rooCloudCTA": { - "title": "Roo Code Cloud entwickelt sich weiter!", + "title": "Zoo Code Cloud entwickelt sich weiter!", "description": "Führe Remote-Agenten in der Cloud aus, greife von überall auf deine Aufgaben zu, arbeite mit anderen zusammen und vieles mehr.", "joinWaitlist": "Melde dich an, um die neuesten Updates zu erhalten." }, @@ -479,8 +462,8 @@ "clickToEdit": "Klicken zum Bearbeiten der Nachricht" }, "slashCommand": { - "wantsToRun": "Roo möchte einen Slash-Befehl ausführen", - "didRun": "Roo hat einen Slash-Befehl ausgeführt" + "wantsToRun": "Zoo möchte einen Slash-Befehl ausführen", + "didRun": "Zoo hat einen Slash-Befehl ausgeführt" }, "todo": { "partial": "{{completed}} von {{total}} To-Dos erledigt", @@ -499,11 +482,11 @@ "openMcpSettings": "MCP-Einstellungen öffnen" }, "readCommandOutput": { - "title": "Roo las Befehlsausgabe" + "title": "Zoo las Befehlsausgabe" }, "retiredProvider": { "title": "Anbieter wird nicht mehr unterstützt", - "message": "Leider wird dieser Anbieter nicht mehr unterstützt. Wir haben festgestellt, dass nur sehr wenige Roo-Nutzer ihn tatsächlich verwendet haben, und wir müssen den Umfang unserer Codebasis reduzieren, damit wir weiterhin schnell liefern und unserer Community in diesem Bereich gut dienen können. Es war eine wirklich schwere Entscheidung, aber sie ermöglicht uns, uns auf das zu konzentrieren, was dir am wichtigsten ist. Es ist ärgerlich, das wissen wir.", + "message": "Dieser Anbieter ist nicht mehr verfügbar. Wähle einen unterstützten Anbieter aus, um fortzufahren.", "openSettings": "Einstellungen öffnen" } } diff --git a/webview-ui/src/i18n/locales/de/cloud.json b/webview-ui/src/i18n/locales/de/cloud.json deleted file mode 100644 index b4c5244194d..00000000000 --- a/webview-ui/src/i18n/locales/de/cloud.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "title": "Cloud", - "profilePicture": "Profilbild", - "logOut": "Abmelden", - "testApiAuthentication": "API-Authentifizierung testen", - "signIn": "Mit Roo Code Cloud verbinden", - "connect": "Loslegen", - "cloudBenefitsTitle": "Roo Code Cloud ausprobieren", - "cloudBenefitProvider": "Zugriff auf kostenlose und kostenpflichtige Modelle, die hervorragend mit Roo funktionieren", - "cloudBenefitCloudAgents": "Aufgaben an autonome Cloud-Agenten übergeben", - "cloudBenefitTriggers": "Code-Reviews auf GitHub erhalten, Aufgaben aus Slack starten und mehr", - "cloudBenefitWalkaway": "Aufgaben von überall verfolgen und steuern (auch vom Handy)", - "cloudBenefitHistory": "Von überall auf deinen Aufgabenverlauf zugreifen und ihn mit anderen teilen", - "cloudBenefitMetrics": "Erhalte einen ganzheitlichen Überblick über deinen Token-Verbrauch", - "visitCloudWebsite": "Roo Code Cloud besuchen", - "taskSync": "Aufgabensynchronisierung", - "taskSyncDescription": "Synchronisiere deine Aufgaben zum Anzeigen und Teilen in Roo Code Cloud", - "taskSyncManagedByOrganization": "Die Aufgabensynchronisierung wird von deiner Organisation verwaltet", - "usageMetricsAlwaysReported": "Modellnutzungsinformationen werden bei Anmeldung immer gemeldet", - "authWaiting": "Warte auf Abschluss der Authentifizierung...", - "havingTrouble": "Probleme?", - "pasteCallbackUrl": "Kopiere die Redirect-URL aus deinem Browser und füge sie hier ein:", - "startOver": "Von vorne beginnen", - "personalAccount": "Persönliches Konto", - "switchAccount": "Roo Code Cloud Konto wechseln", - "createTeamAccount": "Team-Konto erstellen", - "cloudUrlPillLabel": "Roo Code Cloud URL", - "upsell": { - "autoApprovePowerUser": "Roo etwas Unabhängigkeit geben? Kontrolliere es von überall mit Roo Code Cloud. Mehr erfahren.", - "longRunningTask": "Das könnte eine Weile dauern. Mit Cloud von überall weitermachen.", - "taskList": "Gefällt dir Roo? Schau dir Roo Code Cloud an: Verfolge und steuere deine Aufgaben von überall, führe autonome Cloud-Agenten aus, erhalte Nutzungsstatistiken und mehr. Erfahre mehr." - } -} diff --git a/webview-ui/src/i18n/locales/de/marketplace.json b/webview-ui/src/i18n/locales/de/marketplace.json index 545e86bc910..49f784df038 100644 --- a/webview-ui/src/i18n/locales/de/marketplace.json +++ b/webview-ui/src/i18n/locales/de/marketplace.json @@ -1,5 +1,5 @@ { - "title": "Roo Marketplace", + "title": "Zoo Marketplace", "tabs": { "installed": "Installiert", "settings": "Einstellungen", diff --git a/webview-ui/src/i18n/locales/de/mcp.json b/webview-ui/src/i18n/locales/de/mcp.json index 50d27395a6c..a8aac6ee37b 100644 --- a/webview-ui/src/i18n/locales/de/mcp.json +++ b/webview-ui/src/i18n/locales/de/mcp.json @@ -2,16 +2,16 @@ "title": "MCP-Server", "done": "Fertig", "marketplace": "MCP-Marktplatz", - "description": "Das <0>Model Context Protocol ermöglicht die Kommunikation mit lokal laufenden MCP-Servern, die zusätzliche Tools und Ressourcen zur Erweiterung der Fähigkeiten von Roo bereitstellen. Du kannst <1>von der Community erstellte Server verwenden oder Roo bitten, neue Tools speziell für deinen Workflow zu erstellen (z.B. \"ein Tool hinzufügen, das die neueste npm-Dokumentation abruft\").", + "description": "Das <0>Model Context Protocol ermöglicht die Kommunikation mit lokal laufenden MCP-Servern, die zusätzliche Tools und Ressourcen zur Erweiterung der Fähigkeiten von Zoo bereitstellen. Du kannst <1>von der Community erstellte Server verwenden oder Zoo bitten, neue Tools speziell für deinen Workflow zu erstellen (z.B. \"ein Tool hinzufügen, das die neueste npm-Dokumentation abruft\").", "instructions": "Anweisungen", "enableToggle": { "title": "MCP-Server aktivieren", - "description": "Schalte dies EIN, damit Roo Tools von verbundenen MCP-Servern verwenden kann. Dies gibt Roo mehr Möglichkeiten. Wenn du diese zusätzlichen Tools nicht verwenden möchtest, schalte es AUS, um API-Token-Kosten zu senken." + "description": "Schalte dies EIN, damit Zoo Tools von verbundenen MCP-Servern verwenden kann. Dies gibt Zoo mehr Möglichkeiten. Wenn du diese zusätzlichen Tools nicht verwenden möchtest, schalte es AUS, um API-Token-Kosten zu senken." }, "enableServerCreation": { "title": "MCP-Server-Erstellung aktivieren", - "description": "Aktiviere dies, damit Roo dir helfen kann, <1>neue benutzerdefinierte MCP-Server zu erstellen. <0>Erfahre mehr über Server-Erstellung", - "hint": "Hinweis: Um API-Token-Kosten zu senken, deaktiviere diese Einstellung, wenn du Roo nicht aktiv darum bittest, einen neuen MCP-Server zu erstellen." + "description": "Aktiviere dies, damit Zoo dir helfen kann, <1>neue benutzerdefinierte MCP-Server zu erstellen. <0>Erfahre mehr über Server-Erstellung", + "hint": "Hinweis: Um API-Token-Kosten zu senken, deaktiviere diese Einstellung, wenn du Zoo nicht aktiv darum bittest, einen neuen MCP-Server zu erstellen." }, "editGlobalMCP": "Globale MCP bearbeiten", "editProjectMCP": "Projekt-MCP bearbeiten", diff --git a/webview-ui/src/i18n/locales/de/prompts.json b/webview-ui/src/i18n/locales/de/prompts.json index 6e7c4bdc754..551c217125e 100644 --- a/webview-ui/src/i18n/locales/de/prompts.json +++ b/webview-ui/src/i18n/locales/de/prompts.json @@ -33,7 +33,7 @@ "roleDefinition": { "title": "Rollendefinition", "resetToDefault": "Auf Standardwerte zurücksetzen", - "description": "Definiere Roos Expertise und Persönlichkeit für diesen Modus. Diese Beschreibung prägt, wie Roo sich präsentiert und an Aufgaben herangeht." + "description": "Definiere Roos Expertise und Persönlichkeit für diesen Modus. Diese Beschreibung prägt, wie Zoo sich präsentiert und an Aufgaben herangeht." }, "description": { "title": "Kurzbeschreibung (für Menschen)", @@ -102,7 +102,7 @@ "types": { "ENHANCE": { "label": "Prompt verbessern", - "description": "Verwenden Sie die Prompt-Verbesserung, um maßgeschneiderte Vorschläge oder Verbesserungen für Ihre Eingaben zu erhalten. Dies stellt sicher, dass Roo Ihre Absicht versteht und die bestmöglichen Antworten liefert. Verfügbar über das ✨-Symbol im Chat." + "description": "Verwenden Sie die Prompt-Verbesserung, um maßgeschneiderte Vorschläge oder Verbesserungen für Ihre Eingaben zu erhalten. Dies stellt sicher, dass Zoo Ihre Absicht versteht und die bestmöglichen Antworten liefert. Verfügbar über das ✨-Symbol im Chat." }, "CONDENSE": { "label": "Kontextverdichtung", diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json index 6cb1ebc3773..2164d79f9d9 100644 --- a/webview-ui/src/i18n/locales/de/settings.json +++ b/webview-ui/src/i18n/locales/de/settings.json @@ -40,7 +40,7 @@ "ui": "UI", "experimental": "Experimentell", "language": "Sprache", - "about": "Über Roo Code", + "about": "Über Zoo Code", "skills": "Skills" }, "about": { @@ -56,7 +56,7 @@ "label": "Sicherheitslücke entdeckt?", "link": "Folge unserem Offenlegungsprozess" }, - "community": "Möchtest du Tipps oder dich einfach mit anderen Roo Code-Nutzern austauschen? Tritt reddit.com/r/RooCode oder discord.gg/roocode bei", + "community": "Möchtest du Tipps oder dich einfach mit anderen Zoo Code-Nutzern austauschen? Tritt reddit.com/r/RooCode oder discord.gg/roocode bei", "contactAndCommunity": "Kontakt & Community", "manageSettings": "Einstellungen verwalten", "debugMode": { @@ -100,7 +100,7 @@ "footer": "Nutze Slash-Befehle, um schnell auf häufig verwendete Prompts und Workflows zuzugreifen." }, "prompts": { - "description": "Konfiguriere Support-Prompts, die für schnelle Aktionen wie das Verbessern von Prompts, das Erklären von Code und das Beheben von Problemen verwendet werden. Diese Prompts helfen Roo dabei, bessere Unterstützung für häufige Entwicklungsaufgaben zu bieten." + "description": "Konfiguriere Support-Prompts, die für schnelle Aktionen wie das Verbessern von Prompts, das Erklären von Code und das Beheben von Problemen verwendet werden. Diese Prompts helfen Zoo dabei, bessere Unterstützung für häufige Entwicklungsaufgaben zu bieten." }, "codeIndex": { "title": "Codebase-Indexierung", @@ -223,10 +223,10 @@ "disabledAriaLabel": "Automatische Genehmigung deaktiviert - zuerst Optionen auswählen", "readOnly": { "label": "Lesen", - "description": "Wenn aktiviert, wird Roo automatisch Verzeichnisinhalte anzeigen und Dateien lesen, ohne dass du auf die Genehmigen-Schaltfläche klicken musst.", + "description": "Wenn aktiviert, wird Zoo automatisch Verzeichnisinhalte anzeigen und Dateien lesen, ohne dass du auf die Genehmigen-Schaltfläche klicken musst.", "outsideWorkspace": { "label": "Dateien außerhalb des Arbeitsbereichs einbeziehen", - "description": "Roo erlauben, Dateien außerhalb des aktuellen Arbeitsbereichs ohne Genehmigung zu lesen." + "description": "Zoo erlauben, Dateien außerhalb des aktuellen Arbeitsbereichs ohne Genehmigung zu lesen." } }, "write": { @@ -235,11 +235,11 @@ "delayLabel": "Verzögerung nach Schreibvorgängen, damit Diagnosefunktionen potenzielle Probleme erkennen können", "outsideWorkspace": { "label": "Dateien außerhalb des Arbeitsbereichs einbeziehen", - "description": "Roo erlauben, Dateien außerhalb des aktuellen Arbeitsbereichs ohne Genehmigung zu erstellen und zu bearbeiten." + "description": "Zoo erlauben, Dateien außerhalb des aktuellen Arbeitsbereichs ohne Genehmigung zu erstellen und zu bearbeiten." }, "protected": { "label": "Geschützte Dateien einbeziehen", - "description": "Roo erlauben, geschützte Dateien (wie .rooignore und .roo/ Konfigurationsdateien) ohne Genehmigung zu erstellen und zu bearbeiten." + "description": "Zoo erlauben, geschützte Dateien (wie .rooignore und .roo/ Konfigurationsdateien) ohne Genehmigung zu erstellen und zu bearbeiten." } }, "mcp": { @@ -306,7 +306,7 @@ "searchProviderPlaceholder": "Suchanbieter durchsuchen", "noProviderMatchFound": "Keine Anbieter gefunden", "noMatchFound": "Keine passenden Profile gefunden", - "retiredProviderMessage": "Leider wird dieser Anbieter nicht mehr unterstützt. Wir haben festgestellt, dass nur sehr wenige Roo-Nutzer ihn tatsächlich verwendet haben, und wir müssen den Umfang unserer Codebasis reduzieren, damit wir weiterhin schnell liefern und unserer Community in diesem Bereich gut dienen können. Es war eine wirklich schwere Entscheidung, aber sie ermöglicht uns, uns auf das zu konzentrieren, was dir am wichtigsten ist. Es ist ärgerlich, das wissen wir.", + "retiredProviderMessage": "Dieser Anbieter ist nicht mehr verfügbar. Wähle einen unterstützten Anbieter aus, um fortzufahren.", "vscodeLmDescription": "Die VS Code Language Model API ermöglicht das Ausführen von Modellen, die von anderen VS Code-Erweiterungen bereitgestellt werden (einschließlich, aber nicht beschränkt auf GitHub Copilot). Der einfachste Weg, um zu starten, besteht darin, die Erweiterungen Copilot und Copilot Chat aus dem VS Code Marketplace zu installieren.", "awsCustomArnUse": "Geben Sie eine gültige Amazon Bedrock ARN für das Modell ein, das Sie verwenden möchten. Formatbeispiele:", "awsCustomArnDesc": "Stellen Sie sicher, dass die Region in der ARN mit Ihrer oben ausgewählten AWS-Region übereinstimmt.", @@ -456,7 +456,7 @@ "draftModelDesc": "Das Entwurfsmodell muss aus derselben Modellfamilie stammen, damit das spekulative Dekodieren korrekt funktioniert.", "selectDraftModel": "Entwurfsmodell auswählen", "noModelsFound": "Keine Entwurfsmodelle gefunden. Bitte stelle sicher, dass LM Studio mit aktiviertem Servermodus läuft.", - "description": "LM Studio ermöglicht es dir, Modelle lokal auf deinem Computer auszuführen. Eine Anleitung zum Einstieg findest du in ihrem Schnellstart-Guide. Du musst auch die lokale Server-Funktion von LM Studio starten, um es mit dieser Erweiterung zu verwenden. Hinweis: Roo Code verwendet komplexe Prompts und funktioniert am besten mit Claude-Modellen. Weniger leistungsfähige Modelle funktionieren möglicherweise nicht wie erwartet." + "description": "LM Studio ermöglicht es dir, Modelle lokal auf deinem Computer auszuführen. Eine Anleitung zum Einstieg findest du in ihrem Schnellstart-Guide. Du musst auch die lokale Server-Funktion von LM Studio starten, um es mit dieser Erweiterung zu verwenden. Hinweis: Zoo Code verwendet komplexe Prompts und funktioniert am besten mit Claude-Modellen. Weniger leistungsfähige Modelle funktionieren möglicherweise nicht wie erwartet." }, "ollama": { "baseUrl": "Basis-URL (optional)", @@ -466,11 +466,7 @@ "numCtx": "Kontextfenstergröße (num_ctx)", "numCtxHelp": "Überschreibt die Standard-Kontextfenstergröße des Modells. Lassen Sie das Feld leer, um die Modelfile-Konfiguration des Modells zu verwenden. Der Mindestwert ist 128.", "description": "Ollama ermöglicht es dir, Modelle lokal auf deinem Computer auszuführen. Eine Anleitung zum Einstieg findest du im Schnellstart-Guide.", - "warning": "Hinweis: Roo Code verwendet komplexe Prompts und funktioniert am besten mit Claude-Modellen. Weniger leistungsfähige Modelle funktionieren möglicherweise nicht wie erwartet." - }, - "roo": { - "authenticatedMessage": "Sicher authentifiziert über dein Roo Code Cloud-Konto.", - "connectButton": "Mit Roo Code Cloud verbinden" + "warning": "Hinweis: Zoo Code verwendet komplexe Prompts und funktioniert am besten mit Claude-Modellen. Weniger leistungsfähige Modelle funktionieren möglicherweise nicht wie erwartet." }, "openRouter": { "providerRouting": { @@ -480,7 +476,7 @@ } }, "customModel": { - "capabilities": "Konfiguriere die Fähigkeiten und Preise für dein benutzerdefiniertes OpenAI-kompatibles Modell. Sei vorsichtig bei der Angabe der Modellfähigkeiten, da diese beeinflussen können, wie Roo Code funktioniert.", + "capabilities": "Konfiguriere die Fähigkeiten und Preise für dein benutzerdefiniertes OpenAI-kompatibles Modell. Sei vorsichtig bei der Angabe der Modellfähigkeiten, da diese beeinflussen können, wie Zoo Code funktioniert.", "maxTokens": { "label": "Maximale Ausgabe-Tokens", "description": "Maximale Anzahl von Tokens, die das Modell in einer Antwort generieren kann. (Geben Sie -1 an, damit der Server die maximalen Tokens festlegt.)" @@ -527,7 +523,7 @@ }, "consecutiveMistakeLimit": { "label": "Fehler- & Wiederholungslimit", - "description": "Anzahl aufeinanderfolgender Fehler oder wiederholter Aktionen, bevor der Dialog 'Roo hat Probleme' angezeigt wird. Auf 0 setzen, um diesen Sicherheitsmechanismus zu deaktivieren (er wird niemals ausgelöst).", + "description": "Anzahl aufeinanderfolgender Fehler oder wiederholter Aktionen, bevor der Dialog 'Zoo hat Probleme' angezeigt wird. Auf 0 setzen, um diesen Sicherheitsmechanismus zu deaktivieren (er wird niemals ausgelöst).", "unlimitedDescription": "Unbegrenzte Wiederholungen aktiviert (automatisches Fortfahren). Der Dialog wird niemals angezeigt.", "warning": "⚠️ Das Setzen auf 0 erlaubt unbegrenzte Wiederholungen, was zu erheblichem API-Verbrauch führen kann" }, @@ -563,18 +559,18 @@ }, "enable": { "label": "Automatische Kontrollpunkte aktivieren", - "description": "Wenn aktiviert, erstellt Roo automatisch Kontrollpunkte während der Aufgabenausführung, was die Überprüfung von Änderungen oder die Rückkehr zu früheren Zuständen erleichtert. <0>Mehr erfahren" + "description": "Wenn aktiviert, erstellt Zoo automatisch Kontrollpunkte während der Aufgabenausführung, was die Überprüfung von Änderungen oder die Rückkehr zu früheren Zuständen erleichtert. <0>Mehr erfahren" } }, "notifications": { "sound": { "label": "Soundeffekte aktivieren", - "description": "Wenn aktiviert, spielt Roo Soundeffekte für Benachrichtigungen und Ereignisse ab.", + "description": "Wenn aktiviert, spielt Zoo Soundeffekte für Benachrichtigungen und Ereignisse ab.", "volumeLabel": "Lautstärke" }, "tts": { "label": "Text-zu-Sprache aktivieren", - "description": "Wenn aktiviert, liest Roo seine Antworten mit Text-zu-Sprache laut vor.", + "description": "Wenn aktiviert, liest Zoo seine Antworten mit Text-zu-Sprache laut vor.", "speedLabel": "Geschwindigkeit" } }, @@ -582,7 +578,7 @@ "description": "Steuern Sie, welche Informationen im KI-Kontextfenster enthalten sind, was den Token-Verbrauch und die Antwortqualität beeinflusst", "autoCondenseContextPercent": { "label": "Schwellenwert für intelligente Kontextkomprimierung", - "description": "Wenn das Kontextfenster diesen Schwellenwert erreicht, wird Roo es automatisch komprimieren." + "description": "Wenn das Kontextfenster diesen Schwellenwert erreicht, wird Zoo es automatisch komprimieren." }, "condensingApiConfiguration": { "label": "API-Konfiguration für Kontextkomprimierung", @@ -598,7 +594,7 @@ }, "autoCondenseContext": { "name": "Intelligente Kontextkomprimierung automatisch auslösen", - "description": "Wenn aktiviert, wird Roo automatisch den Kontext komprimieren, wenn der Schwellenwert erreicht wird. Wenn deaktiviert, können Sie die Kontextkomprimierung weiterhin manuell auslösen." + "description": "Wenn aktiviert, wird Zoo automatisch den Kontext komprimieren, wenn der Schwellenwert erreicht wird. Wenn deaktiviert, können Sie die Kontextkomprimierung weiterhin manuell auslösen." }, "openTabs": { "label": "Geöffnete Tabs Kontextlimit", @@ -618,7 +614,7 @@ }, "maxReadFile": { "label": "Schwellenwert für automatische Dateilesekürzung", - "description": "Roo liest diese Anzahl von Zeilen, wenn das Modell keine Start-/Endwerte angibt. Wenn diese Zahl kleiner als die Gesamtzahl der Zeilen ist, erstellt Roo einen Zeilennummernindex der Codedefinitionen. Spezialfälle: -1 weist Roo an, die gesamte Datei zu lesen (ohne Indexierung), und 0 weist an, keine Zeilen zu lesen und nur Zeilenindizes für minimalen Kontext bereitzustellen. Niedrigere Werte minimieren die anfängliche Kontextnutzung und ermöglichen präzise nachfolgende Zeilenbereich-Lesungen. Explizite Start-/End-Anfragen sind von dieser Einstellung nicht begrenzt.", + "description": "Zoo liest diese Anzahl von Zeilen, wenn das Modell keine Start-/Endwerte angibt. Wenn diese Zahl kleiner als die Gesamtzahl der Zeilen ist, erstellt Zoo einen Zeilennummernindex der Codedefinitionen. Spezialfälle: -1 weist Zoo an, die gesamte Datei zu lesen (ohne Indexierung), und 0 weist an, keine Zeilen zu lesen und nur Zeilenindizes für minimalen Kontext bereitzustellen. Niedrigere Werte minimieren die anfängliche Kontextnutzung und ermöglichen präzise nachfolgende Zeilenbereich-Lesungen. Explizite Start-/End-Anfragen sind von dieser Einstellung nicht begrenzt.", "lines": "Zeilen", "always_full_read": "Immer die gesamte Datei lesen" }, @@ -685,15 +681,15 @@ }, "outputLineLimit": { "label": "Terminal-Ausgabelimit", - "description": "Behält erste und letzte Zeilen und verwirft die mittleren, um unter dem Limit zu bleiben. Niedriger für Token-Ersparnis; höher für mehr Details aus der Mitte für Roo. Roo sieht einen Platzhalter, wo Inhalt übersprungen wird.<0>Mehr erfahren" + "description": "Behält erste und letzte Zeilen und verwirft die mittleren, um unter dem Limit zu bleiben. Niedriger für Token-Ersparnis; höher für mehr Details aus der Mitte für Zoo. Zoo sieht einen Platzhalter, wo Inhalt übersprungen wird.<0>Mehr erfahren" }, "outputCharacterLimit": { "label": "Terminal-Zeichenlimit", - "description": "Überschreibt das Zeilenlimit, um Speicherprobleme durch eine harte Obergrenze für die Ausgabegröße zu vermeiden. Bei Überschreitung behält es Anfang und Ende und zeigt Roo einen Platzhalter, wo Inhalt übersprungen wird. <0>Mehr erfahren" + "description": "Überschreibt das Zeilenlimit, um Speicherprobleme durch eine harte Obergrenze für die Ausgabegröße zu vermeiden. Bei Überschreitung behält es Anfang und Ende und zeigt Zoo einen Platzhalter, wo Inhalt übersprungen wird. <0>Mehr erfahren" }, "outputPreviewSize": { "label": "Befehlsausgabe-Vorschaugröße", - "description": "Steuert, wie viel Befehlsausgabe Roo direkt sieht. Die vollständige Ausgabe wird immer gespeichert und ist bei Bedarf zugänglich.", + "description": "Steuert, wie viel Befehlsausgabe Zoo direkt sieht. Die vollständige Ausgabe wird immer gespeichert und ist bei Bedarf zugänglich.", "options": { "small": "Klein (5KB)", "medium": "Mittel (10KB)", @@ -706,7 +702,7 @@ }, "shellIntegrationDisabled": { "label": "Inline-Terminal verwenden (empfohlen)", - "description": "Führe Befehle im Inline-Terminal (Chat) aus, um Shell-Profile/Integration für schnellere, zuverlässigere Läufe zu umgehen. Wenn deaktiviert, nutzt Roo das VS Code-Terminal mit deinem Shell-Profil, Prompts und Plugins. <0>Mehr erfahren" + "description": "Führe Befehle im Inline-Terminal (Chat) aus, um Shell-Profile/Integration für schnellere, zuverlässigere Läufe zu umgehen. Wenn deaktiviert, nutzt Zoo das VS Code-Terminal mit deinem Shell-Profil, Prompts und Plugins. <0>Mehr erfahren" }, "commandDelay": { "label": "Terminal-Befehlsverzögerung", @@ -743,7 +739,7 @@ "advanced": { "diff": { "label": "Bearbeitung durch Diffs aktivieren", - "description": "Wenn aktiviert, kann Roo Dateien schneller bearbeiten und lehnt automatisch abgeschnittene vollständige Dateischreibvorgänge ab", + "description": "Wenn aktiviert, kann Zoo Dateien schneller bearbeiten und lehnt automatisch abgeschnittene vollständige Dateischreibvorgänge ab", "strategy": { "label": "Diff-Strategie", "options": { @@ -760,7 +756,7 @@ }, "todoList": { "label": "Todo-Listen-Tool aktivieren", - "description": "Wenn aktiviert, kann Roo Todo-Listen erstellen und verwalten, um den Aufgabenfortschritt zu verfolgen. Dies hilft, komplexe Aufgaben in überschaubare Schritte zu organisieren." + "description": "Wenn aktiviert, kann Zoo Todo-Listen erstellen und verwalten, um den Aufgabenfortschritt zu verfolgen. Dies hilft, komplexe Aufgaben in überschaubare Schritte zu organisieren." } }, "experimental": { @@ -770,15 +766,15 @@ }, "INSERT_BLOCK": { "name": "Experimentelles Inhalts-Einfügewerkzeug verwenden", - "description": "Aktiviere das experimentelle Inhalts-Einfügewerkzeug, mit dem Roo Inhalte an bestimmten Zeilennummern einfügen kann, ohne einen Diff erstellen zu müssen." + "description": "Aktiviere das experimentelle Inhalts-Einfügewerkzeug, mit dem Zoo Inhalte an bestimmten Zeilennummern einfügen kann, ohne einen Diff erstellen zu müssen." }, "CONCURRENT_FILE_READS": { "name": "Gleichzeitiges Lesen von Dateien aktivieren", - "description": "Wenn aktiviert, kann Roo mehrere Dateien in einer einzigen Anfrage lesen. Wenn deaktiviert, muss Roo Dateien einzeln lesen. Das Deaktivieren kann hilfreich sein, wenn mit weniger fähigen Modellen gearbeitet wird oder wenn du mehr Kontrolle über den Dateizugriff haben möchtest." + "description": "Wenn aktiviert, kann Zoo mehrere Dateien in einer einzigen Anfrage lesen. Wenn deaktiviert, muss Zoo Dateien einzeln lesen. Das Deaktivieren kann hilfreich sein, wenn mit weniger fähigen Modellen gearbeitet wird oder wenn du mehr Kontrolle über den Dateizugriff haben möchtest." }, "MULTI_SEARCH_AND_REPLACE": { "name": "Experimentelles Multi-Block-Diff-Tool verwenden", - "description": "Wenn aktiviert, wird Roo das Multi-Block-Diff-Tool verwenden. Dies wird versuchen, mehrere Codeblöcke in der Datei in einer Anfrage zu aktualisieren." + "description": "Wenn aktiviert, wird Zoo das Multi-Block-Diff-Tool verwenden. Dies wird versuchen, mehrere Codeblöcke in der Datei in einer Anfrage zu aktualisieren." }, "MARKETPLACE": { "name": "Marktplatz aktivieren", @@ -786,7 +782,7 @@ }, "PREVENT_FOCUS_DISRUPTION": { "name": "Hintergrundbearbeitung", - "description": "Verhindert Editor-Fokus-Störungen wenn aktiviert. Dateibearbeitungen erfolgen im Hintergrund ohne Öffnung von Diff-Ansichten oder Fokus-Diebstahl. Du kannst ungestört weiterarbeiten, während Roo Änderungen vornimmt. Dateien können ohne Fokus geöffnet werden, um Diagnosen zu erfassen oder vollständig geschlossen bleiben." + "description": "Verhindert Editor-Fokus-Störungen wenn aktiviert. Dateibearbeitungen erfolgen im Hintergrund ohne Öffnung von Diff-Ansichten oder Fokus-Diebstahl. Du kannst ungestört weiterarbeiten, während Zoo Änderungen vornimmt. Dateien können ohne Fokus geöffnet werden, um Diagnosen zu erfassen oder vollständig geschlossen bleiben." }, "ASSISTANT_MESSAGE_PARSER": { "name": "Neuen Nachrichtenparser verwenden", @@ -798,7 +794,7 @@ }, "IMAGE_GENERATION": { "name": "KI-Bildgenerierung aktivieren", - "description": "Wenn aktiviert, kann Roo Bilder aus Textprompts mit Bildgenerierungsmodellen erstellen.", + "description": "Wenn aktiviert, kann Zoo Bilder aus Textprompts mit Bildgenerierungsmodellen erstellen.", "providerLabel": "Anbieter", "providerDescription": "Wähle den Anbieter für die Bildgenerierung.", "openRouterApiKeyLabel": "OpenRouter API-Schlüssel", @@ -811,11 +807,11 @@ }, "RUN_SLASH_COMMAND": { "name": "Modellinitierte Slash-Befehle aktivieren", - "description": "Wenn aktiviert, kann Roo deine Slash-Befehle ausführen, um Workflows zu starten." + "description": "Wenn aktiviert, kann Zoo deine Slash-Befehle ausführen, um Workflows zu starten." }, "CUSTOM_TOOLS": { "name": "Benutzerdefinierte Tools aktivieren", - "description": "Wenn aktiviert, kann Roo benutzerdefinierte TypeScript/JavaScript-Tools aus dem .roo/tools-Verzeichnis deines Projekts oder ~/.roo/tools für globale Tools laden und verwenden. Hinweis: Diese Tools werden automatisch genehmigt.", + "description": "Wenn aktiviert, kann Zoo benutzerdefinierte TypeScript/JavaScript-Tools aus dem .roo/tools-Verzeichnis deines Projekts oder ~/.roo/tools für globale Tools laden und verwenden. Hinweis: Diese Tools werden automatisch genehmigt.", "toolsHeader": "Verfügbare benutzerdefinierte Tools", "noTools": "Keine benutzerdefinierten Tools geladen. Füge .ts- oder .js-Dateien zum .roo/tools-Verzeichnis deines Projekts oder ~/.roo/tools für globale Tools hinzu.", "refreshButton": "Aktualisieren", @@ -827,7 +823,7 @@ }, "promptCaching": { "label": "Prompt-Caching deaktivieren", - "description": "Wenn aktiviert, wird Roo für dieses Modell kein Prompt-Caching verwenden." + "description": "Wenn aktiviert, wird Zoo für dieses Modell kein Prompt-Caching verwenden." }, "temperature": { "useCustom": "Benutzerdefinierte Temperatur verwenden", @@ -857,7 +853,7 @@ } }, "modelPicker": { - "automaticFetch": "Die Erweiterung ruft automatisch die neueste Liste der auf {{serviceName}} verfügbaren Modelle ab. Wenn du dir nicht sicher bist, welches Modell du wählen sollst, funktioniert Roo Code am besten mit {{defaultModelId}}. Du kannst auch versuchen, nach \"kostenlos\" zu suchen, um die derzeit verfügbaren kostenlosen Optionen zu finden.", + "automaticFetch": "Die Erweiterung ruft automatisch die neueste Liste der auf {{serviceName}} verfügbaren Modelle ab. Wenn du dir nicht sicher bist, welches Modell du wählen sollst, funktioniert Zoo Code am besten mit {{defaultModelId}}. Du kannst auch versuchen, nach \"kostenlos\" zu suchen, um die derzeit verfügbaren kostenlosen Optionen zu finden.", "label": "Modell", "searchPlaceholder": "Suchen", "noMatchFound": "Keine Übereinstimmung gefunden", @@ -867,7 +863,7 @@ "footer": { "telemetry": { "label": "Anonyme Fehler- und Nutzungsberichte zulassen", - "description": "Hilf mit, Roo Code zu verbessern, indem du anonyme Nutzungsdaten und Fehlerberichte sendest. Diese Telemetrie sammelt keine Code-, Prompt- oder persönliche Informationen. Weitere Einzelheiten findest du in unserer Datenschutzrichtlinie." + "description": "Hilf mit, Zoo Code zu verbessern, indem du anonyme Nutzungsdaten und Fehlerberichte sendest. Diese Telemetrie sammelt keine Code-, Prompt- oder persönliche Informationen. Weitere Einzelheiten findest du in unserer Datenschutzrichtlinie." }, "settings": { "import": "Importieren", diff --git a/webview-ui/src/i18n/locales/de/welcome.json b/webview-ui/src/i18n/locales/de/welcome.json index aa1e4a5bb39..1d8d3892cfc 100644 --- a/webview-ui/src/i18n/locales/de/welcome.json +++ b/webview-ui/src/i18n/locales/de/welcome.json @@ -1,52 +1,18 @@ { - "routers": { - "requesty": { - "description": "Dein optimierter LLM-Router", - "incentive": "$1 Guthaben gratis" - }, - "openrouter": { - "description": "Eine einheitliche Schnittstelle für LLMs" - }, - "roo": { - "description": "Die besten kostenlosen Modelle für den Einstieg", - "incentive": "Probier Roo kostenlos aus" - } - }, "landing": { "greeting": "Willkommen bei Roo Code!", "introduction": "Mit einer Reihe von integrierten und erweiterbaren Modi ermöglicht dir Roo Code, zu planen, zu architektieren, zu coden, zu debuggen und deine Produktivität wie nie zuvor zu steigern.", - "accountMention": "Um zu beginnen, erstelle dein Roo Code Cloud Konto. Erhalte leistungsstarke Modelle, Webkontrolle, Analysen, Support und mehr.", - "getStarted": "Roo-Konto erstellen", - "noAccount": "oder ohne Konto verwenden" + "getStarted": "Wähle deinen Anbieter" }, "providerSignup": { "heading": "Wähle deinen Anbieter", "chooseProvider": "Roo braucht einen LLM-Anbieter, um zu funktionieren. Wähle einen aus, um loszulegen. Du kannst später mehr hinzufügen.", - "rooCloudProvider": "Roo Code Router", - "rooCloudDescription": "Der einfachste Weg loszulegen ist mit dem Roo Code Router: eine kuratierte Mischung aus kostenlosen und bezahlten Modellen zu niedrigen Kosten.", - "learnMore": "Weitere Informationen", - "useAnotherProvider": "3rd-party Provider", - "useAnotherProviderDescription": "Gib einen API-Schlüssel ein und leg los.", - "noApiKeys": "Du möchtest dich nicht mit API-Schlüsseln und separaten Konten rumschlagen?", - "backToRoo": "Geh mit dem Roo Code Router.", "goBack": "Zurück", "finish": "Beenden" }, - "waitingForCloud": { - "heading": "Anmeldung bei Roo Code Cloud...", - "description": "Wir bringen dich in deinen Browser, um dich für Roo Code Cloud zu registrieren. Dann bringen wir dich hierher zurück, um das Einrichten abzuschließen.", - "noPrompt": "Wenn du nicht aufgefordert wirst, eine URL zu öffnen, klick hier.", - "havingTrouble": "Wenn du die Anmeldung abgeschlossen hast, aber Probleme hast, klick hier.", - "pasteUrl": "Füge die Callback-URL aus deinem Browser ein:", - "docsLink": "Funktioniert nicht? Schau dir die Dokumentation an.", - "invalidURL": "Das sieht nicht wie eine gültige Callback-URL aus. Bitte kopiere das, was Roo Code Cloud in deinem Browser anzeigt.", - "goBack": "Zurück" - }, - "startRouter": "Wir empfehlen die Verwendung eines LLM-Routers:", - "startCustom": "Oder du kannst deinen eigenen API-Schlüssel verwenden:", "telemetry": { - "helpImprove": "Hilf, Roo Code zu verbessern", - "helpImproveMessage": "Roo Code sammelt Fehler- und Nutzungsdaten, um uns dabei zu helfen, Fehler zu beheben und die Erweiterung zu verbessern. Diese Telemetrie sammelt keine Code-, Prompt- oder persönliche Informationen. Du kannst diese in den Einstellungen deaktivieren." + "helpImprove": "Hilf, Zoo Code zu verbessern", + "helpImproveMessage": "Zoo Code sammelt Fehler- und Nutzungsdaten, um uns dabei zu helfen, Fehler zu beheben und die Erweiterung zu verbessern. Diese Telemetrie sammelt keine Code-, Prompt- oder persönliche Informationen. Du kannst diese in den Einstellungen deaktivieren." }, "importSettings": "Einstellungen importieren" } diff --git a/webview-ui/src/i18n/locales/de/worktrees.json b/webview-ui/src/i18n/locales/de/worktrees.json index eed464fd5ee..16c9677ca6e 100644 --- a/webview-ui/src/i18n/locales/de/worktrees.json +++ b/webview-ui/src/i18n/locales/de/worktrees.json @@ -1,28 +1,23 @@ { "title": "Worktrees", "done": "Fertig", - "description": "Git-Worktrees ermöglichen dir, gleichzeitig an mehreren Branches in separaten Verzeichnissen zu arbeiten. Jeder Worktree bekommt sein eigenes VS Code-Fenster mit Roo Code.", - + "description": "Git-Worktrees ermöglichen dir, gleichzeitig an mehreren Branches in separaten Verzeichnissen zu arbeiten. Jeder Worktree bekommt sein eigenes VS Code-Fenster mit Zoo Code.", "notGitRepo": "Dieser Workspace ist kein Git-Repository. Worktrees benötigen ein Git-Repository, um zu funktionieren.", "multiRootNotSupported": "Worktrees werden in Multi-Root-Workspaces nicht unterstützt. Öffne einen einzelnen Ordner, um Worktrees zu verwenden.", "subfolderNotSupported": "Dieser Workspace ist ein Unterordner eines Git-Repositories. Öffne das Repository-Root, um Worktrees zu verwenden.", "gitRoot": "Git-Root", - "includeFileExists": ".worktreeinclude-Datei gefunden – Dateien werden in neue Worktrees kopiert", "noIncludeFile": "Keine .worktreeinclude-Datei gefunden", "createFromGitignore": "Aus .gitignore erstellen", - "primary": "Primär", "current": "Aktuell", "locked": "Gesperrt", "detachedHead": "Detached HEAD", "noBranch": "Kein Branch", - "switchInThisWindow": "Zu Worktree wechseln", "openInNewWindow": "In neuem Fenster öffnen", "delete": "Löschen", "newWorktree": "Neuer Worktree", - "createWorktree": "Worktree erstellen", "branchName": "Branch-Name", "createNewBranch": "Neuen Branch erstellen", @@ -44,7 +39,6 @@ "copyingFiles": "Dateien werden kopiert...", "copyingProgress": "{{item}} — {{copied}} kopiert", "cancel": "Abbrechen", - "deleteWorktree": "Worktree löschen", "deleteWarning": "Diese Aktion kann nicht rückgängig gemacht werden. Folgendes wird gelöscht:", "deleteWarningBranch": "Der Branch und alle nicht committeten Änderungen", @@ -53,11 +47,8 @@ "forceDelete": "Löschen erzwingen", "worktreeIsLocked": "Worktree ist gesperrt", "deleting": "Wird gelöscht...", - "close": "Schließen", - "showInHomeScreen": "Worktrees auf dem Startbildschirm anzeigen", - "selector": { "worktree": "Worktree", "title": "Worktrees", diff --git a/webview-ui/src/i18n/locales/en/chat.json b/webview-ui/src/i18n/locales/en/chat.json index 6f1badac1f1..05b804ec7ea 100644 --- a/webview-ui/src/i18n/locales/en/chat.json +++ b/webview-ui/src/i18n/locales/en/chat.json @@ -1,5 +1,5 @@ { - "greeting": "Welcome to Roo Code!", + "greeting": "Welcome to Zoo Code!", "task": { "title": "Task", "expand": "Expand task", @@ -14,17 +14,7 @@ "contextWindow": "Context Length", "closeAndStart": "Close task and start a new one", "export": "Export task history", - "share": "Share task", "delete": "Delete Task (Shift + Click to skip confirmation)", - "shareWithOrganization": "Share with Organization", - "shareWithOrganizationDescription": "Only members of your organization can access", - "sharePublicly": "Share Publicly", - "sharePubliclyDescription": "Anyone with the link can access", - "connectToCloud": "Connect to Cloud", - "connectToCloudDescription": "Sign in to Roo Code Cloud to share tasks", - "sharingDisabledByOrganization": "Sharing disabled by organization", - "shareSuccessOrganization": "Organization link copied to clipboard", - "shareSuccessPublic": "Public link copied to clipboard", "openApiHistory": "Open API History", "openUiHistory": "Open UI History", "backToParentTask": "Parent task" @@ -125,7 +115,7 @@ }, "scrollToBottom": "Scroll to bottom of chat", "scrollToLatestCheckpoint": "Scroll to previous checkpoint", - "about": "Roo is a whole AI dev team in your editor", + "about": "Zoo is a whole AI dev team in your editor", "docs": "Check our docs to get started", "onboarding": "What would you like to do?", "rooTips": { @@ -135,7 +125,7 @@ }, "modelAgnostic": { "title": "Bring your own model, no markup or lock-in", - "description": "Use your own provider key or even run local inference — Roo doesn't charge for it" + "description": "Use your own provider key or even run local inference — Zoo doesn't charge for it" } }, "selectMode": "Select mode for interaction", @@ -147,7 +137,7 @@ "title": "Modes", "marketplace": "Mode Marketplace", "settings": "Mode Settings", - "description": "Specialized personas that tailor Roo's behavior.", + "description": "Specialized personas that tailor Zoo's behavior.", "searchPlaceholder": "Search modes...", "noResults": "No results found" }, @@ -185,7 +175,7 @@ "docs": "Docs", "goToSettings": "Settings", "connection": "Connection error. Make sure you have a working internet connection.", - "unknown": "Unknown API error. Please contact Roo Code support.", + "unknown": "Unknown API error. Please contact Zoo Code support.", "claudeCodeNotAuthenticated": "You need to sign in to use Claude Code. Go to Settings and click \"Sign in to Claude Code\" to authenticate." } }, @@ -224,46 +214,46 @@ } }, "skill": { - "wantsToLoad": "Roo wants to load a skill", - "didLoad": "Roo loaded a skill" + "wantsToLoad": "Zoo wants to load a skill", + "didLoad": "Zoo loaded a skill" }, "fileOperations": { - "wantsToRead": "Roo wants to read this file", - "wantsToReadMultiple": "Roo wants to read multiple files", - "wantsToReadAndXMore": "Roo wants to read this file and {{count}} more", - "wantsToReadOutsideWorkspace": "Roo wants to read this file outside of the workspace", - "didRead": "Roo read this file", - "wantsToEdit": "Roo wants to edit this file", - "wantsToEditOutsideWorkspace": "Roo wants to edit this file outside of the workspace", - "wantsToEditProtected": "Roo wants to edit a protected configuration file", - "wantsToApplyBatchChanges": "Roo wants to apply changes to multiple files", - "wantsToGenerateImage": "Roo wants to generate an image", - "wantsToGenerateImageOutsideWorkspace": "Roo wants to generate an image outside of the workspace", - "wantsToGenerateImageProtected": "Roo wants to generate an image in a protected location", - "didGenerateImage": "Roo generated an image", - "wantsToCreate": "Roo wants to create a new file", - "wantsToInsert": "Roo wants to insert content into this file", - "wantsToInsertWithLineNumber": "Roo wants to insert content into this file at line {{lineNumber}}", - "wantsToInsertAtEnd": "Roo wants to append content to the end of this file" + "wantsToRead": "Zoo wants to read this file", + "wantsToReadMultiple": "Zoo wants to read multiple files", + "wantsToReadAndXMore": "Zoo wants to read this file and {{count}} more", + "wantsToReadOutsideWorkspace": "Zoo wants to read this file outside of the workspace", + "didRead": "Zoo read this file", + "wantsToEdit": "Zoo wants to edit this file", + "wantsToEditOutsideWorkspace": "Zoo wants to edit this file outside of the workspace", + "wantsToEditProtected": "Zoo wants to edit a protected configuration file", + "wantsToApplyBatchChanges": "Zoo wants to apply changes to multiple files", + "wantsToGenerateImage": "Zoo wants to generate an image", + "wantsToGenerateImageOutsideWorkspace": "Zoo wants to generate an image outside of the workspace", + "wantsToGenerateImageProtected": "Zoo wants to generate an image in a protected location", + "didGenerateImage": "Zoo generated an image", + "wantsToCreate": "Zoo wants to create a new file", + "wantsToInsert": "Zoo wants to insert content into this file", + "wantsToInsertWithLineNumber": "Zoo wants to insert content into this file at line {{lineNumber}}", + "wantsToInsertAtEnd": "Zoo wants to append content to the end of this file" }, "directoryOperations": { - "wantsToViewTopLevel": "Roo wants to view the top level files in this directory", - "didViewTopLevel": "Roo viewed the top level files in this directory", - "wantsToViewTopLevelOutsideWorkspace": "Roo wants to view the top level files in this directory (outside workspace)", - "didViewTopLevelOutsideWorkspace": "Roo viewed the top level files in this directory (outside workspace)", - "wantsToViewRecursive": "Roo wants to recursively view all files in this directory", - "didViewRecursive": "Roo recursively viewed all files in this directory", - "wantsToViewRecursiveOutsideWorkspace": "Roo wants to recursively view all files in this directory (outside workspace)", - "didViewRecursiveOutsideWorkspace": "Roo recursively viewed all files in this directory (outside workspace)", - "wantsToViewMultipleDirectories": "Roo wants to view multiple directories", - "wantsToSearch": "Roo wants to search this directory for {{regex}}", - "didSearch": "Roo searched this directory for {{regex}}", - "wantsToSearchOutsideWorkspace": "Roo wants to search this directory (outside workspace) for {{regex}}", - "didSearchOutsideWorkspace": "Roo searched this directory (outside workspace) for {{regex}}" + "wantsToViewTopLevel": "Zoo wants to view the top level files in this directory", + "didViewTopLevel": "Zoo viewed the top level files in this directory", + "wantsToViewTopLevelOutsideWorkspace": "Zoo wants to view the top level files in this directory (outside workspace)", + "didViewTopLevelOutsideWorkspace": "Zoo viewed the top level files in this directory (outside workspace)", + "wantsToViewRecursive": "Zoo wants to recursively view all files in this directory", + "didViewRecursive": "Zoo recursively viewed all files in this directory", + "wantsToViewRecursiveOutsideWorkspace": "Zoo wants to recursively view all files in this directory (outside workspace)", + "didViewRecursiveOutsideWorkspace": "Zoo recursively viewed all files in this directory (outside workspace)", + "wantsToViewMultipleDirectories": "Zoo wants to view multiple directories", + "wantsToSearch": "Zoo wants to search this directory for {{regex}}", + "didSearch": "Zoo searched this directory for {{regex}}", + "wantsToSearchOutsideWorkspace": "Zoo wants to search this directory (outside workspace) for {{regex}}", + "didSearchOutsideWorkspace": "Zoo searched this directory (outside workspace) for {{regex}}" }, "codebaseSearch": { - "wantsToSearch": "Roo wants to search the codebase for {{query}}", - "wantsToSearchWithPath": "Roo wants to search the codebase for {{query}} in {{path}}", + "wantsToSearch": "Zoo wants to search the codebase for {{query}}", + "wantsToSearchWithPath": "Zoo wants to search the codebase for {{query}} in {{path}}", "didSearch_one": "Found 1 result", "didSearch_other": "Found {{count}} results", "resultTooltip": "Similarity score: {{score}} (click to open file)" @@ -288,24 +278,24 @@ "response": "Response", "arguments": "Arguments", "text": { - "rooSaid": "Roo said" + "rooSaid": "Zoo said" }, "feedback": { "youSaid": "You said" }, "mcp": { - "wantsToUseTool": "Roo wants to use a tool on the {{serverName}} MCP server", - "wantsToAccessResource": "Roo wants to access a resource on the {{serverName}} MCP server" + "wantsToUseTool": "Zoo wants to use a tool on the {{serverName}} MCP server", + "wantsToAccessResource": "Zoo wants to access a resource on the {{serverName}} MCP server" }, "modes": { - "wantsToSwitch": "Roo wants to switch to {{mode}} mode", - "wantsToSwitchWithReason": "Roo wants to switch to {{mode}} mode because: {{reason}}", - "didSwitch": "Roo switched to {{mode}} mode", - "didSwitchWithReason": "Roo switched to {{mode}} mode because: {{reason}}" + "wantsToSwitch": "Zoo wants to switch to {{mode}} mode", + "wantsToSwitchWithReason": "Zoo wants to switch to {{mode}} mode because: {{reason}}", + "didSwitch": "Zoo switched to {{mode}} mode", + "didSwitchWithReason": "Zoo switched to {{mode}} mode because: {{reason}}" }, "subtasks": { - "wantsToCreate": "Roo wants to create a new subtask in {{mode}} mode", - "wantsToFinish": "Roo wants to mark this as completed", + "wantsToCreate": "Zoo wants to create a new subtask in {{mode}} mode", + "wantsToFinish": "Zoo wants to mark this as completed", "newTaskContent": "Subtask Instructions", "resultContent": "Subtask completed", "defaultResult": "Please continue to the next task.", @@ -313,7 +303,7 @@ "goToSubtask": "View task" }, "questions": { - "hasQuestion": "Roo has a question" + "hasQuestion": "Zoo has a question" }, "taskCompleted": "Task Completed", "error": "Error", @@ -330,12 +320,12 @@ "copyToClipboard": "Copy basic error info", "copied": "Copied!", "diagnostics": "Get detailed error info", - "proxyProvider": "You seem to be using a proxy-based provider. Make sure to check its logs and to ensure it's not rewriting Roo's requests." + "proxyProvider": "You seem to be using a proxy-based provider. Make sure to check its logs and to ensure it's not rewriting Zoo's requests." }, "diffError": { "title": "Edit Unsuccessful" }, - "troubleMessage": "Roo is having trouble...", + "troubleMessage": "Zoo is having trouble...", "powershell": { "issues": "It seems like you're having Windows PowerShell issues, please see this" }, @@ -357,23 +347,16 @@ "triggerLabelAll": "BRRR" }, "announcement": { - "title": "Roo Code {{version}} Released", - "support": "Please support Roo Code by starring us on GitHub.", - "stealthModel": { - "feature": "Limited-time FREE stealth model - Code Supernova: Now upgraded with a 1M token context window! A versatile agentic coding model that supports image inputs, accessible through Roo Code Cloud.", - "note": "(Note: prompts and completions are logged by the model creator and used to improve the model)", - "connectButton": "Connect to Roo Code Cloud", - "selectModel": "Select roo/code-supernova from the Roo Code Cloud provider in Settings to get started.", - "goToSettingsButton": "Go to Settings" - }, + "title": "Zoo Code {{version}} Released", + "support": "Please support Zoo Code by starring us on GitHub.", "handoff": { - "heading": "The Roo Code plugin is not going away.", - "description": "You may have seen the recent announcement that Roo Code hit 3 million installs and the original team is going all-in on Roomote. We know that news was hard for a lot of you. This plugin means a lot to us and to you, and we hear you. The good news: a community team has stepped up to carry Roo Code forward, and we're working with them on an official handoff so the plugin you rely on keeps getting maintained and improved.", - "readMore": "Read the original announcement from Matt Rubens" + "heading": "Zoo Code is back, now as a community-maintained plugin called Zoo Code!!", + "description": "If you haven't been following, the Zoo Code team recently announced they are sun setting the development of Zoo Code and are archiving the work they have done. But fear not, the community has stepped up to continue the legacy of Zoo Code with a new name and a new home! We are not just a single \"Roo\" anymore, we are a community, a \"Zoo\" if you will, Zoo Code is a community-maintained plugin that picks up where Zoo Code left off, and we're committed to keeping the spirit of Roo alive while also introducing new features and improvements. We want to give a huge shoutout to the entire Zoo Code team for their incredible work and for creating such an amazing tool for developers. We're excited to continue building on their foundation and to see where the community takes Zoo Code in the future!", + "readMore": "See the new home page of Zoo Code and read the full announcement" }, "release": { "heading": "What's New:", - "gpt55": "GPT-5.5 via OpenAI Codex: Added GPT-5.5 support in the OpenAI Codex provider so you can use the latest model straight from Roo Code.", + "gpt55": "GPT-5.5 via OpenAI Codex: Added GPT-5.5 support in the OpenAI Codex provider so you can use the latest model straight from Zoo Code.", "claudeOpus47": "Claude Opus 4.7 on Vertex AI: Added Claude Opus 4.7 to the Vertex AI provider for Anthropic's newest flagship reasoning model.", "checkpointNav": "Previous Checkpoint Navigation: Added controls in chat to jump back through prior checkpoints, with full i18n support." }, @@ -407,18 +390,18 @@ "profileViolationWarning": "The current profile isn't compatible with your organization's settings", "shellIntegration": { "title": "Command Execution Warning", - "description": "Your command is being executed without VSCode terminal shell integration. To suppress this warning you can disable shell integration in the Terminal section of the Roo Code settings or troubleshoot VSCode terminal integration using the link below.", + "description": "Your command is being executed without VSCode terminal shell integration. To suppress this warning you can disable shell integration in the Terminal section of the Zoo Code settings or troubleshoot VSCode terminal integration using the link below.", "troubleshooting": "Click here for shell integration documentation." }, "ask": { "autoApprovedRequestLimitReached": { "title": "Auto-Approved Request Limit Reached", - "description": "Roo has reached the auto-approved limit of {{count}} API request(s). Would you like to reset the count and proceed with the task?", + "description": "Zoo has reached the auto-approved limit of {{count}} API request(s). Would you like to reset the count and proceed with the task?", "button": "Reset and Continue" }, "autoApprovedCostLimitReached": { "title": "Auto-Approved Cost Limit Reached", - "description": "Roo has reached the auto-approved cost limit of ${{count}}. Would you like to reset the cost and proceed with the task?", + "description": "Zoo has reached the auto-approved cost limit of ${{count}}. Would you like to reset the cost and proceed with the task?", "button": "Reset and Continue" } }, @@ -457,8 +440,8 @@ } }, "slashCommand": { - "wantsToRun": "Roo wants to run a slash command", - "didRun": "Roo ran a slash command" + "wantsToRun": "Zoo wants to run a slash command", + "didRun": "Zoo ran a slash command" }, "queuedMessages": { "title": "Queued Messages", @@ -487,11 +470,11 @@ "openMcpSettings": "Open MCP Settings" }, "readCommandOutput": { - "title": "Roo read command output" + "title": "Zoo read command output" }, "retiredProvider": { "title": "Provider no longer supported", - "message": "Sorry, this provider is no longer supported. We saw very few Roo users actually using it and we need to reduce the surface area of our codebase so we can keep shipping fast and serving our community well in this space. It was a really hard decision but it lets us focus on what matters most to you. It sucks, we know.", + "message": "This provider is no longer available. Select a supported provider to continue.", "openSettings": "Open Settings" } } diff --git a/webview-ui/src/i18n/locales/en/cloud.json b/webview-ui/src/i18n/locales/en/cloud.json deleted file mode 100644 index 8842c5ef450..00000000000 --- a/webview-ui/src/i18n/locales/en/cloud.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "title": "Cloud", - "profilePicture": "Profile picture", - "logOut": "Log out", - "testApiAuthentication": "Test API Authentication", - "signIn": "Connect to Roo Code Cloud", - "connect": "Get started", - "cloudBenefitsTitle": "Try Roo Code Cloud", - "cloudBenefitProvider": "Access free and paid models that work great with Roo", - "cloudBenefitCloudAgents": "Give tasks to autonomous Cloud agents", - "cloudBenefitTriggers": "Get code reviews on GitHub, start tasks from Slack and more", - "cloudBenefitWalkaway": "Follow and control tasks from anywhere (including your phone)", - "cloudBenefitHistory": "Access your task history from anywhere and share them with others", - "cloudBenefitMetrics": "Get a holistic view of your token consumption", - "visitCloudWebsite": "Visit Roo Code Cloud", - "taskSync": "Task sync", - "taskSyncDescription": "Sync your tasks for viewing and sharing on Roo Code Cloud", - "taskSyncManagedByOrganization": "Task sync is managed by your organization", - "usageMetricsAlwaysReported": "Model usage info is always reported when logged in", - "cloudUrlPillLabel": "Roo Code Cloud URL", - "authWaiting": "Waiting for browser authentication...", - "havingTrouble": "Having trouble?", - "pasteCallbackUrl": "Copy the redirect URL from your browser and paste it here:", - "startOver": "Start over", - "personalAccount": "Personal Account", - "switchAccount": "Switch Roo Code Cloud Account", - "createTeamAccount": "Create Team Account", - "upsell": { - "autoApprovePowerUser": "Giving Roo some independence? Control it from anywhere with Roo Code Cloud. Learn more.", - "longRunningTask": "This might take a while. Continue from anywhere with Cloud.", - "taskList": "Enjoying Roo? Check out Roo Code Cloud: follow and control your tasks from anywhere, run autonomous Cloud agents, get usage stats and more. Learn more." - } -} diff --git a/webview-ui/src/i18n/locales/en/marketplace.json b/webview-ui/src/i18n/locales/en/marketplace.json index dae9dd26116..84eb7cb1576 100644 --- a/webview-ui/src/i18n/locales/en/marketplace.json +++ b/webview-ui/src/i18n/locales/en/marketplace.json @@ -1,5 +1,5 @@ { - "title": "Roo Marketplace", + "title": "Zoo Marketplace", "tabs": { "installed": "Installed", "settings": "Settings", diff --git a/webview-ui/src/i18n/locales/en/mcp.json b/webview-ui/src/i18n/locales/en/mcp.json index 2fcae2840c7..92561463116 100644 --- a/webview-ui/src/i18n/locales/en/mcp.json +++ b/webview-ui/src/i18n/locales/en/mcp.json @@ -2,16 +2,16 @@ "title": "MCP Servers", "done": "Done", "marketplace": "MCP Marketplace", - "description": "The <0>Model Context Protocol enables communication with locally running MCP servers that provide additional tools and resources to extend Roo's capabilities. You can use <1>community-made servers or ask Roo to create new tools specific to your workflow (e.g., \"add a tool that gets the latest npm docs\").", + "description": "The <0>Model Context Protocol enables communication with locally running MCP servers that provide additional tools and resources to extend Zoo's capabilities. You can use <1>community-made servers or ask Zoo to create new tools specific to your workflow (e.g., \"add a tool that gets the latest npm docs\").", "instructions": "Instructions", "enableToggle": { "title": "Enable MCP Servers", - "description": "Turn this ON to let Roo use tools from connected MCP servers. This gives Roo more capabilities. If you don't plan to use these extra tools, turn it OFF to help reduce API token costs." + "description": "Turn this ON to let Zoo use tools from connected MCP servers. This gives Zoo more capabilities. If you don't plan to use these extra tools, turn it OFF to help reduce API token costs." }, "enableServerCreation": { "title": "Enable MCP Server Creation", - "description": "Enable this to have Roo help you build <1>new custom MCP servers. <0>Learn about server creation", - "hint": "Hint: To reduce API token costs, disable this setting when you are not actively asking Roo to create a new MCP server." + "description": "Enable this to have Zoo help you build <1>new custom MCP servers. <0>Learn about server creation", + "hint": "Hint: To reduce API token costs, disable this setting when you are not actively asking Zoo to create a new MCP server." }, "editGlobalMCP": "Edit Global MCP", "editProjectMCP": "Edit Project MCP", diff --git a/webview-ui/src/i18n/locales/en/prompts.json b/webview-ui/src/i18n/locales/en/prompts.json index 82db8400c11..1494d31ba8f 100644 --- a/webview-ui/src/i18n/locales/en/prompts.json +++ b/webview-ui/src/i18n/locales/en/prompts.json @@ -8,7 +8,7 @@ "editModesConfig": "Edit modes configuration", "editGlobalModes": "Edit Global Modes", "editProjectModes": "Edit Project Modes (.roomodes)", - "createModeHelpText": "Modes are specialized personas that tailor Roo's behavior. <0>Learn about Using Modes or <1>Customizing Modes.", + "createModeHelpText": "Modes are specialized personas that tailor Zoo's behavior. <0>Learn about Using Modes or <1>Customizing Modes.", "selectMode": "Search modes", "noMatchFound": "No modes found" }, @@ -33,7 +33,7 @@ "roleDefinition": { "title": "Role Definition", "resetToDefault": "Reset to default", - "description": "Define Roo's expertise and personality for this mode. This description shapes how Roo presents itself and approaches tasks." + "description": "Define Zoo's expertise and personality for this mode. This description shapes how Zoo presents itself and approaches tasks." }, "description": { "title": "Short description (for humans)", @@ -42,7 +42,7 @@ }, "whenToUse": { "title": "When to Use (optional)", - "description": "Guidance for Roo for when this mode should be used. This helps the Orchestrator choose the right mode for a task.", + "description": "Guidance for Zoo for when this mode should be used. This helps the Orchestrator choose the right mode for a task.", "resetToDefault": "Reset to default 'When to Use' description" }, "customInstructions": { @@ -101,7 +101,7 @@ "types": { "ENHANCE": { "label": "Enhance Prompt", - "description": "Use prompt enhancement to get tailored suggestions or improvements for your inputs. This ensures Roo understands your intent and provides the best possible responses. Available via the ✨ icon in chat." + "description": "Use prompt enhancement to get tailored suggestions or improvements for your inputs. This ensures Zoo understands your intent and provides the best possible responses. Available via the ✨ icon in chat." }, "CONDENSE": { "label": "Context Condensing", @@ -166,7 +166,7 @@ }, "roleDefinition": { "label": "Role Definition", - "description": "Define Roo's expertise and personality for this mode." + "description": "Define Zoo's expertise and personality for this mode." }, "description": { "label": "Short description (for humans)", @@ -174,7 +174,7 @@ }, "whenToUse": { "label": "When to Use (optional)", - "description": "Guidance for Roo for when this mode should be used. This helps the Orchestrator choose the right mode for a task." + "description": "Guidance for Zoo for when this mode should be used. This helps the Orchestrator choose the right mode for a task." }, "tools": { "label": "Available Tools", diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json index 8ec42367f14..d6d0cdacac8 100644 --- a/webview-ui/src/i18n/locales/en/settings.json +++ b/webview-ui/src/i18n/locales/en/settings.json @@ -41,7 +41,7 @@ "ui": "UI", "experimental": "Experimental", "language": "Language", - "about": "About Roo Code" + "about": "About Zoo Code" }, "about": { "bugReport": { @@ -56,7 +56,7 @@ "label": "Discovered a vulnerability?", "link": "Follow our disclosure process" }, - "community": "Want tips or to just hang out with other Roo Code users? Join reddit.com/r/RooCode or discord.gg/roocode", + "community": "Want tips or to just hang out with other Zoo Code users? Join reddit.com/r/RooCode or discord.gg/roocode", "contactAndCommunity": "Contact & Community", "manageSettings": "Manage Settings", "debugMode": { @@ -163,7 +163,7 @@ } }, "prompts": { - "description": "Configure support prompts that are used for quick actions like enhancing prompts, explaining code, and fixing issues. These prompts help Roo provide better assistance for common development tasks." + "description": "Configure support prompts that are used for quick actions like enhancing prompts, explaining code, and fixing issues. These prompts help Zoo provide better assistance for common development tasks." }, "codeIndex": { "title": "Codebase Indexing", @@ -284,10 +284,10 @@ "enabled": "Auto-Approve Enabled", "readOnly": { "label": "Read", - "description": "When enabled, Roo will automatically view directory contents and read files without requiring you to click the Approve button.", + "description": "When enabled, Zoo will automatically view directory contents and read files without requiring you to click the Approve button.", "outsideWorkspace": { "label": "Include files outside workspace", - "description": "Allow Roo to read files outside the current workspace without requiring approval." + "description": "Allow Zoo to read files outside the current workspace without requiring approval." } }, "write": { @@ -296,11 +296,11 @@ "delayLabel": "Delay after writes to allow diagnostics to detect potential problems", "outsideWorkspace": { "label": "Include files outside workspace", - "description": "Allow Roo to create and edit files outside the current workspace without requiring approval." + "description": "Allow Zoo to create and edit files outside the current workspace without requiring approval." }, "protected": { "label": "Include protected files", - "description": "Allow Roo to create and edit protected files (like .rooignore and .roo/ configuration files) without requiring approval." + "description": "Allow Zoo to create and edit protected files (like .rooignore and .roo/ configuration files) without requiring approval." } }, "mcp": { @@ -369,7 +369,7 @@ "searchProviderPlaceholder": "Search providers", "noProviderMatchFound": "No providers found", "noMatchFound": "No matching profiles found", - "retiredProviderMessage": "Sorry, this provider is no longer supported. We saw very few Roo users actually using it and we need to reduce the surface area of our codebase so we can keep shipping fast and serving our community well in this space. It was a really hard decision but it lets us focus on what matters most to you. It sucks, we know.", + "retiredProviderMessage": "This provider is no longer available. Select a supported provider to continue.", "vscodeLmDescription": " The VS Code Language Model API allows you to run models provided by other VS Code extensions (including but not limited to GitHub Copilot). The easiest way to get started is to install the Copilot and Copilot Chat extensions from the VS Code Marketplace.", "awsCustomArnUse": "Enter a valid Amazon Bedrock ARN for the model you want to use. Format examples:", "awsCustomArnDesc": "Make sure the region in the ARN matches your selected AWS Region above.", @@ -519,7 +519,7 @@ "draftModelDesc": "Draft model must be from the same model family for speculative decoding to work correctly.", "selectDraftModel": "Select Draft Model", "noModelsFound": "No draft models found. Please ensure LM Studio is running with Server Mode enabled.", - "description": "LM Studio allows you to run models locally on your computer. For instructions on how to get started, see their quickstart guide. You will also need to start LM Studio's local server feature to use it with this extension. Note: Roo Code uses complex prompts and works best with Claude models. Less capable models may not work as expected." + "description": "LM Studio allows you to run models locally on your computer. For instructions on how to get started, see their quickstart guide. You will also need to start LM Studio's local server feature to use it with this extension. Note: Zoo Code uses complex prompts and works best with Claude models. Less capable models may not work as expected." }, "ollama": { "baseUrl": "Base URL (optional)", @@ -529,11 +529,7 @@ "numCtx": "Context Window Size (num_ctx)", "numCtxHelp": "Override the model's default context window size. Leave empty to use the model's Modelfile configuration. Minimum value is 128.", "description": "Ollama allows you to run models locally on your computer. For instructions on how to get started, see their quickstart guide.", - "warning": "Note: Roo Code uses complex prompts and works best with Claude models. Less capable models may not work as expected." - }, - "roo": { - "authenticatedMessage": "Securely authenticated through your Roo Code Cloud account.", - "connectButton": "Connect to Roo Code Cloud" + "warning": "Note: Zoo Code uses complex prompts and works best with Claude models. Less capable models may not work as expected." }, "openRouter": { "providerRouting": { @@ -543,7 +539,7 @@ } }, "customModel": { - "capabilities": "Configure the capabilities and pricing for your custom OpenAI-compatible model. Be careful when specifying the model capabilities, as they can affect how Roo Code performs.", + "capabilities": "Configure the capabilities and pricing for your custom OpenAI-compatible model. Be careful when specifying the model capabilities, as they can affect how Zoo Code performs.", "maxTokens": { "label": "Max Output Tokens", "description": "Maximum number of tokens the model can generate in a response. (Specify -1 to allow the server to set the max tokens.)" @@ -590,7 +586,7 @@ }, "consecutiveMistakeLimit": { "label": "Error & Repetition Limit", - "description": "Number of consecutive errors or repeated actions before showing 'Roo is having trouble' dialog. Set to 0 to disable this safety mechanism (it will never trigger).", + "description": "Number of consecutive errors or repeated actions before showing 'Zoo is having trouble' dialog. Set to 0 to disable this safety mechanism (it will never trigger).", "unlimitedDescription": "Unlimited retries enabled (auto-proceed). The dialog will never appear.", "warning": "⚠️ Setting to 0 allows unlimited retries which may consume significant API usage" }, @@ -626,18 +622,18 @@ }, "enable": { "label": "Enable automatic checkpoints", - "description": "When enabled, Roo will automatically create checkpoints during task execution, making it easy to review changes or revert to earlier states. <0>Learn more" + "description": "When enabled, Zoo will automatically create checkpoints during task execution, making it easy to review changes or revert to earlier states. <0>Learn more" } }, "notifications": { "sound": { "label": "Enable sound effects", - "description": "When enabled, Roo will play sound effects for notifications and events.", + "description": "When enabled, Zoo will play sound effects for notifications and events.", "volumeLabel": "Volume" }, "tts": { "label": "Enable text-to-speech", - "description": "When enabled, Roo will read aloud its responses using text-to-speech.", + "description": "When enabled, Zoo will read aloud its responses using text-to-speech.", "speedLabel": "Speed" } }, @@ -645,7 +641,7 @@ "description": "Control what information is included in the AI's context window, affecting token usage and response quality", "autoCondenseContextPercent": { "label": "Threshold to trigger intelligent context condensing", - "description": "When the context window reaches this threshold, Roo will automatically condense it." + "description": "When the context window reaches this threshold, Zoo will automatically condense it." }, "condensingApiConfiguration": { "label": "API Configuration for Context Condensing", @@ -661,7 +657,7 @@ }, "autoCondenseContext": { "name": "Automatically trigger intelligent context condensing", - "description": "When enabled, Roo will automatically condense the context when the threshold is reached. When disabled, you can still manually trigger context condensing." + "description": "When enabled, Zoo will automatically condense the context when the threshold is reached. When disabled, you can still manually trigger context condensing." }, "openTabs": { "label": "Open tabs context limit", @@ -681,7 +677,7 @@ }, "maxReadFile": { "label": "File read auto-truncate threshold", - "description": "Roo reads this number of lines when the model omits start/end values. If this number is less than the file's total, Roo generates a line number index of code definitions. Special cases: -1 instructs Roo to read the entire file (without indexing), and 0 instructs it to read no lines and provides line indexes only for minimal context. Lower values minimize initial context usage, enabling precise subsequent line-range reads. Explicit start/end requests are not limited by this setting.", + "description": "Zoo reads this number of lines when the model omits start/end values. If this number is less than the file's total, Zoo generates a line number index of code definitions. Special cases: -1 instructs Zoo to read the entire file (without indexing), and 0 instructs it to read no lines and provides line indexes only for minimal context. Lower values minimize initial context usage, enabling precise subsequent line-range reads. Explicit start/end requests are not limited by this setting.", "lines": "lines", "always_full_read": "Always read entire file" }, @@ -748,15 +744,15 @@ }, "outputLineLimit": { "label": "Terminal output limit", - "description": "Keeps the first and last lines and drops the middle to stay under the limit. Lower to save tokens; raise to give Roo more middle detail. Roo sees a placeholder where the content is skipped.<0>Learn more" + "description": "Keeps the first and last lines and drops the middle to stay under the limit. Lower to save tokens; raise to give Zoo more middle detail. Zoo sees a placeholder where the content is skipped.<0>Learn more" }, "outputCharacterLimit": { "label": "Terminal character limit", - "description": "Overrides the line limit to prevent memory issues by enforcing a hard cap on output size. If exceeded, keeps the beginning and end and shows a placeholder to Roo where content is skipped. <0>Learn more" + "description": "Overrides the line limit to prevent memory issues by enforcing a hard cap on output size. If exceeded, keeps the beginning and end and shows a placeholder to Zoo where content is skipped. <0>Learn more" }, "outputPreviewSize": { "label": "Command output preview size", - "description": "Controls how much command output Roo sees directly. Full output is always saved and accessible when needed.", + "description": "Controls how much command output Zoo sees directly. Full output is always saved and accessible when needed.", "options": { "small": "Small (5KB)", "medium": "Medium (10KB)", @@ -769,7 +765,7 @@ }, "shellIntegrationDisabled": { "label": "Use Inline Terminal (recommended)", - "description": "Run commands in the Inline Terminal (chat) to bypass shell profiles/integration for faster, more reliable runs. When disabled Roo uses the VS Code terminal with your shell profile, prompts, and plugins. <0>Learn more" + "description": "Run commands in the Inline Terminal (chat) to bypass shell profiles/integration for faster, more reliable runs. When disabled Zoo uses the VS Code terminal with your shell profile, prompts, and plugins. <0>Learn more" }, "commandDelay": { "label": "Terminal command delay", @@ -806,7 +802,7 @@ "advanced": { "diff": { "label": "Enable editing through diffs", - "description": "When enabled, Roo will be able to edit files more quickly and will automatically reject truncated full-file writes", + "description": "When enabled, Zoo will be able to edit files more quickly and will automatically reject truncated full-file writes", "strategy": { "label": "Diff strategy", "options": { @@ -823,7 +819,7 @@ }, "todoList": { "label": "Enable todo list tool", - "description": "When enabled, Roo can create and manage todo lists to track task progress. This helps organize complex tasks into manageable steps." + "description": "When enabled, Zoo can create and manage todo lists to track task progress. This helps organize complex tasks into manageable steps." } }, "experimental": { @@ -833,15 +829,15 @@ }, "INSERT_BLOCK": { "name": "Use experimental insert content tool", - "description": "Enable the experimental insert content tool, allowing Roo to insert content at specific line numbers without needing to create a diff." + "description": "Enable the experimental insert content tool, allowing Zoo to insert content at specific line numbers without needing to create a diff." }, "CONCURRENT_FILE_READS": { "name": "Enable concurrent file reads", - "description": "When enabled, Roo can read multiple files in a single request. When disabled, Roo must read files one at a time. Disabling this can help when working with less capable models or when you want more control over file access." + "description": "When enabled, Zoo can read multiple files in a single request. When disabled, Zoo must read files one at a time. Disabling this can help when working with less capable models or when you want more control over file access." }, "MULTI_SEARCH_AND_REPLACE": { "name": "Use experimental multi block diff tool", - "description": "When enabled, Roo will use multi block diff tool. This will try to update multiple code blocks in the file in one request." + "description": "When enabled, Zoo will use multi block diff tool. This will try to update multiple code blocks in the file in one request." }, "MARKETPLACE": { "name": "Enable Marketplace", @@ -849,7 +845,7 @@ }, "PREVENT_FOCUS_DISRUPTION": { "name": "Background editing", - "description": "Prevent editor focus disruption when enabled. File edits happen in the background without opening diff views or stealing focus. You can continue working uninterrupted while Roo makes changes. Files can be opened without focus to capture diagnostics or kept closed entirely." + "description": "Prevent editor focus disruption when enabled. File edits happen in the background without opening diff views or stealing focus. You can continue working uninterrupted while Zoo makes changes. Files can be opened without focus to capture diagnostics or kept closed entirely." }, "ASSISTANT_MESSAGE_PARSER": { "name": "Use new message parser", @@ -861,7 +857,7 @@ }, "IMAGE_GENERATION": { "name": "Enable AI image generation", - "description": "When enabled, Roo can generate images from text prompts using image generation models.", + "description": "When enabled, Zoo can generate images from text prompts using image generation models.", "providerLabel": "Provider", "providerDescription": "Select which provider to use for image generation.", "openRouterApiKeyLabel": "OpenRouter API Key", @@ -874,11 +870,11 @@ }, "RUN_SLASH_COMMAND": { "name": "Enable model-initiated slash commands", - "description": "When enabled, Roo can run your slash commands to execute workflows." + "description": "When enabled, Zoo can run your slash commands to execute workflows." }, "CUSTOM_TOOLS": { "name": "Enable custom tools", - "description": "When enabled, Roo can load and use custom TypeScript/JavaScript tools from your project's .roo/tools directory or ~/.roo/tools for global tools. Note: these tools will automatically be auto-approved.", + "description": "When enabled, Zoo can load and use custom TypeScript/JavaScript tools from your project's .roo/tools directory or ~/.roo/tools for global tools. Note: these tools will automatically be auto-approved.", "toolsHeader": "Available Custom Tools", "noTools": "No custom tools loaded. Add .ts or .js files to your project's .roo/tools directory or ~/.roo/tools for global tools.", "refreshButton": "Refresh", @@ -890,7 +886,7 @@ }, "promptCaching": { "label": "Disable prompt caching", - "description": "When checked, Roo will not use prompt caching for this model." + "description": "When checked, Zoo will not use prompt caching for this model." }, "temperature": { "useCustom": "Use custom temperature", @@ -920,7 +916,7 @@ } }, "modelPicker": { - "automaticFetch": "The extension automatically fetches the latest list of models available on {{serviceName}}. If you're unsure which model to choose, Roo Code works best with {{defaultModelId}}. You can also try searching \"free\" for no-cost options currently available.", + "automaticFetch": "The extension automatically fetches the latest list of models available on {{serviceName}}. If you're unsure which model to choose, Zoo Code works best with {{defaultModelId}}. You can also try searching \"free\" for no-cost options currently available.", "label": "Model", "searchPlaceholder": "Search", "noMatchFound": "No match found", @@ -930,7 +926,7 @@ "footer": { "telemetry": { "label": "Allow anonymous error and usage reporting", - "description": "Help improve Roo Code by sending anonymous usage data and error reports. This telemetry does not collect code, prompts or personal information. See our privacy policy for more details." + "description": "Help improve Zoo Code by sending anonymous usage data and error reports. This telemetry does not collect code, prompts or personal information. See our privacy policy for more details." }, "settings": { "import": "Import", diff --git a/webview-ui/src/i18n/locales/en/welcome.json b/webview-ui/src/i18n/locales/en/welcome.json index 2fec3e2c121..8851444e428 100644 --- a/webview-ui/src/i18n/locales/en/welcome.json +++ b/webview-ui/src/i18n/locales/en/welcome.json @@ -1,52 +1,18 @@ { - "routers": { - "requesty": { - "description": "Your optimized LLM router", - "incentive": "$1 free credit" - }, - "openrouter": { - "description": "A unified interface for LLMs" - }, - "roo": { - "description": "The best free models to get started", - "incentive": "Try Roo out for free" - } - }, "landing": { "greeting": "Welcome to Roo Code!", "introduction": "With a range of built-in and extensible Modes, Roo Code lets you plan, architect, code, debug and boost your productivity like never before.", - "accountMention": "To get started, create your Roo Code Cloud account. Get powerful models, web control, analytics, support and more.", - "getStarted": "Create Roo Account", - "noAccount": "or use without an account" + "getStarted": "Choose your provider" }, "providerSignup": { "heading": "Choose your provider", "chooseProvider": "Roo needs an LLM provider to work. Choose one to get started, you can add more later.", - "rooCloudProvider": "Roo Code Router", - "rooCloudDescription": "The easiest way to start is with the Roo Code Router: a curated mix of free and paid models at a low cost.", - "learnMore": "Learn more", - "useAnotherProvider": "3rd-party Provider", - "useAnotherProviderDescription": "Enter an API key and get going.", - "noApiKeys": "Don't want to deal with API keys and separate accounts?", - "backToRoo": "Go with the Roo Code Router.", "goBack": "Back", "finish": "Finish" }, - "waitingForCloud": { - "heading": "Logging into Roo Code Cloud...", - "description": "We'll take you to your browser to sign up for Roo Code Cloud. We'll then bring you back here to finish.", - "noPrompt": "If you don't get prompted to open a URL, click here.", - "havingTrouble": "If you've completed sign up but are having trouble, click here.", - "pasteUrl": "Paste the callback URL shown in your browser:", - "docsLink": "Not working? Check the docs.", - "invalidURL": "That doesn't look like a valid callback URL. Please copy what Roo Code Cloud is showing in your browser.", - "goBack": "Go back" - }, - "startRouter": "We recommend using an LLM Router:", - "startCustom": "Or you can bring your provider API key:", "telemetry": { - "helpImprove": "Help Improve Roo Code", - "helpImproveMessage": "Roo Code collects error and usage data to help us fix bugs and improve the extension. This telemetry does not collect code, prompts or personal information. You can turn this off in settings." + "helpImprove": "Help Improve Zoo Code", + "helpImproveMessage": "Zoo Code collects error and usage data to help us fix bugs and improve the extension. This telemetry does not collect code, prompts or personal information. You can turn this off in settings." }, "importSettings": "Import Settings" } diff --git a/webview-ui/src/i18n/locales/en/worktrees.json b/webview-ui/src/i18n/locales/en/worktrees.json index a9c901ede01..221f02b8e94 100644 --- a/webview-ui/src/i18n/locales/en/worktrees.json +++ b/webview-ui/src/i18n/locales/en/worktrees.json @@ -1,7 +1,7 @@ { "title": "Worktrees", "done": "Done", - "description": "Git worktrees are great for agentic coding, because they allow you to work on multiple branches of a repo at the same time, by keeping them in different directories. Each worktree gets its own VS Code window with Roo Code.", + "description": "Git worktrees are great for agentic coding, because they allow you to work on multiple branches of a repo at the same time, by keeping them in different directories. Each worktree gets its own VS Code window with Zoo Code.", "notGitRepo": "This workspace is not a Git repository. Open a workspace with a Git repository to set up worktrees.", "multiRootNotSupported": "Worktrees are not supported in multi-root workspaces. Please open a single folder to use worktrees.", diff --git a/webview-ui/src/i18n/locales/es/chat.json b/webview-ui/src/i18n/locales/es/chat.json index 61f398ea6a6..d826d6fdcae 100644 --- a/webview-ui/src/i18n/locales/es/chat.json +++ b/webview-ui/src/i18n/locales/es/chat.json @@ -1,5 +1,5 @@ { - "greeting": "Bienvenido a Roo Code", + "greeting": "¡Bienvenido a Zoo Code!", "task": { "title": "Tarea", "expand": "Expandir tarea", @@ -15,16 +15,6 @@ "export": "Exportar historial de tareas", "delete": "Eliminar tarea (Shift + Clic para omitir confirmación)", "condenseContext": "Condensar contexto de forma inteligente", - "share": "Compartir tarea", - "shareWithOrganization": "Compartir con organización", - "shareWithOrganizationDescription": "Solo los miembros de tu organización pueden acceder", - "sharePublicly": "Compartir públicamente", - "sharePubliclyDescription": "Cualquiera con el enlace puede acceder", - "connectToCloud": "Conectar al Cloud", - "connectToCloudDescription": "Inicia sesión en Roo Code Cloud para compartir tareas", - "sharingDisabledByOrganization": "Compartir deshabilitado por la organización", - "shareSuccessOrganization": "Enlace de organización copiado al portapapeles", - "shareSuccessPublic": "Enlace público copiado al portapapeles", "openApiHistory": "Abrir historial de API", "openUiHistory": "Abrir historial de UI", "backToParentTask": "Tarea principal" @@ -98,7 +88,7 @@ "enqueueMessage": "Agregar mensaje a la cola (se enviará después de que termine la tarea actual)", "scrollToBottom": "Desplazarse al final del chat", "scrollToLatestCheckpoint": "Desplazarse al checkpoint anterior", - "about": "Roo Code es todo un equipo de desarrollo de IA en tu editor.", + "about": "Zoo Code es todo un equipo de desarrollo de IA en tu editor.", "docs": "Consulta nuestra documentación para saber más.", "onboarding": "Tu lista de tareas en este espacio de trabajo está vacía.", "rooTips": { @@ -130,7 +120,7 @@ "title": "Modos", "marketplace": "Marketplace de Modos", "settings": "Configuración de Modos", - "description": "Personalidades especializadas que adaptan el comportamiento de Roo.", + "description": "Personalidades especializadas que adaptan el comportamiento de Zoo.", "searchPlaceholder": "Buscar modos...", "noResults": "No se encontraron resultados" }, @@ -144,7 +134,7 @@ "diffError": { "title": "Edición fallida" }, - "troubleMessage": "Roo está teniendo problemas...", + "troubleMessage": "Zoo está teniendo problemas...", "apiRequest": { "title": "Solicitud API", "failed": "Solicitud API falló", @@ -162,7 +152,7 @@ "500": "Error del servidor del proveedor. Algo está mal en el lado del proveedor, no hay nada mal con tu solicitud.", "docs": "Documentación", "goToSettings": "Configuración", - "unknown": "Error API desconocido. Por favor contacta al soporte de Roo Code.", + "unknown": "Error API desconocido. Contacta con el soporte de Zoo Code.", "connection": "Error de conexión. Asegúrate de tener una conexión a Internet funcional.", "claudeCodeNotAuthenticated": "Debes iniciar sesión para usar Claude Code. Ve a Configuración y haz clic en \"Iniciar sesión en Claude Code\" para autenticarte." } @@ -190,40 +180,40 @@ "wantsToFetch": "Roo quiere obtener instrucciones detalladas para ayudar con la tarea actual" }, "fileOperations": { - "wantsToRead": "Roo quiere leer este archivo", - "wantsToReadOutsideWorkspace": "Roo quiere leer este archivo fuera del espacio de trabajo", - "didRead": "Roo leyó este archivo", - "wantsToEdit": "Roo quiere editar este archivo", - "wantsToEditOutsideWorkspace": "Roo quiere editar este archivo fuera del espacio de trabajo", - "wantsToEditProtected": "Roo quiere editar un archivo de configuración protegido", - "wantsToCreate": "Roo quiere crear un nuevo archivo", + "wantsToRead": "Zoo quiere leer este archivo", + "wantsToReadOutsideWorkspace": "Zoo quiere leer este archivo fuera del espacio de trabajo", + "didRead": "Zoo leyó este archivo", + "wantsToEdit": "Zoo quiere editar este archivo", + "wantsToEditOutsideWorkspace": "Zoo quiere editar este archivo fuera del espacio de trabajo", + "wantsToEditProtected": "Zoo quiere editar un archivo de configuración protegido", + "wantsToCreate": "Zoo quiere crear un nuevo archivo", "wantsToSearchReplace": "Roo quiere realizar búsqueda y reemplazo en este archivo", "didSearchReplace": "Roo realizó búsqueda y reemplazo en este archivo", - "wantsToInsert": "Roo quiere insertar contenido en este archivo", - "wantsToInsertWithLineNumber": "Roo quiere insertar contenido en este archivo en la línea {{lineNumber}}", - "wantsToInsertAtEnd": "Roo quiere añadir contenido al final de este archivo", - "wantsToReadAndXMore": "Roo quiere leer este archivo y {{count}} más", - "wantsToReadMultiple": "Roo quiere leer varios archivos", - "wantsToApplyBatchChanges": "Roo quiere aplicar cambios a múltiples archivos", - "wantsToGenerateImage": "Roo quiere generar una imagen", - "wantsToGenerateImageOutsideWorkspace": "Roo quiere generar una imagen fuera del espacio de trabajo", - "wantsToGenerateImageProtected": "Roo quiere generar una imagen en una ubicación protegida", - "didGenerateImage": "Roo generó una imagen" + "wantsToInsert": "Zoo quiere insertar contenido en este archivo", + "wantsToInsertWithLineNumber": "Zoo quiere insertar contenido en este archivo en la línea {{lineNumber}}", + "wantsToInsertAtEnd": "Zoo quiere añadir contenido al final de este archivo", + "wantsToReadAndXMore": "Zoo quiere leer este archivo y {{count}} más", + "wantsToReadMultiple": "Zoo quiere leer varios archivos", + "wantsToApplyBatchChanges": "Zoo quiere aplicar cambios a múltiples archivos", + "wantsToGenerateImage": "Zoo quiere generar una imagen", + "wantsToGenerateImageOutsideWorkspace": "Zoo quiere generar una imagen fuera del espacio de trabajo", + "wantsToGenerateImageProtected": "Zoo quiere generar una imagen en una ubicación protegida", + "didGenerateImage": "Zoo generó una imagen" }, "directoryOperations": { - "wantsToViewTopLevel": "Roo quiere ver los archivos de nivel superior en este directorio", - "didViewTopLevel": "Roo vio los archivos de nivel superior en este directorio", - "wantsToViewRecursive": "Roo quiere ver recursivamente todos los archivos en este directorio", - "didViewRecursive": "Roo vio recursivamente todos los archivos en este directorio", - "wantsToSearch": "Roo quiere buscar en este directorio {{regex}}", - "didSearch": "Roo buscó en este directorio {{regex}}", - "wantsToSearchOutsideWorkspace": "Roo quiere buscar en este directorio (fuera del espacio de trabajo) {{regex}}", - "didSearchOutsideWorkspace": "Roo buscó en este directorio (fuera del espacio de trabajo) {{regex}}", - "wantsToViewTopLevelOutsideWorkspace": "Roo quiere ver los archivos de nivel superior en este directorio (fuera del espacio de trabajo)", - "didViewTopLevelOutsideWorkspace": "Roo vio los archivos de nivel superior en este directorio (fuera del espacio de trabajo)", - "wantsToViewRecursiveOutsideWorkspace": "Roo quiere ver recursivamente todos los archivos en este directorio (fuera del espacio de trabajo)", - "didViewRecursiveOutsideWorkspace": "Roo vio recursivamente todos los archivos en este directorio (fuera del espacio de trabajo)", - "wantsToViewMultipleDirectories": "Roo quiere ver varios directorios" + "wantsToViewTopLevel": "Zoo quiere ver los archivos de nivel superior en este directorio", + "didViewTopLevel": "Zoo vio los archivos de nivel superior en este directorio", + "wantsToViewRecursive": "Zoo quiere ver recursivamente todos los archivos en este directorio", + "didViewRecursive": "Zoo vio recursivamente todos los archivos en este directorio", + "wantsToSearch": "Zoo quiere buscar en este directorio {{regex}}", + "didSearch": "Zoo buscó en este directorio {{regex}}", + "wantsToSearchOutsideWorkspace": "Zoo quiere buscar en este directorio (fuera del espacio de trabajo) {{regex}}", + "didSearchOutsideWorkspace": "Zoo buscó en este directorio (fuera del espacio de trabajo) {{regex}}", + "wantsToViewTopLevelOutsideWorkspace": "Zoo quiere ver los archivos de nivel superior en este directorio (fuera del espacio de trabajo)", + "didViewTopLevelOutsideWorkspace": "Zoo vio los archivos de nivel superior en este directorio (fuera del espacio de trabajo)", + "wantsToViewRecursiveOutsideWorkspace": "Zoo quiere ver recursivamente todos los archivos en este directorio (fuera del espacio de trabajo)", + "didViewRecursiveOutsideWorkspace": "Zoo vio recursivamente todos los archivos en este directorio (fuera del espacio de trabajo)", + "wantsToViewMultipleDirectories": "Zoo quiere ver varios directorios" }, "commandOutput": "Salida del comando", "commandExecution": { @@ -245,24 +235,24 @@ "response": "Respuesta", "arguments": "Argumentos", "text": { - "rooSaid": "Roo ha dicho" + "rooSaid": "Zoo ha dicho" }, "feedback": { "youSaid": "Has dicho" }, "mcp": { - "wantsToUseTool": "Roo quiere usar una herramienta en el servidor MCP {{serverName}}", - "wantsToAccessResource": "Roo quiere acceder a un recurso en el servidor MCP {{serverName}}" + "wantsToUseTool": "Zoo quiere usar una herramienta en el servidor MCP {{serverName}}", + "wantsToAccessResource": "Zoo quiere acceder a un recurso en el servidor MCP {{serverName}}" }, "modes": { - "wantsToSwitch": "Roo quiere cambiar a modo {{mode}}", - "wantsToSwitchWithReason": "Roo quiere cambiar a modo {{mode}} porque: {{reason}}", - "didSwitch": "Roo cambió a modo {{mode}}", - "didSwitchWithReason": "Roo cambió a modo {{mode}} porque: {{reason}}" + "wantsToSwitch": "Zoo quiere cambiar a modo {{mode}}", + "wantsToSwitchWithReason": "Zoo quiere cambiar a modo {{mode}} porque: {{reason}}", + "didSwitch": "Zoo cambió a modo {{mode}}", + "didSwitchWithReason": "Zoo cambió a modo {{mode}} porque: {{reason}}" }, "subtasks": { - "wantsToCreate": "Roo quiere crear una nueva subtarea en modo {{mode}}", - "wantsToFinish": "Roo quiere finalizar esta subtarea", + "wantsToCreate": "Zoo quiere crear una nueva subtarea en modo {{mode}}", + "wantsToFinish": "Zoo quiere finalizar esta subtarea", "newTaskContent": "Instrucciones de la subtarea", "completionContent": "Subtarea completada", "resultContent": "Resultados de la subtarea", @@ -271,7 +261,7 @@ "goToSubtask": "Ver tarea" }, "questions": { - "hasQuestion": "Roo tiene una pregunta" + "hasQuestion": "Zoo tiene una pregunta" }, "taskCompleted": "Tarea completada", "modelResponseIncomplete": "Respuesta del modelo incompleta", @@ -287,7 +277,7 @@ "copyToClipboard": "Copiar al portapapeles", "copied": "¡Copiado!", "diagnostics": "Obtener información de error detallada", - "proxyProvider": "Parece que estás usando un proveedor basado en proxy. Asegúrate de revisar sus registros y de que no está reescribiendo las solicitudes de Roo." + "proxyProvider": "Parece que estás usando un proveedor basado en proxy. Asegúrate de revisar sus registros y de que no está reescribiendo las solicitudes de Zoo." }, "powershell": { "issues": "Parece que estás teniendo problemas con Windows PowerShell, por favor consulta esta" @@ -330,31 +320,24 @@ } }, "skill": { - "wantsToLoad": "Roo quiere cargar una habilidad", - "didLoad": "Roo cargó una habilidad" + "wantsToLoad": "Zoo quiere cargar una habilidad", + "didLoad": "Zoo cargó una habilidad" }, "followUpSuggest": { "copyToInput": "Copiar a la entrada (o Shift + clic)", "timerPrefix": "Aprobación automática habilitada. Seleccionando en {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}} publicado", - "support": "Por favor, apoya a Roo Code dándonos una estrella en GitHub.", - "stealthModel": { - "feature": "Modelo stealth GRATUITO por tiempo limitado - Code Supernova: ¡Ahora actualizado con una ventana de contexto de 1M tokens! Un modelo de codificación agéntica versátil que soporta entradas de imágenes, accesible a través de Roo Code Cloud.", - "note": "(Nota: los prompts y completaciones son registrados por el creador del modelo y utilizados para mejorarlo)", - "connectButton": "Conectar a Roo Code Cloud", - "selectModel": "Selecciona roo/code-supernova del proveedor Roo Code Cloud en Configuración para comenzar.", - "goToSettingsButton": "Ir a Configuración" - }, + "title": "Zoo Code {{version}} publicado", + "support": "Apoya a Zoo Code dándonos una estrella en GitHub.", "handoff": { - "heading": "El plugin de Roo Code no va a desaparecer.", - "description": "Puede que hayas visto el anuncio reciente de que Roo Code ha llegado a 3 millones de instalaciones y que el equipo original se está volcando por completo en Roomote. Sabemos que esa noticia fue dura para muchos de vosotros. Este plugin significa mucho para nosotros y para ti, y te escuchamos. La buena noticia: un equipo de la comunidad ha dado un paso adelante para seguir adelante con Roo Code, y estamos trabajando con ellos en un relevo oficial para que el plugin del que dependes siga recibiendo mantenimiento y mejoras.", - "readMore": "Leer el anuncio original de Matt Rubens" + "heading": "¡Zoo Code ha vuelto, ahora como un plugin mantenido por la comunidad llamado Zoo Code!", + "description": "Si no has estado al tanto, el equipo de Zoo Code anunció recientemente que va a dejar de desarrollar Zoo Code y archivará el trabajo realizado. Pero no te preocupes: la comunidad ha dado un paso al frente para continuar el legado de Zoo Code con un nuevo nombre y un nuevo hogar. Ya no somos solo un \"Roo\", somos una comunidad, un \"Zoo\", si quieres verlo así. Zoo Code es un plugin mantenido por la comunidad que continúa donde Zoo Code lo dejó, y estamos comprometidos a mantener vivo el espíritu de Roo mientras introducimos nuevas funciones y mejoras. Queremos dar un enorme agradecimiento a todo el equipo de Zoo Code por su increíble trabajo y por crear una herramienta tan increíble para desarrolladores. Nos entusiasma seguir construyendo sobre sus cimientos y ver hasta dónde lleva la comunidad a Zoo Code en el futuro.", + "readMore": "Visita la nueva página principal de Zoo Code y lee el anuncio completo" }, "release": { "heading": "Qué hay de nuevo:", - "gpt55": "GPT-5.5 vía OpenAI Codex: Se añadió soporte para GPT-5.5 en el proveedor OpenAI Codex para que puedas usar el modelo más reciente directamente desde Roo Code.", + "gpt55": "GPT-5.5 vía OpenAI Codex: Se añadió soporte para GPT-5.5 en el proveedor OpenAI Codex para que puedas usar el modelo más reciente directamente desde Zoo Code.", "claudeOpus47": "Claude Opus 4.7 en Vertex AI: Se añadió Claude Opus 4.7 al proveedor Vertex AI, el modelo de razonamiento insignia más reciente de Anthropic.", "checkpointNav": "Navegación por Checkpoints Anteriores: Se añadieron controles en el chat para retroceder por los checkpoints previos, con soporte completo de i18n." }, @@ -380,24 +363,24 @@ "profileViolationWarning": "El perfil actual no es compatible con la configuración de tu organización", "shellIntegration": { "title": "Advertencia de ejecución de comandos", - "description": "Tu comando se está ejecutando sin la integración de shell de terminal de VSCode. Para suprimir esta advertencia, puedes desactivar la integración de shell en la sección Terminal de la configuración de Roo Code o solucionar problemas de integración de terminal de VSCode usando el enlace de abajo.", + "description": "Tu comando se está ejecutando sin la integración de shell del terminal de VSCode. Para ocultar esta advertencia, puedes desactivar la integración de shell en la sección Terminal de la configuración de Zoo Code o solucionar los problemas de integración del terminal de VSCode con el enlace de abajo.", "troubleshooting": "Haz clic aquí para ver la documentación de integración de shell." }, "ask": { "autoApprovedRequestLimitReached": { "title": "Límite de Solicitudes Auto-aprobadas Alcanzado", - "description": "Roo ha alcanzado el límite auto-aprobado de {{count}} solicitud(es) API. ¿Deseas reiniciar el contador y continuar con la tarea?", + "description": "Zoo ha alcanzado el límite auto-aprobado de {{count}} solicitud(es) API. ¿Deseas reiniciar el contador y continuar con la tarea?", "button": "Reiniciar y Continuar" }, "autoApprovedCostLimitReached": { "title": "Límite de Costo Auto-Aprobado Alcanzado", - "description": "Roo ha alcanzado el límite de costo autoaprobado de ${{count}}. ¿Le gustaría reiniciar el costo y continuar con la tarea?", + "description": "Zoo ha alcanzado el límite de costo autoaprobado de ${{count}}. ¿Le gustaría reiniciar el costo y continuar con la tarea?", "button": "Reiniciar y continuar" } }, "codebaseSearch": { - "wantsToSearch": "Roo quiere buscar en la base de código {{query}}", - "wantsToSearchWithPath": "Roo quiere buscar en la base de código {{query}} en {{path}}", + "wantsToSearch": "Zoo quiere buscar en la base de código {{query}}", + "wantsToSearchWithPath": "Zoo quiere buscar en la base de código {{query}} en {{path}}", "didSearch_one": "Se encontró 1 resultado", "didSearch_other": "Se encontraron {{count}} resultados", "resultTooltip": "Puntuación de similitud: {{score}} (haz clic para abrir el archivo)" @@ -438,7 +421,7 @@ "ariaLabel": "Versión {{version}} - Haz clic para ver las notas de la versión" }, "rooCloudCTA": { - "title": "¡Roo Code Cloud está evolucionando!", + "title": "¡Zoo Code Cloud está evolucionando!", "description": "Ejecuta agentes remotos en la nube, accede a tus tareas desde cualquier lugar, colabora con otros y mucho más.", "joinWaitlist": "Regístrate para recibir las últimas actualizaciones." }, @@ -479,8 +462,8 @@ "clickToEdit": "Haz clic para editar el mensaje" }, "slashCommand": { - "wantsToRun": "Roo quiere ejecutar un comando slash", - "didRun": "Roo ejecutó un comando slash" + "wantsToRun": "Zoo quiere ejecutar un comando slash", + "didRun": "Zoo ejecutó un comando slash" }, "todo": { "partial": "{{completed}} de {{total}} tareas pendientes realizadas", @@ -499,11 +482,11 @@ "openMcpSettings": "Abrir configuración de MCP" }, "readCommandOutput": { - "title": "Roo read command output" + "title": "Zoo read command output" }, "retiredProvider": { "title": "Proveedor ya no compatible", - "message": "Lo sentimos, este proveedor ya no es compatible. Vimos que muy pocos usuarios de Roo lo usaban realmente y necesitamos reducir el alcance de nuestro código para poder seguir avanzando rápido y servir bien a nuestra comunidad en este espacio. Fue una decisión muy difícil, pero nos permite enfocarnos en lo que más te importa. Lo sabemos, es una lástima.", + "message": "Este proveedor ya no está disponible. Selecciona un proveedor compatible para continuar.", "openSettings": "Abrir configuración" } } diff --git a/webview-ui/src/i18n/locales/es/cloud.json b/webview-ui/src/i18n/locales/es/cloud.json deleted file mode 100644 index a736a285dfc..00000000000 --- a/webview-ui/src/i18n/locales/es/cloud.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "title": "Cloud", - "profilePicture": "Foto de perfil", - "logOut": "Cerrar sesión", - "testApiAuthentication": "Probar autenticación de API", - "signIn": "Conectar a Roo Code Cloud", - "connect": "Empezar", - "cloudBenefitsTitle": "Prueba Roo Code Cloud", - "cloudBenefitProvider": "Accede a modelos gratuitos y de pago que funcionan genial con Roo", - "cloudBenefitCloudAgents": "Da tareas a agentes autónomos en la nube", - "cloudBenefitTriggers": "Obtén revisiones de código en GitHub, inicia tareas desde Slack y más", - "cloudBenefitWalkaway": "Sigue y controla tareas desde cualquier lugar (incluido tu teléfono)", - "cloudBenefitHistory": "Accede a tu historial de tareas desde cualquier lugar y compártelas con otros", - "cloudBenefitMetrics": "Obtén una visión holística de tu consumo de tokens", - "visitCloudWebsite": "Visitar Roo Code Cloud", - "taskSync": "Sincronización de tareas", - "taskSyncDescription": "Sincroniza tus tareas para verlas y compartirlas en Roo Code Cloud", - "taskSyncManagedByOrganization": "La sincronización de tareas es gestionada por tu organización", - "usageMetricsAlwaysReported": "La información de uso del modelo siempre se reporta cuando se ha iniciado sesión", - "authWaiting": "Esperando que se complete la autenticación...", - "havingTrouble": "¿Tienes problemas?", - "pasteCallbackUrl": "Copia la URL de redirect desde tu navegador y pégala aquí:", - "startOver": "Empezar de nuevo", - "personalAccount": "Cuenta Personal", - "switchAccount": "Cambiar Cuenta de Roo Code Cloud", - "createTeamAccount": "Crear Cuenta de Equipo", - "cloudUrlPillLabel": "URL de Roo Code Cloud", - "upsell": { - "autoApprovePowerUser": "¿Dándole a Roo un poco de independencia? Contrólalo desde cualquier lugar con Roo Code Cloud. Saber más.", - "longRunningTask": "Esto podría tardar un poco. Continúa desde cualquier lugar con la Nube.", - "taskList": "¿Disfrutando de Roo? Echa un vistazo a Roo Code Cloud: sigue y controla tus tareas desde cualquier lugar, ejecuta agentes de la Nube autónomos, obtén estadísticas de uso y más. Aprende más." - } -} diff --git a/webview-ui/src/i18n/locales/es/marketplace.json b/webview-ui/src/i18n/locales/es/marketplace.json index 2d4b257c93f..97a1e1374ae 100644 --- a/webview-ui/src/i18n/locales/es/marketplace.json +++ b/webview-ui/src/i18n/locales/es/marketplace.json @@ -1,5 +1,5 @@ { - "title": "Roo Marketplace", + "title": "Zoo Marketplace", "tabs": { "installed": "Instalado", "settings": "Configuración", diff --git a/webview-ui/src/i18n/locales/es/mcp.json b/webview-ui/src/i18n/locales/es/mcp.json index 5b7d8326267..768b4b6e596 100644 --- a/webview-ui/src/i18n/locales/es/mcp.json +++ b/webview-ui/src/i18n/locales/es/mcp.json @@ -2,16 +2,16 @@ "title": "Servidores MCP", "done": "Listo", "marketplace": "Mercado MCP", - "description": "El <0>Model Context Protocol permite la comunicación con servidores MCP que se ejecutan localmente y proporcionan herramientas y recursos adicionales para extender las capacidades de Roo. Puedes usar <1>servidores creados por la comunidad o pedir a Roo que cree nuevas herramientas específicas para tu flujo de trabajo (por ejemplo, \"añadir una herramienta que obtenga la documentación más reciente de npm\").", + "description": "El <0>Model Context Protocol permite la comunicación con servidores MCP que se ejecutan localmente y proporcionan herramientas y recursos adicionales para extender las capacidades de Zoo. Puedes usar <1>servidores creados por la comunidad o pedir a Zoo que cree nuevas herramientas específicas para tu flujo de trabajo (por ejemplo, \"añadir una herramienta que obtenga la documentación más reciente de npm\").", "instructions": "Instrucciones", "enableToggle": { "title": "Activar servidores MCP", - "description": "Actívalo para que Roo pueda usar herramientas de servidores MCP conectados. Esto le da más capacidades a Roo. Si no planeas usar estas herramientas extra, desactívalo para ayudar a reducir los costes de tokens API." + "description": "Actívalo para que Zoo pueda usar herramientas de servidores MCP conectados. Esto le da más capacidades a Zoo. Si no planeas usar estas herramientas extra, desactívalo para ayudar a reducir los costes de tokens API." }, "enableServerCreation": { "title": "Activar creación de servidores MCP", - "description": "Actívalo para que Roo te ayude a crear <1>nuevos servidores MCP personalizados. <0>Más información sobre la creación de servidores", - "hint": "Consejo: Para reducir los costes de tokens API, desactiva esta opción cuando no le pidas a Roo que cree un nuevo servidor MCP." + "description": "Actívalo para que Zoo te ayude a crear <1>nuevos servidores MCP personalizados. <0>Más información sobre la creación de servidores", + "hint": "Consejo: Para reducir los costes de tokens API, desactiva esta opción cuando no le pidas a Zoo que cree un nuevo servidor MCP." }, "editGlobalMCP": "Editar MCP global", "editProjectMCP": "Editar MCP del proyecto", diff --git a/webview-ui/src/i18n/locales/es/prompts.json b/webview-ui/src/i18n/locales/es/prompts.json index 6e2ad48051b..626fb3284ef 100644 --- a/webview-ui/src/i18n/locales/es/prompts.json +++ b/webview-ui/src/i18n/locales/es/prompts.json @@ -9,7 +9,7 @@ "editModesConfig": "Editar configuración de modos", "editGlobalModes": "Editar modos globales", "editProjectModes": "Editar modos del proyecto (.roomodes)", - "createModeHelpText": "Los modos son personas especializadas que adaptan el comportamiento de Roo. <0>Aprende sobre el uso de modos o <1>Personalización de modos.", + "createModeHelpText": "Los modos son personas especializadas que adaptan el comportamiento de Zoo. <0>Aprende sobre el uso de modos o <1>Personalización de modos.", "selectMode": "Buscar modos" }, "apiConfiguration": { @@ -33,7 +33,7 @@ "roleDefinition": { "title": "Definición de rol", "resetToDefault": "Restablecer a valores predeterminados", - "description": "Define la experiencia y personalidad de Roo para este modo. Esta descripción determina cómo Roo se presenta y aborda las tareas." + "description": "Define la experiencia y personalidad de Zoo para este modo. Esta descripción determina cómo Zoo se presenta y aborda las tareas." }, "description": { "title": "Descripción breve (para humanos)", @@ -102,7 +102,7 @@ "types": { "ENHANCE": { "label": "Mejorar solicitud", - "description": "Utiliza la mejora de solicitudes para obtener sugerencias o mejoras personalizadas para tus entradas. Esto asegura que Roo entienda tu intención y proporcione las mejores respuestas posibles. Disponible a través del icono ✨ en el chat." + "description": "Utiliza la mejora de solicitudes para obtener sugerencias o mejoras personalizadas para tus entradas. Esto asegura que Zoo entienda tu intención y proporcione las mejores respuestas posibles. Disponible a través del icono ✨ en el chat." }, "CONDENSE": { "label": "Condensación de contexto", @@ -167,7 +167,7 @@ }, "roleDefinition": { "label": "Definición de rol", - "description": "Define la experiencia y personalidad de Roo para este modo." + "description": "Define la experiencia y personalidad de Zoo para este modo." }, "whenToUse": { "label": "Cuándo usar (opcional)", diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json index a26b789de4f..57f7530bc73 100644 --- a/webview-ui/src/i18n/locales/es/settings.json +++ b/webview-ui/src/i18n/locales/es/settings.json @@ -40,7 +40,7 @@ "ui": "UI", "experimental": "Experimental", "language": "Idioma", - "about": "Acerca de Roo Code", + "about": "Acerca de Zoo Code", "skills": "Skills" }, "about": { @@ -56,7 +56,7 @@ "label": "¿Descubriste una vulnerabilidad?", "link": "Sigue nuestro proceso de divulgación" }, - "community": "¿Quieres consejos o simplemente pasar el rato con otros usuarios de Roo Code? Únete a reddit.com/r/RooCode o discord.gg/roocode", + "community": "¿Quieres consejos o simplemente pasar el rato con otros usuarios de Zoo Code? Únete a reddit.com/r/RooCode o discord.gg/roocode", "contactAndCommunity": "Contacto y Comunidad", "manageSettings": "Gestionar Configuración", "debugMode": { @@ -100,7 +100,7 @@ "footer": "Usa comandos de barra para acceder rápidamente a indicaciones y flujos de trabajo frecuentemente utilizados." }, "prompts": { - "description": "Configura indicaciones de soporte que se utilizan para acciones rápidas como mejorar indicaciones, explicar código y solucionar problemas. Estas indicaciones ayudan a Roo a brindar mejor asistencia para tareas comunes de desarrollo." + "description": "Configura indicaciones de soporte que se utilizan para acciones rápidas como mejorar indicaciones, explicar código y solucionar problemas. Estas indicaciones ayudan a Zoo a brindar mejor asistencia para tareas comunes de desarrollo." }, "codeIndex": { "title": "Indexación de código", @@ -223,10 +223,10 @@ "disabledAriaLabel": "Aprobación automática desactivada: seleccione primero las opciones", "readOnly": { "label": "Lectura", - "description": "Cuando está habilitado, Roo verá automáticamente el contenido del directorio y leerá archivos sin que necesite hacer clic en el botón Aprobar.", + "description": "Cuando está habilitado, Zoo verá automáticamente el contenido del directorio y leerá archivos sin que necesite hacer clic en el botón Aprobar.", "outsideWorkspace": { "label": "Incluir archivos fuera del espacio de trabajo", - "description": "Permitir a Roo leer archivos fuera del espacio de trabajo actual sin requerir aprobación." + "description": "Permitir a Zoo leer archivos fuera del espacio de trabajo actual sin requerir aprobación." } }, "write": { @@ -235,11 +235,11 @@ "delayLabel": "Retraso después de escritura para permitir que los diagnósticos detecten posibles problemas", "outsideWorkspace": { "label": "Incluir archivos fuera del espacio de trabajo", - "description": "Permitir a Roo crear y editar archivos fuera del espacio de trabajo actual sin requerir aprobación." + "description": "Permitir a Zoo crear y editar archivos fuera del espacio de trabajo actual sin requerir aprobación." }, "protected": { "label": "Incluir archivos protegidos", - "description": "Permitir a Roo crear y editar archivos protegidos (como .rooignore y archivos de configuración .roo/) sin requerir aprobación." + "description": "Permitir a Zoo crear y editar archivos protegidos (como .rooignore y archivos de configuración .roo/) sin requerir aprobación." } }, "mcp": { @@ -306,7 +306,7 @@ "searchProviderPlaceholder": "Buscar proveedores", "noProviderMatchFound": "No se encontraron proveedores", "noMatchFound": "No se encontraron perfiles coincidentes", - "retiredProviderMessage": "Lo sentimos, este proveedor ya no es compatible. Vimos que muy pocos usuarios de Roo lo usaban realmente y necesitamos reducir el alcance de nuestro código para poder seguir avanzando rápido y servir bien a nuestra comunidad en este espacio. Fue una decisión muy difícil, pero nos permite enfocarnos en lo que más te importa. Lo sabemos, es una lástima.", + "retiredProviderMessage": "Este proveedor ya no está disponible. Selecciona un proveedor compatible para continuar.", "vscodeLmDescription": "La API del Modelo de Lenguaje de VS Code le permite ejecutar modelos proporcionados por otras extensiones de VS Code (incluido, entre otros, GitHub Copilot). La forma más sencilla de empezar es instalar las extensiones Copilot y Copilot Chat desde el VS Code Marketplace.", "awsCustomArnUse": "Ingrese un ARN de Amazon Bedrock válido para el modelo que desea utilizar. Ejemplos de formato:", "awsCustomArnDesc": "Asegúrese de que la región en el ARN coincida con la región de AWS seleccionada anteriormente.", @@ -456,7 +456,7 @@ "draftModelDesc": "El modelo borrador debe ser de la misma familia de modelos para que la decodificación especulativa funcione correctamente.", "selectDraftModel": "Seleccionar modelo borrador", "noModelsFound": "No se encontraron modelos borrador. Asegúrese de que LM Studio esté ejecutándose con el Modo Servidor habilitado.", - "description": "LM Studio le permite ejecutar modelos localmente en su computadora. Para obtener instrucciones sobre cómo comenzar, consulte su guía de inicio rápido. También necesitará iniciar la función de servidor local de LM Studio para usarlo con esta extensión. Nota: Roo Code utiliza prompts complejos y funciona mejor con modelos Claude. Los modelos menos capaces pueden no funcionar como se espera." + "description": "LM Studio le permite ejecutar modelos localmente en su computadora. Para obtener instrucciones sobre cómo comenzar, consulte su guía de inicio rápido. También necesitará iniciar la función de servidor local de LM Studio para usarlo con esta extensión. Nota: Zoo Code utiliza prompts complejos y funciona mejor con modelos Claude. Los modelos menos capaces pueden no funcionar como se espera." }, "ollama": { "baseUrl": "URL base (opcional)", @@ -466,11 +466,7 @@ "numCtx": "Tamaño de la ventana de contexto (num_ctx)", "numCtxHelp": "Sobrescribe el tamaño de la ventana de contexto predeterminado del modelo. Déjelo vacío para usar la configuración del Modelfile del modelo. El valor mínimo es 128.", "description": "Ollama le permite ejecutar modelos localmente en su computadora. Para obtener instrucciones sobre cómo comenzar, consulte la guía de inicio rápido.", - "warning": "Nota: Roo Code utiliza prompts complejos y funciona mejor con modelos Claude. Los modelos menos capaces pueden no funcionar como se espera." - }, - "roo": { - "authenticatedMessage": "Autenticado de forma segura a través de tu cuenta de Roo Code Cloud.", - "connectButton": "Conectar a Roo Code Cloud" + "warning": "Nota: Zoo Code utiliza prompts complejos y funciona mejor con modelos Claude. Los modelos menos capaces pueden no funcionar como se espera." }, "openRouter": { "providerRouting": { @@ -480,7 +476,7 @@ } }, "customModel": { - "capabilities": "Configure las capacidades y precios para su modelo personalizado compatible con OpenAI. Tenga cuidado al especificar las capacidades del modelo, ya que pueden afectar cómo funciona Roo Code.", + "capabilities": "Configure las capacidades y precios para su modelo personalizado compatible con OpenAI. Tenga cuidado al especificar las capacidades del modelo, ya que pueden afectar cómo funciona Zoo Code.", "maxTokens": { "label": "Tokens máximos de salida", "description": "Número máximo de tokens que el modelo puede generar en una respuesta. (Especifique -1 para permitir que el servidor establezca los tokens máximos.)" @@ -527,7 +523,7 @@ }, "consecutiveMistakeLimit": { "label": "Límite de errores y repeticiones", - "description": "Número de errores consecutivos o acciones repetidas antes de mostrar el diálogo 'Roo está teniendo problemas'. Establecer en 0 para desactivar este mecanismo de seguridad (nunca se activará).", + "description": "Número de errores consecutivos o acciones repetidas antes de mostrar el diálogo 'Zoo está teniendo problemas'. Establecer en 0 para desactivar este mecanismo de seguridad (nunca se activará).", "unlimitedDescription": "Reintentos ilimitados habilitados (proceder automáticamente). El diálogo nunca aparecerá.", "warning": "⚠️ Establecer en 0 permite reintentos ilimitados que pueden consumir un uso significativo de la API" }, @@ -563,18 +559,18 @@ }, "enable": { "label": "Habilitar puntos de control automáticos", - "description": "Cuando está habilitado, Roo creará automáticamente puntos de control durante la ejecución de tareas, facilitando la revisión de cambios o la reversión a estados anteriores. <0>Más información" + "description": "Cuando está habilitado, Zoo creará automáticamente puntos de control durante la ejecución de tareas, facilitando la revisión de cambios o la reversión a estados anteriores. <0>Más información" } }, "notifications": { "sound": { "label": "Habilitar efectos de sonido", - "description": "Cuando está habilitado, Roo reproducirá efectos de sonido para notificaciones y eventos.", + "description": "Cuando está habilitado, Zoo reproducirá efectos de sonido para notificaciones y eventos.", "volumeLabel": "Volumen" }, "tts": { "label": "Habilitar texto a voz", - "description": "Cuando está habilitado, Roo leerá en voz alta sus respuestas usando texto a voz.", + "description": "Cuando está habilitado, Zoo leerá en voz alta sus respuestas usando texto a voz.", "speedLabel": "Velocidad" } }, @@ -582,7 +578,7 @@ "description": "Controle qué información se incluye en la ventana de contexto de la IA, afectando el uso de token y la calidad de respuesta", "autoCondenseContextPercent": { "label": "Umbral para activar la condensación inteligente de contexto", - "description": "Cuando la ventana de contexto alcanza este umbral, Roo la condensará automáticamente." + "description": "Cuando la ventana de contexto alcanza este umbral, Zoo la condensará automáticamente." }, "condensingApiConfiguration": { "label": "Configuración de API para condensación de contexto", @@ -598,7 +594,7 @@ }, "autoCondenseContext": { "name": "Activar automáticamente la condensación inteligente de contexto", - "description": "Cuando está habilitado, Roo condensará automáticamente el contexto cuando se alcance el umbral. Cuando está deshabilitado, aún puedes activar manualmente la condensación de contexto." + "description": "Cuando está habilitado, Zoo condensará automáticamente el contexto cuando se alcance el umbral. Cuando está deshabilitado, aún puedes activar manualmente la condensación de contexto." }, "openTabs": { "label": "Límite de contexto de pestañas abiertas", @@ -614,7 +610,7 @@ }, "maxReadFile": { "label": "Umbral de auto-truncado de lectura de archivos", - "description": "Roo lee este número de líneas cuando el modelo omite valores de inicio/fin. Si este número es menor que el total del archivo, Roo genera un índice de números de línea de las definiciones de código. Casos especiales: -1 indica a Roo que lea el archivo completo (sin indexación), y 0 indica que no lea líneas y proporcione solo índices de línea para un contexto mínimo. Valores más bajos minimizan el uso inicial de contexto, permitiendo lecturas posteriores de rangos de líneas precisos. Las solicitudes con inicio/fin explícitos no están limitadas por esta configuración.", + "description": "Zoo lee este número de líneas cuando el modelo omite valores de inicio/fin. Si este número es menor que el total del archivo, Zoo genera un índice de números de línea de las definiciones de código. Casos especiales: -1 indica a Zoo que lea el archivo completo (sin indexación), y 0 indica que no lea líneas y proporcione solo índices de línea para un contexto mínimo. Valores más bajos minimizan el uso inicial de contexto, permitiendo lecturas posteriores de rangos de líneas precisos. Las solicitudes con inicio/fin explícitos no están limitadas por esta configuración.", "lines": "líneas", "always_full_read": "Siempre leer el archivo completo" }, @@ -685,15 +681,15 @@ }, "outputLineLimit": { "label": "Límite de salida del terminal", - "description": "Mantiene las primeras y últimas líneas y descarta las intermedias para mantenerse bajo el límite. Reduce para ahorrar tokens; aumenta para dar a Roo más detalles intermedios. Roo ve un marcador donde se omite el contenido.<0>Más información" + "description": "Mantiene las primeras y últimas líneas y descarta las intermedias para mantenerse bajo el límite. Reduce para ahorrar tokens; aumenta para dar a Zoo más detalles intermedios. Zoo ve un marcador donde se omite el contenido.<0>Más información" }, "outputCharacterLimit": { "label": "Límite de caracteres del terminal", - "description": "Anula el límite de líneas para evitar problemas de memoria imponiendo un límite estricto al tamaño de salida. Si se excede, mantiene el inicio y el final y muestra un marcador a Roo donde se omite el contenido. <0>Más información" + "description": "Anula el límite de líneas para evitar problemas de memoria imponiendo un límite estricto al tamaño de salida. Si se excede, mantiene el inicio y el final y muestra un marcador a Zoo donde se omite el contenido. <0>Más información" }, "outputPreviewSize": { "label": "Tamaño de vista previa de salida de comandos", - "description": "Controla cuánta salida de comandos ve Roo directamente. La salida completa siempre se guarda y es accesible cuando sea necesario.", + "description": "Controla cuánta salida de comandos ve Zoo directamente. La salida completa siempre se guarda y es accesible cuando sea necesario.", "options": { "small": "Pequeño (5KB)", "medium": "Mediano (10KB)", @@ -706,7 +702,7 @@ }, "shellIntegrationDisabled": { "label": "Usar terminal en línea (recomendado)", - "description": "Ejecuta comandos en el terminal en línea (chat) para evitar perfiles/integración del shell para ejecuciones más rápidas y confiables. Cuando está desactivado, Roo usa el terminal de VS Code con tu perfil de shell, prompts y plugins. <0>Más información" + "description": "Ejecuta comandos en el terminal en línea (chat) para evitar perfiles/integración del shell para ejecuciones más rápidas y confiables. Cuando está desactivado, Zoo usa el terminal de VS Code con tu perfil de shell, prompts y plugins. <0>Más información" }, "commandDelay": { "label": "Retraso de comando del terminal", @@ -743,7 +739,7 @@ "advanced": { "diff": { "label": "Habilitar edición a través de diffs", - "description": "Cuando está habilitado, Roo podrá editar archivos más rápidamente y rechazará automáticamente escrituras completas de archivos truncados", + "description": "Cuando está habilitado, Zoo podrá editar archivos más rápidamente y rechazará automáticamente escrituras completas de archivos truncados", "strategy": { "label": "Estrategia de diff", "options": { @@ -760,7 +756,7 @@ }, "todoList": { "label": "Habilitar herramienta de lista de tareas", - "description": "Cuando está habilitado, Roo puede crear y gestionar listas de tareas para hacer seguimiento del progreso. Esto ayuda a organizar tareas complejas en pasos manejables." + "description": "Cuando está habilitado, Zoo puede crear y gestionar listas de tareas para hacer seguimiento del progreso. Esto ayuda a organizar tareas complejas en pasos manejables." } }, "experimental": { @@ -770,15 +766,15 @@ }, "INSERT_BLOCK": { "name": "Usar herramienta experimental de inserción de contenido", - "description": "Habilitar la herramienta experimental de inserción de contenido, permitiendo a Roo insertar contenido en números de línea específicos sin necesidad de crear un diff." + "description": "Habilitar la herramienta experimental de inserción de contenido, permitiendo a Zoo insertar contenido en números de línea específicos sin necesidad de crear un diff." }, "MULTI_SEARCH_AND_REPLACE": { "name": "Usar herramienta experimental de diff de bloques múltiples", - "description": "Cuando está habilitado, Roo usará la herramienta de diff de bloques múltiples. Esto intentará actualizar múltiples bloques de código en el archivo en una sola solicitud." + "description": "Cuando está habilitado, Zoo usará la herramienta de diff de bloques múltiples. Esto intentará actualizar múltiples bloques de código en el archivo en una sola solicitud." }, "CONCURRENT_FILE_READS": { "name": "Habilitar lectura concurrente de archivos", - "description": "Cuando está habilitado, Roo puede leer múltiples archivos en una sola solicitud. Cuando está deshabilitado, Roo debe leer archivos uno a la vez. Deshabilitarlo puede ayudar cuando se trabaja con modelos menos capaces o cuando deseas más control sobre el acceso a archivos." + "description": "Cuando está habilitado, Zoo puede leer múltiples archivos en una sola solicitud. Cuando está deshabilitado, Zoo debe leer archivos uno a la vez. Deshabilitarlo puede ayudar cuando se trabaja con modelos menos capaces o cuando deseas más control sobre el acceso a archivos." }, "MARKETPLACE": { "name": "Habilitar Marketplace", @@ -786,7 +782,7 @@ }, "PREVENT_FOCUS_DISRUPTION": { "name": "Edición en segundo plano", - "description": "Previene la interrupción del foco del editor cuando está habilitado. Las ediciones de archivos ocurren en segundo plano sin abrir vistas de diferencias o robar el foco. Puedes continuar trabajando sin interrupciones mientras Roo realiza cambios. Los archivos pueden abrirse sin foco para capturar diagnósticos o mantenerse completamente cerrados." + "description": "Previene la interrupción del foco del editor cuando está habilitado. Las ediciones de archivos ocurren en segundo plano sin abrir vistas de diferencias o robar el foco. Puedes continuar trabajando sin interrupciones mientras Zoo realiza cambios. Los archivos pueden abrirse sin foco para capturar diagnósticos o mantenerse completamente cerrados." }, "ASSISTANT_MESSAGE_PARSER": { "name": "Usar el nuevo analizador de mensajes", @@ -800,7 +796,7 @@ "name": "Habilitar generación de imágenes con IA", "providerLabel": "Proveedor", "providerDescription": "Selecciona el proveedor para la generación de imágenes.", - "description": "Cuando esté habilitado, Roo puede generar imágenes a partir de prompts de texto usando los modelos de generación de imágenes de OpenRouter. Requiere que se configure una clave de API de OpenRouter.", + "description": "Cuando esté habilitado, Zoo puede generar imágenes a partir de prompts de texto usando los modelos de generación de imágenes de OpenRouter. Requiere que se configure una clave de API de OpenRouter.", "openRouterApiKeyLabel": "Clave API de OpenRouter", "openRouterApiKeyPlaceholder": "Introduce tu clave API de OpenRouter", "getApiKeyText": "Obtén tu clave API de", @@ -811,11 +807,11 @@ }, "RUN_SLASH_COMMAND": { "name": "Habilitar comandos slash iniciados por el modelo", - "description": "Cuando está habilitado, Roo puede ejecutar tus comandos slash para ejecutar flujos de trabajo." + "description": "Cuando está habilitado, Zoo puede ejecutar tus comandos slash para ejecutar flujos de trabajo." }, "CUSTOM_TOOLS": { "name": "Habilitar herramientas personalizadas", - "description": "Cuando está habilitado, Roo puede cargar y usar herramientas TypeScript/JavaScript personalizadas desde el directorio .roo/tools de tu proyecto o ~/.roo/tools para herramientas globales. Nota: estas herramientas se aprobarán automáticamente.", + "description": "Cuando está habilitado, Zoo puede cargar y usar herramientas TypeScript/JavaScript personalizadas desde el directorio .roo/tools de tu proyecto o ~/.roo/tools para herramientas globales. Nota: estas herramientas se aprobarán automáticamente.", "toolsHeader": "Herramientas personalizadas disponibles", "noTools": "No hay herramientas personalizadas cargadas. Añade archivos .ts o .js al directorio .roo/tools de tu proyecto o ~/.roo/tools para herramientas globales.", "refreshButton": "Actualizar", @@ -827,7 +823,7 @@ }, "promptCaching": { "label": "Desactivar caché de prompts", - "description": "Cuando está marcado, Roo no utilizará el caché de prompts para este modelo." + "description": "Cuando está marcado, Zoo no utilizará el caché de prompts para este modelo." }, "temperature": { "useCustom": "Usar temperatura personalizada", @@ -857,7 +853,7 @@ } }, "modelPicker": { - "automaticFetch": "La extensión obtiene automáticamente la lista más reciente de modelos disponibles en {{serviceName}}. Si no está seguro de qué modelo elegir, Roo Code funciona mejor con {{defaultModelId}}. También puede buscar \"free\" para opciones sin costo actualmente disponibles.", + "automaticFetch": "La extensión obtiene automáticamente la lista más reciente de modelos disponibles en {{serviceName}}. Si no está seguro de qué modelo elegir, Zoo Code funciona mejor con {{defaultModelId}}. También puede buscar \"free\" para opciones sin costo actualmente disponibles.", "label": "Modelo", "searchPlaceholder": "Buscar", "noMatchFound": "No se encontraron coincidencias", @@ -867,7 +863,7 @@ "footer": { "telemetry": { "label": "Permitir informes anónimos de errores y uso", - "description": "Ayuda a mejorar Roo Code enviando datos de uso anónimos e informes de errores. Esta telemetría no recopila código, prompts o información personal. Consulta nuestra política de privacidad para más detalles." + "description": "Ayuda a mejorar Zoo Code enviando datos de uso anónimos e informes de errores. Esta telemetría no recopila código, prompts o información personal. Consulta nuestra política de privacidad para más detalles." }, "settings": { "import": "Importar", diff --git a/webview-ui/src/i18n/locales/es/welcome.json b/webview-ui/src/i18n/locales/es/welcome.json index 259cb7c3e79..57eceb8546b 100644 --- a/webview-ui/src/i18n/locales/es/welcome.json +++ b/webview-ui/src/i18n/locales/es/welcome.json @@ -1,52 +1,18 @@ { - "routers": { - "requesty": { - "description": "Tu router LLM optimizado", - "incentive": "$1 de crédito gratis" - }, - "openrouter": { - "description": "Una interfaz unificada para LLMs" - }, - "roo": { - "description": "Los mejores modelos gratuitos para empezar", - "incentive": "Prueba Roo gratis" - } - }, "landing": { "greeting": "¡Bienvenido a Roo Code!", "introduction": "Con una variedad de Modos integrados y extensibles, Roo Code te permite planificar, arquitectar, codificar, depurar y aumentar tu productividad como nunca antes.", - "accountMention": "Para comenzar, crea tu cuenta de Roo Code Cloud. Obtén modelos potentes, control web, análisis, soporte y más.", - "getStarted": "Crear cuenta de Roo", - "noAccount": "o usar sin cuenta" + "getStarted": "Elige tu proveedor" }, "providerSignup": { "heading": "Elige tu proveedor", "chooseProvider": "Roo necesita un proveedor de LLM para funcionar. Elige uno para comenzar, puedes añadir más después.", - "rooCloudProvider": "Proveedor de Roo Code Cloud", - "rooCloudDescription": "La forma más sencilla de comenzar es con el Proveedor Roo Code Cloud: una mezcla seleccionada de modelos gratuitos y de pago a bajo costo.", - "learnMore": "Más información", - "useAnotherProvider": "Proveedor de terceros", - "useAnotherProviderDescription": "Introduce una clave API y comienza.", - "noApiKeys": "¿No quieres lidiar con claves API y cuentas separadas?", - "backToRoo": "Ve con el Proveedor de Roo Code Cloud.", "goBack": "Atrás", "finish": "Finalizar" }, - "waitingForCloud": { - "heading": "Iniciando sesión en Roo Code Cloud...", - "description": "Te llevaremos a tu navegador para que te registres en Roo Code Cloud. Luego te traeremos aquí para terminar.", - "noPrompt": "Si no se te pide que abras una URL, haz clic aquí.", - "havingTrouble": "Si completaste el registro pero tienes problemas, haz clic aquí.", - "pasteUrl": "Pega la URL de respuesta de tu navegador:", - "docsLink": "¿No funciona? Consulta la documentación.", - "invalidURL": "Eso no parece ser una URL de respuesta válida. Por favor copia lo que Roo Code Cloud está mostrando en tu navegador.", - "goBack": "Atrás" - }, - "startRouter": "Recomendamos usar un router LLM:", - "startCustom": "O puedes traer tu propia clave API:", "telemetry": { - "helpImprove": "Ayuda a mejorar Roo Code", - "helpImproveMessage": "Roo Code recopila datos de errores y uso para ayudarnos a corregir errores y mejorar la extensión. Esta telemetría no recopila código, prompts o información personal. Puedes desactivar esto en la configuración." + "helpImprove": "Ayuda a mejorar Zoo Code", + "helpImproveMessage": "Zoo Code recopila datos de errores y uso para ayudarnos a corregir errores y mejorar la extensión. Esta telemetría no recopila código, prompts o información personal. Puedes desactivar esto en la configuración." }, "importSettings": "Importar configuración" } diff --git a/webview-ui/src/i18n/locales/es/worktrees.json b/webview-ui/src/i18n/locales/es/worktrees.json index f78203d06db..c750e291df7 100644 --- a/webview-ui/src/i18n/locales/es/worktrees.json +++ b/webview-ui/src/i18n/locales/es/worktrees.json @@ -1,28 +1,23 @@ { "title": "Worktrees", "done": "Listo", - "description": "Los worktrees de Git te permiten trabajar en varias ramas a la vez en directorios separados. Cada worktree tiene su propia ventana de VS Code con Roo Code.", - + "description": "Los worktrees de Git te permiten trabajar en varias ramas a la vez en directorios separados. Cada worktree tiene su propia ventana de VS Code con Zoo Code.", "notGitRepo": "Este espacio de trabajo no es un repositorio Git. Los worktrees requieren un repositorio Git para funcionar.", "multiRootNotSupported": "Los worktrees no son compatibles con espacios de trabajo de múltiples raíces. Abre una sola carpeta para usar worktrees.", "subfolderNotSupported": "Este espacio de trabajo es una subcarpeta de un repositorio Git. Abre la raíz del repositorio para usar worktrees.", "gitRoot": "Raíz de Git", - "includeFileExists": "Se encontró el archivo .worktreeinclude: se copiarán archivos a los worktrees nuevos", "noIncludeFile": "No se encontró el archivo .worktreeinclude", "createFromGitignore": "Crear a partir de .gitignore", - "primary": "Principal", "current": "Actual", "locked": "Bloqueado", "detachedHead": "HEAD separado", "noBranch": "Sin rama", - "switchInThisWindow": "Cambiar a worktree", "openInNewWindow": "Abrir en una ventana nueva", "delete": "Eliminar", "newWorktree": "Nuevo Worktree", - "createWorktree": "Crear Worktree", "branchName": "Nombre de la rama", "createNewBranch": "Crear rama nueva", @@ -44,7 +39,6 @@ "copyingFiles": "Copiando archivos...", "copyingProgress": "{{item}} — {{copied}} copiado", "cancel": "Cancelar", - "deleteWorktree": "Eliminar Worktree", "deleteWarning": "Esta acción no se puede deshacer. Se eliminará lo siguiente:", "deleteWarningBranch": "La rama y todos los cambios sin confirmar", @@ -53,11 +47,8 @@ "forceDelete": "Forzar eliminación", "worktreeIsLocked": "el worktree está bloqueado", "deleting": "Eliminando...", - "close": "Cerrar", - "showInHomeScreen": "Mostrar worktrees en la pantalla de inicio", - "selector": { "worktree": "Worktree", "title": "Worktrees", diff --git a/webview-ui/src/i18n/locales/fr/chat.json b/webview-ui/src/i18n/locales/fr/chat.json index 151aaf578bb..b2e36b504c4 100644 --- a/webview-ui/src/i18n/locales/fr/chat.json +++ b/webview-ui/src/i18n/locales/fr/chat.json @@ -1,5 +1,5 @@ { - "greeting": "Bienvenue sur Roo Code", + "greeting": "Bienvenue sur Zoo Code !", "task": { "title": "Tâche", "expand": "Développer la tâche", @@ -15,16 +15,6 @@ "export": "Exporter l'historique des tâches", "delete": "Supprimer la tâche (Shift + Clic pour ignorer la confirmation)", "condenseContext": "Condenser intelligemment le contexte", - "share": "Partager la tâche", - "shareWithOrganization": "Partager avec l'organisation", - "shareWithOrganizationDescription": "Seuls les membres de ton organisation peuvent accéder", - "sharePublicly": "Partager publiquement", - "sharePubliclyDescription": "Toute personne avec le lien peut accéder", - "connectToCloud": "Se connecter au Cloud", - "connectToCloudDescription": "Connecte-toi à Roo Code Cloud pour partager des tâches", - "sharingDisabledByOrganization": "Partage désactivé par l'organisation", - "shareSuccessOrganization": "Lien d'organisation copié dans le presse-papiers", - "shareSuccessPublic": "Lien public copié dans le presse-papiers", "openApiHistory": "Ouvrir l'historique de l'API", "openUiHistory": "Ouvrir l'historique de l'UI", "backToParentTask": "Tâche parente" @@ -98,7 +88,7 @@ "enqueueMessage": "Ajouter le message à la file d'attente (sera envoyé après la fin de la tâche en cours)", "scrollToBottom": "Défiler jusqu'au bas du chat", "scrollToLatestCheckpoint": "Défiler jusqu'au checkpoint précédent", - "about": "Roo Code est une équipe complète de développeurs IA dans votre éditeur.", + "about": "Zoo Code est une équipe complète de développeurs IA dans votre éditeur.", "docs": "Consultez notre documentation pour en savoir plus.", "onboarding": "Votre liste de tâches dans cet espace de travail est vide.", "rooTips": { @@ -130,7 +120,7 @@ "title": "Modes", "marketplace": "Marketplace de Modes", "settings": "Paramètres des Modes", - "description": "Personas spécialisés qui adaptent le comportement de Roo.", + "description": "Personas spécialisés qui adaptent le comportement de Zoo.", "searchPlaceholder": "Rechercher des modes...", "noResults": "Aucun résultat trouvé" }, @@ -144,7 +134,7 @@ "diffError": { "title": "Modification échouée" }, - "troubleMessage": "Roo rencontre des difficultés...", + "troubleMessage": "Zoo rencontre des difficultés...", "apiRequest": { "title": "Requête API", "failed": "Échec de la requête API", @@ -162,7 +152,7 @@ "500": "Erreur du serveur du fournisseur. Quelque chose ne va pas du côté du fournisseur, il n'y a rien de mal avec votre demande.", "docs": "Documentation", "goToSettings": "Paramètres", - "unknown": "Erreur API inconnue. Veuillez contacter le support Roo Code.", + "unknown": "Erreur API inconnue. Contacte le support Zoo Code.", "connection": "Erreur de connexion. Assurez-vous que vous avez une connexion Internet fonctionnelle.", "claudeCodeNotAuthenticated": "Vous devez vous connecter pour utiliser Claude Code. Allez dans les Paramètres et cliquez sur \"Se connecter à Claude Code\" pour vous authentifier." } @@ -187,43 +177,43 @@ "current": "Actuel" }, "fileOperations": { - "wantsToRead": "Roo veut lire ce fichier", - "wantsToReadOutsideWorkspace": "Roo veut lire ce fichier en dehors de l'espace de travail", - "didRead": "Roo a lu ce fichier", - "wantsToEdit": "Roo veut éditer ce fichier", - "wantsToEditOutsideWorkspace": "Roo veut éditer ce fichier en dehors de l'espace de travail", - "wantsToEditProtected": "Roo veut éditer un fichier de configuration protégé", - "wantsToCreate": "Roo veut créer un nouveau fichier", + "wantsToRead": "Zoo veut lire ce fichier", + "wantsToReadOutsideWorkspace": "Zoo veut lire ce fichier en dehors de l'espace de travail", + "didRead": "Zoo a lu ce fichier", + "wantsToEdit": "Zoo veut éditer ce fichier", + "wantsToEditOutsideWorkspace": "Zoo veut éditer ce fichier en dehors de l'espace de travail", + "wantsToEditProtected": "Zoo veut éditer un fichier de configuration protégé", + "wantsToCreate": "Zoo veut créer un nouveau fichier", "wantsToSearchReplace": "Roo veut effectuer une recherche et remplacement sur ce fichier", "didSearchReplace": "Roo a effectué une recherche et remplacement sur ce fichier", - "wantsToInsert": "Roo veut insérer du contenu dans ce fichier", - "wantsToInsertWithLineNumber": "Roo veut insérer du contenu dans ce fichier à la ligne {{lineNumber}}", - "wantsToInsertAtEnd": "Roo veut ajouter du contenu à la fin de ce fichier", - "wantsToReadAndXMore": "Roo veut lire ce fichier et {{count}} de plus", - "wantsToReadMultiple": "Roo souhaite lire plusieurs fichiers", - "wantsToApplyBatchChanges": "Roo veut appliquer des modifications à plusieurs fichiers", - "wantsToGenerateImage": "Roo veut générer une image", - "wantsToGenerateImageOutsideWorkspace": "Roo veut générer une image en dehors de l'espace de travail", - "wantsToGenerateImageProtected": "Roo veut générer une image dans un emplacement protégé", - "didGenerateImage": "Roo a généré une image" + "wantsToInsert": "Zoo veut insérer du contenu dans ce fichier", + "wantsToInsertWithLineNumber": "Zoo veut insérer du contenu dans ce fichier à la ligne {{lineNumber}}", + "wantsToInsertAtEnd": "Zoo veut ajouter du contenu à la fin de ce fichier", + "wantsToReadAndXMore": "Zoo veut lire ce fichier et {{count}} de plus", + "wantsToReadMultiple": "Zoo souhaite lire plusieurs fichiers", + "wantsToApplyBatchChanges": "Zoo veut appliquer des modifications à plusieurs fichiers", + "wantsToGenerateImage": "Zoo veut générer une image", + "wantsToGenerateImageOutsideWorkspace": "Zoo veut générer une image en dehors de l'espace de travail", + "wantsToGenerateImageProtected": "Zoo veut générer une image dans un emplacement protégé", + "didGenerateImage": "Zoo a généré une image" }, "instructions": { "wantsToFetch": "Roo veut récupérer des instructions détaillées pour aider à la tâche actuelle" }, "directoryOperations": { - "wantsToViewTopLevel": "Roo veut voir les fichiers de premier niveau dans ce répertoire", - "didViewTopLevel": "Roo a vu les fichiers de premier niveau dans ce répertoire", - "wantsToViewRecursive": "Roo veut voir récursivement tous les fichiers dans ce répertoire", - "didViewRecursive": "Roo a vu récursivement tous les fichiers dans ce répertoire", - "wantsToSearch": "Roo veut rechercher dans ce répertoire {{regex}}", - "didSearch": "Roo a recherché dans ce répertoire {{regex}}", - "wantsToSearchOutsideWorkspace": "Roo veut rechercher dans ce répertoire (hors espace de travail) {{regex}}", - "didSearchOutsideWorkspace": "Roo a recherché dans ce répertoire (hors espace de travail) {{regex}}", - "wantsToViewTopLevelOutsideWorkspace": "Roo veut voir les fichiers de premier niveau dans ce répertoire (hors espace de travail)", - "didViewTopLevelOutsideWorkspace": "Roo a vu les fichiers de premier niveau dans ce répertoire (hors espace de travail)", - "wantsToViewRecursiveOutsideWorkspace": "Roo veut voir récursivement tous les fichiers dans ce répertoire (hors espace de travail)", - "didViewRecursiveOutsideWorkspace": "Roo a vu récursivement tous les fichiers dans ce répertoire (hors espace de travail)", - "wantsToViewMultipleDirectories": "Roo veut voir plusieurs répertoires" + "wantsToViewTopLevel": "Zoo veut voir les fichiers de premier niveau dans ce répertoire", + "didViewTopLevel": "Zoo a vu les fichiers de premier niveau dans ce répertoire", + "wantsToViewRecursive": "Zoo veut voir récursivement tous les fichiers dans ce répertoire", + "didViewRecursive": "Zoo a vu récursivement tous les fichiers dans ce répertoire", + "wantsToSearch": "Zoo veut rechercher dans ce répertoire {{regex}}", + "didSearch": "Zoo a recherché dans ce répertoire {{regex}}", + "wantsToSearchOutsideWorkspace": "Zoo veut rechercher dans ce répertoire (hors espace de travail) {{regex}}", + "didSearchOutsideWorkspace": "Zoo a recherché dans ce répertoire (hors espace de travail) {{regex}}", + "wantsToViewTopLevelOutsideWorkspace": "Zoo veut voir les fichiers de premier niveau dans ce répertoire (hors espace de travail)", + "didViewTopLevelOutsideWorkspace": "Zoo a vu les fichiers de premier niveau dans ce répertoire (hors espace de travail)", + "wantsToViewRecursiveOutsideWorkspace": "Zoo veut voir récursivement tous les fichiers dans ce répertoire (hors espace de travail)", + "didViewRecursiveOutsideWorkspace": "Zoo a vu récursivement tous les fichiers dans ce répertoire (hors espace de travail)", + "wantsToViewMultipleDirectories": "Zoo veut voir plusieurs répertoires" }, "commandOutput": "Sortie de la Commande", "commandExecution": { @@ -245,24 +235,24 @@ "response": "Réponse", "arguments": "Arguments", "text": { - "rooSaid": "Roo a dit" + "rooSaid": "Zoo a dit" }, "feedback": { "youSaid": "Tu as dit" }, "mcp": { - "wantsToUseTool": "Roo veut utiliser un outil sur le serveur MCP {{serverName}}", - "wantsToAccessResource": "Roo veut accéder à une ressource sur le serveur MCP {{serverName}}" + "wantsToUseTool": "Zoo veut utiliser un outil sur le serveur MCP {{serverName}}", + "wantsToAccessResource": "Zoo veut accéder à une ressource sur le serveur MCP {{serverName}}" }, "modes": { - "wantsToSwitch": "Roo veut passer au mode {{mode}}", - "wantsToSwitchWithReason": "Roo veut passer au mode {{mode}} car : {{reason}}", - "didSwitch": "Roo est passé au mode {{mode}}", - "didSwitchWithReason": "Roo est passé au mode {{mode}} car : {{reason}}" + "wantsToSwitch": "Zoo veut passer au mode {{mode}}", + "wantsToSwitchWithReason": "Zoo veut passer au mode {{mode}} car : {{reason}}", + "didSwitch": "Zoo est passé au mode {{mode}}", + "didSwitchWithReason": "Zoo est passé au mode {{mode}} car : {{reason}}" }, "subtasks": { - "wantsToCreate": "Roo veut créer une nouvelle sous-tâche en mode {{mode}}", - "wantsToFinish": "Roo veut terminer cette sous-tâche", + "wantsToCreate": "Zoo veut créer une nouvelle sous-tâche en mode {{mode}}", + "wantsToFinish": "Zoo veut terminer cette sous-tâche", "newTaskContent": "Instructions de la sous-tâche", "completionContent": "Sous-tâche terminée", "resultContent": "Résultats de la sous-tâche", @@ -271,7 +261,7 @@ "goToSubtask": "Afficher la tâche" }, "questions": { - "hasQuestion": "Roo a une question" + "hasQuestion": "Zoo a une question" }, "taskCompleted": "Tâche terminée", "modelResponseIncomplete": "Réponse du modèle incomplète", @@ -287,7 +277,7 @@ "copyToClipboard": "Copier dans le presse-papiers", "copied": "Copié !", "diagnostics": "Obtenir les détails de l'erreur", - "proxyProvider": "Il semble que tu utilises un fournisseur basé sur un proxy. Assure-toi de vérifier ses journaux et de t'assurer qu'il ne réécrit pas les demandes de Roo." + "proxyProvider": "Il semble que tu utilises un fournisseur basé sur un proxy. Assure-toi de vérifier ses journaux et de t'assurer qu'il ne réécrit pas les demandes de Zoo." }, "powershell": { "issues": "Il semble que vous rencontriez des problèmes avec Windows PowerShell, veuillez consulter ce" @@ -330,31 +320,24 @@ } }, "skill": { - "wantsToLoad": "Roo veut charger une compétence", - "didLoad": "Roo a chargé une compétence" + "wantsToLoad": "Zoo veut charger une compétence", + "didLoad": "Zoo a chargé une compétence" }, "followUpSuggest": { "copyToInput": "Copier vers l'entrée (ou Shift + clic)", "timerPrefix": "Approbation automatique activée. Sélection dans {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}} est sortie", - "support": "Soutiens Roo Code en nous donnant une étoile sur GitHub.", - "stealthModel": { - "feature": "Modèle stealth GRATUIT pour une durée limitée - Code Supernova : Maintenant amélioré avec une fenêtre de contexte de 1M tokens ! Un modèle de codage agentique polyvalent qui prend en charge les entrées d'images, accessible via Roo Code Cloud.", - "note": "(Note : les prompts et complétions sont enregistrés par le créateur du modèle et utilisés pour l'améliorer)", - "connectButton": "Se connecter à Roo Code Cloud", - "selectModel": "Sélectionnez roo/code-supernova du fournisseur Roo Code Cloud dans Paramètres pour commencer.", - "goToSettingsButton": "Aller aux Paramètres" - }, + "title": "Zoo Code {{version}} est disponible", + "support": "Soutiens Zoo Code en nous donnant une étoile sur GitHub.", "handoff": { - "heading": "L'extension Roo Code ne va pas disparaître.", - "description": "Tu as peut-être vu l'annonce récente : Roo Code a franchi les 3 millions d'installations et l'équipe d'origine se consacre désormais entièrement à Roomote. On sait que cette nouvelle a été difficile pour beaucoup d'entre vous. Cette extension compte énormément pour nous comme pour toi, et on t'entend. La bonne nouvelle : une équipe de la communauté a décidé de prendre le relais pour faire avancer Roo Code, et on travaille avec eux sur une transmission officielle pour que l'extension sur laquelle tu comptes continue d'être maintenue et améliorée.", - "readMore": "Lire l'annonce originale de Matt Rubens" + "heading": "Zoo Code est de retour, désormais comme plugin maintenu par la communauté sous le nom Zoo Code !!", + "description": "Si tu n'as pas suivi, l'équipe Zoo Code a récemment annoncé qu'elle arrêtait le développement de Zoo Code et archivait le travail accompli. Mais pas de panique : la communauté a pris le relais pour faire vivre l'héritage de Zoo Code avec un nouveau nom et un nouveau foyer ! Nous ne sommes plus juste un seul « Roo », nous sommes une communauté, un « Zoo » si tu veux. Zoo Code est un plugin maintenu par la communauté qui reprend là où Zoo Code s'est arrêté, et nous nous engageons à préserver l'esprit de Roo tout en ajoutant de nouvelles fonctionnalités et améliorations. Nous voulons adresser un immense merci à toute l'équipe Zoo Code pour son travail incroyable et pour avoir créé un outil aussi formidable pour les développeurs. Nous sommes ravis de poursuivre sur leurs bases et de voir jusqu'où la communauté mènera Zoo Code.", + "readMore": "Voir la nouvelle page d'accueil de Zoo Code et lire l'annonce complète" }, "release": { "heading": "Quoi de neuf :", - "gpt55": "GPT-5.5 via OpenAI Codex : Le support de GPT-5.5 a été ajouté au fournisseur OpenAI Codex pour que tu puisses utiliser le tout dernier modèle directement depuis Roo Code.", + "gpt55": "GPT-5.5 via OpenAI Codex : Le support de GPT-5.5 a été ajouté au fournisseur OpenAI Codex pour que tu puisses utiliser le tout dernier modèle directement depuis Zoo Code.", "claudeOpus47": "Claude Opus 4.7 sur Vertex AI : Claude Opus 4.7 a été ajouté au fournisseur Vertex AI, le tout nouveau modèle de raisonnement phare d'Anthropic.", "checkpointNav": "Navigation vers les checkpoints précédents : Des contrôles ont été ajoutés dans le chat pour revenir en arrière à travers les checkpoints précédents, avec un support i18n complet." }, @@ -380,24 +363,24 @@ "profileViolationWarning": "Le profil actuel n'est pas compatible avec les paramètres de votre organisation", "shellIntegration": { "title": "Avertissement d'exécution de commande", - "description": "Votre commande est exécutée sans l'intégration shell du terminal VSCode. Pour supprimer cet avertissement, vous pouvez désactiver l'intégration shell dans la section Terminal des paramètres de Roo Code ou résoudre les problèmes d'intégration du terminal VSCode en utilisant le lien ci-dessous.", + "description": "Ta commande est exécutée sans l'intégration shell du terminal VSCode. Pour masquer cet avertissement, tu peux désactiver l'intégration shell dans la section Terminal des paramètres de Zoo Code ou résoudre les problèmes d'intégration du terminal VSCode avec le lien ci-dessous.", "troubleshooting": "Cliquez ici pour la documentation d'intégration shell." }, "ask": { "autoApprovedRequestLimitReached": { "title": "Limite de requêtes auto-approuvées atteinte", - "description": "Roo a atteint la limite auto-approuvée de {{count}} requête(s) API. Souhaitez-vous réinitialiser le compteur et poursuivre la tâche ?", + "description": "Zoo a atteint la limite auto-approuvée de {{count}} requête(s) API. Souhaitez-vous réinitialiser le compteur et poursuivre la tâche ?", "button": "Réinitialiser et continuer" }, "autoApprovedCostLimitReached": { "title": "Limite de coût en auto-approbation atteinte", - "description": "Roo a atteint la limite de coût auto-approuvée de ${{count}}. Souhaitez-vous réinitialiser le coût et poursuivre la tâche ?", + "description": "Zoo a atteint la limite de coût auto-approuvée de ${{count}}. Souhaitez-vous réinitialiser le coût et poursuivre la tâche ?", "button": "Réinitialiser et Continuer" } }, "codebaseSearch": { - "wantsToSearch": "Roo veut rechercher dans la base de code {{query}}", - "wantsToSearchWithPath": "Roo veut rechercher dans la base de code {{query}} dans {{path}}", + "wantsToSearch": "Zoo veut rechercher dans la base de code {{query}}", + "wantsToSearchWithPath": "Zoo veut rechercher dans la base de code {{query}} dans {{path}}", "didSearch_one": "1 résultat trouvé", "didSearch_other": "{{count}} résultats trouvés", "resultTooltip": "Score de similarité : {{score}} (cliquer pour ouvrir le fichier)" @@ -438,7 +421,7 @@ "ariaLabel": "Version {{version}} - Cliquez pour voir les notes de version" }, "rooCloudCTA": { - "title": "Roo Code Cloud évolue !", + "title": "Zoo Code Cloud évolue !", "description": "Exécutez des agents distants dans le cloud, accédez à vos tâches de n'importe où, collaborez avec d'autres et bien plus encore.", "joinWaitlist": "Inscrivez-vous pour recevoir les dernières mises à jour." }, @@ -479,8 +462,8 @@ "clickToEdit": "Cliquez pour modifier le message" }, "slashCommand": { - "wantsToRun": "Roo veut exécuter une commande slash", - "didRun": "Roo a exécuté une commande slash" + "wantsToRun": "Zoo veut exécuter une commande slash", + "didRun": "Zoo a exécuté une commande slash" }, "todo": { "partial": "{{completed}} sur {{total}} tâches terminées", @@ -499,11 +482,11 @@ "openMcpSettings": "Ouvrir les paramètres MCP" }, "readCommandOutput": { - "title": "Roo read command output" + "title": "Zoo read command output" }, "retiredProvider": { "title": "Fournisseur plus pris en charge", - "message": "Désolé, ce fournisseur n'est plus pris en charge. Nous avons constaté que très peu d'utilisateurs de Roo l'utilisaient réellement et nous devons réduire la portée de notre code pour continuer à avancer rapidement et bien servir notre communauté. C'était une décision vraiment difficile, mais elle nous permet de nous concentrer sur ce qui compte le plus pour toi. C'est rageant, on le sait.", + "message": "Ce fournisseur n'est plus disponible. Choisis un fournisseur pris en charge pour continuer.", "openSettings": "Ouvrir les paramètres" } } diff --git a/webview-ui/src/i18n/locales/fr/cloud.json b/webview-ui/src/i18n/locales/fr/cloud.json deleted file mode 100644 index db6d77e4500..00000000000 --- a/webview-ui/src/i18n/locales/fr/cloud.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "title": "Cloud", - "profilePicture": "Photo de profil", - "logOut": "Déconnexion", - "testApiAuthentication": "Tester l'authentification API", - "signIn": "Se connecter à Roo Code Cloud", - "connect": "Commencer", - "cloudBenefitsTitle": "Essayez Roo Code Cloud", - "cloudBenefitProvider": "Accédez à des modèles gratuits et payants qui fonctionnent parfaitement avec Roo", - "cloudBenefitCloudAgents": "Donnez des tâches à des agents Cloud autonomes", - "cloudBenefitTriggers": "Obtenez des revues de code sur GitHub, lancez des tâches depuis Slack et plus encore", - "cloudBenefitWalkaway": "Suivez et contrôlez les tâches de n'importe où (y compris votre téléphone)", - "cloudBenefitHistory": "Accédez à votre historique de tâches de n'importe où et partagez-les avec d'autres", - "cloudBenefitMetrics": "Obtenez une vue holistique de votre consommation de tokens", - "visitCloudWebsite": "Visiter Roo Code Cloud", - "taskSync": "Synchronisation des tâches", - "taskSyncDescription": "Synchronisez vos tâches pour les visualiser et les partager sur Roo Code Cloud", - "taskSyncManagedByOrganization": "La synchronisation des tâches est gérée par votre organisation", - "usageMetricsAlwaysReported": "Les informations d'utilisation du modèle sont toujours signalées lors de la connexion", - "authWaiting": "En attente de la fin de l'authentification...", - "havingTrouble": "Des difficultés ?", - "pasteCallbackUrl": "Copie l'URL de redirect depuis ton navigateur et colle-la ici :", - "startOver": "Recommencer", - "personalAccount": "Compte Personnel", - "switchAccount": "Changer de Compte Roo Code Cloud", - "createTeamAccount": "Créer un Compte d'Équipe", - "cloudUrlPillLabel": "URL de Roo Code Cloud", - "upsell": { - "autoApprovePowerUser": "Donner à Roo un peu d'indépendance ? Contrôlez-le de n'importe où avec Roo Code Cloud. En savoir plus.", - "longRunningTask": "Cela peut prendre un certain temps. Continuez de n'importe où avec le Cloud.", - "taskList": "Vous appréciez Roo ? Découvrez Roo Code Cloud : suivez et contrôlez vos tâches de n'importe où, exécutez des agents Cloud autonomes, obtenez des statistiques d'utilisation et plus encore. En savoir plus." - } -} diff --git a/webview-ui/src/i18n/locales/fr/marketplace.json b/webview-ui/src/i18n/locales/fr/marketplace.json index aa0ce5b718d..30b74ba1837 100644 --- a/webview-ui/src/i18n/locales/fr/marketplace.json +++ b/webview-ui/src/i18n/locales/fr/marketplace.json @@ -1,5 +1,5 @@ { - "title": "Roo Marketplace", + "title": "Zoo Marketplace", "tabs": { "installed": "Installé", "settings": "Paramètres", diff --git a/webview-ui/src/i18n/locales/fr/mcp.json b/webview-ui/src/i18n/locales/fr/mcp.json index 33fa3937968..1698a7f241d 100644 --- a/webview-ui/src/i18n/locales/fr/mcp.json +++ b/webview-ui/src/i18n/locales/fr/mcp.json @@ -2,16 +2,16 @@ "title": "Serveurs MCP", "done": "Terminé", "marketplace": "Marché MCP", - "description": "Le <0>Model Context Protocol permet la communication avec des serveurs MCP exécutés localement qui fournissent des outils et des ressources supplémentaires pour étendre les capacités de Roo. Vous pouvez utiliser <1>des serveurs créés par la communauté ou demander à Roo de créer de nouveaux outils spécifiques à votre flux de travail (par exemple, \"ajouter un outil qui récupère la dernière documentation npm\").", + "description": "Le <0>Model Context Protocol permet la communication avec des serveurs MCP exécutés localement qui fournissent des outils et des ressources supplémentaires pour étendre les capacités de Zoo. Vous pouvez utiliser <1>des serveurs créés par la communauté ou demander à Zoo de créer de nouveaux outils spécifiques à votre flux de travail (par exemple, \"ajouter un outil qui récupère la dernière documentation npm\").", "instructions": "Instructions", "enableToggle": { "title": "Activer les serveurs MCP", - "description": "Active cette option pour que Roo puisse utiliser des outils provenant de serveurs MCP connectés. Cela donne plus de capacités à Roo. Si tu ne comptes pas utiliser ces outils supplémentaires, désactive-la pour réduire les coûts de tokens API." + "description": "Active cette option pour que Zoo puisse utiliser des outils provenant de serveurs MCP connectés. Cela donne plus de capacités à Zoo. Si tu ne comptes pas utiliser ces outils supplémentaires, désactive-la pour réduire les coûts de tokens API." }, "enableServerCreation": { "title": "Activer la création de serveurs MCP", - "description": "Active cette option pour que Roo t'aide à créer de <1>nouveaux serveurs MCP personnalisés. <0>En savoir plus sur la création de serveurs", - "hint": "Astuce : Pour réduire les coûts de tokens API, désactive cette option quand tu ne demandes pas à Roo de créer un nouveau serveur MCP." + "description": "Active cette option pour que Zoo t'aide à créer de <1>nouveaux serveurs MCP personnalisés. <0>En savoir plus sur la création de serveurs", + "hint": "Astuce : Pour réduire les coûts de tokens API, désactive cette option quand tu ne demandes pas à Zoo de créer un nouveau serveur MCP." }, "editGlobalMCP": "Modifier le MCP global", "editProjectMCP": "Modifier le MCP du projet", diff --git a/webview-ui/src/i18n/locales/fr/prompts.json b/webview-ui/src/i18n/locales/fr/prompts.json index 5adce7b17ad..bd5967f7f0a 100644 --- a/webview-ui/src/i18n/locales/fr/prompts.json +++ b/webview-ui/src/i18n/locales/fr/prompts.json @@ -9,7 +9,7 @@ "editModesConfig": "Modifier la configuration des modes", "editGlobalModes": "Modifier les modes globaux", "editProjectModes": "Modifier les modes du projet (.roomodes)", - "createModeHelpText": "Les modes sont des personas spécialisés qui adaptent le comportement de Roo. <0>En savoir plus sur l'utilisation des modes ou <1>la personnalisation des modes.", + "createModeHelpText": "Les modes sont des personas spécialisés qui adaptent le comportement de Zoo. <0>En savoir plus sur l'utilisation des modes ou <1>la personnalisation des modes.", "selectMode": "Rechercher les modes" }, "apiConfiguration": { @@ -33,7 +33,7 @@ "roleDefinition": { "title": "Définition du rôle", "resetToDefault": "Réinitialiser aux valeurs par défaut", - "description": "Définissez l'expertise et la personnalité de Roo pour ce mode. Cette description façonne la manière dont Roo se présente et aborde les tâches." + "description": "Définissez l'expertise et la personnalité de Zoo pour ce mode. Cette description façonne la manière dont Zoo se présente et aborde les tâches." }, "description": { "title": "Description courte (pour humains)", @@ -102,7 +102,7 @@ "types": { "ENHANCE": { "label": "Améliorer le prompt", - "description": "Utilisez l'amélioration de prompt pour obtenir des suggestions ou des améliorations personnalisées pour vos entrées. Cela garantit que Roo comprend votre intention et fournit les meilleures réponses possibles. Disponible via l'icône ✨ dans le chat." + "description": "Utilisez l'amélioration de prompt pour obtenir des suggestions ou des améliorations personnalisées pour vos entrées. Cela garantit que Zoo comprend votre intention et fournit les meilleures réponses possibles. Disponible via l'icône ✨ dans le chat." }, "CONDENSE": { "label": "Condensation du contexte", @@ -167,7 +167,7 @@ }, "roleDefinition": { "label": "Définition du rôle", - "description": "Définissez l'expertise et la personnalité de Roo pour ce mode." + "description": "Définissez l'expertise et la personnalité de Zoo pour ce mode." }, "whenToUse": { "label": "Quand utiliser (optionnel)", diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json index b8e4da391fe..c39817c8079 100644 --- a/webview-ui/src/i18n/locales/fr/settings.json +++ b/webview-ui/src/i18n/locales/fr/settings.json @@ -40,7 +40,7 @@ "ui": "UI", "experimental": "Expérimental", "language": "Langue", - "about": "À propos de Roo Code", + "about": "À propos de Zoo Code", "skills": "Skills" }, "about": { @@ -56,7 +56,7 @@ "label": "Vous avez découvert une vulnérabilité ?", "link": "Suivez notre processus de divulgation" }, - "community": "Vous voulez des conseils ou simplement discuter avec d'autres utilisateurs de Roo Code ? Rejoignez reddit.com/r/RooCode ou discord.gg/roocode", + "community": "Vous voulez des conseils ou simplement discuter avec d'autres utilisateurs de Zoo Code ? Rejoignez reddit.com/r/RooCode ou discord.gg/roocode", "contactAndCommunity": "Contact et Communauté", "manageSettings": "Gérer les Paramètres", "debugMode": { @@ -100,7 +100,7 @@ "footer": "Utilisez les commandes slash pour accéder rapidement aux invites et flux de travail fréquemment utilisés." }, "prompts": { - "description": "Configurez les invites de support utilisées pour les actions rapides comme l'amélioration des invites, l'explication du code et la résolution des problèmes. Ces invites aident Roo à fournir une meilleure assistance pour les tâches de développement courantes." + "description": "Configurez les invites de support utilisées pour les actions rapides comme l'amélioration des invites, l'explication du code et la résolution des problèmes. Ces invites aident Zoo à fournir une meilleure assistance pour les tâches de développement courantes." }, "codeIndex": { "title": "Indexation de la base de code", @@ -224,10 +224,10 @@ "selectOptionsFirst": "Sélectionnez au moins une option ci-dessous pour activer l'approbation automatique", "readOnly": { "label": "Lecture", - "description": "Lorsque cette option est activée, Roo affichera automatiquement le contenu des répertoires et lira les fichiers sans que vous ayez à cliquer sur le bouton Approuver.", + "description": "Lorsque cette option est activée, Zoo affichera automatiquement le contenu des répertoires et lira les fichiers sans que vous ayez à cliquer sur le bouton Approuver.", "outsideWorkspace": { "label": "Inclure les fichiers en dehors de l'espace de travail", - "description": "Permettre à Roo de lire des fichiers en dehors de l'espace de travail actuel sans nécessiter d'approbation." + "description": "Permettre à Zoo de lire des fichiers en dehors de l'espace de travail actuel sans nécessiter d'approbation." } }, "write": { @@ -236,11 +236,11 @@ "delayLabel": "Délai après les écritures pour permettre aux diagnostics de détecter les problèmes potentiels", "outsideWorkspace": { "label": "Inclure les fichiers en dehors de l'espace de travail", - "description": "Permettre à Roo de créer et modifier des fichiers en dehors de l'espace de travail actuel sans nécessiter d'approbation." + "description": "Permettre à Zoo de créer et modifier des fichiers en dehors de l'espace de travail actuel sans nécessiter d'approbation." }, "protected": { "label": "Inclure les fichiers protégés", - "description": "Permettre à Roo de créer et modifier des fichiers protégés (comme .rooignore et les fichiers de configuration .roo/) sans nécessiter d'approbation." + "description": "Permettre à Zoo de créer et modifier des fichiers protégés (comme .rooignore et les fichiers de configuration .roo/) sans nécessiter d'approbation." } }, "mcp": { @@ -306,7 +306,7 @@ "searchProviderPlaceholder": "Rechercher des fournisseurs", "noProviderMatchFound": "Aucun fournisseur trouvé", "noMatchFound": "Aucun profil correspondant trouvé", - "retiredProviderMessage": "Désolé, ce fournisseur n'est plus pris en charge. Nous avons constaté que très peu d'utilisateurs de Roo l'utilisaient réellement et nous devons réduire la portée de notre code pour continuer à avancer rapidement et bien servir notre communauté. C'était une décision vraiment difficile, mais elle nous permet de nous concentrer sur ce qui compte le plus pour toi. C'est rageant, on le sait.", + "retiredProviderMessage": "Ce fournisseur n'est plus disponible. Choisis un fournisseur pris en charge pour continuer.", "vscodeLmDescription": "L'API du modèle de langage VS Code vous permet d'exécuter des modèles fournis par d'autres extensions VS Code (y compris, mais sans s'y limiter, GitHub Copilot). Le moyen le plus simple de commencer est d'installer les extensions Copilot et Copilot Chat depuis le VS Code Marketplace.", "awsCustomArnUse": "Entrez un ARN Amazon Bedrock valide pour le modèle que vous souhaitez utiliser. Exemples de format :", "awsCustomArnDesc": "Assurez-vous que la région dans l'ARN correspond à la région AWS sélectionnée ci-dessus.", @@ -456,7 +456,7 @@ "draftModelDesc": "Le modèle brouillon doit être de la même famille de modèles pour que le décodage spéculatif fonctionne correctement.", "selectDraftModel": "Sélectionner le modèle brouillon", "noModelsFound": "Aucun modèle brouillon trouvé. Veuillez vous assurer que LM Studio est en cours d'exécution avec le mode serveur activé.", - "description": "LM Studio vous permet d'exécuter des modèles localement sur votre ordinateur. Pour obtenir des instructions sur la mise en route, consultez leur guide de démarrage rapide. Vous devrez également démarrer la fonction serveur local de LM Studio pour l'utiliser avec cette extension. Remarque : Roo Code utilise des prompts complexes et fonctionne mieux avec les modèles Claude. Les modèles moins performants peuvent ne pas fonctionner comme prévu." + "description": "LM Studio vous permet d'exécuter des modèles localement sur votre ordinateur. Pour obtenir des instructions sur la mise en route, consultez leur guide de démarrage rapide. Vous devrez également démarrer la fonction serveur local de LM Studio pour l'utiliser avec cette extension. Remarque : Zoo Code utilise des prompts complexes et fonctionne mieux avec les modèles Claude. Les modèles moins performants peuvent ne pas fonctionner comme prévu." }, "ollama": { "baseUrl": "URL de base (optionnel)", @@ -466,11 +466,7 @@ "numCtx": "Taille de la fenêtre de contexte (num_ctx)", "numCtxHelp": "Remplace la taille de la fenêtre de contexte par défaut du modèle. Laissez vide pour utiliser la configuration du Modelfile du modèle. La valeur minimale est 128.", "description": "Ollama vous permet d'exécuter des modèles localement sur votre ordinateur. Pour obtenir des instructions sur la mise en route, consultez le guide de démarrage rapide.", - "warning": "Remarque : Roo Code utilise des prompts complexes et fonctionne mieux avec les modèles Claude. Les modèles moins performants peuvent ne pas fonctionner comme prévu." - }, - "roo": { - "authenticatedMessage": "Authentifié de manière sécurisée via ton compte Roo Code Cloud.", - "connectButton": "Se connecter à Roo Code Cloud" + "warning": "Remarque : Zoo Code utilise des prompts complexes et fonctionne mieux avec les modèles Claude. Les modèles moins performants peuvent ne pas fonctionner comme prévu." }, "openRouter": { "providerRouting": { @@ -480,7 +476,7 @@ } }, "customModel": { - "capabilities": "Configurez les capacités et les prix pour votre modèle personnalisé compatible OpenAI. Soyez prudent lors de la spécification des capacités du modèle, car elles peuvent affecter le fonctionnement de Roo Code.", + "capabilities": "Configurez les capacités et les prix pour votre modèle personnalisé compatible OpenAI. Soyez prudent lors de la spécification des capacités du modèle, car elles peuvent affecter le fonctionnement de Zoo Code.", "maxTokens": { "label": "Tokens de sortie maximum", "description": "Nombre maximum de tokens que le modèle peut générer dans une réponse. (Spécifiez -1 pour permettre au serveur de définir les tokens maximum.)" @@ -527,7 +523,7 @@ }, "consecutiveMistakeLimit": { "label": "Limite d'erreurs et de répétitions", - "description": "Nombre d'erreurs consécutives ou d'actions répétées avant d'afficher la boîte de dialogue 'Roo a des difficultés'. Mettre à 0 pour désactiver ce mécanisme de sécurité (il ne se déclenchera jamais).", + "description": "Nombre d'erreurs consécutives ou d'actions répétées avant d'afficher la boîte de dialogue 'Zoo a des difficultés'. Mettre à 0 pour désactiver ce mécanisme de sécurité (il ne se déclenchera jamais).", "unlimitedDescription": "Réessais illimités activés (poursuite automatique). La boîte de dialogue n'apparaîtra jamais.", "warning": "⚠️ Mettre à 0 autorise des réessais illimités, ce qui peut consommer une utilisation importante de l'API" }, @@ -563,18 +559,18 @@ }, "enable": { "label": "Activer les points de contrôle automatiques", - "description": "Lorsque cette option est activée, Roo créera automatiquement des points de contrôle pendant l'exécution des tâches, facilitant la révision des modifications ou le retour à des états antérieurs. <0>En savoir plus" + "description": "Lorsque cette option est activée, Zoo créera automatiquement des points de contrôle pendant l'exécution des tâches, facilitant la révision des modifications ou le retour à des états antérieurs. <0>En savoir plus" } }, "notifications": { "sound": { "label": "Activer les effets sonores", - "description": "Lorsque cette option est activée, Roo jouera des effets sonores pour les notifications et les événements.", + "description": "Lorsque cette option est activée, Zoo jouera des effets sonores pour les notifications et les événements.", "volumeLabel": "Volume" }, "tts": { "label": "Activer la synthèse vocale", - "description": "Lorsque cette option est activée, Roo lira ses réponses à haute voix en utilisant la synthèse vocale.", + "description": "Lorsque cette option est activée, Zoo lira ses réponses à haute voix en utilisant la synthèse vocale.", "speedLabel": "Vitesse" } }, @@ -582,7 +578,7 @@ "description": "Contrôlez quelles informations sont incluses dans la fenêtre de contexte de l'IA, affectant l'utilisation de token et la qualité des réponses", "autoCondenseContextPercent": { "label": "Seuil de déclenchement de la condensation intelligente du contexte", - "description": "Lorsque la fenêtre de contexte atteint ce seuil, Roo la condensera automatiquement." + "description": "Lorsque la fenêtre de contexte atteint ce seuil, Zoo la condensera automatiquement." }, "condensingApiConfiguration": { "label": "Configuration API pour la condensation du contexte", @@ -598,7 +594,7 @@ }, "autoCondenseContext": { "name": "Déclencher automatiquement la condensation intelligente du contexte", - "description": "Lorsque cette option est activée, Roo condensera automatiquement le contexte lorsque le seuil est atteint. Lorsqu'elle est désactivée, vous pouvez toujours déclencher manuellement la condensation du contexte." + "description": "Lorsque cette option est activée, Zoo condensera automatiquement le contexte lorsque le seuil est atteint. Lorsqu'elle est désactivée, vous pouvez toujours déclencher manuellement la condensation du contexte." }, "openTabs": { "label": "Limite de contexte des onglets ouverts", @@ -614,7 +610,7 @@ }, "maxReadFile": { "label": "Seuil d'auto-troncature de lecture de fichier", - "description": "Roo lit ce nombre de lignes lorsque le modèle omet les valeurs de début/fin. Si ce nombre est inférieur au total du fichier, Roo génère un index des numéros de ligne des définitions de code. Cas spéciaux : -1 indique à Roo de lire le fichier entier (sans indexation), et 0 indique de ne lire aucune ligne et de fournir uniquement les index de ligne pour un contexte minimal. Des valeurs plus basses minimisent l'utilisation initiale du contexte, permettant des lectures ultérieures de plages de lignes précises. Les requêtes avec début/fin explicites ne sont pas limitées par ce paramètre.", + "description": "Zoo lit ce nombre de lignes lorsque le modèle omet les valeurs de début/fin. Si ce nombre est inférieur au total du fichier, Zoo génère un index des numéros de ligne des définitions de code. Cas spéciaux : -1 indique à Zoo de lire le fichier entier (sans indexation), et 0 indique de ne lire aucune ligne et de fournir uniquement les index de ligne pour un contexte minimal. Des valeurs plus basses minimisent l'utilisation initiale du contexte, permettant des lectures ultérieures de plages de lignes précises. Les requêtes avec début/fin explicites ne sont pas limitées par ce paramètre.", "lines": "lignes", "always_full_read": "Toujours lire le fichier entier" }, @@ -685,15 +681,15 @@ }, "outputLineLimit": { "label": "Limite de sortie du terminal", - "description": "Conserve les premières et dernières lignes et supprime celles du milieu pour rester sous la limite. Réduire pour économiser des jetons ; augmenter pour donner à Roo plus de détails intermédiaires. Roo voit un espace réservé là où le contenu est ignoré.<0>En savoir plus" + "description": "Conserve les premières et dernières lignes et supprime celles du milieu pour rester sous la limite. Réduire pour économiser des jetons ; augmenter pour donner à Zoo plus de détails intermédiaires. Zoo voit un espace réservé là où le contenu est ignoré.<0>En savoir plus" }, "outputCharacterLimit": { "label": "Limite de caractères du terminal", - "description": "Remplace la limite de lignes pour éviter les problèmes de mémoire en imposant un plafond strict sur la taille de sortie. Si dépassé, conserve le début et la fin et affiche un espace réservé à Roo là où le contenu est ignoré. <0>En savoir plus" + "description": "Remplace la limite de lignes pour éviter les problèmes de mémoire en imposant un plafond strict sur la taille de sortie. Si dépassé, conserve le début et la fin et affiche un espace réservé à Zoo là où le contenu est ignoré. <0>En savoir plus" }, "outputPreviewSize": { "label": "Taille de l'aperçu de sortie des commandes", - "description": "Contrôle la quantité de sortie de commande que Roo voit directement. La sortie complète est toujours sauvegardée et accessible en cas de besoin.", + "description": "Contrôle la quantité de sortie de commande que Zoo voit directement. La sortie complète est toujours sauvegardée et accessible en cas de besoin.", "options": { "small": "Petite (5KB)", "medium": "Moyenne (10KB)", @@ -706,7 +702,7 @@ }, "shellIntegrationDisabled": { "label": "Utiliser le terminal en ligne (recommandé)", - "description": "Exécute des commandes dans le terminal en ligne (chat) pour contourner les profils/intégration du shell pour des exécutions plus rapides et fiables. Lorsque désactivé, Roo utilise le terminal VS Code avec votre profil de shell, invites et plugins. <0>En savoir plus" + "description": "Exécute des commandes dans le terminal en ligne (chat) pour contourner les profils/intégration du shell pour des exécutions plus rapides et fiables. Lorsque désactivé, Zoo utilise le terminal VS Code avec votre profil de shell, invites et plugins. <0>En savoir plus" }, "commandDelay": { "label": "Délai de commande du terminal", @@ -743,7 +739,7 @@ "advanced": { "diff": { "label": "Activer l'édition via des diffs", - "description": "Lorsque cette option est activée, Roo pourra éditer des fichiers plus rapidement et rejettera automatiquement les écritures de fichiers complets tronqués", + "description": "Lorsque cette option est activée, Zoo pourra éditer des fichiers plus rapidement et rejettera automatiquement les écritures de fichiers complets tronqués", "strategy": { "label": "Stratégie de diff", "options": { @@ -760,7 +756,7 @@ }, "todoList": { "label": "Activer l'outil de liste de tâches", - "description": "Lorsqu'activé, Roo peut créer et gérer des listes de tâches pour suivre la progression. Cela aide à organiser les tâches complexes en étapes gérables." + "description": "Lorsqu'activé, Zoo peut créer et gérer des listes de tâches pour suivre la progression. Cela aide à organiser les tâches complexes en étapes gérables." } }, "experimental": { @@ -770,15 +766,15 @@ }, "INSERT_BLOCK": { "name": "Utiliser l'outil d'insertion de contenu expérimental", - "description": "Activer l'outil d'insertion de contenu expérimental, permettant à Roo d'insérer du contenu à des numéros de ligne spécifiques sans avoir besoin de créer un diff." + "description": "Activer l'outil d'insertion de contenu expérimental, permettant à Zoo d'insérer du contenu à des numéros de ligne spécifiques sans avoir besoin de créer un diff." }, "MULTI_SEARCH_AND_REPLACE": { "name": "Utiliser l'outil diff multi-blocs expérimental", - "description": "Lorsqu'il est activé, Roo utilisera l'outil diff multi-blocs. Cela tentera de mettre à jour plusieurs blocs de code dans le fichier en une seule requête." + "description": "Lorsqu'il est activé, Zoo utilisera l'outil diff multi-blocs. Cela tentera de mettre à jour plusieurs blocs de code dans le fichier en une seule requête." }, "CONCURRENT_FILE_READS": { "name": "Activer la lecture simultanée de fichiers", - "description": "Lorsqu'activé, Roo peut lire plusieurs fichiers dans une seule requête. Lorsque désactivé, Roo doit lire les fichiers un par un. La désactivation peut aider lors du travail avec des modèles moins performants ou lorsque tu souhaites plus de contrôle sur l'accès aux fichiers." + "description": "Lorsqu'activé, Zoo peut lire plusieurs fichiers dans une seule requête. Lorsque désactivé, Zoo doit lire les fichiers un par un. La désactivation peut aider lors du travail avec des modèles moins performants ou lorsque tu souhaites plus de contrôle sur l'accès aux fichiers." }, "MARKETPLACE": { "name": "Activer le Marketplace", @@ -786,7 +782,7 @@ }, "PREVENT_FOCUS_DISRUPTION": { "name": "Édition en arrière-plan", - "description": "Empêche la perturbation du focus de l'éditeur lorsqu'activé. Les modifications de fichiers se font en arrière-plan sans ouvrir de vues de différences ou voler le focus. Vous pouvez continuer à travailler sans interruption pendant que Roo effectue des changements. Les fichiers peuvent être ouverts sans focus pour capturer les diagnostics ou rester complètement fermés." + "description": "Empêche la perturbation du focus de l'éditeur lorsqu'activé. Les modifications de fichiers se font en arrière-plan sans ouvrir de vues de différences ou voler le focus. Vous pouvez continuer à travailler sans interruption pendant que Zoo effectue des changements. Les fichiers peuvent être ouverts sans focus pour capturer les diagnostics ou rester complètement fermés." }, "ASSISTANT_MESSAGE_PARSER": { "name": "Utiliser le nouveau parseur de messages", @@ -800,7 +796,7 @@ "name": "Activer la génération d'images IA", "providerLabel": "Fournisseur", "providerDescription": "Sélectionnez le fournisseur pour la génération d'images.", - "description": "Lorsqu'activé, Roo peut générer des images à partir de prompts textuels en utilisant les modèles de génération d'images d'OpenRouter. Nécessite qu'une clé API OpenRouter soit configurée.", + "description": "Lorsqu'activé, Zoo peut générer des images à partir de prompts textuels en utilisant les modèles de génération d'images d'OpenRouter. Nécessite qu'une clé API OpenRouter soit configurée.", "openRouterApiKeyLabel": "Clé API OpenRouter", "openRouterApiKeyPlaceholder": "Entrez votre clé API OpenRouter", "getApiKeyText": "Obtenez votre clé API depuis", @@ -811,11 +807,11 @@ }, "RUN_SLASH_COMMAND": { "name": "Activer les commandes slash initiées par le modèle", - "description": "Lorsque activé, Roo peut exécuter tes commandes slash pour lancer des workflows." + "description": "Lorsque activé, Zoo peut exécuter tes commandes slash pour lancer des workflows." }, "CUSTOM_TOOLS": { "name": "Activer les outils personnalisés", - "description": "Lorsqu'activé, Roo peut charger et utiliser des outils TypeScript/JavaScript personnalisés à partir du répertoire .roo/tools de votre projet ou ~/.roo/tools pour des outils globaux. Remarque : ces outils seront automatiquement approuvés.", + "description": "Lorsqu'activé, Zoo peut charger et utiliser des outils TypeScript/JavaScript personnalisés à partir du répertoire .roo/tools de votre projet ou ~/.roo/tools pour des outils globaux. Remarque : ces outils seront automatiquement approuvés.", "toolsHeader": "Outils personnalisés disponibles", "noTools": "Aucun outil personnalisé chargé. Ajoutez des fichiers .ts ou .js au répertoire .roo/tools de votre projet ou ~/.roo/tools pour des outils globaux.", "refreshButton": "Actualiser", @@ -827,7 +823,7 @@ }, "promptCaching": { "label": "Désactiver la mise en cache des prompts", - "description": "Lorsque cette option est cochée, Roo n'utilisera pas la mise en cache des prompts pour ce modèle." + "description": "Lorsque cette option est cochée, Zoo n'utilisera pas la mise en cache des prompts pour ce modèle." }, "temperature": { "useCustom": "Utiliser une température personnalisée", @@ -857,7 +853,7 @@ } }, "modelPicker": { - "automaticFetch": "L'extension récupère automatiquement la liste la plus récente des modèles disponibles sur {{serviceName}}. Si vous ne savez pas quel modèle choisir, Roo Code fonctionne mieux avec {{defaultModelId}}. Vous pouvez également rechercher \"free\" pour les options gratuites actuellement disponibles.", + "automaticFetch": "L'extension récupère automatiquement la liste la plus récente des modèles disponibles sur {{serviceName}}. Si vous ne savez pas quel modèle choisir, Zoo Code fonctionne mieux avec {{defaultModelId}}. Vous pouvez également rechercher \"free\" pour les options gratuites actuellement disponibles.", "label": "Modèle", "searchPlaceholder": "Rechercher", "noMatchFound": "Aucune correspondance trouvée", @@ -867,7 +863,7 @@ "footer": { "telemetry": { "label": "Autoriser les rapports anonymes d'erreurs et d'utilisation", - "description": "Aidez à améliorer Roo Code en envoyant des données d'utilisation anonymes et des rapports d'erreurs. Cette télémétrie ne collecte pas de code, de prompts ou d'informations personnelles. Consultez notre politique de confidentialité pour plus de détails." + "description": "Aidez à améliorer Zoo Code en envoyant des données d'utilisation anonymes et des rapports d'erreurs. Cette télémétrie ne collecte pas de code, de prompts ou d'informations personnelles. Consultez notre politique de confidentialité pour plus de détails." }, "settings": { "import": "Importer", diff --git a/webview-ui/src/i18n/locales/fr/welcome.json b/webview-ui/src/i18n/locales/fr/welcome.json index f69d21a5658..8ede0faef81 100644 --- a/webview-ui/src/i18n/locales/fr/welcome.json +++ b/webview-ui/src/i18n/locales/fr/welcome.json @@ -1,52 +1,18 @@ { - "routers": { - "requesty": { - "description": "Ton routeur LLM optimisé", - "incentive": "1$ de crédit gratuit" - }, - "openrouter": { - "description": "Une interface unifiée pour les LLMs" - }, - "roo": { - "description": "Les meilleurs modèles gratuits pour commencer", - "incentive": "Essayez Roo gratuitement" - } - }, "landing": { "greeting": "Bienvenue sur Roo Code !", "introduction": "Avec une gamme de Modes intégrés et extensibles, Roo Code te permet de planifier, architecturer, coder, déboguer et augmenter ta productivité comme jamais auparavant.", - "accountMention": "Pour commencer, crée ton compte Roo Code Cloud. Obtiens des modèles puissants, le contrôle web, les analyses, le support et bien plus encore.", - "getStarted": "Créer un compte Roo", - "noAccount": "ou utiliser sans compte" + "getStarted": "Choisis ton fournisseur" }, "providerSignup": { "heading": "Choisis ton fournisseur", "chooseProvider": "Roo a besoin d'un fournisseur LLM pour fonctionner. Choisis-en un pour commencer, tu peux en ajouter d'autres plus tard.", - "rooCloudProvider": "Fournisseur Roo Code Cloud", - "rooCloudDescription": "Le moyen le plus simple de commencer est le Fournisseur Roo Code Cloud : un mélange sélectionné de modèles gratuits et payants à faible coût.", - "learnMore": "En savoir plus", - "useAnotherProvider": "Fournisseur tiers", - "useAnotherProviderDescription": "Entre une clé API et commence.", - "noApiKeys": "Tu ne veux pas gérer les clés API et les comptes séparés?", - "backToRoo": "Opte pour le Fournisseur Roo Code Cloud.", "goBack": "Retour", "finish": "Terminer" }, - "waitingForCloud": { - "heading": "Connexion à Roo Code Cloud...", - "description": "Termine l'inscription dans ton navigateur et tu reviendras ici automatiquement.", - "noPrompt": "Si tu n'es pas invité à ouvrir une URL, clique ici.", - "havingTrouble": "Si tu as terminé l'inscription mais que tu rencontres des problèmes, clique ici.", - "pasteUrl": "Colle l'URL de rappel depuis ton navigateur :", - "docsLink": "Ça ne fonctionne pas? Consulte la documentation.", - "invalidURL": "Cela ne ressemble pas à une URL de rappel valide. Copie ce que Roo Code Cloud affiche dans ton navigateur.", - "goBack": "Retour" - }, - "startRouter": "Nous recommandons d'utiliser un routeur LLM :", - "startCustom": "Ou tu peux apporter ta propre clé API :", "telemetry": { - "helpImprove": "Aide à améliorer Roo Code", - "helpImproveMessage": "Roo Code collecte des données d'erreurs et d'utilisation pour nous aider à corriger les bugs et améliorer l'extension. Cette télémétrie ne collecte pas de code, de prompts ou d'informations personnelles. Tu peux désactiver ceci dans les paramètres." + "helpImprove": "Aide à améliorer Zoo Code", + "helpImproveMessage": "Zoo Code collecte des données d'erreurs et d'utilisation pour nous aider à corriger les bugs et améliorer l'extension. Cette télémétrie ne collecte pas de code, de prompts ou d'informations personnelles. Tu peux désactiver ceci dans les paramètres." }, "importSettings": "Importer les paramètres" } diff --git a/webview-ui/src/i18n/locales/fr/worktrees.json b/webview-ui/src/i18n/locales/fr/worktrees.json index 2cc8bfca0dd..d0c83b56629 100644 --- a/webview-ui/src/i18n/locales/fr/worktrees.json +++ b/webview-ui/src/i18n/locales/fr/worktrees.json @@ -1,28 +1,23 @@ { "title": "Worktrees", "done": "Terminé", - "description": "Les worktrees Git te permettent de travailler sur plusieurs branches en même temps dans des répertoires séparés. Chaque worktree a sa propre fenêtre VS Code avec Roo Code.", - + "description": "Les worktrees Git te permettent de travailler sur plusieurs branches en même temps dans des répertoires séparés. Chaque worktree a sa propre fenêtre VS Code avec Zoo Code.", "notGitRepo": "Cet espace de travail n'est pas un dépôt Git. Les worktrees nécessitent un dépôt Git pour fonctionner.", "multiRootNotSupported": "Les worktrees ne sont pas pris en charge dans les espaces de travail multi-racine. Ouvre un seul dossier pour utiliser les worktrees.", "subfolderNotSupported": "Cet espace de travail est un sous-dossier d'un dépôt Git. Ouvre la racine du dépôt pour utiliser les worktrees.", "gitRoot": "Racine Git", - "includeFileExists": "Fichier .worktreeinclude trouvé — les fichiers seront copiés vers les nouveaux worktrees", "noIncludeFile": "Aucun fichier .worktreeinclude trouvé", "createFromGitignore": "Créer depuis .gitignore", - "primary": "Principal", "current": "Actuel", "locked": "Verrouillé", "detachedHead": "HEAD détachée", "noBranch": "Aucune branche", - "switchInThisWindow": "Changer vers worktree", "openInNewWindow": "Ouvrir dans une nouvelle fenêtre", "delete": "Supprimer", "newWorktree": "Nouveau Worktree", - "createWorktree": "Créer un worktree", "branchName": "Nom de la branche", "createNewBranch": "Créer une nouvelle branche", @@ -44,7 +39,6 @@ "copyingFiles": "Copie des fichiers...", "copyingProgress": "{{item}} — {{copied}} copié", "cancel": "Annuler", - "deleteWorktree": "Supprimer le worktree", "deleteWarning": "Cette action est irréversible. Les éléments suivants seront supprimés :", "deleteWarningBranch": "La branche et toutes les modifications non validées", @@ -53,11 +47,8 @@ "forceDelete": "Forcer la suppression", "worktreeIsLocked": "le worktree est verrouillé", "deleting": "Suppression...", - "close": "Fermer", - "showInHomeScreen": "Afficher les worktrees sur l'écran d'accueil", - "selector": { "worktree": "Worktree", "title": "Worktrees", diff --git a/webview-ui/src/i18n/locales/hi/chat.json b/webview-ui/src/i18n/locales/hi/chat.json index 6529cc068e2..98250e765c4 100644 --- a/webview-ui/src/i18n/locales/hi/chat.json +++ b/webview-ui/src/i18n/locales/hi/chat.json @@ -1,5 +1,5 @@ { - "greeting": "Roo Code में आपका स्वागत है", + "greeting": "Zoo Code में आपका स्वागत है!", "task": { "title": "कार्य", "expand": "कार्य विस्तृत करें", @@ -15,16 +15,6 @@ "export": "कार्य इतिहास निर्यात करें", "delete": "कार्य हटाएं (पुष्टि को छोड़ने के लिए Shift + क्लिक)", "condenseContext": "संदर्भ को बुद्धिमानी से संघनित करें", - "share": "कार्य साझा करें", - "shareWithOrganization": "संगठन के साथ साझा करें", - "shareWithOrganizationDescription": "केवल आपके संगठन के सदस्य पहुंच सकते हैं", - "sharePublicly": "सार्वजनिक रूप से साझा करें", - "sharePubliclyDescription": "लिंक वाला कोई भी व्यक्ति पहुंच सकता है", - "connectToCloud": "Cloud से कनेक्ट करें", - "connectToCloudDescription": "कार्य साझा करने के लिए Roo Code Cloud में साइन इन करें", - "sharingDisabledByOrganization": "संगठन द्वारा साझाकरण अक्षम किया गया", - "shareSuccessOrganization": "संगठन लिंक क्लिपबोर्ड में कॉपी किया गया", - "shareSuccessPublic": "सार्वजनिक लिंक क्लिपबोर्ड में कॉपी किया गया", "openApiHistory": "API इतिहास खोलें", "openUiHistory": "UI इतिहास खोलें", "backToParentTask": "मूल कार्य" @@ -98,7 +88,7 @@ "enqueueMessage": "संदेश को कतार में जोड़ें (वर्तमान कार्य पूरा होने के बाद भेजा जाएगा)", "scrollToBottom": "चैट के निचले हिस्से तक स्क्रॉल करें", "scrollToLatestCheckpoint": "पिछले चेकपॉइंट तक स्क्रॉल करें", - "about": "Roo Code आपके संपादक में एक पूरी AI देव टीम है।", + "about": "Zoo Code आपके संपादक में एक पूरी AI देव टीम है।", "docs": "और जानने के लिए हमारे दस्तावेज़ देखें।", "onboarding": "इस कार्यक्षेत्र में आपकी कार्य सूची खाली है।", "rooTips": { @@ -130,7 +120,7 @@ "title": "मोड्स", "marketplace": "मोड मार्केटप्लेस", "settings": "मोड सेटिंग्स", - "description": "विशेष व्यक्तित्व जो Roo के व्यवहार को अनुकूलित करते हैं।", + "description": "विशेष व्यक्तित्व जो Zoo के व्यवहार को अनुकूलित करते हैं।", "searchPlaceholder": "मोड खोजें...", "noResults": "कोई परिणाम नहीं मिला" }, @@ -144,7 +134,7 @@ "diffError": { "title": "संपादन असफल" }, - "troubleMessage": "Roo को समस्या हो रही है...", + "troubleMessage": "Zoo को समस्या हो रही है...", "apiRequest": { "title": "API अनुरोध", "failed": "API अनुरोध विफल हुआ", @@ -162,7 +152,7 @@ "500": "प्रदाता सर्वर त्रुटि। प्रदाता की ओर से कुछ गलत है, आपके अनुरोध में कुछ गलत नहीं है।", "docs": "डॉक्स", "goToSettings": "सेटिंग्स", - "unknown": "अज्ञात API त्रुटि। कृपया Roo Code सहायता से संपर्क करें।", + "unknown": "अज्ञात API त्रुटि। कृपया Zoo Code सहायता से संपर्क करें।", "connection": "कनेक्शन त्रुटि। सुनिश्चित करें कि आपके पास कार्यशील इंटरनेट कनेक्शन है।", "claudeCodeNotAuthenticated": "Claude Code का उपयोग करने के लिए आपको साइन इन करना होगा। सेटिंग्स में जाएं और प्रमाणित करने के लिए \"Claude Code में साइन इन करें\" पर क्लिक करें।" } @@ -190,40 +180,40 @@ "wantsToFetch": "Roo को वर्तमान कार्य में सहायता के लिए विस्तृत निर्देश प्राप्त करना है" }, "fileOperations": { - "wantsToRead": "Roo इस फ़ाइल को पढ़ना चाहता है", - "wantsToReadOutsideWorkspace": "Roo कार्यक्षेत्र के बाहर इस फ़ाइल को पढ़ना चाहता है", - "didRead": "Roo ने इस फ़ाइल को पढ़ा", - "wantsToEdit": "Roo इस फ़ाइल को संपादित करना चाहता है", - "wantsToEditOutsideWorkspace": "Roo कार्यक्षेत्र के बाहर इस फ़ाइल को संपादित करना चाहता है", - "wantsToEditProtected": "Roo एक सुरक्षित कॉन्फ़िगरेशन फ़ाइल को संपादित करना चाहता है", - "wantsToCreate": "Roo एक नई फ़ाइल बनाना चाहता है", + "wantsToRead": "Zoo इस फ़ाइल को पढ़ना चाहता है", + "wantsToReadOutsideWorkspace": "Zoo कार्यक्षेत्र के बाहर इस फ़ाइल को पढ़ना चाहता है", + "didRead": "Zoo ने इस फ़ाइल को पढ़ा", + "wantsToEdit": "Zoo इस फ़ाइल को संपादित करना चाहता है", + "wantsToEditOutsideWorkspace": "Zoo कार्यक्षेत्र के बाहर इस फ़ाइल को संपादित करना चाहता है", + "wantsToEditProtected": "Zoo एक सुरक्षित कॉन्फ़िगरेशन फ़ाइल को संपादित करना चाहता है", + "wantsToCreate": "Zoo एक नई फ़ाइल बनाना चाहता है", "wantsToSearchReplace": "Roo इस फ़ाइल में खोज और प्रतिस्थापन करना चाहता है", "didSearchReplace": "Roo ने इस फ़ाइल में खोज और प्रतिस्थापन किया", - "wantsToInsert": "Roo इस फ़ाइल में सामग्री डालना चाहता है", - "wantsToInsertWithLineNumber": "Roo इस फ़ाइल की {{lineNumber}} लाइन पर सामग्री डालना चाहता है", - "wantsToInsertAtEnd": "Roo इस फ़ाइल के अंत में सामग्री जोड़ना चाहता है", + "wantsToInsert": "Zoo इस फ़ाइल में सामग्री डालना चाहता है", + "wantsToInsertWithLineNumber": "Zoo इस फ़ाइल की {{lineNumber}} लाइन पर सामग्री डालना चाहता है", + "wantsToInsertAtEnd": "Zoo इस फ़ाइल के अंत में सामग्री जोड़ना चाहता है", "wantsToReadAndXMore": "रू इस फ़ाइल को और {{count}} अन्य को पढ़ना चाहता है", - "wantsToReadMultiple": "Roo कई फ़ाइलें पढ़ना चाहता है", - "wantsToApplyBatchChanges": "Roo कई फ़ाइलों में परिवर्तन लागू करना चाहता है", - "wantsToGenerateImage": "Roo एक छवि बनाना चाहता है", - "wantsToGenerateImageOutsideWorkspace": "Roo कार्यक्षेत्र के बाहर एक छवि बनाना चाहता है", - "wantsToGenerateImageProtected": "Roo एक संरक्षित स्थान पर छवि बनाना चाहता है", - "didGenerateImage": "Roo ने एक छवि बनाई" + "wantsToReadMultiple": "Zoo कई फ़ाइलें पढ़ना चाहता है", + "wantsToApplyBatchChanges": "Zoo कई फ़ाइलों में परिवर्तन लागू करना चाहता है", + "wantsToGenerateImage": "Zoo एक छवि बनाना चाहता है", + "wantsToGenerateImageOutsideWorkspace": "Zoo कार्यक्षेत्र के बाहर एक छवि बनाना चाहता है", + "wantsToGenerateImageProtected": "Zoo एक संरक्षित स्थान पर छवि बनाना चाहता है", + "didGenerateImage": "Zoo ने एक छवि बनाई" }, "directoryOperations": { - "wantsToViewTopLevel": "Roo इस निर्देशिका में शीर्ष स्तर की फ़ाइलें देखना चाहता है", - "didViewTopLevel": "Roo ने इस निर्देशिका में शीर्ष स्तर की फ़ाइलें देखीं", - "wantsToViewRecursive": "Roo इस निर्देशिका में सभी फ़ाइलों को पुनरावर्ती रूप से देखना चाहता है", - "didViewRecursive": "Roo ने इस निर्देशिका में सभी फ़ाइलों को पुनरावर्ती रूप से देखा", - "wantsToSearch": "Roo इस निर्देशिका में {{regex}} के लिए खोज करना चाहता है", - "didSearch": "Roo ने इस निर्देशिका में {{regex}} के लिए खोज की", - "wantsToSearchOutsideWorkspace": "Roo इस निर्देशिका (कार्यक्षेत्र के बाहर) में {{regex}} के लिए खोज करना चाहता है", - "didSearchOutsideWorkspace": "Roo ने इस निर्देशिका (कार्यक्षेत्र के बाहर) में {{regex}} के लिए खोज की", - "wantsToViewTopLevelOutsideWorkspace": "Roo इस निर्देशिका (कार्यक्षेत्र के बाहर) में शीर्ष स्तर की फ़ाइलें देखना चाहता है", - "didViewTopLevelOutsideWorkspace": "Roo ने इस निर्देशिका (कार्यक्षेत्र के बाहर) में शीर्ष स्तर की फ़ाइलें देखीं", - "wantsToViewRecursiveOutsideWorkspace": "Roo इस निर्देशिका (कार्यक्षेत्र के बाहर) में सभी फ़ाइलों को पुनरावर्ती रूप से देखना चाहता है", - "didViewRecursiveOutsideWorkspace": "Roo ने इस निर्देशिका (कार्यक्षेत्र के बाहर) में सभी फ़ाइलों को पुनरावर्ती रूप से देखा", - "wantsToViewMultipleDirectories": "Roo कई डायरेक्ट्रीज़ देखना चाहता है" + "wantsToViewTopLevel": "Zoo इस निर्देशिका में शीर्ष स्तर की फ़ाइलें देखना चाहता है", + "didViewTopLevel": "Zoo ने इस निर्देशिका में शीर्ष स्तर की फ़ाइलें देखीं", + "wantsToViewRecursive": "Zoo इस निर्देशिका में सभी फ़ाइलों को पुनरावर्ती रूप से देखना चाहता है", + "didViewRecursive": "Zoo ने इस निर्देशिका में सभी फ़ाइलों को पुनरावर्ती रूप से देखा", + "wantsToSearch": "Zoo इस निर्देशिका में {{regex}} के लिए खोज करना चाहता है", + "didSearch": "Zoo ने इस निर्देशिका में {{regex}} के लिए खोज की", + "wantsToSearchOutsideWorkspace": "Zoo इस निर्देशिका (कार्यक्षेत्र के बाहर) में {{regex}} के लिए खोज करना चाहता है", + "didSearchOutsideWorkspace": "Zoo ने इस निर्देशिका (कार्यक्षेत्र के बाहर) में {{regex}} के लिए खोज की", + "wantsToViewTopLevelOutsideWorkspace": "Zoo इस निर्देशिका (कार्यक्षेत्र के बाहर) में शीर्ष स्तर की फ़ाइलें देखना चाहता है", + "didViewTopLevelOutsideWorkspace": "Zoo ने इस निर्देशिका (कार्यक्षेत्र के बाहर) में शीर्ष स्तर की फ़ाइलें देखीं", + "wantsToViewRecursiveOutsideWorkspace": "Zoo इस निर्देशिका (कार्यक्षेत्र के बाहर) में सभी फ़ाइलों को पुनरावर्ती रूप से देखना चाहता है", + "didViewRecursiveOutsideWorkspace": "Zoo ने इस निर्देशिका (कार्यक्षेत्र के बाहर) में सभी फ़ाइलों को पुनरावर्ती रूप से देखा", + "wantsToViewMultipleDirectories": "Zoo कई डायरेक्ट्रीज़ देखना चाहता है" }, "commandOutput": "कमांड आउटपुट", "commandExecution": { @@ -251,18 +241,18 @@ "youSaid": "आपने कहा" }, "mcp": { - "wantsToUseTool": "Roo {{serverName}} MCP सर्वर पर एक टूल का उपयोग करना चाहता है", - "wantsToAccessResource": "Roo {{serverName}} MCP सर्वर पर एक संसाधन का उपयोग करना चाहता है" + "wantsToUseTool": "Zoo {{serverName}} MCP सर्वर पर एक टूल का उपयोग करना चाहता है", + "wantsToAccessResource": "Zoo {{serverName}} MCP सर्वर पर एक संसाधन का उपयोग करना चाहता है" }, "modes": { - "wantsToSwitch": "Roo {{mode}} मोड में स्विच करना चाहता है", - "wantsToSwitchWithReason": "Roo {{mode}} मोड में स्विच करना चाहता है क्योंकि: {{reason}}", - "didSwitch": "Roo {{mode}} मोड में स्विच कर गया", - "didSwitchWithReason": "Roo {{mode}} मोड में स्विच कर गया क्योंकि: {{reason}}" + "wantsToSwitch": "Zoo {{mode}} मोड में स्विच करना चाहता है", + "wantsToSwitchWithReason": "Zoo {{mode}} मोड में स्विच करना चाहता है क्योंकि: {{reason}}", + "didSwitch": "Zoo {{mode}} मोड में स्विच कर गया", + "didSwitchWithReason": "Zoo {{mode}} मोड में स्विच कर गया क्योंकि: {{reason}}" }, "subtasks": { - "wantsToCreate": "Roo {{mode}} मोड में एक नया उपकार्य बनाना चाहता है", - "wantsToFinish": "Roo इस उपकार्य को समाप्त करना चाहता है", + "wantsToCreate": "Zoo {{mode}} मोड में एक नया उपकार्य बनाना चाहता है", + "wantsToFinish": "Zoo इस उपकार्य को समाप्त करना चाहता है", "newTaskContent": "उपकार्य निर्देश", "completionContent": "उपकार्य पूर्ण", "resultContent": "उपकार्य परिणाम", @@ -271,7 +261,7 @@ "goToSubtask": "कार्य देखें" }, "questions": { - "hasQuestion": "Roo का एक प्रश्न है" + "hasQuestion": "Zoo का एक प्रश्न है" }, "taskCompleted": "कार्य पूरा हुआ", "modelResponseIncomplete": "मॉडल प्रतिक्रिया अपूर्ण", @@ -287,7 +277,7 @@ "copyToClipboard": "क्लिपबोर्ड पर कॉपी करें", "copied": "कॉपी किया गया!", "diagnostics": "विस्तृत त्रुटि जानकारी प्राप्त करें", - "proxyProvider": "ऐसा लगता है कि आप एक प्रॉक्सी-आधारित प्रदाता का उपयोग कर रहे हैं। इसके लॉग की जांच करना सुनिश्चित करें और सुनिश्चित करें कि यह Roo के अनुरोधों को नहीं फिर से लिख रहा है।" + "proxyProvider": "ऐसा लगता है कि आप एक प्रॉक्सी-आधारित प्रदाता का उपयोग कर रहे हैं। इसके लॉग की जांच करना सुनिश्चित करें और सुनिश्चित करें कि यह Zoo के अनुरोधों को नहीं फिर से लिख रहा है।" }, "powershell": { "issues": "ऐसा लगता है कि आपको Windows PowerShell के साथ समस्याएँ हो रही हैं, कृपया इसे देखें" @@ -330,31 +320,24 @@ } }, "skill": { - "wantsToLoad": "Roo एक कौशल लोड करना चाहता है", - "didLoad": "Roo ने एक कौशल लोड किया" + "wantsToLoad": "Zoo एक कौशल लोड करना चाहता है", + "didLoad": "Zoo ने एक कौशल लोड किया" }, "followUpSuggest": { "copyToInput": "इनपुट में कॉपी करें (या Shift + क्लिक)", "timerPrefix": "ऑटो-अनुमोदन सक्षम है। {{seconds}}s में चयन किया जा रहा है…" }, "announcement": { - "title": "Roo Code {{version}} रिलीज़ हुआ", - "support": "कृपया GitHub पर हमें स्टार देकर Roo Code का समर्थन करें।", - "stealthModel": { - "feature": "सीमित समय के लिए मुफ़्त स्टेल्थ मॉडल - Code Supernova: अब 1M Token संदर्भ विंडो के साथ अपग्रेड हुआ! एक बहुमुखी एजेंटिक कोडिंग मॉडल जो छवि इनपुट का समर्थन करता है, Roo Code Cloud के माध्यम से उपलब्ध।", - "note": "(नोट: प्रॉम्प्ट्स और कम्प्लीशन्स मॉडल निर्माता द्वारा लॉग किए जाते हैं और मॉडल को बेहतर बनाने के लिए उपयोग किए जाते हैं)", - "connectButton": "Roo Code Cloud से कनेक्ट करें", - "selectModel": "आरंभ करने के लिए सेटिंग्स में Roo Code Cloud प्रोवाइडर से roo/code-supernova चुनें।", - "goToSettingsButton": "सेटिंग्स पर जाएं" - }, + "title": "Zoo Code {{version}} रिलीज़ हो गया", + "support": "कृपया GitHub पर हमें स्टार देकर Zoo Code का समर्थन करें।", "handoff": { - "heading": "Roo Code plugin कहीं नहीं जा रहा है।", - "description": "आपने शायद हाल ही की घोषणा देखी होगी कि Roo Code ने 30 लाख installs पार कर लिए हैं और मूल टीम पूरी तरह Roomote पर focus कर रही है। हम जानते हैं कि यह खबर आप में से कई के लिए कठिन थी। यह plugin हमारे और आपके लिए बहुत मायने रखता है, और हम आपकी बात सुन रहे हैं। अच्छी खबर: एक community team ने Roo Code को आगे ले जाने की ज़िम्मेदारी ली है, और हम उनके साथ एक आधिकारिक handoff पर काम कर रहे हैं ताकि जिस plugin पर आप भरोसा करते हैं, उसका maintenance और improvement जारी रहे।", - "readMore": "Matt Rubens की मूल घोषणा पढ़ें" + "heading": "Zoo Code वापस आ गया है, अब Zoo Code नाम के community-maintained plugin के रूप में!!", + "description": "अगर आपने हाल की खबर नहीं देखी, तो Zoo Code टीम ने हाल ही में घोषणा की कि वे Zoo Code का विकास बंद कर रहे हैं और अब तक किए गए काम को archive कर रहे हैं। लेकिन चिंता मत करें, community नए नाम और नए घर के साथ Zoo Code की विरासत को आगे बढ़ाने के लिए आगे आई है! अब हम सिर्फ एक \"Roo\" नहीं हैं, हम एक community हैं — अगर चाहो तो एक \"Zoo\"। Zoo Code एक community-maintained plugin है जो वहीं से आगे बढ़ता है जहाँ Zoo Code रुका था, और हम Roo की भावना को ज़िंदा रखते हुए नई सुविधाएँ और सुधार लाने के लिए प्रतिबद्ध हैं। हम पूरी Zoo Code टीम को उनके शानदार काम और डेवलपर्स के लिए इतना बेहतरीन tool बनाने के लिए दिल से धन्यवाद देना चाहते हैं। हम उनकी बनाई नींव पर आगे निर्माण करने और यह देखने के लिए उत्साहित हैं कि community Zoo Code को आगे कहाँ ले जाती है!", + "readMore": "Zoo Code का नया होम पेज देखें और पूरी घोषणा पढ़ें" }, "release": { "heading": "नया क्या है:", - "gpt55": "OpenAI Codex के माध्यम से GPT-5.5: OpenAI Codex provider में GPT-5.5 सपोर्ट जोड़ा गया, ताकि आप नवीनतम मॉडल का उपयोग सीधे Roo Code से कर सकें।", + "gpt55": "OpenAI Codex के माध्यम से GPT-5.5: OpenAI Codex provider में GPT-5.5 सपोर्ट जोड़ा गया, ताकि आप नवीनतम मॉडल का उपयोग सीधे Zoo Code से कर सकें।", "claudeOpus47": "Vertex AI पर Claude Opus 4.7: Anthropic के नवीनतम flagship reasoning मॉडल के लिए Vertex AI provider में Claude Opus 4.7 जोड़ा गया।", "checkpointNav": "पिछले Checkpoint की Navigation: चैट में controls जोड़े गए ताकि आप पिछले checkpoints पर वापस जा सकें, पूर्ण i18n सपोर्ट के साथ।" }, @@ -380,24 +363,24 @@ "profileViolationWarning": "वर्तमान प्रोफ़ाइल आपके संगठन की सेटिंग्स के साथ संगत नहीं है", "shellIntegration": { "title": "कमांड निष्पादन चेतावनी", - "description": "आपका कमांड VSCode टर्मिनल शेल इंटीग्रेशन के बिना निष्पादित हो रहा है। इस चेतावनी को दबाने के लिए आप Roo Code सेटिंग्स के Terminal अनुभाग में शेल इंटीग्रेशन को अक्षम कर सकते हैं या नीचे दिए गए लिंक का उपयोग करके VSCode टर्मिनल इंटीग्रेशन की समस्या का समाधान कर सकते हैं।", + "description": "आपका कमांड VSCode टर्मिनल शेल इंटीग्रेशन के बिना निष्पादित हो रहा है। इस चेतावनी को दबाने के लिए आप Zoo Code सेटिंग्स के Terminal अनुभाग में शेल इंटीग्रेशन को अक्षम कर सकते हैं या नीचे दिए गए लिंक का उपयोग करके VSCode टर्मिनल इंटीग्रेशन की समस्या का समाधान कर सकते हैं।", "troubleshooting": "शेल इंटीग्रेशन दस्तावेज़ के लिए यहां क्लिक करें।" }, "ask": { "autoApprovedRequestLimitReached": { "title": "स्वत:-स्वीकृत अनुरोध सीमा पहुंची", - "description": "Roo {{count}} API अनुरोध(धों) की स्वत:-स्वीकृत सीमा तक पहुंच गया है। क्या आप गणना को रीसेट करके कार्य जारी रखना चाहते हैं?", + "description": "Zoo {{count}} API अनुरोध(धों) की स्वत:-स्वीकृत सीमा तक पहुंच गया है। क्या आप गणना को रीसेट करके कार्य जारी रखना चाहते हैं?", "button": "रीसेट करें और जारी रखें" }, "autoApprovedCostLimitReached": { "title": "स्वत:-अनुमोदित लागत सीमा पहुँच गई", "button": "रीसेट करें और जारी रखें", - "description": "Roo ने स्वचालित-स्वीकृत लागत सीमा ${{count}} तक पहुंच गई है। क्या आप लागत को रीसेट करके कार्य जारी रखना चाहेंगे?" + "description": "Zoo ने स्वचालित-स्वीकृत लागत सीमा ${{count}} तक पहुंच गई है। क्या आप लागत को रीसेट करके कार्य जारी रखना चाहेंगे?" } }, "codebaseSearch": { - "wantsToSearch": "Roo कोडबेस में {{query}} खोजना चाहता है", - "wantsToSearchWithPath": "Roo {{path}} में कोडबेस में {{query}} खोजना चाहता है", + "wantsToSearch": "Zoo कोडबेस में {{query}} खोजना चाहता है", + "wantsToSearchWithPath": "Zoo {{path}} में कोडबेस में {{query}} खोजना चाहता है", "didSearch_one": "1 परिणाम मिला", "didSearch_other": "{{count}} परिणाम मिले", "resultTooltip": "समानता स्कोर: {{score}} (फ़ाइल खोलने के लिए क्लिक करें)" @@ -438,7 +421,7 @@ "ariaLabel": "संस्करण {{version}} - रिलीज़ नोट्स देखने के लिए क्लिक करें" }, "rooCloudCTA": { - "title": "Roo Code Cloud विकसित हो रहा है!", + "title": "Zoo Code Cloud विकसित हो रहा है!", "description": "क्लाउड में रिमोट एजेंट चलाएं, कहीं से भी अपने कार्यों तक पहुंचें, दूसरों के साथ सहयोग करें, और बहुत कुछ।", "joinWaitlist": "नवीनतम अपडेट प्राप्त करने के लिए साइन अप करें।" }, @@ -479,8 +462,8 @@ "clickToEdit": "संदेश संपादित करने के लिए क्लिक करें" }, "slashCommand": { - "wantsToRun": "Roo एक स्लैश कमांड चलाना चाहता है", - "didRun": "Roo ने एक स्लैश कमांड चलाया" + "wantsToRun": "Zoo एक स्लैश कमांड चलाना चाहता है", + "didRun": "Zoo ने एक स्लैश कमांड चलाया" }, "todo": { "partial": "{{total}} में से {{completed}} टू-डू हो गए", @@ -499,11 +482,11 @@ "openMcpSettings": "MCP सेटिंग्स खोलें" }, "readCommandOutput": { - "title": "Roo read command output" + "title": "Zoo read command output" }, "retiredProvider": { "title": "प्रदाता अब समर्थित नहीं है", - "message": "क्षमा करें, यह प्रदाता अब समर्थित नहीं है। हमने देखा कि बहुत कम Roo उपयोगकर्ता वास्तव में इसका उपयोग कर रहे थे और हमें अपने कोडबेस का दायरा कम करने की आवश्यकता है ताकि हम तेज़ी से काम करना और अपने समुदाय की अच्छी सेवा करना जारी रख सकें। यह वाकई एक कठिन निर्णय था, लेकिन इससे हम उस पर ध्यान केंद्रित कर सकते हैं जो तुम्हारे लिए सबसे ज़्यादा मायने रखता है। हम जानते हैं, यह बुरा लगता है।", + "message": "यह प्रदाता अब उपलब्ध नहीं है। जारी रखने के लिए कोई समर्थित प्रदाता चुनें।", "openSettings": "सेटिंग्स खोलें" } } diff --git a/webview-ui/src/i18n/locales/hi/cloud.json b/webview-ui/src/i18n/locales/hi/cloud.json deleted file mode 100644 index 372336ab468..00000000000 --- a/webview-ui/src/i18n/locales/hi/cloud.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "title": "Cloud", - "profilePicture": "प्रोफाइल चित्र", - "logOut": "लॉग आउट", - "testApiAuthentication": "API प्रमाणीकरण का परीक्षण करें", - "signIn": "Roo Code Cloud से कनेक्ट करें", - "connect": "शुरू करें", - "cloudBenefitsTitle": "Roo Code Cloud आज़माएं", - "cloudBenefitProvider": "मुफ़्त और सशुल्क मॉडल एक्सेस करें जो Roo के साथ बढ़िया काम करते हैं", - "cloudBenefitCloudAgents": "स्वायत्त क्लाउड एजेंटों को कार्य दें", - "cloudBenefitTriggers": "GitHub पर कोड समीक्षाएं प्राप्त करें, Slack से कार्य शुरू करें और बहुत कुछ", - "cloudBenefitWalkaway": "कहीं से भी कार्यों का पालन और नियंत्रण करें (अपने फोन सहित)", - "cloudBenefitHistory": "कहीं से भी अपने कार्य इतिहास तक पहुंचें और उन्हें दूसरों के साथ साझा करें", - "cloudBenefitMetrics": "अपने टोकन उपभोग का समग्र दृश्य प्राप्त करें", - "visitCloudWebsite": "Roo Code Cloud पर जाएं", - "taskSync": "कार्य सिंक", - "taskSyncDescription": "Roo Code Cloud पर देखने और साझा करने के लिए अपने कार्यों को सिंक करें", - "taskSyncManagedByOrganization": "कार्य सिंक आपके संगठन द्वारा प्रबंधित किया जाता है", - "usageMetricsAlwaysReported": "लॉग इन होने पर मॉडल उपयोग जानकारी हमेशा रिपोर्ट की जाती है", - "authWaiting": "प्रमाणीकरण पूरा होने की प्रतीक्षा कर रहे हैं...", - "havingTrouble": "समस्या हो रही है?", - "pasteCallbackUrl": "अपने ब्राउज़र से redirect URL कॉपी करें और यहाँ पेस्ट करें:", - "startOver": "फिर से शुरू करें", - "personalAccount": "व्यक्तिगत खाता", - "switchAccount": "Roo Code Cloud खाता बदलें", - "createTeamAccount": "टीम खाता बनाएं", - "cloudUrlPillLabel": "Roo Code Cloud URL", - "upsell": { - "autoApprovePowerUser": "रू को थोड़ी स्वतंत्रता दे रहे हैं? रू कोड क्लाउड के साथ इसे कहीं से भी नियंत्रित करें। और जानें।", - "longRunningTask": "इसमें थोड़ा समय लग सकता है। क्लाउड के साथ कहीं से भी जारी रखें।", - "taskList": "रू का आनंद ले रहे हैं? रू कोड क्लाउड देखें: कहीं से भी अपने कार्यों का पालन और नियंत्रण करें, स्वायत्त क्लाउड एजेंट चलाएं, उपयोग के आंकड़े प्राप्त करें और बहुत कुछ। और जानें।" - } -} diff --git a/webview-ui/src/i18n/locales/hi/marketplace.json b/webview-ui/src/i18n/locales/hi/marketplace.json index f50ca8b701e..bd23a713ade 100644 --- a/webview-ui/src/i18n/locales/hi/marketplace.json +++ b/webview-ui/src/i18n/locales/hi/marketplace.json @@ -1,5 +1,5 @@ { - "title": "Roo Marketplace", + "title": "Zoo Marketplace", "tabs": { "installed": "इंस्टॉल किया गया", "settings": "सेटिंग्स", diff --git a/webview-ui/src/i18n/locales/hi/mcp.json b/webview-ui/src/i18n/locales/hi/mcp.json index 6a7bdd679ab..cc2290f9d77 100644 --- a/webview-ui/src/i18n/locales/hi/mcp.json +++ b/webview-ui/src/i18n/locales/hi/mcp.json @@ -2,16 +2,16 @@ "title": "MCP सर्वर", "done": "हो गया", "marketplace": "MCP मार्केटप्लेस", - "description": "<0>मॉडल कॉन्टेक्स्ट प्रोटोकॉल स्थानीय रूप से चल रहे MCP सर्वरों के साथ संचार को सक्षम बनाता है जो Roo की क्षमताओं का विस्तार करने के लिए अतिरिक्त उपकरण और संसाधन प्रदान करते हैं। आप <1>समुदाय द्वारा बनाए गए सर्वरों का उपयोग कर सकते हैं या Roo से अपने कार्यप्रवाह के लिए विशिष्ट नए उपकरण बनाने के लिए कह सकते हैं (जैसे, \"नवीनतम npm दस्तावेज़ प्राप्त करने वाला उपकरण जोड़ें\")।", + "description": "<0>मॉडल कॉन्टेक्स्ट प्रोटोकॉल स्थानीय रूप से चल रहे MCP सर्वरों के साथ संचार को सक्षम बनाता है जो Zoo की क्षमताओं का विस्तार करने के लिए अतिरिक्त उपकरण और संसाधन प्रदान करते हैं। आप <1>समुदाय द्वारा बनाए गए सर्वरों का उपयोग कर सकते हैं या Zoo से अपने कार्यप्रवाह के लिए विशिष्ट नए उपकरण बनाने के लिए कह सकते हैं (जैसे, \"नवीनतम npm दस्तावेज़ प्राप्त करने वाला उपकरण जोड़ें\")।", "instructions": "निर्देश", "enableToggle": { "title": "MCP सर्वर सक्षम करें", - "description": "इसे ON करो ताकि Roo जुड़े हुए MCP सर्वरों से टूल्स इस्तेमाल कर सके। इससे Roo को और क्षमताएँ मिलती हैं। अगर तुम ये अतिरिक्त टूल्स इस्तेमाल नहीं करना चाहते, तो इसे OFF करो ताकि API टोकन लागत कम हो सके।" + "description": "इसे ON करो ताकि Zoo जुड़े हुए MCP सर्वरों से टूल्स इस्तेमाल कर सके। इससे Zoo को और क्षमताएँ मिलती हैं। अगर तुम ये अतिरिक्त टूल्स इस्तेमाल नहीं करना चाहते, तो इसे OFF करो ताकि API टोकन लागत कम हो सके।" }, "enableServerCreation": { "title": "MCP सर्वर बनाना सक्षम करें", - "description": "इसे ON करो ताकि Roo तुम्हारी मदद से <1>नए कस्टम MCP सर्वर बना सके। <0>सर्वर बनाना जानें", - "hint": "टिप: API टोकन लागत कम करने के लिए, जब Roo से नया MCP सर्वर नहीं बनवा रहे हो तो इस सेटिंग को बंद कर दो।" + "description": "इसे ON करो ताकि Zoo तुम्हारी मदद से <1>नए कस्टम MCP सर्वर बना सके। <0>सर्वर बनाना जानें", + "hint": "टिप: API टोकन लागत कम करने के लिए, जब Zoo से नया MCP सर्वर नहीं बनवा रहे हो तो इस सेटिंग को बंद कर दो।" }, "editGlobalMCP": "ग्लोबल MCP एडिट करें", "editProjectMCP": "प्रोजेक्ट MCP एडिट करें", diff --git a/webview-ui/src/i18n/locales/hi/prompts.json b/webview-ui/src/i18n/locales/hi/prompts.json index 8f8fb9caa6d..6d3cb85d050 100644 --- a/webview-ui/src/i18n/locales/hi/prompts.json +++ b/webview-ui/src/i18n/locales/hi/prompts.json @@ -9,7 +9,7 @@ "editModesConfig": "मोड कॉन्फ़िगरेशन संपादित करें", "editGlobalModes": "ग्लोबल मोड्स संपादित करें", "editProjectModes": "प्रोजेक्ट मोड्स संपादित करें (.roomodes)", - "createModeHelpText": "मोड विशेष व्यक्तित्व हैं जो Roo के व्यवहार को अनुकूलित करते हैं। <0>मोड का उपयोग करने के बारे में जानें या <1>मोड को अनुकूलित करना।", + "createModeHelpText": "मोड विशेष व्यक्तित्व हैं जो Zoo के व्यवहार को अनुकूलित करते हैं। <0>मोड का उपयोग करने के बारे में जानें या <1>मोड को अनुकूलित करना।", "selectMode": "मोड खोजें" }, "apiConfiguration": { @@ -33,7 +33,7 @@ "roleDefinition": { "title": "भूमिका परिभाषा", "resetToDefault": "डिफ़ॉल्ट पर रीसेट करें", - "description": "इस मोड के लिए Roo की विशेषज्ञता और व्यक्तित्व परिभाषित करें। यह विवरण Roo के स्वयं को प्रस्तुत करने और कार्यों से निपटने के तरीके को आकार देता है।" + "description": "इस मोड के लिए Zoo की विशेषज्ञता और व्यक्तित्व परिभाषित करें। यह विवरण Zoo के स्वयं को प्रस्तुत करने और कार्यों से निपटने के तरीके को आकार देता है।" }, "description": { "title": "संक्षिप्त विवरण (मनुष्यों के लिए)", @@ -102,7 +102,7 @@ "types": { "ENHANCE": { "label": "प्रॉम्प्ट बढ़ाएँ", - "description": "अपने इनपुट के लिए अनुकूलित सुझाव या सुधार प्राप्त करने के लिए प्रॉम्प्ट वृद्धि का उपयोग करें। यह सुनिश्चित करता है कि Roo आपके इरादे को समझता है और सर्वोत्तम संभव प्रतिक्रियाएँ प्रदान करता है। चैट में ✨ आइकन के माध्यम से उपलब्ध है।" + "description": "अपने इनपुट के लिए अनुकूलित सुझाव या सुधार प्राप्त करने के लिए प्रॉम्प्ट वृद्धि का उपयोग करें। यह सुनिश्चित करता है कि Zoo आपके इरादे को समझता है और सर्वोत्तम संभव प्रतिक्रियाएँ प्रदान करता है। चैट में ✨ आइकन के माध्यम से उपलब्ध है।" }, "CONDENSE": { "label": "संदर्भ संघनन", @@ -167,7 +167,7 @@ }, "roleDefinition": { "label": "भूमिका परिभाषा", - "description": "इस मोड के लिए Roo की विशेषज्ञता और व्यक्तित्व परिभाषित करें।" + "description": "इस मोड के लिए Zoo की विशेषज्ञता और व्यक्तित्व परिभाषित करें।" }, "whenToUse": { "label": "कब उपयोग करें (वैकल्पिक)", diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json index 6c602e6441a..e8072e7a493 100644 --- a/webview-ui/src/i18n/locales/hi/settings.json +++ b/webview-ui/src/i18n/locales/hi/settings.json @@ -56,7 +56,7 @@ "label": "कोई कमजोरी खोजी?", "link": "हमारी प्रकटीकरण प्रक्रिया का पालन करें" }, - "community": "सुझाव चाहिए या बस अन्य Roo Code उपयोगकर्ताओं के साथ घूमना चाहते हैं? reddit.com/r/RooCode या discord.gg/roocode में शामिल हों", + "community": "सुझाव चाहिए या बस अन्य Zoo Code उपयोगकर्ताओं के साथ घूमना चाहते हैं? reddit.com/r/RooCode या discord.gg/roocode में शामिल हों", "contactAndCommunity": "संपर्क और समुदाय", "manageSettings": "सेटिंग्स प्रबंधित करें", "debugMode": { @@ -100,7 +100,7 @@ "footer": "अक्सर उपयोग किए जाने वाले संकेतों और वर्कफ़्लो तक तेज़ी से पहुंचने के लिए स्लैश कमांड का उपयोग करें।" }, "prompts": { - "description": "प्रॉम्प्ट्स को बेहतर बनाना, कोड की व्याख्या करना और समस्याओं को ठीक करना जैसी त्वरित कार्रवाइयों के लिए उपयोग किए जाने वाले सहायक प्रॉम्प्ट्स को कॉन्फ़िगर करें। ये प्रॉम्प्ट्स Roo को सामान्य विकास कार्यों के लिए बेहतर सहायता प्रदान करने में मदद करते हैं।" + "description": "प्रॉम्प्ट्स को बेहतर बनाना, कोड की व्याख्या करना और समस्याओं को ठीक करना जैसी त्वरित कार्रवाइयों के लिए उपयोग किए जाने वाले सहायक प्रॉम्प्ट्स को कॉन्फ़िगर करें। ये प्रॉम्प्ट्स Zoo को सामान्य विकास कार्यों के लिए बेहतर सहायता प्रदान करने में मदद करते हैं।" }, "codeIndex": { "title": "कोडबेस इंडेक्सिंग", @@ -223,10 +223,10 @@ "disabledAriaLabel": "स्वतः-अनुमोदन अक्षम - पहले विकल्प चुनें", "readOnly": { "label": "पढ़ें", - "description": "जब सक्षम होता है, तो Roo आपके अनुमोदित बटन पर क्लिक किए बिना स्वचालित रूप से निर्देशिका सामग्री देखेगा और फाइलें पढ़ेगा।", + "description": "जब सक्षम होता है, तो Zoo आपके अनुमोदित बटन पर क्लिक किए बिना स्वचालित रूप से निर्देशिका सामग्री देखेगा और फाइलें पढ़ेगा।", "outsideWorkspace": { "label": "वर्कस्पेस के बाहर की फाइलें शामिल करें", - "description": "Roo को अनुमोदन की आवश्यकता के बिना वर्तमान वर्कस्पेस के बाहर की फाइलें पढ़ने की अनुमति दें।" + "description": "Zoo को अनुमोदन की आवश्यकता के बिना वर्तमान वर्कस्पेस के बाहर की फाइलें पढ़ने की अनुमति दें।" } }, "write": { @@ -235,11 +235,11 @@ "delayLabel": "लिखने के बाद विलंब ताकि डायग्नोस्टिक संभावित समस्याओं का पता लगा सकें", "outsideWorkspace": { "label": "वर्कस्पेस के बाहर की फाइलें शामिल करें", - "description": "Roo को अनुमोदन की आवश्यकता के बिना वर्तमान वर्कस्पेस के बाहर फाइलें बनाने और संपादित करने की अनुमति दें।" + "description": "Zoo को अनुमोदन की आवश्यकता के बिना वर्तमान वर्कस्पेस के बाहर फाइलें बनाने और संपादित करने की अनुमति दें।" }, "protected": { "label": "संरक्षित फाइलें शामिल करें", - "description": "Roo को अनुमोदन की आवश्यकता के बिना संरक्षित फाइलें (.rooignore और .roo/ कॉन्फ़िगरेशन फाइलें जैसी) बनाने और संपादित करने की अनुमति दें।" + "description": "Zoo को अनुमोदन की आवश्यकता के बिना संरक्षित फाइलें (.rooignore और .roo/ कॉन्फ़िगरेशन फाइलें जैसी) बनाने और संपादित करने की अनुमति दें।" } }, "mcp": { @@ -306,7 +306,7 @@ "searchProviderPlaceholder": "प्रदाता खोजें", "noProviderMatchFound": "कोई प्रदाता नहीं मिला", "noMatchFound": "कोई मिलान प्रोफ़ाइल नहीं मिला", - "retiredProviderMessage": "क्षमा करें, यह प्रदाता अब समर्थित नहीं है। हमने देखा कि बहुत कम Roo उपयोगकर्ता वास्तव में इसका उपयोग कर रहे थे और हमें अपने कोडबेस का दायरा कम करने की आवश्यकता है ताकि हम तेज़ी से काम करना और अपने समुदाय की अच्छी सेवा करना जारी रख सकें। यह वाकई एक कठिन निर्णय था, लेकिन इससे हम उस पर ध्यान केंद्रित कर सकते हैं जो तुम्हारे लिए सबसे ज़्यादा मायने रखता है। हम जानते हैं, यह बुरा लगता है।", + "retiredProviderMessage": "यह प्रदाता अब उपलब्ध नहीं है। जारी रखने के लिए कोई समर्थित प्रदाता चुनें।", "vscodeLmDescription": "VS कोड भाषा मॉडल API आपको अन्य VS कोड एक्सटेंशन (जैसे GitHub Copilot) द्वारा प्रदान किए गए मॉडल चलाने की अनुमति देता है। शुरू करने का सबसे आसान तरीका VS कोड मार्केटप्लेस से Copilot और Copilot चैट एक्सटेंशन इंस्टॉल करना है।", "awsCustomArnUse": "आप जिस मॉडल का उपयोग करना चाहते हैं, उसके लिए एक वैध Amazon बेडरॉक ARN दर्ज करें। प्रारूप उदाहरण:", "awsCustomArnDesc": "सुनिश्चित करें कि ARN में क्षेत्र ऊपर चयनित AWS क्षेत्र से मेल खाता है।", @@ -456,7 +456,7 @@ "draftModelDesc": "स्पेक्युलेटिव डिकोडिंग के सही काम करने के लिए ड्राफ्ट मॉडल को समान मॉडल परिवार से होना चाहिए।", "selectDraftModel": "ड्राफ्ट मॉडल चुनें", "noModelsFound": "कोई ड्राफ्ट मॉडल नहीं मिला। कृपया सुनिश्चित करें कि LM Studio सर्वर मोड सक्षम के साथ चल रहा है।", - "description": "LM Studio आपको अपने कंप्यूटर पर स्थानीय रूप से मॉडल चलाने की अनुमति देता है। आरंभ करने के निर्देशों के लिए, उनकी क्विकस्टार्ट गाइड देखें। आपको इस एक्सटेंशन के साथ उपयोग करने के लिए LM Studio की स्थानीय सर्वर सुविधा भी शुरू करनी होगी। नोट: Roo Code जटिल प्रॉम्प्ट्स का उपयोग करता है और Claude मॉडल के साथ सबसे अच्छा काम करता है। कम क्षमता वाले मॉडल अपेक्षित रूप से काम नहीं कर सकते हैं।" + "description": "LM Studio आपको अपने कंप्यूटर पर स्थानीय रूप से मॉडल चलाने की अनुमति देता है। आरंभ करने के निर्देशों के लिए, उनकी क्विकस्टार्ट गाइड देखें। आपको इस एक्सटेंशन के साथ उपयोग करने के लिए LM Studio की स्थानीय सर्वर सुविधा भी शुरू करनी होगी। नोट: Zoo Code जटिल प्रॉम्प्ट्स का उपयोग करता है और Claude मॉडल के साथ सबसे अच्छा काम करता है। कम क्षमता वाले मॉडल अपेक्षित रूप से काम नहीं कर सकते हैं।" }, "ollama": { "baseUrl": "बेस URL (वैकल्पिक)", @@ -466,11 +466,7 @@ "numCtx": "संदर्भ विंडो आकार (num_ctx)", "numCtxHelp": "मॉडल के डिफ़ॉल्ट संदर्भ विंडो आकार को ओवरराइड करें। मॉडल की मॉडलफ़ाइल कॉन्फ़िगरेशन का उपयोग करने के लिए खाली छोड़ दें। न्यूनतम मान 128 है।", "description": "Ollama आपको अपने कंप्यूटर पर स्थानीय रूप से मॉडल चलाने की अनुमति देता है। आरंभ करने के निर्देशों के लिए, उनकी क्विकस्टार्ट गाइड देखें।", - "warning": "नोट: Roo Code जटिल प्रॉम्प्ट्स का उपयोग करता है और Claude मॉडल के साथ सबसे अच्छा काम करता है। कम क्षमता वाले मॉडल अपेक्षित रूप से काम नहीं कर सकते हैं।" - }, - "roo": { - "authenticatedMessage": "आपके Roo Code Cloud खाते के माध्यम से सुरक्षित रूप से प्रमाणित।", - "connectButton": "Roo Code Cloud से कनेक्ट करें" + "warning": "नोट: Zoo Code जटिल प्रॉम्प्ट्स का उपयोग करता है और Claude मॉडल के साथ सबसे अच्छा काम करता है। कम क्षमता वाले मॉडल अपेक्षित रूप से काम नहीं कर सकते हैं।" }, "openRouter": { "providerRouting": { @@ -480,7 +476,7 @@ } }, "customModel": { - "capabilities": "अपने कस्टम OpenAI-संगत मॉडल के लिए क्षमताओं और मूल्य निर्धारण को कॉन्फ़िगर करें। मॉडल क्षमताओं को निर्दिष्ट करते समय सावधान रहें, क्योंकि वे Roo Code के प्रदर्शन को प्रभावित कर सकती हैं।", + "capabilities": "अपने कस्टम OpenAI-संगत मॉडल के लिए क्षमताओं और मूल्य निर्धारण को कॉन्फ़िगर करें। मॉडल क्षमताओं को निर्दिष्ट करते समय सावधान रहें, क्योंकि वे Zoo Code के प्रदर्शन को प्रभावित कर सकती हैं।", "maxTokens": { "label": "अधिकतम आउटपुट टोकन", "description": "मॉडल एक प्रतिक्रिया में अधिकतम कितने टोकन जनरेट कर सकता है। (सर्वर को अधिकतम टोकन सेट करने की अनुमति देने के लिए -1 निर्दिष्ट करें।)" @@ -563,18 +559,18 @@ }, "enable": { "label": "स्वचालित चेकपॉइंट सक्षम करें", - "description": "जब सक्षम होता है, तो Roo कार्य निष्पादन के दौरान स्वचालित रूप से चेकपॉइंट बनाएगा, जिससे परिवर्तनों की समीक्षा करना या पहले की स्थितियों पर वापस जाना आसान हो जाएगा। <0>अधिक जानें" + "description": "जब सक्षम होता है, तो Zoo कार्य निष्पादन के दौरान स्वचालित रूप से चेकपॉइंट बनाएगा, जिससे परिवर्तनों की समीक्षा करना या पहले की स्थितियों पर वापस जाना आसान हो जाएगा। <0>अधिक जानें" } }, "notifications": { "sound": { "label": "ध्वनि प्रभाव सक्षम करें", - "description": "जब सक्षम होता है, तो Roo सूचनाओं और घटनाओं के लिए ध्वनि प्रभाव चलाएगा।", + "description": "जब सक्षम होता है, तो Zoo सूचनाओं और घटनाओं के लिए ध्वनि प्रभाव चलाएगा।", "volumeLabel": "वॉल्यूम" }, "tts": { "label": "टेक्स्ट-टू-स्पीच सक्षम करें", - "description": "जब सक्षम होता है, तो Roo टेक्स्ट-टू-स्पीच का उपयोग करके अपनी प्रतिक्रियाओं को बोलकर पढ़ेगा।", + "description": "जब सक्षम होता है, तो Zoo टेक्स्ट-टू-स्पीच का उपयोग करके अपनी प्रतिक्रियाओं को बोलकर पढ़ेगा।", "speedLabel": "गति" } }, @@ -582,7 +578,7 @@ "description": "AI के संदर्भ विंडो में शामिल जानकारी को नियंत्रित करें, जो token उपयोग और प्रतिक्रिया गुणवत्ता को प्रभावित करता है", "autoCondenseContextPercent": { "label": "बुद्धिमान संदर्भ संघनन को ट्रिगर करने की सीमा", - "description": "जब संदर्भ विंडो इस सीमा तक पहुंचती है, तो Roo इसे स्वचालित रूप से संघनित कर देगा।" + "description": "जब संदर्भ विंडो इस सीमा तक पहुंचती है, तो Zoo इसे स्वचालित रूप से संघनित कर देगा।" }, "condensingApiConfiguration": { "label": "संदर्भ संघनन के लिए API कॉन्फ़िगरेशन", @@ -598,7 +594,7 @@ }, "autoCondenseContext": { "name": "बुद्धिमान संदर्भ संघनन को स्वचालित रूप से ट्रिगर करें", - "description": "जब सक्षम हो, तो Roo स्वचालित रूप से संदर्भ को संघनित करेगा जब सीमा पहुंच जाएगी। जब अक्षम हो, तो आप अभी भी मैन्युअल रूप से संदर्भ संघनन को ट्रिगर कर सकते हैं।" + "description": "जब सक्षम हो, तो Zoo स्वचालित रूप से संदर्भ को संघनित करेगा जब सीमा पहुंच जाएगी। जब अक्षम हो, तो आप अभी भी मैन्युअल रूप से संदर्भ संघनन को ट्रिगर कर सकते हैं।" }, "openTabs": { "label": "खुले टैब संदर्भ सीमा", @@ -614,7 +610,7 @@ }, "maxReadFile": { "label": "फ़ाइल पढ़ने का स्वचालित काटने की सीमा", - "description": "जब मॉडल प्रारंभ/अंत मान नहीं देता है, तो Roo इतनी पंक्तियाँ पढ़ता है। यदि यह संख्या फ़ाइल की कुल पंक्तियों से कम है, तो Roo कोड परिभाषाओं का पंक्ति क्रमांक इंडेक्स बनाता है। विशेष मामले: -1 Roo को पूरी फ़ाइल पढ़ने का निर्देश देता है (इंडेक्सिंग के बिना), और 0 कोई पंक्ति न पढ़ने और न्यूनतम संदर्भ के लिए केवल पंक्ति इंडेक्स प्रदान करने का निर्देश देता है। कम मान प्रारंभिक संदर्भ उपयोग को कम करते हैं, जो बाद में सटीक पंक्ति श्रेणी पढ़ने की अनुमति देता है। स्पष्ट प्रारंभ/अंत अनुरोध इस सेटिंग से सीमित नहीं हैं।", + "description": "जब मॉडल प्रारंभ/अंत मान नहीं देता है, तो Zoo इतनी पंक्तियाँ पढ़ता है। यदि यह संख्या फ़ाइल की कुल पंक्तियों से कम है, तो Zoo कोड परिभाषाओं का पंक्ति क्रमांक इंडेक्स बनाता है। विशेष मामले: -1 Zoo को पूरी फ़ाइल पढ़ने का निर्देश देता है (इंडेक्सिंग के बिना), और 0 कोई पंक्ति न पढ़ने और न्यूनतम संदर्भ के लिए केवल पंक्ति इंडेक्स प्रदान करने का निर्देश देता है। कम मान प्रारंभिक संदर्भ उपयोग को कम करते हैं, जो बाद में सटीक पंक्ति श्रेणी पढ़ने की अनुमति देता है। स्पष्ट प्रारंभ/अंत अनुरोध इस सेटिंग से सीमित नहीं हैं।", "lines": "पंक्तियाँ", "always_full_read": "हमेशा पूरी फ़ाइल पढ़ें" }, @@ -685,15 +681,15 @@ }, "outputLineLimit": { "label": "टर्मिनल आउटपुट सीमा", - "description": "सीमा के अंदर रहने के लिए पहली और आखिरी पंक्तियाँ रखता है और बीच वाली हटा देता है। token बचाने के लिए कम करें; Roo को अधिक मध्य विवरण देने के लिए बढ़ाएं। Roo उस स्थान पर प्लेसहोल्डर देखता है जहां सामग्री छोड़ी गई है।<0>अधिक जानें" + "description": "सीमा के अंदर रहने के लिए पहली और आखिरी पंक्तियाँ रखता है और बीच वाली हटा देता है। token बचाने के लिए कम करें; Zoo को अधिक मध्य विवरण देने के लिए बढ़ाएं। Zoo उस स्थान पर प्लेसहोल्डर देखता है जहां सामग्री छोड़ी गई है।<0>अधिक जानें" }, "outputCharacterLimit": { "label": "टर्मिनल वर्ण सीमा", - "description": "मेमोरी समस्याओं को रोकने के लिए आउटपुट आकार पर कठोर सीमा लगाकर लाइन सीमा को ओवरराइड करता है। यदि पार हो जाती है, तो शुरुआत और अंत रखता है और Roo को प्लेसहोल्डर दिखाता है जहां सामग्री छोड़ी गई है। <0>अधिक जानें" + "description": "मेमोरी समस्याओं को रोकने के लिए आउटपुट आकार पर कठोर सीमा लगाकर लाइन सीमा को ओवरराइड करता है। यदि पार हो जाती है, तो शुरुआत और अंत रखता है और Zoo को प्लेसहोल्डर दिखाता है जहां सामग्री छोड़ी गई है। <0>अधिक जानें" }, "outputPreviewSize": { "label": "कमांड आउटपुट पूर्वावलोकन आकार", - "description": "नियंत्रित करता है कि Roo कितना कमांड आउटपुट सीधे देखता है। पूर्ण आउटपुट हमेशा सहेजा जाता है और आवश्यकता पड़ने पर सुलभ होता है।", + "description": "नियंत्रित करता है कि Zoo कितना कमांड आउटपुट सीधे देखता है। पूर्ण आउटपुट हमेशा सहेजा जाता है और आवश्यकता पड़ने पर सुलभ होता है।", "options": { "small": "छोटा (5KB)", "medium": "मध्यम (10KB)", @@ -706,7 +702,7 @@ }, "shellIntegrationDisabled": { "label": "इनलाइन टर्मिनल का उपयोग करें (अनुशंसित)", - "description": "तेज़, अधिक विश्वसनीय रन के लिए शेल प्रोफ़ाइल/एकीकरण को बायपास करने हेतु इनलाइन टर्मिनल (चैट) में कमांड चलाएं। अक्षम होने पर, Roo आपकी शेल प्रोफ़ाइल, प्रॉम्प्ट और प्लगइन के साथ VS Code टर्मिनल का उपयोग करता है। <0>अधिक जानें" + "description": "तेज़, अधिक विश्वसनीय रन के लिए शेल प्रोफ़ाइल/एकीकरण को बायपास करने हेतु इनलाइन टर्मिनल (चैट) में कमांड चलाएं। अक्षम होने पर, Zoo आपकी शेल प्रोफ़ाइल, प्रॉम्प्ट और प्लगइन के साथ VS Code टर्मिनल का उपयोग करता है। <0>अधिक जानें" }, "commandDelay": { "label": "टर्मिनल कमांड विलंब", @@ -743,7 +739,7 @@ "advanced": { "diff": { "label": "diffs के माध्यम से संपादन सक्षम करें", - "description": "जब सक्षम होता है, Roo फाइलों को तेजी से संपादित कर सकेगा और स्वचालित रूप से काटे गए पूर्ण-फाइल लेखन को अस्वीकार करेगा।", + "description": "जब सक्षम होता है, Zoo फाइलों को तेजी से संपादित कर सकेगा और स्वचालित रूप से काटे गए पूर्ण-फाइल लेखन को अस्वीकार करेगा।", "strategy": { "label": "Diff रणनीति", "options": { @@ -760,7 +756,7 @@ }, "todoList": { "label": "टूडू सूची टूल सक्षम करें", - "description": "जब सक्षम हो, तो Roo कार्य प्रगति को ट्रैक करने के लिए टूडू सूचियाँ बना और प्रबंधित कर सकता है। यह जटिल कार्यों को प्रबंधनीय चरणों में व्यवस्थित करने में मदद करता है।" + "description": "जब सक्षम हो, तो Zoo कार्य प्रगति को ट्रैक करने के लिए टूडू सूचियाँ बना और प्रबंधित कर सकता है। यह जटिल कार्यों को प्रबंधनीय चरणों में व्यवस्थित करने में मदद करता है।" } }, "experimental": { @@ -770,15 +766,15 @@ }, "INSERT_BLOCK": { "name": "प्रायोगिक सामग्री सम्मिलित करने के उपकरण का उपयोग करें", - "description": "प्रायोगिक सामग्री सम्मिलित करने के उपकरण को सक्षम करें, जो Roo को diff बनाए बिना विशिष्ट लाइन नंबरों पर सामग्री सम्मिलित करने की अनुमति देता है।" + "description": "प्रायोगिक सामग्री सम्मिलित करने के उपकरण को सक्षम करें, जो Zoo को diff बनाए बिना विशिष्ट लाइन नंबरों पर सामग्री सम्मिलित करने की अनुमति देता है।" }, "MULTI_SEARCH_AND_REPLACE": { "name": "प्रायोगिक मल्टी ब्लॉक diff उपकरण का उपयोग करें", - "description": "जब सक्षम किया जाता है, तो Roo मल्टी ब्लॉक diff उपकरण का उपयोग करेगा। यह एक अनुरोध में फ़ाइल में कई कोड ब्लॉक अपडेट करने का प्रयास करेगा।" + "description": "जब सक्षम किया जाता है, तो Zoo मल्टी ब्लॉक diff उपकरण का उपयोग करेगा। यह एक अनुरोध में फ़ाइल में कई कोड ब्लॉक अपडेट करने का प्रयास करेगा।" }, "CONCURRENT_FILE_READS": { "name": "समवर्ती फ़ाइल पढ़ना सक्षम करें", - "description": "सक्षम होने पर, Roo एक ही अनुरोध में कई फ़ाइलें पढ़ सकता है अक्षम होने पर, Roo को एक बार में एक फ़ाइल पढ़नी होगी। कम सक्षम मॉडल के साथ काम करते समय या जब आप फ़ाइल एक्सेस पर अधिक नियंत्रण चाहते हैं तो इसे अक्षम करना मददगार हो सकता है।" + "description": "सक्षम होने पर, Zoo एक ही अनुरोध में कई फ़ाइलें पढ़ सकता है अक्षम होने पर, Zoo को एक बार में एक फ़ाइल पढ़नी होगी। कम सक्षम मॉडल के साथ काम करते समय या जब आप फ़ाइल एक्सेस पर अधिक नियंत्रण चाहते हैं तो इसे अक्षम करना मददगार हो सकता है।" }, "MARKETPLACE": { "name": "Marketplace सक्षम करें", @@ -786,7 +782,7 @@ }, "PREVENT_FOCUS_DISRUPTION": { "name": "बैकग्राउंड संपादन", - "description": "सक्षम होने पर एडिटर फोकस व्यवधान को रोकता है। फ़ाइल संपादन diff व्यू खोले बिना या फोकस चुराए बिना बैकग्राउंड में होता है। आप Roo के बदलाव करते समय बिना किसी बाधा के काम जारी रख सकते हैं। फ़ाइलें डायग्नोस्टिक्स कैप्चर करने के लिए बिना फोकस के खुल सकती हैं या पूरी तरह बंद रह सकती हैं।" + "description": "सक्षम होने पर एडिटर फोकस व्यवधान को रोकता है। फ़ाइल संपादन diff व्यू खोले बिना या फोकस चुराए बिना बैकग्राउंड में होता है। आप Zoo के बदलाव करते समय बिना किसी बाधा के काम जारी रख सकते हैं। फ़ाइलें डायग्नोस्टिक्स कैप्चर करने के लिए बिना फोकस के खुल सकती हैं या पूरी तरह बंद रह सकती हैं।" }, "ASSISTANT_MESSAGE_PARSER": { "name": "नए मैसेज पार्सर का उपयोग करें", @@ -800,7 +796,7 @@ "providerLabel": "प्रदाता", "providerDescription": "छवि निर्माण के लिए प्रदाता चुनें।", "name": "AI छवि निर्माण सक्षम करें", - "description": "जब सक्षम किया जाता है, तो Roo OpenRouter के छवि निर्माण मॉडल का उपयोग करके टेक्स्ट प्रॉम्प्ट से छवियां उत्पन्न कर सकता है। एक कॉन्फ़िगर किए गए OpenRouter API कुंजी की आवश्यकता होती है।", + "description": "जब सक्षम किया जाता है, तो Zoo OpenRouter के छवि निर्माण मॉडल का उपयोग करके टेक्स्ट प्रॉम्प्ट से छवियां उत्पन्न कर सकता है। एक कॉन्फ़िगर किए गए OpenRouter API कुंजी की आवश्यकता होती है।", "openRouterApiKeyLabel": "OpenRouter API कुंजी", "openRouterApiKeyPlaceholder": "अपनी OpenRouter API कुंजी दर्ज करें", "getApiKeyText": "अपनी API कुंजी प्राप्त करें", @@ -811,11 +807,11 @@ }, "RUN_SLASH_COMMAND": { "name": "मॉडल द्वारा शुरू किए गए स्लैश कमांड सक्षम करें", - "description": "जब सक्षम होता है, Roo वर्कफ़्लो चलाने के लिए आपके स्लैश कमांड चला सकता है।" + "description": "जब सक्षम होता है, Zoo वर्कफ़्लो चलाने के लिए आपके स्लैश कमांड चला सकता है।" }, "CUSTOM_TOOLS": { "name": "कस्टम टूल्स सक्षम करें", - "description": "सक्षम होने पर, Roo आपके प्रोजेक्ट की .roo/tools निर्देशिका या वैश्विक टूल्स के लिए ~/.roo/tools से कस्टम TypeScript/JavaScript टूल्स लोड और उपयोग कर सकता है। नोट: ये टूल्स स्वचालित रूप से स्वत:-अनुमोदित होंगे।", + "description": "सक्षम होने पर, Zoo आपके प्रोजेक्ट की .roo/tools निर्देशिका या वैश्विक टूल्स के लिए ~/.roo/tools से कस्टम TypeScript/JavaScript टूल्स लोड और उपयोग कर सकता है। नोट: ये टूल्स स्वचालित रूप से स्वत:-अनुमोदित होंगे।", "toolsHeader": "उपलब्ध कस्टम टूल्स", "noTools": "कोई कस्टम टूल लोड नहीं हुआ। अपने प्रोजेक्ट की .roo/tools निर्देशिका या वैश्विक टूल्स के लिए ~/.roo/tools में .ts या .js फ़ाइलें जोड़ें।", "refreshButton": "रिफ्रेश करें", @@ -827,7 +823,7 @@ }, "promptCaching": { "label": "प्रॉम्प्ट कैशिंग अक्षम करें", - "description": "जब चेक किया जाता है, तो Roo इस मॉडल के लिए प्रॉम्प्ट कैशिंग का उपयोग नहीं करेगा।" + "description": "जब चेक किया जाता है, तो Zoo इस मॉडल के लिए प्रॉम्प्ट कैशिंग का उपयोग नहीं करेगा।" }, "temperature": { "useCustom": "कस्टम तापमान का उपयोग करें", @@ -857,7 +853,7 @@ } }, "modelPicker": { - "automaticFetch": "एक्सटेंशन {{serviceName}} पर उपलब्ध मॉडलों की नवीनतम सूची स्वचालित रूप से प्राप्त करता है। यदि आप अनिश्चित हैं कि कौन सा मॉडल चुनना है, तो Roo Code {{defaultModelId}} के साथ सबसे अच्छा काम करता है। आप वर्तमान में उपलब्ध निःशुल्क विकल्पों के लिए \"free\" भी खोज सकते हैं।", + "automaticFetch": "एक्सटेंशन {{serviceName}} पर उपलब्ध मॉडलों की नवीनतम सूची स्वचालित रूप से प्राप्त करता है। यदि आप अनिश्चित हैं कि कौन सा मॉडल चुनना है, तो Zoo Code {{defaultModelId}} के साथ सबसे अच्छा काम करता है। आप वर्तमान में उपलब्ध निःशुल्क विकल्पों के लिए \"free\" भी खोज सकते हैं।", "label": "मॉडल", "searchPlaceholder": "खोजें", "noMatchFound": "कोई मिलान नहीं मिला", @@ -867,7 +863,7 @@ "footer": { "telemetry": { "label": "गुमनाम त्रुटि और उपयोग रिपोर्टिंग की अनुमति दें", - "description": "गुमनाम उपयोग डेटा और त्रुटि रिपोर्ट भेजकर Roo Code को बेहतर बनाने में मदद करें। यह टेलीमेट्री कोड, प्रॉम्प्ट या व्यक्तिगत जानकारी एकत्र नहीं करती। अधिक विवरण के लिए हमारी गोपनीयता नीति देखें। आप इसे कभी भी बंद कर सकते हैं।" + "description": "गुमनाम उपयोग डेटा और त्रुटि रिपोर्ट भेजकर Zoo Code को बेहतर बनाने में मदद करें। यह टेलीमेट्री कोड, प्रॉम्प्ट या व्यक्तिगत जानकारी एकत्र नहीं करती। अधिक विवरण के लिए हमारी गोपनीयता नीति देखें। आप इसे कभी भी बंद कर सकते हैं।" }, "settings": { "import": "इम्पोर्ट", diff --git a/webview-ui/src/i18n/locales/hi/welcome.json b/webview-ui/src/i18n/locales/hi/welcome.json index 851a0ae19cb..1075fd890e2 100644 --- a/webview-ui/src/i18n/locales/hi/welcome.json +++ b/webview-ui/src/i18n/locales/hi/welcome.json @@ -1,52 +1,18 @@ { - "routers": { - "requesty": { - "description": "आपका अनुकूलित LLM राउटर", - "incentive": "$1 मुफ्त क्रेडिट" - }, - "openrouter": { - "description": "LLM के लिए एक एकीकृत इंटरफेस" - }, - "roo": { - "description": "शुरुआत करने के लिए सर्वश्रेष्ठ मुफ्त मॉडल", - "incentive": "Roo को मुफ्त में आजमाएं" - } - }, "landing": { "greeting": "Roo Code में आपका स्वागत है!", "introduction": "अंतर्निहित और विस्तारित मोड्स की एक श्रृंखला के साथ, Roo Code आपको पहले कभी न देखे गए तरीके से योजना बनाने, आर्किटेक्ट करने, कोड करने, डीबग करने और अपनी उत्पादकता बढ़ाने की अनुमति देता है।", - "accountMention": "शुरुआत करने के लिए, अपना Roo Code Cloud खाता बनाएं। शक्तिशाली मॉडल, वेब नियंत्रण, विश्लेषण, समर्थन और अधिक प्राप्त करें।", - "getStarted": "Roo खाता बनाएं", - "noAccount": "या बिना खाते के उपयोग करें" + "getStarted": "अपना प्रदाता चुनें" }, "providerSignup": { "heading": "अपना प्रदाता चुनें", "chooseProvider": "Roo को काम करने के लिए एक LLM प्रदाता की आवश्यकता है। शुरुआत करने के लिए एक चुनें, आप बाद में और जोड़ सकते हैं।", - "rooCloudProvider": "Roo Code Cloud प्रदाता", - "rooCloudDescription": "शुरुआत करने का सबसे आसान तरीका Roo Code Cloud प्रदाता का उपयोग करना है: कम लागत पर मुफ्त और सशुल्क मॉडल का एक सावधानीपूर्वक चयन।", - "learnMore": "अधिक जानें", - "useAnotherProvider": "तृतीय-पक्ष प्रदाता", - "useAnotherProviderDescription": "एक API कुंजी दर्ज करें और शुरू करें।", - "noApiKeys": "क्या आप API कुंजी और अलग खातों से निपटना नहीं चाहते?", - "backToRoo": "Roo Code Cloud प्रदाता के साथ जाएं।", "goBack": "वापस", "finish": "समाप्त" }, - "waitingForCloud": { - "heading": "Roo Code Cloud में लॉगिन किया जा रहा है...", - "description": "हम आपको Roo Code Cloud के लिए साइन अप करने के लिए अपने ब्राउज़र पर ले जाएंगे। फिर हम आपको यहां वापस लाएंगे।", - "noPrompt": "यदि आपको URL खोलने के लिए संकेत नहीं दिया जाता है, तो यहां क्लिक करें।", - "havingTrouble": "यदि आपने साइन अप पूरा कर लिया है लेकिन समस्या हो रही है, तो यहां क्लिक करें।", - "pasteUrl": "अपने ब्राउज़र से कॉलबैक URL पेस्ट करें:", - "docsLink": "काम नहीं कर रहा? दस्तावेज़ देखें।", - "invalidURL": "यह एक मान्य कॉलबैक URL की तरह नहीं दिखता। कृपया वह कॉपी करें जो Roo Code Cloud आपके ब्राउज़र में दिखा रहा है।", - "goBack": "वापस" - }, - "startRouter": "हम एक LLM राउटर का उपयोग करने की अनुशंसा करते हैं:", - "startCustom": "या आप अपनी API कुंजी ला सकते हैं:", "telemetry": { - "helpImprove": "Roo Code को बेहतर बनाने में मदद करें", - "helpImproveMessage": "Roo Code बग ठीक करने और एक्सटेंशन को बेहतर बनाने में हमारी मदद करने के लिए त्रुटि और उपयोग डेटा एकत्र करता है। यह दूरसंचार कोड, प्रॉम्प्ट या व्यक्तिगत जानकारी एकत्र नहीं करता है। आप इसे सेटिंग्स में अक्षम कर सकते हैं।" + "helpImprove": "Zoo Code को बेहतर बनाने में मदद करें", + "helpImproveMessage": "Zoo Code बग ठीक करने और एक्सटेंशन को बेहतर बनाने में हमारी मदद करने के लिए त्रुटि और उपयोग डेटा एकत्र करता है। यह दूरसंचार कोड, प्रॉम्प्ट या व्यक्तिगत जानकारी एकत्र नहीं करता है। आप इसे सेटिंग्स में अक्षम कर सकते हैं।" }, "importSettings": "सेटिंग्स आयात करें" } diff --git a/webview-ui/src/i18n/locales/hi/worktrees.json b/webview-ui/src/i18n/locales/hi/worktrees.json index e568c3844d7..8dc49401803 100644 --- a/webview-ui/src/i18n/locales/hi/worktrees.json +++ b/webview-ui/src/i18n/locales/hi/worktrees.json @@ -1,28 +1,23 @@ { "title": "Worktrees", "done": "हो गया", - "description": "Git worktrees आपको अलग-अलग डायरेक्टरी में एक साथ कई ब्रांच पर काम करने देते हैं। हर worktree को Roo Code के साथ अपनी अलग VS Code विंडो मिलती है।", - + "description": "Git worktrees आपको अलग-अलग डायरेक्टरी में एक साथ कई ब्रांच पर काम करने देते हैं। हर worktree को Zoo Code के साथ अपनी अलग VS Code विंडो मिलती है।", "notGitRepo": "यह workspace Git repository नहीं है। worktrees को काम करने के लिए Git repository चाहिए।", "multiRootNotSupported": "Multi-root workspaces में worktrees समर्थित नहीं हैं। worktrees उपयोग करने के लिए एक ही फ़ोल्डर खोलें।", "subfolderNotSupported": "यह workspace Git repository का subfolder है। worktrees उपयोग करने के लिए repository root खोलें।", "gitRoot": "Git root", - "includeFileExists": ".worktreeinclude फ़ाइल मिली — नए worktrees में फ़ाइलें कॉपी की जाएँगी", "noIncludeFile": ".worktreeinclude फ़ाइल नहीं मिली", "createFromGitignore": ".gitignore से बनाएँ", - "primary": "मुख्य", "current": "वर्तमान", "locked": "लॉक्ड", "detachedHead": "Detached HEAD", "noBranch": "कोई ब्रांच नहीं", - "switchInThisWindow": "Worktree पर स्विच करें", "openInNewWindow": "नई विंडो में खोलें", "delete": "हटाएँ", "newWorktree": "नया Worktree", - "createWorktree": "Worktree बनाएँ", "branchName": "ब्रांच नाम", "createNewBranch": "नई ब्रांच बनाएँ", @@ -44,7 +39,6 @@ "copyingFiles": "फ़ाइलें कॉपी की जा रही हैं...", "copyingProgress": "{{item}} — {{copied}} कॉपी किया गया", "cancel": "रद्द करें", - "deleteWorktree": "Worktree हटाएँ", "deleteWarning": "यह कार्रवाई वापस नहीं ली जा सकती। निम्नलिखित हटाया जाएगा:", "deleteWarningBranch": "ब्रांच और सभी uncommitted बदलाव", @@ -53,11 +47,8 @@ "forceDelete": "जबरन हटाएँ", "worktreeIsLocked": "worktree लॉक्ड है", "deleting": "हटाया जा रहा है...", - "close": "बंद करें", - "showInHomeScreen": "होम स्क्रीन में worktrees दिखाएँ", - "selector": { "worktree": "Worktree", "title": "Worktrees", diff --git a/webview-ui/src/i18n/locales/id/chat.json b/webview-ui/src/i18n/locales/id/chat.json index 57500934032..42d6d12d9b6 100644 --- a/webview-ui/src/i18n/locales/id/chat.json +++ b/webview-ui/src/i18n/locales/id/chat.json @@ -1,5 +1,5 @@ { - "greeting": "Selamat datang di Roo Code", + "greeting": "Selamat datang di Zoo Code!", "task": { "title": "Tugas", "expand": "Perluas tugas", @@ -14,17 +14,7 @@ "contextWindow": "Panjang Konteks", "closeAndStart": "Tutup tugas dan mulai yang baru", "export": "Ekspor riwayat tugas", - "share": "Bagikan tugas", "delete": "Hapus Tugas (Shift + Klik untuk lewati konfirmasi)", - "shareWithOrganization": "Bagikan dengan organisasi", - "shareWithOrganizationDescription": "Hanya anggota organisasi Anda yang dapat mengakses", - "sharePublicly": "Bagikan secara publik", - "sharePubliclyDescription": "Siapa pun dengan tautan dapat mengakses", - "connectToCloud": "Hubungkan ke Cloud", - "connectToCloudDescription": "Masuk ke Roo Code Cloud untuk berbagi tugas", - "sharingDisabledByOrganization": "Berbagi dinonaktifkan oleh organisasi", - "shareSuccessOrganization": "Tautan organisasi disalin ke clipboard", - "shareSuccessPublic": "Tautan publik disalin ke clipboard", "openApiHistory": "Buka Riwayat API", "openUiHistory": "Buka Riwayat UI", "backToParentTask": "Tugas Induk" @@ -128,7 +118,7 @@ "enqueueMessage": "Tambahkan pesan ke antrean (akan dikirim setelah tugas saat ini selesai)", "scrollToBottom": "Gulir ke bawah chat", "scrollToLatestCheckpoint": "Gulir ke checkpoint sebelumnya", - "about": "Roo Code adalah seluruh tim pengembang AI di editor Anda.", + "about": "Zoo Code adalah seluruh tim pengembang AI di editor Anda.", "docs": "Lihat dokumentasi kami untuk mempelajari lebih lanjut.", "onboarding": "Daftar tugas Anda di ruang kerja ini kosong.", "rooTips": { @@ -151,7 +141,7 @@ "title": "Mode", "marketplace": "Marketplace Mode", "settings": "Pengaturan Mode", - "description": "Persona khusus yang menyesuaikan perilaku Roo.", + "description": "Persona khusus yang menyesuaikan perilaku Zoo.", "searchPlaceholder": "Cari mode...", "noResults": "Tidak ada hasil yang ditemukan" }, @@ -187,7 +177,7 @@ "500": "Kesalahan server penyedia. Ada yang salah di sisi penyedia, tidak ada yang salah dengan permintaan Anda.", "docs": "Dokumentasi", "goToSettings": "Pengaturan", - "unknown": "Kesalahan API yang tidak diketahui. Harap hubungi dukungan Roo Code.", + "unknown": "Kesalahan API yang tidak diketahui. Harap hubungi dukungan Zoo Code.", "connection": "Kesalahan koneksi. Pastikan Anda memiliki koneksi internet yang berfungsi.", "claudeCodeNotAuthenticated": "Anda perlu masuk untuk menggunakan Claude Code. Buka Pengaturan dan klik \"Masuk ke Claude Code\" untuk mengautentikasi." } @@ -227,51 +217,51 @@ } }, "skill": { - "wantsToLoad": "Roo ingin memuat keterampilan", - "didLoad": "Roo telah memuat keterampilan" + "wantsToLoad": "Zoo ingin memuat keterampilan", + "didLoad": "Zoo telah memuat keterampilan" }, "instructions": { "wantsToFetch": "Roo ingin mengambil instruksi detail untuk membantu tugas saat ini" }, "fileOperations": { - "wantsToRead": "Roo ingin membaca file ini", - "wantsToReadMultiple": "Roo ingin membaca beberapa file", - "wantsToReadAndXMore": "Roo ingin membaca file ini dan {{count}} lainnya", - "wantsToReadOutsideWorkspace": "Roo ingin membaca file ini di luar workspace", - "didRead": "Roo membaca file ini", - "wantsToEdit": "Roo ingin mengedit file ini", - "wantsToEditOutsideWorkspace": "Roo ingin mengedit file ini di luar workspace", - "wantsToEditProtected": "Roo ingin mengedit file konfigurasi yang dilindungi", - "wantsToApplyBatchChanges": "Roo ingin menerapkan perubahan ke beberapa file", - "wantsToGenerateImage": "Roo ingin menghasilkan gambar", - "wantsToGenerateImageOutsideWorkspace": "Roo ingin menghasilkan gambar di luar workspace", - "wantsToGenerateImageProtected": "Roo ingin menghasilkan gambar di lokasi yang dilindungi", - "didGenerateImage": "Roo telah menghasilkan gambar", - "wantsToCreate": "Roo ingin membuat file baru", + "wantsToRead": "Zoo ingin membaca file ini", + "wantsToReadMultiple": "Zoo ingin membaca beberapa file", + "wantsToReadAndXMore": "Zoo ingin membaca file ini dan {{count}} lainnya", + "wantsToReadOutsideWorkspace": "Zoo ingin membaca file ini di luar workspace", + "didRead": "Zoo membaca file ini", + "wantsToEdit": "Zoo ingin mengedit file ini", + "wantsToEditOutsideWorkspace": "Zoo ingin mengedit file ini di luar workspace", + "wantsToEditProtected": "Zoo ingin mengedit file konfigurasi yang dilindungi", + "wantsToApplyBatchChanges": "Zoo ingin menerapkan perubahan ke beberapa file", + "wantsToGenerateImage": "Zoo ingin menghasilkan gambar", + "wantsToGenerateImageOutsideWorkspace": "Zoo ingin menghasilkan gambar di luar workspace", + "wantsToGenerateImageProtected": "Zoo ingin menghasilkan gambar di lokasi yang dilindungi", + "didGenerateImage": "Zoo telah menghasilkan gambar", + "wantsToCreate": "Zoo ingin membuat file baru", "wantsToSearchReplace": "Roo ingin mencari dan mengganti di file ini", "didSearchReplace": "Roo melakukan pencarian dan penggantian pada file ini", - "wantsToInsert": "Roo ingin menyisipkan konten ke file ini", - "wantsToInsertWithLineNumber": "Roo ingin menyisipkan konten ke file ini di baris {{lineNumber}}", - "wantsToInsertAtEnd": "Roo ingin menambahkan konten ke akhir file ini" + "wantsToInsert": "Zoo ingin menyisipkan konten ke file ini", + "wantsToInsertWithLineNumber": "Zoo ingin menyisipkan konten ke file ini di baris {{lineNumber}}", + "wantsToInsertAtEnd": "Zoo ingin menambahkan konten ke akhir file ini" }, "directoryOperations": { - "wantsToViewTopLevel": "Roo ingin melihat file tingkat atas di direktori ini", - "didViewTopLevel": "Roo melihat file tingkat atas di direktori ini", - "wantsToViewRecursive": "Roo ingin melihat semua file secara rekursif di direktori ini", - "didViewRecursive": "Roo melihat semua file secara rekursif di direktori ini", - "wantsToSearch": "Roo ingin mencari direktori ini untuk {{regex}}", - "didSearch": "Roo mencari direktori ini untuk {{regex}}", - "wantsToSearchOutsideWorkspace": "Roo ingin mencari direktori ini (di luar workspace) untuk {{regex}}", - "didSearchOutsideWorkspace": "Roo mencari direktori ini (di luar workspace) untuk {{regex}}", - "wantsToViewTopLevelOutsideWorkspace": "Roo ingin melihat file tingkat atas di direktori ini (di luar workspace)", - "didViewTopLevelOutsideWorkspace": "Roo melihat file tingkat atas di direktori ini (di luar workspace)", - "wantsToViewRecursiveOutsideWorkspace": "Roo ingin melihat semua file secara rekursif di direktori ini (di luar workspace)", - "didViewRecursiveOutsideWorkspace": "Roo melihat semua file secara rekursif di direktori ini (di luar workspace)", - "wantsToViewMultipleDirectories": "Roo ingin melihat beberapa direktori" + "wantsToViewTopLevel": "Zoo ingin melihat file tingkat atas di direktori ini", + "didViewTopLevel": "Zoo melihat file tingkat atas di direktori ini", + "wantsToViewRecursive": "Zoo ingin melihat semua file secara rekursif di direktori ini", + "didViewRecursive": "Zoo melihat semua file secara rekursif di direktori ini", + "wantsToSearch": "Zoo ingin mencari direktori ini untuk {{regex}}", + "didSearch": "Zoo mencari direktori ini untuk {{regex}}", + "wantsToSearchOutsideWorkspace": "Zoo ingin mencari direktori ini (di luar workspace) untuk {{regex}}", + "didSearchOutsideWorkspace": "Zoo mencari direktori ini (di luar workspace) untuk {{regex}}", + "wantsToViewTopLevelOutsideWorkspace": "Zoo ingin melihat file tingkat atas di direktori ini (di luar workspace)", + "didViewTopLevelOutsideWorkspace": "Zoo melihat file tingkat atas di direktori ini (di luar workspace)", + "wantsToViewRecursiveOutsideWorkspace": "Zoo ingin melihat semua file secara rekursif di direktori ini (di luar workspace)", + "didViewRecursiveOutsideWorkspace": "Zoo melihat semua file secara rekursif di direktori ini (di luar workspace)", + "wantsToViewMultipleDirectories": "Zoo ingin melihat beberapa direktori" }, "codebaseSearch": { - "wantsToSearch": "Roo ingin mencari codebase untuk {{query}}", - "wantsToSearchWithPath": "Roo ingin mencari codebase untuk {{query}} di {{path}}", + "wantsToSearch": "Zoo ingin mencari codebase untuk {{query}}", + "wantsToSearchWithPath": "Zoo ingin mencari codebase untuk {{query}} di {{path}}", "didSearch_one": "Ditemukan 1 hasil", "didSearch_other": "Ditemukan {{count}} hasil", "resultTooltip": "Skor kemiripan: {{score}} (klik untuk membuka file)" @@ -296,24 +286,24 @@ "response": "Respons", "arguments": "Argumen", "text": { - "rooSaid": "Roo berkata" + "rooSaid": "Zoo berkata" }, "feedback": { "youSaid": "Anda bilang" }, "mcp": { - "wantsToUseTool": "Roo ingin menggunakan tool di server MCP {{serverName}}", - "wantsToAccessResource": "Roo ingin mengakses resource di server MCP {{serverName}}" + "wantsToUseTool": "Zoo ingin menggunakan tool di server MCP {{serverName}}", + "wantsToAccessResource": "Zoo ingin mengakses resource di server MCP {{serverName}}" }, "modes": { - "wantsToSwitch": "Roo ingin beralih ke mode {{mode}}", - "wantsToSwitchWithReason": "Roo ingin beralih ke mode {{mode}} karena: {{reason}}", - "didSwitch": "Roo beralih ke mode {{mode}}", - "didSwitchWithReason": "Roo beralih ke mode {{mode}} karena: {{reason}}" + "wantsToSwitch": "Zoo ingin beralih ke mode {{mode}}", + "wantsToSwitchWithReason": "Zoo ingin beralih ke mode {{mode}} karena: {{reason}}", + "didSwitch": "Zoo beralih ke mode {{mode}}", + "didSwitchWithReason": "Zoo beralih ke mode {{mode}} karena: {{reason}}" }, "subtasks": { - "wantsToCreate": "Roo ingin membuat subtugas baru dalam mode {{mode}}", - "wantsToFinish": "Roo ingin menyelesaikan subtugas ini", + "wantsToCreate": "Zoo ingin membuat subtugas baru dalam mode {{mode}}", + "wantsToFinish": "Zoo ingin menyelesaikan subtugas ini", "newTaskContent": "Instruksi Subtugas", "completionContent": "Subtugas Selesai", "resultContent": "Hasil Subtugas", @@ -322,7 +312,7 @@ "goToSubtask": "Lihat tugas" }, "questions": { - "hasQuestion": "Roo punya pertanyaan" + "hasQuestion": "Zoo punya pertanyaan" }, "taskCompleted": "Tugas Selesai", "error": "Error", @@ -336,14 +326,14 @@ "diffError": { "title": "Edit Tidak Berhasil" }, - "troubleMessage": "Roo mengalami masalah...", + "troubleMessage": "Zoo mengalami masalah...", "errorDetails": { "link": "Details", "title": "Detail Kesalahan", "copyToClipboard": "Salin ke Clipboard", "copied": "Disalin!", "diagnostics": "Dapatkan informasi kesalahan terperinci", - "proxyProvider": "Tampaknya kamu menggunakan penyedia berbasis proxy. Pastikan untuk memeriksa log-nya dan memastikan tidak menulis ulang permintaan Roo." + "proxyProvider": "Tampaknya kamu menggunakan penyedia berbasis proxy. Pastikan untuk memeriksa log-nya dan memastikan tidak menulis ulang permintaan Zoo." }, "powershell": { "issues": "Sepertinya kamu mengalami masalah Windows PowerShell, silakan lihat ini" @@ -367,23 +357,16 @@ "triggerLabelAll": "BRRR" }, "announcement": { - "title": "Roo Code {{version}} Dirilis", - "support": "Dukung Roo Code dengan memberi kami bintang di GitHub.", - "stealthModel": { - "feature": "Model stealth GRATIS waktu terbatas - Code Supernova: Sekarang diupgrade dengan jendela konteks 1M token! Model coding agentik serbaguna yang mendukung input gambar, tersedia melalui Roo Code Cloud.", - "note": "(Catatan: prompt dan completion dicatat oleh pembuat model dan digunakan untuk meningkatkan model)", - "connectButton": "Hubungkan ke Roo Code Cloud", - "selectModel": "Pilih roo/code-supernova dari penyedia Roo Code Cloud di Pengaturan untuk memulai.", - "goToSettingsButton": "Pergi ke Pengaturan" - }, + "title": "Zoo Code {{version}} Dirilis", + "support": "Dukung Zoo Code dengan memberi kami bintang di GitHub.", "handoff": { - "heading": "Plugin Roo Code tidak akan hilang.", - "description": "Kamu mungkin sudah melihat pengumuman baru-baru ini bahwa Roo Code mencapai 3 juta instalasi dan tim aslinya sepenuhnya fokus ke Roomote. Kami tahu berita itu berat bagi banyak dari kalian. Plugin ini sangat berarti bagi kami dan bagi kamu, dan kami mendengarmu. Kabar baiknya: sebuah tim komunitas telah maju untuk melanjutkan Roo Code, dan kami sedang bekerja sama dengan mereka untuk serah terima resmi agar plugin yang kamu andalkan tetap dirawat dan ditingkatkan.", - "readMore": "Baca pengumuman asli dari Matt Rubens" + "heading": "Zoo Code kembali, sekarang sebagai plugin yang dikelola komunitas bernama Zoo Code!!", + "description": "Kalau kamu belum mengikuti kabarnya, tim Zoo Code baru-baru ini mengumumkan bahwa mereka menghentikan pengembangan Zoo Code dan mengarsipkan pekerjaan yang telah mereka lakukan. Tapi jangan khawatir, komunitas telah melangkah maju untuk melanjutkan warisan Zoo Code dengan nama baru dan rumah baru! Kita bukan lagi satu \"Roo\" saja, kita adalah sebuah komunitas, sebuah \"Zoo\" kalau boleh dibilang. Zoo Code adalah plugin yang dikelola komunitas dan melanjutkan dari titik terakhir Zoo Code, dan kami berkomitmen menjaga semangat Roo tetap hidup sambil menghadirkan fitur dan peningkatan baru. Kami juga ingin memberi apresiasi besar kepada seluruh tim Zoo Code atas kerja luar biasa mereka dan karena telah menciptakan alat yang luar biasa untuk para developer. Kami antusias melanjutkan fondasi mereka dan melihat ke mana komunitas akan membawa Zoo Code ke depannya!", + "readMore": "Lihat halaman beranda baru Zoo Code dan baca pengumuman lengkapnya" }, "release": { "heading": "Yang Baru:", - "gpt55": "GPT-5.5 via OpenAI Codex: Dukungan GPT-5.5 ditambahkan di provider OpenAI Codex agar kamu bisa menggunakan model terbaru langsung dari Roo Code.", + "gpt55": "GPT-5.5 via OpenAI Codex: Dukungan GPT-5.5 ditambahkan di provider OpenAI Codex agar kamu bisa menggunakan model terbaru langsung dari Zoo Code.", "claudeOpus47": "Claude Opus 4.7 di Vertex AI: Claude Opus 4.7 ditambahkan ke provider Vertex AI untuk model reasoning andalan terbaru dari Anthropic.", "checkpointNav": "Navigasi Checkpoint Sebelumnya: Menambahkan kontrol di chat untuk melompat kembali ke checkpoint sebelumnya, dengan dukungan i18n penuh." }, @@ -417,18 +400,18 @@ "profileViolationWarning": "Profil saat ini tidak kompatibel dengan pengaturan organisasi kamu", "shellIntegration": { "title": "Peringatan Eksekusi Perintah", - "description": "Perintah kamu dijalankan tanpa integrasi shell terminal VSCode. Untuk menekan peringatan ini kamu bisa menonaktifkan integrasi shell di bagian Terminal dari pengaturan Roo Code atau troubleshoot integrasi terminal VSCode menggunakan link di bawah.", + "description": "Perintah kamu dijalankan tanpa integrasi shell terminal VSCode. Untuk menekan peringatan ini kamu bisa menonaktifkan integrasi shell di bagian Terminal dari pengaturan Zoo Code atau troubleshoot integrasi terminal VSCode menggunakan link di bawah.", "troubleshooting": "Klik di sini untuk dokumentasi integrasi shell." }, "ask": { "autoApprovedRequestLimitReached": { "title": "Batas Permintaan yang Disetujui Otomatis Tercapai", - "description": "Roo telah mencapai batas {{count}} permintaan API yang disetujui otomatis. Apakah Anda ingin mengatur ulang hitungan dan melanjutkan tugas?", + "description": "Zoo telah mencapai batas {{count}} permintaan API yang disetujui otomatis. Apakah Anda ingin mengatur ulang hitungan dan melanjutkan tugas?", "button": "Setel Ulang dan Lanjutkan" }, "autoApprovedCostLimitReached": { "title": "Batas Biaya yang Disetujui Otomatis Tercapai", - "description": "Roo telah mencapai batas biaya yang disetujui otomatis sebesar ${{count}}. Apakah Anda ingin mengatur ulang biaya dan melanjutkan tugas?", + "description": "Zoo telah mencapai batas biaya yang disetujui otomatis sebesar ${{count}}. Apakah Anda ingin mengatur ulang biaya dan melanjutkan tugas?", "button": "Setel Ulang dan Lanjutkan" } }, @@ -444,7 +427,7 @@ "ariaLabel": "Versi {{version}} - Klik untuk melihat catatan rilis" }, "rooCloudCTA": { - "title": "Roo Code Cloud sedang berkembang!", + "title": "Zoo Code Cloud sedang berkembang!", "description": "Jalankan agen jarak jauh di cloud, akses tugas Anda dari mana saja, berkolaborasi dengan orang lain, dan banyak lagi.", "joinWaitlist": "Daftar untuk mendapatkan pembaruan terbaru." }, @@ -485,8 +468,8 @@ "clickToEdit": "Klik untuk mengedit pesan" }, "slashCommand": { - "wantsToRun": "Roo ingin menjalankan perintah slash", - "didRun": "Roo telah menjalankan perintah slash" + "wantsToRun": "Zoo ingin menjalankan perintah slash", + "didRun": "Zoo telah menjalankan perintah slash" }, "todo": { "partial": "{{completed}} dari {{total}} to-do selesai", @@ -505,11 +488,11 @@ "openMcpSettings": "Buka Pengaturan MCP" }, "readCommandOutput": { - "title": "Roo read command output" + "title": "Zoo read command output" }, "retiredProvider": { "title": "Penyedia tidak lagi didukung", - "message": "Maaf, penyedia ini tidak lagi didukung. Kami melihat sangat sedikit pengguna Roo yang benar-benar menggunakannya dan kami perlu mengurangi cakupan kode kami agar bisa terus bergerak cepat dan melayani komunitas kami dengan baik. Ini adalah keputusan yang sangat sulit, tapi ini memungkinkan kami fokus pada apa yang paling penting bagimu. Memang menyebalkan, kami tahu.", + "message": "Penyedia ini sudah tidak tersedia. Pilih penyedia yang didukung untuk melanjutkan.", "openSettings": "Buka Pengaturan" } } diff --git a/webview-ui/src/i18n/locales/id/cloud.json b/webview-ui/src/i18n/locales/id/cloud.json deleted file mode 100644 index e12c918f410..00000000000 --- a/webview-ui/src/i18n/locales/id/cloud.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "title": "Cloud", - "profilePicture": "Foto profil", - "logOut": "Keluar", - "testApiAuthentication": "Uji Autentikasi API", - "signIn": "Hubungkan ke Roo Code Cloud", - "connect": "Mulai", - "cloudBenefitsTitle": "Coba Roo Code Cloud", - "cloudBenefitProvider": "Akses model gratis dan berbayar yang bekerja sangat baik dengan Roo", - "cloudBenefitCloudAgents": "Berikan tugas kepada agen Cloud otonom", - "cloudBenefitTriggers": "Dapatkan ulasan kode di GitHub, mulai tugas dari Slack, dan lainnya", - "cloudBenefitWalkaway": "Ikuti dan kontrol tugas dari mana saja (termasuk ponsel Anda)", - "cloudBenefitHistory": "Akses riwayat tugas Anda dari mana saja dan bagikan dengan orang lain", - "cloudBenefitMetrics": "Dapatkan tampilan holistik konsumsi token Anda", - "visitCloudWebsite": "Kunjungi Roo Code Cloud", - "taskSync": "Sinkronisasi tugas", - "taskSyncDescription": "Sinkronkan tugas Anda untuk melihat dan berbagi di Roo Code Cloud", - "taskSyncManagedByOrganization": "Sinkronisasi tugas dikelola oleh organisasi Anda", - "usageMetricsAlwaysReported": "Informasi penggunaan model selalu dilaporkan saat masuk", - "authWaiting": "Menunggu autentikasi selesai...", - "havingTrouble": "Ada masalah?", - "pasteCallbackUrl": "Salin URL redirect dari browser dan tempel di sini:", - "startOver": "Mulai dari awal", - "personalAccount": "Akun Pribadi", - "switchAccount": "Ganti Akun Roo Code Cloud", - "createTeamAccount": "Buat Akun Tim", - "cloudUrlPillLabel": "URL Roo Code Cloud", - "upsell": { - "autoApprovePowerUser": "Memberi Roo sedikit kebebasan? Kendalikan dari mana saja dengan Roo Code Cloud. Pelajari lebih lanjut.", - "longRunningTask": "Ini mungkin akan memakan waktu cukup lama. Lanjutkan dari mana saja dengan Cloud.", - "taskList": "Menikmati Roo? Coba Roo Code Cloud: ikuti dan kendalikan tugas Anda dari mana saja, jalankan agen Cloud otonom, dapatkan statistik penggunaan, dan lainnya. Pelajari lebih lanjut." - } -} diff --git a/webview-ui/src/i18n/locales/id/marketplace.json b/webview-ui/src/i18n/locales/id/marketplace.json index f91a75ebbe2..ad2e2fad78a 100644 --- a/webview-ui/src/i18n/locales/id/marketplace.json +++ b/webview-ui/src/i18n/locales/id/marketplace.json @@ -1,5 +1,5 @@ { - "title": "Roo Marketplace", + "title": "Zoo Marketplace", "tabs": { "installed": "Terinstal", "settings": "Pengaturan", diff --git a/webview-ui/src/i18n/locales/id/mcp.json b/webview-ui/src/i18n/locales/id/mcp.json index 6ae62ffd5ec..368da63b93c 100644 --- a/webview-ui/src/i18n/locales/id/mcp.json +++ b/webview-ui/src/i18n/locales/id/mcp.json @@ -2,16 +2,16 @@ "title": "Server MCP", "done": "Selesai", "marketplace": "Marketplace MCP", - "description": "<0>Model Context Protocol memungkinkan komunikasi dengan server MCP yang berjalan secara lokal yang menyediakan tools dan resources tambahan untuk memperluas kemampuan Roo Code. Anda dapat menggunakan <1>server buatan komunitas atau meminta Roo membuat tools baru yang spesifik untuk workflow Anda (misalnya, \"tambahkan tool yang mendapatkan dokumentasi npm terbaru\").", + "description": "<0>Model Context Protocol memungkinkan komunikasi dengan server MCP yang berjalan secara lokal yang menyediakan tools dan resources tambahan untuk memperluas kemampuan Zoo Code. Anda dapat menggunakan <1>server buatan komunitas atau meminta Zoo membuat tools baru yang spesifik untuk workflow Anda (misalnya, \"tambahkan tool yang mendapatkan dokumentasi npm terbaru\").", "instructions": "Instruksi", "enableToggle": { "title": "Aktifkan Server MCP", - "description": "Nyalakan ini untuk membiarkan Roo menggunakan tools dari server MCP yang terhubung. Ini memberikan Roo lebih banyak kemampuan. Jika Anda tidak berencana menggunakan tools tambahan ini, matikan untuk membantu mengurangi biaya token API." + "description": "Nyalakan ini untuk membiarkan Zoo menggunakan tools dari server MCP yang terhubung. Ini memberikan Zoo lebih banyak kemampuan. Jika Anda tidak berencana menggunakan tools tambahan ini, matikan untuk membantu mengurangi biaya token API." }, "enableServerCreation": { "title": "Aktifkan Pembuatan Server MCP", - "description": "Aktifkan ini agar Roo membantu Anda membangun server MCP kustom <1>baru. <0>Pelajari tentang pembuatan server", - "hint": "Petunjuk: Untuk mengurangi biaya token API, nonaktifkan pengaturan ini ketika Anda tidak secara aktif meminta Roo untuk membuat server MCP baru." + "description": "Aktifkan ini agar Zoo membantu Anda membangun server MCP kustom <1>baru. <0>Pelajari tentang pembuatan server", + "hint": "Petunjuk: Untuk mengurangi biaya token API, nonaktifkan pengaturan ini ketika Anda tidak secara aktif meminta Zoo untuk membuat server MCP baru." }, "editGlobalMCP": "Edit MCP Global", "editProjectMCP": "Edit MCP Proyek", diff --git a/webview-ui/src/i18n/locales/id/prompts.json b/webview-ui/src/i18n/locales/id/prompts.json index 938d8de34c5..395ca69cb46 100644 --- a/webview-ui/src/i18n/locales/id/prompts.json +++ b/webview-ui/src/i18n/locales/id/prompts.json @@ -9,7 +9,7 @@ "editModesConfig": "Edit konfigurasi mode", "editGlobalModes": "Edit Mode Global", "editProjectModes": "Edit Mode Proyek (.roomodes)", - "createModeHelpText": "Mode adalah persona khusus yang menyesuaikan perilaku Roo Code. <0>Pelajari tentang Menggunakan Mode atau <1>Menyesuaikan Mode.", + "createModeHelpText": "Mode adalah persona khusus yang menyesuaikan perilaku Zoo Code. <0>Pelajari tentang Menggunakan Mode atau <1>Menyesuaikan Mode.", "selectMode": "Cari mode" }, "apiConfiguration": { @@ -33,7 +33,7 @@ "roleDefinition": { "title": "Definisi Peran", "resetToDefault": "Reset ke default", - "description": "Tentukan keahlian dan kepribadian Roo untuk mode ini. Deskripsi ini membentuk bagaimana Roo mempresentasikan dirinya dan mendekati tugas." + "description": "Tentukan keahlian dan kepribadian Zoo untuk mode ini. Deskripsi ini membentuk bagaimana Zoo mempresentasikan dirinya dan mendekati tugas." }, "description": { "title": "Deskripsi singkat (untuk manusia)", @@ -102,7 +102,7 @@ "types": { "ENHANCE": { "label": "Tingkatkan Prompt", - "description": "Gunakan peningkatan prompt untuk mendapatkan saran atau perbaikan yang disesuaikan untuk input Anda. Ini memastikan Roo memahami maksud Anda dan memberikan respons terbaik. Tersedia melalui ikon ✨ di chat." + "description": "Gunakan peningkatan prompt untuk mendapatkan saran atau perbaikan yang disesuaikan untuk input Anda. Ini memastikan Zoo memahami maksud Anda dan memberikan respons terbaik. Tersedia melalui ikon ✨ di chat." }, "CONDENSE": { "label": "Peringkasan Konteks", @@ -167,7 +167,7 @@ }, "roleDefinition": { "label": "Definisi Peran", - "description": "Tentukan keahlian dan kepribadian Roo untuk mode ini." + "description": "Tentukan keahlian dan kepribadian Zoo untuk mode ini." }, "whenToUse": { "label": "Kapan Menggunakan (opsional)", diff --git a/webview-ui/src/i18n/locales/id/settings.json b/webview-ui/src/i18n/locales/id/settings.json index bc12a0da481..4437665da52 100644 --- a/webview-ui/src/i18n/locales/id/settings.json +++ b/webview-ui/src/i18n/locales/id/settings.json @@ -40,7 +40,7 @@ "ui": "UI", "experimental": "Eksperimental", "language": "Bahasa", - "about": "Tentang Roo Code", + "about": "Tentang Zoo Code", "skills": "Skills" }, "about": { @@ -56,7 +56,7 @@ "label": "Menemukan kerentanan?", "link": "Ikuti proses pengungkapan kami" }, - "community": "Ingin tips atau hanya nongkrong dengan pengguna Roo Code lainnya? Bergabunglah dengan reddit.com/r/RooCode atau discord.gg/roocode", + "community": "Ingin tips atau hanya nongkrong dengan pengguna Zoo Code lainnya? Bergabunglah dengan reddit.com/r/RooCode atau discord.gg/roocode", "contactAndCommunity": "Kontak & Komunitas", "manageSettings": "Kelola Pengaturan", "debugMode": { @@ -100,7 +100,7 @@ "footer": "Gunakan perintah slash untuk akses cepat ke prompt dan alur kerja yang sering digunakan." }, "prompts": { - "description": "Konfigurasi support prompt yang digunakan untuk aksi cepat seperti meningkatkan prompt, menjelaskan kode, dan memperbaiki masalah. Prompt ini membantu Roo memberikan bantuan yang lebih baik untuk tugas pengembangan umum." + "description": "Konfigurasi support prompt yang digunakan untuk aksi cepat seperti meningkatkan prompt, menjelaskan kode, dan memperbaiki masalah. Prompt ini membantu Zoo memberikan bantuan yang lebih baik untuk tugas pengembangan umum." }, "codeIndex": { "title": "Pengindeksan Codebase", @@ -223,10 +223,10 @@ "disabledAriaLabel": "Persetujuan otomatis dinonaktifkan - pilih opsi terlebih dahulu", "readOnly": { "label": "Baca", - "description": "Ketika diaktifkan, Roo akan secara otomatis melihat konten direktori dan membaca file tanpa memerlukan kamu mengklik tombol Setujui.", + "description": "Ketika diaktifkan, Zoo akan secara otomatis melihat konten direktori dan membaca file tanpa memerlukan kamu mengklik tombol Setujui.", "outsideWorkspace": { "label": "Sertakan file di luar workspace", - "description": "Izinkan Roo membaca file di luar workspace saat ini tanpa memerlukan persetujuan." + "description": "Izinkan Zoo membaca file di luar workspace saat ini tanpa memerlukan persetujuan." } }, "write": { @@ -235,11 +235,11 @@ "delayLabel": "Delay setelah menulis untuk memungkinkan diagnostik mendeteksi masalah potensial", "outsideWorkspace": { "label": "Sertakan file di luar workspace", - "description": "Izinkan Roo membuat dan mengedit file di luar workspace saat ini tanpa memerlukan persetujuan." + "description": "Izinkan Zoo membuat dan mengedit file di luar workspace saat ini tanpa memerlukan persetujuan." }, "protected": { "label": "Sertakan file yang dilindungi", - "description": "Izinkan Roo membuat dan mengedit file yang dilindungi (seperti .rooignore dan file konfigurasi .roo/) tanpa memerlukan persetujuan." + "description": "Izinkan Zoo membuat dan mengedit file yang dilindungi (seperti .rooignore dan file konfigurasi .roo/) tanpa memerlukan persetujuan." } }, "mcp": { @@ -306,7 +306,7 @@ "searchProviderPlaceholder": "Cari penyedia", "noProviderMatchFound": "Tidak ada penyedia ditemukan", "noMatchFound": "Tidak ada profil yang cocok ditemukan", - "retiredProviderMessage": "Maaf, penyedia ini tidak lagi didukung. Kami melihat sangat sedikit pengguna Roo yang benar-benar menggunakannya dan kami perlu mengurangi cakupan kode kami agar bisa terus bergerak cepat dan melayani komunitas kami dengan baik. Ini adalah keputusan yang sangat sulit, tapi ini memungkinkan kami fokus pada apa yang paling penting bagimu. Memang menyebalkan, kami tahu.", + "retiredProviderMessage": "Penyedia ini sudah tidak tersedia. Pilih penyedia yang didukung untuk melanjutkan.", "vscodeLmDescription": " API Model Bahasa VS Code memungkinkan kamu menjalankan model yang disediakan oleh ekstensi VS Code lainnya (termasuk namun tidak terbatas pada GitHub Copilot). Cara termudah untuk memulai adalah menginstal ekstensi Copilot dan Copilot Chat dari VS Code Marketplace.", "awsCustomArnUse": "Masukkan ARN Amazon Bedrock yang valid untuk model yang ingin kamu gunakan. Contoh format:", "awsCustomArnDesc": "Pastikan region di ARN cocok dengan AWS Region yang kamu pilih di atas.", @@ -456,7 +456,7 @@ "draftModelDesc": "Draft model harus dari keluarga model yang sama agar speculative decoding bekerja dengan benar.", "selectDraftModel": "Pilih Draft Model", "noModelsFound": "Tidak ada draft model ditemukan. Pastikan LM Studio berjalan dengan Server Mode diaktifkan.", - "description": "LM Studio memungkinkan kamu menjalankan model secara lokal di komputer. Untuk instruksi cara memulai, lihat panduan quickstart mereka. Kamu juga perlu memulai fitur local server LM Studio untuk menggunakannya dengan ekstensi ini. Catatan: Roo Code menggunakan prompt kompleks dan bekerja terbaik dengan model Claude. Model yang kurang mampu mungkin tidak bekerja seperti yang diharapkan." + "description": "LM Studio memungkinkan kamu menjalankan model secara lokal di komputer. Untuk instruksi cara memulai, lihat panduan quickstart mereka. Kamu juga perlu memulai fitur local server LM Studio untuk menggunakannya dengan ekstensi ini. Catatan: Zoo Code menggunakan prompt kompleks dan bekerja terbaik dengan model Claude. Model yang kurang mampu mungkin tidak bekerja seperti yang diharapkan." }, "ollama": { "baseUrl": "Base URL (opsional)", @@ -466,11 +466,7 @@ "numCtx": "Ukuran Jendela Konteks (num_ctx)", "numCtxHelp": "Ganti ukuran jendela konteks default model. Biarkan kosong untuk menggunakan konfigurasi Modelfile model. Nilai minimum adalah 128.", "description": "Ollama memungkinkan kamu menjalankan model secara lokal di komputer. Untuk instruksi cara memulai, lihat panduan quickstart mereka.", - "warning": "Catatan: Roo Code menggunakan prompt kompleks dan bekerja terbaik dengan model Claude. Model yang kurang mampu mungkin tidak bekerja seperti yang diharapkan." - }, - "roo": { - "authenticatedMessage": "Terautentikasi dengan aman melalui akun Roo Code Cloud Anda.", - "connectButton": "Hubungkan ke Roo Code Cloud" + "warning": "Catatan: Zoo Code menggunakan prompt kompleks dan bekerja terbaik dengan model Claude. Model yang kurang mampu mungkin tidak bekerja seperti yang diharapkan." }, "openRouter": { "providerRouting": { @@ -480,7 +476,7 @@ } }, "customModel": { - "capabilities": "Konfigurasi kemampuan dan harga untuk model kustom yang kompatibel dengan OpenAI. Hati-hati saat menentukan kemampuan model, karena dapat mempengaruhi performa Roo Code.", + "capabilities": "Konfigurasi kemampuan dan harga untuk model kustom yang kompatibel dengan OpenAI. Hati-hati saat menentukan kemampuan model, karena dapat mempengaruhi performa Zoo Code.", "maxTokens": { "label": "Token Output Maksimum", "description": "Jumlah maksimum token yang dapat dihasilkan model dalam respons. (Tentukan -1 untuk membiarkan server mengatur token maksimum.)" @@ -527,7 +523,7 @@ }, "consecutiveMistakeLimit": { "label": "Batas Kesalahan & Pengulangan", - "description": "Jumlah kesalahan berturut-turut atau tindakan berulang sebelum menampilkan dialog 'Roo mengalami masalah'. Atur ke 0 untuk menonaktifkan mekanisme keamanan ini (tidak akan pernah terpicu).", + "description": "Jumlah kesalahan berturut-turut atau tindakan berulang sebelum menampilkan dialog 'Zoo mengalami masalah'. Atur ke 0 untuk menonaktifkan mekanisme keamanan ini (tidak akan pernah terpicu).", "unlimitedDescription": "Percobaan ulang tak terbatas diaktifkan (lanjut otomatis). Dialog tidak akan pernah muncul.", "warning": "⚠️ Mengatur ke 0 memungkinkan percobaan ulang tak terbatas yang dapat menghabiskan penggunaan API yang signifikan" }, @@ -563,18 +559,18 @@ }, "enable": { "label": "Aktifkan checkpoint otomatis", - "description": "Ketika diaktifkan, Roo akan secara otomatis membuat checkpoint selama eksekusi tugas, memudahkan untuk meninjau perubahan atau kembali ke state sebelumnya. <0>Pelajari lebih lanjut" + "description": "Ketika diaktifkan, Zoo akan secara otomatis membuat checkpoint selama eksekusi tugas, memudahkan untuk meninjau perubahan atau kembali ke state sebelumnya. <0>Pelajari lebih lanjut" } }, "notifications": { "sound": { "label": "Aktifkan efek suara", - "description": "Ketika diaktifkan, Roo akan memutar efek suara untuk notifikasi dan event.", + "description": "Ketika diaktifkan, Zoo akan memutar efek suara untuk notifikasi dan event.", "volumeLabel": "Volume" }, "tts": { "label": "Aktifkan text-to-speech", - "description": "Ketika diaktifkan, Roo akan membacakan responnya menggunakan text-to-speech.", + "description": "Ketika diaktifkan, Zoo akan membacakan responnya menggunakan text-to-speech.", "speedLabel": "Kecepatan" } }, @@ -582,7 +578,7 @@ "description": "Kontrol informasi apa yang disertakan dalam context window AI, mempengaruhi penggunaan token dan kualitas respons", "autoCondenseContextPercent": { "label": "Ambang batas untuk memicu kondensasi konteks cerdas", - "description": "Ketika context window mencapai ambang batas ini, Roo akan secara otomatis mengondensasikannya." + "description": "Ketika context window mencapai ambang batas ini, Zoo akan secara otomatis mengondensasikannya." }, "condensingApiConfiguration": { "label": "Konfigurasi API untuk Kondensasi Konteks", @@ -598,7 +594,7 @@ }, "autoCondenseContext": { "name": "Secara otomatis memicu kondensasi konteks cerdas", - "description": "Ketika diaktifkan, Roo akan secara otomatis mengondensasi konteks ketika ambang batas tercapai. Ketika dinonaktifkan, kamu masih dapat memicu kondensasi konteks secara manual." + "description": "Ketika diaktifkan, Zoo akan secara otomatis mengondensasi konteks ketika ambang batas tercapai. Ketika dinonaktifkan, kamu masih dapat memicu kondensasi konteks secara manual." }, "diagnostics": { "includeMessages": { @@ -643,7 +639,7 @@ }, "maxReadFile": { "label": "Ambang batas auto-truncate pembacaan file", - "description": "Roo membaca sejumlah baris ini ketika model menghilangkan nilai start/end. Jika angka ini kurang dari total file, Roo menghasilkan indeks nomor baris dari definisi kode. Kasus khusus: -1 menginstruksikan Roo untuk membaca seluruh file (tanpa indexing), dan 0 menginstruksikannya untuk tidak membaca baris dan hanya menyediakan indeks baris untuk konteks minimal. Nilai yang lebih rendah meminimalkan penggunaan konteks awal, memungkinkan pembacaan rentang baris yang tepat selanjutnya. Permintaan start/end eksplisit tidak dibatasi oleh pengaturan ini.", + "description": "Zoo membaca sejumlah baris ini ketika model menghilangkan nilai start/end. Jika angka ini kurang dari total file, Zoo menghasilkan indeks nomor baris dari definisi kode. Kasus khusus: -1 menginstruksikan Zoo untuk membaca seluruh file (tanpa indexing), dan 0 menginstruksikannya untuk tidak membaca baris dan hanya menyediakan indeks baris untuk konteks minimal. Nilai yang lebih rendah meminimalkan penggunaan konteks awal, memungkinkan pembacaan rentang baris yang tepat selanjutnya. Permintaan start/end eksplisit tidak dibatasi oleh pengaturan ini.", "lines": "baris", "always_full_read": "Selalu baca seluruh file" }, @@ -685,15 +681,15 @@ }, "outputLineLimit": { "label": "Batas keluaran terminal", - "description": "Menyimpan baris pertama dan terakhir dan membuang yang tengah agar tetap di bawah batas. Turunkan untuk menghemat token; naikkan untuk memberi Roo lebih banyak detail tengah. Roo melihat placeholder di mana konten dilewati.<0>Pelajari lebih lanjut" + "description": "Menyimpan baris pertama dan terakhir dan membuang yang tengah agar tetap di bawah batas. Turunkan untuk menghemat token; naikkan untuk memberi Zoo lebih banyak detail tengah. Zoo melihat placeholder di mana konten dilewati.<0>Pelajari lebih lanjut" }, "outputCharacterLimit": { "label": "Batas karakter terminal", - "description": "Override batas baris untuk mencegah masalah memori dengan memberlakukan cap keras pada ukuran output. Jika terlampaui, simpan awal dan akhir lalu tampilkan placeholder ke Roo di mana konten dilewati. <0>Pelajari lebih lanjut" + "description": "Override batas baris untuk mencegah masalah memori dengan memberlakukan cap keras pada ukuran output. Jika terlampaui, simpan awal dan akhir lalu tampilkan placeholder ke Zoo di mana konten dilewati. <0>Pelajari lebih lanjut" }, "outputPreviewSize": { "label": "Ukuran pratinjau keluaran perintah", - "description": "Mengontrol seberapa banyak keluaran perintah yang dilihat Roo secara langsung. Keluaran lengkap selalu disimpan dan dapat diakses saat diperlukan.", + "description": "Mengontrol seberapa banyak keluaran perintah yang dilihat Zoo secara langsung. Keluaran lengkap selalu disimpan dan dapat diakses saat diperlukan.", "options": { "small": "Kecil (5KB)", "medium": "Sedang (10KB)", @@ -706,7 +702,7 @@ }, "shellIntegrationDisabled": { "label": "Gunakan Terminal Inline (disarankan)", - "description": "Jalankan perintah di Terminal Inline (obrolan) untuk melewati profil/integrasi shell untuk proses lebih cepat dan andal. Saat dinonaktifkan, Roo menggunakan terminal VS Code dengan profil shell, prompt, dan plugin Anda. <0>Pelajari lebih lanjut" + "description": "Jalankan perintah di Terminal Inline (obrolan) untuk melewati profil/integrasi shell untuk proses lebih cepat dan andal. Saat dinonaktifkan, Zoo menggunakan terminal VS Code dengan profil shell, prompt, dan plugin Anda. <0>Pelajari lebih lanjut" }, "commandDelay": { "label": "Delay perintah terminal", @@ -743,7 +739,7 @@ "advanced": { "diff": { "label": "Aktifkan editing melalui diff", - "description": "Ketika diaktifkan, Roo akan dapat mengedit file lebih cepat dan akan secara otomatis menolak penulisan file penuh yang terpotong", + "description": "Ketika diaktifkan, Zoo akan dapat mengedit file lebih cepat dan akan secara otomatis menolak penulisan file penuh yang terpotong", "strategy": { "label": "Strategi diff", "options": { @@ -760,7 +756,7 @@ }, "todoList": { "label": "Aktifkan alat daftar tugas", - "description": "Saat diaktifkan, Roo dapat membuat dan mengelola daftar tugas untuk melacak kemajuan tugas. Ini membantu mengatur tugas kompleks menjadi langkah-langkah yang dapat dikelola." + "description": "Saat diaktifkan, Zoo dapat membuat dan mengelola daftar tugas untuk melacak kemajuan tugas. Ini membantu mengatur tugas kompleks menjadi langkah-langkah yang dapat dikelola." } }, "experimental": { @@ -770,15 +766,15 @@ }, "INSERT_BLOCK": { "name": "Gunakan tool insert content eksperimental", - "description": "Aktifkan tool insert content eksperimental, memungkinkan Roo menyisipkan konten pada nomor baris spesifik tanpa perlu membuat diff." + "description": "Aktifkan tool insert content eksperimental, memungkinkan Zoo menyisipkan konten pada nomor baris spesifik tanpa perlu membuat diff." }, "CONCURRENT_FILE_READS": { "name": "Aktifkan pembacaan file bersamaan", - "description": "Ketika diaktifkan, Roo dapat membaca beberapa file dalam satu permintaan. Ketika dinonaktifkan, Roo harus membaca file satu per satu. Menonaktifkan ini dapat membantu saat bekerja dengan model yang kurang mampu atau ketika kamu ingin kontrol lebih terhadap akses file." + "description": "Ketika diaktifkan, Zoo dapat membaca beberapa file dalam satu permintaan. Ketika dinonaktifkan, Zoo harus membaca file satu per satu. Menonaktifkan ini dapat membantu saat bekerja dengan model yang kurang mampu atau ketika kamu ingin kontrol lebih terhadap akses file." }, "MULTI_SEARCH_AND_REPLACE": { "name": "Gunakan tool multi block diff eksperimental", - "description": "Ketika diaktifkan, Roo akan menggunakan tool multi block diff. Ini akan mencoba memperbarui beberapa blok kode dalam file dalam satu permintaan." + "description": "Ketika diaktifkan, Zoo akan menggunakan tool multi block diff. Ini akan mencoba memperbarui beberapa blok kode dalam file dalam satu permintaan." }, "MARKETPLACE": { "name": "Aktifkan Marketplace", @@ -786,7 +782,7 @@ }, "PREVENT_FOCUS_DISRUPTION": { "name": "Pengeditan Latar Belakang", - "description": "Ketika diaktifkan, mencegah gangguan fokus editor. Pengeditan file terjadi di latar belakang tanpa membuka tampilan diff atau mencuri fokus. Anda dapat terus bekerja tanpa gangguan saat Roo melakukan perubahan. File mungkin dibuka tanpa fokus untuk menangkap diagnostik atau tetap tertutup sepenuhnya." + "description": "Ketika diaktifkan, mencegah gangguan fokus editor. Pengeditan file terjadi di latar belakang tanpa membuka tampilan diff atau mencuri fokus. Anda dapat terus bekerja tanpa gangguan saat Zoo melakukan perubahan. File mungkin dibuka tanpa fokus untuk menangkap diagnostik atau tetap tertutup sepenuhnya." }, "ASSISTANT_MESSAGE_PARSER": { "name": "Gunakan parser pesan baru", @@ -798,7 +794,7 @@ }, "IMAGE_GENERATION": { "name": "Aktifkan pembuatan gambar AI", - "description": "Ketika diaktifkan, Roo dapat menghasilkan gambar dari prompt teks menggunakan model pembuatan gambar.", + "description": "Ketika diaktifkan, Zoo dapat menghasilkan gambar dari prompt teks menggunakan model pembuatan gambar.", "providerLabel": "Penyedia", "providerDescription": "Pilih penyedia untuk menghasilkan gambar.", "openRouterApiKeyLabel": "Kunci API OpenRouter", @@ -811,11 +807,11 @@ }, "RUN_SLASH_COMMAND": { "name": "Aktifkan perintah slash yang dimulai model", - "description": "Ketika diaktifkan, Roo dapat menjalankan perintah slash Anda untuk mengeksekusi alur kerja." + "description": "Ketika diaktifkan, Zoo dapat menjalankan perintah slash Anda untuk mengeksekusi alur kerja." }, "CUSTOM_TOOLS": { "name": "Aktifkan tool kustom", - "description": "Ketika diaktifkan, Roo dapat memuat dan menggunakan tool TypeScript/JavaScript kustom dari direktori .roo/tools proyek Anda atau ~/.roo/tools untuk tool global. Catatan: tool ini akan disetujui otomatis.", + "description": "Ketika diaktifkan, Zoo dapat memuat dan menggunakan tool TypeScript/JavaScript kustom dari direktori .roo/tools proyek Anda atau ~/.roo/tools untuk tool global. Catatan: tool ini akan disetujui otomatis.", "toolsHeader": "Tool Kustom yang Tersedia", "noTools": "Tidak ada tool kustom yang dimuat. Tambahkan file .ts atau .js ke direktori .roo/tools proyek Anda atau ~/.roo/tools untuk tool global.", "refreshButton": "Refresh", @@ -827,7 +823,7 @@ }, "promptCaching": { "label": "Nonaktifkan prompt caching", - "description": "Ketika dicentang, Roo tidak akan menggunakan prompt caching untuk model ini." + "description": "Ketika dicentang, Zoo tidak akan menggunakan prompt caching untuk model ini." }, "temperature": { "useCustom": "Gunakan temperature kustom", @@ -857,7 +853,7 @@ } }, "modelPicker": { - "automaticFetch": "Ekstensi secara otomatis mengambil daftar model terbaru yang tersedia di {{serviceName}}. Jika kamu tidak yakin model mana yang harus dipilih, Roo Code bekerja terbaik dengan {{defaultModelId}}. Kamu juga dapat mencoba mencari \"free\" untuk opsi tanpa biaya yang saat ini tersedia.", + "automaticFetch": "Ekstensi secara otomatis mengambil daftar model terbaru yang tersedia di {{serviceName}}. Jika kamu tidak yakin model mana yang harus dipilih, Zoo Code bekerja terbaik dengan {{defaultModelId}}. Kamu juga dapat mencoba mencari \"free\" untuk opsi tanpa biaya yang saat ini tersedia.", "label": "Model", "searchPlaceholder": "Cari", "noMatchFound": "Tidak ada yang cocok ditemukan", @@ -867,7 +863,7 @@ "footer": { "telemetry": { "label": "Izinkan pelaporan error dan penggunaan anonim", - "description": "Bantu tingkatkan Roo Code dengan mengirimkan data penggunaan anonim dan laporan error. Telemetri ini tidak mengumpulkan kode, prompt, atau informasi pribadi. Lihat kebijakan privasi kami untuk detail lebih lanjut. Anda dapat menonaktifkannya kapan saja." + "description": "Bantu tingkatkan Zoo Code dengan mengirimkan data penggunaan anonim dan laporan error. Telemetri ini tidak mengumpulkan kode, prompt, atau informasi pribadi. Lihat kebijakan privasi kami untuk detail lebih lanjut. Anda dapat menonaktifkannya kapan saja." }, "settings": { "import": "Impor", diff --git a/webview-ui/src/i18n/locales/id/welcome.json b/webview-ui/src/i18n/locales/id/welcome.json index baaf07b1c71..905c3ebb6e9 100644 --- a/webview-ui/src/i18n/locales/id/welcome.json +++ b/webview-ui/src/i18n/locales/id/welcome.json @@ -1,52 +1,18 @@ { - "routers": { - "requesty": { - "description": "Router LLM yang dioptimalkan", - "incentive": "Kredit gratis $1" - }, - "openrouter": { - "description": "Antarmuka terpadu untuk LLM" - }, - "roo": { - "description": "Model gratis terbaik untuk memulai", - "incentive": "Coba Roo gratis" - } - }, "landing": { "greeting": "Selamat datang di Roo Code!", "introduction": "Dengan berbagai Mode bawaan dan dapat diperluas, Roo Code memungkinkan Anda merencanakan, merancang, coding, debug, dan meningkatkan produktivitas seperti yang belum pernah terjadi sebelumnya.", - "accountMention": "Untuk memulai, buat akun Roo Code Cloud Anda. Dapatkan model yang kuat, kontrol web, analitik, dukungan, dan banyak lagi.", - "getStarted": "Buat Akun Roo", - "noAccount": "atau gunakan tanpa akun" + "getStarted": "Pilih penyedia Anda" }, "providerSignup": { "heading": "Pilih penyedia Anda", "chooseProvider": "Roo memerlukan penyedia LLM untuk bekerja. Pilih satu untuk memulai, Anda dapat menambahkan lebih banyak nanti.", - "rooCloudProvider": "Penyedia Roo Code Cloud", - "rooCloudDescription": "Cara termudah untuk memulai adalah dengan Penyedia Roo Code Cloud: campuran model gratis dan berbayar yang dikurasi dengan hati-hati dengan biaya rendah.", - "learnMore": "Pelajari lebih lanjut", - "useAnotherProvider": "Penyedia Pihak Ketiga", - "useAnotherProviderDescription": "Masukkan kunci API dan mulai.", - "noApiKeys": "Tidak ingin berurusan dengan kunci API dan akun terpisah?", - "backToRoo": "Pilih Penyedia Roo Code Cloud.", "goBack": "Kembali", "finish": "Selesai" }, - "waitingForCloud": { - "heading": "Masuk ke Roo Code Cloud...", - "description": "Kami akan membawa Anda ke browser Anda untuk mendaftar Roo Code Cloud. Kemudian kami akan membawa Anda kembali ke sini untuk menyelesaikannya.", - "noPrompt": "Jika Anda tidak diminta untuk membuka URL, klik di sini.", - "havingTrouble": "Jika Anda telah menyelesaikan pendaftaran tetapi mengalami masalah, klik di sini.", - "pasteUrl": "Tempel URL callback dari browser Anda:", - "docsLink": "Tidak bekerja? Periksa dokumentasi.", - "invalidURL": "Itu tidak terlihat seperti URL callback yang valid. Harap salin apa yang ditampilkan Roo Code Cloud di browser Anda.", - "goBack": "Kembali" - }, - "startRouter": "Kami merekomendasikan menggunakan router LLM:", - "startCustom": "Atau Anda dapat membawa kunci API Anda sendiri:", "telemetry": { - "helpImprove": "Bantu Tingkatkan Roo Code", - "helpImproveMessage": "Roo Code mengumpulkan data kesalahan dan penggunaan untuk membantu kami memperbaiki bug dan meningkatkan ekstensi. Telemetri ini tidak mengumpulkan kode, prompt, atau informasi pribadi. Anda dapat menonaktifkannya di pengaturan." + "helpImprove": "Bantu Tingkatkan Zoo Code", + "helpImproveMessage": "Zoo Code mengumpulkan data kesalahan dan penggunaan untuk membantu kami memperbaiki bug dan meningkatkan ekstensi. Telemetri ini tidak mengumpulkan kode, prompt, atau informasi pribadi. Anda dapat menonaktifkannya di pengaturan." }, "importSettings": "Impor Pengaturan" } diff --git a/webview-ui/src/i18n/locales/id/worktrees.json b/webview-ui/src/i18n/locales/id/worktrees.json index f3dc9449160..ef0dcec01e7 100644 --- a/webview-ui/src/i18n/locales/id/worktrees.json +++ b/webview-ui/src/i18n/locales/id/worktrees.json @@ -1,28 +1,23 @@ { "title": "Worktrees", "done": "Selesai", - "description": "Git worktrees memungkinkan kamu bekerja di beberapa branch sekaligus dalam direktori terpisah. Setiap worktree mendapatkan jendela VS Code sendiri dengan Roo Code.", - + "description": "Git worktrees memungkinkan kamu bekerja di beberapa branch sekaligus dalam direktori terpisah. Setiap worktree mendapatkan jendela VS Code sendiri dengan Zoo Code.", "notGitRepo": "Workspace ini bukan repository Git. Worktrees memerlukan repository Git untuk berfungsi.", "multiRootNotSupported": "Worktrees tidak didukung di workspace multi-root. Buka satu folder untuk menggunakan worktrees.", "subfolderNotSupported": "Workspace ini adalah subfolder dari repository Git. Buka root repository untuk menggunakan worktrees.", "gitRoot": "Root Git", - "includeFileExists": "File .worktreeinclude ditemukan — file akan disalin ke worktrees baru", "noIncludeFile": "File .worktreeinclude tidak ditemukan", "createFromGitignore": "Buat dari .gitignore", - "primary": "Utama", "current": "Saat ini", "locked": "Terkunci", "detachedHead": "Detached HEAD", "noBranch": "Tidak ada branch", - "switchInThisWindow": "Beralih ke worktree", "openInNewWindow": "Buka di jendela baru", "delete": "Hapus", "newWorktree": "Worktree Baru", - "createWorktree": "Buat Worktree", "branchName": "Nama branch", "createNewBranch": "Buat branch baru", @@ -44,7 +39,6 @@ "copyingFiles": "Menyalin file...", "copyingProgress": "{{item}} — {{copied}} disalin", "cancel": "Batal", - "deleteWorktree": "Hapus Worktree", "deleteWarning": "Tindakan ini tidak dapat dibatalkan. Yang berikut akan dihapus:", "deleteWarningBranch": "Branch dan semua perubahan yang belum di-commit", @@ -53,11 +47,8 @@ "forceDelete": "Paksa hapus", "worktreeIsLocked": "worktree terkunci", "deleting": "Menghapus...", - "close": "Tutup", - "showInHomeScreen": "Tampilkan worktrees di layar beranda", - "selector": { "worktree": "Worktree", "title": "Worktrees", diff --git a/webview-ui/src/i18n/locales/it/chat.json b/webview-ui/src/i18n/locales/it/chat.json index 6bd860c0e1d..be832e15117 100644 --- a/webview-ui/src/i18n/locales/it/chat.json +++ b/webview-ui/src/i18n/locales/it/chat.json @@ -1,5 +1,5 @@ { - "greeting": "Benvenuto a Roo Code", + "greeting": "Benvenuto in Zoo Code!", "task": { "title": "Attività", "expand": "Espandi attività", @@ -15,16 +15,6 @@ "export": "Esporta cronologia attività", "delete": "Elimina attività (Shift + Clic per saltare la conferma)", "condenseContext": "Condensa contesto in modo intelligente", - "share": "Condividi attività", - "shareWithOrganization": "Condividi con l'organizzazione", - "shareWithOrganizationDescription": "Solo i membri della tua organizzazione possono accedere", - "sharePublicly": "Condividi pubblicamente", - "sharePubliclyDescription": "Chiunque con il link può accedere", - "connectToCloud": "Connetti al Cloud", - "connectToCloudDescription": "Accedi a Roo Code Cloud per condividere attività", - "sharingDisabledByOrganization": "Condivisione disabilitata dall'organizzazione", - "shareSuccessOrganization": "Link organizzazione copiato negli appunti", - "shareSuccessPublic": "Link pubblico copiato negli appunti", "openApiHistory": "Apri cronologia API", "openUiHistory": "Apri cronologia UI", "backToParentTask": "Attività principale" @@ -98,7 +88,7 @@ "enqueueMessage": "Aggiungi il messaggio alla coda (sarà inviato dopo che l'attività corrente sarà terminata)", "scrollToBottom": "Scorri fino alla fine della chat", "scrollToLatestCheckpoint": "Scorri al checkpoint precedente", - "about": "Roo Code è un intero team di sviluppo AI nel tuo editor.", + "about": "Zoo Code è un intero team di sviluppo AI nel tuo editor.", "docs": "Consulta la nostra documentazione per saperne di più.", "onboarding": "La tua lista di attività in questo spazio di lavoro è vuota.", "rooTips": { @@ -130,7 +120,7 @@ "title": "Modalità", "marketplace": "Marketplace delle Modalità", "settings": "Impostazioni Modalità", - "description": "Personalità specializzate che adattano il comportamento di Roo.", + "description": "Personalità specializzate che adattano il comportamento di Zoo.", "searchPlaceholder": "Cerca modalità...", "noResults": "Nessun risultato trovato" }, @@ -147,7 +137,7 @@ "diffError": { "title": "Modifica non riuscita" }, - "troubleMessage": "Roo sta avendo problemi...", + "troubleMessage": "Zoo sta avendo problemi...", "apiRequest": { "title": "Richiesta API", "failed": "Richiesta API fallita", @@ -165,7 +155,7 @@ "500": "Errore del server del provider. C'è qualcosa di sbagliato dal lato del provider, non c'è nulla di sbagliato nella tua richiesta.", "docs": "Documentazione", "goToSettings": "Impostazioni", - "unknown": "Errore API sconosciuto. Contatta il supporto di Roo Code.", + "unknown": "Errore API sconosciuto. Contatta il supporto di Zoo Code.", "connection": "Errore di connessione. Assicurati di avere una connessione Internet funzionante.", "claudeCodeNotAuthenticated": "Devi accedere per utilizzare Claude Code. Vai su Impostazioni e clicca su \"Accedi a Claude Code\" per autenticarti." } @@ -190,40 +180,40 @@ "current": "Corrente" }, "fileOperations": { - "wantsToRead": "Roo vuole leggere questo file", - "wantsToReadOutsideWorkspace": "Roo vuole leggere questo file al di fuori dell'area di lavoro", - "didRead": "Roo ha letto questo file", - "wantsToEdit": "Roo vuole modificare questo file", - "wantsToEditOutsideWorkspace": "Roo vuole modificare questo file al di fuori dell'area di lavoro", - "wantsToEditProtected": "Roo vuole modificare un file di configurazione protetto", - "wantsToCreate": "Roo vuole creare un nuovo file", + "wantsToRead": "Zoo vuole leggere questo file", + "wantsToReadOutsideWorkspace": "Zoo vuole leggere questo file al di fuori dell'area di lavoro", + "didRead": "Zoo ha letto questo file", + "wantsToEdit": "Zoo vuole modificare questo file", + "wantsToEditOutsideWorkspace": "Zoo vuole modificare questo file al di fuori dell'area di lavoro", + "wantsToEditProtected": "Zoo vuole modificare un file di configurazione protetto", + "wantsToCreate": "Zoo vuole creare un nuovo file", "wantsToSearchReplace": "Roo vuole eseguire ricerca e sostituzione in questo file", "didSearchReplace": "Roo ha eseguito ricerca e sostituzione in questo file", - "wantsToInsert": "Roo vuole inserire contenuto in questo file", - "wantsToInsertWithLineNumber": "Roo vuole inserire contenuto in questo file alla riga {{lineNumber}}", - "wantsToInsertAtEnd": "Roo vuole aggiungere contenuto alla fine di questo file", - "wantsToReadAndXMore": "Roo vuole leggere questo file e altri {{count}}", - "wantsToReadMultiple": "Roo vuole leggere più file", - "wantsToApplyBatchChanges": "Roo vuole applicare modifiche a più file", - "wantsToGenerateImage": "Roo vuole generare un'immagine", - "wantsToGenerateImageOutsideWorkspace": "Roo vuole generare un'immagine fuori dall'area di lavoro", - "wantsToGenerateImageProtected": "Roo vuole generare un'immagine in una posizione protetta", - "didGenerateImage": "Roo ha generato un'immagine" + "wantsToInsert": "Zoo vuole inserire contenuto in questo file", + "wantsToInsertWithLineNumber": "Zoo vuole inserire contenuto in questo file alla riga {{lineNumber}}", + "wantsToInsertAtEnd": "Zoo vuole aggiungere contenuto alla fine di questo file", + "wantsToReadAndXMore": "Zoo vuole leggere questo file e altri {{count}}", + "wantsToReadMultiple": "Zoo vuole leggere più file", + "wantsToApplyBatchChanges": "Zoo vuole applicare modifiche a più file", + "wantsToGenerateImage": "Zoo vuole generare un'immagine", + "wantsToGenerateImageOutsideWorkspace": "Zoo vuole generare un'immagine fuori dall'area di lavoro", + "wantsToGenerateImageProtected": "Zoo vuole generare un'immagine in una posizione protetta", + "didGenerateImage": "Zoo ha generato un'immagine" }, "directoryOperations": { - "wantsToViewTopLevel": "Roo vuole visualizzare i file di primo livello in questa directory", - "didViewTopLevel": "Roo ha visualizzato i file di primo livello in questa directory", - "wantsToViewRecursive": "Roo vuole visualizzare ricorsivamente tutti i file in questa directory", - "didViewRecursive": "Roo ha visualizzato ricorsivamente tutti i file in questa directory", - "wantsToSearch": "Roo vuole cercare in questa directory {{regex}}", - "didSearch": "Roo ha cercato in questa directory {{regex}}", - "wantsToSearchOutsideWorkspace": "Roo vuole cercare in questa directory (fuori dall'area di lavoro) {{regex}}", - "didSearchOutsideWorkspace": "Roo ha cercato in questa directory (fuori dall'area di lavoro) {{regex}}", - "wantsToViewTopLevelOutsideWorkspace": "Roo vuole visualizzare i file di primo livello in questa directory (fuori dall'area di lavoro)", - "didViewTopLevelOutsideWorkspace": "Roo ha visualizzato i file di primo livello in questa directory (fuori dall'area di lavoro)", - "wantsToViewRecursiveOutsideWorkspace": "Roo vuole visualizzare ricorsivamente tutti i file in questa directory (fuori dall'area di lavoro)", - "didViewRecursiveOutsideWorkspace": "Roo ha visualizzato ricorsivamente tutti i file in questa directory (fuori dall'area di lavoro)", - "wantsToViewMultipleDirectories": "Roo vuole visualizzare più directory" + "wantsToViewTopLevel": "Zoo vuole visualizzare i file di primo livello in questa directory", + "didViewTopLevel": "Zoo ha visualizzato i file di primo livello in questa directory", + "wantsToViewRecursive": "Zoo vuole visualizzare ricorsivamente tutti i file in questa directory", + "didViewRecursive": "Zoo ha visualizzato ricorsivamente tutti i file in questa directory", + "wantsToSearch": "Zoo vuole cercare in questa directory {{regex}}", + "didSearch": "Zoo ha cercato in questa directory {{regex}}", + "wantsToSearchOutsideWorkspace": "Zoo vuole cercare in questa directory (fuori dall'area di lavoro) {{regex}}", + "didSearchOutsideWorkspace": "Zoo ha cercato in questa directory (fuori dall'area di lavoro) {{regex}}", + "wantsToViewTopLevelOutsideWorkspace": "Zoo vuole visualizzare i file di primo livello in questa directory (fuori dall'area di lavoro)", + "didViewTopLevelOutsideWorkspace": "Zoo ha visualizzato i file di primo livello in questa directory (fuori dall'area di lavoro)", + "wantsToViewRecursiveOutsideWorkspace": "Zoo vuole visualizzare ricorsivamente tutti i file in questa directory (fuori dall'area di lavoro)", + "didViewRecursiveOutsideWorkspace": "Zoo ha visualizzato ricorsivamente tutti i file in questa directory (fuori dall'area di lavoro)", + "wantsToViewMultipleDirectories": "Zoo vuole visualizzare più directory" }, "commandOutput": "Output del Comando", "commandExecution": { @@ -245,24 +235,24 @@ "response": "Risposta", "arguments": "Argomenti", "text": { - "rooSaid": "Roo ha detto" + "rooSaid": "Zoo ha detto" }, "feedback": { "youSaid": "Hai detto" }, "mcp": { - "wantsToUseTool": "Roo vuole utilizzare uno strumento sul server MCP {{serverName}}", - "wantsToAccessResource": "Roo vuole accedere a una risorsa sul server MCP {{serverName}}" + "wantsToUseTool": "Zoo vuole utilizzare uno strumento sul server MCP {{serverName}}", + "wantsToAccessResource": "Zoo vuole accedere a una risorsa sul server MCP {{serverName}}" }, "modes": { - "wantsToSwitch": "Roo vuole passare alla modalità {{mode}}", - "wantsToSwitchWithReason": "Roo vuole passare alla modalità {{mode}} perché: {{reason}}", - "didSwitch": "Roo è passato alla modalità {{mode}}", - "didSwitchWithReason": "Roo è passato alla modalità {{mode}} perché: {{reason}}" + "wantsToSwitch": "Zoo vuole passare alla modalità {{mode}}", + "wantsToSwitchWithReason": "Zoo vuole passare alla modalità {{mode}} perché: {{reason}}", + "didSwitch": "Zoo è passato alla modalità {{mode}}", + "didSwitchWithReason": "Zoo è passato alla modalità {{mode}} perché: {{reason}}" }, "subtasks": { - "wantsToCreate": "Roo vuole creare una nuova sottoattività in modalità {{mode}}", - "wantsToFinish": "Roo vuole completare questa sottoattività", + "wantsToCreate": "Zoo vuole creare una nuova sottoattività in modalità {{mode}}", + "wantsToFinish": "Zoo vuole completare questa sottoattività", "newTaskContent": "Istruzioni sottoattività", "completionContent": "Sottoattività completata", "resultContent": "Risultati sottoattività", @@ -271,7 +261,7 @@ "goToSubtask": "Visualizza attività" }, "questions": { - "hasQuestion": "Roo ha una domanda" + "hasQuestion": "Zoo ha una domanda" }, "taskCompleted": "Attività completata", "modelResponseIncomplete": "Risposta del modello incompleta", @@ -287,7 +277,7 @@ "copyToClipboard": "Copia negli appunti", "copied": "Copiato!", "diagnostics": "Ottieni informazioni errore dettagliate", - "proxyProvider": "Sembra che tu stia utilizzando un provider basato su proxy. Assicurati di controllarne i log e di verificare che non stia riscrivendo le richieste di Roo." + "proxyProvider": "Sembra che tu stia utilizzando un provider basato su proxy. Assicurati di controllarne i log e di verificare che non stia riscrivendo le richieste di Zoo." }, "powershell": { "issues": "Sembra che tu stia avendo problemi con Windows PowerShell, consulta questa" @@ -330,31 +320,24 @@ } }, "skill": { - "wantsToLoad": "Roo vuole caricare una competenza", - "didLoad": "Roo ha caricato una competenza" + "wantsToLoad": "Zoo vuole caricare una competenza", + "didLoad": "Zoo ha caricato una competenza" }, "followUpSuggest": { "copyToInput": "Copia nell'input (o Shift + clic)", "timerPrefix": "Approvazione automatica abilitata. Selezione tra {{seconds}}s…" }, "announcement": { - "title": "Rilasciato Roo Code {{version}}", - "support": "Sostieni Roo Code lasciandoci una stella su GitHub.", - "stealthModel": { - "feature": "Modello stealth GRATUITO per tempo limitato - Code Supernova: Ora potenziato con una finestra di contesto da 1M token! Un modello di codificazione agentiva versatile che supporta input di immagini, accessibile tramite Roo Code Cloud.", - "note": "(Nota: i prompt e le completazioni vengono registrati dal creatore del modello e utilizzati per migliorarlo)", - "connectButton": "Connetti a Roo Code Cloud", - "selectModel": "Seleziona roo/code-supernova dal provider Roo Code Cloud nelle Impostazioni per iniziare.", - "goToSettingsButton": "Vai alle Impostazioni" - }, + "title": "Rilasciato Zoo Code {{version}}", + "support": "Sostieni Zoo Code lasciandoci una stella su GitHub.", "handoff": { - "heading": "Il plugin Roo Code non sta per sparire.", - "description": "Potresti aver visto l'annuncio recente: Roo Code ha raggiunto 3 milioni di installazioni e il team originale si sta concentrando completamente su Roomote. Sappiamo che questa notizia è stata dura per molti di voi. Questo plugin significa tanto per noi e per te, e ti ascoltiamo. La buona notizia: un team della community si è fatto avanti per portare avanti Roo Code, e stiamo lavorando con loro a un passaggio di consegne ufficiale, così il plugin su cui conti continuerà a essere mantenuto e migliorato.", - "readMore": "Leggi l'annuncio originale di Matt Rubens" + "heading": "Zoo Code è tornato, ora come plugin mantenuto dalla community chiamato Zoo Code!!", + "description": "Se non l'hai seguito, il team di Zoo Code ha annunciato di recente che interromperà lo sviluppo di Zoo Code e archivierà il lavoro svolto. Ma niente paura: la community si è fatta avanti per continuare l'eredità di Zoo Code con un nuovo nome e una nuova casa! Non siamo più solo un singolo \"Roo\", ma una community, uno \"Zoo\" se vuoi. Zoo Code è un plugin mantenuto dalla community che riprende da dove Zoo Code si era fermato, e ci impegniamo a mantenere vivo lo spirito di Roo introducendo anche nuove funzionalità e miglioramenti. Vogliamo ringraziare di cuore tutto il team di Zoo Code per il lavoro incredibile e per aver creato uno strumento così straordinario per gli sviluppatori. Siamo entusiasti di continuare a costruire sulla loro base e di vedere dove la community porterà Zoo Code in futuro!", + "readMore": "Vai alla nuova home page di Zoo Code e leggi l'annuncio completo" }, "release": { "heading": "Novità:", - "gpt55": "GPT-5.5 via OpenAI Codex: Aggiunto il supporto a GPT-5.5 nel provider OpenAI Codex così puoi usare il modello più recente direttamente da Roo Code.", + "gpt55": "GPT-5.5 via OpenAI Codex: Aggiunto il supporto a GPT-5.5 nel provider OpenAI Codex così puoi usare il modello più recente direttamente da Zoo Code.", "claudeOpus47": "Claude Opus 4.7 su Vertex AI: Aggiunto Claude Opus 4.7 al provider Vertex AI, il nuovo modello di ragionamento di punta di Anthropic.", "checkpointNav": "Navigazione Checkpoint Precedenti: Aggiunti controlli nella chat per tornare indietro ai checkpoint precedenti, con pieno supporto i18n." }, @@ -380,24 +363,24 @@ "profileViolationWarning": "Il profilo corrente non è compatibile con le impostazioni della tua organizzazione", "shellIntegration": { "title": "Avviso di esecuzione comando", - "description": "Il tuo comando viene eseguito senza l'integrazione shell del terminale VSCode. Per sopprimere questo avviso puoi disattivare l'integrazione shell nella sezione Terminal delle impostazioni di Roo Code o risolvere i problemi di integrazione del terminale VSCode utilizzando il link qui sotto.", + "description": "Il tuo comando viene eseguito senza l'integrazione shell del terminale VSCode. Per sopprimere questo avviso puoi disattivare l'integrazione shell nella sezione Terminal delle impostazioni di Zoo Code o risolvere i problemi di integrazione del terminale VSCode utilizzando il link qui sotto.", "troubleshooting": "Clicca qui per la documentazione sull'integrazione shell." }, "ask": { "autoApprovedRequestLimitReached": { "title": "Limite di Richieste Auto-approvate Raggiunto", - "description": "Roo ha raggiunto il limite auto-approvato di {{count}} richiesta/e API. Vuoi reimpostare il contatore e procedere con l'attività?", + "description": "Zoo ha raggiunto il limite auto-approvato di {{count}} richiesta/e API. Vuoi reimpostare il contatore e procedere con l'attività?", "button": "Reimposta e Continua" }, "autoApprovedCostLimitReached": { "title": "Limite di costo auto-approvato raggiunto", "button": "Reimposta e Continua", - "description": "Roo ha raggiunto il limite di costo approvato automaticamente di ${{count}}. Vuoi reimpostare il costo e procedere con l'attività?" + "description": "Zoo ha raggiunto il limite di costo approvato automaticamente di ${{count}}. Vuoi reimpostare il costo e procedere con l'attività?" } }, "codebaseSearch": { - "wantsToSearch": "Roo vuole cercare nella base di codice {{query}}", - "wantsToSearchWithPath": "Roo vuole cercare nella base di codice {{query}} in {{path}}", + "wantsToSearch": "Zoo vuole cercare nella base di codice {{query}}", + "wantsToSearchWithPath": "Zoo vuole cercare nella base di codice {{query}} in {{path}}", "didSearch_one": "Trovato 1 risultato", "didSearch_other": "Trovati {{count}} risultati", "resultTooltip": "Punteggio di somiglianza: {{score}} (clicca per aprire il file)" @@ -438,7 +421,7 @@ "ariaLabel": "Versione {{version}} - Clicca per visualizzare le note di rilascio" }, "rooCloudCTA": { - "title": "Roo Code Cloud si sta evolvendo!", + "title": "Zoo Code Cloud si sta evolvendo!", "description": "Esegui agenti remoti nel cloud, accedi alle tue attività da qualsiasi luogo, collabora con altri e molto altro.", "joinWaitlist": "Registrati per ricevere gli ultimi aggiornamenti." }, @@ -479,8 +462,8 @@ "clickToEdit": "Clicca per modificare il messaggio" }, "slashCommand": { - "wantsToRun": "Roo vuole eseguire un comando slash", - "didRun": "Roo ha eseguito un comando slash" + "wantsToRun": "Zoo vuole eseguire un comando slash", + "didRun": "Zoo ha eseguito un comando slash" }, "todo": { "partial": "{{completed}} di {{total}} cose da fare completate", @@ -499,11 +482,11 @@ "openMcpSettings": "Apri impostazioni MCP" }, "readCommandOutput": { - "title": "Roo read command output" + "title": "Zoo read command output" }, "retiredProvider": { "title": "Provider non più supportato", - "message": "Ci dispiace, questo provider non è più supportato. Abbiamo visto che pochissimi utenti di Roo lo utilizzavano effettivamente e dobbiamo ridurre la portata del nostro codice per continuare a procedere velocemente e servire bene la nostra community. È stata una decisione davvero difficile, ma ci permette di concentrarci su ciò che conta di più per te. Lo sappiamo, è una seccatura.", + "message": "Questo provider non è più disponibile. Seleziona un provider supportato per continuare.", "openSettings": "Apri impostazioni" } } diff --git a/webview-ui/src/i18n/locales/it/cloud.json b/webview-ui/src/i18n/locales/it/cloud.json deleted file mode 100644 index 2d242504ad9..00000000000 --- a/webview-ui/src/i18n/locales/it/cloud.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "title": "Cloud", - "profilePicture": "Immagine del profilo", - "logOut": "Disconnetti", - "testApiAuthentication": "Verifica autenticazione API", - "signIn": "Connetti a Roo Code Cloud", - "connect": "Inizia", - "cloudBenefitsTitle": "Prova Roo Code Cloud", - "cloudBenefitProvider": "Accedi a modelli gratuiti e a pagamento che funzionano perfettamente con Roo", - "cloudBenefitCloudAgents": "Assegna attività ad agenti Cloud autonomi", - "cloudBenefitTriggers": "Ottieni revisioni del codice su GitHub, avvia attività da Slack e altro", - "cloudBenefitWalkaway": "Segui e controlla le attività da qualsiasi luogo (incluso il tuo telefono)", - "cloudBenefitHistory": "Accedi alla cronologia delle tue attività da qualsiasi luogo e condividile con altri", - "cloudBenefitMetrics": "Ottieni una visione olistica del tuo consumo di token", - "visitCloudWebsite": "Visita Roo Code Cloud", - "taskSync": "Sincronizzazione attività", - "taskSyncDescription": "Sincronizza le tue attività per visualizzarle e condividerle su Roo Code Cloud", - "taskSyncManagedByOrganization": "La sincronizzazione delle attività è gestita dalla tua organizzazione", - "usageMetricsAlwaysReported": "Le informazioni sull'utilizzo del modello vengono sempre segnalate quando si è connessi", - "authWaiting": "In attesa del completamento dell'autenticazione...", - "havingTrouble": "Hai problemi?", - "pasteCallbackUrl": "Copia l'URL di redirect dal tuo browser e incollalo qui:", - "startOver": "Ricomincia", - "personalAccount": "Account Personale", - "switchAccount": "Cambia Account Roo Code Cloud", - "createTeamAccount": "Crea Account del Team", - "cloudUrlPillLabel": "URL di Roo Code Cloud", - "upsell": { - "autoApprovePowerUser": "Vuoi dare un po' di indipendenza a Roo? Controllalo da qualsiasi luogo con Roo Code Cloud. Scopri di più.", - "longRunningTask": "Potrebbe volerci un po' di tempo. Continua da qualsiasi luogo con il Cloud.", - "taskList": "Ti piace Roo? Dai un'occhiata a Roo Code Cloud: segui e controlla le tue attività da qualsiasi luogo, esegui agenti Cloud autonomi, ottieni statistiche di utilizzo e altro ancora. Scopri di più." - } -} diff --git a/webview-ui/src/i18n/locales/it/marketplace.json b/webview-ui/src/i18n/locales/it/marketplace.json index 3c132848664..f375d09e540 100644 --- a/webview-ui/src/i18n/locales/it/marketplace.json +++ b/webview-ui/src/i18n/locales/it/marketplace.json @@ -1,5 +1,5 @@ { - "title": "Roo Marketplace", + "title": "Zoo Marketplace", "tabs": { "installed": "Installati", "settings": "Impostazioni", diff --git a/webview-ui/src/i18n/locales/it/mcp.json b/webview-ui/src/i18n/locales/it/mcp.json index 3b6dce9cb15..e5f4aff9eb2 100644 --- a/webview-ui/src/i18n/locales/it/mcp.json +++ b/webview-ui/src/i18n/locales/it/mcp.json @@ -2,16 +2,16 @@ "title": "Server MCP", "done": "Fatto", "marketplace": "Marketplace MCP", - "description": "Il <0>Model Context Protocol permette la comunicazione con server MCP in esecuzione locale che forniscono strumenti e risorse aggiuntive per estendere le capacità di Roo. Puoi utilizzare <1>server creati dalla comunità o chiedere a Roo di creare nuovi strumenti specifici per il tuo flusso di lavoro (ad esempio, \"aggiungi uno strumento che ottiene la documentazione npm più recente\").", + "description": "Il <0>Model Context Protocol permette la comunicazione con server MCP in esecuzione locale che forniscono strumenti e risorse aggiuntive per estendere le capacità di Zoo. Puoi utilizzare <1>server creati dalla comunità o chiedere a Zoo di creare nuovi strumenti specifici per il tuo flusso di lavoro (ad esempio, \"aggiungi uno strumento che ottiene la documentazione npm più recente\").", "instructions": "Istruzioni", "enableToggle": { "title": "Abilita server MCP", - "description": "Attiva questa opzione per permettere a Roo di usare strumenti dai server MCP collegati. Questo dà a Roo più capacità. Se non vuoi usare questi strumenti extra, disattiva per ridurre i costi dei token API." + "description": "Attiva questa opzione per permettere a Zoo di usare strumenti dai server MCP collegati. Questo dà a Zoo più capacità. Se non vuoi usare questi strumenti extra, disattiva per ridurre i costi dei token API." }, "enableServerCreation": { "title": "Abilita creazione server MCP", - "description": "Abilita questa opzione per farti aiutare da Roo a creare <1>nuovi server MCP personalizzati. <0>Scopri di più sulla creazione di server", - "hint": "Suggerimento: Per ridurre i costi dei token API, disattiva questa impostazione quando non chiedi a Roo di creare un nuovo server MCP." + "description": "Abilita questa opzione per farti aiutare da Zoo a creare <1>nuovi server MCP personalizzati. <0>Scopri di più sulla creazione di server", + "hint": "Suggerimento: Per ridurre i costi dei token API, disattiva questa impostazione quando non chiedi a Zoo di creare un nuovo server MCP." }, "editGlobalMCP": "Modifica MCP globale", "editProjectMCP": "Modifica MCP del progetto", diff --git a/webview-ui/src/i18n/locales/it/prompts.json b/webview-ui/src/i18n/locales/it/prompts.json index 538124e5842..fd5c9518e8d 100644 --- a/webview-ui/src/i18n/locales/it/prompts.json +++ b/webview-ui/src/i18n/locales/it/prompts.json @@ -9,7 +9,7 @@ "editModesConfig": "Modifica configurazione modalità", "editGlobalModes": "Modifica modalità globali", "editProjectModes": "Modifica modalità di progetto (.roomodes)", - "createModeHelpText": "Le modalità sono personas specializzate che personalizzano il comportamento di Roo. <0>Scopri di più sull'uso delle modalità o <1>sulla personalizzazione delle modalità.", + "createModeHelpText": "Le modalità sono personas specializzate che personalizzano il comportamento di Zoo. <0>Scopri di più sull'uso delle modalità o <1>sulla personalizzazione delle modalità.", "selectMode": "Cerca modalità" }, "apiConfiguration": { @@ -33,7 +33,7 @@ "roleDefinition": { "title": "Definizione del ruolo", "resetToDefault": "Ripristina predefiniti", - "description": "Definisci l'esperienza e la personalità di Roo per questa modalità. Questa descrizione modella come Roo si presenta e affronta i compiti." + "description": "Definisci l'esperienza e la personalità di Zoo per questa modalità. Questa descrizione modella come Zoo si presenta e affronta i compiti." }, "description": { "title": "Descrizione breve (per umani)", @@ -102,7 +102,7 @@ "types": { "ENHANCE": { "label": "Migliora prompt", - "description": "Utilizza il miglioramento dei prompt per ottenere suggerimenti o miglioramenti personalizzati per i tuoi input. Questo assicura che Roo comprenda la tua intenzione e fornisca le migliori risposte possibili. Disponibile tramite l'icona ✨ nella chat." + "description": "Utilizza il miglioramento dei prompt per ottenere suggerimenti o miglioramenti personalizzati per i tuoi input. Questo assicura che Zoo comprenda la tua intenzione e fornisca le migliori risposte possibili. Disponibile tramite l'icona ✨ nella chat." }, "CONDENSE": { "label": "Condensazione del contesto", @@ -167,7 +167,7 @@ }, "roleDefinition": { "label": "Definizione del ruolo", - "description": "Definisci l'esperienza e la personalità di Roo per questa modalità." + "description": "Definisci l'esperienza e la personalità di Zoo per questa modalità." }, "description": { "label": "Descrizione breve (per umani)", diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json index 877032cda90..4a8ca778e71 100644 --- a/webview-ui/src/i18n/locales/it/settings.json +++ b/webview-ui/src/i18n/locales/it/settings.json @@ -40,7 +40,7 @@ "ui": "UI", "experimental": "Sperimentale", "language": "Lingua", - "about": "Informazioni su Roo Code", + "about": "Informazioni su Zoo Code", "skills": "Skills" }, "about": { @@ -56,7 +56,7 @@ "label": "Hai scoperto una vulnerabilità?", "link": "Segui il nostro processo di divulgazione" }, - "community": "Vuoi consigli o semplicemente uscire con altri utenti di Roo Code? Unisciti a reddit.com/r/RooCode o discord.gg/roocode", + "community": "Vuoi consigli o semplicemente uscire con altri utenti di Zoo Code? Unisciti a reddit.com/r/RooCode o discord.gg/roocode", "contactAndCommunity": "Contatti e Comunità", "manageSettings": "Gestisci Impostazioni", "debugMode": { @@ -100,7 +100,7 @@ "footer": "Usa i comandi slash per accedere rapidamente ai prompt e ai flussi di lavoro utilizzati di frequente." }, "prompts": { - "description": "Configura i prompt di supporto utilizzati per azioni rapide come il miglioramento dei prompt, la spiegazione del codice e la risoluzione dei problemi. Questi prompt aiutano Roo a fornire una migliore assistenza per le attività di sviluppo comuni." + "description": "Configura i prompt di supporto utilizzati per azioni rapide come il miglioramento dei prompt, la spiegazione del codice e la risoluzione dei problemi. Questi prompt aiutano Zoo a fornire una migliore assistenza per le attività di sviluppo comuni." }, "codeIndex": { "title": "Indicizzazione del codice", @@ -223,10 +223,10 @@ "disabledAriaLabel": "Approvazione automatica disabilitata - seleziona prima le opzioni", "readOnly": { "label": "Leggi", - "description": "Quando abilitato, Roo visualizzerà automaticamente i contenuti della directory e leggerà i file senza richiedere di cliccare sul pulsante Approva.", + "description": "Quando abilitato, Zoo visualizzerà automaticamente i contenuti della directory e leggerà i file senza richiedere di cliccare sul pulsante Approva.", "outsideWorkspace": { "label": "Includi file al di fuori dell'area di lavoro", - "description": "Permetti a Roo di leggere file al di fuori dell'area di lavoro attuale senza richiedere approvazione." + "description": "Permetti a Zoo di leggere file al di fuori dell'area di lavoro attuale senza richiedere approvazione." } }, "write": { @@ -235,11 +235,11 @@ "delayLabel": "Ritardo dopo le scritture per consentire alla diagnostica di rilevare potenziali problemi", "outsideWorkspace": { "label": "Includi file al di fuori dell'area di lavoro", - "description": "Permetti a Roo di creare e modificare file al di fuori dell'area di lavoro attuale senza richiedere approvazione." + "description": "Permetti a Zoo di creare e modificare file al di fuori dell'area di lavoro attuale senza richiedere approvazione." }, "protected": { "label": "Includi file protetti", - "description": "Permetti a Roo di creare e modificare file protetti (come .rooignore e file di configurazione .roo/) senza richiedere approvazione." + "description": "Permetti a Zoo di creare e modificare file protetti (come .rooignore e file di configurazione .roo/) senza richiedere approvazione." } }, "mcp": { @@ -306,7 +306,7 @@ "noMatchFound": "Nessun profilo corrispondente trovato", "searchProviderPlaceholder": "Cerca fornitori", "noProviderMatchFound": "Nessun fornitore trovato", - "retiredProviderMessage": "Ci dispiace, questo provider non è più supportato. Abbiamo visto che pochissimi utenti di Roo lo utilizzavano effettivamente e dobbiamo ridurre la portata del nostro codice per continuare a procedere velocemente e servire bene la nostra community. È stata una decisione davvero difficile, ma ci permette di concentrarci su ciò che conta di più per te. Lo sappiamo, è una seccatura.", + "retiredProviderMessage": "Questo provider non è più disponibile. Seleziona un provider supportato per continuare.", "vscodeLmDescription": "L'API del Modello di Linguaggio di VS Code consente di eseguire modelli forniti da altre estensioni di VS Code (incluso, ma non limitato a, GitHub Copilot). Il modo più semplice per iniziare è installare le estensioni Copilot e Copilot Chat dal VS Code Marketplace.", "awsCustomArnUse": "Inserisci un ARN Amazon Bedrock valido per il modello che desideri utilizzare. Esempi di formato:", "awsCustomArnDesc": "Assicurati che la regione nell'ARN corrisponda alla regione AWS selezionata sopra.", @@ -456,7 +456,7 @@ "draftModelDesc": "Per un corretto funzionamento della decodifica speculativa, il modello bozza deve provenire dalla stessa famiglia di modelli.", "selectDraftModel": "Seleziona modello bozza", "noModelsFound": "Nessun modello bozza trovato. Assicurati che LM Studio sia in esecuzione con la modalità server abilitata.", - "description": "LM Studio ti permette di eseguire modelli localmente sul tuo computer. Per iniziare, consulta la loro guida rapida. Dovrai anche avviare la funzionalità server locale di LM Studio per utilizzarlo con questa estensione. Nota: Roo Code utilizza prompt complessi e funziona meglio con i modelli Claude. I modelli con capacità inferiori potrebbero non funzionare come previsto." + "description": "LM Studio ti permette di eseguire modelli localmente sul tuo computer. Per iniziare, consulta la loro guida rapida. Dovrai anche avviare la funzionalità server locale di LM Studio per utilizzarlo con questa estensione. Nota: Zoo Code utilizza prompt complessi e funziona meglio con i modelli Claude. I modelli con capacità inferiori potrebbero non funzionare come previsto." }, "ollama": { "baseUrl": "URL base (opzionale)", @@ -466,11 +466,7 @@ "numCtx": "Dimensione della finestra di contesto (num_ctx)", "numCtxHelp": "Sovrascrive la dimensione predefinita della finestra di contesto del modello. Lasciare vuoto per utilizzare la configurazione del Modelfile del modello. Il valore minimo è 128.", "description": "Ollama ti permette di eseguire modelli localmente sul tuo computer. Per iniziare, consulta la guida rapida.", - "warning": "Nota: Roo Code utiliza prompt complessi e funziona meglio con i modelli Claude. I modelli con capacità inferiori potrebbero non funzionare come previsto." - }, - "roo": { - "authenticatedMessage": "Autenticato in modo sicuro tramite il tuo account Roo Code Cloud.", - "connectButton": "Connetti a Roo Code Cloud" + "warning": "Nota: Zoo Code utiliza prompt complessi e funziona meglio con i modelli Claude. I modelli con capacità inferiori potrebbero non funzionare come previsto." }, "openRouter": { "providerRouting": { @@ -480,7 +476,7 @@ } }, "customModel": { - "capabilities": "Configura le capacità e i prezzi del tuo modello personalizzato compatibile con OpenAI. Fai attenzione quando specifichi le capacità del modello, poiché possono influenzare le prestazioni di Roo Code.", + "capabilities": "Configura le capacità e i prezzi del tuo modello personalizzato compatibile con OpenAI. Fai attenzione quando specifichi le capacità del modello, poiché possono influenzare le prestazioni di Zoo Code.", "maxTokens": { "label": "Token di output massimi", "description": "Numero massimo di token che il modello può generare in una risposta. (Specifica -1 per lasciare che il server imposti il massimo token.)" @@ -527,7 +523,7 @@ }, "consecutiveMistakeLimit": { "label": "Limite di errori e ripetizioni", - "description": "Numero di errori consecutivi o azioni ripetute prima di mostrare la finestra di dialogo 'Roo sta riscontrando problemi'. Imposta a 0 per disabilitare questo meccanismo di sicurezza (non si attiverà mai).", + "description": "Numero di errori consecutivi o azioni ripetute prima di mostrare la finestra di dialogo 'Zoo sta riscontrando problemi'. Imposta a 0 per disabilitare questo meccanismo di sicurezza (non si attiverà mai).", "unlimitedDescription": "Tentativi illimitati abilitati (procedi automaticamente). La finestra di dialogo non verrà mai visualizzata.", "warning": "⚠️ L'impostazione a 0 consente tentativi illimitati che possono consumare un notevole utilizzo dell'API" }, @@ -563,18 +559,18 @@ }, "enable": { "label": "Abilita punti di controllo automatici", - "description": "Quando abilitato, Roo creerà automaticamente punti di controllo durante l'esecuzione dei compiti, facilitando la revisione delle modifiche o il ritorno a stati precedenti. <0>Scopri di più" + "description": "Quando abilitato, Zoo creerà automaticamente punti di controllo durante l'esecuzione dei compiti, facilitando la revisione delle modifiche o il ritorno a stati precedenti. <0>Scopri di più" } }, "notifications": { "sound": { "label": "Abilita effetti sonori", - "description": "Quando abilitato, Roo riprodurrà effetti sonori per notifiche ed eventi.", + "description": "Quando abilitato, Zoo riprodurrà effetti sonori per notifiche ed eventi.", "volumeLabel": "Volume" }, "tts": { "label": "Abilita sintesi vocale", - "description": "Quando abilitato, Roo leggerà ad alta voce le sue risposte utilizzando la sintesi vocale.", + "description": "Quando abilitato, Zoo leggerà ad alta voce le sue risposte utilizzando la sintesi vocale.", "speedLabel": "Velocità" } }, @@ -582,7 +578,7 @@ "description": "Controlla quali informazioni sono incluse nella finestra di contesto dell'IA, influenzando l'utilizzo di token e la qualità delle risposte", "autoCondenseContextPercent": { "label": "Soglia per attivare la condensazione intelligente del contesto", - "description": "Quando la finestra di contesto raggiunge questa soglia, Roo la condenserà automaticamente." + "description": "Quando la finestra di contesto raggiunge questa soglia, Zoo la condenserà automaticamente." }, "condensingApiConfiguration": { "label": "Configurazione API per la condensazione del contesto", @@ -598,7 +594,7 @@ }, "autoCondenseContext": { "name": "Attiva automaticamente la condensazione intelligente del contesto", - "description": "Quando abilitato, Roo condenserà automaticamente il contesto quando viene raggiunta la soglia. Quando disabilitato, puoi ancora attivare manualmente la condensazione del contesto." + "description": "Quando abilitato, Zoo condenserà automaticamente il contesto quando viene raggiunta la soglia. Quando disabilitato, puoi ancora attivare manualmente la condensazione del contesto." }, "openTabs": { "label": "Limite contesto schede aperte", @@ -614,7 +610,7 @@ }, "maxReadFile": { "label": "Soglia di auto-troncamento lettura file", - "description": "Roo legge questo numero di righe quando il modello omette i valori di inizio/fine. Se questo numero è inferiore al totale del file, Roo genera un indice dei numeri di riga delle definizioni di codice. Casi speciali: -1 indica a Roo di leggere l'intero file (senza indicizzazione), e 0 indica di non leggere righe e fornire solo indici di riga per un contesto minimo. Valori più bassi minimizzano l'utilizzo iniziale del contesto, permettendo successive letture precise di intervalli di righe. Le richieste con inizio/fine espliciti non sono limitate da questa impostazione.", + "description": "Zoo legge questo numero di righe quando il modello omette i valori di inizio/fine. Se questo numero è inferiore al totale del file, Zoo genera un indice dei numeri di riga delle definizioni di codice. Casi speciali: -1 indica a Zoo di leggere l'intero file (senza indicizzazione), e 0 indica di non leggere righe e fornire solo indici di riga per un contesto minimo. Valori più bassi minimizzano l'utilizzo iniziale del contesto, permettendo successive letture precise di intervalli di righe. Le richieste con inizio/fine espliciti non sono limitate da questa impostazione.", "lines": "righe", "always_full_read": "Leggi sempre l'intero file" }, @@ -685,15 +681,15 @@ }, "outputLineLimit": { "label": "Limite output terminale", - "description": "Mantiene le prime e ultime righe e scarta quelle centrali per rimanere sotto il limite. Abbassa per risparmiare token; alza per dare a Roo più dettagli centrali. Roo vede un segnaposto dove il contenuto viene saltato.<0>Scopri di più" + "description": "Mantiene le prime e ultime righe e scarta quelle centrali per rimanere sotto il limite. Abbassa per risparmiare token; alza per dare a Zoo più dettagli centrali. Zoo vede un segnaposto dove il contenuto viene saltato.<0>Scopri di più" }, "outputCharacterLimit": { "label": "Limite caratteri terminale", - "description": "Sovrascrive il limite di righe per prevenire problemi di memoria imponendo un limite rigido alla dimensione di output. Se superato, mantiene l'inizio e la fine e mostra un segnaposto a Roo dove il contenuto viene saltato. <0>Scopri di più" + "description": "Sovrascrive il limite di righe per prevenire problemi di memoria imponendo un limite rigido alla dimensione di output. Se superato, mantiene l'inizio e la fine e mostra un segnaposto a Zoo dove il contenuto viene saltato. <0>Scopri di più" }, "outputPreviewSize": { "label": "Dimensione anteprima output comandi", - "description": "Controlla quanto output dei comandi Roo vede direttamente. L'output completo viene sempre salvato ed è accessibile quando necessario.", + "description": "Controlla quanto output dei comandi Zoo vede direttamente. L'output completo viene sempre salvato ed è accessibile quando necessario.", "options": { "small": "Piccola (5KB)", "medium": "Media (10KB)", @@ -706,7 +702,7 @@ }, "shellIntegrationDisabled": { "label": "Usa terminale in linea (consigliato)", - "description": "Esegui comandi nel terminale in linea (chat) per bypassare profili/integrazione shell per esecuzioni più veloci e affidabili. Quando disabilitato, Roo usa il terminale VS Code con il tuo profilo shell, prompt e plugin. <0>Scopri di più" + "description": "Esegui comandi nel terminale in linea (chat) per bypassare profili/integrazione shell per esecuzioni più veloci e affidabili. Quando disabilitato, Zoo usa il terminale VS Code con il tuo profilo shell, prompt e plugin. <0>Scopri di più" }, "commandDelay": { "label": "Ritardo comando terminale", @@ -743,7 +739,7 @@ "advanced": { "diff": { "label": "Abilita modifica tramite diff", - "description": "Quando abilitato, Roo sarà in grado di modificare i file più velocemente e rifiuterà automaticamente scritture di file completi troncati", + "description": "Quando abilitato, Zoo sarà in grado di modificare i file più velocemente e rifiuterà automaticamente scritture di file completi troncati", "strategy": { "label": "Strategia diff", "options": { @@ -760,7 +756,7 @@ }, "todoList": { "label": "Abilita strumento lista di cose da fare", - "description": "Quando abilitato, Roo può creare e gestire liste di cose da fare per tracciare il progresso delle attività. Questo aiuta a organizzare attività complesse in passaggi gestibili." + "description": "Quando abilitato, Zoo può creare e gestire liste di cose da fare per tracciare il progresso delle attività. Questo aiuta a organizzare attività complesse in passaggi gestibili." } }, "experimental": { @@ -770,15 +766,15 @@ }, "INSERT_BLOCK": { "name": "Usa strumento di inserimento contenuti sperimentale", - "description": "Abilita lo strumento di inserimento contenuti sperimentale, consentendo a Roo di inserire contenuti a numeri di riga specifici senza dover creare un diff." + "description": "Abilita lo strumento di inserimento contenuti sperimentale, consentendo a Zoo di inserire contenuti a numeri di riga specifici senza dover creare un diff." }, "MULTI_SEARCH_AND_REPLACE": { "name": "Usa strumento diff multi-blocco sperimentale", - "description": "Quando abilitato, Roo utilizzerà lo strumento diff multi-blocco. Questo tenterà di aggiornare più blocchi di codice nel file in una singola richiesta." + "description": "Quando abilitato, Zoo utilizzerà lo strumento diff multi-blocco. Questo tenterà di aggiornare più blocchi di codice nel file in una singola richiesta." }, "CONCURRENT_FILE_READS": { "name": "Abilita lettura simultanea dei file", - "description": "Quando abilitato, Roo può leggere più file in una singola richiesta. Quando disabilitato, Roo deve leggere i file uno alla volta. Disabilitarlo può aiutare quando si lavora con modelli meno capaci o quando si desidera maggiore controllo sull'accesso ai file." + "description": "Quando abilitato, Zoo può leggere più file in una singola richiesta. Quando disabilitato, Zoo deve leggere i file uno alla volta. Disabilitarlo può aiutare quando si lavora con modelli meno capaci o quando si desidera maggiore controllo sull'accesso ai file." }, "MARKETPLACE": { "name": "Abilita Marketplace", @@ -786,7 +782,7 @@ }, "PREVENT_FOCUS_DISRUPTION": { "name": "Modifica in background", - "description": "Previene l'interruzione del focus dell'editor quando abilitato. Le modifiche ai file avvengono in background senza aprire viste di differenze o rubare il focus. Puoi continuare a lavorare senza interruzioni mentre Roo effettua modifiche. I file possono essere aperti senza focus per catturare diagnostiche o rimanere completamente chiusi." + "description": "Previene l'interruzione del focus dell'editor quando abilitato. Le modifiche ai file avvengono in background senza aprire viste di differenze o rubare il focus. Puoi continuare a lavorare senza interruzioni mentre Zoo effettua modifiche. I file possono essere aperti senza focus per catturare diagnostiche o rimanere completamente chiusi." }, "ASSISTANT_MESSAGE_PARSER": { "name": "Usa il nuovo parser dei messaggi", @@ -800,7 +796,7 @@ "providerLabel": "Provider", "providerDescription": "Seleziona il provider per la generazione di immagini.", "name": "Abilita generazione immagini AI", - "description": "Quando abilitato, Roo può generare immagini da prompt di testo utilizzando i modelli di generazione immagini di OpenRouter. Richiede una chiave API OpenRouter configurata.", + "description": "Quando abilitato, Zoo può generare immagini da prompt di testo utilizzando i modelli di generazione immagini di OpenRouter. Richiede una chiave API OpenRouter configurata.", "openRouterApiKeyLabel": "Chiave API OpenRouter", "openRouterApiKeyPlaceholder": "Inserisci la tua chiave API OpenRouter", "getApiKeyText": "Ottieni la tua chiave API da", @@ -811,11 +807,11 @@ }, "RUN_SLASH_COMMAND": { "name": "Abilita comandi slash avviati dal modello", - "description": "Quando abilitato, Roo può eseguire i tuoi comandi slash per eseguire flussi di lavoro." + "description": "Quando abilitato, Zoo può eseguire i tuoi comandi slash per eseguire flussi di lavoro." }, "CUSTOM_TOOLS": { "name": "Abilita strumenti personalizzati", - "description": "Quando abilitato, Roo può caricare e utilizzare strumenti TypeScript/JavaScript personalizzati dalla directory .roo/tools del tuo progetto o ~/.roo/tools per strumenti globali. Nota: questi strumenti saranno automaticamente approvati.", + "description": "Quando abilitato, Zoo può caricare e utilizzare strumenti TypeScript/JavaScript personalizzati dalla directory .roo/tools del tuo progetto o ~/.roo/tools per strumenti globali. Nota: questi strumenti saranno automaticamente approvati.", "toolsHeader": "Strumenti personalizzati disponibili", "noTools": "Nessuno strumento personalizzato caricato. Aggiungi file .ts o .js alla directory .roo/tools del tuo progetto o ~/.roo/tools per strumenti globali.", "refreshButton": "Aggiorna", @@ -827,7 +823,7 @@ }, "promptCaching": { "label": "Disattiva la cache dei prompt", - "description": "Quando selezionato, Roo non utilizzerà la cache dei prompt per questo modello." + "description": "Quando selezionato, Zoo non utilizzerà la cache dei prompt per questo modello." }, "temperature": { "useCustom": "Usa temperatura personalizzata", @@ -857,7 +853,7 @@ } }, "modelPicker": { - "automaticFetch": "L'estensione recupera automaticamente l'elenco più recente dei modelli disponibili su {{serviceName}}. Se non sei sicuro di quale modello scegliere, Roo Code funziona meglio con {{defaultModelId}}. Puoi anche cercare \"free\" per opzioni gratuite attualmente disponibili.", + "automaticFetch": "L'estensione recupera automaticamente l'elenco più recente dei modelli disponibili su {{serviceName}}. Se non sei sicuro di quale modello scegliere, Zoo Code funziona meglio con {{defaultModelId}}. Puoi anche cercare \"free\" per opzioni gratuite attualmente disponibili.", "label": "Modello", "searchPlaceholder": "Cerca", "noMatchFound": "Nessuna corrispondenza trovata", @@ -867,7 +863,7 @@ "footer": { "telemetry": { "label": "Consenti segnalazioni anonime di errori e utilizzo", - "description": "Aiuta a migliorare Roo Code inviando dati di utilizzo anonimi e segnalazioni di errori. Questa telemetria non raccoglie codice, prompt o informazioni personali. Consulta la nostra informativa sulla privacy per maggiori dettagli." + "description": "Aiuta a migliorare Zoo Code inviando dati di utilizzo anonimi e segnalazioni di errori. Questa telemetria non raccoglie codice, prompt o informazioni personali. Consulta la nostra informativa sulla privacy per maggiori dettagli." }, "settings": { "import": "Importa", diff --git a/webview-ui/src/i18n/locales/it/welcome.json b/webview-ui/src/i18n/locales/it/welcome.json index fbc6fb3e36d..5b6665bc2e1 100644 --- a/webview-ui/src/i18n/locales/it/welcome.json +++ b/webview-ui/src/i18n/locales/it/welcome.json @@ -1,52 +1,18 @@ { - "routers": { - "requesty": { - "description": "Il tuo router LLM ottimizzato", - "incentive": "$1 di credito gratuito" - }, - "openrouter": { - "description": "Un'interfaccia unificata per gli LLM" - }, - "roo": { - "description": "I migliori modelli gratuiti per iniziare", - "incentive": "Prova Roo gratuitamente" - } - }, "landing": { "greeting": "Benvenuto in Roo Code!", "introduction": "Con una gamma di Modalità integrate ed estensibili, Roo Code ti permette di pianificare, architettare, codificare, debuggare e aumentare la tua produttività come mai prima d'ora.", - "accountMention": "Per iniziare, crea il tuo account Roo Code Cloud. Ottieni modelli potenti, controllo web, analitiche, supporto e altro ancora.", - "getStarted": "Crea account Roo", - "noAccount": "o usa senza account" + "getStarted": "Scegli il tuo provider" }, "providerSignup": { "heading": "Scegli il tuo provider", "chooseProvider": "Roo ha bisogno di un provider LLM per funzionare. Scegline uno per iniziare, puoi aggiungerne altri in seguito.", - "rooCloudProvider": "Provider Roo Code Cloud", - "rooCloudDescription": "Il modo più semplice per iniziare è con il Provider Roo Code Cloud: un mix curato di modelli gratuiti e a pagamento a basso costo.", - "learnMore": "Scopri di più", - "useAnotherProvider": "Provider di terze parti", - "useAnotherProviderDescription": "Inserisci una chiave API e inizia.", - "noApiKeys": "Non vuoi affrontare le chiavi API e gli account separati?", - "backToRoo": "Scegli il Provider Roo Code Cloud.", "goBack": "Indietro", "finish": "Fine" }, - "waitingForCloud": { - "heading": "Accesso a Roo Code Cloud...", - "description": "Ti porteremo al tuo browser per registrarti a Roo Code Cloud. Poi ti riporteremo qui per terminare.", - "noPrompt": "Se non ti viene chiesto di aprire un URL, clicca qui.", - "havingTrouble": "Se hai completato la registrazione ma hai problemi, clicca qui.", - "pasteUrl": "Incolla l'URL di callback dal tuo browser:", - "docsLink": "Non funziona? Consulta la documentazione.", - "invalidURL": "Non sembra un URL di callback valido. Per favore copia quello che Roo Code Cloud sta mostrando nel tuo browser.", - "goBack": "Indietro" - }, - "startRouter": "Ti consigliamo di usare un router LLM:", - "startCustom": "Oppure puoi portare la tua chiave API:", "telemetry": { - "helpImprove": "Aiuta a migliorare Roo Code", - "helpImproveMessage": "Roo Code raccoglie dati di errore e utilizzo per aiutarci a correggere i bug e migliorare l'estensione. Questa telemetria non raccoglie codice, prompt o informazioni personali. Puoi disabilitare questa funzione in impostazioni." + "helpImprove": "Aiuta a migliorare Zoo Code", + "helpImproveMessage": "Zoo Code raccoglie dati di errore e utilizzo per aiutarci a correggere i bug e migliorare l'estensione. Questa telemetria non raccoglie codice, prompt o informazioni personali. Puoi disabilitare questa funzione in impostazioni." }, "importSettings": "Importa impostazioni" } diff --git a/webview-ui/src/i18n/locales/it/worktrees.json b/webview-ui/src/i18n/locales/it/worktrees.json index dda88fa53c1..9129c944d27 100644 --- a/webview-ui/src/i18n/locales/it/worktrees.json +++ b/webview-ui/src/i18n/locales/it/worktrees.json @@ -1,28 +1,23 @@ { "title": "Worktrees", "done": "Fatto", - "description": "I worktree di Git ti permettono di lavorare su più branch contemporaneamente in directory separate. Ogni worktree ha la propria finestra di VS Code con Roo Code.", - + "description": "I worktree di Git ti permettono di lavorare su più branch contemporaneamente in directory separate. Ogni worktree ha la propria finestra di VS Code con Zoo Code.", "notGitRepo": "Questo workspace non è un repository Git. I worktree richiedono un repository Git per funzionare.", "multiRootNotSupported": "I worktree non sono supportati nei workspace multi-root. Apri una singola cartella per usare i worktree.", "subfolderNotSupported": "Questo workspace è una sottocartella di un repository Git. Apri la root del repository per usare i worktree.", "gitRoot": "Root di Git", - "includeFileExists": "File .worktreeinclude trovato — i file verranno copiati nei nuovi worktree", "noIncludeFile": "Nessun file .worktreeinclude trovato", "createFromGitignore": "Crea da .gitignore", - "primary": "Primario", "current": "Attuale", "locked": "Bloccato", "detachedHead": "HEAD staccata", "noBranch": "Nessun branch", - "switchInThisWindow": "Passa a worktree", "openInNewWindow": "Apri in una nuova finestra", "delete": "Elimina", "newWorktree": "Nuovo Worktree", - "createWorktree": "Crea Worktree", "branchName": "Nome del branch", "createNewBranch": "Crea nuovo branch", @@ -44,7 +39,6 @@ "copyingFiles": "Copia dei file...", "copyingProgress": "{{item}} — {{copied}} copiato", "cancel": "Annulla", - "deleteWorktree": "Elimina Worktree", "deleteWarning": "Questa azione non può essere annullata. Verrà eliminato quanto segue:", "deleteWarningBranch": "Il branch e tutte le modifiche non committate", @@ -53,11 +47,8 @@ "forceDelete": "Forza eliminazione", "worktreeIsLocked": "il worktree è bloccato", "deleting": "Eliminazione...", - "close": "Chiudi", - "showInHomeScreen": "Mostra worktrees nella schermata iniziale", - "selector": { "worktree": "Worktree", "title": "Worktrees", diff --git a/webview-ui/src/i18n/locales/ja/chat.json b/webview-ui/src/i18n/locales/ja/chat.json index 8e5889c853f..41d14555b49 100644 --- a/webview-ui/src/i18n/locales/ja/chat.json +++ b/webview-ui/src/i18n/locales/ja/chat.json @@ -1,5 +1,5 @@ { - "greeting": "Roo Code へようこそ", + "greeting": "Zoo Code へようこそ!", "task": { "title": "タスク", "expand": "タスクを展開", @@ -15,16 +15,6 @@ "export": "タスク履歴をエクスポート", "delete": "タスクを削除(Shift + クリックで確認をスキップ)", "condenseContext": "コンテキストをインテリジェントに圧縮", - "share": "タスクを共有", - "shareWithOrganization": "組織と共有", - "shareWithOrganizationDescription": "組織のメンバーのみがアクセスできます", - "sharePublicly": "公開で共有", - "sharePubliclyDescription": "リンクを持つ誰でもアクセスできます", - "connectToCloud": "クラウドに接続", - "connectToCloudDescription": "タスクを共有するためにRoo Code Cloudにサインイン", - "sharingDisabledByOrganization": "組織により共有が無効化されています", - "shareSuccessOrganization": "組織リンクをクリップボードにコピーしました", - "shareSuccessPublic": "公開リンクをクリップボードにコピーしました", "openApiHistory": "API履歴を開く", "openUiHistory": "UI履歴を開く", "backToParentTask": "親タスク" @@ -98,7 +88,7 @@ "enqueueMessage": "メッセージをキューに追加(現在のタスク完了後に送信されます)", "scrollToBottom": "チャットの最下部にスクロール", "scrollToLatestCheckpoint": "前のチェックポイントまでスクロール", - "about": "Roo Codeは、エディタに常駐するAI開発チームです。", + "about": "Zoo Codeは、エディタに常駐するAI開発チームです。", "docs": "詳細については、ドキュメントをご確認ください。", "onboarding": "このワークスペースのタスクリストは空です。", "rooTips": { @@ -162,7 +152,7 @@ "500": "プロバイダー サーバー エラー。プロバイダー側に問題があり、リクエスト自体に問題はありません。", "docs": "ドキュメント", "goToSettings": "設定", - "unknown": "不明な API エラー。Roo Code のサポートにお問い合わせください。", + "unknown": "不明な API エラーです。Zoo Code サポートにお問い合わせください。", "connection": "接続エラー。インターネット接続が機能していることを確認してください。", "claudeCodeNotAuthenticated": "Claude Codeを使用するにはサインインが必要です。設定に移動して「Claude Codeにサインイン」をクリックして認証してください。" } @@ -202,7 +192,7 @@ "wantsToInsert": "Rooはこのファイルにコンテンツを挿入したい", "wantsToInsertWithLineNumber": "Rooはこのファイルの{{lineNumber}}行目にコンテンツを挿入したい", "wantsToInsertAtEnd": "Rooはこのファイルの末尾にコンテンツを追加したい", - "wantsToReadAndXMore": "Roo はこのファイルと他に {{count}} 個のファイルを読み込もうとしています", + "wantsToReadAndXMore": "Zoo はこのファイルと他に {{count}} 個のファイルを読み込もうとしています", "wantsToReadMultiple": "Rooは複数のファイルを読み取ろうとしています", "wantsToApplyBatchChanges": "Rooは複数のファイルに変更を適用したい", "wantsToGenerateImage": "Rooは画像を生成したい", @@ -223,7 +213,7 @@ "didViewTopLevelOutsideWorkspace": "Rooはこのディレクトリ(ワークスペース外)のトップレベルファイルを表示しました", "wantsToViewRecursiveOutsideWorkspace": "Rooはこのディレクトリ(ワークスペース外)のすべてのファイルを再帰的に表示したい", "didViewRecursiveOutsideWorkspace": "Rooはこのディレクトリ(ワークスペース外)のすべてのファイルを再帰的に表示しました", - "wantsToViewMultipleDirectories": "Roo は複数のディレクトリを表示したい" + "wantsToViewMultipleDirectories": "Zoo は複数のディレクトリを表示したい" }, "commandOutput": "コマンド出力", "commandExecution": { @@ -338,23 +328,16 @@ "timerPrefix": "自動承認が有効です。{{seconds}}秒後に選択中…" }, "announcement": { - "title": "Roo Code {{version}} リリース", - "support": "GitHubでスターを付けてRoo Codeを応援してください。", - "stealthModel": { - "feature": "期間限定無料ステルスモデル - Code Supernova:1Mトークンコンテキストウィンドウにアップグレード!画像入力をサポートする多目的エージェントコーディングモデル、Roo Code Cloud 経由で利用可能。", - "note": "(注意:プロンプトと補完はモデル作成者によってログに記録され、モデルの改善に使用されます)", - "connectButton": "Roo Code Cloud に接続", - "selectModel": "設定で Roo Code Cloud プロバイダーから roo/code-supernova を選択して開始してください。", - "goToSettingsButton": "設定に移動" - }, + "title": "Zoo Code {{version}} リリース", + "support": "GitHubでスターを付けて Zoo Code を応援してください。", "handoff": { - "heading": "Roo Code プラグインはなくなりません。", - "description": "Roo Code のインストール数が300万に達し、元のチームが Roomote に全力で取り組むという先日のお知らせをご覧になったかもしれません。この知らせが多くの方にとって辛いものだったことは承知しています。このプラグインは私たちにとっても、あなたにとっても大切な存在であり、皆さんの声はしっかり届いています。良いお知らせです:コミュニティチームが Roo Code を受け継いで前進させることを引き受けてくれました。頼りにしているこのプラグインが引き続きメンテナンスと改善を受けられるよう、私たちは彼らと公式な引き継ぎを進めています。", - "readMore": "Matt Rubens による最初のお知らせを読む" + "heading": "Zoo Code が帰ってきた。今度はコミュニティメンテナンスのプラグイン、Zoo Code です!!", + "description": "まだ追えていない方のために言うと、Zoo Code チームは最近、Zoo Code の開発を終了し、これまでの成果をアーカイブすると発表しました。でも心配はいりません。コミュニティが新しい名前と新しい拠点のもとで、Zoo Code のレガシーを引き継ぐために立ち上がりました! もう私たちは 1 匹の「Roo」ではなく、いわば「Zoo」というコミュニティです。Zoo Code は Zoo Code が残したところを引き継ぐコミュニティメンテナンスのプラグインで、Roo の精神を大切にしながら、新機能や改善も加えていくことを約束します。開発者のための素晴らしいツールを生み出してくれた Zoo Code チーム全員に、心から大きな感謝を伝えたいです。彼らの土台の上にさらに築いていき、これからコミュニティが Zoo Code をどこまで育てていくのかを見るのが楽しみです!", + "readMore": "Zoo Code の新しいホームページを見て、完全なお知らせを読む" }, "release": { "heading": "新機能:", - "gpt55": "OpenAI Codex 経由の GPT-5.5: OpenAI Codex プロバイダーで GPT-5.5 のサポートを追加しました。Roo Code から最新モデルを直接利用できます。", + "gpt55": "OpenAI Codex 経由の GPT-5.5: OpenAI Codex プロバイダーで GPT-5.5 のサポートを追加しました。Zoo Code から最新モデルを直接利用できます。", "claudeOpus47": "Vertex AI 上の Claude Opus 4.7: Anthropic の最新フラッグシップ推論モデルとして、Vertex AI プロバイダーに Claude Opus 4.7 を追加しました。", "checkpointNav": "以前のチェックポイントへのナビゲーション: チャットから以前のチェックポイントへ戻るためのコントロールを追加しました。i18n にも完全対応しています。" }, @@ -380,7 +363,7 @@ "profileViolationWarning": "現在のプロファイルは組織の設定と互換性がありません", "shellIntegration": { "title": "コマンド実行警告", - "description": "コマンドはVSCodeターミナルシェル統合なしで実行されています。この警告を非表示にするには、Roo Code設定Terminalセクションでシェル統合を無効にするか、以下のリンクを使用してVSCodeターミナル統合のトラブルシューティングを行ってください。", + "description": "コマンドはVSCodeターミナルシェル統合なしで実行されています。この警告を非表示にするには、Zoo Code 設定Terminalセクションでシェル統合を無効にするか、以下のリンクを使用してVSCodeターミナル統合のトラブルシューティングを行ってください。", "troubleshooting": "シェル統合のドキュメントはこちらをクリック" }, "ask": { @@ -438,7 +421,7 @@ "ariaLabel": "バージョン {{version}} - クリックしてリリースノートを表示" }, "rooCloudCTA": { - "title": "Roo Code Cloud が進化中!", + "title": "Zoo Code Cloud が進化中!", "description": "クラウドでリモートエージェントを実行し、どこからでもタスクにアクセスし、他の人と協力し、その他多くの機能を利用できます。", "joinWaitlist": "最新のアップデートを受け取るためにサインアップしてください。" }, @@ -503,7 +486,7 @@ }, "retiredProvider": { "title": "プロバイダーのサポート終了", - "message": "申し訳ございませんが、このプロバイダーはサポートを終了しました。実際に利用しているRooユーザーが非常に少なく、コードベースの範囲を縮小して、迅速な開発とコミュニティへの貢献を続ける必要がありました。本当に難しい決断でしたが、あなたにとって最も重要なことに集中するためです。残念ですが、ご理解ください。", + "message": "このプロバイダーは現在利用できません。続行するには、サポートされているプロバイダーを選択してください。", "openSettings": "設定を開く" } } diff --git a/webview-ui/src/i18n/locales/ja/cloud.json b/webview-ui/src/i18n/locales/ja/cloud.json deleted file mode 100644 index 167651c96c0..00000000000 --- a/webview-ui/src/i18n/locales/ja/cloud.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "title": "Cloud", - "profilePicture": "プロフィール画像", - "logOut": "ログアウト", - "testApiAuthentication": "API認証をテスト", - "signIn": "Roo Code Cloud に接続", - "connect": "始める", - "cloudBenefitsTitle": "Roo Code Cloudを試す", - "cloudBenefitProvider": "Rooと相性の良い無料および有料モデルにアクセス", - "cloudBenefitCloudAgents": "自律型クラウドエージェントにタスクを依頼", - "cloudBenefitTriggers": "GitHubでコードレビューを取得、Slackからタスクを開始など", - "cloudBenefitWalkaway": "どこからでも(スマートフォンを含む)タスクを追跡および制御", - "cloudBenefitHistory": "どこからでもタスク履歴にアクセスし、他の人と共有", - "cloudBenefitMetrics": "トークン消費の全体像を把握", - "visitCloudWebsite": "Roo Code Cloudを訪問", - "taskSync": "タスク同期", - "taskSyncDescription": "Roo Code Cloudでタスクを表示・共有するために同期", - "taskSyncManagedByOrganization": "タスク同期は組織によって管理されます", - "usageMetricsAlwaysReported": "ログイン時にはモデル使用情報が常に報告されます", - "authWaiting": "認証完了をお待ちください...", - "havingTrouble": "問題が発生していますか?", - "pasteCallbackUrl": "ブラウザからリダイレクトURLをコピーし、ここに貼り付けてください:", - "startOver": "最初からやり直す", - "personalAccount": "個人アカウント", - "switchAccount": "Roo Code Cloud アカウントを切り替え", - "createTeamAccount": "チームアカウントを作成", - "cloudUrlPillLabel": "Roo Code Cloud URL", - "upsell": { - "autoApprovePowerUser": "Rooに少し独立性を与えませんか?Roo Code Cloudでどこからでもコントロールできます。詳細。", - "longRunningTask": "これには時間がかかるかもしれません。Cloudを使えばどこからでも続けられます。", - "taskList": "Rooを楽しんでいますか?Roo Code Cloudをチェックしてください:どこからでもタスクを追跡および制御し、自律型クラウドエージェントを実行し、使用状況の統計を取得します。詳細。" - } -} diff --git a/webview-ui/src/i18n/locales/ja/marketplace.json b/webview-ui/src/i18n/locales/ja/marketplace.json index 6a2ac9f9541..2bcb67bedde 100644 --- a/webview-ui/src/i18n/locales/ja/marketplace.json +++ b/webview-ui/src/i18n/locales/ja/marketplace.json @@ -1,5 +1,5 @@ { - "title": "Roo Marketplace", + "title": "Zoo Marketplace", "tabs": { "installed": "インストール済み", "settings": "設定", diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json index 7f31d349393..76a3c32aa20 100644 --- a/webview-ui/src/i18n/locales/ja/settings.json +++ b/webview-ui/src/i18n/locales/ja/settings.json @@ -40,7 +40,7 @@ "ui": "UI", "experimental": "実験的", "language": "言語", - "about": "Roo Codeについて", + "about": "Zoo Codeについて", "skills": "Skills" }, "about": { @@ -56,7 +56,7 @@ "label": "脆弱性を発見しましたか?", "link": "開示プロセスに従ってください" }, - "community": "ヒントが欲しいですか、または他のRoo Codeユーザーと交流したいですか?reddit.com/r/RooCodeまたはdiscord.gg/roocodeに参加してください", + "community": "ヒントが欲しいですか、または他のZoo Codeユーザーと交流したいですか?reddit.com/r/RooCodeまたはdiscord.gg/roocodeに参加してください", "contactAndCommunity": "お問い合わせとコミュニティ", "manageSettings": "設定を管理", "debugMode": { @@ -306,7 +306,7 @@ "searchProviderPlaceholder": "プロバイダーを検索", "noProviderMatchFound": "プロバイダーが見つかりません", "noMatchFound": "一致するプロファイルが見つかりません", - "retiredProviderMessage": "申し訳ございませんが、このプロバイダーはサポートを終了しました。実際に利用しているRooユーザーが非常に少なく、コードベースの範囲を縮小して、迅速な開発とコミュニティへの貢献を続ける必要がありました。本当に難しい決断でしたが、あなたにとって最も重要なことに集中するためです。残念ですが、ご理解ください。", + "retiredProviderMessage": "このプロバイダーは現在利用できません。続行するには、サポートされているプロバイダーを選択してください。", "vscodeLmDescription": "VS Code言語モデルAPIを使用すると、他のVS Code拡張機能(GitHub Copilotなど)が提供するモデルを実行できます。最も簡単な方法は、VS Code MarketplaceからCopilotおよびCopilot Chat拡張機能をインストールすることです。", "awsCustomArnUse": "使用したいモデルの有効なAmazon Bedrock ARNを入力してください。形式の例:", "awsCustomArnDesc": "ARN内のリージョンが上で選択したAWSリージョンと一致していることを確認してください。", @@ -456,7 +456,7 @@ "draftModelDesc": "推論デコーディングが正しく機能するには、ドラフトモデルは同じモデルファミリーから選択する必要があります。", "selectDraftModel": "ドラフトモデルを選択", "noModelsFound": "ドラフトモデルが見つかりません。LM Studioがサーバーモードで実行されていることを確認してください。", - "description": "LM Studioを使用すると、ローカルコンピューターでモデルを実行できます。始め方については、クイックスタートガイドをご覧ください。また、この拡張機能で使用するには、LM Studioのローカルサーバー機能を起動する必要があります。注意:Roo Codeは複雑なプロンプトを使用し、Claudeモデルで最適に動作します。能力の低いモデルは期待通りに動作しない場合があります。" + "description": "LM Studioを使用すると、ローカルコンピューターでモデルを実行できます。始め方については、クイックスタートガイドをご覧ください。また、この拡張機能で使用するには、LM Studioのローカルサーバー機能を起動する必要があります。注意:Zoo Codeは複雑なプロンプトを使用し、Claudeモデルで最適に動作します。能力の低いモデルは期待通りに動作しない場合があります。" }, "ollama": { "baseUrl": "ベースURL(オプション)", @@ -466,11 +466,7 @@ "numCtx": "コンテキストウィンドウサイズ (num_ctx)", "numCtxHelp": "モデルのデフォルトのコンテキストウィンドウサイズを上書きします。モデルのModelfile構成を使用するには、空のままにします。最小値は128です。", "description": "Ollamaを使用すると、ローカルコンピューターでモデルを実行できます。始め方については、クイックスタートガイドをご覧ください。", - "warning": "注意:Roo Codeは複雑なプロンプトを使用し、Claudeモデルで最適に動作します。能力の低いモデルは期待通りに動作しない場合があります。" - }, - "roo": { - "authenticatedMessage": "Roo Code Cloudアカウントを通じて安全に認証されています。", - "connectButton": "Roo Code Cloudに接続" + "warning": "注意:Zoo Codeは複雑なプロンプトを使用し、Claudeモデルで最適に動作します。能力の低いモデルは期待通りに動作しない場合があります。" }, "openRouter": { "providerRouting": { @@ -480,7 +476,7 @@ } }, "customModel": { - "capabilities": "カスタムOpenAI互換モデルの機能と価格を設定します。モデルの機能はRoo Codeのパフォーマンスに影響を与える可能性があるため、慎重に指定してください。", + "capabilities": "カスタムOpenAI互換モデルの機能と価格を設定します。モデルの機能はZoo Codeのパフォーマンスに影響を与える可能性があるため、慎重に指定してください。", "maxTokens": { "label": "最大出力トークン", "description": "モデルが生成できる応答の最大トークン数。(サーバーが最大トークンを設定できるようにするには-1を指定します。)" @@ -706,7 +702,7 @@ }, "shellIntegrationDisabled": { "label": "インラインターミナルを使用(推奨)", - "description": "より高速で信頼性の高い実行のため、シェルプロファイル/統合をバイパスしてインラインターミナル(チャット)でコマンドを実行します。無効にすると、Roo はシェルプロファイル、プロンプト、プラグインと共に VS Code ターミナルを使用します。<0>詳細情報" + "description": "より高速で信頼性の高い実行のため、シェルプロファイル/統合をバイパスしてインラインターミナル(チャット)でコマンドを実行します。無効にすると、Zoo はシェルプロファイル、プロンプト、プラグインと共に VS Code ターミナルを使用します。<0>詳細情報" }, "commandDelay": { "label": "ターミナルコマンド遅延", @@ -857,7 +853,7 @@ } }, "modelPicker": { - "automaticFetch": "拡張機能は{{serviceName}}で利用可能な最新のモデルリストを自動的に取得します。どのモデルを選ぶべきか迷っている場合、Roo Codeは{{defaultModelId}}で最適に動作します。また、「free」で検索すると、現在利用可能な無料オプションを見つけることができます。", + "automaticFetch": "拡張機能は{{serviceName}}で利用可能な最新のモデルリストを自動的に取得します。どのモデルを選ぶべきか迷っている場合、Zoo Codeは{{defaultModelId}}で最適に動作します。また、「free」で検索すると、現在利用可能な無料オプションを見つけることができます。", "label": "モデル", "searchPlaceholder": "検索", "noMatchFound": "一致するものが見つかりません", @@ -867,7 +863,7 @@ "footer": { "telemetry": { "label": "匿名のエラーと使用状況レポートを許可", - "description": "匿名の使用データとエラーレポートを送信してRoo Codeの改善にご協力ください。このテレメトリはコード、プロンプト、個人情報を収集しません。詳細についてはプライバシーポリシーをご覧ください。" + "description": "匿名の使用データとエラーレポートを送信してZoo Codeの改善にご協力ください。このテレメトリはコード、プロンプト、個人情報を収集しません。詳細についてはプライバシーポリシーをご覧ください。" }, "settings": { "import": "インポート", diff --git a/webview-ui/src/i18n/locales/ja/welcome.json b/webview-ui/src/i18n/locales/ja/welcome.json index ee24c89af2e..37937994d39 100644 --- a/webview-ui/src/i18n/locales/ja/welcome.json +++ b/webview-ui/src/i18n/locales/ja/welcome.json @@ -1,52 +1,18 @@ { - "routers": { - "requesty": { - "description": "最適化されたLLMルーター", - "incentive": "無料の$1クレジット" - }, - "openrouter": { - "description": "LLM向けの統一インターフェース" - }, - "roo": { - "description": "始めるための最高の無料モデル", - "incentive": "Rooを無料で試す" - } - }, "landing": { "greeting": "Roo Codeへようこそ!", "introduction": "組み込みおよび拡張可能なモードを備えたRoo Codeは、計画、アーキテクチャ設計、コーディング、デバッグ、そして今までにない生産性向上を可能にします。", - "accountMention": "始めるには、Roo Code Cloudアカウントを作成してください。強力なモデル、ウェブコントロール、分析、サポート、その他をご利用いただけます。", - "getStarted": "Rooアカウントを作成", - "noAccount": "またはアカウントなしで使用" + "getStarted": "プロバイダーを選択" }, "providerSignup": { "heading": "プロバイダーを選択", "chooseProvider": "Rooが機能するにはLLMプロバイダーが必要です。始めるために1つを選択してください。後から追加することもできます。", - "rooCloudProvider": "Roo Code Cloudプロバイダー", - "rooCloudDescription": "始める最も簡単な方法は、Roo Code Cloudプロバイダーを使用することです。無料および有料モデルの厳選されたミックスを低コストで提供します。", - "learnMore": "詳細を見る", - "useAnotherProvider": "サードパーティプロバイダー", - "useAnotherProviderDescription": "APIキーを入力して開始します。", - "noApiKeys": "APIキーと別のアカウントを処理したくありませんか?", - "backToRoo": "Roo Code Cloudプロバイダーを選択してください。", "goBack": "戻る", "finish": "完了" }, - "waitingForCloud": { - "heading": "Roo Code Cloudにログイン中...", - "description": "Roo Code Cloudに登録するためにブラウザーに移動します。その後、ここに戻って完了します。", - "noPrompt": "URLを開くように求められない場合は、ここをクリックしてください。", - "havingTrouble": "登録を完了しましたがトラブルが発生している場合は、ここをクリックしてください。", - "pasteUrl": "ブラウザーに表示されているコールバックURLを貼り付けます:", - "docsLink": "機能していませんか?ドキュメントを確認してください。", - "invalidURL": "有効なコールバックURLのようには見えません。Roo Code Cloudがブラウザーに表示しているものをコピーしてください。", - "goBack": "戻る" - }, - "startRouter": "LLMルーターの使用をお勧めします:", - "startCustom": "または、独自のAPIキーを持ってくることもできます:", "telemetry": { - "helpImprove": "Roo Codeの改善にご協力ください", - "helpImproveMessage": "Roo Codeは、バグを修正し、拡張機能を改善するために、エラーおよび使用データを収集します。このテレメトリはコード、プロンプト、または個人情報を収集しません。これは設定で無効にできます。" + "helpImprove": "Zoo Codeの改善にご協力ください", + "helpImproveMessage": "Zoo Codeは、バグを修正し、拡張機能を改善するために、エラーおよび使用データを収集します。このテレメトリはコード、プロンプト、または個人情報を収集しません。これは設定で無効にできます。" }, "importSettings": "設定のインポート" } diff --git a/webview-ui/src/i18n/locales/ja/worktrees.json b/webview-ui/src/i18n/locales/ja/worktrees.json index f07bd3ea48c..a43b7f056b9 100644 --- a/webview-ui/src/i18n/locales/ja/worktrees.json +++ b/webview-ui/src/i18n/locales/ja/worktrees.json @@ -1,28 +1,23 @@ { "title": "Worktrees", "done": "完了", - "description": "Git worktrees を使うと、別々のディレクトリで複数のブランチを同時に作業できます。各 worktree には Roo Code 付きの VS Code ウィンドウが割り当てられます。", - + "description": "Git worktrees を使うと、別々のディレクトリで複数のブランチを同時に作業できます。各 worktree には Zoo Code 付きの VS Code ウィンドウが割り当てられます。", "notGitRepo": "このワークスペースは Git リポジトリではありません。worktrees を使うには Git リポジトリが必要です。", "multiRootNotSupported": "マルチルートのワークスペースでは worktrees はサポートされていません。worktrees を使うには単一のフォルダーを開いてください。", "subfolderNotSupported": "このワークスペースは Git リポジトリのサブフォルダーです。worktrees を使うにはリポジトリのルートを開いてください。", "gitRoot": "Git ルート", - "includeFileExists": ".worktreeinclude ファイルが見つかりました — ファイルは新しい worktrees にコピーされます", "noIncludeFile": ".worktreeinclude ファイルが見つかりませんでした", "createFromGitignore": ".gitignore から作成", - "primary": "プライマリ", "current": "現在", "locked": "ロック中", "detachedHead": "Detached HEAD", "noBranch": "ブランチなし", - "switchInThisWindow": "Worktree に切り替え", "openInNewWindow": "新しいウィンドウで開く", "delete": "削除", "newWorktree": "新しい Worktree", - "createWorktree": "Worktree を作成", "branchName": "ブランチ名", "createNewBranch": "新しいブランチを作成", @@ -44,7 +39,6 @@ "copyingFiles": "ファイルをコピー中...", "copyingProgress": "{{item}} — {{copied}} コピー済み", "cancel": "キャンセル", - "deleteWorktree": "Worktree を削除", "deleteWarning": "この操作は元に戻せません。次のものが削除されます:", "deleteWarningBranch": "ブランチと未コミットの変更すべて", @@ -53,11 +47,8 @@ "forceDelete": "強制削除", "worktreeIsLocked": "worktree がロックされています", "deleting": "削除中...", - "close": "閉じる", - "showInHomeScreen": "ホーム画面に worktrees を表示", - "selector": { "worktree": "Worktree", "title": "Worktrees", diff --git a/webview-ui/src/i18n/locales/ko/chat.json b/webview-ui/src/i18n/locales/ko/chat.json index 42555e647d2..46f1d6c29c1 100644 --- a/webview-ui/src/i18n/locales/ko/chat.json +++ b/webview-ui/src/i18n/locales/ko/chat.json @@ -1,5 +1,5 @@ { - "greeting": "Roo Code에 오신 것을 환영합니다", + "greeting": "Zoo Code에 오신 것을 환영합니다!", "task": { "title": "작업", "expand": "작업 펼치기", @@ -15,16 +15,6 @@ "export": "작업 기록 내보내기", "delete": "작업 삭제 (Shift + 클릭으로 확인 생략)", "condenseContext": "컨텍스트 지능적으로 압축", - "share": "작업 공유", - "shareWithOrganization": "조직과 공유", - "shareWithOrganizationDescription": "조직 구성원만 액세스할 수 있습니다", - "sharePublicly": "공개적으로 공유", - "sharePubliclyDescription": "링크가 있는 누구나 액세스할 수 있습니다", - "connectToCloud": "클라우드에 연결", - "connectToCloudDescription": "작업을 공유하려면 Roo Code Cloud에 로그인하세요", - "sharingDisabledByOrganization": "조직에서 공유가 비활성화됨", - "shareSuccessOrganization": "조직 링크가 클립보드에 복사되었습니다", - "shareSuccessPublic": "공개 링크가 클립보드에 복사되었습니다", "openApiHistory": "API 기록 열기", "openUiHistory": "UI 기록 열기", "backToParentTask": "상위 작업" @@ -98,7 +88,7 @@ "enqueueMessage": "메시지를 대기열에 추가 (현재 작업 완료 후 전송)", "scrollToBottom": "채팅 하단으로 스크롤", "scrollToLatestCheckpoint": "이전 체크포인트로 스크롤", - "about": "Roo Code는 편집기 안에 있는 전체 AI 개발팀입니다.", + "about": "Zoo Code는 편집기 안에 있는 전체 AI 개발팀입니다.", "docs": "더 알아보려면 문서를 확인하세요.", "onboarding": "이 작업 공간의 작업 목록이 비어 있습니다.", "rooTips": { @@ -162,7 +152,7 @@ "500": "공급자 서버 오류입니다. 공급자 쪽에 문제가 있으며 요청에는 문제가 없습니다.", "docs": "문서", "goToSettings": "설정", - "unknown": "알 수 없는 API 오류입니다. Roo Code 지원팀에 문의하세요.", + "unknown": "알 수 없는 API 오류입니다. Zoo Code 지원팀에 문의하세요.", "connection": "연결 오류입니다. 인터넷 연결이 제대로 작동하는지 확인하세요.", "claudeCodeNotAuthenticated": "Claude Code를 사용하려면 로그인해야 합니다. 설정으로 이동하여 \"Claude Code에 로그인\"을 클릭하여 인증하세요." } @@ -338,23 +328,16 @@ "timerPrefix": "자동 승인 활성화됨. {{seconds}}초 후 선택 중…" }, "announcement": { - "title": "Roo Code {{version}} 출시", - "support": "GitHub에서 별표를 눌러 Roo Code를 응원해 주세요.", - "stealthModel": { - "feature": "기간 한정 무료 스텔스 모델 - Code Supernova: 이제 1M 토큰 컨텍스트 윈도우로 업그레이드되었습니다! 이미지 입력을 지원하는 다목적 에이전틱 코딩 모델, Roo Code Cloud를 통해 이용 가능.", - "note": "(참고: 프롬프트와 완성은 모델 제작자에 의해 기록되고 모델 개선에 사용됩니다)", - "connectButton": "Roo Code Cloud에 연결", - "selectModel": "설정에서 Roo Code Cloud 제공업체의 roo/code-supernova를 선택하여 시작하세요.", - "goToSettingsButton": "설정으로 이동" - }, + "title": "Zoo Code {{version}} 출시", + "support": "GitHub에서 별표를 눌러 Zoo Code를 응원해 주세요.", "handoff": { - "heading": "Roo Code 플러그인은 사라지지 않아요.", - "description": "Roo Code가 300만 설치를 돌파했고, 원래 팀이 Roomote에 전념하기로 했다는 최근 발표를 보셨을 거예요. 많은 분들께 이 소식이 힘들게 다가왔다는 걸 알고 있어요. 이 플러그인은 저희와 여러분 모두에게 큰 의미가 있고, 여러분의 목소리를 듣고 있어요. 좋은 소식이 있어요: 커뮤니티 팀이 Roo Code를 계속 이어가기로 나섰어요. 여러분이 의지하는 이 플러그인이 계속 유지 관리되고 개선될 수 있도록, 저희는 그들과 공식적인 인수인계를 진행하고 있어요.", - "readMore": "Matt Rubens의 원본 발표 읽기" + "heading": "Zoo Code가 돌아왔습니다. 이제 커뮤니티가 유지 관리하는 플러그인 Zoo Code입니다!!", + "description": "최근 소식을 못 보셨다면, Zoo Code 팀이 Zoo Code 개발을 종료하고 지금까지의 작업을 아카이브하겠다고 발표했어요. 하지만 걱정하지 마세요. 커뮤니티가 나서서 Zoo Code의 유산을 새로운 이름과 새로운 터전에서 이어가고 있어요! 이제 우리는 더 이상 하나의 \"Roo\"가 아니라, 말 그대로 하나의 커뮤니티, 즉 \"Zoo\"입니다. Zoo Code는 Zoo Code가 멈춘 지점에서 이어받는 커뮤니티 유지 관리 플러그인이며, Roo의 정신을 지키면서도 새로운 기능과 개선 사항을 계속 추가해 나가겠습니다. 개발자들에게 이렇게 훌륭한 도구를 만들어 준 Zoo Code 팀 전체에 진심으로 큰 감사를 전합니다. 그들이 만든 기반 위에 계속해서 쌓아 올리고, 앞으로 커뮤니티가 Zoo Code를 어디까지 발전시킬지 정말 기대하고 있습니다!", + "readMore": "Zoo Code의 새 홈페이지에서 전체 공지를 읽어보세요" }, "release": { "heading": "새로운 기능:", - "gpt55": "OpenAI Codex를 통한 GPT-5.5: OpenAI Codex 제공업체에 GPT-5.5 지원을 추가해, Roo Code에서 바로 최신 모델을 사용할 수 있어요.", + "gpt55": "OpenAI Codex를 통한 GPT-5.5: OpenAI Codex 제공업체에 GPT-5.5 지원을 추가해, Zoo Code에서 바로 최신 모델을 사용할 수 있어요.", "claudeOpus47": "Vertex AI에서 Claude Opus 4.7: Anthropic의 최신 플래그십 추론 모델인 Claude Opus 4.7을 Vertex AI 제공업체에 추가했어요.", "checkpointNav": "이전 체크포인트 탐색: 이전 체크포인트로 돌아갈 수 있는 컨트롤을 채팅에 추가했고, i18n을 완벽하게 지원해요." }, @@ -380,7 +363,7 @@ "profileViolationWarning": "현재 프로필이 조직 설정과 호환되지 않습니다", "shellIntegration": { "title": "명령 실행 경고", - "description": "명령이 VSCode 터미널 쉘 통합 없이 실행되고 있습니다. 이 경고를 숨기려면 Roo Code 설정Terminal 섹션에서 쉘 통합을 비활성화하거나 아래 링크를 사용하여 VSCode 터미널 통합 문제를 해결하세요.", + "description": "명령이 VSCode 터미널 쉘 통합 없이 실행되고 있습니다. 이 경고를 숨기려면 Zoo Code 설정Terminal 섹션에서 쉘 통합을 비활성화하거나 아래 링크를 사용하여 VSCode 터미널 통합 문제를 해결하세요.", "troubleshooting": "쉘 통합 문서를 보려면 여기를 클릭하세요." }, "ask": { @@ -438,7 +421,7 @@ "ariaLabel": "버전 {{version}} - 릴리스 노트를 보려면 클릭하세요" }, "rooCloudCTA": { - "title": "Roo Code Cloud가 진화하고 있습니다!", + "title": "Zoo Code Cloud가 진화하고 있습니다!", "description": "클라우드에서 원격 에이전트를 실행하고, 어디서나 작업에 액세스하고, 다른 사람들과 협업하는 등 다양한 기능을 이용하세요.", "joinWaitlist": "최신 업데이트를 받으려면 가입하세요." }, @@ -499,11 +482,11 @@ "openMcpSettings": "MCP 설정 열기" }, "readCommandOutput": { - "title": "Roo read command output" + "title": "Zoo read command output" }, "retiredProvider": { "title": "공급자 지원 종료", - "message": "죄송합니다. 이 공급자는 더 이상 지원되지 않습니다. 실제로 사용하는 Roo 사용자가 매우 적었고, 빠르게 개발하고 커뮤니티에 잘 봉사하기 위해 코드베이스의 범위를 줄여야 했습니다. 정말 어려운 결정이었지만, 당신에게 가장 중요한 것에 집중할 수 있게 해줍니다. 불편을 드려 죄송합니다.", + "message": "이 공급자는 더 이상 사용할 수 없습니다. 계속하려면 지원되는 공급자를 선택하세요.", "openSettings": "설정 열기" } } diff --git a/webview-ui/src/i18n/locales/ko/cloud.json b/webview-ui/src/i18n/locales/ko/cloud.json deleted file mode 100644 index c0731e3bf4e..00000000000 --- a/webview-ui/src/i18n/locales/ko/cloud.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "title": "Cloud", - "profilePicture": "프로필 사진", - "logOut": "로그아웃", - "testApiAuthentication": "API 인증 테스트", - "signIn": "Roo Code Cloud에 연결", - "connect": "시작하기", - "cloudBenefitsTitle": "Roo Code Cloud 체험하기", - "cloudBenefitProvider": "Roo와 잘 작동하는 무료 및 유료 모델에 액세스하세요", - "cloudBenefitCloudAgents": "자율 클라우드 에이전트에게 작업 부여", - "cloudBenefitTriggers": "GitHub에서 코드 리뷰 받기, Slack에서 작업 시작 등", - "cloudBenefitWalkaway": "어디서나(휴대전화 포함) 작업을 팔로우하고 제어하세요", - "cloudBenefitHistory": "어디서나 작업 기록에 액세스하고 다른 사람과 공유하세요", - "cloudBenefitMetrics": "토큰 소비에 대한 전체적인 보기 얻기", - "visitCloudWebsite": "Roo Code Cloud 방문", - "taskSync": "작업 동기화", - "taskSyncDescription": "Roo Code Cloud에서 보고 공유할 수 있도록 작업을 동기화", - "taskSyncManagedByOrganization": "작업 동기화는 조직에서 관리합니다", - "usageMetricsAlwaysReported": "로그인 시 모델 사용 정보가 항상 보고됩니다", - "authWaiting": "인증 완료를 기다리는 중...", - "havingTrouble": "문제가 있나요?", - "pasteCallbackUrl": "브라우저에서 리다이렉트 URL을 복사하여 여기에 붙여넣으세요:", - "startOver": "다시 시작", - "personalAccount": "개인 계정", - "switchAccount": "Roo Code Cloud 계정 전환", - "createTeamAccount": "팀 계정 만들기", - "cloudUrlPillLabel": "Roo Code Cloud URL", - "upsell": { - "autoApprovePowerUser": "Roo에게 약간의 독립성을 부여하시겠습니까? Roo Code Cloud로 어디서든 제어하세요. 더 알아보기.", - "longRunningTask": "시간이 좀 걸릴 수 있습니다. Cloud로 어디서든 계속하세요.", - "taskList": "Roo를 즐기고 계신가요? Roo Code Cloud를 확인해보세요: 어디서든 작업을 추적하고 제어하며, 자율적인 클라우드 에이전트를 실행하고, 사용 통계를 얻는 등 다양한 기능을 제공합니다. 더 알아보기." - } -} diff --git a/webview-ui/src/i18n/locales/ko/marketplace.json b/webview-ui/src/i18n/locales/ko/marketplace.json index fd7d91c10e1..5b75b4c6200 100644 --- a/webview-ui/src/i18n/locales/ko/marketplace.json +++ b/webview-ui/src/i18n/locales/ko/marketplace.json @@ -1,5 +1,5 @@ { - "title": "Roo Marketplace", + "title": "Zoo Marketplace", "tabs": { "installed": "설치됨", "settings": "설정", diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json index 707719609c4..601d47e7cbd 100644 --- a/webview-ui/src/i18n/locales/ko/settings.json +++ b/webview-ui/src/i18n/locales/ko/settings.json @@ -40,7 +40,7 @@ "ui": "UI", "experimental": "실험적", "language": "언어", - "about": "Roo Code 정보", + "about": "Zoo Code 정보", "skills": "Skills" }, "about": { @@ -56,7 +56,7 @@ "label": "취약점을 발견하셨나요?", "link": "공개 프로세스 따르기" }, - "community": "팁을 얻거나 다른 Roo Code 사용자들과 교류하고 싶으신가요? reddit.com/r/RooCode 또는 discord.gg/roocode에 참여하세요", + "community": "팁을 얻거나 다른 Zoo Code 사용자들과 교류하고 싶으신가요? reddit.com/r/RooCode 또는 discord.gg/roocode에 참여하세요", "contactAndCommunity": "문의 및 커뮤니티", "manageSettings": "설정 관리", "debugMode": { @@ -306,7 +306,7 @@ "searchProviderPlaceholder": "공급자 검색", "noProviderMatchFound": "공급자를 찾을 수 없습니다", "noMatchFound": "일치하는 프로필이 없습니다", - "retiredProviderMessage": "죄송합니다. 이 공급자는 더 이상 지원되지 않습니다. 실제로 사용하는 Roo 사용자가 매우 적었고, 빠르게 개발하고 커뮤니티에 잘 봉사하기 위해 코드베이스의 범위를 줄여야 했습니다. 정말 어려운 결정이었지만, 당신에게 가장 중요한 것에 집중할 수 있게 해줍니다. 불편을 드려 죄송합니다.", + "retiredProviderMessage": "이 공급자는 더 이상 사용할 수 없습니다. 계속하려면 지원되는 공급자를 선택하세요.", "vscodeLmDescription": "VS Code 언어 모델 API를 사용하면 GitHub Copilot을 포함한 기타 VS Code 확장 프로그램이 제공하는 모델을 실행할 수 있습니다. 시작하려면 VS Code 마켓플레이스에서 Copilot 및 Copilot Chat 확장 프로그램을 설치하는 것이 가장 쉽습니다.", "awsCustomArnUse": "사용하려는 모델의 유효한 Amazon Bedrock ARN을 입력하세요. 형식 예시:", "awsCustomArnDesc": "ARN의 리전이 위에서 선택한 AWS 리전과 일치하는지 확인하세요.", @@ -456,7 +456,7 @@ "draftModelDesc": "추론 디코딩이 올바르게 작동하려면 초안 모델이 동일한 모델 패밀리에서 와야 합니다.", "selectDraftModel": "초안 모델 선택", "noModelsFound": "초안 모델을 찾을 수 없습니다. LM Studio가 서버 모드로 실행 중인지 확인하세요.", - "description": "LM Studio를 사용하면 컴퓨터에서 로컬로 모델을 실행할 수 있습니다. 시작하는 방법은 빠른 시작 가이드를 참조하세요. 이 확장 프로그램과 함께 사용하려면 LM Studio의 로컬 서버 기능도 시작해야 합니다. 참고: Roo Code는 복잡한 프롬프트를 사용하며 Claude 모델에서 가장 잘 작동합니다. 덜 강력한 모델은 예상대로 작동하지 않을 수 있습니다." + "description": "LM Studio를 사용하면 컴퓨터에서 로컬로 모델을 실행할 수 있습니다. 시작하는 방법은 빠른 시작 가이드를 참조하세요. 이 확장 프로그램과 함께 사용하려면 LM Studio의 로컬 서버 기능도 시작해야 합니다. 참고: Zoo Code는 복잡한 프롬프트를 사용하며 Claude 모델에서 가장 잘 작동합니다. 덜 강력한 모델은 예상대로 작동하지 않을 수 있습니다." }, "ollama": { "baseUrl": "기본 URL (선택사항)", @@ -466,11 +466,7 @@ "numCtx": "컨텍스트 창 크기(num_ctx)", "numCtxHelp": "모델의 기본 컨텍스트 창 크기를 재정의합니다. 모델의 Modelfile 구성을 사용하려면 비워 둡니다. 최소값은 128입니다.", "description": "Ollama를 사용하면 컴퓨터에서 로컬로 모델을 실행할 수 있습니다. 시작하는 방법은 빠른 시작 가이드를 참조하세요.", - "warning": "참고: Roo Code는 복잡한 프롬프트를 사용하며 Claude 모델에서 가장 잘 작동합니다. 덜 강력한 모델은 예상대로 작동하지 않을 수 있습니다." - }, - "roo": { - "authenticatedMessage": "Roo Code Cloud 계정을 통해 안전하게 인증되었습니다.", - "connectButton": "Roo Code Cloud에 연결" + "warning": "참고: Zoo Code는 복잡한 프롬프트를 사용하며 Claude 모델에서 가장 잘 작동합니다. 덜 강력한 모델은 예상대로 작동하지 않을 수 있습니다." }, "openRouter": { "providerRouting": { @@ -480,7 +476,7 @@ } }, "customModel": { - "capabilities": "사용자 정의 OpenAI 호환 모델의 기능과 가격을 구성하세요. 모델 기능이 Roo Code의 성능에 영향을 미칠 수 있으므로 신중하게 지정하세요.", + "capabilities": "사용자 정의 OpenAI 호환 모델의 기능과 가격을 구성하세요. 모델 기능이 Zoo Code의 성능에 영향을 미칠 수 있으므로 신중하게 지정하세요.", "maxTokens": { "label": "최대 출력 토큰", "description": "모델이 응답에서 생성할 수 있는 최대 토큰 수입니다. (서버가 최대 토큰을 설정하도록 하려면 -1을 지정하세요.)" @@ -857,7 +853,7 @@ } }, "modelPicker": { - "automaticFetch": "확장 프로그램은 {{serviceName}}에서 사용 가능한 최신 모델 목록을 자동으로 가져옵니다. 어떤 모델을 선택해야 할지 확실하지 않다면, Roo Code는 {{defaultModelId}}로 가장 잘 작동합니다. 현재 사용 가능한 무료 옵션을 찾으려면 \"free\"를 검색해 볼 수도 있습니다.", + "automaticFetch": "확장 프로그램은 {{serviceName}}에서 사용 가능한 최신 모델 목록을 자동으로 가져옵니다. 어떤 모델을 선택해야 할지 확실하지 않다면, Zoo Code는 {{defaultModelId}}로 가장 잘 작동합니다. 현재 사용 가능한 무료 옵션을 찾으려면 \"free\"를 검색해 볼 수도 있습니다.", "label": "모델", "searchPlaceholder": "검색", "noMatchFound": "일치하는 항목 없음", @@ -867,7 +863,7 @@ "footer": { "telemetry": { "label": "익명 오류 및 사용 보고 허용", - "description": "익명 사용 데이터 및 오류 보고서를 전송하여 Roo Code 개선에 도움을 주세요. 이 텔레메트리는 코드, 프롬프트 또는 개인 정보를 수집하지 않습니다. 자세한 내용은 개인정보 보호정책을 참조하세요." + "description": "익명 사용 데이터 및 오류 보고서를 전송하여 Zoo Code 개선에 도움을 주세요. 이 텔레메트리는 코드, 프롬프트 또는 개인 정보를 수집하지 않습니다. 자세한 내용은 개인정보 보호정책을 참조하세요." }, "settings": { "import": "가져오기", diff --git a/webview-ui/src/i18n/locales/ko/welcome.json b/webview-ui/src/i18n/locales/ko/welcome.json index 998acdb75f5..a150ca01123 100644 --- a/webview-ui/src/i18n/locales/ko/welcome.json +++ b/webview-ui/src/i18n/locales/ko/welcome.json @@ -1,52 +1,18 @@ { - "routers": { - "requesty": { - "description": "최적화된 LLM 라우터", - "incentive": "무료 $1 크레딧" - }, - "openrouter": { - "description": "LLM을 위한 통합 인터페이스" - }, - "roo": { - "description": "시작하기 위한 최고의 무료 모델", - "incentive": "Roo 무료로 시도해보기" - } - }, "landing": { "greeting": "Roo Code에 오신 것을 환영합니다!", "introduction": "내장 및 확장 가능한 다양한 모드를 통해 Roo Code는 계획, 아키텍처 설계, 코딩, 디버깅 및 전례 없는 생산성 향상을 가능하게 합니다.", - "accountMention": "시작하려면 Roo Code Cloud 계정을 만드세요. 강력한 모델, 웹 제어, 분석, 지원 등을 얻으세요.", - "getStarted": "Roo 계정 만들기", - "noAccount": "또는 계정 없이 사용하기" + "getStarted": "공급자 선택" }, "providerSignup": { "heading": "공급자 선택", "chooseProvider": "Roo가 작동하려면 LLM 공급자가 필요합니다. 시작하려면 하나를 선택하세요. 나중에 더 추가할 수 있습니다.", - "rooCloudProvider": "Roo Code Cloud 공급자", - "rooCloudDescription": "시작하는 가장 쉬운 방법은 Roo Code Cloud 공급자를 사용하는 것입니다: 무료 및 유료 모델의 신중하게 선택된 믹스, 저렴한 비용으로.", - "learnMore": "자세히 알아보기", - "useAnotherProvider": "타사 공급자", - "useAnotherProviderDescription": "API 키를 입력하고 시작하세요.", - "noApiKeys": "API 키와 별도의 계정을 다루고 싶지 않으신가요?", - "backToRoo": "Roo Code Cloud 공급자를 선택하세요.", "goBack": "뒤로", "finish": "완료" }, - "waitingForCloud": { - "heading": "Roo Code Cloud에 로그인 중...", - "description": "Roo Code Cloud에 등록하기 위해 브라우저로 이동합니다. 그런 다음 여기로 돌아와서 완료합니다.", - "noPrompt": "URL을 열도록 요청받지 않으면 여기를 클릭하세요.", - "havingTrouble": "등록을 완료했지만 문제가 있는 경우 여기를 클릭하세요.", - "pasteUrl": "브라우저에서 표시된 콜백 URL을 붙여넣으세요:", - "docsLink": "작동하지 않나요? 문서를 확인하세요.", - "invalidURL": "유효한 콜백 URL처럼 보이지 않습니다. Roo Code Cloud가 브라우저에 표시하는 것을 복사하세요.", - "goBack": "뒤로" - }, - "startRouter": "LLM 라우터 사용을 권장합니다:", - "startCustom": "또는 자신의 API 키를 가져올 수 있습니다:", "telemetry": { - "helpImprove": "Roo Code 개선에 도움주세요", - "helpImproveMessage": "Roo Code는 버그를 수정하고 확장을 개선하기 위해 오류 및 사용 데이터를 수집합니다. 이 원격 분석은 코드, 프롬프트 또는 개인 정보를 수집하지 않습니다. 설정에서 이를 비활성화할 수 있습니다." + "helpImprove": "Zoo Code 개선에 도움주세요", + "helpImproveMessage": "Zoo Code는 버그를 수정하고 확장을 개선하기 위해 오류 및 사용 데이터를 수집합니다. 이 원격 분석은 코드, 프롬프트 또는 개인 정보를 수집하지 않습니다. 설정에서 이를 비활성화할 수 있습니다." }, "importSettings": "설정 가져오기" } diff --git a/webview-ui/src/i18n/locales/ko/worktrees.json b/webview-ui/src/i18n/locales/ko/worktrees.json index 388a508a9b5..c5383076b53 100644 --- a/webview-ui/src/i18n/locales/ko/worktrees.json +++ b/webview-ui/src/i18n/locales/ko/worktrees.json @@ -1,28 +1,23 @@ { "title": "Worktrees", "done": "완료", - "description": "Git worktrees를 사용하면 별도의 디렉터리에서 여러 브랜치를 동시에 작업할 수 있습니다. 각 worktree는 Roo Code가 포함된 자체 VS Code 창을 가집니다.", - + "description": "Git worktrees를 사용하면 별도의 디렉터리에서 여러 브랜치를 동시에 작업할 수 있습니다. 각 worktree는 Zoo Code가 포함된 자체 VS Code 창을 가집니다.", "notGitRepo": "이 워크스페이스는 Git 저장소가 아닙니다. worktrees를 사용하려면 Git 저장소가 필요합니다.", "multiRootNotSupported": "멀티 루트 워크스페이스에서는 worktrees가 지원되지 않습니다. worktrees를 사용하려면 단일 폴더를 여세요.", "subfolderNotSupported": "이 워크스페이스는 Git 저장소의 하위 폴더입니다. worktrees를 사용하려면 저장소 루트를 여세요.", "gitRoot": "Git 루트", - "includeFileExists": ".worktreeinclude 파일을 찾았습니다 — 파일이 새 worktrees로 복사됩니다", "noIncludeFile": ".worktreeinclude 파일을 찾지 못했습니다", "createFromGitignore": ".gitignore에서 만들기", - "primary": "기본", "current": "현재", "locked": "잠김", "detachedHead": "Detached HEAD", "noBranch": "브랜치 없음", - "switchInThisWindow": "Worktree로 전환", "openInNewWindow": "새 창에서 열기", "delete": "삭제", "newWorktree": "새 Worktree", - "createWorktree": "Worktree 만들기", "branchName": "브랜치 이름", "createNewBranch": "새 브랜치 만들기", @@ -44,7 +39,6 @@ "copyingFiles": "파일 복사 중...", "copyingProgress": "{{item}} — {{copied}} 복사됨", "cancel": "취소", - "deleteWorktree": "Worktree 삭제", "deleteWarning": "이 작업은 되돌릴 수 없습니다. 다음이 삭제됩니다:", "deleteWarningBranch": "브랜치 및 커밋되지 않은 모든 변경 사항", @@ -53,11 +47,8 @@ "forceDelete": "강제 삭제", "worktreeIsLocked": "worktree가 잠겨 있습니다", "deleting": "삭제 중...", - "close": "닫기", - "showInHomeScreen": "홈 화면에 worktrees 표시", - "selector": { "worktree": "Worktree", "title": "Worktrees", diff --git a/webview-ui/src/i18n/locales/nl/chat.json b/webview-ui/src/i18n/locales/nl/chat.json index b6325e17081..6a45046b449 100644 --- a/webview-ui/src/i18n/locales/nl/chat.json +++ b/webview-ui/src/i18n/locales/nl/chat.json @@ -1,5 +1,5 @@ { - "greeting": "Welkom bij Roo Code", + "greeting": "Welkom bij Zoo Code!", "task": { "title": "Taak", "expand": "Taak uitvouwen", @@ -15,16 +15,6 @@ "export": "Taakgeschiedenis exporteren", "delete": "Taak verwijderen (Shift + Klik om bevestiging over te slaan)", "condenseContext": "Context intelligent samenvatten", - "share": "Taak delen", - "shareWithOrganization": "Delen met organisatie", - "shareWithOrganizationDescription": "Alleen leden van je organisatie kunnen toegang krijgen", - "sharePublicly": "Openbaar delen", - "sharePubliclyDescription": "Iedereen met de link kan toegang krijgen", - "connectToCloud": "Verbind met Cloud", - "connectToCloudDescription": "Meld je aan bij Roo Code Cloud om taken te delen", - "sharingDisabledByOrganization": "Delen uitgeschakeld door organisatie", - "shareSuccessOrganization": "Organisatielink gekopieerd naar klembord", - "shareSuccessPublic": "Openbare link gekopieerd naar klembord", "openApiHistory": "API-geschiedenis openen", "openUiHistory": "UI-geschiedenis openen", "backToParentTask": "Bovenliggende taak" @@ -98,7 +88,7 @@ "enqueueMessage": "Bericht aan de wachtrij toevoegen (wordt verzonden nadat de huidige taak is voltooid)", "scrollToBottom": "Scroll naar onderaan de chat", "scrollToLatestCheckpoint": "Scroll naar het vorige checkpoint", - "about": "Roo Code is een heel AI-ontwikkelteam in je editor.", + "about": "Zoo Code is een heel AI-ontwikkelteam in je editor.", "docs": "Bekijk onze documentatie voor meer informatie.", "onboarding": "Je takenlijst in deze werkruimte is leeg.", "rooTips": { @@ -121,7 +111,7 @@ "title": "Modi", "marketplace": "Modus Marktplaats", "settings": "Modus Instellingen", - "description": "Gespecialiseerde persona's die het gedrag van Roo aanpassen.", + "description": "Gespecialiseerde persona's die het gedrag van Zoo aanpassen.", "searchPlaceholder": "Zoek modi...", "noResults": "Geen resultaten gevonden" }, @@ -157,7 +147,7 @@ "500": "Provider-serverfout. Er is iets mis aan de kant van de provider, er is niets mis met je verzoek.", "docs": "Documentatie", "goToSettings": "Instellingen", - "unknown": "Onbekende API-fout. Neem alsjeblieft contact op met Roo Code-ondersteuning.", + "unknown": "Onbekende API-fout. Neem contact op met Zoo Code-support.", "connection": "Verbindingsfout. Zorg ervoor dat je een werkende internetverbinding hebt.", "claudeCodeNotAuthenticated": "Je moet inloggen om Claude Code te gebruiken. Ga naar Instellingen en klik op \"Inloggen bij Claude Code\" om te authenticeren." } @@ -185,40 +175,40 @@ "wantsToFetch": "Roo wil gedetailleerde instructies ophalen om te helpen met de huidige taak" }, "fileOperations": { - "wantsToRead": "Roo wil dit bestand lezen", - "wantsToReadOutsideWorkspace": "Roo wil dit bestand buiten de werkruimte lezen", - "didRead": "Roo heeft dit bestand gelezen", - "wantsToEdit": "Roo wil dit bestand bewerken", - "wantsToEditOutsideWorkspace": "Roo wil dit bestand buiten de werkruimte bewerken", - "wantsToEditProtected": "Roo wil een beveiligd configuratiebestand bewerken", - "wantsToCreate": "Roo wil een nieuw bestand aanmaken", + "wantsToRead": "Zoo wil dit bestand lezen", + "wantsToReadOutsideWorkspace": "Zoo wil dit bestand buiten de werkruimte lezen", + "didRead": "Zoo heeft dit bestand gelezen", + "wantsToEdit": "Zoo wil dit bestand bewerken", + "wantsToEditOutsideWorkspace": "Zoo wil dit bestand buiten de werkruimte bewerken", + "wantsToEditProtected": "Zoo wil een beveiligd configuratiebestand bewerken", + "wantsToCreate": "Zoo wil een nieuw bestand aanmaken", "wantsToSearchReplace": "Roo wil zoeken en vervangen in dit bestand", "didSearchReplace": "Roo heeft zoeken en vervangen uitgevoerd op dit bestand", - "wantsToInsert": "Roo wil inhoud invoegen in dit bestand", - "wantsToInsertWithLineNumber": "Roo wil inhoud invoegen in dit bestand op regel {{lineNumber}}", - "wantsToInsertAtEnd": "Roo wil inhoud toevoegen aan het einde van dit bestand", - "wantsToReadAndXMore": "Roo wil dit bestand en nog {{count}} andere lezen", - "wantsToReadMultiple": "Roo wil meerdere bestanden lezen", - "wantsToApplyBatchChanges": "Roo wil wijzigingen toepassen op meerdere bestanden", - "wantsToGenerateImage": "Roo wil een afbeelding genereren", - "wantsToGenerateImageOutsideWorkspace": "Roo wil een afbeelding genereren buiten de werkruimte", - "wantsToGenerateImageProtected": "Roo wil een afbeelding genereren op een beschermde locatie", - "didGenerateImage": "Roo heeft een afbeelding gegenereerd" + "wantsToInsert": "Zoo wil inhoud invoegen in dit bestand", + "wantsToInsertWithLineNumber": "Zoo wil inhoud invoegen in dit bestand op regel {{lineNumber}}", + "wantsToInsertAtEnd": "Zoo wil inhoud toevoegen aan het einde van dit bestand", + "wantsToReadAndXMore": "Zoo wil dit bestand en nog {{count}} andere lezen", + "wantsToReadMultiple": "Zoo wil meerdere bestanden lezen", + "wantsToApplyBatchChanges": "Zoo wil wijzigingen toepassen op meerdere bestanden", + "wantsToGenerateImage": "Zoo wil een afbeelding genereren", + "wantsToGenerateImageOutsideWorkspace": "Zoo wil een afbeelding genereren buiten de werkruimte", + "wantsToGenerateImageProtected": "Zoo wil een afbeelding genereren op een beschermde locatie", + "didGenerateImage": "Zoo heeft een afbeelding gegenereerd" }, "directoryOperations": { - "wantsToViewTopLevel": "Roo wil de bovenliggende bestanden in deze map bekijken", - "didViewTopLevel": "Roo heeft de bovenliggende bestanden in deze map bekeken", - "wantsToViewRecursive": "Roo wil alle bestanden in deze map recursief bekijken", - "didViewRecursive": "Roo heeft alle bestanden in deze map recursief bekeken", - "wantsToSearch": "Roo wil deze map doorzoeken op {{regex}}", - "didSearch": "Roo heeft deze map doorzocht op {{regex}}", - "wantsToSearchOutsideWorkspace": "Roo wil deze map (buiten werkruimte) doorzoeken op {{regex}}", - "didSearchOutsideWorkspace": "Roo heeft deze map (buiten werkruimte) doorzocht op {{regex}}", - "wantsToViewTopLevelOutsideWorkspace": "Roo wil de bovenliggende bestanden in deze map (buiten werkruimte) bekijken", - "didViewTopLevelOutsideWorkspace": "Roo heeft de bovenliggende bestanden in deze map (buiten werkruimte) bekeken", - "wantsToViewRecursiveOutsideWorkspace": "Roo wil alle bestanden in deze map (buiten werkruimte) recursief bekijken", - "didViewRecursiveOutsideWorkspace": "Roo heeft alle bestanden in deze map (buiten werkruimte) recursief bekeken", - "wantsToViewMultipleDirectories": "Roo wil meerdere mappen bekijken" + "wantsToViewTopLevel": "Zoo wil de bovenliggende bestanden in deze map bekijken", + "didViewTopLevel": "Zoo heeft de bovenliggende bestanden in deze map bekeken", + "wantsToViewRecursive": "Zoo wil alle bestanden in deze map recursief bekijken", + "didViewRecursive": "Zoo heeft alle bestanden in deze map recursief bekeken", + "wantsToSearch": "Zoo wil deze map doorzoeken op {{regex}}", + "didSearch": "Zoo heeft deze map doorzocht op {{regex}}", + "wantsToSearchOutsideWorkspace": "Zoo wil deze map (buiten werkruimte) doorzoeken op {{regex}}", + "didSearchOutsideWorkspace": "Zoo heeft deze map (buiten werkruimte) doorzocht op {{regex}}", + "wantsToViewTopLevelOutsideWorkspace": "Zoo wil de bovenliggende bestanden in deze map (buiten werkruimte) bekijken", + "didViewTopLevelOutsideWorkspace": "Zoo heeft de bovenliggende bestanden in deze map (buiten werkruimte) bekeken", + "wantsToViewRecursiveOutsideWorkspace": "Zoo wil alle bestanden in deze map (buiten werkruimte) recursief bekijken", + "didViewRecursiveOutsideWorkspace": "Zoo heeft alle bestanden in deze map (buiten werkruimte) recursief bekeken", + "wantsToViewMultipleDirectories": "Zoo wil meerdere mappen bekijken" }, "commandOutput": "Commando-uitvoer", "commandExecution": { @@ -240,24 +230,24 @@ "response": "Antwoord", "arguments": "Argumenten", "text": { - "rooSaid": "Roo zei" + "rooSaid": "Zoo zei" }, "feedback": { "youSaid": "Jij zei" }, "mcp": { - "wantsToUseTool": "Roo wil een tool gebruiken op de {{serverName}} MCP-server", - "wantsToAccessResource": "Roo wil een bron benaderen op de {{serverName}} MCP-server" + "wantsToUseTool": "Zoo wil een tool gebruiken op de {{serverName}} MCP-server", + "wantsToAccessResource": "Zoo wil een bron benaderen op de {{serverName}} MCP-server" }, "modes": { - "wantsToSwitch": "Roo wil overschakelen naar {{mode}} modus", - "wantsToSwitchWithReason": "Roo wil overschakelen naar {{mode}} modus omdat: {{reason}}", - "didSwitch": "Roo is overgeschakeld naar {{mode}} modus", - "didSwitchWithReason": "Roo is overgeschakeld naar {{mode}} modus omdat: {{reason}}" + "wantsToSwitch": "Zoo wil overschakelen naar {{mode}} modus", + "wantsToSwitchWithReason": "Zoo wil overschakelen naar {{mode}} modus omdat: {{reason}}", + "didSwitch": "Zoo is overgeschakeld naar {{mode}} modus", + "didSwitchWithReason": "Zoo is overgeschakeld naar {{mode}} modus omdat: {{reason}}" }, "subtasks": { - "wantsToCreate": "Roo wil een nieuwe subtaak aanmaken in {{mode}} modus", - "wantsToFinish": "Roo wil deze subtaak voltooien", + "wantsToCreate": "Zoo wil een nieuwe subtaak aanmaken in {{mode}} modus", + "wantsToFinish": "Zoo wil deze subtaak voltooien", "newTaskContent": "Subtaak-instructies", "completionContent": "Subtaak voltooid", "resultContent": "Subtaakresultaten", @@ -266,7 +256,7 @@ "goToSubtask": "Taak weergeven" }, "questions": { - "hasQuestion": "Roo heeft een vraag" + "hasQuestion": "Zoo heeft een vraag" }, "taskCompleted": "Taak voltooid", "error": "Fout", @@ -280,14 +270,14 @@ "diffError": { "title": "Bewerking mislukt" }, - "troubleMessage": "Roo ondervindt problemen...", + "troubleMessage": "Zoo ondervindt problemen...", "errorDetails": { "link": "Details", "title": "Foutdetails", "copyToClipboard": "Naar klembord kopiëren", "copied": "Gekopieerd!", "diagnostics": "Gedetailleerde foutinformatie ophalen", - "proxyProvider": "Je lijkt een proxy-gebaseerde provider te gebruiken. Zorg ervoor dat je de logs controleert en dat het geen Roo-verzoeken herschrijft." + "proxyProvider": "Je lijkt een proxy-gebaseerde provider te gebruiken. Zorg ervoor dat je de logs controleert en dat het geen Zoo-verzoeken herschrijft." }, "powershell": { "issues": "Het lijkt erop dat je problemen hebt met Windows PowerShell, zie deze" @@ -311,23 +301,16 @@ "triggerLabelAll": "BRRR" }, "announcement": { - "title": "Roo Code {{version}} uitgebracht", - "support": "Steun Roo Code door ons een ster te geven op GitHub.", - "stealthModel": { - "feature": "Beperkt tijd GRATIS stealth model - Code Supernova: Nu geüpgraded met een 1M token contextvenster! Een veelzijdig agentisch codeermodel dat beeldinvoer ondersteunt, beschikbaar via Roo Code Cloud.", - "note": "(Opmerking: prompts en aanvullingen worden gelogd door de modelmaker en gebruikt om het model te verbeteren)", - "connectButton": "Verbinden met Roo Code Cloud", - "selectModel": "Selecteer roo/code-supernova van de Roo Code Cloud provider in Instellingen om te beginnen.", - "goToSettingsButton": "Ga naar Instellingen" - }, + "title": "Zoo Code {{version}} uitgebracht", + "support": "Steun Zoo Code door ons een ster te geven op GitHub.", "handoff": { - "heading": "De Roo Code-plugin gaat niet weg.", - "description": "Je hebt misschien de recente aankondiging gezien dat Roo Code 3 miljoen installaties heeft bereikt en het oorspronkelijke team zich volledig richt op Roomote. We weten dat dat nieuws voor velen van jullie moeilijk was. Deze plugin betekent veel voor ons en voor jou, en we horen je. Het goede nieuws: een community-team heeft zich aangemeld om Roo Code voort te zetten, en we werken samen aan een officiële overdracht, zodat de plugin waar je op vertrouwt onderhouden en verbeterd blijft worden.", - "readMore": "Lees de originele aankondiging van Matt Rubens" + "heading": "Zoo Code is terug, nu als een door de community onderhouden plugin genaamd Zoo Code!!", + "description": "Als je het gemist hebt: het Zoo Code-team heeft onlangs aangekondigd dat het de ontwikkeling van Zoo Code afbouwt en het bestaande werk archiveert. Maar geen zorgen: de community is opgestaan om de erfenis van Zoo Code voort te zetten met een nieuwe naam en een nieuw thuis. We zijn niet langer slechts één \"Roo\", maar een community — een \"Zoo\", zogezegd. Zoo Code is een door de community onderhouden plugin die verdergaat waar Zoo Code ophield, en we zetten ons ervoor in om de geest van Roo levend te houden terwijl we ook nieuwe functies en verbeteringen introduceren. We willen het hele Zoo Code-team enorm bedanken voor hun geweldige werk en voor het maken van zo'n fantastisch hulpmiddel voor ontwikkelaars. We kijken ernaar uit om verder te bouwen op hun fundament en te zien waar de community Zoo Code in de toekomst naartoe brengt!", + "readMore": "Bekijk de nieuwe homepage van Zoo Code en lees de volledige aankondiging" }, "release": { "heading": "Wat is er nieuw:", - "gpt55": "GPT-5.5 via OpenAI Codex: GPT-5.5-ondersteuning toegevoegd in de OpenAI Codex-provider, zodat je het nieuwste model direct vanuit Roo Code kunt gebruiken.", + "gpt55": "GPT-5.5 via OpenAI Codex: GPT-5.5-ondersteuning toegevoegd in de OpenAI Codex-provider, zodat je het nieuwste model direct vanuit Zoo Code kunt gebruiken.", "claudeOpus47": "Claude Opus 4.7 op Vertex AI: Claude Opus 4.7 toegevoegd aan de Vertex AI-provider voor Anthropic's nieuwste vlaggenschip-reasoningmodel.", "checkpointNav": "Navigatie naar vorige checkpoints: Bediening toegevoegd in de chat om terug te springen door eerdere checkpoints, met volledige i18n-ondersteuning." }, @@ -358,8 +341,8 @@ } }, "skill": { - "wantsToLoad": "Roo wil een vaardigheid laden", - "didLoad": "Roo heeft een vaardigheid geladen" + "wantsToLoad": "Zoo wil een vaardigheid laden", + "didLoad": "Zoo heeft een vaardigheid geladen" }, "followUpSuggest": { "copyToInput": "Kopiëren naar invoer (zelfde als shift + klik)", @@ -380,24 +363,24 @@ "profileViolationWarning": "Het huidige profiel is niet compatibel met de instellingen van uw organisatie", "shellIntegration": { "title": "Waarschuwing commando-uitvoering", - "description": "Je commando wordt uitgevoerd zonder VSCode-terminal shell-integratie. Om deze waarschuwing te onderdrukken kun je shell-integratie uitschakelen in het gedeelte Terminal van de Roo Code-instellingen of de VSCode-terminalintegratie oplossen via de onderstaande link.", + "description": "Je commando wordt uitgevoerd zonder VSCode-terminal-shellintegratie. Om deze waarschuwing te onderdrukken kun je shellintegratie uitschakelen in de sectie Terminal van de Zoo Code-instellingen of de VSCode-terminalintegratie oplossen via de onderstaande link.", "troubleshooting": "Klik hier voor shell-integratie documentatie." }, "ask": { "autoApprovedRequestLimitReached": { "title": "Limiet voor automatisch goedgekeurde verzoeken bereikt", - "description": "Roo heeft de automatisch goedgekeurde limiet van {{count}} API-verzoek(en) bereikt. Wil je de teller resetten en doorgaan met de taak?", + "description": "Zoo heeft de automatisch goedgekeurde limiet van {{count}} API-verzoek(en) bereikt. Wil je de teller resetten en doorgaan met de taak?", "button": "Resetten en doorgaan" }, "autoApprovedCostLimitReached": { "title": "Limiet voor automatisch goedgekeurde kosten bereikt", "button": "Resetten en doorgaan", - "description": "Roo heeft de automatisch goedgekeurde kostenlimiet van ${{count}} bereikt. Wilt u de kosten resetten en doorgaan met de taak?" + "description": "Zoo heeft de automatisch goedgekeurde kostenlimiet van ${{count}} bereikt. Wilt u de kosten resetten en doorgaan met de taak?" } }, "codebaseSearch": { - "wantsToSearch": "Roo wil de codebase doorzoeken op {{query}}", - "wantsToSearchWithPath": "Roo wil de codebase doorzoeken op {{query}} in {{path}}", + "wantsToSearch": "Zoo wil de codebase doorzoeken op {{query}}", + "wantsToSearchWithPath": "Zoo wil de codebase doorzoeken op {{query}} in {{path}}", "didSearch_one": "1 resultaat gevonden", "didSearch_other": "{{count}} resultaten gevonden", "resultTooltip": "Gelijkenisscore: {{score}} (klik om bestand te openen)" @@ -438,7 +421,7 @@ "ariaLabel": "Versie {{version}} - Klik om release notes te bekijken" }, "rooCloudCTA": { - "title": "Roo Code Cloud evolueert!", + "title": "Zoo Code Cloud evolueert!", "description": "Voer externe agenten uit in de cloud, krijg overal toegang tot je taken, werk samen met anderen en nog veel meer.", "joinWaitlist": "Meld je aan om de laatste updates te ontvangen." }, @@ -479,8 +462,8 @@ "clickToEdit": "Klik om bericht te bewerken" }, "slashCommand": { - "wantsToRun": "Roo wil een slash commando uitvoeren", - "didRun": "Roo heeft een slash commando uitgevoerd" + "wantsToRun": "Zoo wil een slash commando uitvoeren", + "didRun": "Zoo heeft een slash commando uitgevoerd" }, "todo": { "partial": "{{completed}} van {{total}} to-do's voltooid", @@ -499,11 +482,11 @@ "openMcpSettings": "MCP-instellingen openen" }, "readCommandOutput": { - "title": "Roo read command output" + "title": "Zoo read command output" }, "retiredProvider": { "title": "Provider wordt niet meer ondersteund", - "message": "Sorry, deze provider wordt niet meer ondersteund. We zagen dat heel weinig Roo-gebruikers het daadwerkelijk gebruikten en we moeten de omvang van onze codebase verkleinen zodat we snel kunnen blijven leveren en onze community goed kunnen blijven bedienen. Het was een heel moeilijke beslissing, maar het stelt ons in staat om ons te richten op wat het belangrijkst voor je is. Het is vervelend, dat weten we.", + "message": "Deze provider is niet meer beschikbaar. Selecteer een ondersteunde provider om door te gaan.", "openSettings": "Instellingen openen" } } diff --git a/webview-ui/src/i18n/locales/nl/cloud.json b/webview-ui/src/i18n/locales/nl/cloud.json deleted file mode 100644 index 4f58f689e25..00000000000 --- a/webview-ui/src/i18n/locales/nl/cloud.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "title": "Cloud", - "profilePicture": "Profielfoto", - "logOut": "Uitloggen", - "testApiAuthentication": "API-authenticatie testen", - "signIn": "Verbind met Roo Code Cloud", - "connect": "Aan de slag", - "cloudBenefitsTitle": "Probeer Roo Code Cloud", - "cloudBenefitProvider": "Toegang tot gratis en betaalde modellen die geweldig werken met Roo", - "cloudBenefitCloudAgents": "Geef taken aan autonome Cloud-agents", - "cloudBenefitTriggers": "Krijg code reviews op GitHub, start taken vanuit Slack en meer", - "cloudBenefitWalkaway": "Volg en beheer taken van overal (inclusief je telefoon)", - "cloudBenefitHistory": "Toegang tot je taakgeschiedenis van overal en deel ze met anderen", - "cloudBenefitMetrics": "Krijg een holistisch overzicht van je tokenverbruik", - "visitCloudWebsite": "Bezoek Roo Code Cloud", - "taskSync": "Taaksynchronisatie", - "taskSyncDescription": "Synchroniseer je taken om ze te bekijken en delen op Roo Code Cloud", - "taskSyncManagedByOrganization": "Taaksynchronisatie wordt beheerd door uw organisatie", - "usageMetricsAlwaysReported": "Modelgebruiksinformatie wordt altijd gerapporteerd wanneer ingelogd", - "authWaiting": "Wachten tot authenticatie voltooid is...", - "havingTrouble": "Problemen?", - "pasteCallbackUrl": "Kopieer de redirect-URL uit je browser en plak hem hier:", - "startOver": "Opnieuw beginnen", - "personalAccount": "Persoonlijk Account", - "switchAccount": "Wissel van Roo Code Cloud Account", - "createTeamAccount": "Teamaccount aanmaken", - "cloudUrlPillLabel": "Roo Code Cloud URL", - "upsell": { - "autoApprovePowerUser": "Roo wat onafhankelijkheid geven? Bedien het overal met Roo Code Cloud. Meer informatie.", - "longRunningTask": "Dit kan even duren. Ga overal verder met de Cloud.", - "taskList": "Geniet je van Roo? Bekijk Roo Code Cloud: volg en beheer je taken overal, voer autonome Cloud-agents uit, krijg gebruiksstatistieken en meer. Meer informatie." - } -} diff --git a/webview-ui/src/i18n/locales/nl/marketplace.json b/webview-ui/src/i18n/locales/nl/marketplace.json index b94c6294401..1d83e7aa6b9 100644 --- a/webview-ui/src/i18n/locales/nl/marketplace.json +++ b/webview-ui/src/i18n/locales/nl/marketplace.json @@ -1,5 +1,5 @@ { - "title": "Roo Marketplace", + "title": "Zoo Marketplace", "tabs": { "installed": "Geïnstalleerd", "settings": "Instellingen", diff --git a/webview-ui/src/i18n/locales/nl/mcp.json b/webview-ui/src/i18n/locales/nl/mcp.json index 1eceb8681f0..8a4b2089c05 100644 --- a/webview-ui/src/i18n/locales/nl/mcp.json +++ b/webview-ui/src/i18n/locales/nl/mcp.json @@ -2,16 +2,16 @@ "title": "MCP-servers", "done": "Gereed", "marketplace": "MCP-marktplaats", - "description": "Het <0>Model Context Protocol maakt communicatie mogelijk met lokaal draaiende MCP-servers die extra tools en bronnen bieden om Roo's mogelijkheden uit te breiden. Je kunt <1>community-servers gebruiken of Roo vragen om nieuwe tools te maken die specifiek zijn voor jouw workflow (bijv. 'voeg een tool toe die de nieuwste npm-documentatie ophaalt').", + "description": "Het <0>Model Context Protocol maakt communicatie mogelijk met lokaal draaiende MCP-servers die extra tools en bronnen bieden om Zoo's mogelijkheden uit te breiden. Je kunt <1>community-servers gebruiken of Zoo vragen om nieuwe tools te maken die specifiek zijn voor jouw workflow (bijv. 'voeg een tool toe die de nieuwste npm-documentatie ophaalt').", "instructions": "Instructies", "enableToggle": { "title": "MCP-servers inschakelen", - "description": "Indien ingeschakeld, kan Roo communiceren met MCP-servers voor geavanceerde functionaliteit. Gebruik je geen MCP, dan kun je dit uitschakelen om het tokengebruik te verminderen." + "description": "Indien ingeschakeld, kan Zoo communiceren met MCP-servers voor geavanceerde functionaliteit. Gebruik je geen MCP, dan kun je dit uitschakelen om het tokengebruik te verminderen." }, "enableServerCreation": { "title": "Aanmaken van MCP-server inschakelen", - "description": "Indien ingeschakeld, kan Roo je helpen nieuwe MCP-servers te maken via commando's zoals 'voeg een nieuwe tool toe aan...'. Heb je dit niet nodig, schakel het dan uit om het tokengebruik te verminderen.", - "hint": "Tip: Zet deze instelling uit als je Roo niet actief vraagt om een nieuwe MCP-server te maken, om API-tokenkosten te besparen." + "description": "Indien ingeschakeld, kan Zoo je helpen nieuwe MCP-servers te maken via commando's zoals 'voeg een nieuwe tool toe aan...'. Heb je dit niet nodig, schakel het dan uit om het tokengebruik te verminderen.", + "hint": "Tip: Zet deze instelling uit als je Zoo niet actief vraagt om een nieuwe MCP-server te maken, om API-tokenkosten te besparen." }, "editGlobalMCP": "Globale MCP bewerken", "editProjectMCP": "Project-MCP bewerken", diff --git a/webview-ui/src/i18n/locales/nl/prompts.json b/webview-ui/src/i18n/locales/nl/prompts.json index b1be9df5686..3a0a7d5445c 100644 --- a/webview-ui/src/i18n/locales/nl/prompts.json +++ b/webview-ui/src/i18n/locales/nl/prompts.json @@ -9,7 +9,7 @@ "editModesConfig": "Modusconfiguratie bewerken", "editGlobalModes": "Globale modi bewerken", "editProjectModes": "Projectmodi bewerken (.roomodes)", - "createModeHelpText": "Modi zijn gespecialiseerde persona's die het gedrag van Roo aanpassen. <0>Meer informatie over het gebruik van modi of <1>het aanpassen van modi.", + "createModeHelpText": "Modi zijn gespecialiseerde persona's die het gedrag van Zoo aanpassen. <0>Meer informatie over het gebruik van modi of <1>het aanpassen van modi.", "selectMode": "Modus zoeken" }, "apiConfiguration": { @@ -33,7 +33,7 @@ "roleDefinition": { "title": "Roldefinitie", "resetToDefault": "Terugzetten naar standaard", - "description": "Definieer Roo's expertise en persoonlijkheid voor deze modus. Deze beschrijving bepaalt hoe Roo zich presenteert en taken benadert." + "description": "Definieer Zoo's expertise en persoonlijkheid voor deze modus. Deze beschrijving bepaalt hoe Zoo zich presenteert en taken benadert." }, "description": { "title": "Korte beschrijving (voor mensen)", @@ -102,7 +102,7 @@ "types": { "ENHANCE": { "label": "Prompt verbeteren", - "description": "Gebruik promptverbetering om op maat gemaakte suggesties of verbeteringen voor je invoer te krijgen. Zo begrijpt Roo je intentie en krijg je de best mogelijke antwoorden. Beschikbaar via het ✨-icoon in de chat." + "description": "Gebruik promptverbetering om op maat gemaakte suggesties of verbeteringen voor je invoer te krijgen. Zo begrijpt Zoo je intentie en krijg je de best mogelijke antwoorden. Beschikbaar via het ✨-icoon in de chat." }, "CONDENSE": { "label": "Contextcondensatie", @@ -167,7 +167,7 @@ }, "roleDefinition": { "label": "Roldefinitie", - "description": "Definieer Roo's expertise en persoonlijkheid voor deze modus." + "description": "Definieer Zoo's expertise en persoonlijkheid voor deze modus." }, "whenToUse": { "label": "Wanneer te gebruiken (optioneel)", diff --git a/webview-ui/src/i18n/locales/nl/settings.json b/webview-ui/src/i18n/locales/nl/settings.json index e54277ade4e..a3205275a3f 100644 --- a/webview-ui/src/i18n/locales/nl/settings.json +++ b/webview-ui/src/i18n/locales/nl/settings.json @@ -40,7 +40,7 @@ "ui": "UI", "experimental": "Experimenteel", "language": "Taal", - "about": "Over Roo Code", + "about": "Over Zoo Code", "skills": "Skills" }, "about": { @@ -56,7 +56,7 @@ "label": "Kwetsbaarheid ontdekt?", "link": "Volg ons openbaarmakingsproces" }, - "community": "Wil je tips of gewoon even hangen met andere Roo Code-gebruikers? Sluit je aan bij reddit.com/r/RooCode of discord.gg/roocode", + "community": "Wil je tips of gewoon even hangen met andere Zoo Code-gebruikers? Sluit je aan bij reddit.com/r/RooCode of discord.gg/roocode", "contactAndCommunity": "Contact & Gemeenschap", "manageSettings": "Instellingen Beheren", "debugMode": { @@ -100,7 +100,7 @@ "footer": "Gebruik slash-commando's voor snelle toegang tot veelgebruikte prompts en workflows." }, "prompts": { - "description": "Configureer ondersteuningsprompts die worden gebruikt voor snelle acties zoals het verbeteren van prompts, het uitleggen van code en het oplossen van problemen. Deze prompts helpen Roo om betere ondersteuning te bieden voor veelvoorkomende ontwikkelingstaken." + "description": "Configureer ondersteuningsprompts die worden gebruikt voor snelle acties zoals het verbeteren van prompts, het uitleggen van code en het oplossen van problemen. Deze prompts helpen Zoo om betere ondersteuning te bieden voor veelvoorkomende ontwikkelingstaken." }, "codeIndex": { "title": "Codebase indexering", @@ -223,10 +223,10 @@ "disabledAriaLabel": "Automatisch goedkeuren uitgeschakeld - selecteer eerst opties", "readOnly": { "label": "Lezen", - "description": "Indien ingeschakeld, bekijkt Roo automatisch de inhoud van mappen en leest bestanden zonder dat je op de Goedkeuren-knop hoeft te klikken.", + "description": "Indien ingeschakeld, bekijkt Zoo automatisch de inhoud van mappen en leest bestanden zonder dat je op de Goedkeuren-knop hoeft te klikken.", "outsideWorkspace": { "label": "Inclusief bestanden buiten werkruimte", - "description": "Sta Roo toe om bestanden buiten de huidige werkruimte te lezen zonder goedkeuring." + "description": "Sta Zoo toe om bestanden buiten de huidige werkruimte te lezen zonder goedkeuring." } }, "write": { @@ -235,11 +235,11 @@ "delayLabel": "Vertraging na schrijven om diagnostiek de kans te geven mogelijke problemen te detecteren", "outsideWorkspace": { "label": "Inclusief bestanden buiten werkruimte", - "description": "Sta Roo toe om bestanden buiten de huidige werkruimte aan te maken en te bewerken zonder goedkeuring." + "description": "Sta Zoo toe om bestanden buiten de huidige werkruimte aan te maken en te bewerken zonder goedkeuring." }, "protected": { "label": "Inclusief beschermde bestanden", - "description": "Sta Roo toe om beschermde bestanden (zoals .rooignore en .roo/ configuratiebestanden) aan te maken en te bewerken zonder goedkeuring." + "description": "Sta Zoo toe om beschermde bestanden (zoals .rooignore en .roo/ configuratiebestanden) aan te maken en te bewerken zonder goedkeuring." } }, "mcp": { @@ -306,7 +306,7 @@ "searchProviderPlaceholder": "Zoek providers", "noProviderMatchFound": "Geen providers gevonden", "noMatchFound": "Geen overeenkomende profielen gevonden", - "retiredProviderMessage": "Sorry, deze provider wordt niet meer ondersteund. We zagen dat heel weinig Roo-gebruikers het daadwerkelijk gebruikten en we moeten de omvang van onze codebase verkleinen zodat we snel kunnen blijven leveren en onze community goed kunnen blijven bedienen. Het was een heel moeilijke beslissing, maar het stelt ons in staat om ons te richten op wat het belangrijkst voor je is. Het is vervelend, dat weten we.", + "retiredProviderMessage": "Deze provider is niet meer beschikbaar. Selecteer een ondersteunde provider om door te gaan.", "vscodeLmDescription": "De VS Code Language Model API stelt je in staat modellen te draaien die door andere VS Code-extensies worden geleverd (waaronder GitHub Copilot). De eenvoudigste manier om te beginnen is door de Copilot- en Copilot Chat-extensies te installeren vanuit de VS Code Marketplace.", "awsCustomArnUse": "Voer een geldige Amazon Bedrock ARN in voor het model dat je wilt gebruiken. Voorbeeldformaten:", "awsCustomArnDesc": "Zorg ervoor dat de regio in de ARN overeenkomt met je geselecteerde AWS-regio hierboven.", @@ -456,7 +456,7 @@ "draftModelDesc": "Draft-model moet uit dezelfde modelfamilie komen voor correcte speculatieve decodering.", "selectDraftModel": "Selecteer draft-model", "noModelsFound": "Geen draft-modellen gevonden. Zorg dat LM Studio draait met Server Mode ingeschakeld.", - "description": "LM Studio laat je modellen lokaal op je computer draaien. Zie hun quickstart-gids voor instructies. Je moet ook de lokale server-functie van LM Studio starten om het met deze extensie te gebruiken. Let op: Roo Code gebruikt complexe prompts en werkt het beste met Claude-modellen. Minder krachtige modellen werken mogelijk niet zoals verwacht." + "description": "LM Studio laat je modellen lokaal op je computer draaien. Zie hun quickstart-gids voor instructies. Je moet ook de lokale server-functie van LM Studio starten om het met deze extensie te gebruiken. Let op: Zoo Code gebruikt complexe prompts en werkt het beste met Claude-modellen. Minder krachtige modellen werken mogelijk niet zoals verwacht." }, "ollama": { "baseUrl": "Basis-URL (optioneel)", @@ -466,11 +466,7 @@ "numCtx": "Contextvenstergrootte (num_ctx)", "numCtxHelp": "Overschrijft de standaard contextvenstergrootte van het model. Laat leeg om de Modelfile-configuratie van het model te gebruiken. De minimumwaarde is 128.", "description": "Ollama laat je modellen lokaal op je computer draaien. Zie hun quickstart-gids voor instructies.", - "warning": "Let op: Roo Code gebruikt complexe prompts en werkt het beste met Claude-modellen. Minder krachtige modellen werken mogelijk niet zoals verwacht." - }, - "roo": { - "authenticatedMessage": "Veilig geauthenticeerd via je Roo Code Cloud-account.", - "connectButton": "Verbinden met Roo Code Cloud" + "warning": "Let op: Zoo Code gebruikt complexe prompts en werkt het beste met Claude-modellen. Minder krachtige modellen werken mogelijk niet zoals verwacht." }, "openRouter": { "providerRouting": { @@ -480,7 +476,7 @@ } }, "customModel": { - "capabilities": "Stel de mogelijkheden en prijzen in voor je aangepaste OpenAI-compatibele model. Wees voorzichtig met het opgeven van de modelmogelijkheden, want deze kunnen de prestaties van Roo Code beïnvloeden.", + "capabilities": "Stel de mogelijkheden en prijzen in voor je aangepaste OpenAI-compatibele model. Wees voorzichtig met het opgeven van de modelmogelijkheden, want deze kunnen de prestaties van Zoo Code beïnvloeden.", "maxTokens": { "label": "Maximaal aantal outputtokens", "description": "Maximaal aantal tokens dat het model in een antwoord kan genereren. (Geef -1 op om de server het maximum te laten bepalen.)" @@ -527,7 +523,7 @@ }, "consecutiveMistakeLimit": { "label": "Fout- & Herhalingslimiet", - "description": "Aantal opeenvolgende fouten of herhaalde acties voordat het dialoogvenster 'Roo ondervindt problemen' wordt weergegeven. Zet op 0 om dit veiligheidsmechanisme uit te schakelen (wordt nooit geactiveerd).", + "description": "Aantal opeenvolgende fouten of herhaalde acties voordat het dialoogvenster 'Zoo ondervindt problemen' wordt weergegeven. Zet op 0 om dit veiligheidsmechanisme uit te schakelen (wordt nooit geactiveerd).", "unlimitedDescription": "Onbeperkt aantal nieuwe pogingen ingeschakeld (automatisch doorgaan). Het dialoogvenster zal nooit verschijnen.", "warning": "⚠️ Instellen op 0 staat onbeperkte nieuwe pogingen toe, wat aanzienlijk API-gebruik kan verbruiken" }, @@ -563,18 +559,18 @@ }, "enable": { "label": "Automatische checkpoints inschakelen", - "description": "Indien ingeschakeld, maakt Roo automatisch checkpoints tijdens het uitvoeren van taken, zodat je eenvoudig wijzigingen kunt bekijken of terugzetten. <0>Meer informatie" + "description": "Indien ingeschakeld, maakt Zoo automatisch checkpoints tijdens het uitvoeren van taken, zodat je eenvoudig wijzigingen kunt bekijken of terugzetten. <0>Meer informatie" } }, "notifications": { "sound": { "label": "Geluidseffecten inschakelen", - "description": "Indien ingeschakeld, speelt Roo geluidseffecten af voor meldingen en gebeurtenissen.", + "description": "Indien ingeschakeld, speelt Zoo geluidseffecten af voor meldingen en gebeurtenissen.", "volumeLabel": "Volume" }, "tts": { "label": "Tekst-naar-spraak inschakelen", - "description": "Indien ingeschakeld, leest Roo zijn antwoorden hardop voor via tekst-naar-spraak.", + "description": "Indien ingeschakeld, leest Zoo zijn antwoorden hardop voor via tekst-naar-spraak.", "speedLabel": "Snelheid" } }, @@ -582,7 +578,7 @@ "description": "Bepaal welke informatie wordt opgenomen in het contextvenster van de AI, wat invloed heeft op tokengebruik en antwoordkwaliteit", "autoCondenseContextPercent": { "label": "Drempelwaarde om intelligente contextcompressie te activeren", - "description": "Wanneer het contextvenster deze drempelwaarde bereikt, zal Roo het automatisch comprimeren." + "description": "Wanneer het contextvenster deze drempelwaarde bereikt, zal Zoo het automatisch comprimeren." }, "condensingApiConfiguration": { "label": "API-configuratie voor contextcondensatie", @@ -598,7 +594,7 @@ }, "autoCondenseContext": { "name": "Automatisch intelligente contextcompressie activeren", - "description": "Wanneer ingeschakeld, zal Roo automatisch de context comprimeren wanneer de drempel wordt bereikt. Wanneer uitgeschakeld, kun je nog steeds handmatig contextcompressie activeren." + "description": "Wanneer ingeschakeld, zal Zoo automatisch de context comprimeren wanneer de drempel wordt bereikt. Wanneer uitgeschakeld, kun je nog steeds handmatig contextcompressie activeren." }, "openTabs": { "label": "Limiet geopende tabbladen in context", @@ -614,7 +610,7 @@ }, "maxReadFile": { "label": "Automatisch afkappen bij bestandslezen", - "description": "Roo leest dit aantal regels wanneer het model geen begin/eindwaarden opgeeft. Als dit aantal lager is dan het totaal, genereert Roo een index van codelijnen. Speciale gevallen: -1 laat Roo het hele bestand lezen (zonder indexering), 0 leest geen regels en geeft alleen een minimale index. Lagere waarden minimaliseren het initiële contextgebruik en maken precieze vervolg-leesopdrachten mogelijk. Expliciete begin/eind-aanvragen worden niet door deze instelling beperkt.", + "description": "Zoo leest dit aantal regels wanneer het model geen begin/eindwaarden opgeeft. Als dit aantal lager is dan het totaal, genereert Zoo een index van codelijnen. Speciale gevallen: -1 laat Zoo het hele bestand lezen (zonder indexering), 0 leest geen regels en geeft alleen een minimale index. Lagere waarden minimaliseren het initiële contextgebruik en maken precieze vervolg-leesopdrachten mogelijk. Expliciete begin/eind-aanvragen worden niet door deze instelling beperkt.", "lines": "regels", "always_full_read": "Altijd volledig bestand lezen" }, @@ -685,15 +681,15 @@ }, "outputLineLimit": { "label": "Terminaluitvoerlimiet", - "description": "Behoudt eerste en laatste regels en verwijdert middelste om onder de limiet te blijven. Verlaag om tokens te besparen; verhoog om Roo meer tussendetails te geven. Roo ziet een placeholder waar inhoud wordt overgeslagen.<0>Meer informatie" + "description": "Behoudt eerste en laatste regels en verwijdert middelste om onder de limiet te blijven. Verlaag om tokens te besparen; verhoog om Zoo meer tussendetails te geven. Zoo ziet een placeholder waar inhoud wordt overgeslagen.<0>Meer informatie" }, "outputCharacterLimit": { "label": "Terminal-tekenlimiet", - "description": "Overschrijft de regellimiet om geheugenproblemen te voorkomen door een harde limiet op uitvoergrootte af te dwingen. Bij overschrijding behoudt het begin en einde en toont een placeholder aan Roo waar inhoud wordt overgeslagen. <0>Meer informatie" + "description": "Overschrijft de regellimiet om geheugenproblemen te voorkomen door een harde limiet op uitvoergrootte af te dwingen. Bij overschrijding behoudt het begin en einde en toont een placeholder aan Zoo waar inhoud wordt overgeslagen. <0>Meer informatie" }, "outputPreviewSize": { "label": "Grootte opdrachtuitvoer voorvertoning", - "description": "Bepaalt hoeveel opdrachtuitvoer Roo direct ziet. Volledige uitvoer wordt altijd opgeslagen en is toegankelijk wanneer nodig.", + "description": "Bepaalt hoeveel opdrachtuitvoer Zoo direct ziet. Volledige uitvoer wordt altijd opgeslagen en is toegankelijk wanneer nodig.", "options": { "small": "Klein (5KB)", "medium": "Gemiddeld (10KB)", @@ -706,7 +702,7 @@ }, "shellIntegrationDisabled": { "label": "Inline Terminal gebruiken (aanbevolen)", - "description": "Voer commando's uit in de Inline Terminal (chat) om shell-profielen/integratie te omzeilen voor snellere, betrouwbaardere runs. Wanneer uitgeschakeld gebruikt Roo de VS Code-terminal met je shell-profiel, prompts en plugins. <0>Meer informatie" + "description": "Voer commando's uit in de Inline Terminal (chat) om shell-profielen/integratie te omzeilen voor snellere, betrouwbaardere runs. Wanneer uitgeschakeld gebruikt Zoo de VS Code-terminal met je shell-profiel, prompts en plugins. <0>Meer informatie" }, "commandDelay": { "label": "Terminal-commandovertraging", @@ -743,7 +739,7 @@ "advanced": { "diff": { "label": "Bewerken via diffs inschakelen", - "description": "Indien ingeschakeld kan Roo sneller bestanden bewerken en worden afgekorte volledige-bestandswijzigingen automatisch geweigerd", + "description": "Indien ingeschakeld kan Zoo sneller bestanden bewerken en worden afgekorte volledige-bestandswijzigingen automatisch geweigerd", "strategy": { "label": "Diff-strategie", "options": { @@ -760,7 +756,7 @@ }, "todoList": { "label": "Takenlijst-tool inschakelen", - "description": "Wanneer ingeschakeld, kan Roo takenlijsten maken en beheren om de voortgang van taken bij te houden. Dit helpt complexe taken te organiseren in beheersbare stappen." + "description": "Wanneer ingeschakeld, kan Zoo takenlijsten maken en beheren om de voortgang van taken bij te houden. Dit helpt complexe taken te organiseren in beheersbare stappen." } }, "experimental": { @@ -770,15 +766,15 @@ }, "INSERT_BLOCK": { "name": "Experimentele inhoud-invoeg-tool gebruiken", - "description": "Schakel de experimentele inhoud-invoeg-tool in, waarmee Roo inhoud op specifieke regelnummers kan invoegen zonder een diff te maken." + "description": "Schakel de experimentele inhoud-invoeg-tool in, waarmee Zoo inhoud op specifieke regelnummers kan invoegen zonder een diff te maken." }, "MULTI_SEARCH_AND_REPLACE": { "name": "Experimentele multi-block diff-tool gebruiken", - "description": "Indien ingeschakeld, gebruikt Roo de multi-block diff-tool. Hiermee wordt geprobeerd meerdere codeblokken in het bestand in één verzoek bij te werken." + "description": "Indien ingeschakeld, gebruikt Zoo de multi-block diff-tool. Hiermee wordt geprobeerd meerdere codeblokken in het bestand in één verzoek bij te werken." }, "CONCURRENT_FILE_READS": { "name": "Gelijktijdig lezen van bestanden inschakelen", - "description": "Wanneer ingeschakeld, kan Roo meerdere bestanden in één verzoek lezen. Wanneer uitgeschakeld, moet Roo bestanden één voor één lezen. Uitschakelen kan helpen bij het werken met minder capabele modellen of wanneer u meer controle over bestandstoegang wilt." + "description": "Wanneer ingeschakeld, kan Zoo meerdere bestanden in één verzoek lezen. Wanneer uitgeschakeld, moet Zoo bestanden één voor één lezen. Uitschakelen kan helpen bij het werken met minder capabele modellen of wanneer u meer controle over bestandstoegang wilt." }, "MARKETPLACE": { "name": "Marketplace inschakelen", @@ -786,7 +782,7 @@ }, "PREVENT_FOCUS_DISRUPTION": { "name": "Achtergrondbewerking", - "description": "Voorkomt editor focus verstoring wanneer ingeschakeld. Bestandsbewerkingen gebeuren op de achtergrond zonder diff-weergaven te openen of focus te stelen. Je kunt ononderbroken doorwerken terwijl Roo wijzigingen aanbrengt. Bestanden kunnen zonder focus worden geopend om diagnostiek vast te leggen of volledig gesloten blijven." + "description": "Voorkomt editor focus verstoring wanneer ingeschakeld. Bestandsbewerkingen gebeuren op de achtergrond zonder diff-weergaven te openen of focus te stelen. Je kunt ononderbroken doorwerken terwijl Zoo wijzigingen aanbrengt. Bestanden kunnen zonder focus worden geopend om diagnostiek vast te leggen of volledig gesloten blijven." }, "ASSISTANT_MESSAGE_PARSER": { "name": "Nieuwe berichtparser gebruiken", @@ -800,7 +796,7 @@ "providerLabel": "Provider", "providerDescription": "Selecteer de provider voor het genereren van afbeeldingen.", "name": "AI-afbeeldingsgeneratie inschakelen", - "description": "Wanneer ingeschakeld, kan Roo afbeeldingen genereren van tekstprompts met behulp van OpenRouter's afbeeldingsgeneratiemodellen. Vereist een geconfigureerde OpenRouter API-sleutel.", + "description": "Wanneer ingeschakeld, kan Zoo afbeeldingen genereren van tekstprompts met behulp van OpenRouter's afbeeldingsgeneratiemodellen. Vereist een geconfigureerde OpenRouter API-sleutel.", "openRouterApiKeyLabel": "OpenRouter API-sleutel", "openRouterApiKeyPlaceholder": "Voer je OpenRouter API-sleutel in", "getApiKeyText": "Haal je API-sleutel op van", @@ -811,11 +807,11 @@ }, "RUN_SLASH_COMMAND": { "name": "Model-geïnitieerde slash-commando's inschakelen", - "description": "Wanneer ingeschakeld, kan Roo je slash-commando's uitvoeren om workflows uit te voeren." + "description": "Wanneer ingeschakeld, kan Zoo je slash-commando's uitvoeren om workflows uit te voeren." }, "CUSTOM_TOOLS": { "name": "Aangepaste tools inschakelen", - "description": "Indien ingeschakeld kan Roo aangepaste TypeScript/JavaScript-tools laden en gebruiken uit de map .roo/tools van je project of ~/.roo/tools voor globale tools. Opmerking: deze tools worden automatisch goedgekeurd.", + "description": "Indien ingeschakeld kan Zoo aangepaste TypeScript/JavaScript-tools laden en gebruiken uit de map .roo/tools van je project of ~/.roo/tools voor globale tools. Opmerking: deze tools worden automatisch goedgekeurd.", "toolsHeader": "Beschikbare aangepaste tools", "noTools": "Geen aangepaste tools geladen. Voeg .ts- of .js-bestanden toe aan de map .roo/tools van je project of ~/.roo/tools voor globale tools.", "refreshButton": "Vernieuwen", @@ -827,7 +823,7 @@ }, "promptCaching": { "label": "Prompt caching inschakelen", - "description": "Indien ingeschakeld, gebruikt Roo dit model met prompt caching om kosten te verlagen." + "description": "Indien ingeschakeld, gebruikt Zoo dit model met prompt caching om kosten te verlagen." }, "temperature": { "useCustom": "Aangepaste temperatuur gebruiken", @@ -857,7 +853,7 @@ } }, "modelPicker": { - "automaticFetch": "De extensie haalt automatisch de nieuwste lijst met modellen op van {{serviceName}}. Weet je niet welk model je moet kiezen? Roo Code werkt het beste met {{defaultModelId}}. Je kunt ook zoeken op 'free' voor gratis opties die nu beschikbaar zijn.", + "automaticFetch": "De extensie haalt automatisch de nieuwste lijst met modellen op van {{serviceName}}. Weet je niet welk model je moet kiezen? Zoo Code werkt het beste met {{defaultModelId}}. Je kunt ook zoeken op 'free' voor gratis opties die nu beschikbaar zijn.", "label": "Model", "searchPlaceholder": "Zoeken", "noMatchFound": "Geen overeenkomsten gevonden", @@ -867,7 +863,7 @@ "footer": { "telemetry": { "label": "Anonieme fout- en gebruiksrapportage toestaan", - "description": "Help Roo Code te verbeteren door anonieme gebruiksgegevens en foutmeldingen te versturen. Deze telemetrie verzamelt geen code, prompts of persoonlijke informatie. Zie ons privacybeleid voor meer details." + "description": "Help Zoo Code te verbeteren door anonieme gebruiksgegevens en foutmeldingen te versturen. Deze telemetrie verzamelt geen code, prompts of persoonlijke informatie. Zie ons privacybeleid voor meer details." }, "settings": { "import": "Importeren", diff --git a/webview-ui/src/i18n/locales/nl/welcome.json b/webview-ui/src/i18n/locales/nl/welcome.json index 22508d62868..035a9d85c61 100644 --- a/webview-ui/src/i18n/locales/nl/welcome.json +++ b/webview-ui/src/i18n/locales/nl/welcome.json @@ -1,52 +1,18 @@ { - "routers": { - "requesty": { - "description": "Je geoptimaliseerde LLM-router", - "incentive": "1 dollar gratis tegoed" - }, - "openrouter": { - "description": "Een geïntegreerde interface voor LLM's" - }, - "roo": { - "description": "De beste gratis modellen om mee te beginnen", - "incentive": "Probeer Roo gratis uit" - } - }, "landing": { "greeting": "Welkom bij Roo Code!", "introduction": "Met een reeks ingebouwde en uitbreidbare Modi laat Roo Code je plannen, ontwerpen, coderen, debuggen en je productiviteit verhogen als nooit tevoren.", - "accountMention": "Maak je Roo Code Cloud-account aan om te beginnen. Krijg krachtige modellen, webcontrole, analyses, ondersteuning en meer.", - "getStarted": "Roo-account aanmaken", - "noAccount": "of gebruik zonder account" + "getStarted": "Kies je provider" }, "providerSignup": { "heading": "Kies je provider", "chooseProvider": "Roo heeft een LLM-provider nodig om te werken. Kies er een om te beginnen, je kunt er later meer toevoegen.", - "rooCloudProvider": "Roo Code Router", - "rooCloudDescription": "De eenvoudigste manier om te beginnen is met de Roo Code Router: een zorgvuldig samengesteld mix van gratis en betaalde modellen tegen lage kosten.", - "learnMore": "Meer informatie", - "useAnotherProvider": "Provider van derden", - "useAnotherProviderDescription": "Voer een API-sleutel in en begin.", - "noApiKeys": "Wil je je niet bezighouden met API-sleutels en aparte accounts?", - "backToRoo": "Kies de Roo Code Router.", "goBack": "Terug", "finish": "Klaar" }, - "waitingForCloud": { - "heading": "Aanmelden bij Roo Code Cloud...", - "description": "We brengen je naar je browser om je aan te melden voor Roo Code Cloud. Dan brengen we je hierheen terug om af te ronden.", - "noPrompt": "Als je niet wordt gevraagd een URL te openen, klik dan hier.", - "havingTrouble": "Als je de registratie hebt voltooid maar problemen ondervindt, klik dan hier.", - "pasteUrl": "Plak de callback-URL uit je browser:", - "docsLink": "Werkt het niet? Raadpleeg de documentatie.", - "invalidURL": "Dit ziet er niet uit als een geldige callback-URL. Kopieer alstublieft wat Roo Code Cloud in je browser weergeeft.", - "goBack": "Terug" - }, - "startRouter": "We raden aan een LLM-router te gebruiken:", - "startCustom": "Of je kunt je eigen API-sleutel meebrengen:", "telemetry": { - "helpImprove": "Help Roo Code te verbeteren", - "helpImproveMessage": "Roo Code verzamelt fout- en gebruiksgegevens om ons te helpen bugs op te lossen en de extensie te verbeteren. Deze telemetrie verzamelt geen code, prompts of persoonlijke informatie. Je kunt dit in instellingen uitschakelen." + "helpImprove": "Help Zoo Code te verbeteren", + "helpImproveMessage": "Zoo Code verzamelt fout- en gebruiksgegevens om ons te helpen bugs op te lossen en de extensie te verbeteren. Deze telemetrie verzamelt geen code, prompts of persoonlijke informatie. Je kunt dit in instellingen uitschakelen." }, "importSettings": "Instellingen importeren" } diff --git a/webview-ui/src/i18n/locales/nl/worktrees.json b/webview-ui/src/i18n/locales/nl/worktrees.json index 8602d48527d..c92a754b7ab 100644 --- a/webview-ui/src/i18n/locales/nl/worktrees.json +++ b/webview-ui/src/i18n/locales/nl/worktrees.json @@ -1,28 +1,23 @@ { "title": "Worktrees", "done": "Klaar", - "description": "Met Git worktrees kun je tegelijkertijd aan meerdere branches werken in aparte mappen. Elke worktree krijgt zijn eigen VS Code-venster met Roo Code.", - + "description": "Met Git worktrees kun je tegelijkertijd aan meerdere branches werken in aparte mappen. Elke worktree krijgt zijn eigen VS Code-venster met Zoo Code.", "notGitRepo": "Deze workspace is geen Git-repository. Worktrees vereisen een Git-repository om te werken.", "multiRootNotSupported": "Worktrees worden niet ondersteund in multi-root workspaces. Open één map om worktrees te gebruiken.", "subfolderNotSupported": "Deze workspace is een submap van een Git-repository. Open de repository-root om worktrees te gebruiken.", "gitRoot": "Git-root", - "includeFileExists": ".worktreeinclude-bestand gevonden — bestanden worden naar nieuwe worktrees gekopieerd", "noIncludeFile": "Geen .worktreeinclude-bestand gevonden", "createFromGitignore": "Aanmaken vanuit .gitignore", - "primary": "Primair", "current": "Huidig", "locked": "Vergrendeld", "detachedHead": "Detached HEAD", "noBranch": "Geen branch", - "switchInThisWindow": "Naar worktree wisselen", "openInNewWindow": "Openen in nieuw venster", "delete": "Verwijderen", "newWorktree": "Nieuwe Worktree", - "createWorktree": "Worktree aanmaken", "branchName": "Branchnaam", "createNewBranch": "Nieuwe branch aanmaken", @@ -44,7 +39,6 @@ "copyingFiles": "Bestanden kopiëren...", "copyingProgress": "{{item}} — {{copied}} gekopieerd", "cancel": "Annuleren", - "deleteWorktree": "Worktree verwijderen", "deleteWarning": "Deze actie kan niet ongedaan worden gemaakt. Het volgende wordt verwijderd:", "deleteWarningBranch": "De branch en alle niet-gecommitte wijzigingen", @@ -53,11 +47,8 @@ "forceDelete": "Geforceerd verwijderen", "worktreeIsLocked": "worktree is vergrendeld", "deleting": "Bezig met verwijderen...", - "close": "Sluiten", - "showInHomeScreen": "Worktrees weergeven op startscherm", - "selector": { "worktree": "Worktree", "title": "Worktrees", diff --git a/webview-ui/src/i18n/locales/pl/chat.json b/webview-ui/src/i18n/locales/pl/chat.json index c377a78a5be..72ac5932a7e 100644 --- a/webview-ui/src/i18n/locales/pl/chat.json +++ b/webview-ui/src/i18n/locales/pl/chat.json @@ -1,5 +1,5 @@ { - "greeting": "Witamy w Roo Code", + "greeting": "Witamy w Zoo Code!", "task": { "title": "Zadanie", "expand": "Rozwiń zadanie", @@ -15,16 +15,6 @@ "export": "Eksportuj historię zadań", "delete": "Usuń zadanie (Shift + Kliknięcie, aby pominąć potwierdzenie)", "condenseContext": "Inteligentnie skondensuj kontekst", - "share": "Udostępnij zadanie", - "shareWithOrganization": "Udostępnij organizacji", - "shareWithOrganizationDescription": "Tylko członkowie twojej organizacji mogą uzyskać dostęp", - "sharePublicly": "Udostępnij publicznie", - "sharePubliclyDescription": "Każdy z linkiem może uzyskać dostęp", - "connectToCloud": "Połącz z chmurą", - "connectToCloudDescription": "Zaloguj się do Roo Code Cloud, aby udostępniać zadania", - "sharingDisabledByOrganization": "Udostępnianie wyłączone przez organizację", - "shareSuccessOrganization": "Link organizacji skopiowany do schowka", - "shareSuccessPublic": "Link publiczny skopiowany do schowka", "openApiHistory": "Otwórz historię API", "openUiHistory": "Otwórz historię UI", "backToParentTask": "Zadanie nadrzędne" @@ -98,7 +88,7 @@ "enqueueMessage": "Dodaj wiadomość do kolejki (zostanie wysłana po zakończeniu bieżącego zadania)", "scrollToBottom": "Przewiń do dołu czatu", "scrollToLatestCheckpoint": "Przewiń do poprzedniego punktu kontrolnego", - "about": "Roo Code to cały zespół deweloperów AI w Twoim edytorze.", + "about": "Zoo Code to cały zespół deweloperów AI w Twoim edytorze.", "docs": "Sprawdź naszą dokumentację, aby dowiedzieć się więcej.", "onboarding": "Twoja lista zadań w tym obszarze roboczym jest pusta.", "rooTips": { @@ -130,7 +120,7 @@ "title": "Tryby", "marketplace": "Marketplace Trybów", "settings": "Ustawienia Trybów", - "description": "Wyspecjalizowane persony, które dostosowują zachowanie Roo.", + "description": "Wyspecjalizowane persony, które dostosowują zachowanie Zoo.", "searchPlaceholder": "Szukaj trybów...", "noResults": "Nie znaleziono wyników" }, @@ -144,7 +134,7 @@ "diffError": { "title": "Edycja nieudana" }, - "troubleMessage": "Roo ma problemy...", + "troubleMessage": "Zoo ma problemy...", "apiRequest": { "title": "Zapytanie API", "failed": "Zapytanie API nie powiodło się", @@ -162,7 +152,7 @@ "500": "Błąd serwera dostawcy. Po stronie dostawcy coś się nie powiodło, w Twoim żądaniu nie ma nic złego.", "docs": "Dokumentacja", "goToSettings": "Ustawienia", - "unknown": "Nieznany błąd API. Skontaktuj się z pomocą techniczną Roo Code.", + "unknown": "Nieznany błąd API. Skontaktuj się z pomocą techniczną Zoo Code.", "connection": "Błąd połączenia. Upewnij się, że masz działające połączenie internetowe.", "claudeCodeNotAuthenticated": "Musisz się zalogować, aby korzystać z Claude Code. Przejdź do Ustawień i kliknij \"Zaloguj się do Claude Code\", aby się uwierzytelnić." } @@ -190,40 +180,40 @@ "wantsToFetch": "Roo chce pobrać szczegółowe instrukcje, aby pomóc w bieżącym zadaniu" }, "fileOperations": { - "wantsToRead": "Roo chce przeczytać ten plik", - "wantsToReadOutsideWorkspace": "Roo chce przeczytać ten plik poza obszarem roboczym", - "didRead": "Roo przeczytał ten plik", - "wantsToEdit": "Roo chce edytować ten plik", - "wantsToEditOutsideWorkspace": "Roo chce edytować ten plik poza obszarem roboczym", - "wantsToEditProtected": "Roo chce edytować chroniony plik konfiguracyjny", - "wantsToCreate": "Roo chce utworzyć nowy plik", + "wantsToRead": "Zoo chce przeczytać ten plik", + "wantsToReadOutsideWorkspace": "Zoo chce przeczytać ten plik poza obszarem roboczym", + "didRead": "Zoo przeczytał ten plik", + "wantsToEdit": "Zoo chce edytować ten plik", + "wantsToEditOutsideWorkspace": "Zoo chce edytować ten plik poza obszarem roboczym", + "wantsToEditProtected": "Zoo chce edytować chroniony plik konfiguracyjny", + "wantsToCreate": "Zoo chce utworzyć nowy plik", "wantsToSearchReplace": "Roo chce wykonać wyszukiwanie i zamianę w tym pliku", "didSearchReplace": "Roo wykonał wyszukiwanie i zamianę w tym pliku", - "wantsToInsert": "Roo chce wstawić zawartość do tego pliku", - "wantsToInsertWithLineNumber": "Roo chce wstawić zawartość do tego pliku w linii {{lineNumber}}", - "wantsToInsertAtEnd": "Roo chce dodać zawartość na końcu tego pliku", - "wantsToReadAndXMore": "Roo chce przeczytać ten plik i {{count}} więcej", - "wantsToReadMultiple": "Roo chce odczytać wiele plików", - "wantsToApplyBatchChanges": "Roo chce zastosować zmiany do wielu plików", - "wantsToGenerateImage": "Roo chce wygenerować obraz", - "wantsToGenerateImageOutsideWorkspace": "Roo chce wygenerować obraz poza obszarem roboczym", - "wantsToGenerateImageProtected": "Roo chce wygenerować obraz w chronionym miejscu", - "didGenerateImage": "Roo wygenerował obraz" + "wantsToInsert": "Zoo chce wstawić zawartość do tego pliku", + "wantsToInsertWithLineNumber": "Zoo chce wstawić zawartość do tego pliku w linii {{lineNumber}}", + "wantsToInsertAtEnd": "Zoo chce dodać zawartość na końcu tego pliku", + "wantsToReadAndXMore": "Zoo chce przeczytać ten plik i {{count}} więcej", + "wantsToReadMultiple": "Zoo chce odczytać wiele plików", + "wantsToApplyBatchChanges": "Zoo chce zastosować zmiany do wielu plików", + "wantsToGenerateImage": "Zoo chce wygenerować obraz", + "wantsToGenerateImageOutsideWorkspace": "Zoo chce wygenerować obraz poza obszarem roboczym", + "wantsToGenerateImageProtected": "Zoo chce wygenerować obraz w chronionym miejscu", + "didGenerateImage": "Zoo wygenerował obraz" }, "directoryOperations": { - "wantsToViewTopLevel": "Roo chce zobaczyć pliki najwyższego poziomu w tym katalogu", - "didViewTopLevel": "Roo zobaczył pliki najwyższego poziomu w tym katalogu", - "wantsToViewRecursive": "Roo chce rekurencyjnie zobaczyć wszystkie pliki w tym katalogu", - "didViewRecursive": "Roo rekurencyjnie zobaczył wszystkie pliki w tym katalogu", - "wantsToSearch": "Roo chce przeszukać ten katalog w poszukiwaniu {{regex}}", - "didSearch": "Roo przeszukał ten katalog w poszukiwaniu {{regex}}", - "wantsToSearchOutsideWorkspace": "Roo chce przeszukać ten katalog (poza obszarem roboczym) w poszukiwaniu {{regex}}", - "didSearchOutsideWorkspace": "Roo przeszukał ten katalog (poza obszarem roboczym) w poszukiwaniu {{regex}}", - "wantsToViewTopLevelOutsideWorkspace": "Roo chce zobaczyć pliki najwyższego poziomu w tym katalogu (poza obszarem roboczym)", - "didViewTopLevelOutsideWorkspace": "Roo zobaczył pliki najwyższego poziomu w tym katalogu (poza obszarem roboczym)", - "wantsToViewRecursiveOutsideWorkspace": "Roo chce rekurencyjnie zobaczyć wszystkie pliki w tym katalogu (poza obszarem roboczym)", - "didViewRecursiveOutsideWorkspace": "Roo rekurencyjnie zobaczył wszystkie pliki w tym katalogu (poza obszarem roboczym)", - "wantsToViewMultipleDirectories": "Roo chce wyświetlić wiele katalogów" + "wantsToViewTopLevel": "Zoo chce zobaczyć pliki najwyższego poziomu w tym katalogu", + "didViewTopLevel": "Zoo zobaczył pliki najwyższego poziomu w tym katalogu", + "wantsToViewRecursive": "Zoo chce rekurencyjnie zobaczyć wszystkie pliki w tym katalogu", + "didViewRecursive": "Zoo rekurencyjnie zobaczył wszystkie pliki w tym katalogu", + "wantsToSearch": "Zoo chce przeszukać ten katalog w poszukiwaniu {{regex}}", + "didSearch": "Zoo przeszukał ten katalog w poszukiwaniu {{regex}}", + "wantsToSearchOutsideWorkspace": "Zoo chce przeszukać ten katalog (poza obszarem roboczym) w poszukiwaniu {{regex}}", + "didSearchOutsideWorkspace": "Zoo przeszukał ten katalog (poza obszarem roboczym) w poszukiwaniu {{regex}}", + "wantsToViewTopLevelOutsideWorkspace": "Zoo chce zobaczyć pliki najwyższego poziomu w tym katalogu (poza obszarem roboczym)", + "didViewTopLevelOutsideWorkspace": "Zoo zobaczył pliki najwyższego poziomu w tym katalogu (poza obszarem roboczym)", + "wantsToViewRecursiveOutsideWorkspace": "Zoo chce rekurencyjnie zobaczyć wszystkie pliki w tym katalogu (poza obszarem roboczym)", + "didViewRecursiveOutsideWorkspace": "Zoo rekurencyjnie zobaczył wszystkie pliki w tym katalogu (poza obszarem roboczym)", + "wantsToViewMultipleDirectories": "Zoo chce wyświetlić wiele katalogów" }, "commandOutput": "Wyjście polecenia", "commandExecution": { @@ -245,24 +235,24 @@ "response": "Odpowiedź", "arguments": "Argumenty", "text": { - "rooSaid": "Roo powiedział" + "rooSaid": "Zoo powiedział" }, "feedback": { "youSaid": "Powiedziałeś" }, "mcp": { - "wantsToUseTool": "Roo chce użyć narzędzia na serwerze MCP {{serverName}}", - "wantsToAccessResource": "Roo chce uzyskać dostęp do zasobu na serwerze MCP {{serverName}}" + "wantsToUseTool": "Zoo chce użyć narzędzia na serwerze MCP {{serverName}}", + "wantsToAccessResource": "Zoo chce uzyskać dostęp do zasobu na serwerze MCP {{serverName}}" }, "modes": { - "wantsToSwitch": "Roo chce przełączyć się na tryb {{mode}}", - "wantsToSwitchWithReason": "Roo chce przełączyć się na tryb {{mode}} ponieważ: {{reason}}", - "didSwitch": "Roo przełączył się na tryb {{mode}}", - "didSwitchWithReason": "Roo przełączył się na tryb {{mode}} ponieważ: {{reason}}" + "wantsToSwitch": "Zoo chce przełączyć się na tryb {{mode}}", + "wantsToSwitchWithReason": "Zoo chce przełączyć się na tryb {{mode}} ponieważ: {{reason}}", + "didSwitch": "Zoo przełączył się na tryb {{mode}}", + "didSwitchWithReason": "Zoo przełączył się na tryb {{mode}} ponieważ: {{reason}}" }, "subtasks": { - "wantsToCreate": "Roo chce utworzyć nowe podzadanie w trybie {{mode}}", - "wantsToFinish": "Roo chce zakończyć to podzadanie", + "wantsToCreate": "Zoo chce utworzyć nowe podzadanie w trybie {{mode}}", + "wantsToFinish": "Zoo chce zakończyć to podzadanie", "newTaskContent": "Instrukcje podzadania", "completionContent": "Podzadanie zakończone", "resultContent": "Wyniki podzadania", @@ -271,7 +261,7 @@ "goToSubtask": "Wyświetl zadanie" }, "questions": { - "hasQuestion": "Roo ma pytanie" + "hasQuestion": "Zoo ma pytanie" }, "taskCompleted": "Zadanie zakończone", "modelResponseIncomplete": "Odpowiedź modelu niekompletna", @@ -287,7 +277,7 @@ "copyToClipboard": "Kopiuj do schowka", "copied": "Skopiowano!", "diagnostics": "Uzyskaj szczegółowe informacje o błędzie", - "proxyProvider": "Wygląda na to, że używasz dostawcy opartego na proxy. Pamiętaj, aby sprawdzić jego dzienniki i upewnić się, że nie przepisuje żądań Roo." + "proxyProvider": "Wygląda na to, że używasz dostawcy opartego na proxy. Pamiętaj, aby sprawdzić jego dzienniki i upewnić się, że nie przepisuje żądań Zoo." }, "powershell": { "issues": "Wygląda na to, że masz problemy z Windows PowerShell, proszę zapoznaj się z tym" @@ -330,31 +320,24 @@ } }, "skill": { - "wantsToLoad": "Roo chce załadować umiejętność", - "didLoad": "Roo załadował umiejętność" + "wantsToLoad": "Zoo chce załadować umiejętność", + "didLoad": "Zoo załadował umiejętność" }, "followUpSuggest": { "copyToInput": "Kopiuj do pola wprowadzania (lub Shift + kliknięcie)", "timerPrefix": "Automatyczne zatwierdzanie włączone. Zaznaczanie za {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}} wydany", - "support": "Wesprzyj Roo Code, dając nam gwiazdkę na GitHub.", - "stealthModel": { - "feature": "Darmowy model stealth na ograniczony czas - Code Supernova: Teraz ulepszony z oknem kontekstu 1M tokenów! Wszechstronny model kodowania agentowego, który obsługuje wprowadzanie obrazów, dostępny przez Roo Code Cloud.", - "note": "(Uwaga: prompty i uzupełnienia są rejestrowane przez twórcę modelu i używane do jego ulepszania)", - "connectButton": "Połącz z Roo Code Cloud", - "selectModel": "Wybierz roo/code-supernova od dostawcy Roo Code Cloud w Ustawieniach, aby rozpocząć.", - "goToSettingsButton": "Przejdź do Ustawień" - }, + "title": "Zoo Code {{version}} wydany", + "support": "Wesprzyj Zoo Code, dając nam gwiazdkę na GitHub.", "handoff": { - "heading": "Wtyczka Roo Code nie znika.", - "description": "Być może widziałeś niedawne ogłoszenie, że Roo Code osiągnął 3 miliony instalacji, a oryginalny zespół całkowicie skupia się na Roomote. Wiemy, że ta wiadomość była trudna dla wielu z was. Ta wtyczka wiele dla nas i dla ciebie znaczy, i słyszymy was. Dobra wiadomość: zespół społeczności zgłosił się, żeby poprowadzić Roo Code dalej, i pracujemy z nimi nad oficjalnym przekazaniem, żeby wtyczka, na której polegasz, była nadal utrzymywana i ulepszana.", - "readMore": "Przeczytaj oryginalne ogłoszenie Matta Rubensa" + "heading": "Zoo Code wraca — teraz jako wtyczka utrzymywana przez społeczność pod nazwą Zoo Code!!", + "description": "Jeśli nie jesteś na bieżąco, zespół Zoo Code niedawno ogłosił, że wygasza rozwój Zoo Code i archiwizuje dotychczasową pracę. Ale bez obaw — społeczność ruszyła do działania, aby kontynuować dziedzictwo Zoo Code pod nową nazwą i w nowym domu! Nie jesteśmy już tylko jednym „Roo” — jesteśmy społecznością, czyli „Zoo”, jeśli wolisz. Zoo Code to wtyczka utrzymywana przez społeczność, która przejmuje pałeczkę tam, gdzie Zoo Code skończył, i zobowiązujemy się zachować ducha Roo, jednocześnie wprowadzając nowe funkcje i ulepszenia. Chcemy też ogromnie podziękować całemu zespołowi Zoo Code za ich niesamowitą pracę i stworzenie tak świetnego narzędzia dla deweloperów. Cieszymy się, że możemy rozwijać ich dorobek i zobaczyć, dokąd społeczność zaprowadzi Zoo Code w przyszłości!", + "readMore": "Zobacz nową stronę główną Zoo Code i przeczytaj pełne ogłoszenie" }, "release": { "heading": "Co nowego:", - "gpt55": "GPT-5.5 przez OpenAI Codex: Dodano obsługę GPT-5.5 w dostawcy OpenAI Codex, żebyś mógł korzystać z najnowszego modelu bezpośrednio z Roo Code.", + "gpt55": "GPT-5.5 przez OpenAI Codex: Dodano obsługę GPT-5.5 w dostawcy OpenAI Codex, żebyś mógł korzystać z najnowszego modelu bezpośrednio z Zoo Code.", "claudeOpus47": "Claude Opus 4.7 w Vertex AI: Dodano Claude Opus 4.7 do dostawcy Vertex AI - najnowszy flagowy model rozumowania od Anthropic.", "checkpointNav": "Nawigacja po poprzednich checkpointach: Dodano kontrolki w czacie, żebyś mógł cofać się do wcześniejszych checkpointów, z pełną obsługą i18n." }, @@ -380,24 +363,24 @@ "profileViolationWarning": "Bieżący profil nie jest kompatybilny z ustawieniami Twojej organizacji", "shellIntegration": { "title": "Ostrzeżenie wykonania polecenia", - "description": "Twoje polecenie jest wykonywane bez integracji powłoki terminala VSCode. Aby ukryć to ostrzeżenie, możesz wyłączyć integrację powłoki w sekcji Terminal w ustawieniach Roo Code lub rozwiązać problemy z integracją terminala VSCode korzystając z poniższego linku.", + "description": "Twoje polecenie jest wykonywane bez integracji powłoki terminala VSCode. Aby ukryć to ostrzeżenie, możesz wyłączyć integrację powłoki w sekcji Terminal w ustawieniach Zoo Code lub rozwiązać problemy z integracją terminala VSCode korzystając z poniższego linku.", "troubleshooting": "Kliknij tutaj, aby zobaczyć dokumentację integracji powłoki." }, "ask": { "autoApprovedRequestLimitReached": { "title": "Osiągnięto limit automatycznie zatwierdzonych żądań", - "description": "Roo osiągnął automatycznie zatwierdzony limit {{count}} żądania/żądań API. Czy chcesz zresetować licznik i kontynuować zadanie?", + "description": "Zoo osiągnął automatycznie zatwierdzony limit {{count}} żądania/żądań API. Czy chcesz zresetować licznik i kontynuować zadanie?", "button": "Zresetuj i kontynuuj" }, "autoApprovedCostLimitReached": { "button": "Zresetuj i Kontynuuj", "title": "Osiągnięto limit kosztów z automatycznym zatwierdzaniem", - "description": "Roo osiągnął automatycznie zatwierdzony limit kosztów wynoszący ${{count}}. Czy chcesz zresetować koszt i kontynuować zadanie?" + "description": "Zoo osiągnął automatycznie zatwierdzony limit kosztów wynoszący ${{count}}. Czy chcesz zresetować koszt i kontynuować zadanie?" } }, "codebaseSearch": { - "wantsToSearch": "Roo chce przeszukać bazę kodu w poszukiwaniu {{query}}", - "wantsToSearchWithPath": "Roo chce przeszukać bazę kodu w poszukiwaniu {{query}} w {{path}}", + "wantsToSearch": "Zoo chce przeszukać bazę kodu w poszukiwaniu {{query}}", + "wantsToSearchWithPath": "Zoo chce przeszukać bazę kodu w poszukiwaniu {{query}} w {{path}}", "didSearch_one": "Znaleziono 1 wynik", "didSearch_other": "Znaleziono {{count}} wyników", "resultTooltip": "Wynik podobieństwa: {{score}} (kliknij, aby otworzyć plik)" @@ -438,7 +421,7 @@ "ariaLabel": "Wersja {{version}} - Kliknij, aby wyświetlić informacje o wydaniu" }, "rooCloudCTA": { - "title": "Roo Code Cloud się rozwija!", + "title": "Zoo Code Cloud się rozwija!", "description": "Uruchamiaj zdalne agenty w chmurze, uzyskuj dostęp do swoich zadań z dowolnego miejsca, współpracuj z innymi i wiele więcej.", "joinWaitlist": "Zarejestruj się, aby otrzymywać najnowsze aktualizacje." }, @@ -479,8 +462,8 @@ "clickToEdit": "Kliknij, aby edytować wiadomość" }, "slashCommand": { - "wantsToRun": "Roo chce uruchomić komendę slash", - "didRun": "Roo uruchomił komendę slash" + "wantsToRun": "Zoo chce uruchomić komendę slash", + "didRun": "Zoo uruchomił komendę slash" }, "todo": { "partial": "Ukończono {{completed}} z {{total}} zadań do wykonania", @@ -499,11 +482,11 @@ "openMcpSettings": "Otwórz ustawienia MCP" }, "readCommandOutput": { - "title": "Roo read command output" + "title": "Zoo read command output" }, "retiredProvider": { "title": "Dostawca nie jest już obsługiwany", - "message": "Przepraszamy, ten dostawca nie jest już obsługiwany. Zauważyliśmy, że bardzo niewielu użytkowników Roo faktycznie z niego korzystało, a my musimy zmniejszyć zakres naszego kodu, aby móc dalej szybko dostarczać i dobrze służyć naszej społeczności. To była naprawdę trudna decyzja, ale pozwala nam skupić się na tym, co jest dla ciebie najważniejsze. Wiemy, że to frustrujące.", + "message": "Ten dostawca nie jest już dostępny. Wybierz obsługiwanego dostawcę, aby kontynuować.", "openSettings": "Otwórz ustawienia" } } diff --git a/webview-ui/src/i18n/locales/pl/cloud.json b/webview-ui/src/i18n/locales/pl/cloud.json deleted file mode 100644 index 4e4a578658d..00000000000 --- a/webview-ui/src/i18n/locales/pl/cloud.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "title": "Cloud", - "profilePicture": "Zdjęcie profilowe", - "logOut": "Wyloguj", - "testApiAuthentication": "Testuj uwierzytelnianie API", - "signIn": "Połącz z Roo Code Cloud", - "connect": "Zacznij", - "cloudBenefitsTitle": "Wypróbuj Roo Code Cloud", - "cloudBenefitProvider": "Uzyskaj dostęp do darmowych i płatnych modeli, które świetnie współpracują z Roo", - "cloudBenefitCloudAgents": "Zlecaj zadania autonomicznym agentom w chmurze", - "cloudBenefitTriggers": "Otrzymuj recenzje kodu na GitHubie, uruchamiaj zadania ze Slacka i nie tylko", - "cloudBenefitWalkaway": "Śledź i kontroluj zadania z dowolnego miejsca (również z telefonu)", - "cloudBenefitHistory": "Uzyskaj dostęp do historii zadań z dowolnego miejsca i udostępniaj je innym", - "cloudBenefitMetrics": "Uzyskaj całościowy widok zużycia tokenów", - "visitCloudWebsite": "Odwiedź Roo Code Cloud", - "taskSync": "Synchronizacja zadań", - "taskSyncDescription": "Synchronizuj swoje zadania, aby przeglądać i udostępniać je w Roo Code Cloud", - "taskSyncManagedByOrganization": "Synchronizacja zadań jest zarządzana przez Twoją organizację", - "usageMetricsAlwaysReported": "Informacje o użyciu modelu są zawsze raportowane po zalogowaniu", - "authWaiting": "Oczekiwanie na zakończenie uwierzytelniania...", - "havingTrouble": "Masz problemy?", - "pasteCallbackUrl": "Skopiuj URL redirect z przeglądarki i wklej tutaj:", - "startOver": "Zacznij od nowa", - "personalAccount": "Konto Osobiste", - "switchAccount": "Przełącz Konto Roo Code Cloud", - "createTeamAccount": "Utwórz Konto Zespołu", - "cloudUrlPillLabel": "URL Roo Code Cloud", - "upsell": { - "autoApprovePowerUser": "Dać Roo trochę niezależności? Kontroluj go z dowolnego miejsca dzięki Roo Code Cloud. Dowiedz się więcej.", - "longRunningTask": "To może chwilę potrwać. Kontynuuj z dowolnego miejsca dzięki Chmurze.", - "taskList": "Podoba ci się Roo? Sprawdź Roo Code Cloud: śledź i kontroluj swoje zadania z dowolnego miejsca, uruchamiaj autonomiczne agenty w chmurze, uzyskuj statystyki użytkowania i wiele więcej. Dowiedz się więcej." - } -} diff --git a/webview-ui/src/i18n/locales/pl/marketplace.json b/webview-ui/src/i18n/locales/pl/marketplace.json index d48dc34429c..3d8e3b67c2e 100644 --- a/webview-ui/src/i18n/locales/pl/marketplace.json +++ b/webview-ui/src/i18n/locales/pl/marketplace.json @@ -1,5 +1,5 @@ { - "title": "Roo Marketplace", + "title": "Zoo Marketplace", "tabs": { "installed": "Zainstalowane", "settings": "Ustawienia", diff --git a/webview-ui/src/i18n/locales/pl/mcp.json b/webview-ui/src/i18n/locales/pl/mcp.json index 100e8748c88..5d7ab75550b 100644 --- a/webview-ui/src/i18n/locales/pl/mcp.json +++ b/webview-ui/src/i18n/locales/pl/mcp.json @@ -2,16 +2,16 @@ "title": "Serwery MCP", "done": "Gotowe", "marketplace": "Marketplace MCP", - "description": "<0>Model Context Protocol umożliwia komunikację z lokalnie uruchomionymi serwerami MCP, które zapewniają dodatkowe narzędzia i zasoby rozszerzające możliwości Roo. Możesz korzystać z <1>serwerów stworzonych przez społeczność lub poprosić Roo o utworzenie nowych narzędzi specyficznych dla twojego przepływu pracy (np. \"dodaj narzędzie, które pobiera najnowszą dokumentację npm\").", + "description": "<0>Model Context Protocol umożliwia komunikację z lokalnie uruchomionymi serwerami MCP, które zapewniają dodatkowe narzędzia i zasoby rozszerzające możliwości Zoo. Możesz korzystać z <1>serwerów stworzonych przez społeczność lub poprosić Zoo o utworzenie nowych narzędzi specyficznych dla twojego przepływu pracy (np. \"dodaj narzędzie, które pobiera najnowszą dokumentację npm\").", "instructions": "Instrukcje", "enableToggle": { "title": "Włącz serwery MCP", - "description": "Włącz to, aby Roo mógł korzystać z narzędzi połączonych serwerów MCP. Daje to Roo więcej możliwości. Jeśli nie planujesz korzystać z tych dodatkowych narzędzi, wyłącz to, aby zmniejszyć koszty tokenów API." + "description": "Włącz to, aby Zoo mógł korzystać z narzędzi połączonych serwerów MCP. Daje to Zoo więcej możliwości. Jeśli nie planujesz korzystać z tych dodatkowych narzędzi, wyłącz to, aby zmniejszyć koszty tokenów API." }, "enableServerCreation": { "title": "Włącz tworzenie serwerów MCP", - "description": "Włącz to, aby Roo mógł pomóc ci tworzyć <1>nowe niestandardowe serwery MCP. <0>Dowiedz się więcej o tworzeniu serwerów", - "hint": "Wskazówka: Aby zmniejszyć koszty tokenów API, wyłącz tę opcję, gdy nie prosisz Roo o utworzenie nowego serwera MCP." + "description": "Włącz to, aby Zoo mógł pomóc ci tworzyć <1>nowe niestandardowe serwery MCP. <0>Dowiedz się więcej o tworzeniu serwerów", + "hint": "Wskazówka: Aby zmniejszyć koszty tokenów API, wyłącz tę opcję, gdy nie prosisz Zoo o utworzenie nowego serwera MCP." }, "editGlobalMCP": "Edytuj globalny MCP", "editProjectMCP": "Edytuj MCP projektu", diff --git a/webview-ui/src/i18n/locales/pl/prompts.json b/webview-ui/src/i18n/locales/pl/prompts.json index 7aa686af04d..02d72ff510a 100644 --- a/webview-ui/src/i18n/locales/pl/prompts.json +++ b/webview-ui/src/i18n/locales/pl/prompts.json @@ -9,7 +9,7 @@ "editModesConfig": "Edytuj konfigurację trybów", "editGlobalModes": "Edytuj tryby globalne", "editProjectModes": "Edytuj tryby projektu (.roomodes)", - "createModeHelpText": "Tryby to wyspecjalizowane persony, które dostosowują zachowanie Roo. <0>Dowiedz się o używaniu trybów lub <1>dostosowywaniu trybów.", + "createModeHelpText": "Tryby to wyspecjalizowane persony, które dostosowują zachowanie Zoo. <0>Dowiedz się o używaniu trybów lub <1>dostosowywaniu trybów.", "selectMode": "Szukaj trybów" }, "apiConfiguration": { @@ -33,7 +33,7 @@ "roleDefinition": { "title": "Definicja roli", "resetToDefault": "Przywróć domyślne", - "description": "Zdefiniuj wiedzę specjalistyczną i osobowość Roo dla tego trybu. Ten opis kształtuje, jak Roo prezentuje się i podchodzi do zadań." + "description": "Zdefiniuj wiedzę specjalistyczną i osobowość Zoo dla tego trybu. Ten opis kształtuje, jak Zoo prezentuje się i podchodzi do zadań." }, "description": { "title": "Krótki opis (dla ludzi)", @@ -102,7 +102,7 @@ "types": { "ENHANCE": { "label": "Ulepsz podpowiedź", - "description": "Użyj ulepszenia podpowiedzi, aby uzyskać dostosowane sugestie lub ulepszenia dla swoich danych wejściowych. Zapewnia to, że Roo rozumie Twoje intencje i dostarcza najlepsze możliwe odpowiedzi. Dostępne za pośrednictwem ikony ✨ w czacie." + "description": "Użyj ulepszenia podpowiedzi, aby uzyskać dostosowane sugestie lub ulepszenia dla swoich danych wejściowych. Zapewnia to, że Zoo rozumie Twoje intencje i dostarcza najlepsze możliwe odpowiedzi. Dostępne za pośrednictwem ikony ✨ w czacie." }, "CONDENSE": { "label": "Kondensacja kontekstu", @@ -167,7 +167,7 @@ }, "roleDefinition": { "label": "Definicja roli", - "description": "Zdefiniuj wiedzę specjalistyczną i osobowość Roo dla tego trybu." + "description": "Zdefiniuj wiedzę specjalistyczną i osobowość Zoo dla tego trybu." }, "whenToUse": { "label": "Kiedy używać (opcjonalne)", diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json index 92d2604acb7..15003c6214e 100644 --- a/webview-ui/src/i18n/locales/pl/settings.json +++ b/webview-ui/src/i18n/locales/pl/settings.json @@ -40,7 +40,7 @@ "ui": "UI", "experimental": "Eksperymentalne", "language": "Język", - "about": "O Roo Code", + "about": "O Zoo Code", "skills": "Skills" }, "about": { @@ -56,7 +56,7 @@ "label": "Odkryłeś lukę w zabezpieczeniach?", "link": "Postępuj zgodnie z naszym procesem ujawniania" }, - "community": "Chcesz wskazówek lub po prostu porozmawiać z innymi użytkownikami Roo Code? Dołącz do reddit.com/r/RooCode lub discord.gg/roocode", + "community": "Chcesz wskazówek lub po prostu porozmawiać z innymi użytkownikami Zoo Code? Dołącz do reddit.com/r/RooCode lub discord.gg/roocode", "contactAndCommunity": "Kontakt i Społeczność", "manageSettings": "Zarządzaj Ustawieniami", "debugMode": { @@ -100,7 +100,7 @@ "footer": "Używaj poleceń slash do szybkiego dostępu do często używanych podpowiedzi i przepływów pracy." }, "prompts": { - "description": "Skonfiguruj podpowiedzi wsparcia używane do szybkich działań, takich jak ulepszanie podpowiedzi, wyjaśnianie kodu i rozwiązywanie problemów. Te podpowiedzi pomagają Roo zapewnić lepsze wsparcie dla typowych zadań programistycznych." + "description": "Skonfiguruj podpowiedzi wsparcia używane do szybkich działań, takich jak ulepszanie podpowiedzi, wyjaśnianie kodu i rozwiązywanie problemów. Te podpowiedzi pomagają Zoo zapewnić lepsze wsparcie dla typowych zadań programistycznych." }, "codeIndex": { "title": "Indeksowanie kodu", @@ -223,10 +223,10 @@ "disabledAriaLabel": "Automatyczne zatwierdzanie wyłączone - najpierw wybierz opcje", "readOnly": { "label": "Odczyt", - "description": "Gdy włączone, Roo automatycznie będzie wyświetlać zawartość katalogów i czytać pliki bez konieczności klikania przycisku Zatwierdź.", + "description": "Gdy włączone, Zoo automatycznie będzie wyświetlać zawartość katalogów i czytać pliki bez konieczności klikania przycisku Zatwierdź.", "outsideWorkspace": { "label": "Uwzględnij pliki poza obszarem roboczym", - "description": "Pozwól Roo na odczyt plików poza bieżącym obszarem roboczym bez konieczności zatwierdzania." + "description": "Pozwól Zoo na odczyt plików poza bieżącym obszarem roboczym bez konieczności zatwierdzania." } }, "write": { @@ -235,11 +235,11 @@ "delayLabel": "Opóźnienie po zapisach, aby umożliwić diagnostyce wykrycie potencjalnych problemów", "outsideWorkspace": { "label": "Uwzględnij pliki poza obszarem roboczym", - "description": "Pozwól Roo na tworzenie i edycję plików poza bieżącym obszarem roboczym bez konieczności zatwierdzania." + "description": "Pozwól Zoo na tworzenie i edycję plików poza bieżącym obszarem roboczym bez konieczności zatwierdzania." }, "protected": { "label": "Uwzględnij pliki chronione", - "description": "Pozwól Roo na tworzenie i edycję plików chronionych (takich jak .rooignore i pliki konfiguracyjne .roo/) bez konieczności zatwierdzania." + "description": "Pozwól Zoo na tworzenie i edycję plików chronionych (takich jak .rooignore i pliki konfiguracyjne .roo/) bez konieczności zatwierdzania." } }, "mcp": { @@ -306,7 +306,7 @@ "searchProviderPlaceholder": "Szukaj dostawców", "noProviderMatchFound": "Nie znaleziono dostawców", "noMatchFound": "Nie znaleziono pasujących profili", - "retiredProviderMessage": "Przepraszamy, ten dostawca nie jest już obsługiwany. Zauważyliśmy, że bardzo niewielu użytkowników Roo faktycznie z niego korzystało, a my musimy zmniejszyć zakres naszego kodu, aby móc dalej szybko dostarczać i dobrze służyć naszej społeczności. To była naprawdę trudna decyzja, ale pozwala nam skupić się na tym, co jest dla ciebie najważniejsze. Wiemy, że to frustrujące.", + "retiredProviderMessage": "Ten dostawca nie jest już dostępny. Wybierz obsługiwanego dostawcę, aby kontynuować.", "vscodeLmDescription": "Interfejs API modelu językowego VS Code umożliwia uruchamianie modeli dostarczanych przez inne rozszerzenia VS Code (w tym, ale nie tylko, GitHub Copilot). Najłatwiejszym sposobem na rozpoczęcie jest zainstalowanie rozszerzeń Copilot i Copilot Chat z VS Code Marketplace.", "awsCustomArnUse": "Wprowadź prawidłowy Amazon Bedrock ARN dla modelu, którego chcesz użyć. Przykłady formatu:", "awsCustomArnDesc": "Upewnij się, że region w ARN odpowiada wybranemu powyżej regionowi AWS.", @@ -456,7 +456,7 @@ "draftModelDesc": "Aby dekodowanie spekulacyjne działało poprawnie, model szkicu musi pochodzić z tej samej rodziny modeli.", "selectDraftModel": "Wybierz model szkicu", "noModelsFound": "Nie znaleziono modeli szkicu. Upewnij się, że LM Studio jest uruchomione z włączonym trybem serwera.", - "description": "LM Studio pozwala na lokalne uruchamianie modeli na twoim komputerze. Aby rozpocząć, zapoznaj się z ich przewodnikiem szybkiego startu. Będziesz również musiał uruchomić funkcję serwera lokalnego LM Studio, aby używać go z tym rozszerzeniem. Uwaga: Roo Code używa złożonych podpowiedzi i działa najlepiej z modelami Claude. Modele o niższych możliwościach mogą nie działać zgodnie z oczekiwaniami." + "description": "LM Studio pozwala na lokalne uruchamianie modeli na twoim komputerze. Aby rozpocząć, zapoznaj się z ich przewodnikiem szybkiego startu. Będziesz również musiał uruchomić funkcję serwera lokalnego LM Studio, aby używać go z tym rozszerzeniem. Uwaga: Zoo Code używa złożonych podpowiedzi i działa najlepiej z modelami Claude. Modele o niższych możliwościach mogą nie działać zgodnie z oczekiwaniami." }, "ollama": { "baseUrl": "URL bazowy (opcjonalnie)", @@ -466,11 +466,7 @@ "numCtx": "Rozmiar okna kontekstu (num_ctx)", "numCtxHelp": "Zastępuje domyślny rozmiar okna kontekstu modelu. Pozostaw puste, aby użyć konfiguracji Modelfile modelu. Minimalna wartość to 128.", "description": "Ollama pozwala na lokalne uruchamianie modeli na twoim komputerze. Aby rozpocząć, zapoznaj się z przewodnikiem szybkiego startu.", - "warning": "Uwaga: Roo Code używa złożonych podpowiedzi i działa najlepiej z modelami Claude. Modele o niższych możliwościach mogą nie działać zgodnie z oczekiwaniami." - }, - "roo": { - "authenticatedMessage": "Bezpiecznie uwierzytelniony przez twoje konto Roo Code Cloud.", - "connectButton": "Połącz z Roo Code Cloud" + "warning": "Uwaga: Zoo Code używa złożonych podpowiedzi i działa najlepiej z modelami Claude. Modele o niższych możliwościach mogą nie działać zgodnie z oczekiwaniami." }, "openRouter": { "providerRouting": { @@ -480,7 +476,7 @@ } }, "customModel": { - "capabilities": "Skonfiguruj możliwości i ceny swojego niestandardowego modelu zgodnego z OpenAI. Zachowaj ostrożność podczas określania możliwości modelu, ponieważ mogą one wpływać na wydajność Roo Code.", + "capabilities": "Skonfiguruj możliwości i ceny swojego niestandardowego modelu zgodnego z OpenAI. Zachowaj ostrożność podczas określania możliwości modelu, ponieważ mogą one wpływać na wydajność Zoo Code.", "maxTokens": { "label": "Maksymalna liczba tokenów wyjściowych", "description": "Maksymalna liczba tokenów, które model może wygenerować w odpowiedzi. (Określ -1, aby pozwolić serwerowi ustawić maksymalną liczbę tokenów.)" @@ -527,7 +523,7 @@ }, "consecutiveMistakeLimit": { "label": "Limit błędów i powtórzeń", - "description": "Liczba kolejnych błędów lub powtórzonych akcji przed wyświetleniem okna dialogowego 'Roo ma problemy'. Ustaw na 0, aby wyłączyć ten mechanizm bezpieczeństwa (nigdy się nie uruchomi).", + "description": "Liczba kolejnych błędów lub powtórzonych akcji przed wyświetleniem okna dialogowego 'Zoo ma problemy'. Ustaw na 0, aby wyłączyć ten mechanizm bezpieczeństwa (nigdy się nie uruchomi).", "unlimitedDescription": "Włączono nieograniczone próby (automatyczne kontynuowanie). Okno dialogowe nigdy się nie pojawi.", "warning": "⚠️ Ustawienie na 0 pozwala na nieograniczone próby, co może zużyć znaczną ilość API" }, @@ -563,18 +559,18 @@ }, "enable": { "label": "Włącz automatyczne punkty kontrolne", - "description": "Gdy włączone, Roo automatycznie utworzy punkty kontrolne podczas wykonywania zadań, ułatwiając przeglądanie zmian lub powrót do wcześniejszych stanów. <0>Dowiedz się więcej" + "description": "Gdy włączone, Zoo automatycznie utworzy punkty kontrolne podczas wykonywania zadań, ułatwiając przeglądanie zmian lub powrót do wcześniejszych stanów. <0>Dowiedz się więcej" } }, "notifications": { "sound": { "label": "Włącz efekty dźwiękowe", - "description": "Gdy włączone, Roo będzie odtwarzać efekty dźwiękowe dla powiadomień i zdarzeń.", + "description": "Gdy włączone, Zoo będzie odtwarzać efekty dźwiękowe dla powiadomień i zdarzeń.", "volumeLabel": "Głośność" }, "tts": { "label": "Włącz syntezę mowy", - "description": "Gdy włączone, Roo będzie czytać na głos swoje odpowiedzi za pomocą syntezy mowy.", + "description": "Gdy włączone, Zoo będzie czytać na głos swoje odpowiedzi za pomocą syntezy mowy.", "speedLabel": "Szybkość" } }, @@ -582,7 +578,7 @@ "description": "Kontroluj, jakie informacje są zawarte w oknie kontekstu AI, wpływając na zużycie token i jakość odpowiedzi", "autoCondenseContextPercent": { "label": "Próg wyzwalający inteligentną kondensację kontekstu", - "description": "Gdy okno kontekstu osiągnie ten próg, Roo automatycznie je skondensuje." + "description": "Gdy okno kontekstu osiągnie ten próg, Zoo automatycznie je skondensuje." }, "condensingApiConfiguration": { "label": "Konfiguracja API dla kondensacji kontekstu", @@ -598,7 +594,7 @@ }, "autoCondenseContext": { "name": "Automatycznie wyzwalaj inteligentną kondensację kontekstu", - "description": "Gdy włączone, Roo automatycznie skondensuje kontekst po osiągnięciu progu. Gdy wyłączone, nadal możesz ręcznie wyzwolić kondensację kontekstu." + "description": "Gdy włączone, Zoo automatycznie skondensuje kontekst po osiągnięciu progu. Gdy wyłączone, nadal możesz ręcznie wyzwolić kondensację kontekstu." }, "openTabs": { "label": "Limit kontekstu otwartych kart", @@ -614,7 +610,7 @@ }, "maxReadFile": { "label": "Próg automatycznego skracania odczytu pliku", - "description": "Roo odczytuje tę liczbę linii, gdy model nie określa wartości początkowej/końcowej. Jeśli ta liczba jest mniejsza niż całkowita liczba linii pliku, Roo generuje indeks numerów linii definicji kodu. Przypadki specjalne: -1 nakazuje Roo odczytać cały plik (bez indeksowania), a 0 nakazuje nie czytać żadnych linii i dostarczyć tylko indeksy linii dla minimalnego kontekstu. Niższe wartości minimalizują początkowe użycie kontekstu, umożliwiając późniejsze precyzyjne odczyty zakresów linii. Jawne żądania początku/końca nie są ograniczone tym ustawieniem.", + "description": "Zoo odczytuje tę liczbę linii, gdy model nie określa wartości początkowej/końcowej. Jeśli ta liczba jest mniejsza niż całkowita liczba linii pliku, Zoo generuje indeks numerów linii definicji kodu. Przypadki specjalne: -1 nakazuje Zoo odczytać cały plik (bez indeksowania), a 0 nakazuje nie czytać żadnych linii i dostarczyć tylko indeksy linii dla minimalnego kontekstu. Niższe wartości minimalizują początkowe użycie kontekstu, umożliwiając późniejsze precyzyjne odczyty zakresów linii. Jawne żądania początku/końca nie są ograniczone tym ustawieniem.", "lines": "linii", "always_full_read": "Zawsze czytaj cały plik" }, @@ -685,15 +681,15 @@ }, "outputLineLimit": { "label": "Limit wyjścia terminala", - "description": "Zachowuje pierwsze i ostatnie linie i odrzuca środkowe, aby zmieścić się w limicie. Zmniejsz, aby oszczędzać tokeny; zwiększ, aby dać Roo więcej szczegółów ze środka. Roo widzi symbol zastępczy tam, gdzie treść jest pomijana.<0>Dowiedz się więcej" + "description": "Zachowuje pierwsze i ostatnie linie i odrzuca środkowe, aby zmieścić się w limicie. Zmniejsz, aby oszczędzać tokeny; zwiększ, aby dać Zoo więcej szczegółów ze środka. Zoo widzi symbol zastępczy tam, gdzie treść jest pomijana.<0>Dowiedz się więcej" }, "outputCharacterLimit": { "label": "Limit znaków terminala", - "description": "Zastępuje limit linii, aby zapobiec problemom z pamięcią, narzucając twardy limit rozmiaru wyjścia. W przypadku przekroczenia zachowuje początek i koniec i pokazuje symbol zastępczy Roo tam, gdzie treść jest pomijana. <0>Dowiedz się więcej" + "description": "Zastępuje limit linii, aby zapobiec problemom z pamięcią, narzucając twardy limit rozmiaru wyjścia. W przypadku przekroczenia zachowuje początek i koniec i pokazuje symbol zastępczy Zoo tam, gdzie treść jest pomijana. <0>Dowiedz się więcej" }, "outputPreviewSize": { "label": "Rozmiar podglądu wyjścia polecenia", - "description": "Kontroluje, ile wyjścia polecenia Roo widzi bezpośrednio. Pełne wyjście jest zawsze zapisywane i dostępne w razie potrzeby.", + "description": "Kontroluje, ile wyjścia polecenia Zoo widzi bezpośrednio. Pełne wyjście jest zawsze zapisywane i dostępne w razie potrzeby.", "options": { "small": "Mały (5KB)", "medium": "Średni (10KB)", @@ -706,7 +702,7 @@ }, "shellIntegrationDisabled": { "label": "Użyj terminala wbudowanego (zalecane)", - "description": "Uruchamiaj polecenia w terminalu wbudowanym (czat), aby ominąć profile/integrację powłoki dla szybszych, bardziej niezawodnych uruchomień. Gdy wyłączony, Roo używa terminala VS Code z twoim profilem powłoki, monitami i wtyczkami. <0>Dowiedz się więcej" + "description": "Uruchamiaj polecenia w terminalu wbudowanym (czat), aby ominąć profile/integrację powłoki dla szybszych, bardziej niezawodnych uruchomień. Gdy wyłączony, Zoo używa terminala VS Code z twoim profilem powłoki, monitami i wtyczkami. <0>Dowiedz się więcej" }, "commandDelay": { "label": "Opóźnienie polecenia terminala", @@ -743,7 +739,7 @@ "advanced": { "diff": { "label": "Włącz edycję przez różnice", - "description": "Gdy włączone, Roo będzie w stanie edytować pliki szybciej i automatycznie odrzuci obcięte pełne zapisy plików", + "description": "Gdy włączone, Zoo będzie w stanie edytować pliki szybciej i automatycznie odrzuci obcięte pełne zapisy plików", "strategy": { "label": "Strategia diff", "options": { @@ -760,7 +756,7 @@ }, "todoList": { "label": "Włącz narzędzie listy zadań", - "description": "Po włączeniu Roo może tworzyć i zarządzać listami zadań do śledzenia postępu zadań. Pomaga to organizować złożone zadania w łatwe do zarządzania kroki." + "description": "Po włączeniu Zoo może tworzyć i zarządzać listami zadań do śledzenia postępu zadań. Pomaga to organizować złożone zadania w łatwe do zarządzania kroki." } }, "experimental": { @@ -770,15 +766,15 @@ }, "INSERT_BLOCK": { "name": "Użyj eksperymentalnego narzędzia do wstawiania treści", - "description": "Włącz eksperymentalne narzędzie do wstawiania treści, umożliwiając Roo wstawianie treści w określonych numerach linii bez konieczności tworzenia diff." + "description": "Włącz eksperymentalne narzędzie do wstawiania treści, umożliwiając Zoo wstawianie treści w określonych numerach linii bez konieczności tworzenia diff." }, "MULTI_SEARCH_AND_REPLACE": { "name": "Użyj eksperymentalnego narzędzia diff wieloblokowego", - "description": "Po włączeniu, Roo użyje narzędzia diff wieloblokowego. Spróbuje to zaktualizować wiele bloków kodu w pliku w jednym żądaniu." + "description": "Po włączeniu, Zoo użyje narzędzia diff wieloblokowego. Spróbuje to zaktualizować wiele bloków kodu w pliku w jednym żądaniu." }, "CONCURRENT_FILE_READS": { "name": "Włącz jednoczesne odczytywanie plików", - "description": "Po włączeniu Roo może odczytać wiele plików w jednym żądaniu. Po wyłączeniu Roo musi odczytywać pliki pojedynczo. Wyłączenie może pomóc podczas pracy z mniej wydajnymi modelami lub gdy chcesz mieć większą kontrolę nad dostępem do plików." + "description": "Po włączeniu Zoo może odczytać wiele plików w jednym żądaniu. Po wyłączeniu Zoo musi odczytywać pliki pojedynczo. Wyłączenie może pomóc podczas pracy z mniej wydajnymi modelami lub gdy chcesz mieć większą kontrolę nad dostępem do plików." }, "MARKETPLACE": { "name": "Włącz Marketplace", @@ -786,7 +782,7 @@ }, "PREVENT_FOCUS_DISRUPTION": { "name": "Edycja w tle", - "description": "Zapobiega zakłócaniu fokusa edytora gdy włączone. Edycje plików odbywają się w tle bez otwierania widoków różnic lub kradzieży fokusa. Możesz kontynuować pracę bez przeszkód podczas gdy Roo wprowadza zmiany. Pliki mogą być otwierane bez fokusa aby przechwycić diagnostykę lub pozostać całkowicie zamknięte." + "description": "Zapobiega zakłócaniu fokusa edytora gdy włączone. Edycje plików odbywają się w tle bez otwierania widoków różnic lub kradzieży fokusa. Możesz kontynuować pracę bez przeszkód podczas gdy Zoo wprowadza zmiany. Pliki mogą być otwierane bez fokusa aby przechwycić diagnostykę lub pozostać całkowicie zamknięte." }, "ASSISTANT_MESSAGE_PARSER": { "name": "Użyj nowego parsera wiadomości", @@ -800,7 +796,7 @@ "providerLabel": "Dostawca", "providerDescription": "Wybierz dostawcę do generowania obrazów.", "name": "Włącz generowanie obrazów AI", - "description": "Gdy włączone, Roo może generować obrazy z promptów tekstowych używając modeli generowania obrazów OpenRouter. Wymaga skonfigurowanego klucza API OpenRouter.", + "description": "Gdy włączone, Zoo może generować obrazy z promptów tekstowych używając modeli generowania obrazów OpenRouter. Wymaga skonfigurowanego klucza API OpenRouter.", "openRouterApiKeyLabel": "Klucz API OpenRouter", "openRouterApiKeyPlaceholder": "Wprowadź swój klucz API OpenRouter", "getApiKeyText": "Uzyskaj swój klucz API od", @@ -811,11 +807,11 @@ }, "RUN_SLASH_COMMAND": { "name": "Włącz polecenia slash inicjowane przez model", - "description": "Gdy włączone, Roo może uruchamiać twoje polecenia slash w celu wykonywania przepływów pracy." + "description": "Gdy włączone, Zoo może uruchamiać twoje polecenia slash w celu wykonywania przepływów pracy." }, "CUSTOM_TOOLS": { "name": "Włącz niestandardowe narzędzia", - "description": "Gdy włączone, Roo może ładować i używać niestandardowych narzędzi TypeScript/JavaScript z katalogu .roo/tools Twojego projektu lub ~/.roo/tools dla narzędzi globalnych. Uwaga: te narzędzia będą automatycznie zatwierdzane.", + "description": "Gdy włączone, Zoo może ładować i używać niestandardowych narzędzi TypeScript/JavaScript z katalogu .roo/tools Twojego projektu lub ~/.roo/tools dla narzędzi globalnych. Uwaga: te narzędzia będą automatycznie zatwierdzane.", "toolsHeader": "Dostępne niestandardowe narzędzia", "noTools": "Nie załadowano niestandardowych narzędzi. Dodaj pliki .ts lub .js do katalogu .roo/tools swojego projektu lub ~/.roo/tools dla narzędzi globalnych.", "refreshButton": "Odśwież", @@ -827,7 +823,7 @@ }, "promptCaching": { "label": "Wyłącz buforowanie promptów", - "description": "Po zaznaczeniu, Roo nie będzie używać buforowania promptów dla tego modelu." + "description": "Po zaznaczeniu, Zoo nie będzie używać buforowania promptów dla tego modelu." }, "temperature": { "useCustom": "Użyj niestandardowej temperatury", @@ -857,7 +853,7 @@ } }, "modelPicker": { - "automaticFetch": "Rozszerzenie automatycznie pobiera najnowszą listę modeli dostępnych w {{serviceName}}. Jeśli nie jesteś pewien, który model wybrać, Roo Code działa najlepiej z {{defaultModelId}}. Możesz również wyszukać \"free\", aby znaleźć obecnie dostępne opcje bezpłatne.", + "automaticFetch": "Rozszerzenie automatycznie pobiera najnowszą listę modeli dostępnych w {{serviceName}}. Jeśli nie jesteś pewien, który model wybrać, Zoo Code działa najlepiej z {{defaultModelId}}. Możesz również wyszukać \"free\", aby znaleźć obecnie dostępne opcje bezpłatne.", "label": "Model", "searchPlaceholder": "Wyszukaj", "noMatchFound": "Nie znaleziono dopasowań", @@ -867,7 +863,7 @@ "footer": { "telemetry": { "label": "Zezwól na anonimowe raportowanie błędów i użycia", - "description": "Pomóż ulepszyć Roo Code, wysyłając anonimowe dane użytkowania i raporty błędów. Ta telemetria nie zbiera kodu, promptów ani danych osobowych. Zobacz naszą politykę prywatności, aby uzyskać więcej szczegółów. Możesz to wyłączyć w dowolnym momencie." + "description": "Pomóż ulepszyć Zoo Code, wysyłając anonimowe dane użytkowania i raporty błędów. Ta telemetria nie zbiera kodu, promptów ani danych osobowych. Zobacz naszą politykę prywatności, aby uzyskać więcej szczegółów. Możesz to wyłączyć w dowolnym momencie." }, "settings": { "import": "Importuj", diff --git a/webview-ui/src/i18n/locales/pl/welcome.json b/webview-ui/src/i18n/locales/pl/welcome.json index 3949a78e265..854dc40607d 100644 --- a/webview-ui/src/i18n/locales/pl/welcome.json +++ b/webview-ui/src/i18n/locales/pl/welcome.json @@ -1,52 +1,18 @@ { - "routers": { - "requesty": { - "description": "Twój zoptymalizowany router LLM", - "incentive": "Bezpłatny kredyt w wysokości $1" - }, - "openrouter": { - "description": "Ujednolicony interfejs dla LLM" - }, - "roo": { - "description": "Najlepsze bezpłatne modele dla początkujących", - "incentive": "Wypróbuj Roo bezpłatnie" - } - }, "landing": { "greeting": "Witaj w Roo Code!", "introduction": "Dzięki szerokiej gamie wbudowanych i rozszerzalnych Trybów, Roo Code pozwala planować, projektować architekturę, kodować, debugować i zwiększać produktywność jak nigdy dotąd.", - "accountMention": "Aby rozpocząć, utwórz konto Roo Code Cloud. Otrzymaj potężne modele, kontrolę internetową, analizę, wsparcie i wiele więcej.", - "getStarted": "Utwórz konto Roo", - "noAccount": "lub używaj bez konta" + "getStarted": "Wybierz swojego dostawcę" }, "providerSignup": { "heading": "Wybierz swojego dostawcę", "chooseProvider": "Roo potrzebuje dostawcy LLM, aby działać. Wybierz jeden, aby zacząć, możesz dodać więcej później.", - "rooCloudProvider": "Dostawca Roo Code Cloud", - "rooCloudDescription": "Najłatwiejszy sposób na rozpoczęcie to skorzystanie z Dostawcy Roo Code Cloud: starannie wybrany mix bezpłatnych i płatnych modeli w niskiej cenie.", - "learnMore": "Dowiedz się więcej", - "useAnotherProvider": "Dostawca trzeciej strony", - "useAnotherProviderDescription": "Wprowadź klucz API i zacznij.", - "noApiKeys": "Nie chcesz radzić sobie z kluczami API i oddzielnymi kontami?", - "backToRoo": "Wybierz Dostawcę Roo Code Cloud.", "goBack": "Wróć", "finish": "Zakończ" }, - "waitingForCloud": { - "heading": "Logowanie do Roo Code Cloud...", - "description": "Zaprowadzimy Cię do przeglądarki, aby zarejestrować się w Roo Code Cloud. Następnie wrócimy tutaj, aby ukończyć.", - "noPrompt": "Jeśli nie zostaniesz poproszony o otwarcie adresu URL, kliknij tutaj.", - "havingTrouble": "Jeśli ukończyłeś rejestrację, ale masz problemy, kliknij tutaj.", - "pasteUrl": "Wklej adres URL wywołania zwrotnego z przeglądarki:", - "docsLink": "Nie działa? Sprawdź dokumentację.", - "invalidURL": "To nie wygląda na prawidłowy adres URL wywołania zwrotnego. Skopiuj to, co Roo Code Cloud wyświetla w przeglądarce.", - "goBack": "Wróć" - }, - "startRouter": "Rekomendujemy użycie routera LLM:", - "startCustom": "Lub możesz przynieść swój własny klucz API:", "telemetry": { - "helpImprove": "Pomóż ulepszyć Roo Code", - "helpImproveMessage": "Roo Code zbiera dane o błędach i użytkowaniu, aby pomóc nam naprawiać błędy i ulepszać rozszerzenie. Ta telemetria nie zbiera kodu, podpowiedzi ani danych osobowych. Możesz je wyłączyć w ustawieniach." + "helpImprove": "Pomóż ulepszyć Zoo Code", + "helpImproveMessage": "Zoo Code zbiera dane o błędach i użytkowaniu, aby pomóc nam naprawiać błędy i ulepszać rozszerzenie. Ta telemetria nie zbiera kodu, podpowiedzi ani danych osobowych. Możesz je wyłączyć w ustawieniach." }, "importSettings": "Importuj ustawienia" } diff --git a/webview-ui/src/i18n/locales/pl/worktrees.json b/webview-ui/src/i18n/locales/pl/worktrees.json index 58fa26f7ac1..fc84c002572 100644 --- a/webview-ui/src/i18n/locales/pl/worktrees.json +++ b/webview-ui/src/i18n/locales/pl/worktrees.json @@ -1,28 +1,23 @@ { "title": "Worktrees", "done": "Gotowe", - "description": "Git worktrees pozwalają pracować jednocześnie na wielu branchach w oddzielnych katalogach. Każdy worktree ma własne okno VS Code z Roo Code.", - + "description": "Git worktrees pozwalają pracować jednocześnie na wielu branchach w oddzielnych katalogach. Każdy worktree ma własne okno VS Code z Zoo Code.", "notGitRepo": "Ten workspace nie jest repozytorium Git. Worktrees wymagają repozytorium Git, aby działać.", "multiRootNotSupported": "Worktrees nie są obsługiwane w workspace'ach multi-root. Otwórz pojedynczy folder, aby używać worktrees.", "subfolderNotSupported": "Ten workspace jest podfolderem repozytorium Git. Otwórz root repozytorium, aby używać worktrees.", "gitRoot": "Root Git", - "includeFileExists": "Znaleziono plik .worktreeinclude — pliki zostaną skopiowane do nowych worktrees", "noIncludeFile": "Nie znaleziono pliku .worktreeinclude", "createFromGitignore": "Utwórz z .gitignore", - "primary": "Główny", "current": "Bieżący", "locked": "Zablokowany", "detachedHead": "Detached HEAD", "noBranch": "Brak brancha", - "switchInThisWindow": "Przełącz na worktree", "openInNewWindow": "Otwórz w nowym oknie", "delete": "Usuń", "newWorktree": "Nowy Worktree", - "createWorktree": "Utwórz Worktree", "branchName": "Nazwa brancha", "createNewBranch": "Utwórz nowy branch", @@ -44,7 +39,6 @@ "copyingFiles": "Kopiowanie plików...", "copyingProgress": "{{item}} — {{copied}} skopiowano", "cancel": "Anuluj", - "deleteWorktree": "Usuń Worktree", "deleteWarning": "Tej akcji nie można cofnąć. Zostanie usunięte:", "deleteWarningBranch": "Branch i wszystkie niezatwierdzone zmiany", @@ -53,11 +47,8 @@ "forceDelete": "Wymuś usunięcie", "worktreeIsLocked": "worktree jest zablokowany", "deleting": "Usuwanie...", - "close": "Zamknij", - "showInHomeScreen": "Pokaż worktrees na ekranie głównym", - "selector": { "worktree": "Worktree", "title": "Worktrees", diff --git a/webview-ui/src/i18n/locales/pt-BR/chat.json b/webview-ui/src/i18n/locales/pt-BR/chat.json index fe65244eaf2..154f3b4944f 100644 --- a/webview-ui/src/i18n/locales/pt-BR/chat.json +++ b/webview-ui/src/i18n/locales/pt-BR/chat.json @@ -1,5 +1,5 @@ { - "greeting": "Bem-vindo ao Roo Code", + "greeting": "Bem-vindo ao Zoo Code!", "task": { "title": "Tarefa", "expand": "Expandir tarefa", @@ -15,16 +15,6 @@ "export": "Exportar histórico de tarefas", "delete": "Excluir tarefa (Shift + Clique para pular confirmação)", "condenseContext": "Condensar contexto de forma inteligente", - "share": "Compartilhar tarefa", - "shareWithOrganization": "Compartilhar com organização", - "shareWithOrganizationDescription": "Apenas membros da sua organização podem acessar", - "sharePublicly": "Compartilhar publicamente", - "sharePubliclyDescription": "Qualquer pessoa com o link pode acessar", - "connectToCloud": "Conectar ao Cloud", - "connectToCloudDescription": "Entre no Roo Code Cloud para compartilhar tarefas", - "sharingDisabledByOrganization": "Compartilhamento desabilitado pela organização", - "shareSuccessOrganization": "Link da organização copiado para a área de transferência", - "shareSuccessPublic": "Link público copiado para a área de transferência", "openApiHistory": "Abrir histórico da API", "openUiHistory": "Abrir histórico da UI", "backToParentTask": "Tarefa pai" @@ -98,7 +88,7 @@ "enqueueMessage": "Adicionar mensagem à fila (será enviada após a conclusão da tarefa atual)", "scrollToBottom": "Rolar para o final do chat", "scrollToLatestCheckpoint": "Rolar para o checkpoint anterior", - "about": "Roo Code é uma equipe inteira de desenvolvimento de IA em seu editor.", + "about": "Zoo Code é uma equipe inteira de desenvolvimento de IA em seu editor.", "docs": "Confira nossa documentação para saber mais.", "onboarding": "Sua lista de tarefas neste espaço de trabalho está vazia.", "rooTips": { @@ -130,7 +120,7 @@ "title": "Modos", "marketplace": "Marketplace de Modos", "settings": "Configurações de Modos", - "description": "Personas especializadas que adaptam o comportamento do Roo.", + "description": "Personas especializadas que adaptam o comportamento do Zoo.", "searchPlaceholder": "Pesquisar modos...", "noResults": "Nenhum resultado encontrado" }, @@ -144,7 +134,7 @@ "diffError": { "title": "Edição mal-sucedida" }, - "troubleMessage": "Roo está tendo problemas...", + "troubleMessage": "Zoo está tendo problemas...", "apiRequest": { "title": "Requisição API", "failed": "Requisição API falhou", @@ -162,7 +152,7 @@ "500": "Erro do servidor do provedor. Algo está errado do lado do provedor, não há nada de errado com sua solicitação.", "docs": "Documentação", "goToSettings": "Configurações", - "unknown": "Erro de API desconhecido. Por favor, entre em contato com o suporte do Roo Code.", + "unknown": "Erro de API desconhecido. Entre em contato com o suporte do Zoo Code.", "connection": "Erro de conexão. Certifique-se de que você tem uma conexão de internet funcionando.", "claudeCodeNotAuthenticated": "Você precisa fazer login para usar o Claude Code. Vá para Configurações e clique em \"Entrar no Claude Code\" para autenticar." } @@ -190,40 +180,40 @@ "wantsToFetch": "Roo quer buscar instruções detalhadas para ajudar com a tarefa atual" }, "fileOperations": { - "wantsToRead": "Roo quer ler este arquivo", - "wantsToReadOutsideWorkspace": "Roo quer ler este arquivo fora do espaço de trabalho", - "didRead": "Roo leu este arquivo", - "wantsToEdit": "Roo quer editar este arquivo", - "wantsToEditOutsideWorkspace": "Roo quer editar este arquivo fora do espaço de trabalho", - "wantsToEditProtected": "Roo quer editar um arquivo de configuração protegido", - "wantsToCreate": "Roo quer criar um novo arquivo", + "wantsToRead": "Zoo quer ler este arquivo", + "wantsToReadOutsideWorkspace": "Zoo quer ler este arquivo fora do espaço de trabalho", + "didRead": "Zoo leu este arquivo", + "wantsToEdit": "Zoo quer editar este arquivo", + "wantsToEditOutsideWorkspace": "Zoo quer editar este arquivo fora do espaço de trabalho", + "wantsToEditProtected": "Zoo quer editar um arquivo de configuração protegido", + "wantsToCreate": "Zoo quer criar um novo arquivo", "wantsToSearchReplace": "Roo quer realizar busca e substituição neste arquivo", "didSearchReplace": "Roo realizou busca e substituição neste arquivo", - "wantsToInsert": "Roo quer inserir conteúdo neste arquivo", - "wantsToInsertWithLineNumber": "Roo quer inserir conteúdo neste arquivo na linha {{lineNumber}}", - "wantsToInsertAtEnd": "Roo quer adicionar conteúdo ao final deste arquivo", - "wantsToReadAndXMore": "Roo quer ler este arquivo e mais {{count}}", - "wantsToReadMultiple": "Roo deseja ler múltiplos arquivos", - "wantsToApplyBatchChanges": "Roo quer aplicar alterações a múltiplos arquivos", - "wantsToGenerateImage": "Roo quer gerar uma imagem", - "wantsToGenerateImageOutsideWorkspace": "Roo quer gerar uma imagem fora do espaço de trabalho", - "wantsToGenerateImageProtected": "Roo quer gerar uma imagem em um local protegido", - "didGenerateImage": "Roo gerou uma imagem" + "wantsToInsert": "Zoo quer inserir conteúdo neste arquivo", + "wantsToInsertWithLineNumber": "Zoo quer inserir conteúdo neste arquivo na linha {{lineNumber}}", + "wantsToInsertAtEnd": "Zoo quer adicionar conteúdo ao final deste arquivo", + "wantsToReadAndXMore": "Zoo quer ler este arquivo e mais {{count}}", + "wantsToReadMultiple": "Zoo deseja ler múltiplos arquivos", + "wantsToApplyBatchChanges": "Zoo quer aplicar alterações a múltiplos arquivos", + "wantsToGenerateImage": "Zoo quer gerar uma imagem", + "wantsToGenerateImageOutsideWorkspace": "Zoo quer gerar uma imagem fora do espaço de trabalho", + "wantsToGenerateImageProtected": "Zoo quer gerar uma imagem em um local protegido", + "didGenerateImage": "Zoo gerou uma imagem" }, "directoryOperations": { - "wantsToViewTopLevel": "Roo quer visualizar os arquivos de nível superior neste diretório", - "didViewTopLevel": "Roo visualizou os arquivos de nível superior neste diretório", - "wantsToViewRecursive": "Roo quer visualizar recursivamente todos os arquivos neste diretório", - "didViewRecursive": "Roo visualizou recursivamente todos os arquivos neste diretório", - "wantsToSearch": "Roo quer pesquisar neste diretório por {{regex}}", - "didSearch": "Roo pesquisou neste diretório por {{regex}}", - "wantsToSearchOutsideWorkspace": "Roo quer pesquisar neste diretório (fora do espaço de trabalho) por {{regex}}", - "didSearchOutsideWorkspace": "Roo pesquisou neste diretório (fora do espaço de trabalho) por {{regex}}", - "wantsToViewTopLevelOutsideWorkspace": "Roo quer visualizar os arquivos de nível superior neste diretório (fora do espaço de trabalho)", - "didViewTopLevelOutsideWorkspace": "Roo visualizou os arquivos de nível superior neste diretório (fora do espaço de trabalho)", - "wantsToViewRecursiveOutsideWorkspace": "Roo quer visualizar recursivamente todos os arquivos neste diretório (fora do espaço de trabalho)", - "didViewRecursiveOutsideWorkspace": "Roo visualizou recursivamente todos os arquivos neste diretório (fora do espaço de trabalho)", - "wantsToViewMultipleDirectories": "Roo quer visualizar vários diretórios" + "wantsToViewTopLevel": "Zoo quer visualizar os arquivos de nível superior neste diretório", + "didViewTopLevel": "Zoo visualizou os arquivos de nível superior neste diretório", + "wantsToViewRecursive": "Zoo quer visualizar recursivamente todos os arquivos neste diretório", + "didViewRecursive": "Zoo visualizou recursivamente todos os arquivos neste diretório", + "wantsToSearch": "Zoo quer pesquisar neste diretório por {{regex}}", + "didSearch": "Zoo pesquisou neste diretório por {{regex}}", + "wantsToSearchOutsideWorkspace": "Zoo quer pesquisar neste diretório (fora do espaço de trabalho) por {{regex}}", + "didSearchOutsideWorkspace": "Zoo pesquisou neste diretório (fora do espaço de trabalho) por {{regex}}", + "wantsToViewTopLevelOutsideWorkspace": "Zoo quer visualizar os arquivos de nível superior neste diretório (fora do espaço de trabalho)", + "didViewTopLevelOutsideWorkspace": "Zoo visualizou os arquivos de nível superior neste diretório (fora do espaço de trabalho)", + "wantsToViewRecursiveOutsideWorkspace": "Zoo quer visualizar recursivamente todos os arquivos neste diretório (fora do espaço de trabalho)", + "didViewRecursiveOutsideWorkspace": "Zoo visualizou recursivamente todos os arquivos neste diretório (fora do espaço de trabalho)", + "wantsToViewMultipleDirectories": "Zoo quer visualizar vários diretórios" }, "commandOutput": "Saída do comando", "commandExecution": { @@ -245,24 +235,24 @@ "response": "Resposta", "arguments": "Argumentos", "text": { - "rooSaid": "Roo disse" + "rooSaid": "Zoo disse" }, "feedback": { "youSaid": "Você disse" }, "mcp": { - "wantsToUseTool": "Roo quer usar uma ferramenta no servidor MCP {{serverName}}", - "wantsToAccessResource": "Roo quer acessar um recurso no servidor MCP {{serverName}}" + "wantsToUseTool": "Zoo quer usar uma ferramenta no servidor MCP {{serverName}}", + "wantsToAccessResource": "Zoo quer acessar um recurso no servidor MCP {{serverName}}" }, "modes": { - "wantsToSwitch": "Roo quer mudar para o modo {{mode}}", - "wantsToSwitchWithReason": "Roo quer mudar para o modo {{mode}} porque: {{reason}}", - "didSwitch": "Roo mudou para o modo {{mode}}", - "didSwitchWithReason": "Roo mudou para o modo {{mode}} porque: {{reason}}" + "wantsToSwitch": "Zoo quer mudar para o modo {{mode}}", + "wantsToSwitchWithReason": "Zoo quer mudar para o modo {{mode}} porque: {{reason}}", + "didSwitch": "Zoo mudou para o modo {{mode}}", + "didSwitchWithReason": "Zoo mudou para o modo {{mode}} porque: {{reason}}" }, "subtasks": { - "wantsToCreate": "Roo quer criar uma nova subtarefa no modo {{mode}}", - "wantsToFinish": "Roo quer finalizar esta subtarefa", + "wantsToCreate": "Zoo quer criar uma nova subtarefa no modo {{mode}}", + "wantsToFinish": "Zoo quer finalizar esta subtarefa", "newTaskContent": "Instruções da subtarefa", "completionContent": "Subtarefa concluída", "resultContent": "Resultados da subtarefa", @@ -271,7 +261,7 @@ "goToSubtask": "Ver tarefa" }, "questions": { - "hasQuestion": "Roo tem uma pergunta" + "hasQuestion": "Zoo tem uma pergunta" }, "taskCompleted": "Tarefa concluída", "modelResponseIncomplete": "Resposta do modelo incompleta", @@ -287,7 +277,7 @@ "copyToClipboard": "Copiar para área de transferência", "copied": "Copiado!", "diagnostics": "Obter informações detalhadas do erro", - "proxyProvider": "Parece que você está usando um provedor baseado em proxy. Certifique-se de verificar seus registros e garantir que não está reescrevendo as solicitações do Roo." + "proxyProvider": "Parece que você está usando um provedor baseado em proxy. Certifique-se de verificar seus registros e garantir que não está reescrevendo as solicitações do Zoo." }, "powershell": { "issues": "Parece que você está tendo problemas com o Windows PowerShell, por favor veja este" @@ -330,31 +320,24 @@ } }, "skill": { - "wantsToLoad": "Roo quer carregar uma habilidade", - "didLoad": "Roo carregou uma habilidade" + "wantsToLoad": "Zoo quer carregar uma habilidade", + "didLoad": "Zoo carregou uma habilidade" }, "followUpSuggest": { "copyToInput": "Copiar para entrada (ou Shift + clique)", "timerPrefix": "Aprovação automática ativada. Selecionando em {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}} Lançado", - "support": "Apoie o Roo Code nos dando uma estrela no GitHub.", - "stealthModel": { - "feature": "Modelo stealth GRATUITO por tempo limitado - Code Supernova: Agora atualizado com uma janela de contexto de 1M tokens! Um modelo de codificação agêntica versátil que suporta entradas de imagem, acessível através do Roo Code Cloud.", - "note": "(Nota: prompts e completações são registrados pelo criador do modelo e usados para melhorá-lo)", - "connectButton": "Conectar ao Roo Code Cloud", - "selectModel": "Selecione roo/code-supernova do provedor Roo Code Cloud em Configurações para começar.", - "goToSettingsButton": "Ir para Configurações" - }, + "title": "Zoo Code {{version}} lançado", + "support": "Apoie o Zoo Code nos dando uma estrela no GitHub.", "handoff": { - "heading": "O plugin Roo Code não vai acabar.", - "description": "Você pode ter visto o anúncio recente de que o Roo Code atingiu 3 milhões de instalações e a equipe original está se dedicando totalmente ao Roomote. Sabemos que essa notícia foi difícil para muitos de vocês. Esse plugin significa muito para nós e para você, e ouvimos o que você tem a dizer. A boa notícia: um time da comunidade assumiu a tarefa de levar o Roo Code adiante, e estamos trabalhando com eles em uma transição oficial para que o plugin em que você confia continue recebendo manutenção e melhorias.", - "readMore": "Leia o anúncio original do Matt Rubens" + "heading": "O Zoo Code está de volta, agora como um plugin mantido pela comunidade chamado Zoo Code!!", + "description": "Se você não acompanhou, a equipe do Zoo Code anunciou recentemente que vai encerrar o desenvolvimento do Zoo Code e arquivar o trabalho que fez. Mas não se preocupe: a comunidade assumiu para continuar o legado do Zoo Code com um novo nome e um novo lar! Não somos mais apenas um único \"Roo\" — somos uma comunidade, um \"Zoo\", por assim dizer. O Zoo Code é um plugin mantido pela comunidade que continua de onde o Zoo Code parou, e estamos comprometidos em manter vivo o espírito do Roo enquanto também trazemos novos recursos e melhorias. Queremos deixar um enorme agradecimento a toda a equipe do Zoo Code pelo trabalho incrível e por criar uma ferramenta tão fantástica para desenvolvedores. Estamos animados para continuar construindo sobre essa base e ver até onde a comunidade levará o Zoo Code no futuro!", + "readMore": "Veja a nova página inicial do Zoo Code e leia o anúncio completo" }, "release": { "heading": "Novidades:", - "gpt55": "GPT-5.5 via OpenAI Codex: Adicionado suporte ao GPT-5.5 no provedor OpenAI Codex para você usar o modelo mais recente diretamente do Roo Code.", + "gpt55": "GPT-5.5 via OpenAI Codex: Adicionado suporte ao GPT-5.5 no provedor OpenAI Codex para você usar o modelo mais recente diretamente do Zoo Code.", "claudeOpus47": "Claude Opus 4.7 no Vertex AI: Adicionado o Claude Opus 4.7 ao provedor Vertex AI, o mais novo modelo de raciocínio flagship da Anthropic.", "checkpointNav": "Navegação por checkpoints anteriores: Adicionados controles no chat para voltar por checkpoints anteriores, com suporte completo a i18n." }, @@ -380,24 +363,24 @@ "profileViolationWarning": "O perfil atual não é compatível com as configurações da sua organização", "shellIntegration": { "title": "Aviso de execução de comando", - "description": "Seu comando está sendo executado sem a integração de shell do terminal VSCode. Para suprimir este aviso, você pode desativar a integração de shell na seção Terminal das configurações do Roo Code ou solucionar problemas de integração do terminal VSCode usando o link abaixo.", + "description": "Seu comando está sendo executado sem a integração de shell do terminal VSCode. Para suprimir este aviso, você pode desativar a integração de shell na seção Terminal das configurações do Zoo Code ou solucionar problemas de integração do terminal VSCode usando o link abaixo.", "troubleshooting": "Clique aqui para a documentação de integração de shell." }, "ask": { "autoApprovedRequestLimitReached": { "title": "Limite de Solicitações Auto-aprovadas Atingido", - "description": "Roo atingiu o limite auto-aprovado de {{count}} solicitação(ões) de API. Deseja redefinir a contagem e prosseguir com a tarefa?", + "description": "Zoo atingiu o limite auto-aprovado de {{count}} solicitação(ões) de API. Deseja redefinir a contagem e prosseguir com a tarefa?", "button": "Redefinir e Continuar" }, "autoApprovedCostLimitReached": { "title": "Limite de Custo com Aprovação Automática Atingido", - "description": "Roo atingiu o limite de custo com aprovação automática de US${{count}}. Você gostaria de redefinir o custo e prosseguir com a tarefa?", + "description": "Zoo atingiu o limite de custo com aprovação automática de US${{count}}. Você gostaria de redefinir o custo e prosseguir com a tarefa?", "button": "Redefinir e Continuar" } }, "codebaseSearch": { - "wantsToSearch": "Roo quer pesquisar na base de código por {{query}}", - "wantsToSearchWithPath": "Roo quer pesquisar na base de código por {{query}} em {{path}}", + "wantsToSearch": "Zoo quer pesquisar na base de código por {{query}}", + "wantsToSearchWithPath": "Zoo quer pesquisar na base de código por {{query}} em {{path}}", "didSearch_one": "Encontrado 1 resultado", "didSearch_other": "Encontrados {{count}} resultados", "resultTooltip": "Pontuação de similaridade: {{score}} (clique para abrir o arquivo)" @@ -438,7 +421,7 @@ "ariaLabel": "Versão {{version}} - Clique para ver as notas de lançamento" }, "rooCloudCTA": { - "title": "Roo Code Cloud está evoluindo!", + "title": "Zoo Code Cloud está evoluindo!", "description": "Execute agentes remotos na nuvem, acesse suas tarefas de qualquer lugar, colabore com outros e muito mais.", "joinWaitlist": "Cadastre-se para receber as últimas atualizações." }, @@ -479,8 +462,8 @@ "clickToEdit": "Clique para editar a mensagem" }, "slashCommand": { - "wantsToRun": "Roo quer executar um comando slash", - "didRun": "Roo executou um comando slash" + "wantsToRun": "Zoo quer executar um comando slash", + "didRun": "Zoo executou um comando slash" }, "todo": { "partial": "{{completed}} de {{total}} tarefas concluídas", @@ -499,11 +482,11 @@ "openMcpSettings": "Abrir Configurações MCP" }, "readCommandOutput": { - "title": "Roo read command output" + "title": "Zoo read command output" }, "retiredProvider": { "title": "Provedor não é mais suportado", - "message": "Desculpe, este provedor não é mais suportado. Percebemos que muito poucos usuários do Roo realmente o utilizavam e precisamos reduzir o escopo do nosso código para continuar entregando rápido e servindo bem nossa comunidade. Foi uma decisão muito difícil, mas nos permite focar no que mais importa para você. Sabemos que é chato.", + "message": "Este provedor não está mais disponível. Selecione um provedor compatível para continuar.", "openSettings": "Abrir configurações" } } diff --git a/webview-ui/src/i18n/locales/pt-BR/cloud.json b/webview-ui/src/i18n/locales/pt-BR/cloud.json deleted file mode 100644 index d360d1d95cd..00000000000 --- a/webview-ui/src/i18n/locales/pt-BR/cloud.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "title": "Cloud", - "profilePicture": "Foto de perfil", - "logOut": "Sair", - "testApiAuthentication": "Testar Autenticação de API", - "signIn": "Conectar ao Roo Code Cloud", - "connect": "Começar", - "cloudBenefitsTitle": "Experimente o Roo Code Cloud", - "cloudBenefitProvider": "Acesse modelos gratuitos e pagos que funcionam muito bem com o Roo", - "cloudBenefitCloudAgents": "Dê tarefas a agentes autônomos na nuvem", - "cloudBenefitTriggers": "Obtenha revisões de código no GitHub, inicie tarefas do Slack e muito mais", - "cloudBenefitWalkaway": "Acompanhe e controle tarefas de qualquer lugar (incluindo seu telefone)", - "cloudBenefitHistory": "Acesse seu histórico de tarefas de qualquer lugar e compartilhe com outros", - "cloudBenefitMetrics": "Obtenha uma visão holística do seu consumo de tokens", - "visitCloudWebsite": "Visitar Roo Code Cloud", - "taskSync": "Sincronização de tarefas", - "taskSyncDescription": "Sincronize suas tarefas para visualizar e compartilhar no Roo Code Cloud", - "taskSyncManagedByOrganization": "A sincronização de tarefas é gerenciada pela sua organização", - "usageMetricsAlwaysReported": "As informações de uso do modelo são sempre reportadas quando conectado", - "authWaiting": "Aguardando conclusão da autenticação...", - "havingTrouble": "Tendo problemas?", - "pasteCallbackUrl": "Copie a URL de redirect do seu navegador e cole aqui:", - "startOver": "Recomeçar", - "personalAccount": "Conta Pessoal", - "switchAccount": "Alternar Conta do Roo Code Cloud", - "createTeamAccount": "Criar Conta de Equipe", - "cloudUrlPillLabel": "URL do Roo Code Cloud ", - "upsell": { - "autoApprovePowerUser": "Dando um pouco de independência ao Roo? Controle-o de qualquer lugar com o Roo Code Cloud. Saiba mais.", - "longRunningTask": "Isso pode levar um tempo. Continue de qualquer lugar com a Nuvem.", - "taskList": "Gostando do Roo? Confira o Roo Code Cloud: acompanhe e controle suas tarefas de qualquer lugar, execute agentes de nuvem autônomos, obtenha estatísticas de uso e muito mais. Saiba mais." - } -} diff --git a/webview-ui/src/i18n/locales/pt-BR/marketplace.json b/webview-ui/src/i18n/locales/pt-BR/marketplace.json index 80e47572506..317275e8d0b 100644 --- a/webview-ui/src/i18n/locales/pt-BR/marketplace.json +++ b/webview-ui/src/i18n/locales/pt-BR/marketplace.json @@ -1,5 +1,5 @@ { - "title": "Roo Marketplace", + "title": "Zoo Marketplace", "tabs": { "installed": "Instalado", "settings": "Configurações", diff --git a/webview-ui/src/i18n/locales/pt-BR/mcp.json b/webview-ui/src/i18n/locales/pt-BR/mcp.json index da85d1ef6eb..70b48d01305 100644 --- a/webview-ui/src/i18n/locales/pt-BR/mcp.json +++ b/webview-ui/src/i18n/locales/pt-BR/mcp.json @@ -2,16 +2,16 @@ "title": "Servidores MCP", "done": "Concluído", "marketplace": "Marketplace MCP", - "description": "O <0>Model Context Protocol permite a comunicação com servidores MCP em execução localmente que fornecem ferramentas e recursos adicionais para estender as capacidades do Roo. Você pode usar <1>servidores criados pela comunidade ou pedir ao Roo para criar novas ferramentas específicas para seu fluxo de trabalho (por exemplo, \"adicionar uma ferramenta que obtém a documentação mais recente do npm\").", + "description": "O <0>Model Context Protocol permite a comunicação com servidores MCP em execução localmente que fornecem ferramentas e recursos adicionais para estender as capacidades do Zoo. Você pode usar <1>servidores criados pela comunidade ou pedir ao Zoo para criar novas ferramentas específicas para seu fluxo de trabalho (por exemplo, \"adicionar uma ferramenta que obtém a documentação mais recente do npm\").", "instructions": "Instruções", "enableToggle": { "title": "Ativar servidores MCP", - "description": "Ative para que o Roo possa usar ferramentas de servidores MCP conectados. Isso dá mais capacidades ao Roo. Se você não pretende usar essas ferramentas extras, desative para ajudar a reduzir os custos de tokens da API." + "description": "Ative para que o Zoo possa usar ferramentas de servidores MCP conectados. Isso dá mais capacidades ao Zoo. Se você não pretende usar essas ferramentas extras, desative para ajudar a reduzir os custos de tokens da API." }, "enableServerCreation": { "title": "Ativar criação de servidores MCP", - "description": "Ative para que o Roo possa te ajudar a criar <1>novos servidores MCP personalizados. <0>Saiba mais sobre criação de servidores", - "hint": "Dica: Para reduzir os custos de tokens da API, desative esta configuração quando não estiver pedindo ao Roo para criar um novo servidor MCP." + "description": "Ative para que o Zoo possa te ajudar a criar <1>novos servidores MCP personalizados. <0>Saiba mais sobre criação de servidores", + "hint": "Dica: Para reduzir os custos de tokens da API, desative esta configuração quando não estiver pedindo ao Zoo para criar um novo servidor MCP." }, "editGlobalMCP": "Editar MCP global", "editProjectMCP": "Editar MCP do projeto", diff --git a/webview-ui/src/i18n/locales/pt-BR/prompts.json b/webview-ui/src/i18n/locales/pt-BR/prompts.json index 1cef958f594..3ccc978bd84 100644 --- a/webview-ui/src/i18n/locales/pt-BR/prompts.json +++ b/webview-ui/src/i18n/locales/pt-BR/prompts.json @@ -9,7 +9,7 @@ "editModesConfig": "Editar configuração de modos", "editGlobalModes": "Editar modos globais", "editProjectModes": "Editar modos do projeto (.roomodes)", - "createModeHelpText": "Modos são personas especializadas que adaptam o comportamento do Roo. <0>Saiba mais sobre o uso de modos ou <1>Personalização de modos.", + "createModeHelpText": "Modos são personas especializadas que adaptam o comportamento do Zoo. <0>Saiba mais sobre o uso de modos ou <1>Personalização de modos.", "selectMode": "Buscar modos" }, "apiConfiguration": { @@ -33,7 +33,7 @@ "roleDefinition": { "title": "Definição de função", "resetToDefault": "Restaurar para padrão", - "description": "Defina a expertise e personalidade do Roo para este modo. Esta descrição molda como o Roo se apresenta e aborda tarefas." + "description": "Defina a expertise e personalidade do Zoo para este modo. Esta descrição molda como o Zoo se apresenta e aborda tarefas." }, "description": { "title": "Descrição curta (para humanos)", @@ -102,7 +102,7 @@ "types": { "ENHANCE": { "label": "Aprimorar Prompt", - "description": "Use o aprimoramento de prompt para obter sugestões ou melhorias personalizadas para suas entradas. Isso garante que o Roo entenda sua intenção e forneça as melhores respostas possíveis. Disponível através do ícone ✨ no chat." + "description": "Use o aprimoramento de prompt para obter sugestões ou melhorias personalizadas para suas entradas. Isso garante que o Zoo entenda sua intenção e forneça as melhores respostas possíveis. Disponível através do ícone ✨ no chat." }, "CONDENSE": { "label": "Condensação de Contexto", @@ -167,7 +167,7 @@ }, "roleDefinition": { "label": "Definição de função", - "description": "Defina a expertise e personalidade do Roo para este modo." + "description": "Defina a expertise e personalidade do Zoo para este modo." }, "whenToUse": { "label": "Quando usar (opcional)", diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json index cba3599d3cb..e138411297c 100644 --- a/webview-ui/src/i18n/locales/pt-BR/settings.json +++ b/webview-ui/src/i18n/locales/pt-BR/settings.json @@ -56,7 +56,7 @@ "label": "Descobriu uma vulnerabilidade?", "link": "Siga nosso processo de divulgação" }, - "community": "Quer dicas ou apenas conversar com outros usuários do Roo Code? Junte-se a reddit.com/r/RooCode ou discord.gg/roocode", + "community": "Quer dicas ou apenas conversar com outros usuários do Zoo Code? Junte-se a reddit.com/r/RooCode ou discord.gg/roocode", "contactAndCommunity": "Contato e Comunidade", "manageSettings": "Gerenciar Configurações", "debugMode": { @@ -100,7 +100,7 @@ "footer": "Use comandos de barra para acesso rápido a prompts e fluxos de trabalho usados com frequência." }, "prompts": { - "description": "Configure prompts de suporte usados para ações rápidas como melhorar prompts, explicar código e corrigir problemas. Esses prompts ajudam o Roo a fornecer melhor assistência para tarefas comuns de desenvolvimento." + "description": "Configure prompts de suporte usados para ações rápidas como melhorar prompts, explicar código e corrigir problemas. Esses prompts ajudam o Zoo a fornecer melhor assistência para tarefas comuns de desenvolvimento." }, "codeIndex": { "title": "Indexação de Código", @@ -223,10 +223,10 @@ "disabledAriaLabel": "Aprovação automática desativada - selecione as opções primeiro", "readOnly": { "label": "Leitura", - "description": "Quando ativado, o Roo visualizará automaticamente o conteúdo do diretório e lerá arquivos sem que você precise clicar no botão Aprovar.", + "description": "Quando ativado, o Zoo visualizará automaticamente o conteúdo do diretório e lerá arquivos sem que você precise clicar no botão Aprovar.", "outsideWorkspace": { "label": "Incluir arquivos fora do espaço de trabalho", - "description": "Permitir que o Roo leia arquivos fora do espaço de trabalho atual sem exigir aprovação." + "description": "Permitir que o Zoo leia arquivos fora do espaço de trabalho atual sem exigir aprovação." } }, "write": { @@ -235,11 +235,11 @@ "delayLabel": "Atraso após escritas para permitir que diagnósticos detectem problemas potenciais", "outsideWorkspace": { "label": "Incluir arquivos fora do espaço de trabalho", - "description": "Permitir que o Roo crie e edite arquivos fora do espaço de trabalho atual sem exigir aprovação." + "description": "Permitir que o Zoo crie e edite arquivos fora do espaço de trabalho atual sem exigir aprovação." }, "protected": { "label": "Incluir arquivos protegidos", - "description": "Permitir que o Roo crie e edite arquivos protegidos (como .rooignore e arquivos de configuração .roo/) sem exigir aprovação." + "description": "Permitir que o Zoo crie e edite arquivos protegidos (como .rooignore e arquivos de configuração .roo/) sem exigir aprovação." } }, "mcp": { @@ -306,7 +306,7 @@ "searchProviderPlaceholder": "Pesquisar provedores", "noProviderMatchFound": "Nenhum provedor encontrado", "noMatchFound": "Nenhum perfil correspondente encontrado", - "retiredProviderMessage": "Desculpe, este provedor não é mais suportado. Percebemos que muito poucos usuários do Roo realmente o utilizavam e precisamos reduzir o escopo do nosso código para continuar entregando rápido e servindo bem nossa comunidade. Foi uma decisão muito difícil, mas nos permite focar no que mais importa para você. Sabemos que é chato.", + "retiredProviderMessage": "Este provedor não está mais disponível. Selecione um provedor compatível para continuar.", "vscodeLmDescription": "A API do Modelo de Linguagem do VS Code permite executar modelos fornecidos por outras extensões do VS Code (incluindo, mas não se limitando, ao GitHub Copilot). A maneira mais fácil de começar é instalar as extensões Copilot e Copilot Chat no VS Code Marketplace.", "awsCustomArnUse": "Insira um ARN Amazon Bedrock válido para o modelo que deseja usar. Exemplos de formato:", "awsCustomArnDesc": "Certifique-se de que a região no ARN corresponde à região AWS selecionada acima.", @@ -456,7 +456,7 @@ "draftModelDesc": "O modelo de rascunho deve ser da mesma família de modelos para que a decodificação especulativa funcione corretamente.", "selectDraftModel": "Selecionar Modelo de Rascunho", "noModelsFound": "Nenhum modelo de rascunho encontrado. Certifique-se de que o LM Studio esteja em execução com o Modo Servidor ativado.", - "description": "O LM Studio permite que você execute modelos localmente em seu computador. Para instruções sobre como começar, veja o guia de início rápido deles. Você também precisará iniciar o recurso de servidor local do LM Studio para usá-lo com esta extensão. Nota: O Roo Code usa prompts complexos e funciona melhor com modelos Claude. Modelos menos capazes podem não funcionar como esperado." + "description": "O LM Studio permite que você execute modelos localmente em seu computador. Para instruções sobre como começar, veja o guia de início rápido deles. Você também precisará iniciar o recurso de servidor local do LM Studio para usá-lo com esta extensão. Nota: O Zoo Code usa prompts complexos e funciona melhor com modelos Claude. Modelos menos capazes podem não funcionar como esperado." }, "ollama": { "baseUrl": "URL Base (opcional)", @@ -466,11 +466,7 @@ "numCtx": "Tamanho da janela de contexto (num_ctx)", "numCtxHelp": "Substitui o tamanho da janela de contexto padrão do modelo. Deixe em branco para usar a configuração do Modelfile do modelo. O valor mínimo é 128.", "description": "O Ollama permite que você execute modelos localmente em seu computador. Para instruções sobre como começar, veja o guia de início rápido deles.", - "warning": "Nota: O Roo Code usa prompts complexos e funciona melhor com modelos Claude. Modelos menos capazes podem não funcionar como esperado." - }, - "roo": { - "authenticatedMessage": "Autenticado com segurança através da sua conta Roo Code Cloud.", - "connectButton": "Conectar ao Roo Code Cloud" + "warning": "Nota: O Zoo Code usa prompts complexos e funciona melhor com modelos Claude. Modelos menos capazes podem não funcionar como esperado." }, "openRouter": { "providerRouting": { @@ -480,7 +476,7 @@ } }, "customModel": { - "capabilities": "Configure as capacidades e preços para seu modelo personalizado compatível com OpenAI. Tenha cuidado ao especificar as capacidades do modelo, pois elas podem afetar como o Roo Code funciona.", + "capabilities": "Configure as capacidades e preços para seu modelo personalizado compatível com OpenAI. Tenha cuidado ao especificar as capacidades do modelo, pois elas podem afetar como o Zoo Code funciona.", "maxTokens": { "label": "Máximo de Tokens de Saída", "description": "Número máximo de tokens que o modelo pode gerar em uma resposta. (Especifique -1 para permitir que o servidor defina o máximo de tokens.)" @@ -527,7 +523,7 @@ }, "consecutiveMistakeLimit": { "label": "Limite de Erros e Repetições", - "description": "Número de erros consecutivos ou ações repetidas antes de exibir o diálogo 'Roo está com problemas'. Defina como 0 para desativar este mecanismo de segurança (ele nunca será acionado).", + "description": "Número de erros consecutivos ou ações repetidas antes de exibir o diálogo 'Zoo está com problemas'. Defina como 0 para desativar este mecanismo de segurança (ele nunca será acionado).", "unlimitedDescription": "Tentativas ilimitadas ativadas (prosseguimento automático). O diálogo nunca aparecerá.", "warning": "⚠️ Definir como 0 permite tentativas ilimitadas, o que pode consumir um uso significativo da API" }, @@ -563,18 +559,18 @@ }, "enable": { "label": "Ativar pontos de verificação automáticos", - "description": "Quando ativado, o Roo criará automaticamente pontos de verificação durante a execução de tarefas, facilitando a revisão de alterações ou o retorno a estados anteriores. <0>Saiba mais" + "description": "Quando ativado, o Zoo criará automaticamente pontos de verificação durante a execução de tarefas, facilitando a revisão de alterações ou o retorno a estados anteriores. <0>Saiba mais" } }, "notifications": { "sound": { "label": "Ativar efeitos sonoros", - "description": "Quando ativado, o Roo reproduzirá efeitos sonoros para notificações e eventos.", + "description": "Quando ativado, o Zoo reproduzirá efeitos sonoros para notificações e eventos.", "volumeLabel": "Volume" }, "tts": { "label": "Ativar texto para fala", - "description": "Quando ativado, o Roo lerá em voz alta suas respostas usando texto para fala.", + "description": "Quando ativado, o Zoo lerá em voz alta suas respostas usando texto para fala.", "speedLabel": "Velocidade" } }, @@ -582,7 +578,7 @@ "description": "Controle quais informações são incluídas na janela de contexto da IA, afetando o uso de token e a qualidade da resposta", "autoCondenseContextPercent": { "label": "Limite para acionar a condensação inteligente de contexto", - "description": "Quando a janela de contexto atingir este limite, o Roo a condensará automaticamente." + "description": "Quando a janela de contexto atingir este limite, o Zoo a condensará automaticamente." }, "condensingApiConfiguration": { "label": "Configuração de API para Condensação de Contexto", @@ -598,7 +594,7 @@ }, "autoCondenseContext": { "name": "Acionar automaticamente a condensação inteligente de contexto", - "description": "Quando habilitado, o Roo condensará automaticamente o contexto quando o limite for atingido. Quando desabilitado, você ainda pode acionar manualmente a condensação de contexto." + "description": "Quando habilitado, o Zoo condensará automaticamente o contexto quando o limite for atingido. Quando desabilitado, você ainda pode acionar manualmente a condensação de contexto." }, "openTabs": { "label": "Limite de contexto de abas abertas", @@ -614,7 +610,7 @@ }, "maxReadFile": { "label": "Limite de auto-truncamento de leitura de arquivo", - "description": "O Roo lê este número de linhas quando o modelo omite valores de início/fim. Se este número for menor que o total do arquivo, o Roo gera um índice de números de linha das definições de código. Casos especiais: -1 instrui o Roo a ler o arquivo inteiro (sem indexação), e 0 instrui a não ler linhas e fornecer apenas índices de linha para contexto mínimo. Valores mais baixos minimizam o uso inicial de contexto, permitindo leituras posteriores precisas de intervalos de linhas. Requisições com início/fim explícitos não são limitadas por esta configuração.", + "description": "O Zoo lê este número de linhas quando o modelo omite valores de início/fim. Se este número for menor que o total do arquivo, o Zoo gera um índice de números de linha das definições de código. Casos especiais: -1 instrui o Zoo a ler o arquivo inteiro (sem indexação), e 0 instrui a não ler linhas e fornecer apenas índices de linha para contexto mínimo. Valores mais baixos minimizam o uso inicial de contexto, permitindo leituras posteriores precisas de intervalos de linhas. Requisições com início/fim explícitos não são limitadas por esta configuração.", "lines": "linhas", "always_full_read": "Sempre ler o arquivo inteiro" }, @@ -685,15 +681,15 @@ }, "outputLineLimit": { "label": "Limite de saída do terminal", - "description": "Mantém as primeiras e últimas linhas e descarta as do meio para ficar abaixo do limite. Diminua para economizar tokens; aumente para dar ao Roo mais detalhes do meio. O Roo vê um placeholder onde o conteúdo é pulado.<0>Saiba mais" + "description": "Mantém as primeiras e últimas linhas e descarta as do meio para ficar abaixo do limite. Diminua para economizar tokens; aumente para dar ao Zoo mais detalhes do meio. O Zoo vê um placeholder onde o conteúdo é pulado.<0>Saiba mais" }, "outputCharacterLimit": { "label": "Limite de caracteres do terminal", - "description": "Substitui o limite de linhas para evitar problemas de memória, impondo um limite rígido no tamanho da saída. Se excedido, mantém o início e o fim e mostra um placeholder para o Roo onde o conteúdo é pulado. <0>Saiba mais" + "description": "Substitui o limite de linhas para evitar problemas de memória, impondo um limite rígido no tamanho da saída. Se excedido, mantém o início e o fim e mostra um placeholder para o Zoo onde o conteúdo é pulado. <0>Saiba mais" }, "outputPreviewSize": { "label": "Tamanho da visualização da saída de comandos", - "description": "Controla quanto da saída de comandos Roo vê diretamente. A saída completa é sempre salva e acessível quando necessário.", + "description": "Controla quanto da saída de comandos Zoo vê diretamente. A saída completa é sempre salva e acessível quando necessário.", "options": { "small": "Pequeno (5KB)", "medium": "Médio (10KB)", @@ -706,7 +702,7 @@ }, "shellIntegrationDisabled": { "label": "Usar Terminal Inline (recomendado)", - "description": "Execute comandos no Terminal Inline (chat) para contornar perfis/integração de shell para execuções mais rápidas e confiáveis. Quando desativado, o Roo usa o terminal do VS Code com seu perfil de shell, prompts e plugins. <0>Saiba mais" + "description": "Execute comandos no Terminal Inline (chat) para contornar perfis/integração de shell para execuções mais rápidas e confiáveis. Quando desativado, o Zoo usa o terminal do VS Code com seu perfil de shell, prompts e plugins. <0>Saiba mais" }, "commandDelay": { "label": "Atraso de comando do terminal", @@ -743,7 +739,7 @@ "advanced": { "diff": { "label": "Ativar edição através de diffs", - "description": "Quando ativado, o Roo poderá editar arquivos mais rapidamente e rejeitará automaticamente escritas completas de arquivos truncados", + "description": "Quando ativado, o Zoo poderá editar arquivos mais rapidamente e rejeitará automaticamente escritas completas de arquivos truncados", "strategy": { "label": "Estratégia de diff", "options": { @@ -760,7 +756,7 @@ }, "todoList": { "label": "Habilitar ferramenta de lista de tarefas", - "description": "Quando habilitado, o Roo pode criar e gerenciar listas de tarefas para acompanhar o progresso das tarefas. Isso ajuda a organizar tarefas complexas em etapas gerenciáveis." + "description": "Quando habilitado, o Zoo pode criar e gerenciar listas de tarefas para acompanhar o progresso das tarefas. Isso ajuda a organizar tarefas complexas em etapas gerenciáveis." } }, "experimental": { @@ -770,15 +766,15 @@ }, "INSERT_BLOCK": { "name": "Usar ferramenta de inserção de conteúdo experimental", - "description": "Ativar a ferramenta de inserção de conteúdo experimental, permitindo que o Roo insira conteúdo em números de linha específicos sem precisar criar um diff." + "description": "Ativar a ferramenta de inserção de conteúdo experimental, permitindo que o Zoo insira conteúdo em números de linha específicos sem precisar criar um diff." }, "MULTI_SEARCH_AND_REPLACE": { "name": "Usar ferramenta diff de múltiplos blocos experimental", - "description": "Quando ativado, o Roo usará a ferramenta diff de múltiplos blocos. Isso tentará atualizar vários blocos de código no arquivo em uma única solicitação." + "description": "Quando ativado, o Zoo usará a ferramenta diff de múltiplos blocos. Isso tentará atualizar vários blocos de código no arquivo em uma única solicitação." }, "CONCURRENT_FILE_READS": { "name": "Habilitar leitura simultânea de arquivos", - "description": "Quando habilitado, o Roo pode ler vários arquivos em uma única solicitação. Quando desabilitado, o Roo deve ler arquivos um de cada vez. Desabilitar pode ajudar ao trabalhar com modelos menos capazes ou quando você deseja mais controle sobre o acesso aos arquivos." + "description": "Quando habilitado, o Zoo pode ler vários arquivos em uma única solicitação. Quando desabilitado, o Zoo deve ler arquivos um de cada vez. Desabilitar pode ajudar ao trabalhar com modelos menos capazes ou quando você deseja mais controle sobre o acesso aos arquivos." }, "MARKETPLACE": { "name": "Ativar Marketplace", @@ -786,7 +782,7 @@ }, "PREVENT_FOCUS_DISRUPTION": { "name": "Edição em segundo plano", - "description": "Previne a interrupção do foco do editor quando habilitado. As edições de arquivos acontecem em segundo plano sem abrir visualizações de diferenças ou roubar o foco. Você pode continuar trabalhando sem interrupções enquanto o Roo faz alterações. Os arquivos podem ser abertos sem foco para capturar diagnósticos ou permanecer completamente fechados." + "description": "Previne a interrupção do foco do editor quando habilitado. As edições de arquivos acontecem em segundo plano sem abrir visualizações de diferenças ou roubar o foco. Você pode continuar trabalhando sem interrupções enquanto o Zoo faz alterações. Os arquivos podem ser abertos sem foco para capturar diagnósticos ou permanecer completamente fechados." }, "ASSISTANT_MESSAGE_PARSER": { "name": "Usar o novo parser de mensagens", @@ -800,7 +796,7 @@ "providerLabel": "Provedor", "providerDescription": "Selecione o provedor para geração de imagens.", "name": "Habilitar geração de imagens com IA", - "description": "Quando habilitado, Roo pode gerar imagens a partir de prompts de texto usando os modelos de geração de imagens do OpenRouter. Requer uma chave de API do OpenRouter configurada.", + "description": "Quando habilitado, Zoo pode gerar imagens a partir de prompts de texto usando os modelos de geração de imagens do OpenRouter. Requer uma chave de API do OpenRouter configurada.", "openRouterApiKeyLabel": "Chave de API do OpenRouter", "openRouterApiKeyPlaceholder": "Digite sua chave de API do OpenRouter", "getApiKeyText": "Obtenha sua chave de API de", @@ -811,11 +807,11 @@ }, "RUN_SLASH_COMMAND": { "name": "Ativar comandos slash iniciados pelo modelo", - "description": "Quando ativado, Roo pode executar seus comandos slash para executar fluxos de trabalho." + "description": "Quando ativado, Zoo pode executar seus comandos slash para executar fluxos de trabalho." }, "CUSTOM_TOOLS": { "name": "Ativar ferramentas personalizadas", - "description": "Quando habilitado, o Roo pode carregar e usar ferramentas TypeScript/JavaScript personalizadas do diretório .roo/tools do seu projeto ou ~/.roo/tools para ferramentas globais. Nota: estas ferramentas serão aprovadas automaticamente.", + "description": "Quando habilitado, o Zoo pode carregar e usar ferramentas TypeScript/JavaScript personalizadas do diretório .roo/tools do seu projeto ou ~/.roo/tools para ferramentas globais. Nota: estas ferramentas serão aprovadas automaticamente.", "toolsHeader": "Ferramentas personalizadas disponíveis", "noTools": "Nenhuma ferramenta personalizada carregada. Adicione arquivos .ts ou .js ao diretório .roo/tools do seu projeto ou ~/.roo/tools para ferramentas globais.", "refreshButton": "Atualizar", @@ -827,7 +823,7 @@ }, "promptCaching": { "label": "Desativar cache de prompts", - "description": "Quando marcado, o Roo não usará o cache de prompts para este modelo." + "description": "Quando marcado, o Zoo não usará o cache de prompts para este modelo." }, "temperature": { "useCustom": "Usar temperatura personalizada", @@ -857,7 +853,7 @@ } }, "modelPicker": { - "automaticFetch": "A extensão busca automaticamente a lista mais recente de modelos disponíveis em {{serviceName}}. Se você não tem certeza sobre qual modelo escolher, o Roo Code funciona melhor com {{defaultModelId}}. Você também pode pesquisar por \"free\" para encontrar opções gratuitas atualmente disponíveis.", + "automaticFetch": "A extensão busca automaticamente a lista mais recente de modelos disponíveis em {{serviceName}}. Se você não tem certeza sobre qual modelo escolher, o Zoo Code funciona melhor com {{defaultModelId}}. Você também pode pesquisar por \"free\" para encontrar opções gratuitas atualmente disponíveis.", "label": "Modelo", "searchPlaceholder": "Pesquisar", "noMatchFound": "Nenhuma correspondência encontrada", @@ -867,7 +863,7 @@ "footer": { "telemetry": { "label": "Permitir relatórios anônimos de erros e uso", - "description": "Ajude a melhorar o Roo Code enviando dados de uso anônimos e relatórios de erros. Esta telemetria não coleta código, prompts ou informações pessoais. Consulte nossa política de privacidade para mais detalhes." + "description": "Ajude a melhorar o Zoo Code enviando dados de uso anônimos e relatórios de erros. Esta telemetria não coleta código, prompts ou informações pessoais. Consulte nossa política de privacidade para mais detalhes." }, "settings": { "import": "Importar", diff --git a/webview-ui/src/i18n/locales/pt-BR/welcome.json b/webview-ui/src/i18n/locales/pt-BR/welcome.json index 563cd0f6a39..63c03b44459 100644 --- a/webview-ui/src/i18n/locales/pt-BR/welcome.json +++ b/webview-ui/src/i18n/locales/pt-BR/welcome.json @@ -1,52 +1,18 @@ { - "routers": { - "requesty": { - "description": "Seu roteador LLM otimizado", - "incentive": "Crédito grátis de $1" - }, - "openrouter": { - "description": "Uma interface unificada para LLMs" - }, - "roo": { - "description": "Os melhores modelos gratuitos para começar", - "incentive": "Tente Roo gratuitamente" - } - }, "landing": { "greeting": "Bem-vindo ao Roo Code!", "introduction": "Com uma variedade de Modos integrados e extensíveis, o Roo Code permite que você planeje, arquitete, codifique, depure e aumente sua produtividade como nunca antes.", - "accountMention": "Para começar, crie sua conta Roo Code Cloud. Obtenha modelos poderosos, controle na web, análises, suporte e muito mais.", - "getStarted": "Criar conta Roo", - "noAccount": "ou usar sem conta" + "getStarted": "Escolha seu provedor" }, "providerSignup": { "heading": "Escolha seu provedor", "chooseProvider": "Roo precisa de um provedor LLM para funcionar. Escolha um para começar, você pode adicionar mais depois.", - "rooCloudProvider": "Provedor Roo Code Cloud", - "rooCloudDescription": "A maneira mais simples de começar é com o Provedor Roo Code Cloud: uma mistura selecionada de modelos gratuitos e pagos a baixo custo.", - "learnMore": "Saiba mais", - "useAnotherProvider": "Provedor de terceiros", - "useAnotherProviderDescription": "Insira uma chave API e comece.", - "noApiKeys": "Não quer lidar com chaves API e contas separadas?", - "backToRoo": "Escolha o Provedor Roo Code Cloud.", "goBack": "Voltar", "finish": "Concluir" }, - "waitingForCloud": { - "heading": "Fazendo login no Roo Code Cloud...", - "description": "Vamos levá-lo ao seu navegador para se registrar no Roo Code Cloud. Depois o trazeremos de volta aqui para terminar.", - "noPrompt": "Se você não for solicitado a abrir uma URL, clique aqui.", - "havingTrouble": "Se você completou o cadastro mas está tendo problemas, clique aqui.", - "pasteUrl": "Cole a URL de callback mostrada no seu navegador:", - "docsLink": "Não está funcionando? Consulte a documentação.", - "invalidURL": "Isso não parece ser uma URL de callback válida. Por favor, copie o que o Roo Code Cloud está mostrando em seu navegador.", - "goBack": "Voltar" - }, - "startRouter": "Recomendamos usar um roteador LLM:", - "startCustom": "Ou você pode trazer sua própria chave API:", "telemetry": { - "helpImprove": "Ajude a melhorar o Roo Code", - "helpImproveMessage": "Roo Code coleta dados de erro e uso para nos ajudar a corrigir bugs e melhorar a extensão. Esta telemetria não coleta código, prompts ou informações pessoais. Você pode desabilitar isso nas configurações." + "helpImprove": "Ajude a melhorar o Zoo Code", + "helpImproveMessage": "Zoo Code coleta dados de erro e uso para nos ajudar a corrigir bugs e melhorar a extensão. Esta telemetria não coleta código, prompts ou informações pessoais. Você pode desabilitar isso nas configurações." }, "importSettings": "Importar configurações" } diff --git a/webview-ui/src/i18n/locales/pt-BR/worktrees.json b/webview-ui/src/i18n/locales/pt-BR/worktrees.json index 4e438d6a9c4..c42d7173cd8 100644 --- a/webview-ui/src/i18n/locales/pt-BR/worktrees.json +++ b/webview-ui/src/i18n/locales/pt-BR/worktrees.json @@ -1,28 +1,23 @@ { "title": "Worktrees", "done": "Concluído", - "description": "Os worktrees do Git permitem que você trabalhe em vários branches ao mesmo tempo em diretórios separados. Cada worktree tem sua própria janela do VS Code com o Roo Code.", - + "description": "Os worktrees do Git permitem que você trabalhe em vários branches ao mesmo tempo em diretórios separados. Cada worktree tem sua própria janela do VS Code com o Zoo Code.", "notGitRepo": "Este workspace não é um repositório Git. Worktrees exigem um repositório Git para funcionar.", "multiRootNotSupported": "Worktrees não são compatíveis com workspaces multi-root. Abra uma única pasta para usar worktrees.", "subfolderNotSupported": "Este workspace é uma subpasta de um repositório Git. Abra a raiz do repositório para usar worktrees.", "gitRoot": "Raiz do Git", - "includeFileExists": "Arquivo .worktreeinclude encontrado — os arquivos serão copiados para os novos worktrees", "noIncludeFile": "Nenhum arquivo .worktreeinclude encontrado", "createFromGitignore": "Criar a partir do .gitignore", - "primary": "Principal", "current": "Atual", "locked": "Bloqueado", "detachedHead": "Detached HEAD", "noBranch": "Sem branch", - "switchInThisWindow": "Mudar para worktree", "openInNewWindow": "Abrir em uma nova janela", "delete": "Excluir", "newWorktree": "Novo Worktree", - "createWorktree": "Criar Worktree", "branchName": "Nome do branch", "createNewBranch": "Criar novo branch", @@ -44,7 +39,6 @@ "copyingFiles": "Copiando arquivos...", "copyingProgress": "{{item}} — {{copied}} copiado", "cancel": "Cancelar", - "deleteWorktree": "Excluir Worktree", "deleteWarning": "Esta ação não pode ser desfeita. O seguinte será excluído:", "deleteWarningBranch": "O branch e todas as alterações não commitadas", @@ -53,11 +47,8 @@ "forceDelete": "Forçar exclusão", "worktreeIsLocked": "worktree está bloqueado", "deleting": "Excluindo...", - "close": "Fechar", - "showInHomeScreen": "Mostrar worktrees na tela inicial", - "selector": { "worktree": "Worktree", "title": "Worktrees", diff --git a/webview-ui/src/i18n/locales/ru/chat.json b/webview-ui/src/i18n/locales/ru/chat.json index ca9f9640e75..5f6b082814f 100644 --- a/webview-ui/src/i18n/locales/ru/chat.json +++ b/webview-ui/src/i18n/locales/ru/chat.json @@ -1,5 +1,5 @@ { - "greeting": "Добро пожаловать в Roo Code", + "greeting": "Добро пожаловать в Zoo Code!", "task": { "title": "Задача", "expand": "Развернуть задачу", @@ -15,16 +15,6 @@ "export": "Экспортировать историю задач", "delete": "Удалить задачу (Shift + клик для пропуска подтверждения)", "condenseContext": "Интеллектуально сжать контекст", - "share": "Поделиться задачей", - "shareWithOrganization": "Поделиться с организацией", - "shareWithOrganizationDescription": "Только члены вашей организации могут получить доступ", - "sharePublicly": "Поделиться публично", - "sharePubliclyDescription": "Любой, у кого есть ссылка, может получить доступ", - "connectToCloud": "Подключиться к облаку", - "connectToCloudDescription": "Войди в Roo Code Cloud, чтобы делиться задачами", - "sharingDisabledByOrganization": "Обмен отключен организацией", - "shareSuccessOrganization": "Ссылка организации скопирована в буфер обмена", - "shareSuccessPublic": "Публичная ссылка скопирована в буфер обмена", "openApiHistory": "Открыть историю API", "openUiHistory": "Открыть историю UI", "backToParentTask": "Родительская задача" @@ -98,7 +88,7 @@ "enqueueMessage": "Добавить сообщение в очередь (будет отправлено после завершения текущей задачи)", "scrollToBottom": "Прокрутить чат вниз", "scrollToLatestCheckpoint": "Прокрутить к предыдущему чекпоинту", - "about": "Roo Code — это целая команда разработчиков ИИ в вашем редакторе.", + "about": "Zoo Code — это целая команда разработчиков ИИ в вашем редакторе.", "docs": "Ознакомьтесь с нашей документацией, чтобы узнать больше.", "onboarding": "Ваш список задач в этом рабочем пространстве пуст.", "rooTips": { @@ -121,7 +111,7 @@ "title": "Режимы", "marketplace": "Маркетплейс режимов", "settings": "Настройки режимов", - "description": "Специализированные персоны, которые настраивают поведение Roo.", + "description": "Специализированные персоны, которые настраивают поведение Zoo.", "searchPlaceholder": "Поиск режимов...", "noResults": "Ничего не найдено" }, @@ -157,7 +147,7 @@ "500": "Ошибка сервера провайдера. На стороне провайдера что-то пошло не так, с вашим запросом все в порядке.", "docs": "Документация", "goToSettings": "Настройки", - "unknown": "Неизвестная ошибка API. Пожалуйста, свяжитесь с поддержкой Roo Code.", + "unknown": "Неизвестная ошибка API. Пожалуйста, свяжитесь с поддержкой Zoo Code.", "connection": "Ошибка подключения. Убедитесь, что у вас есть рабочее подключение к Интернету.", "claudeCodeNotAuthenticated": "Вам необходимо войти в систему, чтобы использовать Claude Code. Перейдите в Настройки и нажмите «Войти в Claude Code» для аутентификации." } @@ -185,40 +175,40 @@ "wantsToFetch": "Roo хочет получить подробные инструкции для помощи с текущей задачей" }, "fileOperations": { - "wantsToRead": "Roo хочет прочитать этот файл", - "wantsToReadOutsideWorkspace": "Roo хочет прочитать этот файл вне рабочей области", - "didRead": "Roo прочитал этот файл", - "wantsToEdit": "Roo хочет отредактировать этот файл", - "wantsToEditOutsideWorkspace": "Roo хочет отредактировать этот файл вне рабочей области", - "wantsToEditProtected": "Roo хочет отредактировать защищённый файл конфигурации", - "wantsToCreate": "Roo хочет создать новый файл", + "wantsToRead": "Zoo хочет прочитать этот файл", + "wantsToReadOutsideWorkspace": "Zoo хочет прочитать этот файл вне рабочей области", + "didRead": "Zoo прочитал этот файл", + "wantsToEdit": "Zoo хочет отредактировать этот файл", + "wantsToEditOutsideWorkspace": "Zoo хочет отредактировать этот файл вне рабочей области", + "wantsToEditProtected": "Zoo хочет отредактировать защищённый файл конфигурации", + "wantsToCreate": "Zoo хочет создать новый файл", "wantsToSearchReplace": "Roo хочет выполнить поиск и замену в этом файле", "didSearchReplace": "Roo выполнил поиск и замену в этом файле", - "wantsToInsert": "Roo хочет вставить содержимое в этот файл", - "wantsToInsertWithLineNumber": "Roo хочет вставить содержимое в этот файл на строку {{lineNumber}}", - "wantsToInsertAtEnd": "Roo хочет добавить содержимое в конец этого файла", - "wantsToReadAndXMore": "Roo хочет прочитать этот файл и еще {{count}}", - "wantsToReadMultiple": "Roo хочет прочитать несколько файлов", - "wantsToApplyBatchChanges": "Roo хочет применить изменения к нескольким файлам", - "wantsToGenerateImage": "Roo хочет сгенерировать изображение", - "wantsToGenerateImageOutsideWorkspace": "Roo хочет сгенерировать изображение вне рабочего пространства", - "wantsToGenerateImageProtected": "Roo хочет сгенерировать изображение в защищённом месте", - "didGenerateImage": "Roo сгенерировал изображение" + "wantsToInsert": "Zoo хочет вставить содержимое в этот файл", + "wantsToInsertWithLineNumber": "Zoo хочет вставить содержимое в этот файл на строку {{lineNumber}}", + "wantsToInsertAtEnd": "Zoo хочет добавить содержимое в конец этого файла", + "wantsToReadAndXMore": "Zoo хочет прочитать этот файл и еще {{count}}", + "wantsToReadMultiple": "Zoo хочет прочитать несколько файлов", + "wantsToApplyBatchChanges": "Zoo хочет применить изменения к нескольким файлам", + "wantsToGenerateImage": "Zoo хочет сгенерировать изображение", + "wantsToGenerateImageOutsideWorkspace": "Zoo хочет сгенерировать изображение вне рабочего пространства", + "wantsToGenerateImageProtected": "Zoo хочет сгенерировать изображение в защищённом месте", + "didGenerateImage": "Zoo сгенерировал изображение" }, "directoryOperations": { - "wantsToViewTopLevel": "Roo хочет просмотреть файлы верхнего уровня в этой директории", - "didViewTopLevel": "Roo просмотрел файлы верхнего уровня в этой директории", - "wantsToViewRecursive": "Roo хочет рекурсивно просмотреть все файлы в этой директории", - "didViewRecursive": "Roo рекурсивно просмотрел все файлы в этой директории", - "wantsToSearch": "Roo хочет выполнить поиск в этой директории по {{regex}}", - "didSearch": "Roo выполнил поиск в этой директории по {{regex}}", - "wantsToSearchOutsideWorkspace": "Roo хочет выполнить поиск в этой директории (вне рабочего пространства) по {{regex}}", - "didSearchOutsideWorkspace": "Roo выполнил поиск в этой директории (вне рабочего пространства) по {{regex}}", - "wantsToViewTopLevelOutsideWorkspace": "Roo хочет просмотреть файлы верхнего уровня в этой директории (вне рабочего пространства)", - "didViewTopLevelOutsideWorkspace": "Roo просмотрел файлы верхнего уровня в этой директории (вне рабочего пространства)", - "wantsToViewRecursiveOutsideWorkspace": "Roo хочет рекурсивно просмотреть все файлы в этой директории (вне рабочего пространства)", - "didViewRecursiveOutsideWorkspace": "Roo рекурсивно просмотрел все файлы в этой директории (вне рабочего пространства)", - "wantsToViewMultipleDirectories": "Roo хочет просмотреть несколько директорий" + "wantsToViewTopLevel": "Zoo хочет просмотреть файлы верхнего уровня в этой директории", + "didViewTopLevel": "Zoo просмотрел файлы верхнего уровня в этой директории", + "wantsToViewRecursive": "Zoo хочет рекурсивно просмотреть все файлы в этой директории", + "didViewRecursive": "Zoo рекурсивно просмотрел все файлы в этой директории", + "wantsToSearch": "Zoo хочет выполнить поиск в этой директории по {{regex}}", + "didSearch": "Zoo выполнил поиск в этой директории по {{regex}}", + "wantsToSearchOutsideWorkspace": "Zoo хочет выполнить поиск в этой директории (вне рабочего пространства) по {{regex}}", + "didSearchOutsideWorkspace": "Zoo выполнил поиск в этой директории (вне рабочего пространства) по {{regex}}", + "wantsToViewTopLevelOutsideWorkspace": "Zoo хочет просмотреть файлы верхнего уровня в этой директории (вне рабочего пространства)", + "didViewTopLevelOutsideWorkspace": "Zoo просмотрел файлы верхнего уровня в этой директории (вне рабочего пространства)", + "wantsToViewRecursiveOutsideWorkspace": "Zoo хочет рекурсивно просмотреть все файлы в этой директории (вне рабочего пространства)", + "didViewRecursiveOutsideWorkspace": "Zoo рекурсивно просмотрел все файлы в этой директории (вне рабочего пространства)", + "wantsToViewMultipleDirectories": "Zoo хочет просмотреть несколько директорий" }, "commandOutput": "Вывод команды", "commandExecution": { @@ -247,18 +237,18 @@ "youSaid": "Вы сказали" }, "mcp": { - "wantsToUseTool": "Roo хочет использовать инструмент на сервере MCP {{serverName}}", - "wantsToAccessResource": "Roo хочет получить доступ к ресурсу на сервере MCP {{serverName}}" + "wantsToUseTool": "Zoo хочет использовать инструмент на сервере MCP {{serverName}}", + "wantsToAccessResource": "Zoo хочет получить доступ к ресурсу на сервере MCP {{serverName}}" }, "modes": { - "wantsToSwitch": "Roo хочет переключиться в режим {{mode}}", - "wantsToSwitchWithReason": "Roo хочет переключиться в режим {{mode}}, потому что: {{reason}}", - "didSwitch": "Roo переключился в режим {{mode}}", - "didSwitchWithReason": "Roo переключился в режим {{mode}}, потому что: {{reason}}" + "wantsToSwitch": "Zoo хочет переключиться в режим {{mode}}", + "wantsToSwitchWithReason": "Zoo хочет переключиться в режим {{mode}}, потому что: {{reason}}", + "didSwitch": "Zoo переключился в режим {{mode}}", + "didSwitchWithReason": "Zoo переключился в режим {{mode}}, потому что: {{reason}}" }, "subtasks": { - "wantsToCreate": "Roo хочет создать новую подзадачу в режиме {{mode}}", - "wantsToFinish": "Roo хочет завершить эту подзадачу", + "wantsToCreate": "Zoo хочет создать новую подзадачу в режиме {{mode}}", + "wantsToFinish": "Zoo хочет завершить эту подзадачу", "newTaskContent": "Инструкции по подзадаче", "completionContent": "Подзадача завершена", "resultContent": "Результаты подзадачи", @@ -267,7 +257,7 @@ "goToSubtask": "Просмотреть задачу" }, "questions": { - "hasQuestion": "У Roo есть вопрос" + "hasQuestion": "У Zoo есть вопрос" }, "taskCompleted": "Задача завершена", "error": "Ошибка", @@ -281,14 +271,14 @@ "diffError": { "title": "Не удалось выполнить редактирование" }, - "troubleMessage": "У Roo возникли проблемы...", + "troubleMessage": "У Zoo возникли проблемы...", "errorDetails": { "link": "Подробности", "title": "Детали ошибки", "copyToClipboard": "Скопировать в буфер обмена", "copied": "Скопировано!", "diagnostics": "Получить подробную информацию об ошибке", - "proxyProvider": "Похоже, ты используешь провайдера на основе прокси. Убедись, что ты проверил его логи и что он не переписывает запросы Roo." + "proxyProvider": "Похоже, ты используешь провайдера на основе прокси. Убедись, что ты проверил его логи и что он не переписывает запросы Zoo." }, "powershell": { "issues": "Похоже, у вас проблемы с Windows PowerShell, пожалуйста, ознакомьтесь с этим" @@ -312,23 +302,16 @@ "triggerLabelAll": "BRRR" }, "announcement": { - "title": "Выпущен Roo Code {{version}}", - "support": "Поддержите Roo Code, поставив нам звезду на GitHub.", - "stealthModel": { - "feature": "Бесплатная скрытая модель на ограниченное время - Code Supernova: Теперь обновлена до контекстного окна 1M токенов! Универсальная модель агентного программирования, поддерживающая ввод изображений, доступная через Roo Code Cloud.", - "note": "(Примечание: промпты и дополнения записываются создателем модели и используются для её улучшения)", - "connectButton": "Подключиться к Roo Code Cloud", - "selectModel": "Выберите roo/code-supernova от провайдера Roo Code Cloud в Настройках для начала работы.", - "goToSettingsButton": "Перейти к Настройкам" - }, + "title": "Выпущен Zoo Code {{version}}", + "support": "Поддержите Zoo Code, поставив нам звезду на GitHub.", "handoff": { - "heading": "Плагин Roo Code никуда не денется.", - "description": "Возможно, ты видел недавнее объявление о том, что Roo Code достиг 3 миллионов установок, а оригинальная команда полностью переключается на Roomote. Мы понимаем, что эта новость была непростой для многих из вас. Этот плагин много значит для нас и для тебя, и мы тебя слышим. Хорошая новость: команда сообщества взяла на себя задачу продолжать развивать Roo Code, и мы работаем с ними над официальной передачей, чтобы плагин, на который ты полагаешься, продолжал получать поддержку и улучшения.", - "readMore": "Прочитать оригинальное объявление Matt Rubens" + "heading": "Zoo Code вернулся — теперь это плагин сообщества под названием Zoo Code!!", + "description": "Если ты не следил за новостями, команда Zoo Code недавно объявила, что сворачивает разработку Zoo Code и архивирует всю проделанную работу. Но не переживай: сообщество взяло эстафету, чтобы продолжить наследие Zoo Code под новым именем и в новом доме! Теперь это уже не просто один «Roo», а целое сообщество — «Zoo», если хочешь. Zoo Code — это плагин, который поддерживает сообщество и который продолжает путь Zoo Code с того места, где он остановился. Мы намерены сохранить дух Roo и при этом привносить новые функции и улучшения. Огромное спасибо всей команде Zoo Code за их невероятную работу и за создание такого замечательного инструмента для разработчиков. Нам не терпится развивать их основу дальше и увидеть, куда сообщество приведёт Zoo Code в будущем!", + "readMore": "Открыть новую домашнюю страницу Zoo Code и прочитать полное объявление" }, "release": { "heading": "Что нового:", - "gpt55": "GPT-5.5 через OpenAI Codex: Добавлена поддержка GPT-5.5 в провайдере OpenAI Codex, чтобы ты мог использовать новейшую модель прямо из Roo Code.", + "gpt55": "GPT-5.5 через OpenAI Codex: Добавлена поддержка GPT-5.5 в провайдере OpenAI Codex, чтобы ты мог использовать новейшую модель прямо из Zoo Code.", "claudeOpus47": "Claude Opus 4.7 в Vertex AI: Добавлен Claude Opus 4.7 в провайдер Vertex AI — новейшую флагманскую модель рассуждений от Anthropic.", "checkpointNav": "Навигация по предыдущим контрольным точкам: Добавлены элементы управления в чат, чтобы переходить назад по предыдущим контрольным точкам, с полной поддержкой i18n." }, @@ -359,8 +342,8 @@ } }, "skill": { - "wantsToLoad": "Roo хочет загрузить навык", - "didLoad": "Roo загрузил навык" + "wantsToLoad": "Zoo хочет загрузить навык", + "didLoad": "Zoo загрузил навык" }, "followUpSuggest": { "copyToInput": "Скопировать во ввод (то же, что shift + клик)", @@ -381,13 +364,13 @@ "profileViolationWarning": "Текущий профиль несовместим с настройками вашей организации", "shellIntegration": { "title": "Предупреждение о выполнении команды", - "description": "Ваша команда выполняется без интеграции оболочки терминала VSCode. Чтобы скрыть это предупреждение, вы можете отключить интеграцию оболочки в разделе Terminal в настройках Roo Code или устранить проблемы с интеграцией терминала VSCode, используя ссылку ниже.", + "description": "Ваша команда выполняется без интеграции оболочки терминала VSCode. Чтобы скрыть это предупреждение, вы можете отключить интеграцию оболочки в разделе Terminal в настройках Zoo Code или устранить проблемы с интеграцией терминала VSCode, используя ссылку ниже.", "troubleshooting": "Нажмите здесь для просмотра документации по интеграции оболочки." }, "ask": { "autoApprovedRequestLimitReached": { "title": "Достигнут лимит автоматически одобренных запросов", - "description": "Roo достиг автоматически одобренного лимита в {{count}} API-запрос(ов). Хотите сбросить счетчик и продолжить задачу?", + "description": "Zoo достиг автоматически одобренного лимита в {{count}} API-запрос(ов). Хотите сбросить счетчик и продолжить задачу?", "button": "Сбросить и продолжить" }, "autoApprovedCostLimitReached": { @@ -397,8 +380,8 @@ } }, "codebaseSearch": { - "wantsToSearch": "Roo хочет выполнить поиск в кодовой базе по {{query}}", - "wantsToSearchWithPath": "Roo хочет выполнить поиск в кодовой базе по {{query}} в {{path}}", + "wantsToSearch": "Zoo хочет выполнить поиск в кодовой базе по {{query}}", + "wantsToSearchWithPath": "Zoo хочет выполнить поиск в кодовой базе по {{query}} в {{path}}", "didSearch_one": "Найден 1 результат", "didSearch_other": "Найдено {{count}} результатов", "resultTooltip": "Оценка схожести: {{score}} (нажмите, чтобы открыть файл)" @@ -439,7 +422,7 @@ "ariaLabel": "Версия {{version}} - Нажмите, чтобы просмотреть примечания к выпуску" }, "rooCloudCTA": { - "title": "Roo Code Cloud развивается!", + "title": "Zoo Code Cloud развивается!", "description": "Запускайте удаленные агенты в облаке, получайте доступ к своим задачам из любого места, сотрудничайте с другими и многое другое.", "joinWaitlist": "Зарегистрируйтесь, чтобы получать последние обновления." }, @@ -480,8 +463,8 @@ "clickToEdit": "Нажмите, чтобы редактировать сообщение" }, "slashCommand": { - "wantsToRun": "Roo хочет выполнить слеш-команду", - "didRun": "Roo выполнил слеш-команду" + "wantsToRun": "Zoo хочет выполнить слеш-команду", + "didRun": "Zoo выполнил слеш-команду" }, "todo": { "partial": "{{completed}} из {{total}} задач выполнено", @@ -500,11 +483,11 @@ "openMcpSettings": "Открыть настройки MCP" }, "readCommandOutput": { - "title": "Roo read command output" + "title": "Zoo read command output" }, "retiredProvider": { "title": "Провайдер больше не поддерживается", - "message": "К сожалению, этот провайдер больше не поддерживается. Мы заметили, что очень немногие пользователи Roo действительно им пользовались, и нам нужно сократить объём кодовой базы, чтобы продолжать быстро развиваться и хорошо служить нашему сообществу. Это было очень непростое решение, но оно позволяет нам сосредоточиться на том, что для тебя важнее всего. Мы знаем, что это неприятно.", + "message": "Этот провайдер больше недоступен. Выберите поддерживаемого провайдера, чтобы продолжить.", "openSettings": "Открыть настройки" } } diff --git a/webview-ui/src/i18n/locales/ru/cloud.json b/webview-ui/src/i18n/locales/ru/cloud.json deleted file mode 100644 index c9913068821..00000000000 --- a/webview-ui/src/i18n/locales/ru/cloud.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "title": "Cloud", - "profilePicture": "Фото профиля", - "logOut": "Выход", - "testApiAuthentication": "Проверить аутентификацию API", - "signIn": "Подключиться к Roo Code Cloud", - "connect": "Начать", - "cloudBenefitsTitle": "Попробуйте Roo Code Cloud", - "cloudBenefitProvider": "Доступ к бесплатным и платным моделям, которые отлично работают с Roo", - "cloudBenefitCloudAgents": "Поручайте задачи автономным облачным агентам", - "cloudBenefitTriggers": "Получайте код-ревью на GitHub, запускайте задачи из Slack и многое другое", - "cloudBenefitWalkaway": "Отслеживайте и управляйте задачами откуда угодно (включая телефон)", - "cloudBenefitHistory": "Доступ к истории задач откуда угодно и возможность делиться ими с другими", - "cloudBenefitMetrics": "Получите целостное представление о потреблении токенов", - "visitCloudWebsite": "Посетить Roo Code Cloud", - "taskSync": "Синхронизация задач", - "taskSyncDescription": "Синхронизируйте свои задачи для просмотра и обмена в Roo Code Cloud", - "taskSyncManagedByOrganization": "Синхронизация задач управляется вашей организацией", - "usageMetricsAlwaysReported": "Информация об использовании модели всегда сообщается при входе в систему", - "authWaiting": "Ожидание завершения аутентификации...", - "havingTrouble": "Проблемы?", - "pasteCallbackUrl": "Скопируй URL перенаправления из браузера и вставь его сюда:", - "startOver": "Начать заново", - "personalAccount": "Личный аккаунт", - "switchAccount": "Переключить аккаунт Roo Code Cloud", - "createTeamAccount": "Создать командный аккаунт", - "cloudUrlPillLabel": "URL Roo Code Cloud", - "upsell": { - "autoApprovePowerUser": "Предоставить Roo немного независимости? Управляйте им из любого места с помощью Roo Code Cloud. Узнать больше.", - "longRunningTask": "Это может занять некоторое время. Продолжайте из любого места с помощью Облака.", - "taskList": "Нравится Roo? Посмотрите Roo Code Cloud: отслеживайте и контролируйте свои задачи из любого места, запускайте автономных облачных агентов, получайте статистику использования и многое другое. Узнать больше." - } -} diff --git a/webview-ui/src/i18n/locales/ru/marketplace.json b/webview-ui/src/i18n/locales/ru/marketplace.json index 6c054a6b22e..5674a51102f 100644 --- a/webview-ui/src/i18n/locales/ru/marketplace.json +++ b/webview-ui/src/i18n/locales/ru/marketplace.json @@ -1,5 +1,5 @@ { - "title": "Roo Marketplace", + "title": "Zoo Marketplace", "tabs": { "installed": "Установлено", "settings": "Настройки", diff --git a/webview-ui/src/i18n/locales/ru/mcp.json b/webview-ui/src/i18n/locales/ru/mcp.json index a2be25f5d6d..e67e063f4cd 100644 --- a/webview-ui/src/i18n/locales/ru/mcp.json +++ b/webview-ui/src/i18n/locales/ru/mcp.json @@ -2,16 +2,16 @@ "title": "Серверы MCP", "done": "Готово", "marketplace": "Маркетплейс MCP", - "description": "<0>Model Context Protocol обеспечивает связь с локально запущенными MCP-серверами, которые предоставляют дополнительные инструменты и ресурсы для расширения возможностей Roo. Вы можете использовать <1>серверы, созданные сообществом, или попросить Roo создать новые инструменты, специфичные для вашего рабочего процесса (например, «добавь инструмент, который получает последние npm-документацию»).", + "description": "<0>Model Context Protocol обеспечивает связь с локально запущенными MCP-серверами, которые предоставляют дополнительные инструменты и ресурсы для расширения возможностей Zoo. Вы можете использовать <1>серверы, созданные сообществом, или попросить Zoo создать новые инструменты, специфичные для вашего рабочего процесса (например, «добавь инструмент, который получает последние npm-документацию»).", "instructions": "Инструкции", "enableToggle": { "title": "Включить серверы MCP", - "description": "Включи, чтобы Roo мог использовать инструменты с подключённых серверов MCP. Это даст Roo больше возможностей. Если не планируешь использовать эти дополнительные инструменты, выключи для экономии токенов API." + "description": "Включи, чтобы Zoo мог использовать инструменты с подключённых серверов MCP. Это даст Zoo больше возможностей. Если не планируешь использовать эти дополнительные инструменты, выключи для экономии токенов API." }, "enableServerCreation": { "title": "Включить создание серверов MCP", - "description": "Включи, чтобы Roo помогал создавать <1>новые кастомные серверы MCP. <0>Подробнее о создании серверов", - "hint": "Совет: чтобы снизить расходы на токены API, отключай эту настройку, когда не просишь Roo создать новый сервер MCP." + "description": "Включи, чтобы Zoo помогал создавать <1>новые кастомные серверы MCP. <0>Подробнее о создании серверов", + "hint": "Совет: чтобы снизить расходы на токены API, отключай эту настройку, когда не просишь Zoo создать новый сервер MCP." }, "editGlobalMCP": "Редактировать глобальный MCP", "editProjectMCP": "Редактировать проектный MCP", diff --git a/webview-ui/src/i18n/locales/ru/prompts.json b/webview-ui/src/i18n/locales/ru/prompts.json index 5af112ceaa9..1863bebf9dc 100644 --- a/webview-ui/src/i18n/locales/ru/prompts.json +++ b/webview-ui/src/i18n/locales/ru/prompts.json @@ -9,7 +9,7 @@ "editModesConfig": "Редактировать конфигурацию режимов", "editGlobalModes": "Редактировать глобальные режимы", "editProjectModes": "Редактировать режимы проекта (.roomodes)", - "createModeHelpText": "Режимы — это специализированные персоны, которые адаптируют поведение Roo. <0>Узнайте об использовании режимов или <1>настройке режимов.", + "createModeHelpText": "Режимы — это специализированные персоны, которые адаптируют поведение Zoo. <0>Узнайте об использовании режимов или <1>настройке режимов.", "selectMode": "Поиск режимов" }, "apiConfiguration": { @@ -33,7 +33,7 @@ "roleDefinition": { "title": "Определение роли", "resetToDefault": "Сбросить по умолчанию", - "description": "Определите экспертность и личность Roo для этого режима. Это описание формирует, как Roo будет себя вести и выполнять задачи." + "description": "Определите экспертность и личность Zoo для этого режима. Это описание формирует, как Zoo будет себя вести и выполнять задачи." }, "description": { "title": "Краткое описание (для людей)", @@ -102,7 +102,7 @@ "types": { "ENHANCE": { "label": "Улучшить промпт", - "description": "Используйте улучшение промпта для получения индивидуальных предложений или улучшений ваших запросов. Это гарантирует, что Roo правильно поймет ваш запрос и даст лучший ответ. Доступно через ✨ в чате." + "description": "Используйте улучшение промпта для получения индивидуальных предложений или улучшений ваших запросов. Это гарантирует, что Zoo правильно поймет ваш запрос и даст лучший ответ. Доступно через ✨ в чате." }, "CONDENSE": { "label": "Сжатие контекста", @@ -167,7 +167,7 @@ }, "roleDefinition": { "label": "Определение роли", - "description": "Определите экспертность и личность Roo для этого режима." + "description": "Определите экспертность и личность Zoo для этого режима." }, "whenToUse": { "label": "Когда использовать (необязательно)", diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json index 524b8a25281..5866c06b945 100644 --- a/webview-ui/src/i18n/locales/ru/settings.json +++ b/webview-ui/src/i18n/locales/ru/settings.json @@ -40,7 +40,7 @@ "ui": "UI", "experimental": "Экспериментальное", "language": "Язык", - "about": "О Roo Code", + "about": "О Zoo Code", "skills": "Skills" }, "about": { @@ -56,7 +56,7 @@ "label": "Обнаружили уязвимость?", "link": "Следуйте нашему процессу раскрытия" }, - "community": "Хотите получить советы или просто пообщаться с другими пользователями Roo Code? Присоединяйтесь к reddit.com/r/RooCode или discord.gg/roocode", + "community": "Хотите получить советы или просто пообщаться с другими пользователями Zoo Code? Присоединяйтесь к reddit.com/r/RooCode или discord.gg/roocode", "contactAndCommunity": "Контакты и Сообщество", "manageSettings": "Управление Настройками", "debugMode": { @@ -100,7 +100,7 @@ "footer": "Используйте слэш-команды для быстрого доступа к часто используемым подсказкам и рабочим процессам." }, "prompts": { - "description": "Настройте промпты поддержки, используемые для быстрых действий, таких как улучшение промптов, объяснение кода и исправление проблем. Эти промпты помогают Roo обеспечить лучшую поддержку для общих задач разработки." + "description": "Настройте промпты поддержки, используемые для быстрых действий, таких как улучшение промптов, объяснение кода и исправление проблем. Эти промпты помогают Zoo обеспечить лучшую поддержку для общих задач разработки." }, "codeIndex": { "title": "Индексация кодовой базы", @@ -223,10 +223,10 @@ "disabledAriaLabel": "Автоодобрение отключено - сначала выберите опции", "readOnly": { "label": "Чтение", - "description": "Если включено, Roo будет автоматически просматривать содержимое каталогов и читать файлы без необходимости нажимать кнопку \"Одобрить\".", + "description": "Если включено, Zoo будет автоматически просматривать содержимое каталогов и читать файлы без необходимости нажимать кнопку \"Одобрить\".", "outsideWorkspace": { "label": "Включая файлы вне рабочей области", - "description": "Разрешить Roo читать файлы вне текущей рабочей области без необходимости одобрения." + "description": "Разрешить Zoo читать файлы вне текущей рабочей области без необходимости одобрения." } }, "write": { @@ -235,11 +235,11 @@ "delayLabel": "Задержка после записи для диагностики возможных проблем", "outsideWorkspace": { "label": "Включая файлы вне рабочей области", - "description": "Разрешить Roo создавать и редактировать файлы вне текущей рабочей области без необходимости одобрения." + "description": "Разрешить Zoo создавать и редактировать файлы вне текущей рабочей области без необходимости одобрения." }, "protected": { "label": "Включить защищенные файлы", - "description": "Разрешить Roo создавать и редактировать защищенные файлы (такие как .rooignore и файлы конфигурации .roo/) без необходимости одобрения." + "description": "Разрешить Zoo создавать и редактировать защищенные файлы (такие как .rooignore и файлы конфигурации .roo/) без необходимости одобрения." } }, "mcp": { @@ -306,7 +306,7 @@ "searchProviderPlaceholder": "Поиск провайдеров", "noProviderMatchFound": "Провайдеры не найдены", "noMatchFound": "Совпадений не найдено", - "retiredProviderMessage": "К сожалению, этот провайдер больше не поддерживается. Мы заметили, что очень немногие пользователи Roo действительно им пользовались, и нам нужно сократить объём кодовой базы, чтобы продолжать быстро развиваться и хорошо служить нашему сообществу. Это было очень непростое решение, но оно позволяет нам сосредоточиться на том, что для тебя важнее всего. Мы знаем, что это неприятно.", + "retiredProviderMessage": "Этот провайдер больше недоступен. Выберите поддерживаемого провайдера, чтобы продолжить.", "vscodeLmDescription": "API языковой модели VS Code позволяет запускать модели, предоставляемые другими расширениями VS Code (включая, но не ограничиваясь GitHub Copilot). Для начала установите расширения Copilot и Copilot Chat из VS Code Marketplace.", "awsCustomArnUse": "Введите действительный Amazon Bedrock ARN для используемой модели. Примеры формата:", "awsCustomArnDesc": "Убедитесь, что регион в ARN совпадает с выбранным выше регионом AWS.", @@ -456,7 +456,7 @@ "draftModelDesc": "Черновая модель должна быть из той же семьи моделей для корректной работы speculative decoding.", "selectDraftModel": "Выбрать черновую модель", "noModelsFound": "Черновых моделей не найдено. Проверьте, что LM Studio запущен с включённым серверным режимом.", - "description": "LM Studio позволяет запускать модели локально на вашем компьютере. Для начала ознакомьтесь с кратким руководством. Также необходимо включить локальный сервер LM Studio для работы с этим расширением. Примечание: Roo Code использует сложные подсказки и лучше всего работает с моделями Claude. Менее мощные модели могут работать некорректно." + "description": "LM Studio позволяет запускать модели локально на вашем компьютере. Для начала ознакомьтесь с кратким руководством. Также необходимо включить локальный сервер LM Studio для работы с этим расширением. Примечание: Zoo Code использует сложные подсказки и лучше всего работает с моделями Claude. Менее мощные модели могут работать некорректно." }, "ollama": { "baseUrl": "Базовый URL (опционально)", @@ -466,11 +466,7 @@ "numCtx": "Размер контекстного окна (num_ctx)", "numCtxHelp": "Переопределяет размер контекстного окна модели по умолчанию. Оставьте пустым, чтобы использовать конфигурацию Modelfile модели. Минимальное значение — 128.", "description": "Ollama позволяет запускать модели локально на вашем компьютере. Для начала ознакомьтесь с кратким руководством.", - "warning": "Примечание: Roo Code использует сложные подсказки и лучше всего работает с моделями Claude. Менее мощные модели могут работать некорректно." - }, - "roo": { - "authenticatedMessage": "Безопасно аутентифицирован через твой аккаунт Roo Code Cloud.", - "connectButton": "Подключиться к Roo Code Cloud" + "warning": "Примечание: Zoo Code использует сложные подсказки и лучше всего работает с моделями Claude. Менее мощные модели могут работать некорректно." }, "openRouter": { "providerRouting": { @@ -480,7 +476,7 @@ } }, "customModel": { - "capabilities": "Настройте возможности и стоимость вашей пользовательской модели, совместимой с OpenAI. Будьте осторожны при указании возможностей модели, это может повлиять на работу Roo Code.", + "capabilities": "Настройте возможности и стоимость вашей пользовательской модели, совместимой с OpenAI. Будьте осторожны при указании возможностей модели, это может повлиять на работу Zoo Code.", "maxTokens": { "label": "Максимум токенов на вывод", "description": "Максимальное количество токенов, которые модель может сгенерировать в ответе. (Укажите -1, чтобы сервер сам определил максимум.)" @@ -527,7 +523,7 @@ }, "consecutiveMistakeLimit": { "label": "Лимит ошибок и повторений", - "description": "Количество последовательных ошибок или повторных действий перед показом диалогового окна 'У Roo возникли проблемы'. Установите 0, чтобы отключить этот механизм безопасности (он никогда не сработает).", + "description": "Количество последовательных ошибок или повторных действий перед показом диалогового окна 'У Zoo возникли проблемы'. Установите 0, чтобы отключить этот механизм безопасности (он никогда не сработает).", "unlimitedDescription": "Включены неограниченные повторные попытки (автоматическое продолжение). Диалоговое окно никогда не появится.", "warning": "⚠️ Установка значения 0 разрешает неограниченные повторные попытки, что может значительно увеличить использование API" }, @@ -563,18 +559,18 @@ }, "enable": { "label": "Включить автоматические контрольные точки", - "description": "Если включено, Roo будет автоматически создавать контрольные точки во время выполнения задач, что упрощает просмотр изменений или возврат к предыдущим состояниям. <0>Подробнее" + "description": "Если включено, Zoo будет автоматически создавать контрольные точки во время выполнения задач, что упрощает просмотр изменений или возврат к предыдущим состояниям. <0>Подробнее" } }, "notifications": { "sound": { "label": "Включить звуковые эффекты", - "description": "Если включено, Roo будет воспроизводить звуковые эффекты для уведомлений и событий.", + "description": "Если включено, Zoo будет воспроизводить звуковые эффекты для уведомлений и событий.", "volumeLabel": "Громкость" }, "tts": { "label": "Включить озвучивание", - "description": "Если включено, Roo будет озвучивать свои ответы с помощью преобразования текста в речь.", + "description": "Если включено, Zoo будет озвучивать свои ответы с помощью преобразования текста в речь.", "speedLabel": "Скорость" } }, @@ -582,7 +578,7 @@ "description": "Управляйте, какая информация включается в окно контекста ИИ, что влияет на расход токенов и качество ответов", "autoCondenseContextPercent": { "label": "Порог для запуска интеллектуального сжатия контекста", - "description": "Когда контекстное окно достигает этого порога, Roo автоматически его сожмёт." + "description": "Когда контекстное окно достигает этого порога, Zoo автоматически его сожмёт." }, "condensingApiConfiguration": { "label": "Конфигурация API для сжатия контекста", @@ -598,7 +594,7 @@ }, "autoCondenseContext": { "name": "Автоматически запускать интеллектуальное сжатие контекста", - "description": "Когда включено, Roo будет автоматически сжимать контекст при достижении порога. Когда отключено, вы все еще можете вручную запускать сжатие контекста." + "description": "Когда включено, Zoo будет автоматически сжимать контекст при достижении порога. Когда отключено, вы все еще можете вручную запускать сжатие контекста." }, "openTabs": { "label": "Лимит контекста открытых вкладок", @@ -614,7 +610,7 @@ }, "maxReadFile": { "label": "Порог автообрезки при чтении файла", - "description": "Roo читает столько строк, если модель не указала явно начало/конец. Если число меньше общего количества строк в файле, Roo создаёт индекс определений кода по строкам. Особые случаи: -1 — Roo читает весь файл (без индексации), 0 — не читает строки, а создаёт только минимальный индекс. Меньшие значения минимизируют начальный контекст, позволяя точнее читать нужные диапазоны строк. Явные запросы начала/конца не ограничиваются этим параметром.", + "description": "Zoo читает столько строк, если модель не указала явно начало/конец. Если число меньше общего количества строк в файле, Zoo создаёт индекс определений кода по строкам. Особые случаи: -1 — Zoo читает весь файл (без индексации), 0 — не читает строки, а создаёт только минимальный индекс. Меньшие значения минимизируют начальный контекст, позволяя точнее читать нужные диапазоны строк. Явные запросы начала/конца не ограничиваются этим параметром.", "lines": "строк", "always_full_read": "Всегда читать весь файл" }, @@ -685,15 +681,15 @@ }, "outputLineLimit": { "label": "Лимит вывода терминала", - "description": "Сохраняет первые и последние строки и отбрасывает средние, чтобы остаться в пределах лимита. Уменьшите для экономии токенов; увеличьте, чтобы дать Roo больше деталей из середины. Roo видит заполнитель там, где контент пропущен.<0>Подробнее" + "description": "Сохраняет первые и последние строки и отбрасывает средние, чтобы остаться в пределах лимита. Уменьшите для экономии токенов; увеличьте, чтобы дать Zoo больше деталей из середины. Zoo видит заполнитель там, где контент пропущен.<0>Подробнее" }, "outputCharacterLimit": { "label": "Лимит символов терминала", - "description": "Переопределяет лимит строк для предотвращения проблем с памятью, устанавливая жёсткое ограничение на размер вывода. При превышении сохраняет начало и конец и показывает Roo заполнитель там, где контент пропущен. <0>Подробнее" + "description": "Переопределяет лимит строк для предотвращения проблем с памятью, устанавливая жёсткое ограничение на размер вывода. При превышении сохраняет начало и конец и показывает Zoo заполнитель там, где контент пропущен. <0>Подробнее" }, "outputPreviewSize": { "label": "Размер предпросмотра вывода команд", - "description": "Контролирует, сколько вывода команды Roo видит напрямую. Полный вывод всегда сохраняется и доступен при необходимости.", + "description": "Контролирует, сколько вывода команды Zoo видит напрямую. Полный вывод всегда сохраняется и доступен при необходимости.", "options": { "small": "Маленький (5KB)", "medium": "Средний (10KB)", @@ -706,7 +702,7 @@ }, "shellIntegrationDisabled": { "label": "Использовать встроенный терминал (рекомендуется)", - "description": "Выполняйте команды во встроенном терминале (чат), чтобы обойти профили/интеграцию shell для более быстрого и надёжного выполнения. Когда отключено, Roo использует терминал VS Code с вашим профилем shell, промптами и плагинами. <0>Подробнее" + "description": "Выполняйте команды во встроенном терминале (чат), чтобы обойти профили/интеграцию shell для более быстрого и надёжного выполнения. Когда отключено, Zoo использует терминал VS Code с вашим профилем shell, промптами и плагинами. <0>Подробнее" }, "commandDelay": { "label": "Задержка команды терминала", @@ -743,7 +739,7 @@ "advanced": { "diff": { "label": "Включить редактирование через диффы", - "description": "Если включено, Roo сможет быстрее редактировать файлы и автоматически отклонять усечённые полные записи", + "description": "Если включено, Zoo сможет быстрее редактировать файлы и автоматически отклонять усечённые полные записи", "strategy": { "label": "Стратегия диффа", "options": { @@ -760,7 +756,7 @@ }, "todoList": { "label": "Включить инструмент списка задач", - "description": "При включении Roo может создавать и управлять списками задач для отслеживания прогресса. Это помогает организовать сложные задачи в управляемые шаги." + "description": "При включении Zoo может создавать и управлять списками задач для отслеживания прогресса. Это помогает организовать сложные задачи в управляемые шаги." } }, "experimental": { @@ -770,15 +766,15 @@ }, "INSERT_BLOCK": { "name": "Использовать экспериментальный инструмент вставки контента", - "description": "Включает экспериментальный инструмент вставки контента, позволяя Roo вставлять контент по номеру строки без создания диффа." + "description": "Включает экспериментальный инструмент вставки контента, позволяя Zoo вставлять контент по номеру строки без создания диффа." }, "MULTI_SEARCH_AND_REPLACE": { "name": "Использовать экспериментальный мультиблочный инструмент диффа", - "description": "Если включено, Roo будет использовать мультиблочный инструмент диффа, пытаясь обновить несколько блоков кода за один запрос." + "description": "Если включено, Zoo будет использовать мультиблочный инструмент диффа, пытаясь обновить несколько блоков кода за один запрос." }, "CONCURRENT_FILE_READS": { "name": "Включить одновременное чтение файлов", - "description": "При включении Roo может читать несколько файлов в одном запросе. При отключении Roo должен читать файлы по одному. Отключение может помочь при работе с менее производительными моделями или когда вы хотите больше контроля над доступом к файлам." + "description": "При включении Zoo может читать несколько файлов в одном запросе. При отключении Zoo должен читать файлы по одному. Отключение может помочь при работе с менее производительными моделями или когда вы хотите больше контроля над доступом к файлам." }, "MARKETPLACE": { "name": "Включить Marketplace", @@ -786,7 +782,7 @@ }, "PREVENT_FOCUS_DISRUPTION": { "name": "Фоновое редактирование", - "description": "Предотвращает нарушение фокуса редактора при включении. Редактирование файлов происходит в фоновом режиме без открытия представлений различий или кражи фокуса. Вы можете продолжать работать без перерывов, пока Roo вносит изменения. Файлы могут открываться без фокуса для захвата диагностики или оставаться полностью закрытыми." + "description": "Предотвращает нарушение фокуса редактора при включении. Редактирование файлов происходит в фоновом режиме без открытия представлений различий или кражи фокуса. Вы можете продолжать работать без перерывов, пока Zoo вносит изменения. Файлы могут открываться без фокуса для захвата диагностики или оставаться полностью закрытыми." }, "ASSISTANT_MESSAGE_PARSER": { "name": "Использовать новый парсер сообщений", @@ -800,7 +796,7 @@ "providerLabel": "Провайдер", "providerDescription": "Выберите провайдера для генерации изображений.", "name": "Включить генерацию изображений ИИ", - "description": "Когда включено, Roo может генерировать изображения из текстовых запросов, используя модели генерации изображений OpenRouter. Требует настроенный API-ключ OpenRouter.", + "description": "Когда включено, Zoo может генерировать изображения из текстовых запросов, используя модели генерации изображений OpenRouter. Требует настроенный API-ключ OpenRouter.", "openRouterApiKeyLabel": "API-ключ OpenRouter", "openRouterApiKeyPlaceholder": "Введите ваш API-ключ OpenRouter", "getApiKeyText": "Получите ваш API-ключ от", @@ -811,11 +807,11 @@ }, "RUN_SLASH_COMMAND": { "name": "Включить слэш-команды, инициированные моделью", - "description": "Когда включено, Roo может выполнять ваши слэш-команды для выполнения рабочих процессов." + "description": "Когда включено, Zoo может выполнять ваши слэш-команды для выполнения рабочих процессов." }, "CUSTOM_TOOLS": { "name": "Включить пользовательские инструменты", - "description": "Если включено, Roo сможет загружать и использовать пользовательские инструменты TypeScript/JavaScript из каталога .roo/tools вашего проекта или ~/.roo/tools для глобальных инструментов. Примечание: эти инструменты будут одобрены автоматически.", + "description": "Если включено, Zoo сможет загружать и использовать пользовательские инструменты TypeScript/JavaScript из каталога .roo/tools вашего проекта или ~/.roo/tools для глобальных инструментов. Примечание: эти инструменты будут одобрены автоматически.", "toolsHeader": "Доступные пользовательские инструменты", "noTools": "Пользовательские инструменты не загружены. Добавьте файлы .ts или .js в каталог .roo/tools вашего проекта или ~/.roo/tools для глобальных инструментов.", "refreshButton": "Обновить", @@ -827,7 +823,7 @@ }, "promptCaching": { "label": "Отключить кэширование промптов", - "description": "Если отмечено, Roo не будет использовать кэширование промптов для этой модели." + "description": "Если отмечено, Zoo не будет использовать кэширование промптов для этой модели." }, "temperature": { "useCustom": "Использовать пользовательскую температуру", @@ -857,7 +853,7 @@ } }, "modelPicker": { - "automaticFetch": "Расширение автоматически получает актуальный список моделей на {{serviceName}}. Если не уверены, что выбрать, Roo Code лучше всего работает с {{defaultModelId}}. Также попробуйте поискать \"free\" для бесплатных вариантов.", + "automaticFetch": "Расширение автоматически получает актуальный список моделей на {{serviceName}}. Если не уверены, что выбрать, Zoo Code лучше всего работает с {{defaultModelId}}. Также попробуйте поискать \"free\" для бесплатных вариантов.", "label": "Модель", "searchPlaceholder": "Поиск", "noMatchFound": "Совпадений не найдено", @@ -867,7 +863,7 @@ "footer": { "telemetry": { "label": "Разрешить анонимную отправку ошибок и статистики использования", - "description": "Помогите улучшить Roo Code, отправляя анонимные данные об использовании и отчеты об ошибках. Эта телеметрия не собирает код, промпты или личную информацию. Смотрите нашу политику конфиденциальности для получения подробной информации." + "description": "Помогите улучшить Zoo Code, отправляя анонимные данные об использовании и отчеты об ошибках. Эта телеметрия не собирает код, промпты или личную информацию. Смотрите нашу политику конфиденциальности для получения подробной информации." }, "settings": { "import": "Импорт", diff --git a/webview-ui/src/i18n/locales/ru/welcome.json b/webview-ui/src/i18n/locales/ru/welcome.json index af938e309b7..f8d0affb99d 100644 --- a/webview-ui/src/i18n/locales/ru/welcome.json +++ b/webview-ui/src/i18n/locales/ru/welcome.json @@ -1,52 +1,18 @@ { - "routers": { - "requesty": { - "description": "Ваш оптимизированный маршрутизатор LLM", - "incentive": "Бесплатный кредит в размере $1" - }, - "openrouter": { - "description": "Единый интерфейс для LLM" - }, - "roo": { - "description": "Лучшие бесплатные модели для начала", - "incentive": "Попробуйте Roo бесплатно" - } - }, "landing": { "greeting": "Добро пожаловать в Roo Code!", "introduction": "С набором встроенных и расширяемых Режимов, Roo Code позволяет вам планировать, проектировать, писать код, отлаживать и повышать продуктивность как никогда раньше.", - "accountMention": "Для начала создайте свой аккаунт Roo Code Cloud. Получите мощные модели, веб-управление, аналитику, поддержку и многое другое.", - "getStarted": "Создать аккаунт Roo", - "noAccount": "или использовать без аккаунта" + "getStarted": "Выберите поставщика услуг" }, "providerSignup": { "heading": "Выберите поставщика услуг", "chooseProvider": "Roo нужен LLM-провайдер для работы. Выберите один для начала, вы можете добавить больше позже.", - "rooCloudProvider": "Провайдер Roo Code Cloud", - "rooCloudDescription": "Самый простой способ начать — использовать провайдер Roo Code Cloud: тщательно подобранная смесь бесплатных и платных моделей по низкой стоимости.", - "learnMore": "Узнать больше", - "useAnotherProvider": "Провайдер третьей стороны", - "useAnotherProviderDescription": "Введите API-ключ и начните.", - "noApiKeys": "Не хотите иметь дело с API-ключами и отдельными аккаунтами?", - "backToRoo": "Выберите провайдер Roo Code Cloud.", "goBack": "Назад", "finish": "Завершить" }, - "waitingForCloud": { - "heading": "Вход в Roo Code Cloud...", - "description": "Мы отправим вас в браузер для регистрации в Roo Code Cloud. Затем мы вернём вас сюда, чтобы завершить процесс.", - "noPrompt": "Если вас не просят открыть URL, нажмите здесь.", - "havingTrouble": "Если вы завершили регистрацию, но испытываете проблемы, нажмите здесь.", - "pasteUrl": "Вставьте URL обратного вызова из вашего браузера:", - "docsLink": "Не работает? Проверьте документацию.", - "invalidURL": "Это не похоже на действительный URL обратного вызова. Пожалуйста, скопируйте то, что Roo Code Cloud показывает в вашем браузере.", - "goBack": "Назад" - }, - "startRouter": "Мы рекомендуем использовать маршрутизатор LLM:", - "startCustom": "Или вы можете принести свой API-ключ:", "telemetry": { - "helpImprove": "Помогите улучшить Roo Code", - "helpImproveMessage": "Roo Code собирает данные об ошибках и использовании, чтобы помочь нам исправлять ошибки и улучшать расширение. Эта телеметрия не собирает код, приглашения или личную информацию. Вы можете отключить это в настройках." + "helpImprove": "Помогите улучшить Zoo Code", + "helpImproveMessage": "Zoo Code собирает данные об ошибках и использовании, чтобы помочь нам исправлять ошибки и улучшать расширение. Эта телеметрия не собирает код, приглашения или личную информацию. Вы можете отключить это в настройках." }, "importSettings": "Импортировать настройки" } diff --git a/webview-ui/src/i18n/locales/ru/worktrees.json b/webview-ui/src/i18n/locales/ru/worktrees.json index a3ea03c3ef4..038029dff5c 100644 --- a/webview-ui/src/i18n/locales/ru/worktrees.json +++ b/webview-ui/src/i18n/locales/ru/worktrees.json @@ -1,28 +1,23 @@ { "title": "Worktrees", "done": "Готово", - "description": "Git worktrees позволяют одновременно работать с несколькими ветками в отдельных каталогах. У каждого worktree есть своё окно VS Code с Roo Code.", - + "description": "Git worktrees позволяют одновременно работать с несколькими ветками в отдельных каталогах. У каждого worktree есть своё окно VS Code с Zoo Code.", "notGitRepo": "Этот workspace не является Git-репозиторием. Для работы worktrees нужен Git-репозиторий.", "multiRootNotSupported": "Worktrees не поддерживаются в multi-root workspace. Открой один каталог, чтобы использовать worktrees.", "subfolderNotSupported": "Этот workspace является подпапкой Git-репозитория. Открой корень репозитория, чтобы использовать worktrees.", "gitRoot": "Корень Git", - "includeFileExists": "Найден файл .worktreeinclude — файлы будут скопированы в новые worktrees", "noIncludeFile": "Файл .worktreeinclude не найден", "createFromGitignore": "Создать из .gitignore", - "primary": "Основной", "current": "Текущий", "locked": "Заблокировано", "detachedHead": "Detached HEAD", "noBranch": "Нет ветки", - "switchInThisWindow": "Перейти на worktree", "openInNewWindow": "Открыть в новом окне", "delete": "Удалить", "newWorktree": "Новый Worktree", - "createWorktree": "Создать Worktree", "branchName": "Имя ветки", "createNewBranch": "Создать новую ветку", @@ -44,7 +39,6 @@ "copyingFiles": "Копирование файлов...", "copyingProgress": "{{item}} — {{copied}} скопировано", "cancel": "Отмена", - "deleteWorktree": "Удалить Worktree", "deleteWarning": "Это действие нельзя отменить. Будет удалено:", "deleteWarningBranch": "Ветка и все незакоммиченные изменения", @@ -53,11 +47,8 @@ "forceDelete": "Удалить принудительно", "worktreeIsLocked": "worktree заблокирован", "deleting": "Удаление...", - "close": "Закрыть", - "showInHomeScreen": "Показывать worktrees на главном экране", - "selector": { "worktree": "Worktree", "title": "Worktrees", diff --git a/webview-ui/src/i18n/locales/tr/chat.json b/webview-ui/src/i18n/locales/tr/chat.json index c1042ddc169..fe9f7471b10 100644 --- a/webview-ui/src/i18n/locales/tr/chat.json +++ b/webview-ui/src/i18n/locales/tr/chat.json @@ -1,5 +1,5 @@ { - "greeting": "Roo Code'a Hoş Geldiniz", + "greeting": "Zoo Code'a hoş geldin!", "task": { "title": "Görev", "expand": "Görevi genişlet", @@ -15,16 +15,6 @@ "export": "Görev geçmişini dışa aktar", "delete": "Görevi sil (Onayı atlamak için Shift + Tıkla)", "condenseContext": "Bağlamı akıllıca yoğunlaştır", - "share": "Görevi paylaş", - "shareWithOrganization": "Kuruluşla paylaş", - "shareWithOrganizationDescription": "Sadece kuruluşunuzun üyeleri erişebilir", - "sharePublicly": "Herkese açık paylaş", - "sharePubliclyDescription": "Bağlantıya sahip herkes erişebilir", - "connectToCloud": "Buluta bağlan", - "connectToCloudDescription": "Görevleri paylaşmak için Roo Code Cloud'a giriş yap", - "sharingDisabledByOrganization": "Paylaşım kuruluş tarafından devre dışı bırakıldı", - "shareSuccessOrganization": "Organizasyon bağlantısı panoya kopyalandı", - "shareSuccessPublic": "Genel bağlantı panoya kopyalandı", "openApiHistory": "API Geçmişini Aç", "openUiHistory": "UI Geçmişini Aç", "backToParentTask": "Üst görev" @@ -98,7 +88,7 @@ "enqueueMessage": "Mesajı kuyruğa ekle (mevcut görev tamamlandıktan sonra gönderilecek)", "scrollToBottom": "Sohbetin altına kaydır", "scrollToLatestCheckpoint": "Önceki checkpoint'e kaydır", - "about": "Roo Code, düzenleyicinizdeki bütün bir yapay zeka geliştirme ekibidir.", + "about": "Zoo Code, düzenleyicinizdeki bütün bir yapay zeka geliştirme ekibidir.", "docs": "Daha fazla bilgi için belgelerimize göz atın.", "onboarding": "Bu çalışma alanındaki görev listeniz boş.", "rooTips": { @@ -130,7 +120,7 @@ "title": "Modlar", "marketplace": "Mod Pazaryeri", "settings": "Mod Ayarları", - "description": "Roo'nun davranışını özelleştiren uzmanlaşmış kişilikler.", + "description": "Zoo'nun davranışını özelleştiren uzmanlaşmış kişilikler.", "searchPlaceholder": "Modları ara...", "noResults": "Sonuç bulunamadı" }, @@ -144,7 +134,7 @@ "diffError": { "title": "Düzenleme Başarısız" }, - "troubleMessage": "Roo sorun yaşıyor...", + "troubleMessage": "Zoo sorun yaşıyor...", "apiRequest": { "title": "API İsteği", "failed": "API İsteği Başarısız", @@ -162,7 +152,7 @@ "500": "Sağlayıcı sunucu hatası. Sağlayıcı tarafında bir sorun var, isteğinizde sorun yok.", "docs": "Belgeler", "goToSettings": "Ayarlar", - "unknown": "Bilinmeyen API hatası. Lütfen Roo Code desteğiyle iletişime geç.", + "unknown": "Bilinmeyen API hatası. Lütfen Zoo Code desteğiyle iletişime geç.", "connection": "Bağlantı hatası. Çalışan bir internet bağlantınız olduğundan emin olun.", "claudeCodeNotAuthenticated": "Claude Code'u kullanmak için oturum açmanız gerekiyor. Ayarlar'a gidin ve kimlik doğrulaması yapmak için \"Claude Code'da Oturum Aç\" seçeneğine tıklayın." } @@ -190,40 +180,40 @@ "wantsToFetch": "Roo mevcut göreve yardımcı olmak için ayrıntılı talimatlar almak istiyor" }, "fileOperations": { - "wantsToRead": "Roo bu dosyayı okumak istiyor", - "wantsToReadOutsideWorkspace": "Roo çalışma alanı dışındaki bu dosyayı okumak istiyor", - "didRead": "Roo bu dosyayı okudu", - "wantsToEdit": "Roo bu dosyayı düzenlemek istiyor", - "wantsToEditOutsideWorkspace": "Roo çalışma alanı dışındaki bu dosyayı düzenlemek istiyor", - "wantsToEditProtected": "Roo korumalı bir yapılandırma dosyasını düzenlemek istiyor", - "wantsToCreate": "Roo yeni bir dosya oluşturmak istiyor", + "wantsToRead": "Zoo bu dosyayı okumak istiyor", + "wantsToReadOutsideWorkspace": "Zoo çalışma alanı dışındaki bu dosyayı okumak istiyor", + "didRead": "Zoo bu dosyayı okudu", + "wantsToEdit": "Zoo bu dosyayı düzenlemek istiyor", + "wantsToEditOutsideWorkspace": "Zoo çalışma alanı dışındaki bu dosyayı düzenlemek istiyor", + "wantsToEditProtected": "Zoo korumalı bir yapılandırma dosyasını düzenlemek istiyor", + "wantsToCreate": "Zoo yeni bir dosya oluşturmak istiyor", "wantsToSearchReplace": "Roo bu dosyada arama ve değiştirme yapmak istiyor", "didSearchReplace": "Roo bu dosyada arama ve değiştirme yaptı", - "wantsToInsert": "Roo bu dosyaya içerik eklemek istiyor", - "wantsToInsertWithLineNumber": "Roo bu dosyanın {{lineNumber}}. satırına içerik eklemek istiyor", - "wantsToInsertAtEnd": "Roo bu dosyanın sonuna içerik eklemek istiyor", - "wantsToReadAndXMore": "Roo bu dosyayı ve {{count}} tane daha okumak istiyor", - "wantsToReadMultiple": "Roo birden fazla dosya okumak istiyor", - "wantsToApplyBatchChanges": "Roo birden fazla dosyaya değişiklik uygulamak istiyor", - "wantsToGenerateImage": "Roo bir görsel oluşturmak istiyor", - "wantsToGenerateImageOutsideWorkspace": "Roo çalışma alanının dışında bir görsel oluşturmak istiyor", - "wantsToGenerateImageProtected": "Roo korumalı bir konumda görsel oluşturmak istiyor", - "didGenerateImage": "Roo bir görsel oluşturdu" + "wantsToInsert": "Zoo bu dosyaya içerik eklemek istiyor", + "wantsToInsertWithLineNumber": "Zoo bu dosyanın {{lineNumber}}. satırına içerik eklemek istiyor", + "wantsToInsertAtEnd": "Zoo bu dosyanın sonuna içerik eklemek istiyor", + "wantsToReadAndXMore": "Zoo bu dosyayı ve {{count}} tane daha okumak istiyor", + "wantsToReadMultiple": "Zoo birden fazla dosya okumak istiyor", + "wantsToApplyBatchChanges": "Zoo birden fazla dosyaya değişiklik uygulamak istiyor", + "wantsToGenerateImage": "Zoo bir görsel oluşturmak istiyor", + "wantsToGenerateImageOutsideWorkspace": "Zoo çalışma alanının dışında bir görsel oluşturmak istiyor", + "wantsToGenerateImageProtected": "Zoo korumalı bir konumda görsel oluşturmak istiyor", + "didGenerateImage": "Zoo bir görsel oluşturdu" }, "directoryOperations": { - "wantsToViewTopLevel": "Roo bu dizindeki üst düzey dosyaları görüntülemek istiyor", - "didViewTopLevel": "Roo bu dizindeki üst düzey dosyaları görüntüledi", - "wantsToViewRecursive": "Roo bu dizindeki tüm dosyaları özyinelemeli olarak görüntülemek istiyor", - "didViewRecursive": "Roo bu dizindeki tüm dosyaları özyinelemeli olarak görüntüledi", - "wantsToSearch": "Roo bu dizinde {{regex}} için arama yapmak istiyor", - "didSearch": "Roo bu dizinde {{regex}} için arama yaptı", - "wantsToSearchOutsideWorkspace": "Roo bu dizinde (çalışma alanı dışında) {{regex}} için arama yapmak istiyor", - "didSearchOutsideWorkspace": "Roo bu dizinde (çalışma alanı dışında) {{regex}} için arama yaptı", - "wantsToViewTopLevelOutsideWorkspace": "Roo bu dizindeki (çalışma alanı dışında) üst düzey dosyaları görüntülemek istiyor", - "didViewTopLevelOutsideWorkspace": "Roo bu dizindeki (çalışma alanı dışında) üst düzey dosyaları görüntüledi", - "wantsToViewRecursiveOutsideWorkspace": "Roo bu dizindeki (çalışma alanı dışında) tüm dosyaları özyinelemeli olarak görüntülemek istiyor", - "didViewRecursiveOutsideWorkspace": "Roo bu dizindeki (çalışma alanı dışında) tüm dosyaları özyinelemeli olarak görüntüledi", - "wantsToViewMultipleDirectories": "Roo birden fazla dizini görüntülemek istiyor" + "wantsToViewTopLevel": "Zoo bu dizindeki üst düzey dosyaları görüntülemek istiyor", + "didViewTopLevel": "Zoo bu dizindeki üst düzey dosyaları görüntüledi", + "wantsToViewRecursive": "Zoo bu dizindeki tüm dosyaları özyinelemeli olarak görüntülemek istiyor", + "didViewRecursive": "Zoo bu dizindeki tüm dosyaları özyinelemeli olarak görüntüledi", + "wantsToSearch": "Zoo bu dizinde {{regex}} için arama yapmak istiyor", + "didSearch": "Zoo bu dizinde {{regex}} için arama yaptı", + "wantsToSearchOutsideWorkspace": "Zoo bu dizinde (çalışma alanı dışında) {{regex}} için arama yapmak istiyor", + "didSearchOutsideWorkspace": "Zoo bu dizinde (çalışma alanı dışında) {{regex}} için arama yaptı", + "wantsToViewTopLevelOutsideWorkspace": "Zoo bu dizindeki (çalışma alanı dışında) üst düzey dosyaları görüntülemek istiyor", + "didViewTopLevelOutsideWorkspace": "Zoo bu dizindeki (çalışma alanı dışında) üst düzey dosyaları görüntüledi", + "wantsToViewRecursiveOutsideWorkspace": "Zoo bu dizindeki (çalışma alanı dışında) tüm dosyaları özyinelemeli olarak görüntülemek istiyor", + "didViewRecursiveOutsideWorkspace": "Zoo bu dizindeki (çalışma alanı dışında) tüm dosyaları özyinelemeli olarak görüntüledi", + "wantsToViewMultipleDirectories": "Zoo birden fazla dizini görüntülemek istiyor" }, "commandOutput": "Komut Çıktısı", "commandExecution": { @@ -246,24 +236,24 @@ "response": "Yanıt", "arguments": "Argümanlar", "text": { - "rooSaid": "Roo dedi" + "rooSaid": "Zoo dedi" }, "feedback": { "youSaid": "Dediniz ki" }, "mcp": { - "wantsToUseTool": "Roo {{serverName}} MCP sunucusunda bir araç kullanmak istiyor", - "wantsToAccessResource": "Roo {{serverName}} MCP sunucusundaki bir kaynağa erişmek istiyor" + "wantsToUseTool": "Zoo {{serverName}} MCP sunucusunda bir araç kullanmak istiyor", + "wantsToAccessResource": "Zoo {{serverName}} MCP sunucusundaki bir kaynağa erişmek istiyor" }, "modes": { - "wantsToSwitch": "Roo {{mode}} moduna geçmek istiyor", - "wantsToSwitchWithReason": "Roo {{mode}} moduna geçmek istiyor çünkü: {{reason}}", - "didSwitch": "Roo {{mode}} moduna geçti", - "didSwitchWithReason": "Roo {{mode}} moduna geçti çünkü: {{reason}}" + "wantsToSwitch": "Zoo {{mode}} moduna geçmek istiyor", + "wantsToSwitchWithReason": "Zoo {{mode}} moduna geçmek istiyor çünkü: {{reason}}", + "didSwitch": "Zoo {{mode}} moduna geçti", + "didSwitchWithReason": "Zoo {{mode}} moduna geçti çünkü: {{reason}}" }, "subtasks": { - "wantsToCreate": "Roo {{mode}} modunda yeni bir alt görev oluşturmak istiyor", - "wantsToFinish": "Roo bu alt görevi bitirmek istiyor", + "wantsToCreate": "Zoo {{mode}} modunda yeni bir alt görev oluşturmak istiyor", + "wantsToFinish": "Zoo bu alt görevi bitirmek istiyor", "newTaskContent": "Alt Görev Talimatları", "completionContent": "Alt Görev Tamamlandı", "resultContent": "Alt Görev Sonuçları", @@ -272,7 +262,7 @@ "goToSubtask": "Görevi görüntüle" }, "questions": { - "hasQuestion": "Roo'nun bir sorusu var" + "hasQuestion": "Zoo'nun bir sorusu var" }, "taskCompleted": "Görev Tamamlandı", "modelResponseIncomplete": "Model yanıtı eksik", @@ -288,7 +278,7 @@ "copyToClipboard": "Panoya Kopyala", "copied": "Kopyalandı!", "diagnostics": "Ayrıntılı hata bilgisi al", - "proxyProvider": "Proxy tabanlı bir sağlayıcı kullanıyor gibi görünüyorsun. Günlüklerini kontrol ettiğinden ve Roo'nun isteklerini yeniden yazmadığından emin ol." + "proxyProvider": "Proxy tabanlı bir sağlayıcı kullanıyor gibi görünüyorsun. Günlüklerini kontrol ettiğinden ve Zoo'nun isteklerini yeniden yazmadığından emin ol." }, "powershell": { "issues": "Windows PowerShell ile ilgili sorunlar yaşıyor gibi görünüyorsunuz, lütfen şu konuya bakın" @@ -331,31 +321,24 @@ } }, "skill": { - "wantsToLoad": "Roo bir beceri yüklemek istiyor", - "didLoad": "Roo bir beceri yükledi" + "wantsToLoad": "Zoo bir beceri yüklemek istiyor", + "didLoad": "Zoo bir beceri yükledi" }, "followUpSuggest": { "copyToInput": "Giriş alanına kopyala (veya Shift + tıklama)", "timerPrefix": "Otomatik onay etkinleştirildi. {{seconds}}s içinde seçim yapılıyor…" }, "announcement": { - "title": "Roo Code {{version}} Yayınlandı", - "support": "GitHub'da yıldız vererek Roo Code'u destekle.", - "stealthModel": { - "feature": "Sınırlı süre ÜCRETSİZ gizli model - Code Supernova: Artık 1M token bağlam penceresi ile yükseltildi! Görüntü girişlerini destekleyen çok amaçlı acentik kodlama modeli, Roo Code Cloud üzerinden kullanılabilir.", - "note": "(Not: istemler ve tamamlamalar model yaratıcısı tarafından kaydedilir ve modeli geliştirmek için kullanılır)", - "connectButton": "Roo Code Cloud'a bağlan", - "selectModel": "Başlamak için Ayarlar'da Roo Code Cloud sağlayıcısından roo/code-supernova'yı seçin.", - "goToSettingsButton": "Ayarlar'a Git" - }, + "title": "Zoo Code {{version}} yayınlandı", + "support": "Lütfen GitHub'da bize yıldız vererek Zoo Code'u destekle.", "handoff": { - "heading": "Roo Code eklentisi bir yere gitmiyor.", - "description": "Roo Code'un 3 milyon kuruluma ulaştığı ve orijinal ekibin tüm enerjisini Roomote'a verdiği son duyuruyu görmüş olabilirsin. Bu haberin birçoğunuz için zor olduğunu biliyoruz. Bu eklenti bizim ve senin için çok şey ifade ediyor ve seni duyuyoruz. İyi haber: bir topluluk ekibi Roo Code'u ileriye taşımak için öne çıktı ve güvendiğin eklentinin bakımı ve geliştirilmesinin sürmesi için onlarla resmi bir devir çalışması yürütüyoruz.", - "readMore": "Matt Rubens'in orijinal duyurusunu oku" + "heading": "Zoo Code geri döndü; artık Zoo Code adlı, topluluk tarafından sürdürülen bir eklenti!!", + "description": "Takip etmiyorsan kaçırmış olabilirsin: Zoo Code ekibi kısa süre önce Zoo Code geliştirmesini aşamalı olarak sonlandırdığını ve yaptıkları çalışmaları arşivlediğini duyurdu. Ama endişelenme; topluluk, Zoo Code mirasını yeni bir ad ve yeni bir yuva ile sürdürmek için öne çıktı! Artık sadece tek bir \"Roo\" değiliz; bir topluluğuz, istersen bir \"Zoo\" diyebilirsin. Zoo Code, Zoo Code'un bıraktığı yerden devam eden, topluluk tarafından sürdürülen bir eklenti ve Roo'nun ruhunu korurken yeni özellikler ve iyileştirmeler sunmaya kararlıyız. Geliştiriciler için böylesine harika bir araç yarattıkları ve yaptıkları inanılmaz iş için tüm Zoo Code ekibine kocaman bir teşekkür göndermek istiyoruz. Onların temeli üzerine inşa etmeyi sürdürmekten ve topluluğun gelecekte Zoo Code'u nereye taşıyacağını görmekten heyecan duyuyoruz!", + "readMore": "Zoo Code'un yeni ana sayfasına göz at ve tam duyuruyu oku" }, "release": { "heading": "Yenilikler:", - "gpt55": "OpenAI Codex üzerinden GPT-5.5: En son modeli doğrudan Roo Code'dan kullanabilmen için OpenAI Codex sağlayıcısına GPT-5.5 desteği eklendi.", + "gpt55": "OpenAI Codex üzerinden GPT-5.5: En son modeli doğrudan Zoo Code'dan kullanabilmen için OpenAI Codex sağlayıcısına GPT-5.5 desteği eklendi.", "claudeOpus47": "Vertex AI'da Claude Opus 4.7: Anthropic'in en yeni amiral gemisi akıl yürütme modeli olan Claude Opus 4.7 Vertex AI sağlayıcısına eklendi.", "checkpointNav": "Önceki Checkpoint Navigasyonu: Sohbetten önceki checkpoint'lere geri atlayabilmen için kontroller eklendi ve tam i18n desteği sunuluyor." }, @@ -381,24 +364,24 @@ "profileViolationWarning": "Geçerli profil kuruluşunuzun ayarlarıyla uyumlu değil", "shellIntegration": { "title": "Komut Çalıştırma Uyarısı", - "description": "Komutunuz VSCode terminal kabuk entegrasyonu olmadan çalıştırılıyor. Bu uyarıyı gizlemek için Roo Code ayarları'nın Terminal bölümünden kabuk entegrasyonunu devre dışı bırakabilir veya aşağıdaki bağlantıyı kullanarak VSCode terminal entegrasyonu sorunlarını giderebilirsiniz.", + "description": "Komutunuz VSCode terminal kabuk entegrasyonu olmadan çalıştırılıyor. Bu uyarıyı gizlemek için Zoo Code ayarları'nın Terminal bölümünden kabuk entegrasyonunu devre dışı bırakabilir veya aşağıdaki bağlantıyı kullanarak VSCode terminal entegrasyonu sorunlarını giderebilirsiniz.", "troubleshooting": "Kabuk entegrasyonu belgelerini görmek için buraya tıklayın." }, "ask": { "autoApprovedRequestLimitReached": { "title": "Otomatik Onaylanan İstek Limiti Aşıldı", - "description": "Roo, {{count}} API isteği/istekleri için otomatik onaylanan limite ulaştı. Sayacı sıfırlamak ve göreve devam etmek istiyor musunuz?", + "description": "Zoo, {{count}} API isteği/istekleri için otomatik onaylanan limite ulaştı. Sayacı sıfırlamak ve göreve devam etmek istiyor musunuz?", "button": "Sıfırla ve Devam Et" }, "autoApprovedCostLimitReached": { "title": "Otomatik Onaylanan Maliyet Sınırına Ulaşıldı", - "description": "Roo otomatik olarak onaylanmış ${{count}} maliyet sınırına ulaştı. Maliyeti sıfırlamak ve göreve devam etmek ister misiniz?", + "description": "Zoo otomatik olarak onaylanmış ${{count}} maliyet sınırına ulaştı. Maliyeti sıfırlamak ve göreve devam etmek ister misiniz?", "button": "Sıfırla ve Devam Et" } }, "codebaseSearch": { - "wantsToSearch": "Roo kod tabanında {{query}} aramak istiyor", - "wantsToSearchWithPath": "Roo {{path}} içinde kod tabanında {{query}} aramak istiyor", + "wantsToSearch": "Zoo kod tabanında {{query}} aramak istiyor", + "wantsToSearchWithPath": "Zoo {{path}} içinde kod tabanında {{query}} aramak istiyor", "didSearch_one": "1 sonuç bulundu", "didSearch_other": "{{count}} sonuç bulundu", "resultTooltip": "Benzerlik puanı: {{score}} (dosyayı açmak için tıklayın)" @@ -439,7 +422,7 @@ "ariaLabel": "Sürüm {{version}} - Sürüm notlarını görüntülemek için tıklayın" }, "rooCloudCTA": { - "title": "Roo Code Cloud gelişiyor!", + "title": "Zoo Code Cloud gelişiyor!", "description": "Bulutta uzak ajanlar çalıştırın, görevlerinize her yerden erişin, başkalarıyla işbirliği yapın ve daha fazlası.", "joinWaitlist": "En son güncellemeleri almak için kaydolun." }, @@ -480,8 +463,8 @@ "clickToEdit": "Mesajı düzenlemek için tıkla" }, "slashCommand": { - "wantsToRun": "Roo bir slash komutu çalıştırmak istiyor", - "didRun": "Roo bir slash komutu çalıştırdı" + "wantsToRun": "Zoo bir slash komutu çalıştırmak istiyor", + "didRun": "Zoo bir slash komutu çalıştırdı" }, "todo": { "partial": "{{total}} yapılacaklar listesinden {{completed}} tanesi tamamlandı", @@ -500,11 +483,11 @@ "openMcpSettings": "MCP Ayarlarını Aç" }, "readCommandOutput": { - "title": "Roo read command output" + "title": "Zoo read command output" }, "retiredProvider": { "title": "Sağlayıcı artık desteklenmiyor", - "message": "Üzgünüz, bu sağlayıcı artık desteklenmiyor. Çok az Roo kullanıcısının bunu gerçekten kullandığını gördük ve hızlı gelişmeye devam edip topluluğumuza iyi hizmet verebilmek için kod tabanımızın kapsamını daraltmamız gerekiyor. Gerçekten zor bir karardı ama senin için en önemli olana odaklanmamızı sağlıyor. Bunun can sıkıcı olduğunu biliyoruz.", + "message": "Bu sağlayıcı artık kullanılamıyor. Devam etmek için desteklenen bir sağlayıcı seçin.", "openSettings": "Ayarları aç" } } diff --git a/webview-ui/src/i18n/locales/tr/cloud.json b/webview-ui/src/i18n/locales/tr/cloud.json deleted file mode 100644 index ef10866d7bd..00000000000 --- a/webview-ui/src/i18n/locales/tr/cloud.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "title": "Cloud", - "profilePicture": "Profil resmi", - "logOut": "Çıkış yap", - "testApiAuthentication": "API Kimlik Doğrulamayı Test Et", - "signIn": "Roo Code Cloud'a bağlan", - "connect": "Başlayın", - "cloudBenefitsTitle": "Roo Code Cloud'u Deneyin", - "cloudBenefitProvider": "Roo ile harika çalışan ücretsiz ve ücretli modellere erişin", - "cloudBenefitCloudAgents": "Otonom Bulut ajanlarına görevler verin", - "cloudBenefitTriggers": "GitHub'da kod incelemeleri alın, Slack'ten görevler başlatın ve daha fazlasını yapın", - "cloudBenefitWalkaway": "Görevleri her yerden (telefonunuz dahil) takip edin ve kontrol edin", - "cloudBenefitHistory": "Görev geçmişinize her yerden erişin ve başkalarıyla paylaşın", - "cloudBenefitMetrics": "Token tüketiminizin bütünsel görünümünü elde edin", - "visitCloudWebsite": "Roo Code Cloud'u ziyaret et", - "taskSync": "Görev senkronizasyonu", - "taskSyncDescription": "Görevlerinizi Roo Code Cloud'da görüntülemek ve paylaşmak için senkronize edin", - "taskSyncManagedByOrganization": "Görev senkronizasyonu kuruluşunuz tarafından yönetilir", - "usageMetricsAlwaysReported": "Oturum açıldığında model kullanım bilgileri her zaman raporlanır", - "authWaiting": "Kimlik doğrulama tamamlanması bekleniyor...", - "havingTrouble": "Sorun yaşıyor musun?", - "pasteCallbackUrl": "Tarayıcından redirect URL'sini kopyala ve buraya yapıştır:", - "startOver": "Baştan başla", - "personalAccount": "Kişisel Hesap", - "switchAccount": "Roo Code Cloud Hesabını Değiştir", - "createTeamAccount": "Takım Hesabı Oluştur", - "cloudUrlPillLabel": "Roo Code Cloud URL'si", - "upsell": { - "autoApprovePowerUser": "Roo'ya biraz bağımsızlık mı veriyorsunuz? Roo Code Cloud ile onu her yerden kontrol edin. Daha fazla bilgi edinin.", - "longRunningTask": "Bu biraz zaman alabilir. Bulut ile her yerden devam edin.", - "taskList": "Roo'dan memnun musunuz? Roo Code Cloud'a göz atın: görevlerinizi her yerden takip edin ve kontrol edin, otonom Bulut ajanlarını çalıştırın, kullanım istatistikleri alın ve daha fazlasını yapın. Daha fazla bilgi edinin." - } -} diff --git a/webview-ui/src/i18n/locales/tr/marketplace.json b/webview-ui/src/i18n/locales/tr/marketplace.json index 5b5a83a204a..2b53956a510 100644 --- a/webview-ui/src/i18n/locales/tr/marketplace.json +++ b/webview-ui/src/i18n/locales/tr/marketplace.json @@ -1,5 +1,5 @@ { - "title": "Roo Marketplace", + "title": "Zoo Marketplace", "tabs": { "installed": "Yüklü", "settings": "Ayarlar", diff --git a/webview-ui/src/i18n/locales/tr/mcp.json b/webview-ui/src/i18n/locales/tr/mcp.json index 18bc2af5f30..7aab5b8a4ee 100644 --- a/webview-ui/src/i18n/locales/tr/mcp.json +++ b/webview-ui/src/i18n/locales/tr/mcp.json @@ -2,16 +2,16 @@ "title": "MCP Sunucuları", "done": "Tamam", "marketplace": "MCP Pazaryeri", - "description": "<0>Model Context Protocol, Roo'nun yeteneklerini genişletmek için ek araçlar ve kaynaklar sağlayan yerel olarak çalışan MCP sunucularıyla iletişim kurmanızı sağlar. <1>Topluluk tarafından oluşturulan sunucuları kullanabilir veya Roo'dan iş akışınıza özel yeni araçlar oluşturmasını isteyebilirsiniz (örneğin, \"en son npm belgelerini alan bir araç ekle\").", + "description": "<0>Model Context Protocol, Zoo'nun yeteneklerini genişletmek için ek araçlar ve kaynaklar sağlayan yerel olarak çalışan MCP sunucularıyla iletişim kurmanızı sağlar. <1>Topluluk tarafından oluşturulan sunucuları kullanabilir veya Zoo'dan iş akışınıza özel yeni araçlar oluşturmasını isteyebilirsiniz (örneğin, \"en son npm belgelerini alan bir araç ekle\").", "instructions": "Talimatlar", "enableToggle": { "title": "MCP Sunucularını Etkinleştir", - "description": "Bunu AÇ, böylece Roo bağlı MCP sunucularından araçlar kullanabilir. Roo'ya daha fazla yetenek kazandırır. Ekstra araçları kullanmayacaksan, API token maliyetini azaltmak için bunu KAPAT." + "description": "Bunu AÇ, böylece Zoo bağlı MCP sunucularından araçlar kullanabilir. Zoo'ya daha fazla yetenek kazandırır. Ekstra araçları kullanmayacaksan, API token maliyetini azaltmak için bunu KAPAT." }, "enableServerCreation": { "title": "MCP Sunucu Oluşturmayı Etkinleştir", - "description": "Bunu AÇ, Roo'nun <1>yeni özel MCP sunucuları oluşturmanda sana yardımcı olmasını sağlar. <0>Sunucu oluşturma hakkında bilgi al", - "hint": "İpucu: API token maliyetini azaltmak için Roo'dan yeni bir MCP sunucusu oluşturmasını istemediğinde bu ayarı kapat." + "description": "Bunu AÇ, Zoo'nun <1>yeni özel MCP sunucuları oluşturmanda sana yardımcı olmasını sağlar. <0>Sunucu oluşturma hakkında bilgi al", + "hint": "İpucu: API token maliyetini azaltmak için Zoo'dan yeni bir MCP sunucusu oluşturmasını istemediğinde bu ayarı kapat." }, "editGlobalMCP": "Global MCP'yi Düzenle", "editProjectMCP": "Proje MCP'sini Düzenle", diff --git a/webview-ui/src/i18n/locales/tr/prompts.json b/webview-ui/src/i18n/locales/tr/prompts.json index 543fd888980..e0288355c2b 100644 --- a/webview-ui/src/i18n/locales/tr/prompts.json +++ b/webview-ui/src/i18n/locales/tr/prompts.json @@ -9,7 +9,7 @@ "editModesConfig": "Mod yapılandırmasını düzenle", "editGlobalModes": "Global modları düzenle", "editProjectModes": "Proje modlarını düzenle (.roomodes)", - "createModeHelpText": "Modlar, Roo'nun davranışını uyarlayan özel kişiliklerdir. <0>Modları Kullanma Hakkında Bilgi Edinin veya <1>Modları Özelleştirme.", + "createModeHelpText": "Modlar, Zoo'nun davranışını uyarlayan özel kişiliklerdir. <0>Modları Kullanma Hakkında Bilgi Edinin veya <1>Modları Özelleştirme.", "selectMode": "Modları Ara" }, "apiConfiguration": { @@ -33,7 +33,7 @@ "roleDefinition": { "title": "Rol Tanımı", "resetToDefault": "Varsayılana sıfırla", - "description": "Bu mod için Roo'nun uzmanlığını ve kişiliğini tanımlayın. Bu açıklama, Roo'nun kendini nasıl sunduğunu ve görevlere nasıl yaklaştığını şekillendirir." + "description": "Bu mod için Zoo'nun uzmanlığını ve kişiliğini tanımlayın. Bu açıklama, Zoo'nun kendini nasıl sunduğunu ve görevlere nasıl yaklaştığını şekillendirir." }, "description": { "title": "Kısa açıklama (insanlar için)", @@ -102,7 +102,7 @@ "types": { "ENHANCE": { "label": "Promptu Geliştir", - "description": "Girdileriniz için özel öneriler veya iyileştirmeler almak için prompt geliştirmeyi kullanın. Bu, Roo'nun niyetinizi anlamasını ve mümkün olan en iyi yanıtları sağlamasını garanti eder. Sohbetteki ✨ simgesi aracılığıyla kullanılabilir." + "description": "Girdileriniz için özel öneriler veya iyileştirmeler almak için prompt geliştirmeyi kullanın. Bu, Zoo'nun niyetinizi anlamasını ve mümkün olan en iyi yanıtları sağlamasını garanti eder. Sohbetteki ✨ simgesi aracılığıyla kullanılabilir." }, "CONDENSE": { "label": "Bağlam Yoğunlaştırma", @@ -167,7 +167,7 @@ }, "roleDefinition": { "label": "Rol Tanımı", - "description": "Bu mod için Roo'nun uzmanlığını ve kişiliğini tanımlayın." + "description": "Bu mod için Zoo'nun uzmanlığını ve kişiliğini tanımlayın." }, "whenToUse": { "label": "Ne zaman kullanılmalı (isteğe bağlı)", diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json index 42ba46f85e1..4b42b87da1c 100644 --- a/webview-ui/src/i18n/locales/tr/settings.json +++ b/webview-ui/src/i18n/locales/tr/settings.json @@ -40,7 +40,7 @@ "ui": "UI", "experimental": "Deneysel", "language": "Dil", - "about": "Roo Code Hakkında", + "about": "Zoo Code Hakkında", "skills": "Skills" }, "about": { @@ -56,7 +56,7 @@ "label": "Bir güvenlik açığı mı keşfettiniz?", "link": "Açıklama sürecimizi takip edin" }, - "community": "İpuçları mı istiyorsunuz yoksa sadece diğer Roo Code kullanıcılarıyla takılmak mı istiyorsunuz? reddit.com/r/RooCode veya discord.gg/roocode'a katılın", + "community": "İpuçları mı istiyorsunuz yoksa sadece diğer Zoo Code kullanıcılarıyla takılmak mı istiyorsunuz? reddit.com/r/RooCode veya discord.gg/roocode'a katılın", "contactAndCommunity": "İletişim ve Topluluk", "manageSettings": "Ayarları Yönet", "debugMode": { @@ -100,7 +100,7 @@ "footer": "Sık kullanılan komutlara ve iş akışlarına hızlı erişim için eğik çizgi komutlarını kullanın." }, "prompts": { - "description": "Prompt geliştirme, kod açıklama ve sorun çözme gibi hızlı eylemler için kullanılan destek promptlarını yapılandırın. Bu promptlar, Roo'nun yaygın geliştirme görevleri için daha iyi destek sağlamasına yardımcı olur." + "description": "Prompt geliştirme, kod açıklama ve sorun çözme gibi hızlı eylemler için kullanılan destek promptlarını yapılandırın. Bu promptlar, Zoo'nun yaygın geliştirme görevleri için daha iyi destek sağlamasına yardımcı olur." }, "codeIndex": { "title": "Kod Tabanı İndeksleme", @@ -223,10 +223,10 @@ "disabledAriaLabel": "Otomatik onay devre dışı - önce seçenekleri belirleyin", "readOnly": { "label": "Okuma", - "description": "Etkinleştirildiğinde, Roo otomatik olarak dizin içeriğini görüntüleyecek ve Onayla düğmesine tıklamanıza gerek kalmadan dosyaları okuyacaktır.", + "description": "Etkinleştirildiğinde, Zoo otomatik olarak dizin içeriğini görüntüleyecek ve Onayla düğmesine tıklamanıza gerek kalmadan dosyaları okuyacaktır.", "outsideWorkspace": { "label": "Çalışma alanı dışındaki dosyaları dahil et", - "description": "Roo'nun onay gerektirmeden mevcut çalışma alanı dışındaki dosyaları okumasına izin ver." + "description": "Zoo'nun onay gerektirmeden mevcut çalışma alanı dışındaki dosyaları okumasına izin ver." } }, "write": { @@ -235,11 +235,11 @@ "delayLabel": "Tanılamanın potansiyel sorunları tespit etmesine izin vermek için yazmalardan sonra gecikme", "outsideWorkspace": { "label": "Çalışma alanı dışındaki dosyaları dahil et", - "description": "Roo'nun onay gerektirmeden mevcut çalışma alanı dışında dosya oluşturmasına ve düzenlemesine izin ver." + "description": "Zoo'nun onay gerektirmeden mevcut çalışma alanı dışında dosya oluşturmasına ve düzenlemesine izin ver." }, "protected": { "label": "Korumalı dosyaları dahil et", - "description": "Roo'nun korumalı dosyaları (.rooignore ve .roo/ yapılandırma dosyaları gibi) onay gerektirmeden oluşturmasına ve düzenlemesine izin ver." + "description": "Zoo'nun korumalı dosyaları (.rooignore ve .roo/ yapılandırma dosyaları gibi) onay gerektirmeden oluşturmasına ve düzenlemesine izin ver." } }, "mcp": { @@ -306,7 +306,7 @@ "searchProviderPlaceholder": "Sağlayıcıları ara", "noProviderMatchFound": "Eşleşen sağlayıcı bulunamadı", "noMatchFound": "Eşleşen profil bulunamadı", - "retiredProviderMessage": "Üzgünüz, bu sağlayıcı artık desteklenmiyor. Çok az Roo kullanıcısının bunu gerçekten kullandığını gördük ve hızlı gelişmeye devam edip topluluğumuza iyi hizmet verebilmek için kod tabanımızın kapsamını daraltmamız gerekiyor. Gerçekten zor bir karardı ama senin için en önemli olana odaklanmamızı sağlıyor. Bunun can sıkıcı olduğunu biliyoruz.", + "retiredProviderMessage": "Bu sağlayıcı artık kullanılamıyor. Devam etmek için desteklenen bir sağlayıcı seçin.", "vscodeLmDescription": "VS Code Dil Modeli API'si, diğer VS Code uzantıları tarafından sağlanan modelleri çalıştırmanıza olanak tanır (GitHub Copilot dahil ancak bunlarla sınırlı değildir). Başlamanın en kolay yolu, VS Code Marketplace'ten Copilot ve Copilot Chat uzantılarını yüklemektir.", "awsCustomArnUse": "Kullanmak istediğiniz model için geçerli bir Amazon Bedrock ARN'si girin. Format örnekleri:", "awsCustomArnDesc": "ARN içindeki bölgenin yukarıda seçilen AWS Bölgesiyle eşleştiğinden emin olun.", @@ -456,7 +456,7 @@ "draftModelDesc": "Spekülatif kod çözmenin doğru çalışması için taslak model aynı model ailesinden olmalıdır.", "selectDraftModel": "Taslak Model Seç", "noModelsFound": "Taslak model bulunamadı. Lütfen LM Studio'nun Sunucu Modu etkinken çalıştığından emin olun.", - "description": "LM Studio, modelleri bilgisayarınızda yerel olarak çalıştırmanıza olanak tanır. Başlamak için hızlı başlangıç kılavuzlarına bakın. Bu uzantıyla kullanmak için LM Studio'nun yerel sunucu özelliğini de başlatmanız gerekecektir. Not: Roo Code karmaşık istemler kullanır ve Claude modelleriyle en iyi şekilde çalışır. Daha az yetenekli modeller beklendiği gibi çalışmayabilir." + "description": "LM Studio, modelleri bilgisayarınızda yerel olarak çalıştırmanıza olanak tanır. Başlamak için hızlı başlangıç kılavuzlarına bakın. Bu uzantıyla kullanmak için LM Studio'nun yerel sunucu özelliğini de başlatmanız gerekecektir. Not: Zoo Code karmaşık istemler kullanır ve Claude modelleriyle en iyi şekilde çalışır. Daha az yetenekli modeller beklendiği gibi çalışmayabilir." }, "ollama": { "baseUrl": "Temel URL (İsteğe bağlı)", @@ -466,11 +466,7 @@ "numCtx": "Bağlam Penceresi Boyutu (num_ctx)", "numCtxHelp": "Modelin varsayılan bağlam penceresi boyutunu geçersiz kılar. Modelin Modelfile yapılandırmasını kullanmak için boş bırakın. Minimum değer 128'dir.", "description": "Ollama, modelleri bilgisayarınızda yerel olarak çalıştırmanıza olanak tanır. Başlamak için hızlı başlangıç kılavuzlarına bakın.", - "warning": "Not: Roo Code karmaşık istemler kullanır ve Claude modelleriyle en iyi şekilde çalışır. Daha az yetenekli modeller beklendiği gibi çalışmayabilir." - }, - "roo": { - "authenticatedMessage": "Roo Code Cloud hesabın üzerinden güvenli bir şekilde kimlik doğrulandı.", - "connectButton": "Roo Code Cloud'a Bağlan" + "warning": "Not: Zoo Code karmaşık istemler kullanır ve Claude modelleriyle en iyi şekilde çalışır. Daha az yetenekli modeller beklendiği gibi çalışmayabilir." }, "openRouter": { "providerRouting": { @@ -480,7 +476,7 @@ } }, "customModel": { - "capabilities": "Özel OpenAI uyumlu modelinizin yeteneklerini ve fiyatlandırmasını yapılandırın. Model yeteneklerini belirtirken dikkatli olun, çünkü bunlar Roo Code'un performansını etkileyebilir.", + "capabilities": "Özel OpenAI uyumlu modelinizin yeteneklerini ve fiyatlandırmasını yapılandırın. Model yeteneklerini belirtirken dikkatli olun, çünkü bunlar Zoo Code'un performansını etkileyebilir.", "maxTokens": { "label": "Maksimum Çıktı Token'ları", "description": "Modelin bir yanıtta üretebileceği maksimum token sayısı. (Sunucunun maksimum token'ları ayarlamasına izin vermek için -1 belirtin.)" @@ -527,7 +523,7 @@ }, "consecutiveMistakeLimit": { "label": "Hata ve Tekrar Limiti", - "description": "'Roo sorun yaşıyor' iletişim kutusunu göstermeden önceki ardışık hata veya tekrarlanan eylem sayısı. Bu güvenlik mekanizmasını devre dışı bırakmak için 0 olarak ayarlayın (asla tetiklenmez).", + "description": "'Zoo sorun yaşıyor' iletişim kutusunu göstermeden önceki ardışık hata veya tekrarlanan eylem sayısı. Bu güvenlik mekanizmasını devre dışı bırakmak için 0 olarak ayarlayın (asla tetiklenmez).", "unlimitedDescription": "Sınırsız yeniden deneme etkin (otomatik devam et). Diyalog asla görünmeyecek.", "warning": "⚠️ 0'a ayarlamak, önemli API kullanımına neden olabilecek sınırsız yeniden denemeye izin verir" }, @@ -563,18 +559,18 @@ }, "enable": { "label": "Otomatik kontrol noktalarını etkinleştir", - "description": "Etkinleştirildiğinde, Roo görev yürütme sırasında otomatik olarak kontrol noktaları oluşturarak değişiklikleri gözden geçirmeyi veya önceki durumlara dönmeyi kolaylaştırır. <0>Daha fazla bilgi" + "description": "Etkinleştirildiğinde, Zoo görev yürütme sırasında otomatik olarak kontrol noktaları oluşturarak değişiklikleri gözden geçirmeyi veya önceki durumlara dönmeyi kolaylaştırır. <0>Daha fazla bilgi" } }, "notifications": { "sound": { "label": "Ses efektlerini etkinleştir", - "description": "Etkinleştirildiğinde, Roo bildirimler ve olaylar için ses efektleri çalacaktır.", + "description": "Etkinleştirildiğinde, Zoo bildirimler ve olaylar için ses efektleri çalacaktır.", "volumeLabel": "Ses Düzeyi" }, "tts": { "label": "Metinden sese özelliğini etkinleştir", - "description": "Etkinleştirildiğinde, Roo yanıtlarını metinden sese teknolojisi kullanarak sesli okuyacaktır.", + "description": "Etkinleştirildiğinde, Zoo yanıtlarını metinden sese teknolojisi kullanarak sesli okuyacaktır.", "speedLabel": "Hız" } }, @@ -582,7 +578,7 @@ "description": "Yapay zekanın bağlam penceresine hangi bilgilerin dahil edileceğini kontrol edin, token kullanımını ve yanıt kalitesini etkiler", "autoCondenseContextPercent": { "label": "Akıllı bağlam sıkıştırmayı tetikleyecek eşik", - "description": "Bağlam penceresi bu eşiğe ulaştığında, Roo otomatik olarak sıkıştıracaktır." + "description": "Bağlam penceresi bu eşiğe ulaştığında, Zoo otomatik olarak sıkıştıracaktır." }, "condensingApiConfiguration": { "label": "Bağlam Yoğunlaştırma için API Yapılandırması", @@ -598,7 +594,7 @@ }, "autoCondenseContext": { "name": "Akıllı bağlam sıkıştırmayı otomatik olarak tetikle", - "description": "Etkinleştirildiğinde, Roo eşiğe ulaşıldığında bağlamı otomatik olarak sıkıştırır. Devre dışı bırakıldığında, bağlam sıkıştırmayı hala manuel olarak tetikleyebilirsiniz." + "description": "Etkinleştirildiğinde, Zoo eşiğe ulaşıldığında bağlamı otomatik olarak sıkıştırır. Devre dışı bırakıldığında, bağlam sıkıştırmayı hala manuel olarak tetikleyebilirsiniz." }, "openTabs": { "label": "Açık sekmeler bağlam sınırı", @@ -614,7 +610,7 @@ }, "maxReadFile": { "label": "Dosya okuma otomatik kısaltma eşiği", - "description": "Model başlangıç/bitiş değerlerini belirtmediğinde Roo bu sayıda satırı okur. Bu sayı dosyanın toplam satır sayısından azsa, Roo kod tanımlamalarının satır numarası dizinini oluşturur. Özel durumlar: -1, Roo'ya tüm dosyayı okumasını (dizinleme olmadan), 0 ise hiç satır okumamasını ve minimum bağlam için yalnızca satır dizinleri sağlamasını belirtir. Düşük değerler başlangıç bağlam kullanımını en aza indirir ve sonraki hassas satır aralığı okumalarına olanak tanır. Açık başlangıç/bitiş istekleri bu ayarla sınırlı değildir.", + "description": "Model başlangıç/bitiş değerlerini belirtmediğinde Zoo bu sayıda satırı okur. Bu sayı dosyanın toplam satır sayısından azsa, Zoo kod tanımlamalarının satır numarası dizinini oluşturur. Özel durumlar: -1, Zoo'ya tüm dosyayı okumasını (dizinleme olmadan), 0 ise hiç satır okumamasını ve minimum bağlam için yalnızca satır dizinleri sağlamasını belirtir. Düşük değerler başlangıç bağlam kullanımını en aza indirir ve sonraki hassas satır aralığı okumalarına olanak tanır. Açık başlangıç/bitiş istekleri bu ayarla sınırlı değildir.", "lines": "satır", "always_full_read": "Her zaman tüm dosyayı oku" }, @@ -685,15 +681,15 @@ }, "outputLineLimit": { "label": "Terminal çıktı sınırı", - "description": "Sınırın altında kalmak için ilk ve son satırları tutar ve ortadakileri atar. Jetonları kaydetmek için düşürün; Roo'ya daha fazla orta ayrıntı vermek için yükseltin. Roo, içeriğin atlandığı yerde bir yer tutucu görür.<0>Daha fazla bilgi edinin" + "description": "Sınırın altında kalmak için ilk ve son satırları tutar ve ortadakileri atar. Jetonları kaydetmek için düşürün; Zoo'ya daha fazla orta ayrıntı vermek için yükseltin. Zoo, içeriğin atlandığı yerde bir yer tutucu görür.<0>Daha fazla bilgi edinin" }, "outputCharacterLimit": { "label": "Terminal karakter sınırı", - "description": "Çıktı boyutuna katı bir üst sınır uygulayarak bellek sorunlarını önlemek için satır sınırını geçersiz kılar. Aşılırsa, başlangıcı ve sonu tutar ve içeriğin atlandığı yerde Roo'ya bir yer tutucu gösterir. <0>Daha fazla bilgi edinin" + "description": "Çıktı boyutuna katı bir üst sınır uygulayarak bellek sorunlarını önlemek için satır sınırını geçersiz kılar. Aşılırsa, başlangıcı ve sonu tutar ve içeriğin atlandığı yerde Zoo'ya bir yer tutucu gösterir. <0>Daha fazla bilgi edinin" }, "outputPreviewSize": { "label": "Komut çıktısı önizleme boyutu", - "description": "Roo'nun doğrudan gördüğü komut çıktısı miktarını kontrol eder. Tam çıktı her zaman kaydedilir ve gerektiğinde erişilebilir.", + "description": "Zoo'nun doğrudan gördüğü komut çıktısı miktarını kontrol eder. Tam çıktı her zaman kaydedilir ve gerektiğinde erişilebilir.", "options": { "small": "Küçük (5KB)", "medium": "Orta (10KB)", @@ -706,7 +702,7 @@ }, "shellIntegrationDisabled": { "label": "Satır İçi Terminal Kullan (önerilir)", - "description": "Daha hızlı, daha güvenilir çalıştırmalar için kabuk profillerini/entegrasyonunu atlamak için Satır İçi Terminal'de (sohbet) komutları çalıştırın. Devre dışı bırakıldığında Roo, kabuk profiliniz, istemleriniz ve eklentilerinizle VS Code terminalini kullanır. <0>Daha fazla bilgi edinin" + "description": "Daha hızlı, daha güvenilir çalıştırmalar için kabuk profillerini/entegrasyonunu atlamak için Satır İçi Terminal'de (sohbet) komutları çalıştırın. Devre dışı bırakıldığında Zoo, kabuk profiliniz, istemleriniz ve eklentilerinizle VS Code terminalini kullanır. <0>Daha fazla bilgi edinin" }, "commandDelay": { "label": "Terminal komut delay", @@ -743,7 +739,7 @@ "advanced": { "diff": { "label": "Diff'ler aracılığıyla düzenlemeyi etkinleştir", - "description": "Etkinleştirildiğinde, Roo dosyaları daha hızlı düzenleyebilecek ve kesik tam dosya yazımlarını otomatik olarak reddedecektir", + "description": "Etkinleştirildiğinde, Zoo dosyaları daha hızlı düzenleyebilecek ve kesik tam dosya yazımlarını otomatik olarak reddedecektir", "strategy": { "label": "Diff stratejisi", "options": { @@ -760,7 +756,7 @@ }, "todoList": { "label": "Yapılacaklar listesi aracını etkinleştir", - "description": "Etkinleştirildiğinde, Roo görev ilerlemesini takip etmek için yapılacaklar listeleri oluşturabilir ve yönetebilir. Bu, karmaşık görevleri yönetilebilir adımlara organize etmeye yardımcı olur." + "description": "Etkinleştirildiğinde, Zoo görev ilerlemesini takip etmek için yapılacaklar listeleri oluşturabilir ve yönetebilir. Bu, karmaşık görevleri yönetilebilir adımlara organize etmeye yardımcı olur." } }, "experimental": { @@ -770,15 +766,15 @@ }, "INSERT_BLOCK": { "name": "Deneysel içerik ekleme aracını kullan", - "description": "Deneysel içerik ekleme aracını etkinleştir, Roo'nun bir diff oluşturma gereği duymadan belirli satır numaralarına içerik eklemesine olanak tanır." + "description": "Deneysel içerik ekleme aracını etkinleştir, Zoo'nun bir diff oluşturma gereği duymadan belirli satır numaralarına içerik eklemesine olanak tanır." }, "MULTI_SEARCH_AND_REPLACE": { "name": "Deneysel çoklu blok diff aracını kullan", - "description": "Etkinleştirildiğinde, Roo çoklu blok diff aracını kullanacaktır. Bu, tek bir istekte dosyadaki birden fazla kod bloğunu güncellemeye çalışacaktır." + "description": "Etkinleştirildiğinde, Zoo çoklu blok diff aracını kullanacaktır. Bu, tek bir istekte dosyadaki birden fazla kod bloğunu güncellemeye çalışacaktır." }, "CONCURRENT_FILE_READS": { "name": "Eşzamanlı dosya okumayı etkinleştir", - "description": "Etkinleştirildiğinde, Roo tek bir istekte birden fazla dosya okuyabilir. Devre dışı bırakıldığında, Roo dosyaları birer birer okumalıdır. Daha az yetenekli modellerle çalışırken veya dosya erişimi üzerinde daha fazla kontrol istediğinizde devre dışı bırakmak yardımcı olabilir." + "description": "Etkinleştirildiğinde, Zoo tek bir istekte birden fazla dosya okuyabilir. Devre dışı bırakıldığında, Zoo dosyaları birer birer okumalıdır. Daha az yetenekli modellerle çalışırken veya dosya erişimi üzerinde daha fazla kontrol istediğinizde devre dışı bırakmak yardımcı olabilir." }, "MARKETPLACE": { "name": "Marketplace'i Etkinleştir", @@ -786,7 +782,7 @@ }, "PREVENT_FOCUS_DISRUPTION": { "name": "Arka plan düzenleme", - "description": "Etkinleştirildiğinde editör odak kesintisini önler. Dosya düzenlemeleri diff görünümlerini açmadan veya odağı çalmadan arka planda gerçekleşir. Roo değişiklikler yaparken kesintisiz çalışmaya devam edebilirsiniz. Dosyalar tanılamayı yakalamak için odaksız açılabilir veya tamamen kapalı kalabilir." + "description": "Etkinleştirildiğinde editör odak kesintisini önler. Dosya düzenlemeleri diff görünümlerini açmadan veya odağı çalmadan arka planda gerçekleşir. Zoo değişiklikler yaparken kesintisiz çalışmaya devam edebilirsiniz. Dosyalar tanılamayı yakalamak için odaksız açılabilir veya tamamen kapalı kalabilir." }, "ASSISTANT_MESSAGE_PARSER": { "name": "Yeni mesaj ayrıştırıcıyı kullan", @@ -800,7 +796,7 @@ "providerLabel": "Sağlayıcı", "providerDescription": "Görüntü oluşturma için kullanılacak sağlayıcıyı seçin.", "name": "AI görüntü üretimini etkinleştir", - "description": "Etkinleştirildiğinde, Roo OpenRouter'ın görüntü üretim modellerini kullanarak metin istemlerinden görüntüler üretebilir. Yapılandırılmış bir OpenRouter API anahtarı gerektirir.", + "description": "Etkinleştirildiğinde, Zoo OpenRouter'ın görüntü üretim modellerini kullanarak metin istemlerinden görüntüler üretebilir. Yapılandırılmış bir OpenRouter API anahtarı gerektirir.", "openRouterApiKeyLabel": "OpenRouter API Anahtarı", "openRouterApiKeyPlaceholder": "OpenRouter API anahtarınızı girin", "getApiKeyText": "API anahtarınızı alın", @@ -811,11 +807,11 @@ }, "RUN_SLASH_COMMAND": { "name": "Model tarafından başlatılan slash komutlarını etkinleştir", - "description": "Etkinleştirildiğinde, Roo iş akışlarını yürütmek için slash komutlarınızı çalıştırabilir." + "description": "Etkinleştirildiğinde, Zoo iş akışlarını yürütmek için slash komutlarınızı çalıştırabilir." }, "CUSTOM_TOOLS": { "name": "Özel araçları etkinleştir", - "description": "Etkinleştirildiğinde, Roo projenizin .roo/tools dizininden veya global araçlar için ~/.roo/tools dizininden özel TypeScript/JavaScript araçlarını yükleyebilir ve kullanabilir. Not: Bu araçlar otomatik olarak onaylanacaktır.", + "description": "Etkinleştirildiğinde, Zoo projenizin .roo/tools dizininden veya global araçlar için ~/.roo/tools dizininden özel TypeScript/JavaScript araçlarını yükleyebilir ve kullanabilir. Not: Bu araçlar otomatik olarak onaylanacaktır.", "toolsHeader": "Kullanılabilir Özel Araçlar", "noTools": "Özel araç yüklenmedi. Projenizin .roo/tools dizinine veya global araçlar için ~/.roo/tools dizinine .ts veya .js dosyaları ekleyin.", "refreshButton": "Yenile", @@ -827,7 +823,7 @@ }, "promptCaching": { "label": "Prompt önbelleğini devre dışı bırak", - "description": "İşaretlendiğinde, Roo bu model için prompt önbelleğini kullanmayacaktır." + "description": "İşaretlendiğinde, Zoo bu model için prompt önbelleğini kullanmayacaktır." }, "temperature": { "useCustom": "Özel sıcaklık kullan", @@ -857,7 +853,7 @@ } }, "modelPicker": { - "automaticFetch": "Uzantı {{serviceName}} üzerinde bulunan mevcut modellerin en güncel listesini otomatik olarak alır. Hangi modeli seçeceğinizden emin değilseniz, Roo Code {{defaultModelId}} ile en iyi şekilde çalışır. Şu anda mevcut olan ücretsiz seçenekleri bulmak için \"free\" araması da yapabilirsiniz.", + "automaticFetch": "Uzantı {{serviceName}} üzerinde bulunan mevcut modellerin en güncel listesini otomatik olarak alır. Hangi modeli seçeceğinizden emin değilseniz, Zoo Code {{defaultModelId}} ile en iyi şekilde çalışır. Şu anda mevcut olan ücretsiz seçenekleri bulmak için \"free\" araması da yapabilirsiniz.", "label": "Model", "searchPlaceholder": "Ara", "noMatchFound": "Eşleşme bulunamadı", @@ -867,7 +863,7 @@ "footer": { "telemetry": { "label": "Anonim hata ve kullanım raporlamaya izin ver", - "description": "Anonim kullanım verileri ve hata raporları göndererek Roo Code'u geliştirmeye yardım edin. Bu telemetri kod, prompt veya kişisel bilgi toplamaz. Daha fazla ayrıntı için gizlilik politikamıza bakın. Bunu istediğiniz zaman kapatabilirsiniz." + "description": "Anonim kullanım verileri ve hata raporları göndererek Zoo Code'u geliştirmeye yardım edin. Bu telemetri kod, prompt veya kişisel bilgi toplamaz. Daha fazla ayrıntı için gizlilik politikamıza bakın. Bunu istediğiniz zaman kapatabilirsiniz." }, "settings": { "import": "İçe Aktar", diff --git a/webview-ui/src/i18n/locales/tr/welcome.json b/webview-ui/src/i18n/locales/tr/welcome.json index 5415021b967..72b4bba12b2 100644 --- a/webview-ui/src/i18n/locales/tr/welcome.json +++ b/webview-ui/src/i18n/locales/tr/welcome.json @@ -1,52 +1,18 @@ { - "routers": { - "requesty": { - "description": "Optimize edilmiş LLM yönlendiriciniz", - "incentive": "$1 ücretsiz kredi" - }, - "openrouter": { - "description": "LLM'ler için birleşik bir arayüz" - }, - "roo": { - "description": "Başlamak için en iyi ücretsiz modeller", - "incentive": "Roo'yu ücretsiz dene" - } - }, "landing": { "greeting": "Roo Code'a Hoş Geldin!", "introduction": "Yerleşik ve genişletilebilir Modlar yelpazesiyle Roo Code, daha önce hiç olmadığı gibi planlama, mimari tasarım, kodlama, hata ayıklama ve üretkenliğini artırmanı sağlar.", - "accountMention": "Başlamak için Roo Code Cloud hesabını oluştur. Güçlü modeller, web kontrolü, analizler, destek ve daha fazlasını al.", - "getStarted": "Roo Hesabı Oluştur", - "noAccount": "veya hesap olmadan kullan" + "getStarted": "Sağlayıcınızı seçin" }, "providerSignup": { "heading": "Sağlayıcınızı seçin", "chooseProvider": "Roo'nun çalışması için bir LLM sağlayıcısına ihtiyacı var. Başlamak için bir tane seç, sonra daha fazlasını ekleyebilirsin.", - "rooCloudProvider": "Roo Code Cloud Sağlayıcı", - "rooCloudDescription": "Başlamak için en kolay yol Roo Code Cloud Sağlayıcısı'nı kullanmaktır: ücretsiz ve ücretli modellerin dikkatli seçilmiş bir karışımı, düşük maliyette.", - "learnMore": "Daha fazla bilgi", - "useAnotherProvider": "Üçüncü taraf Sağlayıcı", - "useAnotherProviderDescription": "Bir API anahtarı gir ve başla.", - "noApiKeys": "API anahtarları ve ayrı hesaplarla uğraşmak istemez misin?", - "backToRoo": "Roo Code Cloud Sağlayıcısını seç.", "goBack": "Geri", "finish": "Bitir" }, - "waitingForCloud": { - "heading": "Roo Code Cloud'a giriş yapılıyor...", - "description": "Seni Roo Code Cloud'a kaydolmak için tarayıcına göndereceğiz. Sonra seni buraya geri getireceğiz.", - "noPrompt": "Bir URL açmanız istenmezse, buraya tıklayın.", - "havingTrouble": "Kaydı tamamladıysanız ama sorun yaşıyorsanız, buraya tıklayın.", - "pasteUrl": "Tarayıcınızda gösterilen geri arama URL'sini yapıştırın:", - "docsLink": "Çalışmıyor mu? Belgeleri kontrol edin.", - "invalidURL": "Bu geçerli bir geri arama URL'si gibi görünmüyor. Roo Code Cloud'un tarayıcınızda gösterdiğini kopyalayın.", - "goBack": "Geri" - }, - "startRouter": "Bir LLM yönlendiricisi kullanmanızı öneririz:", - "startCustom": "Veya kendi API anahtarınızı getirebilirsiniz:", "telemetry": { - "helpImprove": "Roo Code'u iyileştirmeye yardımcı ol", - "helpImproveMessage": "Roo Code, hataları düzeltmemize ve uzantıyı iyileştirmemize yardımcı olmak için hata ve kullanım verilerini toplar. Bu telemetri kod, komutlar veya kişisel bilgileri toplamaz. Bunu ayarlardan devre dışı bırakabilirsin." + "helpImprove": "Zoo Code'u iyileştirmeye yardımcı ol", + "helpImproveMessage": "Zoo Code, hataları düzeltmemize ve uzantıyı iyileştirmemize yardımcı olmak için hata ve kullanım verilerini toplar. Bu telemetri kod, komutlar veya kişisel bilgileri toplamaz. Bunu ayarlardan devre dışı bırakabilirsin." }, "importSettings": "Ayarları İçe Aktar" } diff --git a/webview-ui/src/i18n/locales/tr/worktrees.json b/webview-ui/src/i18n/locales/tr/worktrees.json index 50e5a3ba827..dfd3b64aa06 100644 --- a/webview-ui/src/i18n/locales/tr/worktrees.json +++ b/webview-ui/src/i18n/locales/tr/worktrees.json @@ -1,28 +1,23 @@ { "title": "Worktrees", "done": "Tamam", - "description": "Git worktrees, ayrı dizinlerde aynı anda birden fazla branch üzerinde çalışmana olanak tanır. Her worktree, Roo Code ile kendi VS Code penceresine sahip olur.", - + "description": "Git worktrees, ayrı dizinlerde aynı anda birden fazla branch üzerinde çalışmana olanak tanır. Her worktree, Zoo Code ile kendi VS Code penceresine sahip olur.", "notGitRepo": "Bu çalışma alanı bir Git deposu değil. Worktrees'in çalışması için bir Git deposu gerekir.", "multiRootNotSupported": "Worktrees, multi-root çalışma alanlarında desteklenmez. Worktrees kullanmak için tek bir klasör aç.", "subfolderNotSupported": "Bu çalışma alanı bir Git deposunun alt klasörü. Worktrees kullanmak için deponun kökünü aç.", "gitRoot": "Git kökü", - "includeFileExists": ".worktreeinclude dosyası bulundu — dosyalar yeni worktrees'e kopyalanacak", "noIncludeFile": ".worktreeinclude dosyası bulunamadı", "createFromGitignore": ".gitignore'dan oluştur", - "primary": "Birincil", "current": "Mevcut", "locked": "Kilitli", "detachedHead": "Detached HEAD", "noBranch": "Branch yok", - "switchInThisWindow": "Worktree'ye geç", "openInNewWindow": "Yeni pencerede aç", "delete": "Sil", "newWorktree": "Yeni Worktree", - "createWorktree": "Worktree oluştur", "branchName": "Branch adı", "createNewBranch": "Yeni branch oluştur", @@ -44,7 +39,6 @@ "copyingFiles": "Dosyalar kopyalanıyor...", "copyingProgress": "{{item}} — {{copied}} kopyalandı", "cancel": "İptal", - "deleteWorktree": "Worktree'yi sil", "deleteWarning": "Bu işlem geri alınamaz. Şunlar silinecek:", "deleteWarningBranch": "Branch'i ve commit edilmemiş tüm değişiklikler", @@ -53,11 +47,8 @@ "forceDelete": "Silmeye zorla", "worktreeIsLocked": "worktree kilitli", "deleting": "Siliniyor...", - "close": "Kapat", - "showInHomeScreen": "Ana ekranda worktrees göster", - "selector": { "worktree": "Worktree", "title": "Worktrees", diff --git a/webview-ui/src/i18n/locales/vi/chat.json b/webview-ui/src/i18n/locales/vi/chat.json index 1e82396685d..9226bb69e11 100644 --- a/webview-ui/src/i18n/locales/vi/chat.json +++ b/webview-ui/src/i18n/locales/vi/chat.json @@ -1,5 +1,5 @@ { - "greeting": "Chào mừng đến với Roo Code", + "greeting": "Chào mừng đến với Zoo Code!", "task": { "title": "Nhiệm vụ", "expand": "Mở rộng nhiệm vụ", @@ -15,16 +15,6 @@ "export": "Xuất lịch sử nhiệm vụ", "delete": "Xóa nhiệm vụ (Shift + Click để bỏ qua xác nhận)", "condenseContext": "Cô đọng ngữ cảnh thông minh", - "share": "Chia sẻ nhiệm vụ", - "shareWithOrganization": "Chia sẻ với tổ chức", - "shareWithOrganizationDescription": "Chỉ thành viên tổ chức của bạn mới có thể truy cập", - "sharePublicly": "Chia sẻ công khai", - "sharePubliclyDescription": "Bất kỳ ai có liên kết đều có thể truy cập", - "connectToCloud": "Kết nối với Cloud", - "connectToCloudDescription": "Đăng nhập vào Roo Code Cloud để chia sẻ tác vụ", - "sharingDisabledByOrganization": "Chia sẻ bị tổ chức vô hiệu hóa", - "shareSuccessOrganization": "Liên kết tổ chức đã được sao chép vào clipboard", - "shareSuccessPublic": "Liên kết công khai đã được sao chép vào clipboard", "openApiHistory": "Mở lịch sử API", "openUiHistory": "Mở lịch sử UI", "backToParentTask": "Nhiệm vụ cha" @@ -98,7 +88,7 @@ "enqueueMessage": "Thêm tin nhắn vào hàng đợi (sẽ gửi sau khi nhiệm vụ hiện tại hoàn tất)", "scrollToBottom": "Cuộn xuống cuối cuộc trò chuyện", "scrollToLatestCheckpoint": "Cuộn đến checkpoint trước đó", - "about": "Roo Code là một đội ngũ phát triển AI đầy đủ trong trình chỉnh sửa của bạn.", + "about": "Zoo Code là một đội ngũ phát triển AI đầy đủ trong trình chỉnh sửa của bạn.", "docs": "Kiểm tra tài liệu của chúng tôi để tìm hiểu thêm.", "onboarding": "Danh sách nhiệm vụ của bạn trong không gian làm việc này đang trống.", "rooTips": { @@ -130,7 +120,7 @@ "title": "Chế độ", "marketplace": "Chợ Chế độ", "settings": "Cài đặt Chế độ", - "description": "Các nhân cách chuyên biệt điều chỉnh hành vi của Roo.", + "description": "Các nhân cách chuyên biệt điều chỉnh hành vi của Zoo.", "searchPlaceholder": "Tìm kiếm chế độ...", "noResults": "Không tìm thấy kết quả nào" }, @@ -144,7 +134,7 @@ "diffError": { "title": "Chỉnh sửa không thành công" }, - "troubleMessage": "Roo đang gặp sự cố...", + "troubleMessage": "Zoo đang gặp sự cố...", "apiRequest": { "title": "Yêu cầu API", "failed": "Yêu cầu API thất bại", @@ -162,7 +152,7 @@ "500": "Lỗi máy chủ của nhà cung cấp. Có sự cố ở phía nhà cung cấp, không có gì sai với yêu cầu của bạn.", "docs": "Tài liệu", "goToSettings": "Cài đặt", - "unknown": "Lỗi API không xác định. Vui lòng liên hệ hỗ trợ Roo Code.", + "unknown": "Lỗi API không xác định. Vui lòng liên hệ bộ phận hỗ trợ Zoo Code.", "connection": "Lỗi kết nối. Đảm bảo rằng bạn có kết nối Internet hoạt động.", "claudeCodeNotAuthenticated": "Bạn cần đăng nhập để sử dụng Claude Code. Vào Cài đặt và nhấp vào \"Đăng nhập vào Claude Code\" để xác thực." } @@ -190,40 +180,40 @@ "wantsToFetch": "Roo muốn lấy hướng dẫn chi tiết để hỗ trợ nhiệm vụ hiện tại" }, "fileOperations": { - "wantsToRead": "Roo muốn đọc tệp này", - "wantsToReadOutsideWorkspace": "Roo muốn đọc tệp này bên ngoài không gian làm việc", - "didRead": "Roo đã đọc tệp này", - "wantsToEdit": "Roo muốn chỉnh sửa tệp này", - "wantsToEditOutsideWorkspace": "Roo muốn chỉnh sửa tệp này bên ngoài không gian làm việc", - "wantsToEditProtected": "Roo muốn chỉnh sửa tệp cấu hình được bảo vệ", - "wantsToCreate": "Roo muốn tạo một tệp mới", + "wantsToRead": "Zoo muốn đọc tệp này", + "wantsToReadOutsideWorkspace": "Zoo muốn đọc tệp này bên ngoài không gian làm việc", + "didRead": "Zoo đã đọc tệp này", + "wantsToEdit": "Zoo muốn chỉnh sửa tệp này", + "wantsToEditOutsideWorkspace": "Zoo muốn chỉnh sửa tệp này bên ngoài không gian làm việc", + "wantsToEditProtected": "Zoo muốn chỉnh sửa tệp cấu hình được bảo vệ", + "wantsToCreate": "Zoo muốn tạo một tệp mới", "wantsToSearchReplace": "Roo muốn thực hiện tìm kiếm và thay thế trong tệp này", "didSearchReplace": "Roo đã thực hiện tìm kiếm và thay thế trong tệp này", - "wantsToInsert": "Roo muốn chèn nội dung vào tệp này", - "wantsToInsertWithLineNumber": "Roo muốn chèn nội dung vào dòng {{lineNumber}} của tệp này", - "wantsToInsertAtEnd": "Roo muốn thêm nội dung vào cuối tệp này", - "wantsToReadAndXMore": "Roo muốn đọc tệp này và {{count}} tệp khác", - "wantsToReadMultiple": "Roo muốn đọc nhiều tệp", - "wantsToApplyBatchChanges": "Roo muốn áp dụng thay đổi cho nhiều tệp", - "wantsToGenerateImage": "Roo muốn tạo một hình ảnh", - "wantsToGenerateImageOutsideWorkspace": "Roo muốn tạo hình ảnh bên ngoài không gian làm việc", - "wantsToGenerateImageProtected": "Roo muốn tạo hình ảnh ở vị trí được bảo vệ", - "didGenerateImage": "Roo đã tạo một hình ảnh" + "wantsToInsert": "Zoo muốn chèn nội dung vào tệp này", + "wantsToInsertWithLineNumber": "Zoo muốn chèn nội dung vào dòng {{lineNumber}} của tệp này", + "wantsToInsertAtEnd": "Zoo muốn thêm nội dung vào cuối tệp này", + "wantsToReadAndXMore": "Zoo muốn đọc tệp này và {{count}} tệp khác", + "wantsToReadMultiple": "Zoo muốn đọc nhiều tệp", + "wantsToApplyBatchChanges": "Zoo muốn áp dụng thay đổi cho nhiều tệp", + "wantsToGenerateImage": "Zoo muốn tạo một hình ảnh", + "wantsToGenerateImageOutsideWorkspace": "Zoo muốn tạo hình ảnh bên ngoài không gian làm việc", + "wantsToGenerateImageProtected": "Zoo muốn tạo hình ảnh ở vị trí được bảo vệ", + "didGenerateImage": "Zoo đã tạo một hình ảnh" }, "directoryOperations": { - "wantsToViewTopLevel": "Roo muốn xem các tệp cấp cao nhất trong thư mục này", - "didViewTopLevel": "Roo đã xem các tệp cấp cao nhất trong thư mục này", - "wantsToViewRecursive": "Roo muốn xem đệ quy tất cả các tệp trong thư mục này", - "didViewRecursive": "Roo đã xem đệ quy tất cả các tệp trong thư mục này", - "wantsToSearch": "Roo muốn tìm kiếm trong thư mục này cho {{regex}}", - "didSearch": "Roo đã tìm kiếm trong thư mục này cho {{regex}}", - "wantsToSearchOutsideWorkspace": "Roo muốn tìm kiếm trong thư mục này (ngoài không gian làm việc) cho {{regex}}", - "didSearchOutsideWorkspace": "Roo đã tìm kiếm trong thư mục này (ngoài không gian làm việc) cho {{regex}}", - "wantsToViewTopLevelOutsideWorkspace": "Roo muốn xem các tệp cấp cao nhất trong thư mục này (ngoài không gian làm việc)", - "didViewTopLevelOutsideWorkspace": "Roo đã xem các tệp cấp cao nhất trong thư mục này (ngoài không gian làm việc)", - "wantsToViewRecursiveOutsideWorkspace": "Roo muốn xem đệ quy tất cả các tệp trong thư mục này (ngoài không gian làm việc)", - "didViewRecursiveOutsideWorkspace": "Roo đã xem đệ quy tất cả các tệp trong thư mục này (ngoài không gian làm việc)", - "wantsToViewMultipleDirectories": "Roo muốn xem nhiều thư mục" + "wantsToViewTopLevel": "Zoo muốn xem các tệp cấp cao nhất trong thư mục này", + "didViewTopLevel": "Zoo đã xem các tệp cấp cao nhất trong thư mục này", + "wantsToViewRecursive": "Zoo muốn xem đệ quy tất cả các tệp trong thư mục này", + "didViewRecursive": "Zoo đã xem đệ quy tất cả các tệp trong thư mục này", + "wantsToSearch": "Zoo muốn tìm kiếm trong thư mục này cho {{regex}}", + "didSearch": "Zoo đã tìm kiếm trong thư mục này cho {{regex}}", + "wantsToSearchOutsideWorkspace": "Zoo muốn tìm kiếm trong thư mục này (ngoài không gian làm việc) cho {{regex}}", + "didSearchOutsideWorkspace": "Zoo đã tìm kiếm trong thư mục này (ngoài không gian làm việc) cho {{regex}}", + "wantsToViewTopLevelOutsideWorkspace": "Zoo muốn xem các tệp cấp cao nhất trong thư mục này (ngoài không gian làm việc)", + "didViewTopLevelOutsideWorkspace": "Zoo đã xem các tệp cấp cao nhất trong thư mục này (ngoài không gian làm việc)", + "wantsToViewRecursiveOutsideWorkspace": "Zoo muốn xem đệ quy tất cả các tệp trong thư mục này (ngoài không gian làm việc)", + "didViewRecursiveOutsideWorkspace": "Zoo đã xem đệ quy tất cả các tệp trong thư mục này (ngoài không gian làm việc)", + "wantsToViewMultipleDirectories": "Zoo muốn xem nhiều thư mục" }, "commandOutput": "Kết quả lệnh", "commandExecution": { @@ -246,24 +236,24 @@ "response": "Phản hồi", "arguments": "Tham số", "text": { - "rooSaid": "Roo đã nói" + "rooSaid": "Zoo đã nói" }, "feedback": { "youSaid": "Bạn đã nói" }, "mcp": { - "wantsToUseTool": "Roo muốn sử dụng một công cụ trên máy chủ MCP {{serverName}}", - "wantsToAccessResource": "Roo muốn truy cập một tài nguyên trên máy chủ MCP {{serverName}}" + "wantsToUseTool": "Zoo muốn sử dụng một công cụ trên máy chủ MCP {{serverName}}", + "wantsToAccessResource": "Zoo muốn truy cập một tài nguyên trên máy chủ MCP {{serverName}}" }, "modes": { - "wantsToSwitch": "Roo muốn chuyển sang chế độ {{mode}}", - "wantsToSwitchWithReason": "Roo muốn chuyển sang chế độ {{mode}} vì: {{reason}}", - "didSwitch": "Roo đã chuyển sang chế độ {{mode}}", - "didSwitchWithReason": "Roo đã chuyển sang chế độ {{mode}} vì: {{reason}}" + "wantsToSwitch": "Zoo muốn chuyển sang chế độ {{mode}}", + "wantsToSwitchWithReason": "Zoo muốn chuyển sang chế độ {{mode}} vì: {{reason}}", + "didSwitch": "Zoo đã chuyển sang chế độ {{mode}}", + "didSwitchWithReason": "Zoo đã chuyển sang chế độ {{mode}} vì: {{reason}}" }, "subtasks": { - "wantsToCreate": "Roo muốn tạo một nhiệm vụ phụ mới trong chế độ {{mode}}", - "wantsToFinish": "Roo muốn hoàn thành nhiệm vụ phụ này", + "wantsToCreate": "Zoo muốn tạo một nhiệm vụ phụ mới trong chế độ {{mode}}", + "wantsToFinish": "Zoo muốn hoàn thành nhiệm vụ phụ này", "newTaskContent": "Hướng dẫn nhiệm vụ phụ", "completionContent": "Nhiệm vụ phụ đã hoàn thành", "resultContent": "Kết quả nhiệm vụ phụ", @@ -272,7 +262,7 @@ "goToSubtask": "Xem nhiệm vụ" }, "questions": { - "hasQuestion": "Roo có một câu hỏi" + "hasQuestion": "Zoo có một câu hỏi" }, "taskCompleted": "Nhiệm vụ hoàn thành", "modelResponseIncomplete": "Phản hồi của mô hình không đầy đủ", @@ -288,7 +278,7 @@ "copyToClipboard": "Sao chép vào clipboard", "copied": "Đã sao chép!", "diagnostics": "Nhận thông tin lỗi chi tiết", - "proxyProvider": "Có vẻ bạn đang sử dụng nhà cung cấp dựa trên proxy. Hãy chắc chắn kiểm tra các nhật ký của nó và đảm bảo nó không viết lại các yêu cầu của Roo." + "proxyProvider": "Có vẻ bạn đang sử dụng nhà cung cấp dựa trên proxy. Hãy chắc chắn kiểm tra các nhật ký của nó và đảm bảo nó không viết lại các yêu cầu của Zoo." }, "powershell": { "issues": "Có vẻ như bạn đang gặp vấn đề với Windows PowerShell, vui lòng xem" @@ -331,31 +321,24 @@ } }, "skill": { - "wantsToLoad": "Roo muốn tải một kỹ năng", - "didLoad": "Roo đã tải một kỹ năng" + "wantsToLoad": "Zoo muốn tải một kỹ năng", + "didLoad": "Zoo đã tải một kỹ năng" }, "followUpSuggest": { "copyToInput": "Sao chép vào ô nhập liệu (hoặc Shift + nhấp chuột)", "timerPrefix": "Phê duyệt tự động được bật. Chọn trong {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}} Đã phát hành", - "support": "Hãy ủng hộ Roo Code bằng cách gắn sao cho chúng tôi trên GitHub.", - "stealthModel": { - "feature": "Mô hình stealth MIỄN PHÍ có thời hạn - Code Supernova: Hiện đã được nâng cấp với cửa sổ ngữ cảnh 1M token! Một mô hình lập trình agentic đa năng hỗ trợ đầu vào hình ảnh, có sẵn qua Roo Code Cloud.", - "note": "(Lưu ý: các prompt và completion được ghi lại bởi người tạo mô hình và được sử dụng để cải thiện mô hình)", - "connectButton": "Kết nối với Roo Code Cloud", - "selectModel": "Chọn roo/code-supernova từ nhà cung cấp Roo Code Cloud trong Cài đặt để bắt đầu.", - "goToSettingsButton": "Đi tới Cài đặt" - }, + "title": "Zoo Code {{version}} đã phát hành", + "support": "Hãy ủng hộ Zoo Code bằng cách tặng sao cho chúng tôi trên GitHub.", "handoff": { - "heading": "Plugin Roo Code sẽ không biến mất.", - "description": "Bạn có thể đã thấy thông báo gần đây rằng Roo Code đã đạt 3 triệu lượt cài đặt và đội ngũ ban đầu đang dồn toàn lực cho Roomote. Chúng tôi biết rằng tin này thật khó khăn với nhiều bạn. Plugin này có ý nghĩa rất lớn với chúng tôi và với bạn, và chúng tôi lắng nghe bạn. Tin tốt: một đội ngũ từ cộng đồng đã đứng ra tiếp tục đưa Roo Code đi tiếp, và chúng tôi đang làm việc với họ về việc bàn giao chính thức để plugin mà bạn đang tin cậy tiếp tục được bảo trì và cải thiện.", - "readMore": "Đọc thông báo gốc từ Matt Rubens" + "heading": "Zoo Code đã trở lại, giờ là plugin do cộng đồng duy trì với tên gọi Zoo Code!!", + "description": "Nếu bạn chưa theo dõi, đội ngũ Zoo Code gần đây đã thông báo họ sẽ dừng phát triển Zoo Code và lưu trữ lại những gì họ đã xây dựng. Nhưng đừng lo, cộng đồng đã đứng ra tiếp nối di sản của Zoo Code với một cái tên mới và một mái nhà mới! Chúng ta không còn chỉ là một \"Roo\" nữa, mà là cả một cộng đồng, một \"Zoo\" đúng nghĩa. Zoo Code là plugin do cộng đồng duy trì, tiếp nối từ nơi Zoo Code dừng lại, và chúng tôi cam kết giữ vững tinh thần của Roo đồng thời mang đến các tính năng và cải tiến mới. Chúng tôi cũng muốn gửi lời cảm ơn sâu sắc đến toàn bộ đội ngũ Zoo Code vì công sức tuyệt vời của họ và vì đã tạo ra một công cụ tuyệt vời cho các nhà phát triển. Chúng tôi rất háo hức được tiếp tục phát triển trên nền tảng đó và chờ xem cộng đồng sẽ đưa Zoo Code tiến xa đến đâu trong tương lai!", + "readMore": "Xem trang chủ mới của Zoo Code và đọc toàn bộ thông báo" }, "release": { "heading": "Tính năng mới:", - "gpt55": "GPT-5.5 qua OpenAI Codex: Đã thêm hỗ trợ GPT-5.5 trong nhà cung cấp OpenAI Codex để bạn có thể sử dụng model mới nhất trực tiếp từ Roo Code.", + "gpt55": "GPT-5.5 qua OpenAI Codex: Đã thêm hỗ trợ GPT-5.5 trong nhà cung cấp OpenAI Codex để bạn có thể dùng model mới nhất trực tiếp từ Zoo Code.", "claudeOpus47": "Claude Opus 4.7 trên Vertex AI: Đã thêm Claude Opus 4.7 vào nhà cung cấp Vertex AI - model reasoning flagship mới nhất của Anthropic.", "checkpointNav": "Điều hướng Checkpoint trước đó: Đã thêm các điều khiển trong chat để quay lại các checkpoint trước, với hỗ trợ i18n đầy đủ." }, @@ -381,24 +364,24 @@ "profileViolationWarning": "Hồ sơ hiện tại không tương thích với cài đặt của tổ chức của bạn", "shellIntegration": { "title": "Cảnh báo thực thi lệnh", - "description": "Lệnh của bạn đang được thực thi mà không có tích hợp shell terminal VSCode. Để ẩn cảnh báo này, bạn có thể vô hiệu hóa tích hợp shell trong phần Terminal của cài đặt Roo Code hoặc khắc phục sự cố tích hợp terminal VSCode bằng liên kết bên dưới.", + "description": "Lệnh của bạn đang được thực thi mà không có tích hợp shell terminal VSCode. Để ẩn cảnh báo này, bạn có thể tắt tích hợp shell trong phần Terminal của cài đặt Zoo Code hoặc khắc phục sự cố tích hợp terminal VSCode bằng liên kết bên dưới.", "troubleshooting": "Nhấp vào đây để xem tài liệu tích hợp shell." }, "ask": { "autoApprovedRequestLimitReached": { "title": "Đã Đạt Giới Hạn Yêu Cầu Tự Động Phê Duyệt", - "description": "Roo đã đạt đến giới hạn tự động phê duyệt là {{count}} yêu cầu API. Bạn có muốn đặt lại bộ đếm và tiếp tục nhiệm vụ không?", + "description": "Zoo đã đạt đến giới hạn tự động phê duyệt là {{count}} yêu cầu API. Bạn có muốn đặt lại bộ đếm và tiếp tục nhiệm vụ không?", "button": "Đặt lại và Tiếp tục" }, "autoApprovedCostLimitReached": { "button": "Đặt lại và Tiếp tục", "title": "Đã Đạt Giới Hạn Chi Phí Tự Động Phê Duyệt", - "description": "Roo đã đạt đến giới hạn chi phí tự động phê duyệt là ${{count}}. Bạn có muốn đặt lại chi phí và tiếp tục với nhiệm vụ không?" + "description": "Zoo đã đạt đến giới hạn chi phí tự động phê duyệt là ${{count}}. Bạn có muốn đặt lại chi phí và tiếp tục với nhiệm vụ không?" } }, "codebaseSearch": { - "wantsToSearch": "Roo muốn tìm kiếm trong cơ sở mã cho {{query}}", - "wantsToSearchWithPath": "Roo muốn tìm kiếm trong cơ sở mã cho {{query}} trong {{path}}", + "wantsToSearch": "Zoo muốn tìm kiếm trong cơ sở mã cho {{query}}", + "wantsToSearchWithPath": "Zoo muốn tìm kiếm trong cơ sở mã cho {{query}} trong {{path}}", "didSearch_one": "Đã tìm thấy 1 kết quả", "didSearch_other": "Đã tìm thấy {{count}} kết quả", "resultTooltip": "Điểm tương tự: {{score}} (nhấp để mở tệp)" @@ -439,7 +422,7 @@ "ariaLabel": "Phiên bản {{version}} - Nhấp để xem ghi chú phát hành" }, "rooCloudCTA": { - "title": "Roo Code Cloud đang phát triển!", + "title": "Zoo Code Cloud đang phát triển!", "description": "Chạy các agent từ xa trên cloud, truy cập các tác vụ của bạn từ mọi nơi, cộng tác với người khác và nhiều hơn nữa.", "joinWaitlist": "Đăng ký để nhận các cập nhật mới nhất." }, @@ -480,8 +463,8 @@ "clickToEdit": "Nhấp để chỉnh sửa tin nhắn" }, "slashCommand": { - "wantsToRun": "Roo muốn chạy lệnh slash", - "didRun": "Roo đã chạy lệnh slash" + "wantsToRun": "Zoo muốn chạy lệnh slash", + "didRun": "Zoo đã chạy lệnh slash" }, "todo": { "partial": "{{completed}} trong tổng số {{total}} công việc đã hoàn thành", @@ -500,11 +483,11 @@ "openMcpSettings": "Mở cài đặt MCP" }, "readCommandOutput": { - "title": "Roo read command output" + "title": "Zoo read command output" }, "retiredProvider": { "title": "Nhà cung cấp không còn được hỗ trợ", - "message": "Xin lỗi, nhà cung cấp này không còn được hỗ trợ. Chúng tôi nhận thấy rất ít người dùng Roo thực sự sử dụng nó và chúng tôi cần thu hẹp phạm vi mã nguồn để tiếp tục phát triển nhanh và phục vụ tốt cộng đồng. Đây là một quyết định thực sự khó khăn nhưng nó cho phép chúng tôi tập trung vào điều quan trọng nhất với bạn. Chúng tôi biết điều này thật phiền, xin thông cảm.", + "message": "Nhà cung cấp này không còn khả dụng. Hãy chọn một nhà cung cấp được hỗ trợ để tiếp tục.", "openSettings": "Mở cài đặt" } } diff --git a/webview-ui/src/i18n/locales/vi/cloud.json b/webview-ui/src/i18n/locales/vi/cloud.json deleted file mode 100644 index f978ffb217a..00000000000 --- a/webview-ui/src/i18n/locales/vi/cloud.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "title": "Cloud", - "profilePicture": "Ảnh hồ sơ", - "logOut": "Đăng xuất", - "testApiAuthentication": "Kiểm tra xác thực API", - "signIn": "Kết nối với Roo Code Cloud", - "connect": "Bắt đầu", - "cloudBenefitsTitle": "Dùng thử Roo Code Cloud", - "cloudBenefitProvider": "Truy cập các mô hình miễn phí và trả phí hoạt động tuyệt vời với Roo", - "cloudBenefitCloudAgents": "Giao nhiệm vụ cho các agent đám mây tự trị", - "cloudBenefitTriggers": "Nhận đánh giá mã trên GitHub, bắt đầu tác vụ từ Slack và hơn thế nữa", - "cloudBenefitWalkaway": "Theo dõi và kiểm soát các tác vụ từ mọi nơi (bao gồm cả điện thoại của bạn)", - "cloudBenefitHistory": "Truy cập lịch sử tác vụ của bạn từ mọi nơi và chia sẻ chúng với người khác", - "cloudBenefitMetrics": "Có cái nhìn toàn diện về mức tiêu thụ token của bạn", - "visitCloudWebsite": "Truy cập Roo Code Cloud", - "taskSync": "Đồng bộ tác vụ", - "taskSyncDescription": "Đồng bộ tác vụ của bạn để xem và chia sẻ trên Roo Code Cloud", - "taskSyncManagedByOrganization": "Việc đồng bộ hóa công việc được quản lý bởi tổ chức của bạn", - "usageMetricsAlwaysReported": "Thông tin sử dụng mô hình luôn được báo cáo khi đăng nhập", - "authWaiting": "Đang chờ hoàn tất xác thực...", - "havingTrouble": "Gặp vấn đề?", - "pasteCallbackUrl": "Sao chép URL redirect từ trình duyệt và dán vào đây:", - "startOver": "Bắt đầu lại", - "personalAccount": "Tài Khoản Cá Nhân", - "switchAccount": "Chuyển Tài Khoản Roo Code Cloud", - "createTeamAccount": "Tạo Tài Khoản Nhóm", - "cloudUrlPillLabel": "URL Roo Code Cloud", - "upsell": { - "autoApprovePowerUser": "Trao cho Roo một chút độc lập? Kiểm soát nó từ mọi nơi với Roo Code Cloud. Tìm hiểu thêm.", - "longRunningTask": "Việc này có thể mất một lúc. Tiếp tục từ mọi nơi với Cloud.", - "taskList": "Bạn có thích Roo không? Hãy xem Roo Code Cloud: theo dõi và kiểm soát các tác vụ của bạn từ mọi nơi, chạy các agent đám mây tự trị, nhận số liệu thống kê sử dụng và hơn thế nữa. Tìm hiểu thêm." - } -} diff --git a/webview-ui/src/i18n/locales/vi/marketplace.json b/webview-ui/src/i18n/locales/vi/marketplace.json index 29283bbfa28..5c9366b2328 100644 --- a/webview-ui/src/i18n/locales/vi/marketplace.json +++ b/webview-ui/src/i18n/locales/vi/marketplace.json @@ -1,5 +1,5 @@ { - "title": "Roo Marketplace", + "title": "Zoo Marketplace", "tabs": { "installed": "Đã cài đặt", "settings": "Cài đặt", diff --git a/webview-ui/src/i18n/locales/vi/mcp.json b/webview-ui/src/i18n/locales/vi/mcp.json index d7d9a29d740..49becffa6fc 100644 --- a/webview-ui/src/i18n/locales/vi/mcp.json +++ b/webview-ui/src/i18n/locales/vi/mcp.json @@ -2,16 +2,16 @@ "title": "Máy chủ MCP", "done": "Hoàn thành", "marketplace": "Chợ MCP", - "description": "<0>Giao thức ngữ cảnh mô hình cho phép giao tiếp với các máy chủ MCP đang chạy cục bộ, cung cấp các công cụ và tài nguyên bổ sung để mở rộng khả năng của Roo. Bạn có thể sử dụng <1>các máy chủ do cộng đồng tạo hoặc yêu cầu Roo tạo các công cụ mới dành riêng cho quy trình làm việc của bạn (ví dụ: \"thêm công cụ lấy tài liệu npm mới nhất\").", + "description": "<0>Giao thức ngữ cảnh mô hình cho phép giao tiếp với các máy chủ MCP đang chạy cục bộ, cung cấp các công cụ và tài nguyên bổ sung để mở rộng khả năng của Zoo. Bạn có thể sử dụng <1>các máy chủ do cộng đồng tạo hoặc yêu cầu Zoo tạo các công cụ mới dành riêng cho quy trình làm việc của bạn (ví dụ: \"thêm công cụ lấy tài liệu npm mới nhất\").", "instructions": "Hướng dẫn", "enableToggle": { "title": "Bật máy chủ MCP", - "description": "Bật lên để Roo dùng công cụ từ các máy chủ MCP đã kết nối. Roo sẽ có nhiều khả năng hơn. Nếu không dùng các công cụ này, hãy tắt để tiết kiệm chi phí token API." + "description": "Bật lên để Zoo dùng công cụ từ các máy chủ MCP đã kết nối. Zoo sẽ có nhiều khả năng hơn. Nếu không dùng các công cụ này, hãy tắt để tiết kiệm chi phí token API." }, "enableServerCreation": { "title": "Bật tạo máy chủ MCP", - "description": "Bật lên để Roo giúp bạn tạo <1>máy chủ MCP mới tuỳ chỉnh. <0>Tìm hiểu về tạo máy chủ", - "hint": "Mẹo: Để giảm chi phí token API, hãy tắt khi không cần Roo tạo máy chủ MCP mới." + "description": "Bật lên để Zoo giúp bạn tạo <1>máy chủ MCP mới tuỳ chỉnh. <0>Tìm hiểu về tạo máy chủ", + "hint": "Mẹo: Để giảm chi phí token API, hãy tắt khi không cần Zoo tạo máy chủ MCP mới." }, "editGlobalMCP": "Chỉnh sửa MCP toàn cục", "editProjectMCP": "Chỉnh sửa MCP dự án", diff --git a/webview-ui/src/i18n/locales/vi/prompts.json b/webview-ui/src/i18n/locales/vi/prompts.json index 7ac6fa5d6a9..ab5dbb899cf 100644 --- a/webview-ui/src/i18n/locales/vi/prompts.json +++ b/webview-ui/src/i18n/locales/vi/prompts.json @@ -9,7 +9,7 @@ "editModesConfig": "Chỉnh sửa cấu hình chế độ", "editGlobalModes": "Chỉnh sửa chế độ toàn cục", "editProjectModes": "Chỉnh sửa chế độ dự án (.roomodes)", - "createModeHelpText": "Chế độ là các vai trò chuyên biệt điều chỉnh hành vi của Roo. <0>Tìm hiểu về Sử dụng Chế độ hoặc <1>Tùy chỉnh Chế độ.", + "createModeHelpText": "Chế độ là các vai trò chuyên biệt điều chỉnh hành vi của Zoo. <0>Tìm hiểu về Sử dụng Chế độ hoặc <1>Tùy chỉnh Chế độ.", "selectMode": "Tìm kiếm chế độ" }, "apiConfiguration": { @@ -33,7 +33,7 @@ "roleDefinition": { "title": "Định nghĩa vai trò", "resetToDefault": "Đặt lại về mặc định", - "description": "Xác định chuyên môn và tính cách của Roo cho chế độ này. Mô tả này định hình cách Roo giới thiệu bản thân và tiếp cận nhiệm vụ." + "description": "Xác định chuyên môn và tính cách của Zoo cho chế độ này. Mô tả này định hình cách Zoo giới thiệu bản thân và tiếp cận nhiệm vụ." }, "description": { "title": "Mô tả ngắn (cho con người)", @@ -102,7 +102,7 @@ "types": { "ENHANCE": { "label": "Nâng cao lời nhắc", - "description": "Sử dụng nâng cao lời nhắc để nhận đề xuất hoặc cải tiến phù hợp cho đầu vào của bạn. Điều này đảm bảo Roo hiểu ý định của bạn và cung cấp phản hồi tốt nhất có thể. Có sẵn thông qua biểu tượng ✨ trong chat." + "description": "Sử dụng nâng cao lời nhắc để nhận đề xuất hoặc cải tiến phù hợp cho đầu vào của bạn. Điều này đảm bảo Zoo hiểu ý định của bạn và cung cấp phản hồi tốt nhất có thể. Có sẵn thông qua biểu tượng ✨ trong chat." }, "CONDENSE": { "label": "Cô đọng ngữ cảnh", @@ -167,7 +167,7 @@ }, "roleDefinition": { "label": "Định nghĩa vai trò", - "description": "Xác định chuyên môn và tính cách của Roo cho chế độ này." + "description": "Xác định chuyên môn và tính cách của Zoo cho chế độ này." }, "whenToUse": { "label": "Khi nào nên sử dụng (tùy chọn)", diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json index 11259a45e35..80cff344751 100644 --- a/webview-ui/src/i18n/locales/vi/settings.json +++ b/webview-ui/src/i18n/locales/vi/settings.json @@ -56,7 +56,7 @@ "label": "Phát hiện lỗ hổng bảo mật?", "link": "Làm theo quy trình công bố của chúng tôi" }, - "community": "Muốn nhận mẹo hoặc chỉ muốn giao lưu với những người dùng Roo Code khác? Tham gia reddit.com/r/RooCode hoặc discord.gg/roocode", + "community": "Muốn nhận mẹo hoặc chỉ muốn giao lưu với những người dùng Zoo Code khác? Tham gia reddit.com/r/RooCode hoặc discord.gg/roocode", "contactAndCommunity": "Liên Hệ & Cộng Đồng", "manageSettings": "Quản Lý Cài Đặt", "debugMode": { @@ -100,7 +100,7 @@ "footer": "Sử dụng lệnh slash để truy cập nhanh các prompt và quy trình công việc được sử dụng thường xuyên." }, "prompts": { - "description": "Cấu hình các lời nhắc hỗ trợ được sử dụng cho các hành động nhanh như cải thiện lời nhắc, giải thích mã và khắc phục sự cố. Những lời nhắc này giúp Roo cung cấp hỗ trợ tốt hơn cho các tác vụ phát triển phổ biến." + "description": "Cấu hình các lời nhắc hỗ trợ được sử dụng cho các hành động nhanh như cải thiện lời nhắc, giải thích mã và khắc phục sự cố. Những lời nhắc này giúp Zoo cung cấp hỗ trợ tốt hơn cho các tác vụ phát triển phổ biến." }, "codeIndex": { "title": "Lập chỉ mục mã nguồn", @@ -223,10 +223,10 @@ "disabledAriaLabel": "Tự động phê duyệt bị vô hiệu hóa - hãy chọn các tùy chọn trước", "readOnly": { "label": "Đọc", - "description": "Khi được bật, Roo sẽ tự động xem nội dung thư mục và đọc tệp mà không yêu cầu bạn nhấp vào nút Phê duyệt.", + "description": "Khi được bật, Zoo sẽ tự động xem nội dung thư mục và đọc tệp mà không yêu cầu bạn nhấp vào nút Phê duyệt.", "outsideWorkspace": { "label": "Bao gồm các tệp ngoài không gian làm việc", - "description": "Cho phép Roo đọc các tệp bên ngoài không gian làm việc hiện tại mà không yêu cầu phê duyệt." + "description": "Cho phép Zoo đọc các tệp bên ngoài không gian làm việc hiện tại mà không yêu cầu phê duyệt." } }, "write": { @@ -235,11 +235,11 @@ "delayLabel": "Trì hoãn sau khi ghi để cho phép chẩn đoán phát hiện các vấn đề tiềm ẩn", "outsideWorkspace": { "label": "Bao gồm các tệp ngoài không gian làm việc", - "description": "Cho phép Roo tạo và chỉnh sửa các tệp bên ngoài không gian làm việc hiện tại mà không yêu cầu phê duyệt." + "description": "Cho phép Zoo tạo và chỉnh sửa các tệp bên ngoài không gian làm việc hiện tại mà không yêu cầu phê duyệt." }, "protected": { "label": "Bao gồm các tệp được bảo vệ", - "description": "Cho phép Roo tạo và chỉnh sửa các tệp được bảo vệ (như .rooignore và các tệp cấu hình .roo/) mà không yêu cầu phê duyệt." + "description": "Cho phép Zoo tạo và chỉnh sửa các tệp được bảo vệ (như .rooignore và các tệp cấu hình .roo/) mà không yêu cầu phê duyệt." } }, "mcp": { @@ -306,7 +306,7 @@ "searchProviderPlaceholder": "Tìm kiếm nhà cung cấp", "noProviderMatchFound": "Không tìm thấy nhà cung cấp", "noMatchFound": "Không tìm thấy hồ sơ phù hợp", - "retiredProviderMessage": "Xin lỗi, nhà cung cấp này không còn được hỗ trợ. Chúng tôi nhận thấy rất ít người dùng Roo thực sự sử dụng nó và chúng tôi cần thu hẹp phạm vi mã nguồn để tiếp tục phát triển nhanh và phục vụ tốt cộng đồng. Đây là một quyết định thực sự khó khăn nhưng nó cho phép chúng tôi tập trung vào điều quan trọng nhất với bạn. Chúng tôi biết điều này thật phiền, xin thông cảm.", + "retiredProviderMessage": "Nhà cung cấp này không còn khả dụng. Hãy chọn một nhà cung cấp được hỗ trợ để tiếp tục.", "vscodeLmDescription": "API Mô hình Ngôn ngữ VS Code cho phép bạn chạy các mô hình được cung cấp bởi các tiện ích mở rộng khác của VS Code (bao gồm nhưng không giới hạn ở GitHub Copilot). Cách dễ nhất để bắt đầu là cài đặt các tiện ích mở rộng Copilot và Copilot Chat từ VS Code Marketplace.", "awsCustomArnUse": "Nhập một ARN Amazon Bedrock hợp lệ cho mô hình bạn muốn sử dụng. Ví dụ về định dạng:", "awsCustomArnDesc": "Đảm bảo rằng vùng trong ARN khớp với vùng AWS đã chọn ở trên.", @@ -456,7 +456,7 @@ "draftModelDesc": "Mô hình nháp phải từ cùng một họ mô hình để giải mã suy đoán hoạt động chính xác.", "selectDraftModel": "Chọn mô hình nháp", "noModelsFound": "Không tìm thấy mô hình nháp nào. Vui lòng đảm bảo LM Studio đang chạy với chế độ máy chủ được bật.", - "description": "LM Studio cho phép bạn chạy các mô hình cục bộ trên máy tính của bạn. Để biết hướng dẫn về cách bắt đầu, xem hướng dẫn nhanh của họ. Bạn cũng sẽ cần khởi động tính năng máy chủ cục bộ của LM Studio để sử dụng nó với tiện ích mở rộng này. Lưu ý: Roo Code sử dụng các lời nhắc phức tạp và hoạt động tốt nhất với các mô hình Claude. Các mô hình kém mạnh hơn có thể không hoạt động như mong đợi." + "description": "LM Studio cho phép bạn chạy các mô hình cục bộ trên máy tính của bạn. Để biết hướng dẫn về cách bắt đầu, xem hướng dẫn nhanh của họ. Bạn cũng sẽ cần khởi động tính năng máy chủ cục bộ của LM Studio để sử dụng nó với tiện ích mở rộng này. Lưu ý: Zoo Code sử dụng các lời nhắc phức tạp và hoạt động tốt nhất với các mô hình Claude. Các mô hình kém mạnh hơn có thể không hoạt động như mong đợi." }, "ollama": { "baseUrl": "URL cơ sở (tùy chọn)", @@ -466,11 +466,7 @@ "numCtx": "Kích thước cửa sổ ngữ cảnh (num_ctx)", "numCtxHelp": "Ghi đè kích thước cửa sổ ngữ cảnh mặc định của mô hình. Để trống để sử dụng cấu hình Modelfile của mô hình. Giá trị tối thiểu là 128.", "description": "Ollama cho phép bạn chạy các mô hình cục bộ trên máy tính của bạn. Để biết hướng dẫn về cách bắt đầu, xem hướng dẫn nhanh của họ.", - "warning": "Lưu ý: Roo Code sử dụng các lời nhắc phức tạp và hoạt động tốt nhất với các mô hình Claude. Các mô hình kém mạnh hơn có thể không hoạt động như mong đợi." - }, - "roo": { - "authenticatedMessage": "Đã xác thực an toàn thông qua tài khoản Roo Code Cloud của bạn.", - "connectButton": "Kết nối với Roo Code Cloud" + "warning": "Lưu ý: Zoo Code sử dụng các lời nhắc phức tạp và hoạt động tốt nhất với các mô hình Claude. Các mô hình kém mạnh hơn có thể không hoạt động như mong đợi." }, "openRouter": { "providerRouting": { @@ -480,7 +476,7 @@ } }, "customModel": { - "capabilities": "Cấu hình các khả năng và giá cả cho mô hình tương thích OpenAI tùy chỉnh của bạn. Hãy cẩn thận khi chỉ định khả năng của mô hình, vì chúng có thể ảnh hưởng đến cách Roo Code hoạt động.", + "capabilities": "Cấu hình các khả năng và giá cả cho mô hình tương thích OpenAI tùy chỉnh của bạn. Hãy cẩn thận khi chỉ định khả năng của mô hình, vì chúng có thể ảnh hưởng đến cách Zoo Code hoạt động.", "maxTokens": { "label": "Số token đầu ra tối đa", "description": "Số lượng token tối đa mà mô hình có thể tạo ra trong một phản hồi. (Chỉ định -1 để cho phép máy chủ đặt số token tối đa.)" @@ -527,7 +523,7 @@ }, "consecutiveMistakeLimit": { "label": "Giới hạn lỗi và lặp lại", - "description": "Số lỗi liên tiếp hoặc hành động lặp lại trước khi hiển thị hộp thoại 'Roo đang gặp sự cố'. Đặt thành 0 để tắt cơ chế an toàn này (nó sẽ không bao giờ kích hoạt).", + "description": "Số lỗi liên tiếp hoặc hành động lặp lại trước khi hiển thị hộp thoại 'Zoo đang gặp sự cố'. Đặt thành 0 để tắt cơ chế an toàn này (nó sẽ không bao giờ kích hoạt).", "unlimitedDescription": "Đã bật thử lại không giới hạn (tự động tiếp tục). Hộp thoại sẽ không bao giờ xuất hiện.", "warning": "⚠️ Đặt thành 0 cho phép thử lại không giới hạn, điều này có thể tiêu tốn mức sử dụng API đáng kể" }, @@ -563,18 +559,18 @@ }, "enable": { "label": "Bật điểm kiểm tra tự động", - "description": "Khi được bật, Roo sẽ tự động tạo các điểm kiểm tra trong quá trình thực hiện nhiệm vụ, giúp dễ dàng xem lại các thay đổi hoặc quay lại trạng thái trước đó. <0>Tìm hiểu thêm" + "description": "Khi được bật, Zoo sẽ tự động tạo các điểm kiểm tra trong quá trình thực hiện nhiệm vụ, giúp dễ dàng xem lại các thay đổi hoặc quay lại trạng thái trước đó. <0>Tìm hiểu thêm" } }, "notifications": { "sound": { "label": "Bật hiệu ứng âm thanh", - "description": "Khi được bật, Roo sẽ phát hiệu ứng âm thanh cho thông báo và sự kiện.", + "description": "Khi được bật, Zoo sẽ phát hiệu ứng âm thanh cho thông báo và sự kiện.", "volumeLabel": "Âm lượng" }, "tts": { "label": "Bật chuyển văn bản thành giọng nói", - "description": "Khi được bật, Roo sẽ đọc to các phản hồi của nó bằng chức năng chuyển văn bản thành giọng nói.", + "description": "Khi được bật, Zoo sẽ đọc to các phản hồi của nó bằng chức năng chuyển văn bản thành giọng nói.", "speedLabel": "Tốc độ" } }, @@ -582,7 +578,7 @@ "description": "Kiểm soát thông tin nào được đưa vào cửa sổ ngữ cảnh của AI, ảnh hưởng đến việc sử dụng token và chất lượng phản hồi", "autoCondenseContextPercent": { "label": "Ngưỡng kích hoạt nén ngữ cảnh thông minh", - "description": "Khi cửa sổ ngữ cảnh đạt đến ngưỡng này, Roo sẽ tự động nén nó." + "description": "Khi cửa sổ ngữ cảnh đạt đến ngưỡng này, Zoo sẽ tự động nén nó." }, "condensingApiConfiguration": { "label": "Cấu hình API cho Tóm tắt Ngữ cảnh", @@ -598,7 +594,7 @@ }, "autoCondenseContext": { "name": "Tự động kích hoạt nén ngữ cảnh thông minh", - "description": "Khi được bật, Roo sẽ tự động nén ngữ cảnh khi đạt đến ngưỡng. Khi bị tắt, bạn vẫn có thể kích hoạt nén ngữ cảnh thủ công." + "description": "Khi được bật, Zoo sẽ tự động nén ngữ cảnh khi đạt đến ngưỡng. Khi bị tắt, bạn vẫn có thể kích hoạt nén ngữ cảnh thủ công." }, "openTabs": { "label": "Giới hạn ngữ cảnh tab đang mở", @@ -614,7 +610,7 @@ }, "maxReadFile": { "label": "Ngưỡng tự động cắt ngắn khi đọc tệp", - "description": "Roo đọc số dòng này khi mô hình không chỉ định giá trị bắt đầu/kết thúc. Nếu số này nhỏ hơn tổng số dòng của tệp, Roo sẽ tạo một chỉ mục số dòng của các định nghĩa mã. Trường hợp đặc biệt: -1 chỉ thị Roo đọc toàn bộ tệp (không tạo chỉ mục), và 0 chỉ thị không đọc dòng nào và chỉ cung cấp chỉ mục dòng cho ngữ cảnh tối thiểu. Giá trị thấp hơn giảm thiểu việc sử dụng ngữ cảnh ban đầu, cho phép đọc chính xác các phạm vi dòng sau này. Các yêu cầu có chỉ định bắt đầu/kết thúc rõ ràng không bị giới hạn bởi cài đặt này.", + "description": "Zoo đọc số dòng này khi mô hình không chỉ định giá trị bắt đầu/kết thúc. Nếu số này nhỏ hơn tổng số dòng của tệp, Zoo sẽ tạo một chỉ mục số dòng của các định nghĩa mã. Trường hợp đặc biệt: -1 chỉ thị Zoo đọc toàn bộ tệp (không tạo chỉ mục), và 0 chỉ thị không đọc dòng nào và chỉ cung cấp chỉ mục dòng cho ngữ cảnh tối thiểu. Giá trị thấp hơn giảm thiểu việc sử dụng ngữ cảnh ban đầu, cho phép đọc chính xác các phạm vi dòng sau này. Các yêu cầu có chỉ định bắt đầu/kết thúc rõ ràng không bị giới hạn bởi cài đặt này.", "lines": "dòng", "always_full_read": "Luôn đọc toàn bộ tệp" }, @@ -685,15 +681,15 @@ }, "outputLineLimit": { "label": "Giới hạn đầu ra của terminal", - "description": "Giữ lại các dòng đầu tiên và cuối cùng và loại bỏ các dòng ở giữa để ở dưới giới hạn. Giảm xuống để tiết kiệm token; tăng lên để cung cấp cho Roo thêm chi tiết ở giữa. Roo thấy một trình giữ chỗ nơi nội dung bị bỏ qua.<0>Tìm hiểu thêm" + "description": "Giữ lại các dòng đầu tiên và cuối cùng và loại bỏ các dòng ở giữa để ở dưới giới hạn. Giảm xuống để tiết kiệm token; tăng lên để cung cấp cho Zoo thêm chi tiết ở giữa. Zoo thấy một trình giữ chỗ nơi nội dung bị bỏ qua.<0>Tìm hiểu thêm" }, "outputCharacterLimit": { "label": "Giới hạn ký tự terminal", - "description": "Ghi đè giới hạn dòng để tránh vấn đề bộ nhớ bằng cách áp đặt giới hạn cứng cho kích thước đầu ra. Nếu vượt quá, giữ đầu và cuối, hiển thị placeholder cho Roo nơi nội dung bị bỏ qua. <0>Tìm hiểu thêm" + "description": "Ghi đè giới hạn dòng để tránh vấn đề bộ nhớ bằng cách áp đặt giới hạn cứng cho kích thước đầu ra. Nếu vượt quá, giữ đầu và cuối, hiển thị placeholder cho Zoo nơi nội dung bị bỏ qua. <0>Tìm hiểu thêm" }, "outputPreviewSize": { "label": "Kích thước xem trước đầu ra lệnh", - "description": "Kiểm soát lượng đầu ra lệnh mà Roo nhìn thấy trực tiếp. Đầu ra đầy đủ luôn được lưu và có thể truy cập khi cần thiết.", + "description": "Kiểm soát lượng đầu ra lệnh mà Zoo nhìn thấy trực tiếp. Đầu ra đầy đủ luôn được lưu và có thể truy cập khi cần thiết.", "options": { "small": "Nhỏ (5KB)", "medium": "Trung bình (10KB)", @@ -706,7 +702,7 @@ }, "shellIntegrationDisabled": { "label": "Sử dụng Terminal nội tuyến (được khuyến nghị)", - "description": "Chạy lệnh trong Terminal nội tuyến (trò chuyện) để bỏ qua hồ sơ/tích hợp shell để chạy nhanh hơn, đáng tin cậy hơn. Khi bị tắt, Roo sử dụng terminal VS Code với hồ sơ shell, lời nhắc và plugin của bạn. <0>Tìm hiểu thêm" + "description": "Chạy lệnh trong Terminal nội tuyến (trò chuyện) để bỏ qua hồ sơ/tích hợp shell để chạy nhanh hơn, đáng tin cậy hơn. Khi bị tắt, Zoo sử dụng terminal VS Code với hồ sơ shell, lời nhắc và plugin của bạn. <0>Tìm hiểu thêm" }, "commandDelay": { "label": "Delay lệnh terminal", @@ -743,7 +739,7 @@ "advanced": { "diff": { "label": "Bật chỉnh sửa qua diff", - "description": "Khi được bật, Roo sẽ có thể chỉnh sửa tệp nhanh hơn và sẽ tự động từ chối ghi toàn bộ tệp bị cắt ngắn", + "description": "Khi được bật, Zoo sẽ có thể chỉnh sửa tệp nhanh hơn và sẽ tự động từ chối ghi toàn bộ tệp bị cắt ngắn", "strategy": { "label": "Chiến lược diff", "options": { @@ -760,7 +756,7 @@ }, "todoList": { "label": "Bật công cụ danh sách việc cần làm", - "description": "Khi được bật, Roo có thể tạo và quản lý danh sách việc cần làm để theo dõi tiến độ công việc. Điều này giúp tổ chức các tác vụ phức tạp thành các bước có thể quản lý được." + "description": "Khi được bật, Zoo có thể tạo và quản lý danh sách việc cần làm để theo dõi tiến độ công việc. Điều này giúp tổ chức các tác vụ phức tạp thành các bước có thể quản lý được." } }, "experimental": { @@ -770,15 +766,15 @@ }, "INSERT_BLOCK": { "name": "Sử dụng công cụ chèn nội dung thử nghiệm", - "description": "Bật công cụ chèn nội dung thử nghiệm, cho phép Roo chèn nội dung tại số dòng cụ thể mà không cần tạo diff." + "description": "Bật công cụ chèn nội dung thử nghiệm, cho phép Zoo chèn nội dung tại số dòng cụ thể mà không cần tạo diff." }, "MULTI_SEARCH_AND_REPLACE": { "name": "Sử dụng công cụ diff đa khối thử nghiệm", - "description": "Khi được bật, Roo sẽ sử dụng công cụ diff đa khối. Điều này sẽ cố gắng cập nhật nhiều khối mã trong tệp trong một yêu cầu." + "description": "Khi được bật, Zoo sẽ sử dụng công cụ diff đa khối. Điều này sẽ cố gắng cập nhật nhiều khối mã trong tệp trong một yêu cầu." }, "CONCURRENT_FILE_READS": { "name": "Bật đọc tệp đồng thời", - "description": "Khi bật, Roo có thể đọc nhiều tệp trong một yêu cầu duy nhất. Khi tắt, Roo phải đọc từng tệp một. Việc tắt có thể hữu ích khi làm việc với các mô hình ít khả năng hơn hoặc khi bạn muốn kiểm soát nhiều hơn quyền truy cập tệp." + "description": "Khi bật, Zoo có thể đọc nhiều tệp trong một yêu cầu duy nhất. Khi tắt, Zoo phải đọc từng tệp một. Việc tắt có thể hữu ích khi làm việc với các mô hình ít khả năng hơn hoặc khi bạn muốn kiểm soát nhiều hơn quyền truy cập tệp." }, "MARKETPLACE": { "name": "Bật Marketplace", @@ -786,7 +782,7 @@ }, "PREVENT_FOCUS_DISRUPTION": { "name": "Chỉnh sửa nền", - "description": "Khi được bật, ngăn chặn gián đoạn tiêu điểm trình soạn thảo. Việc chỉnh sửa tệp diễn ra ở nền mà không mở chế độ xem diff hoặc chiếm tiêu điểm. Bạn có thể tiếp tục làm việc không bị gián đoạn trong khi Roo thực hiện thay đổi. Các tệp có thể được mở mà không có tiêu điểm để thu thập chẩn đoán hoặc giữ hoàn toàn đóng." + "description": "Khi được bật, ngăn chặn gián đoạn tiêu điểm trình soạn thảo. Việc chỉnh sửa tệp diễn ra ở nền mà không mở chế độ xem diff hoặc chiếm tiêu điểm. Bạn có thể tiếp tục làm việc không bị gián đoạn trong khi Zoo thực hiện thay đổi. Các tệp có thể được mở mà không có tiêu điểm để thu thập chẩn đoán hoặc giữ hoàn toàn đóng." }, "ASSISTANT_MESSAGE_PARSER": { "name": "Dùng bộ phân tích tin nhắn mới", @@ -800,7 +796,7 @@ "providerLabel": "Nhà cung cấp", "providerDescription": "Chọn nhà cung cấp để tạo hình ảnh.", "name": "Bật tạo hình ảnh AI", - "description": "Khi được bật, Roo có thể tạo hình ảnh từ lời nhắc văn bản bằng các mô hình tạo hình ảnh của OpenRouter. Yêu cầu khóa API OpenRouter được cấu hình.", + "description": "Khi được bật, Zoo có thể tạo hình ảnh từ lời nhắc văn bản bằng các mô hình tạo hình ảnh của OpenRouter. Yêu cầu khóa API OpenRouter được cấu hình.", "openRouterApiKeyLabel": "Khóa API OpenRouter", "openRouterApiKeyPlaceholder": "Nhập khóa API OpenRouter của bạn", "getApiKeyText": "Lấy khóa API của bạn từ", @@ -811,11 +807,11 @@ }, "RUN_SLASH_COMMAND": { "name": "Bật lệnh slash do mô hình khởi tạo", - "description": "Khi được bật, Roo có thể chạy các lệnh slash của bạn để thực hiện các quy trình làm việc." + "description": "Khi được bật, Zoo có thể chạy các lệnh slash của bạn để thực hiện các quy trình làm việc." }, "CUSTOM_TOOLS": { "name": "Bật công cụ tùy chỉnh", - "description": "Khi được bật, Roo có thể tải và sử dụng các công cụ TypeScript/JavaScript tùy chỉnh từ thư mục .roo/tools của dự án hoặc ~/.roo/tools cho các công cụ toàn cục. Lưu ý: các công cụ này sẽ được tự động phê duyệt.", + "description": "Khi được bật, Zoo có thể tải và sử dụng các công cụ TypeScript/JavaScript tùy chỉnh từ thư mục .roo/tools của dự án hoặc ~/.roo/tools cho các công cụ toàn cục. Lưu ý: các công cụ này sẽ được tự động phê duyệt.", "toolsHeader": "Công cụ tùy chỉnh có sẵn", "noTools": "Không có công cụ tùy chỉnh nào được tải. Thêm tệp .ts hoặc .js vào thư mục .roo/tools của dự án hoặc ~/.roo/tools cho các công cụ toàn cục.", "refreshButton": "Làm mới", @@ -827,7 +823,7 @@ }, "promptCaching": { "label": "Tắt bộ nhớ đệm prompt", - "description": "Khi được chọn, Roo sẽ không sử dụng bộ nhớ đệm prompt cho mô hình này." + "description": "Khi được chọn, Zoo sẽ không sử dụng bộ nhớ đệm prompt cho mô hình này." }, "temperature": { "useCustom": "Sử dụng nhiệt độ tùy chỉnh", @@ -857,7 +853,7 @@ } }, "modelPicker": { - "automaticFetch": "Tiện ích mở rộng tự động lấy danh sách mới nhất các mô hình có sẵn trên {{serviceName}}. Nếu bạn không chắc chắn nên chọn mô hình nào, Roo Code hoạt động tốt nhất với {{defaultModelId}}. Bạn cũng có thể thử tìm kiếm \"free\" cho các tùy chọn miễn phí hiện có.", + "automaticFetch": "Tiện ích mở rộng tự động lấy danh sách mới nhất các mô hình có sẵn trên {{serviceName}}. Nếu bạn không chắc chắn nên chọn mô hình nào, Zoo Code hoạt động tốt nhất với {{defaultModelId}}. Bạn cũng có thể thử tìm kiếm \"free\" cho các tùy chọn miễn phí hiện có.", "label": "Mô hình", "searchPlaceholder": "Tìm kiếm", "noMatchFound": "Không tìm thấy kết quả", @@ -867,7 +863,7 @@ "footer": { "telemetry": { "label": "Cho phép báo cáo lỗi và sử dụng ẩn danh", - "description": "Giúp cải thiện Roo Code bằng cách gửi dữ liệu sử dụng ẩn danh và báo cáo lỗi. Telemetry này không thu thập mã, prompt hoặc thông tin cá nhân. Xem chính sách bảo mật của chúng tôi để biết thêm chi tiết. Bạn có thể tắt tính năng này bất cứ lúc nào." + "description": "Giúp cải thiện Zoo Code bằng cách gửi dữ liệu sử dụng ẩn danh và báo cáo lỗi. Telemetry này không thu thập mã, prompt hoặc thông tin cá nhân. Xem chính sách bảo mật của chúng tôi để biết thêm chi tiết. Bạn có thể tắt tính năng này bất cứ lúc nào." }, "settings": { "import": "Nhập", diff --git a/webview-ui/src/i18n/locales/vi/welcome.json b/webview-ui/src/i18n/locales/vi/welcome.json index 0a0d7af2d36..ad41abdcc4f 100644 --- a/webview-ui/src/i18n/locales/vi/welcome.json +++ b/webview-ui/src/i18n/locales/vi/welcome.json @@ -1,52 +1,18 @@ { - "routers": { - "requesty": { - "description": "Bộ định tuyến LLM được tối ưu hóa của bạn", - "incentive": "Tín dụng miễn phí $1" - }, - "openrouter": { - "description": "Giao diện thống nhất cho LLM" - }, - "roo": { - "description": "Các mô hình miễn phí tốt nhất để bắt đầu", - "incentive": "Dùng thử Roo miễn phí" - } - }, "landing": { "greeting": "Chào mừng đến với Roo Code!", "introduction": "Với nhiều Chế độ tích hợp và có thể mở rộng, Roo Code cho phép bạn lập kế hoạch, thiết kế kiến trúc, viết mã, gỡ lỗi và tăng năng suất như chưa từng có trước đây.", - "accountMention": "Để bắt đầu, hãy tạo tài khoản Roo Code Cloud của bạn. Nhận các mô hình mạnh mẽ, kiểm soát web, phân tích, hỗ trợ và hơn thế nữa.", - "getStarted": "Tạo tài khoản Roo", - "noAccount": "hoặc sử dụng mà không có tài khoản" + "getStarted": "Chọn nhà cung cấp của bạn" }, "providerSignup": { "heading": "Chọn nhà cung cấp của bạn", "chooseProvider": "Roo cần một nhà cung cấp LLM để hoạt động. Chọn một để bắt đầu, bạn có thể thêm nhiều hơn sau.", - "rooCloudProvider": "Nhà cung cấp Roo Code Cloud", - "rooCloudDescription": "Cách dễ nhất để bắt đầu là với Nhà cung cấp Roo Code Cloud: một sự kết hợp được sắp xếp cẩn thận của các mô hình miễn phí và trả tiền với chi phí thấp.", - "learnMore": "Tìm hiểu thêm", - "useAnotherProvider": "Nhà cung cấp bên thứ ba", - "useAnotherProviderDescription": "Nhập khóa API và bắt đầu.", - "noApiKeys": "Bạn không muốn xử lý các khóa API và tài khoản riêng biệt?", - "backToRoo": "Sử dụng Nhà cung cấp Roo Code Cloud.", "goBack": "Quay lại", "finish": "Hoàn thành" }, - "waitingForCloud": { - "heading": "Đăng nhập vào Roo Code Cloud...", - "description": "Chúng tôi sẽ dẫn bạn đến trình duyệt để đăng ký Roo Code Cloud. Sau đó, chúng tôi sẽ đưa bạn trở lại đây để hoàn thành.", - "noPrompt": "Nếu bạn không được yêu cầu mở URL, hãy nhấp vào đây.", - "havingTrouble": "Nếu bạn đã hoàn thành đăng ký nhưng gặp sự cố, hãy nhấp vào đây.", - "pasteUrl": "Dán URL gọi lại từ trình duyệt của bạn:", - "docsLink": "Không hoạt động? Kiểm tra tài liệu.", - "invalidURL": "Điều đó không giống như một URL gọi lại hợp lệ. Vui lòng sao chép những gì Roo Code Cloud đang hiển thị trong trình duyệt của bạn.", - "goBack": "Quay lại" - }, - "startRouter": "Chúng tôi khuyên bạn nên sử dụng bộ định tuyến LLM:", - "startCustom": "Hoặc bạn có thể mang theo khóa API của riêng mình:", "telemetry": { - "helpImprove": "Giúp cải thiện Roo Code", - "helpImproveMessage": "Roo Code thu thập dữ liệu lỗi và sử dụng để giúp chúng tôi sửa lỗi và cải thiện tiện ích mở rộng. Dữ liệu từ xa này không thu thập mã, lời nhắc hoặc thông tin cá nhân. Bạn có thể vô hiệu hóa nó trong cài đặt." + "helpImprove": "Giúp cải thiện Zoo Code", + "helpImproveMessage": "Zoo Code thu thập dữ liệu lỗi và sử dụng để giúp chúng tôi sửa lỗi và cải thiện tiện ích mở rộng. Dữ liệu từ xa này không thu thập mã, lời nhắc hoặc thông tin cá nhân. Bạn có thể vô hiệu hóa nó trong cài đặt." }, "importSettings": "Nhập Cài đặt" } diff --git a/webview-ui/src/i18n/locales/vi/worktrees.json b/webview-ui/src/i18n/locales/vi/worktrees.json index 28b80891c69..0041d1fc07c 100644 --- a/webview-ui/src/i18n/locales/vi/worktrees.json +++ b/webview-ui/src/i18n/locales/vi/worktrees.json @@ -1,28 +1,23 @@ { "title": "Worktrees", "done": "Xong", - "description": "Git worktrees cho phép bạn làm việc đồng thời trên nhiều nhánh trong các thư mục riêng. Mỗi worktree có một cửa sổ VS Code riêng với Roo Code.", - + "description": "Git worktrees cho phép bạn làm việc đồng thời trên nhiều nhánh trong các thư mục riêng. Mỗi worktree có một cửa sổ VS Code riêng với Zoo Code.", "notGitRepo": "Workspace này không phải là kho Git. Worktrees cần một kho Git để hoạt động.", "multiRootNotSupported": "Worktrees không được hỗ trợ trong workspace đa gốc. Hãy mở một thư mục đơn để dùng worktrees.", "subfolderNotSupported": "Workspace này là một thư mục con của kho Git. Hãy mở thư mục gốc của kho để dùng worktrees.", "gitRoot": "Thư mục gốc Git", - "includeFileExists": "Đã tìm thấy tệp .worktreeinclude — các tệp sẽ được sao chép sang worktrees mới", "noIncludeFile": "Không tìm thấy tệp .worktreeinclude", "createFromGitignore": "Tạo từ .gitignore", - "primary": "Chính", "current": "Hiện tại", "locked": "Đã khóa", "detachedHead": "Detached HEAD", "noBranch": "Không có nhánh", - "switchInThisWindow": "Chuyển sang worktree", "openInNewWindow": "Mở trong cửa sổ mới", "delete": "Xóa", "newWorktree": "Worktree Mới", - "createWorktree": "Tạo Worktree", "branchName": "Tên nhánh", "createNewBranch": "Tạo nhánh mới", @@ -44,7 +39,6 @@ "copyingFiles": "Đang sao chép tệp...", "copyingProgress": "{{item}} — {{copied}} đã sao chép", "cancel": "Hủy", - "deleteWorktree": "Xóa Worktree", "deleteWarning": "Không thể hoàn tác thao tác này. Những thứ sau sẽ bị xóa:", "deleteWarningBranch": "Nhánh và tất cả thay đổi chưa commit", @@ -53,11 +47,8 @@ "forceDelete": "Buộc xóa", "worktreeIsLocked": "worktree đang bị khóa", "deleting": "Đang xóa...", - "close": "Đóng", - "showInHomeScreen": "Hiển thị worktrees trên màn hình chính", - "selector": { "worktree": "Worktree", "title": "Worktrees", diff --git a/webview-ui/src/i18n/locales/zh-CN/chat.json b/webview-ui/src/i18n/locales/zh-CN/chat.json index 8fe5d14ee8c..f2899cfa65d 100644 --- a/webview-ui/src/i18n/locales/zh-CN/chat.json +++ b/webview-ui/src/i18n/locales/zh-CN/chat.json @@ -1,5 +1,5 @@ { - "greeting": "欢迎使用 Roo Code", + "greeting": "欢迎使用 Zoo Code!", "task": { "title": "任务", "expand": "展开任务", @@ -14,17 +14,7 @@ "closeAndStart": "关闭任务并开始新任务", "export": "导出任务历史", "delete": "删除任务(Shift + 点击跳过确认)", - "share": "分享任务", "condenseContext": "智能压缩上下文", - "shareWithOrganization": "与组织分享", - "shareWithOrganizationDescription": "仅组织成员可访问", - "sharePublicly": "公开分享", - "sharePubliclyDescription": "任何拥有链接的人都可访问", - "connectToCloud": "连接到云端", - "connectToCloudDescription": "登录 Roo Code Cloud 以分享任务", - "sharingDisabledByOrganization": "组织已禁用分享功能", - "shareSuccessOrganization": "组织链接已复制到剪贴板", - "shareSuccessPublic": "公开链接已复制到剪贴板", "openApiHistory": "打开 API 历史", "openUiHistory": "打开 UI 历史", "backToParentTask": "父任务" @@ -98,7 +88,7 @@ "enqueueMessage": "将消息加入队列(当前任务完成后发送)", "scrollToBottom": "滚动到聊天底部", "scrollToLatestCheckpoint": "滚动到上一个检查点", - "about": "Roo Code 是您编辑器中的整个 AI 开发团队。", + "about": "Zoo Code 是您编辑器中的整个 AI 开发团队。", "docs": "查看我们的 文档 了解更多信息。", "onboarding": "此工作区中的任务列表为空。", "rooTips": { @@ -162,7 +152,7 @@ "500": "提供商服务器错误。提供商端出现问题,您的请求无问题。", "docs": "文档", "goToSettings": "设置", - "unknown": "未知 API 错误。请联系 Roo Code 支持。", + "unknown": "未知 API 错误。请联系 Zoo Code 支持。", "connection": "连接错误。确保您有可用的互联网连接。", "claudeCodeNotAuthenticated": "你需要登录才能使用 Claude Code。前往设置并点击「登录到 Claude Code」进行身份验证。" } @@ -202,9 +192,9 @@ "wantsToInsert": "需要在此文件中插入内容", "wantsToInsertWithLineNumber": "需要在第 {{lineNumber}} 行插入内容", "wantsToInsertAtEnd": "需要在文件末尾添加内容", - "wantsToReadAndXMore": "Roo 想读取此文件以及另外 {{count}} 个文件", - "wantsToReadMultiple": "Roo 想要读取多个文件", - "wantsToApplyBatchChanges": "Roo 想要对多个文件应用更改", + "wantsToReadAndXMore": "Zoo 想读取此文件以及另外 {{count}} 个文件", + "wantsToReadMultiple": "Zoo 想要读取多个文件", + "wantsToApplyBatchChanges": "Zoo 想要对多个文件应用更改", "wantsToGenerateImage": "需要生成图片", "wantsToGenerateImageOutsideWorkspace": "需要在工作区外生成图片", "wantsToGenerateImageProtected": "需要在受保护位置生成图片", @@ -223,7 +213,7 @@ "didViewTopLevelOutsideWorkspace": "已查看目录文件列表(工作区外)", "wantsToViewRecursiveOutsideWorkspace": "需要查看目录所有文件(工作区外)", "didViewRecursiveOutsideWorkspace": "已查看目录所有文件(工作区外)", - "wantsToViewMultipleDirectories": "Roo 想要查看多个目录" + "wantsToViewMultipleDirectories": "Zoo 想要查看多个目录" }, "commandOutput": "命令输出", "commandExecution": { @@ -246,7 +236,7 @@ "response": "响应", "arguments": "参数", "text": { - "rooSaid": "Roo 说" + "rooSaid": "Zoo 说" }, "feedback": { "youSaid": "你说" @@ -288,7 +278,7 @@ "copyToClipboard": "复制到剪贴板", "copied": "已复制!", "diagnostics": "获取详细错误信息", - "proxyProvider": "看起来你在使用基于代理的提供商。请检查日志并确保它不会重写 Roo 的请求。" + "proxyProvider": "看起来你在使用基于代理的提供商。请检查日志并确保它不会重写 Zoo 的请求。" }, "powershell": { "issues": "看起来您遇到了Windows PowerShell问题,请参阅此" @@ -331,31 +321,24 @@ } }, "skill": { - "wantsToLoad": "Roo 想要加载技能", - "didLoad": "Roo 加载了技能" + "wantsToLoad": "Zoo 想要加载技能", + "didLoad": "Zoo 加载了技能" }, "followUpSuggest": { "copyToInput": "复制到输入框(或按住Shift点击)", "timerPrefix": "自动批准已启用。{{seconds}}秒后选择中…" }, "announcement": { - "title": "Roo Code {{version}} 已发布", - "support": "请在 GitHub 上为我们点星支持 Roo Code。", - "stealthModel": { - "feature": "限时免费隐形模型 - Code Supernova:现已升级为 1M Token 上下文窗口!一个支持图像输入的多功能代理编程模型,通过 Roo Code Cloud 提供。", - "note": "(注意:提示词和补全内容会被模型创建者记录并用于改进模型)", - "connectButton": "连接到 Roo Code Cloud", - "selectModel": "在设置中从 Roo Code Cloud 提供商选择 roo/code-supernova 开始使用。", - "goToSettingsButton": "前往设置" - }, + "title": "Zoo Code {{version}} 已发布", + "support": "请在 GitHub 上为 Zoo Code 点星支持我们。", "handoff": { - "heading": "Roo Code 插件不会消失。", - "description": "你可能已经看到最近的公告:Roo Code 已突破 300 万次安装,原团队正全力投入 Roomote。我们知道这个消息让许多人感到难受。这个插件对我们和你都意义重大,你的心声我们听到了。好消息是:一支社区团队已挺身而出,继续推进 Roo Code,我们正与他们协作进行正式交接,让你所依赖的插件继续得到维护和改进。", - "readMore": "阅读 Matt Rubens 的原始公告" + "heading": "Zoo Code 回来了,现在以社区维护的 Zoo Code 插件之名继续前进!!", + "description": "如果你还没关注到,Zoo Code 团队最近宣布将逐步停止 Zoo Code 的开发,并归档他们已经完成的工作。但别担心,社区已经站了出来,以全新的名称和新家园延续 Zoo Code 的传承!我们不再只是一个单独的“Roo”,而是一个社区,一个“Zoo”。Zoo Code 是一个由社区维护的插件,在 Zoo Code 停下的地方继续前进。我们会继续保留 Roo 的精神,同时带来新功能和改进。我们也要向整个 Zoo Code 团队致以诚挚感谢,感谢他们的卓越工作,打造出这样一款出色的开发者工具。我们很高兴能在他们打下的基础上继续建设,也期待看到社区未来会把 Zoo Code 带到哪里!", + "readMore": "查看 Zoo Code 的新主页并阅读完整公告" }, "release": { "heading": "新增功能:", - "gpt55": "通过 OpenAI Codex 支持 GPT-5.5:已在 OpenAI Codex 提供商中新增 GPT-5.5 支持,让你可以直接在 Roo Code 中使用最新模型。", + "gpt55": "通过 OpenAI Codex 支持 GPT-5.5:已在 OpenAI Codex 提供商中新增 GPT-5.5 支持,让你可以直接在 Zoo Code 中使用最新模型。", "claudeOpus47": "Vertex AI 上的 Claude Opus 4.7:已将 Anthropic 最新旗舰推理模型 Claude Opus 4.7 添加到 Vertex AI 提供商。", "checkpointNav": "上一存档点导航:在聊天中新增控件,可回退到此前的存档点,并提供完整的 i18n 支持。" }, @@ -381,13 +364,13 @@ "profileViolationWarning": "当前配置文件与您的组织设置不兼容", "shellIntegration": { "title": "命令执行警告", - "description": "您的命令正在没有 VSCode 终端 shell 集成的情况下执行。要隐藏此警告,您可以在 Roo Code 设置Terminal 部分禁用 shell 集成,或使用下方链接排查 VSCode 终端集成问题。", + "description": "您的命令正在没有 VSCode 终端 shell 集成的情况下执行。要隐藏此警告,您可以在 Zoo Code 设置Terminal 部分禁用 shell 集成,或使用下方链接排查 VSCode 终端集成问题。", "troubleshooting": "点击此处查看 shell 集成文档。" }, "ask": { "autoApprovedRequestLimitReached": { "title": "已达自动批准请求限制", - "description": "Roo 已达到 {{count}} 次 API 请求的自动批准限制。您想重置计数并继续任务吗?", + "description": "Zoo 已达到 {{count}} 次 API 请求的自动批准限制。您想重置计数并继续任务吗?", "button": "重置并继续" }, "autoApprovedCostLimitReached": { @@ -397,8 +380,8 @@ } }, "codebaseSearch": { - "wantsToSearch": "Roo 需要搜索代码库: {{query}}", - "wantsToSearchWithPath": "Roo 需要在 {{path}} 中搜索: {{query}}", + "wantsToSearch": "Zoo 需要搜索代码库: {{query}}", + "wantsToSearchWithPath": "Zoo 需要在 {{path}} 中搜索: {{query}}", "didSearch_one": "找到 1 个结果", "didSearch_other": "找到 {{count}} 个结果", "resultTooltip": "相似度评分: {{score}} (点击打开文件)" @@ -439,7 +422,7 @@ "ariaLabel": "版本 {{version}} - 点击查看发布说明" }, "rooCloudCTA": { - "title": "Roo Code Cloud 正在进化!", + "title": "Zoo Code Cloud 正在进化!", "description": "在云端运行远程代理,随时随地访问任务,与他人协作等更多功能。", "joinWaitlist": "注册获取最新更新。" }, @@ -480,8 +463,8 @@ "clickToEdit": "点击编辑消息" }, "slashCommand": { - "wantsToRun": "Roo 想要运行斜杠命令", - "didRun": "Roo 运行了斜杠命令" + "wantsToRun": "Zoo 想要运行斜杠命令", + "didRun": "Zoo 运行了斜杠命令" }, "todo": { "partial": "已完成 {{completed}} / {{total}} 个待办事项", @@ -500,11 +483,11 @@ "openMcpSettings": "打开 MCP 设置" }, "readCommandOutput": { - "title": "Roo read command output" + "title": "Zoo read command output" }, "retiredProvider": { "title": "供应商不再受支持", - "message": "抱歉,此供应商已不再受支持。我们发现实际使用它的 Roo 用户非常少,我们需要缩减代码库的范围,以便继续快速交付并更好地服务社区。这是一个非常艰难的决定,但它能让我们专注于对你最重要的事情。我们知道这很遗憾。", + "message": "此提供商已不可用。请选择受支持的提供商以继续。", "openSettings": "打开设置" } } diff --git a/webview-ui/src/i18n/locales/zh-CN/cloud.json b/webview-ui/src/i18n/locales/zh-CN/cloud.json deleted file mode 100644 index 560218c56f4..00000000000 --- a/webview-ui/src/i18n/locales/zh-CN/cloud.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "title": "Cloud", - "profilePicture": "头像", - "logOut": "退出登录", - "testApiAuthentication": "测试 API 认证", - "signIn": "连接到 Roo Code Cloud", - "connect": "开始使用", - "cloudBenefitsTitle": "试用 Roo Code Cloud", - "cloudBenefitProvider": "访问与 Roo 完美配合的免费和付费模型", - "cloudBenefitCloudAgents": "将任务分配给自主云代理", - "cloudBenefitTriggers": "在 GitHub 上获取代码审查,从 Slack 启动任务等等", - "cloudBenefitWalkaway": "随时随地(包括您的手机)跟踪和控制任务", - "cloudBenefitHistory": "随时随地访问您的任务历史记录并与他人共享", - "cloudBenefitMetrics": "获取您的令牌消耗的整体视图", - "visitCloudWebsite": "访问 Roo Code Cloud", - "taskSync": "任务同步", - "taskSyncDescription": "同步您的任务以在 Roo Code Cloud 上查看和共享", - "taskSyncManagedByOrganization": "任务同步由您的组织管理", - "usageMetricsAlwaysReported": "登录时始终报告模型使用信息", - "authWaiting": "等待身份验证完成...", - "havingTrouble": "遇到问题?", - "pasteCallbackUrl": "从浏览器复制重定向 URL 并粘贴到这里:", - "startOver": "重新开始", - "personalAccount": "个人账户", - "switchAccount": "切换 Roo Code Cloud 账户", - "createTeamAccount": "创建团队账户", - "cloudUrlPillLabel": "Roo Code Cloud URL", - "upsell": { - "autoApprovePowerUser": "给 Roo 一些独立性?使用 Roo Code Cloud 从任何地方控制它。 了解更多。", - "longRunningTask": "这可能需要一段时间。使用 Cloud 从任何地方继续。", - "taskList": "喜欢Roo吗?快来看看Roo Code Cloud:随时随地关注和控制您的任务,运行自主云代理,获取使用统计数据等等。 了解更多。" - } -} diff --git a/webview-ui/src/i18n/locales/zh-CN/marketplace.json b/webview-ui/src/i18n/locales/zh-CN/marketplace.json index 34e2099aa53..c5da8df28ae 100644 --- a/webview-ui/src/i18n/locales/zh-CN/marketplace.json +++ b/webview-ui/src/i18n/locales/zh-CN/marketplace.json @@ -1,5 +1,5 @@ { - "title": "Roo Marketplace", + "title": "Zoo Marketplace", "tabs": { "installed": "已安装", "settings": "设置", diff --git a/webview-ui/src/i18n/locales/zh-CN/mcp.json b/webview-ui/src/i18n/locales/zh-CN/mcp.json index 601d1b2a135..652ab77dec7 100644 --- a/webview-ui/src/i18n/locales/zh-CN/mcp.json +++ b/webview-ui/src/i18n/locales/zh-CN/mcp.json @@ -6,12 +6,12 @@ "instructions": "使用说明", "enableToggle": { "title": "启用 MCP 服务器", - "description": "开启后 Roo 可用已连接 MCP 服务器的工具,能力更强。不用这些工具时建议关闭,节省 API Token 费用。" + "description": "开启后 Zoo 可用已连接 MCP 服务器的工具,能力更强。不用这些工具时建议关闭,节省 API Token 费用。" }, "enableServerCreation": { "title": "启用 MCP 服务器创建", - "description": "开启后 Roo 可帮你创建<1>新自定义 MCP 服务器。<0>了解服务器创建", - "hint": "提示:不需要 Roo 创建新 MCP 服务器时建议关闭,减少 API Token 费用。" + "description": "开启后 Zoo 可帮你创建<1>新自定义 MCP 服务器。<0>了解服务器创建", + "hint": "提示:不需要 Zoo 创建新 MCP 服务器时建议关闭,减少 API Token 费用。" }, "editGlobalMCP": "编辑全局 MCP", "editProjectMCP": "编辑项目 MCP", diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json index 80ca437ce77..76885a89ba5 100644 --- a/webview-ui/src/i18n/locales/zh-CN/settings.json +++ b/webview-ui/src/i18n/locales/zh-CN/settings.json @@ -40,7 +40,7 @@ "ui": "UI", "experimental": "实验性", "language": "语言", - "about": "关于 Roo Code", + "about": "关于 Zoo Code", "skills": "Skills" }, "about": { @@ -56,7 +56,7 @@ "label": "发现安全漏洞?", "link": "遵循我们的披露流程" }, - "community": "想要获取使用技巧或与其他 Roo Code 用户交流?加入 reddit.com/r/RooCodediscord.gg/roocode", + "community": "想要获取使用技巧或与其他 Zoo Code 用户交流?加入 reddit.com/r/RooCodediscord.gg/roocode", "contactAndCommunity": "联系与社区", "manageSettings": "管理设置", "debugMode": { @@ -100,7 +100,7 @@ "footer": "使用斜杠命令快速访问经常使用的提示词和工作流。" }, "prompts": { - "description": "配置用于快速操作的支持提示词,如增强提示词、解释代码和修复问题。这些提示词帮助 Roo 为常见开发任务提供更好的支持。" + "description": "配置用于快速操作的支持提示词,如增强提示词、解释代码和修复问题。这些提示词帮助 Zoo 为常见开发任务提供更好的支持。" }, "codeIndex": { "title": "代码库索引", @@ -223,10 +223,10 @@ "disabledAriaLabel": "自动批准已禁用 - 请先选择选项", "readOnly": { "label": "读取", - "description": "启用后,Roo 将自动浏览目录和读取文件内容,无需人工确认。", + "description": "启用后,Zoo 将自动浏览目录和读取文件内容,无需人工确认。", "outsideWorkspace": { "label": "包含工作区外的文件", - "description": "允许 Roo 读取当前工作区外的文件,无需批准。" + "description": "允许 Zoo 读取当前工作区外的文件,无需批准。" } }, "write": { @@ -235,11 +235,11 @@ "delayLabel": "延迟一段时间再自动批准写入,可以在期间检查模型输出是否有问题", "outsideWorkspace": { "label": "包含工作区外的文件", - "description": "允许 Roo 创建和编辑当前工作区外的文件,无需批准。" + "description": "允许 Zoo 创建和编辑当前工作区外的文件,无需批准。" }, "protected": { "label": "包含受保护的文件", - "description": "允许 Roo 创建和编辑受保护的文件(如 .rooignore 和 .roo/ 配置文件),无需批准。" + "description": "允许 Zoo 创建和编辑受保护的文件(如 .rooignore 和 .roo/ 配置文件),无需批准。" } }, "mcp": { @@ -306,7 +306,7 @@ "searchProviderPlaceholder": "搜索提供商", "noProviderMatchFound": "未找到提供商", "noMatchFound": "未找到匹配的配置文件", - "retiredProviderMessage": "抱歉,此供应商已不再受支持。我们发现实际使用它的 Roo 用户非常少,我们需要缩减代码库的范围,以便继续快速交付并更好地服务社区。这是一个非常艰难的决定,但它能让我们专注于对你最重要的事情。我们知道这很遗憾。", + "retiredProviderMessage": "此提供商已不可用。请选择受支持的提供商以继续。", "vscodeLmDescription": "VS Code 语言模型 API 允许您运行由其他 VS Code 扩展(包括但不限于 GitHub Copilot)提供的模型。最简单的方法是从 VS Code 市场安装 Copilot 和 Copilot Chat 扩展。", "awsCustomArnUse": "请输入有效的 Amazon Bedrock ARN(Amazon资源名称),格式示例:", "awsCustomArnDesc": "请确保ARN中的区域与上方选择的AWS区域一致。", @@ -456,7 +456,7 @@ "draftModelDesc": "草稿模型必须来自相同的模型系列,推测性解码才能正常工作。", "selectDraftModel": "选择草稿模型", "noModelsFound": "未找到草稿模型。请确保 LM Studio 已启用服务器模式运行。", - "description": "LM Studio 允许您在本地计算机上运行模型。要了解如何开始,请参阅他们的 快速入门指南。您还需要启动 LM Studio 的 本地服务器 功能,以便与此扩展一起使用。注意:Roo Code 使用复杂的提示,并且在 Claude 模型上效果最佳。功能较弱的模型可能无法正常工作。" + "description": "LM Studio 允许您在本地计算机上运行模型。要了解如何开始,请参阅他们的 快速入门指南。您还需要启动 LM Studio 的 本地服务器 功能,以便与此扩展一起使用。注意:Zoo Code 使用复杂的提示,并且在 Claude 模型上效果最佳。功能较弱的模型可能无法正常工作。" }, "ollama": { "baseUrl": "基础 URL(可选)", @@ -466,11 +466,7 @@ "numCtx": "上下文窗口大小 (num_ctx)", "numCtxHelp": "覆盖模型的默认上下文窗口大小。留空以使用模型的 Modelfile 配置。最小值为 128。", "description": "Ollama 允许您在本地计算机上运行模型。有关如何开始使用的说明,请参阅其快速入门指南。", - "warning": "注意:Roo Code 使用复杂的提示,与 Claude 模型配合最佳。功能较弱的模型可能无法按预期工作。" - }, - "roo": { - "authenticatedMessage": "已通过 Roo Code Cloud 账户安全认证。", - "connectButton": "连接到 Roo Code Cloud" + "warning": "注意:Zoo Code 使用复杂的提示,与 Claude 模型配合最佳。功能较弱的模型可能无法按预期工作。" }, "openRouter": { "providerRouting": { @@ -569,12 +565,12 @@ "notifications": { "sound": { "label": "启用声音通知", - "description": "启用后,Roo 将为通知和事件播放音效。", + "description": "启用后,Zoo 将为通知和事件播放音效。", "volumeLabel": "音量" }, "tts": { "label": "启用文本转语音", - "description": "启用后,Roo 将使用文本转语音功能朗读其响应。", + "description": "启用后,Zoo 将使用文本转语音功能朗读其响应。", "speedLabel": "速度" } }, @@ -582,7 +578,7 @@ "description": "管理AI上下文信息(影响token用量和回答质量)", "autoCondenseContextPercent": { "label": "触发智能上下文压缩的阈值", - "description": "当上下文窗口达到此阈值时,Roo 将自动压缩它。" + "description": "当上下文窗口达到此阈值时,Zoo 将自动压缩它。" }, "condensingApiConfiguration": { "label": "上下文压缩的API配置", @@ -598,7 +594,7 @@ }, "autoCondenseContext": { "name": "自动触发智能上下文压缩", - "description": "启用时,Roo 将在达到阈值时自动压缩上下文。禁用时,您仍可以手动触发上下文压缩。" + "description": "启用时,Zoo 将在达到阈值时自动压缩上下文。禁用时,您仍可以手动触发上下文压缩。" }, "openTabs": { "label": "标签页数量限制", @@ -685,15 +681,15 @@ }, "outputLineLimit": { "label": "终端输出限制", - "description": "保留首尾行并丢弃中间行以保持在限制内。降低可节省 token;提高可为 Roo 提供更多中间细节。Roo 看到内容被跳过的占位符。<0>了解更多" + "description": "保留首尾行并丢弃中间行以保持在限制内。降低可节省 token;提高可为 Zoo 提供更多中间细节。Zoo 看到内容被跳过的占位符。<0>了解更多" }, "outputCharacterLimit": { "label": "终端字符限制", - "description": "通过强制限制输出大小来覆盖行限制以防止内存问题。如果超出,保留开头和结尾并向 Roo 显示内容被跳过的占位符。<0>了解更多" + "description": "通过强制限制输出大小来覆盖行限制以防止内存问题。如果超出,保留开头和结尾并向 Zoo 显示内容被跳过的占位符。<0>了解更多" }, "outputPreviewSize": { "label": "命令输出预览大小", - "description": "控制 Roo 直接看到的命令输出量。完整输出始终会被保存,需要时可以访问。", + "description": "控制 Zoo 直接看到的命令输出量。完整输出始终会被保存,需要时可以访问。", "options": { "small": "小 (5KB)", "medium": "中 (10KB)", @@ -706,7 +702,7 @@ }, "shellIntegrationDisabled": { "label": "使用内联终端(推荐)", - "description": "在内联终端(聊天)中运行命令以绕过 shell 配置文件/集成,实现更快、更可靠的运行。禁用时,Roo 使用 VS Code 终端及您的 shell 配置文件、提示和插件。<0>了解更多" + "description": "在内联终端(聊天)中运行命令以绕过 shell 配置文件/集成,实现更快、更可靠的运行。禁用时,Zoo 使用 VS Code 终端及您的 shell 配置文件、提示和插件。<0>了解更多" }, "commandDelay": { "label": "终端命令延迟", @@ -743,7 +739,7 @@ "advanced": { "diff": { "label": "启用diff更新", - "description": "启用后,Roo 将能够通过差异算法写入,避免模型输出完整文件,以降低Token消耗", + "description": "启用后,Zoo 将能够通过差异算法写入,避免模型输出完整文件,以降低Token消耗", "strategy": { "label": "Diff 策略", "options": { @@ -760,7 +756,7 @@ }, "todoList": { "label": "启用任务清单工具", - "description": "启用后,Roo 可以创建和管理任务清单来跟踪任务进度。这有助于将复杂任务组织成可管理的步骤。" + "description": "启用后,Zoo 可以创建和管理任务清单来跟踪任务进度。这有助于将复杂任务组织成可管理的步骤。" } }, "experimental": { @@ -770,15 +766,15 @@ }, "INSERT_BLOCK": { "name": "启用插入内容工具", - "description": "允许 Roo 在特定行号插入内容,无需处理差异。" + "description": "允许 Zoo 在特定行号插入内容,无需处理差异。" }, "MULTI_SEARCH_AND_REPLACE": { "name": "允许批量搜索和替换", - "description": "启用后,Roo 将尝试在一个请求中进行批量搜索和替换。" + "description": "启用后,Zoo 将尝试在一个请求中进行批量搜索和替换。" }, "CONCURRENT_FILE_READS": { "name": "启用并发文件读取", - "description": "启用后,Roo 可以在单个请求中读取多个文件。禁用后,Roo 必须逐个读取文件。在使用能力较弱的模型或希望对文件访问有更多控制时,禁用此功能可能会有所帮助。" + "description": "启用后,Zoo 可以在单个请求中读取多个文件。禁用后,Zoo 必须逐个读取文件。在使用能力较弱的模型或希望对文件访问有更多控制时,禁用此功能可能会有所帮助。" }, "MARKETPLACE": { "name": "启用 Marketplace", @@ -786,7 +782,7 @@ }, "PREVENT_FOCUS_DISRUPTION": { "name": "后台编辑", - "description": "启用后防止编辑器焦点干扰。文件编辑在后台进行,不会打开差异视图或抢夺焦点。你可以在 Roo 进行更改时继续不受干扰地工作。文件可以在不获取焦点的情况下打开以捕获诊断信息,或保持完全关闭状态。" + "description": "启用后防止编辑器焦点干扰。文件编辑在后台进行,不会打开差异视图或抢夺焦点。你可以在 Zoo 进行更改时继续不受干扰地工作。文件可以在不获取焦点的情况下打开以捕获诊断信息,或保持完全关闭状态。" }, "ASSISTANT_MESSAGE_PARSER": { "name": "使用新的消息解析器", @@ -800,7 +796,7 @@ "providerLabel": "提供商", "providerDescription": "选择用于图像生成的提供商。", "name": "启用 AI 图像生成", - "description": "启用后,Roo 可以使用 OpenRouter 的图像生成模型从文本提示生成图像。需要配置 OpenRouter API 密钥。", + "description": "启用后,Zoo 可以使用 OpenRouter 的图像生成模型从文本提示生成图像。需要配置 OpenRouter API 密钥。", "openRouterApiKeyLabel": "OpenRouter API 密钥", "openRouterApiKeyPlaceholder": "输入您的 OpenRouter API 密钥", "getApiKeyText": "获取您的 API 密钥", @@ -811,11 +807,11 @@ }, "RUN_SLASH_COMMAND": { "name": "启用模型发起的斜杠命令", - "description": "启用后 Roo 可运行斜杠命令执行工作流程。" + "description": "启用后 Zoo 可运行斜杠命令执行工作流程。" }, "CUSTOM_TOOLS": { "name": "启用自定义工具", - "description": "启用后 Roo 可从项目中的 .roo/tools 目录或全局工具目录 ~/.roo/tools 加载并使用自定义 TypeScript/JavaScript 工具。注意:这些工具将自动获批。", + "description": "启用后 Zoo 可从项目中的 .roo/tools 目录或全局工具目录 ~/.roo/tools 加载并使用自定义 TypeScript/JavaScript 工具。注意:这些工具将自动获批。", "toolsHeader": "可用自定义工具", "noTools": "未加载自定义工具。请向项目的 .roo/tools 目录或全局工具目录 ~/.roo/tools 添加 .ts 或 .js 文件。", "refreshButton": "刷新", @@ -827,7 +823,7 @@ }, "promptCaching": { "label": "禁用提示词缓存", - "description": "选中后,Roo 将不会为此模型使用提示词缓存。" + "description": "选中后,Zoo 将不会为此模型使用提示词缓存。" }, "temperature": { "useCustom": "使用自定义温度", @@ -857,7 +853,7 @@ } }, "modelPicker": { - "automaticFetch": "自动获取 {{serviceName}} 上可用的最新模型列表。如果您不确定选择哪个模型,Roo Code 与 {{defaultModelId}} 配合最佳。您还可以搜索\"free\"以查找当前可用的免费选项。", + "automaticFetch": "自动获取 {{serviceName}} 上可用的最新模型列表。如果您不确定选择哪个模型,Zoo Code 与 {{defaultModelId}} 配合最佳。您还可以搜索\"free\"以查找当前可用的免费选项。", "label": "模型", "searchPlaceholder": "搜索", "noMatchFound": "未找到匹配项", @@ -867,7 +863,7 @@ "footer": { "telemetry": { "label": "允许匿名数据收集", - "description": "通过发送匿名使用数据和错误报告来帮助改进 Roo Code。此遥测不会收集代码、提示 或个人信息。详细信息请参阅我们的隐私政策。您可以随时关闭此功能。" + "description": "通过发送匿名使用数据和错误报告来帮助改进 Zoo Code。此遥测不会收集代码、提示 或个人信息。详细信息请参阅我们的隐私政策。您可以随时关闭此功能。" }, "settings": { "import": "导入", diff --git a/webview-ui/src/i18n/locales/zh-CN/welcome.json b/webview-ui/src/i18n/locales/zh-CN/welcome.json index 04bd6b4498b..81b46359299 100644 --- a/webview-ui/src/i18n/locales/zh-CN/welcome.json +++ b/webview-ui/src/i18n/locales/zh-CN/welcome.json @@ -1,52 +1,18 @@ { - "routers": { - "requesty": { - "description": "您优化的 LLM 路由器", - "incentive": "$1 免费额度" - }, - "openrouter": { - "description": "LLM 统一接口" - }, - "roo": { - "description": "开始使用的最佳免费模型", - "incentive": "免费尝试 Roo" - } - }, "landing": { "greeting": "欢迎使用 Roo Code!", "introduction": "通过一系列内置和可扩展的模式,Roo Code 让你能够以前所未有的方式进行规划、架构设计、编码、调试并提升工作效率。", - "accountMention": "开始使用,创建你的 Roo Code Cloud 账户。获得强大模型、网络控制、分析、支持等。", - "getStarted": "创建 Roo 账户", - "noAccount": "或不使用账户" + "getStarted": "选择你的供应商" }, "providerSignup": { "heading": "选择你的供应商", "chooseProvider": "Roo 需要 LLM 提供商才能工作。选择一个开始使用,你可以稍后添加更多。", - "rooCloudProvider": "Roo Code Cloud 提供商", - "rooCloudDescription": "开始使用最简单的方式是使用 Roo Code Cloud 提供商:精心选择的免费和付费模型组合,价格低廉。", - "learnMore": "了解更多", - "useAnotherProvider": "第三方供应商", - "useAnotherProviderDescription": "输入 API 密钥开始使用。", - "noApiKeys": "不想处理 API 密钥和单独的账户?", - "backToRoo": "选择 Roo Code Cloud 提供商。", "goBack": "返回", "finish": "完成" }, - "waitingForCloud": { - "heading": "登录到 Roo Code Cloud...", - "description": "我们将带你前往浏览器注册 Roo Code Cloud。然后我们会把你带回这里以完成设置。", - "noPrompt": "如果没有提示你打开 URL,点击这里。", - "havingTrouble": "如果你已完成注册但遇到问题,点击这里。", - "pasteUrl": "粘贴浏览器中显示的回调 URL:", - "docsLink": "无法正常工作?查看文档。", - "invalidURL": "这不像是有效的回调 URL。请复制 Roo Code Cloud 在你的浏览器中显示的内容。", - "goBack": "返回" - }, - "startRouter": "我们建议使用 LLM 路由器:", - "startCustom": "或者你可以带上自己的 API 密钥:", "telemetry": { - "helpImprove": "帮助改进 Roo Code", - "helpImproveMessage": "Roo Code 收集错误和使用数据以帮助我们修复 Bug 并改进扩展。此遥测不收集代码、提示或个人信息。你可以在设置中将其关闭。" + "helpImprove": "帮助改进 Zoo Code", + "helpImproveMessage": "Zoo Code 收集错误和使用数据以帮助我们修复 Bug 并改进扩展。此遥测不收集代码、提示或个人信息。你可以在设置中将其关闭。" }, "importSettings": "导入设置" } diff --git a/webview-ui/src/i18n/locales/zh-CN/worktrees.json b/webview-ui/src/i18n/locales/zh-CN/worktrees.json index 2ff06dd9a77..1a0caaad588 100644 --- a/webview-ui/src/i18n/locales/zh-CN/worktrees.json +++ b/webview-ui/src/i18n/locales/zh-CN/worktrees.json @@ -1,28 +1,23 @@ { "title": "Worktrees", "done": "完成", - "description": "Git worktrees 可让你在不同目录中同时处理多个分支。每个 worktree 都会拥有一个带 Roo Code 的独立 VS Code 窗口。", - + "description": "Git worktrees 可让你在不同目录中同时处理多个分支。每个 worktree 都会拥有一个带 Zoo Code 的独立 VS Code 窗口。", "notGitRepo": "此工作区不是 Git 仓库。worktrees 需要 Git 仓库才能工作。", "multiRootNotSupported": "多根工作区不支持 worktrees。请打开单个文件夹以使用 worktrees。", "subfolderNotSupported": "此工作区是 Git 仓库的子文件夹。请打开仓库根目录以使用 worktrees。", "gitRoot": "Git 根目录", - "includeFileExists": "已找到 .worktreeinclude 文件 — 文件将复制到新 worktrees", "noIncludeFile": "未找到 .worktreeinclude 文件", "createFromGitignore": "从 .gitignore 创建", - "primary": "主", "current": "当前", "locked": "已锁定", "detachedHead": "Detached HEAD", "noBranch": "无分支", - "switchInThisWindow": "切换到 worktree", "openInNewWindow": "在新窗口打开", "delete": "删除", "newWorktree": "新建 Worktree", - "createWorktree": "创建 Worktree", "branchName": "分支名称", "createNewBranch": "创建新分支", @@ -44,7 +39,6 @@ "copyingFiles": "正在复制文件...", "copyingProgress": "{{item}} — {{copied}} 已复制", "cancel": "取消", - "deleteWorktree": "删除 Worktree", "deleteWarning": "此操作不可逆。将删除以下内容:", "deleteWarningBranch": "分支以及所有未提交的更改", @@ -53,11 +47,8 @@ "forceDelete": "强制删除", "worktreeIsLocked": "worktree 已锁定", "deleting": "正在删除...", - "close": "关闭", - "showInHomeScreen": "在主屏幕显示 worktrees", - "selector": { "worktree": "Worktree", "title": "Worktrees", diff --git a/webview-ui/src/i18n/locales/zh-TW/chat.json b/webview-ui/src/i18n/locales/zh-TW/chat.json index 515124e8e1d..39c551c72ce 100644 --- a/webview-ui/src/i18n/locales/zh-TW/chat.json +++ b/webview-ui/src/i18n/locales/zh-TW/chat.json @@ -1,5 +1,5 @@ { - "greeting": "歡迎使用 Roo Code!", + "greeting": "歡迎使用 Zoo Code!", "task": { "title": "工作", "expand": "展開工作", @@ -14,17 +14,7 @@ "contextWindow": "上下文長度", "closeAndStart": "關閉現有工作並開始新工作", "export": "匯出工作記錄", - "share": "分享工作", "delete": "刪除工作(按住 Shift 並點選可跳過確認)", - "shareWithOrganization": "與組織分享", - "shareWithOrganizationDescription": "僅組織成員可存取", - "sharePublicly": "公開分享", - "sharePubliclyDescription": "任何擁有連結的人都可存取", - "connectToCloud": "連線至雲端", - "connectToCloudDescription": "登入 Roo Code Cloud 以分享工作", - "sharingDisabledByOrganization": "組織已停用分享功能", - "shareSuccessOrganization": "組織連結已複製到剪貼簿", - "shareSuccessPublic": "公開連結已複製到剪貼簿", "openApiHistory": "開啟 API 歷史紀錄", "openUiHistory": "開啟 UI 歷史紀錄", "backToParentTask": "上層工作" @@ -125,7 +115,7 @@ }, "scrollToBottom": "捲動至對話底部", "scrollToLatestCheckpoint": "捲動至上一個檢查點", - "about": "Roo 是編輯器中的完整 AI 開發團隊。", + "about": "Zoo 是編輯器中的完整 AI 開發團隊。", "docs": "請參閱 說明文件 開始使用。", "onboarding": "想要做什麼呢?", "rooTips": { @@ -135,7 +125,7 @@ }, "modelAgnostic": { "title": "自備模型,無加價無鎖定", - "description": "使用自己的供應商金鑰,甚至可執行本機推論 - Roo 不額外收費" + "description": "使用自己的供應商金鑰,甚至可執行本機推論 - Zoo 不額外收費" } }, "selectMode": "選擇互動模式", @@ -147,7 +137,7 @@ "title": "模式", "marketplace": "模式市集", "settings": "模式設定", - "description": "專門量身打造 Roo 行為的角色。", + "description": "專門量身打造 Zoo 行為的角色。", "searchPlaceholder": "搜尋模式...", "noResults": "找不到結果" }, @@ -185,7 +175,7 @@ "docs": "說明文件", "goToSettings": "設定", "connection": "連線錯誤。請確保您有可用的網際網路連線。", - "unknown": "未知 API 錯誤。請聯絡 Roo Code 技術支援。", + "unknown": "未知 API 錯誤。請聯絡 Zoo Code 技術支援。", "claudeCodeNotAuthenticated": "您需要登入才能使用 Claude Code。前往設定並點選「登入 Claude Code」以進行驗證。" } }, @@ -224,49 +214,49 @@ } }, "skill": { - "wantsToLoad": "Roo 想要載入技能", - "didLoad": "Roo 載入了技能" + "wantsToLoad": "Zoo 想要載入技能", + "didLoad": "Zoo 載入了技能" }, "instructions": { "wantsToFetch": "Roo 想要取得詳細指示以協助目前工作" }, "fileOperations": { - "wantsToRead": "Roo 想要讀取此檔案", - "wantsToReadMultiple": "Roo 想要讀取多個檔案", - "wantsToReadAndXMore": "Roo 想要讀取此檔案以及另外 {{count}} 個檔案", - "wantsToReadOutsideWorkspace": "Roo 想要讀取此工作區外的檔案", - "didRead": "Roo 已讀取此檔案", - "wantsToEdit": "Roo 想要編輯此檔案", - "wantsToEditOutsideWorkspace": "Roo 想要編輯此工作區外的檔案", - "wantsToEditProtected": "Roo 想要編輯受保護的設定檔案", - "wantsToApplyBatchChanges": "Roo 想要對多個檔案套用變更", - "wantsToGenerateImage": "Roo 想要產生圖片", - "wantsToGenerateImageOutsideWorkspace": "Roo 想要在工作區外產生圖片", - "wantsToGenerateImageProtected": "Roo 想要在受保護位置產生圖片", - "didGenerateImage": "Roo 已產生圖片", - "wantsToCreate": "Roo 想要建立新檔案", - "wantsToInsert": "Roo 想要在此檔案中插入內容", - "wantsToInsertWithLineNumber": "Roo 想要在此檔案第 {{lineNumber}} 行插入內容", - "wantsToInsertAtEnd": "Roo 想要在此檔案尾端新增內容" + "wantsToRead": "Zoo 想要讀取此檔案", + "wantsToReadMultiple": "Zoo 想要讀取多個檔案", + "wantsToReadAndXMore": "Zoo 想要讀取此檔案以及另外 {{count}} 個檔案", + "wantsToReadOutsideWorkspace": "Zoo 想要讀取此工作區外的檔案", + "didRead": "Zoo 已讀取此檔案", + "wantsToEdit": "Zoo 想要編輯此檔案", + "wantsToEditOutsideWorkspace": "Zoo 想要編輯此工作區外的檔案", + "wantsToEditProtected": "Zoo 想要編輯受保護的設定檔案", + "wantsToApplyBatchChanges": "Zoo 想要對多個檔案套用變更", + "wantsToGenerateImage": "Zoo 想要產生圖片", + "wantsToGenerateImageOutsideWorkspace": "Zoo 想要在工作區外產生圖片", + "wantsToGenerateImageProtected": "Zoo 想要在受保護位置產生圖片", + "didGenerateImage": "Zoo 已產生圖片", + "wantsToCreate": "Zoo 想要建立新檔案", + "wantsToInsert": "Zoo 想要在此檔案中插入內容", + "wantsToInsertWithLineNumber": "Zoo 想要在此檔案第 {{lineNumber}} 行插入內容", + "wantsToInsertAtEnd": "Zoo 想要在此檔案尾端新增內容" }, "directoryOperations": { - "wantsToViewTopLevel": "Roo 想要檢視此目錄中最上層的檔案", - "didViewTopLevel": "Roo 已檢視此目錄中最上層的檔案", - "wantsToViewTopLevelOutsideWorkspace": "Roo 想要檢視此目錄(工作區外)中最上層的檔案", - "didViewTopLevelOutsideWorkspace": "Roo 已檢視此目錄(工作區外)中最上層的檔案", - "wantsToViewRecursive": "Roo 想要遞迴檢視此目錄中的所有檔案", - "didViewRecursive": "Roo 已遞迴檢視此目錄中的所有檔案", - "wantsToViewRecursiveOutsideWorkspace": "Roo 想要遞迴檢視此目錄(工作區外)中的所有檔案", - "didViewRecursiveOutsideWorkspace": "Roo 已遞迴檢視此目錄(工作區外)中的所有檔案", - "wantsToSearch": "Roo 想要在此目錄中搜尋 {{regex}}", - "didSearch": "Roo 已在此目錄中搜尋 {{regex}}", - "wantsToSearchOutsideWorkspace": "Roo 想要在此目錄(工作區外)中搜尋 {{regex}}", - "didSearchOutsideWorkspace": "Roo 已在此目錄(工作區外)中搜尋 {{regex}}", - "wantsToViewMultipleDirectories": "Roo 想要查看多個目錄" + "wantsToViewTopLevel": "Zoo 想要檢視此目錄中最上層的檔案", + "didViewTopLevel": "Zoo 已檢視此目錄中最上層的檔案", + "wantsToViewTopLevelOutsideWorkspace": "Zoo 想要檢視此目錄(工作區外)中最上層的檔案", + "didViewTopLevelOutsideWorkspace": "Zoo 已檢視此目錄(工作區外)中最上層的檔案", + "wantsToViewRecursive": "Zoo 想要遞迴檢視此目錄中的所有檔案", + "didViewRecursive": "Zoo 已遞迴檢視此目錄中的所有檔案", + "wantsToViewRecursiveOutsideWorkspace": "Zoo 想要遞迴檢視此目錄(工作區外)中的所有檔案", + "didViewRecursiveOutsideWorkspace": "Zoo 已遞迴檢視此目錄(工作區外)中的所有檔案", + "wantsToSearch": "Zoo 想要在此目錄中搜尋 {{regex}}", + "didSearch": "Zoo 已在此目錄中搜尋 {{regex}}", + "wantsToSearchOutsideWorkspace": "Zoo 想要在此目錄(工作區外)中搜尋 {{regex}}", + "didSearchOutsideWorkspace": "Zoo 已在此目錄(工作區外)中搜尋 {{regex}}", + "wantsToViewMultipleDirectories": "Zoo 想要查看多個目錄" }, "codebaseSearch": { - "wantsToSearch": "Roo 想要在程式碼庫中搜尋 {{query}}", - "wantsToSearchWithPath": "Roo 想要在 {{path}} 中搜尋程式碼庫 {{query}}", + "wantsToSearch": "Zoo 想要在程式碼庫中搜尋 {{query}}", + "wantsToSearchWithPath": "Zoo 想要在 {{path}} 中搜尋程式碼庫 {{query}}", "didSearch_one": "找到 1 個結果", "didSearch_other": "找到 {{count}} 個結果", "resultTooltip": "相似度評分:{{score}}(點選以開啟檔案)" @@ -291,24 +281,24 @@ "response": "回應", "arguments": "參數", "text": { - "rooSaid": "Roo 說" + "rooSaid": "Zoo 說" }, "feedback": { "youSaid": "您說" }, "mcp": { - "wantsToUseTool": "Roo 想要在 {{serverName}} MCP 伺服器上使用工具", - "wantsToAccessResource": "Roo 想要存取 {{serverName}} MCP 伺服器上的資源" + "wantsToUseTool": "Zoo 想要在 {{serverName}} MCP 伺服器上使用工具", + "wantsToAccessResource": "Zoo 想要存取 {{serverName}} MCP 伺服器上的資源" }, "modes": { - "wantsToSwitch": "Roo 想要切換至 {{mode}} 模式", - "wantsToSwitchWithReason": "Roo 想要切換至 {{mode}} 模式,原因:{{reason}}", - "didSwitch": "Roo 已切換至 {{mode}} 模式", - "didSwitchWithReason": "Roo 已切換至 {{mode}} 模式,原因:{{reason}}" + "wantsToSwitch": "Zoo 想要切換至 {{mode}} 模式", + "wantsToSwitchWithReason": "Zoo 想要切換至 {{mode}} 模式,原因:{{reason}}", + "didSwitch": "Zoo 已切換至 {{mode}} 模式", + "didSwitchWithReason": "Zoo 已切換至 {{mode}} 模式,原因:{{reason}}" }, "subtasks": { - "wantsToCreate": "Roo 想要在 {{mode}} 模式下建立新的子任務", - "wantsToFinish": "Roo 想要完成此子任務", + "wantsToCreate": "Zoo 想要在 {{mode}} 模式下建立新的子任務", + "wantsToFinish": "Zoo 想要完成此子任務", "newTaskContent": "子任務指示", "resultContent": "子任務結果", "defaultResult": "請繼續下一個工作。", @@ -316,7 +306,7 @@ "goToSubtask": "查看工作" }, "questions": { - "hasQuestion": "Roo 有一個問題" + "hasQuestion": "Zoo 有一個問題" }, "taskCompleted": "工作完成", "error": "錯誤", @@ -333,12 +323,12 @@ "copyToClipboard": "複製基本錯誤資訊", "copied": "已複製!", "diagnostics": "取得詳細錯誤資訊", - "proxyProvider": "似乎正在使用代理型供應商。請檢查記錄,並確保不會重寫 Roo 的請求。" + "proxyProvider": "似乎正在使用代理型供應商。請檢查記錄,並確保不會重寫 Zoo 的請求。" }, "diffError": { "title": "編輯失敗" }, - "troubleMessage": "Roo 遇到問題...", + "troubleMessage": "Zoo 遇到問題...", "powershell": { "issues": "似乎遇到 Windows PowerShell 問題,請參閱此說明文件" }, @@ -360,23 +350,16 @@ "triggerLabelAll": "BRRR" }, "announcement": { - "title": "Roo Code {{version}} 已發布", - "support": "請在 GitHub 上給 Roo Code 星星支持我們。", - "stealthModel": { - "feature": "限時免費隱形模型 - Code Supernova:現已升級為 1M Token 上下文視窗!一個支援影像輸入的多功能代理程式設計模型,透過 Roo Code Cloud 提供。", - "note": "(注意:提示詞和回應會被模型建立者記錄並用於改進模型)", - "connectButton": "連線到 Roo Code Cloud", - "selectModel": "在設定中從 Roo Code Cloud 供應商選擇 roo/code-supernova 開始使用。", - "goToSettingsButton": "前往設定" - }, + "title": "Zoo Code {{version}} 已發布", + "support": "請在 GitHub 上為 Zoo Code 加星支持我們。", "handoff": { - "heading": "Roo Code 外掛不會消失。", - "description": "你可能已經看到最近的公告:Roo Code 已突破 300 萬次安裝,原團隊將全心投入 Roomote。我們知道這個消息讓許多人感到難受。這個外掛對我們和你都意義重大,你的心聲我們聽到了。好消息是:一支社群團隊已挺身而出,繼續推進 Roo Code,我們正與他們協作進行正式交接,讓你所仰賴的外掛持續受到維護與改進。", - "readMore": "閱讀 Matt Rubens 的原始公告" + "heading": "Zoo Code 回來了,現在以社群維護的 Zoo Code 外掛重新登場!!", + "description": "如果你最近沒有追蹤消息,Zoo Code 團隊最近宣布將逐步停止 Zoo Code 的開發,並封存他們至今完成的工作。不過別擔心,社群已經挺身而出,將以新名稱與新家園延續 Zoo Code 的傳承!我們不再只是單一的「Roo」,而是一個社群,也就是你可以稱之為「Zoo」的集合。Zoo Code 是一款由社群維護的外掛,接續 Zoo Code 停下的地方繼續前進;我們承諾在保留 Roo 精神的同時,也會帶來新功能與改進。我們也要向整個 Zoo Code 團隊致上最深的敬意,感謝他們不可思議的付出,以及為開發者打造出如此出色的工具。我們很期待在他們奠定的基礎上繼續建設,也期待看看社群未來會把 Zoo Code 帶往何方!", + "readMore": "查看 Zoo Code 的新首頁並閱讀完整公告" }, "release": { "heading": "新增功能:", - "gpt55": "透過 OpenAI Codex 支援 GPT-5.5:已在 OpenAI Codex 供應商中新增 GPT-5.5 支援,讓你可以直接在 Roo Code 中使用最新模型。", + "gpt55": "透過 OpenAI Codex 支援 GPT-5.5:已在 OpenAI Codex 供應商中新增 GPT-5.5 支援,讓你可以直接在 Zoo Code 中使用最新模型。", "claudeOpus47": "Vertex AI 上的 Claude Opus 4.7:已將 Anthropic 最新旗艦推理模型 Claude Opus 4.7 新增至 Vertex AI 供應商。", "checkpointNav": "前一個存檔點導覽:在聊天中新增控制項,可回到此前的存檔點,並提供完整的 i18n 支援。" }, @@ -410,18 +393,18 @@ "profileViolationWarning": "目前設定檔與您的組織設定不相容", "shellIntegration": { "title": "命令執行警告", - "description": "命令正在沒有 VS Code 終端機 Shell 整合的情況下執行。若要隱藏此警告,可在 Roo Code 設定終端機 區塊中停用 Shell 整合,或使用下方連結排解 VS Code 終端機整合問題。", + "description": "命令正在沒有 VS Code 終端機 Shell 整合的情況下執行。若要隱藏此警告,可在 Zoo Code 設定終端機 區塊中停用 Shell 整合,或使用下方連結排解 VS Code 終端機整合問題。", "troubleshooting": "點選此處查看 Shell 整合說明文件。" }, "ask": { "autoApprovedRequestLimitReached": { "title": "已達自動核准請求上限", - "description": "Roo 已達到 {{count}} 次 API 請求的自動核准上限。您想重設計數並繼續工作嗎?", + "description": "Zoo 已達到 {{count}} 次 API 請求的自動核准上限。您想重設計數並繼續工作嗎?", "button": "重設並繼續" }, "autoApprovedCostLimitReached": { "title": "已達自動核准費用上限", - "description": "Roo 已達到 ${{count}} 的自動核准費用上限。您想重設費用並繼續工作嗎?", + "description": "Zoo 已達到 ${{count}} 的自動核准費用上限。您想重設費用並繼續工作嗎?", "button": "重設並繼續" } }, @@ -460,8 +443,8 @@ } }, "slashCommand": { - "wantsToRun": "Roo 想要執行斜線指令", - "didRun": "Roo 執行了斜線指令" + "wantsToRun": "Zoo 想要執行斜線指令", + "didRun": "Zoo 執行了斜線指令" }, "queuedMessages": { "title": "佇列中的訊息", @@ -490,11 +473,11 @@ "openMcpSettings": "開啟 MCP 設定" }, "readCommandOutput": { - "title": "Roo read command output" + "title": "Zoo read command output" }, "retiredProvider": { "title": "供應商不再受支援", - "message": "抱歉,此供應商已不再受支援。我們發現實際使用它的 Roo 使用者非常少,我們需要縮減程式碼庫的範圍,以便繼續快速交付並更好地服務社群。這是一個非常艱難的決定,但它能讓我們專注於對你最重要的事情。我們知道這很遺憾。", + "message": "此供應商已不可用。請選擇受支援的供應商以繼續。", "openSettings": "開啟設定" } } diff --git a/webview-ui/src/i18n/locales/zh-TW/cloud.json b/webview-ui/src/i18n/locales/zh-TW/cloud.json deleted file mode 100644 index 032c18ed915..00000000000 --- a/webview-ui/src/i18n/locales/zh-TW/cloud.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "title": "Cloud", - "profilePicture": "個人圖片", - "logOut": "登出", - "testApiAuthentication": "測試 API 認證", - "signIn": "連線至 Roo Code Cloud", - "connect": "開始使用", - "cloudBenefitsTitle": "試用 Roo Code Cloud", - "cloudBenefitProvider": "存取與 Roo 完美配合的免費和付費模型", - "cloudBenefitCloudAgents": "將工作分配給自主雲端代理", - "cloudBenefitTriggers": "在 GitHub 上取得程式碼審查、從 Slack 啟動工作等等", - "cloudBenefitWalkaway": "隨時隨地(包括您的手機)追蹤和控制工作", - "cloudBenefitHistory": "隨時隨地存取工作歷史紀錄並與他人分享", - "cloudBenefitMetrics": "取得 Token 使用量的整體檢視", - "visitCloudWebsite": "造訪 Roo Code Cloud", - "taskSync": "任務同步", - "taskSyncDescription": "同步工作以在 Roo Code Cloud 上檢視和分享", - "taskSyncManagedByOrganization": "工作同步由您的組織管理", - "usageMetricsAlwaysReported": "登入時會一律回報模型使用資訊", - "authWaiting": "等待瀏覽器驗證完成...", - "havingTrouble": "遇到問題了嗎?", - "pasteCallbackUrl": "從瀏覽器複製重新導向 URL 並貼到這裡:", - "startOver": "重新開始", - "personalAccount": "個人帳戶", - "switchAccount": "切換 Roo Code Cloud 帳戶", - "createTeamAccount": "建立團隊帳戶", - "cloudUrlPillLabel": "Roo Code Cloud URL", - "upsell": { - "autoApprovePowerUser": "給 Roo 一點獨立性?使用 Roo Code Cloud 隨時隨地掌控工作進度。了解更多。", - "longRunningTask": "這可能需要一些時間。使用雲端隨時隨地繼續。", - "taskList": "喜歡 Roo 嗎?快來看看 Roo Code Cloud:隨時隨地追蹤和控制您的任務,執行自主雲端代理,取得使用統計資料等等。了解更多。" - } -} diff --git a/webview-ui/src/i18n/locales/zh-TW/marketplace.json b/webview-ui/src/i18n/locales/zh-TW/marketplace.json index 232b66b791f..5c923786a6b 100644 --- a/webview-ui/src/i18n/locales/zh-TW/marketplace.json +++ b/webview-ui/src/i18n/locales/zh-TW/marketplace.json @@ -1,5 +1,5 @@ { - "title": "Roo 市集", + "title": "Zoo 市集", "tabs": { "installed": "已安裝", "settings": "設定", diff --git a/webview-ui/src/i18n/locales/zh-TW/mcp.json b/webview-ui/src/i18n/locales/zh-TW/mcp.json index ab01f9f2cfd..ad6e67d22c6 100644 --- a/webview-ui/src/i18n/locales/zh-TW/mcp.json +++ b/webview-ui/src/i18n/locales/zh-TW/mcp.json @@ -2,15 +2,15 @@ "title": "MCP 伺服器", "done": "完成", "marketplace": "MCP 市集", - "description": "<0>模型內容協定 (Model Context Protocol) 能夠與在本機執行的 MCP 伺服器進行通訊,提供額外的工具和資源來擴充 Roo 的功能。您可以使用<1>社群開發的伺服器,或請 Roo 為您的工作流程建立新工具 (例如:「建立一個能取得最新 npm 文件的工具」)。", + "description": "<0>模型內容協定 (Model Context Protocol) 能夠與在本機執行的 MCP 伺服器進行通訊,提供額外的工具和資源來擴充 Zoo 的功能。您可以使用<1>社群開發的伺服器,或請 Zoo 為您的工作流程建立新工具 (例如:「建立一個能取得最新 npm 文件的工具」)。", "instructions": "使用說明", "enableToggle": { "title": "啟用 MCP 伺服器", - "description": "啟用此選項後,Roo 將可使用已連線 MCP 伺服器所提供的工具,進一步提升功能。如果您暫無使用這些額外工具的需求,建議關閉此選項以協助降低 API Token 費用。" + "description": "啟用此選項後,Zoo 將可使用已連線 MCP 伺服器所提供的工具,進一步提升功能。如果您暫無使用這些額外工具的需求,建議關閉此選項以協助降低 API Token 費用。" }, "enableServerCreation": { "title": "啟用 MCP 伺服器建立功能", - "description": "啟用此選項後,Roo 可協助您建立<1>全新自訂 MCP 伺服器。<0>深入了解伺服器建立流程", + "description": "啟用此選項後,Zoo 可協助您建立<1>全新自訂 MCP 伺服器。<0>深入了解伺服器建立流程", "hint": "提示:若您暫無建立新 MCP 伺服器的需求,建議停用此設定,以協助降低 API Token 費用。" }, "editGlobalMCP": "編輯全域 MCP", diff --git a/webview-ui/src/i18n/locales/zh-TW/prompts.json b/webview-ui/src/i18n/locales/zh-TW/prompts.json index 89e84824ba8..962a4bf42eb 100644 --- a/webview-ui/src/i18n/locales/zh-TW/prompts.json +++ b/webview-ui/src/i18n/locales/zh-TW/prompts.json @@ -8,7 +8,7 @@ "editModesConfig": "編輯模式設定", "editGlobalModes": "編輯全域模式", "editProjectModes": "編輯專案模式 (.roomodes)", - "createModeHelpText": "模式是 Roo 的專屬角色,用於客製化其行為。<0>了解如何使用模式或<1>自訂模式。", + "createModeHelpText": "模式是 Zoo 的專屬角色,用於客製化其行為。<0>了解如何使用模式或<1>自訂模式。", "selectMode": "搜尋模式", "noMatchFound": "找不到任何模式" }, @@ -33,7 +33,7 @@ "roleDefinition": { "title": "角色定義", "resetToDefault": "重設為預設值", - "description": "定義此模式下 Roo 的專業知識和個性。此描述將會形塑 Roo 展現自我及處理工作的方式。" + "description": "定義此模式下 Zoo 的專業知識和個性。此描述將會形塑 Zoo 展現自我及處理工作的方式。" }, "description": { "title": "簡短描述(給人看的)", @@ -42,7 +42,7 @@ }, "whenToUse": { "title": "使用時機(選用)", - "description": "為 Roo 提供何時應使用此模式的指引。這有助於「Orchestrator」為任務選擇正確的模式。", + "description": "為 Zoo 提供何時應使用此模式的指引。這有助於「Orchestrator」為任務選擇正確的模式。", "resetToDefault": "將「使用時機」描述重設為預設值" }, "customInstructions": { @@ -101,7 +101,7 @@ "types": { "ENHANCE": { "label": "強化提示詞", - "description": "使用提示詞強化功能,為您的輸入取得量身打造的建議或改進。這能確保 Roo 理解您的意圖並提供最佳回應。可透過聊天室中的 ✨ 圖示使用。" + "description": "使用提示詞強化功能,為您的輸入取得量身打造的建議或改進。這能確保 Zoo 理解您的意圖並提供最佳回應。可透過聊天室中的 ✨ 圖示使用。" }, "CONDENSE": { "label": "上下文壓縮", @@ -166,7 +166,7 @@ }, "roleDefinition": { "label": "角色定義", - "description": "定義此模式下 Roo 的專業知識和個性。" + "description": "定義此模式下 Zoo 的專業知識和個性。" }, "description": { "label": "簡短描述(供人檢視)", @@ -174,7 +174,7 @@ }, "whenToUse": { "label": "使用時機(選用)", - "description": "為 Roo 提供何時應使用此模式的指引。這有助於「Orchestrator」為任務選擇正確的模式。" + "description": "為 Zoo 提供何時應使用此模式的指引。這有助於「Orchestrator」為任務選擇正確的模式。" }, "tools": { "label": "可用工具", diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json index 37c14c8e1bb..726fcb13da9 100644 --- a/webview-ui/src/i18n/locales/zh-TW/settings.json +++ b/webview-ui/src/i18n/locales/zh-TW/settings.json @@ -40,7 +40,7 @@ "ui": "UI", "experimental": "實驗性", "language": "語言", - "about": "關於 Roo Code", + "about": "關於 Zoo Code", "skills": "Skills" }, "about": { @@ -56,7 +56,7 @@ "label": "發現安全漏洞?", "link": "遵循我們的揭露流程" }, - "community": "想要取得使用技巧或與其他 Roo Code 使用者交流?加入 reddit.com/r/RooCodediscord.gg/roocode", + "community": "想要取得使用技巧或與其他 Zoo Code 使用者交流?加入 reddit.com/r/RooCodediscord.gg/roocode", "contactAndCommunity": "聯絡與社群", "manageSettings": "管理設定", "debugMode": { @@ -110,7 +110,7 @@ } }, "prompts": { - "description": "設定用於快速操作的支援提示詞,如增強提示詞、解釋程式碼和修復問題。這些提示詞幫助 Roo 為常見開發工作提供更好的支援。" + "description": "設定用於快速操作的支援提示詞,如增強提示詞、解釋程式碼和修復問題。這些提示詞幫助 Zoo 為常見開發工作提供更好的支援。" }, "codeIndex": { "title": "程式碼庫索引", @@ -231,10 +231,10 @@ "enabled": "自動核准已啟用", "readOnly": { "label": "讀取", - "description": "啟用後,Roo 將自動檢視目錄內容並讀取檔案,無需等待您的核准。", + "description": "啟用後,Zoo 將自動檢視目錄內容並讀取檔案,無需等待您的核准。", "outsideWorkspace": { "label": "包含工作區外的檔案", - "description": "允許 Roo 讀取目前工作區外的檔案且無需核准。" + "description": "允許 Zoo 讀取目前工作區外的檔案且無需核准。" } }, "write": { @@ -243,11 +243,11 @@ "delayLabel": "寫入後延遲一小段時間,以便診斷工具偵測潛在問題", "outsideWorkspace": { "label": "包含工作區外的檔案", - "description": "允許 Roo 在目前工作區外建立與編輯檔案且無需核准。" + "description": "允許 Zoo 在目前工作區外建立與編輯檔案且無需核准。" }, "protected": { "label": "包含受保護的檔案", - "description": "允許 Roo 建立與編輯受保護的檔案(如 .rooignore 和 .roo/ 設定檔)且無需核准。" + "description": "允許 Zoo 建立與編輯受保護的檔案(如 .rooignore 和 .roo/ 設定檔)且無需核准。" } }, "mcp": { @@ -316,7 +316,7 @@ "searchProviderPlaceholder": "搜尋供應商", "noProviderMatchFound": "找不到供應商", "noMatchFound": "找不到符合的設定檔", - "retiredProviderMessage": "抱歉,此供應商已不再受支援。我們發現實際使用它的 Roo 使用者非常少,我們需要縮減程式碼庫的範圍,以便繼續快速交付並更好地服務社群。這是一個非常艱難的決定,但它能讓我們專注於對你最重要的事情。我們知道這很遺憾。", + "retiredProviderMessage": "此供應商已不可用。請選擇受支援的供應商以繼續。", "vscodeLmDescription": "VS Code 語言模型 API 可以讓您使用其他擴充功能(如 GitHub Copilot)提供的模型。最簡單的方式是從 VS Code Marketplace 安裝 Copilot 和 Copilot Chat 擴充套件。", "awsCustomArnUse": "輸入您要使用的模型的有效 Amazon Bedrock ARN。格式範例:", "awsCustomArnDesc": "確保 ARN 中的區域與您上面選擇的 AWS 區域相符。", @@ -466,7 +466,7 @@ "draftModelDesc": "草稿模型必須來自相同模型系列才能正確運作。", "selectDraftModel": "選擇草稿模型", "noModelsFound": "未找到草稿模型。請確保 LM Studio 以伺服器模式執行。", - "description": "LM Studio 允許您在本機電腦執行模型。詳細資訊請參閱快速入門指南。您需要啟動 LM Studio 的本機伺服器功能才能與此擴充功能搭配使用。注意: Roo Code 使用複雜提示詞,與 Claude 模型搭配最佳。功能較弱的模型可能無法正常運作。" + "description": "LM Studio 允許您在本機電腦執行模型。詳細資訊請參閱快速入門指南。您需要啟動 LM Studio 的本機伺服器功能才能與此擴充功能搭配使用。注意: Zoo Code 使用複雜提示詞,與 Claude 模型搭配最佳。功能較弱的模型可能無法正常運作。" }, "ollama": { "baseUrl": "基礎 URL(選用)", @@ -476,11 +476,7 @@ "numCtx": "上下文視窗大小(num_ctx)", "numCtxHelp": "覆寫模型的預設上下文視窗大小。留空以使用模型的 Modelfile 設定。最小值為 128。", "description": "Ollama 允許您在本機電腦執行模型。請參閱快速入門指南。", - "warning": "注意:Roo Code 使用複雜提示詞,與 Claude 模型搭配最佳。功能較弱的模型可能無法正常運作。" - }, - "roo": { - "authenticatedMessage": "已透過 Roo Code Cloud 帳戶安全認證。", - "connectButton": "連線到 Roo Code Cloud" + "warning": "注意:Zoo Code 使用複雜提示詞,與 Claude 模型搭配最佳。功能較弱的模型可能無法正常運作。" }, "openRouter": { "providerRouting": { @@ -490,7 +486,7 @@ } }, "customModel": { - "capabilities": "設定自訂 OpenAI 相容模型的功能和定價。請謹慎設定模型功能,因為這會影響 Roo Code 的運作方式。", + "capabilities": "設定自訂 OpenAI 相容模型的功能和定價。請謹慎設定模型功能,因為這會影響 Zoo Code 的運作方式。", "maxTokens": { "label": "最大輸出 Token", "description": "模型能在一則回應中產生的最大 Token 數量。(設為 -1 則由伺服器決定最大值)" @@ -537,7 +533,7 @@ }, "consecutiveMistakeLimit": { "label": "錯誤和重複限制", - "description": "在顯示「Roo 遇到問題」對話方塊前允許的連續錯誤或重複操作次數。設定為 0 可停用此安全機制(永不觸發)。", + "description": "在顯示「Zoo 遇到問題」對話方塊前允許的連續錯誤或重複操作次數。設定為 0 可停用此安全機制(永不觸發)。", "unlimitedDescription": "已啟用無限重試(自動繼續)。對話方塊將永遠不會出現。", "warning": "⚠️ 設定為 0 允許無限重試,這可能會消耗大量 API 使用量" }, @@ -573,18 +569,18 @@ }, "enable": { "label": "啟用自動檢查點", - "description": "啟用後,Roo 將在工作執行期間自動建立檢查點,方便檢視變更或回到較早的狀態。 <0>了解更多" + "description": "啟用後,Zoo 將在工作執行期間自動建立檢查點,方便檢視變更或回到較早的狀態。 <0>了解更多" } }, "notifications": { "sound": { "label": "啟用音效", - "description": "啟用後,Roo 將為通知和事件播放音效。", + "description": "啟用後,Zoo 將為通知和事件播放音效。", "volumeLabel": "音量" }, "tts": { "label": "啟用文字轉語音", - "description": "啟用後,Roo 將使用文字轉語音功能朗讀其回應。", + "description": "啟用後,Zoo 將使用文字轉語音功能朗讀其回應。", "speedLabel": "速度" } }, @@ -592,7 +588,7 @@ "description": "控制 AI 上下文視窗中要包含哪些資訊,會影響 Token 用量和回應品質", "autoCondenseContextPercent": { "label": "觸發智慧上下文壓縮的閾值", - "description": "當上下文視窗達到此閾值時,Roo 將自動壓縮它。" + "description": "當上下文視窗達到此閾值時,Zoo 將自動壓縮它。" }, "condensingApiConfiguration": { "label": "上下文壓縮的 API 設定", @@ -608,7 +604,7 @@ }, "autoCondenseContext": { "name": "自動觸發智慧上下文壓縮", - "description": "啟用時,Roo 會在達到閾值時自動壓縮上下文。停用時,您仍可手動觸發上下文壓縮。" + "description": "啟用時,Zoo 會在達到閾值時自動壓縮上下文。停用時,您仍可手動觸發上下文壓縮。" }, "openTabs": { "label": "開啟分頁的上下文限制", @@ -628,7 +624,7 @@ }, "maxReadFile": { "label": "檔案讀取自動截斷閾值", - "description": "當模型未指定起始/結束值時,Roo 讀取的行數。如果此數值小於檔案總行數,Roo 將產生程式碼定義的行號索引。特殊情況:-1 指示 Roo 讀取整個檔案(不建立索引),0 指示不讀取任何行並僅提供行索引以取得最小上下文。較低的值可最小化初始上下文使用,允許後續精確的行範圍讀取。明確指定起始/結束的請求不受此設定限制。 <0>了解更多", + "description": "當模型未指定起始/結束值時,Zoo 讀取的行數。如果此數值小於檔案總行數,Zoo 將產生程式碼定義的行號索引。特殊情況:-1 指示 Zoo 讀取整個檔案(不建立索引),0 指示不讀取任何行並僅提供行索引以取得最小上下文。較低的值可最小化初始上下文使用,允許後續精確的行範圍讀取。明確指定起始/結束的請求不受此設定限制。 <0>了解更多", "lines": "行", "always_full_read": "始終讀取整個檔案" }, @@ -695,15 +691,15 @@ }, "outputLineLimit": { "label": "終端機輸出限制", - "description": "保留首尾行並丟棄中間行以保持在限制內。降低可節省 Token;提高可為 Roo 提供更多中間細節。Roo 看到內容被跳過的佔位符。<0>了解更多" + "description": "保留首尾行並丟棄中間行以保持在限制內。降低可節省 Token;提高可為 Zoo 提供更多中間細節。Zoo 看到內容被跳過的佔位符。<0>了解更多" }, "outputCharacterLimit": { "label": "終端機字元限制", - "description": "透過強制限制輸出大小來覆寫行限制以防止記憶體問題。如果超出,保留開頭和結尾並向 Roo 顯示內容被跳過的佔位符。<0>了解更多" + "description": "透過強制限制輸出大小來覆寫行限制以防止記憶體問題。如果超出,保留開頭和結尾並向 Zoo 顯示內容被跳過的佔位符。<0>了解更多" }, "outputPreviewSize": { "label": "命令輸出預覽大小", - "description": "控制 Roo 直接看到的命令輸出量。完整輸出始終會被儲存,需要時可以存取。", + "description": "控制 Zoo 直接看到的命令輸出量。完整輸出始終會被儲存,需要時可以存取。", "options": { "small": "小 (5KB)", "medium": "中 (10KB)", @@ -716,7 +712,7 @@ }, "shellIntegrationDisabled": { "label": "使用內嵌終端機(建議)", - "description": "在內嵌終端機(聊天)中執行命令以繞過 shell 設定檔/整合,實現更快、更可靠的執行。停用時,Roo 使用 VS Code 終端機及您的 shell 設定檔、提示和外掛程式。<0>了解更多" + "description": "在內嵌終端機(聊天)中執行命令以繞過 shell 設定檔/整合,實現更快、更可靠的執行。停用時,Zoo 使用 VS Code 終端機及您的 shell 設定檔、提示和外掛程式。<0>了解更多" }, "commandDelay": { "label": "終端機命令延遲", @@ -753,7 +749,7 @@ "advanced": { "diff": { "label": "透過差異比對編輯", - "description": "啟用後,Roo 可更快速地編輯檔案,並自動拒絕不完整的整檔覆寫", + "description": "啟用後,Zoo 可更快速地編輯檔案,並自動拒絕不完整的整檔覆寫", "strategy": { "label": "差異比對策略", "options": { @@ -770,7 +766,7 @@ }, "todoList": { "label": "啟用待辦事項清單工具", - "description": "啟用後,Roo 可以建立和管理待辦事項清單來追蹤任務進度。這有助於將複雜任務組織成可管理的步驟。" + "description": "啟用後,Zoo 可以建立和管理待辦事項清單來追蹤任務進度。這有助於將複雜任務組織成可管理的步驟。" } }, "experimental": { @@ -780,15 +776,15 @@ }, "INSERT_BLOCK": { "name": "使用實驗性插入內容工具", - "description": "啟用實驗性的插入內容工具,允許 Roo 直接在指定行號插入內容,而無需產生差異比對。" + "description": "啟用實驗性的插入內容工具,允許 Zoo 直接在指定行號插入內容,而無需產生差異比對。" }, "CONCURRENT_FILE_READS": { "name": "啟用並行檔案讀取", - "description": "啟用後,Roo 可以在單一請求中讀取多個檔案。停用後,Roo 必須逐一讀取檔案。在使用能力較弱的模型或希望對檔案存取有更多控制時,停用此功能可能會有所幫助。" + "description": "啟用後,Zoo 可以在單一請求中讀取多個檔案。停用後,Zoo 必須逐一讀取檔案。在使用能力較弱的模型或希望對檔案存取有更多控制時,停用此功能可能會有所幫助。" }, "MULTI_SEARCH_AND_REPLACE": { "name": "使用實驗性多區塊差異比對工具", - "description": "啟用後,Roo 將使用多區塊差異比對工具,嘗試在單一請求中更新檔案內的多個程式碼區塊。" + "description": "啟用後,Zoo 將使用多區塊差異比對工具,嘗試在單一請求中更新檔案內的多個程式碼區塊。" }, "MARKETPLACE": { "name": "啟用 Marketplace", @@ -796,7 +792,7 @@ }, "PREVENT_FOCUS_DISRUPTION": { "name": "背景編輯", - "description": "啟用後可防止編輯器焦點中斷。檔案編輯會在背景進行,不會開啟 diff 檢視或搶奪焦點。您可以在 Roo 進行變更時繼續不受干擾地工作。檔案可能會在不獲得焦點的情況下開啟以捕獲診斷,或保持完全關閉。" + "description": "啟用後可防止編輯器焦點中斷。檔案編輯會在背景進行,不會開啟 diff 檢視或搶奪焦點。您可以在 Zoo 進行變更時繼續不受干擾地工作。檔案可能會在不獲得焦點的情況下開啟以捕獲診斷,或保持完全關閉。" }, "ASSISTANT_MESSAGE_PARSER": { "name": "使用全新訊息解析器", @@ -808,7 +804,7 @@ }, "IMAGE_GENERATION": { "name": "啟用 AI 影像生成", - "description": "啟用後,Roo 可以使用 OpenRouter 的影像生成模型,從文字提示產生影像。需要設定 OpenRouter API 金鑰。", + "description": "啟用後,Zoo 可以使用 OpenRouter 的影像生成模型,從文字提示產生影像。需要設定 OpenRouter API 金鑰。", "providerLabel": "供應商", "providerDescription": "選擇用於影像生成的供應商。", "openRouterApiKeyLabel": "OpenRouter API 金鑰", @@ -821,11 +817,11 @@ }, "RUN_SLASH_COMMAND": { "name": "啟用模型啟動的斜線命令", - "description": "啟用時,Roo 可以執行您的斜線命令來執行工作流程。" + "description": "啟用時,Zoo 可以執行您的斜線命令來執行工作流程。" }, "CUSTOM_TOOLS": { "name": "啟用自訂工具", - "description": "啟用後,Roo 可以從專案中的 .roo/tools 目錄或全域工具目錄 ~/.roo/tools 載入並使用自訂 TypeScript/JavaScript 工具。注意:這些工具將自動獲得核准。", + "description": "啟用後,Zoo 可以從專案中的 .roo/tools 目錄或全域工具目錄 ~/.roo/tools 載入並使用自訂 TypeScript/JavaScript 工具。注意:這些工具將自動獲得核准。", "toolsHeader": "可用自訂工具", "noTools": "未載入自訂工具。請向專案的 .roo/tools 目錄或全域工具目錄 ~/.roo/tools 新增 .ts 或 .js 檔案。", "refreshButton": "重新整理", @@ -837,7 +833,7 @@ }, "promptCaching": { "label": "停用提示詞快取", - "description": "勾選後,Roo 將不會為此模型使用提示詞快取。" + "description": "勾選後,Zoo 將不會為此模型使用提示詞快取。" }, "temperature": { "useCustom": "使用自訂溫度", @@ -867,7 +863,7 @@ } }, "modelPicker": { - "automaticFetch": "此擴充功能會自動從 {{serviceName}} 取得最新的可用模型清單。如果不確定要選哪個模型,建議使用 {{defaultModelId}},這是與 Roo Code 最佳搭配的模型。您也可以搜尋「free」來檢視目前可用的免費選項。", + "automaticFetch": "此擴充功能會自動從 {{serviceName}} 取得最新的可用模型清單。如果不確定要選哪個模型,建議使用 {{defaultModelId}},這是與 Zoo Code 最佳搭配的模型。您也可以搜尋「free」來檢視目前可用的免費選項。", "label": "模型", "searchPlaceholder": "搜尋", "noMatchFound": "找不到符合的結果", @@ -877,7 +873,7 @@ "footer": { "telemetry": { "label": "允許匿名錯誤與使用情況回報", - "description": "透過發送匿名使用資料和錯誤回報來協助改善 Roo Code。此遙測不會收集程式碼、提示詞或個人資訊。查看我們的 隱私權政策 以了解更多資訊。" + "description": "透過發送匿名使用資料和錯誤回報來協助改善 Zoo Code。此遙測不會收集程式碼、提示詞或個人資訊。查看我們的 隱私權政策 以了解更多資訊。" }, "settings": { "import": "匯入", diff --git a/webview-ui/src/i18n/locales/zh-TW/welcome.json b/webview-ui/src/i18n/locales/zh-TW/welcome.json index 3b117935b61..9ef9580cb5f 100644 --- a/webview-ui/src/i18n/locales/zh-TW/welcome.json +++ b/webview-ui/src/i18n/locales/zh-TW/welcome.json @@ -1,52 +1,18 @@ { - "routers": { - "requesty": { - "description": "為您最佳化的 LLM 路由器", - "incentive": "$1 免費額度" - }, - "openrouter": { - "description": "LLM 統一介面" - }, - "roo": { - "description": "開始使用的最佳免費模型", - "incentive": "免費試用 Roo" - } - }, "landing": { "greeting": "歡迎使用 Roo Code!", "introduction": "Roo Code 提供一系列內建和可擴充的模式,讓您以前所未有的方式規劃專案、設計架構、編寫程式碼、除錯並提升工作效率。", - "accountMention": "開始使用,請建立您的 Roo Code Cloud 帳戶。取得強大的模型、網路控制、分析、支援等功能。", - "getStarted": "建立 Roo 帳戶", - "noAccount": "或不使用帳戶" + "getStarted": "選擇供應商" }, "providerSignup": { "heading": "選擇供應商", "chooseProvider": "Roo 需要 LLM 供應商才能運作。選擇一個以開始使用,您可以稍後新增更多。", - "rooCloudProvider": "Roo Code Router", - "rooCloudDescription": "開始使用最簡單的方式是使用 Roo Code Router:精選的免費和付費模型組合,價格低廉。", - "learnMore": "了解更多", - "useAnotherProvider": "第三方供應商", - "useAnotherProviderDescription": "輸入 API 金鑰並開始使用。", - "noApiKeys": "不想處理 API 金鑰和個別帳戶嗎?", - "backToRoo": "選擇 Roo Code Router。", "goBack": "返回", "finish": "完成" }, - "waitingForCloud": { - "heading": "正在登入 Roo Code Cloud...", - "description": "我們會帶您前往瀏覽器註冊 Roo Code Cloud。然後我們會帶您回來完成設定。", - "noPrompt": "如果沒有提示您開啟 URL,點選這裡。", - "havingTrouble": "如果您已完成註冊但遇到問題,點選這裡。", - "pasteUrl": "貼上瀏覽器中顯示的回呼 URL:", - "docsLink": "無法正常運作?查看說明文件。", - "invalidURL": "這看起來不像有效的回呼 URL。請複製 Roo Code Cloud 在您瀏覽器中顯示的內容。", - "goBack": "返回" - }, - "startRouter": "我們建議使用 LLM 路由器:", - "startCustom": "或自行提供供應商 API 金鑰:", "telemetry": { - "helpImprove": "幫助改進 Roo Code", - "helpImproveMessage": "Roo Code 會收集錯誤和使用情況資料以幫助我們修復錯誤並改進擴充功能。此遙測不會收集程式碼、提示詞或個人資訊。您可以在 設定 中關閉。" + "helpImprove": "幫助改進 Zoo Code", + "helpImproveMessage": "Zoo Code 會收集錯誤和使用情況資料以幫助我們修復錯誤並改進擴充功能。此遙測不會收集程式碼、提示詞或個人資訊。您可以在 設定 中關閉。" }, "importSettings": "匯入設定" } diff --git a/webview-ui/src/i18n/locales/zh-TW/worktrees.json b/webview-ui/src/i18n/locales/zh-TW/worktrees.json index fe80cfb214b..5751b4798de 100644 --- a/webview-ui/src/i18n/locales/zh-TW/worktrees.json +++ b/webview-ui/src/i18n/locales/zh-TW/worktrees.json @@ -1,28 +1,23 @@ { "title": "Worktrees", "done": "完成", - "description": "Git worktrees 讓您能在不同目錄中同時處理多個分支。每個 worktree 都會有一個搭配 Roo Code 的獨立 VS Code 視窗。", - + "description": "Git worktrees 讓您能在不同目錄中同時處理多個分支。每個 worktree 都會有一個搭配 Zoo Code 的獨立 VS Code 視窗。", "notGitRepo": "此工作區不是 Git 儲存庫。Worktree 功能需要 Git 儲存庫才能運作。", "multiRootNotSupported": "多根工作區不支援 worktree。請開啟單一資料夾以使用 worktree。", "subfolderNotSupported": "此工作區是 Git 儲存庫的子資料夾。請開啟儲存庫根目錄以使用 worktree。", "gitRoot": "Git 根目錄", - "includeFileExists": "已找到 .worktreeinclude 檔案,檔案將複製到新的 worktree", "noIncludeFile": "未找到 .worktreeinclude 檔案", "createFromGitignore": "從 .gitignore 建立", - "primary": "主要", "current": "目前", "locked": "已鎖定", "detachedHead": "分離的 HEAD", "noBranch": "無分支", - "switchInThisWindow": "切換到 worktree", "openInNewWindow": "在新視窗開啟", "delete": "刪除", "newWorktree": "新增 Worktree", - "createWorktree": "建立 Worktree", "branchName": "分支名稱", "createNewBranch": "建立新分支", @@ -44,7 +39,6 @@ "copyingFiles": "正在複製檔案...", "copyingProgress": "{{item}} — {{copied}} 已複製", "cancel": "取消", - "deleteWorktree": "刪除 Worktree", "deleteWarning": "此操作無法復原。將刪除以下內容:", "deleteWarningBranch": "分支以及所有未提交的變更", @@ -53,11 +47,8 @@ "forceDelete": "強制刪除", "worktreeIsLocked": "worktree 已鎖定", "deleting": "正在刪除...", - "close": "關閉", - "showInHomeScreen": "在主畫面顯示 worktree", - "selector": { "worktree": "Worktree", "title": "Worktrees",