From 600c09208aa21e42d775cead27b232b20127bdd5 Mon Sep 17 00:00:00 2001 From: Roo Code Date: Wed, 23 Jul 2025 12:45:00 +0000 Subject: [PATCH] feat: add Gen Z language translations - Added ridiculously Gen Z-ified translations for all i18n namespaces - Created common.json with slang-heavy translations for UI text - Created embeddings.json with Gen Z versions of technical errors - Created marketplace.json with casual marketplace translations - Created mcp.json with Gen Z MCP server messages - Created tools.json with Gen Z tool-related messages All translations maintain the same structure and interpolation variables as the English versions while adding heavy Gen Z slang and expressions. --- src/i18n/locales/gen-z/common.json | 166 ++++++++++++++++++++++++ src/i18n/locales/gen-z/embeddings.json | 56 ++++++++ src/i18n/locales/gen-z/marketplace.json | 63 +++++++++ src/i18n/locales/gen-z/mcp.json | 22 ++++ src/i18n/locales/gen-z/tools.json | 16 +++ 5 files changed, 323 insertions(+) create mode 100644 src/i18n/locales/gen-z/common.json create mode 100644 src/i18n/locales/gen-z/embeddings.json create mode 100644 src/i18n/locales/gen-z/marketplace.json create mode 100644 src/i18n/locales/gen-z/mcp.json create mode 100644 src/i18n/locales/gen-z/tools.json diff --git a/src/i18n/locales/gen-z/common.json b/src/i18n/locales/gen-z/common.json new file mode 100644 index 0000000000..48c9938c6f --- /dev/null +++ b/src/i18n/locales/gen-z/common.json @@ -0,0 +1,166 @@ +{ + "extension": { + "name": "Roo Code", + "description": "A whole squad of AI besties in your editor. No cap fr fr." + }, + "number_format": { + "thousand_suffix": "k", + "million_suffix": "m", + "billion_suffix": "b" + }, + "welcome": "Yooo {{name}}! You got {{count}} notifs waiting for you bestie.", + "items": { + "zero": "No items rn", + "one": "Just one item", + "other": "{{count}} items" + }, + "confirmation": { + "reset_state": "Bruh are you sure you wanna yeet all the state and secret storage? This is giving permanent damage vibes, can't undo this one chief.", + "delete_config_profile": "You really bout to delete this config profile? That's lowkey sus ngl.", + "delete_custom_mode_with_rules": "Fr fr you wanna delete this {scope} mode? šŸ’€\n\nThis gonna yeet the rules folder too:\n{rulesFolderPath}" + }, + "errors": { + "invalid_data_uri": "That data URI format is not it bestie", + "error_copying_image": "Couldn't copy that image fam: {{errorMessage}}", + "error_opening_image": "Image said nah: {{error}}", + "error_saving_image": "Couldn't save that pic: {{errorMessage}}", + "could_not_open_file": "File said bye: {{errorMessage}}", + "could_not_open_file_generic": "File really said no āœ‹", + "checkpoint_timeout": "Checkpoint restoration took forever and gave up. That's an L.", + "checkpoint_failed": "Checkpoint restore caught lacking. Big oof.", + "git_not_installed": "Bestie you need Git for checkpoints. It's giving 'please install Git' energy.", + "no_workspace": "Open a project folder first bestie, can't work with nothing šŸ’€", + "update_support_prompt": "Support prompt update said nope", + "reset_support_prompt": "Support prompt reset caught an L", + "enhance_prompt": "Prompt enhancement flopped fr", + "get_system_prompt": "System prompt retrieval said bye", + "search_commits": "Commit search is not vibing rn", + "save_api_config": "API config save caught lacking", + "create_api_config": "API config creation said nah", + "rename_api_config": "API config rename is not it", + "load_api_config": "API config load failed the vibe check", + "delete_api_config": "API config deletion caught an L", + "list_api_config": "API config list said peace out", + "update_server_timeout": "Server timeout update is being sus", + "hmr_not_running": "Local dev server is ghosting us, HMR won't work. Run 'npm run dev' before launching to get that hot reload drip.", + "retrieve_current_mode": "Error: current mode retrieval said sike.", + "failed_delete_repo": "Shadow repo/branch deletion caught lacking: {{error}}", + "failed_remove_directory": "Task directory removal said nah: {{error}}", + "custom_storage_path_unusable": "Custom storage path \"{{path}}\" is not giving what it's supposed to give, using default instead", + "cannot_access_path": "Path {{path}} is being gatekeepy: {{error}}", + "settings_import_failed": "Settings import flopped: {{error}}. That's tough.", + "mistake_limit_guidance": "This is giving 'model confusion' vibes. Maybe help it out with some guidance like \"Try breaking it down bestie\".", + "violated_organization_allowlist": "Task said nope: current profile ain't matching your org's vibe", + "condense_failed": "Context condensing caught an L", + "condense_not_enough_messages": "Not enough messages to condense, need more tea to spill", + "condensed_recently": "Just condensed context, not doing it again rn", + "condense_handler_invalid": "API handler for condensing is being sus", + "condense_context_grew": "Context got bigger during condensing?? That's backwards bestie", + "url_timeout": "Website took forever to load (timeout). Could be slow wifi, thicc website, or it's just not feeling it rn. Try again later or check that URL.", + "url_not_found": "That website address is giving 404 energy. Check the URL and try again bestie.", + "no_internet": "No internet? In this economy? Check your wifi and try again.", + "url_forbidden": "Website said \"you can't sit with us\" (403). Might be blocking bots or needs you to log in first.", + "url_page_not_found": "Page went ghost mode (404). Check that URL fr.", + "url_fetch_failed": "URL fetch caught lacking: {{error}}", + "url_fetch_error_with_url": "Error fetching {{url}}: {{error}} - that's not bussin", + "command_timeout": "Command said \"bye\" after {{seconds}} seconds", + "share_task_failed": "Task sharing flopped. Try again bestie.", + "share_no_active_task": "No task to share rn, start one first", + "share_auth_required": "Gotta sign in to share tasks. No cap.", + "share_not_enabled": "Task sharing ain't enabled for your org. That's an L.", + "share_task_not_found": "Task not found or you don't have the perms. Sus.", + "mode_import_failed": "Mode import said nah: {{error}}", + "delete_rules_folder_failed": "Rules folder deletion caught lacking: {{rulesFolderPath}}. Error: {{error}}", + "claudeCode": { + "processExited": "Claude Code dipped with code {{exitCode}}. RIP.", + "errorOutput": "Error output: {{output}}", + "processExitedWithError": "Claude Code left the chat with code {{exitCode}}. Error: {{output}}", + "stoppedWithReason": "Claude Code stopped cuz: {{reason}}", + "apiKeyModelPlanMismatch": "API keys and subscription plans are not matching each other's energy. Make sure your model is in your plan bestie." + } + }, + "warnings": { + "no_terminal_content": "No terminal content selected fam", + "missing_task_files": "This task's files went MIA. Wanna yeet it from the list?", + "auto_import_failed": "RooCode settings auto-import caught an L: {{error}}" + }, + "info": { + "no_changes": "No changes found. It's giving 'nothing to see here' vibes.", + "clipboard_copy": "System prompt copied to clipboard! Get that paste ready šŸ“‹", + "history_cleanup": "Yeeted {{count}} task(s) with missing files. Clean vibes only.", + "custom_storage_path_set": "Custom storage path is set: {{path}} ✨", + "default_storage_path": "Back to default storage path. Classic move.", + "settings_imported": "Settings imported! We're so back šŸ”„", + "auto_import_success": "RooCode settings auto-imported from {{filename}}. That's what I'm talking about!", + "share_link_copied": "Share link secured in clipboard šŸ“Ž", + "organization_share_link_copied": "Org share link in the clipboard! Share it with the squad šŸ”—", + "public_share_link_copied": "Public share link copied! Time to go viral 🌐", + "image_copied_to_clipboard": "Image data URI in clipboard. Ready to paste bestie šŸ–¼ļø", + "image_saved": "Image saved to {{path}}. It's giving organized ✨", + "mode_exported": "Mode '{{mode}}' exported! Ship it šŸ“¦", + "mode_imported": "Mode imported successfully! New vibes unlocked šŸ”“" + }, + "answers": { + "yes": "Yuh", + "no": "Nah", + "remove": "Yeet it", + "keep": "Keep it" + }, + "buttons": { + "save": "Save it", + "edit": "Edit", + "learn_more": "Spill the tea" + }, + "tasks": { + "canceled": "Task error: User said \"nah\" and canceled it.", + "deleted": "Task failure: User straight up deleted it. That's rough.", + "incomplete": "Task #{{taskNumber}} (Not done yet)", + "no_messages": "Task #{{taskNumber}} (No messages? That's sus)" + }, + "storage": { + "prompt_custom_path": "Drop that custom convo history storage path, or leave it empty for default vibes", + "path_placeholder": "D:\\RooCodeStorage", + "enter_absolute_path": "Need an absolute path bestie (like D:\\RooCodeStorage or /home/user/storage)", + "enter_valid_path": "That path ain't valid chief" + }, + "input": { + "task_prompt": "What's Roo gonna do for you today?", + "task_placeholder": "Spill what you need here" + }, + "customModes": { + "errors": { + "yamlParseError": "YAML in .roomodes is not passing the vibe check at line {{line}}. Check for:\n• Proper indentation (spaces only, no tabs)\n• Matching quotes and brackets\n• Valid YAML syntax fr", + "schemaValidationError": "Custom modes format in .roomodes is sus:\n{{issues}}", + "invalidFormat": "Custom modes format is not it. Make sure your YAML is bussin.", + "updateFailed": "Custom mode update caught lacking: {{error}}", + "deleteFailed": "Custom mode deletion said nope: {{error}}", + "resetFailed": "Custom modes reset flopped: {{error}}", + "modeNotFound": "Write error: Mode went ghost", + "noWorkspaceForProject": "No workspace folder for project mode? That's not giving what it should" + }, + "scope": { + "project": "project", + "global": "global" + } + }, + "mdm": { + "errors": { + "cloud_auth_required": "Your org needs that Roo Code Cloud auth. Sign in to continue bestie.", + "organization_mismatch": "You gotta be logged into your org's Roo Code Cloud account. No cap.", + "verification_failed": "Org auth verification said bye. That's tough." + } + }, + "prompts": { + "deleteMode": { + "title": "Delete Custom Mode", + "description": "You really bout to delete this {{scope}} mode? This gonna yeet the rules folder too: {{rulesFolderPath}}", + "descriptionNoRules": "Fr you wanna delete this custom mode?", + "confirm": "Delete it" + } + }, + "commands": { + "preventCompletionWithOpenTodos": { + "description": "Won't let you complete tasks with unfinished todos. Gotta check those boxes first bestie āœ…" + } + } +} diff --git a/src/i18n/locales/gen-z/embeddings.json b/src/i18n/locales/gen-z/embeddings.json new file mode 100644 index 0000000000..0e3c2d2395 --- /dev/null +++ b/src/i18n/locales/gen-z/embeddings.json @@ -0,0 +1,56 @@ +{ + "unknownError": "Unknown error (that's giving mystery vibes)", + "authenticationFailed": "Embeddings creation said nah: Auth failed. Check your API key bestie.", + "failedWithStatus": "Embeddings creation caught {{attempts}} L's: HTTP {{statusCode}} - {{errorMessage}}", + "failedWithError": "Embeddings creation flopped after {{attempts}} tries: {{errorMessage}}", + "failedMaxAttempts": "Embeddings creation is not it after {{attempts}} attempts", + "textExceedsTokenLimit": "Text at index {{index}} is too thicc for token limit ({{itemTokens}} > {{maxTokens}}). Skipping this chonker.", + "rateLimitRetry": "Rate limit hit different, waiting {{delayMs}}ms (attempt {{attempt}}/{{maxRetries}})", + "ollama": { + "couldNotReadErrorBody": "Error body said \"you can't read me\" fr", + "requestFailed": "Ollama API caught lacking with status {{status}} {{statusText}}: {{errorBody}}", + "invalidResponseStructure": "Ollama API response is sus: \"embeddings\" array went ghost or ain't an array.", + "embeddingFailed": "Ollama embedding said bye: {{message}}", + "serviceNotRunning": "Ollama service is ghosting us at {{baseUrl}}", + "serviceUnavailable": "Ollama service is not vibing rn (status: {{status}})", + "modelNotFound": "Ollama model went MIA: {{modelId}}", + "modelNotEmbeddingCapable": "Ollama model {{modelId}} can't do embeddings. That's not its vibe.", + "hostNotFound": "Ollama host is playing hide and seek: {{baseUrl}}" + }, + "scanner": { + "unknownErrorProcessingFile": "Unknown error processing {{filePath}} (spooky vibes)", + "unknownErrorDeletingPoints": "Unknown error yeeting points for {{filePath}}", + "failedToProcessBatchWithError": "Batch processing caught {{maxRetries}} L's: {{errorMessage}}" + }, + "vectorStore": { + "qdrantConnectionFailed": "Qdrant vector database said \"new phone who dis\". Make sure Qdrant is running at {{qdrantUrl}}. Error: {{errorMessage}}", + "vectorDimensionMismatch": "Vector index update for new model is not matching the vibe. Try yeeting the index and starting fresh. Deets: {{errorMessage}}" + }, + "validation": { + "authenticationFailed": "Auth failed. Your API key failed the vibe check bestie.", + "connectionFailed": "Connection to embedder service said nope. Check your settings and make sure it's not ghosting.", + "modelNotAvailable": "That model is not available rn. It's giving \"404 model not found\" energy.", + "configurationError": "Embedder config is sus. Time to check those settings.", + "serviceUnavailable": "Embedder service dipped. Make sure it's running and not being antisocial.", + "invalidEndpoint": "API endpoint is not valid. That URL needs work fr.", + "invalidEmbedderConfig": "Embedder config failed the vibe check. Fix those settings.", + "invalidApiKey": "API key is not it. Check that key bestie.", + "invalidBaseUrl": "Base URL is giving error vibes. Fix that URL.", + "invalidModel": "Model selection is sus. Pick a different one.", + "invalidResponse": "Embedder service response is not passing the vibe check. Config might be off.", + "apiKeyRequired": "This embedder needs an API key. No key, no embeddings.", + "baseUrlRequired": "This embedder needs a base URL. Can't work without it chief." + }, + "serviceFactory": { + "openAiConfigMissing": "OpenAI config went ghost for embedder creation", + "ollamaConfigMissing": "Ollama config is MIA for embedder creation", + "openAiCompatibleConfigMissing": "OpenAI Compatible config said bye for embedder creation", + "geminiConfigMissing": "Gemini config is not showing up for embedder creation", + "mistralConfigMissing": "Mistral config dipped for embedder creation", + "invalidEmbedderType": "Embedder type {{embedderProvider}} is not valid. That's sus.", + "vectorDimensionNotDeterminedOpenAiCompatible": "Can't figure out vector dimension for model '{{modelId}}' with provider '{{provider}}'. Make sure 'Embedding Dimension' is set right in OpenAI-Compatible settings bestie.", + "vectorDimensionNotDetermined": "Vector dimension for model '{{modelId}}' with provider '{{provider}}' is being mysterious. Check those model profiles.", + "qdrantUrlMissing": "Qdrant URL went missing for vector store creation", + "codeIndexingNotConfigured": "Can't create services: Code indexing is not set up right. That's an L." + } +} diff --git a/src/i18n/locales/gen-z/marketplace.json b/src/i18n/locales/gen-z/marketplace.json new file mode 100644 index 0000000000..dba1febfa8 --- /dev/null +++ b/src/i18n/locales/gen-z/marketplace.json @@ -0,0 +1,63 @@ +{ + "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": "Yeet tag filter: {{tag}}", + "filter-by-tag": "Filter by tag: {{tag}}", + "component-details": "Component Deets", + "view": "Peep this", + "source": "Source" + }, + "filters": { + "search": { + "placeholder": "Search the marketplace bestie..." + }, + "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. That's an L.", + "selected": "Showing items with these tags (we matching fr)" + }, + "title": "Marketplace" + }, + "done": "We done here", + "tabs": { + "installed": "Already Got", + "browse": "Browse", + "settings": "Settings" + }, + "items": { + "empty": { + "noItems": "No marketplace items rn. Empty vibes.", + "emptyHint": "Try different filters or search terms bestie" + } + }, + "installation": { + "installing": "Installing \"{{itemName}}\" rn...", + "installSuccess": "\"{{itemName}}\" installed! We eating good šŸ”„", + "installError": "\"{{itemName}}\" install caught an L: {{errorMessage}}", + "removing": "Yeeting \"{{itemName}}\"...", + "removeSuccess": "\"{{itemName}}\" is gone. Peace out āœŒļø", + "removeError": "Couldn't yeet \"{{itemName}}\": {{errorMessage}}" + } +} diff --git a/src/i18n/locales/gen-z/mcp.json b/src/i18n/locales/gen-z/mcp.json new file mode 100644 index 0000000000..36fdef3322 --- /dev/null +++ b/src/i18n/locales/gen-z/mcp.json @@ -0,0 +1,22 @@ +{ + "errors": { + "invalid_settings_format": "MCP settings JSON format is not it. Make sure your JSON is valid bestie.", + "invalid_settings_syntax": "MCP settings JSON is giving syntax error vibes. Check your settings file fr.", + "invalid_settings_validation": "MCP settings format failed the vibe check: {{errorMessages}}", + "create_json": "Couldn't create or open .roo/mcp.json: {{error}} - that's tough", + "failed_update_project": "Project MCP servers update caught an L", + "invalidJsonArgument": "Roo tried to use {{toolName}} with sus JSON. We retrying tho..." + }, + "info": { + "server_restarting": "Restarting {{serverName}} MCP server... hold up", + "server_connected": "{{serverName}} MCP server is online! Let's gooo šŸš€", + "server_deleted": "Yeeted MCP server: {{serverName}} āœŒļø", + "server_not_found": "Server \"{{serverName}}\" went ghost in the config", + "global_servers_active": "Global MCP Servers that are up: {{mcpServers}}", + "project_servers_active": "Project MCP Servers vibing: {{mcpServers}}", + "already_refreshing": "MCP servers already refreshing. Chill bestie.", + "refreshing_all": "Refreshing all MCP servers... one sec", + "all_refreshed": "All MCP servers refreshed! We're so back šŸ’Æ", + "project_config_deleted": "Project MCP config file got yeeted. All project MCP servers said bye." + } +} diff --git a/src/i18n/locales/gen-z/tools.json b/src/i18n/locales/gen-z/tools.json new file mode 100644 index 0000000000..185c321550 --- /dev/null +++ b/src/i18n/locales/gen-z/tools.json @@ -0,0 +1,16 @@ +{ + "readFile": { + "linesRange": " (lines {{start}}-{{end}})", + "definitionsOnly": " (definitions only)", + "maxLines": " (max {{max}} lines)" + }, + "toolRepetitionLimitReached": "Roo is stuck in a loop fr fr, keeps trying {{toolName}} over and over. That's giving NPC energy. Maybe rephrase the task or guide it different bestie.", + "codebaseSearch": { + "approval": "Searching for '{{query}}' in the codebase... one sec" + }, + "newTask": { + "errors": { + "policy_restriction": "New task creation said nah due to policy restrictions. That's an L." + } + } +}