diff --git a/packages/types/src/vscode.ts b/packages/types/src/vscode.ts index fd28f2e994..8280c0fa87 100644 --- a/packages/types/src/vscode.ts +++ b/packages/types/src/vscode.ts @@ -61,6 +61,7 @@ export const languages = [ "en", "es", "fr", + "he", "hi", "id", "it", diff --git a/src/i18n/locales/he/common.json b/src/i18n/locales/he/common.json new file mode 100644 index 0000000000..d65fe18367 --- /dev/null +++ b/src/i18n/locales/he/common.json @@ -0,0 +1,247 @@ +{ + "extension": { + "name": "Roo Code", + "description": "A whole dev team of AI agents in your editor." + }, + "number_format": { + "thousand_suffix": "k", + "million_suffix": "M", + "billion_suffix": "B" + }, + "welcome": "Welcome, {{name}}! You have {{count}} notifications.", + "items": { + "zero": "No items", + "one": "One item", + "other": "{{count}} items" + }, + "confirmation": { + "reset_state": "Are you sure you want to reset all state and secret storage in the extension? This cannot be undone.", + "delete_config_profile": "Are you sure you want to delete this configuration profile?", + "delete_custom_mode_with_rules": "Are you sure you want to delete this {scope} mode?\n\nThis will also delete the associated rules folder at:\n{rulesFolderPath}" + }, + "errors": { + "invalid_data_uri": "Invalid data URI format", + "error_copying_image": "Error copying image: {{errorMessage}}", + "error_opening_image": "Error opening image: {{error}}", + "error_saving_image": "Error saving image: {{errorMessage}}", + "could_not_open_file": "Could not open file: {{errorMessage}}", + "could_not_open_file_generic": "Could not open file!", + "checkpoint_timeout": "Timed out when attempting to restore checkpoint.", + "checkpoint_failed": "Failed to restore checkpoint.", + "git_not_installed": "Git is required for the checkpoints feature. Please install Git to enable checkpoints.", + "checkpoint_no_first": "No first checkpoint to compare.", + "checkpoint_no_previous": "No previous checkpoint to compare.", + "checkpoint_no_changes": "No changes found.", + "checkpoint_diff_with_next": "Changes compared with next checkpoint", + "checkpoint_diff_since_first": "Changes since first checkpoint", + "checkpoint_diff_to_current": "Changes to current workspace", + "nested_git_repos_warning": "Checkpoints are disabled because a nested git repository was detected at: {{path}}. To use checkpoints, please remove or relocate this nested git repository.", + "no_workspace": "Please open a project folder first", + "update_support_prompt": "Failed to update support prompt", + "reset_support_prompt": "Failed to reset support prompt", + "enhance_prompt": "Failed to enhance prompt", + "get_system_prompt": "Failed to get system prompt", + "search_commits": "Failed to search commits", + "save_api_config": "Failed to save api configuration", + "create_api_config": "Failed to create api configuration", + "rename_api_config": "Failed to rename api configuration", + "load_api_config": "Failed to load api configuration", + "delete_api_config": "Failed to delete api configuration", + "list_api_config": "Failed to get list api configuration", + "update_server_timeout": "Failed to update server timeout", + "hmr_not_running": "Local development server is not running, HMR will not work. Please run 'npm run dev' before launching the extension to enable HMR.", + "retrieve_current_mode": "Error: failed to retrieve current mode from state.", + "failed_delete_repo": "Failed to delete associated shadow repository or branch: {{error}}", + "failed_remove_directory": "Failed to remove task directory: {{error}}", + "custom_storage_path_unusable": "Custom storage path \"{{path}}\" is unusable, will use default path", + "cannot_access_path": "Cannot access path {{path}}: {{error}}", + "settings_import_failed": "Settings import failed: {{error}}.", + "mistake_limit_guidance": "This may indicate a failure in the model's thought process or inability to use a tool properly, which can be mitigated with some user guidance (e.g. \"Try breaking down the task into smaller steps\").", + "violated_organization_allowlist": "Failed to run task: the current profile isn't compatible with your organization settings", + "condense_failed": "Failed to condense context", + "condense_not_enough_messages": "Not enough messages to condense context", + "condensed_recently": "Context was condensed recently; skipping this attempt", + "condense_handler_invalid": "API handler for condensing context is invalid", + "condense_api_failed": "Condensing API call failed: {{message}}", + "url_timeout": "The website took too long to load (timeout). This could be due to a slow connection, heavy website, or the site being temporarily unavailable. You can try again later or check if the URL is correct.", + "url_not_found": "The website address could not be found. Please check if the URL is correct and try again.", + "no_internet": "No internet connection. Please check your network connection and try again.", + "url_forbidden": "Access to this website is forbidden. The site may block automated access or require authentication.", + "url_page_not_found": "The page was not found. Please check if the URL is correct.", + "url_request_aborted": "The request to fetch the URL was aborted. This may happen if the site blocks automated access, requires authentication, or if there's a network issue. Please try again or check if the URL is accessible in a regular browser.", + "url_fetch_failed": "Failed to fetch URL content: {{error}}", + "url_fetch_error_with_url": "Error fetching content for {{url}}: {{error}}", + "command_timeout": "Command execution timed out after {{seconds}} seconds", + "share_task_failed": "Failed to share task. Please try again.", + "share_no_active_task": "No active task to share", + "share_auth_required": "Authentication required. Please sign in to share tasks.", + "share_not_enabled": "Task sharing is not enabled for this organization.", + "share_task_not_found": "Task not found or access denied.", + "mode_import_failed": "Failed to import mode: {{error}}", + "delete_rules_folder_failed": "Failed to delete rules folder: {{rulesFolderPath}}. Error: {{error}}", + "command_not_found": "Command '{{name}}' not found", + "open_command_file": "Failed to open command file", + "delete_command": "Failed to delete command", + "no_workspace_for_project_command": "No workspace folder found for project command", + "command_already_exists": "Command \"{{commandName}}\" already exists", + "create_command_failed": "Failed to create command", + "command_template_content": "---\ndescription: \"Brief description of what this command does\"\n---\n\nThis is a new slash command. Edit this file to customize the command behavior.", + "claudeCode": { + "processExited": "Claude Code process exited with code {{exitCode}}.", + "errorOutput": "Error output: {{output}}", + "processExitedWithError": "Claude Code process exited with code {{exitCode}}. Error output: {{output}}", + "stoppedWithReason": "Claude Code stopped with reason: {{reason}}", + "apiKeyModelPlanMismatch": "API keys and subscription plans allow different models. Make sure the selected model is included in your plan." + }, + "message": { + "no_active_task_to_delete": "No active task to delete messages from", + "invalid_timestamp_for_deletion": "Invalid message timestamp for deletion", + "cannot_delete_missing_timestamp": "Cannot delete message: missing timestamp", + "cannot_delete_invalid_timestamp": "Cannot delete message: invalid timestamp", + "message_not_found": "Message with timestamp {{messageTs}} not found", + "error_deleting_message": "Error deleting message: {{error}}", + "error_editing_message": "Error editing message: {{error}}" + }, + "gemini": { + "generate_stream": "Gemini generate context stream error: {{error}}", + "generate_complete_prompt": "Gemini completion error: {{error}}", + "sources": "Sources:", + "thinking_complete_no_output": "(Thinking complete, but no output was generated.)", + "thinking_complete_truncated": "(Thinking complete, but output was truncated due to token limit.)", + "thinking_complete_safety": "(Thinking complete, but output was blocked due to safety settings.)", + "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." + }, + "openAiCodex": { + "notAuthenticated": "Not authenticated with OpenAI Codex. Please sign in using the OpenAI Codex OAuth flow.", + "invalidRequest": "Invalid request to Codex API. Please check your input parameters.", + "authenticationFailed": "Authentication failed. Please re-authenticate with OpenAI Codex.", + "accessDenied": "Access denied. Your ChatGPT subscription may not include Codex access.", + "endpointNotFound": "Codex API endpoint not found.", + "rateLimitExceeded": "Rate limit exceeded. Please try again later.", + "serviceError": "OpenAI Codex service error. Please try again later.", + "genericError": "Codex API error ({{status}})", + "noResponseBody": "Codex API error: No response body", + "connectionFailed": "Failed to connect to Codex API: {{message}}", + "unexpectedConnectionError": "Unexpected error connecting to Codex API", + "apiError": "Codex API error: {{message}}", + "responseFailed": "Response failed: {{message}}", + "streamProcessingError": "Error processing response stream: {{message}}", + "unexpectedStreamError": "Unexpected error processing response stream", + "completionError": "OpenAI Codex completion error: {{message}}" + }, + "api": { + "invalidKeyInvalidChars": "API key contains invalid characters.", + "apiRequestFailed": "API request failed ({{status}})" + }, + "manual_url_empty": "Please enter a valid callback URL", + "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" + }, + "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}}" + }, + "info": { + "no_changes": "No changes found.", + "clipboard_copy": "System prompt successfully copied to clipboard", + "history_cleanup": "Cleaned up {{count}} task(s) with missing files from history.", + "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}}", + "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" + }, + "answers": { + "yes": "Yes", + "no": "No", + "remove": "Remove", + "keep": "Keep" + }, + "buttons": { + "save": "Save", + "edit": "Edit", + "learn_more": "Learn More" + }, + "tasks": { + "canceled": "Task error: It was stopped and canceled by the user.", + "deleted": "Task failure: It was stopped and deleted by the user.", + "incomplete": "Task #{{taskNumber}} (Incomplete)", + "no_messages": "Task #{{taskNumber}} (No messages)" + }, + "interruption": { + "responseInterruptedByUser": "Response interrupted by user", + "responseInterruptedByApiError": "Response interrupted by API error", + "streamTerminatedByProvider": "Provider ended the request" + }, + "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)", + "enter_valid_path": "Please enter a valid path" + }, + "input": { + "task_prompt": "What should Roo do?", + "task_placeholder": "Type your task here" + }, + "customModes": { + "errors": { + "yamlParseError": "Invalid YAML in .roomodes file at line {{line}}. Please check for:\n• Proper indentation (use spaces, not tabs)\n• Matching quotes and brackets\n• Valid YAML syntax", + "schemaValidationError": "Invalid custom modes format in .roomodes:\n{{issues}}", + "invalidFormat": "Invalid custom modes format. Please ensure your settings follow the correct YAML format.", + "updateFailed": "Failed to update custom mode: {{error}}", + "deleteFailed": "Failed to delete custom mode: {{error}}", + "resetFailed": "Failed to reset custom modes: {{error}}", + "modeNotFound": "Write error: Mode not found", + "noWorkspaceForProject": "No workspace folder found for project-specific mode", + "rulesCleanupFailed": "Mode deleted successfully, but failed to delete rules folder at {{rulesFolderPath}}. You may need to delete it manually." + }, + "scope": { + "project": "project", + "global": "global" + } + }, + "marketplace": { + "mode": { + "rulesCleanupFailed": "Mode removed successfully, but failed to delete rules folder at {{rulesFolderPath}}. You may need to delete it manually." + } + }, + "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.", + "verification_failed": "Unable to verify organization authentication." + }, + "info": { + "organization_requires_auth": "Your organization requires authentication." + } + }, + "prompts": { + "deleteMode": { + "title": "Delete Custom Mode", + "description": "Are you sure you want to delete this {{scope}} mode? This will also delete the associated rules folder at: {{rulesFolderPath}}", + "descriptionNoRules": "Are you sure you want to delete this custom mode?", + "confirm": "Delete" + } + }, + "commands": { + "preventCompletionWithOpenTodos": { + "description": "Prevent task completion when there are incomplete todos in the todo list" + } + }, + "docsLink": { + "label": "Docs", + "url": "https://docs.roocode.com" + } +} diff --git a/src/i18n/locales/he/embeddings.json b/src/i18n/locales/he/embeddings.json new file mode 100644 index 0000000000..7777af9027 --- /dev/null +++ b/src/i18n/locales/he/embeddings.json @@ -0,0 +1,76 @@ +{ + "unknownError": "Unknown error", + "authenticationFailed": "Failed to create embeddings: Authentication failed. Please check your API key.", + "failedWithStatus": "Failed to create embeddings after {{attempts}} attempts: HTTP {{statusCode}} - {{errorMessage}}", + "failedWithError": "Failed to create embeddings after {{attempts}} attempts: {{errorMessage}}", + "failedMaxAttempts": "Failed to create embeddings after {{attempts}} attempts", + "textExceedsTokenLimit": "Text at index {{index}} exceeds maximum token limit ({{itemTokens}} > {{maxTokens}}). Skipping.", + "rateLimitRetry": "Rate limit hit, retrying in {{delayMs}}ms (attempt {{attempt}}/{{maxRetries}})", + "ollama": { + "couldNotReadErrorBody": "Could not read error body", + "requestFailed": "Ollama API request failed with status {{status}} {{statusText}}: {{errorBody}}", + "invalidResponseStructure": "Invalid response structure from Ollama API: \"embeddings\" array not found or not an array.", + "embeddingFailed": "Ollama embedding failed: {{message}}", + "serviceNotRunning": "Ollama service is not running at {{baseUrl}}", + "serviceUnavailable": "Ollama service is unavailable (status: {{status}})", + "modelNotFound": "Ollama model not found: {{modelId}}", + "modelNotEmbeddingCapable": "Ollama model is not embedding capable: {{modelId}}", + "hostNotFound": "Ollama host not found: {{baseUrl}}" + }, + "bedrock": { + "invalidResponseFormat": "Invalid response format from Amazon Bedrock", + "invalidCredentials": "Invalid AWS credentials. Please check your AWS configuration.", + "accessDenied": "Access denied to Amazon Bedrock service. Please check your IAM permissions.", + "modelNotFound": "Model {{model}} not found in Amazon Bedrock" + }, + "scanner": { + "unknownErrorProcessingFile": "Unknown error processing file {{filePath}}", + "unknownErrorDeletingPoints": "Unknown error deleting points for {{filePath}}", + "failedToProcessBatchWithError": "Failed to process batch after {{maxRetries}} attempts: {{errorMessage}}" + }, + "vectorStore": { + "qdrantConnectionFailed": "Failed to connect to Qdrant vector database. Please ensure Qdrant is running and accessible at {{qdrantUrl}}. Error: {{errorMessage}}", + "vectorDimensionMismatch": "Failed to update vector index for new model. Please try clearing the index and starting again. Details: {{errorMessage}}" + }, + "validation": { + "authenticationFailed": "Authentication failed. Please check your API key in the settings.", + "connectionFailed": "Failed to connect to the embedder service. Please check your connection settings and ensure the service is running.", + "modelNotAvailable": "The specified model is not available. Please check your model configuration.", + "configurationError": "Invalid embedder configuration. Please review your settings.", + "serviceUnavailable": "The embedder service is not available. Please ensure it is running and accessible.", + "invalidEndpoint": "Invalid API endpoint. Please check your URL configuration.", + "invalidEmbedderConfig": "Invalid embedder configuration. Please check your settings.", + "invalidApiKey": "Invalid API key. Please check your API key configuration.", + "invalidBaseUrl": "Invalid base URL. Please check your URL configuration.", + "invalidModel": "Invalid model. Please check your model configuration.", + "invalidResponse": "Invalid response from embedder service. Please check your configuration.", + "apiKeyRequired": "API key is required for this embedder", + "baseUrlRequired": "Base URL is required for this embedder" + }, + "serviceFactory": { + "openAiConfigMissing": "OpenAI configuration missing for embedder creation", + "ollamaConfigMissing": "Ollama configuration missing for embedder creation", + "openAiCompatibleConfigMissing": "OpenAI Compatible configuration missing for embedder creation", + "geminiConfigMissing": "Gemini configuration missing for embedder creation", + "mistralConfigMissing": "Mistral configuration missing for embedder creation", + "openRouterConfigMissing": "OpenRouter configuration missing for embedder creation", + "vercelAiGatewayConfigMissing": "Vercel AI Gateway configuration missing for embedder creation", + "bedrockConfigMissing": "Amazon Bedrock configuration missing for embedder creation", + "invalidEmbedderType": "Invalid embedder type configured: {{embedderProvider}}", + "vectorDimensionNotDeterminedOpenAiCompatible": "Could not determine vector dimension for model '{{modelId}}' with provider '{{provider}}'. Please ensure the 'Embedding Dimension' is correctly set in the OpenAI-Compatible provider settings.", + "vectorDimensionNotDetermined": "Could not determine vector dimension for model '{{modelId}}' with provider '{{provider}}'. Check model profiles or configuration.", + "qdrantUrlMissing": "Qdrant URL missing for vector store creation", + "codeIndexingNotConfigured": "Cannot create services: Code indexing is not properly configured" + }, + "orchestrator": { + "indexingFailedNoBlocks": "Indexing failed: No code blocks were successfully indexed. This usually indicates an embedder configuration issue.", + "indexingFailedCritical": "Indexing failed: No code blocks were successfully indexed despite finding files to process. This indicates a critical embedder failure.", + "fileWatcherStarted": "File watcher started.", + "fileWatcherStopped": "File watcher stopped.", + "failedDuringInitialScan": "Failed during initial scan: {{errorMessage}}", + "unknownError": "Unknown error", + "indexingRequiresWorkspace": "Indexing requires an open workspace folder", + "indexingStopped": "Indexing stopped by user.", + "indexingStoppedPartial": "Indexing stopped. Partial index data preserved." + } +} diff --git a/src/i18n/locales/he/marketplace.json b/src/i18n/locales/he/marketplace.json new file mode 100644 index 0000000000..17ae20078a --- /dev/null +++ b/src/i18n/locales/he/marketplace.json @@ -0,0 +1,69 @@ +{ + "type-group": { + "modes": "Modes", + "mcps": "MCP Servers", + "match": "match" + }, + "item-card": { + "type-mode": "Mode", + "type-mcp": "MCP Server", + "type-other": "Other", + "by-author": "by {{author}}", + "authors-profile": "Author's Profile", + "remove-tag-filter": "Remove tag filter: {{tag}}", + "filter-by-tag": "Filter by tag: {{tag}}", + "component-details": "Component Details", + "view": "View", + "source": "Source" + }, + "filters": { + "search": { + "placeholder": "Search marketplace..." + }, + "type": { + "label": "Type", + "all": "All Types", + "mode": "Mode", + "mcpServer": "MCP Server" + }, + "sort": { + "label": "Sort By", + "name": "Name", + "lastUpdated": "Last Updated" + }, + "tags": { + "label": "Tags", + "clear": "Clear tags", + "placeholder": "Search tags...", + "noResults": "No tags found.", + "selected": "Showing items with any of the selected tags" + }, + "installed": { + "label": "Filter by status", + "all": "All Items", + "installed": "Installed", + "notInstalled": "Not Installed" + }, + "title": "Marketplace" + }, + "done": "Done", + "tabs": { + "installed": "Installed", + "browse": "Browse", + "settings": "Settings" + }, + "items": { + "empty": { + "noItems": "No marketplace items found.", + "emptyHint": "Try adjusting your filters or search terms" + } + }, + "installation": { + "installing": "Installing item: \"{{itemName}}\"", + "installSuccess": "\"{{itemName}}\" installed successfully", + "installError": "Failed to install \"{{itemName}}\": {{errorMessage}}", + "removing": "Removing item: \"{{itemName}}\"", + "removeSuccess": "\"{{itemName}}\" removed successfully", + "removeError": "Failed to remove \"{{itemName}}\": {{errorMessage}}" + } +} diff --git a/src/i18n/locales/he/mcp.json b/src/i18n/locales/he/mcp.json new file mode 100644 index 0000000000..0200e26d22 --- /dev/null +++ b/src/i18n/locales/he/mcp.json @@ -0,0 +1,28 @@ +{ + "errors": { + "invalid_settings_format": "Invalid MCP settings JSON format. Please ensure your settings follow the correct JSON format.", + "invalid_settings_syntax": "Invalid MCP settings JSON format. Please check your settings file for syntax errors.", + "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...", + "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.", + "toolNotFound": "Tool '{{toolName}}' does not exist on server '{{serverName}}'. Available tools: {{availableTools}}", + "serverNotFound": "MCP server '{{serverName}}' is not configured. Available servers: {{availableServers}}", + "toolDisabled": "Tool '{{toolName}}' on server '{{serverName}}' is disabled. Available enabled tools: {{availableTools}}" + }, + "info": { + "server_restarting": "Restarting {{serverName}} MCP server...", + "server_connected": "{{serverName}} MCP server connected", + "server_deleted": "Deleted MCP server: {{serverName}}", + "server_not_found": "Server \"{{serverName}}\" not found in configuration", + "global_servers_active": "Active Global MCP Servers: {{mcpServers}}", + "project_servers_active": "Active Project MCP Servers: {{mcpServers}}", + "already_refreshing": "MCP servers are already refreshing.", + "refreshing_all": "Refreshing all MCP servers...", + "all_refreshed": "All MCP servers have been refreshed.", + "project_config_deleted": "Project MCP configuration file deleted. All project MCP servers have been disconnected." + } +} diff --git a/src/i18n/locales/he/skills.json b/src/i18n/locales/he/skills.json new file mode 100644 index 0000000000..307b59d365 --- /dev/null +++ b/src/i18n/locales/he/skills.json @@ -0,0 +1,16 @@ +{ + "errors": { + "name_length": "Skill name must be 1-{{maxLength}} characters (got {{length}})", + "name_format": "Skill name must be lowercase letters/numbers/hyphens only (no leading/trailing hyphen, no consecutive hyphens)", + "description_length": "Skill description must be 1-1024 characters (got {{length}})", + "no_workspace": "Cannot create project skill: no workspace folder is open", + "already_exists": "Skill \"{{name}}\" already exists at {{path}}", + "not_found": "Skill \"{{name}}\" not found in {{source}}{{modeInfo}}", + "missing_create_fields": "Missing required fields: skillName, source, or skillDescription", + "missing_move_fields": "Missing required fields: skillName or source", + "missing_update_modes_fields": "Missing required fields: skillName or source", + "manager_unavailable": "Skills manager not available", + "missing_delete_fields": "Missing required fields: skillName or source", + "skill_not_found": "Skill \"{{name}}\" not found" + } +} diff --git a/src/i18n/locales/he/tools.json b/src/i18n/locales/he/tools.json new file mode 100644 index 0000000000..94e1820249 --- /dev/null +++ b/src/i18n/locales/he/tools.json @@ -0,0 +1,31 @@ +{ + "readFile": { + "linesRange": " (lines {{start}}-{{end}})", + "definitionsOnly": " (definitions only)", + "maxLines": " (max {{max}} lines)", + "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...", + "codebaseSearch": { + "approval": "Searching for '{{query}}' in codebase..." + }, + "newTask": { + "errors": { + "policy_restriction": "Failed to create new task due to policy restrictions." + } + }, + "generateImage": { + "openRouterApiKeyRequired": "OpenRouter API key is required for image generation with OpenRouter models. Please configure it in the Image Generation experimental settings.", + "failedWithStatus": "Failed to generate image: {{status}} {{statusText}}", + "failedWithMessage": "Failed to generate image: {{message}}", + "noImageGenerated": "No image was generated in the response", + "invalidImageData": "Invalid image data in response", + "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." + } + } +} diff --git a/src/i18n/locales/he/worktrees.json b/src/i18n/locales/he/worktrees.json new file mode 100644 index 0000000000..5be60dc737 --- /dev/null +++ b/src/i18n/locales/he/worktrees.json @@ -0,0 +1,4 @@ +{ + "selectWorktreeLocation": "Select Worktree Location", + "selectFolderForWorktree": "Select folder for new worktree" +} diff --git a/src/shared/language.ts b/src/shared/language.ts index ffdf98300d..b1304eaf27 100644 --- a/src/shared/language.ts +++ b/src/shared/language.ts @@ -10,6 +10,7 @@ export const LANGUAGES: Record = { en: "English", es: "Español", fr: "Français", + he: "עברית", hi: "हिन्दी", id: "Bahasa Indonesia", it: "Italiano", diff --git a/webview-ui/src/i18n/locales/he/.gitkeep b/webview-ui/src/i18n/locales/he/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/webview-ui/src/i18n/locales/he/chat.json b/webview-ui/src/i18n/locales/he/chat.json new file mode 100644 index 0000000000..0e790e5c9a --- /dev/null +++ b/webview-ui/src/i18n/locales/he/chat.json @@ -0,0 +1,491 @@ +{ + "greeting": "Welcome to Roo Code!", + "task": { + "title": "Task", + "expand": "Expand task", + "collapse": "Collapse task", + "seeMore": "See more", + "seeLess": "See less", + "tokens": "Tokens", + "cache": "Cache", + "apiCost": "API Cost", + "size": "Size", + "condenseContext": "Intelligently condense context", + "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" + }, + "unpin": "Unpin", + "pin": "Pin", + "fileChangesInConversation": { + "header": "{{count}} file(s) changed in this conversation" + }, + "retry": { + "title": "Retry", + "tooltip": "Try the operation again" + }, + "startNewTask": { + "title": "Start New Task", + "tooltip": "Begin a new task" + }, + "proceedAnyways": { + "title": "Proceed Anyways", + "tooltip": "Continue while command executes" + }, + "save": { + "title": "Save", + "tooltip": "Save the message changes" + }, + "tokenProgress": { + "availableSpace": "Available space: {{amount}} tokens", + "tokensUsed": "Tokens used: {{used}} of {{total}}", + "reservedForResponse": "Reserved for model response: {{amount}} tokens", + "tokensUsedLabel": "Tokens used", + "reservedForResponseLabel": "Reserved for response", + "availableSpaceLabel": "Available space" + }, + "reject": { + "title": "Deny", + "tooltip": "Prevent this action from occurring" + }, + "completeSubtaskAndReturn": "Complete subtask and keep going", + "approve": { + "title": "Approve", + "tooltip": "Allow this action to happen" + }, + "read-batch": { + "approve": { + "title": "Approve All" + }, + "deny": { + "title": "Deny All" + } + }, + "list-batch": { + "approve": { + "title": "Approve All" + }, + "deny": { + "title": "Deny All" + } + }, + "edit-batch": { + "approve": { + "title": "Save All" + }, + "deny": { + "title": "Deny All" + } + }, + "runCommand": { + "title": "Run", + "tooltip": "Execute this command" + }, + "proceedWhileRunning": { + "title": "Continue While Running", + "tooltip": "Keep going despite warnings" + }, + "killCommand": { + "title": "Kill Command", + "tooltip": "Kill the current command" + }, + "resumeTask": { + "title": "Continue", + "tooltip": "Resume the current task" + }, + "terminate": { + "title": "New task", + "tooltip": "Start a new task" + }, + "cancel": { + "title": "Cancel", + "tooltip": "Cancel the current operation" + }, + "stop": { + "title": "Stop", + "tooltip": "Stop the current task" + }, + "enqueueMessage": "Add message to queue (will be sent after current task completes)", + "editMessage": { + "placeholder": "Edit your message..." + }, + "scrollToBottom": "Scroll to bottom of chat", + "about": "Roo is a whole AI dev team in your editor", + "docs": "Check our docs to get started", + "onboarding": "What would you like to do?", + "rooTips": { + "customizableModes": { + "title": "Customizable modes that don't swerve", + "description": "Specialized personas that stay on-task and deliver." + }, + "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" + } + }, + "selectMode": "Select mode for interaction", + "selectApiConfig": "Select API configuration", + "lockApiConfigAcrossModes": "Lock API configuration across all modes in this workspace", + "unlockApiConfigAcrossModes": "API configuration is locked across all modes in this workspace (click to unlock)", + "enhancePrompt": "Enhance prompt with additional context", + "modeSelector": { + "title": "Modes", + "marketplace": "Mode Marketplace", + "settings": "Mode Settings", + "description": "Specialized personas that tailor Roo's behavior.", + "searchPlaceholder": "Search modes...", + "noResults": "No results found" + }, + "enhancePromptDescription": "The 'Enhance Prompt' button helps improve your prompt by providing additional context, clarification, or rephrasing. Try typing a prompt in here and clicking the button again to see how it works.", + "addImages": "Add images to message", + "sendMessage": "Send message", + "pressToSend": "Press {{keyCombination}} to send", + "stopTts": "Stop text-to-speech", + "typeMessage": "Type a message...", + "typeTask": "Type your task here...", + "addContext": "@ to add context, / for commands", + "dragFiles": "hold shift to drag in files", + "dragFilesImages": "hold shift to drag in files/images", + "errorReadingFile": "Error reading file", + "noValidImages": "No valid images were processed", + "separator": "Separator", + "edit": "Edit...", + "forNextMode": "for next mode", + "forPreviousMode": "for previous mode", + "apiRequest": { + "title": "API Request", + "failed": "API Request Failed", + "streaming": "API Request...", + "cancelled": "API Request Cancelled", + "streamingFailed": "API Streaming Failed", + "rateLimitWait": "Rate limiting", + "errorTitle": "Provider Error {{code}}", + "errorMessage": { + "400": "The provider couldn't process the request as made. Stop the task and try a different approach.", + "401": "Couldn't authenticate with provider. Please check your API key configuration.", + "402": "You seem to have run out of funds/credits in your account. Go to your provider and add more to continue.", + "403": "Unauthorized. Your API key is valid, but the provider refused to complete this request.", + "429": "Too many requests. You're being rate-limited by the provider. Please wait a bit before your next API call.", + "500": "Provider server error. Something is wrong on the provider side, there's nothing wrong with your request.", + "docs": "Docs", + "goToSettings": "Settings", + "connection": "Connection error. Make sure you have a working internet connection.", + "unknown": "Unknown API error. Please contact Roo Code support.", + "claudeCodeNotAuthenticated": "You need to sign in to use Claude Code. Go to Settings and click \"Sign in to Claude Code\" to authenticate." + } + }, + "checkpoint": { + "regular": "Checkpoint", + "initializingWarning": "Still initializing checkpoint... If this takes too long, you can disable checkpoints in settings and restart your task.", + "menu": { + "viewDiff": "View Diff", + "viewDiffFromInit": "View All Changes", + "viewDiffWithCurrent": "View Changes Since This Checkpoint", + "restore": "Restore Checkpoint", + "restoreFiles": "Restore Files", + "restoreFilesDescription": "Restores your project's files back to a snapshot taken at this point.", + "restoreFilesAndTask": "Restore Files & Task", + "confirm": "Confirm", + "cancel": "Cancel", + "cannotUndo": "This action cannot be undone.", + "restoreFilesAndTaskDescription": "Restores your project's files back to a snapshot taken at this point and deletes all messages after this point.", + "more": "More options" + }, + "current": "Current" + }, + "contextManagement": { + "tokens": "tokens", + "condensation": { + "title": "Context Condensed", + "inProgress": "Condensing context...", + "errorHeader": "Failed to condense context" + }, + "truncation": { + "title": "Context Truncated", + "inProgress": "Truncating context...", + "messagesRemoved": "{{count}} message removed", + "messagesRemoved_other": "{{count}} messages removed", + "description": "Older messages were removed from the conversation to stay within the context window limit. This is a fast but less context-preserving approach compared to condensation." + } + }, + "skill": { + "wantsToLoad": "Roo wants to load a skill", + "didLoad": "Roo 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" + }, + "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}}" + }, + "codebaseSearch": { + "wantsToSearch": "Roo wants to search the codebase for {{query}}", + "wantsToSearchWithPath": "Roo 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)" + }, + "commandOutput": "Command Output", + "commandExecution": { + "abort": "Abort", + "running": "Running", + "pid": "PID: {{pid}}", + "exitStatus": "Exited with status {{exitCode}}", + "manageCommands": "Auto-approved commands", + "addToAllowed": "Add to allowed list", + "removeFromAllowed": "Remove from allowed list", + "addToDenied": "Add to denied list", + "removeFromDenied": "Remove from denied list", + "abortCommand": "Abort command execution", + "expandOutput": "Expand output", + "collapseOutput": "Collapse output", + "expandManagement": "Expand command management section", + "collapseManagement": "Collapse command management section" + }, + "response": "Response", + "arguments": "Arguments", + "text": { + "rooSaid": "Roo 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" + }, + "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}}" + }, + "subtasks": { + "wantsToCreate": "Roo wants to create a new subtask in {{mode}} mode", + "wantsToFinish": "Roo wants to mark this as completed", + "newTaskContent": "Subtask Instructions", + "resultContent": "Subtask completed", + "defaultResult": "Please continue to the next task.", + "completionInstructions": "You can review the results and suggest any corrections or next steps. If everything looks good, confirm to return the result to the parent task.", + "goToSubtask": "View task" + }, + "questions": { + "hasQuestion": "Roo has a question" + }, + "taskCompleted": "Task Completed", + "error": "Error", + "modelResponseIncomplete": "Model Response Incomplete", + "modelResponseErrors": { + "noToolsUsed": "The model failed to use any tools in its response. This typically happens when the model provides only text/reasoning without calling the required tools to complete the task.", + "noToolsUsedDetails": "The model provided text/reasoning but did not call any of the required tools. This usually indicates the model misunderstood the task or is having difficulty determining which tool to use. The model has been automatically prompted to retry with proper tool usage.", + "noAssistantMessages": "The model did not provide any response content. This may indicate an issue with the API or the model's output.", + "noAssistantMessagesDetails": "The language model returned an empty response without any text or tool calls. This can happen due to API issues, rate limiting, or model-specific problems. The model has been automatically prompted to retry." + }, + "errorDetails": { + "link": "Details", + "title": "Error Details", + "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." + }, + "diffError": { + "title": "Edit Unsuccessful" + }, + "troubleMessage": "Roo is having trouble...", + "powershell": { + "issues": "It seems like you're having Windows PowerShell issues, please see this" + }, + "autoApprove": { + "tooltipManage": "Manage auto-approval settings", + "tooltipStatus": "Auto-approval enabled for: {{toggles}}", + "title": "Auto-approve", + "all": "All", + "none": "None", + "description": "Run these actions without asking for permission. Only enable for actions you fully trust.", + "selectOptionsFirst": "Select at least one option below to enable auto-approval", + "toggleAriaLabel": "Toggle auto-approval", + "disabledAriaLabel": "Auto-approval disabled - select options first", + "triggerLabelOff": "Auto-approve off", + "triggerLabelOffShort": "Off", + "triggerLabel_zero": "0 auto-approve", + "triggerLabel_one": "1 auto-approved", + "triggerLabel_other": "{{count}} auto-approved", + "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" + }, + "release": { + "heading": "What's New:", + "gpt54": "OpenAI GPT-5.4 Support: Added OpenAI GPT-5.4 and GPT-5.3 Chat Latest so you can use the newest OpenAI chat models in Roo Code.", + "slashSkills": "Slash Command Skills: Skills can now be exposed as slash commands with fallback execution for faster workflows." + }, + "cloudAgents": { + "heading": "New in the Cloud:", + "specialized": "Introducing Explainer, Planner, and Coder - three specialized cloud agents to enhance your workflows.", + "description": "The agents work together in the cloud and can be triggered from the web or through Slack.", + "tryButton": "Try Cloud Agents" + }, + "careers": "Also, we're hiring!" + }, + "reasoning": { + "thinking": "Thinking", + "seconds": "{{count}}s" + }, + "followUpSuggest": { + "copyToInput": "Copy to input (same as shift + click)", + "timerPrefix": "Auto-approve enabled. Selecting in {{seconds}}s…" + }, + "costs": { + "totalWithSubtasks": "Total Cost (including subtasks): ${{cost}}", + "total": "Total Cost: ${{cost}}", + "includesSubtasks": "Includes subtask costs" + }, + "codeblock": { + "tooltips": { + "expand": "Expand code block", + "collapse": "Collapse code block", + "copy_code": "Copy code" + } + }, + "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.", + "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?", + "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?", + "button": "Reset and Continue" + } + }, + "indexingStatus": { + "ready": "Index ready", + "indexing": "Indexing {{percentage}}%", + "indexed": "Indexed", + "error": "Index error", + "status": "Index status", + "stopping": "Stopping indexing..." + }, + "versionIndicator": { + "ariaLabel": "Version {{version}} - Click to view release notes" + }, + "command": { + "triggerDescription": "Trigger the {{name}} command" + }, + "slashCommands": { + "tooltip": "Manage slash commands", + "title": "Slash Commands", + "description": "Use built-in slash commands or create custom ones for quick access to frequently used prompts and workflows. Docs", + "manageCommands": "Manage slash commands in settings", + "builtInCommands": "Built-in Commands", + "globalCommands": "Global Commands", + "workspaceCommands": "Workspace Commands", + "globalCommand": "Global command", + "editCommand": "Edit command", + "deleteCommand": "Delete command", + "newGlobalCommandPlaceholder": "New global command...", + "newWorkspaceCommandPlaceholder": "New workspace command...", + "deleteDialog": { + "title": "Delete Command", + "description": "Are you sure you want to delete the command \"{{name}}\"? This action cannot be undone.", + "cancel": "Cancel", + "confirm": "Delete" + } + }, + "slashCommand": { + "wantsToRun": "Roo wants to run a slash command", + "didRun": "Roo ran a slash command" + }, + "queuedMessages": { + "title": "Queued Messages", + "clickToEdit": "Click to edit message" + }, + "contextMenu": { + "noResults": "No results", + "problems": "Problems", + "terminal": "Terminal", + "url": "Paste URL to fetch contents" + }, + "todo": { + "partial": "{{completed}} of {{total}} to-dos done", + "complete": "{{total}} to-dos done", + "updated": "Updated the to-do list", + "completed": "Completed", + "started": "Started" + }, + "tooManyTools": { + "title": "Too many tools enabled", + "toolsPart_one": "{{count}} tool", + "toolsPart_other": "{{count}} tools", + "serversPart_one": "{{count}} MCP server", + "serversPart_other": "{{count}} MCP servers", + "messageTemplate": "You have {{tools}} enabled via {{servers}}. Such a high number can confuse the model and lead to errors. Try to keep it below {{threshold}}.", + "openMcpSettings": "Open MCP Settings" + }, + "readCommandOutput": { + "title": "Roo 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.", + "openSettings": "Open Settings" + } +} diff --git a/webview-ui/src/i18n/locales/he/cloud.json b/webview-ui/src/i18n/locales/he/cloud.json new file mode 100644 index 0000000000..8842c5ef45 --- /dev/null +++ b/webview-ui/src/i18n/locales/he/cloud.json @@ -0,0 +1,33 @@ +{ + "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/he/common.json b/webview-ui/src/i18n/locales/he/common.json new file mode 100644 index 0000000000..981eaeec75 --- /dev/null +++ b/webview-ui/src/i18n/locales/he/common.json @@ -0,0 +1,114 @@ +{ + "errorBoundary": { + "title": "Something went wrong", + "reportText": "Please help us improve by reporting this error on", + "githubText": "our GitHub Issues page", + "copyInstructions": "Copy and paste the following error message to include it as part of your submission:", + "errorStack": "Error Stack:", + "componentStack": "Component Stack:" + }, + "answers": { + "yes": "Yes", + "no": "No", + "cancel": "Cancel", + "remove": "Remove", + "keep": "Keep" + }, + "number_format": { + "thousand_suffix": "k", + "million_suffix": "m", + "billion_suffix": "b" + }, + "ui": { + "search_placeholder": "Search...", + "no_results": "No results found" + }, + "mermaid": { + "loading": "Generating mermaid diagram...", + "render_error": "Unable to Render Diagram", + "buttons": { + "zoom": "Zoom", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "copy": "Copy", + "save": "Save Image", + "viewCode": "View Code", + "viewDiagram": "View Diagram", + "close": "Close" + }, + "modal": { + "codeTitle": "Mermaid Code" + }, + "tabs": { + "diagram": "Diagram", + "code": "Code" + }, + "feedback": { + "imageCopied": "Image copied to clipboard", + "copyError": "Error copying image" + } + }, + "image": { + "tabs": { + "view": "Image" + }, + "noData": "No image data" + }, + "file": { + "errors": { + "invalidDataUri": "Invalid data URI format", + "copyingImage": "Error copying image: {{error}}", + "openingImage": "Error opening image: {{error}}", + "pathNotExists": "Path does not exist: {{path}}", + "couldNotOpen": "Could not open file: {{error}}", + "couldNotOpenGeneric": "Could not open file!" + }, + "success": { + "imageDataUriCopied": "Image data URI copied to clipboard" + } + }, + "confirmation": { + "deleteMessage": "Delete Message", + "deleteWarning": "Deleting this message will delete all subsequent messages in the conversation. Do you want to proceed?", + "editMessage": "Edit Message", + "editWarning": "Editing this message will delete all subsequent messages in the conversation. Do you want to proceed?", + "editQuestionWithCheckpoint": "Editing this message will delete all later messages in the conversation. Do you also want to undo all changes back to this checkpoint?", + "deleteQuestionWithCheckpoint": "Deleting this message will delete all later messages in the conversation. Do you also want to undo all changes back to this checkpoint?", + "editOnly": "No, edit message only", + "deleteOnly": "No, delete message only", + "restoreToCheckpoint": "Yes, restore the checkpoint", + "proceed": "Proceed", + "dontShowAgain": "Don't show this again" + }, + "time_ago": { + "just_now": "just now", + "seconds_ago": "{{count}} seconds ago", + "minute_ago": "a minute ago", + "minutes_ago": "{{count}} minutes ago", + "hour_ago": "an hour ago", + "hours_ago": "{{count}} hours ago", + "day_ago": "a day ago", + "days_ago": "{{count}} days ago", + "week_ago": "a week ago", + "weeks_ago": "{{count}} weeks ago", + "month_ago": "a month ago", + "months_ago": "{{count}} months ago", + "year_ago": "a year ago", + "years_ago": "{{count}} years ago" + }, + "errors": { + "wait_checkpoint_long_time": "Waited {{timeout}} seconds for checkpoint initialization. If you don't need the checkpoint feature, please turn it off in the checkpoint settings.", + "init_checkpoint_fail_long_time": "Checkpoint initialization has taken more than {{timeout}} seconds, so checkpoints are disabled for this task. You can disable checkpoints or extend the waiting time in the checkpoint settings.", + "attempt_completion_tool_failed": "Cannot execute attempt_completion because a previous tool call failed in this turn. Please address the tool failure before attempting completion." + }, + "tasks": { + "delegated": "Delegated to subtask", + "delegated_to": "Delegated to task {{childId}}", + "delegation_completed": "Subtask completed, resuming parent", + "awaiting_child": "Awaiting child task {{childId}}" + }, + "costs": { + "own": "Own", + "subtasks": "Subtasks" + } +} diff --git a/webview-ui/src/i18n/locales/he/history.json b/webview-ui/src/i18n/locales/he/history.json new file mode 100644 index 0000000000..85174890e1 --- /dev/null +++ b/webview-ui/src/i18n/locales/he/history.json @@ -0,0 +1,51 @@ +{ + "recentTasks": "Recent Tasks", + "history": "History", + "exitSelectionMode": "Exit Selection Mode", + "enterSelectionMode": "Enter Selection Mode", + "done": "Done", + "searchPlaceholder": "Fuzzy search history...", + "newest": "Newest", + "oldest": "Oldest", + "mostExpensive": "Most Expensive", + "mostTokens": "Most Tokens", + "mostRelevant": "Most Relevant", + "deleteTaskTitle": "Delete Task (Shift + Click to skip confirmation)", + "copyPrompt": "Copy Prompt", + "exportTask": "Export Task", + "deleteTask": "Delete Task", + "deleteTaskMessage": "Are you sure you want to delete this task? This action cannot be undone.", + "cancel": "Cancel", + "delete": "Delete", + "exitSelection": "Exit Selection", + "selectionMode": "Selection Mode", + "deselectAll": "Deselect all", + "selectAll": "Select all", + "selectedItems": "Selected {{selected}}/{{total}} items", + "clearSelection": "Clear Selection", + "deleteSelected": "Delete Selected", + "deleteTasks": "Delete Tasks", + "confirmDeleteTasks": "Are you sure you want to delete {{count}} tasks?", + "deleteTasksWarning": "Deleted tasks cannot be recovered. Please make sure you want to proceed.", + "deleteItems": "Delete {{count}} Items", + "workspace": { + "prefix": "Workspace:", + "current": "Current", + "all": "All" + }, + "sort": { + "prefix": "Sort:", + "newest": "Newest", + "oldest": "Oldest", + "mostExpensive": "Most Expensive", + "mostTokens": "Most Tokens", + "mostRelevant": "Most Relevant" + }, + "viewAllHistory": "View all", + "subtasks_one": "{{count}} subtask", + "subtasks_other": "{{count}} subtasks", + "subtaskTag": "Subtask", + "deleteWithSubtasks": "This will also delete {{count}} subtask(s). Are you sure?", + "expandSubtasks": "Expand subtasks", + "collapseSubtasks": "Collapse subtasks" +} diff --git a/webview-ui/src/i18n/locales/he/marketplace.json b/webview-ui/src/i18n/locales/he/marketplace.json new file mode 100644 index 0000000000..dae9dd2611 --- /dev/null +++ b/webview-ui/src/i18n/locales/he/marketplace.json @@ -0,0 +1,156 @@ +{ + "title": "Roo Marketplace", + "tabs": { + "installed": "Installed", + "settings": "Settings", + "browse": "Browse" + }, + "done": "Done", + "refresh": "Refresh", + "filters": { + "search": { + "placeholder": "Search marketplace items...", + "placeholderMcp": "Search MCPs...", + "placeholderMode": "Search Modes..." + }, + "installed": { + "label": "Filter by status", + "all": "All Items", + "installed": "Installed", + "notInstalled": "Not Installed" + }, + "type": { + "label": "Filter by type:", + "all": "All types", + "mode": "Mode", + "mcpServer": "MCP Server" + }, + "sort": { + "label": "Sort by:", + "name": "Name", + "author": "Author", + "lastUpdated": "Last Updated" + }, + "tags": { + "label": "Filter by tags:", + "clear": "Clear tags", + "placeholder": "Type to search and select tags...", + "noResults": "No matching tags found", + "selected": "Showing items with any of the selected tags", + "clickToFilter": "Click tags to filter items" + }, + "none": "None" + }, + "sections": { + "organizationMcps": "{{organization}} MCPs", + "marketplace": "Marketplace" + }, + "type-group": { + "modes": "Modes", + "mcps": "MCP Servers" + }, + "items": { + "empty": { + "noItems": "No marketplace items found", + "withFilters": "Try adjusting your filters", + "noSources": "Try adding a source in the Sources tab", + "adjustFilters": "Try adjusting your filters or search terms", + "clearAllFilters": "Clear all filters" + }, + "count": "{{count}} items found", + "components": "{{count}} components", + "matched": "{{count}} matched", + "refresh": { + "button": "Refresh", + "refreshing": "Refreshing...", + "mayTakeMoment": "This may take a moment." + }, + "card": { + "by": "by {{author}}", + "from": "from {{source}}", + "install": "Install", + "installProject": "Install", + "installGlobal": "Install (Global)", + "remove": "Remove", + "removeProject": "Remove", + "removeGlobal": "Remove (Global)", + "viewSource": "View", + "viewOnSource": "View on {{source}}", + "noWorkspaceTooltip": "Open a workspace to install marketplace items", + "installed": "Installed", + "removeProjectTooltip": "Remove from current project", + "removeGlobalTooltip": "Remove from global configuration", + "actionsMenuLabel": "More actions" + }, + "removeFailed": "Failed to remove item: {{error}}", + "unknownError": "Unknown error occurred" + }, + "install": { + "title": "Install {{name}}", + "titleMode": "Install {{name}} Mode", + "titleMcp": "Install {{name}} MCP", + "scope": "Installation Scope", + "project": "Project (current workspace)", + "global": "Global (all workspaces)", + "method": "Installation Method", + "prerequisites": "Prerequisites", + "configuration": "Configuration", + "configurationDescription": "Configure the parameters required for this MCP server", + "button": "Install", + "successTitle": "{{name}} Installed", + "successDescription": "Installation completed successfully", + "installed": "Successfully installed!", + "whatNextMcp": "You can now configure and use this MCP server. Click the MCP icon in the sidebar to switch tabs.", + "whatNextMode": "You can now use this mode. Click the Modes icon in the sidebar to switch tabs.", + "done": "Done", + "goToMcp": "Go to MCP Tab", + "goToModes": "Go to Modes Settings", + "moreInfoMcp": "View {{name}} MCP documentation", + "validationRequired": "Please provide a value for {{paramName}}" + }, + "sources": { + "title": "Configure Marketplace Sources", + "description": "Add Git repositories that contain marketplace items. These repositories will be fetched when browsing the marketplace.", + "add": { + "title": "Add New Source", + "urlPlaceholder": "Git repository URL (e.g., https://github.com/username/repo)", + "urlFormats": "Supported formats: HTTPS (https://github.com/username/repo), SSH (git@github.com:username/repo.git), or Git protocol (git://github.com/username/repo.git)", + "namePlaceholder": "Display name (max 20 chars)", + "button": "Add Source" + }, + "current": { + "title": "Current Sources", + "empty": "No sources configured. Add a source to get started.", + "refresh": "Refresh this source", + "remove": "Remove source" + }, + "errors": { + "emptyUrl": "URL cannot be empty", + "invalidUrl": "Invalid URL format", + "nonVisibleChars": "URL contains non-visible characters other than spaces", + "invalidGitUrl": "URL must be a valid Git repository URL (e.g., https://github.com/username/repo)", + "duplicateUrl": "This URL is already in the list (case and whitespace insensitive match)", + "nameTooLong": "Name must be 20 characters or less", + "nonVisibleCharsName": "Name contains non-visible characters other than spaces", + "duplicateName": "This name is already in use (case and whitespace insensitive match)", + "emojiName": "Emoji characters may cause display issues", + "maxSources": "Maximum of {{max}} sources allowed" + } + }, + "removeConfirm": { + "mode": { + "title": "Remove Mode", + "message": "Are you sure you want to remove the mode \"{{modeName}}\"?", + "rulesWarning": "This will also remove any associated rules files for this mode." + }, + "mcp": { + "title": "Remove MCP Server", + "message": "Are you sure you want to remove the MCP server \"{{mcpName}}\"?" + }, + "cancel": "Cancel", + "confirm": "Remove" + }, + "footer": { + "issueText": "Found a problem with a marketplace item or have suggestions for new ones? <0>Open a GitHub issue to let us know!" + } +} diff --git a/webview-ui/src/i18n/locales/he/mcp.json b/webview-ui/src/i18n/locales/he/mcp.json new file mode 100644 index 0000000000..2fcae2840c --- /dev/null +++ b/webview-ui/src/i18n/locales/he/mcp.json @@ -0,0 +1,65 @@ +{ + "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\").", + "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." + }, + "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." + }, + "editGlobalMCP": "Edit Global MCP", + "editProjectMCP": "Edit Project MCP", + "refreshMCP": "Refresh MCP Servers", + "learnMoreEditingSettings": "Learn more about editing MCP settings files", + "tool": { + "alwaysAllow": "Always allow", + "parameters": "Parameters", + "noDescription": "No description", + "togglePromptInclusion": "Toggle inclusion in prompt" + }, + "tabs": { + "tools": "Tools", + "resources": "Resources", + "logs": "Logs" + }, + "emptyState": { + "noTools": "No tools found", + "noResources": "No resources found", + "noLogs": "No logs yet" + }, + "networkTimeout": { + "label": "Network Timeout", + "description": "Maximum time to wait for server responses", + "options": { + "15seconds": "15 seconds", + "30seconds": "30 seconds", + "1minute": "1 minute", + "5minutes": "5 minutes", + "10minutes": "10 minutes", + "15minutes": "15 minutes", + "30minutes": "30 minutes", + "60minutes": "60 minutes" + } + }, + "deleteDialog": { + "title": "Delete MCP Server", + "description": "Are you sure you want to delete the MCP server \"{{serverName}}\"? This action cannot be undone.", + "cancel": "Cancel", + "delete": "Delete" + }, + "serverStatus": { + "retrying": "Retrying...", + "retryConnection": "Retry Connection" + }, + "execution": { + "running": "Running", + "completed": "Completed", + "error": "Error" + } +} diff --git a/webview-ui/src/i18n/locales/he/prompts.json b/webview-ui/src/i18n/locales/he/prompts.json new file mode 100644 index 0000000000..82db8400c1 --- /dev/null +++ b/webview-ui/src/i18n/locales/he/prompts.json @@ -0,0 +1,202 @@ +{ + "title": "Modes", + "done": "Done", + "modes": { + "title": "Modes", + "createNewMode": "Create new mode", + "importMode": "Import Mode", + "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.", + "selectMode": "Search modes", + "noMatchFound": "No modes found" + }, + "apiConfiguration": { + "title": "API Configuration", + "select": "Select which API configuration to use for this mode" + }, + "tools": { + "title": "Available Tools", + "builtInModesText": "Tools for built-in modes cannot be modified", + "editTools": "Edit tools", + "doneEditing": "Done editing", + "allowedFiles": "Allowed files:", + "toolNames": { + "read": "Read Files", + "edit": "Edit Files", + "command": "Run Commands", + "mcp": "Use MCP" + }, + "noTools": "None" + }, + "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": { + "title": "Short description (for humans)", + "resetToDefault": "Reset to default description", + "description": "A brief description shown in the mode selector dropdown." + }, + "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.", + "resetToDefault": "Reset to default 'When to Use' description" + }, + "customInstructions": { + "title": "Mode-specific Custom Instructions (optional)", + "resetToDefault": "Reset to default", + "description": "Add behavioral guidelines specific to {{modeName}} mode.", + "loadFromFile": "Custom instructions specific to {{mode}} mode can also be loaded from the .roo/rules-{{slug}}/ folder in your workspace or from the global <0>.roo/rules-{{slug}}/ (.roorules-{{slug}} and .clinerules-{{slug}} are deprecated and will stop working soon)." + }, + "exportMode": { + "title": "Export Mode", + "description": "Export this mode with rules from the .roo/rules-{{slug}}/ folder combined into a shareable YAML file. The original files remain unchanged.", + "exporting": "Exporting..." + }, + "importMode": { + "selectLevel": "Choose where to import this mode:", + "import": "Import", + "importing": "Importing...", + "global": { + "label": "Global Level", + "description": "Available across all projects. If the exported mode contained rules files, they will be recreated in the global .roo/rules-{slug}/ folder." + }, + "project": { + "label": "Project Level", + "description": "Only available in this workspace. If the exported mode contained rules files, they will be recreated in .roo/rules-{slug}/ folder." + } + }, + "globalCustomInstructions": { + "title": "Custom Instructions for All Modes", + "description": "These instructions apply to all modes. They provide a base set of behaviors that can be enhanced by mode-specific instructions below. <0>Learn more", + "loadFromFile": "Instructions can also be loaded from the .roo/rules/ folder in your workspace or from the global <0>.roo/rules/ (.roorules and .clinerules are deprecated and will stop working soon)." + }, + "systemPrompt": { + "preview": "Preview System Prompt", + "copy": "Copy system prompt to clipboard", + "title": "System Prompt ({{modeName}} mode)" + }, + "supportPrompts": { + "title": "Support Prompts", + "resetPrompt": "Reset {{promptType}} prompt to default", + "prompt": "Prompt", + "enhance": { + "apiConfiguration": "API Configuration", + "apiConfigDescription": "You can select an API configuration to always use for enhancing prompts, or just use whatever is currently selected", + "useCurrentConfig": "Use currently selected API configuration", + "testPromptPlaceholder": "Enter a prompt to test the enhancement", + "previewButton": "Preview Prompt Enhancement", + "testEnhancement": "Test Enhancement", + "includeTaskHistory": "Include task history as context", + "includeTaskHistoryDescription": "When enabled, the last 10 messages from the current conversation will be included as context when enhancing prompts, helping to generate more relevant and context-aware suggestions." + }, + "condense": { + "apiConfiguration": "API Configuration for Context Condensing", + "apiConfigDescription": "Select which API configuration to use for context condensing operations. Leave unselected to use the current active configuration.", + "useCurrentConfig": "Use currently selected API configuration" + }, + "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." + }, + "CONDENSE": { + "label": "Context Condensing", + "description": "Configure how conversation context is condensed to manage token limits. This prompt is used for both manual and automatic context condensing operations." + }, + "EXPLAIN": { + "label": "Explain Code", + "description": "Get detailed explanations of code snippets, functions, or entire files. Useful for understanding complex code or learning new patterns. Available in code actions (lightbulb icon in the editor) and the editor context menu (right-click on selected code)." + }, + "FIX": { + "label": "Fix Issues", + "description": "Get help identifying and resolving bugs, errors, or code quality issues. Provides step-by-step guidance for fixing problems. Available in code actions (lightbulb icon in the editor) and the editor context menu (right-click on selected code)." + }, + "IMPROVE": { + "label": "Improve Code", + "description": "Receive suggestions for code optimization, better practices, and architectural improvements while maintaining functionality. Available in code actions (lightbulb icon in the editor) and the editor context menu (right-click on selected code)." + }, + "ADD_TO_CONTEXT": { + "label": "Add to Context", + "description": "Add context to your current task or conversation. Useful for providing additional information or clarifications. Available in code actions (lightbulb icon in the editor) and the editor context menu (right-click on selected code)." + }, + "TERMINAL_ADD_TO_CONTEXT": { + "label": "Add Terminal Content to Context", + "description": "Add terminal output to your current task or conversation. Useful for providing command outputs or logs. Available in the terminal context menu (right-click on selected terminal content)." + }, + "TERMINAL_FIX": { + "label": "Fix Terminal Command", + "description": "Get help fixing terminal commands that failed or need improvement. Available in the terminal context menu (right-click on selected terminal content)." + }, + "TERMINAL_EXPLAIN": { + "label": "Explain Terminal Command", + "description": "Get detailed explanations of terminal commands and their outputs. Available in the terminal context menu (right-click on selected terminal content)." + }, + "NEW_TASK": { + "label": "Start New Task", + "description": "Start a new task with user input. Available in the Command Palette." + } + } + }, + "createModeDialog": { + "title": "Create New Mode", + "close": "Close", + "name": { + "label": "Name", + "placeholder": "Enter mode name" + }, + "slug": { + "label": "Slug", + "description": "The slug is used in URLs and file names. It should be lowercase and contain only letters, numbers, and hyphens." + }, + "saveLocation": { + "label": "Save Location", + "description": "Choose where to save this mode. Project-specific modes take precedence over global modes.", + "global": { + "label": "Global", + "description": "Available in all workspaces" + }, + "project": { + "label": "Project-specific (.roomodes)", + "description": "Only available in this workspace, takes precedence over global" + } + }, + "roleDefinition": { + "label": "Role Definition", + "description": "Define Roo's expertise and personality for this mode." + }, + "description": { + "label": "Short description (for humans)", + "description": "A brief description shown in the mode selector dropdown." + }, + "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." + }, + "tools": { + "label": "Available Tools", + "description": "Select which tools this mode can use." + }, + "customInstructions": { + "label": "Custom Instructions (optional)", + "description": "Add behavioral guidelines specific to this mode." + }, + "buttons": { + "cancel": "Cancel", + "create": "Create Mode" + }, + "deleteMode": "Delete mode" + }, + "allFiles": "all files", + "deleteMode": { + "title": "Delete Mode", + "message": "Are you sure you want to delete the mode \"{{modeName}}\"?", + "rulesFolder": "This mode has a rules folder at {{folderPath}} that will also be deleted.", + "descriptionNoRules": "Are you sure you want to delete this custom mode?", + "confirm": "Delete", + "cancel": "Cancel" + } +} diff --git a/webview-ui/src/i18n/locales/he/settings.json b/webview-ui/src/i18n/locales/he/settings.json new file mode 100644 index 0000000000..3b2497aaee --- /dev/null +++ b/webview-ui/src/i18n/locales/he/settings.json @@ -0,0 +1,1015 @@ +{ + "back": "Back to tasks view", + "common": { + "save": "Save", + "done": "Done", + "cancel": "Cancel", + "reset": "Reset", + "select": "Select", + "add": "Add Header", + "remove": "Remove" + }, + "header": { + "title": "Settings", + "saveButtonTooltip": "Save changes", + "nothingChangedTooltip": "Nothing changed", + "doneButtonTooltip": "Discard unsaved changes and go back to tasks view" + }, + "search": { + "placeholder": "Search settings...", + "noResults": "No settings found" + }, + "unsavedChangesDialog": { + "title": "Unsaved Changes", + "description": "Do you want to discard changes and continue?", + "cancelButton": "Cancel", + "discardButton": "Discard changes" + }, + "sections": { + "providers": "Providers", + "modes": "Modes", + "mcp": "MCP Servers", + "worktrees": "Worktrees", + "skills": "Skills", + "autoApprove": "Auto-Approve", + "checkpoints": "Checkpoints", + "notifications": "Notifications", + "contextManagement": "Context", + "terminal": "Terminal", + "slashCommands": "Slash Commands", + "prompts": "Prompts", + "ui": "UI", + "experimental": "Experimental", + "language": "Language", + "about": "About Roo Code" + }, + "about": { + "bugReport": { + "label": "Found a bug?", + "link": "Report on GitHub" + }, + "featureRequest": { + "label": "Have an idea?", + "link": "Share it with us" + }, + "securityIssue": { + "label": "Discovered a vulnerability?", + "link": "Follow our disclosure process" + }, + "contact": { + "label": "Need to talk to us? Write" + }, + "community": "Want tips or to just hang out with other Roo Code users? Join reddit.com/r/RooCode or discord.gg/roocode", + "contactAndCommunity": "Contact & Community", + "manageSettings": "Manage Settings", + "debugMode": { + "label": "Enable debug mode", + "description": "Enable debug mode to show additional buttons in the task header for viewing API conversation history and UI messages as prettified JSON in temporary files." + } + }, + "slashCommands": { + "description": "Slash commands are shortcuts for reusable workflows and actions to be used on demand (like creating a PR, running a set of tasks, etc). Learn more", + "workspaceCommands": "Workspace Commands", + "globalCommands": "Global Commands", + "noWorkspaceCommands": "No commands in this project yet.", + "noGlobalCommands": "No global commands yet.", + "addCommand": "Add Slash Command", + "editCommand": "Edit command", + "deleteCommand": "Delete command", + "deleteDialog": { + "title": "Delete Command", + "description": "Are you sure you want to delete the command \"{{name}}\"? This action cannot be undone.", + "confirm": "Delete", + "cancel": "Cancel" + }, + "createDialog": { + "title": "Create New Slash Command", + "nameLabel": "Name", + "namePlaceholder": "my-command-name", + "nameHint": "Lowercase letters, numbers, hyphens and underscores only", + "sourceLabel": "Location", + "create": "Create", + "cancel": "Cancel" + }, + "source": { + "global": "Global (available in all workspaces)", + "project": "Workspace" + }, + "validation": { + "nameRequired": "Name is required", + "nameTooLong": "Name must be 64 characters or less", + "nameInvalid": "Name must contain only letters, numbers, hyphens, and underscores" + }, + "footer": "Use slash commands for quick access to frequently used prompts and workflows." + }, + "skills": { + "description": "Skills encapsulate contextual instructions and workflows, which the agent can load on-demand. They can include general instructions, specific workflows and even scripts to be run as needed. Learn more", + "workspaceSkills": "Workspace Skills", + "globalSkills": "Global Skills", + "noWorkspaceSkills": "No skills in this project yet.", + "noGlobalSkills": "No global skills yet.", + "addSkill": "Add Skill", + "editSkill": "Edit skill", + "deleteSkill": "Delete skill", + "configureModes": "Mode availability", + "modeAny": "Any mode", + "modeCount": "{{count}} modes", + "deleteDialog": { + "title": "Delete Skill", + "description": "Are you sure you want to delete the skill \"{{name}}\"? This action cannot be undone.", + "confirm": "Delete", + "cancel": "Cancel" + }, + "modeDialog": { + "title": "Configure Skill Modes", + "description": "Choose which modes can use this skill", + "intro": "To keep your context light, we recommend only making skills available for the modes that need them.", + "anyMode": "Any mode (available everywhere)", + "save": "Save", + "cancel": "Cancel" + }, + "createDialog": { + "title": "Create New Skill", + "nameLabel": "Name", + "namePlaceholder": "my-skill-name (Lowercase letters, numbers, and hyphens only)", + "descriptionLabel": "Description", + "descriptionPlaceholder": "Describe when this skill should be used and its contents...", + "sourceLabel": "Location", + "modeLabel": "Mode (optional)", + "modePlaceholder": "Any mode", + "modeAny": "Any mode", + "modeHint": "Restrict this skill to a specific mode", + "create": "Create", + "cancel": "Cancel" + }, + "source": { + "global": "Global (available in all projects)", + "project": "Project (this workspace only)" + }, + "validation": { + "nameRequired": "Name is required", + "nameTooLong": "Name must be 64 characters or less", + "nameInvalid": "Name must be 1-64 lowercase letters, numbers, or hyphens", + "descriptionRequired": "Description is required", + "descriptionTooLong": "Description must be 1024 characters or less" + }, + "footer": "Create your own skills with the Skill Writer mode, available in the Modes Marketplace." + }, + "ui": { + "collapseThinking": { + "label": "Collapse Thinking messages by default", + "description": "When enabled, thinking blocks will be collapsed by default until you interact with them" + }, + "requireCtrlEnterToSend": { + "label": "Require {{primaryMod}}+Enter to send messages", + "description": "When enabled, you must press {{primaryMod}}+Enter to send messages instead of just Enter" + } + }, + "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." + }, + "codeIndex": { + "title": "Codebase Indexing", + "description": "Configure codebase indexing settings to enable semantic search of your project. <0>Learn more", + "statusTitle": "Status", + "enableLabel": "Enable Codebase Indexing", + "enableDescription": "Enable code indexing for improved search and context understanding", + "settingsTitle": "Indexing Settings", + "disabledMessage": "Codebase indexing is currently disabled. Enable it in the global settings to configure indexing options.", + "providerLabel": "Embeddings Provider", + "embedderProviderLabel": "Embedder Provider", + "selectProviderPlaceholder": "Select provider", + "openaiProvider": "OpenAI", + "ollamaProvider": "Ollama", + "geminiProvider": "Gemini", + "geminiApiKeyLabel": "API Key:", + "geminiApiKeyPlaceholder": "Enter your Gemini API key", + "mistralProvider": "Mistral", + "mistralApiKeyLabel": "API Key:", + "mistralApiKeyPlaceholder": "Enter your Mistral API key", + "vercelAiGatewayProvider": "Vercel AI Gateway", + "vercelAiGatewayApiKeyLabel": "API Key", + "vercelAiGatewayApiKeyPlaceholder": "Enter your Vercel AI Gateway API key", + "bedrockProvider": "Amazon Bedrock", + "bedrockRegionLabel": "AWS Region", + "bedrockRegionPlaceholder": "us-east-1", + "bedrockProfileLabel": "AWS Profile", + "bedrockProfilePlaceholder": "default", + "bedrockProfileDescription": "AWS profile name from ~/.aws/credentials (required).", + "openRouterProvider": "OpenRouter", + "openRouterApiKeyLabel": "OpenRouter API Key", + "openRouterApiKeyPlaceholder": "Enter your OpenRouter API key", + "openRouterProviderRoutingLabel": "OpenRouter Provider Routing", + "openRouterProviderRoutingDescription": "OpenRouter routes requests to the best available providers for your embedding model. By default, requests are load balanced across the top providers to maximize uptime. However, you can choose a specific provider to use for this model.", + "openaiCompatibleProvider": "OpenAI Compatible", + "openAiKeyLabel": "OpenAI API Key", + "openAiKeyPlaceholder": "Enter your OpenAI API key", + "openAiCompatibleBaseUrlLabel": "Base URL", + "openAiCompatibleApiKeyLabel": "API Key", + "openAiCompatibleApiKeyPlaceholder": "Enter your API key", + "openAiCompatibleModelDimensionLabel": "Embedding Dimension:", + "modelDimensionLabel": "Model Dimension", + "openAiCompatibleModelDimensionPlaceholder": "e.g., 1536", + "openAiCompatibleModelDimensionDescription": "The embedding dimension (output size) for your model. Check your provider's documentation for this value. Common values: 384, 768, 1536, 3072.", + "modelLabel": "Model", + "modelPlaceholder": "Enter model name", + "selectModel": "Select a model", + "selectModelPlaceholder": "Select model", + "ollamaUrlLabel": "Ollama URL:", + "ollamaBaseUrlLabel": "Ollama Base URL", + "qdrantUrlLabel": "Qdrant URL", + "qdrantKeyLabel": "Qdrant Key:", + "qdrantApiKeyLabel": "Qdrant API Key", + "qdrantApiKeyPlaceholder": "Enter your Qdrant API key (optional)", + "setupConfigLabel": "Setup", + "advancedConfigLabel": "Advanced Configuration", + "searchMinScoreLabel": "Search Score Threshold", + "searchMinScoreDescription": "Minimum similarity score (0.0-1.0) required for search results. Lower values return more results but may be less relevant. Higher values return fewer but more relevant results.", + "searchMinScoreResetTooltip": "Reset to default value (0.4)", + "searchMaxResultsLabel": "Maximum Search Results", + "searchMaxResultsDescription": "Maximum number of search results to return when querying the codebase index. Higher values provide more context but may include less relevant results.", + "resetToDefault": "Reset to default", + "startIndexingButton": "Start Indexing", + "clearIndexDataButton": "Clear Index Data", + "unsavedSettingsMessage": "Please save your settings before starting the indexing process.", + "clearDataDialog": { + "title": "Are you sure?", + "description": "This action cannot be undone. This will permanently delete your codebase index data.", + "cancelButton": "Cancel", + "confirmButton": "Clear Data" + }, + "ollamaUrlPlaceholder": "http://localhost:11434", + "openAiCompatibleBaseUrlPlaceholder": "https://api.example.com", + "modelDimensionPlaceholder": "1536", + "qdrantUrlPlaceholder": "http://localhost:6333", + "saveError": "Failed to save settings", + "modelDimensions": "({{dimension}} dimensions)", + "saveSuccess": "Settings saved successfully", + "saving": "Saving...", + "saveSettings": "Save", + "indexingStatuses": { + "standby": "Standby", + "indexing": "Indexing", + "indexed": "Indexed", + "error": "Error" + }, + "close": "Close", + "validation": { + "qdrantUrlRequired": "Qdrant URL is required", + "invalidQdrantUrl": "Invalid Qdrant URL", + "invalidOllamaUrl": "Invalid Ollama URL", + "invalidBaseUrl": "Invalid base URL", + "openaiApiKeyRequired": "OpenAI API key is required", + "modelSelectionRequired": "Model selection is required", + "apiKeyRequired": "API key is required", + "modelIdRequired": "Model ID is required", + "modelDimensionRequired": "Model dimension is required", + "geminiApiKeyRequired": "Gemini API key is required", + "mistralApiKeyRequired": "Mistral API key is required", + "vercelAiGatewayApiKeyRequired": "Vercel AI Gateway API key is required", + "bedrockRegionRequired": "AWS region is required", + "bedrockProfileRequired": "AWS profile is required", + "openRouterApiKeyRequired": "OpenRouter API key is required", + "ollamaBaseUrlRequired": "Ollama base URL is required", + "baseUrlRequired": "Base URL is required", + "modelDimensionMinValue": "Model dimension must be greater than 0" + }, + "optional": "optional", + "stopIndexingButton": "Stop Indexing", + "stoppingButton": "Stopping...", + "workspaceToggleLabel": "Enable indexing for this workspace", + "workspaceDisabledMessage": "Indexing is configured but not enabled for this workspace.", + "autoEnableDefaultLabel": "Auto-enable indexing for new workspaces" + }, + "autoApprove": { + "description": "Run these actions without asking for permission. Only enable for actions you fully trust and if you understand the security risks.", + "toggleShortcut": "You can configure a keyboard shortcut for this setting in your IDE preferences.", + "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.", + "outsideWorkspace": { + "label": "Include files outside workspace", + "description": "Allow Roo to read files outside the current workspace without requiring approval." + } + }, + "write": { + "label": "Write", + "description": "Automatically create and edit files without requiring approval", + "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." + }, + "protected": { + "label": "Include protected files", + "description": "Allow Roo to create and edit protected files (like .rooignore and .roo/ configuration files) without requiring approval." + } + }, + "mcp": { + "label": "MCP", + "description": "Enable auto-approval of individual MCP tools in the MCP Servers view (requires both this setting and the tool's individual \"Always allow\" checkbox)" + }, + "modeSwitch": { + "label": "Mode", + "description": "Automatically switch between different modes without requiring approval" + }, + "subtasks": { + "label": "Subtasks", + "description": "Allow creation and completion of subtasks without requiring approval" + }, + "followupQuestions": { + "label": "Question", + "description": "Automatically select the first suggested answer for follow-up questions after the configured timeout", + "timeoutLabel": "Time to wait before auto-selecting the first answer" + }, + "execute": { + "label": "Execute", + "description": "Automatically execute allowed terminal commands without requiring approval", + "allowedCommands": "Allowed Auto-Execute Commands", + "allowedCommandsDescription": "Command prefixes that can be auto-executed when \"Always approve execute operations\" is enabled. Add * to allow all commands (use with caution).", + "deniedCommands": "Denied Commands", + "deniedCommandsDescription": "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.", + "commandPlaceholder": "Enter command prefix (e.g., 'git ')", + "deniedCommandPlaceholder": "Enter command prefix to deny (e.g., 'rm -rf')", + "addButton": "Add", + "autoDenied": "Commands with the prefix `{{prefix}}` have been forbidden by the user. Do not bypass this restriction by running another command." + }, + "apiRequestLimit": { + "title": "Max Count", + "unlimited": "Unlimited" + }, + "apiCostLimit": { + "title": "Max Cost", + "unlimited": "Unlimited" + }, + "maxLimits": { + "description": "Automatically make requests up to these limits before asking for approval to continue." + }, + "toggleAriaLabel": "Toggle auto-approval", + "disabledAriaLabel": "Auto-approval disabled - select options first", + "selectOptionsFirst": "Select at least one option below to enable auto-approval" + }, + "providers": { + "providerDocumentation": "{{provider}} documentation", + "configProfile": "Configuration Profile", + "description": "Save different API configurations to quickly switch between providers and settings.", + "apiProvider": "API Provider", + "apiProviderDocs": "Provider Docs", + "model": "Model", + "nameEmpty": "Name cannot be empty", + "nameExists": "A profile with this name already exists", + "deleteProfile": "Delete Profile", + "invalidArnFormat": "Invalid ARN format. Please check the examples above.", + "enterNewName": "Enter new name", + "addProfile": "Add Profile", + "renameProfile": "Rename Profile", + "newProfile": "New Configuration Profile", + "enterProfileName": "Enter profile name", + "createProfile": "Create Profile", + "cannotDeleteOnlyProfile": "Cannot delete the only profile", + "searchPlaceholder": "Search profiles", + "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.", + "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.", + "openRouterApiKey": "OpenRouter API Key", + "getOpenRouterApiKey": "Get OpenRouter API Key", + "vercelAiGatewayApiKey": "Vercel AI Gateway API Key", + "getVercelAiGatewayApiKey": "Get Vercel AI Gateway API Key", + "apiKeyStorageNotice": "API keys are stored securely in VSCode's Secret Storage", + "openAiCodexRateLimits": { + "title": "Usage Limits for Codex{{planLabel}}", + "loading": "Loading usage limits...", + "loadError": "Failed to load usage limits", + "retry": "Retry", + "usedPercent": "{{percent}}% used", + "resetsIn": "Resets in {{time}}", + "plan": { + "default": "", + "withType": " ({{planType}})" + }, + "time": { + "now": "Now", + "notAvailable": "N/A" + }, + "duration": { + "daysHours": "{{days}}d {{hours}}h", + "hoursMinutes": "{{hours}}h {{minutes}}m", + "minutes": "{{minutes}}m" + }, + "window": { + "usage": "Usage", + "fiveHour": "5h limit", + "oneHour": "1h limit", + "daily": "Daily limit", + "weekly": "Weekly limit", + "days": "{{days}}d limit", + "hours": "{{hours}}h limit", + "minutes": "{{minutes}}m limit" + } + }, + "useCustomBaseUrl": "Use custom base URL", + "useReasoning": "Enable reasoning", + "useHostHeader": "Use custom Host header", + "customHeaders": "Custom Headers", + "headerName": "Header name", + "headerValue": "Header value", + "noCustomHeaders": "No custom headers defined. Click the + button to add one.", + "unboundApiKey": "Unbound API Key", + "getUnboundApiKey": "Get Unbound API Key", + "requestyApiKey": "Requesty API Key", + "refreshModels": { + "label": "Refresh Models", + "hint": "Please reopen the settings to see the latest models.", + "loading": "Refreshing models list...", + "success": "Models list refreshed successfully!", + "error": "Failed to refresh models list. Please try again." + }, + "getRequestyApiKey": "Create new Requesty API Key", + "getRequestyBaseUrl": "Base URL", + "requestyUseCustomBaseUrl": "Use custom base URL", + "anthropicApiKey": "Anthropic API Key", + "getAnthropicApiKey": "Get Anthropic API Key", + "anthropicUseAuthToken": "Pass Anthropic API Key as Authorization header instead of X-Api-Key", + "anthropic1MContextBetaLabel": "Enable 1M context window (Beta)", + "anthropic1MContextBetaDescription": "Extends context window to 1 million tokens for Claude Sonnet 4.x / Claude Opus 4.6", + "awsBedrock1MContextBetaLabel": "Enable 1M context window (Beta)", + "awsBedrock1MContextBetaDescription": "Extends context window to 1 million tokens for Claude Sonnet 4.x / Claude Opus 4.6", + "vertex1MContextBetaLabel": "Enable 1M context window (Beta)", + "vertex1MContextBetaDescription": "Extends context window to 1 million tokens for Claude Sonnet 4.x / Claude Opus 4.6", + "basetenApiKey": "Baseten API Key", + "getBasetenApiKey": "Get Baseten API Key", + "fireworksApiKey": "Fireworks API Key", + "getFireworksApiKey": "Get Fireworks API Key", + "deepSeekApiKey": "DeepSeek API Key", + "getDeepSeekApiKey": "Get DeepSeek API Key", + "moonshotApiKey": "Moonshot API Key", + "getMoonshotApiKey": "Get Moonshot API Key", + "moonshotBaseUrl": "Moonshot Entrypoint", + "minimaxApiKey": "MiniMax API Key", + "getMiniMaxApiKey": "Get MiniMax API Key", + "minimaxBaseUrl": "MiniMax Entrypoint", + "zaiApiKey": "Z AI API Key", + "getZaiApiKey": "Get Z AI API Key", + "zaiEntrypoint": "Z AI Entrypoint", + "zaiEntrypointDescription": "Please select the appropriate API entrypoint based on your location. If you are in China, choose open.bigmodel.cn. Otherwise, choose api.z.ai.", + "geminiApiKey": "Gemini API Key", + "getSambaNovaApiKey": "Get SambaNova API Key", + "sambaNovaApiKey": "SambaNova API Key", + "getGeminiApiKey": "Get Gemini API Key", + "openAiApiKey": "OpenAI API Key", + "apiKey": "API Key", + "openAiBaseUrl": "Base URL", + "getOpenAiApiKey": "Get OpenAI API Key", + "mistralApiKey": "Mistral API Key", + "getMistralApiKey": "Get Mistral / Codestral API Key", + "codestralBaseUrl": "Codestral Base URL (Optional)", + "codestralBaseUrlDesc": "Set an alternative URL for the Codestral model.", + "xaiApiKey": "xAI API Key", + "getXaiApiKey": "Get xAI API Key", + "litellmApiKey": "LiteLLM API Key", + "litellmBaseUrl": "LiteLLM Base URL", + "awsCredentials": "AWS Credentials", + "awsProfile": "AWS Profile", + "awsApiKey": "Amazon Bedrock API Key", + "awsProfileName": "AWS Profile Name", + "awsAccessKey": "AWS Access Key", + "awsSecretKey": "AWS Secret Key", + "awsSessionToken": "AWS Session Token", + "awsRegion": "AWS Region", + "awsCrossRegion": "Use cross-region inference", + "awsGlobalInference": "Use Global inference (auto-select optimal AWS Region)", + "awsServiceTier": "Service Tier", + "awsServiceTierStandard": "Standard", + "awsServiceTierStandardDesc": "Balanced performance and cost", + "awsServiceTierFlex": "Flex (50% discount)", + "awsServiceTierFlexDesc": "Lower cost, higher latency for non-critical tasks", + "awsServiceTierPriority": "Priority (75% premium)", + "awsServiceTierPriorityDesc": "Fastest performance for mission-critical applications", + "awsServiceTierNote": "Service tiers affect pricing and performance. Flex offers 50% discount with higher latency, Priority offers 25% better performance with 75% premium.", + "awsBedrockVpc": { + "useCustomVpcEndpoint": "Use custom VPC endpoint", + "vpcEndpointUrlPlaceholder": "Enter VPC Endpoint URL (optional)", + "examples": "Examples:" + }, + "enablePromptCaching": "Enable prompt caching", + "enablePromptCachingTitle": "Enable prompt caching to improve performance and reduce costs for supported models.", + "cacheUsageNote": "Note: If you don't see cache usage, try selecting a different model and then selecting your desired model again.", + "vscodeLmModel": "Language Model", + "vscodeLmWarning": "Note: Models accessed via the VS Code Language Model API may be wrapped or fine-tuned by the provider, so behavior can differ from using the same model directly from a typical provider or router. To use a model from the Language Model dropdown, first switch to that model and then click Accept in the Copilot Chat prompt; otherwise you may see an error such as 400 \"The requested model is not supported\".", + "googleCloudSetup": { + "title": "To use Google Cloud Vertex AI, you need to:", + "step1": "1. Create a Google Cloud account, enable the Vertex AI API & enable the desired Claude models.", + "step2": "2. Install the Google Cloud CLI & configure application default credentials.", + "step3": "3. Or create a service account with credentials." + }, + "googleCloudCredentials": "Google Cloud Credentials", + "googleCloudKeyFile": "Google Cloud Key File Path", + "googleCloudProjectId": "Google Cloud Project ID", + "googleCloudRegion": "Google Cloud Region", + "lmStudio": { + "baseUrl": "Base URL (optional)", + "modelId": "Model ID", + "speculativeDecoding": "Enable Speculative Decoding", + "draftModelId": "Draft Model ID", + "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." + }, + "ollama": { + "baseUrl": "Base URL (optional)", + "modelId": "Model ID", + "apiKey": "Ollama API Key", + "apiKeyHelp": "Optional API key for authenticated Ollama instances or cloud services. Leave empty for local installations.", + "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" + }, + "openRouter": { + "providerRouting": { + "title": "OpenRouter Provider Routing", + "description": "OpenRouter routes requests to the best available providers for your model. By default, requests are load balanced across the top providers to maximize uptime. However, you can choose a specific provider to use for this model.", + "learnMore": "Learn more about provider routing" + } + }, + "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.", + "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.)" + }, + "contextWindow": { + "label": "Context Window Size", + "description": "Total tokens (input + output) the model can process." + }, + "imageSupport": { + "label": "Image Support", + "description": "Is this model capable of processing and understanding images?" + }, + "computerUse": { + "label": "Computer Use", + "description": "Is this model capable of interacting with a browser?" + }, + "promptCache": { + "label": "Prompt Caching", + "description": "Is this model capable of caching prompts?" + }, + "pricing": { + "input": { + "label": "Input Price", + "description": "Cost per million tokens in the input/prompt. This affects the cost of sending context and instructions to the model." + }, + "output": { + "label": "Output Price", + "description": "Cost per million tokens in the model's response. This affects the cost of generated content and completions." + }, + "cacheReads": { + "label": "Cache Reads Price", + "description": "Cost per million tokens for reading from the cache. This is the price charged when a cached response is retrieved." + }, + "cacheWrites": { + "label": "Cache Writes Price", + "description": "Cost per million tokens for writing to the cache. This is the price charged when a prompt is cached for the first time." + } + }, + "resetDefaults": "Reset to Defaults" + }, + "rateLimitSeconds": { + "label": "Rate limit", + "description": "Minimum time between API requests." + }, + "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).", + "unlimitedDescription": "Unlimited retries enabled (auto-proceed). The dialog will never appear.", + "warning": "⚠️ Setting to 0 allows unlimited retries which may consume significant API usage" + }, + "reasoningEffort": { + "label": "Model Reasoning Effort", + "none": "None", + "minimal": "Minimal (Fastest)", + "low": "Low", + "medium": "Medium", + "high": "High", + "xhigh": "Extra High" + }, + "verbosity": { + "label": "Output Verbosity", + "high": "High", + "medium": "Medium", + "low": "Low", + "description": "Controls how detailed the model's responses are. Low verbosity produces concise answers, while high verbosity provides thorough explanations." + }, + "setReasoningLevel": "Enable Reasoning Effort", + "claudeCode": { + "pathLabel": "Claude Code Path", + "description": "Optional path to your Claude Code CLI. Defaults to 'claude' if not set.", + "placeholder": "Default: claude", + "maxTokensLabel": "Max Output Tokens", + "maxTokensDescription": "Maximum number of output tokens for Claude Code responses. Default is 8000." + } + }, + "checkpoints": { + "timeout": { + "label": "Checkpoint initialization timeout (seconds)", + "description": "Maximum time to wait for checkpoint service initialization. Default is 15 seconds. Range: 10-60 seconds." + }, + "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" + } + }, + "notifications": { + "sound": { + "label": "Enable sound effects", + "description": "When enabled, Roo 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.", + "speedLabel": "Speed" + } + }, + "contextManagement": { + "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." + }, + "condensingApiConfiguration": { + "label": "API Configuration for Context Condensing", + "description": "Select which API configuration to use for context condensing operations. Leave unselected to use the current active configuration.", + "useCurrentConfig": "Default" + }, + "customCondensingPrompt": { + "label": "Custom Context Condensing Prompt", + "description": "Customize the system prompt used for context condensing. Leave empty to use the default prompt.", + "placeholder": "Enter your custom condensing prompt here...\n\nYou can use the same structure as the default prompt:\n- Previous Conversation\n- Current Work\n- Key Technical Concepts\n- Relevant Files and Code\n- Problem Solving\n- Pending Tasks and Next Steps", + "reset": "Reset to Default", + "hint": "Empty = use default prompt" + }, + "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." + }, + "openTabs": { + "label": "Open tabs context limit", + "description": "Maximum number of VSCode open tabs to include in context. Higher values provide more context but increase token usage." + }, + "workspaceFiles": { + "label": "Workspace files context limit", + "description": "Maximum number of files to include in current working directory details. Higher values provide more context but increase token usage." + }, + "rooignore": { + "label": "Show .rooignore'd files in lists and searches", + "description": "When enabled, files matching patterns in .rooignore will be shown in lists with a lock symbol. When disabled, these files will be completely hidden from file lists and searches." + }, + "maxConcurrentFileReads": { + "label": "Concurrent file reads limit", + "description": "Maximum number of files the 'read_file' tool can process concurrently. Higher values may speed up reading multiple small files but increase memory usage." + }, + "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.", + "lines": "lines", + "always_full_read": "Always read entire file" + }, + "maxImageFileSize": { + "label": "Max image file size", + "mb": "MB", + "description": "Maximum size (in MB) for image files that can be processed by the read file tool." + }, + "maxTotalImageSize": { + "label": "Max total image size", + "mb": "MB", + "description": "Maximum cumulative size limit (in MB) for all images processed in a single read_file operation. When reading multiple images, each image's size is added to the total. If including another image would exceed this limit, it will be skipped." + }, + "diagnostics": { + "includeMessages": { + "label": "Automatically include diagnostics in context", + "description": "When enabled, diagnostic messages (errors) from edited files will be automatically included in the context. You can always manually include all workspace diagnostics using @problems." + }, + "maxMessages": { + "label": "Maximum diagnostic messages", + "description": "Limits the number of diagnostic messages (errors, warnings) included in the context. When set, only this many diagnostics will be shown, prioritizing errors over warnings. Set to 0 for unlimited diagnostics.", + "resetTooltip": "Reset to default value (50)", + "unlimitedLabel": "Unlimited" + }, + "delayAfterWrite": { + "label": "Delay after writes to allow diagnostics to detect potential problems", + "description": "Time to wait after file writes before proceeding, allowing diagnostic tools to process changes and detect issues." + } + }, + "condensingThreshold": { + "label": "Condensing Trigger Threshold", + "selectProfile": "Configure threshold for profile", + "defaultProfile": "Global Default (all profiles)", + "defaultDescription": "When context reaches this percentage, it will be automatically condensed for all profiles unless they have custom settings", + "profileDescription": "Custom threshold for this profile only (overrides global default)", + "inheritDescription": "This profile inherits the global default threshold ({{threshold}}%)", + "usesGlobal": "(uses global {{threshold}}%)" + }, + "includeCurrentTime": { + "label": "Include current time in context", + "description": "When enabled, the current time and timezone information will be included in the system prompt. Disable this if models are stopping work due to time concerns." + }, + "includeCurrentCost": { + "label": "Include current cost in context", + "description": "When enabled, the current API usage cost will be included in the system prompt. Disable this if models are stopping work due to cost concerns." + }, + "maxGitStatusFiles": { + "label": "Git status max files", + "description": "Maximum number of file entries to include in git status context. Set to 0 to disable. Branch info is always shown when > 0." + }, + "enableSubfolderRules": { + "label": "Enable subfolder rules", + "description": "Recursively discover and load .roo/rules and AGENTS.md files from subdirectories. Useful for monorepos with per-package rules." + } + }, + "terminal": { + "basic": { + "label": "Terminal Settings: Basic", + "description": "Basic terminal settings" + }, + "advanced": { + "label": "Terminal Settings: Advanced", + "description": "These settings apply only when 'Use Inline Terminal' is disabled. They affect the VS Code terminal only and may require restarting the IDE." + }, + "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" + }, + "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" + }, + "outputPreviewSize": { + "label": "Command output preview size", + "description": "Controls how much command output Roo sees directly. Full output is always saved and accessible when needed.", + "options": { + "small": "Small (5KB)", + "medium": "Medium (10KB)", + "large": "Large (20KB)" + } + }, + "shellIntegrationTimeout": { + "label": "Terminal shell integration timeout", + "description": "How long to wait for VS Code shell integration before running commands. Raise if your shell starts slowly or you see 'Shell Integration Unavailable' errors. <0>Learn more" + }, + "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" + }, + "commandDelay": { + "label": "Terminal command delay", + "description": "Adds a short pause after each command so the VS Code terminal can flush all output (bash/zsh: PROMPT_COMMAND sleep; PowerShell: start-sleep). Use only if you see missing tail output; otherwise leave at 0. <0>Learn more" + }, + "powershellCounter": { + "label": "Enable PowerShell counter workaround", + "description": "Turn this on when PowerShell output is missing or duplicated; it appends a tiny counter to each command to stabilize output. Keep this off if output already looks correct. <0>Learn more" + }, + "zshClearEolMark": { + "label": "Clear ZSH EOL mark", + "description": "Turn this on when you see stray % at the end of lines or parsing looks wrong; it omits Zsh’s end‑of‑line mark (%). <0>Learn more" + }, + "zshOhMy": { + "label": "Enable Oh My Zsh integration", + "description": "Turn this on when your Oh My Zsh theme/plugins expect shell integration; it sets ITERM_SHELL_INTEGRATION_INSTALLED=Yes. Turn this off to avoid setting that variable. <0>Learn more" + }, + "zshP10k": { + "label": "Enable Powerlevel10k integration", + "description": "Turn this on when using Powerlevel10k shell integration. <0>Learn more" + }, + "zdotdir": { + "label": "Enable ZDOTDIR handling", + "description": "Turn this on when zsh shell integration fails or conflicts with your dotfiles. <0>Learn more" + }, + "inheritEnv": { + "label": "Inherit environment variables", + "description": "Turn this on to inherit environment variables from the parent VS Code process. <0>Learn more" + } + }, + "advancedSettings": { + "title": "Advanced settings" + }, + "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", + "strategy": { + "label": "Diff strategy", + "options": { + "standard": "Standard (Single block)", + "multiBlock": "Experimental: Multi-block diff", + "unified": "Experimental: Unified diff" + }, + "descriptions": { + "standard": "Standard diff strategy applies changes to a single code block at a time.", + "unified": "Unified diff strategy takes multiple approaches to applying diffs and chooses the best approach.", + "multiBlock": "Multi-block diff strategy allows updating multiple code blocks in a file in one request." + } + } + }, + "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." + } + }, + "experimental": { + "DIFF_STRATEGY_UNIFIED": { + "name": "Use experimental unified diff strategy", + "description": "Enable the experimental unified diff strategy. This strategy might reduce the number of retries caused by model errors but may cause unexpected behavior or incorrect edits. Only enable if you understand the risks and are willing to carefully review all changes." + }, + "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." + }, + "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." + }, + "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." + }, + "MARKETPLACE": { + "name": "Enable Marketplace", + "description": "When enabled, you can install MCPs and custom modes from the Marketplace." + }, + "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." + }, + "ASSISTANT_MESSAGE_PARSER": { + "name": "Use new message parser", + "description": "Enable the experimental streaming message parser that provides significant performance improvements for long assistant responses by processing messages more efficiently." + }, + "NEW_TASK_REQUIRE_TODOS": { + "name": "Require 'todos' list for new tasks", + "description": "When enabled, the new_task tool will require a todos parameter to be provided. This ensures all new tasks start with a clear list of objectives. When disabled (default), the todos parameter remains optional for backward compatibility." + }, + "IMAGE_GENERATION": { + "name": "Enable AI image generation", + "description": "When enabled, Roo 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", + "openRouterApiKeyPlaceholder": "Enter your OpenRouter API key", + "getApiKeyText": "Get your API key from", + "modelSelectionLabel": "Image Generation Model", + "modelSelectionDescription": "Select the model to use for image generation", + "warningMissingKey": "⚠️ OpenRouter API key is required for OpenRouter image generation. Please configure it above.", + "successConfigured": "✓ Image generation is configured and ready to use" + }, + "RUN_SLASH_COMMAND": { + "name": "Enable model-initiated slash commands", + "description": "When enabled, Roo 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.", + "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", + "refreshing": "Refreshing...", + "refreshSuccess": "Tools refreshed successfully", + "refreshError": "Failed to refresh tools", + "toolParameters": "Parameters" + } + }, + "promptCaching": { + "label": "Disable prompt caching", + "description": "When checked, Roo will not use prompt caching for this model." + }, + "temperature": { + "useCustom": "Use custom temperature", + "description": "Controls randomness in the model's responses.", + "rangeDescription": "Higher values make output more random, lower values make it more deterministic." + }, + "modelInfo": { + "supportsImages": "Supports images", + "noImages": "Does not support images", + "supportsPromptCache": "Supports prompt caching", + "noPromptCache": "Does not support prompt caching", + "contextWindow": "Context Window:", + "maxOutput": "Max output", + "inputPrice": "Input price", + "outputPrice": "Output price", + "cacheReadsPrice": "Cache reads price", + "cacheWritesPrice": "Cache writes price", + "enableStreaming": "Enable streaming", + "enableR1Format": "Enable R1 model parameters", + "enableR1FormatTips": "Must be enabled when using R1 models such as QWQ to prevent 400 errors", + "useAzure": "Use Azure", + "azureApiVersion": "Set Azure API version", + "gemini": { + "freeRequests": "* Free up to {{count}} requests per minute. After that, billing depends on prompt size.", + "pricingDetails": "For more info, see pricing details.", + "billingEstimate": "* Billing is an estimate - exact cost depends on prompt size." + } + }, + "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.", + "label": "Model", + "searchPlaceholder": "Search", + "noMatchFound": "No match found", + "useCustomModel": "Use custom: {{modelId}}", + "simplifiedExplanation": "You can adjust detailed model settings later." + }, + "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." + }, + "settings": { + "import": "Import", + "export": "Export", + "reset": "Reset" + } + }, + "thinkingBudget": { + "maxTokens": "Max Tokens", + "maxThinkingTokens": "Max Thinking Tokens" + }, + "validation": { + "apiKey": "You must provide a valid API key.", + "awsRegion": "You must choose a region to use with Amazon Bedrock.", + "googleCloud": "You must provide a valid Google Cloud Project ID and Region.", + "modelId": "You must provide a valid model ID.", + "modelSelector": "You must provide a valid model selector.", + "openAi": "You must provide a valid base URL, API key, and model ID.", + "arn": { + "invalidFormat": "Invalid ARN format. Please check the format requirements.", + "regionMismatch": "Warning: The region in your ARN ({{arnRegion}}) does not match your selected region ({{region}}). This may cause access issues. The provider will use the region from the ARN." + }, + "modelAvailability": "The model ID ({{modelId}}) you provided is not available. Please choose a different model.", + "modelDeprecated": "This model is no longer available. Please select a different model.", + "providerNotAllowed": "Provider '{{provider}}' is not allowed by your organization", + "modelNotAllowed": "Model '{{model}}' is not allowed for provider '{{provider}}' by your organization", + "profileInvalid": "This profile contains a provider or model that is not allowed by your organization", + "qwenCodeOauthPath": "You must provide a valid OAuth credentials path." + }, + "placeholders": { + "apiKey": "Enter API Key...", + "profileName": "Enter profile name", + "accessKey": "Enter Access Key...", + "secretKey": "Enter Secret Key...", + "sessionToken": "Enter Session Token...", + "credentialsJson": "Enter Credentials JSON...", + "keyFilePath": "Enter Key File Path...", + "projectId": "Enter Project ID...", + "customArn": "Enter ARN (e.g. arn:aws:bedrock:us-east-1:123456789012:foundation-model/my-model)", + "baseUrl": "Enter base URL...", + "modelId": { + "lmStudio": "e.g. meta-llama-3.1-8b-instruct", + "lmStudioDraft": "e.g. lmstudio-community/llama-3.2-1b-instruct", + "ollama": "e.g. llama3.1" + }, + "numbers": { + "maxTokens": "e.g. 4096", + "contextWindow": "e.g. 128000", + "inputPrice": "e.g. 0.0001", + "outputPrice": "e.g. 0.0002", + "cacheWritePrice": "e.g. 0.00005" + } + }, + "defaults": { + "ollamaUrl": "Default: http://localhost:11434", + "lmStudioUrl": "Default: http://localhost:1234", + "geminiUrl": "Default: https://generativelanguage.googleapis.com" + }, + "labels": { + "customArn": "Custom ARN", + "useCustomArn": "Use custom ARN..." + }, + "includeMaxOutputTokens": "Include max output tokens", + "includeMaxOutputTokensDescription": "Send max output tokens parameter in API requests. Some providers may not support this.", + "limitMaxTokensDescription": "Limit the maximum number of tokens in the response", + "maxOutputTokensLabel": "Max output tokens", + "maxTokensGenerateDescription": "Maximum tokens to generate in response", + "serviceTier": { + "label": "Service tier", + "tooltip": "For faster processing of API requests, try the priority processing service tier. For lower prices with higher latency, try the flex processing tier.", + "standard": "Standard", + "flex": "Flex", + "priority": "Priority", + "pricingTableTitle": "Pricing by service tier (price per 1M tokens)", + "columns": { + "tier": "Tier", + "input": "Input", + "output": "Output", + "cacheReads": "Cache reads" + } + } +} diff --git a/webview-ui/src/i18n/locales/he/welcome.json b/webview-ui/src/i18n/locales/he/welcome.json new file mode 100644 index 0000000000..2fec3e2c12 --- /dev/null +++ b/webview-ui/src/i18n/locales/he/welcome.json @@ -0,0 +1,52 @@ +{ + "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" + }, + "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." + }, + "importSettings": "Import Settings" +} diff --git a/webview-ui/src/i18n/locales/he/worktrees.json b/webview-ui/src/i18n/locales/he/worktrees.json new file mode 100644 index 0000000000..a9c901ede0 --- /dev/null +++ b/webview-ui/src/i18n/locales/he/worktrees.json @@ -0,0 +1,69 @@ +{ + "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.", + + "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.", + "subfolderNotSupported": "This workspace is a subfolder of a Git repository. Please open the repository root to use worktrees.", + "gitRoot": "Git root", + + "includeFileExists": ".worktreeinclude file found. Files will be copied to new worktrees.", + "noIncludeFile": "No .worktreeinclude file found", + "createFromGitignore": "Create from .gitignore", + + "primary": "Primary", + "current": "Current", + "locked": "Locked", + "detachedHead": "Detached HEAD", + "noBranch": "No branch", + + "switchInThisWindow": "Switch to worktree", + "openInNewWindow": "Open in new window", + "delete": "Delete", + "newWorktree": "Create worktree", + + "createWorktree": "Create Worktree", + "branchName": "New branch", + "createNewBranch": "Create new branch", + "checkoutExisting": "Checkout existing branch", + "baseBranch": "From base branch", + "loadingBranches": "Loading branches...", + "selectBranch": "Select branch", + "searchBranch": "Search branches...", + "noBranchFound": "No branch found", + "localBranches": "Local branches", + "remoteBranches": "Remote branches", + "worktreePath": "In", + "selectWorktreeLocation": "Select Worktree Location", + "selectFolderForWorktree": "Select folder for new worktree", + "noIncludeFileWarning": "No .worktreeinclude file", + "noIncludeFileHint": "Worktrees are created with just the files from their branch. If you want to copy over local files like .env and node_modules, include them in a .worktreeinclude file at the root of the repository.", + "create": "Create", + "creating": "Creating...", + "copyingFiles": "Copying files...", + "copyingProgress": "{{item}} — {{copied}} copied", + "cancel": "Cancel", + + "deleteWorktree": "Delete Worktree", + "deleteWarning": "This can't be undone. It will delete:", + "deleteWarningBranch": "The branch and any uncommitted changes", + "deleteWarningFiles": "All files in the worktree directory", + "deleteNoticeLarge": "If this is a large repository, it may take a little while.", + "forceDelete": "Force delete", + "worktreeIsLocked": "worktree is locked", + "deleting": "Deleting...", + + "close": "Close", + + "showInHomeScreen": "Show worktrees in home screen", + + "selector": { + "worktree": "Worktree", + "title": "Worktrees", + "tooltip": "Switch between worktrees", + "description": "Git worktrees let you work on multiple branches simultaneously. Click to switch workspace.", + "settings": "Manage Worktrees", + "info": "Git worktrees allow you to have multiple working directories attached to the same repository." + } +}