## Summary - add SideCar support across the server and UI, including proxied tabs, picker/settings flows, and websocket-aware proxying - unify top-level tab handling so workspace instances and SideCars share the same tab model and navigation flows - limit SideCars to port-based services only, removing server-managed process control from the final API and UI --------- Co-authored-by: Shantur <shantur@Mac.home> Co-authored-by: Shantur <shantur@Shanturs-MacBook-Pro-M5.local>
234 lines
16 KiB
TypeScript
234 lines
16 KiB
TypeScript
export const settingsMessages = {
|
|
"instanceServiceStatus.sections.lsp": "Servidores LSP",
|
|
"instanceServiceStatus.sections.mcp": "Servidores MCP",
|
|
"instanceServiceStatus.sections.plugins": "Plugins",
|
|
"instanceServiceStatus.lsp.loading": "Cargando servidores LSP...",
|
|
"instanceServiceStatus.lsp.empty": "No se detectaron servidores LSP.",
|
|
"instanceServiceStatus.lsp.status.connected": "Conectado",
|
|
"instanceServiceStatus.lsp.status.error": "Error",
|
|
"instanceServiceStatus.mcp.loading": "Cargando servidores MCP...",
|
|
"instanceServiceStatus.mcp.empty": "No se detectaron servidores MCP.",
|
|
"instanceServiceStatus.mcp.toggleAriaLabel": "Alternar servidor MCP {name}",
|
|
"instanceServiceStatus.plugins.loading": "Cargando plugins...",
|
|
"instanceServiceStatus.plugins.empty": "No hay plugins configurados.",
|
|
|
|
"permissionBanner.pendingRequests.one": "{count} solicitud pendiente",
|
|
"permissionBanner.pendingRequests.other": "{count} solicitudes pendientes",
|
|
"permissionBanner.detail.permission.one": "{count} permiso",
|
|
"permissionBanner.detail.permission.other": "{count} permisos",
|
|
"permissionBanner.detail.question.one": "{count} pregunta",
|
|
"permissionBanner.detail.question.other": "{count} preguntas",
|
|
"permissionBanner.detail.wrapper": " ({detail})",
|
|
|
|
"agentSelector.placeholder": "Seleccionar agente...",
|
|
"agentSelector.badge.subagent": "subagente",
|
|
"agentSelector.none": "Ninguno",
|
|
"agentSelector.trigger.primary": "Agente: {agent}",
|
|
|
|
"modelSelector.placeholder.search": "Buscar modelos...",
|
|
"modelSelector.none": "Ninguno",
|
|
"modelSelector.trigger.primary": "Modelo: {model}",
|
|
"modelSelector.favoritesOnly.toggle.ariaLabel": "Alternar solo favoritos",
|
|
"modelSelector.favoritesOnly.showAll": "Mostrar todos los modelos",
|
|
"modelSelector.favorite.add": "Agregar a favoritos",
|
|
"modelSelector.favorite.remove": "Quitar de favoritos",
|
|
|
|
"thinkingSelector.variant.default": "Por defecto",
|
|
"thinkingSelector.label": "Pensamiento: {variant}",
|
|
|
|
"envEditor.title": "Variables de entorno",
|
|
"envEditor.count.one": "({count} variable)",
|
|
"envEditor.count.other": "({count} variables)",
|
|
"envEditor.fields.name.placeholder": "Nombre de la variable",
|
|
"envEditor.fields.name.readOnlyTitle": "Nombre de la variable (solo lectura)",
|
|
"envEditor.fields.value.placeholder": "Valor de la variable",
|
|
"envEditor.actions.remove.title": "Quitar variable",
|
|
"envEditor.actions.add.title": "Agregar variable",
|
|
"envEditor.empty": "No hay variables de entorno configuradas. Agrega variables arriba para personalizar el entorno de OpenCode.",
|
|
"envEditor.help": "Estas variables estarán disponibles en el entorno de OpenCode al iniciar instancias.",
|
|
|
|
"contextUsagePanel.headings.tokens": "Tokens",
|
|
"contextUsagePanel.headings.context": "Contexto",
|
|
"contextUsagePanel.labels.input": "Entrada",
|
|
"contextUsagePanel.labels.output": "Salida",
|
|
"contextUsagePanel.labels.cost": "Costo",
|
|
"contextUsagePanel.labels.used": "Usado",
|
|
"contextUsagePanel.labels.available": "Disp.",
|
|
"contextUsagePanel.unavailable": "--",
|
|
|
|
"settings.title": "Settings",
|
|
"settings.navigationAriaLabel": "Settings sections",
|
|
"settings.close": "Close settings",
|
|
"settings.content.eyebrow": "Workspace preferences",
|
|
"settings.open.title": "Open settings",
|
|
"settings.open.ariaLabel": "Open settings",
|
|
"settings.nav.appearance": "Appearance",
|
|
"settings.nav.notifications": "Notifications",
|
|
"settings.nav.remote": "Remote Access",
|
|
"settings.nav.speech": "Speech",
|
|
"settings.nav.opencode": "OpenCode",
|
|
"settings.scope.device": "This device",
|
|
"settings.scope.server": "Server setting",
|
|
"settings.common.enabled": "Enabled",
|
|
"settings.common.disabled": "Desactivado",
|
|
"settings.section.appearance.title": "Appearance",
|
|
"settings.section.appearance.subtitle": "Adjust how the app looks on this device.",
|
|
"settings.appearance.theme.title": "Theme",
|
|
"settings.appearance.theme.subtitle": "Choose the color mode used throughout the app.",
|
|
"settings.appearance.theme.option.system": "Match your operating system setting",
|
|
"settings.appearance.theme.option.light": "Use the light appearance",
|
|
"settings.appearance.theme.option.dark": "Use the dark appearance",
|
|
"settings.section.notifications.title": "Notifications",
|
|
"settings.section.notifications.subtitle": "Control OS-level notifications for session activity.",
|
|
"settings.notifications.permission.granted": "Granted",
|
|
"settings.notifications.permission.denied": "Denied",
|
|
"settings.notifications.permission.default": "Not granted",
|
|
"settings.notifications.permission.unsupported": "Unsupported",
|
|
"settings.notifications.messages.unsupportedEnvironment": "OS notifications are not supported in this environment.",
|
|
"settings.notifications.messages.permissionDenied": "Notification permission denied. Enable notifications in your system or browser settings.",
|
|
"settings.notifications.messages.permissionNotGranted": "Notification permission not granted.",
|
|
"settings.notifications.messages.unsupportedGeneral": "Notifications are not supported in this environment.",
|
|
"settings.notifications.messages.permissionGranted": "Permission granted. You can now enable notifications.",
|
|
"settings.notifications.messages.permissionRequestDenied": "Permission denied. You may need to enable notifications in your system or browser settings.",
|
|
"settings.notifications.sessionStatus.title": "Session status notifications",
|
|
"settings.notifications.sessionStatus.subtitle": "Receive alerts when sessions need your attention.",
|
|
"settings.notifications.enable.title": "Enable notifications",
|
|
"settings.notifications.enable.permission": "Permission: {permission}",
|
|
"settings.notifications.requestPermission.title": "Request permission",
|
|
"settings.notifications.requestPermission.subtitle": "Allow the app to send notifications on this device.",
|
|
"settings.notifications.requestPermission.action": "Request",
|
|
"settings.notifications.allowVisible.title": "Notify when the app is focused",
|
|
"settings.notifications.allowVisible.subtitle": "Keep alerts enabled even while this window is visible.",
|
|
"settings.notifications.unsupportedNote": "Notifications are not supported in this environment. The notifications control stays disabled.",
|
|
"settings.notifications.events.title": "Notify me when",
|
|
"settings.notifications.events.subtitle": "Choose which session events should send alerts.",
|
|
"settings.notifications.events.needsInput": "Session needs input",
|
|
"settings.notifications.events.idle": "Session becomes idle",
|
|
"settings.notifications.status.enabled": "Notifications enabled",
|
|
"settings.notifications.status.disabled": "Notifications disabled",
|
|
"settings.notifications.status.unsupported": "Notifications unsupported",
|
|
"settings.section.remote.title": "Remote Access",
|
|
"settings.section.remote.subtitle": "Review how this server is exposed on your network and secure access credentials.",
|
|
"settings.section.opencode.title": "OpenCode",
|
|
"settings.section.opencode.subtitle": "Choose the OpenCode binary and environment used for new instances.",
|
|
"settings.opencode.runtime.title": "Runtime",
|
|
"settings.opencode.runtime.subtitle": "Configure which OpenCode binary new instances launch with.",
|
|
"settings.opencode.logLevel.title": "Nivel de logs de OpenCode",
|
|
"settings.opencode.logLevel.subtitle": "Define el nivel de logs usado al iniciar nuevas instancias de OpenCode.",
|
|
"settings.opencode.logLevel.selector.title": "Verbosidad de logs",
|
|
"settings.opencode.logLevel.selector.subtitle": "Elige cuanta informacion deben registrar las nuevas instancias de OpenCode.",
|
|
"settings.opencode.logLevel.option.debug": "Depuracion",
|
|
"settings.opencode.logLevel.option.info": "Informacion",
|
|
"settings.opencode.logLevel.option.warn": "Advertencia",
|
|
"settings.opencode.logLevel.option.error": "Error",
|
|
|
|
"settings.appearance.behavior.title": "Interaccion",
|
|
"settings.appearance.behavior.subtitle": "Valores predeterminados de mensajes, diffs y entrada.",
|
|
"settings.behavior.keyboardHints.title": "Sugerencias de atajos de teclado",
|
|
"settings.behavior.keyboardHints.subtitle": "Muestra sugerencias de atajos de teclado en toda la interfaz.",
|
|
"settings.behavior.thinking.title": "Secciones de pensamiento",
|
|
"settings.behavior.thinking.subtitle": "Muestra u oculta las secciones de pensamiento de la IA en los mensajes.",
|
|
"settings.behavior.thinkingDefault.title": "Pensamiento por defecto",
|
|
"settings.behavior.thinkingDefault.subtitle": "Elige si las secciones de pensamiento comienzan expandidas o contraidas.",
|
|
"settings.behavior.timelineTools.title": "Llamadas de herramientas en la linea de tiempo",
|
|
"settings.behavior.timelineTools.subtitle": "Muestra u oculta entradas de llamadas de herramientas en la linea de tiempo de mensajes.",
|
|
"settings.behavior.diffView.title": "Vista de diferencias",
|
|
"settings.behavior.diffView.subtitle": "Elige como se muestran los diffs de llamadas de herramientas.",
|
|
"settings.behavior.diffView.option.split": "Dividida",
|
|
"settings.behavior.diffView.option.unified": "Unificada",
|
|
"settings.behavior.toolOutputsDefault.title": "Salidas de herramientas por defecto",
|
|
"settings.behavior.toolOutputsDefault.subtitle": "Elige si las salidas de herramientas comienzan expandidas o contraidas.",
|
|
"settings.behavior.diagnosticsDefault.title": "Diagnosticos por defecto",
|
|
"settings.behavior.diagnosticsDefault.subtitle": "Elige si la salida de diagnosticos comienza expandida o contraida.",
|
|
"settings.behavior.toolInputsVisibility.title": "Visibilidad de entradas de herramientas",
|
|
"settings.behavior.toolInputsVisibility.subtitle": "Establece la visibilidad por defecto de los argumentos de entrada de las llamadas de herramientas.",
|
|
"settings.behavior.usageMetrics.title": "Metricas de uso de tokens",
|
|
"settings.behavior.usageMetrics.subtitle": "Muestra u oculta estadisticas de tokens y costo en mensajes del asistente.",
|
|
"settings.behavior.autoCleanup.title": "Limpieza automatica de sesiones en blanco",
|
|
"settings.behavior.autoCleanup.subtitle": "Limpia automaticamente las sesiones en blanco al crear nuevas.",
|
|
"settings.behavior.promptVoiceInput.title": "Prompt voice input",
|
|
"settings.behavior.promptVoiceInput.subtitle": "Show the microphone control for speech-to-text prompt input when speech is configured.",
|
|
"settings.behavior.promptSubmit.title": "Enter para enviar",
|
|
"settings.behavior.promptSubmit.subtitle": "Usa Enter para enviar; Cmd/Ctrl+Enter inserta una nueva linea.",
|
|
"settings.speech.title": "Voz",
|
|
"settings.speech.subtitle": "Configura ahora el reconocimiento de voz y prepara la base de texto a voz para funciones futuras.",
|
|
"settings.speech.provider.title": "Proveedor",
|
|
"settings.speech.provider.subtitle": "Las solicitudes de voz usan el adaptador de voz del servidor.",
|
|
"settings.speech.provider.openaiCompatible": "OpenAI-compatible",
|
|
"settings.speech.status.loading": "Comprobando configuración...",
|
|
"settings.speech.status.configured": "Configurado",
|
|
"settings.speech.status.missing": "Falta la clave API",
|
|
"settings.speech.status.error": "Servicio de voz no disponible",
|
|
"settings.speech.apiKey.title": "API key",
|
|
"settings.speech.apiKey.subtitle": "Se usa para las solicitudes de voz gestionadas por CodeNomad.",
|
|
"settings.speech.apiKey.placeholder": "Introduce una nueva clave API",
|
|
"settings.speech.apiKey.storedNote": "Hay una clave API guardada y oculta. Introduce un nuevo valor para reemplazarla o deja el campo vacío para conservarla.",
|
|
"settings.speech.apiKey.clearAction": "Borrar clave guardada",
|
|
"settings.speech.apiKey.clearPending": "La clave API guardada se eliminará al guardar.",
|
|
"settings.speech.baseUrl.title": "Base URL",
|
|
"settings.speech.baseUrl.subtitle": "Anulación opcional para endpoints de voz compatibles con OpenAI.",
|
|
"settings.speech.baseUrl.placeholder": "https://api.openai.com/v1",
|
|
"settings.speech.sttModel.title": "Modelo de transcripción",
|
|
"settings.speech.sttModel.subtitle": "Modelo usado para las solicitudes de voz a texto en el prompt.",
|
|
"settings.speech.ttsModel.title": "Modelo de voz",
|
|
"settings.speech.ttsModel.subtitle": "Modelo predeterminado de texto a voz reservado para futuras funciones de reproducción.",
|
|
"settings.speech.ttsVoice.title": "Voz predeterminada",
|
|
"settings.speech.ttsVoice.subtitle": "Voz predeterminada de texto a voz reservada para futuras funciones de reproducción.",
|
|
"settings.speech.playbackMode.title": "Modo de reproduccion",
|
|
"settings.speech.playbackMode.subtitle": "Elige si TTS empieza a reproducirse mientras llega el audio o despues de generar el archivo completo.",
|
|
"settings.speech.playbackMode.streaming": "Streaming",
|
|
"settings.speech.playbackMode.buffered": "Buffered",
|
|
"settings.speech.ttsFormat.title": "Formato de salida",
|
|
"settings.speech.ttsFormat.subtitle": "Elige el formato de audio para la voz sintetizada. La compatibilidad de streaming depende de tu proveedor y navegador.",
|
|
"settings.speech.help": "La entrada de voz del prompt aparece cuando la transcripcion de voz esta configurada y es compatible. La reproduccion de mensajes usa el modo y formato TTS seleccionados aqui.",
|
|
"settings.speech.compatibility.streamingUnavailable": "Tu configuracion actual del proveedor de voz no anuncia TTS por streaming. Cambia el modo de reproduccion a buffered si quieres que la reproduccion funcione ahora.",
|
|
"settings.speech.compatibility.browserStreamingUnavailable": "Tu navegador actual no puede reproducir por streaming el formato TTS seleccionado. Elige reproduccion buffered o cambia a otro formato.",
|
|
"settings.speech.compatibility.runtimeNote": "Todos los formatos siguen disponibles en modo streaming. Algunas combinaciones de navegador y proveedor aun pueden fallar al reproducir.",
|
|
"settings.speech.testPlayback.action": "Probar reproduccion",
|
|
"settings.speech.testPlayback.generating": "Generando muestra",
|
|
"settings.speech.testPlayback.stop": "Detener muestra",
|
|
"settings.speech.testPlayback.sample": "Gracias por usar CodeNomad, tu configuracion de voz funciona correctamente.",
|
|
"settings.speech.testPlayback.note": "La prueba usa de inmediato el modo y formato actuales. Guarda primero los cambios de API key, base URL, modelo o voz si tambien quieres probarlos.",
|
|
"settings.speech.save.action": "Guardar",
|
|
"settings.speech.save.saving": "Guardando...",
|
|
"settings.speech.save.saved": "Guardado",
|
|
"settings.speech.save.unsaved": "Cambios sin guardar",
|
|
"settings.speech.save.error": "Error al guardar",
|
|
"settings.nav.sidecars": "SideCars",
|
|
"settings.section.sidecars.eyebrow": "Server services",
|
|
"settings.section.sidecars.title": "SideCars",
|
|
"settings.section.sidecars.subtitle": "Configure local services listening on fixed ports that the server can proxy into tabs.",
|
|
"sidecars.form.name": "Name",
|
|
"sidecars.form.validation": "Enter a valid SideCar name and port.",
|
|
"sidecars.form.port": "Port",
|
|
"sidecars.form.insecure": "Use HTTP",
|
|
"sidecars.form.protocol": "Protocol",
|
|
"sidecars.form.protocol.help": "Choose how the proxy should connect to the local service.",
|
|
"sidecars.form.protocol.https": "HTTPS",
|
|
"sidecars.form.protocol.http": "HTTP",
|
|
"sidecars.form.prefixMode": "Prefix mode",
|
|
"sidecars.form.prefixMode.help": "Choose whether the SideCar receives the public /sidecars path prefix.",
|
|
"sidecars.form.prefixMode.strip": "Strip prefix",
|
|
"sidecars.form.prefixMode.preserve": "Preserve prefix",
|
|
"sidecars.form.add": "Add SideCar",
|
|
"sidecars.kind.port": "Port",
|
|
"sidecars.status.running": "Running",
|
|
"sidecars.status.stopped": "Stopped",
|
|
"sidecars.basePath": "Base path",
|
|
"sidecars.settings.listTitle": "Configured SideCars",
|
|
"sidecars.settings.listSubtitle": "Review the port-based SideCars available in the picker.",
|
|
"sidecars.settings.empty": "No SideCars configured yet.",
|
|
"sidecars.picker.title": "Open SideCar",
|
|
"sidecars.picker.loading": "Loading SideCars...",
|
|
"sidecars.picker.subtitle": "Choose an available SideCar to open in a new tab.",
|
|
"sidecars.picker.empty": "No port-based SideCars are available yet.",
|
|
"sidecars.picker.close": "Close",
|
|
"sidecars.open.errorTitle": "Unable to open SideCar",
|
|
"sidecars.open.notFound": "SideCar not found.",
|
|
"sidecars.open.notRunning": "SideCar is not reachable on its configured port.",
|
|
"sidecars.back": "Back",
|
|
"sidecars.refresh": "Refresh",
|
|
"sidecars.path": "Path",
|
|
"sidecars.go": "Go",
|
|
} as const
|