feat(ui): add locales and split catalogs
Adds Spanish, French, Russian, Japanese, and Simplified Chinese catalogs and wires supported locales into the i18n layer.
This commit is contained in:
6
packages/ui/src/lib/i18n/messages/es/advancedSettings.ts
Normal file
6
packages/ui/src/lib/i18n/messages/es/advancedSettings.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export const advancedSettingsMessages = {
|
||||
"advancedSettings.title": "Configuración avanzada",
|
||||
"advancedSettings.environmentVariables.title": "Variables de entorno",
|
||||
"advancedSettings.environmentVariables.subtitle": "Se aplican cada vez que inicia una nueva instancia de OpenCode",
|
||||
"advancedSettings.actions.close": "Cerrar",
|
||||
} as const
|
||||
29
packages/ui/src/lib/i18n/messages/es/app.ts
Normal file
29
packages/ui/src/lib/i18n/messages/es/app.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
export const appMessages = {
|
||||
"app.launchError.title": "No se pudo iniciar OpenCode",
|
||||
"app.launchError.description": "No pudimos iniciar el binario de OpenCode seleccionado. Revisa la salida de error abajo o elige un binario distinto en Configuración avanzada.",
|
||||
"app.launchError.binaryPathLabel": "Ruta del binario",
|
||||
"app.launchError.errorOutputLabel": "Salida de error",
|
||||
"app.launchError.openAdvancedSettings": "Abrir Configuración avanzada",
|
||||
"app.launchError.close": "Cerrar",
|
||||
"app.launchError.closeTitle": "Cerrar (Esc)",
|
||||
"app.launchError.fallbackMessage": "No se pudo iniciar el workspace",
|
||||
|
||||
"app.stopInstance.confirmMessage": "¿Detener la instancia de OpenCode? Esto detendrá el servidor.",
|
||||
"app.stopInstance.title": "Detener instancia",
|
||||
"app.stopInstance.confirmLabel": "Detener",
|
||||
"app.stopInstance.cancelLabel": "Seguir ejecutándose",
|
||||
|
||||
"emptyState.logoAlt": "Logo de CodeNomad",
|
||||
"emptyState.brandTitle": "CodeNomad",
|
||||
"emptyState.tagline": "Selecciona una carpeta para empezar a programar con IA",
|
||||
"emptyState.actions.selectFolder": "Seleccionar carpeta",
|
||||
"emptyState.actions.selecting": "Seleccionando...",
|
||||
"emptyState.keyboardShortcut": "Atajo de teclado: {shortcut}",
|
||||
"emptyState.examples": "Ejemplos: {example}",
|
||||
"emptyState.multipleInstances": "Puedes tener varias instancias de la misma carpeta",
|
||||
|
||||
"releases.upgradeRequired.title": "Actualización requerida",
|
||||
"releases.upgradeRequired.message.withVersion": "Actualiza a CodeNomad {version} para usar la UI más reciente.",
|
||||
"releases.upgradeRequired.message.noVersion": "Actualiza CodeNomad para usar la UI más reciente.",
|
||||
"releases.upgradeRequired.action.getUpdate": "Obtener actualización",
|
||||
} as const
|
||||
160
packages/ui/src/lib/i18n/messages/es/commands.ts
Normal file
160
packages/ui/src/lib/i18n/messages/es/commands.ts
Normal file
@@ -0,0 +1,160 @@
|
||||
export const commandMessages = {
|
||||
"commandPalette.title": "Paleta de comandos",
|
||||
"commandPalette.description": "Busca y ejecuta comandos",
|
||||
"commandPalette.searchPlaceholder": "Escribe un comando o busca...",
|
||||
"commandPalette.empty": "No se encontraron comandos para \"{query}\"",
|
||||
"commandPalette.category.customCommands": "Comandos personalizados",
|
||||
"commandPalette.category.instance": "Instancia",
|
||||
"commandPalette.category.session": "Sesión",
|
||||
"commandPalette.category.agentModel": "Agente y modelo",
|
||||
"commandPalette.category.inputFocus": "Entrada y foco",
|
||||
"commandPalette.category.system": "Sistema",
|
||||
"commandPalette.category.other": "Otro",
|
||||
|
||||
"commands.newInstance.label": "Nueva instancia",
|
||||
"commands.newInstance.description": "Abrir el selector de carpetas para crear una nueva instancia",
|
||||
"commands.newInstance.keywords": "carpeta, proyecto, workspace",
|
||||
|
||||
"commands.closeInstance.label": "Cerrar instancia",
|
||||
"commands.closeInstance.description": "Detener el servidor de la instancia actual",
|
||||
"commands.closeInstance.keywords": "detener, salir, cerrar",
|
||||
|
||||
"commands.nextInstance.label": "Siguiente instancia",
|
||||
"commands.nextInstance.description": "Cambiar a la siguiente pestaña de instancia",
|
||||
"commands.nextInstance.keywords": "cambiar, navegar",
|
||||
|
||||
"commands.previousInstance.label": "Instancia anterior",
|
||||
"commands.previousInstance.description": "Cambiar a la pestaña de instancia anterior",
|
||||
"commands.previousInstance.keywords": "cambiar, navegar",
|
||||
|
||||
"commands.newSession.label": "Nueva sesión",
|
||||
"commands.newSession.description": "Crear una nueva sesión principal",
|
||||
"commands.newSession.keywords": "crear, iniciar",
|
||||
|
||||
"commands.closeSession.label": "Cerrar sesión",
|
||||
"commands.closeSession.description": "Cerrar la sesión principal actual",
|
||||
"commands.closeSession.keywords": "cerrar, detener",
|
||||
|
||||
"commands.scrubSessions.label": "Depurar sesiones",
|
||||
"commands.scrubSessions.description": "Eliminar sesiones vacías, sesiones de subagente que ya completaron su tarea principal y sesiones bifurcadas innecesarias.",
|
||||
"commands.scrubSessions.keywords": "limpieza, blanco, vacías, sesiones, quitar, eliminar, depurar",
|
||||
|
||||
"commands.instanceInfo.label": "Info de la instancia",
|
||||
"commands.instanceInfo.description": "Abrir el resumen de la instancia para ver logs y estado",
|
||||
"commands.instanceInfo.keywords": "info, logs, consola, salida",
|
||||
|
||||
"commands.nextSession.label": "Siguiente sesión",
|
||||
"commands.nextSession.description": "Cambiar a la siguiente pestaña de sesión",
|
||||
"commands.nextSession.keywords": "cambiar, navegar",
|
||||
|
||||
"commands.previousSession.label": "Sesión anterior",
|
||||
"commands.previousSession.description": "Cambiar a la pestaña de sesión anterior",
|
||||
"commands.previousSession.keywords": "cambiar, navegar",
|
||||
|
||||
"commands.compactSession.label": "Compactar sesión",
|
||||
"commands.compactSession.description": "Resumir y compactar la sesión actual",
|
||||
"commands.compactSession.keywords": "resumir, comprimir",
|
||||
"commands.compactSession.errorFallback": "No se pudo compactar la sesión",
|
||||
"commands.compactSession.alert.title": "La compactación falló",
|
||||
"commands.compactSession.alert.message": "La compactación falló: {message}",
|
||||
|
||||
"commands.undoLastMessage.label": "Deshacer último mensaje",
|
||||
"commands.undoLastMessage.description": "Revertir el último mensaje",
|
||||
"commands.undoLastMessage.keywords": "revertir, deshacer",
|
||||
"commands.undoLastMessage.none.title": "No hay acciones para deshacer",
|
||||
"commands.undoLastMessage.none.message": "Nada que deshacer",
|
||||
"commands.undoLastMessage.failed.title": "No se pudo deshacer",
|
||||
"commands.undoLastMessage.failed.message": "No se pudo revertir el mensaje",
|
||||
|
||||
"commands.openModelSelector.label": "Abrir selector de modelo",
|
||||
"commands.openModelSelector.description": "Elegir un modelo diferente",
|
||||
"commands.openModelSelector.keywords": "modelo, llm, IA",
|
||||
|
||||
"commands.selectModelVariant.label": "Seleccionar variante del modelo",
|
||||
"commands.selectModelVariant.description": "Elegir un nivel de esfuerzo de pensamiento para el modelo actual",
|
||||
"commands.selectModelVariant.keywords": "variante, pensamiento, razonamiento, esfuerzo",
|
||||
|
||||
"commands.openAgentSelector.label": "Abrir selector de agente",
|
||||
"commands.openAgentSelector.description": "Elegir un agente diferente",
|
||||
"commands.openAgentSelector.keywords": "agente, modo",
|
||||
|
||||
"commands.clearInput.label": "Limpiar entrada",
|
||||
"commands.clearInput.description": "Borrar el área de texto del prompt",
|
||||
"commands.clearInput.keywords": "limpiar, reiniciar",
|
||||
|
||||
"commands.thinkingBlocks.label.show": "Mostrar bloques de pensamiento",
|
||||
"commands.thinkingBlocks.label.hide": "Ocultar bloques de pensamiento",
|
||||
"commands.thinkingBlocks.description": "Mostrar/ocultar el proceso de pensamiento de la IA",
|
||||
"commands.thinkingBlocks.keywords": "pensamiento, razonamiento, alternar, mostrar, ocultar",
|
||||
|
||||
"commands.timelineToolCalls.label.show": "Mostrar llamadas de herramienta en la línea de tiempo",
|
||||
"commands.timelineToolCalls.label.hide": "Ocultar llamadas de herramienta en la línea de tiempo",
|
||||
"commands.timelineToolCalls.description": "Alternar entradas de llamadas de herramienta en la línea de tiempo de mensajes",
|
||||
"commands.timelineToolCalls.keywords": "línea de tiempo, herramienta, alternar",
|
||||
|
||||
"commands.common.expanded": "Expandido",
|
||||
"commands.common.collapsed": "Colapsado",
|
||||
"commands.common.visible": "Visible",
|
||||
"commands.common.hidden": "Oculto",
|
||||
"commands.common.enabled": "Activado",
|
||||
"commands.common.disabled": "Desactivado",
|
||||
|
||||
"commands.thinkingBlocksDefault.label": "Bloques de pensamiento por defecto · {state}",
|
||||
"commands.thinkingBlocksDefault.description": "Alternar si los bloques de pensamiento empiezan expandidos",
|
||||
"commands.thinkingBlocksDefault.keywords": "pensamiento, razonamiento, expandir, colapsar, por defecto",
|
||||
|
||||
"commands.diffViewSplit.label": "Usar vista de diff dividida",
|
||||
"commands.diffViewSplit.description": "Mostrar diffs de llamadas de herramienta lado a lado",
|
||||
"commands.diffViewSplit.keywords": "diff, dividir, vista",
|
||||
|
||||
"commands.diffViewUnified.label": "Usar vista de diff unificada",
|
||||
"commands.diffViewUnified.description": "Mostrar diffs de llamadas de herramienta en línea",
|
||||
"commands.diffViewUnified.keywords": "diff, unificada, vista",
|
||||
|
||||
"commands.toolOutputsDefault.label": "Salidas de herramientas por defecto · {state}",
|
||||
"commands.toolOutputsDefault.description": "Alternar la expansión por defecto de las salidas de herramientas",
|
||||
"commands.toolOutputsDefault.keywords": "herramienta, salida, expandir, colapsar",
|
||||
|
||||
"commands.diagnosticsDefault.label": "Diagnósticos por defecto · {state}",
|
||||
"commands.diagnosticsDefault.description": "Alternar la expansión por defecto de la salida de diagnósticos",
|
||||
"commands.diagnosticsDefault.keywords": "diagnósticos, expandir, colapsar",
|
||||
|
||||
"commands.tokenUsageDisplay.label": "Mostrar uso de tokens · {state}",
|
||||
"commands.tokenUsageDisplay.description": "Mostrar u ocultar estadísticas de tokens y costo en los mensajes del asistente",
|
||||
"commands.tokenUsageDisplay.keywords": "token, uso, costo, estadísticas",
|
||||
|
||||
"commands.autoCleanupBlankSessions.label": "Auto-limpieza de sesiones vacías · {state}",
|
||||
"commands.autoCleanupBlankSessions.description": "Limpiar automáticamente las sesiones vacías al crear nuevas",
|
||||
"commands.autoCleanupBlankSessions.keywords": "auto, limpieza, vacías, sesiones, alternar",
|
||||
|
||||
"commands.showHelp.label": "Mostrar ayuda",
|
||||
"commands.showHelp.description": "Mostrar atajos de teclado y ayuda",
|
||||
"commands.showHelp.keywords": "atajos, ayuda",
|
||||
|
||||
"commands.custom.argumentsPrompt.message": "Argumentos para /{name}",
|
||||
"commands.custom.argumentsPrompt.title": "Comando personalizado",
|
||||
"commands.custom.argumentsPrompt.inputLabel": "Argumentos",
|
||||
"commands.custom.argumentsPrompt.inputPlaceholder": "p. ej. foo bar",
|
||||
"commands.custom.argumentsPrompt.confirmLabel": "Ejecutar",
|
||||
"commands.custom.argumentsPrompt.cancelLabel": "Cancelar",
|
||||
"commands.custom.argumentsPrompt.openFailed.message": "No se pudo abrir el diálogo de argumentos.",
|
||||
"commands.custom.argumentsPrompt.openFailed.title": "Argumentos del comando",
|
||||
"commands.custom.entries.descriptionFallback": "Comando personalizado",
|
||||
"commands.custom.sessionRequired.message": "Selecciona una sesión antes de ejecutar un comando personalizado.",
|
||||
"commands.custom.sessionRequired.title": "Se requiere sesión",
|
||||
"commands.custom.runFailed.message": "No se pudo ejecutar el comando personalizado. Revisa la consola para más detalles.",
|
||||
"commands.custom.runFailed.title": "El comando falló",
|
||||
|
||||
"unifiedPicker.loading.searching": "Buscando...",
|
||||
"unifiedPicker.loading.loadingWorkspace": "Cargando workspace...",
|
||||
"unifiedPicker.title.command": "Seleccionar comando",
|
||||
"unifiedPicker.title.mention": "Seleccionar agente o archivo",
|
||||
"unifiedPicker.empty": "No se encontraron resultados",
|
||||
"unifiedPicker.sections.commands": "COMANDOS",
|
||||
"unifiedPicker.sections.agents": "AGENTES",
|
||||
"unifiedPicker.sections.files": "ARCHIVOS",
|
||||
"unifiedPicker.badge.subagent": "subagente",
|
||||
"unifiedPicker.footer.navigate": "navegar",
|
||||
"unifiedPicker.footer.select": "seleccionar",
|
||||
"unifiedPicker.footer.close": "cerrar",
|
||||
} as const
|
||||
16
packages/ui/src/lib/i18n/messages/es/dialogs.ts
Normal file
16
packages/ui/src/lib/i18n/messages/es/dialogs.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
export const dialogMessages = {
|
||||
"alertDialog.fallbackTitle.info": "Aviso",
|
||||
"alertDialog.fallbackTitle.warning": "Por favor revisa",
|
||||
"alertDialog.fallbackTitle.error": "Algo salió mal",
|
||||
"alertDialog.actions.confirm": "Confirmar",
|
||||
"alertDialog.actions.run": "Ejecutar",
|
||||
"alertDialog.actions.ok": "OK",
|
||||
"alertDialog.actions.cancel": "Cancelar",
|
||||
"alertDialog.prompt.inputLabel": "Entrada",
|
||||
|
||||
"backgroundProcessOutputDialog.title": "Salida en segundo plano",
|
||||
"backgroundProcessOutputDialog.actions.close": "Cerrar",
|
||||
"backgroundProcessOutputDialog.loading": "Cargando salida...",
|
||||
"backgroundProcessOutputDialog.truncatedNotice": "Salida truncada para mostrar.",
|
||||
"backgroundProcessOutputDialog.loadErrorFallback": "No se pudo cargar la salida.",
|
||||
} as const
|
||||
43
packages/ui/src/lib/i18n/messages/es/filesystem.ts
Normal file
43
packages/ui/src/lib/i18n/messages/es/filesystem.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
export const filesystemMessages = {
|
||||
"directoryBrowser.defaultDescription": "Explora carpetas bajo la raíz del workspace configurado.",
|
||||
"directoryBrowser.close": "Cerrar",
|
||||
"directoryBrowser.currentFolder": "Carpeta actual",
|
||||
"directoryBrowser.selectCurrent": "Seleccionar actual",
|
||||
"directoryBrowser.newFolder": "Nueva carpeta",
|
||||
"directoryBrowser.creating": "Creando…",
|
||||
"directoryBrowser.loadingFolders": "Cargando carpetas…",
|
||||
"directoryBrowser.noFolders": "No hay carpetas disponibles.",
|
||||
"directoryBrowser.upOneLevel": "Subir un nivel",
|
||||
"directoryBrowser.select": "Seleccionar",
|
||||
"directoryBrowser.load.errorFallback": "No se pudo cargar el sistema de archivos",
|
||||
"directoryBrowser.createFolder.promptMessage": "Crea una nueva carpeta en el directorio actual.",
|
||||
"directoryBrowser.createFolder.title": "Nueva carpeta",
|
||||
"directoryBrowser.createFolder.inputLabel": "Nombre de la carpeta",
|
||||
"directoryBrowser.createFolder.inputPlaceholder": "p. ej. mi-nuevo-proyecto",
|
||||
"directoryBrowser.createFolder.confirmLabel": "Crear",
|
||||
"directoryBrowser.createFolder.cancelLabel": "Cancelar",
|
||||
"directoryBrowser.createFolder.invalidNameMessage": "Introduce un único nombre de carpeta.",
|
||||
"directoryBrowser.createFolder.invalidNameDetail": "Los nombres de carpeta no pueden incluir barras, '..' ni '~'.",
|
||||
"directoryBrowser.createFolder.errorFallback": "No se pudo crear la carpeta",
|
||||
|
||||
"filesystemBrowser.descriptionFallback": "Busca una ruta bajo la raíz del workspace configurado.",
|
||||
"filesystemBrowser.rootLabel": "Raíz: {root}",
|
||||
"filesystemBrowser.actions.close": "Cerrar",
|
||||
"filesystemBrowser.actions.retry": "Reintentar",
|
||||
"filesystemBrowser.actions.select": "Seleccionar",
|
||||
"filesystemBrowser.filterLabel": "Filtro",
|
||||
"filesystemBrowser.search.placeholder.directories": "Buscar carpetas",
|
||||
"filesystemBrowser.search.placeholder.files": "Buscar archivos",
|
||||
"filesystemBrowser.currentFolder.label": "Carpeta actual",
|
||||
"filesystemBrowser.currentFolder.selectCurrent": "Seleccionar actual",
|
||||
"filesystemBrowser.loading.filesystem": "sistema de archivos",
|
||||
"filesystemBrowser.loading.workspaceRoot": "raíz del workspace",
|
||||
"filesystemBrowser.loading.loadingWithPath": "Cargando {path}…",
|
||||
"filesystemBrowser.empty.noEntries": "No se encontraron elementos.",
|
||||
"filesystemBrowser.navigation.upOneLevel": "Subir un nivel",
|
||||
"filesystemBrowser.hints.navigate": "Navegar",
|
||||
"filesystemBrowser.hints.select": "Seleccionar",
|
||||
"filesystemBrowser.hints.close": "Cerrar",
|
||||
"filesystemBrowser.errors.loadFilesystemFallback": "No se pudo cargar el sistema de archivos",
|
||||
"filesystemBrowser.errors.openDirectoryFallback": "No se pudo abrir el directorio",
|
||||
} as const
|
||||
34
packages/ui/src/lib/i18n/messages/es/folderSelection.ts
Normal file
34
packages/ui/src/lib/i18n/messages/es/folderSelection.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
export const folderSelectionMessages = {
|
||||
"folderSelection.logoAlt": "Logo de CodeNomad",
|
||||
"folderSelection.tagline": "Selecciona una carpeta para empezar a programar con IA",
|
||||
|
||||
"folderSelection.links.github": "GitHub de CodeNomad",
|
||||
"folderSelection.links.githubStars": "Estrellas de CodeNomad en GitHub",
|
||||
"folderSelection.links.discord": "Discord de CodeNomad",
|
||||
|
||||
"folderSelection.empty.title": "No hay carpetas recientes",
|
||||
"folderSelection.empty.description": "Explora una carpeta para comenzar",
|
||||
|
||||
"folderSelection.recent.title": "Carpetas recientes",
|
||||
"folderSelection.recent.subtitle.one": "{count} carpeta disponible",
|
||||
"folderSelection.recent.subtitle.other": "{count} carpetas disponibles",
|
||||
"folderSelection.recent.remove": "Quitar de recientes",
|
||||
|
||||
"folderSelection.browse.title": "Explorar carpetas",
|
||||
"folderSelection.browse.subtitle": "Selecciona cualquier carpeta en tu ordenador",
|
||||
"folderSelection.browse.button": "Explorar carpetas",
|
||||
"folderSelection.browse.buttonOpening": "Abriendo...",
|
||||
|
||||
"folderSelection.advancedSettings": "Configuración avanzada",
|
||||
|
||||
"folderSelection.hints.navigate": "Navegar",
|
||||
"folderSelection.hints.select": "Seleccionar",
|
||||
"folderSelection.hints.remove": "Quitar",
|
||||
"folderSelection.hints.browse": "Explorar",
|
||||
|
||||
"folderSelection.loading.title": "Iniciando instancia...",
|
||||
"folderSelection.loading.subtitle": "Espera un momento mientras preparamos tu workspace.",
|
||||
|
||||
"folderSelection.dialog.title": "Seleccionar workspace",
|
||||
"folderSelection.dialog.description": "Selecciona un workspace para empezar a programar.",
|
||||
} as const
|
||||
36
packages/ui/src/lib/i18n/messages/es/index.ts
Normal file
36
packages/ui/src/lib/i18n/messages/es/index.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import { advancedSettingsMessages } from "./advancedSettings"
|
||||
import { appMessages } from "./app"
|
||||
import { commandMessages } from "./commands"
|
||||
import { dialogMessages } from "./dialogs"
|
||||
import { filesystemMessages } from "./filesystem"
|
||||
import { folderSelectionMessages } from "./folderSelection"
|
||||
import { instanceMessages } from "./instance"
|
||||
import { loadingScreenMessages } from "./loadingScreen"
|
||||
import { logMessages } from "./logs"
|
||||
import { markdownMessages } from "./markdown"
|
||||
import { messagingMessages } from "./messaging"
|
||||
import { remoteAccessMessages } from "./remoteAccess"
|
||||
import { sessionMessages } from "./session"
|
||||
import { settingsMessages } from "./settings"
|
||||
import { timeMessages } from "./time"
|
||||
import { toolCallMessages } from "./toolCall"
|
||||
import { mergeMessageParts } from "../merge"
|
||||
|
||||
export const esMessages = mergeMessageParts(
|
||||
folderSelectionMessages,
|
||||
advancedSettingsMessages,
|
||||
loadingScreenMessages,
|
||||
timeMessages,
|
||||
appMessages,
|
||||
dialogMessages,
|
||||
filesystemMessages,
|
||||
instanceMessages,
|
||||
logMessages,
|
||||
sessionMessages,
|
||||
messagingMessages,
|
||||
toolCallMessages,
|
||||
markdownMessages,
|
||||
settingsMessages,
|
||||
remoteAccessMessages,
|
||||
commandMessages,
|
||||
)
|
||||
125
packages/ui/src/lib/i18n/messages/es/instance.ts
Normal file
125
packages/ui/src/lib/i18n/messages/es/instance.ts
Normal file
@@ -0,0 +1,125 @@
|
||||
export const instanceMessages = {
|
||||
"instanceTabs.new.title": "Nueva instancia (Cmd/Ctrl+N)",
|
||||
"instanceTabs.new.ariaLabel": "Nueva instancia",
|
||||
"instanceTabs.remote.title": "Conexión remota",
|
||||
"instanceTabs.remote.ariaLabel": "Conexión remota",
|
||||
|
||||
"instanceInfo.title": "Información de la instancia",
|
||||
"instanceInfo.labels.folder": "Carpeta",
|
||||
"instanceInfo.labels.project": "Proyecto",
|
||||
"instanceInfo.labels.versionControl": "Control de versiones",
|
||||
"instanceInfo.labels.opencodeVersion": "Versión de OpenCode",
|
||||
"instanceInfo.labels.binaryPath": "Ruta del binario",
|
||||
"instanceInfo.labels.environmentVariables": "Variables de entorno ({count})",
|
||||
"instanceInfo.loading": "Cargando...",
|
||||
"instanceInfo.server.title": "Servidor",
|
||||
"instanceInfo.server.port": "Puerto:",
|
||||
"instanceInfo.server.pid": "PID:",
|
||||
"instanceInfo.server.status": "Estado:",
|
||||
|
||||
"instanceTab.status.permission": "Esperando permiso",
|
||||
"instanceTab.status.compacting": "Compactando",
|
||||
"instanceTab.status.working": "Trabajando",
|
||||
"instanceTab.status.idle": "Inactiva",
|
||||
"instanceTab.status.ariaLabel": "Estado de la instancia: {status}",
|
||||
"instanceTab.actions.close.ariaLabel": "Cerrar instancia",
|
||||
|
||||
"instanceShell.leftPanel.sessionsTitle": "Sesiones",
|
||||
"instanceShell.leftPanel.instanceInfo": "Info de la instancia",
|
||||
|
||||
"instanceShell.leftDrawer.pin": "Fijar panel izquierdo",
|
||||
"instanceShell.leftDrawer.unpin": "Desfijar panel izquierdo",
|
||||
"instanceShell.leftDrawer.toggle.pinned": "Panel izquierdo fijado",
|
||||
"instanceShell.leftDrawer.toggle.open": "Abrir panel izquierdo",
|
||||
"instanceShell.leftDrawer.toggle.close": "Cerrar panel izquierdo",
|
||||
|
||||
"instanceShell.rightDrawer.pin": "Fijar panel derecho",
|
||||
"instanceShell.rightDrawer.unpin": "Desfijar panel derecho",
|
||||
"instanceShell.rightDrawer.toggle.pinned": "Panel derecho fijado",
|
||||
"instanceShell.rightDrawer.toggle.open": "Abrir panel derecho",
|
||||
"instanceShell.rightDrawer.toggle.close": "Cerrar panel derecho",
|
||||
|
||||
"instanceShell.metrics.usedLabel": "Usado",
|
||||
"instanceShell.metrics.availableLabel": "Disp.",
|
||||
|
||||
"instanceShell.commandPalette.openAriaLabel": "Abrir paleta de comandos",
|
||||
"instanceShell.commandPalette.button": "Paleta de comandos",
|
||||
|
||||
"instanceShell.connection.ariaLabel": "Connection {status}",
|
||||
"instanceShell.connection.connected": "Conectada",
|
||||
"instanceShell.connection.connecting": "Conectando...",
|
||||
"instanceShell.connection.disconnected": "Desconectada",
|
||||
"instanceShell.connection.unknown": "Desconocida",
|
||||
|
||||
"instanceWelcome.shortcuts.newSession": "Nueva sesión",
|
||||
"instanceWelcome.empty.title": "No hay sesiones anteriores",
|
||||
"instanceWelcome.empty.description": "Crea una nueva sesión abajo para comenzar",
|
||||
"instanceWelcome.loading.title": "Cargando sesiones",
|
||||
"instanceWelcome.loading.description": "Obteniendo tus sesiones anteriores...",
|
||||
"instanceWelcome.resume.title": "Reanudar sesión",
|
||||
"instanceWelcome.resume.subtitle.one": "{count} sesión disponible",
|
||||
"instanceWelcome.resume.subtitle.other": "{count} sesiones disponibles",
|
||||
"instanceWelcome.session.untitled": "Sesión sin título",
|
||||
"instanceWelcome.new.title": "Iniciar nueva sesión",
|
||||
"instanceWelcome.new.subtitle": "Reutilizaremos tu último agente/modelo automáticamente",
|
||||
"instanceWelcome.new.createButton": "Crear sesión",
|
||||
"instanceWelcome.overlay.close": "Cerrar",
|
||||
"instanceWelcome.actions.viewInstanceInfo": "Ver info de la instancia",
|
||||
"instanceWelcome.actions.renameTitle": "Renombrar sesión",
|
||||
"instanceWelcome.actions.deleteTitle": "Eliminar sesión",
|
||||
"instanceWelcome.hints.navigate": "Navegar",
|
||||
"instanceWelcome.hints.jump": "Saltar",
|
||||
"instanceWelcome.hints.firstLast": "Primero/Último",
|
||||
"instanceWelcome.hints.resume": "Reanudar",
|
||||
"instanceWelcome.hints.delete": "Eliminar",
|
||||
"instanceWelcome.toasts.renameError": "No se pudo renombrar la sesión",
|
||||
|
||||
"instanceDisconnected.title": "Instancia desconectada",
|
||||
"instanceDisconnected.folderFallback": "este workspace",
|
||||
"instanceDisconnected.reasonFallback": "El servidor dejó de responder",
|
||||
"instanceDisconnected.description": "{folder} ya no se puede alcanzar. Cierra la pestaña para seguir trabajando.",
|
||||
"instanceDisconnected.details.title": "Detalles",
|
||||
"instanceDisconnected.details.folderLabel": "Carpeta:",
|
||||
"instanceDisconnected.actions.closeInstance": "Cerrar instancia",
|
||||
|
||||
"instanceShell.empty.title": "No hay sesión seleccionada",
|
||||
"instanceShell.empty.description": "Selecciona una sesión para ver mensajes",
|
||||
|
||||
"instanceShell.rightPanel.title": "Panel de estado",
|
||||
"instanceShell.rightPanel.sections.plan": "Plan",
|
||||
"instanceShell.rightPanel.sections.backgroundProcesses": "Shells en segundo plano",
|
||||
"instanceShell.rightPanel.sections.mcp": "Servidores MCP",
|
||||
"instanceShell.rightPanel.sections.lsp": "Servidores LSP",
|
||||
"instanceShell.rightPanel.sections.plugins": "Plugins",
|
||||
|
||||
"instanceShell.plan.noSessionSelected": "Selecciona una sesión para ver el plan.",
|
||||
"instanceShell.plan.empty": "Aún no hay nada planificado.",
|
||||
|
||||
"instanceShell.backgroundProcesses.empty": "No hay procesos en segundo plano.",
|
||||
"instanceShell.backgroundProcesses.status": "Estado: {status}",
|
||||
"instanceShell.backgroundProcesses.output": "Salida: {sizeKb} KB",
|
||||
"instanceShell.backgroundProcesses.actions.output": "Salida",
|
||||
"instanceShell.backgroundProcesses.actions.stop": "Detener",
|
||||
"instanceShell.backgroundProcesses.actions.terminate": "Terminar",
|
||||
|
||||
"versionPill.appWithVersion": "App {version}",
|
||||
"versionPill.ui": "UI",
|
||||
"versionPill.uiWithVersion": "UI {version}",
|
||||
"versionPill.source": " ({source})",
|
||||
|
||||
"opencodeBinarySelector.title": "Binario de OpenCode",
|
||||
"opencodeBinarySelector.subtitle": "Elige qué ejecutable de OpenCode debe ejecutarse",
|
||||
"opencodeBinarySelector.customPath.placeholder": "Introduce la ruta al binario de opencode…",
|
||||
"opencodeBinarySelector.actions.add": "Agregar",
|
||||
"opencodeBinarySelector.actions.browse": "Explorar binario…",
|
||||
"opencodeBinarySelector.actions.removeTitle": "Quitar binario",
|
||||
"opencodeBinarySelector.badge.systemPath": "Usar binario del PATH del sistema",
|
||||
"opencodeBinarySelector.status.checkingVersions": "Comprobando versiones…",
|
||||
"opencodeBinarySelector.status.checking": "Comprobando…",
|
||||
"opencodeBinarySelector.dialog.title": "Seleccionar binario de OpenCode",
|
||||
"opencodeBinarySelector.dialog.description": "Explora los archivos expuestos por el servidor del CLI.",
|
||||
"opencodeBinarySelector.validation.invalidBinary": "Binario de OpenCode no válido",
|
||||
"opencodeBinarySelector.validation.alreadyValidating": "Ya se está validando",
|
||||
"opencodeBinarySelector.display.systemPath": "{name} (PATH del sistema)",
|
||||
"opencodeBinarySelector.versionLabel": "v{version}",
|
||||
} as const
|
||||
17
packages/ui/src/lib/i18n/messages/es/loadingScreen.ts
Normal file
17
packages/ui/src/lib/i18n/messages/es/loadingScreen.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
export const loadingScreenMessages = {
|
||||
"loadingScreen.logoAlt": "Logo de CodeNomad",
|
||||
"loadingScreen.status.issue": "Se produjo un problema",
|
||||
"loadingScreen.actions.showAnother": "Mostrar otra",
|
||||
"loadingScreen.errors.missingRoot": "No se encontró el elemento raíz de carga",
|
||||
|
||||
"loadingScreen.phrases.neurons": "Calentando las neuronas de la IA…",
|
||||
"loadingScreen.phrases.daydreaming": "Convenciendo a la IA de dejar de soñar despierta…",
|
||||
"loadingScreen.phrases.goggles": "Puliendo las gafas de código de la IA…",
|
||||
"loadingScreen.phrases.reorganizingFiles": "Pidiéndole a la IA que deje de reorganizar tus archivos…",
|
||||
"loadingScreen.phrases.coffee": "Dándole más café a la IA…",
|
||||
"loadingScreen.phrases.nodeModules": "Enseñándole a la IA a no borrar node_modules (otra vez)…",
|
||||
"loadingScreen.phrases.actNatural": "Diciéndole a la IA que actúe natural antes de que llegues…",
|
||||
"loadingScreen.phrases.rewritingHistory": "Pidiéndole a la IA que deje de reescribir la historia…",
|
||||
"loadingScreen.phrases.stretch": "Dejando que la IA se estire antes de su sprint de código…",
|
||||
"loadingScreen.phrases.keyboardControl": "Convenciendo a la IA de devolverte el control del teclado…",
|
||||
} as const
|
||||
18
packages/ui/src/lib/i18n/messages/es/logs.ts
Normal file
18
packages/ui/src/lib/i18n/messages/es/logs.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
export const logMessages = {
|
||||
"logsView.title": "Registros del servidor",
|
||||
"logsView.actions.show": "Mostrar registros del servidor",
|
||||
"logsView.actions.hide": "Ocultar registros del servidor",
|
||||
"logsView.envVars.title": "Variables de entorno ({count})",
|
||||
"logsView.paused.title": "Los registros del servidor están en pausa",
|
||||
"logsView.paused.description": "Activa el streaming para ver la actividad de tu servidor de OpenCode.",
|
||||
"logsView.empty.waiting": "Esperando la salida del servidor...",
|
||||
"logsView.scrollToBottom": "Desplazarse al final",
|
||||
|
||||
"infoView.logs.title": "Registros del servidor",
|
||||
"infoView.logs.actions.show": "Mostrar registros del servidor",
|
||||
"infoView.logs.actions.hide": "Ocultar registros del servidor",
|
||||
"infoView.logs.paused.title": "Los registros del servidor están en pausa",
|
||||
"infoView.logs.paused.description": "Activa el streaming para ver la actividad de tu servidor de OpenCode.",
|
||||
"infoView.logs.empty.waiting": "Esperando la salida del servidor...",
|
||||
"infoView.logs.scrollToBottom": "Desplazarse al final",
|
||||
} as const
|
||||
7
packages/ui/src/lib/i18n/messages/es/markdown.ts
Normal file
7
packages/ui/src/lib/i18n/messages/es/markdown.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
export const markdownMessages = {
|
||||
"markdown.codeBlock.copy.label": "Copiar",
|
||||
"markdown.codeBlock.copy.copied": "¡Copiado!",
|
||||
"markdown.codeBlock.copy.failed": "Error",
|
||||
|
||||
"markdown.copy": "Copiar",
|
||||
} as const
|
||||
109
packages/ui/src/lib/i18n/messages/es/messaging.ts
Normal file
109
packages/ui/src/lib/i18n/messages/es/messaging.ts
Normal file
@@ -0,0 +1,109 @@
|
||||
export const messagingMessages = {
|
||||
"messageListHeader.sidebar.openSessionListAriaLabel": "Abrir lista de sesiones",
|
||||
"messageListHeader.metrics.usedLabel": "Usado",
|
||||
"messageListHeader.metrics.availableLabel": "Disp.",
|
||||
"messageListHeader.commandPalette.ariaLabel": "Abrir paleta de comandos",
|
||||
"messageListHeader.commandPalette.button": "Paleta de comandos",
|
||||
"messageListHeader.connection.connected": "Conectado",
|
||||
"messageListHeader.connection.connecting": "Conectando...",
|
||||
"messageListHeader.connection.disconnected": "Desconectado",
|
||||
|
||||
"messageSection.empty.logoAlt": "Logo de CodeNomad",
|
||||
"messageSection.empty.brandTitle": "CodeNomad",
|
||||
"messageSection.empty.title": "Inicia una conversación",
|
||||
"messageSection.empty.description": "Escribe un mensaje abajo o abre la Paleta de comandos:",
|
||||
"messageSection.empty.tips.commandPalette": "Paleta de comandos",
|
||||
"messageSection.empty.tips.askAboutCodebase": "Pregunta sobre tu codebase",
|
||||
"messageSection.empty.tips.attachFilesPrefix": "Adjunta archivos con",
|
||||
"messageSection.loading.messages": "Cargando mensajes...",
|
||||
"messageSection.scroll.toFirstAriaLabel": "Desplazarse al primer mensaje",
|
||||
"messageSection.scroll.toLatestAriaLabel": "Desplazarse al último mensaje",
|
||||
"messageSection.quote.addAsQuote": "Añadir como cita",
|
||||
"messageSection.quote.addAsCode": "Añadir como código",
|
||||
|
||||
"messageTimeline.ariaLabel": "Línea de tiempo de mensajes",
|
||||
"messageTimeline.segment.user.label": "Tú",
|
||||
"messageTimeline.segment.assistant.label": "Asist.",
|
||||
"messageTimeline.segment.compaction.label": "Compactación",
|
||||
"messageTimeline.tool.fallbackLabel": "Llamada de herramienta",
|
||||
"messageTimeline.tooltip.userFallback": "Mensaje del usuario",
|
||||
"messageTimeline.tooltip.assistantFallback": "Respuesta del asistente",
|
||||
"messageTimeline.tooltip.compaction.auto": "Compactación automática",
|
||||
"messageTimeline.tooltip.compaction.manual": "Compactación manual",
|
||||
"messageTimeline.text.filePrefix": "[Archivo] {filename}",
|
||||
"messageTimeline.text.attachment": "Adjunto",
|
||||
|
||||
"messageBlock.tool.header": "Llamada de herramienta",
|
||||
"messageBlock.tool.unknown": "desconocido",
|
||||
"messageBlock.tool.goToSession.label": "Ir a sesión",
|
||||
"messageBlock.tool.goToSession.title": "Ir a la sesión",
|
||||
"messageBlock.tool.goToSession.unavailableTitle": "La sesión aún no está disponible",
|
||||
|
||||
"messageBlock.compaction.ariaLabel": "Compactación de sesión",
|
||||
"messageBlock.compaction.autoLabel": "Sesión compactada automáticamente",
|
||||
"messageBlock.compaction.manualLabel": "Sesión compactada por ti",
|
||||
"messageBlock.usage.input": "Entrada",
|
||||
"messageBlock.usage.output": "Salida",
|
||||
"messageBlock.usage.reasoning": "Razonamiento",
|
||||
"messageBlock.usage.cacheRead": "Lectura de cache",
|
||||
"messageBlock.usage.cacheWrite": "Escritura de cache",
|
||||
"messageBlock.usage.cost": "Costo",
|
||||
"messageBlock.step.agentLabel": "Agente: {agent}",
|
||||
"messageBlock.step.modelLabel": "Modelo: {model}",
|
||||
"messageBlock.reasoning.thinkingLabel": "Pensamiento",
|
||||
"messageBlock.reasoning.expandAriaLabel": "Expandir pensamiento",
|
||||
"messageBlock.reasoning.collapseAriaLabel": "Colapsar pensamiento",
|
||||
"messageBlock.reasoning.indicator.hide": "Ocultar",
|
||||
"messageBlock.reasoning.indicator.view": "Ver",
|
||||
"messageBlock.reasoning.detailsAriaLabel": "Detalles del razonamiento",
|
||||
|
||||
"codeBlockInline.actions.copy": "Copiar",
|
||||
"codeBlockInline.actions.copied": "¡Copiado!",
|
||||
|
||||
"messageItem.speaker.you": "Tú",
|
||||
"messageItem.speaker.assistant": "Asistente",
|
||||
"messageItem.actions.revert": "Revertir",
|
||||
"messageItem.actions.revertTitle": "Revertir a este mensaje",
|
||||
"messageItem.actions.fork": "Fork",
|
||||
"messageItem.actions.forkTitle": "Fork desde este mensaje",
|
||||
"messageItem.actions.copy": "Copiar",
|
||||
"messageItem.actions.copyTitle": "Copiar mensaje",
|
||||
"messageItem.actions.copied": "¡Copiado!",
|
||||
"messageItem.status.queued": "EN COLA",
|
||||
"messageItem.status.generating": "Generando...",
|
||||
"messageItem.status.sending": "Enviando...",
|
||||
"messageItem.status.failedToSend": "No se pudo enviar el mensaje",
|
||||
"messageItem.attachment.defaultName": "adjunto",
|
||||
"messageItem.attachment.downloadAriaLabel": "Descargar {name}",
|
||||
"messageItem.agentMeta.agentLabel": "Agente: {agent}",
|
||||
"messageItem.agentMeta.modelLabel": "Modelo: {model}",
|
||||
"messageItem.errors.authenticationFallback": "Error de autenticación",
|
||||
"messageItem.errors.outputLengthExceeded": "Se excedió la longitud de salida del mensaje",
|
||||
"messageItem.errors.requestAborted": "La solicitud fue abortada",
|
||||
"messageItem.errors.unknownFallback": "Se produjo un error desconocido",
|
||||
|
||||
"attachmentChip.removeAriaLabel": "Quitar adjunto",
|
||||
|
||||
"expandButton.toggleAriaLabel": "Alternar altura de entrada del chat",
|
||||
|
||||
"promptInput.placeholder.shell": "Ejecuta un comando de shell (Esc para salir)...",
|
||||
"promptInput.placeholder.default": "Escribe tu mensaje, @file, @agent, o pega imágenes y texto...",
|
||||
"promptInput.hints.shell.exit": "para salir del modo shell",
|
||||
"promptInput.hints.shell.enable": "Modo shell",
|
||||
"promptInput.hints.commands": "Comandos",
|
||||
"promptInput.history.previousAriaLabel": "Prompt anterior",
|
||||
"promptInput.history.nextAriaLabel": "Siguiente prompt",
|
||||
"promptInput.overlay.newLine": "Nueva línea",
|
||||
"promptInput.overlay.send": "Enviar",
|
||||
"promptInput.overlay.filesAgents": "Archivos/agentes",
|
||||
"promptInput.overlay.history": "Historial",
|
||||
"promptInput.overlay.attachments": "• {count} archivo(s) adjunto(s)",
|
||||
"promptInput.overlay.shellModeActive": "Modo shell activo",
|
||||
"promptInput.overlay.press": "Pulsa",
|
||||
"promptInput.overlay.againToAbort": "otra vez para abortar la sesión",
|
||||
"promptInput.stopSession.ariaLabel": "Detener sesión",
|
||||
"promptInput.stopSession.title": "Detener sesión",
|
||||
"promptInput.send.ariaLabel": "Enviar mensaje",
|
||||
"promptInput.send.errorFallback": "No se pudo enviar el mensaje",
|
||||
"promptInput.send.errorTitle": "Error al enviar",
|
||||
} as const
|
||||
51
packages/ui/src/lib/i18n/messages/es/remoteAccess.ts
Normal file
51
packages/ui/src/lib/i18n/messages/es/remoteAccess.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
export const remoteAccessMessages = {
|
||||
"remoteAccess.eyebrow": "Transferencia remota",
|
||||
"remoteAccess.title": "Conectar a CodeNomad de forma remota",
|
||||
"remoteAccess.subtitle": "Usa las direcciones de abajo para abrir CodeNomad desde otro dispositivo.",
|
||||
"remoteAccess.close": "Cerrar acceso remoto",
|
||||
"remoteAccess.refresh": "Actualizar",
|
||||
|
||||
"remoteAccess.sections.listeningMode.label": "Modo de escucha",
|
||||
"remoteAccess.sections.listeningMode.help": "Permite o limita las transferencias remotas vinculando a todas las interfaces o solo a localhost.",
|
||||
"remoteAccess.toggle.on": "Activado",
|
||||
"remoteAccess.toggle.off": "Desactivado",
|
||||
"remoteAccess.toggle.title": "Permitir conexiones desde otras IP",
|
||||
"remoteAccess.toggle.caption.all": "Vinculado a 0.0.0.0",
|
||||
"remoteAccess.toggle.caption.local": "Vinculado a 127.0.0.1",
|
||||
"remoteAccess.toggle.note": "Cambiar esto requiere reiniciar y detiene temporalmente todas las instancias activas. Comparte las direcciones de abajo una vez que el servidor se reinicie.",
|
||||
"remoteAccess.listeningMode.restartConfirm.message": "¿Reiniciar para aplicar el modo de escucha? Esto detendrá todas las instancias en ejecución.",
|
||||
"remoteAccess.listeningMode.restartConfirm.title.all": "Abrir a otros dispositivos",
|
||||
"remoteAccess.listeningMode.restartConfirm.title.local": "Limitar a este dispositivo",
|
||||
"remoteAccess.listeningMode.restartConfirm.confirmLabel": "Reiniciar ahora",
|
||||
"remoteAccess.listeningMode.restartConfirm.cancelLabel": "Cancelar",
|
||||
"remoteAccess.restart.errorManual": "No se pudo reiniciar automáticamente. Reinicia la app para aplicar el cambio.",
|
||||
|
||||
"remoteAccess.sections.serverPassword.label": "Contraseña del servidor",
|
||||
"remoteAccess.sections.serverPassword.help": "Las transferencias remotas requieren una contraseña. Define una fácil de recordar para habilitar inicios de sesión desde otros dispositivos.",
|
||||
"remoteAccess.authStatus.unavailable": "Estado de autenticación no disponible.",
|
||||
"remoteAccess.username": "Usuario: {username}",
|
||||
"remoteAccess.password.status.set": "Hay una contraseña configurada para el acceso remoto.",
|
||||
"remoteAccess.password.status.unset": "Aún no hay una contraseña fácil de recordar. Configura una para permitir inicios de sesión por transferencia remota.",
|
||||
"remoteAccess.password.actions.cancel": "Cancelar",
|
||||
"remoteAccess.password.actions.change": "Cambiar contraseña",
|
||||
"remoteAccess.password.actions.set": "Configurar contraseña",
|
||||
"remoteAccess.password.form.newPassword": "Nueva contraseña",
|
||||
"remoteAccess.password.form.confirmPassword": "Confirmar contraseña",
|
||||
"remoteAccess.password.form.placeholder": "Al menos 8 caracteres",
|
||||
"remoteAccess.password.error.tooShort": "La contraseña debe tener al menos 8 caracteres.",
|
||||
"remoteAccess.password.error.mismatch": "Las contraseñas no coinciden.",
|
||||
"remoteAccess.password.save.saving": "Guardando…",
|
||||
"remoteAccess.password.save.label": "Guardar contraseña",
|
||||
|
||||
"remoteAccess.sections.addresses.label": "Direcciones accesibles",
|
||||
"remoteAccess.sections.addresses.help": "Abre o escanea desde otra máquina para transferir el control.",
|
||||
"remoteAccess.addresses.loading": "Cargando direcciones…",
|
||||
"remoteAccess.addresses.none": "Aún no hay direcciones disponibles.",
|
||||
"remoteAccess.address.scope.network": "Red",
|
||||
"remoteAccess.address.scope.loopback": "Loopback",
|
||||
"remoteAccess.address.scope.internal": "Interna",
|
||||
"remoteAccess.address.open": "Abrir",
|
||||
"remoteAccess.address.showQr": "Mostrar QR",
|
||||
"remoteAccess.address.hideQr": "Ocultar QR",
|
||||
"remoteAccess.address.qrAlt": "QR para {url}",
|
||||
} as const
|
||||
67
packages/ui/src/lib/i18n/messages/es/session.ts
Normal file
67
packages/ui/src/lib/i18n/messages/es/session.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
export const sessionMessages = {
|
||||
"sessionPicker.title": "OpenCode • {folder}",
|
||||
"sessionPicker.empty.noPrevious": "No hay sesiones anteriores",
|
||||
"sessionPicker.resume.title": "Reanudar una sesión ({count}):",
|
||||
"sessionPicker.session.untitled": "Sin título",
|
||||
"sessionPicker.divider.or": "o",
|
||||
"sessionPicker.new.title": "Iniciar nueva sesión:",
|
||||
"sessionPicker.agents.loading": "Cargando agentes...",
|
||||
"sessionPicker.actions.creating": "Creando...",
|
||||
"sessionPicker.actions.createSession": "Crear sesión",
|
||||
"sessionPicker.actions.cancel": "Cancelar",
|
||||
|
||||
"sessionList.header.title": "Sesiones",
|
||||
"sessionList.session.untitled": "Sin título",
|
||||
"sessionList.status.working": "Trabajando",
|
||||
"sessionList.status.compacting": "Compactando",
|
||||
"sessionList.status.idle": "Inactiva",
|
||||
"sessionList.status.needsPermission": "Requiere permiso",
|
||||
"sessionList.status.needsInput": "Requiere entrada",
|
||||
"sessionList.expand.collapseAriaLabel": "Colapsar sesión",
|
||||
"sessionList.expand.expandAriaLabel": "Expandir sesión",
|
||||
"sessionList.expand.collapseTitle": "Colapsar",
|
||||
"sessionList.expand.expandTitle": "Expandir",
|
||||
"sessionList.actions.copyId.ariaLabel": "Copiar ID de sesión",
|
||||
"sessionList.actions.copyId.title": "Copiar ID de sesión",
|
||||
"sessionList.actions.rename.ariaLabel": "Renombrar sesión",
|
||||
"sessionList.actions.rename.title": "Renombrar sesión",
|
||||
"sessionList.actions.delete.ariaLabel": "Eliminar sesión",
|
||||
"sessionList.actions.delete.title": "Eliminar sesión",
|
||||
"sessionList.copyId.success": "ID de sesión copiado",
|
||||
"sessionList.copyId.error": "No se pudo copiar el ID de sesión",
|
||||
"sessionList.delete.error": "No se pudo eliminar la sesión",
|
||||
"sessionList.rename.error": "No se pudo renombrar la sesión",
|
||||
|
||||
"sessionRenameDialog.title": "Renombrar sesión",
|
||||
"sessionRenameDialog.description.withLabel": "Actualiza el título de \"{label}\".",
|
||||
"sessionRenameDialog.description.default": "Establece un nuevo título para esta sesión.",
|
||||
"sessionRenameDialog.input.label": "Nombre de la sesión",
|
||||
"sessionRenameDialog.input.placeholder": "Introduce un nombre de sesión",
|
||||
"sessionRenameDialog.actions.cancel": "Cancelar",
|
||||
"sessionRenameDialog.actions.rename": "Renombrar",
|
||||
"sessionRenameDialog.actions.renaming": "Renombrando…",
|
||||
|
||||
"sessionView.fallback.sessionNotFound": "No se encontró la sesión",
|
||||
"sessionView.alerts.abortFailed.message": "No se pudo detener la sesión",
|
||||
"sessionView.alerts.abortFailed.title": "No se pudo detener",
|
||||
"sessionView.alerts.revertFailed.message": "No se pudo revertir al mensaje",
|
||||
"sessionView.alerts.revertFailed.title": "No se pudo revertir",
|
||||
"sessionView.alerts.forkFailed.message": "No se pudo hacer fork de la sesión",
|
||||
"sessionView.alerts.forkFailed.title": "No se pudo hacer fork",
|
||||
"sessionView.attachments.expandPastedTextAriaLabel": "Expandir texto pegado",
|
||||
"sessionView.attachments.insertPastedTextTitle": "Insertar texto pegado",
|
||||
"sessionView.attachments.removeAriaLabel": "Quitar adjunto",
|
||||
|
||||
"sessionEvents.sessionCompactedToast": "La sesión {label} fue compactada",
|
||||
"sessionEvents.sessionError.unknown": "Error desconocido",
|
||||
"sessionEvents.sessionError.title": "Error de sesión",
|
||||
"sessionEvents.sessionError.message": "Error: {message}",
|
||||
|
||||
"sessionState.cleanup.deepConfirm.message": "Esta limpieza puede ser lenta y puede eliminar sesiones que no pretendías eliminar. ¿Estás seguro?",
|
||||
"sessionState.cleanup.deepConfirm.title": "Limpieza profunda de sesiones",
|
||||
"sessionState.cleanup.deepConfirm.detail": "La limpieza profunda de sesiones eliminará todas las sesiones sin mensajes, quitará cualquier sesión de subagente finalizada y limpiará cualquier fork no usado de una sesión.",
|
||||
"sessionState.cleanup.deepConfirm.confirmLabel": "Continuar",
|
||||
"sessionState.cleanup.deepConfirm.cancelLabel": "Cancelar",
|
||||
"sessionState.cleanup.toast.one": "Se limpió {count} sesión vacía",
|
||||
"sessionState.cleanup.toast.other": "Se limpiaron {count} sesiones vacías",
|
||||
} as const
|
||||
54
packages/ui/src/lib/i18n/messages/es/settings.ts
Normal file
54
packages/ui/src/lib/i18n/messages/es/settings.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
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}",
|
||||
|
||||
"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": "--",
|
||||
} as const
|
||||
6
packages/ui/src/lib/i18n/messages/es/time.ts
Normal file
6
packages/ui/src/lib/i18n/messages/es/time.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export const timeMessages = {
|
||||
"time.relative.justNow": "justo ahora",
|
||||
"time.relative.daysAgoShort": "hace {count} d",
|
||||
"time.relative.hoursAgoShort": "hace {count} h",
|
||||
"time.relative.minutesAgoShort": "hace {count} m",
|
||||
} as const
|
||||
121
packages/ui/src/lib/i18n/messages/es/toolCall.ts
Normal file
121
packages/ui/src/lib/i18n/messages/es/toolCall.ts
Normal file
@@ -0,0 +1,121 @@
|
||||
export const toolCallMessages = {
|
||||
"toolCall.pending.waitingToRun": "Esperando para ejecutar...",
|
||||
"toolCall.error.label": "Error:",
|
||||
|
||||
"toolCall.diff.label": "Diff",
|
||||
"toolCall.diff.label.withPath": "Diff · {path}",
|
||||
"toolCall.diff.viewMode.ariaLabel": "Modo de vista de diff",
|
||||
"toolCall.diff.viewMode.split": "Dividida",
|
||||
"toolCall.diff.viewMode.unified": "Unificada",
|
||||
|
||||
"toolCall.diagnostics.title": "Diagnósticos",
|
||||
"toolCall.diagnostics.ariaLabel": "Diagnósticos",
|
||||
"toolCall.diagnostics.ariaLabel.withLabel": "Diagnósticos {label}",
|
||||
"toolCall.diagnostics.severity.error.short": "ERR",
|
||||
"toolCall.diagnostics.severity.warning.short": "WARN",
|
||||
"toolCall.diagnostics.severity.info.short": "INFO",
|
||||
|
||||
"toolCall.renderer.toolName.shell": "Shell",
|
||||
"toolCall.renderer.toolName.fetch": "Fetch",
|
||||
"toolCall.renderer.toolName.invalid": "Inválido",
|
||||
"toolCall.renderer.toolName.plan": "Plan",
|
||||
"toolCall.renderer.toolName.applyPatch": "Aplicar patch",
|
||||
|
||||
"toolCall.renderer.action.working": "Trabajando...",
|
||||
"toolCall.renderer.action.writingCommand": "Escribiendo comando...",
|
||||
"toolCall.renderer.action.preparingEdit": "Preparando edición...",
|
||||
"toolCall.renderer.action.readingFile": "Leyendo archivo...",
|
||||
"toolCall.renderer.action.preparingWrite": "Preparando escritura...",
|
||||
"toolCall.renderer.action.preparingPatch": "Preparando patch...",
|
||||
"toolCall.renderer.action.planning": "Planificando...",
|
||||
"toolCall.renderer.action.fetchingFromWeb": "Obteniendo desde la web...",
|
||||
"toolCall.renderer.action.findingFiles": "Buscando archivos...",
|
||||
"toolCall.renderer.action.searchingContent": "Buscando contenido...",
|
||||
"toolCall.renderer.action.listingDirectory": "Listando directorio...",
|
||||
|
||||
"toolCall.renderer.bash.title.timeout": "Tiempo de espera: {timeout}",
|
||||
"toolCall.renderer.read.detail.offset": "Desplazamiento: {offset}",
|
||||
"toolCall.renderer.read.detail.limit": "Límite: {limit}",
|
||||
|
||||
"toolCall.renderer.todo.empty": "Aún no hay elementos del plan.",
|
||||
"toolCall.renderer.todo.status.pending": "Pendiente",
|
||||
"toolCall.renderer.todo.status.inProgress": "En progreso",
|
||||
"toolCall.renderer.todo.status.completed": "Completado",
|
||||
"toolCall.renderer.todo.status.cancelled": "Cancelado",
|
||||
"toolCall.renderer.todo.title.plan": "Plan",
|
||||
"toolCall.renderer.todo.title.creating": "Creando plan",
|
||||
"toolCall.renderer.todo.title.completing": "Completando plan",
|
||||
"toolCall.renderer.todo.title.updating": "Actualizando plan",
|
||||
|
||||
"toolCall.permission.status.required": "Permiso requerido",
|
||||
"toolCall.permission.status.queued": "Permiso en cola",
|
||||
"toolCall.permission.requestedDiff.label": "Diff solicitado",
|
||||
"toolCall.permission.requestedDiff.withPath": "Diff solicitado · {path}",
|
||||
"toolCall.permission.queuedText": "Esperando respuestas de permisos anteriores.",
|
||||
"toolCall.permission.actions.allowOnce": "Permitir una vez",
|
||||
"toolCall.permission.actions.alwaysAllow": "Permitir siempre",
|
||||
"toolCall.permission.actions.deny": "Denegar",
|
||||
"toolCall.permission.shortcuts.allowOnce": "Permitir una vez",
|
||||
"toolCall.permission.shortcuts.alwaysAllow": "Permitir siempre",
|
||||
"toolCall.permission.shortcuts.deny": "Denegar",
|
||||
"toolCall.permission.errors.unableToUpdate": "No se pudo actualizar el permiso",
|
||||
|
||||
"permissionApproval.title": "Solicitudes",
|
||||
"permissionApproval.empty": "No hay solicitudes pendientes.",
|
||||
"permissionApproval.kind.permission": "Permiso",
|
||||
"permissionApproval.kind.question": "Pregunta",
|
||||
"permissionApproval.questionCount.one": "{count} pregunta",
|
||||
"permissionApproval.questionCount.other": "{count} preguntas",
|
||||
"permissionApproval.status.active": "Activa",
|
||||
"permissionApproval.actions.closeAriaLabel": "Cerrar",
|
||||
"permissionApproval.actions.goToSession": "Ir a sesión",
|
||||
"permissionApproval.actions.loadingSession": "Cargando…",
|
||||
"permissionApproval.actions.loadSession": "Cargar sesión",
|
||||
"permissionApproval.actions.allowOnce": "Permitir una vez",
|
||||
"permissionApproval.actions.alwaysAllow": "Permitir siempre",
|
||||
"permissionApproval.actions.deny": "Denegar",
|
||||
"permissionApproval.fallbackHint": "Carga la sesión para más información.",
|
||||
"permissionApproval.errors.unableToUpdatePermission": "No se pudo actualizar el permiso",
|
||||
|
||||
"toolCall.question.status.required": "Pregunta requerida",
|
||||
"toolCall.question.status.queued": "Pregunta en cola",
|
||||
"toolCall.question.status.questions": "Preguntas",
|
||||
"toolCall.question.action.awaitingAnswers": "Esperando respuestas...",
|
||||
"toolCall.question.title.questions": "Preguntas",
|
||||
"toolCall.question.title.askingQuestions": "Haciendo preguntas",
|
||||
"toolCall.question.type.one": "Pregunta",
|
||||
"toolCall.question.type.other": "Preguntas",
|
||||
"toolCall.question.number": "P{number}:",
|
||||
"toolCall.question.multiple": "Múltiple",
|
||||
"toolCall.question.custom.title": "Escribe una respuesta personalizada",
|
||||
"toolCall.question.custom.label": "Respuesta personalizada",
|
||||
"toolCall.question.custom.placeholder": "Escribe tu propia respuesta",
|
||||
"toolCall.question.actions.submit": "Enviar",
|
||||
"toolCall.question.actions.dismiss": "Descartar",
|
||||
"toolCall.question.shortcuts.submit": "Enviar",
|
||||
"toolCall.question.shortcuts.dismiss": "Descartar",
|
||||
"toolCall.question.queuedText": "Esperando respuestas anteriores.",
|
||||
"toolCall.question.validation.answerAll": "Responde todas las preguntas antes de enviar.",
|
||||
"toolCall.question.errors.unableToReply": "No se pudo responder",
|
||||
"toolCall.question.errors.unableToDismiss": "No se pudo descartar",
|
||||
|
||||
"toolCall.task.action.delegating": "Delegando...",
|
||||
"toolCall.task.sections.prompt": "Prompt",
|
||||
"toolCall.task.sections.steps": "Pasos",
|
||||
"toolCall.task.sections.output": "Salida",
|
||||
"toolCall.task.steps.count": "{count} pasos",
|
||||
"toolCall.task.meta.agentModel": "Agente: {agent} • Modelo: {model}",
|
||||
"toolCall.task.meta.agent": "Agente: {agent}",
|
||||
"toolCall.task.meta.model": "Modelo: {model}",
|
||||
|
||||
"toolCall.status.pending": "Pendiente",
|
||||
"toolCall.status.running": "En ejecución",
|
||||
"toolCall.status.completed": "Completado",
|
||||
"toolCall.status.error": "Error",
|
||||
"toolCall.status.unknown": "Desconocido",
|
||||
|
||||
"toolCall.applyPatch.action.preparing": "Preparando apply_patch...",
|
||||
"toolCall.applyPatch.title.withFileCount.one": "{tool} ({count} archivo)",
|
||||
"toolCall.applyPatch.title.withFileCount.other": "{tool} ({count} archivos)",
|
||||
"toolCall.applyPatch.fileFallback": "Archivo {number}",
|
||||
} as const
|
||||
Reference in New Issue
Block a user