6809 lines
350 KiB
TypeScript
6809 lines
350 KiB
TypeScript
import { withEnglishFallback } from "./fallback";
|
||
|
||
export default withEnglishFallback({
|
||
app: {
|
||
name: "DBX",
|
||
},
|
||
auth: {
|
||
rateLimited: "Vuelva a intentarlo en {seconds} s",
|
||
setupTitle: "Configurar contraseña de acceso",
|
||
setupDescription: "Establece una contraseña para proteger tu instancia",
|
||
loginDescription: "Herramienta de administración de bases de datos",
|
||
newPassword: "Ingresa la nueva contraseña",
|
||
confirmPassword: "Confirmar contraseña",
|
||
enterPassword: "Ingresa la contraseña de acceso",
|
||
passwordMismatch: "Las contraseñas no coinciden",
|
||
setPassword: "Establecer contraseña",
|
||
login: "Iniciar sesión",
|
||
processing: "Procesando...",
|
||
loginFailed: "Contraseña incorrecta",
|
||
connectFailed: "Error de conexión",
|
||
changePassword: "Cambiar contraseña",
|
||
oldPassword: "Contraseña actual",
|
||
oldPasswordWrong: "La contraseña actual es incorrecta",
|
||
passwordChanged: "Contraseña cambiada exitosamente",
|
||
changePasswordFailed: "Error al cambiar la contraseña",
|
||
changePasswordDescription: "Ingresa tu contraseña actual y elige una nueva",
|
||
},
|
||
toolbar: {
|
||
newConnection: "Nueva conexión",
|
||
newQuery: "Nueva consulta",
|
||
execute: "Ejecutar",
|
||
executeShortcut: "Ejecutar selección/consulta (Cmd+Enter)",
|
||
stopQuery: "Detener consulta",
|
||
explainPlan: "Plan de ejecución",
|
||
stopExplain: "Detener análisis",
|
||
autotrace: "Autotrace (ejecuta la consulta)",
|
||
explainAnalyze: "EXPLAIN ANALYZE (ejecuta la consulta)",
|
||
actualPlan: "Plan de ejecución real (SET STATISTICS XML)",
|
||
formatSql: "Formatear SQL",
|
||
formatSqlFailed: "Error al formatear el SQL",
|
||
formatAutoDetectFailed: "No se pudo reconocer ni formatear el contenido seleccionado",
|
||
compressSql: "Comprimir SQL",
|
||
keywordCaseLower: "Usar palabras clave SQL en minúsculas",
|
||
keywordCaseUpper: "Usar palabras clave SQL en mayúsculas",
|
||
autoCommit: "Auto Commit",
|
||
manualTransaction: "Transacción Manual",
|
||
autoCommitAgent: "Auto Commit (depende del backend del Agente)",
|
||
manualTransactionAgent: "Transacción Manual (depende del backend del Agente)",
|
||
commit: "Confirmar",
|
||
rollback: "Revertir",
|
||
txnAutoRolledBack: "Transacción revertida automáticamente tras 5 minutos de inactividad",
|
||
previewSql: "Vista previa de SQL",
|
||
previewQuery: "Vista previa de la consulta",
|
||
hidePreviewSql: "Ocultar vista previa de SQL",
|
||
saveSql: "Guardar en biblioteca SQL",
|
||
openSql: "Abrir archivo SQL",
|
||
exPasteSqlInCondition: "ExPaste: pegar como condición IN",
|
||
theme: "Tema",
|
||
themeLight: "Claro",
|
||
themeDark: "Oscuro",
|
||
themeSystem: "Seguir sistema",
|
||
sqlSaved: "SQL guardado",
|
||
sqlOpenFailed: "Error al abrir el archivo: {message}",
|
||
sqlSaveFailed: "Error al guardar el archivo: {message}",
|
||
driverManager: "Administrador de drivers",
|
||
updatableDriverCount: "Cantidad de drivers actualizables",
|
||
blockDangerousRedisCommands: "Bloquear comandos peligrosos",
|
||
},
|
||
updates: {
|
||
title: "Actualizaciones",
|
||
check: "Buscar actualizaciones",
|
||
availableTitle: "Actualización disponible",
|
||
availableMessage: "DBX {latest} está disponible. Estás usando la versión {current}.",
|
||
upToDate: "DBX está actualizado ({version}).",
|
||
failed: "Error al buscar actualizaciones: {error}",
|
||
rateLimited: "Las verificaciones de actualizaciones de GitHub están temporalmente limitadas. Puedes abrir la página de lanzamientos para verificar manualmente.",
|
||
openRelease: "Abrir lanzamiento",
|
||
downloadAndInstall: "Descargar e instalar",
|
||
activeTasksBlockUpdate: "Hay {count} tarea(s) en ejecución. Espera a que terminen antes de actualizar DBX.",
|
||
portableAutomaticUpdate: "DBX descargará el ZIP portable firmado, reemplazará solo DBX.exe después de salir y se reiniciará automáticamente. portable.dbx y data se conservarán.",
|
||
windows7ManualUpdate: "Windows 7 requiere el instalador sin conexión dedicado de WebView2 109. Abre la página de lanzamiento y descarga el paquete para Windows 7.",
|
||
downloading: "Descargando {progress}%",
|
||
downloadFailed: "Error al descargar la actualización: {error}",
|
||
downloadCanceled: "Descarga de actualización cancelada.",
|
||
networkOrMirrorFailed: "El tiempo de espera de la conexión de red se ha agotado o los espejos de descarga no están disponibles. Compruebe su red o haga clic en 'Abrir lanzamiento' para descargar manualmente.",
|
||
installing: "Instalando actualización...",
|
||
installFailed: "Error al instalar la actualización: {error}",
|
||
restart: "Salir y reiniciar",
|
||
restartFailed: "Error al reiniciar la aplicación: {error}",
|
||
exitAndUpdate: "Salir y actualizar",
|
||
dockerUsersRun: "Los usuarios de Docker deben ejecutar",
|
||
toUpdate: "para actualizar",
|
||
},
|
||
sidebar: {
|
||
connections: "CONEXIONES",
|
||
noConnections: "Sin conexiones",
|
||
import: "Importar conexiones",
|
||
importDbx: "Importar configuración DBX",
|
||
importNavicat: "Importar Navicat NCX",
|
||
importDbeaver: "Importar DBeaver",
|
||
importDatagrip: "Importar DataGrip",
|
||
export: "Exportar conexiones",
|
||
collapseAll: "Contraer todo",
|
||
collapse: "Contraer barra lateral",
|
||
expand: "Expandir barra lateral",
|
||
showMore: "Mostrar {count} más...",
|
||
filterByType: "Filtrar por tipo",
|
||
showActiveConnectionsOnly: "Mostrar solo conexiones activas",
|
||
sortConnections: "Ordenar conexiones",
|
||
sortConnectionsManual: "Orden manual",
|
||
sortConnectionsAscending: "Nombre: A–Z",
|
||
sortConnectionsDescending: "Nombre: Z–A",
|
||
searchScopeConnection: "Conexión",
|
||
searchScopeDatabase: "Base de datos",
|
||
searchScopeSchema: "Schema",
|
||
searchScopeTable: "Tabla",
|
||
searchScopeView: "Vista",
|
||
searchTablesInCurrentScope: "Buscar tablas en esta base de datos...",
|
||
clearTableSearch: "Limpiar búsqueda de tablas",
|
||
localTableSearch: "Búsqueda local",
|
||
localTableSearchTooltip: "Busca en el índice local de tablas sin solicitudes remotas. Desactívalo para buscar de forma remota. Usa actualizar para crear o actualizar el índice.",
|
||
refreshLocalTableSearchIndex: "Actualizar índice local de tablas",
|
||
globalLocalSearch: "Búsqueda local",
|
||
globalLocalSearchTooltip: "Busca solo los objetos de la barra lateral cargados actualmente sin solicitudes remotas.",
|
||
clearFilter: "Limpiar filtro",
|
||
locateActiveTab: "Localizar en la barra lateral",
|
||
},
|
||
savedSql: {
|
||
saveToLibrary: "Guardar en biblioteca SQL",
|
||
saveToFile: "Guardar localmente",
|
||
save: "Guardar",
|
||
saved: "SQL guardado",
|
||
saveFailed: "Error al guardar el SQL: {message}",
|
||
fileName: "Nombre de archivo",
|
||
folder: "Carpeta",
|
||
rootFolder: "Biblioteca SQL",
|
||
newQuery: "Nueva consulta",
|
||
newFolder: "Nueva carpeta SQL",
|
||
newSubfolder: "Nueva subcarpeta",
|
||
newFolderDefault: "Nueva carpeta",
|
||
renameFolder: "Renombrar carpeta",
|
||
deleteFolder: "Eliminar carpeta",
|
||
deleteFolderConfirm: "¿Eliminar “{name}” y los archivos SQL que contiene?",
|
||
open: "Abrir SQL",
|
||
renameFile: "Renombrar SQL",
|
||
deleteFile: "Eliminar SQL",
|
||
deleteFileConfirm: "¿Eliminar “{name}”?",
|
||
createFolderOption: "Crear carpeta “{name}”",
|
||
folderPlaceholder: "Seleccionar carpeta",
|
||
searchPlaceholder: "Buscar carpetas...",
|
||
createFolderFailed: "Error al crear carpeta: {message}",
|
||
},
|
||
sqlLibrary: {
|
||
title: "Biblioteca SQL",
|
||
openInCurrentDatabase: "Abrir en la base de datos actual",
|
||
empty: "Sin consultas guardadas",
|
||
emptyFolder: "Carpeta vacía",
|
||
unfiled: "Sin categoría",
|
||
exportFile: "Exportar SQL",
|
||
exportFolder: "Exportar carpeta",
|
||
exportLibrary: "Exportar biblioteca SQL",
|
||
importDirectory: "Importar carpeta local",
|
||
importIntoFolder: "Importar a esta carpeta",
|
||
openStorageDirectory: "Abrir directorio de SQL",
|
||
chooseSyncDirectory: "Definir directorio de sincronización local",
|
||
disableSyncDirectory: "Desactivar sincronización local",
|
||
syncDirectorySaved: "Directorio de sincronización local de SQL guardado",
|
||
syncDirectoryDisabled: "Sincronización local de SQL desactivada",
|
||
syncDirectoryFailed: "Error al definir el directorio de sincronización: {message}",
|
||
openDirectoryFailed: "Error al abrir el directorio: {message}",
|
||
noSyncDirectory: "Primero defina un directorio de sincronización local",
|
||
exported: "Exportado",
|
||
exportFailed: "Error al exportar: {message}",
|
||
importFailed: "Error al importar: {message}",
|
||
importNone: "No se encontraron archivos .sql en la carpeta seleccionada",
|
||
imported: "Se importaron {count} archivos SQL",
|
||
desktopOnly: "Esta función solo está disponible en escritorio",
|
||
noConnection: "No hay conexión disponible para importar",
|
||
batchDelete: "Eliminación por lotes",
|
||
batchDeleteConfirm: "¿Está seguro de que desea eliminar {count} elementos seleccionados? Esta acción no se puede deshacer.",
|
||
batchDeleteSuccess: "Se eliminaron {count} elementos con éxito",
|
||
moveToFolder: "Mover a carpeta...",
|
||
moveSelectedToFolder: "Mover {count} SQL a carpeta...",
|
||
moveSuccess: "Se movieron {count} SQL",
|
||
clearSelection: "Limpiar selección",
|
||
sortByDate: "Ordenar por fecha de modificación",
|
||
sortByFolder: "Ordenar por estructura de carpetas",
|
||
},
|
||
|
||
connection: {
|
||
title: "Nueva conexión",
|
||
name: "Nombre",
|
||
namePlaceholder: "Nombre de conexión, se genera automáticamente si está vacío",
|
||
note: "Notas",
|
||
notePlaceholder: "No guardes contraseñas en texto plano en las notas",
|
||
type: "Tipo",
|
||
host: "Host",
|
||
filePath: "Ruta del archivo",
|
||
h2FileMode: "Archivo",
|
||
h2TcpMode: "TCP",
|
||
h2FilePathRequired: "La ruta del archivo H2 no puede estar vacía",
|
||
createDuckDbFile: "Crear archivo DuckDB",
|
||
createSqliteFile: "Crear base de datos SQLite",
|
||
memoryDatabasePathHint: "Usa :memory: para crear una base de datos SQLite o DuckDB en memoria.",
|
||
sqliteCipherKey: "Clave SQLCipher",
|
||
sqliteCipherKeyPlaceholder: "Déjalo vacío para SQLite sin cifrar",
|
||
sqliteExtensions: "Extensiones de SQLite",
|
||
sqliteExtensionsPlaceholder: "/ruta/a/regexp.dylib\n/ruta/a/text.dylib|sqlite3_text_init",
|
||
sqliteExtensionsHint: 'Una .dylib/.so/.dll por línea. Usa "ruta|punto de entrada" cuando se requiera un punto de entrada. Se cargan al conectar, luego load_extension se deshabilita.',
|
||
initScript: "Script de inicialización",
|
||
initScriptPlaceholder: "INSTALL quack;\nLOAD quack;\nATTACH 'quack:host' AS remote (TOKEN '...');",
|
||
initScriptHint: "Sentencias SQL que se ejecutan cada vez que se abre la conexión (INSTALL/LOAD, SET, CREATE SECRET, ATTACH ...). Las bases de datos adjuntadas aquí aparecen en la barra lateral.",
|
||
sqliteExtensionBrowse: "Seleccionar extensión de SQLite",
|
||
user: "Usuario",
|
||
password: "Contraseña",
|
||
database: "Base de datos",
|
||
databasePlaceholder: "Opcional",
|
||
databasePlaceholderRequired: "Obligatorio, ingresa una base de datos existente",
|
||
databasePlaceholderWithDefault: "Opcional, por defecto {database}",
|
||
kingbaseDatabaseRequired: "Kingbase requiere una base de datos existente antes de conectar o cargar la lista de bases de datos.",
|
||
defaultDatabase: "BD predeterminada",
|
||
authDatabase: "BD de autenticación",
|
||
authDatabasePlaceholder: "Opcional, normalmente admin",
|
||
authMechanism: "Mecanismo de autenticación",
|
||
authMechanismDefault: "Predeterminado",
|
||
driverMode: "Controlador",
|
||
mongoDriverAuto: "Automático",
|
||
mongoDriverLegacy: "Legacy",
|
||
serviceName: "Servicio/SID",
|
||
serviceNameOnly: "Nombre de servicio",
|
||
oracleTnsAlias: "Alias de red",
|
||
oracleTnsAliasPlaceholder: "Alias de tnsnames.ora",
|
||
oracleTnsAdminPlaceholder: "Directorio que contiene tnsnames.ora",
|
||
oracleTnsAdminBrowse: "Seleccionar tnsnames.ora",
|
||
oracleTnsPathHint: "La ruta la lee el backend de DBX/Oracle Agent. En escritorio es local; en Web y Docker pertenece al servidor.",
|
||
oracleTnsAliasRequired: "El modo Oracle TNS requiere un alias de red.",
|
||
oracleTnsAdminRequired: "El modo Oracle TNS requiere el directorio TNS_ADMIN que contiene tnsnames.ora.",
|
||
oracleTnsTransportUnsupported: "Oracle TNS no se puede combinar con túneles SSH, proxy o HTTP. Elimine la capa de transporte o use Servicio/SID.",
|
||
version: "Versión",
|
||
driverInstallHintPrefix: "Instala el driver requerido desde ",
|
||
driverInstallHintSuffix: " en la barra superior antes de conectar.",
|
||
driverName: "Nombre del driver",
|
||
driverNamePlaceholder: "Nombre del proveedor o entorno",
|
||
urlParams: "Parámetros de URL",
|
||
d1AccountId: "ID de cuenta",
|
||
d1DatabaseId: "ID de base de datos",
|
||
d1ApiToken: "Token de API",
|
||
d1TokenHint: "El token necesita al menos el permiso D1 Read; las escrituras, el DDL y las importaciones también requieren D1 Write.",
|
||
d1FieldsRequired: "Se requieren el ID de cuenta de Cloudflare, el ID de la base de datos D1 y el token de API.",
|
||
gbaseServer: "GBASEDBTSERVER",
|
||
informixServer: "INFORMIXSERVER",
|
||
sslEnable: "Habilitar conexión cifrada",
|
||
caCertPath: "Certificado CA",
|
||
caCertPathPlaceholder: "Opcional, p. ej. ~/.yandex/RootCA.crt",
|
||
caCertPathBrowse: "Buscar certificado",
|
||
damengSslFilesPath: "Directorio de certificados",
|
||
damengSslFilesPathPlaceholder: "/path/to/dmcert",
|
||
damengSslFilesPathBrowse: "Seleccionar directorio de certificados",
|
||
damengSslKeystorePassword: "Contraseña del almacén de claves",
|
||
damengSslHint: "DM8 JDBC lee los certificados SSL de este directorio y pasa ambos valores mediante parámetros URL.",
|
||
damengSslProtocol: "Protocolo SSL",
|
||
damengSslProtocolPlaceholder: "Opcional, p. ej. TLSv1.2",
|
||
damengSslVerificationHint: "La verificación del certificado depende de ENABLE_ENCRYPT en el servidor DM8. El modo 5 verifica el certificado del servidor; el modo 4 cifra sin verificar certificados.",
|
||
redisTlsInsecure: "Omitir verificación del certificado",
|
||
redisTlsInsecureHint: "Equivale a redis-cli --tls --insecure, para certificados autofirmados o CA privadas.",
|
||
mysqlTlsMode: "Modo TLS",
|
||
mysqlTlsModePreferred: "Preferido",
|
||
mysqlTlsModeDisabled: "Deshabilitado",
|
||
mysqlTlsModeRequired: "Requerido",
|
||
mysqlTlsModeVerifyCa: "Verificar CA",
|
||
mysqlTlsModeVerifyIdentity: "Verificar identidad",
|
||
mysqlCleartextPasswordAuth: "Autenticación de contraseña en claro",
|
||
mysqlCleartextPasswordAuthHint: "Actívala solo cuando el servidor MySQL requiera el plugin de autenticación de contraseña en claro.",
|
||
mysqlCaCertHint: "Requerido para Verificar CA e Identidad cuando el certificado usa una CA privada.",
|
||
mysqlClientCert: "Autenticación cliente",
|
||
mysqlClientCertPlaceholder: "/ruta/a/client.crt",
|
||
mysqlClientKeyPlaceholder: "/ruta/a/client.key",
|
||
mysqlClientCertHint: "El certificado y la clave privada deben indicarse juntos si MySQL requiere mTLS.",
|
||
mysqlTlsConnectionFailureHint: "Si el servidor MySQL no requiere TLS, edita la conexión, establece el Modo TLS en Deshabilitado e inténtalo de nuevo.",
|
||
mysqlClientCertBrowse: "Elegir certificado cliente",
|
||
mysqlClientKeyBrowse: "Elegir clave privada cliente",
|
||
postgresSslMode: "Modo TLS",
|
||
postgresSslModeDisable: "Deshabilitar",
|
||
postgresSslModePrefer: "Preferir",
|
||
postgresSslModeRequire: "Requerir",
|
||
postgresSslModeVerifyCa: "Verificar CA",
|
||
postgresSslModeVerifyFull: "Verificar completo",
|
||
postgresServerCert: "CA del servidor",
|
||
postgresRootCertPlaceholder: "/ruta/a/ca.crt",
|
||
postgresRootCertHint: "Úsalo con verify-ca o verify-full cuando el certificado del servidor use una CA privada.",
|
||
postgresRootCertBrowse: "Elegir certificado CA",
|
||
postgresClientCert: "Autenticación cliente",
|
||
postgresClientCertPlaceholder: "/ruta/a/client.crt",
|
||
postgresClientKeyPlaceholder: "/ruta/a/client.key",
|
||
postgresClientCertHint: "El certificado y la clave privada deben indicarse juntos si PostgreSQL requiere mTLS.",
|
||
postgresClientCertBrowse: "Elegir certificado cliente",
|
||
postgresClientKeyBrowse: "Elegir clave privada cliente",
|
||
connectionUrlOptional: "URL (opcional)",
|
||
connectionUrlPlaceholder: "postgresql://usuario:contraseña{'@'}host:5432/db?sslmode=require",
|
||
parseConnectionUrl: "Analizar URL de conexión",
|
||
parseConnectionUrlApplied: "URL de conexión aplicada",
|
||
parseConnectionUrlFailed: "Error al analizar la URL de conexión: {message}",
|
||
mode: "Modo de conexión",
|
||
modeForm: "Formulario",
|
||
redisStandaloneMode: "Directa",
|
||
redisSentinelMode: "Sentinel",
|
||
redisClusterMode: "Cluster",
|
||
oceanbaseMySQLMode: "Modo MySQL",
|
||
oceanbaseOracleMode: "Modo Oracle",
|
||
redisFirstSentinel: "Primer Sentinel",
|
||
redisFirstClusterNode: "Primer nodo semilla",
|
||
redisSentinelNodes: "Nodos Sentinel",
|
||
redisClusterNodes: "Nodos semilla del cluster",
|
||
redisSentinelMaster: "Nombre del master",
|
||
redisSentinelUser: "Usuario Sentinel",
|
||
redisSentinelPassword: "Contraseña Sentinel",
|
||
redisSentinelTls: "TLS Sentinel",
|
||
redisSentinelTlsHint: "Usar TLS al conectar con nodos Sentinel",
|
||
redisKeySeparator: "Separador de espacio de nombres de clave",
|
||
etcdEndpoints: "Endpoints",
|
||
etcdEndpointsHint: "Una entrada por línea. Déjalo en blanco para usar el host y puerto de arriba.",
|
||
etcdCaCertPlaceholder: "/ruta/a/ca.crt",
|
||
etcdCaCertBrowse: "Elegir certificado CA",
|
||
etcdClientAuth: "Autenticación de cliente",
|
||
etcdClientCertPlaceholder: "/ruta/a/client.crt",
|
||
etcdClientKeyPlaceholder: "/ruta/a/client.key",
|
||
etcdClientCertHint: "El certificado y la clave privada deben proporcionarse juntos cuando etcd requiere mTLS.",
|
||
etcdClientCertBrowse: "Elegir certificado de cliente",
|
||
etcdClientKeyBrowse: "Elegir clave privada de cliente",
|
||
etcdClientCertPairRequired: "El certificado y la clave privada deben proporcionarse juntos.",
|
||
zookeeperConnectString: "Cadena de conexión",
|
||
zookeeperConnectStringHint: "Entradas host:puerto separadas por coma o por línea. Déjalo en blanco para usar el host y puerto de arriba.",
|
||
zookeeperCreateModePersistent: "Persistente",
|
||
zookeeperCreateModeEphemeral: "Efímero",
|
||
zookeeperCreateModePersistentSequential: "Persistente secuencial",
|
||
zookeeperCreateModeEphemeralSequential: "Efímero secuencial",
|
||
nacosConsoleUrl: "URL de OpenAPI / API de administración",
|
||
nacosConsoleUrlHint: "Use la dirección correspondiente al perfil Nacos seleccionado. Se aceptan URL completas del navegador y de la API.",
|
||
nacosConsoleUrlRequired: "La URL de OpenAPI / API de administración de Nacos es obligatoria",
|
||
nacosConsoleUrlAutoAdjusted: "URL de consola de Nacos ajustada de {from} a {to}.",
|
||
nacosRNacosOpenApiAutoAdjusted: "Se cambió automáticamente a la OpenAPI de r-nacos: {from} → {to} (Context Path: /nacos).",
|
||
nacosImplementation: "Implementación del servicio",
|
||
nacosVersion: "Versión de Nacos",
|
||
nacosVersionAuto: "Detectar automáticamente",
|
||
nacosPrimaryAddressRNacos: "Dirección de API compatible con Nacos",
|
||
nacosPrimaryAddressV2: "Dirección del servicio (API y consola compartidas)",
|
||
nacosPrimaryAddressV3: "Dirección de Server / Admin API",
|
||
nacosPrimaryAddressAuto: "Dirección de administración de Nacos",
|
||
nacosPrimaryAddressHint: "Para Nacos 3, use la dirección de Server / Admin API (normalmente http://host:8848/nacos), no la consola del puerto 8080; se conservan los prefijos proxy personalizados.",
|
||
nacosRequestsUse: "Las solicitudes usarán {address}/…",
|
||
nacosNamespace: "Namespace",
|
||
nacosContextPath: "Ruta de contexto",
|
||
nacosContextPathPlaceholder: "Dejar vacío o /nacos",
|
||
nacosContextPathRestoreAuto: "Restaurar automático",
|
||
nacosConfigurationHistory: "Historial de configuración",
|
||
nacosConfigurationHistoryEnable: "Habilitar historial de configuración",
|
||
nacosConfigurationHistoryHint:
|
||
"El historial de configuración de r-nacos solo está disponible mediante su consola independiente (normalmente el puerto 10848). La consola tiene una sesión de inicio de sesión distinta de la OpenAPI compatible con Nacos: la OpenAPI puede no requerir autenticación mientras que la consola sí. Use la misma cuenta de usuario de r-nacos salvo que necesite usar otra cuenta.",
|
||
nacosRNacosConsoleUrl: "URL de consola r-nacos",
|
||
nacosRNacosConsoleUrlPlaceholder: "http://127.0.0.1:10848",
|
||
nacosRNacosConsoleUrlHint: "Opcional. Use la URL de la consola independiente (normalmente el puerto 10848), no la URL de OpenAPI; permite consultar el historial y leer el tipo y la descripción de las configuraciones de r-nacos.",
|
||
nacosRNacosOpenApiRequired: "La dirección principal de r-nacos debe usar la API compatible con Nacos, no la URL de la consola independiente.",
|
||
nacosRNacosConsoleUrlRequired: "El historial de configuración de r-nacos requiere una URL de consola.",
|
||
nacosConsoleAuthSeparateRequired: "La autenticación principal es Ninguna; configure credenciales de consola independientes.",
|
||
nacosAuth: "Autenticación",
|
||
nacosAuthNone: "Ninguna",
|
||
nacosAuthUserPassword: "Usuario / Contraseña",
|
||
nacosConsoleAuthentication: "Autenticación de consola",
|
||
nacosConsoleAuthInherit: "Usar credenciales principales",
|
||
nacosConsoleAuthSeparate: "Credenciales independientes",
|
||
nacosConsoleAuthPrimaryNone: "La autenticación principal es Ninguna; use credenciales de consola independientes.",
|
||
nacosConsoleUser: "Usuario de consola",
|
||
nacosConsolePassword: "Contraseña de consola",
|
||
nacosConsoleUsernameRequired: "El usuario de la consola r-nacos es obligatorio",
|
||
nacosUsernameRequired: "El usuario de Nacos es obligatorio",
|
||
nacosTls: "TLS",
|
||
nacosTlsSkipVerify: "Omitir verificación de certificado",
|
||
nacosPageSize: "Tamaño de página",
|
||
nacosMetrics: "Métricas Prometheus",
|
||
nacosMetricsAuto: "Detección automática",
|
||
nacosMetricsDisabled: "Desactivado",
|
||
nacosMetricsCustom: "URL personalizada",
|
||
nacosMetricsAutoHint: "Se probarán en orden: {addresses}",
|
||
nacosMetricsUrl: "URL de métricas",
|
||
nacosMetricsUrlInvalid: "Introduce una URL HTTP o HTTPS absoluta sin credenciales ni fragmento.",
|
||
searchDatabasePlaceholder: "Buscar tipos de bases de datos",
|
||
searchResults: "Resultados de búsqueda",
|
||
databaseCategories: "Categorías",
|
||
databaseCategorySql: "Relacionales",
|
||
databaseCategoryAnalytics: "Analítica",
|
||
databaseCategoryDomestic: "BD chinas",
|
||
databaseCategoryLightweight: "Ligeras",
|
||
databaseCategoryDocument: "Docs/caché/búsqueda",
|
||
databaseCategoryGraphAi: "Grafos/vectores",
|
||
databaseCategoryTimeseries: "Temporal",
|
||
databaseCategoryMq: "Colas",
|
||
databaseCategoryRegistryConfig: "Registro/config.",
|
||
jdbcConnection: "Conexión JDBC",
|
||
iconView: "Vista de íconos",
|
||
listView: "Vista de lista",
|
||
selectedDatabase: "Seleccionada",
|
||
noDatabaseMatches: "Sin bases de datos coincidentes",
|
||
next: "Siguiente",
|
||
back: "Anterior",
|
||
basicTab: "Conexión",
|
||
tlsTab: "TLS/SSL",
|
||
test: "Probar",
|
||
testing: "Probando...",
|
||
copyTestResult: "Copiar resultado de prueba",
|
||
sqlServerLegacyCompatibilityMode: "Modo de compatibilidad heredado",
|
||
sqlServerLegacyCompatibilityModeEnable: "Activar",
|
||
sqlServerLegacyCompatibilityModeHint: "Para instancias de SQL Server limitadas a TLS 1.0, cifrado solo al iniciar sesión o sin cifrado.\nAlgunas funciones pueden estar limitadas; úsalo solo en redes de confianza.",
|
||
sqlServerLegacyCompatibilityComponent: "Componente de compatibilidad heredada de SQL Server",
|
||
gaussdbConnectionMode: "Modo de conexión",
|
||
gaussdbConnectionModeNative: "Compatible con PostgreSQL (controlador integrado)",
|
||
gaussdbConnectionModeMJdbc: "Modo M (controlador JDBC del proveedor)",
|
||
gaussdbConnectionModeNativeHint: "Usa el protocolo compatible con PostgreSQL integrado en DBX para los modos A/PG/Oracle de GaussDB.",
|
||
gaussdbConnectionModeMJdbcHint: "Usa jdbc:gaussdb con com.huawei.gaussdb.jdbc.Driver para el modo M de GaussDB.",
|
||
gaussdbMJdbcDriver: "Controlador JDBC de GaussDB",
|
||
gaussdbMJdbcDriverPlaceholder: "Seleccione gaussdbjdbc.jar compatible con la versión del servidor",
|
||
gaussdbMJdbcDriverHint: "El controlador se publica con cada versión de GaussDB. Obtenga gaussdbjdbc.jar del paquete de controladores correspondiente.",
|
||
gaussdbMJdbcDriverRequired: "El modo M de GaussDB requiere el controlador JDBC del proveedor. Seleccione gaussdbjdbc.jar compatible con el servidor.",
|
||
gaussdbMJdbcPluginInstalling: "Instalando el entorno JDBC...",
|
||
gaussdbIdentifierQuoteStyle: "Compatibilidad de identificadores",
|
||
gaussdbIdentifierQuoteAuto: "Automático (controlador/predeterminado)",
|
||
gaussdbIdentifierQuoteDouble: 'Oracle/PostgreSQL (comillas dobles ")',
|
||
gaussdbIdentifierQuoteBacktick: "MySQL/M (acentos graves `)",
|
||
gaussdbIdentifierQuoteHint: "El modo automático usa los metadatos del controlador JDBC o el valor predeterminado de GaussDB nativo. Seleccione un modo manualmente solo si el SQL generado usa comillas de identificador incorrectas.",
|
||
saveAndConnect: "Guardar y conectar",
|
||
save: "Guardar",
|
||
editTitle: "Editar conexión",
|
||
testSuccess: "Conexión exitosa",
|
||
connecting: "Conectando a {name}...",
|
||
connectSuccess: "Conectado a {name}",
|
||
connectFailed: "Error de conexión: {message}",
|
||
driverNotInstalled: "El controlador {driver} no está instalado. Instálelo desde el Administrador de controladores.",
|
||
jreNotInstalled: "El entorno JRE {jre} no está instalado. Instálelo desde el Administrador de controladores.",
|
||
systemJavaNotFound: "No se encontró Java en el PATH del sistema. Instale Java o elija un ejecutable personalizado.",
|
||
customJavaPathEmpty: "La ruta de Java personalizada está vacía. Elija un ejecutable de Java.",
|
||
agentJavaTooOld: "Este controlador requiere Java 21. Use el JRE 21 administrado por DBX o seleccione un ejecutable Java 21 en el Administrador de controladores.",
|
||
agentDriverUpdateConnectionHint:
|
||
"Hay una actualización de controlador integrada disponible para esta conexión. El error de conexión puede estar relacionado con un controlador local desactualizado. Actualiza el controlador correspondiente en el Administrador de controladores y vuelve a intentarlo.",
|
||
jdbcPluginNotInstalled: "El plugin JDBC no está instalado. Instale el plugin JDBC opcional para usar esta conexión.",
|
||
connectFailedTitle: "Conexión fallida",
|
||
fullErrorMessage: "Mensaje de error completo",
|
||
copyError: "Copiar error",
|
||
optionalSuffix: " (opcional)",
|
||
customColorPlaceholder: "#ff0000 o rgba(…)",
|
||
tursoHostPlaceholder: "your-database.turso.io o libsql://your-database.turso.io",
|
||
tursoHostHint: "Admite los protocolos libsql:// y https://. También puede introducir solo el nombre del host (se usa HTTPS automáticamente).",
|
||
tursoTokenHint: "Cree un token con:",
|
||
tursoUrlParamsPlaceholder: "authToken=xxx (opcional, el campo Auth Token de arriba tiene prioridad)",
|
||
driverInstall: {
|
||
installingTitle: "Instalando controlador",
|
||
failedTitle: "Error al instalar el controlador",
|
||
fullError: "Error completo",
|
||
statusFailed: "Error de instalación",
|
||
statusWaiting: "Esperando instalación",
|
||
statusPreparing: "Preparando la instalación del controlador...",
|
||
statusExtractingJre: "Extrayendo JRE...",
|
||
stepJre: "Descargando JRE",
|
||
stepDriver: "Descargando controlador",
|
||
stepDefault: "Instalando controlador",
|
||
installingButton: "Instalando...",
|
||
},
|
||
lastError: "Error de conexión",
|
||
errorIndicatorHint: "Error de conexión. Haz clic para ver los detalles",
|
||
clearError: "Limpiar error de conexión",
|
||
saveFailed: "Error al guardar la conexión: {message}",
|
||
deleted: "Conexión eliminada",
|
||
deletedSelected: "{count} conexiones eliminadas",
|
||
copied: "Copiado",
|
||
disconnected: "Desconectado",
|
||
databaseConnectionClosed: "Conexión de base de datos cerrada: {name}",
|
||
duplicated: "Conexión duplicada",
|
||
duplicatedSelected: "{count} conexiones duplicadas",
|
||
groupDeleted: "Grupo eliminado",
|
||
loadFailed: "Error al cargar las conexiones guardadas: {message}",
|
||
sshTunnel: "Túnel SSH / Proxy",
|
||
advancedTab: "Avanzado",
|
||
sshEnable: "Usar túnel SSH / proxy",
|
||
sshHost: "Host SSH",
|
||
sshHostPlaceholder: "ssh.example.com o un alias de ~/.ssh/config",
|
||
sshUser: "Usuario SSH",
|
||
sshAuthMethod: "Método de acceso",
|
||
sshAuthMethodPassword: "Contraseña",
|
||
sshAuthMethodKey: "Clave privada",
|
||
sshAuthMethodKeyPassword: "Clave privada + Contraseña",
|
||
sshAuthMethodNone: "Ninguno",
|
||
sshAuthMethodNoneHint: "No se enviarán credenciales. Úsalo para bastiones o proxies que aceptan conexiones sin autenticación.",
|
||
sshAuthMethodAgentLegacy: "SSH Agent (heredado)",
|
||
sshPassword: "Contraseña SSH",
|
||
sshPasswordPlaceholder: "Dejar vacío para usar clave",
|
||
sshKeyPath: "Ruta de clave",
|
||
sshKeyPassphrase: "Frase de clave",
|
||
sshKeyPassphrasePlaceholder: "Dejar vacío si la clave no está cifrada",
|
||
sshKeyPathBrowse: "Examinar",
|
||
sshExposeLan: "Exponer túnel a la red local",
|
||
sshConnectTimeout: "Tiempo de espera SSH (segundos)",
|
||
sshHops: "Capas de túnel SSH / proxy",
|
||
sshHopAdd: "Agregar capa SSH",
|
||
sshHopDuplicate: "Duplicar",
|
||
sshHopDelete: "Eliminar",
|
||
sshHopMoveUp: "Subir",
|
||
sshHopMoveDown: "Bajar",
|
||
sshHopName: "Nombre de la capa",
|
||
sshHopNamePlaceholder: "Bastión, jump host, puerta de producción",
|
||
sshHopDefaultName: "Capa {index}",
|
||
sshHopInvalidHost: "{hop}: el host SSH es obligatorio",
|
||
sshHopInvalidUser: "{hop}: el usuario SSH es obligatorio",
|
||
sshHopInvalidPort: "{hop}: el puerto SSH debe estar entre 1 y 65535",
|
||
sshHopInvalidAuth: "{hop}: se requiere contraseña, ruta de clave o ssh-agent",
|
||
sshUseAgent: "Usar ssh-agent",
|
||
sshAgentSockPath: "Ruta del socket del agente",
|
||
sshAgentSockPathPlaceholder: "ej. ~/.ssh/agent.sock",
|
||
sshHopInvalidTimeout: "{hop}: el tiempo de espera SSH debe estar entre 1 y 300 segundos",
|
||
connectTimeout: "Tiempo de espera de conexión (segundos)",
|
||
queryTimeout: "Tiempo de espera de consulta (segundos)",
|
||
idleTimeout: "Tiempo de espera inactivo (segundos)",
|
||
keepaliveInterval: "Intervalo de keepalive (segundos)",
|
||
readOnly: "Solo lectura",
|
||
readOnlyHint: "Bloquear todas las operaciones de escritura (INSERT, UPDATE, DELETE, etc.)",
|
||
readOnlyBadge: "Solo lectura",
|
||
proxy: "Proxy",
|
||
proxyEnable: "Conectar la base de datos mediante proxy",
|
||
proxyType: "Tipo de proxy",
|
||
proxyHost: "Host del proxy",
|
||
proxyUsername: "Usuario del proxy",
|
||
proxyUsernamePlaceholder: "Opcional",
|
||
proxyPassword: "Contraseña del proxy",
|
||
proxyPasswordPlaceholder: "Opcional",
|
||
proxyTestTarget: "Destino de prueba",
|
||
proxyTestTargetPlaceholder: "host:port — vacío = verif. endpoint, completar para prueba completa",
|
||
tunnelProfile: "Perfil de túnel",
|
||
tunnelProfileCustom: "Personalizado (solo esta conexión)",
|
||
tunnelProfileManaged: "Gestionado por un perfil de túnel compartido. Edítalo en Ajustes > Túneles; los cambios se aplican a todas las conexiones que lo usan en su próxima conexión.",
|
||
tunnelProfileMissing: "El perfil de túnel referenciado ya no existe. Selecciona otro perfil o cambia a personalizado.",
|
||
tunnelProfileMissingName: "Perfil de túnel no encontrado",
|
||
tunnelProfileManage: "Gestionar",
|
||
dremioArrowFlightSqlMode: "Arrow Flight SQL",
|
||
dremioLegacyJdbcMode: "JDBC heredado",
|
||
jdbcUrl: "URL JDBC",
|
||
jdbcUrlPlaceholder: "jdbc:postgresql://localhost:5432/base_de_datos",
|
||
jdbcDriverClass: "Clase del driver (opcional)",
|
||
jdbcDriverClassPlaceholder: "La mayoría de los drivers se registran automáticamente; usa com.vendor.jdbc.Driver si es necesario",
|
||
jdbcDriverPaths: "JARs del driver JDBC",
|
||
jdbcDriverSelectPlaceholder: "Seleccionar driver importado",
|
||
jdbcManualClasspath: "Classpath manual",
|
||
jdbcManualClasspathCount: "{count} rutas",
|
||
jdbcDriverPathsPlaceholder: "/ruta/al/driver.jar\n/ruta/a/otro-driver.jar",
|
||
jdbcDriverBrowse: "Seleccionar JAR del driver JDBC",
|
||
jdbcDocs: "Ver documentación JDBC",
|
||
jdbcPluginHint: "Instala primero el plugin JDBC de DBX y luego importa el JAR del driver JDBC del proveedor.",
|
||
jdbcxExtensions: "Extensiones JDBCX",
|
||
jdbcxHighPrivilegeExtensions: "Permitir extensiones con privilegios elevados",
|
||
jdbcxHighPrivilegeExtensionsWarning: "Desactivado de forma predeterminada. Al activarlo, Shell, Script, Web, MCP y otras extensiones pueden ejecutar comandos locales o acceder a la red.",
|
||
dmCompatHint: "Requiere el driver ODBC DM8 instalado en el sistema.",
|
||
dmDownload: "Descargar desde Dameng",
|
||
mongoLegacyHint: "Usa Legacy para servidores MongoDB antiguos, especialmente versiones anteriores a 4.2. Si falla la autenticación y el usuario se creó en admin, define Auth DB como admin.",
|
||
mongoTlsAllowInvalidCertificates: "Desactivar verificación de certificado TLS",
|
||
mongoTlsAllowInvalidCertificatesHint: "Se asigna a tlsAllowInvalidCertificates=true y desactiva toda la validación de certificados, no solo la del nombre de host. Aumenta el riesgo de MITM. Suele ser necesario para AWS DocumentDB a través de un túnel SSH.",
|
||
mongoRetryWrites: "Reintentar escrituras",
|
||
mongoRetryWritesHint: "Se asigna a retryWrites. Desactívalo para AWS DocumentDB, que no admite escrituras reintentables.",
|
||
compatible: "Compatible",
|
||
mainstream: "Popular",
|
||
color: "Color",
|
||
colorNone: "Sin color",
|
||
colorGreen: "Verde",
|
||
colorYellow: "Amarillo",
|
||
colorOrange: "Naranja",
|
||
colorRed: "Rojo",
|
||
colorBlue: "Azul",
|
||
colorPurple: "Morado",
|
||
colorCustom: "Color personalizado",
|
||
cancelConnecting: "Cancelar conexión",
|
||
connectCancelled: "Conexión cancelada",
|
||
kafkaKerberosPrincipal: "Principal",
|
||
kafkaKerberosKeytab: "Keytab",
|
||
kafkaKerberosServiceName: "Nombre del servicio",
|
||
kafkaKerberosKrb5Conf: "krb5.conf",
|
||
kafkaKerberosPrincipalRequired: "Kafka Kerberos principal no puede estar vacío",
|
||
kafkaKerberosKeytabRequired: "La ruta del keytab de Kafka Kerberos no puede estar vacía",
|
||
kafkaKerberosKeytabBrowse: "Elegir Keytab",
|
||
kafkaKerberosKrb5ConfBrowse: "Elegir krb5.conf",
|
||
kafkaKerberosKeytabPlaceholder: "Ruta en la máquina donde se ejecuta DBX Agent, por ejemplo /etc/security/keytabs/user.keytab",
|
||
kafkaKerberosKrb5ConfPlaceholder: "Opcional, ruta en la máquina donde se ejecuta DBX Agent, por ejemplo /etc/krb5.conf",
|
||
kafkaKerberosPathHint: "Las rutas de keytab y krb5.conf son leídas por DBX Agent y deben existir en la máquina donde se ejecuta DBX Agent; no se subirán archivos desde el navegador actual.",
|
||
kafkaKerberosAuthHint: "Iniciar sesión con GSSAPI + keytab. Si el servidor requiere transmisión cifrada, configure Security como SASL_SSL; de lo contrario, puede usar Auto o SASL_PLAINTEXT.",
|
||
mqSystem: "Sistema",
|
||
mqSystemPulsar: "Apache Pulsar",
|
||
mqSystemKafka: "Apache Kafka",
|
||
mqBootstrapServers: "Bootstrap Servers",
|
||
mqBootstrapServersPlaceholder: "127.0.0.1:9092",
|
||
mqBootstrapServersRequired: "Los bootstrap servers de Kafka son obligatorios",
|
||
mqBootstrapServersInvalid: "Los bootstrap servers de Kafka no son válidos",
|
||
mqKafkaConnectionSource: "Origen de conexión",
|
||
mqKafkaConnectionSourceBootstrap: "Bootstrap Servers",
|
||
mqKafkaConnectionSourceZooKeeper: "ZooKeeper (Kafka 1.x)",
|
||
mqKafkaZooKeeperServers: "Servidores ZooKeeper",
|
||
mqKafkaZooKeeperServersPlaceholder: "zk1:2181,zk2:2181/kafka",
|
||
mqSystemRabbitMq: "RabbitMQ",
|
||
mqRabbitmqAddresses: "Direcciones",
|
||
mqRabbitmqAddressesPlaceholder: "127.0.0.1:5672",
|
||
mqRabbitmqAddressesRequired: "Las direcciones de RabbitMQ son obligatorias",
|
||
mqRabbitmqAddressesInvalid: "Las direcciones de RabbitMQ no son válidas",
|
||
mqVirtualHost: "Host virtual",
|
||
mqVirtualHostPlaceholder: "/",
|
||
mqRabbitmqAdminUrl: "Management URL",
|
||
mqRabbitmqAdminUrlPlaceholder: "http://192.168.1.1:15672",
|
||
mqRabbitmqAdminUrlHint: "Déjalo vacío solo con el puerto AMQP predeterminado; los puertos AMQP personalizados requieren la URL de la API de administración configurada por separado. Admite rutas de proxy inverso como https://proxy/rmq",
|
||
mqRabbitmqUsernamePlaceholder: "Por defecto guest",
|
||
mqRabbitmqPasswordPlaceholder: "Por defecto guest",
|
||
mqSecurity: "Security",
|
||
mqSecurityAuto: "Auto",
|
||
mqAdminUrl: "Admin URL",
|
||
mqAdminUrlRequired: "La Admin URL de MQ es obligatoria",
|
||
mqAdminUrlInvalid: "La Admin URL de MQ no es válida",
|
||
mqAuth: "Autenticación",
|
||
mqAuthNone: "Ninguna",
|
||
mqAuthToken: "Token",
|
||
mqAuthBasic: "Basic",
|
||
mqAuthKerberos: "Kerberos",
|
||
mqAuthApiKey: "API Key",
|
||
mqAuthOauth2: "OAuth2",
|
||
mqToken: "Token",
|
||
mqSaslMechanism: "SASL Mechanism",
|
||
mqApiKeyHeader: "Header",
|
||
mqApiKeyValue: "Value",
|
||
mqOauthIssuerUrl: "Issuer URL",
|
||
mqOauthClientId: "Client ID",
|
||
mqOauthClientSecret: "Client Secret",
|
||
mqOauthAudience: "Audience",
|
||
mqOauthScope: "Scope",
|
||
mqOauthIssuerRequired: "La autenticación OAuth2 requiere una Issuer URL",
|
||
mqOauthClientIdRequired: "La autenticación OAuth2 requiere un Client ID",
|
||
mqOauthClientSecretRequired: "La autenticación OAuth2 requiere un Client Secret",
|
||
mqTls: "TLS",
|
||
mqTlsSkipVerify: "Omitir verificación de certificado",
|
||
mqPinnedVersion: "Versión fijada",
|
||
mqTokenSigning: "Firma de token del Broker",
|
||
mqTokenSigningNone: "Sin configurar",
|
||
mqTokenSigningKey: "Clave de firma",
|
||
mqTokenSigningKeyRequired: "La clave de firma del token del Broker es obligatoria",
|
||
mqTokenSigningKeyPlaceholderHs256: "Broker SECRET",
|
||
mqTokenSigningKeyPlaceholderRs256: "-----BEGIN PRIVATE KEY-----",
|
||
mqTokenSigningHint: "Elija según jwt.broker.token.mode del broker: SECRET usa HS256, PRIVATE usa RS256. La clave se almacena en los secretos de la conexión.",
|
||
databaseInfo: {
|
||
title: "Información de la base de datos",
|
||
open: "Abrir información de la base de datos {database}",
|
||
copy: "Copiar información de la base de datos",
|
||
sourceConfigured: "Configuración actual",
|
||
sourceTested: "Probada",
|
||
configuredDescription: "Muestra primero la información que se puede determinar desde el formulario; después de una prueba exitosa, se complementa con la versión devuelta por el servidor y los metadatos del controlador.",
|
||
testedDescription: "La siguiente información proviene de la conexión utilizada para esta prueba exitosa.",
|
||
productName: "Sistema de gestión de bases de datos",
|
||
productVersion: "Versión de la base de datos",
|
||
currentDatabase: "Base de datos actual",
|
||
serverComment: "Comentario del servidor",
|
||
serverCharset: "Conjunto de caracteres del servidor",
|
||
serverCollation: "Collation del servidor",
|
||
unquotedIdentifierCase: "Identificador sin comillas",
|
||
quotedIdentifierCase: "Identificador entrecomillado",
|
||
driverName: "Controlador",
|
||
driverVersion: "Versión del controlador",
|
||
jdbcVersion: "Versión de JDBC",
|
||
identifierCase: {
|
||
lower: "Minúsculas",
|
||
upper: "Mayúsculas",
|
||
mixed: "Mixto",
|
||
},
|
||
},
|
||
elasticsearchDirectMode: "Conexión directa",
|
||
elasticsearchKibanaProxyMode: "proxy de Kibana",
|
||
elasticsearchKibanaHost: "host de Kibana",
|
||
elasticsearchKibanaBasePath: "ruta base",
|
||
elasticsearchConnectivityCheckPath: "Ruta de conectividad",
|
||
elasticsearchConnectivityCheckPathPlaceholder: "/ o /my-index/_search",
|
||
mqSystemRocketMq: "Apache RocketMQ",
|
||
rocketmqNamesrvAddr: "Dirección de NameServer",
|
||
rocketmqNamesrvAddrPlaceholder: "127.0.0.1:9876",
|
||
rocketmqNamesrvAddrRequired: "La dirección de NameServer de RocketMQ no puede estar vacía",
|
||
rocketmqNamesrvAddrInvalid: "La dirección de NameServer de RocketMQ no es válida",
|
||
rocketmqClusterName: "Nombre del clúster",
|
||
rocketmqClusterNamePlaceholder: "Opcional, por ejemplo DefaultCluster",
|
||
rocketmqAccessKey: "Access Key",
|
||
rocketmqSecretKey: "Secret Key",
|
||
rocketmqAclAuth: "ACL",
|
||
jdbcMissingRuntimeDependencyHint: "El controlador JDBC actual carece de dependencias de ejecución. Utilice las coordenadas Maven en 'Administración de controladores' para instalar, o importe el controlador y todos los JAR de dependencia de una vez.",
|
||
showSystemSchemas: "Mostrar Schema del sistema",
|
||
showSystemSchemasHint: "Mostrar el Schema integrado/de metadatos para la conexión actual en la barra lateral y el selector de Schema.",
|
||
sshHostKeyVerifyTitle: "Confirmar clave de host SSH desconocida",
|
||
sshHostKeyVerifyMessage: "No se puede confirmar la autenticidad del host '{host}:{port}'. Para evitar ataques de intermediario, verifique la huella digital de la clave del host con el administrador del servidor antes de continuar.",
|
||
sshHostKeyVerifyKeyType: "Tipo de clave",
|
||
sshHostKeyVerifyFingerprint: "Huella digital",
|
||
sshHostKeyVerifyRemember: "Confiar en este host (recordar esta clave para futuras conexiones)",
|
||
sshHostKeyVerifyAccept: "Aceptar y conectar",
|
||
sshHostKeyVerifyReject: "Cancelar",
|
||
sshHostKeyNoticeChanged: "La clave del host {host}:{port} ha cambiado, puede haber un ataque de intermediario. Si es esperado, elimine el registro antiguo y vuelva a conectar.",
|
||
sshHostKeyNoticeRejected: "Ha rechazado la verificación de la clave del host {host}:{port}. La conexión se ha abortado, no se enviaron credenciales.",
|
||
sshHostKeyNoticeGeneric: "Falló la verificación de la clave del host SSH {host}:{port}.",
|
||
sshHostKeyNoticeLearnFailed: "No se pudo guardar la clave de host de {host}:{port} — este host solo es de confianza en esta sesión, la próxima conexión requerirá confirmación nuevamente.",
|
||
damengJvmOptions: "Propiedades del sistema JVM",
|
||
damengJvmOptionsPlaceholder: "-Djava.net.preferIPv4Stack=true",
|
||
damengJvmOptionsHint: "Una propiedad -Dkey o -Dkey=value por línea. Los valores con espacios no necesitan comillas del shell.",
|
||
damengJvmOptionsInvalid: "La línea {line} debe ser una propiedad -Dkey o -Dkey=value sin comillas del shell.",
|
||
zookeeperClusterInputHint: "El clúster ZooKeeper puede completarse con todos los nodos en la URL superior (por ejemplo, zookeeper://zk-1:2181,zk-2:2181/app), o en el Connect String a continuación.",
|
||
zookeeperAuthMethod: "Método de autenticación",
|
||
zookeeperAuthDigest: "Digest (predeterminado)",
|
||
zookeeperAuthSaslDigest: "SASL DIGEST-MD5",
|
||
},
|
||
editor: {
|
||
duckdbDraining: "La consulta anterior de DuckDB aún se está deteniendo. Vuelva a intentarlo en breve.",
|
||
pressToExecute: "Presiona {mod}+Enter para ejecutar",
|
||
pressToSaveSql: "Presiona {mod}+S para guardar el SQL",
|
||
queryTimeoutError: "La consulta agotó el tiempo ({seconds}s). Comprueba la conexión a la base de datos.",
|
||
changeQueryTimeout: "Cambiar tiempo de espera de consulta",
|
||
connectionMayBeLost: "Es posible que la conexión se haya perdido. Actualiza los datos e inténtalo de nuevo.",
|
||
showResultsPane: "Mostrar resultados",
|
||
hideResultsPane: "Ocultar resultados",
|
||
noDatabase: "Sin base de datos seleccionada",
|
||
unsavedChangesTitle: "Cambios sin guardar",
|
||
unsavedChangesMessage: '"{title}" tiene cambios sin guardar que se perderán si se cierra. ¿Guardar antes de cerrar?',
|
||
unsavedChangesBatchCloseMessage: "Algunas pestañas que vas a cerrar tienen cambios sin guardar que se perderán. ¿Guardar antes de continuar?",
|
||
unsavedChangesBatchCloseMultipleMessage: '{count} pestañas SQL que vas a cerrar tienen cambios sin guardar. DBX muestra actualmente "{title}". ¿Guardar antes de continuar?',
|
||
unsavedChangesAppCloseMessage: '"{title}" tiene cambios SQL sin guardar que se perderán si sales de DBX. ¿Guardar antes de salir?',
|
||
unsavedChangesAppCloseMultipleMessage: '{count} pestañas SQL tienen cambios sin guardar. DBX muestra actualmente "{title}". Se perderán si sales de DBX. ¿Guardar antes de salir?',
|
||
unsavedChangesViewList: "Ver {count} pestañas",
|
||
unsavedChangesListTitle: "Pestañas sin guardar ({count})",
|
||
discardChanges: "Descartar",
|
||
discardAllChanges: "Descartar todo",
|
||
saveAllChanges: "Guardar todo",
|
||
selectConnection: "Seleccionar conexión",
|
||
searchConnection: "Buscar conexiones...",
|
||
selectCatalog: "Seleccionar catálogo",
|
||
searchCatalog: "Buscar catálogos...",
|
||
selectDatabase: "Seleccionar base de datos",
|
||
selectDatabaseRequired: "Selecciona una base de datos primero",
|
||
searchDatabase: "Buscar bases de datos...",
|
||
selectSchema: "Seleccionar esquema",
|
||
searchSchema: "Buscar esquemas...",
|
||
setDefaultDatabase: "Establecer como predeterminada",
|
||
defaultDatabase: "Predeterminada",
|
||
clearDatabase: "Limpiar base de datos",
|
||
exPasteNoValues: "El portapapeles no contiene valores para una condición IN",
|
||
exPasteNotList: "No se detectó una lista de varios valores convertible",
|
||
exPasteTooLarge: "El contenido del portapapeles es demasiado grande. Máximo {limit} caracteres.",
|
||
exPasteTooManyValues: "Demasiados valores. Máximo {limit}.",
|
||
exPasteClipboardReadFailed: "No se pudo leer el portapapeles: {message}",
|
||
exPastePasted: "Se pegaron {count} valores de condición IN",
|
||
completion: {
|
||
nullValue: "Valor NULL",
|
||
isNull: "Comprobar si es NULL",
|
||
isNotNull: "Comprobar si no es NULL",
|
||
stringLiteral: "Literal de cadena",
|
||
numericLiteral: "Literal numérico",
|
||
booleanValue: "Valor booleano",
|
||
starExpansionColumns: "{count} columnas",
|
||
functionDescriptions: {
|
||
COUNT: "Devuelve el número de filas",
|
||
SUM: "Devuelve la suma de una columna numérica",
|
||
AVG: "Devuelve el promedio de una columna numérica",
|
||
MIN: "Devuelve el valor mínimo",
|
||
MAX: "Devuelve el valor máximo",
|
||
GROUP_CONCAT: "Concatena valores de grupo en una cadena",
|
||
STRING_AGG: "Concatena cadenas de grupo",
|
||
CONCAT: "Concatena múltiples cadenas",
|
||
CONCAT_WS: "Concatena cadenas con separador",
|
||
SUBSTRING: "Extrae una subcadena",
|
||
REPLACE: "Reemplaza contenido en una cadena",
|
||
TRIM: "Elimina espacios al inicio y final",
|
||
UPPER: "Convierte a mayúsculas",
|
||
LOWER: "Convierte a minúsculas",
|
||
LENGTH: "Devuelve la longitud de la cadena",
|
||
REGEXP_REPLACE: "Reemplaza usando expresión regular",
|
||
DATE_FORMAT: "Formatea una fecha con el formato dado",
|
||
DATEDIFF: "Calcula la diferencia entre dos fechas",
|
||
DATE_ADD: "Añade un intervalo a una fecha",
|
||
DATE_SUB: "Resta un intervalo de una fecha",
|
||
EXTRACT: "Extrae una parte de la fecha",
|
||
NOW: "Devuelve la fecha y hora actual",
|
||
CURRENT_DATE: "Devuelve la fecha actual",
|
||
CURRENT_TIME: "Devuelve la hora actual",
|
||
CURRENT_TIMESTAMP: "Devuelve la fecha y hora actual",
|
||
CURDATE: "Devuelve la fecha actual",
|
||
CURTIME: "Devuelve la hora actual",
|
||
LOCALTIME: "Devuelve la hora local actual",
|
||
LOCALTIMESTAMP: "Devuelve la fecha y hora local actual",
|
||
UTC_DATE: "Devuelve la fecha UTC actual",
|
||
UTC_TIME: "Devuelve la hora UTC actual",
|
||
UTC_TIMESTAMP: "Devuelve la fecha y hora UTC actual",
|
||
SYSDATE: "Devuelve la fecha y hora actual",
|
||
DATE: "Extrae la parte de fecha",
|
||
TIME: "Extrae la parte de hora",
|
||
TIMESTAMPDIFF: "Devuelve la diferencia entre dos fechas y horas",
|
||
YEAR: "Extrae el año",
|
||
MONTH: "Extrae el mes",
|
||
DAY: "Extrae el día",
|
||
HOUR: "Extrae la hora",
|
||
MINUTE: "Extrae el minuto",
|
||
SECOND: "Extrae el segundo",
|
||
DAYOFWEEK: "Devuelve el índice del día de la semana",
|
||
DAYOFYEAR: "Devuelve el día del año",
|
||
LAST_DAY: "Devuelve el último día del mes",
|
||
STR_TO_DATE: "Convierte una cadena en fecha",
|
||
IF: "Devuelve un valor según una condición",
|
||
LEFT: "Devuelve los caracteres más a la izquierda",
|
||
RIGHT: "Devuelve los caracteres más a la derecha",
|
||
SUBSTRING_INDEX: "Devuelve una subcadena antes de un delimitador",
|
||
CHAR_LENGTH: "Devuelve la longitud en caracteres",
|
||
INSTR: "Devuelve la posición de una subcadena",
|
||
LOCATE: "Devuelve la posición de una subcadena",
|
||
LPAD: "Rellena una cadena por la izquierda",
|
||
RPAD: "Rellena una cadena por la derecha",
|
||
FIND_IN_SET: "Devuelve el índice en una lista separada por comas",
|
||
RAND: "Devuelve un valor flotante aleatorio",
|
||
MD5: "Devuelve el hash MD5",
|
||
SHA1: "Devuelve el hash SHA1",
|
||
SHA2: "Devuelve el hash SHA2",
|
||
ROUND: "Redondea a los decimales especificados",
|
||
FLOOR: "Redondea hacia abajo",
|
||
CEIL: "Redondea hacia arriba",
|
||
ABS: "Devuelve el valor absoluto",
|
||
MOD: "Devuelve el resto de la división",
|
||
COALESCE: "Devuelve el primer argumento no NULL",
|
||
IFNULL: "Devuelve un valor de reemplazo si es NULL",
|
||
NULLIF: "Devuelve NULL si los argumentos son iguales",
|
||
CAST: "Convierte una expresión a un tipo de destino",
|
||
JSON_EXTRACT: "Extrae un valor de JSON",
|
||
JSON_VALUE: "Extrae un valor escalar de JSON",
|
||
JSON_OBJECT: "Crea un objeto JSON",
|
||
JSON_ARRAY: "Crea un array JSON",
|
||
},
|
||
},
|
||
contextMenu: {
|
||
executeSelection: "Ejecutar seleccion",
|
||
executeCurrent: "Ejecutar SQL",
|
||
export: "Exportar",
|
||
exportQueryResultTo: "Exportar el conjunto de resultados de la consulta actual a {format}",
|
||
copySelection: "Copiar seleccion",
|
||
sendToAi: "Enviar a IA",
|
||
uppercaseSelection: "Convertir a mayusculas",
|
||
lowercaseSelection: "Convertir a minusculas",
|
||
selectAll: "Seleccionar todo",
|
||
delimitedList: "Convertir a lista delimitada",
|
||
findReplace: "Buscar/Reemplazar",
|
||
deleteEmptyLines: "Eliminar líneas vacías",
|
||
},
|
||
search: {
|
||
find: "Buscar",
|
||
replace: "Reemplazar",
|
||
replaceAll: "Reemplazar todo",
|
||
caseSensitive: "Distinguir mayúsculas",
|
||
regex: "Expresión regular",
|
||
collapseReplace: "Contraer reemplazo",
|
||
expandReplace: "Expandir reemplazo",
|
||
prevMatch: "Anterior (Shift+Enter)",
|
||
nextMatch: "Siguiente (Enter)",
|
||
selectAll: "Seleccionar todas las coincidencias",
|
||
selectAllLimit: "Seleccionar todas las coincidencias (hasta {limit})",
|
||
selectionTruncated: "Se encontraron {total} coincidencias; se seleccionaron las primeras {limit}.",
|
||
selectionLimitSummary: "Seleccionadas {limit}/{total}",
|
||
close: "Cerrar (Esc)",
|
||
noResults: "Sin resultados",
|
||
inSelection: "En la selección",
|
||
},
|
||
executionPicker: {
|
||
title: "Execution Target",
|
||
currentStatement: "Current SQL",
|
||
allStatements: "All SQL",
|
||
currentCommand: "Current command",
|
||
allCommands: "All commands",
|
||
},
|
||
statementExecutionRunning: "{count} sentencias en ejecución",
|
||
statementExecutionSucceeded: "{count} sentencias exitosas",
|
||
statementExecutionFailed: "{count} sentencias fallidas",
|
||
delimitedList: {
|
||
title: "Convertir a lista delimitada",
|
||
columnDelimiter: "Delimitador de columna",
|
||
resultDelimiter: "Delimitador de resultado",
|
||
quoteChar: "Carácter de comillas para cadenas",
|
||
wrapColumn: "Ajustar en columna",
|
||
prefixText: "Texto de prefijo",
|
||
suffixText: "Texto de sufijo",
|
||
preview: "Vista previa",
|
||
emptyPreview: "Sin contenido para previsualizar",
|
||
confirm: "Confirmar",
|
||
selectFirst: "Seleccione el texto de la lista",
|
||
},
|
||
},
|
||
tabs: {
|
||
sql: "SQL",
|
||
table: "Tabla",
|
||
tableData: "Datos de tabla",
|
||
redis: "Redis",
|
||
etcd: "etcd",
|
||
zookeeper: "ZooKeeper",
|
||
vector: "Vector",
|
||
users: "Usuarios y Privilegios",
|
||
executionSummary: "Resumen",
|
||
mongo: "Mongo",
|
||
objects: "Objetos",
|
||
tooltipTitle: "Título:",
|
||
tooltipConnection: "Conexión:",
|
||
tooltipGroup: "Grupo:",
|
||
tooltipDatabase: "Base de datos:",
|
||
tooltipTable: "Tabla:",
|
||
tooltipCollection: "Colección:",
|
||
tooltipSchema: "Esquema:",
|
||
resultN: "Resultado {n}",
|
||
runN: "Ejecutar {n}",
|
||
resultRuns: "Ejecuciones de resultado",
|
||
resultSets: "Conjuntos de resultados",
|
||
removeRun: "Eliminar ejecución {n}",
|
||
autoKeepResults: "Conservar resultados automáticamente",
|
||
autoKeepResultsEnabled: "Conservación automática activada",
|
||
autoKeepResultsDisabled: "Conservación automática desactivada",
|
||
autoRefresh: "Actualizar resultados automáticamente",
|
||
autoRefreshShort: "Auto",
|
||
autoRefreshEvery: "Actualizar cada {seconds} s",
|
||
startAutoRefresh: "Iniciar actualización automática",
|
||
stopAutoRefresh: "Detener actualización automática",
|
||
missingResultRun: "Este resultado ya no está disponible",
|
||
exportResultArchive: "Guardar archivo de resultados",
|
||
importResultArchive: "Importar archivo de resultados",
|
||
importedResultArchive: "Resultados importados",
|
||
resultArchiveExported: "Resultados exportados",
|
||
resultArchiveImported: "Resultados importados",
|
||
resultArchiveUnavailable: "No hay resultados guardados disponibles para exportar",
|
||
resultArchiveImportInvalid: "No se pudo abrir este archivo de resultados",
|
||
resultArchiveExportFailed: "Error al exportar resultados: {message}",
|
||
resultArchiveImportFailed: "Error al importar resultados: {message}",
|
||
scrollLeft: "Desplazar pestañas a la izquierda",
|
||
scrollRight: "Desplazar pestañas a la derecha",
|
||
openTabs: "Pestañas abiertas",
|
||
fixedTabs: "Pestañas fijadas",
|
||
openDataTabs: "Tablas abiertas",
|
||
gridfs: "GridFS",
|
||
etcdDashboard: "Panel de etcd",
|
||
etcdAccessControl: "Control de acceso de etcd",
|
||
},
|
||
executionSummary: {
|
||
empty: "Sin resumen",
|
||
executing: "Ejecutando...",
|
||
finished: "Ejecución finalizada",
|
||
statement: "Sentencia",
|
||
sql: "SQL",
|
||
status: "Estado",
|
||
type: "Tipo",
|
||
rows: "Filas",
|
||
affected: "Afectadas",
|
||
time: "Tiempo",
|
||
success: "Éxito",
|
||
error: "Error",
|
||
returnedTable: "Devolvió una tabla de resultados de {count} columnas",
|
||
noTable: "No se devolvió ninguna tabla de resultados",
|
||
noSql: "SQL no disponible",
|
||
navigationHint: "Haz clic para previsualizar el SQL; haz doble clic para enfocarlo en el editor.",
|
||
statuses: {
|
||
pending: "Pendiente",
|
||
running: "Ejecutando",
|
||
success: "Éxito",
|
||
error: "Error",
|
||
skipped: "No ejecutada",
|
||
cancelled: "Cancelada",
|
||
},
|
||
},
|
||
chart: {
|
||
title: "Gráfico",
|
||
type: "Tipo",
|
||
line: "Línea",
|
||
bar: "Barras",
|
||
pie: "Circular",
|
||
noNumericData: "No hay datos numéricos disponibles para graficar",
|
||
},
|
||
grid: {
|
||
rows: "{count} filas",
|
||
totalRows: "Total {count} filas",
|
||
loadedRows: "{count} filas cargadas",
|
||
totalRowCount: "({count} en total)",
|
||
totalRowCountAtLeast: "(al menos {count} en total)",
|
||
totalRowCountEstimated: "(aprox. {count})",
|
||
totalRowCountLoading: "(contando...)",
|
||
loadingMore: "Cargando más datos...",
|
||
allLoaded: "todo cargado",
|
||
calculateTotalRows: "Contar filas totales",
|
||
calculateTotalRowsInline: "(contar filas totales)",
|
||
calculateTotalRowsFailed: "Error al contar: {message}",
|
||
rowsAffected: "{count} filas afectadas",
|
||
querySuccess: "Consulta ejecutada exitosamente",
|
||
noRows: "Sin datos",
|
||
noRowsDescription: "Este conjunto de resultados no tiene registros.",
|
||
noSearchResults: "Sin coincidencias",
|
||
noSearchResultsDescription: "Intenta con otra palabra clave.",
|
||
noFilteredRows: "Ninguna fila coincide con el filtro",
|
||
noFilteredRowsDescription: "Ajusta el texto de búsqueda o el filtro de estado de filas.",
|
||
copy: "Copiar",
|
||
mongoJsonPreview: "Vista previa de JSON",
|
||
mongoJsonPreviewEmpty: "Selecciona un documento de MongoDB para obtener una vista previa.",
|
||
copyJson: "Copiar JSON",
|
||
copyDdl: "Copiar DDL",
|
||
copyCell: "Copiar celda",
|
||
copyRow: "Copiar fila (JSON)",
|
||
copyColumnJson: "Copiar columna (JSON)",
|
||
copyColumnNames: "Copiar nombres de columnas",
|
||
copyColumnNamesSelected: "Copiar nombres de columnas seleccionadas ({count})",
|
||
copyColumnNamesTitle: "Copiar nombres de columnas ({count})",
|
||
copyColumnNamesSeparator: "Separador de columnas",
|
||
copyColumnNamesQuote: "Escapar nombres de columnas",
|
||
copyColumnNamesPreview: "Vista previa",
|
||
copyAll: "Copiar todo (TSV)",
|
||
selectionSum: "SUM: {value}",
|
||
selectionCells: "{count} celdas",
|
||
clearSelection: "Limpiar selección",
|
||
export: "Exportar",
|
||
exportCsv: "Exportar CSV",
|
||
exportXlsx: "Exportar XLSX",
|
||
exportXlsxWithSql: "Exportar XLSX con SQL",
|
||
exportCurrentPageCsv: "Exportar página actual como CSV",
|
||
exportCurrentPageXlsx: "Exportar página actual como XLSX",
|
||
exportCurrentPageXlsxWithSql: "Exportar página actual como XLSX con SQL",
|
||
exportCurrentPageJson: "Exportar página actual como JSON",
|
||
exportCurrentPageMarkdown: "Exportar página actual como Markdown",
|
||
exportCurrentPageSql: "Exportar página actual como SQL INSERT",
|
||
exportCurrentPageTxt: "Exportar página actual como TXT",
|
||
exportCurrentResultCsv: "Exportar todos los datos del resultado actual como CSV",
|
||
exportCurrentResultXlsx: "Exportar todos los datos del resultado actual como XLSX",
|
||
exportCurrentResultXlsxWithSql: "Exportar todos los datos del resultado actual como XLSX con SQL",
|
||
exportCurrentResultJson: "Exportar todos los datos del resultado actual como JSON",
|
||
exportCurrentResultMarkdown: "Exportar todos los datos del resultado actual como Markdown",
|
||
exportCurrentResultSql: "Exportar todos los datos del resultado actual como SQL INSERT",
|
||
exportCurrentResultTxt: "Exportar todos los datos del resultado actual como TXT",
|
||
exportAllResultsXlsx: "Exportar todos los resultados de esta ejecución como XLSX",
|
||
exportAllResultsXlsxWithSql: "Exportar todos los resultados de esta ejecución como XLSX con SQL",
|
||
exportJson: "Exportar JSON",
|
||
exportMarkdown: "Exportar Markdown",
|
||
exportSql: "Exportar SQL INSERT",
|
||
exportTxt: "Exportar TXT",
|
||
exportSelectedRowsCsv: "Exportar filas seleccionadas como CSV",
|
||
exportSelectedRowsXlsx: "Exportar filas seleccionadas como XLSX",
|
||
exportSelectedRowsXlsxWithSql: "Exportar filas seleccionadas como XLSX con SQL",
|
||
exportSelectedRowsJson: "Exportar filas seleccionadas como JSON",
|
||
exportSelectedRowsMarkdown: "Exportar filas seleccionadas como Markdown",
|
||
exportSelectedRowsSql: "Exportar filas seleccionadas como SQL INSERT",
|
||
exportSelectedRowsTxt: "Exportar filas seleccionadas como TXT",
|
||
exported: "Exportado",
|
||
exportFailed: "Error al exportar: {message}",
|
||
copied: "Copiado",
|
||
copyFailed: "Error al copiar: {message}",
|
||
previewSqlEmpty: "No hay cambios SQL pendientes para previsualizar",
|
||
renderMode: "Modo de renderizado",
|
||
domRenderMode: "DOM",
|
||
canvasRenderMode: "Canvas",
|
||
renderModeHint: "Alterna entre el renderizado Canvas y la cuadrícula DOM de respaldo.",
|
||
tableFontFamily: "Fuente de la tabla",
|
||
tableFontSize: "Tamaño de fuente de la tabla",
|
||
filter: "Filtrar",
|
||
conditionHistoryEmpty: "Sin historial aún",
|
||
conditionHistoryNoMatches: "Sin historial coincidente",
|
||
filterBuilder: "Filtros",
|
||
filterBuilderTitle: "Filtros",
|
||
filterBuilderHint: "Crea condiciones visuales y combínalas con el campo WHERE.",
|
||
filterBuilderSummary: "{count} reglas",
|
||
filterBuilderAddRule: "Agregar regla",
|
||
filterBuilderColumn: "Columna",
|
||
filterBuilderValue: "Valor",
|
||
filterBuilderValueShortcutHint: "Shift+Enter puede agregar una regla",
|
||
filterBuilderValues: "Valores (separados por comas o saltos de línea)",
|
||
filterBuilderRangeStart: "Valor inicial",
|
||
filterBuilderRangeEnd: "Valor final",
|
||
filterBuilderNoValue: "No requiere valor",
|
||
filterBuilderEmpty: "Agrega una regla para empezar a filtrar filas.",
|
||
resetFilterBuilder: "Restablecer reglas",
|
||
filterBuilderEquals: "Igual a",
|
||
filterBuilderNotEquals: "Distinto de",
|
||
filterBuilderContains: "Contiene",
|
||
filterBuilderNotContains: "No contiene",
|
||
filterBuilderGreaterThan: "Mayor que",
|
||
filterBuilderLessThan: "Menor que",
|
||
filterBuilderIn: "En lista",
|
||
filterBuilderNotIn: "Fuera de lista",
|
||
filterBuilderBetween: "En rango",
|
||
filterBuilderNotBetween: "Fuera de rango",
|
||
filterBuilderIsNull: "Es NULL",
|
||
filterBuilderIsNotNull: "No es NULL",
|
||
columnActions: "Acciones de columna",
|
||
localFilter: "Filtro local de valores",
|
||
localFilterFor: "Valores locales para '{column}'",
|
||
databaseValueFilter: "Filtro de valores de base de datos",
|
||
databaseValueFilterFor: "Valores de base de datos para '{column}'",
|
||
columnFormatter: "Formateador de columna",
|
||
columnFormatterFor: "Formateador para '{column}'",
|
||
columnFormatterHint: "Solo formatea la visualización; los valores sin procesar no cambian.",
|
||
formatterType: "Tipo",
|
||
formatterDatetime: "Marca de tiempo Unix",
|
||
formatterJsonPath: "Ruta JSON",
|
||
formatterMask: "Enmascarar texto",
|
||
formatterCustomTemplate: "Plantilla personalizada",
|
||
formatterTimestampUnit: "Unidad de marca de tiempo",
|
||
formatterUnitAuto: "Automático",
|
||
formatterUnitSeconds: "Segundos",
|
||
formatterUnitMilliseconds: "Milisegundos",
|
||
formatterDatetimePattern: "Patrón de fecha y hora",
|
||
formatterDatetimePatternPlaceholder: "Seleccionar o ingresar el formato de fecha y hora",
|
||
formatterDatetimePatternEmpty: "Formato ISO8601 por defecto",
|
||
formatterDatetimeTimezone: "Zona horaria",
|
||
formatterDatetimeTimezonePlaceholder: "Seleccionar o ingresar la zona horaria",
|
||
formatterJsonPathInput: "Ruta JSON",
|
||
formatterMaskPrefix: "Prefijo visible",
|
||
formatterMaskSuffix: "Sufijo visible",
|
||
formatterSavedCustom: "Plantillas guardadas",
|
||
formatterNewCustom: "Nueva plantilla",
|
||
formatterCustomName: "Nombre de plantilla",
|
||
formatterCustomNamePlaceholder: "Ejemplo: Etiqueta de usuario",
|
||
formatterCustomTemplateInput: "Plantilla",
|
||
formatterCustomTemplateHint: "Variables disponibles: ${value}, ${upper}, ${lower}, ${length}. Asígnale un nombre para guardarla en la lista.",
|
||
formatterPreview: "Vista previa",
|
||
saveFormatter: "Guardar",
|
||
clearFormatter: "Limpiar",
|
||
searchValues: "Buscar valores...",
|
||
loadingValues: "Cargando valores...",
|
||
serverValuesLimited: "Mostrando los primeros {count} valores",
|
||
filterTypedValue: "Usar '{value}'",
|
||
value: "Valor",
|
||
count: "Conteo",
|
||
applyFilter: "Aplicar filtro",
|
||
clearLocalFilters: "Limpiar filtros locales de valores",
|
||
clearLocalFiltersShort: "Limpiar local",
|
||
localFiltersActive: "{count} filtros locales de valores",
|
||
localFilterMoreValues: " +{count} más",
|
||
columnVisibility: "Columnas",
|
||
columnVisibilityHint: "Al menos una columna permanece visible.",
|
||
columnReorderHint: "Arrastra para reordenar las columnas.",
|
||
columnReorderSearchHint: "Borra la búsqueda para reordenar las columnas.",
|
||
searchColumns: "Buscar columnas...",
|
||
dragColumnToReorder: "Arrastra el encabezado para reordenar",
|
||
invertColumnVisibility: "Invertir",
|
||
resetColumnOrder: "Restablecer orden",
|
||
showAllColumns: "Mostrar todo",
|
||
viewOptions: "Opciones de vista",
|
||
resultRunDisplayMode: "Pestañas de resultados",
|
||
resultRunDisplayList: "Lista",
|
||
resultRunDisplayTabs: "Pestañas",
|
||
hideNullColumns: "Ocultar NULL",
|
||
hideNullColumnsHint: "Alterna columnas cuyos valores son todos NULL en el resultado actual.",
|
||
moreValues: "{count} valores más, sigue escribiendo para acotar los resultados",
|
||
filterByValue: "Filtrar por este valor",
|
||
filterExcludeValue: "Excluir este valor",
|
||
filterLike: "Contiene este valor",
|
||
filterNotLike: "No contiene este valor",
|
||
filterLessThan: "Menor que este valor",
|
||
filterGreaterThan: "Mayor que este valor",
|
||
filterIsNull: "Mostrar valores NULL",
|
||
filterIsNotNull: "Mostrar valores no NULL",
|
||
clearFilter: "Limpiar filtro",
|
||
sort: "Ordenar",
|
||
sortAscending: "Orden ascendente",
|
||
sortDescending: "Orden descendente",
|
||
sortCurrentPageAscending: "Ordenar página actual ascendente",
|
||
sortCurrentPageDescending: "Ordenar página actual descendente",
|
||
sortDatabaseAscending: "Ordenar base de datos ascendente",
|
||
sortDatabaseDescending: "Ordenar base de datos descendente",
|
||
clearSort: "Limpiar orden",
|
||
freezeToColumn: "Inmovilizar hasta esta columna",
|
||
freezeSelectedColumns: "Inmovilizar columnas seleccionadas",
|
||
unfreezeColumns: "Desinmovilizar columnas",
|
||
pasted: "¡Pegado!",
|
||
search: "Buscar...",
|
||
searchOrWhere: "Buscar, o ingresar una cláusula WHERE...",
|
||
applyWhere: "Aplicar WHERE",
|
||
filterRows: "Filtrar filas",
|
||
filterAllRows: "Todas las filas",
|
||
filterChangedRows: "Modificadas",
|
||
page: "Página {page}",
|
||
rowsPerPage: "Filas por página",
|
||
customRowsPerPage: "Filas personalizadas",
|
||
applyPageSize: "Aplicar",
|
||
save: "Guardar",
|
||
discard: "Descartar",
|
||
dismiss: "Cerrar",
|
||
quickEntryDraftPlaceholder: "Nueva",
|
||
addRow: "Agregar fila",
|
||
insertMultipleRows: "Insertar varias filas…",
|
||
insertRowsTitle: "Insertar varias filas",
|
||
insertRowsDescription: "Crea este número de filas de borrador sin guardar. Las filas vacías se ignoran al guardar; después de guardar, el orden de visualización sigue la consulta actual.",
|
||
insertRowCountLabel: "Número de filas",
|
||
insertRowCountInvalid: "Introduce un número entero mayor que 0.",
|
||
insertRowsMaxHint: "Hasta {max} filas.",
|
||
insertRowsConfirm: "Insertar",
|
||
insertAboveSelected: "Insertar encima de la fila seleccionada",
|
||
insertBelowSelected: "Insertar debajo de la fila seleccionada",
|
||
insertRowPositionLabel: "Posición",
|
||
insertPositionAbove: "Encima de la fila seleccionada",
|
||
insertPositionBelow: "Debajo de la fila seleccionada",
|
||
insertPositionEnd: "Al final de los datos",
|
||
cloneRow: "Clonar como fila nueva",
|
||
deleteRow: "Eliminar fila",
|
||
deleteRows: "Eliminar {count} filas",
|
||
cloneRows: "Clonar {count} como filas nuevas",
|
||
restoreRows: "Restaurar {count} filas",
|
||
copyRows: "Copiar {count} filas (JSON)",
|
||
copyColumnsJson: "Copiar {count} columnas (JSON)",
|
||
selectedRows: "{count} filas seleccionadas",
|
||
restoreRow: "Restaurar fila",
|
||
statusClean: "Sin cambios",
|
||
statusNew: "Elementos nuevos",
|
||
statusEdited: "Elementos modificados",
|
||
statusDeleted: "Elementos eliminados",
|
||
pendingChanges: "{count} pendientes",
|
||
selectedCells: "{count} seleccionadas",
|
||
bulkEditSelection: "Edición masiva de selección",
|
||
bulkEditTitle: "Edición masiva de selección",
|
||
bulkEditDescription: "Establecer {count} celda(s) seleccionada(s) en este valor.",
|
||
bulkEditValuePlaceholder: "Valor, o NULL",
|
||
applyBulkEdit: "Aplicar",
|
||
generateValue: "Generar valor",
|
||
generateEmptyString: "Cadena vacía",
|
||
generateNull: "NULL",
|
||
generateCurrentDatetime: "Fecha y hora actuales",
|
||
generateCurrentDate: "Fecha actual",
|
||
generateUuid: "UUID",
|
||
generateIncrementId: "ID incremental",
|
||
generateSnowflakeId: "ID Snowflake",
|
||
generateSequenceDescription: "Generar valores consecutivos para {count} celda(s) seleccionada(s). Introduzca el valor inicial.",
|
||
generateStartInvalid: "El valor inicial debe ser un número entero",
|
||
generatedValuesApplied: "Se generaron {count} valor(es)",
|
||
cellDetails: "Detalles de celda",
|
||
cellDetailLayoutBottom: "Mover abajo",
|
||
cellDetailLayoutRight: "Mover a la derecha",
|
||
collapseCellDetailMetadata: "Contraer metadatos de celda",
|
||
expandCellDetailMetadata: "Expandir metadatos de celda",
|
||
openCellDetailsDialog: "Abrir detalles de celda",
|
||
rowDetails: "Detalles de fila",
|
||
rowDetailsFor: "Detalles de fila {row}",
|
||
openRowDetailsDialog: "Abrir detalles de fila",
|
||
openColumnDetailsDialog: "Abrir detalles de columna",
|
||
columnDetailsFor: "Detalles de columna {column}",
|
||
columnsCount: "{count} columnas",
|
||
rowCount: "Filas",
|
||
rowsCount: "{count} filas",
|
||
fieldIndex: "N.º",
|
||
cellValue: "Valor",
|
||
valueEditor: "Editor de valor",
|
||
hexViewer: "Visor hexadecimal",
|
||
hexViewerByteCount: "{count} bytes",
|
||
hexViewerOffset: "Desplazamiento",
|
||
hexViewerHex: "Hex",
|
||
hexViewerAscii: "ASCII",
|
||
hexViewerEmpty: "No hay bytes binarios para mostrar.",
|
||
imagePreview: "Vista previa de imagen",
|
||
imageLoadFailed: "No se pudo cargar la imagen",
|
||
geometryPreview: "Vista previa de geometría",
|
||
layerPreview: "Vista previa de capa",
|
||
layerPreviewSkipped: "{count} elemento(s) omitido(s)",
|
||
layerPreviewNoSupportedCrs: "No se puede previsualizar: sistema de coordenadas ausente o no compatible",
|
||
layerPreviewNoGeometryData: "No se puede previsualizar: no hay datos geométricos válidos",
|
||
layerPreviewLabel: "Etiqueta",
|
||
layerPreviewExport: "Exportar imagen",
|
||
layerPreviewMaximize: "Maximizar",
|
||
layerPreviewRestore: "Restaurar",
|
||
layerPreviewLoading: "Cargando mapa...",
|
||
layerPreviewCustomCrs: "EPSG personalizado…",
|
||
layerPreviewCustomCrsPlaceholder: "Código EPSG",
|
||
layerPreviewUnsupportedCrs: "Sistema de coordenadas no compatible: EPSG:{srid}",
|
||
layerPreviewCrsManual: "Sistema de coordenadas: manual",
|
||
layerPreviewCrsDetected: "Sistema de coordenadas: detectado",
|
||
layerPreviewCrsAssumed: "Sistema de coordenadas: se asume WGS 84",
|
||
insertRowsNotSupported: "El destino de guardado actual no admite añadir filas.",
|
||
zoomIn: "Acercar",
|
||
zoomOut: "Alejar",
|
||
fitImage: "Ajustar a la vista",
|
||
openImage: "Abrir imagen",
|
||
columnName: "Columna",
|
||
columnType: "Tipo",
|
||
columnComment: "Comentario",
|
||
rowNumber: "Fila",
|
||
valueLength: "Longitud",
|
||
nullValue: "NULL",
|
||
noComment: "Sin comentario",
|
||
formattedJson: "JSON formateado",
|
||
formatted: "Formateado",
|
||
formattedValue: "Valor formateado",
|
||
detailSearchPlaceholder: "Buscar campo o valor…",
|
||
detailSearchNoMatch: "Sin coincidencias",
|
||
rawValue: "Valor sin procesar",
|
||
largeValuePreviewHint: "Mostrando los primeros {count} caracteres. Copiar sigue usando el valor completo.",
|
||
copyValue: "Copiar valor",
|
||
downloadBinaryValue: "Descargar valor",
|
||
downloadSaved: "Guardado en {path}",
|
||
downloadStarted: "Descarga iniciada: {fileName}",
|
||
binaryDownload: {
|
||
binary: "Binario sin procesar",
|
||
utf8: "Texto decodificado (UTF-8)",
|
||
gbk: "Texto decodificado (GBK)",
|
||
},
|
||
copyRowTsv: "Copiar fila (TSV)",
|
||
copyColumnValues: "Copiar columna (JSON)",
|
||
copyColumnTsv: "Copiar columna (TSV)",
|
||
editValue: "Editar valor",
|
||
formatJson: "Formatear JSON",
|
||
compactJson: "Compactar JSON",
|
||
formattedJsonEditWarning: "Estás editando JSON formateado. Al guardar se escribirá como JSON, por lo que el formato original puede cambiar.",
|
||
setNull: "Establecer NULL",
|
||
restoreOriginalValue: "Restaurar original",
|
||
copyColumnName: "Copiar nombre de columna",
|
||
copySqlCondition: "Copiar condición SQL",
|
||
copyAlterColumnSql: "Copiar como SQL ALTER",
|
||
alterSqlCopied: "SQL ALTER copiado al portapapeles",
|
||
alterSqlCopiedWithWarnings: "SQL ALTER copiado al portapapeles ({count} advertencia(s))",
|
||
noAlterSqlAvailable: "No hay SQL ALTER disponible para esta columna",
|
||
copyAlterSqlFailed: "Error al copiar: {message}",
|
||
transpose: "Transponer fila",
|
||
transposeMultiRowToggle: "Varias filas",
|
||
transposeSingleRow: "Fila actual",
|
||
transposeMultiRow: "Varias filas",
|
||
transposeMultiRowHint: "Cuando está activado, la vista transpuesta muestra varias filas. Cuando está desactivado, solo muestra la fila actual.",
|
||
rowsPerPageShort: " filas",
|
||
columnDetails: "Detalles de columna",
|
||
tableInfoSearch: "Buscar...",
|
||
tableInfoNoResults: "Sin resultados",
|
||
goToColumn: "Ir a la columna",
|
||
columnWidth: "Ancho de columna",
|
||
columnWidthCompact: "Compacto",
|
||
columnWidthStandard: "Estándar",
|
||
columnWidthComfortable: "Amplio",
|
||
searchColumn: "Buscar columna/comentario...",
|
||
noColumnsFound: "No se encontraron columnas",
|
||
tableInfo: "Información de tabla",
|
||
tableInfoColumns: "Columnas",
|
||
tableInfoIndexes: "Índices",
|
||
tableInfoForeignKeys: "Claves foráneas",
|
||
foreignKeyNavigate: "Ir a {table}",
|
||
tableInfoTriggers: "Disparadores",
|
||
tableInfoNullable: "Nulable",
|
||
tableInfoEmpty: "Sin metadatos",
|
||
queryError: "Error de consulta",
|
||
dataUnavailable: "Los datos de la tabla deben volver a cargarse.",
|
||
dataUnavailableHintPrefix: "Presiona ",
|
||
dataUnavailableHintSuffix: " o haz clic en Actualizar abajo para recargar.",
|
||
refresh: "Actualizar",
|
||
undoChange: "Deshacer cambio",
|
||
redoChange: "Rehacer cambio",
|
||
commit: "Confirmar",
|
||
rollback: "Revertir",
|
||
transactionSaveHint: "Confirma {count} cambio(s) pendiente(s) en una transacción.",
|
||
nonTransactionalSaveHint: "Guarda {count} cambio(s) pendiente(s) uno por uno. Si uno falla, los cambios anteriores correctos no se revierten.",
|
||
keylessEditWarning: "Sin clave primaria",
|
||
keylessEditWarningHint: "Esta tabla no tiene clave primaria. Las actualizaciones y eliminaciones usan todos los valores originales de la fila en WHERE; filas duplicadas exactas pueden verse afectadas juntas.",
|
||
queryEditReadOnly: "Resultado de solo lectura",
|
||
queryEditUnsupported: {
|
||
"not-select": "Solo los resultados de consultas SELECT pueden editarse directamente.",
|
||
cte: "Las consultas con WITH/CTE aún no son editables. Usa un SELECT simple de una sola tabla.",
|
||
"set-operation": "Los resultados de UNION, INTERSECT o EXCEPT no pueden asignarse de forma segura a las filas de origen.",
|
||
aggregation: "Los resultados con DISTINCT, GROUP BY, HAVING y agregaciones no pueden editarse directamente.",
|
||
"external-source": "Los archivos externos y los resultados de funciones de tabla no pueden escribirse directamente. Impórtalos a una tabla de base de datos antes de editarlos.",
|
||
"complex-source": "DBX no pudo identificar exactamente una tabla de destino segura para escribir este resultado.",
|
||
"computed-columns": "Las expresiones calculadas o los resultados de funciones no pueden escribirse de vuelta. Selecciona nombres de columna originales.",
|
||
"no-table": "No se detectó ninguna tabla de origen editable.",
|
||
"no-primary-key": "La tabla de destino no tiene clave primaria, por lo que las filas no pueden actualizarse o eliminarse de forma segura.",
|
||
"primary-key-not-returned": "Al resultado le falta la columna de clave primaria original. Inclúyela por su nombre de columna original.",
|
||
"aliased-columns": "Las columnas de resultado usan alias o expresiones. Selecciona columnas editables por sus nombres originales.",
|
||
"metadata-unavailable": "DBX no pudo cargar los metadatos de la tabla, por lo que la edición de resultados está deshabilitada.",
|
||
},
|
||
sortUnsupported: "Este SQL no admite ordenamiento del resultado completo. Intenta con una consulta SELECT simple.",
|
||
truncatedHint: "Los resultados se truncaron después de cargar {count} filas. Usa la paginación inferior para explorar los datos cargados; al exportar el resultado completo se vuelve a consultar la base de datos.",
|
||
filterBuilderSearchColumns: "Buscar columnas...",
|
||
filterBuilderNoMatchingColumns: "Sin columnas coincidentes",
|
||
copyExtractorWithHeaders: "{format} (con encabezados)",
|
||
copyExtractorOneRow: "CSV de una fila",
|
||
copyExtractorSqlInList: "Lista SQL IN",
|
||
copyExtractorSqlInserts: "Sentencias SQL INSERT",
|
||
copyExtractorSqlInsertsWithPrimaryKeys: "Sentencias SQL INSERT (con claves primarias)",
|
||
copyExtractorSqlInsertsWithoutPrimaryKeys: "Sentencias SQL INSERT (sin claves primarias)",
|
||
copyExtractorSqlUpdates: "Sentencias SQL UPDATE",
|
||
copyExtractorWhereClause: "Cláusula WHERE",
|
||
copyExtractorPipeSeparated: "Separado por barra vertical",
|
||
copyExtractorPretty: "Tabla formateada",
|
||
copyExtractorConfigure: "Configurar extractor de datos…",
|
||
copyExtractorDefaultFormat: "Formato de copia predeterminado",
|
||
copyExtractorFormat: "Extractor",
|
||
copyExtractorColumnSeparator: "Separador de columnas",
|
||
copyExtractorRowSeparator: "Separador de filas",
|
||
copyExtractorNullText: "Texto NULL",
|
||
copyExtractorQuote: "Carácter de comillas",
|
||
copyExtractorQuotePolicy: "Política de comillas",
|
||
copyExtractorQuoteMinimal: "Cuando sea necesario",
|
||
copyExtractorQuoteAlways: "Siempre",
|
||
copyExtractorQuoteNever: "Nunca",
|
||
copyExtractorIncludeHeader: "Incluir nombres de columnas",
|
||
copyExtractorIncludeRowHeader: "Incluir números de fila",
|
||
copyExtractorSkipComputed: "Saltar columnas calculadas",
|
||
copyExtractorSkipGenerated: "Saltar columnas generadas",
|
||
copyExtractorExcludePrimaryKeys: "Excluir claves primarias",
|
||
copyExtractorInsertMode: "Modo de sentencia INSERT",
|
||
copyExtractorInsertMerged: "Combinar varias filas",
|
||
copyExtractorInsertRowByRow: "Una sentencia por fila",
|
||
copyExtractorPrettyJson: "JSON formateado",
|
||
copyExtractorPreview: "Vista previa (selección actual)",
|
||
copyExtractorEmptySelection: "Seleccione datos para previsualizar el resultado de la extracción.",
|
||
copyExtractorUnsupportedSelection: "El extractor actual requiere seleccionar las mismas columnas en cada fila.",
|
||
copyExtractorPreviewTruncated: "Actualmente solo se muestran las primeras 100 filas de las {count} seleccionadas.",
|
||
copyExtractorWarningOmittedColumns: "El resultado de la copia ha omitido las siguientes columnas: {columns}.",
|
||
copyExtractorWarningDuplicateJsonColumns: "Se detectaron nombres de columna JSON duplicados; se renombraron automáticamente para evitar pérdida de datos.",
|
||
copyExtractorValidation: {
|
||
"column-separator-empty": "El separador de columnas no puede estar vacío.",
|
||
"row-separator-empty": "El separador de filas no puede estar vacío.",
|
||
"separator-too-long": "El separador puede tener un máximo de 8 caracteres.",
|
||
"null-text-too-long": "El texto NULL puede tener un máximo de 64 caracteres.",
|
||
"separators-overlap": "El separador de columnas y el separador de filas no pueden contenerse entre sí.",
|
||
"invalid-quote": "El carácter de comillas debe ser exactamente un carácter.",
|
||
"quote-conflicts": "El carácter de comillas no puede aparecer en el separador de columnas o de filas.",
|
||
},
|
||
cachedResultUnavailable: "Resultado en caché faltante o incompatible.",
|
||
reexecuteQuery: "Volver a ejecutar consulta",
|
||
numericColumnAlign: "Alineación de columna numérica",
|
||
numericColumnAlignLeft: "Alineación izquierda",
|
||
numericColumnAlignRight: "Alineación derecha",
|
||
batchAppendPasteNotEditable: "El resultado actual no se puede editar.",
|
||
batchAppendPasteInvalidTarget: "Primero seleccione una celda de número de fila de una nueva fila vacía y luego pegue.",
|
||
batchAppendPasteTargetNotEmpty: "La nueva fila seleccionada ya contiene datos.",
|
||
batchAppendPasteEmpty: "No hay filas nuevas en el portapapeles.",
|
||
batchAppendPasteReadonlyColumn: "Los datos pegados contienen columnas no editables.",
|
||
xlsxHeaderTitle: "Formato de encabezado",
|
||
xlsxHeaderPrompt: "Seleccione el formato de encabezado al exportar a Excel:",
|
||
xlsxHeaderOriginal: "Encabezado usando nombres de campos",
|
||
xlsxHeaderComment: "Encabezado usando comentarios",
|
||
},
|
||
exportProgress: {
|
||
streamingUnsupported: "La exportación en streaming no es compatible con esta consulta. Simplifíquela o use un controlador compatible.",
|
||
agentSessionMissing: "La exportación en streaming requiere una sesión de conjunto de resultados, pero este controlador no devolvió session_id.",
|
||
title: "Exportando datos de la tabla",
|
||
fetching: "Obteniendo datos de la base de datos...",
|
||
writing: "Escribiendo en el archivo...",
|
||
done: "¡Exportación completada!",
|
||
error: "Error de exportación",
|
||
cancelled: "Exportación cancelada.",
|
||
rowsCount: "{exported} / {total} filas",
|
||
rowsExported: "{count} filas exportadas",
|
||
rowsShort: "filas",
|
||
cancel: "Cancelar",
|
||
minimize: "Minimizar a segundo plano",
|
||
openFolder: "Abrir carpeta contenedora",
|
||
openFolderFailed: "No se pudo abrir la carpeta: {message}",
|
||
close: "Cerrar",
|
||
tooltip: "Progreso de exportación",
|
||
popoverTitle: "Exportaciones",
|
||
noTasks: "Sin exportaciones",
|
||
clearFinished: "Limpiar finalizados",
|
||
showMore: "Mostrar {count} más",
|
||
showLess: "Mostrar menos",
|
||
failedTooltip: "{count} tarea en segundo plano fallida | {count} tareas en segundo plano fallidas",
|
||
databaseExportTitle: "Copia de seguridad: {name}",
|
||
sqlFileTitle: "Archivo SQL: {name}",
|
||
dataTransferTitle: "Transferencia de datos: {name}",
|
||
objectsCount: "{current} / {total} objetos",
|
||
tablesCount: "{current} / {total} tablas",
|
||
statementsCount: "{done} exitosas, {failed} fallidas",
|
||
elapsed: "Transcurrido: {duration}",
|
||
delete: "Eliminar",
|
||
showFailureDetails: "Detalles de fallos ({count})",
|
||
hideFailureDetails: "Ocultar detalles de fallos",
|
||
failureDetailTruncated: "Los detalles del error se han truncado",
|
||
failureDetailsOmitted: "No se muestran {count} detalles de fallos adicionales",
|
||
},
|
||
welcome: {
|
||
title: "Espacio de trabajo de base de datos",
|
||
subtitle: "Selecciona una conexión a la izquierda para explorar el esquema, o abre una pestaña de consulta directamente.",
|
||
connections: "Conexiones",
|
||
connected: "Conectado",
|
||
databaseTypes: "Tipos de bases de datos",
|
||
quickConnections: "Inicio rápido",
|
||
quickConnectionsHint: "Haz clic en una conexión para abrir una pestaña de consulta.",
|
||
shortcuts: "Atajos",
|
||
shortcutsHint: "Inicia la siguiente acción desde aquí.",
|
||
sqlHistory: "Historial de consultas",
|
||
sqlHistoryEmpty: "Aún no hay registros de la biblioteca SQL",
|
||
sqlHistoryOpenCount: "Abierto {count} veces",
|
||
unknownConnection: "Conexión desconocida",
|
||
tip: "También puedes expandir las conexiones a la izquierda y hacer clic derecho en bases de datos o tablas para más opciones.",
|
||
tipSidebar: "Haz clic en una tabla a la izquierda para ver los datos",
|
||
tipExecute: "para ejecutar la consulta",
|
||
fileOpened: "Abierto {name}",
|
||
mcpTitle: "Integración con agentes de IA",
|
||
mcpDescription: "Además del asistente de IA integrado, puedes usar Claude Code, Cursor y otros agentes de programación para consultar tus bases de datos mediante MCP.",
|
||
mcpLearnMore: "Más información",
|
||
},
|
||
backendErrors: {
|
||
jdbc: {
|
||
connectionFailed: "La conexión a la base de datos falló antes de iniciar la operación (fase: {stage}).",
|
||
connectionInterrupted: "La conexión a la base de datos se interrumpió durante la operación (fase: {stage}).",
|
||
operationTimedOut: "La operación de la base de datos agotó el tiempo de espera (fase: {stage}).",
|
||
operationCanceled: "La operación de la base de datos fue cancelada (fase: {stage}).",
|
||
busyRetryLater: "El agente de la base de datos está ocupado; inténtalo más tarde (fase: {stage}).",
|
||
runtimeReplaced: "Se reemplazó el entorno del agente de la base de datos (fase: {stage}).",
|
||
sqlFailed: "La base de datos devolvió un error SQL (fase: {stage}).",
|
||
protocolFailed: "Falló el protocolo del agente de la base de datos.",
|
||
contractInvalid: "El agente de la base de datos devolvió un contrato de error no válido.",
|
||
legacyFailure: "El agente de la base de datos devolvió un error no clasificado.",
|
||
},
|
||
legacy: "El backend devolvió un error.",
|
||
unknown: "Ocurrió un error inesperado del backend.",
|
||
},
|
||
common: {
|
||
fileNotFound: "El archivo no existe: {path}",
|
||
language: "Idioma",
|
||
loading: "Cargando...",
|
||
stopping: "Deteniendo...",
|
||
close: "Cerrar",
|
||
cancel: "Cancelar",
|
||
confirm: "Confirmar",
|
||
save: "Guardar",
|
||
clear: "Limpiar",
|
||
copy: "Copiar",
|
||
import: "Importar",
|
||
remove: "Eliminar",
|
||
retry: "Reintentar",
|
||
more: "Más",
|
||
decrease: "Reducir",
|
||
increase: "Aumentar",
|
||
showPassword: "Mostrar contraseña",
|
||
hidePassword: "Ocultar contraseña",
|
||
done: "Listo",
|
||
connection: "Conexión",
|
||
database: "Base de datos",
|
||
table: "Tabla",
|
||
view: "Vista",
|
||
materializedView: "Vista Materializada",
|
||
procedure: "Procedimiento",
|
||
function: "Función",
|
||
sequence: "Secuencia",
|
||
package: "Paquete",
|
||
packageBody: "Cuerpo del Paquete",
|
||
noResults: "Sin resultados",
|
||
edit: "Editar",
|
||
delete: "Eliminar",
|
||
back: "Volver",
|
||
},
|
||
dateTimePicker: {
|
||
open: "Abrir selector de fecha y hora",
|
||
inputLabel: "Fecha y hora",
|
||
inputPlaceholder: "AAAA-MM-DD HH:mm:ss",
|
||
previousMonth: "Mes anterior",
|
||
nextMonth: "Mes siguiente",
|
||
calendarLabel: "Calendario",
|
||
timeLabel: "Hora",
|
||
hour: "Hora",
|
||
minute: "Minuto",
|
||
second: "Segundo",
|
||
cancel: "Cancelar",
|
||
apply: "Aplicar",
|
||
invalidDateTime: "Ingresa una fecha y hora válidas",
|
||
outOfRange: "La fecha y hora están fuera del intervalo permitido",
|
||
},
|
||
quickOpen: {
|
||
placeholder: "Buscar conexiones, bases de datos, tablas, archivos SQL y otros objetos...",
|
||
emptyPlaceholder: "Comienza a escribir para buscar",
|
||
noResults: "No se encontraron resultados",
|
||
results: "resultados",
|
||
navigate: "Navegar",
|
||
select: "Seleccionar",
|
||
close: "Cerrar",
|
||
sqlFile: "Archivo SQL",
|
||
sqlLibraryFile: "Biblioteca SQL",
|
||
},
|
||
explain: {
|
||
title: "Plan de ejecución",
|
||
standardTable: "Tabla",
|
||
tree: "Árbol",
|
||
summary: "Resumen",
|
||
running: "Leyendo plan de ejecución...",
|
||
empty: "Sin plan de ejecución",
|
||
nodeCount: "{count} nodos",
|
||
node: "Nodo",
|
||
relation: "Tabla",
|
||
index: "Índice",
|
||
cost: "Costo",
|
||
rows: "Filas",
|
||
details: "Detalles",
|
||
canvas: "Canvas",
|
||
costShare: "Costo (%)",
|
||
estRows: "Filas est.",
|
||
actualRows: "Filas reales",
|
||
zoomIn: "Acercar",
|
||
zoomOut: "Alejar",
|
||
zoomFit: "Ajustar",
|
||
legendHeat: "Color = % del costo total",
|
||
legendEdge: "Grosor = filas",
|
||
inspectorEmpty: "Selecciona un nodo",
|
||
catResult: "Resultado",
|
||
catSort: "Ordenación",
|
||
catJoin: "Join",
|
||
catTscan: "Escaneo de tabla",
|
||
catIscan: "Escaneo de índice",
|
||
catLookup: "Búsqueda de fila",
|
||
catMat: "Materialización",
|
||
catAgg: "Agregación",
|
||
catXchg: "Paralelismo",
|
||
catMod: "Modificación",
|
||
catOther: "Otro",
|
||
unsupported: "El plan de ejecución aún no está disponible para esta base de datos",
|
||
emptySql: "No hay SQL para analizar",
|
||
unsafe: "Esta versión solo analiza sentencias SELECT / WITH / TABLE / VALUES",
|
||
},
|
||
lineage: {
|
||
title: "Linaje de campo",
|
||
open: "Ver linaje de campo",
|
||
loading: "Leyendo metadatos {done}/{total}",
|
||
empty: "Sin linaje relacionado",
|
||
noFiltered: "Ningún resultado coincide con los filtros actuales",
|
||
targetField: "Campo actual",
|
||
searchPlaceholder: "Buscar tablas, campos, vistas o fragmentos SQL...",
|
||
showing: "Mostrando {shown}/{total} resultados",
|
||
all: "Todos",
|
||
certain: "Confirmado",
|
||
likely: "Probable",
|
||
possible: "Posible",
|
||
queryHistory: "Historial de consultas",
|
||
openTable: "Abrir tabla",
|
||
copy: "Copiar nombre",
|
||
copied: "Copiado",
|
||
kind: {
|
||
foreignKey: "Clave foránea",
|
||
viewReference: "Vista",
|
||
historyReference: "Historial SQL",
|
||
sameName: "Mismo nombre",
|
||
},
|
||
description: {
|
||
foreignKeyIncoming: "{target} apunta al campo actual mediante una clave foránea. Esta es una dependencia verificada.",
|
||
foreignKeyOutgoing: "El campo actual referencia a {target} mediante una clave foránea. Esta es una dependencia verificada.",
|
||
viewLikely: "La definición de la vista menciona tanto la tabla como el campo destino, lo que generalmente indica una dependencia de consulta.",
|
||
viewPossible: "La definición de la vista menciona un campo con el mismo nombre pero no la tabla destino, por lo que requiere confirmación.",
|
||
historyLikely: "Una sentencia SQL del historial menciona tanto la tabla como el campo destino. Úsala como contexto de análisis de impacto.",
|
||
historyPossible: "Una sentencia SQL del historial menciona un campo con el mismo nombre. Puede estar relacionado pero requiere verificación.",
|
||
sameName: "Otra tabla tiene un campo con el mismo nombre. Puede compartir significado de negocio, pero no es una dependencia verificada en la base de datos.",
|
||
},
|
||
cancel: "Cancelar",
|
||
refresh: "Analizar de nuevo",
|
||
},
|
||
connectionGroup: {
|
||
createGroup: "Nuevo grupo",
|
||
groupNamePlaceholder: "Nombre del grupo",
|
||
renameGroup: "Renombrar grupo",
|
||
deleteGroup: "Eliminar grupo",
|
||
moveToGroup: "Mover al grupo",
|
||
moveToNewGroup: "Mover a nuevo grupo",
|
||
ungrouped: "Sin grupo",
|
||
ungroupedLabel: "Sin grupo",
|
||
newGroup: "Nuevo grupo...",
|
||
newGroupDefault: "Nuevo grupo",
|
||
deleteGroupConfirmTitle: "Eliminar grupo",
|
||
deleteGroupConfirmMessage: '¿Eliminar el grupo "{name}"? Las conexiones dentro serán movidas al nivel superior.',
|
||
selectConnection: "Seleccionar conexión",
|
||
deselectConnection: "Deseleccionar conexión",
|
||
selectAllConnections: "Seleccionar todas las conexiones",
|
||
deselectAllConnections: "Deseleccionar todas las conexiones",
|
||
exitMultiSelect: "Salir de selección múltiple",
|
||
},
|
||
databaseSearch: {
|
||
title: "Buscar en base de datos",
|
||
open: "Buscar en base de datos",
|
||
keyword: "Palabra clave",
|
||
keywordPlaceholder: "Ingresa un ID de usuario, correo, número de orden...",
|
||
limitPerTable: "Por tabla",
|
||
search: "Buscar",
|
||
searching: "Buscando",
|
||
stop: "Detener",
|
||
hint: "Analiza las tablas regulares de la base de datos o esquema actual. Se omiten las columnas binarias y cada tabla tiene un límite para evitar cargar demasiados datos a la vez.",
|
||
loadingTables: "Leyendo lista de tablas...",
|
||
progress: "Analizadas {done}/{total} tablas",
|
||
resultCount: "{count} coincidencias",
|
||
limitedTables: "Esquema grande detectado; solo se analizan las primeras {count} tablas",
|
||
results: "Resultados",
|
||
openResult: "Abrir",
|
||
waiting: "Esperando coincidencias...",
|
||
noResults: "Sin coincidencias aún",
|
||
errors: "Algunas tablas fallaron",
|
||
},
|
||
configExport: {
|
||
passphraseTitle: "Cifrar y exportar",
|
||
passphraseImportTitle: "Descifrar e importar",
|
||
passphraseExportHint: "Para incluir las contraseñas de conexión en la exportación, define una frase de paso para el cifrado. Necesitarás la misma frase para importar.",
|
||
passphraseImportHint: "Este archivo está cifrado. Ingresa la frase de paso para descifrarlo e importarlo.",
|
||
passphrase: "Frase de paso",
|
||
passphraseConfirm: "Confirmar frase de paso",
|
||
passphrasePlaceholder: "Ingresa la frase de paso",
|
||
passphraseConfirmPlaceholder: "Vuelve a ingresar la frase de paso",
|
||
passphraseRequired: "La frase de paso es obligatoria",
|
||
passphraseMismatch: "Las frases de paso no coinciden",
|
||
passphraseTooShort: "La frase de paso debe tener al menos 4 caracteres",
|
||
exportEncrypted: "Exportar",
|
||
decryptImport: "Descifrar e importar",
|
||
wrongPassphrase: "Frase de paso incorrecta o archivo corrupto",
|
||
cryptoUnavailable: "La importación cifrada no está disponible en este navegador. Usa HTTPS, localhost o DBX Desktop.",
|
||
exportSuccess: "Conexiones exportadas exitosamente",
|
||
importSuccess: "Se importaron {count} conexión(es)",
|
||
importNavicatSuccess: "Se importaron {count} conexión(es) de Navicat. Completa la contraseña de las conexiones que aún la tengan vacía antes de probarlas.",
|
||
importDatagripSuccess: "Se importaron {count} conexión(es) de DataGrip, se llenaron {filled} contraseña(s) del Keychain.",
|
||
importDbeaverSuccess: "Se importaron {count} conexión(es) de DBeaver. Completa la contraseña de las conexiones que aún la tengan vacía antes de probarlas.",
|
||
importNone: "No hay nuevas conexiones para importar",
|
||
importLayoutConfirm: "El archivo importado contiene grupos de conexiones. ¿Deseas aplicarlos?",
|
||
importLayoutTitle: "Importar grupos",
|
||
importLayoutApply: "Aplicar",
|
||
importDatagripSelectFiles: "Seleccione dataSources.xml (obligatorio); también puede seleccionar dataSources.local.xml y db-forest-config.xml.",
|
||
importDatagripDialogTitle: "Seleccionar archivos de configuración de DataGrip",
|
||
},
|
||
ai: {
|
||
placeholder: "Describe tu consulta en lenguaje natural...",
|
||
settings: "Configuración de IA",
|
||
noConfig: "La IA no está configurada. Configura tu proveedor de IA en Ajustes > IA.",
|
||
provider: "Proveedor",
|
||
providerStatusActive: "Activo",
|
||
providerStatusConfigured: "Configurado",
|
||
switchProvider: "Cambiar proveedor",
|
||
model: "Modelo",
|
||
defaultModel: "Modelo predeterminado",
|
||
browseModels: "Explorar modelos",
|
||
refreshModels: "Actualizar modelos",
|
||
loadingModels: "Cargando modelos...",
|
||
modelLoadFailed: "No se pudieron cargar los modelos",
|
||
retry: "Reintentar",
|
||
searchModels: "Buscar modelos",
|
||
noModels: "No hay modelos cargados",
|
||
noModelMatch: "No hay modelos coincidentes",
|
||
selectModel: "Seleccionar modelo",
|
||
noModel: "No hay modelo configurado",
|
||
manualModel: "Introducir ID de modelo manualmente",
|
||
manualModelPlaceholder: "ID del modelo",
|
||
effort: "Esfuerzo",
|
||
providerDefault: "Predeterminado del proveedor",
|
||
loadingEffort: "Cargando niveles de esfuerzo...",
|
||
effortLoadFailed: "No se pudieron cargar los niveles de esfuerzo",
|
||
effortEnabled: "Activado",
|
||
effortDisabled: "Desactivado",
|
||
customEffortPlaceholder: "Introducir valor de esfuerzo",
|
||
effortUnsupported: "Este modelo no admite esfuerzo configurable",
|
||
configNameEmpty: "El nombre de la configuración no puede estar vacío",
|
||
configNameExists: "El nombre de la configuración '{name}' ya existe",
|
||
|
||
configList: "Lista de configuraciones AI",
|
||
addConfig: "Agregar configuración",
|
||
noAiConfigs: "No hay configuraciones AI",
|
||
setDefault: "Establecer como predeterminada",
|
||
editConfig: "Editar configuración",
|
||
configName: "Nombre de configuración",
|
||
configNamePlaceholder: "Ingrese el nombre",
|
||
modelList: "Lista de modelos",
|
||
modelId: "ID del modelo",
|
||
modelDisplayName: "Nombre para mostrar",
|
||
add: "Agregar",
|
||
fetching: "Obteniendo...",
|
||
fetchModelList: "Obtener modelos de la API",
|
||
default: "Predeterminada",
|
||
deleteConfigTitle: "Eliminar configuración",
|
||
deleteConfigConfirm: "¿Eliminar esta configuración?",
|
||
modelListHint: "Pulsa actualizar para cargar los modelos del proveedor.",
|
||
modelListUnsupported: "Este proveedor no admite obtener una lista de modelos.",
|
||
modelListEndpointRequired: "Ingresa un endpoint antes de cargar modelos.",
|
||
modelListApiKeyRequired: "Ingresa una clave API antes de cargar modelos.",
|
||
codexMcpRequiredTitle: "Se requiere DBX MCP Server",
|
||
codexMcpRequiredDescription: "Codex CLI usa DBX MCP Server para acceder al esquema de la base de datos y a las herramientas de consulta. Instálalo antes de usar Codex en el asistente de IA.",
|
||
codexCliPathEnvError: "Codex CLI Path debe contener solo la ruta del ejecutable. Agrega las variables de entorno abajo.",
|
||
codexCliEnv: "Variables de entorno",
|
||
codexCliEnvAdd: "Agregar variable",
|
||
codexCliEnvHint: "Variables opcionales para Codex CLI, como HTTPS_PROXY, NO_PROXY, SSL_CERT_FILE o CODEX_CA_CERTIFICATE.",
|
||
codexCliEnvKeyPlaceholder: "HTTPS_PROXY",
|
||
codexCliEnvValuePlaceholder: "http://proxy:9800",
|
||
codexCliEnvInvalidName: "Nombre de variable de entorno no válido: {name}",
|
||
codexCliEnvReservedName: "{name} lo administra DBX para MCP Server y no se puede configurar aquí.",
|
||
cliMcpRequiredTitle: "DBX MCP Server required",
|
||
cliMcpRequiredDescription: "{provider} uses the DBX MCP Server to access database schema and query tools. Install it before using this provider in the AI assistant.",
|
||
cliPath: "{provider} Path",
|
||
cliPathHint: "Leave empty to use {command} from PATH. Sign in separately with {loginCommand}.",
|
||
cliPathEnvError: "{provider} path should contain only the executable path. Add environment variables below.",
|
||
cliEnv: "Environment variables",
|
||
cliEnvAdd: "Add variable",
|
||
cliEnvHint: "Optional variables passed to {provider}, such as HTTPS_PROXY, NO_PROXY, or SSL_CERT_FILE.",
|
||
cliEnvKeyPlaceholder: "HTTPS_PROXY",
|
||
cliEnvValuePlaceholder: "http://proxy:9800",
|
||
cliEnvInvalidName: "Invalid environment variable name: {name}",
|
||
cliEnvReservedName: "{name} is managed by DBX for the MCP server and cannot be set here.",
|
||
reasoningLevel: "Nivel de razonamiento",
|
||
reasoningLevelDefault: "Predeterminado",
|
||
reasoningLevelMinimal: "Mínimo",
|
||
reasoningLevelLow: "Bajo",
|
||
reasoningLevelMedium: "Medio",
|
||
reasoningLevelHigh: "Alto",
|
||
reasoningLevelXhigh: "Muy alto",
|
||
reasoningLevelMax: "Máximo",
|
||
reasoningLevelHint: "Controla model_reasoning_effort de Codex CLI. Predeterminado usa tu configuración de Codex.",
|
||
claudeCodeEffortHint: "Los niveles disponibles los proporciona dinámicamente tu Claude Code CLI local para el modelo seleccionado.",
|
||
claudeCodeEffortUnavailable: "El modelo seleccionado no informa niveles de esfuerzo configurables. Claude Code usará su valor predeterminado.",
|
||
cliErrors: {
|
||
code: "Código de error: {code}",
|
||
details: "Detalles de diagnóstico:",
|
||
reportHint: "Al informar este problema, incluye el código de error y los detalles de diagnóstico siguientes.",
|
||
claudeCodeNotInstalled: "No se encontró Claude Code CLI. Instala Claude Code o configura la ruta del ejecutable en Configuración > AI.",
|
||
claudeCodeCliPathInvalid: "La ruta de Claude Code CLI no es válida. Selecciona solo el ejecutable de Claude y configura las variables de entorno por separado.",
|
||
claudeCodeEnvInvalid: "El nombre de una variable de entorno de Claude Code CLI no es válido. Usa nombres como HTTPS_PROXY.",
|
||
claudeCodeEnvReserved: "Se sobrescribió una variable MCP administrada por DBX. Elimina las variables DBX_MCP_* de la configuración del proveedor.",
|
||
claudeCodeNotAuthenticated: "Claude Code CLI no está autenticado. Ejecuta `claude auth login` en una terminal y vuelve a intentarlo.",
|
||
claudeCodeMcpConfigInvalid: "Claude Code no pudo leer o analizar la configuración MCP de DBX. Comprueba la versión y la ruta del ejecutable de Claude Code CLI.",
|
||
dbxMcpMissing: "No se encontró una instalación compatible de DBX MCP Server. Comprueba Configuración > MCP y vuelve a instalarla o actualizarla.",
|
||
claudeCodeMcpStartupFailed: "Claude Code cargó la configuración MCP, pero no pudo iniciar DBX MCP Server. Comprueba Configuración > MCP y los detalles siguientes.",
|
||
claudeCodeCommandLineTooLong: "Windows rechazó el comando de Claude Code porque era demasiado largo. Actualiza DBX y vuelve a intentarlo con el archivo MCP generado.",
|
||
claudeCodeRunFailed: "Claude Code CLI terminó de forma inesperada. Usa el código de error y los detalles siguientes para identificar el ejecutable o la salida que falló.",
|
||
piAgentNotInstalled: "No se encontró Pi Coding Agent. Instala Pi o configura la ruta del ejecutable en Configuración > AI.",
|
||
piAgentCliPathInvalid: "La ruta de Pi Coding Agent no es válida. Selecciona solo el ejecutable de Pi y configura las variables de entorno por separado.",
|
||
piAgentEnvInvalid: "El nombre de una variable de entorno de Pi Coding Agent no es válido. Usa nombres como HTTPS_PROXY.",
|
||
piAgentEnvReserved: "Se sobrescribió una variable de Pi o MCP administrada por DBX. Elimina DBX_PI_* y DBX_MCP_* de la configuración.",
|
||
piAgentNotAuthenticated: "Pi Coding Agent no tiene un proveedor de modelos autenticado. Configura o inicia sesión en un proveedor con Pi.",
|
||
piAgentMcpStartupFailed: "Pi no pudo iniciar el puente MCP de DBX. Comprueba Configuración > MCP y los detalles siguientes.",
|
||
piAgentTimeout: "Pi Coding Agent no respondió antes de que la operación agotara el tiempo.",
|
||
piAgentProtocolError: "Pi Coding Agent devolvió una respuesta RPC no válida. Comprueba la versión de Pi y los detalles siguientes.",
|
||
piAgentModelInvalid: "El identificador del modelo Pi no es válido. Actualiza la lista y selecciona una entrada provider/model.",
|
||
piAgentRunFailed: "Pi Coding Agent terminó de forma inesperada. Usa el código de error y los detalles siguientes para identificar el fallo.",
|
||
},
|
||
run: "Ejecutar",
|
||
readingSchema: "Leyendo esquema",
|
||
noConnection: "No hay una conexión disponible para esta pestaña",
|
||
noSql: "No hay SQL para procesar",
|
||
sqlPreview: "Vista previa de SQL",
|
||
copySql: "Copiar SQL",
|
||
copyCode: "Copiar código",
|
||
executeSql: "Ejecutar SQL",
|
||
tempRunSql: "Ejecutar sin modificar",
|
||
copyAll: "Copiar todo",
|
||
copied: "Copiado",
|
||
copyTestResult: "Copiar resultado de prueba",
|
||
testErrorAuth: "Falló la autenticación o el acceso. Comprueba la clave de API, los permisos del proyecto y que la API esté habilitada.",
|
||
testErrorModelNotFound: "El modelo no está disponible. Comprueba su ID y el acceso de la cuenta.",
|
||
testErrorRateLimit: "Se superó el límite de solicitudes o la cuota. Inténtalo más tarde o revisa la cuota.",
|
||
testErrorTimeout: "La solicitud agotó el tiempo de espera. Comprueba la red, el proxy y el endpoint.",
|
||
testErrorTokenLimit: "No se generó texto visible porque se agotó el límite de tokens de salida.",
|
||
testErrorSafety: "La política de seguridad de Gemini bloqueó el prompt o la respuesta.",
|
||
testErrorEmptyResponse: "El servicio o el proxy cerró el flujo sin devolver texto visible.",
|
||
testErrorNetwork: "La conexión de red falló. Comprueba el endpoint y el proxy.",
|
||
testErrorUnknown: "La prueba falló por un motivo no clasificado.",
|
||
replace: "Reemplazar en el editor",
|
||
append: "Agregar al editor",
|
||
apply: "Aplicar al editor",
|
||
clear: "Limpiar chat",
|
||
welcome: "Dime qué quieres consultar y escribiré el SQL",
|
||
requestFailed: "La solicitud de AI falló",
|
||
newChat: "Nuevo chat",
|
||
thinking: "Procesando...",
|
||
reasoningProcess: "Proceso de razonamiento",
|
||
chars: "car.",
|
||
stopGenerating: "Detener generación",
|
||
scrollToBottom: "Volver al final",
|
||
tableMentionEmpty: "Sin tablas ni archivos SQL coincidentes",
|
||
tableMentionPlaceholderHint: "Escribe {'@'} para mencionar tablas o archivos SQL como contexto",
|
||
tableMentionTypes: {
|
||
table: "Tabla",
|
||
view: "Vista",
|
||
systemTable: "Tabla del sistema",
|
||
temporaryTable: "Tabla temporal",
|
||
},
|
||
modes: {
|
||
ask: "Preguntar",
|
||
agent: "Agente",
|
||
},
|
||
modeHints: {
|
||
ask: "Genera SQL y explicaciones sin ejecutarlos automáticamente",
|
||
agent: "Ejecuta consultas seguras automáticamente cuando sea posible",
|
||
},
|
||
fixWithAi: "Corregir con IA",
|
||
truncated: "Contexto truncado",
|
||
contextSummary: "{database} · {tables} tablas",
|
||
autoSqlBlocked: "El SQL generado por la IA parecía demasiado riesgoso para ejecutarse automáticamente. Revísalo manualmente antes de ejecutar.",
|
||
proposalConfirmYes: "Sí, continuar",
|
||
proposalConfirmNo: "No, gracias",
|
||
proposalConfirmTitle: "Confirmación de acción requerida",
|
||
globalInstructions: "Instrucciones globales personalizadas",
|
||
globalInstructionsDescription: "Aplicadas automáticamente a todas las conversaciones con IA.",
|
||
globalInstructionsCharCount: "{count}/{max} caracteres",
|
||
globalInstructionsSaved: "Instrucciones globales guardadas",
|
||
globalInstructionsSave: "Guardar",
|
||
globalInstructionsTooLong: "Instrucciones globales demasiado largas (máx. {max} caracteres)",
|
||
customInstructionsLoadFailed: "Error al cargar las instrucciones personalizadas de IA. Inténtalo de nuevo.",
|
||
maxAgentTurns: "Límite de turnos del agente",
|
||
maxAgentTurnsDescription: "Máximo de turnos de llamadas a herramientas por ejecución del agente API antes de pausar y pedir continuar. Los proveedores CLI usan sus propios límites.",
|
||
maxAgentTurnsRange: "{min}–{max}, predeterminado {default}",
|
||
maxAgentTurnsSaved: "Límite de turnos del agente guardado",
|
||
promptTemplates: "Plantillas de prompt por escenario",
|
||
promptTemplatesDescription: "Selecciona una o más plantillas en el asistente de IA para inyectar convenciones específicas del escenario.",
|
||
promptTemplateNew: "Nueva plantilla",
|
||
promptTemplateEdit: "Editar plantilla",
|
||
promptTemplateName: "Nombre de plantilla",
|
||
promptTemplateNamePlaceholder: "p. ej. Reglas de BD de producción",
|
||
promptTemplateContent: "Contenido de la plantilla",
|
||
promptTemplateContentPlaceholder: "Describe la convención o instrucción...",
|
||
promptTemplateNameEmpty: "El nombre de la plantilla no puede estar vacío",
|
||
promptTemplateNameExists: "El nombre de plantilla '{name}' ya existe",
|
||
promptTemplateContentRequired: "El contenido de la plantilla no puede estar vacío",
|
||
promptTemplateDeleteTitle: "Eliminar plantilla",
|
||
promptTemplateDeleteConfirm: "¿Eliminar plantilla '{name}'? Esta acción no se puede deshacer.",
|
||
promptTemplateTooLong: "Contenido de plantilla demasiado largo (máx. {max} caracteres)",
|
||
promptTemplateNameTooLong: "Nombre de plantilla demasiado largo (máx. {max} caracteres)",
|
||
promptTemplateSaved: "Plantilla guardada",
|
||
promptTemplateDeleted: "Plantilla eliminada",
|
||
promptTemplateNoTemplates: "Aún no hay plantillas. Crea una para empezar.",
|
||
promptTemplateManage: "Gestionar plantillas",
|
||
promptTemplateSavedHint: "Los cambios se guardan automáticamente.",
|
||
templateSelectorNone: "Sin seleccionar",
|
||
templateSelectorButton: "Plantillas",
|
||
templateSelectorLabel: "Plantillas: {label}",
|
||
templateSelectorDeselectAll: "Deseleccionar todas",
|
||
templateSelectorLoading: "Cargando...",
|
||
templateSelectorEmpty: "Sin plantillas. Haz clic en Gestionar para añadir.",
|
||
templateSelectorTooLong: "Las plantillas seleccionadas superan el límite total de contenido ({max} caracteres). Deselecciona algunas para continuar.",
|
||
exportMarkdown: "Exportar como Markdown",
|
||
analysis: "AI Analysis",
|
||
agentSteps: {
|
||
generated: "SQL generado",
|
||
noSql: "No se encontró SQL",
|
||
safe: "Verificación de seguridad superada",
|
||
needsConfirm: "Requiere confirmación",
|
||
blocked: "Bloqueado",
|
||
autoExecute: "Listo para ejecutar",
|
||
notRequested: "No se solicitó ejecución",
|
||
skipped: "No ejecutado",
|
||
callingTool: "Llamando herramienta...",
|
||
toolDone: "Herramienta completada",
|
||
toolError: "Error de herramienta",
|
||
executeSafe: "Verificación de seguridad superada · Ejecutado",
|
||
executeBlocked: "Bloqueado por verificación de seguridad",
|
||
contextCompacted: "Contexto comprimido",
|
||
},
|
||
agentStepTitles: {
|
||
riskCheck: "Verificación de riesgo: {action} · {category} · {environment} · {reasons}",
|
||
blocked: "La ejecución fue bloqueada por la política de riesgos. Revisa el SQL manualmente.",
|
||
requiresConfirmation: "Este SQL requiere confirmación antes de ejecutarse.",
|
||
askMode: "El modo Preguntar no ejecuta SQL automáticamente.",
|
||
unsupportedAction: "La acción de IA actual no ejecuta SQL automáticamente.",
|
||
noSql: "La respuesta no incluía un bloque de código SQL ejecutable.",
|
||
notRequested: "El usuario no solicitó ejecutar el SQL.",
|
||
skipped: "Este paso no se ejecutó.",
|
||
},
|
||
proxy: "Proxy",
|
||
proxyEnable: "Enviar solicitudes de IA mediante proxy",
|
||
proxyUrl: "URL del proxy",
|
||
enableThinking: "Razonamiento",
|
||
enableThinkingOn: "Activado",
|
||
enableThinkingOff: "Desactivado",
|
||
enableThinkingHint: "Esta opción solo tiene efecto en APIs /chat/completions y modelos compatibles. Cuando está desactivado, puede reducir significativamente el uso de tokens, pero la calidad de los resultados generados puede disminuir ligeramente.",
|
||
anthropicMessagesHint: "Las API compatibles con Anthropic Messages suelen usar /v1/messages.",
|
||
openAiCompatibleEndpointHint: "La mayoría de las API compatibles con OpenAI requieren el prefijo de ruta /v1.",
|
||
contextWindow: "Ventana de contexto",
|
||
contextWindowAuto: "Auto (detectar desde el nombre del modelo)",
|
||
contextWindowHint: "Tokens. Déjalo vacío para detección automática. Configúralo manualmente para modelos locales/personalizados.",
|
||
maxRetriesGlobal: "Reintentos máximos",
|
||
maxRetriesGlobalDescription: "Número de reintentos automáticos en errores transitorios de API (límite de tasa, timeout, fallos de red). Se aplica a todos los proveedores de IA por API. Los proveedores CLI (claude-code, codex, pi) no se ven afectados.",
|
||
maxRetriesRange: "{min}–{max}, predeterminado {default}",
|
||
maxRetriesSaved: "Reintentos máximos guardados",
|
||
codexCliPath: "Ruta de Codex CLI",
|
||
codexCliPathHint: "Déjalo vacío para usar codex desde PATH. Inicia sesión por separado con codex login.",
|
||
actions: {
|
||
general: "General",
|
||
generate: "Generar SQL",
|
||
explain: "Explicar SQL",
|
||
optimize: "Optimizar SQL",
|
||
fix: "Corregir error",
|
||
convert: "Convertir dialecto",
|
||
sampleData: "Datos de ejemplo",
|
||
query: "Consultar datos",
|
||
exploreSchema: "Inspeccionar esquema",
|
||
executeAndExplain: "Ejecutar y explicar",
|
||
generateNoExec: "Generar (sin ejecutar)",
|
||
},
|
||
placeholders: {
|
||
general: "Pregunta lo que quieras...",
|
||
generate: "Describe lo que quieres consultar, p. ej. pedidos por usuario en los últimos 7 días",
|
||
explain: "Opcional: indica qué quieres entender",
|
||
optimize: "Opcional: indica un objetivo, p. ej. reducir los escaneos completos de tabla",
|
||
fix: "Pega el error o describe el resultado esperado",
|
||
convert: "P. ej. convertir a PostgreSQL / MySQL / SQL Server",
|
||
sampleData: "Describe los datos de ejemplo o sentencias de prueba a generar",
|
||
query: "Describe qué consultar o contar, p. ej. totales de pedidos por región este mes",
|
||
exploreSchema: "Describe la tabla o estructura a inspeccionar, p. ej. columnas e índices de orders",
|
||
executeAndExplain: "Opcional: indica en qué centrar la explicación",
|
||
},
|
||
editMessage: "Editar mensaje",
|
||
editResend: "Reenviar",
|
||
editCancel: "Cancelar",
|
||
cannotDeleteActiveConfig: "No se puede eliminar la configuración activa actual. Cambie a otra configuración primero.",
|
||
maxRetries: "Número máximo de reintentos",
|
||
maxRetriesHint: "Reintentar automáticamente en caso de limitación de tasa, tiempo de espera o error de red temporal. 0 = no reintentar, máximo 10.",
|
||
},
|
||
contextMenu: {
|
||
openConnection: "Abrir conexión",
|
||
closeConnection: "Cerrar conexión",
|
||
closeDatabaseConnection: "Cerrar conexión de base de datos",
|
||
deleteConnection: "Eliminar conexión",
|
||
deleteSelectedConnections: "Eliminar {count} conexiones seleccionadas",
|
||
confirmDeleteTitle: "Eliminar conexión",
|
||
confirmDeleteMessage: '¿Estás seguro de que deseas eliminar "{name}"? Esta acción no se puede deshacer.',
|
||
confirmDeleteSelectedMessage: "¿Eliminar las {count} conexiones seleccionadas? Esta acción no se puede deshacer.",
|
||
editConnection: "Editar conexión",
|
||
revealDatabaseFile: "Mostrar en el explorador",
|
||
selectVisibleDatabases: "Seleccionar bases visibles",
|
||
configureVisibleObjects: "Filtro de objetos visibles",
|
||
userAdmin: "Usuarios y Privilegios",
|
||
openUserAdmin: "Abrir Usuarios y Privilegios",
|
||
damengJobAdmin: "Trabajos del agente Dameng",
|
||
openDamengJobAdmin: "Abrir trabajos del agente Dameng",
|
||
duplicateConnection: "Duplicar conexión",
|
||
duplicateSelectedConnections: "Duplicar {count} conexiones seleccionadas",
|
||
instanceInfo: "Información de la instancia",
|
||
newQuery: "Nueva consulta",
|
||
newSql: "Nuevo SQL",
|
||
generateSql: "Generar SQL",
|
||
newInsert: "Nueva Inserción",
|
||
newUpdate: "Nueva Actualización",
|
||
sqlHistory: "Historial de consultas",
|
||
noSqlHistory: "Sin SQL relacionado",
|
||
openObjectBrowser: "Explorar objetos",
|
||
viewData: "Ver datos",
|
||
openInNewDataTab: "Ver en nueva pestaña",
|
||
editStructure: "Editar estructura",
|
||
editColumn: "Editar columna",
|
||
editIndex: "Editar índice",
|
||
refreshChildren: "Actualizar",
|
||
expandAll: "Expandir todo",
|
||
tableNameFilters: "Filtros...",
|
||
tableNameFiltersDescription: "Muestra solo tablas que coincidan con include y oculta las que coincidan con exclude. Un patrón SQL LIKE por línea.",
|
||
tableNameFilterInclude: "Patrones de tablas incluidas",
|
||
tableNameFilterExclude: "Patrones de tablas excluidas",
|
||
tableNameFilterIncludePlaceholder: "Ejemplo:\nads_%\nuser_%",
|
||
tableNameFilterExcludePlaceholder: "Ejemplo:\n%_bak\ntmp_%",
|
||
tableNameFilterLikeHint: "Usa sintaxis SQL LIKE: % coincide con cualquier texto, _ con un carácter. No distingue mayúsculas.",
|
||
pin: "Fijar",
|
||
reorderPinned: "Reordenar elemento fijado",
|
||
unpin: "Desfijar",
|
||
fixTab: "Fijar pestaña",
|
||
unfixTab: "Desfijar pestaña",
|
||
refreshTab: "Actualizar datos",
|
||
renameTab: "Renombrar pestaña",
|
||
duplicateTab: "Duplicar pestaña",
|
||
compactTabTitle: "Acortar títulos de pestañas",
|
||
fullTabTitle: "Mostrar títulos completos de pestañas",
|
||
closeTab: "Cerrar pestaña",
|
||
closeFixedTab: "Cerrar pestaña fijada",
|
||
closeOtherTabs: "Cerrar otras pestañas",
|
||
closeOtherRegularTabs: "Cerrar otras pestañas normales",
|
||
closeOtherFixedTabs: "Cerrar otras pestañas fijadas",
|
||
closeAllTabs: "Cerrar todas las pestañas",
|
||
closeAllRegularTabs: "Cerrar todas las pestañas normales",
|
||
closeAllFixedTabs: "Cerrar todas las pestañas fijadas",
|
||
copyName: "Copiar nombre",
|
||
copyFinalProxyPort: "Copiar puerto proxy final",
|
||
finalProxyPortCopied: "Puerto proxy final {port} copiado",
|
||
setDefaultDatabase: "Establecer como base de datos predeterminada",
|
||
clearDefaultDatabase: "Limpiar base de datos predeterminada",
|
||
exportDatabase: "Exportar base de datos",
|
||
exportAllDatabases: "Exportar todas las bases de datos",
|
||
exportDatabaseSuccess: "Se exportaron {count} tablas, hasta {limit} filas cada una",
|
||
exportDatabaseFailed: "Error al exportar la base de datos: {message}",
|
||
backupSqliteDatabase: "Backup SQLite Database",
|
||
backupSqliteDatabaseInProgress: "Backing up SQLite database...",
|
||
backupSqliteDatabaseSuccess: "SQLite database backed up",
|
||
backupSqliteDatabaseFailed: "Failed to backup SQLite database: {message}",
|
||
importData: "Importar datos",
|
||
exportData: "Exportar datos",
|
||
exportStructure: "Exportar estructura",
|
||
exportStructurePreviewTitle: "Estructura - {name}",
|
||
exportStructurePreviewTitleMultiple: "Estructura - {count} objetos",
|
||
exportStructureLoading: "Cargando estructura...",
|
||
copyStructure: "Copiar estructura",
|
||
copyStructureAs: "Copiar estructura como",
|
||
copyStructureAsTsv: "TSV (para Excel)",
|
||
copyStructureAsMarkdown: "Tabla Markdown",
|
||
structureDocTable: "Tabla",
|
||
structureDocColumn: "Columna",
|
||
structureDocType: "Tipo",
|
||
structureDocPrimaryKey: "Clave primaria",
|
||
structureDocNullable: "Permite NULL",
|
||
structureDocDefault: "Valor predeterminado",
|
||
structureDocComment: "Comentario",
|
||
structureDocYes: "Sí",
|
||
structureDocNo: "No",
|
||
structureDocCopied: "Estructura copiada",
|
||
structureDocCopyFallbackHint: "La copia automática fue bloqueada. Haz clic en Copiar de nuevo o selecciona el contenido inferior.",
|
||
saveStructure: "Guardar SQL",
|
||
exportStructureCopied: "Estructura copiada",
|
||
createTable: "Crear tabla",
|
||
createView: "Crear vista",
|
||
dropTable: "Eliminar tabla",
|
||
emptyTable: "Vaciar tabla",
|
||
truncateTable: "Truncar tabla",
|
||
duplicateStructure: "Clonar como tabla nueva",
|
||
renameObject: "Renombrar",
|
||
renameObjectTitle: "Renombrar objeto",
|
||
renameObjectNamePlaceholder: "Nuevo nombre",
|
||
renameObjectSuccess: '"{oldName}" renombrado a "{newName}"',
|
||
confirmDropTableTitle: "Eliminar tabla",
|
||
confirmDropTableMessage: '¿Estás seguro de que deseas eliminar "{name}"? Esto borrará permanentemente la tabla y todos sus datos.',
|
||
dropTableCascade: "Usar CASCADE",
|
||
dropTableCascadeHint: "También elimina objetos dependientes, como vistas. Desactívalo para usar el comportamiento RESTRICT predeterminado de PostgreSQL.",
|
||
truncateTableCascade: "Usar CASCADE",
|
||
truncateTableCascadeHint: "También trunca las tablas que hacen referencia a esta tabla mediante claves foráneas. Desactívalo para usar el comportamiento RESTRICT predeterminado de PostgreSQL.",
|
||
confirmEmptyTableTitle: "Vaciar tabla",
|
||
confirmEmptyTableMessage: '¿Estás seguro de que deseas eliminar todos los datos de "{name}"?',
|
||
confirmTruncateTableTitle: "Truncar tabla",
|
||
confirmTruncateTableMessage: '¿Estás seguro de que deseas truncar "{name}"? Esto eliminará todas las filas.',
|
||
dropTableSuccess: 'Tabla "{name}" eliminada',
|
||
editView: "Editar vista",
|
||
viewSource: "Ver código fuente",
|
||
viewDdl: "Ver DDL",
|
||
viewDdlLoading: "Cargando DDL...",
|
||
ddlCopied: "DDL copiado",
|
||
dropObject: "Eliminar objeto",
|
||
dropView: "Eliminar vista",
|
||
dropColumn: "Eliminar columna",
|
||
dropIndex: "Eliminar índice",
|
||
dropAllIndexes: "Eliminar todos los índices",
|
||
dropForeignKey: "Eliminar clave foránea",
|
||
dropTrigger: "Eliminar disparador",
|
||
batchDrop: "Eliminar seleccionados ({count})",
|
||
batchEmpty: "Vaciar seleccionadas ({count})",
|
||
batchTruncate: "Truncar seleccionadas ({count})",
|
||
executeProcedure: "Ejecutar procedimiento",
|
||
confirmExecuteProcedureTitle: "Ejecutar procedimiento",
|
||
confirmExecuteProcedureMessage: '¿Ejecutar el procedimiento "{name}"? Puedes completar o ajustar los valores de los parámetros primero.',
|
||
loadingProcedureParameters: "Cargando parámetros...",
|
||
procedureParametersUnavailable: "No se pudo cargar la metadata de parámetros. Aún puedes editar el SQL inferior y ejecutarlo.",
|
||
noProcedureParameters: "No se encontraron parámetros. El SQL actual se ejecutará tal como se muestra.",
|
||
inputParameters: "{count} parámetros de entrada",
|
||
outputParameters: "{count} parámetros de salida",
|
||
parameterName: "Name",
|
||
parameterType: "Type",
|
||
parameterMode: "Mode",
|
||
parameterValue: "Value",
|
||
parameterNull: "NULL",
|
||
parameterDefault: "DEFAULT",
|
||
parameterDefaultHint: "Cuando DEFAULT está marcado, DBX omite ese argumento para que la base de datos use el valor predeterminado.",
|
||
parameterValuePlaceholder: "Ingresa un valor",
|
||
outputOnly: "Solo salida",
|
||
sqlPreview: "Vista previa SQL",
|
||
resetSqlPreview: "Restablecer SQL",
|
||
openInSqlEditor: "Abrir en editor",
|
||
dropProcedure: "Eliminar procedimiento",
|
||
dropFunction: "Eliminar función",
|
||
createMongoIndex: "Crear índice",
|
||
createMongoIndexTitle: 'Crear índice: "{collection}"',
|
||
createMongoIndexFields: "Campos del índice",
|
||
createMongoIndexFieldRequired: "Selecciona o introduce un campo en cada fila.",
|
||
mongoIndexAscending: "Ascendente (1)",
|
||
mongoIndexDescending: "Descendente (-1)",
|
||
createMongoIndexNamePlaceholder: "Generado automáticamente",
|
||
createMongoIndexNameHint: "Déjalo vacío para que MongoDB genere el nombre a partir de los campos y tipos.",
|
||
createMongoIndexSparse: "Disperso",
|
||
batchDropIndexes: "Eliminar índices ({count})",
|
||
confirmDropViewTitle: "Eliminar vista",
|
||
confirmDropViewMessage: '¿Seguro que deseas eliminar la vista "{name}"?',
|
||
confirmDropObjectTitle: "Eliminar objeto",
|
||
confirmDropObjectMessage: '¿Seguro que deseas eliminar "{name}"?',
|
||
confirmDropColumnTitle: "Eliminar columna",
|
||
confirmDropIndexTitle: "Eliminar índice",
|
||
confirmDropMongoIndexMessage: '¿Seguro que deseas eliminar el índice "{name}" de la colección "{collection}"?',
|
||
confirmDropMongoAllIndexesMessage: '¿Seguro que deseas eliminar todos los índices removibles de la colección "{name}"?',
|
||
confirmDropMongoAllIndexesDetails: 'MongoDB conserva el índice "_id_". También pueden mantenerse índices adicionales requeridos por shard keys; el resultado solo mostrará los índices realmente eliminados.',
|
||
confirmDropForeignKeyTitle: "Eliminar clave foránea",
|
||
confirmDropTriggerTitle: "Eliminar disparador",
|
||
confirmDropTableChildObjectMessage: '¿Seguro que deseas eliminar "{name}" de "{table}"?',
|
||
confirmDropBatchIndexesMessage: '¿Seguro que deseas eliminar {count} índices seleccionados de "{table}"? Esta acción no se puede deshacer.',
|
||
confirmBatchDropTitle: "Eliminar objetos seleccionados",
|
||
confirmBatchDropMessage: "¿Seguro que deseas eliminar {count} objetos seleccionados? Esta acción no se puede deshacer.",
|
||
confirmBatchEmptyTitle: "Vaciar tablas seleccionadas",
|
||
confirmBatchEmptyMessage: "¿Seguro que deseas eliminar todos los datos de {count} tablas seleccionadas?",
|
||
confirmBatchTruncateTitle: "Truncar tablas seleccionadas",
|
||
confirmBatchTruncateMessage: "¿Seguro que deseas truncar {count} tablas seleccionadas? Esto eliminará todas las filas.",
|
||
confirmDropProcedureTitle: "Eliminar procedimiento",
|
||
confirmDropProcedureMessage: '¿Seguro que deseas eliminar el procedimiento "{name}"?',
|
||
confirmDropFunctionTitle: "Eliminar función",
|
||
confirmDropFunctionMessage: '¿Seguro que deseas eliminar la función "{name}"?',
|
||
dropViewSuccess: 'Vista "{name}" eliminada',
|
||
dropProcedureSuccess: 'Procedimiento "{name}" eliminado',
|
||
dropFunctionSuccess: 'Función "{name}" eliminada',
|
||
dropTableChildObjectSuccess: '"{name}" eliminado',
|
||
dropAllIndexesSuccess: 'Se eliminaron {count} índices de "{name}"',
|
||
dropIndexesPartialFailure: "Se eliminaron {success} índices; {failed} fallaron.",
|
||
createMongoIndexSuccess: 'Índice "{name}" creado en "{collection}"',
|
||
mongoIndexRefreshFailed: "No se pudo actualizar la lista de índices después de la operación: {message}",
|
||
batchDropSuccess: "{count} objetos eliminados",
|
||
batchEmptySuccess: "{count} tablas vaciadas",
|
||
batchEmptyPartialFail: "Se vaciaron {success} tablas; {failed} fallaron",
|
||
batchEmptySubmitted: "Se enviaron tareas para vaciar {count} tablas",
|
||
batchEmptySubmittedPartial: "Se enviaron {success} tareas; {failed} fallaron",
|
||
batchTruncateSuccess: "{count} tablas truncadas",
|
||
emptyTableSuccess: 'Todos los datos eliminados de "{name}"',
|
||
emptyTableSubmitted: 'Tarea de vaciado enviada para "{name}"',
|
||
truncateTableSuccess: 'Tabla "{name}" truncada',
|
||
duplicateStructureSuccess: 'Tabla clonada como "{name}"',
|
||
tableOperationFailed: "Error en la operación: {message}",
|
||
objectDropRefreshFailed: "Los objetos se eliminaron, pero no se pudo actualizar la barra lateral: {message}",
|
||
duplicateNameTitle: "Clonar como tabla nueva",
|
||
duplicateNamePlaceholder: "Nombre de la nueva tabla",
|
||
copyTable: "Copiar tabla",
|
||
pasteTable: "Pegar tabla",
|
||
pasteOptionStructureAndData: "Estructura y datos",
|
||
pasteOptionStructureOnly: "Solo estructura",
|
||
pasteOptionDataOnly: "Solo datos",
|
||
pasteTableSuccess: 'Tabla pegada como "{name}"',
|
||
pasteTableConfirmTitle: "Pegar tabla",
|
||
pasteTableConfirmMessage: "Pegar tabla desde el portapapeles",
|
||
batchPasteTitle: "Pegar tablas",
|
||
batchPasteSuccess: "{count} tablas pegadas correctamente",
|
||
batchPastePartialFail: "{success} tablas pegadas, {failed} fallidas",
|
||
pasteTableRefreshFailed: "Las tablas se pegaron, pero no se pudo actualizar la lista de objetos: {message}",
|
||
pasteTableCancelledAfterPartial: "Se canceló el pegado. Las tablas creadas antes de cancelarlo se actualizaron y se conservó el portapapeles.",
|
||
noTableToPaste: "No hay tablas disponibles para pegar",
|
||
pasteTableClipboardUpdated: "Tabla copiada al portapapeles",
|
||
createDatabase: "Crear base de datos",
|
||
createDuckDbFile: "Crear archivo de base de datos",
|
||
attachSqliteDatabase: "Adjuntar base de datos SQLite",
|
||
dropDatabase: "Eliminar base de datos",
|
||
confirmDropDatabaseTitle: "Eliminar base de datos",
|
||
confirmDropDatabaseMessage: '¿Estás seguro de que deseas eliminar la base de datos "{name}"? Esto borrará permanentemente la base de datos y todos sus datos.',
|
||
createDatabaseSuccess: 'Base de datos "{name}" creada',
|
||
mysqlCreateDatabasePermissionHint: "La cuenta MySQL actual no puede crear esta base de datos. Una cuenta llamada root no tiene necesariamente privilegios de administrador. Use una cuenta de administrador con GRANT OPTION para conceder el permiso CREATE y vuelva a intentarlo.",
|
||
createDatabasePartial: 'La base de datos "{name}" se creó, pero algunas concesiones fallaron',
|
||
createDatabaseFailed: 'No se pudo crear la base de datos "{name}"',
|
||
createDatabaseUsers: "Conceder acceso a usuarios",
|
||
createDatabaseUsersHint: "Los usuarios seleccionados recibirán acceso nativo completo después de crear la base de datos.",
|
||
createDatabaseUsersSelected: "{count} seleccionados",
|
||
createDatabaseUsersLoading: "Cargando usuarios...",
|
||
createDatabaseUsersLoadFailed: "No se pudieron cargar los usuarios: {message}",
|
||
previewCreateDatabaseSql: "Vista previa de SQL",
|
||
createDatabaseSqlPreview: "Vista previa del SQL de creación de base de datos",
|
||
applyCreateDatabaseSql: "Crear y conceder",
|
||
closeCreateDatabaseResult: "Cerrar",
|
||
createDatabaseStep: 'Crear la base de datos "{database}"',
|
||
createDatabaseGrantStep: 'Conceder a {user} acceso a la base de datos "{database}"',
|
||
createDatabaseGrantObjectsStep: 'Conceder a {user} acceso a esquemas y objetos de "{database}"',
|
||
createDatabaseStepSkipped: "Omitido porque falló un paso anterior requerido.",
|
||
editDatabaseProperties: "Editar propiedades de base de datos",
|
||
editDatabasePropertiesTitle: 'Editar propiedades de base de datos: "{name}"',
|
||
editDatabasePropertiesSaving: "Guardando...",
|
||
editDatabasePropertiesSuccess: 'Propiedades de la base de datos "{name}" actualizadas',
|
||
editDatabaseComment: "Comentario de base de datos",
|
||
editDatabaseCommentPlaceholder: "Introduce el comentario de la base de datos...",
|
||
createDuckDbFileSuccess: 'Archivo de base de datos DuckDB "{name}" creado y adjuntado',
|
||
createDuckDbFileDesktopOnly: "Crear archivos de base de datos DuckDB solo está disponible en la app de escritorio",
|
||
attachSqliteDatabaseSuccess: 'Base de datos SQLite "{name}" adjuntada',
|
||
attachSqliteDatabaseDesktopOnly: "Adjuntar archivos de base de datos SQLite solo está disponible en la app de escritorio",
|
||
dropDatabaseSuccess: 'Base de datos "{name}" eliminada',
|
||
dropCollection: "Eliminar colección",
|
||
confirmDropCollectionTitle: "Eliminar colección",
|
||
confirmDropCollectionMessage: '¿Estás seguro de que deseas eliminar la colección "{name}"? Esto borrará permanentemente la colección y todos sus documentos.',
|
||
dropCollectionSuccess: 'Colección "{name}" eliminada',
|
||
createDatabaseNamePlaceholder: "Nombre de la base de datos",
|
||
createDatabaseCharset: "Conjunto de caracteres",
|
||
createDatabaseCharsetPlaceholder: "ej. utf8mb4",
|
||
createDatabaseCharsetSearchPlaceholder: "Buscar o escribir un conjunto de caracteres",
|
||
createDatabaseCharsetEmpty: "No se encontraron conjuntos de caracteres",
|
||
createDatabaseCharsetLoading: "Cargando conjuntos de caracteres...",
|
||
createDatabaseCharsetCustomOption: 'Usar "{value}"',
|
||
createDatabaseCollation: "Cotejamiento",
|
||
createDatabaseCollationPlaceholder: "ej. utf8mb4_unicode_ci",
|
||
createDatabaseCollationSearchPlaceholder: "Buscar o escribir un cotejamiento",
|
||
createDatabaseCollationEmpty: "No se encontraron cotejamientos",
|
||
createDatabaseCollationLoading: "Cargando cotejamientos...",
|
||
createDatabaseCollationCustomOption: 'Usar "{value}"',
|
||
createSchema: "Crear esquema",
|
||
dropSchema: "Eliminar esquema",
|
||
confirmDropSchemaTitle: "Eliminar esquema",
|
||
confirmDropSchemaMessage: '¿Estás seguro de que deseas eliminar el esquema "{name}"? Esto borrará permanentemente el esquema y todos sus objetos.',
|
||
createSchemaSuccess: 'Esquema "{name}" creado',
|
||
dropSchemaSuccess: 'Esquema "{name}" eliminado',
|
||
dropDamengSchemaRequiresDifferentDba: "La conexión actual no puede eliminar este esquema de forma segura. Conéctate con otro usuario DBA e inténtalo de nuevo.",
|
||
createSchemaNamePlaceholder: "Nombre del esquema",
|
||
editSchemaComment: "Editar comentario",
|
||
editSchemaCommentTitle: 'Editar comentario: "{name}"',
|
||
schemaCommentPlaceholder: "Introduce un comentario del esquema...",
|
||
schemaCommentSaving: "Guardando...",
|
||
editSchemaCommentSuccess: 'Comentario del esquema "{name}" actualizado',
|
||
manageExtension: "Administrar extensión...",
|
||
dropExtension: "Eliminar extensión",
|
||
processList: "Lista de procesos",
|
||
serverDashboard: "Panel de control del servidor",
|
||
createProcedure: "Nuevo procedimiento almacenado",
|
||
createFunction: "Nueva función",
|
||
createTrigger: "Nuevo disparador",
|
||
changeOpenMode: "Modificar modo de apertura",
|
||
},
|
||
visibleDatabases: {
|
||
title: "Bases de datos visibles",
|
||
description: 'Elige qué bases de datos se muestran bajo "{connection}".',
|
||
searchPlaceholder: "Buscar bases de datos...",
|
||
selectedCount: "{selected}/{total} seleccionadas",
|
||
selectAll: "Seleccionar todo",
|
||
selectFiltered: "Seleccionar resultados de búsqueda",
|
||
clear: "Limpiar",
|
||
showAll: "Mostrar todo",
|
||
showSystemDatabases: "Mostrar bases de datos del sistema",
|
||
save: "Guardar",
|
||
emptySelection: "Selecciona al menos una base de datos, o usa Mostrar todo para quitar el filtro.",
|
||
loadFailed: "No se pudieron cargar las bases de datos: {message}",
|
||
},
|
||
visibleSchemas: {
|
||
title: "Filtro de Schema",
|
||
description: 'Elige qué schemas se muestran bajo "{connection}".',
|
||
searchPlaceholder: "Buscar schemas...",
|
||
selectedCount: "{selected}/{total} seleccionados",
|
||
selectAll: "Seleccionar todo",
|
||
selectFiltered: "Seleccionar resultados de búsqueda",
|
||
clear: "Limpiar",
|
||
showAll: "Mostrar todo",
|
||
showSystemSchemas: "Mostrar schemas del sistema",
|
||
save: "Guardar",
|
||
emptySelection: "Selecciona al menos un schema, o usa Mostrar todo para quitar el filtro.",
|
||
loadFailed: "No se pudieron cargar los schemas: {message}",
|
||
},
|
||
tree: {
|
||
savedSql: "Biblioteca SQL",
|
||
userAdmin: "Usuarios y Privilegios",
|
||
damengJobAdmin: "Trabajos del agente",
|
||
linkedServers: "Servidores vinculados",
|
||
defaultDatabase: "Base predeterminada",
|
||
columns: "Columnas",
|
||
indexes: "Índices",
|
||
foreignKeys: "Claves foráneas",
|
||
triggers: "Disparadores",
|
||
constraints: "Restricciones",
|
||
tables: "Tablas",
|
||
tableNameFilterActive: "filtrado",
|
||
views: "Vistas",
|
||
materializedViews: "Vistas materializadas",
|
||
procedures: "Procedimientos",
|
||
functions: "Funciones",
|
||
sequences: "Secuencias",
|
||
synonyms: "Sinónimos",
|
||
packages: "Paquetes",
|
||
partitions: "Particiones",
|
||
subpartitions: "Subparticiones",
|
||
childTables: "Subtablas",
|
||
loadMore: "Cargar más...",
|
||
objectBrowser: "Explorar en el navegador de objetos ({count})",
|
||
extensions: "Extensiones",
|
||
types: "tipo",
|
||
gridfs: "GridFS",
|
||
buckets: "Buckets",
|
||
},
|
||
userAdmin: {
|
||
title: "Usuarios y Privilegios",
|
||
unsupported: "Se admiten conexiones compatibles con MySQL y PostgreSQL. Los modelos de permisos de SQL Server, Oracle y otros se pueden agregar próximamente.",
|
||
newUser: "Nuevo usuario",
|
||
anonymous: "Anónimo",
|
||
roleName: "Nombre del rol",
|
||
allowLogin: "Permitir inicio de sesión",
|
||
searchUser: "Buscar usuario o host",
|
||
loadingUsers: "Cargando usuarios...",
|
||
loadingGrants: "Cargando permisos...",
|
||
emptyUsers: "No se encontraron usuarios, o la cuenta actual no puede leer la lista de usuarios.",
|
||
pluginUnknown: "Plugin de autenticación desconocido",
|
||
grants: "Permisos",
|
||
noGrants: "No se encontraron permisos",
|
||
privilegeEditor: "Editor de privilegios",
|
||
privilegeHint: "Elige privilegios, base de datos y tabla, luego previsualiza el SQL antes de aplicar. * significa global o todas las tablas.",
|
||
database: "Base de datos",
|
||
schema: "Esquema",
|
||
table: "Tabla",
|
||
scope: "Ámbito de concesión",
|
||
scopeDatabase: "Base de datos",
|
||
scopeSchema: "Esquema",
|
||
scopeTable: "Tabla",
|
||
scopeRole: "Pertenencia a rol",
|
||
memberRole: "Rol miembro",
|
||
privileges: "Privilegios",
|
||
grantOption: "Permitir más concesiones (WITH GRANT OPTION)",
|
||
adminOption: "Permitir gestión de membresía (WITH ADMIN OPTION)",
|
||
grant: "Conceder",
|
||
revoke: "Revocar",
|
||
username: "Nombre de usuario",
|
||
host: "Host",
|
||
changePassword: "Cambiar contraseña",
|
||
newPassword: "Nueva contraseña",
|
||
lock: "Bloquear",
|
||
unlock: "Desbloquear",
|
||
disableLogin: "Deshabilitar inicio de sesión",
|
||
enableLogin: "Habilitar inicio de sesión",
|
||
dropUser: "Eliminar usuario",
|
||
previewSql: "Vista previa de SQL",
|
||
sqlPreview: "Vista previa de SQL",
|
||
applySql: "Aplicar SQL",
|
||
applySuccess: "Privilegios de usuario actualizados",
|
||
applyPartial: "El usuario se creó, pero algunas concesiones de base de datos fallaron",
|
||
applyFailedSummary: "La operación falló",
|
||
applyFailed: "Ejecución fallida: {message}",
|
||
applyFailedUnknown: "Ejecución fallida",
|
||
standardUser: "Usuario estándar",
|
||
standardUserHint: "Concede solo las bases de datos y los privilegios seleccionados abajo.",
|
||
adminUser: "Usuario administrador",
|
||
adminUserHint: "Crea una cuenta de alto privilegio a nivel de instancia.",
|
||
adminUserWarning: "Esta cuenta puede administrar bases de datos y otros usuarios. Revisa el SQL completo antes de aplicarlo.",
|
||
databaseAccess: "Acceso a bases de datos",
|
||
databaseAccessHint: "Selecciona bases de datos y configura un nivel de permisos distinto para cada una.",
|
||
selectedDatabaseCount: "{count} bases de datos",
|
||
searchDatabase: "Buscar bases de datos",
|
||
loadingDatabases: "Cargando bases de datos...",
|
||
emptyDatabases: "No se encontraron bases de datos",
|
||
loadDatabasesFailed: "No se pudieron cargar las bases de datos: {message}",
|
||
prepareAuthorizationFailed: "No se pudo preparar la autorización de la base de datos: {message}",
|
||
presetReadWrite: "Lectura/Escritura",
|
||
presetReadOnly: "Solo lectura",
|
||
presetDdl: "Solo DDL",
|
||
presetDml: "Solo DML",
|
||
presetCustom: "Personalizado",
|
||
customPrivilegeRequired: "Selecciona al menos un privilegio.",
|
||
postgresDdlHint: "PostgreSQL concede CREATE sobre la base de datos y el esquema. Modificar o eliminar objetos existentes aún requiere ser su propietario.",
|
||
resultSuccess: "Todos los pasos se completaron correctamente",
|
||
resultPartial: "Completado parcialmente",
|
||
resultFailed: "Ejecución fallida",
|
||
closeResult: "Cerrar",
|
||
stepCreateUser: "Crear usuario o rol",
|
||
stepGrantAdmin: "Conceder privilegios administrativos a {user}",
|
||
stepGrantDatabase: 'Conceder a {user} acceso a la base de datos "{database}"',
|
||
stepGrantObjects: 'Conceder a {user} privilegios de esquema y objetos en "{database}"',
|
||
stepGrantCurrentObjects: 'Conceder a {user} privilegios sobre {scope} existentes del esquema "{schema}" en "{database}"',
|
||
stepGrantFutureObjects: 'Conceder a {user} privilegios sobre futuros {scope} creados por el rol actual en "{database}"',
|
||
stepGrantFutureObjectsForOwner: 'Conceder a {user} privilegios sobre futuros {scope} creados por {owner} en "{database}"',
|
||
scopeSchemas: "esquemas",
|
||
scopeTables: "tablas",
|
||
scopeSequences: "secuencias",
|
||
scopeFunctions: "funciones",
|
||
stepSkipped: "Omitido porque falló un paso anterior requerido.",
|
||
},
|
||
damengJobAdmin: {
|
||
title: "Trabajos del agente Dameng",
|
||
unsupported: "Esta página solo admite conexiones Dameng.",
|
||
initEnvironment: "Inicializar entorno de trabajos",
|
||
environmentReady: "Entorno de trabajos inicializado",
|
||
newJob: "Nuevo trabajo",
|
||
searchJob: "Buscar trabajos",
|
||
loadFailed: "Error al cargar",
|
||
environmentMissingTitle: "El entorno de trabajos no está inicializado",
|
||
environmentMissingHint: "Esta base de datos aún no tiene el entorno de trabajos SYSJOB.",
|
||
environmentMissingDescription: "Los trabajos del agente Dameng dependen de tablas y vistas del sistema en el esquema SYSJOB. Inicializa primero el entorno de trabajos; normalmente se requieren privilegios de administrador.",
|
||
emptyJobs: "No se encontraron trabajos, o la cuenta actual no puede leer la lista de trabajos.",
|
||
emptyDetails: "No hay filas de detalle",
|
||
selectJob: "Selecciona un trabajo",
|
||
enabled: "Habilitado",
|
||
disabled: "Deshabilitado",
|
||
running: "En ejecución",
|
||
enable: "Habilitar",
|
||
disable: "Deshabilitar",
|
||
runAsync: "Ejecutar ahora",
|
||
stopRunning: "Detener ejecución actual",
|
||
stopRunningDisabled: "Solo se pueden detener trabajos que se estén ejecutando",
|
||
clearHistories: "Limpiar historial",
|
||
dropJob: "Eliminar",
|
||
steps: "Pasos",
|
||
schedules: "Programaciones",
|
||
histories: "Historial",
|
||
noDescription: "Sin descripción",
|
||
jobName: "Nombre del trabajo",
|
||
description: "Descripción",
|
||
stepName: "Nombre del paso",
|
||
scheduleName: "Nombre de programación",
|
||
sqlCommand: "Script SQL",
|
||
scheduleMode: "Tipo de programación",
|
||
daily: "Diario",
|
||
once: "Una vez",
|
||
startDate: "Fecha de inicio",
|
||
startTime: "Hora de inicio",
|
||
endTime: "Hora de fin",
|
||
minuteInterval: "Intervalo en minutos",
|
||
previewSql: "Vista previa de SQL",
|
||
sqlPreview: "Vista previa de SQL",
|
||
applySql: "Aplicar SQL",
|
||
applySuccess: "Operación de trabajo aplicada",
|
||
applyFailed: "Ejecución fallida: {message}",
|
||
},
|
||
objects: {
|
||
all: "Todos",
|
||
tables: "Tablas",
|
||
views: "Vistas",
|
||
procedures: "Procedimientos",
|
||
functions: "Funciones",
|
||
sequences: "Secuencias",
|
||
packages: "Paquetes",
|
||
table: "Tabla",
|
||
partitions: "{count} particiones",
|
||
view: "Vista",
|
||
procedure: "Procedimiento",
|
||
function: "Función",
|
||
sequence: "Secuencia",
|
||
package: "Paquete",
|
||
packageBody: "Cuerpo del paquete",
|
||
name: "Nombre",
|
||
type: "Tipo",
|
||
rows: "Filas",
|
||
size: "Tamaño",
|
||
statisticsHint: "Estimado desde estadísticas de la base de datos; no se ejecuta COUNT(*).",
|
||
createdAt: "Creado",
|
||
updatedAt: "Actualizado",
|
||
source: "Código fuente",
|
||
saveSource: "Guardar",
|
||
cancelEdit: "Cancelar",
|
||
sourceSaved: "Código fuente guardado",
|
||
sourceSaveFailed: "Error al guardar el código fuente: {message}",
|
||
postgresViewColumnChangeHint:
|
||
"PostgreSQL no permite usar CREATE OR REPLACE VIEW para eliminar, reordenar, renombrar o cambiar el tipo de las columnas existentes de una vista. Mantenga sin cambios la cantidad, el orden, los nombres y los tipos de las columnas existentes; las columnas nuevas solo se pueden agregar al final. Use ALTER VIEW ... RENAME COLUMN para renombrar una columna. Para eliminar una columna, revise las dependencias y vuelva a crear la vista manualmente.",
|
||
schemaColumn: "Esquema",
|
||
comment: "Comentario",
|
||
loadingSchemas: "Cargando esquemas...",
|
||
schema: "Esquema",
|
||
search: "Buscar tablas, vistas, funciones, secuencias o procedimientos...",
|
||
loading: "Cargando objetos...",
|
||
empty: "No se encontraron objetos",
|
||
selectedTables: "{count} tablas seleccionadas",
|
||
exportSelected: "Exportar seleccionadas",
|
||
dropSelected: "Eliminar seleccionadas",
|
||
truncateSelected: "Truncar seleccionadas",
|
||
clearSelection: "Limpiar selección",
|
||
confirmBatchDropTitle: "Eliminar tablas seleccionadas",
|
||
confirmBatchDropMessage: "¿Seguro que quieres eliminar {count} tablas seleccionadas? Esta acción no se puede deshacer.",
|
||
confirmBatchTruncateTitle: "Truncar tablas seleccionadas",
|
||
confirmBatchTruncateMessage: "¿Seguro que quieres truncar {count} tablas seleccionadas? Esto eliminará todas las filas.",
|
||
batchDropSuccess: "{count} tablas eliminadas",
|
||
batchTruncateSuccess: "{count} tablas truncadas",
|
||
copyTableSelected: "Copiar",
|
||
pasteTableSelected: "Pegar",
|
||
toggleCheckbox: "Alternar selección múltiple",
|
||
viewList: "Vista de lista",
|
||
viewGrid: "Vista de cuadrícula",
|
||
sourceReadOnly: "Este código fuente es de solo lectura y no se puede editar.",
|
||
sortAsc: "ascendente",
|
||
sortDesc: "descendente",
|
||
sortBy: "ordenar por",
|
||
trigger: "disparador",
|
||
typeDefinition: "definición de tipo",
|
||
typeBody: "cuerpo de tipo",
|
||
},
|
||
structureEditor: {
|
||
mysqlDataTypeHelp: {
|
||
tinyint: "Entero de 1 byte: con signo -128 a 127; sin signo 0 a 255.",
|
||
smallint: "Entero de 2 bytes: con signo -32.768 a 32.767; sin signo 0 a 65.535.",
|
||
mediumint: "Entero de 3 bytes: con signo -8.388.608 a 8.388.607; sin signo 0 a 16.777.215.",
|
||
int: "Entero de 4 bytes: con signo -2.147.483.648 a 2.147.483.647; sin signo 0 a 4.294.967.295.",
|
||
bigint: "Entero de 8 bytes: con signo -2^63 a 2^63-1; sin signo 0 a 2^64-1.",
|
||
decimal: "Número decimal exacto; MySQL admite hasta 65 dígitos y escala 30. Úselo para dinero.",
|
||
float: "Número aproximado de precisión simple; para decimales exactos use DECIMAL.",
|
||
double: "Número aproximado de doble precisión; para decimales exactos use DECIMAL.",
|
||
real: "Alias de DOUBLE por defecto; REAL_AS_FLOAT lo convierte en alias de FLOAT.",
|
||
bit: "Campo de 1 a 64 bits; el ancho predeterminado es 1.",
|
||
boolean: "Alias de TINYINT(1): 0 es falso y distinto de cero es verdadero.",
|
||
serial: "Alias práctico de BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.",
|
||
date: "Fecha de calendario, de 1000-01-01 a 9999-12-31.",
|
||
datetime: "Fecha y hora sin conversión de zona; precisión fraccionaria 0 a 6, predeterminada 0.",
|
||
timestamp: "Fecha y hora convertida entre zona de sesión y UTC; precisión fraccionaria 0 a 6.",
|
||
time: "Hora o intervalo de -838:59:59 a 838:59:59; precisión fraccionaria 0 a 6.",
|
||
year: "Año de cuatro dígitos de 1901 a 2155, además de 0000.",
|
||
char: "Cadena de longitud fija de hasta 255 caracteres, rellenada con espacios.",
|
||
varchar: "Cadena de longitud variable; el máximo real depende de fila y juego de caracteres.",
|
||
tinytext: "Texto variable de hasta 255 bytes; fila, charset y max_allowed_packet pueden limitarlo.",
|
||
text: "Texto variable de hasta 65.535 bytes; fila, charset y max_allowed_packet pueden limitarlo.",
|
||
mediumtext: "Texto variable de hasta 16.777.215 bytes; fila, charset y max_allowed_packet pueden limitarlo.",
|
||
longtext: "Texto variable de hasta 4.294.967.295 bytes; fila, charset y max_allowed_packet pueden limitarlo.",
|
||
binary: "Cadena binaria fija de hasta 255 bytes, rellenada con 0x00.",
|
||
varbinary: "Cadena binaria variable; el máximo real depende del tamaño de fila.",
|
||
tinyblob: "Objeto binario de hasta 255 bytes; max_allowed_packet puede limitarlo.",
|
||
blob: "Objeto binario de hasta 65.535 bytes; max_allowed_packet puede limitarlo.",
|
||
mediumblob: "Objeto binario de hasta 16.777.215 bytes; max_allowed_packet puede limitarlo.",
|
||
longblob: "Objeto binario de hasta 4.294.967.295 bytes; max_allowed_packet puede limitarlo.",
|
||
enum: "Un valor entre hasta 65.535 literales; cambiar el orden puede alterar la semántica almacenada.",
|
||
set: "Cero o más valores entre hasta 64 miembros declarados.",
|
||
json: "Documento JSON validado; representación y funciones dependen del producto/versión; limitado por max_allowed_packet.",
|
||
jsonMysql: "JSON binario nativo de MySQL con validación y funciones JSON; limitado por max_allowed_packet.",
|
||
jsonMariaDb: "En MariaDB JSON es alias de LONGTEXT con JSON_VALID y colación utf8mb4_bin.",
|
||
nationalCharacter: "Alias de cadena nacional; MySQL usa utf8mb3, obsoleto; prefiera utf8mb4.",
|
||
geometry: "Geometría espacial; un índice SPATIAL InnoDB requiere NOT NULL y atributo SRID.",
|
||
point: "Punto espacial; SPATIAL InnoDB requiere NOT NULL y SRID.",
|
||
linestring: "Curva espacial; SPATIAL InnoDB requiere NOT NULL y SRID.",
|
||
polygon: "Superficie espacial; SPATIAL InnoDB requiere NOT NULL y SRID.",
|
||
multipoint: "Colección de puntos; SPATIAL InnoDB requiere NOT NULL y SRID.",
|
||
multilinestring: "Colección de curvas; SPATIAL InnoDB requiere NOT NULL y SRID.",
|
||
multipolygon: "Colección de polígonos; SPATIAL InnoDB requiere NOT NULL y SRID.",
|
||
geometrycollection: "Colección de geometrías mixtas; SPATIAL InnoDB requiere NOT NULL y SRID.",
|
||
inet4: "Tipo IPv4 de MariaDB desde 10.10; almacena la dirección en cuatro bytes.",
|
||
inet6: "Tipo compatible MariaDB para IPv6 e IPv4 mapeada.",
|
||
uuid: "Identificador único universal de 128 bits proporcionado por servidores compatibles.",
|
||
vector: "Tipo vector para similitud o ML; disponibilidad y dimensiones dependen de versión.",
|
||
xmltype: "Tipo XML proporcionado por servidores compatibles.",
|
||
integerDisplayWidth: "El ancho de visualización entero, por ejemplo INT(11), está obsoleto en MySQL y no limita el rango.",
|
||
zerofill: "ZEROFILL está obsoleto en MySQL 8 e implica UNSIGNED; formatee en la aplicación.",
|
||
unsignedNumeric: "UNSIGNED para DECIMAL, FLOAT o DOUBLE está obsoleto en MySQL 8; use CHECK para no negativos.",
|
||
floatPrecision: "En FLOAT(p), p de 25 a 53 selecciona DOUBLE; use DOUBLE explícitamente.",
|
||
floatingPointDisplay: "FLOAT(M,D) y DOUBLE(M,D) están obsoletos; use FLOAT/DOUBLE sin parámetros o DECIMAL(M,D).",
|
||
},
|
||
postgresDataTypeHelp: {
|
||
smallint: "Entero con signo de 2 bytes, de -32.768 a 32.767.",
|
||
integer: "Entero con signo de 4 bytes, de -2.147.483.648 a 2.147.483.647.",
|
||
bigint: "Entero con signo de 8 bytes, de -2^63 a 2^63-1.",
|
||
serial: "Sintaxis práctica que crea entero, secuencia, NOT NULL y nextval; no es único por sí mismo y puede tener huecos; prefiera IDENTITY.",
|
||
numeric: "Decimal exacto con precisión y escala; úselo para dinero y valores sin redondeo binario.",
|
||
real: "Flotante de precisión simple de 4 bytes; FLOAT(p) de 1 a 24 lo selecciona.",
|
||
double: "Flotante de doble precisión de 8 bytes; FLOAT sin precisión es alias y FLOAT(p) de 25 a 53 lo selecciona.",
|
||
money: "Importe monetario dependiente de lc_monetary; NUMERIC suele ser más seguro para datos portables.",
|
||
boolean: "Valor lógico verdadero, falso o nulo; BOOL es alias de BOOLEAN.",
|
||
char: "Cadena fija rellenada con espacios; CHARACTER es alias.",
|
||
varchar: "Cadena variable con límite opcional; CHARACTER VARYING es alias.",
|
||
text: "Cadena variable sin límite declarado; se almacena como VARCHAR sin límite.",
|
||
bytea: "Cadena binaria variable; TOAST puede almacenar valores grandes fuera de fila.",
|
||
date: "Fecha de calendario sin hora ni zona horaria.",
|
||
time: "Hora sin zona, con precisión fraccionaria opcional.",
|
||
timetz: "Hora con desplazamiento UTC; uso limitado, prefiera timestamptz para un instante.",
|
||
timestamp: "Fecha y hora sin conversión de zona para valores locales.",
|
||
timestamptz: "Instante almacenado en UTC y mostrado en la zona de sesión; no conserva la zona original.",
|
||
interval: "Duración en meses, días y microsegundos; las unidades de calendario no tienen duración fija.",
|
||
uuid: "Identificador único universal de 128 bits.",
|
||
json: "Texto JSON en representación original; se valida al analizar, pero suele ser más lento que JSONB.",
|
||
jsonb: "JSON binario descompuesto para procesamiento e índices; no conserva espacios, orden ni claves duplicadas.",
|
||
xml: "Valor XML con validación de documento o contenido según la opción.",
|
||
bit: "Cadena de bits fija o variable; BIT VARYING y VARBIT son alias variables.",
|
||
tsvector: "Lexemas normalizados para búsqueda de texto completo; suele indexarse con GIN o GiST.",
|
||
tsquery: "Consulta booleana de texto completo evaluada contra tsvector.",
|
||
cidr: "Red IPv4 o IPv6 con bits de host forzados a cero.",
|
||
inet: "Host IPv4 o IPv6 con máscara opcional; a diferencia de CIDR puede tener bits de host distintos de cero.",
|
||
macaddr: "Dirección MAC; MACADDR usa 6 bytes y MACADDR8 usa 8 bytes.",
|
||
geometry: "Geometría plana bidimensional sin SRID; use PostGIS para coordenadas geográficas y operaciones espaciales avanzadas.",
|
||
range: "Rango continuo con límites inclusivos/exclusivos; use multirange para rangos separados.",
|
||
oid: "Identificador de objeto sin signo del sistema; no es una clave primaria estable de aplicación.",
|
||
array: "Arreglo PostgreSQL de cualquier elemento, incluso multidimensional; las dimensiones declaradas no se fuerzan.",
|
||
multirange: "Conjunto de rangos no superpuestos; PostgreSQL normaliza miembros adyacentes o solapados.",
|
||
jsonpath: "Expresión de ruta SQL/JSON usada por consultas y predicados JSONB.",
|
||
pgLsn: "Ubicación WAL para replicación y recuperación; no es un número de secuencia de aplicación.",
|
||
pgSnapshot: "Instantánea de visibilidad de transacciones para operaciones de base de datos, no datos generales.",
|
||
},
|
||
sqliteDataTypeHelp: {
|
||
integer: "Afinidad INTEGER; una columna normal no fuerza esa clase. INTEGER PRIMARY KEY exacto es alias de rowid.",
|
||
real: "Afinidad REAL con IEEE 754; no apta para dinero exacto.",
|
||
text: "Afinidad TEXT; VARCHAR(n) y CHAR(n) no fuerzan n; use CHECK si importa la longitud.",
|
||
blob: "Afinidad BLOB: almacena bytes sin conversión.",
|
||
numeric: "Afinidad NUMERIC convierte texto numérico primero a INTEGER y luego a REAL; DATE, DATETIME y TIME también la usan.",
|
||
},
|
||
title: "Editar estructura de tabla",
|
||
createTitle: "Crear tabla",
|
||
editTabTitle: "Editar: {tableName}",
|
||
tableName: "Nombre de tabla",
|
||
refresh: "Actualizar estructura",
|
||
density: "Densidad",
|
||
densityCompact: "Compacta",
|
||
densityStandard: "Estándar",
|
||
densityComfortable: "Cómoda",
|
||
columns: "Columnas",
|
||
indexes: "Índices",
|
||
foreignKeys: "Claves foráneas",
|
||
triggers: "Disparadores",
|
||
ddl: "DDL",
|
||
addColumn: "Agregar columna",
|
||
columnTemplates: "Insertar campos predefinidos",
|
||
configureColumnTemplates: "Configurar campos predefinidos",
|
||
presetFieldsTemplate: "Conjunto de campos predefinidos",
|
||
searchColumns: "Buscar columna/comentario",
|
||
nextColumnMatch: "Ir a la siguiente columna coincidente",
|
||
searchIndexes: "Buscar índice",
|
||
nextIndexMatch: "Ir al siguiente índice coincidente",
|
||
addIndex: "Agregar índice",
|
||
addForeignKey: "Agregar clave foránea",
|
||
addTrigger: "Agregar disparador",
|
||
columnName: "Columna",
|
||
dataType: "Tipo",
|
||
typePlaceholder: "Seleccionar o escribir...",
|
||
noMatchingType: "Sin coincidencias",
|
||
length: "Longitud",
|
||
lengthUnit: "Unidad de longitud",
|
||
unitPlaceholder: "Unidad",
|
||
nullable: "Admite nulos",
|
||
primaryKey: "Clave primaria",
|
||
defaultValue: "Valor por defecto",
|
||
defaultValuePresets: "Valores predeterminados preestablecidos",
|
||
comment: "Comentario",
|
||
characterSet: "Conjunto de caracteres",
|
||
charsetPlaceholder: "Charset",
|
||
collation: "Cotejamiento",
|
||
collationPlaceholder: "Cotejamiento",
|
||
editComment: "Editar comentario",
|
||
commentPlaceholder: "Ingresar comentario de columna...",
|
||
tableCommentPlaceholder: "Ingresar comentario de tabla...",
|
||
tableCommentUnsupported: "La base de datos no admite comentarios de tabla",
|
||
actions: "Acciones",
|
||
indexName: "Índice",
|
||
indexColumns: "Columnas",
|
||
indexColumnsPlaceholder: "Seleccionar columnas...",
|
||
unique: "Único",
|
||
indexType: "Tipo",
|
||
includedColumns: "Incluidas",
|
||
includedColumnsPlaceholder: "Seleccionar columnas...",
|
||
filter: "Filtro",
|
||
foreignKeyName: "Clave foránea",
|
||
referencedSchema: "Esquema ref",
|
||
referencedTable: "Tabla ref",
|
||
referencedColumn: "Columna ref",
|
||
onDelete: "Al eliminar",
|
||
onUpdate: "Al actualizar",
|
||
defaultAction: "Predeterminado",
|
||
triggerName: "Disparador",
|
||
triggerStatement: "Sentencia del disparador",
|
||
primary: "Primaria",
|
||
drop: "Eliminar",
|
||
restore: "Restaurar",
|
||
remove: "Quitar",
|
||
moveColumnUp: "Mover columna arriba",
|
||
moveColumnDown: "Mover columna abajo",
|
||
dragColumn: "Arrastra para reordenar columnas",
|
||
localColumnOrderNotice: "El orden de las columnas se guarda solo localmente y no modifica la estructura de la base de datos.",
|
||
yes: "Sí",
|
||
no: "No",
|
||
emptyReadonly: "Sin registros",
|
||
sqlPreview: "Vista previa de SQL",
|
||
collapseSqlPreview: "Contraer vista previa de SQL",
|
||
expandSqlPreview: "Expandir vista previa de SQL",
|
||
noChanges: "Sin cambios",
|
||
apply: "Aplicar cambios",
|
||
ready: "Listo",
|
||
saved: "Estructura de tabla actualizada",
|
||
copySql: "Copiar SQL",
|
||
sqliteRebuildNotice: "SQLite conserva una instantánea de datos inerte como copia de seguridad, reconstruye la tabla en una sola transacción y fuerza CAST en las columnas modificadas. Los valores no representables pueden convertirse en 0/0.0; si ocurre un error, se revierte todo.",
|
||
extendedProperties: "Extendido",
|
||
autoIncrement: "Auto Incremento",
|
||
onUpdateCurrentTimestamp: "Actualización Auto",
|
||
identity: "Identidad",
|
||
identityGeneration: "Generación",
|
||
identitySeed: "Semilla",
|
||
identityIncrement: "Incremento",
|
||
sqlServerIdentityTypeHint: "La identidad de SQL Server solo admite tinyint, smallint, int, bigint y decimal/numeric con escala 0",
|
||
},
|
||
diagram: {
|
||
title: "Diagrama de relaciones",
|
||
open: "Ver diagrama",
|
||
selectConnection: "Seleccionar conexión",
|
||
selectDatabase: "Seleccionar base de datos",
|
||
selectSchema: "Seleccionar esquema",
|
||
searchTables: "Buscar tablas, columnas, claves...",
|
||
refresh: "Actualizar diagrama",
|
||
loading: "Leyendo relaciones...",
|
||
loadingProgress: "Leyendo relaciones... {loaded}/{total}",
|
||
partialError: "Se omitieron los metadatos de {count} tablas que no pudieron cargarse",
|
||
selectTarget: "Selecciona una conexión y base de datos",
|
||
empty: "No hay tablas para mostrar",
|
||
noMatches: "No hay tablas coincidentes",
|
||
tablesCount: "{count} tablas",
|
||
relationshipsCount: "{count} relaciones",
|
||
tableMode: "Vista de tabla",
|
||
engineeringMode: "ER de ingeniería",
|
||
allTables: "Todas las tablas",
|
||
relatedTables: "Tablas relacionadas",
|
||
moreColumns: "+ {count} columnas",
|
||
exportSvg: "Exportar SVG",
|
||
exportedSvg: "SVG exportado",
|
||
exportSvgFailed: "Error al exportar SVG: {message}",
|
||
zoomIn: "Acercar",
|
||
zoomOut: "Alejar",
|
||
resetLayout: "Restablecer diseño",
|
||
modelRelationships: "Relaciones de modelo",
|
||
copyJoinSql: "Copiar SQL",
|
||
customRelationshipsCount: "{count} modeladas",
|
||
relationshipName: "Nombre",
|
||
relationshipNamePlaceholder: "Opcional",
|
||
sourceTable: "Tabla de origen",
|
||
sourceColumn: "Columna de origen",
|
||
targetTable: "Tabla de destino",
|
||
targetColumn: "Columna de destino",
|
||
cardinality: "Cardinalidad",
|
||
cardinalityOneToMany: "Origen 1 · Destino N",
|
||
cardinalityManyToOne: "Origen N · Destino 1",
|
||
cardinalityManyToMany: "Origen N · Destino N",
|
||
cardinalityOneToOne: "Origen 1 · Destino 1",
|
||
addRelationship: "Agregar relación",
|
||
removeRelationship: "Eliminar relación",
|
||
relationshipIncomplete: "Selecciona ambas columnas de origen y destino",
|
||
relationshipSelfInvalid: "Una relación no puede apuntar a la misma columna",
|
||
relationshipExists: "Esta relación ya existe",
|
||
relationshipAdded: "Relación agregada",
|
||
noJoinSql: "No hay SQL de relación para copiar",
|
||
refreshConfirm: "Al actualizar se recargará la estructura de las tablas y se restablecerá el diseño del lienzo y el historial de deshacer. Las relaciones de modelado guardadas localmente no se verán afectadas. ¿Desea continuar?",
|
||
layers: "Capas",
|
||
autoMatch: "Coincidencia automática",
|
||
autoLayout: "Diseño automático",
|
||
matchRelationshipsCount: "{count} coincidencias",
|
||
cardinalityDirected: "Origen {source} · Destino {target}",
|
||
matchPickCardinality: "Antes de confirmar la coincidencia, seleccione la cardinalidad (1:1 / 1:N / N:1 / N:N).",
|
||
manualAddRelationship: "Añadir manualmente",
|
||
confirmMatch: "Confirmar",
|
||
ignoreMatch: "Ignorar",
|
||
exportPng: "Exportar PNG",
|
||
exportJson: "Exportar JSON",
|
||
exportDbml: "Exportar DBML",
|
||
exportMermaid: "Exportar Mermaid",
|
||
export: "Exportar",
|
||
exportedFormat: "{format} exportado",
|
||
exportFailed: "Error al exportar {format}: {message}",
|
||
fitView: "Ajustar al lienzo",
|
||
resetZoom: "Restablecer zoom",
|
||
undo: "Deshacer",
|
||
redo: "Rehacer",
|
||
fullscreen: "Pantalla completa",
|
||
exitFullscreen: "Salir de pantalla completa",
|
||
addLayer: "Añadir capa",
|
||
noLayersYet: "Aún no hay capas, haga clic en + para crear",
|
||
layoutFree: "Libre",
|
||
layoutAuto: "Automático",
|
||
layerLock: "Bloquear capa (sin diseño automático dentro de la capa)",
|
||
layerUnlock: "Desbloquear capa (permitir diseño automático dentro de la capa)",
|
||
layerLocked: "Bloqueada",
|
||
layerUnlocked: "Desbloqueada",
|
||
hideLayer: "Ocultar capa",
|
||
showLayer: "Mostrar capa",
|
||
deleteLayer: "Eliminar capa",
|
||
layerHiddenCannotFocus: "La capa está oculta. Muéstrela primero para ubicarla en el lienzo.",
|
||
createTable: "Crear tabla",
|
||
create: "Crear",
|
||
syncToDatabase: "Sincronizar con la base de datos",
|
||
syncDraftCount: "Se sincronizarán {count} cambios (crear/modificar/eliminar tablas)",
|
||
executeSync: "Ejecutar",
|
||
syncing: "Sincronizando…",
|
||
buildingSql: "Generando SQL…",
|
||
noSqlYet: "Aún no hay SQL",
|
||
copySql: "Copiar SQL",
|
||
tableName: "Nombre de la tabla",
|
||
tableNameRequired: "Por favor, ingrese el nombre de la tabla",
|
||
tableNameExists: "Ya existe una tabla con el mismo nombre",
|
||
assignLayer: "Capa asignada",
|
||
noLayer: "Sin capa",
|
||
withDefaultIdPk: "Incluir clave primaria id predeterminada",
|
||
inspectorTable: "Tabla",
|
||
inspectorRelationship: "Relación",
|
||
fieldComment: "Comentario",
|
||
fields: "Campos",
|
||
tabFields: "Campos",
|
||
tabIndexes: "Índices",
|
||
addIndex: "Agregar índice",
|
||
indexName: "Nombre del índice",
|
||
indexUnique: "UNIQUE",
|
||
indexColumns: "Columnas",
|
||
noIndexesYet: "Aún no hay índices",
|
||
indexesNotSupported: "La base de datos actual no admite la creación de índices en el editor de diagramas",
|
||
addField: "Agregar campo",
|
||
deleteField: "Eliminar campo",
|
||
undoDropField: "Deshacer eliminación de campo",
|
||
noFieldsYet: "Aún no hay campos. Agregue uno antes de sincronizar",
|
||
deleteDraftTable: "Eliminar tabla de borrador",
|
||
deleteLiveTable: "Eliminar tabla",
|
||
deleteLiveTableHint: "Marcar como pendiente de eliminación. La próxima vez que se sincronice con la base de datos se ejecutará DROP TABLE. Puede deshacer para restaurar.",
|
||
deleteLiveTableConfirm: "¿Confirmar que desea marcar esta tabla para eliminación? Al sincronizar se ejecutará DROP TABLE.",
|
||
liveTableReadOnly: "Tabla en la base de datos — Modifíquela en el editor de estructura de tabla",
|
||
liveTableAddColumnsHint: "Puede agregar campos (ALTER ADD) o marcar campos existentes para eliminar (ALTER DROP) y luego sincronizar. Para cambios como tipos, use el editor de estructura de tabla.",
|
||
liveTableIndexesReadOnly: "Los índices de tablas en la base de datos deben modificarse en el editor de estructura de tabla",
|
||
pendingColumnsBadge: "Cambios pendientes",
|
||
pendingDropColumnBadge: "Pendiente de eliminar",
|
||
pendingDropTableBadge: "Tabla pendiente de eliminar",
|
||
source: "Origen",
|
||
target: "Destino",
|
||
emptyDesignHint: "Aún no hay tablas. Puede crear capas y tablas, editar campos en el panel de propiedades y sincronizar con la base de datos al finalizar.",
|
||
removeFromLayer: "Quitar de la capa",
|
||
addTables: "Agregar tablas",
|
||
tabSelectExisting: "Seleccionar existente",
|
||
tabCreateTable: "Crear tabla",
|
||
multiSelect: "Selección múltiple",
|
||
closeMultiSelect: "Cerrar",
|
||
selectAll: "Seleccionar todo",
|
||
clearSelection: "Limpiar",
|
||
tablesInOtherLayers: "Tablas en otras capas",
|
||
filterTables: "Filtrar tablas...",
|
||
noMatchingTables: "No hay tablas coincidentes",
|
||
addSelectedCount: "Agregar {count} elementos seleccionados",
|
||
layerNameTooLong: "El nombre de la capa no puede superar los 50 caracteres",
|
||
layerNameInvalid: "El nombre de la capa puede contener caracteres chinos, letras, números, espacios, guiones bajos, guiones y puntos",
|
||
layerNameExists: "El nombre de la capa ya existe",
|
||
total: "Total",
|
||
confirmed: "Confirmado",
|
||
pending: "Pendiente",
|
||
conflicts: "Conflictos",
|
||
conflict: "Conflicto",
|
||
ignored: "Ignorado",
|
||
confirmAll: "Confirmar todo",
|
||
ignoreAll: "Ignorar todo",
|
||
clearAll: "Limpiar todo",
|
||
confidenceHigh: "Alta",
|
||
confidenceMedium: "Media",
|
||
confidenceLow: "Baja",
|
||
noInferred: "No hay relaciones inferidas",
|
||
editRelationship: "Editar",
|
||
saveRelationship: "Guardar",
|
||
deleteRelationship: "Eliminar",
|
||
confirmDeleteRelationship: "¿Confirmar eliminación de esta relación?",
|
||
confirmDeleteRelationshipAction: "Confirmar eliminación",
|
||
confirmRelationship: "Confirmar",
|
||
ignoreRelationship: "Ignorar",
|
||
relationshipKindFk: "Clave externa",
|
||
relationshipKindCustom: "Personalizada",
|
||
relationshipKindInferred: "Inferida",
|
||
relationshipReadOnlyFk: "Esta relación proviene de una restricción de clave externa de la base de datos y no se puede modificar aquí.",
|
||
relationshipUpdated: "Relación actualizada",
|
||
createTableNotSupported: "La base de datos actual no admite la creación de tablas",
|
||
structureSyncNotSupported: "La base de datos actual no admite sincronizar la estructura de tablas desde el diagrama",
|
||
addColumnNotSupported: "La base de datos actual no admite agregar columnas",
|
||
dropColumnNotSupported: "La base de datos actual no admite eliminar columnas",
|
||
dropTableNotSupported: "La base de datos actual no admite eliminar tablas desde el diagrama",
|
||
},
|
||
etcd: {
|
||
prefixPlaceholder: "Buscar ruta de Key, p. ej. /app/ o servicio",
|
||
newKey: "Nueva clave",
|
||
loadingKeys: "Cargando claves...",
|
||
empty: "No se encontraron claves",
|
||
loadMore: "Cargar más",
|
||
selectKey: "Selecciona una clave para ver su valor",
|
||
loadingValue: "Cargando valor...",
|
||
notFound: "Clave no encontrada",
|
||
edit: "Editar",
|
||
editKey: "Editar clave",
|
||
delete: "Eliminar",
|
||
deleteTitle: "Eliminar clave de etcd",
|
||
keyPlaceholder: "/ruta/a/clave",
|
||
keyRequired: "La clave es obligatoria",
|
||
ttl: "TTL (segundos)",
|
||
ttlPlaceholder: "Opcional; vacío significa sin caducidad",
|
||
ttlInvalid: "El TTL debe ser un entero positivo",
|
||
ttlUnavailable: "Actualiza el Agent de etcd y vuelve a conectarte para configurar el TTL.",
|
||
expiryMode: "Política de caducidad",
|
||
expiryPermanent: "Permanente",
|
||
expiryPermanentHint: "No adjunta un lease; la clave no caducará automáticamente",
|
||
expiryTtl: "Tiempo de vida (TTL)",
|
||
expiryTtlHint: "Crea un lease temporal que caduca después del tiempo configurado",
|
||
expiryLease: "Vincular lease",
|
||
expiryLeaseHint: "Vincula la clave a un Lease ID existente",
|
||
leaseId: "Lease ID",
|
||
leasePlaceholder: "Introduce un Lease ID existente",
|
||
leaseInvalid: "El Lease ID debe ser un entero positivo válido de 64 bits",
|
||
valueContent: "Contenido del valor",
|
||
keyAlreadyExists: "Ya existe una Key con este nombre. Elige otro nombre o cierra este diálogo y edita la Key existente.",
|
||
conflict: "Esta Key cambió después de cargarse. Actualízala e inténtalo de nuevo.",
|
||
saved: "Clave guardada",
|
||
deleted: "Clave eliminada",
|
||
base64Readonly: "Edita los valores Base64 en el modo Base64.",
|
||
rename: "Renombrar",
|
||
clone: "Clonar",
|
||
copyKey: "Copiar clave",
|
||
export: "Exportar",
|
||
import: "Importar",
|
||
sync: "Sincronizar",
|
||
history: "Historial",
|
||
restore: "Restaurar esta versión",
|
||
compare: "Comparar",
|
||
format: "Formato del valor",
|
||
savePreview: "Revisar cambios del valor",
|
||
globalSearch: "Búsqueda global",
|
||
searchPrefix: "Limitar a un prefijo (opcional)",
|
||
searchAll: "Clave y valor",
|
||
searchPlaceholder: "Buscar en el contenido de claves o valores",
|
||
searchProgress: "Se analizaron {scanned} claves, {matched} coincidencias",
|
||
exportResults: "Exportar resultados",
|
||
clearSearchResults: "Limpiar resultados",
|
||
exported: "Se exportaron {count} claves",
|
||
importPreview: "Vista previa de importación",
|
||
syncPreview: "Vista previa de sincronización",
|
||
targetConnection: "Selecciona la conexión etcd de destino",
|
||
targetReadOnly: "La conexión de destino es de solo lectura; no se pueden aplicar importaciones ni sincronizaciones.",
|
||
mirrorDelete: "Eliminar claves adicionales del destino (espejo)",
|
||
mirrorDeleteWarning: "El modo espejo elimina las claves de destino que no existen en el origen. Revisa cada eliminación antes de aplicarla.",
|
||
preparingPreview: "Preparando una vista previa de cambios con revisión fija...",
|
||
operation: "Operación",
|
||
reason: "Motivo",
|
||
selectedOperations: "{count} operaciones seleccionadas",
|
||
applyOperations: "Aplicar operaciones",
|
||
transferApplied: "Se aplicaron {count} operaciones",
|
||
operationApplied: "Aplicada correctamente",
|
||
transferPartiallyApplied: "Se aplicaron {count} operaciones antes de detenerse el lote: {error}. La vista previa se actualizó; reintenta solo las operaciones restantes.",
|
||
transferPartialRefreshFailed: "Se aplicaron {count} operaciones antes de detenerse el lote: {error}. También falló la actualización de la vista previa: {previewError}. Cierra y vuelve a abrir la vista previa antes de reintentar.",
|
||
targetChangedDuringTransfer: "La conexión de destino cambió durante la ejecución del lote",
|
||
dashboard: {
|
||
title: "Panel de etcd",
|
||
description: "Observación basada en endpoints accesibles por el cliente; no es una comprobación autoritativa del quorum.",
|
||
autoRefreshOff: "Actualización automática desactivada",
|
||
refresh: "Actualizar",
|
||
retry: "Comprobar de nuevo",
|
||
loadFailed: "No se pudo cargar el panel de etcd",
|
||
agentUpgradeTitle: "El panel no está disponible con el Agent de etcd actual",
|
||
agentUpgradeDescription: "Esta conexión todavía usa un Agent antiguo que no puede leer el estado del clúster. La navegación y edición de claves siguen disponibles.",
|
||
agentUpgradeSteps: "Actualiza el Agent de etcd en el Gestor de drivers, desconecta y vuelve a conectar esta conexión. Después selecciona «Comprobar de nuevo».",
|
||
observedHealth: "Salud observada",
|
||
reachableMembers: "Miembros accesibles",
|
||
keyCount: "Número de claves",
|
||
backendSize: "Tamaño del backend",
|
||
fragmentation: "Fragmentación estimada",
|
||
cluster: "clúster",
|
||
revision: "revisión",
|
||
leader: "líder",
|
||
noAlarms: "No se observaron alarmas activas",
|
||
prometheusMetrics: "Métricas de ejecución de Prometheus",
|
||
prometheusDescription: "Métricas estables recopiladas desde /metrics de etcd. Las tasas se calculan entre dos muestras consecutivas.",
|
||
collectedAt: "Recopilado a las",
|
||
requests: "Tasa de solicitudes gRPC",
|
||
requestFailureRate: "Tasa de errores de solicitudes",
|
||
proposals: "Propuestas Raft",
|
||
proposalLag: "Diferencia entre confirmadas y aplicadas",
|
||
pending: "pendientes",
|
||
diskLatency: "Latencia de persistencia en disco",
|
||
walFsync: "Promedio de fsync de WAL",
|
||
backendCommit: "Promedio de commit del backend",
|
||
networkTraffic: "Tráfico de red del cliente",
|
||
peerTraffic: "Tráfico entre pares",
|
||
processResources: "Recursos del proceso",
|
||
runtime: "Runtime de Go",
|
||
goroutines: "goroutines",
|
||
leaderChanges: "Cambios de líder totales",
|
||
failedProposals: "Propuestas fallidas totales",
|
||
failedProposalRate: "Tasa de fallos",
|
||
rateNeedsRefresh: "Actualiza de nuevo para calcular las tasas en vivo",
|
||
storageQuota: "Uso de cuota del backend",
|
||
uptime: "Tiempo activo del proceso",
|
||
consensusReliability: "Consenso y fiabilidad",
|
||
leadership: "Liderazgo",
|
||
knownPeers: "pares conocidos",
|
||
proposalState: "Estado de propuestas",
|
||
raftFailures: "Fallos de Raft",
|
||
revisionState: "Revisión MVCC",
|
||
compactRevision: "Revisión compactada",
|
||
requestLoad: "Carga de solicitudes",
|
||
grpcMethod: "Método gRPC",
|
||
total: "Total",
|
||
rate: "Tasa",
|
||
failures: "Fallos",
|
||
avgLatency: "Latencia media",
|
||
storageDisk: "Almacenamiento y disco",
|
||
databaseState: "Estado de la base de datos",
|
||
inUse: "en uso",
|
||
openReadTransactions: "Transacciones de lectura abiertas",
|
||
backgroundTasks: "Tareas en segundo plano",
|
||
watchState: "Estado de watches",
|
||
watchers: "Watchers",
|
||
watchStreams: "Flujos de watch",
|
||
events: "Tasa de eventos",
|
||
slowPending: "Lentas / pendientes",
|
||
leaseState: "Ciclo de vida de leases",
|
||
granted: "Tasa de concesión",
|
||
renewed: "Tasa de renovación",
|
||
revokedExpired: "Revocados / caducados",
|
||
averageTtl: "TTL medio",
|
||
runtimeResources: "Recursos de ejecución",
|
||
memory: "Memoria",
|
||
processNetworkGc: "Red del proceso y GC",
|
||
metricsUnavailable: "Las métricas de Prometheus no están disponibles",
|
||
metricsUnavailableHint: "El estado del clúster sigue disponible. DBX solicita /metrics directamente al endpoint de etcd actual; comprueba que la URL resultante sea accesible desde DBX.",
|
||
endpointMember: "Endpoint / miembro",
|
||
role: "Rol",
|
||
version: "Versión",
|
||
raftTermApplied: "Término Raft / aplicado",
|
||
dbSizeInUse: "Tamaño de BD / en uso",
|
||
latency: "Latencia",
|
||
status: "Estado",
|
||
learner: "aprendiz",
|
||
follower: "seguidor",
|
||
reachable: "accesible",
|
||
unreachable: "inaccesible",
|
||
loading: "Cargando observación del clúster…",
|
||
health: {
|
||
unknown: "desconocido",
|
||
critical: "crítico",
|
||
warning: "advertencia",
|
||
healthy: "saludable",
|
||
},
|
||
lag: "Retraso",
|
||
slowApply: "Aplicación lenta",
|
||
putBytes: "Bytes escritos",
|
||
},
|
||
watch: "Observar",
|
||
lease: "Arrendamiento",
|
||
key: "Key",
|
||
keyOrPrefix: "Key o prefijo",
|
||
selectExistingLease: "Seleccionar un Lease existente",
|
||
enterLeaseId: "O introducir manualmente el ID del Lease",
|
||
leasePickerHint: "Puede seleccionar entre los Leases de la sesión actual, o introducir manualmente el ID del Lease.",
|
||
noLeasePickerHint: "La sesión actual no tiene Leases seleccionables. Puede introducir un ID manualmente y guardar.",
|
||
registryWarning: "Esta Key se encuentra bajo /registry/, un espacio de nombres utilizado normalmente por componentes del plano de control. Verifique la propiedad y el impacto antes de guardar.",
|
||
access: {
|
||
users: "Usuarios",
|
||
roles: "Roles",
|
||
title: "Control de acceso",
|
||
description: "Administrar usuarios nativos de etcd, roles y permisos de Key",
|
||
readOnly: "Conexión de solo lectura",
|
||
refresh: "Actualizar",
|
||
userCount: "Usuarios ({count})",
|
||
roleCount: "Roles ({count})",
|
||
createUser: "Crear usuario",
|
||
createRole: "Crear rol",
|
||
noUsers: "No se han creado usuarios de etcd",
|
||
noRoles: "No se han creado roles de etcd",
|
||
selectUser: "Seleccione un usuario a la izquierda para ver roles y operaciones de credenciales",
|
||
selectRole: "Seleccione un rol a la izquierda para ver y gestionar permisos",
|
||
loadingUser: "Cargando detalles del usuario...",
|
||
loadingRole: "Cargando detalles del rol...",
|
||
userRolesSummary: "{count} roles asociados. Las contraseñas no se leen, muestran ni almacenan en el cliente.",
|
||
changePassword: "Cambiar contraseña",
|
||
deleteUser: "Eliminar usuario",
|
||
roleAssignments: "Asignaciones de roles",
|
||
roleAssignmentHint: "El rol determina el rango de Keys que este usuario puede leer y escribir.",
|
||
revokeAssociation: "Revocar asociación",
|
||
noAssignedRoles: "Este usuario aún no tiene roles asignados.",
|
||
assignRole: "Asignar nuevo rol",
|
||
assignRoleHint: "Seleccione un rol aún no asociado y asígnelo a este usuario.",
|
||
selectRoleOption: "Seleccionar rol",
|
||
noAssignableRoles: "No hay roles asignables",
|
||
grantRole: "Asignar rol",
|
||
rolePermissionHint: "Los permisos pueden cubrir todas las Keys, un prefijo o una Key exacta; el prefijo se guarda usando el intervalo semiabierto de etcd.",
|
||
grantPermission: "Conceder permiso",
|
||
deleteRole: "Eliminar rol",
|
||
resource: "Recurso",
|
||
permission: "Permiso",
|
||
allKeys: "Todas las Keys",
|
||
exactKey: "Key exacta",
|
||
allKeyspace: "Todo el Keyspace",
|
||
edit: "Editar",
|
||
revoke: "Revocar",
|
||
noPermissions: "Este rol aún no tiene permisos concedidos.",
|
||
createEtcdUser: "Crear usuario de etcd",
|
||
username: "Nombre de usuario",
|
||
password: "Contraseña",
|
||
initialRoles: "Roles iniciales",
|
||
optional: "Opcional",
|
||
initialRolesHint: "Tras la creación, se asociarán los roles seleccionados inmediatamente.",
|
||
selectedCount: "{count} seleccionados",
|
||
noRolesForNewUser: "Actualmente no hay roles. Puede crear primero el usuario y luego asignar roles en los detalles del usuario.",
|
||
createAndAssignRoles: "Crear y asignar {count} roles",
|
||
createUserAction: "Crear usuario",
|
||
createEtcdRole: "Crear rol de etcd",
|
||
roleName: "Nombre del rol",
|
||
initialPermission: "Permiso inicial",
|
||
initialPermissionHint: "Al completarlo, se concederá este permiso inmediatamente al crear el rol.",
|
||
keyOrPrefixPlaceholder: "Key o prefijo",
|
||
allKeysHint: "Concede acceso a todas las Keys.",
|
||
createAndGrantPermission: "Crear y conceder permiso",
|
||
read: "Lectura",
|
||
write: "Escritura",
|
||
readWrite: "Lectura y escritura",
|
||
passwordHint: "La nueva contraseña solo se enviará en esta solicitud y se borrará de la interfaz inmediatamente después de enviarla.",
|
||
newPassword: "Nueva contraseña",
|
||
continue: "Continuar",
|
||
editPermission: "Editar permiso del rol",
|
||
permissionUpdateHint: "etcd Auth no proporciona actualización atómica; al guardar, se revocará el permiso anterior y se concederá el nuevo. Si la concesión falla, el sistema intentará restaurar el permiso anterior.",
|
||
saveChanges: "Guardar cambios",
|
||
dangerousTitle: "Confirmar operación peligrosa",
|
||
dangerousHint: "Esta operación modificará directamente los datos de Auth de etcd. Debe introducir el texto de confirmación a continuación para continuar.",
|
||
confirmationPlaceholder: "Introducir texto de confirmación",
|
||
confirmExecute: "Confirmar ejecución",
|
||
cancel: "Cancelar",
|
||
preflightRequired: 'Este cambio de permiso requiere una nueva credencial de confirmación. Vuelva a hacer clic en "Guardar cambios" y complete la confirmación para reintentar.',
|
||
preflightExpired: 'La confirmación ha caducado. Vuelva a hacer clic en "Guardar cambios" y complete la confirmación.',
|
||
preflightMismatch: "El contenido de confirmación o el permiso a modificar han cambiado. Vuelva a confirmar y reintente.",
|
||
confirmationMismatch: "El texto de confirmación no coincide. Inténtelo de nuevo.",
|
||
createdUser: "Usuario {user} creado",
|
||
createdUserWithRoles: "Usuario {user} creado con {count} roles asociados",
|
||
createdUserRolesFailed: "Usuario creado, pero falló la asociación de roles iniciales: {error}",
|
||
createdRole: "Rol {role} creado",
|
||
createdRoleWithPermission: "Rol {role} creado con permiso inicial concedido",
|
||
createdRolePermissionFailed: "Rol creado, pero falló la concesión del permiso inicial: {error}",
|
||
deletedUser: "Usuario {user} eliminado",
|
||
deletedRole: "Rol {role} eliminado",
|
||
passwordUpdated: "Contraseña de {user} actualizada",
|
||
roleGranted: "Rol {role} asignado a {user}",
|
||
roleRevoked: "Rol {role} revocado de {user}",
|
||
permissionGranted: "Permiso concedido al rol",
|
||
permissionUpdated: "Permiso del rol actualizado",
|
||
permissionRevoked: "Permiso del rol revocado",
|
||
},
|
||
admin: {
|
||
maintenance: "Mantenimiento",
|
||
watch: "Observador",
|
||
lease: "Arrendamiento",
|
||
refresh: "Actualizar",
|
||
maintenanceTitle: "Historial de mantenimiento y espacio en disco",
|
||
maintenanceDescription: "Primero limpie las versiones históricas no utilizadas según sea necesario, y luego decida si recuperar el espacio en disco ocupado por el archivo backend. Estas dos operaciones no se sustituyen entre sí.",
|
||
currentRevision: "Revisión actual {revision}",
|
||
reachableMembers: "Miembros accesibles {reachable} / {total}",
|
||
compactTitle: "Limpiar versiones históricas",
|
||
compactDescription: "Elimina el historial MVCC anterior a la revisión especificada. El valor actual de la Key no se elimina, pero las lecturas de revisiones pasadas y las Watch que comienzan desde una posición anterior no se podrán recuperar.",
|
||
compactDiskHint: "No libera espacio en disco. Si necesita reducir el tamaño del archivo backend, realice la desfragmentación después de la compactación.",
|
||
compactRevision: "Punto de inicio de retención del historial (revisión)",
|
||
compactPlaceholder: "Por ejemplo, {revision}",
|
||
compactRequired: "Introduzca la revisión desde la cual conservar el historial.",
|
||
compactDone: "Limpieza de versiones históricas completada",
|
||
compactInputHint: "Elimina el historial anterior a esta revisión. Confirma que estas versiones históricas ya no son necesarias antes de continuar.",
|
||
compactAction: "Limpiar historial",
|
||
defragTitle: "Recuperar espacio en disco",
|
||
defragDescription: "La desfragmentación reescribe el archivo backend de cada miembro, devolviendo el espacio en disco recuperable al sistema operativo. El sistema procesa primero los followers en serie y luego el líder actual.",
|
||
defragWarning: "Cada miembro queda brevemente no disponible durante la desfragmentación. Se procesan uno por uno y el líder actual queda para el final; confirma primero que el clúster esté sano.",
|
||
defragReachableMembers: "Procesar {count} miembros accesibles",
|
||
leaderLast: "Líder al final: {endpoint}",
|
||
defragAction: "Recuperar espacio en {count} miembros",
|
||
defragDone: "Recuperación de espacio en disco completada",
|
||
newWatch: "Nuevo observador",
|
||
editWatch: "Editar observador",
|
||
watchSearch: "Filtrar observadores",
|
||
watchKeyPlaceholder: "Por ejemplo, /apps/payment/config",
|
||
watchScope: "Alcance del observador",
|
||
prefix: "Prefijo",
|
||
exact: "Key exacta",
|
||
watchKeyHint: "Solo recibe eventos de creación, cambio de valor y eliminación de esta Key.",
|
||
watchPrefixHint: "Recibe eventos de todas las Keys que comienzan con este prefijo.",
|
||
watchSessionHint: "El observador solo se ejecuta en la sesión de conexión actual; se detiene automáticamente al cerrar la conexión o al salir de la página de etcd. Cada conexión puede ejecutar hasta 4 observadores simultáneamente.",
|
||
watchCount: "{count} creados",
|
||
runningWatchCount: "{count} en ejecución",
|
||
watchList: "Observadores creados",
|
||
itemCount: "{count} elementos",
|
||
scope: "Ámbito",
|
||
status: "Estado",
|
||
actions: "Acciones",
|
||
createWatch: "Crear e iniciar observador",
|
||
saveWatch: "Guardar configuración",
|
||
running: "En ejecución",
|
||
stopped: "Detenido",
|
||
error: "Error",
|
||
editWatchTitle: "Editar observador",
|
||
stopWatch: "Detener observador",
|
||
startWatch: "Iniciar observador",
|
||
deleteWatch: "Eliminar observador",
|
||
noMatchingWatches: "No se encontraron observadores coincidentes",
|
||
noWatches: "Aún no hay observadores.",
|
||
eventStream: "Flujo de eventos",
|
||
eventCount: "{count} eventos",
|
||
filter: "Filtrar",
|
||
event: "Evento",
|
||
create: "Crear",
|
||
update: "Cambio de valor",
|
||
delete: "Eliminar",
|
||
noFilteredEvents: "El filtro actual no tiene eventos coincidentes",
|
||
waitingEvents: "Esperando cambios en la Key...",
|
||
watchNotRunning: "Este observador no está ejecutándose actualmente.",
|
||
selectWatch: "Seleccione un observador a la izquierda para ver el flujo de eventos",
|
||
leaseDescription: "Al expirar el arrendamiento, sus Keys adjuntas se eliminan automáticamente.",
|
||
grantLease: "Conceder arrendamiento",
|
||
renew: "Renovar",
|
||
revoke: "Revocar",
|
||
previousPage: "Anterior",
|
||
nextPage: "Siguiente",
|
||
leasePageSize: "Hasta {count} elementos por página",
|
||
grantedTtl: "Concedido {ttl}s",
|
||
noKnownLeases: "La sesión actual no tiene Leases conocidos",
|
||
loadingLease: "Cargando detalles del Lease...",
|
||
keepalive: "Renovación automática cada TTL/3 mientras la página esté abierta",
|
||
attachedKeys: "Keys adjuntas",
|
||
noAttachedKeys: "No hay Keys adjuntas",
|
||
attachedKeysTruncated: "El resultado de Keys adjuntas se ha truncado; se muestran como máximo 256 elementos.",
|
||
selectLease: "Seleccione un Lease para ver detalles",
|
||
leasePartial: "El cliente actual o el servidor etcd no admiten la enumeración de Leases; solo se muestran los Leases creados o accedidos en esta sesión; los detalles y TTL provienen del servidor.",
|
||
grantNewLease: "Conceder nuevo arrendamiento",
|
||
ttl: "TTL (segundos)",
|
||
ttlPlaceholder: "Por ejemplo, 60",
|
||
ttlHint: "La duración del arrendamiento debe ser un entero positivo.",
|
||
customLeaseId: "ID de Lease personalizado",
|
||
customLeasePlaceholder: "Dejar vacío o poner 0 para que etcd lo asigne automáticamente",
|
||
customLeaseHint: "Use un entero decimal. Si el ID ya existe, etcd rechazará la creación.",
|
||
confirmationHint: "Esta es una operación de mantenimiento del clúster que no se puede deshacer automáticamente. Confirme el siguiente impacto antes de continuar.",
|
||
confirmationCredentialHint: "Introduzca el texto de confirmación a continuación. La credencial de confirmación solo es válida para esta operación.",
|
||
confirmationPlaceholder: "Introducir texto de confirmación",
|
||
confirmationPrompt: "Esta operación puede afectar al clúster etcd. Introduce el texto de confirmación:\n{confirmationText}",
|
||
confirmExecute: "Confirmar ejecución",
|
||
cancel: "Cancelar",
|
||
noReachableMembers: "No hay miembros accesibles; no se puede ejecutar la desfragmentación por el momento.",
|
||
defragStopped: "Recuperación de espacio en disco detenida: exitosos {succeeded}, fallidos {failed}, no ejecutados {notExecuted}",
|
||
defragCompleted: "Recuperación de espacio en disco completada: exitosos {succeeded}/{total}",
|
||
leaseRenewed: "Lease {id} renovado",
|
||
leaseGrantCancelled: "Espera cancelada; etcd puede estar procesando aún la solicitud de concesión; actualice para confirmar si se ha creado el Lease.",
|
||
leaseCreated: "Lease {id} creado",
|
||
},
|
||
},
|
||
zookeeper: {
|
||
prefixPlaceholder: "Prefijo de ruta, ej. /app/",
|
||
newKey: "Nuevo Znode",
|
||
loadingKeys: "Cargando znodes...",
|
||
empty: "No se encontraron znodes",
|
||
loadMore: "Cargar más",
|
||
selectKey: "Selecciona un znode para ver su valor",
|
||
loadingValue: "Cargando valor...",
|
||
notFound: "Znode no encontrado",
|
||
edit: "Editar",
|
||
editKey: "Editar Znode",
|
||
delete: "Eliminar",
|
||
deleteTitle: "Eliminar znode de ZooKeeper",
|
||
keyPlaceholder: "/ruta/a/znode",
|
||
keyRequired: "La ruta del znode es obligatoria",
|
||
rootReadonly: "El znode raíz no se puede modificar. Introduce una ruta de znode hijo.",
|
||
saved: "Znode guardado",
|
||
deleted: "Znode eliminado",
|
||
base64Readonly: "Los valores Base64 son de solo lectura en esta versión.",
|
||
createMode: "Modo de creación",
|
||
createModePersistent: "Persistente",
|
||
createModeEphemeral: "Efímero",
|
||
createModePersistentSequential: "Persistente secuencial",
|
||
createModeEphemeralSequential: "Efímero secuencial",
|
||
add: "Agregar",
|
||
value: "Valor",
|
||
metadata: "Información del nodo",
|
||
prettyJson: "Bonito",
|
||
invalidJson: "JSON no válido",
|
||
summaryRevision: "rev",
|
||
summaryVersion: "ver",
|
||
summaryLease: "lease",
|
||
summarySize: "tamaño",
|
||
},
|
||
redis: {
|
||
setDatabaseAlias: "Establecer alias de base de datos",
|
||
databaseAliasTitle: "Alias para db{db}",
|
||
databaseAliasPlaceholder: "p. ej. pedidos, caché, desarrollo",
|
||
databaseAliasHint: "El alias solo se usa para mostrar y buscar. Los comandos de Redis siguen usando el índice numérico.",
|
||
clearDatabaseAlias: "Borrar alias",
|
||
databaseAliasSaved: "Alias de db{db} establecido en {alias}",
|
||
databaseAliasCleared: "Alias de db{db} eliminado",
|
||
createKeyTypeHelp: {
|
||
string: "Valor único de hasta 512 MB; útil para caché y contadores.",
|
||
hash: "Mapa plano campo-valor; leer un Hash grande completo es O(N).",
|
||
list: "Secuencia ordenada; acceso intermedio lineal.",
|
||
set: "Miembros únicos sin orden; enumerar conjuntos grandes es lineal.",
|
||
zset: "Miembros únicos con puntuación flotante; escritura O(log N).",
|
||
stream: "Registro append-only; gestione XACK, pendientes y recorte.",
|
||
json: "JSON por ruta; requiere RedisJSON/Redis Stack y suele costar más que String o Hash.",
|
||
},
|
||
selectKey: "Selecciona una clave para ver su valor",
|
||
noKeys: "No se encontraron claves",
|
||
noKeysInScanHint: "No se encontraron claves en el rango de escaneo actual",
|
||
pattern: "patrón (p. ej. usuario:*)",
|
||
fuzzyPattern: "la clave contiene...",
|
||
fuzzyMatch: "Difusa",
|
||
fuzzyMatchTitle: "Coincidencia difusa: busca claves que contengan texto plano",
|
||
valueSearchPlaceholder: "el valor contiene...",
|
||
allSearchPlaceholder: "la clave o el valor contiene...",
|
||
searchByKey: "Clave",
|
||
searchByValue: "Valor",
|
||
searchByAll: "Todo",
|
||
searchFields: "Buscar campos y valores",
|
||
keys: "{count} claves",
|
||
loadedKeys: "{loaded} / {total} claves cargadas",
|
||
loadingKeys: "Cargando claves...",
|
||
searchingValues: "Buscando por valor...",
|
||
searchingAll: "Buscando claves y valores...",
|
||
loadMoreKeys: "Cargar más claves",
|
||
fetchAllKeys: "Cargar todas",
|
||
stopFetchAll: "Detener",
|
||
fetchAllProgress: "{loaded} de {total} claves cargadas",
|
||
fetchAllProgressUnknown: "{loaded} claves cargadas",
|
||
items: "{count} elementos",
|
||
fields: "{count} campos",
|
||
members: "{count} miembros",
|
||
loadedItems: "{loaded} de {total} elementos cargados",
|
||
loadedFields: "{loaded} de {total} campos cargados",
|
||
loadedMembers: "{loaded} de {total} miembros cargados",
|
||
entries: "{count} entradas",
|
||
streamData: "Datos del stream",
|
||
consumerGroups: "Grupos de consumidores",
|
||
group: "Grupo",
|
||
consumers: "Consumidores",
|
||
pending: "Pendientes",
|
||
lastDeliveredId: "Último ID entregado",
|
||
lastDelivered: "Última entrega",
|
||
entriesRead: "Entradas leídas",
|
||
lag: "Retraso",
|
||
noConsumerGroups: "No hay grupos de consumidores",
|
||
streamGroupsLoadFailed: "No se pudieron cargar los grupos de consumidores",
|
||
backToGroups: "Volver a los grupos",
|
||
streamConsumers: "Consumidores",
|
||
streamConsumersLoadFailed: "No se pudieron cargar los consumidores",
|
||
noStreamConsumers: "No hay consumidores",
|
||
openConsumerDetails: "Abrir detalles del consumidor",
|
||
consumer: "Consumidor",
|
||
idle: "Inactivo",
|
||
inactive: "Inactivo",
|
||
pendingEntries: "Entradas pendientes",
|
||
pendingEntriesLoadFailed: "No se pudieron cargar las entradas pendientes",
|
||
noPendingEntries: "No hay entradas pendientes",
|
||
entryId: "ID de entrada",
|
||
deliveries: "Entregas",
|
||
loadMoreEntries: "Cargar más entradas",
|
||
loadMorePending: "Cargar más entradas pendientes",
|
||
noExpiry: "sin expiración",
|
||
expiry: "Expiración",
|
||
expiryNone: "Sin expiración",
|
||
expiryTtl: "TTL (segundos)",
|
||
expiryAt: "Hora de expiración (local)",
|
||
expiryTtlInvalid: "Ingresa un TTL positivo en segundos",
|
||
expiryDateRequired: "Selecciona una hora de expiración válida",
|
||
expiryDatePast: "La hora de expiración debe ser futura",
|
||
keyExpiredBeforeDisplay: "La clave expiró antes de que pudiera mostrarse.",
|
||
autoRefresh: "Actualización automática",
|
||
ttlDay: "{count}d",
|
||
columnType: "Tipo",
|
||
columnKey: "Clave",
|
||
columnValue: "Valor",
|
||
columnSize: "Tamaño",
|
||
columnTTL: "TTL",
|
||
binaryStringReadonlyHint: "Los valores de cadena binaria se muestran como texto escapado en modo de solo lectura; la edición de bytes sin procesar no está disponible.",
|
||
selectedKeys: "Claves seleccionadas",
|
||
selectLoadedGroupKeys: "Seleccionar {count} claves coincidentes cargadas",
|
||
loadedMatchingKeys: "{count} claves coincidentes cargadas",
|
||
fuzzyTreeLimit: "Se muestran {count} coincidencias difusas como lista plana para mantener el navegador responsivo. Refina la búsqueda para ver la jerarquía.",
|
||
deleteGroup: "Eliminar grupo",
|
||
deleteGroupDetails: "{target}\n{count} claves",
|
||
deleteLoadedSearchKeysDetails: "{target}\n{count} claves coincidentes cargadas",
|
||
flushDb: "Limpiar DB actual",
|
||
flushDbMessage: "Esto eliminará todas las claves de la base de datos Redis actual y no se puede deshacer. ¿Continuar?",
|
||
flushDbDetails: "Destino: Redis db{db}\nAlcance: todas las claves de la DB actual",
|
||
flushDbConfirm: "Limpiar DB",
|
||
flushDbSuccess: "Redis db{db} limpiada",
|
||
keyDetail: "Detalle de clave",
|
||
commandLine: "Línea de comandos",
|
||
selectKeyForDetail: "Selecciona una clave para ver detalles",
|
||
commandWelcome: "Bienvenido a la consola de comandos Redis",
|
||
commandPlaceholder: "Comando Redis, p. ej. GET user:1",
|
||
commandPrefix: "CMD",
|
||
commandHint: "Ingresa un comando Redis, p. ej. SMEMBERS feature:flags",
|
||
executeCommand: "Ejecutar comando",
|
||
commandEmpty: "Ingresa un comando Redis",
|
||
commandEmptyResult: "Ejecuta un comando Redis para ver el resultado",
|
||
commandBlocked: "Este comando Redis está bloqueado por seguridad",
|
||
createKey: "Crear clave",
|
||
createKeyName: "Clave",
|
||
createKeyNamePlaceholder: "user:1",
|
||
createKeyType: "Tipo",
|
||
createValue: "Valor",
|
||
createMember: "Miembro",
|
||
createField: "Campo",
|
||
createFieldPlaceholder: "name",
|
||
createScore: "Puntuación",
|
||
createKeyTtl: "TTL (segundos)",
|
||
createKeyTtlPlaceholder: "segundos enteros positivos",
|
||
createKeyAddEntry: "Agregar entrada",
|
||
createKeyEntryId: "ID de entrada",
|
||
createKeyRawMode: "Entrada bruta",
|
||
createKeyEntries: "Entradas",
|
||
createKeyPartialWrite: "Se escribieron algunas entradas. Corrige el error y vuelve a crear para escribir las restantes.",
|
||
createValuePlaceholder: "valor",
|
||
jsonModuleNotAvailable: "El módulo ReJSON no está cargado en este servidor Redis",
|
||
createKeySubmit: "Crear",
|
||
createKeyNameRequired: "Ingresa una clave",
|
||
createFieldRequired: "Ingresa un campo hash",
|
||
createScoreInvalid: "Ingresa una puntuación válida",
|
||
fieldRequired: "Ingresa un nombre de campo",
|
||
valueRequired: "Ingresa un valor",
|
||
memberRequired: "Ingresa un miembro",
|
||
ttlInvalid: "Ingresa un TTL válido en segundos (-1 para sin caducidad)",
|
||
member: "Miembro",
|
||
memberDetail: "Detalle del miembro",
|
||
viewMember: "Ver valor completo",
|
||
copyMember: "Copiar miembro",
|
||
copyKeyName: "Copiar nombre de clave",
|
||
copied: "Copiado",
|
||
editMember: "Editar",
|
||
jsonView: "Vista JSON",
|
||
rawContent: "Contenido original",
|
||
wordWrap: "Ajuste de línea",
|
||
decompressedView: "Descomprimido",
|
||
decompressedLoading: "Descomprimiendo…",
|
||
decompressedFailed: "No se puede descomprimir con el formato seleccionado",
|
||
decompressedRetryAsDeflate: "Reintentar como DEFLATE",
|
||
decompressedLimitExceeded: "El resultado descomprimido supera el límite de 50 MiB",
|
||
gzipBadgeTitle: "Comprimido con Gzip: haga clic para ver el contenido descomprimido",
|
||
clearHistory: "Borrar historial de comandos",
|
||
historyCleared: "Historial de comandos Redis borrado",
|
||
blockedCommand: "El comando {command} está bloqueado por seguridad. Desactiva el icono de escudo en la barra de herramientas para permitirlo.",
|
||
pubsub: "Pub/Sub",
|
||
pubsubConnected: "Conectado",
|
||
pubsubConnecting: "Conectando...",
|
||
pubsubDisconnected: "Desconectado",
|
||
pubsubConnect: "Conectar",
|
||
pubsubDisconnect: "Desconectar",
|
||
pubsubChannels: "Canales",
|
||
pubsubChannelPlaceholder: "Nombre del canal",
|
||
pubsubSubscribe: "Suscribirse",
|
||
pubsubPatterns: "Patrones",
|
||
pubsubPatternPlaceholder: "Patrón (ej. news:*)",
|
||
pubsubPsubscribe: "PSuscribirse",
|
||
pubsubMessages: "Mensajes",
|
||
pubsubClear: "Limpiar",
|
||
pubsubEmpty: "Sin mensajes. Suscríbete a un canal para recibir mensajes.",
|
||
pubsubPublish: "Publicar",
|
||
pubsubPublishChannel: "Canal",
|
||
pubsubPublishMessage: "Mensaje",
|
||
pubsubSend: "Enviar",
|
||
pubsubPublishFailed: "Publicación fallida: {error}",
|
||
pubsubWsConnectFailed: "Conexión WebSocket fallida: {error}",
|
||
copyInsertStatement: "Copiar sentencia INSERT",
|
||
copyInsertStatementBinary: "No se puede generar una sentencia INSERT para datos binarios",
|
||
formatJson: "Formatear",
|
||
compressJson: "Comprimir",
|
||
jsonFormatError: "Formato JSON no válido",
|
||
slowlog: "Slow Log",
|
||
slowlogCount: "Conteo",
|
||
slowlogQuery: "Consulta",
|
||
slowlogNode: "Nodo",
|
||
slowlogSelectNode: "Seleccionar un nodo",
|
||
slowlogNodeRequired: "Selecciona un nodo primero",
|
||
slowlogEmpty: "Haz clic en Consultar para obtener entradas del slow log",
|
||
slowlogFetchFailed: "Error al obtener slow log: {error}",
|
||
slowlogColumnId: "ID",
|
||
slowlogColumnTimestamp: "Marca de tiempo",
|
||
slowlogColumnDuration: "Duración (μs)",
|
||
slowlogColumnCommand: "Comando",
|
||
slowlogColumnClientAddr: "Cliente",
|
||
slowlogColumnClientName: "Nombre del cliente",
|
||
slowlogTotal: "{count} entradas",
|
||
slowlogDetailTitle: "Entrada de Slow Log #{id}",
|
||
dashboard: {
|
||
totalMemory: "Memoria total",
|
||
usedMemory: "Memoria utilizada",
|
||
operations: "Operaciones",
|
||
hitRatio: "Tasa de aciertos",
|
||
keyCount: "Cantidad de claves",
|
||
clients: "Clientes",
|
||
searchIndicators: "Buscar indicadores...",
|
||
node: "Nodo",
|
||
off: "Desactivado",
|
||
refresh: "Actualizar",
|
||
noMatchingIndicators: "No hay indicadores coincidentes",
|
||
noDataAvailable: "No hay datos disponibles",
|
||
sections: {
|
||
server: "Servidor",
|
||
clients: "Clientes",
|
||
memory: "Memoria",
|
||
persistence: "Persistencia",
|
||
stats: "Estadísticas",
|
||
replication: "Replicación",
|
||
cpu: "CPU",
|
||
modules: "Módulos",
|
||
commandstats: "Estadísticas de comandos",
|
||
errorstats: "Estadísticas de errores",
|
||
latencystats: "Estadísticas de latencia",
|
||
cluster: "Clúster",
|
||
keyspace: "Espacio de claves",
|
||
},
|
||
},
|
||
},
|
||
mongo: {
|
||
documents: "{count} documentos",
|
||
addField: "Agregar campo",
|
||
deleteField: "Eliminar campo",
|
||
field: "Campo",
|
||
value: "Valor",
|
||
fieldPlaceholder: "Nombre del campo",
|
||
emptyCollection: "Colección vacía",
|
||
selectDocument: "Selecciona un documento",
|
||
readonlyId: "_id es de solo lectura",
|
||
invalidJsonValue: "Esta celda no contiene un valor JSON válido",
|
||
invalidJson: "JSON no válido",
|
||
documentMustBeObject: "El JSON del documento debe ser un objeto",
|
||
unsupportedJsonNumber: "El JSON contiene un número fuera del rango int64 de MongoDB",
|
||
duplicateJsonKey: "Clave JSON duplicada: {field}",
|
||
duplicateField: "Nombre de campo duplicado: {field}",
|
||
edit: "Editar",
|
||
editModeFields: "Campos",
|
||
editModeJson: "JSON",
|
||
jsonReplaceHint: "Guardar en JSON reemplaza todo el documento. Cambiar _id crea un documento nuevo y elimina el anterior.",
|
||
jsonIdRequired: "Se requiere un _id válido al cambiar la identidad del documento.",
|
||
documentView: "Vista de documento",
|
||
tableView: "Vista de tabla",
|
||
filterPlaceholder: "Filtro...",
|
||
sortPlaceholder: "Orden...",
|
||
fieldEditor: "Campo",
|
||
nativeJson: "JSON nativo",
|
||
nativeJsonHint: "Para los valores BSON, use JSON extendido de MongoDB, por ejemplo $oid, $date, $numberLong.",
|
||
invalidNativeJson: "Formato JSON nativo no válido: {error}",
|
||
nativeDocumentRequired: "El nivel superior del JSON nativo debe ser un objeto documento.",
|
||
},
|
||
vector: {
|
||
collectionFallback: "colección",
|
||
productCollection: "Colección de {product}",
|
||
browse: "Examinar",
|
||
search: "Buscar",
|
||
upsert: "Upsert",
|
||
delete: "Eliminar",
|
||
reset: "Restablecer",
|
||
refresh: "Actualizar",
|
||
run: "Ejecutar",
|
||
apply: "Aplicar",
|
||
requestEditor: "Editor de solicitudes vectoriales",
|
||
operationSuccess: "Operación completada. La vista previa de la colección se ha actualizado.",
|
||
vectorLabel: "Vector",
|
||
vectorDimensionRequired: "La dimensión de la colección aún no está disponible. Introduce un vector con la dimensión correcta.",
|
||
},
|
||
hbase: {
|
||
prefix: "Prefijo",
|
||
exact: "Exacta",
|
||
rowKeyPrefix: "Prefijo de clave de fila",
|
||
rowKey: "Clave de fila",
|
||
rows: "filas",
|
||
schema: "Esquema",
|
||
writeRow: "Escribir fila",
|
||
loadedRows: "{count} filas cargadas",
|
||
resultTruncated: "Hay más filas disponibles",
|
||
tableSchema: "Esquema: {table}",
|
||
rowSaved: "Fila de HBase guardada",
|
||
cellsObjectRequired: "cells debe ser un objeto JSON",
|
||
cellRequired: "Se requiere al menos una celda",
|
||
noColumnFamilies: "Esta tabla HBase no tiene familias de columnas",
|
||
invalidJsonValue: "Valor no válido para {label}; usa texto, un valor primitivo o base64:...",
|
||
createTable: "Crear tabla",
|
||
create: "Crear",
|
||
tableCreated: "Tabla HBase {table} creada",
|
||
tableDeleted: "Tabla HBase {table} eliminada",
|
||
createTableIn: "Crear tabla en {namespace}",
|
||
tableName: "Nombre de tabla",
|
||
columnFamiliesPlaceholder: "Familias de columnas, separadas por comas",
|
||
deleteTable: "Eliminar tabla",
|
||
deleteTableConfirm: "¿Eliminar la tabla HBase {table}? Todas las filas se eliminarán permanentemente.",
|
||
},
|
||
history: {
|
||
title: "Historial",
|
||
search: "Buscar en historial...",
|
||
empty: "Sin historial aún",
|
||
emptyFilteredRecent: "No hay registros coincidentes en las últimas 200 entradas del historial de ejecución",
|
||
failed: "Fallida",
|
||
success: "Exitosa",
|
||
restore: "Restaurar en el editor",
|
||
copy: "Copiar SQL",
|
||
delete: "Eliminar",
|
||
clear: "Limpiar historial",
|
||
viewDetails: "Ver detalles",
|
||
analyzeWithAi: "Analizar con IA",
|
||
aiAnalyzeNoConnection: "No se puede analizar esta entrada porque su conexión ya no existe.",
|
||
aiAnalysisTab: "Análisis del historial",
|
||
rollback: "Revertir",
|
||
rollbackSql: "SQL de reversión",
|
||
rollbackAvailable: "Disponible",
|
||
rollbackUnavailable: "Sin SQL de reversión",
|
||
rollbackConfirm: "¿Ejecutar el SQL de reversión generado para esta entrada del historial?",
|
||
rollbackSuccess: "Reversión ejecutada",
|
||
rollbackFailed: "Error al revertir: {message}",
|
||
confirmDelete: "¿Eliminar esta entrada del historial?",
|
||
confirmClear: "¿Limpiar todo el historial?",
|
||
emptyFiltered: "Ningún elemento del historial coincide con los filtros actuales",
|
||
loadMore: "Cargar más",
|
||
scope: {
|
||
title: "Conexión y base de datos",
|
||
search: "Buscar conexiones o bases de datos...",
|
||
reset: "Restablecer",
|
||
allConnections: "Todas las conexiones",
|
||
current: "Actual",
|
||
connections: "Conexiones",
|
||
databases: "Bases de datos",
|
||
connectionCount: "{count} conexiones",
|
||
databaseCount: "{count} bases de datos",
|
||
unknownConnection: "Conexión desconocida",
|
||
noOptions: "No hay opciones coincidentes",
|
||
},
|
||
filters: {
|
||
all: "Todas",
|
||
query: "Consultas",
|
||
data_change: "Cambios de datos",
|
||
schema_change: "Cambios de esquema",
|
||
failed: "Fallidas",
|
||
},
|
||
dateRange: {
|
||
title: "Rango de tiempo",
|
||
label: "Hora de ejecución:",
|
||
start: "Fecha inicial",
|
||
end: "Fecha final",
|
||
apply: "Aplicar",
|
||
clear: "Limpiar",
|
||
invalid: "La fecha inicial no puede ser posterior a la fecha final",
|
||
unboundedStart: "Inicio",
|
||
unboundedEnd: "Fin",
|
||
},
|
||
kinds: {
|
||
query: "Consulta",
|
||
data_change: "Cambio de datos",
|
||
schema_change: "Cambio de esquema",
|
||
import: "Importación",
|
||
transfer: "Transferencia",
|
||
redis_command: "Comando Redis",
|
||
},
|
||
kindShort: {
|
||
query: "SQL",
|
||
data_change: "Datos",
|
||
schema_change: "DDL",
|
||
import: "Import",
|
||
transfer: "Mover",
|
||
redis_command: "Redis",
|
||
},
|
||
detail: {
|
||
kind: "Tipo",
|
||
operation: "Operación",
|
||
connection: "Conexión",
|
||
database: "Base de datos",
|
||
target: "Destino",
|
||
time: "Hora",
|
||
duration: "Duración",
|
||
affectedRows: "Filas afectadas",
|
||
rollback: "Reversión",
|
||
status: "Estado",
|
||
error: "Error",
|
||
},
|
||
},
|
||
dangerDialog: {
|
||
title: "Operación peligrosa",
|
||
message: "Esta sentencia SQL puede modificar o eliminar datos de forma irreversible. ¿Estás seguro de que deseas ejecutarla?",
|
||
redisCommandMessage: "Este comando de Redis puede modificar datos y no se puede deshacer automáticamente. ¿Continuar?",
|
||
suppressFuturePrompts: "No volver a preguntar para SQL peligroso",
|
||
wrapLines: "Alternar ajuste de línea",
|
||
copyFullText: "Copiar texto completo",
|
||
previewTruncated: "Vista previa truncada: se omitieron {lines} líneas y {characters} caracteres. La copia incluye el texto completo.",
|
||
deleteMessage: "Esta operación de eliminación puede ser irreversible. ¿Continuar?",
|
||
deleteConfirm: "Confirmar eliminación",
|
||
deleteRowMessage: "Esta fila quedará marcada para eliminación y se borrará de la base de datos al guardar. ¿Continuar?",
|
||
deleteRowsMessage: "Estas {count} filas se marcarán para eliminación y se eliminarán de la base de datos después de guardar. ¿Continuar?",
|
||
deleteRowDetails: "Tabla: {table}",
|
||
deleteRowDetailsNoTable: "Fila actual del resultado",
|
||
redisKeyDetails: "Clave Redis: {key}",
|
||
redisHashFieldDetails: "Hash Redis: {key}\nCampo: {field}",
|
||
redisListItemDetails: "Lista Redis: {key}\nÍndice: {index}",
|
||
redisSetMemberDetails: "Conjunto Redis: {key}\nMiembro: {member}",
|
||
mongoDocumentDetails: "Colección MongoDB: {collection}\nDocumento _id: {id}",
|
||
mongoFieldDetails: "Campo: {field}",
|
||
mongoArrayItemDetails: "Índice del elemento del arreglo: {index}",
|
||
cancel: "Cancelar",
|
||
confirm: "Ejecutar",
|
||
},
|
||
sqlParameters: {
|
||
title: "Parámetros SQL",
|
||
description: "Completa valores para marcadores de plantilla SQL. DBX los reemplaza antes de ejecutar el SQL.",
|
||
name: "Parámetro",
|
||
syntax: "Sintaxis",
|
||
type: "Tipo",
|
||
value: "Valor",
|
||
valuePlaceholder: "Introduce un valor",
|
||
preview: "Vista previa SQL",
|
||
execute: "Ejecutar",
|
||
kind: {
|
||
string: "Cadena",
|
||
number: "Número",
|
||
boolean: "Booleano",
|
||
null: "NULL",
|
||
raw: "SQL sin procesar",
|
||
},
|
||
},
|
||
transfer: {
|
||
title: "Transferencia de datos",
|
||
content: "Modo de transferencia",
|
||
contentStructureAndData: "Estructura y datos",
|
||
contentStructureOnly: "Solo estructura",
|
||
contentDataOnly: "Solo datos",
|
||
contentStructureOnlyHint: "Crear solo las estructuras de tablas y objetos, sin copiar datos",
|
||
contentDataOnlyHint: "Copiar solo datos en las tablas de destino existentes",
|
||
objects: "Objetos",
|
||
searchObjects: "Buscar nombre de objeto...",
|
||
noObjects: "Sin objetos",
|
||
objectTypeTable: "Tablas",
|
||
objectTypeView: "Vistas",
|
||
objectTypeMaterializedView: "Vistas materializadas",
|
||
objectTypeProcedure: "Procedimientos",
|
||
objectTypeFunction: "Funciones",
|
||
objectTypeTrigger: "Disparadores",
|
||
objectTypeSequence: "Secuencias",
|
||
objectTypeEvent: "Eventos",
|
||
objectDataOnlyDisabled: "Los objetos que no son tablas no se transfieren en el modo de solo datos",
|
||
objectCrossFamilyDisabled: "La transferencia entre bases de datos solo admite secuencias (DDL simple; los cuerpos de las vistas no se traducen)",
|
||
crossFamilyViewHint: "Transferencia de vistas entre bases de datos: seleccione también las tablas de las que depende la vista o asegúrese de que ya existen en la base de datos de destino",
|
||
objectUnsupportedDisabled: "La base de datos actual no admite la transferencia de este tipo de objeto",
|
||
skippedExistingObjects: "Se omitieron {count} objetos existentes",
|
||
dataWriteMode: "Modo de escritura de datos",
|
||
source: "Origen",
|
||
target: "Destino",
|
||
sourceConnection: "Conexión de origen",
|
||
sourceDatabase: "Base de datos de origen",
|
||
targetConnection: "Conexión de destino",
|
||
targetDatabase: "Base de datos de destino",
|
||
tables: "Tablas",
|
||
selectAll: "Seleccionar todas",
|
||
deselectAll: "Deseleccionar todas",
|
||
createTable: "Crear tabla si no existe",
|
||
transferMode: "Modo de transferencia",
|
||
modeAppend: "Agregar (INSERT)",
|
||
modeOverwrite: "Sobrescribir (TRUNCATE + INSERT)",
|
||
modeUpsert: "Upsert (INSERT o UPDATE por PK)",
|
||
targetTableNameCase: "Mayúsculas/minúsculas de tabla destino",
|
||
tableNameCasePreserve: "Conservar",
|
||
tableNameCaseLower: "Convertir a minúsculas",
|
||
tableNameCaseUpper: "Convertir a mayúsculas",
|
||
batchSize: "Tamaño de lote",
|
||
start: "Iniciar transferencia",
|
||
cancel: "Cancelar",
|
||
progress: "Transfiriendo...",
|
||
transferring: "Transfiriendo {table}...",
|
||
completed: "Transferencia completada",
|
||
completedWithErrors: "Completada con {count} tabla con error | Completada con {count} tablas con error",
|
||
failed: "Error en la transferencia",
|
||
cancelled: "Transferencia cancelada",
|
||
rowsTransferred: "{count} filas transferidas",
|
||
tableProgress: "{current} / {total} tablas",
|
||
noSqlConnections: "No hay conexiones SQL disponibles",
|
||
selectTables: "Selecciona las tablas a transferir",
|
||
searchTables: "Buscar tablas...",
|
||
noTables: "Sin tablas",
|
||
selectSourceFirst: "Selecciona primero la conexión y base de datos de origen",
|
||
tableError: "Error en tabla {table}: {error}",
|
||
overallProgress: "Progreso general",
|
||
dataTransfer: "Transferencia de datos",
|
||
sourceSchema: "Esquema de origen",
|
||
targetSchema: "Esquema de destino",
|
||
runInBackground: "Ejecutar en segundo plano",
|
||
newTask: "Nueva transferencia",
|
||
editConfig: "Editar config",
|
||
retry: "Reintentar",
|
||
targetTableBusy: "Otra transferencia ya está escribiendo en la(s) tabla(s) de destino: {tables}",
|
||
ownershipTitle: "Confirmar propietario",
|
||
ownershipMessage: "La base de datos de destino no tiene estos usuarios o roles propietarios: {owners}. Aplicar el propietario original puede fallar.",
|
||
ownershipSkipDetails: "Omitir no ejecutará las sentencias de cambio de propietario de objetos. Los datos de tablas y otras estructuras seguirán sincronizándose.",
|
||
ownershipTargetOwner: "Confirmar reasignará los objetos con propietarios ausentes al usuario de conexión de destino: {owner}.",
|
||
ownershipSkip: "Omitir",
|
||
ownershipConfirm: "Confirmar",
|
||
selectConnection: "Seleccionar conexión",
|
||
selectDatabase: "Seleccionar base de datos",
|
||
selectSchema: "Seleccionar esquema",
|
||
searchConnection: "Buscar conexiones...",
|
||
searchDatabase: "Buscar bases de datos...",
|
||
searchSchema: "Buscar esquemas...",
|
||
sourceCatalog: "Catalog de origen",
|
||
targetCatalog: "Catalog de destino",
|
||
selectCatalog: "Seleccione Catalog...",
|
||
searchCatalog: "Buscar Catalog...",
|
||
},
|
||
tableImport: {
|
||
title: "Importar datos a tabla",
|
||
target: "Tabla destino",
|
||
selectFile: "Seleccionar archivo",
|
||
changeFile: "Change File",
|
||
noFileSelected: "No file selected",
|
||
sourceFile: "Source file",
|
||
sourceFormat: "Source format",
|
||
stepSource: "Source",
|
||
stepOptions: "Options",
|
||
stepMapping: "Mapping",
|
||
stepReview: "Review",
|
||
stepExecution: "Run",
|
||
formatCsv: "CSV",
|
||
formatCsvDescription: "Comma-separated text",
|
||
formatTsv: "TSV",
|
||
formatTsvDescription: "Tab-separated text",
|
||
formatDelimited: "Delimited",
|
||
formatDelimitedDescription: "Custom text delimiter",
|
||
formatJson: "JSON",
|
||
formatJsonDescription: "Object or array rows",
|
||
formatExcel: "Excel",
|
||
formatExcelDescription: "XLS, XLSX, XLSM",
|
||
previewRows: "Preview rows",
|
||
delimiter: "Delimiter",
|
||
encoding: "Codificación",
|
||
encodingAuto: "Detección automática",
|
||
encodingUtf8: "UTF-8",
|
||
encodingGbk: "GBK / GB18030",
|
||
encodingUtf16Le: "UTF-16 LE",
|
||
encodingUtf16Be: "UTF-16 BE",
|
||
encodingDetected: "Detectada: {encoding}",
|
||
hasHeader: "First row is header",
|
||
trimValues: "Trim values",
|
||
emptyStringAsNull: "Empty string as NULL",
|
||
jsonShape: "JSON rows",
|
||
jsonShapeAuto: "Auto-detect",
|
||
jsonShapeObjects: "Objects",
|
||
jsonShapeArrays: "Arrays",
|
||
sheet: "Sheet",
|
||
firstSheet: "First sheet",
|
||
loadPreview: "Load Preview",
|
||
reloadPreview: "Reload Preview",
|
||
previewReady: "{rows} rows, {columns} columns",
|
||
previewReadyPartial: "Previewed {rows} rows, {columns} columns; total will be confirmed during import",
|
||
previewPartial: "Previewed {rows} rows",
|
||
rowsImported: "rows imported",
|
||
file: "Archivo",
|
||
rows: "Filas",
|
||
mapped: "Mapeadas",
|
||
mapping: "Mapeo de columnas",
|
||
sourceColumn: "Origen",
|
||
targetColumn: "Destino",
|
||
targetDataType: "Tipo",
|
||
createColumns: "Columnas a crear",
|
||
skipColumn: "Omitir",
|
||
preview: "Vista previa",
|
||
mode: "Modo de importación",
|
||
append: "Agregar datos",
|
||
truncate: "Truncar e importar",
|
||
progress: "Progreso",
|
||
start: "Iniciar importación",
|
||
success: "Se importaron {count} filas",
|
||
elapsed: "Duración: {duration}",
|
||
back: "Back",
|
||
next: "Next",
|
||
truncateWarning: "Existing rows in the target table will be removed before import starts.",
|
||
requiredUnmapped: "Required target columns are not mapped: {columns}",
|
||
status_idle: "Ready to import",
|
||
status_running: "Importing data",
|
||
phase_preparing: "Preparing import",
|
||
phase_detectingEncoding: "Detecting text encoding",
|
||
phase_reading: "Reading source file",
|
||
phase_writing: "Writing data",
|
||
phase_finalizing: "Finalizing import",
|
||
status_done: "Import complete",
|
||
status_error: "Import failed",
|
||
status_cancelled: "Import cancelled",
|
||
},
|
||
dataGenerate: {
|
||
title: "Generación de datos",
|
||
target: "Destino",
|
||
rowCount: "Filas a generar",
|
||
columns: "Columnas",
|
||
column: "Columna",
|
||
type: "Tipo",
|
||
generator: "Generador",
|
||
columnProps: "Propiedades de columna",
|
||
databaseObjects: "Objetos de base de datos",
|
||
selectTable: "Seleccione una tabla a la izquierda",
|
||
saveProfile: "Guardar perfil",
|
||
loadProfile: "Cargar perfil",
|
||
options: "Opciones",
|
||
generateOrder: "Orden de generación",
|
||
nextStep: "Siguiente",
|
||
insertSuccess: "Se insertaron {count} filas",
|
||
noData: "No data yet, please configure generation rules first",
|
||
noResult: "No execution results",
|
||
regenerate: "Regenerate",
|
||
first50Rows: "Showing first 50 rows, total {count} rows",
|
||
resultTitle: "Resultados de ejecución",
|
||
successLabel: "{count} exitosas",
|
||
failLabel: "{count} fallidas",
|
||
totalLabel: "/ {count} filas",
|
||
copyAllSql: "Copy All SQL",
|
||
prevStep: "Anterior",
|
||
startInsert: "Start Insert",
|
||
confirm: "Confirmar",
|
||
back: "Volver",
|
||
reset: "Reset",
|
||
selectGenerator: "Select a generator...",
|
||
selectGeneratorHint: "Please select a generator",
|
||
preview: "Preview",
|
||
noValue: "(ninguno)",
|
||
startDate: "Start Date",
|
||
endDate: "End Date",
|
||
allDay: "All day",
|
||
startTime: "Start Time",
|
||
endTime: "End Time",
|
||
weekday: "Weekday",
|
||
all: "All",
|
||
weekdayOnly: "Weekdays",
|
||
custom: "Custom",
|
||
values: "Values",
|
||
min: "Min",
|
||
max: "Max",
|
||
increment: "Incremento",
|
||
cycle: "Cycle when exceeded",
|
||
includeDefault: "Include DEFAULT",
|
||
includeNull: "Include NULL",
|
||
unique: "Set unique",
|
||
disableLinks: "Disable data links between columns",
|
||
imageMode: "Mode",
|
||
generate: "Generate",
|
||
fromFolder: "From folder",
|
||
imageWidth: "Image Width",
|
||
imageHeight: "Image Height",
|
||
imageFormat: "Image Format",
|
||
folderPath: "Folder Path",
|
||
filterByExtension: "Filter by extensions",
|
||
errorContinue: "Continue on error",
|
||
truncateBefore: "Truncate table before generation",
|
||
useTransaction: "Use transaction",
|
||
extendedInsert: "Use extended INSERT",
|
||
ok: "OK",
|
||
noTablesSelected: "No tables selected",
|
||
orderHint: "Use arrow buttons to reorder",
|
||
language: "Idioma",
|
||
regionLabel: "Región",
|
||
formatLabel: "Formato",
|
||
formatType: "Tipo de formato",
|
||
typeLabel: "Tipo",
|
||
loading: "Cargando...",
|
||
regex: "Expresión regular",
|
||
rawPattern: "Modo de patrón sin procesar",
|
||
notSet: "(sin definir)",
|
||
noMatch: "(sin coincidencia)",
|
||
invalidRegex: "(expresión regular no válida)",
|
||
noDomain: "(sin dominio)",
|
||
schema: "Esquema",
|
||
tableLabel: "Tabla",
|
||
columnLabel: "Columna",
|
||
genMode: "Modo de generación",
|
||
dateType: "Tipo de fecha",
|
||
yearOffsetRange: "Rango de años (desplazamiento respecto al año actual)",
|
||
numberType: "Tipo de número",
|
||
integer: "Entero",
|
||
decimal: "Decimal",
|
||
decimalPlaces: "Decimales",
|
||
uuidFormat: "Formato UUID",
|
||
uuidWithHyphens: "Con guiones",
|
||
uuidNoHyphens: "Sin guiones",
|
||
includeSeparators: "Incluir separadores",
|
||
phoneDomestic: "Nacional",
|
||
phoneInternational: "Internacional",
|
||
charCount: "Caracteres",
|
||
start: "Inicio",
|
||
valueList: "Lista de valores",
|
||
domainList: "Lista de dominios",
|
||
subdomains: "Subdominios",
|
||
tlds: "Dominios de nivel superior",
|
||
extensionType: "Tipo de extensión",
|
||
extensionList: "Lista de extensiones:",
|
||
availableExtensions: "Extensiones disponibles:",
|
||
includeExtension: "Incluir extensión",
|
||
includeFileName: "Incluir nombre de archivo",
|
||
pathType: "Tipo de ruta",
|
||
ipType: "Tipo de dirección IP",
|
||
nameFormat: "Formato de nombre",
|
||
transformTo: "Transformar valores a",
|
||
generateOptions: "Opciones de generación",
|
||
previewRowCount: "{count} filas",
|
||
useKeywords: "Generar a partir de palabras clave",
|
||
weekdayShort: {
|
||
sun: "Dom",
|
||
mon: "Lun",
|
||
tue: "Mar",
|
||
wed: "Mié",
|
||
thu: "Jue",
|
||
fri: "Vie",
|
||
sat: "Sáb",
|
||
},
|
||
countries: {
|
||
us: "Estados Unidos",
|
||
uk: "Reino Unido",
|
||
cn: "China",
|
||
jp: "Japón",
|
||
other: "Otro",
|
||
cnEnglish: "China (inglés)",
|
||
jpEnglish: "Japón (inglés)",
|
||
},
|
||
cityLanguages: {
|
||
native: "Idioma local",
|
||
english: "Inglés",
|
||
},
|
||
addressTypes: {
|
||
line1: "Dirección línea 1",
|
||
line2: "Dirección línea 2",
|
||
full: "Dirección completa",
|
||
},
|
||
nameFormats: {
|
||
full: "Nombre completo",
|
||
last: "Solo apellido",
|
||
first: "Solo nombre",
|
||
},
|
||
regionFormats: {
|
||
name: "Nombre",
|
||
code: "Código",
|
||
codeName: "Código + Nombre",
|
||
},
|
||
transforms: {
|
||
none: "Sin cambios",
|
||
upper: "MAYÚSCULAS",
|
||
lower: "minúsculas",
|
||
title: "Tipo Título",
|
||
},
|
||
extensionCategories: {
|
||
image: "Imagen",
|
||
document: "Documento",
|
||
spreadsheet: "Hoja de cálculo",
|
||
presentation: "Presentación",
|
||
audio: "Audio",
|
||
video: "Vídeo",
|
||
code: "Código",
|
||
archive: "Archivo comprimido",
|
||
web: "Web",
|
||
database: "Base de datos",
|
||
},
|
||
placeholders: {
|
||
enumValues: "Un valor por línea\nfirst\nsecond\nthird",
|
||
subdomains: "Un subdominio por línea\nauth.\nwww.\napi.",
|
||
tlds: "Un TLD por línea\n.com\n.cn\n.io",
|
||
fileExtensions: "Una extensión por línea\npng\njpg\ntxt",
|
||
paymentMethods: "Un método de pago por línea\nCredit Card\nPayPal\nApple Pay",
|
||
keywords: "Una palabra clave por línea\nApple\nCherry\nOrange",
|
||
weightUnits: "Una unidad por línea\ng\nkg\nlb",
|
||
},
|
||
genModes: {
|
||
random: "Aleatorio",
|
||
unique: "Sin duplicados",
|
||
repeat: "Repetir cada valor",
|
||
},
|
||
gen: {
|
||
general: "General",
|
||
personal: "Personal",
|
||
payment: "Payment",
|
||
business: "Business",
|
||
location: "Location",
|
||
product: "Product",
|
||
computer: "Computer",
|
||
number: "Number",
|
||
datetime: "Date Time",
|
||
date: "Date",
|
||
time: "Time",
|
||
sequence: "Sequence",
|
||
enum: "Enum",
|
||
text: "Text",
|
||
image: "Image or Binary",
|
||
foreign_key: "Foreign Key",
|
||
uuid: "UUID",
|
||
regex: "Regex",
|
||
full_name: "Full Name",
|
||
gender: "Gender",
|
||
title: "Title",
|
||
marital_status: "Marital Status",
|
||
phone: "Phone",
|
||
email: "Email",
|
||
job_title: "Job Title",
|
||
social_id: "Social ID",
|
||
payment_method: "Payment Method",
|
||
credit_card_type: "Credit Card Type",
|
||
credit_card_number: "Credit Card Number",
|
||
credit_card_date: "Credit Card Date",
|
||
company_name: "Company Name",
|
||
department: "Department",
|
||
industry: "Industry",
|
||
address: "Address",
|
||
city: "City",
|
||
region: "Region",
|
||
product_name: "Product Name",
|
||
product_category: "Product Category",
|
||
color: "Color",
|
||
size: "Size",
|
||
weight_unit: "Weight Unit",
|
||
barcode: "Barcode",
|
||
sku: "SKU",
|
||
ip_address: "IP Address",
|
||
mac_address: "MAC Address",
|
||
file_path: "File Path",
|
||
file_name: "File Name",
|
||
file_extension: "File Extension",
|
||
url: "URL",
|
||
hostname: "Hostname",
|
||
id_number: "Número de documento",
|
||
},
|
||
idTypes: {
|
||
title: "Tipo de documento",
|
||
customPattern: "Patrón personalizado",
|
||
customPatternPlaceholder: "p. ej. ([A-Z]{2})-([0-9]{8})",
|
||
customPatternHint: "Admite patrones simples como [A-Z] letras, [0-9] dígitos, {n} repeticiones, guiones",
|
||
id_card: "DNI chino",
|
||
passport: "Pasaporte",
|
||
hk_macau_pass: "Permiso HK/Macao",
|
||
taiwan_pass: "Permiso Taiwán",
|
||
uscc: "Código social unificado",
|
||
bank_card: "Tarjeta bancaria",
|
||
drivers_license: "Carnet de conducir",
|
||
custom: "Personalizado",
|
||
},
|
||
},
|
||
tableToolbox: {
|
||
title: "Herramientas de datos",
|
||
generateData: "Generar datos",
|
||
importData: "Importar datos",
|
||
exportData: "Exportar datos",
|
||
generateDataComingSoon: "Próximamente",
|
||
},
|
||
sqlFile: {
|
||
title: "Ejecutar archivo SQL",
|
||
file: "Archivo",
|
||
selectSqlFile: "Seleccionar archivo SQL",
|
||
browse: "Examinar",
|
||
previewingLines: "Vista previa de {count} líneas",
|
||
previewingFirstLines: "Vista previa de las primeras {count} líneas",
|
||
tooLargeForEditor: "Este archivo SQL ocupa {size} y supera el límite de {limit} del editor. Use Ejecutar archivo SQL para procesarlo como flujo.",
|
||
largeFileExecutionOpened: "El archivo SQL de {size} es demasiado grande para el editor. Se abrió Ejecutar archivo SQL para procesarlo como flujo.",
|
||
target: "Destino",
|
||
connection: "Conexión",
|
||
selectConnection: "Seleccionar conexión",
|
||
database: "Base de datos",
|
||
selectDatabase: "Seleccionar base de datos",
|
||
databasePlaceholder: "Nombre de la base de datos",
|
||
options: "Opciones",
|
||
continueOnError: "Continuar en caso de error",
|
||
runInBackground: "Ejecutar en segundo plano",
|
||
cancelling: "Cancelando...",
|
||
cancel: "Cancelar",
|
||
execute: "Ejecutar",
|
||
statement: "Sentencia",
|
||
succeeded: "Exitosa",
|
||
failed: "Fallida",
|
||
affectedRows: "Filas afectadas",
|
||
currentStatement: "Sentencia actual",
|
||
status: {
|
||
idle: "Inactivo",
|
||
started: "Iniciado",
|
||
running: "En ejecución",
|
||
statementDone: "Sentencia completada",
|
||
statementFailed: "Sentencia fallida",
|
||
done: "Completado",
|
||
error: "Error",
|
||
cancelled: "Cancelado",
|
||
},
|
||
fileProgress: "Archivo {current} de {total}",
|
||
fileColumn: "Archivo",
|
||
totalFiles: "{count} archivos",
|
||
},
|
||
diff: {
|
||
title: "Comparar esquemas",
|
||
source: "Origen",
|
||
target: "Destino",
|
||
selectConnection: "Seleccionar conexión",
|
||
selectDatabase: "Seleccionar base de datos",
|
||
selectSchema: "Seleccionar esquema",
|
||
connection: "Conexión",
|
||
database: "Base de datos",
|
||
schema: "Esquema",
|
||
recentConfigs: "Configs recientes",
|
||
selectRecentConfig: "Seleccionar config reciente",
|
||
ignoreComments: "Ignorar diferencias de comentarios",
|
||
compare: "Comparar",
|
||
comparing: "Comparando esquemas...",
|
||
noDifferences: "No se encontraron diferencias",
|
||
table: "Tabla",
|
||
status: "Estado",
|
||
details: "Detalles",
|
||
added: "Agregada",
|
||
removed: "Eliminada",
|
||
modified: "Modificada",
|
||
indexes: "Índices",
|
||
foreignKeys: "Claves foráneas",
|
||
triggers: "Disparadores",
|
||
comments: "Comentarios",
|
||
newTable: "Nueva tabla",
|
||
dropTable: "Eliminar tabla",
|
||
generatedSql: "SQL de sincronización",
|
||
copySql: "Copiar SQL",
|
||
executeSync: "Ejecutar sincronización",
|
||
syncSuccess: "Sincronización ejecutada exitosamente",
|
||
swap: "Intercambiar origen y destino",
|
||
syncProgress: "Ejecutando: {current}/{total}",
|
||
syncSummary: "Exitosos {success}, fallidos {failed}",
|
||
configSaved: "Config guardada",
|
||
configDeleted: "Config eliminada",
|
||
sourceObject: "Objeto de origen",
|
||
targetObject: "Objeto de destino",
|
||
operation: "Operación",
|
||
selectedCount: "{selected} seleccionados de {total}",
|
||
saveConfig: "Guardar config",
|
||
loadConfig: "Cargar config",
|
||
options: "Opciones",
|
||
ddlCompare: "DDL comparar",
|
||
deployScript: "Script de despliegue",
|
||
deployScriptAll: "Todos los scripts de despliegue",
|
||
deployScriptDesc: "Script SQL para el objeto seleccionado",
|
||
deployScriptAllDesc: "Script SQL para todos los objetos seleccionados",
|
||
copy: "Copiar",
|
||
execute: "Ejecutar",
|
||
executeAll: "Ejecutar todo",
|
||
executeSuccess: "Ejecutado exitosamente",
|
||
selectObjectToCompare: "Selecciona un objeto para ver la comparación DDL",
|
||
noDdlAvailable: "No hay DDL disponible",
|
||
noDeployScript: "No hay script de despliegue",
|
||
noDeployScriptAll: "No hay script de despliegue para los objetos seleccionados",
|
||
sourceDdl: "DDL de origen",
|
||
targetDdl: "DDL de destino",
|
||
objectNotExistsInSource: "Este objeto no existe en la base de datos de origen",
|
||
objectNotExistsInTarget: "Este objeto no existe en la base de datos de destino",
|
||
nextStepDeploy: "Siguiente (Revisar despliegue)",
|
||
deployReview: "Revisión de despliegue",
|
||
backToResult: "Volver al resultado",
|
||
copyScript: "Copiar script",
|
||
exportSql: "Exportar .sql",
|
||
deployToServer: "Desplegar en servidor",
|
||
deployConfirmTitle: "Confirmación final",
|
||
deployConfirmMessage: "Estás a punto de desplegar los siguientes cambios en la base de datos de destino",
|
||
targetServer: "Servidor de destino",
|
||
dbVersion: "Versión de base de datos",
|
||
targetDatabase: "Base de datos de destino",
|
||
targetSchema: "Esquema de destino",
|
||
useTransaction: "Ejecutar en transacción (reversión automática en caso de error)",
|
||
confirmDeploy: "Confirmar despliegue",
|
||
exportSuccess: "Exportación exitosa",
|
||
create: "Crear",
|
||
delete: "Eliminar",
|
||
modify: "Modificar",
|
||
cancel: "Cancelar",
|
||
prevStep: "Anterior",
|
||
recompare: "Comparar de nuevo",
|
||
maximize: "Maximizar",
|
||
restore: "Restaurar",
|
||
operationLabel: {
|
||
modify: "Objetos a modificar",
|
||
create: "Objetos a crear",
|
||
delete: "Objetos a eliminar",
|
||
none: "Sin operación",
|
||
},
|
||
objectKindLabel: {
|
||
table: "Tabla",
|
||
view: "Vista",
|
||
function: "Función",
|
||
sequence: "Secuencia",
|
||
rule: "Regla",
|
||
owner: "Propietario",
|
||
index: "Índice",
|
||
foreignKey: "Clave foránea",
|
||
trigger: "Disparador",
|
||
},
|
||
noObjectsSelected: "Selecciona objetos para desplegar",
|
||
deploySuccess: "Despliegue exitoso",
|
||
deployFailed: "Despliegue fallido",
|
||
deploySuccessMessage: "Script SQL ejecutado exitosamente en la base de datos de destino",
|
||
deployFailedMessage: "Ocurrió un error durante la ejecución",
|
||
affectedRows: "Filas afectadas",
|
||
executedStatements: "Sentencias ejecutadas",
|
||
serverVersion: "Versión del servidor",
|
||
info: "Información",
|
||
connType: "Tipo de conexión",
|
||
connName: "Nombre de conexión",
|
||
host: "Host",
|
||
port: "Puerto",
|
||
copied: "Copiado al portapapeles",
|
||
saveConfigPrompt: "Por favor ingresa el nombre de la config:",
|
||
close: "Cerrar",
|
||
searchConnection: "Buscar conexiones...",
|
||
searchDatabase: "Buscar bases de datos...",
|
||
searchSchema: "Buscar esquemas...",
|
||
defaultConfigName: "Predeterminado",
|
||
dependsOn: "depende de",
|
||
dependedBy: "dependido por",
|
||
openFieldMapping: "Mapeo de Campos",
|
||
fieldMapping: {
|
||
title: "Mapeo de Tipos de Campo",
|
||
sameTypeHint: "Origen y destino son del mismo tipo de base de datos. El mapeo de campos solo es necesario al comparar entre diferentes tipos de bases de datos.",
|
||
preset: "Preajuste Integrado",
|
||
selectPreset: "Seleccionar un preajuste...",
|
||
noMappings: "No hay mapeos de campos definidos",
|
||
sourceType: "Tipo de Origen",
|
||
targetType: "Tipo de Destino",
|
||
paramStrategy: "Estrategia de Parámetros",
|
||
strategyPreserve: "Preservar",
|
||
strategyStrip: "Eliminar",
|
||
strategyCustom: "Personalizado",
|
||
customParamsPlaceholder: "ej. (100)",
|
||
addMapping: "Agregar Mapeo",
|
||
autoGenerate: "Auto-Generar",
|
||
import: "Importar",
|
||
export: "Exportar",
|
||
done: "Listo",
|
||
importTypeMismatch: "Los mapeos importados se exportaron para {src} → {tgt}, pero la comparación actual es {curSrc} → {curTgt}. Los mapeos de tipos pueden no ser precisos. ¿Continuar de todos modos?",
|
||
importSuccess: "Mapeos de campos importados correctamente",
|
||
importError: "Error al importar mapeos de campos. Verifique el formato JSON.",
|
||
clearMappings: "Limpiar",
|
||
staleMappingWarning: "El tipo de base de datos ha cambiado de {prevSrc} → {prevTgt} a {curSrc} → {curTgt}. Los mapeos de campos existentes pueden no ser válidos. ¿Limpiarlos?",
|
||
},
|
||
deployMode: "Desplegar",
|
||
forwardSql: "SQL Directo",
|
||
rollbackSql: "SQL de Reversión",
|
||
rollbackMode: "Reversión",
|
||
deployMixed: "Despliegue parcialmente completado. Algunas declaraciones pueden haberse aplicado ya ({executedCount}/{statementCount}). El DDL puede no ser transaccional.",
|
||
deployRolledBack: "Todos los cambios han sido revertidos.",
|
||
rollbackIncompleteBlocked: "Rollback incomplete (missing objects). Execution blocked.",
|
||
rollbackIncompleteBanner: "Rollback incomplete — missing trigger/table DDL.",
|
||
deployMixedTitle: "Parcialmente Desplegado",
|
||
deployRolledBackTitle: "Revertido",
|
||
deployMixedWarning: "Algunas declaraciones pueden haberse aplicado mientras que otras fallaron. La base de datos puede estar en un estado inconsistente. Revise el registro de transacciones y tome medidas correctivas manuales antes de reintentar.",
|
||
},
|
||
rollbackComparison: {
|
||
title: "Comparación de Reversión",
|
||
forwardSql: "SQL Directo",
|
||
rollbackSql: "SQL de Reversión",
|
||
},
|
||
schemaDiff: {
|
||
optionsTitle: "Opciones de comparación",
|
||
selectConfig: "Select config",
|
||
newConfigName: "New Config",
|
||
newConfig: "New Config",
|
||
renameConfig: "Rename Config",
|
||
duplicateConfig: "Duplicate Config",
|
||
deleteConfig: "Delete Config",
|
||
exportConfig: "Export Config",
|
||
exportAllConfigs: "Export All Configs",
|
||
importConfig: "Import Config",
|
||
importFromFile: "Import from File",
|
||
importFromText: "Import from Text",
|
||
importPlaceholder: "Paste JSON config...",
|
||
importInvalidJson: "Invalid JSON format",
|
||
configName: "Config Name",
|
||
tableFilter: "Table filter",
|
||
tableFilterHint: "Matches table names with JavaScript regex. Empty include means all tables; empty exclude means no exclusions.",
|
||
tableFilterHintShort: "Limit compare by table name regex",
|
||
tableFilterHelp: "Table filter help",
|
||
tableFilterHelpRule: "Matches full table names. Do not type /.../.",
|
||
tableFilterHelpBlank: "Blank include means all tables. Blank skip means no exclusions.",
|
||
tableFilterHelpExample: "^user_ means starts with user_; _bak$ means ends with _bak; a|b means a or b.",
|
||
tableIncludePattern: "Include table regex",
|
||
tableIncludePatternPlaceholder: "e.g. ^user_",
|
||
tableExcludePattern: "Exclude table regex",
|
||
tableExcludePatternPlaceholder: "e.g. _bak$",
|
||
tableFilterPriority: "When both match",
|
||
tableFilterPriorityExclude: "Exclude wins",
|
||
tableFilterPriorityInclude: "Include wins",
|
||
options: {
|
||
tables: "Compare tables",
|
||
primaryKeys: "Compare primary keys",
|
||
foreignKeys: "Compare foreign keys",
|
||
uniqueKeys: "Compare unique keys",
|
||
checks: "Compare check constraints",
|
||
exclusions: "Compare exclusion constraints",
|
||
views: "Compare views",
|
||
functions: "Compare functions",
|
||
indexes: "Compare indexes",
|
||
sequences: "Compare sequences",
|
||
triggers: "Compare triggers",
|
||
rules: "Compare rules",
|
||
owners: "Compare owners",
|
||
cascadeDelete: "Use CASCADE delete",
|
||
sequenceLastValues: "Compare sequence last values",
|
||
compareColumnOrder: "Compare column order",
|
||
detectRenames: "Detectar renombrados",
|
||
detectTableRenames: "Detectar renombrados de tabla",
|
||
enableRollback: "Habilitar reversión",
|
||
advancedSection: "Avanzado",
|
||
renameThreshold: "Umbral de renombrado",
|
||
compatibilityThreshold: "Umbral de compatibilidad",
|
||
sourceDialect: "Dialecto de origen",
|
||
targetDialect: "Dialecto de destino",
|
||
batchSection: "Lote",
|
||
batchPatterns: "Patrones de tabla (separados por comas)",
|
||
dialectAuto: "automático",
|
||
},
|
||
},
|
||
dataCompare: {
|
||
title: "Comparar datos",
|
||
selectTable: "Seleccionar tabla",
|
||
searchTable: "Buscar tablas...",
|
||
sourceTables: "Tablas de origen",
|
||
targetTable: "Tabla de destino",
|
||
searchTables: "Buscar tablas...",
|
||
selectedTables: "{selected}/{total} seleccionadas",
|
||
selectAllTables: "Seleccionar todo",
|
||
deselectAllTables: "Deseleccionar todo",
|
||
selectSourceTables: "Selecciona primero la conexión y base de datos de origen, luego las tablas a comparar",
|
||
noTables: "No hay tablas disponibles para comparar",
|
||
autoMatchHint: "El modo por lotes empareja automáticamente tablas de destino con el mismo nombre",
|
||
matchedTables: "{matched}/{total} tablas emparejadas",
|
||
missingTargetTables: "Faltan tablas de destino con el mismo nombre: {tables}",
|
||
keyColumns: "Columnas clave",
|
||
keyColumnsPlaceholder: "Columnas primarias o únicas separadas por comas",
|
||
keyColumnsAutoHint: "Déjalo vacío para detectar claves primarias automáticamente en comparación simple o por tabla en lote.",
|
||
rowCounts: "Origen {source} filas, destino {target} filas; comparación completa terminada",
|
||
previewLimitOption: "Vista previa {count}",
|
||
compare: "Comparar datos",
|
||
summary: "Agregadas {added}, eliminadas {removed}, modificadas {modified}",
|
||
batchSummary: "Se compararon {tables} tablas: {different} con diferencias, {same} iguales, {failed} con error; agregadas {added}, eliminadas {removed}, modificadas {modified}",
|
||
comparingTable: "Comparando {current}/{total}: {table}",
|
||
keyColumnsInline: "Columnas clave: {columns}",
|
||
selectedInline: "Seleccionadas {selected}/{total}",
|
||
selectedSummary: "Seleccionado: agregadas {added}, eliminadas {removed}, modificadas {modified}",
|
||
selectAllKind: "Seleccionar todas las {kind}",
|
||
clearKind: "Limpiar {kind}",
|
||
clearSelection: "Limpiar toda la selección",
|
||
showAllRows: "Mostrar las {count}",
|
||
showLessRows: "Mostrar menos",
|
||
remainingRows: "Quedan {count} filas fuera de la vista previa",
|
||
planningSync: "Actualizando el plan de sincronización...",
|
||
noSelectedDifferences: "No hay diferencias seleccionadas para ejecutar",
|
||
planSummary: "Plan: {inserts} inserciones, {updates} actualizaciones, {deletes} eliminaciones, {statements} sentencias",
|
||
statusDifferent: "Con diferencias",
|
||
statusSame: "Igual",
|
||
statusError: "Error",
|
||
noKeyColumns: "Selecciona al menos una columna clave",
|
||
missingKeyColumns: "Las columnas clave deben existir en las tablas de origen y destino: {columns}",
|
||
noCommonColumns: "Las tablas de origen y destino no tienen columnas en común para comparar",
|
||
targetTableMissing: "No se encontró la tabla de destino: {table}",
|
||
noComparableTables: "No se encontraron tablas comparables. Verifica si existen tablas de destino con el mismo nombre.",
|
||
noDifferences: "Los datos son idénticos, no se necesita SQL de sincronización",
|
||
syncSuccess: "Sincronización de datos ejecutada exitosamente",
|
||
},
|
||
settings: {
|
||
title: "Configuración",
|
||
searchSettings: "Buscar configuración",
|
||
searchSettingsNoResults: "No hay ajustes coincidentes",
|
||
searchSettingsResults: "Resultados de búsqueda de configuración",
|
||
clearSettingsSearch: "Borrar búsqueda de configuración",
|
||
exitSettingsSearch: "Volver a configuración",
|
||
editorTab: "Editor",
|
||
sqlFormatterTab: "Formateador SQL",
|
||
sqlFormatterImport: "Importar configuración",
|
||
sqlFormatterExport: "Exportar configuración",
|
||
sqlFormatterImportSuccess: "Configuración del formateador importada.",
|
||
sqlFormatterCopyJson: "Copiar JSON",
|
||
sqlFormatterCopyJsonSuccess: "JSON copiado.",
|
||
sqlFormatterCopyJsonFailed: "Error al copiar: {message}",
|
||
sqlFormatterJsonEditorLoadFailed: "No se pudo cargar el editor JSON. Se cambió a una entrada básica: {message}",
|
||
sqlFormatterRestoreDefaults: "Restaurar valores por defecto",
|
||
sqlFormatterFormMode: "Formulario",
|
||
sqlFormatterJsonMode: "JSON",
|
||
sqlFormatterKeywordCase: "Mayúsculas/minúsculas de palabras clave",
|
||
sqlFormatterFunctionCase: "Mayúsculas/minúsculas de funciones",
|
||
sqlFormatterDataTypeCase: "Mayúsculas/minúsculas de tipos de datos",
|
||
sqlFormatterIdentifierCase: "Mayúsculas/minúsculas de identificadores",
|
||
sqlFormatterCaseUpper: "Mayúsculas",
|
||
sqlFormatterCaseLower: "Minúsculas",
|
||
sqlFormatterCasePreserve: "Conservar",
|
||
sqlFormatterIndent: "Sangría",
|
||
sqlFormatterIndentSpaces: "Espacios",
|
||
sqlFormatterIndentTabs: "Tabulaciones",
|
||
sqlFormatterTabWidth: "Ancho de tabulación",
|
||
sqlFormatterIndentStyle: "Estilo de sangría",
|
||
sqlFormatterIndentStyleStandard: "Estándar",
|
||
sqlFormatterIndentStyleTabularLeft: "Tabular izquierda",
|
||
sqlFormatterIndentStyleTabularRight: "Tabular derecha",
|
||
sqlFormatterLogicalOperatorNewline: "Salto de línea en operador lógico",
|
||
sqlFormatterLogicalBefore: "Antes del operador",
|
||
sqlFormatterLogicalAfter: "Después del operador",
|
||
sqlFormatterExpressionWidth: "Ancho de expresión",
|
||
sqlFormatterLinesBetweenQueries: "Líneas entre consultas",
|
||
sqlFormatterDenseOperators: "Operadores compactos",
|
||
sqlFormatterNewlineBeforeSemicolon: "Punto y coma en nueva línea",
|
||
sqlFormatterAdvancedOptions: "Opciones avanzadas",
|
||
sqlFormatterParams: "Parámetros",
|
||
sqlFormatterParamTypes: "Tipos de parámetro",
|
||
sqlFormatterEditorShortcuts: "Atajos",
|
||
sqlFormatterShortcutAction: "Acción",
|
||
sqlFormatterShortcutEnabled: "Activo",
|
||
sqlFormatterShortcutWindows: "Windows",
|
||
sqlFormatterShortcutLinux: "Linux",
|
||
sqlFormatterShortcutMacos: "macOS",
|
||
sqlFormatterShortcutFind: "Buscar",
|
||
sqlFormatterShortcutReplace: "Reemplazar",
|
||
sqlFormatterShortcutIndentMore: "Aumentar sangría",
|
||
sqlFormatterShortcutIndentLess: "Reducir sangría",
|
||
sqlFormatterShortcutDuplicateLine: "Duplicar línea actual",
|
||
sqlFormatterShortcutDeleteLine: "Eliminar línea actual",
|
||
sqlFormatterShortcutMoveLine: "Mover línea",
|
||
sqlFormatterShortcutMoveLineUp: "Mover línea arriba",
|
||
sqlFormatterShortcutMoveLineDown: "Mover línea abajo",
|
||
sqlFormatterShortcutCopyLine: "Copiar línea",
|
||
sqlFormatterShortcutCopyLineUp: "Copiar línea arriba",
|
||
sqlFormatterShortcutCopyLineDown: "Copiar línea abajo",
|
||
sqlFormatterShortcutUndo: "Deshacer",
|
||
sqlFormatterShortcutRedo: "Rehacer",
|
||
sqlFormatterShortcutSelectAll: "Seleccionar todo",
|
||
sqlFormatterShortcutFormatJson: "Formatear JSON",
|
||
sqlFormatterShortcutApply: "Aplicar configuración",
|
||
sqlFormatterConfigErrorInvalidJson: "JSON no válido.",
|
||
sqlFormatterConfigErrorObject: "La configuración debe ser un objeto JSON.",
|
||
sqlFormatterConfigErrorVersion: "Versión de configuración no compatible.",
|
||
sqlFormatterConfigErrorFormatter: "Formateador no compatible.",
|
||
sqlFormatterConfigErrorUnsupportedParams: "La sustitución params no es compatible. El formateo SQL no reemplazará marcadores.",
|
||
sqlFormatterConfigErrorOptionsObject: "Las opciones de configuración deben ser un objeto JSON.",
|
||
sqlFormatterConfigErrorEditorObject: "La configuración del editor debe ser un objeto JSON.",
|
||
sqlFormatterConfigErrorEditorScope: "Ámbito de editor no compatible.",
|
||
sqlFormatterConfigErrorEditorPlatforms: "Plataformas de editor no válidas.",
|
||
sqlFormatterConfigErrorEditorShortcutsArray: "Los atajos del editor deben ser un array.",
|
||
sqlFormatterConfigErrorEditorShortcutValue: "Atajo de editor no válido.",
|
||
sqlFormatterConfigErrorUnknownOption: "Opción desconocida del formateador: {option}.",
|
||
sqlFormatterConfigErrorInvalidOptionValue: "Valor no válido para {option}.",
|
||
sqlFormatterConfigErrorUnknownEditorShortcut: "Atajo de editor desconocido: {shortcut}.",
|
||
sqlFormatterConfigErrorInvalidEditorShortcut: "Atajo de editor no válido: {shortcut}.",
|
||
sqlFormatterConfigErrorDuplicateEditorShortcut: "Atajo de editor duplicado: {shortcut}.",
|
||
sqlFormatterConfigErrorInvalidConfig: "Configuración del formateador no válida.",
|
||
appearanceTab: "Apariencia",
|
||
navigationTab: "Navegación",
|
||
dataTab: "Datos",
|
||
tunnelsTab: "Túneles",
|
||
tunnelsDescription: "Configuraciones reutilizables de túneles SSH / proxy / HTTP. Configura una vez y selecciona el perfil desde la pestaña de túnel de una conexión; los cambios aquí se aplican a todas las conexiones que usan el perfil.",
|
||
tunnelsEmpty: "Aún no hay perfiles de túnel. Crea uno aquí y selecciónalo en la configuración de túnel de una conexión.",
|
||
tunnelsAddSsh: "Añadir SSH",
|
||
tunnelsAddProxy: "Añadir proxy",
|
||
tunnelsAddHttp: "Añadir túnel HTTP",
|
||
tunnelsProfileName: "Nombre del perfil",
|
||
tunnelsProfileNamePlaceholder: "p. ej. Bastión de la oficina",
|
||
tunnelsDelete: "Eliminar",
|
||
tunnelsUnnamedProfile: "Perfil sin nombre",
|
||
tunnelsSave: "Guardar",
|
||
tunnelsReset: "Restablecer",
|
||
tunnelsSaved: "Perfiles de túnel guardados",
|
||
tunnelsSaveFailed: "Error al guardar los perfiles de túnel: {message}",
|
||
tunnelsUnsavedHint: "Cambios sin guardar",
|
||
tunnelsTest: "Probar",
|
||
tunnelsTesting: "Probando...",
|
||
tunnelsTestSuccess: "Prueba de túnel correcta",
|
||
tunnelsTestFailed: "Error al probar el túnel: {message}",
|
||
tunnelsHttpTestSuccess: "Conexión proxy HTTP CONNECT correcta ({code})",
|
||
tunnelsSocks5TestSuccess: "Conexión proxy SOCKS5 correcta",
|
||
tunnelsProxyHostRequired: "El host del proxy es obligatorio.",
|
||
tunnelsProxyPortRequired: "El puerto del proxy es obligatorio.",
|
||
tunnelsSshHostRequired: "El host SSH es obligatorio.",
|
||
tunnelsHttpTunnelUnsupported: "La prueba de túnel no está soportada para perfiles de túnel HTTP.",
|
||
tunnelsProxyTimedOut: "La conexión al proxy agotó el tiempo de espera ({duration})",
|
||
tunnelsProxyConnectFailed: "Error al conectar con el proxy: {error}",
|
||
tunnelsProxyHandshakeFailed: "Error en el handshake con el proxy: {error}",
|
||
tunnelsProxyHandshakeTimedOut: "El handshake con el proxy agotó el tiempo de espera ({duration})",
|
||
tunnelsHttpConnectFailed: "Error en CONNECT del proxy HTTP: {detail}",
|
||
tunnelsSocksInvalidVersion: "Versión de proxy SOCKS no válida: {version}",
|
||
tunnelsSocksAuthTooLong: "El usuario o la contraseña de SOCKS es demasiado largo",
|
||
tunnelsSocksAuthFailed: "Falló la autenticación del proxy SOCKS",
|
||
tunnelsSocksAuthRejected: "El proxy SOCKS rechazó todos los métodos de autenticación",
|
||
tunnelsSocksUnsupportedAuth: "El proxy SOCKS seleccionó un método de autenticación no soportado: {method}",
|
||
tunnelsSocksHostTooLong: "El host del proxy es demasiado largo para la dirección SOCKS5",
|
||
tunnelsSocksConnectRejected: "Conexión proxy SOCKS rechazada (código {code})",
|
||
tunnelsSocksUnsupportedAddrType: "Tipo de dirección de enlace SOCKS no soportado: {type}",
|
||
redisTab: "Redis",
|
||
shortcutsTab: "Atajos",
|
||
snippetsTab: "Fragmentos",
|
||
syncTab: "Sync",
|
||
aiTab: "IA",
|
||
mcpTab: "MCP",
|
||
jdbcTab: "Drivers JDBC",
|
||
securityTab: "Seguridad",
|
||
aboutTab: "Acerca de",
|
||
fontFamily: "Familia tipográfica",
|
||
dataGridFontFamily: "Fuente de la cuadrícula de resultados",
|
||
dataGridFontFamilyDescription: "Se aplica a resultados de consultas, datos de tablas, encabezados de columnas y editores dentro de las celdas.",
|
||
uiFontFamily: "Fuente de la interfaz",
|
||
uiFontAppDefault: "Predeterminada de DBX",
|
||
uiFontSystemDefault: "Predeterminada del sistema",
|
||
uiFontFamilyDescription: "Se aplica a la barra superior, pestañas, barra lateral, diálogos y demás UI fuera del editor.",
|
||
selectFont: "Seleccionar fuente...",
|
||
searchFont: "Buscar fuentes...",
|
||
loadingFonts: "Cargando fuentes...",
|
||
noFontsFound: "No se encontraron fuentes",
|
||
useCustomFont: "Usar “{font}”",
|
||
languageTitle: "Idioma / Language",
|
||
fontSize: "Tamaño de fuente",
|
||
toolbarTitle: "Barra de herramientas",
|
||
toolbarHiddenHint: "Algunos botones ocultos o desbordados aparecerán en el menú «Más».",
|
||
exclusiveRightSidebarPanels: "Mostrar un panel lateral derecho a la vez",
|
||
exclusiveRightSidebarPanelsDescription: "Al abrir un panel lateral derecho se cierran los demás. Desactívalo para permitir varios paneles.",
|
||
uiScale: "Escala de interfaz",
|
||
uiScaleDescription: "Escala toda la interfaz de escritorio para pantallas de alta densidad. Los cambios se aplican al instante y se restauran al volver a abrir.",
|
||
theme: "Tema",
|
||
cornerStyle: "Estilo de esquinas",
|
||
cornerStyleNone: "Sin redondeo",
|
||
cornerStyleSmall: "Pequeñas",
|
||
cornerStyleLarge: "Grandes",
|
||
selectTheme: "Seleccionar tema...",
|
||
colorTheme: "Tema de color",
|
||
selectColorTheme: "Seleccionar tema de color...",
|
||
themePalettePearl: "Blanco",
|
||
themePaletteMist: "Gris niebla",
|
||
themePaletteGraphite: "Gris titanio",
|
||
themePaletteCobalt: "Azul cobalto",
|
||
themePaletteSage: "Verde salvia",
|
||
themePaletteAmber: "Amarillo cálido",
|
||
themePaletteBlush: "Rosa sakura",
|
||
themePaletteVscode: "VS Code",
|
||
themePaletteIdea: "IDEA",
|
||
themePaletteXcode: "Xcode",
|
||
themePaletteJetbrains: "JetBrains",
|
||
themePaletteCursor: "Cursor",
|
||
themePaletteClaude: "Claude Code",
|
||
followAppTheme: "Seguir el tema de la aplicación",
|
||
appLayout: "Diseño de la interfaz",
|
||
appLayoutSeparated: "Moderno separado",
|
||
appLayoutSeparatedDescription: "Separación clara de paneles con pestañas en bloque.",
|
||
appLayoutClassic: "Clásico compacto",
|
||
appLayoutClassicDescription: "Barra de pestañas continua con encabezados de panel compactos.",
|
||
tabLayout: "Desbordamiento de barra de pestañas",
|
||
tabLayoutScroll: "Desplazamiento en una fila",
|
||
tabLayoutScrollDescription: "Las pestañas se desplazan horizontalmente al desbordarse.",
|
||
tabLayoutWrap: "Ajuste multilínea",
|
||
tabLayoutWrapDescription: "Las pestañas se ajustan en varias filas para mostrarlas todas.",
|
||
iconTheme: "Estilo de icono y logo",
|
||
iconThemeDefault: "Predeterminado",
|
||
iconThemeDefaultDescription: "Usar el icono de color de DBX.",
|
||
iconThemeBlack: "Negro",
|
||
iconThemeBlackDescription: "Usa el logo negro de DBX en la aplicación.",
|
||
iconThemeBlackDescriptionMac: "Usa el logo negro en la app; Dock usa fondo negro y la barra de menús sigue el sistema.",
|
||
showTrayIcon: "Mostrar icono en bandeja/barra de menú",
|
||
showTrayIconDescription: "Si está desactivado, no se muestra el icono, pero cerrar la ventana sigue ocultando DBX en segundo plano como antes.",
|
||
quitOnClose: "Salir al cerrar la ventana",
|
||
quitOnCloseDescription: "Si está activado, al pulsar el botón de cerrar DBX se cierra por completo en lugar de ocultarse en la bandeja.",
|
||
closeActionPromptTitle: "Cerrar ventana",
|
||
closeActionPromptDescription: "Elige qué ocurre al pulsar el botón de cerrar. Puedes cambiarlo después en Ajustes → Apariencia.",
|
||
closeActionQuit: "Salir de DBX",
|
||
closeActionMinimize: "Minimizar a la bandeja",
|
||
updateNotificationsEnabled: "Activar recordatorios de actualización",
|
||
updateNotificationsEnabledDescription: "Al desactivarlo, DBX no comprobará automáticamente actualizaciones de la app ni de los controladores, ni mostrará indicadores. Las comprobaciones manuales siguen disponibles.",
|
||
updateDownloadSource: "Origen de descarga de actualizaciones",
|
||
updateDownloadSourceDescription: "Elige de dónde se descargan los instaladores de actualización. Se recomienda la fuente oficial; CNB puede ser más rápido en redes de China continental.",
|
||
updateDownloadSourceOfficial: "Fuente oficial (recomendada)",
|
||
updateDownloadSourceCnb: "CNB",
|
||
debugLoggingEnabled: "Activar logs de depuración",
|
||
debugLoggingEnabledDescription: "Registra logs de diagnóstico locales del lado del usuario al investigar reportes. Desactivado por defecto.",
|
||
duckDbWorkerProcessIsolation: "Modo de aislamiento de proceso de DuckDB (experimental)",
|
||
duckDbWorkerProcessIsolationDescription: "Ejecuta las consultas de DuckDB en un proceso worker independiente. Si una consulta larga no responde a la cancelación, DBX puede detener el proceso worker para liberar el bloqueo del archivo de base de datos.",
|
||
duckDbWorkerMaxProcesses: "Workers concurrentes máximos de DuckDB",
|
||
duckDbWorkerMaxProcessesDescription: "Limita cuántos procesos worker de DuckDB puede ejecutar DBX al mismo tiempo. Rango: 1-16. Predeterminado: 4.",
|
||
duckDbWorkerProcessIsolationRestartRequired: "Reinicia DBX para que este cambio surta efecto.",
|
||
restartDbx: "Reiniciar DBX",
|
||
restartDbxFailed: "No se pudo reiniciar DBX: {error}",
|
||
debugLogsCopy: "Copiar logs",
|
||
debugLogsCopied: "Copiado",
|
||
debugLogsDownload: "Descargar logs",
|
||
debugLogsDownloaded: "Descargado",
|
||
debugLogsClear: "Borrar logs",
|
||
tableStructureSection: "Estructura de tabla",
|
||
dataGridDisplay: "Visualización de la tabla",
|
||
tableOpenPageSize: "Filas predeterminadas por página al abrir tablas",
|
||
tableOpenPageSizeDescription: "Filas cargadas por página al abrir una tabla nueva. Cambiar las filas por página actualiza este valor para futuras pestañas de tablas.",
|
||
showColumnCommentsInHeader: "Mostrar comentarios bajo los nombres",
|
||
showColumnCommentsInHeaderDescription: "Muestra los comentarios de columnas directamente debajo del nombre de la columna.",
|
||
showColumnTypesInHeader: "Mostrar tipos de columna bajo los nombres",
|
||
showColumnTypesInHeaderDescription: "Muestra el tipo de dato de cada columna directamente debajo del nombre de la columna.",
|
||
compactColumnHeaderActions: "Compactar herramientas del encabezado",
|
||
compactColumnHeaderActionsDescription: "Mueve formatear y filtrar a un menú de más acciones para priorizar el nombre de columna.",
|
||
dataGridQuickEntry: "Entrada rápida en grilla",
|
||
dataGridQuickEntryDescription: "Al activarlo, editar una celda o llenar la fila vacía inferior se guarda en la base de datos al perder el foco. Agiliza la captura frecuente, pero puede causar escrituras accidentales.",
|
||
dataGridAutoTransposeSingleRow: "Transponer automáticamente los resultados de consulta de una sola fila",
|
||
dataGridAutoTransposeSingleRowDescription: "Al activarlo, los resultados de consultas SQL con exactamente una fila y varias columnas cambian automáticamente a la vista transpuesta.",
|
||
infiniteScroll: "Carga de desplazamiento infinito",
|
||
autoCalculateTotalRows: "Calcular automáticamente el total de filas",
|
||
autoCalculateTotalRowsDescription: "Ejecuta COUNT(*) automáticamente tras cada consulta para mostrar el total de filas coincidentes. Desactivado por defecto para mantener rápidas las consultas grandes; puedes calcularlo cuando quieras desde el pie de resultados.",
|
||
infiniteScrollDescription: "Carga automáticamente la siguiente página de datos al desplazarse hasta el final de la tabla.",
|
||
infiniteScrollMaxRows: "Máximo de filas en desplazamiento infinito",
|
||
infiniteScrollMaxRowsDescription: "Número máximo de filas a cargar en modo desplazamiento infinito (1000–50000).",
|
||
regexMaxMatchCount: "Máximo de coincidencias al seleccionar todas",
|
||
regexMaxMatchCountDescription: "Limita el número de selecciones creadas por Seleccionar todas las coincidencias; el conteo de búsqueda permanece completo (100–10000).",
|
||
tableColumnTemplateFields: "Campos predefinidos para tablas nuevas",
|
||
tableColumnTemplateFieldsDescription: "Elige un tipo de base de datos y configura los tipos de campo predefinidos usados al crear tablas nuevas.",
|
||
tableColumnTemplateAdd: "Agregar campo",
|
||
tableColumnTemplateColumn: "Campo",
|
||
tableColumnTemplateDatabase: "Base de datos",
|
||
tableColumnTemplateType: "Tipo",
|
||
tableColumnTemplateLength: "Longitud",
|
||
tableColumnTemplateDefault: "Valor por defecto",
|
||
tableColumnTemplateNoPresetType: "Sin tipo predefinido",
|
||
tableColumnTemplateRequired: "Obligatorio",
|
||
tableColumnTemplateComment: "Descripción",
|
||
tableColumnTemplateDragHandle: "Arrastrar para reordenar",
|
||
sidebarActivation: "Activación de la barra lateral",
|
||
sidebarActivationSingle: "Un clic",
|
||
sidebarActivationSingleDescription: "Abrir elementos accionables de la barra lateral con un clic.",
|
||
sidebarActivationDouble: "Doble clic",
|
||
sidebarActivationDoubleDescription: "Un clic selecciona la fila; doble clic abre elementos.",
|
||
sidebarObjectDisplay: "Diseño de objetos en la barra lateral",
|
||
sidebarObjectDisplayGrouped: "Vista avanzada",
|
||
sidebarObjectDisplayGroupedDescription: "Agrupa objetos por tablas, vistas, procedimientos y funciones para bases con más tipos de objeto.",
|
||
sidebarObjectDisplaySimple: "Vista simple",
|
||
sidebarObjectDisplaySimpleDescription: "Muestra tablas y vistas directamente bajo cada base de datos o esquema para reducir niveles intermedios.",
|
||
autoSelectActiveSidebarNode: "Seleccionar siempre el elemento abierto",
|
||
autoSelectActiveSidebarNodeDescription: "Al cambiar de pestaña, selecciona la tabla, colección o archivo SQL visible correspondiente en la barra lateral.",
|
||
openTabsRestoreMode: "Restaurar pestañas al iniciar",
|
||
openTabsRestoreModeDescription: "Elige cómo DBX restaura las pestañas que estaban abiertas la última vez.",
|
||
openTabsRestoreModeAll: "Conservar todas las pestañas",
|
||
openTabsRestoreModePinned: "Solo pestañas fijadas",
|
||
openTabsRestoreModeNone: "No conservar pestañas",
|
||
openTabsRestoreModeHint: "Las pestañas fijadas permanecen en el lado izquierdo de la barra de pestañas y son útiles como puntos de entrada frecuentes.",
|
||
disconnectTabHandlingMode: "Pestañas tras desconectar",
|
||
disconnectTabHandlingModeDescription: "Elige cómo conservar las pestañas relacionadas al cerrar una conexión o base de datos.",
|
||
disconnectTabHandlingModeCloseTabs: "Cerrar todas las pestañas",
|
||
disconnectTabHandlingModeCloseTabsDescription: "Cierra todas las pestañas relacionadas de la conexión o base de datos.",
|
||
disconnectTabHandlingModeKeepTabsClearResults: "Cerrar objetos y conservar SQL",
|
||
disconnectTabHandlingModeKeepTabsClearResultsDescription: "Cierra pestañas de datos, explorador de objetos y estructura, conserva las pestañas SQL y limpia el estado de ejecución y las sesiones.",
|
||
disconnectTabHandlingModeKeepTabsKeepResults: "No cerrar pestañas relacionadas",
|
||
disconnectTabHandlingModeKeepTabsKeepResultsDescription: "Conserva las pestañas relacionadas, el texto SQL y los resultados actuales sin limpieza adicional.",
|
||
reuseDataTab: "Reutilizar pestaña de datos",
|
||
reuseDataTabDescription: "Al volver a abrir la misma tabla, cambia a su pestaña de datos existente; las tablas diferentes siempre usan pestañas separadas.",
|
||
sidebarHiddenTablePrefixes: "Prefijos ocultos de tablas",
|
||
sidebarHiddenTablePrefixesDescription: "Un prefijo por linea. Solo acorta etiquetas de tablas, vistas y colecciones en la barra lateral; las acciones y ayudas usan el nombre completo.",
|
||
sidebarHiddenTablePrefixesPlaceholder: "Ejemplo:\nODS_\nT8Y2_LONG_",
|
||
sidebarTablePageSize: "Tamaño de página de la barra lateral",
|
||
sidebarTablePageSizeDescription: "Número máximo de tablas/objetos cargados por página en el árbol lateral. Auméntalo si tienes muchas tablas para reducir páginas.",
|
||
sidebarTableSearchEnabled: "Activar búsqueda de tablas por base",
|
||
sidebarTableSearchEnabledDescription: "Muestra un buscador local bajo bases de datos, schemas o grupos de tablas expandidos para filtrar tablas por separado.",
|
||
sidebarObjectInfoMode: "Información adicional lateral",
|
||
sidebarObjectInfoModeDescription:
|
||
"Elige comentarios, tamaños de objetos o ningún texto tras los nombres. Los comentarios y tamaños son excluyentes. El tamaño total de bases admite PostgreSQL; los tamaños de tablas admiten MySQL, PostgreSQL, GaussDB, Kingbase, GBase 8a, SQL Server, Oracle, Dameng y ClickHouse.",
|
||
sidebarObjectInfoModeCommentInline: "Comentarios (junto al nombre)",
|
||
sidebarObjectInfoModeCommentAligned: "Comentarios (alinear nivel)",
|
||
sidebarObjectInfoModeCommentRight: "Comentarios (alinear a la derecha)",
|
||
sidebarObjectInfoModeSize: "Tamaño del objeto",
|
||
sidebarObjectInfoModeHidden: "Ninguna",
|
||
sidebarAllowHorizontalScroll: "Permitir desplazamiento horizontal lateral",
|
||
sidebarAllowHorizontalScrollDescription: "Muestra completos los nombres largos de tablas, vistas y colecciones permitiendo desplazamiento horizontal en la barra lateral.",
|
||
snippetsDescription: "Personaliza plantillas SQL activadas en el editor.",
|
||
syncSnippetProviderGitee: "Fragmentos de Gitee",
|
||
snippetsAdd: "Agregar fragmento",
|
||
snippetsLabel: "Etiqueta",
|
||
snippetsPrefix: "Prefijo",
|
||
snippetsStatus: "Estado",
|
||
snippetsEnabled: "Activado",
|
||
snippetsDisabled: "Desactivado",
|
||
snippetsToggle: "Activar o desactivar fragmento",
|
||
snippetsBody: "SQL",
|
||
snippetsLabelPlaceholder: "p. ej. select *",
|
||
snippetsPrefixPlaceholder: "p. ej. sel",
|
||
snippetsBodyPlaceholder: "SELECT *\nFROM table\nLIMIT 100;",
|
||
snippetsRestoreDefaults: "Restaurar valores por defecto",
|
||
snippetsAddTitle: "Agregar fragmento",
|
||
snippetsEditTitle: "Editar fragmento",
|
||
syncWebDavTitle: "Sincronización WebDAV",
|
||
syncWebDavDescription: "Sube o restaura una instantánea de DBX, incluida la biblioteca SQL guardada, desde almacenamiento compatible con WebDAV.",
|
||
syncEndpoint: "URL WebDAV",
|
||
syncUsername: "Usuario",
|
||
syncPassword: "Contraseña",
|
||
syncPasswordPlaceholder: "Introduce la contraseña",
|
||
syncClearSavedPassword: "Borrar contraseña guardada",
|
||
syncRememberWebDavPassword: "Recordar contraseña de app WebDAV",
|
||
syncSavedPassword: "(guardada)",
|
||
syncRememberWebDavPasswordDescription: "La contraseña se cifra y se guarda solo en este dispositivo. No se sincroniza a WebDAV ni reemplaza la contraseña de sync.",
|
||
syncRemotePath: "Ruta remota",
|
||
syncRemotePathDescription: "DBX creará las carpetas padre faltantes al subir.",
|
||
syncSecretNotice: "De forma predeterminada, DBX solo sincroniza detalles de conexión y ajustes. Las contraseñas de base de datos, SSH, proxy, cadenas de conexión y API keys de IA quedan locales.",
|
||
syncSecrets: "Sincronizar secretos cifrados",
|
||
syncSecretsDescription: "Al activarlo, DBX cifra contraseñas de base de datos, contraseñas SSH y API keys de IA antes de subirlas a WebDAV.",
|
||
syncSecretsPassphrase: "Contraseña de sync",
|
||
syncSecretsPassphraseDescription: "Esta contraseña solo se usa para cifrar y restaurar datos sensibles. DBX no la guarda; tendrás que ingresarla en cada dispositivo.",
|
||
syncTest: "Probar",
|
||
syncUpload: "Subir",
|
||
syncDownload: "Descargar",
|
||
syncTestSuccess: "El destino WebDAV está disponible.",
|
||
syncUploadSuccess: "Se subieron {bytes} bytes a {path}.",
|
||
syncAutoUpload: "Subir instantáneas automáticamente",
|
||
syncAutoUploadInterval: "Cada",
|
||
syncAutoUploadMinutes: "minutos",
|
||
syncAutoUploadDescription: "Se ejecuta mientras DBX está abierto. Las descargas aún requieren confirmación manual para evitar reemplazar SQL guardado localmente.",
|
||
syncAutoUploadSuccess: "Se subieron automáticamente {bytes} bytes a {path}.",
|
||
syncDownloadSuccess: "Se descargaron y aplicaron {bytes} bytes desde {path}.",
|
||
syncSecretsApplied: "Los secretos cifrados fueron restaurados.",
|
||
syncSecretsSkipped: "Había secretos cifrados, pero no fueron restaurados.",
|
||
syncDownloadConfirm: "¿Descargar y aplicar la instantánea remota de DBX? Se reemplazarán metadatos locales y SQL guardado.",
|
||
apply: "Aplicar",
|
||
applyAndClose: "Aplicar y cerrar",
|
||
reset: "Restablecer",
|
||
resetDefaults: "Restablecer valores por defecto",
|
||
resetAllDefaults: "Restablecer todos los valores por defecto",
|
||
save: "Guardar",
|
||
cancel: "Cancelar",
|
||
executeMode: "Modo de ejecución (Cmd+Enter)",
|
||
executeModeAll: "Ejecutar todo el SQL",
|
||
executeModeCurrent: "Ejecutar sentencia en el cursor",
|
||
showExecutionTargetPicker: "Mostrar selector de objetivo",
|
||
showExecutionTargetPickerDescription: "Al activarlo, ejecutar sin selección permite elegir entre la sentencia actual y todo el SQL.",
|
||
showStatementRunButtons: "Mostrar botones de ejecución laterales",
|
||
showStatementRunButtonsDescription: "Muestra botones para ejecutar cada sentencia en el margen del editor SQL. Los atajos de teclado y el menú contextual seguirán funcionando al desactivarlo.",
|
||
showCurrentStatementFrame: "Mostrar marco de la sentencia actual",
|
||
showCurrentStatementFrameDescription: "Al activarlo, el editor SQL dibuja un contorno alrededor de la sentencia ejecutable actual; al desactivarlo, se oculta.",
|
||
showInsertValueHints: "Mostrar pistas de columnas en VALUES de INSERT",
|
||
showInsertValueHintsDescription: "Al activarlo, el editor SQL muestra el nombre de columna junto a cada valor en cláusulas INSERT ... VALUES.",
|
||
previewStatementRunButton: "Botón de ejecución de sentencia en vista previa",
|
||
wordWrap: "Ajuste de línea",
|
||
wordWrapDescription: "Ajustar las líneas largas de SQL al ancho del editor",
|
||
vimMode: "Modo Vim",
|
||
vimModeDescription: "Usar edición modal estilo Vim en el editor SQL",
|
||
autoCloseBrackets: "Cerrar paréntesis automáticamente",
|
||
autoCloseBracketsDescription: "Insertar automáticamente paréntesis y comillas de cierre al escribir los de apertura",
|
||
sqlSemanticDiagnosticsEnabled: "Diagnóstico semántico de SQL",
|
||
sqlSemanticDiagnosticsEnabledDescription: "Al activarse, el editor informa de problemas semánticos como tablas y columnas desconocidas. Desactívalo para reducir el análisis y las comprobaciones de metadatos en SQL grandes.",
|
||
confirmDangerousSqlExecution: "Confirmar antes de SQL peligroso",
|
||
confirmDangerousSqlExecutionDescription: "Cuando se desactiva, ALTER, DROP, DELETE, TRUNCATE y otras sentencias peligrosas se ejecutan sin el diálogo de advertencia.",
|
||
continueOnErrorOnBatch: "Continuar en error",
|
||
continueOnErrorOnBatchDescription: "Cuando está habilitado, la ejecución de múltiples sentencias continúa después de un error en lugar de detenerse en el primer fallo.",
|
||
confirmUnsavedSqlClose: "Confirmar antes de cerrar SQL sin guardar",
|
||
confirmUnsavedSqlCloseDescription: "Cuando se desactiva, las pestañas SQL con ediciones sin guardar se cierran o salen sin el diálogo de confirmación de guardado.",
|
||
savedSqlOpenTarget: "Destino predeterminado del SQL guardado",
|
||
savedSqlOpenTargetSaved: "Destino guardado",
|
||
savedSqlOpenTargetSavedDescription: "Usar la conexión, la base de datos y el esquema guardados con el archivo SQL.",
|
||
savedSqlOpenTargetCurrent: "Pestaña actual",
|
||
savedSqlOpenTargetCurrentDescription: "Usar la conexión, la base de datos, el esquema y el catálogo de la pestaña activa cuando estén disponibles; de lo contrario, usar el destino guardado.",
|
||
prefillNewQueryWithSelect: "Rellenar nueva consulta con SELECT *",
|
||
prefillNewQueryWithSelectDescription: "Al crear una nueva consulta, rellena el editor con SELECT * FROM <tabla> según la pestaña de tabla activa o la tabla seleccionada en la barra lateral.",
|
||
clickTableNavigationTarget: "Ctrl+Clic abre DDL de tabla",
|
||
clickTableNavigationTargetDescription: "Cuando está activado, Ctrl/Cmd+clic en el nombre de la tabla abre el editor de estructura (DDL). Cuando está desactivado, abre la vista de datos.",
|
||
sqlVariableSyntax: "Sustitución de variables y marcadores SQL",
|
||
sqlVariableSyntaxDescription: "Elige qué sintaxis de variables y marcadores sustituye DBX antes de ejecutar SQL, por tipo de base de datos. Todas están habilitadas de forma predeterminada.",
|
||
sqlVariableSyntax_positional: "Marcador posicional",
|
||
sqlVariableSyntax_positionalDescription: "Solicita un valor para sustituir cada marcador posicional en orden.",
|
||
sqlVariableSyntax_named: "Marcador con nombre",
|
||
sqlVariableSyntax_namedDescription: "Solicita un valor para sustituir los marcadores con nombre.",
|
||
sqlVariableSyntax_shell: "Marcador estilo shell",
|
||
sqlVariableSyntax_shellDescription: "Solicita un valor para sustituir los marcadores de estilo shell.",
|
||
sqlVariableSyntax_mybatis: "Marcador estilo MyBatis",
|
||
sqlVariableSyntax_mybatisDescription: "Solicita un valor para sustituir los marcadores de estilo MyBatis.",
|
||
sqlVariableSyntax_sqlserver: "Marcador estilo SQL Server",
|
||
sqlVariableSyntax_sqlserverDescription: "Solicita un valor para sustituir los marcadores de estilo SQL Server (pueden entrar en conflicto con variables de sesión).",
|
||
sqlVariableSyntax_atSet: "Expansión de variables en línea",
|
||
sqlVariableSyntax_atSetDescription: "Expande las declaraciones de variables en línea y sustituye sus valores antes de ejecutar.",
|
||
autoAliasTables: "Agregar alias de tabla automáticamente",
|
||
autoAliasTablesDescription: "Al seleccionar una tabla en FROM o JOIN, inserta un alias generado como order_items AS oi.",
|
||
redisScanPageSize: "Cantidad de escaneo Redis",
|
||
redisScanPageSizeDescription: "Claves solicitadas por página SCAN al explorar claves Redis.",
|
||
redisScanPageSizeOption: "{count} claves",
|
||
exportBatchSize: "Tamaño de lote de exportación",
|
||
exportBatchSizeDescription: "Filas obtenidas por lote al exportar datos de tabla (100-100000).",
|
||
exportRowLimitEnabled: "Limitar filas exportadas",
|
||
exportRowLimitEnabledDescription: "Cuando está activado, las exportaciones de resultados de consultas y datos de tabla se detienen en el límite de filas indicado abajo.",
|
||
exportRowLimit: "Límite de filas de exportación",
|
||
exportRowLimitDescription: "Máximo de filas para exportaciones de resultados de consultas y datos de tabla.",
|
||
exportRowLimitUnlimited: "Sin límite",
|
||
queryExportKeysetOptimizationEnabled: "Intentar optimización keyset",
|
||
queryExportKeysetOptimizationEnabledDescription: "Solo aplica a consultas de una sola tabla reconocidas de forma segura; las consultas complejas usan el método estándar automáticamente.",
|
||
exportSection: "Exportar",
|
||
shortcutExecuteSql: "Ejecutar SQL",
|
||
shortcutExecuteSqlInNewResultTab: "Ejecutar SQL en una nueva pestaña de resultados",
|
||
shortcutFind: "Buscar",
|
||
shortcutReplace: "Reemplazar",
|
||
shortcutSaveSql: "Guardar SQL",
|
||
shortcutAcceptCompletion: "Aceptar completado",
|
||
shortcutFormatSql: "Formatear SQL",
|
||
shortcutToggleLineComment: "Alternar comentario de línea",
|
||
shortcutIndentMore: "Aumentar sangría",
|
||
shortcutIndentLess: "Reducir sangría",
|
||
shortcutDuplicateLine: "Duplicar línea actual",
|
||
shortcutDeleteLine: "Eliminar línea actual",
|
||
shortcutMoveLineUp: "Mover línea arriba",
|
||
shortcutMoveLineDown: "Mover línea abajo",
|
||
shortcutCopyLineUp: "Copiar línea arriba",
|
||
shortcutCopyLineDown: "Copiar línea abajo",
|
||
shortcutUndo: "Deshacer",
|
||
shortcutRedo: "Rehacer",
|
||
shortcutSelectAll: "Seleccionar todo",
|
||
shortcutExtendSelection: "Ampliar selección",
|
||
shortcutCopyCurrentRow: "Copiar fila de datos actual",
|
||
shortcutDeleteCurrentRow: "Eliminar fila de datos actual",
|
||
shortcutNewQuery: "Nueva consulta",
|
||
shortcutOpenSettings: "Abrir configuración",
|
||
shortcutCloseTab: "Cerrar pestaña",
|
||
shortcutToggleSidebar: "Alternar barra lateral",
|
||
shortcutFocusSearch: "Enfocar búsqueda",
|
||
shortcutQuickOpen: "Abrir rápido (buscar todos los objetos de base de datos)",
|
||
shortcutSwitchToPreviousTab: "Cambiar a la pestaña anterior",
|
||
shortcutSwitchToNextTab: "Cambiar a la pestaña siguiente",
|
||
shortcutSwitchToTab1: "Cambiar a la pestaña 1",
|
||
shortcutSwitchToTab2: "Cambiar a la pestaña 2",
|
||
shortcutSwitchToTab3: "Cambiar a la pestaña 3",
|
||
shortcutSwitchToTab4: "Cambiar a la pestaña 4",
|
||
shortcutSwitchToTab5: "Cambiar a la pestaña 5",
|
||
shortcutSwitchToTab6: "Cambiar a la pestaña 6",
|
||
shortcutSwitchToTab7: "Cambiar a la pestaña 7",
|
||
shortcutSwitchToTab8: "Cambiar a la pestaña 8",
|
||
shortcutSwitchToTab9: "Cambiar a la pestaña 9",
|
||
shortcutZoomInUi: "Ampliar interfaz",
|
||
shortcutZoomOutUi: "Reducir interfaz",
|
||
shortcutResetUiZoom: "Restablecer zoom de interfaz",
|
||
shortcutRefreshData: "Actualizar datos",
|
||
shortcutToggleTranspose: "Alternar vista transpuesta",
|
||
shortcutCancelSearch: "Cancelar búsqueda",
|
||
shortcutCopySidebarSelection: "Copiar selección de la barra lateral",
|
||
shortcutPasteSidebarSelection: "Pegar en la barra lateral",
|
||
shortcutEditSidebarConnection: "Editar conexión de la barra lateral",
|
||
shortcutOpenDataInNewTab: "Abrir datos en una pestaña nueva (clic del ratón)",
|
||
shortcutSendSelectionToAi: "Enviar selección a IA",
|
||
shortcutToggleFold: "Contraer/expandir código",
|
||
shortcutScopeGlobal: "Global",
|
||
shortcutScopeEditor: "Editor SQL",
|
||
shortcutScopeGrid: "Cuadrícula de datos",
|
||
shortcutScopeSearch: "Campos de búsqueda",
|
||
shortcutScopeSidebar: "Barra lateral",
|
||
shortcutPressShortcut: "Presiona un atajo",
|
||
shortcutSearchPlaceholder: "Buscar atajos",
|
||
shortcutSearchNoResults: "Ningún atajo coincide con la búsqueda.",
|
||
shortcutConflict: "Este atajo entra en conflicto con otra acción del mismo ámbito.",
|
||
shortcutClear: "Borrar atajo",
|
||
preview: "Vista previa en tiempo real",
|
||
customTheme: "Tema personalizado",
|
||
customThemeConfigure: "Configurar tema personalizado",
|
||
customThemeTitle: "Configuración de tema personalizado",
|
||
customThemeMyThemes: "Mis temas",
|
||
customThemeNewTheme: "Nuevo tema",
|
||
customThemeVisualEdit: "Editor visual",
|
||
customThemeJsonConfig: "Configuración JSON",
|
||
customThemeLivePreview: "Vista previa en tiempo real",
|
||
customThemePreviewExample: "Ejemplo de consulta",
|
||
customThemePreset: "Tema predefinido",
|
||
customThemeSelectPreset: "Seleccionar tema predefinido...",
|
||
customThemeApply: "Aplicar",
|
||
customThemePasteImport: "Importar desde portapapeles",
|
||
customThemeExportJson: "Exportar JSON",
|
||
customThemeSaveAndApply: "Guardar y aplicar",
|
||
customThemeKeyword: "Palabra clave",
|
||
customThemeField: "Campo/Variable",
|
||
customThemeFunction: "Función",
|
||
customThemeString: "Cadena",
|
||
customThemeNumber: "Número",
|
||
customThemeComment: "Comentario",
|
||
customThemeTable: "Tabla",
|
||
customThemeOperator: "Operador",
|
||
customThemeType: "Tipo",
|
||
customThemeBuiltin: "Variable integrada",
|
||
customThemeBackground: "Color de fondo",
|
||
customThemeForeground: "Color de primer plano",
|
||
customThemeDefaultName: "Tema personalizado",
|
||
customThemeCopySuffix: " Copia",
|
||
customThemeApplied: 'Esquema de color "{name}" aplicado',
|
||
customThemeKeepOne: "Mantener al menos un tema",
|
||
customThemeJsonError: "Formato JSON inválido, por favor verifique",
|
||
jdbcPlugin: "Plugin JDBC de DBX",
|
||
jdbcPluginInstall: "Instalar plugin JDBC",
|
||
jdbcPluginInstallSuccess: "Plugin JDBC instalado",
|
||
jdbcPluginUpdate: "Actualizar",
|
||
jdbcPluginUninstall: "Desinstalar",
|
||
jdbcPluginUninstallSuccess: "Plugin JDBC desinstalado",
|
||
jdbcPluginInstalled: "Instalado: v{version}",
|
||
jdbcPluginIncompatible: "Protocolo incompatible",
|
||
jdbcPluginNotInstalled: "No instalado",
|
||
jdbcDrivers: "JARs de drivers JDBC",
|
||
jdbcImport: "Importar JAR",
|
||
jdbcImportPath: "Ruta de importación",
|
||
jdbcDriverPathPlaceholder: "/ruta/al/driver.jar",
|
||
jdbcImportSuccess: "Se importaron {count} archivo(s) de driver",
|
||
jdbcDeleteSuccess: "Driver eliminado",
|
||
jdbcNoDrivers: "Aún no se han importado drivers JDBC.",
|
||
mcpTitle: "MCP Server",
|
||
mcpDescription: "Comprueba la instalación y versión de DBX MCP Server para Claude Code, Cursor y otros agentes.",
|
||
mcpChecking: "Comprobando",
|
||
mcpStatusUnknown: "Sin comprobar",
|
||
mcpStatusError: "Error al comprobar",
|
||
mcpReady: "Listo",
|
||
mcpNotInstalled: "No instalado",
|
||
mcpUpdateAvailable: "Actualización disponible",
|
||
mcpCurrent: "Versión actual",
|
||
mcpLatest: "Última versión",
|
||
mcpVersionMissing: "No se detectó instalación global",
|
||
mcpVersionUnknown: "Desconocida",
|
||
mcpAvailable: "Disponible",
|
||
mcpUnavailable: "No disponible",
|
||
mcpBinPath: "Ruta del comando",
|
||
mcpInstallCommand: "Comando de instalación",
|
||
mcpUpdateCommand: "Comando de actualización",
|
||
mcpInstallButton: "Instalar",
|
||
mcpUpdateButton: "Actualizar",
|
||
mcpUpToDate: "Actualizado",
|
||
mcpInstalling: "Instalando...",
|
||
mcpInstallSuccess: "Instalación exitosa",
|
||
mcpInstallFailed: "Error de instalación",
|
||
mcpConfig: "Configuración de MCP",
|
||
mcpConfigOptionsHint:
|
||
"DBX controla de forma central el acceso a conexiones y los permisos de ejecución para todos los clientes MCP. La configuración generada solo contiene los parámetros de ejecución necesarios para iniciar el servidor MCP y conectarlo a esta instancia de DBX, sin variables de permisos ni de ámbito de conexión.",
|
||
mcpScopeConnection: "Conexiones permitidas para MCP",
|
||
mcpScopeConnectionDescription: "DBX solo expone a MCP las conexiones seleccionadas. Los cambios se aplican a todos los clientes MCP.",
|
||
mcpScopeMode: "Modo de ámbito de conexiones",
|
||
mcpScopeModeAll: "Todas las conexiones",
|
||
mcpScopeModeAllDescription: "Incluye automáticamente las conexiones futuras",
|
||
mcpScopeModeSelected: "Conexiones específicas",
|
||
mcpScopeModeSelectedDescription: "Solo las conexiones añadidas explícitamente",
|
||
mcpScopeAllowedPane: "Permitidas",
|
||
mcpScopeAvailablePane: "Disponibles",
|
||
mcpScopeAddAll: "Añadir todas",
|
||
mcpScopeRemoveAll: "Quitar todas",
|
||
mcpScopeAddMatches: "Añadir coincidencias ({count})",
|
||
mcpScopeRemoveMatches: "Quitar coincidencias ({count})",
|
||
mcpScopeAddConnection: "Permitir que MCP acceda a {name}",
|
||
mcpScopeRemoveConnection: "Quitar el acceso MCP a {name}",
|
||
mcpScopeAvailableEmpty: "No hay conexiones disponibles para añadir",
|
||
mcpScopeAllowedEmpty: "Actualmente no hay conexiones permitidas",
|
||
mcpScopeUnavailableGroup: "Conexiones no disponibles ({count})",
|
||
mcpScopeRemoveUnavailableConnection: "Quitar la conexión no disponible {id} de la lista permitida",
|
||
mcpScopeUpdatedAnnouncement: "MCP permite actualmente {selected} de {total} conexiones disponibles",
|
||
mcpConnectionSearchPlaceholder: "Buscar por nombre, tipo, dirección, base de datos o ID",
|
||
mcpConnectionSearchEmpty: "No hay conexiones coincidentes",
|
||
mcpConnectionListEmpty: "No hay conexiones disponibles",
|
||
mcpScopeAllAction: "Permitir todas",
|
||
mcpScopeNoneAction: "Quitar todas",
|
||
mcpScopeAllSummary: "Las {count} conexiones",
|
||
mcpScopeSelectedSummary: "{selected}/{total} seleccionadas",
|
||
mcpScopeAllConnections: "Todas las conexiones",
|
||
mcpScopeNoConnections: "Ninguna conexión",
|
||
mcpScopeConnectionUnavailable: "Conexión seleccionada anteriormente (no disponible)",
|
||
mcpScopeConnectionUnavailableDescription: "Ya no existen {count} conexiones seleccionadas. Sus ID siguen en la lista de permitidas, pero actualmente no se expone ninguna conexión correspondiente.",
|
||
mcpScopeSelectedCount: "{count} conexiones seleccionadas",
|
||
mcpCodexConfig: "Configuración de Codex",
|
||
mcpCodexConfigPath: "Codex puede usar ~/.codex/config.toml o .codex/config.toml dentro del proyecto.",
|
||
mcpCursorConfigPath: "Cursor puede usar .cursor/mcp.json en el proyecto o ~/.cursor/mcp.json globalmente.",
|
||
mcpTraeConfigPath: "TRAE: Configuración > MCP > Agregar > Agregar manualmente; luego pega la configuración JSON.",
|
||
mcpCherryStudioConfigPath: "Cherry Studio: Configuración > Servidores MCP > Agregar servidor > Importar JSON; luego pega la configuración.",
|
||
mcpVsCodeConfigPath: "VS Code/Copilot puede usar .vscode/mcp.json en el espacio de trabajo o mcp.json en el perfil de usuario.",
|
||
mcpWindsurfConfigPath: "Windsurf puede usar ~/.codeium/windsurf/mcp_config.json.",
|
||
mcpOpenCodeConfigPath: "~/.config/opencode/opencode.json global, o opencode.json a nivel de proyecto.",
|
||
mcpExecutionMode: "Permiso de ejecución MCP",
|
||
mcpExecutionModeDescription: "Elige el nivel de permiso que DBX aplica a todos los clientes MCP. La configuración de lectura y escritura del cliente no puede cambiar este nivel.",
|
||
mcpExecutionModeReadOnly: "Solo lectura",
|
||
mcpExecutionModeSafeWrite: "Lectura y escritura de datos",
|
||
mcpExecutionModeRecommended: "Recomendado",
|
||
mcpExecutionModeHighRiskWrite: "Acceso completo",
|
||
mcpExecutionModeReadOnlyDescription: "Solo permite solicitudes que DBX clasifica como lecturas; bloquea las escrituras reconocidas y los cambios de conexión. Los permisos de la cuenta de base de datos siguen siendo el límite de seguridad final.",
|
||
mcpExecutionModeSafeWriteDescription: "Permite INSERT normales, UPDATE/DELETE con filtros efectivos, cambios MongoDB de alcance verificable y escrituras Redis normales o borrado de claves explícitas; bloquea cambios globales y estructurales.",
|
||
mcpExecutionModeHighRiskWriteDescription: "Además de leer y escribir datos, permite cambios de tablas completas, DDL, TRUNCATE, vaciado de bases de datos y otras operaciones de alto riesgo. Las protecciones de producción y solo lectura siguen activas.",
|
||
mcpExecutionModeHighRiskConfirm: "El acceso completo permite cambios de tablas completas, DDL, TRUNCATE, vaciado de bases de datos y otras operaciones de alto riesgo. ¿Quieres activarlo?",
|
||
mcpCapabilityTitle: "Comparación de capacidades",
|
||
mcpCapabilityDescription: "Estas son operaciones representativas; las solicitudes que DBX no puede clasificar de forma fiable requieren acceso completo.",
|
||
mcpCapabilityOperation: "Capacidad",
|
||
mcpCapabilityRead: "Consultas y lecturas",
|
||
mcpCapabilityScopedMutation: "Cambios de datos acotados (INSERT, UPDATE/DELETE filtrados, escritura/borrado de claves explícitas)",
|
||
mcpCapabilityBroadMutation: "Actualizaciones/borrados de tablas completas y vaciado de datos",
|
||
mcpCapabilitySchemaAdmin: "DDL, cambios estructurales y administración de alto riesgo",
|
||
mcpCapabilityConnectionManagement: "Agregar/eliminar conexiones MCP",
|
||
mcpCapabilityAllowed: "Permitido",
|
||
mcpCapabilityBlocked: "Bloqueado",
|
||
mcpCapabilityAlwaysEnforced: "Todos los modos siguen sujetos a la lista de conexiones permitidas, la protección de solo lectura, la protección de producción y los permisos de la cuenta de base de datos.",
|
||
mcpPolicySaveFailed: "No se pudo guardar la política de acceso MCP: {error}",
|
||
mcpPolicyLoadFailed: "No se pudo cargar la política de acceso MCP: {error}",
|
||
mcpDetectionTiming: "DBX comprueba automáticamente al abrir esta página; usa Comprobar de nuevo para actualizar.",
|
||
mcpNpmBoundary: "DBX solo comprueba y explica el estado de MCP; la instalación y actualización siguen usando npm.",
|
||
mcpRefresh: "Comprobar de nuevo",
|
||
mcpGuide: "Guía MCP",
|
||
supportInfoTitle: "Información de soporte",
|
||
supportInfoDescription: "Copia estos datos del entorno al crear issues o pedir ayuda.",
|
||
supportInfoCopy: "Copiar información",
|
||
supportInfoCopied: "Copiado",
|
||
supportInfoLoading: "Cargando información de soporte...",
|
||
supportInfoLoadFailed: "No se pudo cargar toda la información de soporte: {message}",
|
||
supportInfoAppVersion: "Versión de DBX",
|
||
supportInfoRuntime: "Entorno",
|
||
supportInfoRuntimeDesktop: "Escritorio",
|
||
supportInfoRuntimeWeb: "Web",
|
||
supportInfoOperatingSystem: "Sistema operativo",
|
||
supportInfoArchitecture: "Arquitectura",
|
||
supportInfoUnknown: "Desconocido",
|
||
community: "Comunidad",
|
||
qqGroup: "Grupo QQ",
|
||
wechatGroup: "Grupo WeChat",
|
||
wechatGroupInvite: "Invitación de Tencent Docs",
|
||
project: "Proyecto",
|
||
openSource: "Repositorio de código abierto",
|
||
officialDocs: "Documentación oficial",
|
||
changelogTitle: "Registro de cambios",
|
||
changelogDescription: "Consulta las novedades de cada versión.",
|
||
changelogLoading: "Cargando el registro de cambios...",
|
||
changelogLoadFailed: "No se pudo cargar el registro de cambios.",
|
||
changelogEmpty: "Aún no hay entradas en el registro de cambios.",
|
||
changelogPublishedOn: "Publicado el {date}",
|
||
changelogNew: "NEW",
|
||
changelogLoadMore: "Cargar más",
|
||
changelogOpenWebsite: "Ver en el sitio web",
|
||
changelogOpenGitHub: "GitHub Release",
|
||
changelogNoDetails: "Consulta GitHub Release para más detalles.",
|
||
changelogRetry: "Reintentar",
|
||
changelogSectionAdded: "Novedades",
|
||
changelogSectionImproved: "Mejoras",
|
||
changelogSectionFixed: "Correcciones",
|
||
changelogSectionChanged: "Cambios",
|
||
changelogSectionRemoved: "Eliminado",
|
||
shortcutUppercaseSelection: "Convertir selección a mayúsculas",
|
||
shortcutLowercaseSelection: "Convertir selección a minúsculas",
|
||
shortcutExPasteSqlInCondition: "ExPaste: pegar como condición IN",
|
||
dateTimeSection: "Fecha y hora",
|
||
globalDateTimeDisplayFormat: "Formato de visualización global",
|
||
globalDateTimeDisplayFormatDescription: "Se aplica a todos los campos de fecha y hora que no tienen un formato de columna configurado individualmente en las bases de datos.",
|
||
globalDateTimeExportFormat: "Formato de exportación global",
|
||
globalDateTimeExportFormatDescription: "Formatea uniformemente los campos de fecha y hora al exportar a CSV, Excel, JSON, Markdown y texto.",
|
||
globalDateTimeImportFormat: "Formato de importación global",
|
||
globalDateTimeImportFormatDescription: "Analiza las fechas y horas en los archivos importados según este formato; si se deja vacío, se reconocen automáticamente los formatos comunes.",
|
||
dateTimeFormatRaw: "Mantener el valor original de la base de datos",
|
||
dateTimeFormatAuto: "Reconocimiento automático",
|
||
dateTimeFormatSearchPlaceholder: "Seleccionar o ingresar formato",
|
||
dateTimeFormatEmpty: "Ingresar formato de fecha y hora personalizado",
|
||
routineSourceOpenMode: "Modo de apertura de funciones/procedimientos/vistas",
|
||
routineSourceOpenModeQueryTab: "Pestaña de datos",
|
||
routineSourceOpenModeQueryTabDescription: "Abrir el código fuente en una nueva pestaña de datos, de la misma manera que al ejecutar consultas SQL.",
|
||
routineSourceOpenModeDialog: "Ventana emergente",
|
||
routineSourceOpenModeDialogDescription: "Abrir el código fuente en una ventana emergente para una visualización y edición rápidas.",
|
||
syncSnippetPassphrase: "Contraseña de cifrado del fragmento",
|
||
syncSnippetPassphraseDescription: "Cifra la instantánea completa de GitHub/Gitee. No se guarda y es independiente de la contraseña para las credenciales sincronizadas.",
|
||
syncSnippetIncludeSecrets: "Incluir credenciales cifradas al subir",
|
||
syncSnippetRestoreSecrets: "Restaurar credenciales cifradas al descargar",
|
||
syncSnippetMigrateLegacy: "Migrar fragmento heredado",
|
||
syncSnippetMigrateLegacyRequired: "Este fragmento heredado de texto sin cifrar debe migrarse mediante la acción Migrar fragmento heredado.",
|
||
syncSnippetMigrateLegacyConfirm: "DBX creará primero un reemplazo cifrado y después eliminará permanentemente el fragmento heredado de texto sin cifrar {id}. Esta acción no se puede deshacer. ¿Continuar?",
|
||
syncSnippetMigrateLegacySuccess: "Se creó el fragmento cifrado {id} y se eliminó el fragmento heredado de texto sin cifrar.",
|
||
syncSnippetMigrateLegacyCreated: "Se creó el fragmento cifrado {id}.",
|
||
syncSnippetMigrateLegacyCleanupRequired: "Se creó el fragmento cifrado, pero no se pudo eliminar el fragmento heredado {id}. Elimínelo manualmente y rote las credenciales que podrían haberse expuesto.",
|
||
syncSnippetRetryLegacyCleanup: "Reintentar limpieza heredada",
|
||
syncSnippetLegacyCleanupSuccess: "Se eliminó el fragmento heredado de texto sin formato {id}.",
|
||
},
|
||
driverStore: {
|
||
jreDirRemoveFailed: "No se pudo eliminar el directorio JRE antiguo: {path} (error original: {error})",
|
||
jreDirRemoveFailedWindows:
|
||
"No se pudo eliminar el directorio JRE antiguo: {path}\nCausas posibles:\n - un proceso dbx Agent / java sigue usando el directorio\n - el antivirus lo está analizando\nCierre cualquier proceso que pueda estar usando el directorio, o reinicie dbx e inténtelo de nuevo.\n(error original: {error})",
|
||
jreInUseByDrivers: "El JRE {jre} está en uso por los controladores: {drivers}. Desinstálelos primero.",
|
||
offlinePackageRegistryMissing: "No se encontró agent-registry.json en el ZIP; no es un paquete de controladores offline válido.",
|
||
progressJreExtract: "Extrayendo JRE...",
|
||
progressDownloadJre: "Descargando JRE",
|
||
progressDownloadDriver: "Descargando driver",
|
||
progressDownloadJdbcPlugin: "Descargando plugin JDBC",
|
||
progressJdbcPluginExtract: "Instalando plugin JDBC...",
|
||
usageTitle: "Uso de almacenamiento",
|
||
usageTotal: "Total {size}",
|
||
usageTotalLabel: "Total",
|
||
calculating: "Calculando...",
|
||
usageManagedJre: "JRE administrado",
|
||
usageAgentDrivers: "Agentes de driver integrados",
|
||
usageDownloadCache: "Caché de descargas",
|
||
usageJdbcPlugin: "Plugin JDBC",
|
||
usageJdbcDriverJars: "JARs de driver JDBC",
|
||
clearDownloadCache: "Limpiar caché",
|
||
downloadCacheClearSuccess: "Caché de descargas limpiada",
|
||
downloadCacheClearFailed: "Error al limpiar la caché de descargas: {error}",
|
||
driverCategoryAll: "All Drivers",
|
||
driverCategoryLabel: "Category",
|
||
offlineDownloadHint: "Para entornos sin conexión a internet, descarga los paquetes de drivers offline en una máquina con conexión, luego impórtalos aquí.",
|
||
offlineDownloadLink: "Descargas de drivers offline",
|
||
searchDrivers: "Buscar nombre de driver, tipo, versión...",
|
||
searchJdbcDrivers: "Buscar nombre o ruta del driver JDBC...",
|
||
jdbcMavenCoordinatePlaceholder: "Coordenada Maven, ej. org.postgresql:postgresql:42.7.7",
|
||
jdbcMavenInstall: "Instalar desde Maven",
|
||
jdbcMavenInstallSuccess: "Driver JDBC Maven instalado",
|
||
jdbcSourceMaven: "Maven",
|
||
jdbcSourceManual: "Manual",
|
||
noMatchingDrivers: "Sin coincidencias.",
|
||
javaRuntimeSaved: "Ajustes de Java guardados",
|
||
javaRuntimeSaveFailed: "Error al guardar los ajustes de Java: {error}",
|
||
chooseJavaExecutable: "Seleccionar ejecutable Java",
|
||
driverInstallSuccess: "Driver {label} instalado",
|
||
driverInstallFailed: "Error al instalar el driver {label}: {error}",
|
||
driverUpdateBlocked: "Cierra estas conexiones de base de datos antes de actualizar drivers: {labels}",
|
||
upgradeAllSuccess: "{count} driver(s) actualizados",
|
||
upgradeAllPartial: "{count} driver(s) actualizados. Omitidos: {failed}",
|
||
upgradeAllFailed: "Error al actualizar en lote: {error}",
|
||
driverUninstallSuccess: "Driver {label} desinstalado",
|
||
driverUninstallFailed: "Error al desinstalar el driver {label}: {error}",
|
||
chooseOfflineDriverPackage: "Seleccionar paquete offline de drivers",
|
||
offlineImportSuccess: "Importación offline completada. Se instalaron {count} driver(s).",
|
||
offlineImportFailed: "Error en la importación offline: {error}",
|
||
driverImportSuccess: "Driver {label} importado",
|
||
driverImportFailed: "Error al importar el driver {label}: {error}",
|
||
chooseDriverJar: "Seleccionar archivo del driver",
|
||
jreReinstallSuccess: "JRE {jre} reinstalado",
|
||
jreReinstallFailed: "Error al reinstalar JRE {jre}: {error}",
|
||
jreUninstallSuccess: "JRE {jre} desinstalado",
|
||
chooseJdbcPluginZip: "Seleccionar zip del plugin JDBC",
|
||
agentDrivers: "Drivers integrados",
|
||
jdbcDrivers: "Drivers JDBC",
|
||
importing: "Importando...",
|
||
importOfflinePackage: "Importar paquete offline",
|
||
refresh: "Actualizar",
|
||
javaRuntime: "Runtime Java",
|
||
javaRuntimeManaged: "JRE administrado por DBX",
|
||
javaRuntimeSystem: "java del sistema",
|
||
javaRuntimeCustom: "Ruta personalizada",
|
||
saving: "Guardando...",
|
||
customJavaPathPlaceholder: "/ruta/a/java o /ruta/a/jdk",
|
||
choose: "Seleccionar",
|
||
systemJavaHint: "Usa java del PATH actual.",
|
||
jreRuntimeTitle: "Runtime JRE {jre}",
|
||
notInstalled: "No instalado",
|
||
reinstalling: "Reinstalando",
|
||
installing: "Instalando",
|
||
install: "Instalar",
|
||
reinstall: "Reinstalar",
|
||
uninstall: "Desinstalar",
|
||
jreRuntime: "Runtime JRE",
|
||
jreRuntimeAutoDownloadHint: "Se descarga automáticamente al instalar un driver por primera vez",
|
||
driversUpdatable: "{count} driver(s) pueden actualizarse",
|
||
updatesAvailableTitle: "Actualizaciones disponibles",
|
||
updatesAvailableDescription: "Hay nuevas versiones disponibles para los siguientes controladores. Actualice para obtener las últimas funciones y correcciones.",
|
||
allDriversTitle: "Todos los controladores",
|
||
upgradingProgress: "Actualizando ({current}/{total})",
|
||
upgradeAll: "Actualizar todo",
|
||
queued: "En cola",
|
||
importLocalJar: "Importar archivo de driver local",
|
||
updating: "Actualizando",
|
||
update: "Actualizar",
|
||
localInstall: "Instalación local",
|
||
runtimeDrivers: "Runtime",
|
||
storageTab: "Almacenamiento",
|
||
runtimeTitle: "Runtime de drivers",
|
||
runtimeHint: "Las métricas de runtime se recopilan solo mientras este panel está abierto.",
|
||
runtimeRunning: "En ejecución",
|
||
runtimeMemory: "Memoria",
|
||
runtimeHealth: "Salud",
|
||
runtimeHealth_healthy: "Correcto",
|
||
runtimeHealth_warning: "Advertencia",
|
||
runtimeHealth_error: "Error",
|
||
runtimeLastError: "Último error",
|
||
runtimeEmpty: "Aún no hay runtimes de drivers. Abre una conexión con driver Agent para iniciar uno.",
|
||
runtimeKindAgent: "Agent",
|
||
runtimeKindPlugin: "Plugin",
|
||
runtimeSourceDaemon: "Daemon",
|
||
runtimeSourceConnection: "Conexión",
|
||
runtimeStatus_running: "En ejecución",
|
||
runtimeStatus_stopped: "Detenido",
|
||
runtimeStatus_error: "Error",
|
||
runtimeStatus_unknown: "Desconocido",
|
||
runtimePid: "PID",
|
||
runtimeUptime: "Tiempo activo",
|
||
runtimeActions: "Acciones",
|
||
runtimeStop: "Detener",
|
||
runtimeRestart: "Reiniciar",
|
||
runtimeControlConnectionOwned: "Cierra la conexión de base de datos para detener este runtime.",
|
||
runtimeStopSuccess: "Runtime de {label} detenido",
|
||
runtimeStopFailed: "Error al detener {label}: {error}",
|
||
runtimeRestartSuccess: "Runtime de {label} reiniciado",
|
||
runtimeRestartFailed: "Error al reiniciar {label}: {error}",
|
||
driverStoreDir: "Ruta de almacenamiento de controladores",
|
||
driverStoreDirDescription: "Configura ubicaciones separadas para el plugin JDBC y los datos de Agent/JRE. La aplicación se reiniciará automáticamente después de la migración.",
|
||
pluginStoreDir: "Directorio del plugin JDBC",
|
||
pluginStoreDirDescription: "Almacena el plugin JDBC, Maven resolver y los jars de controladores JDBC.",
|
||
agentStoreDir: "Directorio Agent / JRE",
|
||
agentStoreDirDescription: "Almacena paquetes de controladores Agent, JRE gestionados y caché de runtime.",
|
||
driverStoreDirDefault: "Predeterminado (directorio de instalación)",
|
||
driverStoreDirChange: "Cambiar",
|
||
driverStoreDirReset: "Restablecer",
|
||
driverStoreDirMigrating: "Migrando {target}…",
|
||
driverStoreDirConfirm: "Cambiar {target} migrará los datos relacionados a la nueva ubicación. Las conexiones relacionadas pueden desconectarse durante la migración. La aplicación se reiniciará automáticamente después. ¿Continuar?",
|
||
driverStoreDirMigrationFailed: "Error en la migración de controladores: {error}",
|
||
driverStoreDirDialogTitle: "Seleccionar {target}",
|
||
driverStoreDirSuccess: "{target} cambiado, reiniciando…",
|
||
},
|
||
databaseExport: {
|
||
title: "Exportar base de datos",
|
||
options: "Opciones",
|
||
includeStructure: "Estructura de tablas (DDL)",
|
||
includeCreateDatabase: "Incluir creación de base de datos (CREATE DATABASE / USE)",
|
||
dropTableIfExists: "Agregar DROP TABLE IF EXISTS antes del DDL",
|
||
omitAutoIncrement: "Omitir AUTO_INCREMENT (para scripts de instalación nueva)",
|
||
includeData: "Datos de tablas (INSERT)",
|
||
includeObjects: "Vistas / Procedimientos / Funciones / Secuencias",
|
||
databaseSelection: "Bases de datos",
|
||
selectedDatabases: "{selected}/{total} seleccionadas",
|
||
selectAllDatabases: "Seleccionar todo",
|
||
filterDatabases: "Buscar bases de datos...",
|
||
clearDatabases: "Limpiar",
|
||
tableSelection: "Tablas",
|
||
selectedTables: "{selected}/{total} seleccionadas",
|
||
selectAllTables: "Seleccionar todo",
|
||
clearTables: "Limpiar",
|
||
loadingTables: "Cargando tablas...",
|
||
tableLoadError: "Error al cargar tablas: {error}",
|
||
noTables: "No se encontraron tablas",
|
||
export: "Exportar",
|
||
exportAllDatabases: "Exportar todas las bases de datos",
|
||
exporting: "Exportando...",
|
||
preparing: "Preparando exportación (leyendo tablas y metadatos)...",
|
||
preparingObject: "Preparando: {object}",
|
||
selectExportDirectory: "Seleccionar directorio de exportación",
|
||
currentDatabase: "Base de datos {current}/{total}",
|
||
currentTable: "Actual: {table} ({current}/{total})",
|
||
rowsExported: "{current}/{total} objetos procesados, {count} filas exportadas",
|
||
allRowsExported: "Total de filas exportadas: {count}",
|
||
exportSuccess: "Base de datos exportada exitosamente",
|
||
exportAllSuccess: "{count} bases de datos exportadas exitosamente",
|
||
allDatabasesTask: "Todas las bases de datos ({count})",
|
||
exportError: "Error al exportar: {error}",
|
||
exportCancelled: "Exportación cancelada",
|
||
filterTables: "Buscar tablas...",
|
||
runInBackground: "Ejecutar en segundo plano",
|
||
},
|
||
nacos: {
|
||
dashboard: "Panel",
|
||
dashboardTitle: "Panel de operaciones",
|
||
dashboardUpdatedAt: "Actualizado {time}",
|
||
dashboardAutoRefresh: "Actualización automática",
|
||
dashboardOff: "Desactivada",
|
||
dashboardNamespaces: "Espacios de nombres",
|
||
dashboardConfigs: "Configuraciones",
|
||
dashboardServices: "Servicios",
|
||
dashboardInstances: "Instancias",
|
||
dashboardClients: "Clientes",
|
||
dashboardConnections: "{count} conexiones",
|
||
dashboardNodes: "Nodos saludables",
|
||
dashboardCpu: "CPU",
|
||
dashboardMemory: "Memoria",
|
||
dashboardLoad: "Carga {value}",
|
||
dashboardCountsChart: "Descubrimiento de servicios",
|
||
dashboardResourcesChart: "Uso de recursos",
|
||
dashboardClusterNodes: "Nodos del clúster",
|
||
dashboardSite: "Sitio",
|
||
dashboardLastRefresh: "Última actualización",
|
||
dashboardNoNodes: "Los detalles de los nodos no están disponibles",
|
||
dashboardPartial: "{count} fuentes de datos no están disponibles",
|
||
dashboardMemoryUsed: "Heap / memoria usada",
|
||
dashboardMemoryMax: "Máximo {value}",
|
||
dashboardRss: "Memoria RSS",
|
||
dashboardVms: "Memoria virtual",
|
||
dashboardJvmThreads: "Hilos daemon JVM",
|
||
dashboardGcPauses: "Pausas GC",
|
||
dashboardTrafficSection: "Tráfico de solicitudes",
|
||
dashboardRequestRateChart: "Solicitudes HTTP / gRPC por segundo",
|
||
dashboardLatencyChart: "Latencia de solicitudes",
|
||
dashboardHttpQps: "QPS HTTP",
|
||
dashboardGrpcQps: "QPS gRPC",
|
||
dashboardHttpAverage: "Media HTTP",
|
||
dashboardHttpP50: "HTTP P50",
|
||
dashboardHttpP95: "HTTP P95",
|
||
dashboardHttpP99: "HTTP P99",
|
||
dashboardGrpcAverage: "Media gRPC",
|
||
dashboardGrpcP50: "gRPC P50",
|
||
dashboardGrpcP95: "gRPC P95",
|
||
dashboardGrpcP99: "gRPC P99",
|
||
dashboardReliabilitySection: "Fiabilidad",
|
||
dashboardErrorRateChart: "Tasa de errores",
|
||
dashboardExecutorChart: "Ejecutor gRPC",
|
||
dashboardHttpErrors: "Errores HTTP",
|
||
dashboardGrpcErrors: "Errores gRPC",
|
||
dashboardExecutorPool: "Tamaño del pool",
|
||
dashboardExecutorActive: "Activos",
|
||
dashboardExecutorQueue: "En cola",
|
||
dashboardConfigSection: "Centro de configuración",
|
||
dashboardConfigRateChart: "Operaciones de configuración por segundo",
|
||
dashboardConfigStateChart: "Listeners y trabajo pendiente",
|
||
dashboardConfigGets: "Consultas",
|
||
dashboardConfigPublishes: "Publicaciones",
|
||
dashboardLongPolling: "Sondeo largo",
|
||
dashboardListenerClients: "Clientes listener",
|
||
dashboardListenerKeys: "Claves listener",
|
||
dashboardNotifyTasks: "Tareas de notificación",
|
||
dashboardNotifyClientTasks: "Notificaciones a clientes",
|
||
dashboardDumpTasks: "Tareas dump",
|
||
dashboardNamingSection: "Descubrimiento de servicios",
|
||
dashboardNamingStateChart: "Servicios, instancias y clientes",
|
||
dashboardPushRateChart: "Envíos por segundo",
|
||
dashboardPushDetailChart: "Latencia y tareas pendientes de envío",
|
||
dashboardPushAverage: "Latencia media",
|
||
dashboardPushMaximum: "Latencia máxima",
|
||
dashboardPushPending: "Tareas pendientes",
|
||
dashboardSubscribers: "Suscriptores",
|
||
dashboardPushes: "Envíos",
|
||
dashboardFailedPushes: "Envíos fallidos",
|
||
dashboardEmptyPushes: "Envíos vacíos",
|
||
configs: "Configuraciones",
|
||
services: "Servicios",
|
||
raw: "Raw",
|
||
namespace: "Namespace",
|
||
createNamespace: "Crear Namespace",
|
||
editNamespace: "Editar Namespace",
|
||
creatingNamespace: "Creando...",
|
||
updatingNamespace: "Actualizando...",
|
||
namespaceCreated: 'Namespace "{name}" creado',
|
||
namespaceUpdated: 'Namespace "{name}" actualizado',
|
||
namespaceId: "ID del Namespace",
|
||
namespaceIdPlaceholder: "Déjalo vacío para que Nacos lo genere",
|
||
namespaceName: "Nombre del Namespace",
|
||
namespaceNamePlaceholder: "Ingresa un nombre de namespace",
|
||
namespaceDesc: "Descripción",
|
||
namespaceDescPlaceholder: "Por defecto, el nombre del namespace",
|
||
dataId: "Data ID",
|
||
group: "Grupo",
|
||
format: "Formato",
|
||
content: "Contenido",
|
||
tags: "Etiquetas",
|
||
application: "Aplicación",
|
||
description: "Descripción",
|
||
advanced: "Avanzado",
|
||
collapse: "Contraer",
|
||
configIdentity: "Identidad de configuración",
|
||
newConfigDraft: "Nueva configuración",
|
||
draft: "Borrador",
|
||
unsaved: "Sin guardar",
|
||
published: "Publicada",
|
||
readOnlyState: "Solo lectura",
|
||
load: "Cargar",
|
||
save: "Guardar",
|
||
saveAs: "Guardar como",
|
||
saving: "Guardando...",
|
||
saved: "Configuración guardada",
|
||
createdAndLoaded: "{dataId} creado y cargado",
|
||
savedAndLoaded: "{dataId} guardado y actualizado",
|
||
deleted: "Configuración eliminada",
|
||
delete: "Eliminar",
|
||
copy: "Copiar",
|
||
copied: "Copiado",
|
||
copyVerifyFailed: "La verificación del portapapeles falló después de escribir",
|
||
export: "Exportar",
|
||
exported: "Exportado",
|
||
exportedTo: "Exportado a {path}",
|
||
exportFailed: "Error al exportar: {message}",
|
||
contentSearch: "Búsqueda de texto completo",
|
||
contentSearchTitle: "Búsqueda de texto completo en configuraciones Nacos",
|
||
contentSearchDescription: "Realiza una búsqueda literal con distinción de mayúsculas en el contenido publicado actual. No se buscan versiones históricas.",
|
||
contentSearchPlaceholder: "URL de base de datos, cuenta o fragmento de configuración",
|
||
search: "Buscar",
|
||
cancel: "Cancelar",
|
||
currentNamespace: "Namespace actual",
|
||
allNamespaces: "Todos los namespaces de esta conexión",
|
||
allNamespacesSearchWarning: "Buscar en todos los namespaces puede recorrer muchas configuraciones. Puede ser lento en Nacos 2.x y r-nacos y aumentar la carga del servidor.",
|
||
scannedCount: "{count} analizadas",
|
||
matchCount: "{count} coincidencias",
|
||
incompleteResult: "Los resultados pueden estar incompletos",
|
||
lineNumber: "Línea {line}",
|
||
noContentMatches: "Ninguna configuración contiene este contenido",
|
||
contentSearchEmptyHint: "Introduzca una palabra clave. Las palabras clave, el contenido y los fragmentos no se guardan en disco ni en los registros.",
|
||
searchResults: "Resultados de búsqueda",
|
||
searchResultsRetainedHint: "Abra un resultado en el área de contenido. Este conjunto seguirá disponible desde Resultados de búsqueda en la barra superior.",
|
||
openedSearchResult: "Abierta",
|
||
exportSearchResults: "Exportar resultados",
|
||
clearSearchResults: "Borrar resultados",
|
||
searchResultsExported: "Resultados de búsqueda exportados",
|
||
searchResultsExportedTo: "Resultados de búsqueda exportados a {path}",
|
||
batchExport: "Exportación por lotes",
|
||
batchImport: "Importación por lotes",
|
||
copyToNamespace: "Sincronizar configuraciones",
|
||
selectedCount: "{count} seleccionadas",
|
||
retryConnectionInfo: "Reintentar detección de la conexión",
|
||
resizeColumn: "Arrastre para cambiar el ancho de la columna",
|
||
selectCurrentPage: "Seleccionar página actual",
|
||
selectConfigForBatch: "Seleccionar configuración {dataId}",
|
||
batchExportTitle: "Exportar configuraciones Nacos por lotes",
|
||
batchExportDescription: "Crea un ZIP compatible con la consola Nacos. Contiene configuraciones descifradas en texto plano y debe almacenarse de forma segura.",
|
||
batchImportTitle: "Importar configuraciones Nacos por lotes",
|
||
batchImportDescription: "Analiza el archivo de forma segura y muestra los conflictos antes de publicar cada elemento en el namespace actual.",
|
||
batchCopyTitle: "Sincronizar configuraciones con otro namespace",
|
||
batchCopyDescription: "La sincronización es una copia unidireccional y no elimina ni modifica el origen. Los conflictos del destino siguen la política seleccionada.",
|
||
exportScope: "Ámbito de configuraciones",
|
||
selectedConfigs: "Configuraciones seleccionadas ({count})",
|
||
filteredConfigs: "Todas las del filtro actual (estimadas: {count})",
|
||
namespaceAllConfigs: "Todas las configuraciones de este namespace",
|
||
importArchive: "Archivo ZIP de Nacos",
|
||
noArchiveSelected: "No se seleccionó ningún ZIP",
|
||
chooseZip: "Elegir ZIP",
|
||
importSensitiveWarning: "Un ZIP compatible puede contener contraseñas, claves y otros secretos en texto plano. Importe solo archivos de confianza.",
|
||
targetConnection: "Conexión de destino",
|
||
chooseTargetConnection: "Seleccione una conexión Nacos de destino",
|
||
noTargetConnections: "No hay conexiones Nacos con escritura disponibles. Añada una o desactive el modo de solo lectura del destino.",
|
||
targetNamespace: "Namespace de destino",
|
||
chooseTargetNamespace: "Seleccione otro namespace",
|
||
copyKeepsSource: "La sincronización usa una copia unidireccional. Las configuraciones del namespace de origen no cambian.",
|
||
conflictPolicy: "Política de conflictos",
|
||
policyABORT: "Abortar al encontrar conflictos",
|
||
policyABORTHint: "No escribir nada si la vista previa detecta un conflicto",
|
||
policySKIP: "Omitir conflictos",
|
||
policySKIPHint: "Crear solo configuraciones que no existan en el destino",
|
||
policyOVERWRITE: "Sobrescribir destino",
|
||
policyOVERWRITEHint: "Reemplazar configuraciones de destino con la misma clave",
|
||
overwriteWarning: "Sobrescribir modifica configuraciones publicadas del destino y requiere una confirmación adicional.",
|
||
overwriteConfirm: "¿Sobrescribir todas las configuraciones en conflicto del namespace de destino? No se puede revertir automáticamente.",
|
||
preview: "Vista previa",
|
||
apply: "Aplicar",
|
||
exportZip: "Exportar ZIP",
|
||
previewTotal: "{count} en total",
|
||
previewCreated: "{count} nuevas",
|
||
previewConflicts: "{count} conflictos",
|
||
previewInvalid: "{count} no válidas",
|
||
previewExpired: "La vista previa ha caducado. Vuelva a generarla.",
|
||
batchFinished: "Sincronización completada: {written} escritas",
|
||
batchAborted: "Sincronización no ejecutada: un conflicto impidió todas las escrituras",
|
||
batchPartial: "La operación por lotes se completó parcialmente; revise los elementos fallidos",
|
||
batchCancelled: "Cancelada",
|
||
batchCancelledSummary: "Sincronización cancelada: {processed}/{total} procesadas",
|
||
batchFailedSummary: "Sincronización parcial: {written} escritas, {failed} fallidas",
|
||
batchPartialSummary: "Sincronización incompleta: {processed}/{total} procesadas",
|
||
batchFinishedWithSkipped: "Sincronización completada: {written} escritas, {skipped} omitidas",
|
||
batchStatusCreate: "Se creará",
|
||
batchStatusConflict: "Conflicto",
|
||
batchStatusInvalid: "No válida",
|
||
batchStatusCreated: "Creada",
|
||
batchStatusOverwritten: "Sobrescrita",
|
||
batchStatusSkipped: "Omitida",
|
||
batchStatusFailed: "Fallida",
|
||
batchStatusAborted: "No ejecutada",
|
||
batchStatusExported: "Exportada",
|
||
batchStatusUnknown: "{status}",
|
||
reportWritten: "{count} escritas",
|
||
reportCreated: "{count} creadas",
|
||
reportOverwritten: "{count} sobrescritas",
|
||
reportSkipped: "{count} omitidas",
|
||
reportFailed: "{count} fallidas",
|
||
reportItems: "Detalles de configuraciones ({count})",
|
||
history: "History",
|
||
configHistory: "Config history",
|
||
historyUnavailable: "El historial de configuración no está disponible para esta conexión. Configure la URL de la consola r-nacos y vuelva a conectarse para habilitarlo.",
|
||
historyDisabled: "El historial de configuración está deshabilitado para esta conexión.",
|
||
historyConsoleUrlMissing: "El historial de configuración necesita una URL de consola r-nacos.",
|
||
historyConsoleCredentialsMissing: "El historial de configuración necesita credenciales de consola r-nacos.",
|
||
rnacosConsoleAuthTitle: "Verificación de consola r-nacos",
|
||
rnacosConsoleAuthDescription: "Introduzca el código de verificación de la consola r-nacos para leer tipos, descripciones e historial de configuraciones.",
|
||
rnacosCaptchaLabel: "Código de verificación",
|
||
rnacosCaptchaPlaceholder: "Introduzca el código mostrado arriba",
|
||
rnacosCaptchaRequired: "Se requiere un código de verificación.",
|
||
rnacosCaptchaUnavailable: "r-nacos no devolvió una imagen de verificación.",
|
||
rnacosRefreshCaptcha: "Actualizar código",
|
||
rnacosConsoleAuthSubmit: "Verificar y continuar",
|
||
historyDetail: "History detail",
|
||
historyCompareTitle: "History Version Compare",
|
||
currentPublishedContent: "Current published content:",
|
||
historyVersionContent: "History version content:",
|
||
updatedAt: "Updated at",
|
||
operationType: "Operation",
|
||
operator: "Operator",
|
||
view: "View",
|
||
compare: "Compare",
|
||
rollback: "Rollback",
|
||
loadingHistory: "Loading history...",
|
||
noHistory: "No history versions",
|
||
noHistoryHint: "Refresh if this config was just published. Some Nacos versions may not expose history APIs.",
|
||
historyCreate: "Create",
|
||
historyUpdate: "Update",
|
||
historyDelete: "Delete",
|
||
historyRollback: "Rollback",
|
||
confirmRollbackTitle: "Rollback Nacos config",
|
||
confirmRollbackMessage: "This will roll the current config back to the selected history version.",
|
||
rollbackSuccess: "Config rolled back",
|
||
publish: "Publicar",
|
||
dataIdRequired: "Data ID es obligatorio",
|
||
allGroups: "Todos los grupos",
|
||
noConfigs: "Sin configuraciones",
|
||
selectConfig: "Selecciona o crea una configuración",
|
||
noServices: "Sin servicios",
|
||
selectService: "Selecciona un servicio",
|
||
service: "Servicio",
|
||
instances: "Instancias",
|
||
instanceCount: "{count} instancias",
|
||
refresh: "Actualizar",
|
||
address: "Dirección",
|
||
cluster: "Clúster",
|
||
weight: "Peso",
|
||
state: "Estado",
|
||
actions: "Acciones",
|
||
query: "Consulta",
|
||
body: "Cuerpo",
|
||
response: "Respuesta",
|
||
template: "Plantilla",
|
||
configDiffTitle: "Comparar contenido de configuración",
|
||
inlineCompare: "Comparación en línea",
|
||
currentVersionContent: "Versión oficial actual:",
|
||
publishVersionContent: "Contenido de esta publicación:",
|
||
confirmSaveTitle: "Revisar cambios de configuración Nacos",
|
||
confirmSaveMessage: "¿Guardar este cambio? +{added} / -{removed} líneas.",
|
||
confirmDeleteTitle: "Eliminar configuración Nacos",
|
||
confirmDeleteMessage: "Esto elimina la configuración seleccionada de Nacos.",
|
||
confirmInstanceTitle: "Actualizar instancia Nacos",
|
||
confirmInstanceMessage: "Confirma el estado objetivo de la instancia.",
|
||
confirmRawTitle: "Enviar solicitud Raw API modificadora",
|
||
confirmRawMessage: "Esta solicitud Raw API puede modificar el estado de Nacos.",
|
||
rawTemplate: {
|
||
serverState: "Estado del servidor",
|
||
namespaceList: "Lista de namespaces",
|
||
configDetail: "Detalle de configuración",
|
||
serviceList: "Lista de servicios",
|
||
instanceList: "Lista de instancias",
|
||
},
|
||
healthy: "Saludable",
|
||
unhealthy: "No saludable",
|
||
enabled: "Habilitado",
|
||
offline: "Offline",
|
||
ephemeral: "Efímera",
|
||
persistent: "Persistente",
|
||
enable: "Habilitar",
|
||
disable: "Deshabilitar",
|
||
markHealthy: "Marcar saludable",
|
||
markUnhealthy: "Marcar no saludable",
|
||
send: "Enviar",
|
||
total: "{count} en total",
|
||
prev: "Anterior",
|
||
next: "Siguiente",
|
||
test: "Probar",
|
||
readOnly: "Solo lectura",
|
||
},
|
||
gridfsBrowser: {
|
||
bucketCount: "Cantidad de buckets",
|
||
fileCount: "Archivos",
|
||
name: "Nombre",
|
||
totalSize: "Tamaño",
|
||
chunkSize: "Tamaño de fragmento",
|
||
uploadDate: "Fecha de carga",
|
||
contentType: "Tipo de contenido",
|
||
metadata: "Metadatos",
|
||
selectBucket: "Selecciona un bucket de GridFS para ver o abrir.",
|
||
selectFile: "Selecciona un archivo de GridFS para ver o administrar.",
|
||
emptyBuckets: "Actualmente no hay buckets de GridFS, puedes crear uno nuevo.",
|
||
emptyFiles: "El bucket actual aún no tiene archivos, puedes subir uno primero.",
|
||
createBucket: "Crear bucket",
|
||
openBucket: "Abrir bucket",
|
||
deleteBucket: "Eliminar bucket",
|
||
createTitle: "Crear bucket de GridFS",
|
||
deleteTitle: "Eliminar bucket de GridFS",
|
||
deleteMessage: "¿Estás seguro de eliminar el bucket de GridFS seleccionado y todos los archivos que contiene?",
|
||
bucketName: "Nombre del bucket",
|
||
bucketNamePlaceholder: "example_bucket",
|
||
bucketCreated: "Bucket {bucket} creado.",
|
||
bucketDeleted: "Bucket {bucket} eliminado.",
|
||
uploadFile: "Subir archivo",
|
||
downloadFile: "Descargar archivo",
|
||
downloadSelected: "Descargar seleccionados",
|
||
deleteFile: "Eliminar archivo",
|
||
selectedCount: "{count} seleccionados",
|
||
deleteFileTitle: "Eliminar archivo de GridFS",
|
||
deleteFileMessage: "¿Estás seguro de eliminar el archivo seleccionado del bucket de GridFS actual?",
|
||
fileUploaded: "Archivo {fileName} subido.",
|
||
fileDeleted: "Archivo {fileName} eliminado.",
|
||
},
|
||
extension: {
|
||
installTitle: "Instalar extensión",
|
||
manageTitle: "Administrar extensión",
|
||
name: "Nombre de la extensión",
|
||
namePlaceholder: "Por ejemplo: pg_stat_statements",
|
||
install: "Instalar",
|
||
drop: "Eliminar",
|
||
available: "Extensiones disponibles",
|
||
installed: "Extensiones instaladas",
|
||
noAvailable: "Todas las extensiones disponibles ya están instaladas.",
|
||
noInstalled: "Aún no hay extensiones instaladas.",
|
||
},
|
||
sqlFileTree: {
|
||
title: "Archivos SQL",
|
||
openFolder: "Abrir carpeta",
|
||
closePanel: "Cerrar",
|
||
loading: "Cargando...",
|
||
noFolder: "Sin carpeta abierta",
|
||
noSqlFiles: "No se encontraron archivos SQL",
|
||
folderAlreadyOpen: "Esta carpeta ya está abierta",
|
||
removeFolder: "Eliminar carpeta",
|
||
openFailed: "Error al abrir la carpeta: {message}",
|
||
loadFailed: "Error al cargar archivos SQL: {message}",
|
||
desktopOnly: "Esta función solo está disponible en la versión de escritorio",
|
||
refreshFolder: "Actualizar carpeta",
|
||
refreshAll: "Actualizar todo",
|
||
refreshed: "Actualizado",
|
||
revealInFileManager: "Mostrar en el explorador de archivos",
|
||
revealFailed: "Error al abrir el explorador de archivos: {message}",
|
||
copyPath: "Copiar ruta",
|
||
pathCopied: "Ruta copiada",
|
||
copyFailed: "Error al copiar la ruta",
|
||
openFile: "Abrir",
|
||
executeSqlFile: "Ejecutar archivo SQL",
|
||
expandAll: "Expandir todo",
|
||
collapseAll: "Contraer todo",
|
||
},
|
||
mqTopics: {
|
||
title: "Administración de temas",
|
||
searchPlaceholder: "Buscar temas",
|
||
includeNonPersistent: "Incluir temas no persistentes",
|
||
refresh: "Actualizar",
|
||
refreshing: "Actualizando...",
|
||
createTopic: "Crear tema",
|
||
selectTenantNamespace: "Seleccione primero el tenant y el namespace",
|
||
loading: "Cargando...",
|
||
noTopics: "No hay temas en este namespace",
|
||
noMatches: "No se encontraron temas coincidentes",
|
||
name: "Nombre",
|
||
type: "Tipo",
|
||
partitions: "Particiones",
|
||
actions: "Acciones",
|
||
nonPersistent: "No persistente",
|
||
partitionedTopic: "Tema particionado",
|
||
normalTopic: "Tema normal",
|
||
partitionCount: "{count} particiones",
|
||
partitionsUnknown: "Número de particiones desconocido",
|
||
adjustPartitions: "Ajustar particiones",
|
||
delete: "Eliminar",
|
||
tenantNamespace: "Tenant / Namespace",
|
||
topicName: "Nombre del tema",
|
||
topicNamePlaceholder: "Ejemplo: my-topic",
|
||
persistentRecommended: "Tema persistente (recomendado)",
|
||
persistentHint: "Los temas persistentes guardan los mensajes en disco, los no persistentes solo en memoria.",
|
||
enablePartitions: "Habilitar particiones",
|
||
partitionQuantity: "Cantidad de particiones",
|
||
partitionHint: "Las particiones pueden mejorar el rendimiento concurrente, pero aumentan el consumo de recursos.",
|
||
cancel: "Cancelar",
|
||
create: "Crear",
|
||
updatePartitionsTitle: "Ajustar número de particiones: {name}",
|
||
currentPartitions: "Particiones actuales",
|
||
newPartitions: "Nuevo número de particiones",
|
||
partitionMinHint: "El número de particiones solo puede aumentar, no disminuir. Mínimo: {min}",
|
||
update: "Actualizar",
|
||
readOnly: "La conexión actual es de solo lectura, no se pueden realizar operaciones de escritura.",
|
||
topicNameRequired: "El nombre del topic no puede estar vacío",
|
||
currentPartitionsUnknown: "Se desconoce el número actual de particiones, no se puede ajustar de forma segura.",
|
||
partitionMustIncrease: "El nuevo número de particiones debe ser mayor que el actual.",
|
||
confirmDelete: '¿Está seguro de que desea eliminar el tema "{name}"? Esta operación no se puede deshacer.',
|
||
systemTopic: "Tema del sistema",
|
||
includeSystemTopics: "Incluir Topics del sistema",
|
||
noUserTopics: "No hay Topics de negocio. Marque el filtro de tipo para ver temas internos/reintentos/muertos.",
|
||
typeFilter: "Filtro de tipo",
|
||
messageType: "Tipo de mensaje",
|
||
messageTypeHint: "Se escribe en la propiedad message.type de la configuración de Broker Topic después de la creación, consistente con RocketMQ Dashboard.",
|
||
rocketmqType: {
|
||
normal: "Normal",
|
||
delay: "Retraso",
|
||
fifo: "FIFO",
|
||
transaction: "Transacción",
|
||
unspecified: "No especificado",
|
||
retry: "Reintento",
|
||
dlq: "Mensaje muerto",
|
||
system: "Sistema",
|
||
},
|
||
queues: "Colas",
|
||
tabQueues: "Colas",
|
||
tabExchanges: "Exchanges",
|
||
queueCount: "{count} colas",
|
||
clusterName: "Clúster",
|
||
brokerName: "Broker",
|
||
allBrokers: "Todos los Brokers Master",
|
||
readQueues: "Número de colas de lectura",
|
||
writeQueues: "Número de colas de escritura",
|
||
perm: "Permiso",
|
||
permReadWrite: "Lectura/Escritura (6)",
|
||
permRead: "Solo lectura (4)",
|
||
permWrite: "Solo escritura (2)",
|
||
actionStatus: "Estado",
|
||
actionRoute: "Ruta",
|
||
actionConsumers: "Consumidores",
|
||
actionConfig: "Configuración",
|
||
actionSend: "Enviar mensaje",
|
||
actionMessageQuery: "Consulta de mensajes",
|
||
actionReset: "Restablecer posición",
|
||
actionSkip: "Saltar acumulación",
|
||
topicStatusTitle: "Estado del Topic: {name}",
|
||
topicRouteTitle: "Ruta del Topic: {name}",
|
||
topicConsumersTitle: "Consumidores: {name}",
|
||
topicConfigTitle: "Configuración del Topic: {name}",
|
||
topicConfigHint: "Consistente con RocketMQ Dashboard, solo permite modificar el número de colas de lectura/escritura y permisos. El tipo de mensaje se establece al crear el Topic.",
|
||
topicResetTitle: "Restablecer posición: {name}",
|
||
topicSkipTitle: "Saltar acumulación: {name}",
|
||
confirmSkip: "¿Está seguro de restablecer todos los grupos de consumidores del Topic «{name}» a la posición más reciente?",
|
||
skipHint: "Restablece la posición de todos los grupos de consumidores suscritos bajo este Topic a la más reciente.",
|
||
saveConfig: "Guardar configuración",
|
||
resetPosition: "Restablecer posición",
|
||
positionEarliest: "Más antiguo",
|
||
positionLatest: "Más reciente",
|
||
positionTimestamp: "Por tiempo",
|
||
timestamp: "Tiempo",
|
||
invalidTimestamp: "Ingrese una hora válida",
|
||
resetTimePreview: "Hora actual: {time}",
|
||
noConsumerGroups: "No hay grupos de consumidores",
|
||
noConsumers: "Este Topic no tiene grupos de consumidores",
|
||
manageConsumers: "Administrar",
|
||
routeQueues: "Datos de cola",
|
||
routeBrokers: "Datos de Broker",
|
||
brokerAddrs: "Direcciones de Broker",
|
||
noRouteData: "Sin datos de ruta",
|
||
noQueueStats: "Sin estadísticas de cola",
|
||
noConfig: "No se devolvió configuración del Topic",
|
||
queueId: "Cola",
|
||
beginOffset: "Offset mínimo",
|
||
endOffset: "Offset máximo",
|
||
messageCount: "Número de mensajes",
|
||
},
|
||
mqAdmin: {
|
||
viewTenant: "Ver tenant",
|
||
viewNamespace: "Ver namespace",
|
||
viewTopic: "Ver tema",
|
||
readOnly: "Solo lectura",
|
||
allNamespaces: "Todos los namespaces",
|
||
newNamespace: "Nuevo namespace",
|
||
namespace: "Namespace",
|
||
selectNamespaceToCreate: "Selecciona un namespace específico para crear",
|
||
selectNamespaceToWrite: "Selecciona un namespace específico para realizar esta acción",
|
||
tabTenants: "Tenants",
|
||
tabNamespaces: "Namespaces",
|
||
tabTopics: "Temas",
|
||
tabSubscriptions: "Suscripciones",
|
||
tabMonitoring: "Monitoreo",
|
||
tabClients: "Clientes",
|
||
tabMessages: "Mensajes",
|
||
tabBroker: "Broker",
|
||
tabPolicies: "Políticas",
|
||
tabPermissions: "Permisos",
|
||
tabRawApi: "Raw API",
|
||
tabCluster: "Clúster",
|
||
tabConsumers: "Consumidores",
|
||
tabProducers: "Productores",
|
||
tabDlq: "Mensajes muertos",
|
||
tabTrace: "Trazas",
|
||
tabAcl: "ACL",
|
||
},
|
||
mqMessages: {
|
||
title: "Enviar mensaje",
|
||
clear: "Limpiar",
|
||
selectNamespaceOrTopicFirst: "Seleccione primero un namespace o un tema",
|
||
readOnlyCannotSend: "Esta conexión es de solo lectura y no puede enviar mensajes",
|
||
selectTargetTopic: "Seleccione un tema de destino",
|
||
messageContentRequired: "El contenido del mensaje es obligatorio",
|
||
sendSuccess: "Mensaje enviado — partición: {partition}, offset: {offset}",
|
||
targetTopic: "Tema de destino",
|
||
topicLoading: "Cargando...",
|
||
topicSearchPlaceholder: "Escriba o busque temas...",
|
||
refreshTopicList: "Actualizar lista de temas",
|
||
topicOptionWithPartitions: "{label} ({partitions} particiones)",
|
||
noTopicsAvailable: "No hay temas disponibles",
|
||
topicSearchHint: "Busque por palabra clave o pegue un nombre de topic.",
|
||
messageKey: "Clave del mensaje",
|
||
optional: "Opcional",
|
||
messageContent: "Contenido del mensaje",
|
||
formatJson: "Formatear JSON",
|
||
messageHeaders: "Encabezados",
|
||
headersPlaceholder: "clave: valor (una por línea)",
|
||
sending: "Enviando...",
|
||
sendMessage: "Enviar mensaje",
|
||
messageList: "Mensajes",
|
||
loadMessages: "Cargar mensajes",
|
||
loading: "Cargando...",
|
||
peekDefaultHint: "Sin partición, lee todas las particiones desde earliest, hasta {count} mensajes.",
|
||
count: "Cantidad",
|
||
advancedFilter: "Avanzado (partición / offset)",
|
||
partition: "Partición",
|
||
partitionPlaceholderAll: "Vacío = todas",
|
||
offset: "Offset",
|
||
offsetPlaceholderEarliest: "Vacío = earliest",
|
||
messagesLoading: "Cargando mensajes...",
|
||
noMessages: "No hay mensajes",
|
||
selectTopicBeforeLoad: "Seleccione un tema antes de cargar mensajes",
|
||
partitionMustBeNonNegativeInt: "La partición debe ser un entero ≥ 0; déjelo vacío para todas las particiones",
|
||
offsetMustBeNonNegativeInt: "El offset debe ser un entero ≥ 0; déjelo vacío para earliest",
|
||
metaPartition: "partición {partition}",
|
||
metaOffset: "offset {offset}",
|
||
metaKey: "clave {key}",
|
||
jsonBodyPlaceholder: "{'{'}\"key\": \"value\"{'}'}",
|
||
selectTopicPlaceholder: "Seleccione un tema",
|
||
messageTag: "Etiqueta de mensaje (Tag)",
|
||
exchange: "Exchange",
|
||
exchangePlaceholder: "Vacío = exchange por defecto",
|
||
exchangeHint: "Si se indica, el mensaje se publica en este exchange en lugar de ir directamente a la cola.",
|
||
routingKey: "Clave de enrutamiento",
|
||
queryTitle: "Consulta de mensajes",
|
||
queryTabTopic: "Por Topic",
|
||
queryTabKey: "Por Key",
|
||
queryTabMsgId: "Por MsgId",
|
||
queryTopicLabel: "Tema",
|
||
noQueryResults: "No se encontraron resultados que cumplan los criterios",
|
||
tableMessageId: "ID de mensaje",
|
||
tableTag: "Etiqueta",
|
||
tableKey: "Key",
|
||
tableStoreTime: "Hora de almacenamiento",
|
||
tableOperation: "Operación",
|
||
viewDetails: "Ver",
|
||
messageDetails: "Detalles del mensaje",
|
||
search: "Buscar",
|
||
messageQuery: "Consulta de mensajes",
|
||
queryByMsgId: "Por MsgId",
|
||
queryByKey: "Por Key",
|
||
queryByTopic: "Por Topic y tiempo",
|
||
msgId: "ID de mensaje",
|
||
msgIdPlaceholder: "ej. 7F000001...",
|
||
msgIdRequired: "El ID de mensaje no puede estar vacío",
|
||
queryKey: "Key de mensaje",
|
||
queryKeyPlaceholder: "Key de negocio",
|
||
queryKeyRequired: "La Key de mensaje no puede estar vacía",
|
||
beginTime: "Hora de inicio",
|
||
endTime: "Hora de fin",
|
||
maxNum: "Número máximo",
|
||
invalidTimeRange: "Hora de inicio o fin no válida",
|
||
endTimeMustBeAfterBegin: "La hora de fin debe ser posterior a la hora de inicio",
|
||
query: "Consultar",
|
||
querying: "Consultando...",
|
||
messageOverview: "Información básica",
|
||
messageBody: "Cuerpo del mensaje",
|
||
resendMessage: "Reenviar",
|
||
payloadCopied: "Copiado",
|
||
dlqConsumerGroupPlaceholder: "Grupo de consumidores (opcional)",
|
||
},
|
||
mqMonitoring: {
|
||
title: "Monitoreo",
|
||
autoRefresh: "Actualización automática",
|
||
refreshInterval5s: "5s",
|
||
refreshInterval10s: "10s",
|
||
refreshInterval30s: "30s",
|
||
refreshInterval60s: "60s",
|
||
refreshing: "Actualizando...",
|
||
refreshNow: "Actualizar",
|
||
selectTopicFirst: "Seleccione primero un tema",
|
||
loadingStats: "Cargando datos de monitoreo...",
|
||
kafkaTopicOverview: "Resumen del topic de Kafka",
|
||
partitionCount: "Particiones",
|
||
replicationFactor: "Factor de replicación",
|
||
messageCount: "Mensajes",
|
||
logEndOffset: "Log end offset",
|
||
offsetAndReplicaStatus: "Offsets y réplicas",
|
||
beginOffset: "Begin offset",
|
||
leaderCount: "Leaders",
|
||
isrHealthyPartitions: "ISR saludable",
|
||
noLeaderPartitions: "Sin leader",
|
||
kafkaPartitionDetails: "Particiones de Kafka",
|
||
noKafkaPartitionMetrics: "No hay métricas de partición en la respuesta de Kafka",
|
||
tablePartition: "Partición",
|
||
tableBeginOffset: "Begin offset",
|
||
tableLogEndOffset: "Log end offset",
|
||
tableMessageCount: "Mensajes",
|
||
tableLeader: "Leader",
|
||
tableReplicas: "Réplicas",
|
||
tableIsr: "ISR",
|
||
tableStatus: "Estado",
|
||
statusNoLeader: "Sin leader",
|
||
statusIsrIncomplete: "ISR incompleto",
|
||
statusHealthy: "Saludable",
|
||
kafkaMessageQuery: "Consulta de mensajes de Kafka",
|
||
querying: "Consultando...",
|
||
queryMessages: "Consultar",
|
||
queryHint: "Omita PARTITION / OFFSET para leer todas las particiones (máx. 100). Agréguelos para acotar el rango.",
|
||
sqlSyntaxError: 'Solo se admite SELECT * FROM "topic" [PARTITION n] [OFFSET n] [LIMIT n]',
|
||
messagesLoading: "Cargando mensajes...",
|
||
noMessages: "No hay mensajes",
|
||
messageRate: "Tasa de mensajes",
|
||
inboundRate: "Tasa de entrada",
|
||
outboundRate: "Tasa de salida",
|
||
inboundThroughput: "Rendimiento de entrada",
|
||
outboundThroughput: "Rendimiento de salida",
|
||
rateTrend: "Tendencia de tasa",
|
||
backlogTrend: "Tendencia de backlog",
|
||
consumerLag: "Retraso del consumidor",
|
||
storageAndBacklog: "Almacenamiento y backlog",
|
||
storageSize: "Tamaño de almacenamiento",
|
||
backlogSize: "Tamaño de backlog",
|
||
backlogMessageCount: "Mensajes en backlog",
|
||
messageCounters: "Contadores de mensajes",
|
||
publishedMessages: "Publicados",
|
||
consumedMessages: "Consumidos",
|
||
connectionStats: "Conexiones",
|
||
subscriptionCount: "Suscripciones",
|
||
producerCount: "Productores",
|
||
partitionDetails: "Particiones",
|
||
tableInbound: "Entrada",
|
||
tableOutbound: "Salida",
|
||
tableInboundThroughput: "Rendimiento de entrada",
|
||
tableOutboundThroughput: "Rendimiento de salida",
|
||
tableBacklogMessages: "Msgs en backlog",
|
||
tableBacklogSize: "Tamaño de backlog",
|
||
tableProducers: "Productores",
|
||
tableSubscriptions: "Suscripciones",
|
||
producers: "Productores",
|
||
subscriptions: "Suscripciones",
|
||
tableName: "Nombre",
|
||
tableRate: "Tasa",
|
||
tableAddress: "Dirección",
|
||
tableType: "Tipo",
|
||
tableBacklog: "Backlog",
|
||
tableConsumers: "Consumidores",
|
||
noProducers: "No hay productores",
|
||
noSubscriptions: "No hay suscripciones",
|
||
noPartitionMetricsFromBroker: "No hay métricas de partición del broker",
|
||
nonPartitionedTopicNoDetails: "Los temas no particionados no tienen detalles de partición",
|
||
healthIndicators: "Salud",
|
||
messageFlow: "Flujo de mensajes",
|
||
backlogStatus: "Backlog",
|
||
producersLabel: "Productores",
|
||
subscriptionsLabel: "Suscripciones",
|
||
flowActive: "Activo",
|
||
flowIdle: "Inactivo",
|
||
backlogNormal: "Normal",
|
||
backlogHigh: "Alto",
|
||
producerConnected: "Conectado",
|
||
producerDisconnected: "Ninguno",
|
||
subscriptionActive: "Activa",
|
||
subscriptionNone: "Ninguna",
|
||
chartLegendIn: "Entrada",
|
||
chartLegendOut: "Salida",
|
||
chartLegendMessages: "Mensajes",
|
||
chartLegendBytes: "Bytes",
|
||
chartLegendConsumerLag: "Retraso del consumidor",
|
||
chartAxisMsgPerSec: "msg/s",
|
||
chartAxisMsg: "msg",
|
||
chartAxisBytes: "bytes",
|
||
chartAxisMs: "ms",
|
||
metaPartition: "partición {partition}",
|
||
metaOffset: "offset {offset}",
|
||
metaKey: "clave {key}",
|
||
rocketmqTopicOverview: "Resumen de Topics de RocketMQ",
|
||
rocketmqQueueDetails: "Detalles de Offset de cola",
|
||
queueCount: "Número de colas",
|
||
brokerCount: "Número de Brokers",
|
||
tableQueue: "Cola",
|
||
tableBroker: "Broker",
|
||
noRocketMqQueueMetrics: "Sin métricas de cola",
|
||
},
|
||
mqTenants: {
|
||
title: "Administración de tenants",
|
||
createTenant: "Crear tenant",
|
||
notSupported: "La administración de tenants no es compatible con este sistema de mensajería",
|
||
readOnly: "Esta conexión es de solo lectura y no puede realizar operaciones de escritura.",
|
||
loading: "Cargando...",
|
||
name: "Nombre",
|
||
adminRoles: "Admin Roles",
|
||
allowedClusters: "Allowed Clusters*",
|
||
actions: "Acciones",
|
||
none: "Ninguno",
|
||
edit: "Editar",
|
||
delete: "Eliminar",
|
||
createDialogTitle: "Crear tenant",
|
||
editDialogTitle: "Editar tenant: {name}",
|
||
tenantName: "Nombre del tenant*",
|
||
tenantNamePlaceholder: "p. ej. my-tenant",
|
||
addRolePlaceholder: "Agregar rol",
|
||
add: "Agregar",
|
||
selectClustersPlaceholder: "Seleccionar clusters permitidos",
|
||
noClustersDetectedPlaceholder: "No se detectaron clusters; agregar manualmente",
|
||
clustersNotReturned: "La conexión no devolvió una lista de clusters",
|
||
addClusterPlaceholder: "Agregar cluster manualmente",
|
||
clustersRequiredHint: "Seleccione o agregue al menos un cluster permitido",
|
||
cancel: "Cancelar",
|
||
create: "Crear",
|
||
save: "Guardar",
|
||
confirmDelete: '¿Está seguro de que desea eliminar el tenant "{name}"? Esta operación no se puede deshacer.',
|
||
tenantNameRequired: "El nombre del tenant es obligatorio",
|
||
allowedClustersRequired: "Los clusters permitidos son obligatorios",
|
||
},
|
||
mqNamespaces: {
|
||
title: "Administración de namespaces",
|
||
createNamespace: "Crear namespace",
|
||
notSupported: "La administración de namespaces no es compatible con este sistema de mensajería",
|
||
selectTenantFirst: "Seleccione primero un tenant",
|
||
readOnly: "Esta conexión es de solo lectura y no puede realizar operaciones de escritura.",
|
||
loading: "Cargando...",
|
||
name: "Nombre",
|
||
tenant: "Tenant",
|
||
adminRoles: "Admin Roles",
|
||
actions: "Acciones",
|
||
none: "Ninguno",
|
||
editRoles: "Editar roles",
|
||
delete: "Eliminar",
|
||
createDialogTitle: "Crear namespace",
|
||
namespaceName: "Nombre del namespace*",
|
||
namespaceNamePlaceholder: "p. ej. my-namespace",
|
||
cancel: "Cancelar",
|
||
create: "Crear",
|
||
confirmDelete: '¿Está seguro de que desea eliminar el namespace "{name}"? Esta operación no se puede deshacer.',
|
||
namespaceNameRequired: "El nombre del namespace es obligatorio",
|
||
},
|
||
mqSubscriptions: {
|
||
title: "Administración de suscripciones",
|
||
createSubscription: "Crear suscripción",
|
||
selectTopicFirst: "Seleccione primero un tema",
|
||
readOnly: "Esta conexión es de solo lectura y no puede realizar operaciones de escritura.",
|
||
loading: "Cargando...",
|
||
noSubscriptions: "No hay suscripciones para este tema",
|
||
subscriptionName: "Nombre de la suscripción",
|
||
type: "Tipo",
|
||
backlog: "Backlog",
|
||
consumeRate: "Tasa de consumo",
|
||
consumers: "Consumidores",
|
||
actions: "Acciones",
|
||
consumerCount: "{count} consumidores",
|
||
msgRate: "{rate} msg/s",
|
||
resetCursor: "Restablecer cursor",
|
||
skipMessages: "Omitir mensajes",
|
||
clearBacklog: "Limpiar backlog",
|
||
peek: "Peek",
|
||
expireMessages: "Expirar mensajes",
|
||
delete: "Eliminar",
|
||
createDialogTitle: "Crear suscripción",
|
||
topic: "Tema",
|
||
subscriptionNameLabel: "Nombre de la suscripción*",
|
||
subscriptionNamePlaceholder: "p. ej. my-subscription",
|
||
startPosition: "Posición inicial",
|
||
startFromEarliest: "Desde el mensaje más antiguo (Earliest)",
|
||
startFromLatest: "Desde el mensaje más reciente (Latest)",
|
||
resetDialogTitle: "Restablecer cursor: {name}",
|
||
resetTo: "Restablecer a",
|
||
earliest: "Mensaje más antiguo (Earliest)",
|
||
latest: "Mensaje más reciente (Latest)",
|
||
timestamp: "Marca de tiempo específica",
|
||
timestampMs: "Marca de tiempo (ms)",
|
||
currentTime: "Hora actual: {time}",
|
||
reset: "Restablecer",
|
||
skipDialogTitle: "Omitir mensajes: {name}",
|
||
skipMode: "Modo de omisión",
|
||
skipCount: "Omitir cantidad especificada",
|
||
skipAll: "Omitir todo el backlog",
|
||
skipCountLabel: "Cantidad a omitir",
|
||
skip: "Omitir",
|
||
peekDialogTitle: "Peek de mensajes: {name}",
|
||
count: "Cantidad",
|
||
refresh: "Actualizar",
|
||
noPeekMessages: "No hay mensajes para ver",
|
||
close: "Cerrar",
|
||
expireDialogTitle: "Expirar mensajes: {name}",
|
||
expireSeconds: "Tiempo de expiración (segundos)",
|
||
expireHint: "Eliminará todos los mensajes anteriores a {seconds} segundos",
|
||
expire: "Expirar",
|
||
cancel: "Cancelar",
|
||
create: "Crear",
|
||
confirmDelete: '¿Está seguro de que desea eliminar la suscripción "{name}"? Esta operación no se puede deshacer.',
|
||
confirmClearBacklog: '¿Limpiar todos los mensajes en backlog de la suscripción "{name}"?',
|
||
subscriptionNameRequired: "El nombre de la suscripción es obligatorio",
|
||
peekMessageKey: "clave={key}",
|
||
searchPlaceholder: "Buscar nombre de suscripción",
|
||
subscribedTopics: "Topics suscritos",
|
||
refreshing: "Actualizando...",
|
||
noConsumerGroups: "No hay grupos de consumidores",
|
||
viewDetail: "Detalles",
|
||
editConfig: "Configurar",
|
||
save: "Guardar",
|
||
consumerDetailTitle: "Detalles del grupo de consumidores: {name}",
|
||
consumerConfigTitle: "Configuración del grupo de consumidores: {name}",
|
||
consumerOverview: "Resumen",
|
||
consumerTerminals: "Terminales en línea",
|
||
consumerConsumeDetail: "Detalles de consumo",
|
||
noOnlineConsumers: "No hay consumidores en línea actualmente",
|
||
noConsumeDetail: "Sin detalles de consumo",
|
||
operationTopic: "Topic",
|
||
consumeEnable: "Permitir consumo",
|
||
consumeBroadcastEnable: "Permitir consumo en difusión",
|
||
consumeFromMinEnable: "Comenzar desde el offset mínimo",
|
||
consumeMessageOrderly: "Consumo ordenado",
|
||
retryQueueNums: "Número de colas de reintento",
|
||
retryMaxTimes: "Número máximo de reintentos",
|
||
brokerId: "ID de Broker",
|
||
whichBrokerWhenConsumeSlowly: "ID de Broker para consumo lento",
|
||
mode: "Modo",
|
||
typeFilter: "Filtro de tipo",
|
||
rocketmqGroupType: {
|
||
normal: "Normal",
|
||
fifo: "FIFO",
|
||
system: "Sistema",
|
||
},
|
||
rocketmqGroupMode: {
|
||
clustering: "Cluster",
|
||
broadcasting: "Difusión",
|
||
},
|
||
},
|
||
mqClients: {
|
||
unloadTopicUnsupportedKafka: "Kafka no admite la descarga de temas",
|
||
title: "Productores / Consumidores",
|
||
unloadTopic: "Descargar tema",
|
||
unloading: "Descargando...",
|
||
refresh: "Actualizar",
|
||
refreshing: "Actualizando...",
|
||
selectTopicFirst: "Seleccione primero un tema",
|
||
confirmUnload: "¿Descargar este tema? Los productores y consumidores activos se reconectarán.",
|
||
aggregateTopic: "Tema agregado",
|
||
kafkaPartitionStatus: "Estado de particiones de Kafka",
|
||
partitionCount: "{count} particiones",
|
||
partition: "Partición",
|
||
beginOffset: "Begin offset",
|
||
latestOffset: "Latest offset",
|
||
messageCount: "Mensajes",
|
||
leader: "Leader",
|
||
replicas: "Réplicas",
|
||
isr: "ISR",
|
||
partitionClients: "Clientes de partición",
|
||
inboundRate: "Tasa de entrada",
|
||
outboundRate: "Tasa de salida",
|
||
producers: "Productores",
|
||
subscriptions: "Suscripciones",
|
||
consumers: "Consumidores",
|
||
activeProducers: "Productores activos",
|
||
noActiveProducers: "No hay productores activos",
|
||
name: "Nombre",
|
||
id: "ID",
|
||
address: "Dirección",
|
||
version: "Versión",
|
||
rate: "Tasa",
|
||
throughput: "Rendimiento",
|
||
rateValue: "{value} msg/s",
|
||
activeConsumers: "Consumidores activos",
|
||
noSubscriptions: "Este tema no tiene suscripciones",
|
||
noConsumersOnPartition: "No hay consumidores activos en la suscripción de esta partición",
|
||
noConsumersOnSubscription: "No hay consumidores activos en esta suscripción",
|
||
permits: "Permisos",
|
||
rocketmqClusterHint: "Muestra todos los terminales de Producer y Consumer Group en línea en el Broker. Después de seleccionar un tema, puede ver los detalles del cliente para ese Topic.",
|
||
},
|
||
mqPolicies: {
|
||
title: "Administración de políticas",
|
||
refresh: "Actualizar",
|
||
refreshing: "Actualizando...",
|
||
selectTopicFirst: "Seleccione primero un tema",
|
||
selectNamespaceOrTopic: "Seleccione un namespace o un tema",
|
||
readOnly: "Esta conexión es de solo lectura y no puede realizar operaciones de escritura.",
|
||
readonlyHint: "Esta conexión es de solo lectura; la edición de políticas está deshabilitada.",
|
||
publishRate: "Límite de tasa de publicación",
|
||
msgsPerSecond: "Mensajes / segundo",
|
||
bytesPerSecond: "Bytes / segundo",
|
||
save: "Guardar",
|
||
dispatchRate: "Límite de tasa de despacho",
|
||
msgsPerPeriod: "Mensajes / período",
|
||
bytesPerPeriod: "Bytes / período",
|
||
periodSeconds: "Período (segundos)",
|
||
subscribeRate: "Límite de tasa de suscripción",
|
||
msgsPerConsumerPerPeriod: "Mensajes por consumidor / período",
|
||
backlogQuota: "Cuota de backlog",
|
||
sizeLimitBytes: "Límite de tamaño (bytes)",
|
||
timeLimitSeconds: "Límite de tiempo (segundos)",
|
||
policy: "Política",
|
||
type: "Tipo",
|
||
backlogPolicyProducerRequestHold: "Retener solicitudes del productor",
|
||
backlogPolicyProducerException: "Rechazar con excepción",
|
||
backlogPolicyConsumerBacklogEviction: "Desalojar backlog del consumidor",
|
||
retention: "Retención de mensajes",
|
||
retentionTimeMinutes: "Tiempo de retención (minutos)",
|
||
retentionSizeMb: "Tamaño de retención (MB)",
|
||
effectivePolicies: "Políticas efectivas",
|
||
savedNotice: "{policy} guardada",
|
||
},
|
||
mqPermissions: {
|
||
title: "Permisos",
|
||
refresh: "Actualizar",
|
||
refreshing: "Actualizando...",
|
||
selectNamespaceOrTopic: "Seleccione primero un namespace o un tema",
|
||
readOnly: "Esta conexión es de solo lectura y no puede realizar operaciones de escritura.",
|
||
readonlyHint: "Esta conexión es de solo lectura; conceder y revocar están deshabilitados.",
|
||
grantRole: "Conceder rol",
|
||
roleName: "Nombre del rol",
|
||
roleNamePlaceholder: "p. ej. app-producer",
|
||
actions: "Acciones",
|
||
grant: "Conceder",
|
||
currentPermissions: "Permisos actuales",
|
||
role: "Rol",
|
||
operations: "Operaciones",
|
||
token: "Token",
|
||
revoke: "Revocar",
|
||
noPermissions: "No hay registros de permisos",
|
||
clientTokenTitle: "Token de cliente: {role}",
|
||
missingSigningKeyTitle: "Clave de firma de token no configurada",
|
||
missingSigningKeyMessage: "Esta conexión MQ no tiene configurada una clave de firma de token del Broker, por lo que no se pueden emitir tokens de cliente.",
|
||
missingSigningKeyDetail: 'Edite la conexión y configure "Firma de token del Broker" como HS256 SECRET o RS256 PRIVATE, y proporcione la clave de firma antes de generar tokens.',
|
||
tokenShowOnceWarning: "El token se muestra solo una vez. Cópielo y guárdelo de inmediato.",
|
||
copyToken: "Copiar token",
|
||
issueNewToken: "Emitir nuevo token",
|
||
neverExpires: "Nunca expira",
|
||
expiryDays: "Expiración (días)",
|
||
note: "Nota",
|
||
notePlaceholder: "p. ej. para rt-erp-server",
|
||
issuing: "Emitiendo...",
|
||
generateToken: "Generar token",
|
||
tokenRevokeHint: "Revocar permisos de rol no invalida los JWT emitidos de inmediato; espere a la expiración o rote la clave de firma del broker.",
|
||
issueRecords: "Registros de emisión",
|
||
time: "Hora",
|
||
algorithm: "Algoritmo",
|
||
expires: "Expira",
|
||
fingerprint: "Huella digital",
|
||
noteColumn: "Nota",
|
||
unlimited: "Permanente",
|
||
loading: "Cargando...",
|
||
noIssueRecords: "No hay registros de emisión",
|
||
close: "Cerrar",
|
||
kafkaAuthorizerNotConfigured: "Este cluster de Kafka no tiene authorizer configurado. Agregue authorizer.class.name en la configuración del broker para soporte de ACL.",
|
||
kafkaAuthorizerDisabled: "Este cluster de Kafka no tiene authorizer habilitado. Habilite un authorizer en la configuración del broker para conceder permisos.",
|
||
roleNameRequired: "El nombre del rol es obligatorio",
|
||
selectAtLeastOneAction: "Seleccione al menos una acción",
|
||
grantedRole: "Rol {role} concedido",
|
||
confirmRevoke: '¿Revocar permisos del rol "{role}"?',
|
||
revokedRole: "Rol {role} revocado",
|
||
roleNameEmpty: "El nombre del rol no puede estar vacío",
|
||
expiryMustBePositive: "La expiración debe ser mayor que 0 días",
|
||
},
|
||
mqBroker: {
|
||
title: "Cluster de Broker",
|
||
autoRefresh: "Actualización automática",
|
||
refreshInterval5s: "5s",
|
||
refreshInterval10s: "10s",
|
||
refreshInterval30s: "30s",
|
||
refreshInterval60s: "60s",
|
||
refreshing: "Actualizando...",
|
||
refreshNow: "Actualizar ahora",
|
||
loading: "Cargando...",
|
||
clusterOverview: "Resumen del cluster",
|
||
clusterId: "ID del cluster",
|
||
unknown: "Desconocido",
|
||
brokerCount: "Brokers",
|
||
controller: "Controller",
|
||
controllerNode: "Nodo {id} · {host}",
|
||
brokerNodes: "Nodos del Broker",
|
||
nodeId: "ID del nodo",
|
||
host: "Host",
|
||
port: "Puerto",
|
||
rack: "Rack",
|
||
role: "Rol",
|
||
roleController: "Controller",
|
||
roleFollower: "Follower",
|
||
noBrokerNodes: "No hay información de nodos del Broker",
|
||
brokerName: "Nombre de Broker",
|
||
brokerEndpoints: "Endpoints de Broker",
|
||
roleMaster: "Master",
|
||
roleSlave: "Slave",
|
||
clusterTitle: "Clúster",
|
||
},
|
||
mqRaw: {
|
||
title: "Raw API",
|
||
sending: "Enviando...",
|
||
sendRequest: "Enviar solicitud",
|
||
readOnlyHint: "Esta conexión es de solo lectura; solo se permiten solicitudes GET, HEAD y OPTIONS.",
|
||
commonEndpoints: "Endpoints comunes",
|
||
fillFromSelection: "Rellenar solicitud desde la selección actual",
|
||
expand: "Expandir",
|
||
collapse: "Contraer",
|
||
method: "Método",
|
||
path: "Ruta",
|
||
pathPlaceholder: "/admin/v2/...",
|
||
queryParams: "Parámetros de consulta",
|
||
queryPlaceholder: "clave=valor, uno por línea",
|
||
jsonBody: "JSON Body",
|
||
format: "Formatear",
|
||
bodyPlaceholder: "p. ej. {'{'}\"key\":\"value\"{'}'}",
|
||
response: "Respuesta",
|
||
textResponse: "Respuesta de texto",
|
||
noRequestYet: "Aún no se ha enviado ninguna solicitud",
|
||
readOnly: "Esta conexión es de solo lectura y no puede realizar operaciones de escritura.",
|
||
pathRequired: "La ruta de la solicitud es obligatoria",
|
||
jsonBodyInvalid: "Cuerpo JSON no válido: {error}",
|
||
presetBrokerVersion: "Versión del Broker",
|
||
presetBrokerVersionDesc: "Cadena de versión del Broker",
|
||
presetClusters: "Lista de clusters",
|
||
presetClustersDesc: "Listar clusters de Pulsar configurados",
|
||
presetTenant: "Detalles del tenant",
|
||
presetTenantDesc: "Ver adminRoles / allowedClusters",
|
||
presetNamespacePolicies: "Políticas del namespace",
|
||
presetNamespacePoliciesDesc: "Estructura de políticas del namespace sin procesar",
|
||
presetBundles: "Lista de bundles",
|
||
presetBundlesDesc: "Distribución de bundles del namespace",
|
||
presetTopicInternalStats: "Estadísticas internas del tema",
|
||
presetTopicInternalStatsDesc: "Detalles de ledger / cursor / backlog",
|
||
presetPartitionedStats: "Métricas de partición",
|
||
presetPartitionedStatsDesc: "Tasas, productores y consumidores por partición",
|
||
presetSchema: "Último schema",
|
||
presetSchemaDesc: "Definición del schema actual del tema",
|
||
},
|
||
production: {
|
||
title: "Entorno de producción",
|
||
connection: "Conexión de producción",
|
||
enable: "Activar protección del entorno de producción",
|
||
disabledDescription: "Al activar, puede elegir proteger todas las bases de datos o bases de datos específicas.",
|
||
scope: "Alcance de la protección",
|
||
allDatabases: "Todas las bases de datos",
|
||
selectedDatabases: "Bases de datos seleccionadas",
|
||
singleDatabaseScopeHint: "Este tipo de base de datos solo admite protección del entorno de producción a nivel de conexión.",
|
||
databases: "Bases de datos de producción",
|
||
connectionDescription: "Todas las bases de datos de esta conexión tendrán habilitada la protección de producción.",
|
||
databaseDescription: "Seleccione de la conexión las bases de datos que necesiten protección de producción. La primera vez, se seleccionan todas por defecto.",
|
||
selectDatabases: "Seleccionar bases de datos de producción",
|
||
noDatabasesSelected: "Ninguna seleccionada",
|
||
databasesConfiguredCount: "{count} seleccionadas",
|
||
databasesSelectedCount: "{selected}/{total} seleccionadas",
|
||
databasePickerTitle: "Seleccionar bases de datos de producción",
|
||
databasePickerDescription: "Seleccione las bases de datos en {connection} que necesiten protección de producción.",
|
||
databaseSearchPlaceholder: "Buscar bases de datos...",
|
||
databaseSelectionRequired: "Seleccione al menos una base de datos.",
|
||
databaseLoadFailed: "No se pudo cargar la lista de bases de datos: {message}",
|
||
noDatabasesAvailable: "No se encontraron bases de datos para seleccionar.",
|
||
retry: "Reintentar",
|
||
confirmTitle: "Confirmar escritura en el entorno de producción",
|
||
confirmMessage: "Esta operación modificará la base de datos de producción. Debe confirmar explícitamente para continuar.",
|
||
confirmDetails: "Conexión: {connection}\nBase de datos: {database}\nOrigen: {source}",
|
||
confirmAction: "Ejecutar en el entorno de producción",
|
||
sourceSqlEditor: "Editor SQL",
|
||
sourceDataGrid: "Editor de datos",
|
||
sourceStructure: "Editor de estructura",
|
||
sourceSqlFile: "Ejecución de archivo SQL",
|
||
sourceObjectBrowser: "Explorador de objetos",
|
||
sourceSchemaDiff: "Comparación de esquemas",
|
||
sourceDataCompare: "Comparación de datos",
|
||
sourceExtension: "Gestor de extensiones",
|
||
sourceSidebar: "Árbol de objetos",
|
||
sourceObjectSource: "Editor de código fuente de objetos",
|
||
sourceDataGenerate: "Generador de datos",
|
||
sourceQueryHistory: "Reversión del historial de consultas",
|
||
sourceAdmin: "Administración de bases de datos",
|
||
aiReviewRequired: "El SQL de producción se ha colocado en el editor. Revíselo primero y luego ejecútelo manualmente para confirmar.",
|
||
},
|
||
processList: {
|
||
title: "Lista de procesos",
|
||
sessionCount: "{count} sesiones",
|
||
filter: "Filtrar sesiones",
|
||
autoRefresh: "Actualización automática",
|
||
seconds: "segundos",
|
||
colId: "Id",
|
||
colUser: "Usuario",
|
||
colHost: "Host",
|
||
colDb: "Base de datos",
|
||
colCommand: "Comando",
|
||
colTime: "Tiempo",
|
||
colState: "Estado",
|
||
colInfo: "SQL",
|
||
colActions: "Acciones",
|
||
self: "Actual",
|
||
kill: "Terminar",
|
||
cannotKillSelf: "No se puede terminar la sesión actual",
|
||
empty: "No hay sesiones activas.",
|
||
killTitle: "Terminar sesión",
|
||
killConfirm: "¿Está seguro de que desea terminar la sesión {id} ({user})? La sentencia actual se cancelará y la conexión se cerrará.",
|
||
killSuccess: "Sesión {id} terminada",
|
||
killFailed: "Error al terminar la sesión: {message}",
|
||
colPid: "PID",
|
||
colClient: "Cliente",
|
||
colApp: "Aplicación",
|
||
colWait: "Espera",
|
||
colQuery: "Consulta",
|
||
previewTitle: "Sentencia",
|
||
copy: "Copiar",
|
||
copied: "Copiado",
|
||
},
|
||
serverDashboard: {
|
||
title: "Panel de control del servidor",
|
||
autoRefresh: "Actualización automática",
|
||
off: "Desactivado",
|
||
qps: "Consultas por segundo",
|
||
connections: "Conexiones",
|
||
running: "Hilos en ejecución",
|
||
trafficIn: "Tráfico entrante",
|
||
trafficOut: "Tráfico saliente",
|
||
slowQueries: "Consultas lentas",
|
||
uptime: "Tiempo de actividad",
|
||
innodbHit: "Tasa de aciertos de InnoDB",
|
||
in: "Entrante",
|
||
out: "Saliente",
|
||
sessions: "Sesiones",
|
||
qpsChart: "Consultas por segundo",
|
||
sessionsChart: "Nuevas sesiones por segundo",
|
||
trafficChart: "Tráfico de red por segundo",
|
||
commandChart: "Comandos por segundo",
|
||
rawStatus: "Variables de estado",
|
||
filterStatus: "Filtrar variables de estado",
|
||
tps: "Transacciones por segundo",
|
||
activeQueries: "Consultas activas",
|
||
cacheHit: "Tasa de aciertos de caché",
|
||
deadlocks: "Interbloqueos",
|
||
tempFiles: "Archivos temporales",
|
||
walRate: "Tasa de WAL",
|
||
commit: "Confirmaciones",
|
||
rollback: "Reversiones",
|
||
total: "Total",
|
||
active: "Activas",
|
||
idle: "Inactivas",
|
||
fetched: "Obtenidas",
|
||
returned: "Devueltas",
|
||
read: "Lecturas",
|
||
hits: "Aciertos",
|
||
serverSessionsChart: "Sesiones del servidor",
|
||
transactionsChart: "Transacciones por segundo",
|
||
tuplesInChart: "Escritura de tuplas",
|
||
tuplesOutChart: "Lectura de tuplas",
|
||
blockIoChart: "E/S de bloques",
|
||
},
|
||
databaseBackup: {
|
||
title: "Copia de seguridad de la base de datos",
|
||
schedules: "Planes de copia de seguridad",
|
||
runtimeRequirement: "DBX ejecutará copias de seguridad programadas cuando esté abierto, incluso cuando esté minimizado en la bandeja.",
|
||
addSchedule: "Nuevo plan",
|
||
editSchedule: "Editar plan",
|
||
defaultScheduleName: "Copia de seguridad de la base de datos",
|
||
noSchedules: "No hay planes de copia de seguridad",
|
||
scheduleName: "Nombre del plan",
|
||
connection: "Conexión",
|
||
missingConnection: "La conexión ya no existe",
|
||
destination: "Directorio de copia de seguridad",
|
||
selectDestination: "Seleccionar directorio de copia de seguridad",
|
||
databases: "Bases de datos",
|
||
allDatabases: "Todas las bases de datos",
|
||
databaseCount: "{count} bases de datos",
|
||
tableScope: "Ámbito de tablas",
|
||
allTables: "Todas las tablas y vistas",
|
||
includeTables: "Incluir solo coincidencias",
|
||
excludeTables: "Excluir coincidencias",
|
||
tablePatterns: "Reglas de nombres de tabla",
|
||
tablePatternsPlaceholder: "orders, audit_*, public.users",
|
||
tablePatternsHint: "Separe las reglas con comas. Se admiten los comodines * y ? y schema.table.",
|
||
includedTablePatterns: "{count} reglas de inclusión",
|
||
excludedTablePatterns: "{count} reglas de exclusión",
|
||
frequency: "Frecuencia de ejecución",
|
||
frequencyHourly: "Cada hora",
|
||
frequencyDaily: "Diariamente",
|
||
frequencyWeekly: "Semanalmente",
|
||
intervalHours: "Intervalo en horas",
|
||
time: "Hora de ejecución",
|
||
weekday: "Día de la semana",
|
||
retention: "Conservar las últimas ejecuciones",
|
||
contents: "Contenido de la copia de seguridad",
|
||
enabled: "Plan habilitado",
|
||
enabledHint: "La próxima ejecución se calcula según la zona horaria local.",
|
||
nextRun: "Próxima: {time}",
|
||
nextRunPreview: "Próxima ejecución: {time}",
|
||
keepRuns: "Conservar {count} ejecuciones",
|
||
everyHours: "Cada {count} horas",
|
||
dailyAt: "Diariamente a las {time}",
|
||
weeklyAt: "{weekday} a las {time}",
|
||
never: "Nunca",
|
||
enable: "Habilitar plan",
|
||
disable: "Deshabilitar plan",
|
||
runNow: "Ejecutar copia ahora",
|
||
cancel: "Cancelar copia",
|
||
edit: "Editar",
|
||
delete: "Eliminar",
|
||
scheduleCreated: "Plan de copia de seguridad creado",
|
||
scheduleUpdated: "Plan de copia de seguridad actualizado",
|
||
deleteSchedule: "Eliminar plan",
|
||
deleteScheduleConfirm: "¿Está seguro de que desea eliminar el plan «{name}»? Los archivos de copia de seguridad existentes aún se conservarán en el historial.",
|
||
cannotDeleteRunningSchedule: "No se puede eliminar un plan de copia de seguridad en ejecución",
|
||
history: "Historial de copias de seguridad",
|
||
noHistory: "No hay registros de copia de seguridad",
|
||
showFiles: "Mostrar archivos de copia",
|
||
scheduledTrigger: "Ejecución programada",
|
||
manualTrigger: "Ejecución manual",
|
||
fileCount: "{count} archivos",
|
||
progress: "Progreso de la copia de seguridad",
|
||
renameBackup: "Renombrar copia de seguridad",
|
||
backupName: "Nombre de la copia de seguridad",
|
||
backupRenamed: "Copia de seguridad renombrada",
|
||
revealFile: "Mostrar en el administrador de archivos",
|
||
restore: "Restaurar",
|
||
deleteBackup: "Eliminar copia de seguridad",
|
||
deleteBackupConfirm: "¿Está seguro de que desea eliminar esta copia de seguridad y sus {count} archivos SQL? Esta acción no se puede deshacer.",
|
||
backupDeleted: "Copia de seguridad eliminada",
|
||
runSuccess: "Copia de seguridad completada, se generaron {count} archivos",
|
||
runCancelled: "Copia de seguridad cancelada",
|
||
runFailed: "Copia de seguridad fallida: {error}",
|
||
unknownError: "Error desconocido",
|
||
status: {
|
||
running: "En ejecución",
|
||
success: "Completado",
|
||
failed: "Fallido",
|
||
cancelled: "Cancelado",
|
||
},
|
||
weekdays: {
|
||
sunday: "Domingo",
|
||
monday: "Lunes",
|
||
tuesday: "Martes",
|
||
wednesday: "Miércoles",
|
||
thursday: "Jueves",
|
||
friday: "Viernes",
|
||
saturday: "Sábado",
|
||
},
|
||
},
|
||
mqExchanges: {
|
||
searchPlaceholder: "Buscar exchanges",
|
||
refresh: "Actualizar",
|
||
refreshing: "Actualizando...",
|
||
createExchange: "Crear exchange",
|
||
selectNamespace: "Seleccione primero un host virtual",
|
||
loading: "Cargando...",
|
||
noExchanges: "No hay exchanges en este host virtual",
|
||
noMatches: "No hay exchanges coincidentes",
|
||
name: "Nombre",
|
||
type: "Tipo",
|
||
durable: "Durable",
|
||
autoDelete: "Autoeliminar",
|
||
actions: "Acciones",
|
||
builtin: "Integrado",
|
||
viewBindings: "Bindings",
|
||
delete: "Eliminar",
|
||
yes: "Sí",
|
||
no: "No",
|
||
bindingsTitle: "Bindings de {name}",
|
||
bindDestination: "Vincular",
|
||
noBindings: "No hay bindings desde este exchange",
|
||
bindingSource: "Origen",
|
||
bindingDestination: "Destino",
|
||
bindingType: "Tipo",
|
||
routingKey: "Clave de enrutamiento",
|
||
arguments: "Argumentos",
|
||
unbind: "Desvincular",
|
||
destinationTypeQueue: "Cola",
|
||
destinationTypeExchange: "Exchange",
|
||
virtualHost: "Host virtual",
|
||
namePlaceholder: "p. ej. dbx-events",
|
||
cancel: "Cancelar",
|
||
create: "Crear",
|
||
bind: "Vincular",
|
||
bindDialogTitle: "Vincular a {name}",
|
||
queueNamePlaceholder: "p. ej. dbx-queue",
|
||
exchangeNamePlaceholder: "p. ej. dbx-events",
|
||
routingKeyPlaceholder: "p. ej. orders.*",
|
||
argumentsPlaceholder: 'Objeto JSON opcional, p. ej. {"x-match": "all"}',
|
||
nameRequired: "El nombre del exchange es obligatorio",
|
||
destinationRequired: "El destino es obligatorio",
|
||
argumentsMustBeObject: "Los argumentos deben ser un objeto JSON",
|
||
readOnly: "Esta conexión es de solo lectura y no puede realizar operaciones de escritura.",
|
||
confirmDelete: '¿Eliminar el exchange "{name}"? Esta acción no se puede deshacer.',
|
||
confirmUnbind: '¿Eliminar el binding de "{source}" a "{destination}"?',
|
||
},
|
||
mqClientConnections: {
|
||
searchPlaceholder: "Buscar conexiones",
|
||
refresh: "Actualizar",
|
||
refreshing: "Actualizando...",
|
||
loading: "Cargando...",
|
||
noConnections: "No hay conexiones de clientes",
|
||
noMatches: "No hay conexiones coincidentes",
|
||
name: "Nombre",
|
||
user: "Usuario",
|
||
peerAddress: "Dirección de origen",
|
||
state: "Estado",
|
||
channels: "Canales",
|
||
recvRate: "Tasa de recepción",
|
||
sendRate: "Tasa de envío",
|
||
connectedAt: "Conectado el",
|
||
actions: "Acciones",
|
||
closeConnection: "Cerrar conexión",
|
||
confirmClose: '¿Cerrar la conexión "{name}"? Todos sus canales se cerrarán y esta acción no se puede deshacer.',
|
||
readOnly: "Esta conexión es de solo lectura; no se pueden ejecutar operaciones de escritura.",
|
||
noChannels: "Esta conexión no tiene canales",
|
||
channelName: "Canal",
|
||
prefetch: "Prefetch",
|
||
unacked: "Sin confirmar",
|
||
consumers: "Consumidores",
|
||
},
|
||
mqUserPermissions: {
|
||
usersTitle: "Usuarios",
|
||
permissionsTitle: "Permisos",
|
||
refresh: "Actualizar",
|
||
refreshing: "Actualizando...",
|
||
loading: "Cargando...",
|
||
createUser: "Crear usuario",
|
||
grantPermission: "Conceder permiso",
|
||
searchUsers: "Buscar usuarios",
|
||
noUsers: "No hay usuarios",
|
||
noUserMatches: "No hay usuarios coincidentes",
|
||
name: "Nombre",
|
||
tags: "Etiquetas",
|
||
actions: "Acciones",
|
||
delete: "Eliminar",
|
||
confirmDeleteUser: '¿Eliminar el usuario "{name}"? Esta acción no se puede deshacer.',
|
||
password: "Contraseña",
|
||
tagsPlaceholder: "Separadas por comas, p. ej. administrator, monitoring",
|
||
nameRequired: "El nombre de usuario es obligatorio",
|
||
passwordRequired: "La contraseña es obligatoria",
|
||
cancel: "Cancelar",
|
||
create: "Crear",
|
||
user: "Usuario",
|
||
vhost: "Host virtual",
|
||
configure: "Configure",
|
||
write: "Write",
|
||
read: "Read",
|
||
noPermissions: "No hay permisos",
|
||
revoke: "Revocar",
|
||
confirmRevoke: '¿Revocar el permiso del usuario "{user}" en el host virtual "{vhost}"?',
|
||
grant: "Conceder",
|
||
selectUser: "Selecciona un usuario",
|
||
selectVhost: "Selecciona un host virtual",
|
||
patternHint: "Expresión regular aplicada a los nombres de recursos; vacío equivale a .* (todo).",
|
||
userRequired: "Selecciona un usuario",
|
||
vhostRequired: "Selecciona un host virtual",
|
||
readOnly: "Esta conexión es de solo lectura; las operaciones de escritura están deshabilitadas.",
|
||
},
|
||
mqRabbitMqPolicies: {
|
||
title: "Políticas",
|
||
refresh: "Actualizar",
|
||
refreshing: "Actualizando...",
|
||
loading: "Cargando...",
|
||
createPolicy: "Crear política",
|
||
editPolicy: "Editar política",
|
||
noPolicies: "No hay políticas",
|
||
name: "Nombre",
|
||
vhost: "Host virtual",
|
||
pattern: "Patrón",
|
||
applyTo: "Aplicar a",
|
||
priority: "Prioridad",
|
||
definition: "Definición",
|
||
actions: "Acciones",
|
||
edit: "Editar",
|
||
delete: "Eliminar",
|
||
confirmDelete: '¿Eliminar la política "{name}" en el host virtual "{vhost}"?',
|
||
cancel: "Cancelar",
|
||
save: "Guardar",
|
||
selectVhost: "Selecciona un host virtual",
|
||
definitionKey: "Clave",
|
||
definitionValue: "Valor",
|
||
addDefinition: "Añadir entrada de definición",
|
||
patternHint: "Expresión regular que coincide con nombres de colas/intercambios.",
|
||
nameRequired: "El nombre de la política es obligatorio",
|
||
vhostRequired: "Selecciona un host virtual",
|
||
patternRequired: "El patrón es obligatorio",
|
||
readOnly: "Esta conexión es de solo lectura; las operaciones de escritura están deshabilitadas.",
|
||
},
|
||
mqRabbitMqMonitoring: {
|
||
title: "Monitorización del clúster",
|
||
loading: "Cargando...",
|
||
overviewTitle: "Resumen",
|
||
messagesReady: "Mensajes listos",
|
||
messagesUnacked: "Mensajes sin confirmar",
|
||
publishRate: "Tasa de publicación",
|
||
deliverRate: "Tasa de entrega",
|
||
ackRate: "Tasa de confirmación",
|
||
totalQueues: "Colas",
|
||
totalExchanges: "Intercambios",
|
||
totalConnections: "Conexiones",
|
||
totalChannels: "Canales",
|
||
totalConsumers: "Consumidores",
|
||
nodesTitle: "Nodos",
|
||
nodeName: "Nodo",
|
||
status: "Estado",
|
||
running: "En ejecución",
|
||
stopped: "Detenido",
|
||
memory: "Memoria",
|
||
diskFree: "Disco libre",
|
||
fileDescriptors: "Descriptores de archivo",
|
||
sockets: "Sockets",
|
||
uptime: "Tiempo activo",
|
||
noNodes: "No hay nodos",
|
||
},
|
||
mqRocketmq: {
|
||
consumerGroupTitle: "Grupo de consumidores",
|
||
searchConsumerGroup: "Buscar grupo de consumidores",
|
||
connectionNotReady: "Conexión no lista, actualice la información del clúster",
|
||
tabSend: "Enviar mensaje",
|
||
tabQuery: "Consulta de mensajes",
|
||
noDlqTopics: "No se encontraron Topics de mensajes muertos. Puede habilitar el filtro de tipo «Mensaje muerto» en la página de temas y actualizar.",
|
||
topicFilterAll: "Todos",
|
||
topicFilterBusiness: "Negocio",
|
||
topicFilterDlq: "Mensaje muerto",
|
||
actionProduce: "Publicar",
|
||
actionConsume: "Suscribir",
|
||
aclTitle: "Control de acceso",
|
||
actionMessageQuery: "Consulta de mensajes",
|
||
actionSendMessage: "Enviar mensaje",
|
||
actionMore: "Más",
|
||
actionDetailGroup: "Detalles",
|
||
actionResetOffset: "Restablecer offset",
|
||
dlqConsumerGroup: "Grupo de consumidores",
|
||
dlqConsumerGroupPlaceholder: "Grupo de consumidores (opcional)",
|
||
dlqQueryByKey: "Consultar por Key",
|
||
viewDlqMessages: "Ver mensajes muertos",
|
||
namesrvAddr: "NameServer",
|
||
},
|
||
mqDlq: {
|
||
title: "Cola de mensajes muertos",
|
||
refresh: "Actualizar",
|
||
refreshing: "Actualizando...",
|
||
loading: "Cargando...",
|
||
selectContext: "Seleccione primero el contexto del namespace",
|
||
selectTopic: "Seleccione un Topic DLQ",
|
||
topic: "Topic DLQ",
|
||
consumerGroup: "Grupo de consumidores",
|
||
groupPlaceholder: "Grupo de consumidores Peek (opcional)",
|
||
queryByKey: "Consultar por Key",
|
||
queryKey: "Key de mensaje",
|
||
queryKeyPlaceholder: "Key a buscar",
|
||
loadMessages: "Cargar mensajes",
|
||
loadingMessages: "Cargando mensajes...",
|
||
noDlqTopics: "No se encontraron Topics DLQ. Puede habilitar el filtro de tipo «Mensaje muerto» en la página de temas y actualizar.",
|
||
noMessages: "No hay mensajes",
|
||
},
|
||
mqTrace: {
|
||
title: "Trazas de mensajes",
|
||
msgId: "ID de mensaje",
|
||
msgIdPlaceholder: "MsgId del mensaje original",
|
||
msgIdRequired: "El ID de mensaje no puede estar vacío",
|
||
queryKeyRequired: "La Key del mensaje no puede estar vacía",
|
||
selectTopicBeforeQuery: "Seleccione primero un Topic para consultar trazas",
|
||
traceTopic: "Topic de trazas",
|
||
traceTopicPlaceholder: "RMQ_SYS_TRACE_TOPIC",
|
||
query: "Consultar trazas",
|
||
querying: "Consultando...",
|
||
noTrace: "No se encontraron registros de trazas",
|
||
searchHint: "Primero busque el mensaje, luego haga clic en «Ver traza de consumo»",
|
||
viewTrace: "Ver traza de consumo",
|
||
detailTitle: "Detalles de la traza de consumo",
|
||
traceTopicRouteMissing:
|
||
"El Topic de trazas no tiene información de ruta en NameServer (CODE: 17).\n\nCausas comunes:\n1. Broker no tiene habilitada la traza de mensajes: configure traceTopicEnable=true en broker.conf y reinicie el Broker\n2. Producer/Consumer no tiene habilitada la traza: setEnableTrace(true)\n3. Se utilizó un Topic de trazas personalizado, seleccione el Topic de trazas correcto arriba.",
|
||
},
|
||
});
|