Skip to content
76 changes: 62 additions & 14 deletions code_puppy/i18n/locales/en-US.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"startup.welcome": "Welcome to Code Puppy, {name}!",
"startup.ready": "Ready to fetch some code. \ud83d\udc36",
"startup.ready": "Ready to fetch some code. 🐶",
"locale.set": "Locale set to {locale}.",
"locale.current": "Current locale: {locale}",
"files.deleted": {
Expand All @@ -22,21 +22,21 @@
"version.undetected": "Could not detect current version, using fallback",
"confirm.yes": "Yes",
"confirm.no": "No",
"cli.loading": "\ud83d\udc36 Code Puppy is Loading...",
"cli.loading": "🐶 Code Puppy is Loading...",
"cli.error.no_ports": "No available ports in range 8090-9010!",
"cli.error.model_transient": "\ud83d\udd0c The model connection hit a transient error ({error_type}) and didn't recover after auto-retries. This is almost always a VPN/WiFi/provider blip \u2014 just re-run your last prompt. Your session history is intact.",
"cli.error.model_transient": "🔌 The model connection hit a transient error ({error_type}) and didn't recover after auto-retries. This is almost always a VPN/WiFi/provider blip just re-run your last prompt. Your session history is intact.",
"cli.version.update_disabled": "Update phase disabled because NO_VERSION_UPDATE is set to 1 or true",
"cli.model.not_found": "Model '{model}' not found",
"cli.model.available": "Available models: {models}",
"cli.model.using": "\ud83c\udfaf Using model: {model}",
"cli.model.using": "🎯 Using model: {model}",
"cli.model.validate_error": "Error validating model: {error}",
"cli.agent.not_found": "Agent '{agent}' not found",
"cli.agent.available": "Available agents: {agents}",
"cli.agent.using": "\ud83e\udd16 Using agent: {agent}",
"cli.agent.using": "🤖 Using agent: {agent}",
"cli.agent.set_error": "Error setting agent: {error}",
"cli.agent.cancelling": "Cancelling running agent task...",
"cli.agent.task_cancelled": "Agent task cancelled",
"cli.resume.quick_searching": "\ud83d\udd0d Quick Resume selected - finding latest session for {scope}",
"cli.resume.quick_searching": "🔍 Quick Resume selected - finding latest session for {scope}",
"cli.resume.none_found": "No previous session found for this scope; starting fresh.",
"cli.resume.available_sessions": "Available sessions: {sessions}",
"cli.resume.created": "Created new session: {session}",
Expand All @@ -47,7 +47,7 @@
"cli.help.commands": "Type /help to view all commands",
"cli.help.completion": "Type @ for path completion, or /model to pick a model. Toggle multiline with Alt+M or F2; newline: Shift+Enter.",
"cli.help.paste_images": "Paste images: Ctrl+V (even on Mac!), F3, or /paste command.",
"cli.help.macos_paste": "\ud83d\udca1 macOS tip: Use Ctrl+V (not Cmd+V) to paste images in terminal.",
"cli.help.macos_paste": "💡 macOS tip: Use Ctrl+V (not Cmd+V) to paste images in terminal.",
"cli.help.cancel_key": "Press {cancel_key} during processing to cancel the current task or inference.",
"cli.help.editor_shortcuts": "Use Ctrl+X Ctrl+E to open $EDITOR (Notepad on Windows); Ctrl+X Ctrl+B to background running shell commands; Ctrl+X Ctrl+X to kill running shell commands.",
"cli.help.autosave_load": "Use /autosave_load to manually load a previous autosave session.",
Expand All @@ -56,20 +56,20 @@
"cli.help.shell_passthrough": "!<command> to run shell commands directly (e.g., !git status)",
"cli.prompt.enter_task": "Enter your coding task:",
"cli.initial_command.processing": "Processing initial command: {command}",
"cli.initial_command.continuing": "\ud83d\udc36 Continuing in Interactive Mode",
"cli.initial_command.continuing": "🐶 Continuing in Interactive Mode",
"cli.initial_command.preserved": "Your command and response are preserved in the conversation history.",
"cli.initial_command.error": "Error processing initial command: {error}",
"cli.prompt_toolkit.installing": "Warning: prompt_toolkit not installed. Installing now...",
"cli.prompt_toolkit.installed": "Successfully installed prompt_toolkit",
"cli.prompt_toolkit.install_error": "Error installing prompt_toolkit: {error}",
"cli.prompt_toolkit.fallback": "Falling back to basic input without tab completion",
"cli.queue.running": "\u23ed running queued prompt",
"cli.queue.running": " running queued prompt",
"cli.input.cancelled": "Input cancelled",
"cli.goodbye_ctrld": "Goodbye! (Ctrl+D)",
"cli.goodbye": "Goodbye!",
"cli.command.error": "Command error: {error}",
"cli.autosave.load_cancelled": "Autosave load cancelled",
"cli.autosave.loaded": "\u2705 Autosave loaded: {messages} messages ({tokens} tokens)",
"cli.autosave.loaded": " Autosave loaded: {messages} messages ({tokens} tokens)",
"cli.autosave.load_failed": "Failed to load autosave: {error}",
"cli.autosave.headless_unsupported": "/autosave_load requires interactive mode; use -r SESSION in headless mode.",
"cli.turn.cancelled": "Cancelled",
Expand All @@ -83,7 +83,7 @@
"cli.headless.cancelled": "Execution cancelled by user",
"cli.headless.error": "Error executing prompt: {error}",
"cli.headless.save_failed": "Failed to save session {session}: {error}",
"cli.autosave.loaded_path": "\ud83d\udcc1 From: {path}",
"cli.autosave.loaded_path": "📁 From: {path}",
"cfg.set.key_required": "You must supply a key.",
"cfg.set.yolo_config_unchanged": "Using YOLO mode from puppy.cfg; configuration unchanged.",
"cfg.set.success": "Set {key} = \"{value}\" in puppy.cfg!",
Expand All @@ -106,9 +106,9 @@
"cfg.unpin.reload_failed": "Model unpinned but reload failed: {error}",
"cfg.unpin.failed": "Failed to unpin model from agent '{agent}': {error}",
"cfg.diff.apply_failed": "Failed to apply diff settings: {error}",
"cfg.colors.saved": "Banner colors saved! \ud83c\udfa8",
"cfg.colors.saved": "Banner colors saved! 🎨",
"cfg.colors.apply_failed": "Failed to apply banner color settings: {error}",
"cfg.colors.all_available": "\ud83c\udfa8 All Available Rich Colors:",
"cfg.colors.all_available": "🎨 All Available Rich Colors:",
"cfg.colors.usage": "Usage: /diff {{color_type}} <color_name>",
"cfg.colors.white_text_note": "All diffs use white text on your chosen background colors",
"cfg.colors.hex_note": "You can also use hex colors like #ff0000 or rgb(255,0,0)",
Expand All @@ -123,5 +123,53 @@
"codex.imagegen.usage": "Usage: /codex-imagegen <prompt>",
"codex.imagegen.generating": "Generating image with Codex OAuth...",
"codex.imagegen.saved": "Generated image saved to {path}",
"codex.logout.reload_failed": "ChatGPT logout: agent reload failed: {error}"
"codex.logout.reload_failed": "ChatGPT logout: agent reload failed: {error}",
"oauth.server.no_ports": "Could not start OAuth callback server; all candidate ports are in use",
"oauth.server.redirect_uri_error": "Failed to assign redirect URI for OAuth flow: {error}",
"oauth.claude.server.pasteback_mode": "Continuing Claude Code OAuth in paste-back mode.",
"oauth.server.no_redirect_uri": "Failed to assign redirect URI for OAuth flow",
"oauth.server.listening": "Listening for callback on {uri}",
"oauth.server.pasteback_uri": "Using redirect URI for paste-back: {uri}",
"oauth.server.paste_hint": "If localhost cannot be reached, paste the full callback URL or authorization code here and press Enter.",
"oauth.pasteback.parse_error": "Could not parse pasted OAuth input: {error}",
"oauth.pasteback.provider_error": "OAuth provider returned an error: {message}",
"oauth.pasteback.no_code": "Pasted OAuth input did not contain an authorization code.",
"oauth.pasteback.no_state": "Pasted OAuth input did not include state; continuing with this login attempt.",
"oauth.state_mismatch": "State mismatch detected; aborting authentication.",
"oauth.callback.error": "OAuth callback error: {error}",
"oauth.callback.timeout": "OAuth callback timed out. Please try again.",
"oauth.claude.browser.headless": "[HEADLESS MODE] Would normally open browser for Claude Code OAuth…",
"oauth.browser.headless_url": "In normal mode, would visit: {url}",
"oauth.claude.browser.opening": "Opening browser for Claude Code OAuth…",
"oauth.browser.fallback_url": "If it doesn't open automatically, visit: {url}",
"oauth.browser.open_failed": "Failed to open browser automatically: {error}",
"oauth.browser.manual_url": "Please open the URL manually: {url}",
"oauth.auth.exchanging": "Exchanging authorization code for tokens…",
"oauth.auth.exchange_failed": "Token exchange failed. Please retry the authentication flow.",
"oauth.auth.save_failed": "Tokens retrieved but failed to save locally. Check file permissions.",
"oauth.claude.auth.success": "Claude Code OAuth authentication successful!",
"oauth.auth.no_access_token": "No access token returned; skipping model discovery.",
"oauth.claude.auth.fetching_models": "Fetching available Claude Code models…",
"oauth.claude.auth.no_models": "Claude Code authentication succeeded but no models were returned.",
"oauth.auth.discovered_models": "Discovered {count} models: {models}",
"oauth.claude.auth.models_added": "Claude Code models added to your configuration. Use the `claude-code-` prefix!",
"oauth.claude.reauth.refresh_failed": "Claude Code OAuth refresh failed; launching the browser sign-in flow again.",
"oauth.claude.reauth.restored": "Claude Code OAuth restored. Retrying the failed request…",
"oauth.claude.reauth.no_token": "Claude Code OAuth reauthentication did not produce a usable token.",
"oauth.claude.cmd.auth.starting": "Starting Claude Code OAuth authentication…",
"oauth.claude.cmd.auth.overwrite_warning": "Existing Claude Code tokens found. Continuing will overwrite them.",
"oauth.claude.cmd.status.authenticated": "Claude Code OAuth: Authenticated",
"oauth.cmd.status.expires": "Token expires in ~{hours}h {minutes}m",
"oauth.claude.cmd.status.models": "Configured Claude Code models: {models}",
"oauth.claude.cmd.status.no_models": "No Claude Code models configured yet.",
"oauth.claude.cmd.status.not_authenticated": "Claude Code OAuth: Not authenticated",
"oauth.claude.cmd.status.hint": "Run /claude-code-auth to begin the browser sign-in flow.",
"oauth.claude.cmd.fast.wrong_model": "Fast mode only applies to Claude Code models. Switch to a claude-code-* model first.",
"oauth.claude.cmd.fast.enabled": "Fast mode ENABLED for {model}",
"oauth.claude.cmd.fast.enabled_detail": "Injecting speed=fast into payloads and fast-mode-2026-02-01 beta header.",
"oauth.claude.cmd.fast.disabled": "Fast mode DISABLED for {model}",
"oauth.claude.cmd.logout.tokens_removed": "Removed Claude Code OAuth tokens",
"oauth.cmd.logout.models_removed": "Removed {count} Claude Code models from configuration",
"oauth.claude.cmd.logout.success": "Claude Code logout complete",
"oauth.claude.model.no_api_key": "API key is not set for Claude Code endpoint; skipping model '{model}'."
}
50 changes: 49 additions & 1 deletion code_puppy/i18n/locales/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,53 @@
"version.fetch_failed": "Error al obtener la versión: {error}",
"version.undetected": "No se pudo detectar la versión actual, se usará un valor predeterminado",
"confirm.yes": "Sí",
"confirm.no": "No"
"confirm.no": "No",
"oauth.server.no_ports": "No se pudo iniciar el servidor de callback de OAuth; todos los puertos candidatos están en uso",
"oauth.server.redirect_uri_error": "No se pudo asignar el URI de redirección para el flujo de OAuth: {error}",
"oauth.claude.server.pasteback_mode": "Continuando el OAuth de Claude Code en modo paste-back.",
"oauth.server.no_redirect_uri": "No se pudo asignar el URI de redirección para el flujo de OAuth",
"oauth.server.listening": "Escuchando el callback en {uri}",
"oauth.server.pasteback_uri": "Usando URI de redirección para paste-back: {uri}",
"oauth.server.paste_hint": "Si no se puede acceder a localhost, pega aquí la URL completa del callback o el código de autorización y presiona Enter.",
"oauth.pasteback.parse_error": "No se pudo analizar el texto OAuth pegado: {error}",
"oauth.pasteback.provider_error": "El proveedor de OAuth devolvió un error: {message}",
"oauth.pasteback.no_code": "El texto OAuth pegado no contenía un código de autorización.",
"oauth.pasteback.no_state": "El texto OAuth pegado no incluía el estado; se continúa con este intento de inicio de sesión.",
"oauth.state_mismatch": "Se detectó una discrepancia de estado; se cancela la autenticación.",
"oauth.callback.error": "Error de callback de OAuth: {error}",
"oauth.callback.timeout": "El callback de OAuth agotó el tiempo de espera. Vuelve a intentarlo.",
"oauth.claude.browser.headless": "[MODO HEADLESS] Normalmente se abriría el navegador para el OAuth de Claude Code…",
"oauth.browser.headless_url": "En modo normal, se visitaría: {url}",
"oauth.claude.browser.opening": "Abriendo el navegador para el OAuth de Claude Code…",
"oauth.browser.fallback_url": "Si no se abre automáticamente, visita: {url}",
"oauth.browser.open_failed": "No se pudo abrir el navegador automáticamente: {error}",
"oauth.browser.manual_url": "Abre la URL manualmente: {url}",
"oauth.auth.exchanging": "Intercambiando el código de autorización por tokens…",
"oauth.auth.exchange_failed": "El intercambio de tokens falló. Vuelve a intentar el flujo de autenticación.",
"oauth.auth.save_failed": "Se obtuvieron los tokens, pero no se pudieron guardar localmente. Verifica los permisos del archivo.",
"oauth.claude.auth.success": "¡Autenticación de OAuth de Claude Code exitosa!",
"oauth.auth.no_access_token": "No se devolvió ningún token de acceso; se omite el descubrimiento de modelos.",
"oauth.claude.auth.fetching_models": "Obteniendo los modelos de Claude Code disponibles…",
"oauth.claude.auth.no_models": "La autenticación de Claude Code tuvo éxito, pero no se devolvieron modelos.",
"oauth.auth.discovered_models": "Se descubrieron {count} modelos: {models}",
"oauth.claude.auth.models_added": "Modelos de Claude Code agregados a tu configuración. ¡Usa el prefijo `claude-code-`!",
"oauth.claude.reauth.refresh_failed": "La renovación de OAuth de Claude Code falló; se inicia nuevamente el flujo de inicio de sesión en el navegador.",
"oauth.claude.reauth.restored": "OAuth de Claude Code restaurado. Reintentando la solicitud fallida…",
"oauth.claude.reauth.no_token": "La reautenticación de OAuth de Claude Code no generó un token utilizable.",
"oauth.claude.cmd.auth.starting": "Iniciando la autenticación de OAuth de Claude Code…",
"oauth.claude.cmd.auth.overwrite_warning": "Se encontraron tokens existentes de Claude Code. Continuar los sobrescribirá.",
"oauth.claude.cmd.status.authenticated": "OAuth de Claude Code: autenticado",
"oauth.cmd.status.expires": "El token expira en ~{hours}h {minutes}min",
"oauth.claude.cmd.status.models": "Modelos de Claude Code configurados: {models}",
"oauth.claude.cmd.status.no_models": "Aún no hay modelos de Claude Code configurados.",
"oauth.claude.cmd.status.not_authenticated": "OAuth de Claude Code: no autenticado",
"oauth.claude.cmd.status.hint": "Ejecuta /claude-code-auth para iniciar el flujo de inicio de sesión en el navegador.",
"oauth.claude.cmd.fast.wrong_model": "El modo rápido solo se aplica a los modelos de Claude Code. Cambia primero a un modelo claude-code-*.",
"oauth.claude.cmd.fast.enabled": "Modo rápido ACTIVADO para {model}",
"oauth.claude.cmd.fast.enabled_detail": "Se inyectará speed=fast en los payloads y el encabezado beta fast-mode-2026-02-01.",
"oauth.claude.cmd.fast.disabled": "Modo rápido DESACTIVADO para {model}",
"oauth.claude.cmd.logout.tokens_removed": "Se eliminaron los tokens de OAuth de Claude Code",
"oauth.cmd.logout.models_removed": "Se eliminaron {count} modelos de Claude Code de la configuración",
"oauth.claude.cmd.logout.success": "Cierre de sesión de Claude Code completado",
"oauth.claude.model.no_api_key": "La clave de API no está configurada para el endpoint de Claude Code; se omite el modelo '{model}'."
}
Loading
Loading