diff --git a/src/api/providers/__tests__/native-ollama.spec.ts b/src/api/providers/__tests__/native-ollama.spec.ts index f8792937db..fedfa9dc62 100644 --- a/src/api/providers/__tests__/native-ollama.spec.ts +++ b/src/api/providers/__tests__/native-ollama.spec.ts @@ -72,34 +72,6 @@ describe("NativeOllamaHandler", () => { expect(results[1]).toEqual({ type: "text", text: " world" }) expect(results[2]).toEqual({ type: "usage", inputTokens: 10, outputTokens: 2 }) }) - - it("should handle DeepSeek R1 models with reasoning detection", async () => { - const options: ApiHandlerOptions = { - apiModelId: "deepseek-r1", - ollamaModelId: "deepseek-r1", - ollamaBaseUrl: "http://localhost:11434", - } - - handler = new NativeOllamaHandler(options) - - // Mock response with thinking tags - mockChat.mockImplementation(async function* () { - yield { message: { content: "Let me think" } } - yield { message: { content: " about this" } } - yield { message: { content: "The answer is 42" } } - }) - - const stream = handler.createMessage("System", [{ role: "user" as const, content: "Question?" }]) - const results = [] - - for await (const chunk of stream) { - results.push(chunk) - } - - // Should detect reasoning vs regular text - expect(results.some((r) => r.type === "reasoning")).toBe(true) - expect(results.some((r) => r.type === "text")).toBe(true) - }) }) describe("completePrompt", () => { @@ -134,7 +106,7 @@ describe("NativeOllamaHandler", () => { for await (const _ of stream) { // consume stream } - }).rejects.toThrow("Ollama service is not running") + }).rejects.toThrow("errors.ollama.serviceNotRunning") }) it("should handle model not found errors", async () => { @@ -148,7 +120,7 @@ describe("NativeOllamaHandler", () => { for await (const _ of stream) { // consume stream } - }).rejects.toThrow("Model llama2 not found in Ollama") + }).rejects.toThrow("errors.ollama.modelNotFound") }) }) diff --git a/src/api/providers/fetchers/__tests__/ollama.test.ts b/src/api/providers/fetchers/__tests__/ollama.test.ts index b6ddbf91a4..0e2026a5c5 100644 --- a/src/api/providers/fetchers/__tests__/ollama.test.ts +++ b/src/api/providers/fetchers/__tests__/ollama.test.ts @@ -18,8 +18,8 @@ describe("Ollama Fetcher", () => { const parsedModel = parseOllamaModel(modelData) expect(parsedModel).toEqual({ - maxTokens: 40960, - contextWindow: 40960, + maxTokens: 4096, // Changed from 40960 - Ollama's quirk fix + contextWindow: 4096, // Changed from 40960 - Ollama's quirk fix supportsImages: false, supportsComputerUse: false, supportsPromptCache: true, @@ -27,7 +27,7 @@ describe("Ollama Fetcher", () => { outputPrice: 0, cacheWritesPrice: 0, cacheReadsPrice: 0, - description: "Family: qwen3, Context: 40960, Size: 32.8B", + description: "Family: qwen3, Context: 4096, Size: 32.8B", // Changed from 40960 }) }) @@ -43,8 +43,8 @@ describe("Ollama Fetcher", () => { const parsedModel = parseOllamaModel(modelDataWithNullFamilies as any) expect(parsedModel).toEqual({ - maxTokens: 40960, - contextWindow: 40960, + maxTokens: 4096, // Changed from 40960 - Ollama's quirk fix + contextWindow: 4096, // Changed from 40960 - Ollama's quirk fix supportsImages: false, supportsComputerUse: false, supportsPromptCache: true, @@ -52,9 +52,45 @@ describe("Ollama Fetcher", () => { outputPrice: 0, cacheWritesPrice: 0, cacheReadsPrice: 0, - description: "Family: qwen3, Context: 40960, Size: 32.8B", + description: "Family: qwen3, Context: 4096, Size: 32.8B", // Changed from 40960 }) }) + + it("should use num_ctx from parameters when available", () => { + const modelDataWithNumCtx = { + ...ollamaModelsData["qwen3-2to16:latest"], + parameters: "num_ctx 8192\nstop_token ", + } + + const parsedModel = parseOllamaModel(modelDataWithNumCtx as any) + + expect(parsedModel.contextWindow).toBe(8192) + expect(parsedModel.maxTokens).toBe(8192) + expect(parsedModel.description).toContain("Context: 8192") + }) + + it("should use OLLAMA_NUM_CTX environment variable as fallback", () => { + const originalEnv = process.env.OLLAMA_NUM_CTX + process.env.OLLAMA_NUM_CTX = "16384" + + const modelDataWithoutContext = { + ...ollamaModelsData["qwen3-2to16:latest"], + model_info: {}, // No context_length in model_info + parameters: undefined, // No parameters + } + + const parsedModel = parseOllamaModel(modelDataWithoutContext as any) + + expect(parsedModel.contextWindow).toBe(16384) + expect(parsedModel.maxTokens).toBe(16384) + + // Restore original env + if (originalEnv !== undefined) { + process.env.OLLAMA_NUM_CTX = originalEnv + } else { + delete process.env.OLLAMA_NUM_CTX + } + }) }) describe("getOllamaModels", () => { diff --git a/src/api/providers/fetchers/ollama.ts b/src/api/providers/fetchers/ollama.ts index a679a9027d..6c1cf0aeeb 100644 --- a/src/api/providers/fetchers/ollama.ts +++ b/src/api/providers/fetchers/ollama.ts @@ -38,17 +38,33 @@ type OllamaModelsResponse = z.infer type OllamaModelInfoResponse = z.infer export const parseOllamaModel = (rawModel: OllamaModelInfoResponse): ModelInfo => { + // Check for context window in model parameters first + const contextLengthFromModelParameters = rawModel.parameters + ? parseInt(rawModel.parameters.match(/^num_ctx\s+(\d+)/m)?.[1] ?? "", 10) || undefined + : undefined + + // Check for context window in model_info const contextKey = Object.keys(rawModel.model_info).find((k) => k.includes("context_length")) - const contextWindow = + const contextLengthFromModelInfo = contextKey && typeof rawModel.model_info[contextKey] === "number" ? rawModel.model_info[contextKey] : undefined + // Use environment variable as fallback + const contextLengthFromEnvironment = parseInt(process.env.OLLAMA_NUM_CTX || "4096", 10) + + let contextWindow = contextLengthFromModelParameters ?? contextLengthFromModelInfo ?? contextLengthFromEnvironment + + // Handle Ollama's quirk of returning 40960 for undefined context + if (contextWindow === 40960 && !contextLengthFromModelParameters) { + contextWindow = 4096 // For some unknown reason, Ollama returns an undefined context as "40960" rather than 4096, which is what it actually enforces. + } + const modelInfo: ModelInfo = Object.assign({}, ollamaDefaultModelInfo, { description: `Family: ${rawModel.details.family}, Context: ${contextWindow}, Size: ${rawModel.details.parameter_size}`, - contextWindow: contextWindow || ollamaDefaultModelInfo.contextWindow, + contextWindow: contextWindow, supportsPromptCache: true, supportsImages: rawModel.capabilities?.includes("vision"), supportsComputerUse: false, - maxTokens: contextWindow || ollamaDefaultModelInfo.contextWindow, + maxTokens: contextWindow, }) return modelInfo diff --git a/src/api/providers/native-ollama.ts b/src/api/providers/native-ollama.ts index 80231540e8..af81a75c78 100644 --- a/src/api/providers/native-ollama.ts +++ b/src/api/providers/native-ollama.ts @@ -1,12 +1,20 @@ import { Anthropic } from "@anthropic-ai/sdk" import { Message, Ollama, type Config as OllamaOptions } from "ollama" -import { ModelInfo, openAiModelInfoSaneDefaults, DEEP_SEEK_DEFAULT_TEMPERATURE } from "@roo-code/types" +import { ModelInfo, DEEP_SEEK_DEFAULT_TEMPERATURE } from "@roo-code/types" import { ApiStream } from "../transform/stream" import { BaseProvider } from "./base-provider" import type { ApiHandlerOptions } from "../../shared/api" import { getOllamaModels } from "./fetchers/ollama" import { XmlMatcher } from "../../utils/xml-matcher" import type { SingleCompletionHandler, ApiHandlerCreateMessageMetadata } from "../index" +import { t } from "../../i18n" + +const TOKEN_ESTIMATION_FACTOR = 4 // Industry standard technique for estimating token counts without actually implementing a parser/tokenizer + +function estimateOllamaTokenCount(messages: Message[]): number { + const totalChars = messages.reduce((acc, msg) => acc + (msg.content?.length || 0), 0) + return Math.ceil(totalChars / TOKEN_ESTIMATION_FACTOR) +} function convertToOllamaMessages(anthropicMessages: Anthropic.Messages.MessageParam[]): Message[] { const ollamaMessages: Message[] = [] @@ -131,10 +139,20 @@ export class NativeOllamaHandler extends BaseProvider implements SingleCompletio protected options: ApiHandlerOptions private client: Ollama | undefined protected models: Record = {} + private isInitialized = false constructor(options: ApiHandlerOptions) { super() this.options = options + this.initialize() + } + + private async initialize(): Promise { + if (this.isInitialized) { + return + } + await this.fetchModel() + this.isInitialized = true } private ensureClient(): Ollama { @@ -154,7 +172,7 @@ export class NativeOllamaHandler extends BaseProvider implements SingleCompletio this.client = new Ollama(clientOptions) } catch (error: any) { - throw new Error(`Error creating Ollama client: ${error.message}`) + throw new Error(t("common:errors.ollama.clientCreationError", { error: error.message })) } } return this.client @@ -165,8 +183,12 @@ export class NativeOllamaHandler extends BaseProvider implements SingleCompletio messages: Anthropic.Messages.MessageParam[], metadata?: ApiHandlerCreateMessageMetadata, ): ApiStream { + if (!this.isInitialized) { + await this.initialize() + } + const client = this.ensureClient() - const { id: modelId, info: modelInfo } = await this.fetchModel() + const { id: modelId, info: modelInfo } = this.getModel() const useR1Format = modelId.toLowerCase().includes("deepseek-r1") const ollamaMessages: Message[] = [ @@ -174,6 +196,14 @@ export class NativeOllamaHandler extends BaseProvider implements SingleCompletio ...convertToOllamaMessages(messages), ] + // Check if the estimated token count exceeds the model's limit + const estimatedTokenCount = estimateOllamaTokenCount(ollamaMessages) + if (modelInfo.maxTokens && estimatedTokenCount > modelInfo.maxTokens) { + throw new Error( + t("common:errors.ollama.inputTooLong", { estimatedTokenCount, maxTokens: modelInfo.maxTokens }), + ) + } + const matcher = new XmlMatcher( "think", (chunk) => @@ -190,7 +220,6 @@ export class NativeOllamaHandler extends BaseProvider implements SingleCompletio messages: ollamaMessages, stream: true, options: { - num_ctx: modelInfo.contextWindow, temperature: this.options.modelTemperature ?? (useR1Format ? DEEP_SEEK_DEFAULT_TEMPERATURE : 0), }, }) @@ -233,7 +262,11 @@ export class NativeOllamaHandler extends BaseProvider implements SingleCompletio } } catch (streamError: any) { console.error("Error processing Ollama stream:", streamError) - throw new Error(`Ollama stream processing error: ${streamError.message || "Unknown error"}`) + throw new Error( + t("common:errors.ollama.streamProcessingError", { + error: streamError.message || t("common:errors.ollama.unknownError"), + }), + ) } } catch (error: any) { // Enhance error reporting @@ -242,12 +275,12 @@ export class NativeOllamaHandler extends BaseProvider implements SingleCompletio if (error.code === "ECONNREFUSED") { throw new Error( - `Ollama service is not running at ${this.options.ollamaBaseUrl || "http://localhost:11434"}. Please start Ollama first.`, + t("common:errors.ollama.serviceNotRunning", { + baseUrl: this.options.ollamaBaseUrl || "http://localhost:11434", + }), ) } else if (statusCode === 404) { - throw new Error( - `Model ${this.getModel().id} not found in Ollama. Please pull the model first with: ollama pull ${this.getModel().id}`, - ) + throw new Error(t("common:errors.ollama.modelNotFound", { modelId: this.getModel().id })) } console.error(`Ollama API error (${statusCode || "unknown"}): ${errorMessage}`) @@ -262,16 +295,34 @@ export class NativeOllamaHandler extends BaseProvider implements SingleCompletio override getModel(): { id: string; info: ModelInfo } { const modelId = this.options.ollamaModelId || "" + + const modelInfo = this.models[modelId] + if (!modelInfo) { + const availableModels = Object.keys(this.models) + const errorMessage = + availableModels.length > 0 + ? t("common:errors.ollama.modelNotFoundWithAvailable", { + modelId, + availableModels: availableModels.join(", "), + }) + : t("common:errors.ollama.modelNotFoundNoModels", { modelId }) + throw new Error(errorMessage) + } + return { id: modelId, - info: this.models[modelId] || openAiModelInfoSaneDefaults, + info: modelInfo, } } async completePrompt(prompt: string): Promise { try { + if (!this.isInitialized) { + await this.initialize() + } + const client = this.ensureClient() - const { id: modelId } = await this.fetchModel() + const { id: modelId } = this.getModel() const useR1Format = modelId.toLowerCase().includes("deepseek-r1") const response = await client.chat({ @@ -286,7 +337,7 @@ export class NativeOllamaHandler extends BaseProvider implements SingleCompletio return response.message?.content || "" } catch (error) { if (error instanceof Error) { - throw new Error(`Ollama completion error: ${error.message}`) + throw new Error(t("common:errors.ollama.completionError", { error: error.message })) } throw error } diff --git a/src/i18n/locales/ca/common.json b/src/i18n/locales/ca/common.json index b71b7eb913..563e8fd9ae 100644 --- a/src/i18n/locales/ca/common.json +++ b/src/i18n/locales/ca/common.json @@ -125,6 +125,17 @@ "manual_url_missing_params": "URL de callback no vàlida: falten paràmetres requerits (code i state)", "manual_url_auth_failed": "Autenticació manual per URL ha fallat", "manual_url_auth_error": "Autenticació fallida", + "ollama": { + "inputTooLong": "El missatge d'entrada és massa llarg per al model seleccionat. Tokens estimats: {{estimatedTokenCount}}, Tokens màxims: {{maxTokens}}. Per augmentar la mida de la finestra de context, estableix la variable d'entorn OLLAMA_NUM_CTX o consulta la documentació d'Ollama.", + "serviceNotRunning": "El servei Ollama no s'està executant a {{baseUrl}}. Inicia Ollama primer.", + "modelNotFound": "Model {{modelId}} no trobat a Ollama. Descarrega el model primer amb: ollama pull {{modelId}}", + "modelNotFoundWithAvailable": "Model {{modelId}} no trobat. Models disponibles: {{availableModels}}", + "modelNotFoundNoModels": "Model {{modelId}} no trobat. No hi ha models disponibles. Descarrega el model primer amb: ollama pull {{modelId}}", + "completionError": "Error de finalització d'Ollama: {{error}}", + "clientCreationError": "Error creant el client d'Ollama: {{error}}", + "streamProcessingError": "Error processant el flux d'Ollama: {{error}}", + "unknownError": "Error desconegut" + }, "mode_import_failed": "Ha fallat la importació del mode: {{error}}" }, "warnings": { diff --git a/src/i18n/locales/de/common.json b/src/i18n/locales/de/common.json index 6577d460d1..0114e4b788 100644 --- a/src/i18n/locales/de/common.json +++ b/src/i18n/locales/de/common.json @@ -29,7 +29,7 @@ "checkpoint_timeout": "Zeitüberschreitung beim Versuch, den Checkpoint wiederherzustellen.", "checkpoint_failed": "Fehler beim Wiederherstellen des Checkpoints.", "git_not_installed": "Git ist für die Checkpoint-Funktion erforderlich. Bitte installiere Git, um Checkpoints zu aktivieren.", - "nested_git_repos_warning": "Checkpoints sind deaktiviert, da ein verschachteltes Git-Repository erkannt wurde unter: {{path}}. Um Checkpoints zu verwenden, entferne oder verschiebe bitte dieses verschachtelte Git-Repository.", + "nested_git_repos_warning": "Checkpoints sind deaktiviert, da ein verschachteltes Git-Repository bei {{path}} erkannt wurde. Um Checkpoints zu verwenden, entferne oder verschiebe bitte dieses verschachtelte Git-Repository.", "no_workspace": "Bitte öffne zuerst einen Projektordner", "update_support_prompt": "Fehler beim Aktualisieren der Support-Nachricht", "reset_support_prompt": "Fehler beim Zurücksetzen der Support-Nachricht", @@ -89,9 +89,9 @@ "notFound": "Claude Code ausführbare Datei '{{claudePath}}' nicht gefunden.\n\nBitte installiere Claude Code CLI:\n1. Besuche {{installationUrl}} um Claude Code herunterzuladen\n2. Folge den Installationsanweisungen für dein Betriebssystem\n3. Stelle sicher, dass der 'claude' Befehl in deinem PATH verfügbar ist\n4. Alternativ konfiguriere einen benutzerdefinierten Pfad in den Roo-Einstellungen unter 'Claude Code Pfad'\n\nUrsprünglicher Fehler: {{originalError}}" }, "message": { - "no_active_task_to_delete": "Keine aktive Aufgabe, aus der Nachrichten gelöscht werden können", - "invalid_timestamp_for_deletion": "Ungültiger Nachrichten-Zeitstempel zum Löschen", - "cannot_delete_missing_timestamp": "Nachricht kann nicht gelöscht werden: fehlender Zeitstempel", + "no_active_task_to_delete": "Keine aktive Aufgabe zum Löschen von Nachrichten", + "invalid_timestamp_for_deletion": "Ungültiger Nachrichtenzeitstempel für Löschung", + "cannot_delete_missing_timestamp": "Nachricht kann nicht gelöscht werden: Zeitstempel fehlt", "cannot_delete_invalid_timestamp": "Nachricht kann nicht gelöscht werden: ungültiger Zeitstempel", "message_not_found": "Nachricht mit Zeitstempel {{messageTs}} nicht gefunden", "error_deleting_message": "Fehler beim Löschen der Nachricht: {{error}}", @@ -119,9 +119,20 @@ }, "manual_url_empty": "Bitte gib eine gültige Callback-URL ein", "manual_url_no_query": "Ungültige Callback-URL: Query-Parameter fehlen", - "manual_url_missing_params": "Ungültige Callback-URL: erforderliche Parameter (code und state) fehlen", + "manual_url_missing_params": "Ungültige Callback-URL: erforderliche Parameter fehlen (code und state)", "manual_url_auth_failed": "Manuelle URL-Authentifizierung fehlgeschlagen", - "manual_url_auth_error": "Authentifizierung fehlgeschlagen" + "manual_url_auth_error": "Authentifizierung fehlgeschlagen", + "ollama": { + "inputTooLong": "Eingabenachricht ist zu lang für das ausgewählte Modell. Geschätzte Token: {{estimatedTokenCount}}, Max Token: {{maxTokens}}. Um die Kontextfenstergröße zu erhöhen, setze bitte die OLLAMA_NUM_CTX-Umgebungsvariable oder siehe Ollama-Dokumentation.", + "serviceNotRunning": "Ollama-Dienst läuft nicht unter {{baseUrl}}. Bitte starte Ollama zuerst.", + "modelNotFound": "Modell {{modelId}} nicht in Ollama gefunden. Bitte lade das Modell zuerst mit: ollama pull {{modelId}}", + "modelNotFoundWithAvailable": "Modell {{modelId}} nicht gefunden. Verfügbare Modelle: {{availableModels}}", + "modelNotFoundNoModels": "Modell {{modelId}} nicht gefunden. Keine Modelle verfügbar. Bitte lade das Modell zuerst mit: ollama pull {{modelId}}", + "completionError": "Ollama-Vervollständigungsfehler: {{error}}", + "clientCreationError": "Fehler beim Erstellen des Ollama-Clients: {{error}}", + "streamProcessingError": "Ollama-Stream-Verarbeitungsfehler: {{error}}", + "unknownError": "Unbekannter Fehler" + } }, "warnings": { "no_terminal_content": "Kein Terminal-Inhalt ausgewählt", diff --git a/src/i18n/locales/en/common.json b/src/i18n/locales/en/common.json index e8c264ba68..67b7d56f02 100644 --- a/src/i18n/locales/en/common.json +++ b/src/i18n/locales/en/common.json @@ -121,7 +121,18 @@ "manual_url_no_query": "Invalid callback URL: missing query parameters", "manual_url_missing_params": "Invalid callback URL: missing required parameters (code and state)", "manual_url_auth_failed": "Manual URL authentication failed", - "manual_url_auth_error": "Authentication failed" + "manual_url_auth_error": "Authentication failed", + "ollama": { + "inputTooLong": "Input message is too long for the selected model. Estimated tokens: {{estimatedTokenCount}}, Max tokens: {{maxTokens}}. To increase the context window size, please set the OLLAMA_NUM_CTX environment variable or see Ollama documentation.", + "serviceNotRunning": "Ollama service is not running at {{baseUrl}}. Please start Ollama first.", + "modelNotFound": "Model {{modelId}} not found in Ollama. Please pull the model first with: ollama pull {{modelId}}", + "modelNotFoundWithAvailable": "Model {{modelId}} not found. Available models: {{availableModels}}", + "modelNotFoundNoModels": "Model {{modelId}} not found. No models available. Please pull the model first with: ollama pull {{modelId}}", + "completionError": "Ollama completion error: {{error}}", + "clientCreationError": "Error creating Ollama client: {{error}}", + "streamProcessingError": "Ollama stream processing error: {{error}}", + "unknownError": "Unknown error" + } }, "warnings": { "no_terminal_content": "No terminal content selected", diff --git a/src/i18n/locales/es/common.json b/src/i18n/locales/es/common.json index 5cfa3c5749..1ad310880c 100644 --- a/src/i18n/locales/es/common.json +++ b/src/i18n/locales/es/common.json @@ -89,10 +89,10 @@ "notFound": "Ejecutable de Claude Code '{{claudePath}}' no encontrado.\n\nPor favor instala Claude Code CLI:\n1. Visita {{installationUrl}} para descargar Claude Code\n2. Sigue las instrucciones de instalación para tu sistema operativo\n3. Asegúrate de que el comando 'claude' esté disponible en tu PATH\n4. Alternativamente, configura una ruta personalizada en la configuración de Roo bajo 'Ruta de Claude Code'\n\nError original: {{originalError}}" }, "message": { - "no_active_task_to_delete": "No hay tarea activa de la cual eliminar mensajes", - "invalid_timestamp_for_deletion": "Marca de tiempo del mensaje no válida para eliminación", - "cannot_delete_missing_timestamp": "No se puede eliminar el mensaje: falta marca de tiempo", - "cannot_delete_invalid_timestamp": "No se puede eliminar el mensaje: marca de tiempo no válida", + "no_active_task_to_delete": "No hay tarea activa para eliminar mensajes", + "invalid_timestamp_for_deletion": "Marca de tiempo del mensaje inválida para eliminación", + "cannot_delete_missing_timestamp": "No se puede eliminar el mensaje: falta la marca de tiempo", + "cannot_delete_invalid_timestamp": "No se puede eliminar el mensaje: marca de tiempo inválida", "message_not_found": "Mensaje con marca de tiempo {{messageTs}} no encontrado", "error_deleting_message": "Error eliminando mensaje: {{error}}", "error_editing_message": "Error editando mensaje: {{error}}" @@ -117,11 +117,22 @@ "api": { "invalidKeyInvalidChars": "La clave API contiene caracteres inválidos." }, - "manual_url_empty": "Por favor, introduce una URL de callback válida", + "manual_url_empty": "Por favor ingresa una URL de callback válida", "manual_url_no_query": "URL de callback inválida: faltan parámetros de consulta", "manual_url_missing_params": "URL de callback inválida: faltan parámetros requeridos (code y state)", "manual_url_auth_failed": "Autenticación manual por URL falló", - "manual_url_auth_error": "Error de autenticación" + "manual_url_auth_error": "Autenticación falló", + "ollama": { + "inputTooLong": "El mensaje de entrada es demasiado largo para el modelo seleccionado. Tokens estimados: {{estimatedTokenCount}}, Tokens máximos: {{maxTokens}}. Para aumentar el tamaño de la ventana de contexto, establece la variable de entorno OLLAMA_NUM_CTX o consulta la documentación de Ollama.", + "serviceNotRunning": "El servicio Ollama no está ejecutándose en {{baseUrl}}. Por favor, inicia Ollama primero.", + "modelNotFound": "Modelo {{modelId}} no encontrado en Ollama. Por favor, descarga el modelo primero con: ollama pull {{modelId}}", + "modelNotFoundWithAvailable": "Modelo {{modelId}} no encontrado. Modelos disponibles: {{availableModels}}", + "modelNotFoundNoModels": "Modelo {{modelId}} no encontrado. No hay modelos disponibles. Por favor, descarga el modelo primero con: ollama pull {{modelId}}", + "completionError": "Error de finalización de Ollama: {{error}}", + "clientCreationError": "Error creando el cliente de Ollama: {{error}}", + "streamProcessingError": "Error procesando el flujo de Ollama: {{error}}", + "unknownError": "Error desconocido" + } }, "warnings": { "no_terminal_content": "No hay contenido de terminal seleccionado", diff --git a/src/i18n/locales/fr/common.json b/src/i18n/locales/fr/common.json index 5a11c874a7..64e990dc05 100644 --- a/src/i18n/locales/fr/common.json +++ b/src/i18n/locales/fr/common.json @@ -29,7 +29,7 @@ "checkpoint_timeout": "Expiration du délai lors de la tentative de rétablissement du checkpoint.", "checkpoint_failed": "Échec du rétablissement du checkpoint.", "git_not_installed": "Git est requis pour la fonctionnalité des points de contrôle. Veuillez installer Git pour activer les points de contrôle.", - "nested_git_repos_warning": "Les points de contrôle sont désactivés car un dépôt git imbriqué a été détecté à : {{path}}. Pour utiliser les points de contrôle, veuillez supprimer ou déplacer ce dépôt git imbriqué.", + "nested_git_repos_warning": "Les checkpoints sont désactivés car un dépôt git imbriqué a été détecté à : {{path}}. Pour utiliser les checkpoints, veuillez supprimer ou déplacer ce dépôt git imbriqué.", "no_workspace": "Veuillez d'abord ouvrir un espace de travail", "update_support_prompt": "Erreur lors de la mise à jour du prompt de support", "reset_support_prompt": "Erreur lors de la réinitialisation du prompt de support", @@ -89,11 +89,11 @@ "notFound": "Exécutable Claude Code '{{claudePath}}' introuvable.\n\nVeuillez installer Claude Code CLI :\n1. Visitez {{installationUrl}} pour télécharger Claude Code\n2. Suivez les instructions d'installation pour votre système d'exploitation\n3. Assurez-vous que la commande 'claude' est disponible dans votre PATH\n4. Alternativement, configurez un chemin personnalisé dans les paramètres Roo sous 'Chemin de Claude Code'\n\nErreur originale : {{originalError}}" }, "message": { - "no_active_task_to_delete": "Aucune tâche active pour supprimer des messages", - "invalid_timestamp_for_deletion": "Horodatage du message invalide pour la suppression", + "no_active_task_to_delete": "Aucune tâche active pour supprimer les messages", + "invalid_timestamp_for_deletion": "Horodatage de message invalide pour la suppression", "cannot_delete_missing_timestamp": "Impossible de supprimer le message : horodatage manquant", "cannot_delete_invalid_timestamp": "Impossible de supprimer le message : horodatage invalide", - "message_not_found": "Message avec horodatage {{messageTs}} introuvable", + "message_not_found": "Message avec horodatage {{messageTs}} non trouvé", "error_deleting_message": "Erreur lors de la suppression du message : {{error}}", "error_editing_message": "Erreur lors de la modification du message : {{error}}" }, @@ -117,11 +117,22 @@ "api": { "invalidKeyInvalidChars": "La clé API contient des caractères invalides." }, - "manual_url_empty": "Veuillez entrer une URL de callback valide", + "manual_url_empty": "Veuillez saisir 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)", - "manual_url_auth_failed": "Authentification par URL manuelle échouée", - "manual_url_auth_error": "Échec de l'authentification" + "manual_url_auth_failed": "Authentification manuelle par URL échouée", + "manual_url_auth_error": "Authentification échouée", + "ollama": { + "inputTooLong": "Le message d'entrée est trop long pour le modèle sélectionné. Tokens estimés : {{estimatedTokenCount}}, Tokens max : {{maxTokens}}. Pour augmenter la taille de la fenêtre de contexte, veuillez définir la variable d'environnement OLLAMA_NUM_CTX ou consulter la documentation Ollama.", + "serviceNotRunning": "Le service Ollama ne fonctionne pas sur {{baseUrl}}. Veuillez d'abord démarrer Ollama.", + "modelNotFound": "Modèle {{modelId}} introuvable dans Ollama. Veuillez d'abord télécharger le modèle avec : ollama pull {{modelId}}", + "modelNotFoundWithAvailable": "Modèle {{modelId}} introuvable. Modèles disponibles : {{availableModels}}", + "modelNotFoundNoModels": "Modèle {{modelId}} introuvable. Aucun modèle disponible. Veuillez d'abord télécharger le modèle avec : ollama pull {{modelId}}", + "completionError": "Erreur de complétion Ollama : {{error}}", + "clientCreationError": "Erreur lors de la création du client Ollama : {{error}}", + "streamProcessingError": "Erreur de traitement du flux Ollama : {{error}}", + "unknownError": "Erreur inconnue" + } }, "warnings": { "no_terminal_content": "Aucun contenu de terminal sélectionné", @@ -208,11 +219,6 @@ "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.", - "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)", - "manual_url_auth_failed": "Authentification par URL manuelle échouée", - "manual_url_auth_error": "Échec de l'authentification", "verification_failed": "Impossible de vérifier l'authentification de l'organisation." }, "info": { diff --git a/src/i18n/locales/hi/common.json b/src/i18n/locales/hi/common.json index e89c16cbd0..11e26d0b95 100644 --- a/src/i18n/locales/hi/common.json +++ b/src/i18n/locales/hi/common.json @@ -28,8 +28,8 @@ "could_not_open_file_generic": "फ़ाइल नहीं खोली जा सकी!", "checkpoint_timeout": "चेकपॉइंट को पुनर्स्थापित करने का प्रयास करते समय टाइमआउट हो गया।", "checkpoint_failed": "चेकपॉइंट पुनर्स्थापित करने में विफल।", - "git_not_installed": "चेकपॉइंट सुविधा के लिए Git आवश्यक है। कृपया चेकपॉइंट সক্ষম करने के लिए Git इंस्टॉल करें।", - "nested_git_repos_warning": "चेकपॉइंट अक्षम हैं क्योंकि {{path}} पर नेस्टेड git रिपॉजिटरी का पता चला है। चेकपॉइंट का उपयोग करने के लिए, कृपया इस नेस्टेड git रिपॉजिटरी को हटाएं या स्थानांतरित करें।", + "git_not_installed": "चेकपॉइंट सुविधा के लिए Git आवश्यक है। कृपया चेकपॉइंट सक्षम करने के लिए Git इंस्टॉल करें।", + "nested_git_repos_warning": "चेकपॉइंट अक्षम हैं क्योंकि {{path}} पर एक नेस्टेड git रिपॉजिटरी का पता चला है। चेकपॉइंट का उपयोग करने के लिए, कृपया इस नेस्टेड git रिपॉजिटरी को हटाएं या स्थानांतरित करें।", "no_workspace": "कृपया पहले प्रोजेक्ट फ़ोल्डर खोलें", "update_support_prompt": "सपोर्ट प्रॉम्प्ट अपडेट करने में विफल", "reset_support_prompt": "सपोर्ट प्रॉम्प्ट रीसेट करने में विफल", @@ -91,9 +91,9 @@ "message": { "no_active_task_to_delete": "संदेशों को हटाने के लिए कोई सक्रिय कार्य नहीं", "invalid_timestamp_for_deletion": "हटाने के लिए अमान्य संदेश टाइमस्टैम्प", - "cannot_delete_missing_timestamp": "संदेश हटाया नहीं जा सकता: टाइमस्टैम्प गुम है", - "cannot_delete_invalid_timestamp": "संदेश हटाया नहीं जा सकता: अमान्य टाइमस्टैम्प", - "message_not_found": "टाइमस्टैम्प {{messageTs}} वाला संदेश नहीं मिला", + "cannot_delete_missing_timestamp": "संदेश हटा नहीं सकते: टाइमस्टैम्प गुम है", + "cannot_delete_invalid_timestamp": "संदेश हटा नहीं सकते: अमान्य टाइमस्टैम्प", + "message_not_found": "टाइमस्टैम्प {{messageTs}} के साथ संदेश नहीं मिला", "error_deleting_message": "संदेश हटाने में त्रुटि: {{error}}", "error_editing_message": "संदेश संपादित करने में त्रुटि: {{error}}" }, @@ -117,11 +117,22 @@ "api": { "invalidKeyInvalidChars": "API कुंजी में अमान्य वर्ण हैं।" }, - "manual_url_empty": "कृपया एक वैध callback URL दर्ज करें", - "manual_url_no_query": "अवैध callback URL: क्वेरी पैरामीटर गुम हैं", - "manual_url_missing_params": "अवैध callback URL: आवश्यक पैरामीटर गुम हैं (code और state)", - "manual_url_auth_failed": "मैनुअल URL प्रमाणीकरण असफल", - "manual_url_auth_error": "प्रमाणीकरण असफल" + "manual_url_empty": "कृपया एक मान्य कॉलबैक URL दर्ज करें", + "manual_url_no_query": "अमान्य कॉलबैक URL: क्वेरी पैरामीटर गुम हैं", + "manual_url_missing_params": "अमान्य कॉलबैक URL: आवश्यक पैरामीटर गुम हैं (code और state)", + "manual_url_auth_failed": "मैन्युअल URL प्रमाणीकरण विफल", + "manual_url_auth_error": "प्रमाणीकरण विफल", + "ollama": { + "inputTooLong": "चयनित मॉडल के लिए इनपुट संदेश बहुत लंबा है। अनुमानित टोकन: {{estimatedTokenCount}}, अधिकतम टोकन: {{maxTokens}}। संदर्भ विंडो का आकार बढ़ाने के लिए, कृपया OLLAMA_NUM_CTX पर्यावरण चर सेट करें या Ollama दस्तावेज़ देखें।", + "serviceNotRunning": "Ollama सेवा {{baseUrl}} पर नहीं चल रही है। कृपया पहले Ollama शुरू करें।", + "modelNotFound": "मॉडल {{modelId}} Ollama में नहीं मिला। कृपया पहले मॉडल डाउनलोड करें: ollama pull {{modelId}}", + "modelNotFoundWithAvailable": "मॉडल {{modelId}} नहीं मिला। उपलब्ध मॉडल: {{availableModels}}", + "modelNotFoundNoModels": "मॉडल {{modelId}} नहीं मिला। कोई मॉडल उपलब्ध नहीं है। कृपया पहले मॉडल डाउनलोड करें: ollama pull {{modelId}}", + "completionError": "Ollama पूर्णता त्रुटि: {{error}}", + "clientCreationError": "Ollama क्लाइंट बनाने में त्रुटि: {{error}}", + "streamProcessingError": "Ollama स्ट्रीम प्रसंस्करण त्रुटि: {{error}}", + "unknownError": "अज्ञात त्रुटि" + } }, "warnings": { "no_terminal_content": "कोई टर्मिनल सामग्री चयनित नहीं", @@ -208,11 +219,6 @@ "errors": { "cloud_auth_required": "आपके संगठन को Roo Code Cloud प्रमाणीकरण की आवश्यकता है। कृपया जारी रखने के लिए साइन इन करें।", "organization_mismatch": "आपको अपने संगठन के Roo Code Cloud खाते से प्रमाणित होना होगा।", - "manual_url_empty": "कृपया एक वैध callback URL दर्ज करें", - "manual_url_no_query": "अवैध callback URL: क्वेरी पैरामीटर गुम हैं", - "manual_url_missing_params": "अवैध callback URL: आवश्यक पैरामीटर गुम हैं (code और state)", - "manual_url_auth_failed": "मैनुअल URL प्रमाणीकरण असफल", - "manual_url_auth_error": "प्रमाणीकरण असफल", "verification_failed": "संगठन प्रमाणीकरण सत्यापित करने में असमर्थ।" }, "info": { diff --git a/src/i18n/locales/id/common.json b/src/i18n/locales/id/common.json index ae1662eb37..0476c05eae 100644 --- a/src/i18n/locales/id/common.json +++ b/src/i18n/locales/id/common.json @@ -91,7 +91,7 @@ "message": { "no_active_task_to_delete": "Tidak ada tugas aktif untuk menghapus pesan", "invalid_timestamp_for_deletion": "Timestamp pesan tidak valid untuk penghapusan", - "cannot_delete_missing_timestamp": "Tidak dapat menghapus pesan: timestamp tidak ada", + "cannot_delete_missing_timestamp": "Tidak dapat menghapus pesan: timestamp hilang", "cannot_delete_invalid_timestamp": "Tidak dapat menghapus pesan: timestamp tidak valid", "message_not_found": "Pesan dengan timestamp {{messageTs}} tidak ditemukan", "error_deleting_message": "Error menghapus pesan: {{error}}", @@ -115,13 +115,24 @@ "authenticationRequired": "Penyedia Roo memerlukan autentikasi cloud. Silakan masuk ke Roo Code Cloud." }, "api": { - "invalidKeyInvalidChars": "Kunci API mengandung karakter tidak valid." + "invalidKeyInvalidChars": "Kunci API berisi karakter yang tidak valid." }, "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)", "manual_url_auth_failed": "Autentikasi URL manual gagal", - "manual_url_auth_error": "Autentikasi gagal" + "manual_url_auth_error": "Autentikasi gagal", + "ollama": { + "inputTooLong": "Pesan input terlalu panjang untuk model yang dipilih. Perkiraan token: {{estimatedTokenCount}}, Token maksimum: {{maxTokens}}. Untuk meningkatkan ukuran jendela konteks, silakan atur variabel lingkungan OLLAMA_NUM_CTX atau lihat dokumentasi Ollama.", + "serviceNotRunning": "Layanan Ollama tidak berjalan di {{baseUrl}}. Silakan jalankan Ollama terlebih dahulu.", + "modelNotFound": "Model {{modelId}} tidak ditemukan di Ollama. Silakan unduh model terlebih dahulu dengan: ollama pull {{modelId}}", + "modelNotFoundWithAvailable": "Model {{modelId}} tidak ditemukan. Model yang tersedia: {{availableModels}}", + "modelNotFoundNoModels": "Model {{modelId}} tidak ditemukan. Tidak ada model yang tersedia. Silakan unduh model terlebih dahulu dengan: ollama pull {{modelId}}", + "completionError": "Kesalahan penyelesaian Ollama: {{error}}", + "clientCreationError": "Kesalahan membuat klien Ollama: {{error}}", + "streamProcessingError": "Kesalahan pemrosesan stream Ollama: {{error}}", + "unknownError": "Kesalahan tidak dikenal" + } }, "warnings": { "no_terminal_content": "Tidak ada konten terminal yang dipilih", @@ -208,11 +219,6 @@ "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.", - "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)", - "manual_url_auth_failed": "Autentikasi URL manual gagal", - "manual_url_auth_error": "Autentikasi gagal", "verification_failed": "Tidak dapat memverifikasi autentikasi organisasi." }, "info": { diff --git a/src/i18n/locales/it/common.json b/src/i18n/locales/it/common.json index aeaec11d0d..e1549a0a2b 100644 --- a/src/i18n/locales/it/common.json +++ b/src/i18n/locales/it/common.json @@ -94,8 +94,8 @@ "cannot_delete_missing_timestamp": "Impossibile eliminare il messaggio: timestamp mancante", "cannot_delete_invalid_timestamp": "Impossibile eliminare il messaggio: timestamp non valido", "message_not_found": "Messaggio con timestamp {{messageTs}} non trovato", - "error_deleting_message": "Errore durante l'eliminazione del messaggio: {{error}}", - "error_editing_message": "Errore durante la modifica del messaggio: {{error}}" + "error_deleting_message": "Errore nell'eliminazione del messaggio: {{error}}", + "error_editing_message": "Errore nella modifica del messaggio: {{error}}" }, "gemini": { "generate_stream": "Errore del flusso di contesto di generazione Gemini: {{error}}", @@ -120,8 +120,19 @@ "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)", - "manual_url_auth_failed": "Autenticazione manuale tramite URL fallita", - "manual_url_auth_error": "Autenticazione fallita" + "manual_url_auth_failed": "Autenticazione URL manuale fallita", + "manual_url_auth_error": "Autenticazione fallita", + "ollama": { + "inputTooLong": "Il messaggio di input è troppo lungo per il modello selezionato. Token stimati: {{estimatedTokenCount}}, Token massimi: {{maxTokens}}. Per aumentare la dimensione della finestra di contesto, imposta la variabile d'ambiente OLLAMA_NUM_CTX o consulta la documentazione di Ollama.", + "serviceNotRunning": "Il servizio Ollama non è in esecuzione su {{baseUrl}}. Avvia prima Ollama.", + "modelNotFound": "Modello {{modelId}} non trovato in Ollama. Scarica prima il modello con: ollama pull {{modelId}}", + "modelNotFoundWithAvailable": "Modello {{modelId}} non trovato. Modelli disponibili: {{availableModels}}", + "modelNotFoundNoModels": "Modello {{modelId}} non trovato. Nessun modello disponibile. Scarica prima il modello con: ollama pull {{modelId}}", + "completionError": "Errore di completamento Ollama: {{error}}", + "clientCreationError": "Errore nella creazione del client Ollama: {{error}}", + "streamProcessingError": "Errore di elaborazione stream Ollama: {{error}}", + "unknownError": "Errore sconosciuto" + } }, "warnings": { "no_terminal_content": "Nessun contenuto del terminale selezionato", @@ -208,11 +219,6 @@ "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.", - "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)", - "manual_url_auth_failed": "Autenticazione manuale tramite URL fallita", - "manual_url_auth_error": "Autenticazione fallita", "verification_failed": "Impossibile verificare l'autenticazione dell'organizzazione." }, "info": { diff --git a/src/i18n/locales/ja/common.json b/src/i18n/locales/ja/common.json index a607dbffd5..a236113671 100644 --- a/src/i18n/locales/ja/common.json +++ b/src/i18n/locales/ja/common.json @@ -90,12 +90,12 @@ }, "message": { "no_active_task_to_delete": "メッセージを削除するアクティブなタスクがありません", - "invalid_timestamp_for_deletion": "削除用のメッセージタイムスタンプが無効です", - "cannot_delete_missing_timestamp": "メッセージを削除できません:タイムスタンプがありません", - "cannot_delete_invalid_timestamp": "メッセージを削除できません:タイムスタンプが無効です", + "invalid_timestamp_for_deletion": "削除用の無効なメッセージタイムスタンプ", + "cannot_delete_missing_timestamp": "メッセージを削除できません:タイムスタンプが不足しています", + "cannot_delete_invalid_timestamp": "メッセージを削除できません:無効なタイムスタンプ", "message_not_found": "タイムスタンプ {{messageTs}} のメッセージが見つかりません", - "error_deleting_message": "メッセージ削除エラー:{{error}}", - "error_editing_message": "メッセージ編集エラー:{{error}}" + "error_deleting_message": "メッセージの削除エラー:{{error}}", + "error_editing_message": "メッセージの編集エラー:{{error}}" }, "gemini": { "generate_stream": "Gemini 生成コンテキスト ストリーム エラー: {{error}}", @@ -117,11 +117,22 @@ "api": { "invalidKeyInvalidChars": "APIキーに無効な文字が含まれています。" }, - "manual_url_empty": "有効なコールバック URL を入力してください", - "manual_url_no_query": "無効なコールバック URL:クエリパラメータがありません", - "manual_url_missing_params": "無効なコールバック URL:必要なパラメータ(code と state)がありません", - "manual_url_auth_failed": "手動 URL 認証が失敗しました", - "manual_url_auth_error": "認証に失敗しました" + "manual_url_empty": "有効なコールバックURLを入力してください", + "manual_url_no_query": "無効なコールバックURL:クエリパラメータが不足しています", + "manual_url_missing_params": "無効なコールバックURL:必要なパラメータが不足しています(codeとstate)", + "manual_url_auth_failed": "手動URL認証が失敗しました", + "manual_url_auth_error": "認証が失敗しました", + "ollama": { + "inputTooLong": "入力メッセージが選択されたモデルには長すぎます。推定トークン数:{{estimatedTokenCount}}、最大トークン数:{{maxTokens}}。コンテキストウィンドウサイズを増やすには、OLLAMA_NUM_CTX環境変数を設定するか、Ollamaドキュメントを参照してください。", + "serviceNotRunning": "Ollamaサービスが{{baseUrl}}で実行されていません。まずOllamaを開始してください。", + "modelNotFound": "モデル{{modelId}}がOllamaで見つかりません。まずモデルをプルしてください:ollama pull {{modelId}}", + "modelNotFoundWithAvailable": "モデル{{modelId}}が見つかりません。利用可能なモデル:{{availableModels}}", + "modelNotFoundNoModels": "モデル{{modelId}}が見つかりません。利用可能なモデルがありません。まずモデルをプルしてください:ollama pull {{modelId}}", + "completionError": "Ollama完了エラー:{{error}}", + "clientCreationError": "Ollamaクライアント作成エラー:{{error}}", + "streamProcessingError": "Ollamaストリーム処理エラー:{{error}}", + "unknownError": "不明なエラー" + } }, "warnings": { "no_terminal_content": "選択されたターミナルコンテンツがありません", @@ -208,11 +219,6 @@ "errors": { "cloud_auth_required": "あなたの組織では Roo Code Cloud 認証が必要です。続行するにはサインインしてください。", "organization_mismatch": "組織の Roo Code Cloud アカウントで認証する必要があります。", - "manual_url_empty": "有効なコールバック URL を入力してください", - "manual_url_no_query": "無効なコールバック URL:クエリパラメータがありません", - "manual_url_missing_params": "無効なコールバック URL:必要なパラメータ(code と state)がありません", - "manual_url_auth_failed": "手動 URL 認証が失敗しました", - "manual_url_auth_error": "認証に失敗しました", "verification_failed": "組織認証の確認ができませんでした。" }, "info": { diff --git a/src/i18n/locales/ko/common.json b/src/i18n/locales/ko/common.json index e48b84fe20..8f89224b88 100644 --- a/src/i18n/locales/ko/common.json +++ b/src/i18n/locales/ko/common.json @@ -29,7 +29,7 @@ "checkpoint_timeout": "체크포인트 복원을 시도하는 중 시간 초과되었습니다.", "checkpoint_failed": "체크포인트 복원에 실패했습니다.", "git_not_installed": "체크포인트 기능을 사용하려면 Git이 필요합니다. 체크포인트를 활성화하려면 Git을 설치하세요.", - "nested_git_repos_warning": "{{path}}에서 중첩된 git 저장소가 감지되어 체크포인트가 비활성화되었습니다. 체크포인트를 사용하려면 이 중첩된 git 저장소를 제거하거나 이동해주세요.", + "nested_git_repos_warning": "{{path}}에서 중첩된 git 저장소가 감지되어 체크포인트가 비활성화되었습니다. 체크포인트를 사용하려면 이 중첩된 git 저장소를 제거하거나 이동하세요.", "no_workspace": "먼저 프로젝트 폴더를 열어주세요", "update_support_prompt": "지원 프롬프트 업데이트에 실패했습니다", "reset_support_prompt": "지원 프롬프트 재설정에 실패했습니다", @@ -90,9 +90,9 @@ }, "message": { "no_active_task_to_delete": "메시지를 삭제할 활성 작업이 없습니다", - "invalid_timestamp_for_deletion": "삭제를 위한 메시지 타임스탬프가 유효하지 않습니다", - "cannot_delete_missing_timestamp": "메시지를 삭제할 수 없습니다: 타임스탬프가 없습니다", - "cannot_delete_invalid_timestamp": "메시지를 삭제할 수 없습니다: 타임스탬프가 유효하지 않습니다", + "invalid_timestamp_for_deletion": "삭제를 위한 유효하지 않은 메시지 타임스탬프", + "cannot_delete_missing_timestamp": "메시지를 삭제할 수 없습니다: 타임스탬프 누락", + "cannot_delete_invalid_timestamp": "메시지를 삭제할 수 없습니다: 유효하지 않은 타임스탬프", "message_not_found": "타임스탬프 {{messageTs}}인 메시지를 찾을 수 없습니다", "error_deleting_message": "메시지 삭제 오류: {{error}}", "error_editing_message": "메시지 편집 오류: {{error}}" @@ -118,10 +118,21 @@ "invalidKeyInvalidChars": "API 키에 유효하지 않은 문자가 포함되어 있습니다." }, "manual_url_empty": "유효한 콜백 URL을 입력하세요", - "manual_url_no_query": "유효하지 않은 콜백 URL: 쿼리 매개변수 누락", - "manual_url_missing_params": "유효하지 않은 콜백 URL: 필요한 매개변수 누락 (code와 state)", + "manual_url_no_query": "유효하지 않은 콜백 URL: 쿼리 매개변수가 누락됨", + "manual_url_missing_params": "유효하지 않은 콜백 URL: 필수 매개변수가 누락됨 (code 및 state)", "manual_url_auth_failed": "수동 URL 인증 실패", - "manual_url_auth_error": "인증 실패" + "manual_url_auth_error": "인증 실패", + "ollama": { + "inputTooLong": "입력 메시지가 선택된 모델에 비해 너무 깁니다. 예상 토큰: {{estimatedTokenCount}}, 최대 토큰: {{maxTokens}}. 컨텍스트 윈도우 크기를 늘리려면 OLLAMA_NUM_CTX 환경 변수를 설정하거나 Ollama 문서를 참조하세요.", + "serviceNotRunning": "Ollama 서비스가 {{baseUrl}}에서 실행되지 않습니다. 먼저 Ollama를 시작하세요.", + "modelNotFound": "Ollama에서 모델 {{modelId}}을(를) 찾을 수 없습니다. 먼저 모델을 가져오세요: ollama pull {{modelId}}", + "modelNotFoundWithAvailable": "모델 {{modelId}}을(를) 찾을 수 없습니다. 사용 가능한 모델: {{availableModels}}", + "modelNotFoundNoModels": "모델 {{modelId}}을(를) 찾을 수 없습니다. 사용 가능한 모델이 없습니다. 먼저 모델을 가져오세요: ollama pull {{modelId}}", + "completionError": "Ollama 완료 오류: {{error}}", + "clientCreationError": "Ollama 클라이언트 생성 오류: {{error}}", + "streamProcessingError": "Ollama 스트림 처리 오류: {{error}}", + "unknownError": "알 수 없는 오류" + } }, "warnings": { "no_terminal_content": "선택된 터미널 내용이 없습니다", @@ -208,11 +219,6 @@ "errors": { "cloud_auth_required": "조직에서 Roo Code Cloud 인증이 필요합니다. 계속하려면 로그인하세요.", "organization_mismatch": "조직의 Roo Code Cloud 계정으로 인증해야 합니다.", - "manual_url_empty": "유효한 콜백 URL을 입력하세요", - "manual_url_no_query": "유효하지 않은 콜백 URL: 쿼리 매개변수 누락", - "manual_url_missing_params": "유효하지 않은 콜백 URL: 필요한 매개변수 누락 (code와 state)", - "manual_url_auth_failed": "수동 URL 인증 실패", - "manual_url_auth_error": "인증 실패", "verification_failed": "조직 인증을 확인할 수 없습니다." }, "info": { diff --git a/src/i18n/locales/nl/common.json b/src/i18n/locales/nl/common.json index 0e3e2459a0..62933f65c7 100644 --- a/src/i18n/locales/nl/common.json +++ b/src/i18n/locales/nl/common.json @@ -29,7 +29,7 @@ "checkpoint_timeout": "Time-out bij het herstellen van checkpoint.", "checkpoint_failed": "Herstellen van checkpoint mislukt.", "git_not_installed": "Git is vereist voor de checkpoint-functie. Installeer Git om checkpoints in te schakelen.", - "nested_git_repos_warning": "Checkpoints zijn uitgeschakeld omdat een geneste git-repository is gedetecteerd op: {{path}}. Om checkpoints te gebruiken, verwijder of verplaats deze geneste git-repository.", + "nested_git_repos_warning": "Checkpoints zijn uitgeschakeld omdat een geneste git-repository werd gedetecteerd op: {{path}}. Om checkpoints te gebruiken, verwijder of verplaats deze geneste git-repository.", "no_workspace": "Open eerst een projectmap", "update_support_prompt": "Bijwerken van ondersteuningsprompt mislukt", "reset_support_prompt": "Resetten van ondersteuningsprompt mislukt", @@ -89,10 +89,10 @@ "notFound": "Claude Code executable '{{claudePath}}' not found.\n\nPlease install Claude Code CLI:\n1. Visit {{installationUrl}} to download Claude Code\n2. Follow the installation instructions for your operating system\n3. Ensure the 'claude' command is available in your PATH\n4. Alternatively, configure a custom path in Roo settings under 'Claude Code Path'\n\nOriginal error: {{originalError}}" }, "message": { - "no_active_task_to_delete": "Geen actieve taak om berichten uit te verwijderen", - "invalid_timestamp_for_deletion": "Ongeldig bericht tijdstempel voor verwijdering", + "no_active_task_to_delete": "Geen actieve taak om berichten van te verwijderen", + "invalid_timestamp_for_deletion": "Ongeldige berichttijdstempel voor verwijdering", "cannot_delete_missing_timestamp": "Kan bericht niet verwijderen: tijdstempel ontbreekt", - "cannot_delete_invalid_timestamp": "Kan bericht niet verwijderen: ongeldig tijdstempel", + "cannot_delete_invalid_timestamp": "Kan bericht niet verwijderen: ongeldige tijdstempel", "message_not_found": "Bericht met tijdstempel {{messageTs}} niet gevonden", "error_deleting_message": "Fout bij verwijderen van bericht: {{error}}", "error_editing_message": "Fout bij bewerken van bericht: {{error}}" @@ -115,13 +115,24 @@ "authenticationRequired": "Roo provider vereist cloud authenticatie. Log in bij Roo Code Cloud." }, "api": { - "invalidKeyInvalidChars": "API-sleutel bevat ongeldige karakters." + "invalidKeyInvalidChars": "API-sleutel bevat ongeldige tekens." }, "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)", "manual_url_auth_failed": "Handmatige URL-authenticatie mislukt", - "manual_url_auth_error": "Authenticatie mislukt" + "manual_url_auth_error": "Authenticatie mislukt", + "ollama": { + "inputTooLong": "Invoerbericht is te lang voor het geselecteerde model. Geschatte tokens: {{estimatedTokenCount}}, Max tokens: {{maxTokens}}. Om de contextvenstergrootte te vergroten, stel de OLLAMA_NUM_CTX omgevingsvariabele in of zie Ollama documentatie.", + "serviceNotRunning": "Ollama service draait niet op {{baseUrl}}. Start eerst Ollama.", + "modelNotFound": "Model {{modelId}} niet gevonden in Ollama. Download eerst het model met: ollama pull {{modelId}}", + "modelNotFoundWithAvailable": "Model {{modelId}} niet gevonden. Beschikbare modellen: {{availableModels}}", + "modelNotFoundNoModels": "Model {{modelId}} niet gevonden. Geen modellen beschikbaar. Download eerst het model met: ollama pull {{modelId}}", + "completionError": "Ollama voltooiingsfout: {{error}}", + "clientCreationError": "Fout bij het maken van Ollama client: {{error}}", + "streamProcessingError": "Ollama stream verwerkingsfout: {{error}}", + "unknownError": "Onbekende fout" + } }, "warnings": { "no_terminal_content": "Geen terminalinhoud geselecteerd", @@ -208,11 +219,6 @@ "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.", - "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)", - "manual_url_auth_failed": "Handmatige URL-authenticatie mislukt", - "manual_url_auth_error": "Authenticatie mislukt", "verification_failed": "Kan organisatie-authenticatie niet verifiëren." }, "info": { diff --git a/src/i18n/locales/pl/common.json b/src/i18n/locales/pl/common.json index 1d48b0f9cc..bae3cbc750 100644 --- a/src/i18n/locales/pl/common.json +++ b/src/i18n/locales/pl/common.json @@ -95,7 +95,7 @@ "cannot_delete_invalid_timestamp": "Nie można usunąć wiadomości: nieprawidłowy znacznik czasu", "message_not_found": "Wiadomość ze znacznikiem czasu {{messageTs}} nie została znaleziona", "error_deleting_message": "Błąd usuwania wiadomości: {{error}}", - "error_editing_message": "Błąd edytowania wiadomości: {{error}}" + "error_editing_message": "Błąd edycji wiadomości: {{error}}" }, "gemini": { "generate_stream": "Błąd strumienia kontekstu generowania Gemini: {{error}}", @@ -121,7 +121,18 @@ "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)", "manual_url_auth_failed": "Ręczne uwierzytelnienie URL nie powiodło się", - "manual_url_auth_error": "Uwierzytelnienie nie powiodło się" + "manual_url_auth_error": "Uwierzytelnienie nie powiodło się", + "ollama": { + "inputTooLong": "Wiadomość wejściowa jest za długa dla wybranego modelu. Szacowane tokeny: {{estimatedTokenCount}}, Maksymalne tokeny: {{maxTokens}}. Aby zwiększyć rozmiar okna kontekstu, ustaw zmienną środowiskową OLLAMA_NUM_CTX lub zobacz dokumentację Ollama.", + "serviceNotRunning": "Usługa Ollama nie działa na {{baseUrl}}. Najpierw uruchom Ollama.", + "modelNotFound": "Model {{modelId}} nie został znaleziony w Ollama. Najpierw pobierz model za pomocą: ollama pull {{modelId}}", + "modelNotFoundWithAvailable": "Model {{modelId}} nie został znaleziony. Dostępne modele: {{availableModels}}", + "modelNotFoundNoModels": "Model {{modelId}} nie został znaleziony. Brak dostępnych modeli. Najpierw pobierz model za pomocą: ollama pull {{modelId}}", + "completionError": "Błąd ukończenia Ollama: {{error}}", + "clientCreationError": "Błąd tworzenia klienta Ollama: {{error}}", + "streamProcessingError": "Błąd przetwarzania strumienia Ollama: {{error}}", + "unknownError": "Nieznany błąd" + } }, "warnings": { "no_terminal_content": "Nie wybrano zawartości terminala", @@ -208,11 +219,6 @@ "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.", - "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)", - "manual_url_auth_failed": "Ręczne uwierzytelnienie URL nie powiodło się", - "manual_url_auth_error": "Uwierzytelnienie nie powiodło się", "verification_failed": "Nie można zweryfikować uwierzytelnienia organizacji." }, "info": { diff --git a/src/i18n/locales/pt-BR/common.json b/src/i18n/locales/pt-BR/common.json index 093ef7b0bf..d9ed8814b3 100644 --- a/src/i18n/locales/pt-BR/common.json +++ b/src/i18n/locales/pt-BR/common.json @@ -33,7 +33,7 @@ "checkpoint_timeout": "Tempo esgotado ao tentar restaurar o ponto de verificação.", "checkpoint_failed": "Falha ao restaurar o ponto de verificação.", "git_not_installed": "O Git é necessário para o recurso de checkpoints. Por favor, instale o Git para habilitar os checkpoints.", - "nested_git_repos_warning": "Os checkpoints estão desabilitados porque um repositório git aninhado foi detectado em: {{path}}. Para usar checkpoints, por favor remova ou realoque este repositório git aninhado.", + "nested_git_repos_warning": "Os checkpoints estão desabilitados porque um repositório git aninhado foi detectado em: {{path}}. Para usar checkpoints, remova ou mova este repositório git aninhado.", "no_workspace": "Por favor, abra primeiro uma pasta de projeto", "update_support_prompt": "Falha ao atualizar o prompt de suporte", "reset_support_prompt": "Falha ao redefinir o prompt de suporte", @@ -94,7 +94,7 @@ }, "message": { "no_active_task_to_delete": "Nenhuma tarefa ativa para excluir mensagens", - "invalid_timestamp_for_deletion": "Timestamp da mensagem inválido para exclusão", + "invalid_timestamp_for_deletion": "Timestamp de mensagem inválido para exclusão", "cannot_delete_missing_timestamp": "Não é possível excluir mensagem: timestamp ausente", "cannot_delete_invalid_timestamp": "Não é possível excluir mensagem: timestamp inválido", "message_not_found": "Mensagem com timestamp {{messageTs}} não encontrada", @@ -119,13 +119,24 @@ "authenticationRequired": "O provedor Roo requer autenticação na nuvem. Faça login no Roo Code Cloud." }, "api": { - "invalidKeyInvalidChars": "A chave API contém caracteres inválidos." + "invalidKeyInvalidChars": "A chave da API contém caracteres inválidos." }, - "manual_url_empty": "Por favor, insira uma URL de callback válida", + "manual_url_empty": "Digite 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)", "manual_url_auth_failed": "Autenticação manual por URL falhou", - "manual_url_auth_error": "Falha na autenticação" + "manual_url_auth_error": "Autenticação falhou", + "ollama": { + "inputTooLong": "Mensagem de entrada muito longa para o modelo selecionado. Tokens estimados: {{estimatedTokenCount}}, Tokens máximos: {{maxTokens}}. Para aumentar o tamanho da janela de contexto, defina a variável de ambiente OLLAMA_NUM_CTX ou consulte a documentação do Ollama.", + "serviceNotRunning": "O serviço Ollama não está executando em {{baseUrl}}. Inicie o Ollama primeiro.", + "modelNotFound": "Modelo {{modelId}} não encontrado no Ollama. Baixe o modelo primeiro com: ollama pull {{modelId}}", + "modelNotFoundWithAvailable": "Modelo {{modelId}} não encontrado. Modelos disponíveis: {{availableModels}}", + "modelNotFoundNoModels": "Modelo {{modelId}} não encontrado. Nenhum modelo disponível. Baixe o modelo primeiro com: ollama pull {{modelId}}", + "completionError": "Erro de conclusão do Ollama: {{error}}", + "clientCreationError": "Erro ao criar cliente Ollama: {{error}}", + "streamProcessingError": "Erro de processamento de stream do Ollama: {{error}}", + "unknownError": "Erro desconhecido" + } }, "warnings": { "no_terminal_content": "Nenhum conteúdo do terminal selecionado", @@ -208,11 +219,6 @@ "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.", - "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)", - "manual_url_auth_failed": "Autenticação manual por URL falhou", - "manual_url_auth_error": "Falha na autenticação", "verification_failed": "Não foi possível verificar a autenticação da organização." }, "info": { diff --git a/src/i18n/locales/ru/common.json b/src/i18n/locales/ru/common.json index 7edd656d8c..797cfbaa6c 100644 --- a/src/i18n/locales/ru/common.json +++ b/src/i18n/locales/ru/common.json @@ -29,7 +29,7 @@ "checkpoint_timeout": "Превышено время ожидания при попытке восстановления контрольной точки.", "checkpoint_failed": "Не удалось восстановить контрольную точку.", "git_not_installed": "Для функции контрольных точек требуется Git. Пожалуйста, установите Git, чтобы включить контрольные точки.", - "nested_git_repos_warning": "Контрольные точки отключены, поскольку обнаружен вложенный git-репозиторий в: {{path}}. Чтобы использовать контрольные точки, пожалуйста, удалите или переместите этот вложенный git-репозиторий.", + "nested_git_repos_warning": "Контрольные точки отключены, поскольку обнаружен вложенный git-репозиторий в: {{path}}. Чтобы использовать контрольные точки, удалите или переместите этот вложенный git-репозиторий.", "no_workspace": "Пожалуйста, сначала откройте папку проекта", "update_support_prompt": "Не удалось обновить промпт поддержки", "reset_support_prompt": "Не удалось сбросить промпт поддержки", @@ -117,11 +117,22 @@ "api": { "invalidKeyInvalidChars": "API-ключ содержит недопустимые символы." }, - "manual_url_empty": "Введи действительный URL обратного вызова", + "manual_url_empty": "Введите действительный URL обратного вызова", "manual_url_no_query": "Недействительный URL обратного вызова: отсутствуют параметры запроса", "manual_url_missing_params": "Недействительный URL обратного вызова: отсутствуют обязательные параметры (code и state)", - "manual_url_auth_failed": "Ручная аутентификация по URL не удалась", - "manual_url_auth_error": "Аутентификация не удалась" + "manual_url_auth_failed": "Ручная аутентификация URL не удалась", + "manual_url_auth_error": "Аутентификация не удалась", + "ollama": { + "inputTooLong": "Входное сообщение слишком длинное для выбранной модели. Предполагаемые токены: {{estimatedTokenCount}}, Максимальные токены: {{maxTokens}}. Чтобы увеличить размер окна контекста, установите переменную окружения OLLAMA_NUM_CTX или обратитесь к документации Ollama.", + "serviceNotRunning": "Сервис Ollama не запущен на {{baseUrl}}. Сначала запустите Ollama.", + "modelNotFound": "Модель {{modelId}} не найдена в Ollama. Сначала загрузите модель с помощью: ollama pull {{modelId}}", + "modelNotFoundWithAvailable": "Модель {{modelId}} не найдена. Доступные модели: {{availableModels}}", + "modelNotFoundNoModels": "Модель {{modelId}} не найдена. Нет доступных моделей. Сначала загрузите модель с помощью: ollama pull {{modelId}}", + "completionError": "Ошибка завершения Ollama: {{error}}", + "clientCreationError": "Ошибка создания клиента Ollama: {{error}}", + "streamProcessingError": "Ошибка обработки потока Ollama: {{error}}", + "unknownError": "Неизвестная ошибка" + } }, "warnings": { "no_terminal_content": "Не выбрано содержимое терминала", @@ -208,11 +219,6 @@ "errors": { "cloud_auth_required": "Ваша организация требует аутентификации Roo Code Cloud. Войдите в систему, чтобы продолжить.", "organization_mismatch": "Вы должны быть аутентифицированы с учетной записью Roo Code Cloud вашей организации.", - "manual_url_empty": "Введи действительный URL обратного вызова", - "manual_url_no_query": "Недействительный URL обратного вызова: отсутствуют параметры запроса", - "manual_url_missing_params": "Недействительный URL обратного вызова: отсутствуют обязательные параметры (code и state)", - "manual_url_auth_failed": "Ручная аутентификация по URL не удалась", - "manual_url_auth_error": "Аутентификация не удалась", "verification_failed": "Не удается проверить аутентификацию организации." }, "info": { diff --git a/src/i18n/locales/tr/common.json b/src/i18n/locales/tr/common.json index 20b2824b98..8ac7148236 100644 --- a/src/i18n/locales/tr/common.json +++ b/src/i18n/locales/tr/common.json @@ -29,7 +29,7 @@ "checkpoint_timeout": "Kontrol noktasını geri yüklemeye çalışırken zaman aşımına uğradı.", "checkpoint_failed": "Kontrol noktası geri yüklenemedi.", "git_not_installed": "Kontrol noktaları özelliği için Git gereklidir. Kontrol noktalarını etkinleştirmek için lütfen Git'i yükleyin.", - "nested_git_repos_warning": "{{path}} konumunda iç içe git deposu tespit edildiği için kontrol noktaları devre dışı bırakıldı. Kontrol noktalarını kullanmak için lütfen bu iç içe git deposunu kaldırın veya taşıyın.", + "nested_git_repos_warning": "Kontrol noktaları devre dışı bırakıldı çünkü {{path}} konumunda iç içe geçmiş bir git deposu tespit edildi. Kontrol noktalarını kullanmak için lütfen bu iç içe geçmiş git deposunu kaldırın veya taşıyın.", "no_workspace": "Lütfen önce bir proje klasörü açın", "update_support_prompt": "Destek istemi güncellenemedi", "reset_support_prompt": "Destek istemi sıfırlanamadı", @@ -89,7 +89,7 @@ "notFound": "Claude Code executable '{{claudePath}}' not found.\n\nPlease install Claude Code CLI:\n1. Visit {{installationUrl}} to download Claude Code\n2. Follow the installation instructions for your operating system\n3. Ensure the 'claude' command is available in your PATH\n4. Alternatively, configure a custom path in Roo settings under 'Claude Code Path'\n\nOriginal error: {{originalError}}" }, "message": { - "no_active_task_to_delete": "Mesaj silinecek aktif görev yok", + "no_active_task_to_delete": "Mesajları silmek için aktif görev yok", "invalid_timestamp_for_deletion": "Silme için geçersiz mesaj zaman damgası", "cannot_delete_missing_timestamp": "Mesaj silinemiyor: zaman damgası eksik", "cannot_delete_invalid_timestamp": "Mesaj silinemiyor: geçersiz zaman damgası", @@ -117,11 +117,22 @@ "api": { "invalidKeyInvalidChars": "API anahtarı geçersiz karakterler içeriyor." }, - "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)", - "manual_url_auth_failed": "Manuel URL kimlik doğrulama başarısız", - "manual_url_auth_error": "Kimlik doğrulama başarısız" + "manual_url_empty": "Lütfen geçerli bir geri çağırma URL'si girin", + "manual_url_no_query": "Geçersiz geri çağırma URL'si: sorgu parametreleri eksik", + "manual_url_missing_params": "Geçersiz geri çağırma URL'si: gerekli parametreler eksik (code ve state)", + "manual_url_auth_failed": "Manuel URL kimlik doğrulaması başarısız", + "manual_url_auth_error": "Kimlik doğrulaması başarısız", + "ollama": { + "inputTooLong": "Giriş mesajı seçilen model için çok uzun. Tahmini token: {{estimatedTokenCount}}, Maksimum token: {{maxTokens}}. Bağlam penceresi boyutunu artırmak için OLLAMA_NUM_CTX ortam değişkenini ayarlayın veya Ollama belgelerine bakın.", + "serviceNotRunning": "Ollama servisi {{baseUrl}} adresinde çalışmıyor. Önce Ollama'yı başlatın.", + "modelNotFound": "Model {{modelId}} Ollama'da bulunamadı. Önce modeli indirin: ollama pull {{modelId}}", + "modelNotFoundWithAvailable": "Model {{modelId}} bulunamadı. Mevcut modeller: {{availableModels}}", + "modelNotFoundNoModels": "Model {{modelId}} bulunamadı. Mevcut model yok. Önce modeli indirin: ollama pull {{modelId}}", + "completionError": "Ollama tamamlama hatası: {{error}}", + "clientCreationError": "Ollama istemci oluşturma hatası: {{error}}", + "streamProcessingError": "Ollama akış işleme hatası: {{error}}", + "unknownError": "Bilinmeyen hata" + } }, "warnings": { "no_terminal_content": "Seçili terminal içeriği yok", @@ -208,11 +219,6 @@ "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.", - "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)", - "manual_url_auth_failed": "Manuel URL kimlik doğrulama başarısız", - "manual_url_auth_error": "Kimlik doğrulama başarısız", "verification_failed": "Kuruluş kimlik doğrulaması doğrulanamıyor." }, "info": { diff --git a/src/i18n/locales/vi/common.json b/src/i18n/locales/vi/common.json index f4755162fe..ee8944d69c 100644 --- a/src/i18n/locales/vi/common.json +++ b/src/i18n/locales/vi/common.json @@ -93,7 +93,7 @@ "invalid_timestamp_for_deletion": "Dấu thời gian tin nhắn không hợp lệ để xóa", "cannot_delete_missing_timestamp": "Không thể xóa tin nhắn: thiếu dấu thời gian", "cannot_delete_invalid_timestamp": "Không thể xóa tin nhắn: dấu thời gian không hợp lệ", - "message_not_found": "Không tìm thấy tin nhắn có dấu thời gian {{messageTs}}", + "message_not_found": "Không tìm thấy tin nhắn với dấu thời gian {{messageTs}}", "error_deleting_message": "Lỗi xóa tin nhắn: {{error}}", "error_editing_message": "Lỗi chỉnh sửa tin nhắn: {{error}}" }, @@ -121,7 +121,18 @@ "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)", "manual_url_auth_failed": "Xác thực URL thủ công thất bại", - "manual_url_auth_error": "Xác thực thất bại" + "manual_url_auth_error": "Xác thực thất bại", + "ollama": { + "inputTooLong": "Tin nhắn đầu vào quá dài cho mô hình đã chọn. Token ước tính: {{estimatedTokenCount}}, Token tối đa: {{maxTokens}}. Để tăng kích thước cửa sổ ngữ cảnh, vui lòng đặt biến môi trường OLLAMA_NUM_CTX hoặc xem tài liệu Ollama.", + "serviceNotRunning": "Dịch vụ Ollama không chạy tại {{baseUrl}}. Vui lòng khởi động Ollama trước.", + "modelNotFound": "Không tìm thấy mô hình {{modelId}} trong Ollama. Vui lòng tải mô hình trước với: ollama pull {{modelId}}", + "modelNotFoundWithAvailable": "Không tìm thấy mô hình {{modelId}}. Các mô hình có sẵn: {{availableModels}}", + "modelNotFoundNoModels": "Không tìm thấy mô hình {{modelId}}. Không có mô hình nào có sẵn. Vui lòng tải mô hình trước với: ollama pull {{modelId}}", + "completionError": "Lỗi hoàn thành Ollama: {{error}}", + "clientCreationError": "Lỗi tạo client Ollama: {{error}}", + "streamProcessingError": "Lỗi xử lý stream Ollama: {{error}}", + "unknownError": "Lỗi không xác định" + } }, "warnings": { "no_terminal_content": "Không có nội dung terminal được chọn", @@ -208,11 +219,6 @@ "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.", - "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)", - "manual_url_auth_failed": "Xác thực URL thủ công thất bại", - "manual_url_auth_error": "Xác thực thất bại", "verification_failed": "Không thể xác minh xác thực tổ chức." }, "info": { diff --git a/src/i18n/locales/zh-CN/common.json b/src/i18n/locales/zh-CN/common.json index 787c5c8ae9..19be5f788a 100644 --- a/src/i18n/locales/zh-CN/common.json +++ b/src/i18n/locales/zh-CN/common.json @@ -34,7 +34,7 @@ "checkpoint_timeout": "尝试恢复检查点时超时。", "checkpoint_failed": "恢复检查点失败。", "git_not_installed": "存档点功能需要 Git。请安装 Git 以启用存档点。", - "nested_git_repos_warning": "存档点已禁用,因为在 {{path}} 检测到嵌套的 git 仓库。要使用存档点,请移除或重新定位此嵌套的 git 仓库。", + "nested_git_repos_warning": "存档点已禁用,因为在 {{path}} 检测到嵌套的 git 仓库。要使用存档点,请删除或移动此嵌套的 git 仓库。", "no_workspace": "请先打开项目文件夹", "update_support_prompt": "更新支持消息失败", "reset_support_prompt": "重置支持消息失败", @@ -94,11 +94,11 @@ "notFound": "Claude Code executable '{{claudePath}}' not found.\n\nPlease install Claude Code CLI:\n1. Visit {{installationUrl}} to download Claude Code\n2. Follow the installation instructions for your operating system\n3. Ensure the 'claude' command is available in your PATH\n4. Alternatively, configure a custom path in Roo settings under 'Claude Code Path'\n\nOriginal error: {{originalError}}" }, "message": { - "no_active_task_to_delete": "没有可删除消息的活跃任务", - "invalid_timestamp_for_deletion": "删除操作的消息时间戳无效", + "no_active_task_to_delete": "没有活跃任务可删除消息", + "invalid_timestamp_for_deletion": "删除的消息时间戳无效", "cannot_delete_missing_timestamp": "无法删除消息:缺少时间戳", - "cannot_delete_invalid_timestamp": "无法删除消息:时间戳无效", - "message_not_found": "未找到时间戳为 {{messageTs}} 的消息", + "cannot_delete_invalid_timestamp": "无法删除消息:无效的时间戳", + "message_not_found": "找不到时间戳为 {{messageTs}} 的消息", "error_deleting_message": "删除消息时出错:{{error}}", "error_editing_message": "编辑消息时出错:{{error}}" }, @@ -125,8 +125,19 @@ "manual_url_empty": "请输入有效的回调 URL", "manual_url_no_query": "无效的回调 URL:缺少查询参数", "manual_url_missing_params": "无效的回调 URL:缺少必需参数(code 和 state)", - "manual_url_auth_failed": "手动 URL 身份验证失败", - "manual_url_auth_error": "身份验证失败" + "manual_url_auth_failed": "手动 URL 认证失败", + "manual_url_auth_error": "认证失败", + "ollama": { + "inputTooLong": "输入消息对所选模型来说太长。预估 Token 数:{{estimatedTokenCount}},最大 Token 数:{{maxTokens}}。要增加上下文窗口大小,请设置 OLLAMA_NUM_CTX 环境变量或查看 Ollama 文档。", + "serviceNotRunning": "Ollama 服务未在 {{baseUrl}} 运行。请先启动 Ollama。", + "modelNotFound": "在 Ollama 中未找到模型 {{modelId}}。请先拉取模型:ollama pull {{modelId}}", + "modelNotFoundWithAvailable": "未找到模型 {{modelId}}。可用模型:{{availableModels}}", + "modelNotFoundNoModels": "未找到模型 {{modelId}}。没有可用模型。请先拉取模型:ollama pull {{modelId}}", + "completionError": "Ollama 完成错误:{{error}}", + "clientCreationError": "创建 Ollama 客户端错误:{{error}}", + "streamProcessingError": "Ollama 流处理错误:{{error}}", + "unknownError": "未知错误" + } }, "warnings": { "no_terminal_content": "没有选择终端内容", @@ -213,11 +224,6 @@ "errors": { "cloud_auth_required": "您的组织需要 Roo Code Cloud 身份验证。请登录以继续。", "organization_mismatch": "您必须使用组织的 Roo Code Cloud 账户进行身份验证。", - "manual_url_empty": "请输入有效的回调 URL", - "manual_url_no_query": "无效的回调 URL:缺少查询参数", - "manual_url_missing_params": "无效的回调 URL:缺少必需参数(code 和 state)", - "manual_url_auth_failed": "手动 URL 身份验证失败", - "manual_url_auth_error": "身份验证失败", "verification_failed": "无法验证组织身份验证。" }, "info": { diff --git a/src/i18n/locales/zh-TW/common.json b/src/i18n/locales/zh-TW/common.json index 0ae3549d3e..5846a60cd0 100644 --- a/src/i18n/locales/zh-TW/common.json +++ b/src/i18n/locales/zh-TW/common.json @@ -29,7 +29,7 @@ "checkpoint_timeout": "嘗試恢復檢查點時超時。", "checkpoint_failed": "恢復檢查點失敗。", "git_not_installed": "存檔點功能需要 Git。請安裝 Git 以啟用存檔點。", - "nested_git_repos_warning": "存檔點已停用,因為在 {{path}} 偵測到巢狀的 git 儲存庫。要使用存檔點,請移除或重新配置此巢狀的 git 儲存庫。", + "nested_git_repos_warning": "存檔點已停用,因為在 {{path}} 偵測到巢狀 git 儲存庫。要使用存檔點,請移除或重新放置此巢狀 git 儲存庫。", "no_workspace": "請先開啟專案資料夾", "update_support_prompt": "更新支援訊息失敗", "reset_support_prompt": "重設支援訊息失敗", @@ -88,13 +88,13 @@ "notFound": "找不到 Claude Code 可執行檔案 '{{claudePath}}'。\n\n請安裝 Claude Code CLI:\n1. 造訪 {{installationUrl}} 下載 Claude Code\n2. 依照作業系統的安裝說明進行操作\n3. 確保 'claude' 指令在 PATH 中可用\n4. 或者在 Roo 設定中的 'Claude Code 路徑' 下設定自訂路徑\n\n原始錯誤:{{originalError}}" }, "message": { - "no_active_task_to_delete": "沒有可刪除訊息的活躍工作", - "invalid_timestamp_for_deletion": "刪除操作的訊息時間戳無效", + "no_active_task_to_delete": "沒有活躍任務可刪除訊息", + "invalid_timestamp_for_deletion": "刪除的訊息時間戳無效", "cannot_delete_missing_timestamp": "無法刪除訊息:缺少時間戳", - "cannot_delete_invalid_timestamp": "無法刪除訊息:時間戳無效", - "message_not_found": "未找到時間戳為 {{messageTs}} 的訊息", - "error_deleting_message": "刪除訊息時出錯:{{error}}", - "error_editing_message": "編輯訊息時出錯:{{error}}" + "cannot_delete_invalid_timestamp": "無法刪除訊息:無效的時間戳", + "message_not_found": "找不到時間戳為 {{messageTs}} 的訊息", + "error_deleting_message": "刪除訊息時發生錯誤:{{error}}", + "error_editing_message": "編輯訊息時發生錯誤:{{error}}" }, "gemini": { "generate_stream": "Gemini 產生內容串流錯誤:{{error}}", @@ -119,8 +119,19 @@ "manual_url_empty": "請輸入有效的回呼 URL", "manual_url_no_query": "無效的回呼 URL:缺少查詢參數", "manual_url_missing_params": "無效的回呼 URL:缺少必要參數(code 和 state)", - "manual_url_auth_failed": "手動 URL 身份驗證失敗", - "manual_url_auth_error": "身份驗證失敗", + "manual_url_auth_failed": "手動 URL 驗證失敗", + "manual_url_auth_error": "驗證失敗", + "ollama": { + "inputTooLong": "輸入訊息對所選模型來說太長。預估 Token 數:{{estimatedTokenCount}},最大 Token 數:{{maxTokens}}。要增加上下文視窗大小,請設定 OLLAMA_NUM_CTX 環境變數或查看 Ollama 文件。", + "serviceNotRunning": "Ollama 服務未在 {{baseUrl}} 執行。請先啟動 Ollama。", + "modelNotFound": "在 Ollama 中未找到模型 {{modelId}}。請先拉取模型:ollama pull {{modelId}}", + "modelNotFoundWithAvailable": "未找到模型 {{modelId}}。可用模型:{{availableModels}}", + "modelNotFoundNoModels": "未找到模型 {{modelId}}。沒有可用模型。請先拉取模型:ollama pull {{modelId}}", + "completionError": "Ollama 完成錯誤:{{error}}", + "clientCreationError": "建立 Ollama 客戶端錯誤:{{error}}", + "streamProcessingError": "Ollama 串流處理錯誤:{{error}}", + "unknownError": "未知錯誤" + }, "mode_import_failed": "匯入模式失敗:{{error}}" }, "warnings": { @@ -208,11 +219,6 @@ "errors": { "cloud_auth_required": "您的組織需要 Roo Code Cloud 身份驗證。請登入以繼續。", "organization_mismatch": "您必須使用組織的 Roo Code Cloud 帳戶進行身份驗證。", - "manual_url_empty": "請輸入有效的回呼 URL", - "manual_url_no_query": "無效的回呼 URL:缺少查詢參數", - "manual_url_missing_params": "無效的回呼 URL:缺少必要參數(code 和 state)", - "manual_url_auth_failed": "手動 URL 身份驗證失敗", - "manual_url_auth_error": "身份驗證失敗", "verification_failed": "無法驗證組織身份驗證。" }, "info": {