feat(i18n): add withEnglishFallback and fill missing translations across 7 locales

This commit is contained in:
t8y2 2026-06-27 23:41:14 +08:00
parent 8b3fe8a7cc
commit dfba5c1bde
8 changed files with 1983 additions and 12 deletions

View File

@ -890,6 +890,9 @@ export default {
close: "Close",
cancel: "Cancel",
save: "Save",
copy: "Copy",
import: "Import",
remove: "Remove",
retry: "Retry",
more: "More",
done: "Done",
@ -2212,8 +2215,27 @@ export default {
syncProgress: "Executing: {current}/{total}",
syncSummary: "Succeeded {success}, failed {failed}",
configSaved: "Config saved",
configDeleted: "Config deleted",
sourceObject: "Source object",
targetObject: "Target object",
operation: "Operation",
selectedCount: "{selected} selected of {total}",
saveConfig: "Save config",
loadConfig: "Load config",
options: "Options",
ddlCompare: "DDL compare",
deployScript: "Deploy script",
deployScriptAll: "All deploy scripts",
deployScriptDesc: "SQL script for the selected object",
deployScriptAllDesc: "SQL script for all selected objects",
copy: "Copy",
execute: "Execute",
executeAll: "Execute all",
executeSuccess: "Executed successfully",
selectObjectToCompare: "Select an object to view DDL comparison",
noDdlAvailable: "No DDL available",
noDeployScript: "No deploy script",
noDeployScriptAll: "No deploy script for selected objects",
sourceDdl: "Source DDL",
targetDdl: "Target DDL",
objectNotExistsInSource: "This object does not exist in the source database",
@ -2237,6 +2259,10 @@ export default {
delete: "Delete",
modify: "Modify",
cancel: "Cancel",
prevStep: "Previous",
recompare: "Compare again",
maximize: "Maximize",
restore: "Restore",
operationLabel: {
modify: "Objects to modify",
create: "Objects to create",
@ -2262,6 +2288,13 @@ export default {
affectedRows: "Affected Rows",
executedStatements: "Executed Statements",
serverVersion: "Server Version",
info: "Info",
connType: "Connection type",
connName: "Connection name",
host: "Host",
port: "Port",
copied: "Copied to clipboard",
saveConfigPrompt: "Please enter config name:",
close: "Close",
},
schemaDiff: {

View File

@ -1,4 +1,6 @@
export default {
import { withEnglishFallback } from "./fallback";
export default withEnglishFallback({
app: {
name: "DBX",
},
@ -34,6 +36,8 @@ export default {
formatSqlFailed: "Error al formatear el SQL",
keywordCaseLower: "Usar palabras clave SQL en minúsculas",
keywordCaseUpper: "Usar palabras clave SQL en mayúsculas",
previewSql: "Vista previa de SQL",
hidePreviewSql: "Ocultar vista previa de SQL",
saveSql: "Guardar en biblioteca SQL",
openSql: "Abrir archivo SQL",
theme: "Tema",
@ -153,6 +157,11 @@ export default {
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.",
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.',
sqliteExtensionBrowse: "Seleccionar extensión de SQLite",
user: "Usuario",
password: "Contraseña",
database: "Base de datos",
@ -174,6 +183,8 @@ export default {
driverName: "Nombre del driver",
driverNamePlaceholder: "Nombre del proveedor o entorno",
urlParams: "Parámetros de URL",
gbaseServer: "GBASEDBTSERVER",
informixServer: "INFORMIXSERVER",
sslEnable: "Habilitar conexión cifrada",
caCertPath: "Certificado CA",
caCertPathPlaceholder: "Opcional, p. ej. ~/.yandex/RootCA.crt",
@ -231,6 +242,23 @@ export default {
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 consola",
nacosConsoleUrlHint: "Usa la dirección de consola/admin API de Nacos. Nacos 3 Docker normalmente expone la consola en 8085; despliegues antiguos pueden compartir 8848 con el puerto de servicio.",
nacosConsoleUrlRequired: "La URL de consola de Nacos es obligatoria",
@ -331,6 +359,8 @@ export default {
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",
@ -358,13 +388,18 @@ export default {
showResultsPane: "Mostrar resultados",
hideResultsPane: "Ocultar resultados",
noDatabase: "Sin base de datos seleccionada",
unsavedChangesTitle: "Cambios sin guardar",
unsavedChangesMessage: "Esta pestaña tiene cambios sin guardar que se perderán si se cierra. ¿Guardar antes de cerrar?",
discardChanges: "Descartar",
selectConnection: "Seleccionar conexión",
searchConnection: "Buscar conexiones...",
selectDatabase: "Seleccionar base de datos",
selectDatabaseRequired: "Selecciona una base de datos primero",
searchDatabase: "Buscar bases de datos...",
selectSchema: "Seleccionar esquema",
setDefaultDatabase: "Establecer como predeterminada",
defaultDatabase: "Predeterminada",
clearDatabase: "Limpiar base de datos",
completion: {
nullValue: "Valor NULL",
isNull: "Comprobar si es NULL",
@ -443,6 +478,11 @@ export default {
table: "Tabla",
tableData: "Datos de tabla",
redis: "Redis",
etcd: "etcd",
zookeeper: "ZooKeeper",
vector: "Vector",
users: "Usuarios y Privilegios",
executionSummary: "Resumen de ejecución",
mongo: "Mongo",
objects: "Objetos",
tooltipTitle: "Título:",
@ -452,11 +492,40 @@ export default {
tooltipCollection: "Colección:",
tooltipSchema: "Esquema:",
resultN: "Resultado {n}",
runN: "Ejecutar {n}",
resultRuns: "Ejecuciones de resultado",
removeRun: "Eliminar ejecución {n}",
autoKeepResults: "Conservar resultados automáticamente",
autoKeepResultsEnabled: "Conservación automática activada",
autoKeepResultsDisabled: "Conservación automática desactivada",
missingResultRun: "Este resultado ya no está disponible",
exportResultArchive: "Guardar archivo de resultados",
importResultArchive: "Importar 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",
openDataTabs: "Tablas abiertas",
},
executionSummary: {
empty: "Sin resumen de ejecución",
executing: "Ejecutando...",
statement: "Sentencia",
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",
},
chart: {
title: "Gráfico",
type: "Tipo",
@ -528,6 +597,7 @@ export default {
exportFailed: "Error al exportar: {message}",
copied: "Copiado",
copyFailed: "Error al copiar: {message}",
previewSqlEmpty: "No hay cambios SQL pendientes para previsualizar",
domRenderMode: "DOM",
canvasRenderMode: "Canvas",
renderModeHint: "Alterna entre el renderizado Canvas y la cuadrícula DOM de respaldo.",
@ -553,6 +623,30 @@ export default {
columnActions: "Acciones de columna",
localFilter: "Filtro local de columna",
localFilterFor: "Filtro local 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",
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...",
filterTypedValue: "Usar '{value}'",
value: "Valor",
@ -599,6 +693,8 @@ export default {
filterChangedRows: "Modificadas",
page: "Página {page}",
rowsPerPage: "Filas por página",
customRowsPerPage: "Filas personalizadas",
applyPageSize: "Aplicar",
save: "Guardar",
discard: "Descartar",
dismiss: "Cerrar",
@ -686,6 +782,11 @@ export default {
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",
@ -695,15 +796,43 @@ export default {
columnDetails: "Detalles de columna",
tableInfoSearch: "Buscar...",
tableInfoNoResults: "Sin resultados",
tableInfo: "Información de tabla",
tableInfoColumns: "Columnas",
tableInfoIndexes: "Índices",
tableInfoForeignKeys: "Claves foráneas",
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.",
queryEditReady: "Editable",
queryEditReadyHint: 'Este resultado de una sola tabla proviene de "{table}". Puedes editar, eliminar o agregar filas, luego usa la acción de cambios pendientes para guardar.',
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": "JOINs, múltiples tablas y subconsultas no pueden asignarse de forma segura a una fila de origen.",
"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 están limitados a 10.000 filas. Usa LIMIT/OFFSET en tu consulta para paginar.",
},
@ -725,6 +854,13 @@ export default {
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",
delete: "Eliminar",
},
welcome: {
@ -756,6 +892,9 @@ export default {
close: "Cerrar",
cancel: "Cancelar",
save: "Guardar",
copy: "Copiar",
import: "Importar",
remove: "Eliminar",
retry: "Reintentar",
more: "Más",
done: "Listo",
@ -893,6 +1032,7 @@ export default {
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",
model: "Modelo",
browseModels: "Explorar modelos",
@ -941,6 +1081,22 @@ export default {
thinking: "Procesando...",
reasoningProcess: "Proceso de razonamiento",
stopGenerating: "Detener generación",
tableMentionEmpty: "Sin tablas coincidentes",
tableMentionPlaceholderHint: "Escribe {'@'} para mencionar tablas 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",
@ -948,10 +1104,45 @@ export default {
proposalConfirmYes: "Sí, continuar",
proposalConfirmNo: "No, gracias",
proposalConfirmTitle: "Confirmación de acción requerida",
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.",
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.",
codexCliPath: "Ruta de Codex CLI",
codexCliPathHint: "Déjalo vacío para usar codex desde PATH. Inicia sesión por separado con codex login.",
actions: {
generate: "Generar SQL",
explain: "Explicar SQL",
@ -981,7 +1172,11 @@ export default {
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",
duplicateConnection: "Duplicar conexión",
instanceInfo: "Información de la instancia",
newQuery: "Nueva consulta",
newSql: "Nuevo SQL",
generateSql: "Generar SQL",
@ -999,6 +1194,7 @@ export default {
refreshTab: "Actualizar datos",
renameTab: "Renombrar pestaña",
duplicateTab: "Duplicar pestaña",
compactTabTitle: "Acortar títulos de pestañas",
closeTab: "Cerrar pestaña",
closeOtherTabs: "Cerrar otras pestañas",
closeAllTabs: "Cerrar todas las pestañas",
@ -1043,6 +1239,10 @@ export default {
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.',
confirmEmptyTableTitle: "Vaciar tabla",
@ -1124,6 +1324,18 @@ export default {
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",
@ -1166,6 +1378,8 @@ export default {
},
tree: {
savedSql: "Biblioteca SQL",
userAdmin: "Usuarios y Privilegios",
linkedServers: "Servidores vinculados",
defaultDatabase: "Base predeterminada",
columns: "Columnas",
indexes: "Índices",
@ -1173,6 +1387,7 @@ export default {
triggers: "Disparadores",
tables: "Tablas",
views: "Vistas",
materializedViews: "Vistas materializadas",
procedures: "Procedimientos",
functions: "Funciones",
sequences: "Secuencias",
@ -1181,6 +1396,51 @@ export default {
loadMore: "Cargar más...",
objectBrowser: "Explorar en el navegador de objetos ({count})",
},
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",
applyFailed: "Ejecución fallida: {message}",
},
objects: {
all: "Todos",
tables: "Tablas",
@ -1244,6 +1504,8 @@ export default {
configureColumnTemplates: "Configurar campos predefinidos",
presetFieldsTemplate: "Conjunto de campos predefinidos",
addIndex: "Agregar índice",
addForeignKey: "Agregar clave foránea",
addTrigger: "Agregar disparador",
columnName: "Columna",
dataType: "Tipo",
typePlaceholder: "Seleccionar o escribir...",
@ -1267,6 +1529,15 @@ export default {
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",
@ -1317,6 +1588,78 @@ export default {
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: "1:N",
cardinalityManyToOne: "N:1",
cardinalityOneToOne: "1: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",
},
etcd: {
prefixPlaceholder: "Prefijo, ej. /app/",
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",
saved: "Clave guardada",
deleted: "Clave eliminada",
base64Readonly: "Los valores Base64 son de solo lectura en esta versión.",
},
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",
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: {
selectKey: "Selecciona una clave para ver su valor",
@ -1433,6 +1776,27 @@ export default {
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}",
},
mongo: {
documents: "{count} documentos",
@ -1449,6 +1813,21 @@ export default {
edit: "Editar",
documentView: "Vista de documento",
tableView: "Vista de tabla",
filterPlaceholder: "Filtro...",
sortPlaceholder: "Orden...",
},
vector: {
collectionFallback: "colección",
productCollection: "Colección de {product}",
browse: "Examinar",
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.",
},
history: {
title: "Historial",
@ -1460,6 +1839,7 @@ export default {
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.",
@ -1598,6 +1978,13 @@ export default {
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}",
},
tableImport: {
title: "Importar datos a tabla",
@ -1774,6 +2161,7 @@ export default {
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",
@ -1800,6 +2188,11 @@ export default {
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...",
@ -1823,6 +2216,55 @@ export default {
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",
@ -1840,6 +2282,22 @@ export default {
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",
},
schemaDiff: {
optionsTitle: "Opciones de comparación",
@ -2041,6 +2499,7 @@ export default {
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",
selectTheme: "Seleccionar tema...",
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.",
@ -2061,6 +2520,10 @@ export default {
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ápida 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.",
debugLogsCopy: "Copiar logs",
@ -2170,6 +2633,8 @@ export default {
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",
@ -2186,6 +2651,13 @@ export default {
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",
shortcutFind: "Buscar",
@ -2326,6 +2798,8 @@ export default {
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",
@ -2334,6 +2808,16 @@ export default {
usageAgentDrivers: "Agentes de driver integrados",
usageJdbcPlugin: "Plugin JDBC",
usageJdbcDriverJars: "JARs de driver JDBC",
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",
@ -2451,12 +2935,26 @@ export default {
exportSuccess: "Base de datos exportada exitosamente",
exportError: "Error al exportar: {error}",
exportCancelled: "Exportación cancelada",
filterTables: "Buscar tablas...",
runInBackground: "Ejecutar en segundo plano",
},
nacos: {
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",
@ -2560,4 +3058,4 @@ export default {
test: "Probar",
readOnly: "Solo lectura",
},
};
});

View File

@ -0,0 +1,30 @@
import en from "./en";
type LocaleMessages = Record<string, unknown>;
function cloneMessage(value: unknown): unknown {
if (value && typeof value === "object" && !Array.isArray(value)) {
return mergeMessages(value as LocaleMessages, {});
}
return value;
}
function mergeMessages(base: LocaleMessages, override: LocaleMessages): LocaleMessages {
const result: LocaleMessages = {};
for (const [key, value] of Object.entries(base)) {
result[key] = cloneMessage(value);
}
for (const [key, value] of Object.entries(override)) {
const baseValue = result[key];
if (baseValue && value && typeof baseValue === "object" && typeof value === "object" && !Array.isArray(baseValue) && !Array.isArray(value)) {
result[key] = mergeMessages(baseValue as LocaleMessages, value as LocaleMessages);
} else {
result[key] = value;
}
}
return result;
}
export function withEnglishFallback(messages: LocaleMessages): LocaleMessages {
return mergeMessages(en as LocaleMessages, messages);
}

View File

@ -1,4 +1,6 @@
export default {
import { withEnglishFallback } from "./fallback";
export default withEnglishFallback({
app: {
name: "DBX",
},
@ -34,6 +36,8 @@ export default {
formatSqlFailed: "Impossibile formattare SQL",
keywordCaseLower: "Usa parole chiave SQL minuscole",
keywordCaseUpper: "Usa parole chiave SQL maiuscole",
previewSql: "Anteprima SQL",
hidePreviewSql: "Nascondi anteprima SQL",
saveSql: "Salva nella Libreria SQL",
openSql: "Apri file SQL",
theme: "Tema",
@ -163,6 +167,9 @@ export default {
database: "Database",
databasePlaceholder: "Opzionale",
databasePlaceholderWithDefault: "Opzionale, predefinito {database}",
userAdmin: "Utenti e Privilegi",
linkedServers: "Server Collegati",
materializedViews: "Viste Materializzate",
defaultDatabase: "DB Predefinito",
authDatabase: "DB di Autenticazione",
authDatabasePlaceholder: "Opzionale, spesso admin",
@ -179,6 +186,8 @@ export default {
driverName: "Nome Driver",
driverNamePlaceholder: "Nome del fornitore o dell'ambiente",
urlParams: "Parametri URL",
gbaseServer: "GBASEDBTSERVER",
informixServer: "INFORMIXSERVER",
sslEnable: "Abilita connessione crittografata",
caCertPath: "Certificato CA",
caCertPathPlaceholder: "Opzionale, es. ~/.yandex/RootCA.crt",
@ -236,6 +245,23 @@ export default {
redisSentinelTls: "TLS Sentinel",
redisSentinelTlsHint: "Usa TLS quando ti connetti ai nodi Sentinel",
redisKeySeparator: "Separatore namespace chiavi",
etcdEndpoints: "Endpoint",
etcdEndpointsHint: "Un endpoint per riga. Lascia vuoto per usare l'host e la porta sopra.",
etcdCaCertPlaceholder: "/percorso/per/ca.crt",
etcdCaCertBrowse: "Scegli certificato CA",
etcdClientAuth: "Autenticazione Client",
etcdClientCertPlaceholder: "/percorso/per/client.crt",
etcdClientKeyPlaceholder: "/percorso/per/client.key",
etcdClientCertHint: "Il certificato client e la chiave privata devono essere forniti insieme quando etcd richiede mTLS.",
etcdClientCertBrowse: "Scegli certificato client",
etcdClientKeyBrowse: "Scegli chiave privata client",
etcdClientCertPairRequired: "Il certificato client e la chiave privata devono essere forniti insieme.",
zookeeperConnectString: "Stringa di connessione",
zookeeperConnectStringHint: "Voci host:porta separate da virgola o da riga. Lascia vuoto per usare l'host e la porta sopra.",
zookeeperCreateModePersistent: "Persistente",
zookeeperCreateModeEphemeral: "Effimero",
zookeeperCreateModePersistentSequential: "Persistente Sequenziale",
zookeeperCreateModeEphemeralSequential: "Effimero Sequenziale",
nacosConsoleUrl: "URL console",
nacosConsoleUrlHint: "Usa l'indirizzo console/admin API di Nacos. Nacos 3 Docker di solito espone la console su 8085; distribuzioni più vecchie possono condividere 8848 con la porta di servizio.",
nacosConsoleUrlRequired: "L'URL console Nacos è obbligatorio",
@ -336,6 +362,8 @@ export default {
jdbcDriverClassPlaceholder: "La maggior parte dei driver si registra automaticamente; usa com.vendor.jdbc.Driver si necessario",
jdbcDriverPaths: "JAR del Driver",
jdbcDriverSelectPlaceholder: "Scegli il driver importato",
jdbcManualClasspath: "Classpath manuale",
jdbcManualClasspathCount: "{count} percorsi",
jdbcDriverPathsPlaceholder: "/percorso/per/driver.jar\n/percorso/per/un-altro-driver.jar",
jdbcDriverBrowse: "Scegli file JAR del driver JDBC",
jdbcDocs: "Visualizza documentazione JDBC",
@ -363,13 +391,18 @@ export default {
showResultsPane: "Mostra risultati",
hideResultsPane: "Nascondi risultati",
noDatabase: "Nessun database selezionato",
unsavedChangesTitle: "Modifiche non salvate",
unsavedChangesMessage: "Questa scheda ha modifiche non salvate che andranno perse se chiudi. Salvare prima di chiudere?",
discardChanges: "Scarta",
selectConnection: "Seleziona connessione",
searchConnection: "Cerca connessioni...",
selectDatabase: "Seleziona database",
selectDatabaseRequired: "Seleziona prima un database",
searchDatabase: "Cerca database...",
selectSchema: "Seleziona schema",
setDefaultDatabase: "Imposta Predefinito",
defaultDatabase: "Predefinito",
clearDatabase: "Cancella database",
completion: {
nullValue: "Valore NULL",
isNull: "Verifica se NULL",
@ -448,8 +481,13 @@ export default {
table: "Tabella",
tableData: "Dati Tabella",
redis: "Redis",
etcd: "etcd",
zookeeper: "ZooKeeper",
mongo: "Mongo",
vector: "Vector",
objects: "Oggetti",
users: "Utenti e Privilegi",
executionSummary: "Riepilogo Esecuzione",
tooltipTitle: "Titolo:",
tooltipConnection: "Connessione:",
tooltipDatabase: "Database:",
@ -457,11 +495,40 @@ export default {
tooltipCollection: "Collezione:",
tooltipSchema: "Schema:",
resultN: "Risultato {n}",
runN: "Esegui {n}",
resultRuns: "Esecuzioni risultati",
removeRun: "Rimuovi esecuzione {n}",
autoKeepResults: "Mantieni automaticamente i risultati",
autoKeepResultsEnabled: "Mantieni risultati abilitato",
autoKeepResultsDisabled: "Mantieni risultati disabilitato",
missingResultRun: "Questo risultato non e piu disponibile",
exportResultArchive: "Salva Archivio Risultati",
importResultArchive: "Importa Risultati",
importedResultArchive: "Risultati importati",
resultArchiveExported: "Risultati esportati",
resultArchiveImported: "Risultati importati",
resultArchiveUnavailable: "Nessun risultato salvato disponibile per l'esportazione",
resultArchiveImportInvalid: "Questo archivio risultati non puo essere aperto",
resultArchiveExportFailed: "Esportazione risultati non riuscita: {message}",
resultArchiveImportFailed: "Importazione risultati non riuscita: {message}",
scrollLeft: "Scorri schede a sinistra",
scrollRight: "Scorri schede a destra",
openTabs: "Schede aperte",
openDataTabs: "Tabelle aperte",
},
executionSummary: {
empty: "Nessun riepilogo esecuzione",
executing: "Esecuzione...",
statement: "Istruzione",
type: "Tipo",
rows: "Righe",
affected: "Interessate",
time: "Tempo",
success: "Riuscita",
error: "Errore",
returnedTable: "Restituita una tabella con {count} colonne",
noTable: "Nessuna tabella restituita",
},
chart: {
title: "Grafico",
type: "Tipo",
@ -533,6 +600,11 @@ export default {
exportFailed: "Esportazione non riuscita: {message}",
copied: "Copiato",
copyFailed: "Copia non riuscita: {message}",
previewSqlEmpty: "Nessuna modifica SQL in sospeso da visualizzare",
dataUnavailableHintPrefix: "Premi ",
dataUnavailableHintSuffix: " o fai clic su Aggiorna qui sotto per ricaricare.",
undoChange: "Annulla modifica",
redoChange: "Ripeti modifica",
domRenderMode: "DOM",
canvasRenderMode: "Canvas",
renderModeHint: "Passa dal rendering Canvas al grid di fallback DOM.",
@ -786,6 +858,13 @@ export default {
showMore: "Mostra altri {count}",
showLess: "Mostra meno",
delete: "Rimuovi",
failedTooltip: "{count} attività in background non riuscita | {count} attività in background non riuscite",
databaseExportTitle: "Backup database: {name}",
sqlFileTitle: "File SQL: {name}",
dataTransferTitle: "Trasferimento dati: {name}",
objectsCount: "{current} / {total} oggetti",
tablesCount: "{current} / {total} tabelle",
statementsCount: "{done} riuscite, {failed} non riuscite",
},
welcome: {
title: "Area di Lavoro Database",
@ -816,6 +895,9 @@ export default {
close: "Chiudi",
cancel: "Annulla",
save: "Salva",
copy: "Copia",
import: "Importa",
remove: "Rimuovi",
retry: "Riprova",
more: "Altro",
done: "Fatto",
@ -1055,6 +1137,11 @@ export default {
proxyEnable: "Invia richieste AI tramite proxy",
proxyUrl: "URL Proxy",
anthropicMessagesHint: "Le API compatibili con Anthropic Messages di solito usano /v1/messages.",
contextWindow: "Finestra di Contesto",
contextWindowAuto: "Auto (rileva dal nome del modello)",
contextWindowHint: "Token. Lascia vuoto per il rilevamento automatico. Imposta manualmente per modelli locali/personalizzati.",
codexCliPath: "Percorso Codex CLI",
codexCliPathHint: "Lascia vuoto per usare codex dal PATH. Esegui login separatamente con codex login.",
enableThinking: "Pensiero (Thinking)",
enableThinkingOn: "Abilitato",
enableThinkingOff: "Disabilitato",
@ -1088,6 +1175,10 @@ export default {
editConnection: "Modifica Connessione",
revealDatabaseFile: "Mostra nel file manager",
selectVisibleDatabases: "Seleziona Database Visibili",
configureVisibleObjects: "Filtro Oggetti Visibili",
userAdmin: "Utenti e Privilegi",
openUserAdmin: "Apri Utenti e Privilegi",
instanceInfo: "Informazioni Istanza",
duplicateConnection: "Duplica Connessione",
newQuery: "Nuova Query",
newSql: "Nuovo SQL",
@ -1290,6 +1381,8 @@ export default {
},
tree: {
savedSql: "Libreria SQL",
userAdmin: "Utenti e Privilegi",
linkedServers: "Server Collegati",
defaultDatabase: "DB Predefinito",
columns: "Colonne",
indexes: "Indici",
@ -1297,6 +1390,7 @@ export default {
triggers: "Trigger",
tables: "Tabelle",
views: "Viste",
materializedViews: "Viste Materializzate",
procedures: "Procedure",
functions: "Funzioni",
sequences: "Sequenze",
@ -1305,6 +1399,51 @@ export default {
loadMore: "Carica altro...",
objectBrowser: "Sfoglia in Esplora Oggetti ({count})",
},
userAdmin: {
title: "Utenti e Privilegi",
unsupported: "Connessioni compatibili con MySQL e PostgreSQL sono supportate. SQL Server, Oracle e altri modelli di autorizzazione possono essere aggiunti in seguito.",
newUser: "Nuovo Utente",
anonymous: "Anonimo",
roleName: "Nome ruolo",
allowLogin: "Consenti login",
searchUser: "Cerca utente o host",
loadingUsers: "Caricamento utenti...",
loadingGrants: "Caricamento privilegi...",
emptyUsers: "Nessun utente trovato, oppure l'account corrente non puo leggere l'elenco utenti.",
pluginUnknown: "Plugin di autenticazione sconosciuto",
grants: "Privilegi",
noGrants: "Nessun privilegio trovato",
privilegeEditor: "Editor Privilegi",
privilegeHint: "Scegli privilegi, database e tabella, quindi visualizza l'anteprima SQL prima di applicare. * indica globale o tutte le tabelle.",
database: "Database",
schema: "Schema",
table: "Tabella",
scope: "Ambito concessione",
scopeDatabase: "Database",
scopeSchema: "Schema",
scopeTable: "Tabella",
scopeRole: "Appartenenza ruolo",
memberRole: "Ruolo membro",
privileges: "Privilegi",
grantOption: "Consenti ulteriori concessioni (WITH GRANT OPTION)",
adminOption: "Consenti gestione appartenenza (WITH ADMIN OPTION)",
grant: "Concedi",
revoke: "Revoca",
username: "Nome utente",
host: "Host",
changePassword: "Cambia Password",
newPassword: "Nuova password",
lock: "Blocca",
unlock: "Sblocca",
disableLogin: "Disabilita Login",
enableLogin: "Abilita Login",
dropUser: "Elimina Utente",
previewSql: "Anteprima SQL",
sqlPreview: "Anteprima SQL",
applySql: "Applica SQL",
applySuccess: "Privilegi utente aggiornati",
applyFailed: "Esecuzione non riuscita: {message}",
},
objects: {
all: "Tutti",
tables: "Tabelle",
@ -1391,6 +1530,17 @@ export default {
includedColumns: "Incluse",
includedColumnsPlaceholder: "Seleziona colonne...",
filter: "Filtro",
addForeignKey: "Aggiungi Chiave Esterna",
addTrigger: "Aggiungi Trigger",
foreignKeyName: "Chiave esterna",
referencedSchema: "Schema rif.",
referencedTable: "Tabella rif.",
referencedColumn: "Colonna rif.",
onDelete: "On delete",
onUpdate: "On update",
defaultAction: "Predefinito",
triggerName: "Trigger",
triggerStatement: "Istruzione trigger",
primary: "Primario",
drop: "Elimina",
restore: "Ripristina",
@ -1432,6 +1582,26 @@ export default {
relationshipsCount: "{count} relazioni",
tableMode: "Visualizzazione Tabella",
engineeringMode: "ER Ingegneristico",
modelRelationships: "Relazioni Modello",
copyJoinSql: "Copia SQL",
customRelationshipsCount: "{count} modellati",
relationshipName: "Nome",
relationshipNamePlaceholder: "Opzionale",
sourceTable: "Tabella sorgente",
sourceColumn: "Colonna sorgente",
targetTable: "Tabella destinazione",
targetColumn: "Colonna destinazione",
cardinality: "Cardinalita",
cardinalityOneToMany: "1:N",
cardinalityManyToOne: "N:1",
cardinalityOneToOne: "1:1",
addRelationship: "Aggiungi relazione",
removeRelationship: "Rimuovi relazione",
relationshipIncomplete: "Seleziona sia la colonna sorgente che quella di destinazione",
relationshipSelfInvalid: "Una relazione non puo avere come destinazione la stessa colonna",
relationshipExists: "Questa relazione esiste gia",
relationshipAdded: "Relazione aggiunta",
noJoinSql: "Nessun SQL di relazione da copiare",
allTables: "Tutte le Tabelle",
relatedTables: "Tabelle Correlate",
moreColumns: "+ {count} colonne",
@ -1442,6 +1612,58 @@ export default {
zoomOut: "Rimpicciolisci",
resetLayout: "Reimposta layout",
},
etcd: {
prefixPlaceholder: "Prefisso, es. /app/",
newKey: "Nuova Chiave",
loadingKeys: "Caricamento chiavi...",
empty: "Nessuna chiave trovata",
loadMore: "Carica altro",
selectKey: "Seleziona una chiave per visualizzarne il valore",
loadingValue: "Caricamento valore...",
notFound: "Chiave non trovata",
edit: "Modifica",
editKey: "Modifica Chiave",
delete: "Elimina",
deleteTitle: "Elimina chiave etcd",
keyPlaceholder: "/percorso/per/la/chiave",
keyRequired: "La chiave e obbligatoria",
saved: "Chiave salvata",
deleted: "Chiave eliminata",
base64Readonly: "I valori Base64 sono in sola lettura in questa versione.",
},
zookeeper: {
prefixPlaceholder: "Prefisso percorso, es. /app/",
newKey: "Nuovo Znode",
loadingKeys: "Caricamento znodes...",
empty: "Nessuno znode trovato",
loadMore: "Carica altro",
selectKey: "Seleziona uno znode per visualizzarne il valore",
loadingValue: "Caricamento valore...",
notFound: "Znode non trovato",
edit: "Modifica",
editKey: "Modifica Znode",
delete: "Elimina",
deleteTitle: "Elimina znode ZooKeeper",
keyPlaceholder: "/percorso/per/znode",
keyRequired: "Il percorso znode e obbligatorio",
saved: "Znode salvato",
deleted: "Znode eliminato",
base64Readonly: "I valori Base64 sono in sola lettura in questa versione.",
createMode: "Modalita Creazione",
createModePersistent: "Persistente",
createModeEphemeral: "Effimero",
createModePersistentSequential: "Persistente Sequenziale",
createModeEphemeralSequential: "Effimero Sequenziale",
add: "Aggiungi",
value: "Valore",
metadata: "Informazioni Nodo",
prettyJson: "Formatta",
invalidJson: "JSON non valido",
summaryRevision: "rev",
summaryVersion: "ver",
summaryLease: "lease",
summarySize: "dimensione",
},
redis: {
selectKey: "Seleziona una chiave per visualizzarne il valore",
noKeys: "Nessuna chiave trovata",
@ -1535,6 +1757,9 @@ export default {
jsonView: "Visualizzazione JSON",
rawContent: "Contenuto grezzo",
wordWrap: "A capo automatico",
formatJson: "Formatta",
compressJson: "Comprimi",
jsonFormatError: "Formato JSON non valido",
clearHistory: "Cancella cronologia comandi",
historyCleared: "Cronologia comandi Redis cancellata",
blockedCommand: "Il comando {command} è bloccato per sicurezza. Disattiva l'icona scudo nella barra degli strumenti per consentirlo.",
@ -1559,6 +1784,22 @@ export default {
pubsubSend: "Invia",
pubsubPublishFailed: "Pubblicazione fallita: {error}",
pubsubWsConnectFailed: "Connessione WebSocket fallita: {error}",
slowlog: "Slow Log",
slowlogCount: "Conteggio",
slowlogQuery: "Query",
slowlogNode: "Nodo",
slowlogSelectNode: "Seleziona un nodo",
slowlogNodeRequired: "Seleziona prima un nodo",
slowlogEmpty: "Fai clic su Query per recuperare le voci dello slow log",
slowlogFetchFailed: "Recupero slow log non riuscito: {error}",
slowlogColumnId: "ID",
slowlogColumnTimestamp: "Timestamp",
slowlogColumnDuration: "Durata (µs)",
slowlogColumnCommand: "Comando",
slowlogColumnClientAddr: "Client",
slowlogColumnClientName: "Nome Client",
slowlogTotal: "{count} voci",
slowlogDetailTitle: "Voce Slow Log #{id}",
},
mongo: {
documents: "{count} documenti",
@ -1578,6 +1819,19 @@ export default {
filterPlaceholder: "Filtra...",
sortPlaceholder: "Ordina...",
},
vector: {
collectionFallback: "collezione",
productCollection: "Collezione {product}",
browse: "Sfoglia",
upsert: "Upsert",
delete: "Elimina",
reset: "Reimposta",
refresh: "Aggiorna",
run: "Esegui",
apply: "Applica",
requestEditor: "Editor richieste vettoriali",
operationSuccess: "Operazione completata. L'anteprima della collezione e stata aggiornata.",
},
history: {
title: "Cronologia",
search: "Cerca nella cronologia...",
@ -1729,6 +1983,11 @@ export default {
tableError: "Tabella {table} non riuscita: {error}",
overallProgress: "Progresso complessivo",
dataTransfer: "Trasferimento Dati",
runInBackground: "Esegui in background",
newTask: "Nuovo trasferimento",
editConfig: "Modifica config",
retry: "Riprova",
targetTableBusy: "Un altro trasferimento sta gia scrivendo le tabelle di destinazione: {tables}",
},
tableImport: {
title: "Importa Dati Tabella",
@ -1923,6 +2182,7 @@ export default {
error: "Errore",
cancelled: "Annullato",
},
runInBackground: "Esegui in background",
},
diff: {
title: "Confronta Schemi",
@ -1954,6 +2214,142 @@ export default {
swap: "Inverti sorgente e destinazione",
syncProgress: "Esecuzione in corso: {current}/{total}",
syncSummary: "Riuscite {success}, non riuscite {failed}",
connection: "Connessione",
database: "Database",
schema: "Schema",
recentConfigs: "Configurazioni Recenti",
selectRecentConfig: "Seleziona configurazione recente",
configSaved: "Configurazione salvata",
configDeleted: "Configurazione eliminata",
sourceObject: "Oggetto sorgente",
targetObject: "Oggetto destinazione",
operation: "Operazione",
selectedCount: "{selected} selezionati di {total}",
saveConfig: "Salva configurazione",
loadConfig: "Carica configurazione",
options: "Opzioni",
ddlCompare: "Confronto DDL",
deployScript: "Script di deploy",
deployScriptAll: "Tutti gli script di deploy",
deployScriptDesc: "Script SQL per l'oggetto selezionato",
deployScriptAllDesc: "Script SQL per tutti gli oggetti selezionati",
copy: "Copia",
execute: "Esegui",
executeAll: "Esegui tutto",
executeSuccess: "Eseguito con successo",
selectObjectToCompare: "Seleziona un oggetto per visualizzare il confronto DDL",
noDdlAvailable: "Nessun DDL disponibile",
noDeployScript: "Nessuno script di deploy",
noDeployScriptAll: "Nessuno script di deploy per gli oggetti selezionati",
sourceDdl: "DDL Sorgente",
targetDdl: "DDL Destinazione",
objectNotExistsInSource: "Questo oggetto non esiste nel database sorgente",
objectNotExistsInTarget: "Questo oggetto non esiste nel database di destinazione",
nextStepDeploy: "Avanti (Revisiona Deploy)",
deployReview: "Revisione Deploy",
backToResult: "Torna al Risultato",
copyScript: "Copia Script",
exportSql: "Esporta .sql",
deployToServer: "Distribuisci sul Server",
deployConfirmTitle: "Conferma Finale",
deployConfirmMessage: "Stai per distribuire le seguenti modifiche al database di destinazione",
targetServer: "Server Destinazione",
dbVersion: "Versione Database",
targetDatabase: "Database Destinazione",
targetSchema: "Schema Destinazione",
useTransaction: "Esegui in transazione (rollback automatico in caso di errore)",
confirmDeploy: "Conferma Deploy",
exportSuccess: "Esportazione riuscita",
create: "Crea",
delete: "Elimina",
modify: "Modifica",
cancel: "Annulla",
prevStep: "Precedente",
recompare: "Confronta di nuovo",
maximize: "Massimizza",
restore: "Ripristina",
operationLabel: {
modify: "Oggetti da modificare",
create: "Oggetti da creare",
delete: "Oggetti da eliminare",
none: "Nessuna operazione",
},
objectKindLabel: {
table: "Tabella",
view: "Vista",
function: "Funzione",
sequence: "Sequenza",
rule: "Regola",
owner: "Proprietario",
index: "Indice",
foreignKey: "Chiave Esterna",
trigger: "Trigger",
},
noObjectsSelected: "Seleziona gli oggetti da distribuire",
deploySuccess: "Deploy Riuscito",
deployFailed: "Deploy Non Riuscito",
deploySuccessMessage: "Script SQL eseguito con successo sul database di destinazione",
deployFailedMessage: "Si e verificato un errore durante l'esecuzione",
affectedRows: "Righe Interessate",
executedStatements: "Istruzioni Eseguite",
serverVersion: "Versione Server",
info: "Info",
connType: "Tipo connessione",
connName: "Nome connessione",
host: "Host",
port: "Porta",
copied: "Copiato negli appunti",
saveConfigPrompt: "Inserisci nome configurazione:",
close: "Chiudi",
},
schemaDiff: {
optionsTitle: "Opzioni di Confronto",
selectConfig: "Seleziona configurazione",
newConfigName: "Nuova Configurazione",
newConfig: "Nuova Configurazione",
renameConfig: "Rinomina Configurazione",
duplicateConfig: "Duplica Configurazione",
deleteConfig: "Elimina Configurazione",
exportConfig: "Esporta Configurazione",
exportAllConfigs: "Esporta Tutte le Configurazioni",
importConfig: "Importa Configurazione",
importFromFile: "Importa da File",
importFromText: "Importa da Testo",
importPlaceholder: "Incolla configurazione JSON...",
importInvalidJson: "Formato JSON non valido",
configName: "Nome Configurazione",
tableFilter: "Filtro tabella",
tableFilterHint: "Corrisponde ai nomi completi delle tabelle con regex. Non digitare /.../. ^ indica inizia con, $ indica finisce con, | indica o.",
tableFilterHintShort: "Limita confronto con regex nome tabella",
tableFilterHelp: "Aiuto filtro tabella",
tableFilterHelpRule: "Corrisponde ai nomi completi delle tabelle. Non digitare /.../.",
tableFilterHelpBlank: "Includi vuoto significa tutte le tabelle. Salta vuoto significa nessuna esclusione.",
tableFilterHelpExample: "^user_ significa inizia con user_; _bak$ significa finisce con _bak; a|b significa a o b.",
tableIncludePattern: "Confronta solo tabelle corrispondenti",
tableIncludePatternPlaceholder: "es. ^utente_",
tableExcludePattern: "Salta tabelle corrispondenti",
tableExcludePatternPlaceholder: "es. _bak$",
tableFilterPriority: "Quando entrambi corrispondono",
tableFilterPriorityExclude: "Escludi prevale",
tableFilterPriorityInclude: "Includi prevale",
options: {
tables: "Confronta tabelle",
primaryKeys: "Confronta chiavi primarie",
foreignKeys: "Confronta chiavi esterne",
uniqueKeys: "Confronta chiavi univoche",
checks: "Confronta vincoli check",
exclusions: "Confronta vincoli di esclusione",
views: "Confronta viste",
functions: "Confronta funzioni",
indexes: "Confronta indici",
sequences: "Confronta sequenze",
triggers: "Confronta trigger",
rules: "Confronta regole",
owners: "Confronta proprietari",
cascadeDelete: "Usa CASCADE delete",
sequenceLastValues: "Confronta ultimi valori sequenza",
compareColumnOrder: "Confronta ordine colonne",
},
},
dataCompare: {
title: "Confronta Dati",
@ -2127,6 +2523,10 @@ export default {
closeActionMinimize: "Riduci a icona",
updateNotificationsEnabled: "Abilita promemoria aggiornamenti",
updateNotificationsEnabledDescription: "Se disattivato, DBX non controllerà automaticamente gli aggiornamenti dell'app o dei driver e non mostrerà badge. I controlli manuali restano disponibili.",
updateDownloadSource: "Fonte download aggiornamenti",
updateDownloadSourceDescription: "Scegli da dove scaricare gli installer degli aggiornamenti. La fonte ufficiale è consigliata; CNB può essere più veloce sulle reti della Cina continentale.",
updateDownloadSourceOfficial: "Fonte ufficiale (consigliata)",
updateDownloadSourceCnb: "CNB",
debugLoggingEnabled: "Abilita log di debug",
debugLoggingEnabledDescription: "Registra log diagnostici locali lato utente durante l'analisi delle segnalazioni. Disattivato per impostazione predefinita.",
debugLogsCopy: "Copia log",
@ -2252,6 +2652,13 @@ export default {
redisScanPageSize: "Conteggio scansione Redis",
redisScanPageSizeDescription: "Chiavi richieste per pagina SCAN di Redis durante la navigazione delle chiavi.",
redisScanPageSizeOption: "{count} chiavi",
exportRowLimitEnabled: "Limita righe esportate",
exportRowLimitEnabledDescription: "Quando attivo, l'esportazione dei risultati di query e dei dati tabella si ferma al limite di righe sotto.",
exportRowLimit: "Limite righe esportazione dati",
exportRowLimitDescription: "Numero massimo di righe per l'esportazione dei risultati di query e dei dati tabella.",
exportRowLimitUnlimited: "Illimitato",
queryExportKeysetOptimizationEnabled: "Prova ottimizzazione keyset",
queryExportKeysetOptimizationEnabledDescription: "Si applica solo a query a tabella singola riconosciute in sicurezza; le query complesse ricadono automaticamente.",
exportBatchSize: "Dimensione del lotto di esportazione",
exportBatchSizeDescription: "Righe recuperate per lotto durante l'esportazione dei dati della tabella (100-100000).",
exportSection: "Esportazione",
@ -2394,6 +2801,8 @@ export default {
progressJreExtract: "Estrazione JRE...",
progressDownloadJre: "Download JRE in corso",
progressDownloadDriver: "Download driver in corso",
progressDownloadJdbcPlugin: "Download plugin JDBC in corso",
progressJdbcPluginExtract: "Installazione plugin JDBC...",
usageTitle: "Utilizzo dello spazio di archiviazione",
usageTotal: "Totale {size}",
usageTotalLabel: "Totale",
@ -2424,6 +2833,16 @@ export default {
jreUninstallSuccess: "JRE {jre} disinstallato",
chooseJdbcPluginZip: "Scegli il file zip del plugin JDBC",
agentDrivers: "Driver integrati",
offlineDownloadHint: "Per ambienti air-gapped, scarica i pacchetti driver offline su una macchina connessa a Internet, quindi importali qui.",
offlineDownloadLink: "Download driver offline",
searchDrivers: "Cerca nome driver, tipo, versione...",
searchJdbcDrivers: "Cerca nome o percorso driver JDBC...",
jdbcMavenCoordinatePlaceholder: "Coordinata Maven, es. org.postgresql:postgresql:42.7.7",
jdbcMavenInstall: "Installa da Maven",
jdbcMavenInstallSuccess: "Driver JDBC Maven installato",
jdbcSourceMaven: "Maven",
jdbcSourceManual: "Manuale",
noMatchingDrivers: "Nessun driver corrispondente.",
jdbcDrivers: "Driver JDBC",
importing: "Importazione in corso...",
importOfflinePackage: "Importa pacchetto offline",
@ -2520,8 +2939,21 @@ export default {
exportSuccess: "Database esportato con successo",
exportError: "Esportazione non riuscita: {error}",
exportCancelled: "Esportazione annullata",
runInBackground: "Esegui in background",
},
nacos: {
createNamespace: "Crea Namespace",
editNamespace: "Modifica Namespace",
creatingNamespace: "Creazione...",
updatingNamespace: "Aggiornamento...",
namespaceCreated: 'Namespace "{name}" creato',
namespaceUpdated: 'Namespace "{name}" aggiornato',
namespaceId: "ID Namespace",
namespaceIdPlaceholder: "Lascia vuoto per generazione automatica Nacos",
namespaceName: "Nome Namespace",
namespaceNamePlaceholder: "Inserisci un nome namespace",
namespaceDesc: "Descrizione",
namespaceDescPlaceholder: "Predefinito al nome namespace",
configs: "Configurazioni",
services: "Servizi",
raw: "Raw",
@ -2629,4 +3061,4 @@ export default {
test: "Test",
readOnly: "Sola lettura",
},
};
});

View File

@ -1,4 +1,6 @@
export default {
import { withEnglishFallback } from "./fallback";
export default withEnglishFallback({
app: {
name: "DBX",
},
@ -370,6 +372,12 @@ export default {
colorBlue: "青",
colorPurple: "紫",
colorCustom: "カスタム色",
zookeeperConnectString: "接続文字列",
zookeeperConnectStringHint: "カンマまたは改行区切りの host:port エントリ。空欄の場合は上のホストとポートを使用します。",
zookeeperCreateModePersistent: "永続",
zookeeperCreateModeEphemeral: "エフェメラル",
zookeeperCreateModePersistentSequential: "永続順序",
zookeeperCreateModeEphemeralSequential: "エフェメラル順序",
},
editor: {
pressToExecute: "{mod}+Enter で実行",
@ -462,6 +470,7 @@ export default {
currentCommand: "Current command",
allCommands: "All commands",
},
selectDatabaseRequired: "先にデータベースを選択してください",
},
tabs: {
sql: "SQL",
@ -500,6 +509,8 @@ export default {
scrollRight: "タブを右にスクロール",
openTabs: "開いているタブ",
openDataTabs: "開いているテーブル",
zookeeper: "ZooKeeper",
vector: "ベクター",
},
executionSummary: {
empty: "実行サマリーはありません",
@ -818,6 +829,11 @@ export default {
},
sortUnsupported: "このSQLは完全な結果の並び替えをサポートしていません。単一のSELECTクエリで再試行してください。",
truncatedHint: "結果は{count}行に切り詰められました。フッターのページネーションを使用するか、1ページあたりの行数を調整してください。",
loadingMore: "さらにデータを読み込み中...",
allLoaded: "すべて読み込み済み",
previewSqlEmpty: "プレビューする保留中のSQL変更はありません",
undoChange: "変更を元に戻す",
redoChange: "変更をやり直す",
},
exportProgress: {
title: "テーブルデータをエクスポート中",
@ -838,6 +854,13 @@ export default {
showMore: "さらに{count}件表示",
showLess: "少なく表示",
delete: "削除",
failedTooltip: "{count}件のバックグラウンドタスクが失敗しました",
databaseExportTitle: "データベースバックアップ: {name}",
sqlFileTitle: "SQLファイル: {name}",
dataTransferTitle: "データ転送: {name}",
objectsCount: "{current} / {total} オブジェクト",
tablesCount: "{current} / {total} テーブル",
statementsCount: "{done}成功、{failed}失敗",
},
welcome: {
title: "データベースワークスペース",
@ -881,6 +904,9 @@ export default {
sequence: "シーケンス",
package: "パッケージ",
packageBody: "パッケージ本体",
copy: "コピー",
import: "インポート",
remove: "削除",
},
quickOpen: {
placeholder: "接続、データベース、テーブル、その他のオブジェクトを検索...",
@ -1027,6 +1053,11 @@ export default {
codexCliEnvValuePlaceholder: "http://proxy:9800",
codexCliEnvInvalidName: "無効な環境変数名: {name}",
codexCliEnvReservedName: "{name}はMCP Server用にDBXが管理しているため、ここでは設定できません。",
contextWindow: "コンテキストウィンドウ",
contextWindowAuto: "自動(モデル名から検出)",
contextWindowHint: "トークン数。空欄で自動検出。ローカル/カスタムモデルは手動設定してください。",
codexCliPath: "Codex CLI パス",
codexCliPathHint: "空欄の場合はPATHからcodexを使用します。codex loginで別途サインインしてください。",
reasoningLevel: "推論レベル",
reasoningLevelDefault: "デフォルト",
reasoningLevelMinimal: "最小",
@ -1312,6 +1343,10 @@ export default {
schemaCommentPlaceholder: "スキーマコメントを入力...",
schemaCommentSaving: "保存中...",
editSchemaCommentSuccess: "スキーマ「{name}」のコメントを更新しました",
configureVisibleObjects: "表示オブジェクトフィルター",
instanceInfo: "インスタンス情報",
viewDdlLoading: "DDLを読み込み中...",
ddlCopied: "DDLをコピーしました",
},
visibleDatabases: {
title: "表示するデータベース",
@ -1357,6 +1392,41 @@ export default {
partitions: "パーティション",
loadMore: "もっと読み込む...",
objectBrowser: "オブジェクトブラウザで参照({count}件)",
linkedServers: "リンクサーバー",
materializedViews: "マテリアライズドビュー",
},
zookeeper: {
prefixPlaceholder: "パスプレフィックス(例: /app/",
newKey: "新しいZnode",
loadingKeys: "znodeを読み込み中...",
empty: "znodeが見つかりません",
loadMore: "さらに読み込む",
selectKey: "znodeを選択して値を表示",
loadingValue: "値を読み込み中...",
notFound: "znodeが見つかりません",
edit: "編集",
editKey: "Znodeを編集",
delete: "削除",
deleteTitle: "ZooKeeper znodeを削除",
keyPlaceholder: "/path/to/znode",
keyRequired: "Znodeパスは必須です",
saved: "Znodeを保存しました",
deleted: "Znodeを削除しました",
base64Readonly: "Base64値はこのバージョンでは読み取り専用です。",
createMode: "作成モード",
createModePersistent: "永続",
createModeEphemeral: "エフェメラル",
createModePersistentSequential: "永続順序",
createModeEphemeralSequential: "エフェメラル順序",
add: "追加",
value: "値",
metadata: "ノード情報",
prettyJson: "整形",
invalidJson: "無効なJSON",
summaryRevision: "rev",
summaryVersion: "ver",
summaryLease: "リース",
summarySize: "サイズ",
},
userAdmin: {
title: "ユーザーと権限",
@ -1710,6 +1780,22 @@ export default {
pubsubSend: "送信",
pubsubPublishFailed: "発行に失敗しました: {error}",
pubsubWsConnectFailed: "WebSocket接続に失敗しました: {error}",
slowlog: "スローログ",
slowlogCount: "件数",
slowlogQuery: "クエリ",
slowlogNode: "ノード",
slowlogSelectNode: "ノードを選択",
slowlogNodeRequired: "先にノードを選択してください",
slowlogEmpty: "クエリをクリックしてスローログエントリを取得",
slowlogFetchFailed: "スローログの取得に失敗しました: {error}",
slowlogColumnId: "ID",
slowlogColumnTimestamp: "タイムスタンプ",
slowlogColumnDuration: "実行時間 (μs)",
slowlogColumnCommand: "コマンド",
slowlogColumnClientAddr: "クライアント",
slowlogColumnClientName: "クライアント名",
slowlogTotal: "{count} エントリ",
slowlogDetailTitle: "スローログエントリ #{id}",
},
mongo: {
documents: "{count}ドキュメント",
@ -1729,6 +1815,19 @@ export default {
filterPlaceholder: "フィルター...",
sortPlaceholder: "並び替え...",
},
vector: {
collectionFallback: "コレクション",
productCollection: "{product} コレクション",
browse: "参照",
upsert: "Upsert",
delete: "削除",
reset: "リセット",
refresh: "更新",
run: "実行",
apply: "適用",
requestEditor: "ベクターリクエストエディタ",
operationSuccess: "操作が完了しました。コレクションプレビューが更新されました。",
},
history: {
title: "履歴",
search: "履歴を検索...",
@ -1880,6 +1979,11 @@ export default {
tableError: "テーブル {table} が失敗しました: {error}",
overallProgress: "全体の進捗",
dataTransfer: "データ転送",
runInBackground: "バックグラウンドで実行",
newTask: "新規転送",
editConfig: "設定を編集",
retry: "リトライ",
targetTableBusy: "別の転送がすでにターゲットテーブルに書き込み中です: {tables}",
},
tableImport: {
title: "テーブルデータをインポート",
@ -2042,6 +2146,7 @@ export default {
generateDataComingSoon: "近日公開",
},
sqlFile: {
runInBackground: "バックグラウンドで実行",
title: "SQLファイルを実行",
file: "ファイル",
selectSqlFile: "SQLファイルを選択",
@ -2162,6 +2267,36 @@ export default {
executedStatements: "実行された文",
serverVersion: "サーバーバージョン",
close: "閉じる",
configDeleted: "設定を削除しました",
sourceObject: "ソースオブジェクト",
targetObject: "ターゲットオブジェクト",
operation: "操作",
selectedCount: "{selected}/{total} 選択中",
saveConfig: "設定を保存",
loadConfig: "設定を読み込む",
options: "オプション",
ddlCompare: "DDL比較",
deployScript: "デプロイスクリプト",
deployScriptAll: "全デプロイスクリプト",
deployScriptDesc: "選択したオブジェクトのSQLスクリプト",
deployScriptAllDesc: "選択した全オブジェクトのSQLスクリプト",
copy: "コピー",
execute: "実行",
executeAll: "すべて実行",
executeSuccess: "正常に実行されました",
noDeployScript: "デプロイスクリプトがありません",
noDeployScriptAll: "選択したオブジェクトにデプロイスクリプトがありません",
prevStep: "前へ",
recompare: "再比較",
maximize: "最大化",
restore: "復元",
info: "情報",
connType: "接続タイプ",
connName: "接続名",
host: "ホスト",
port: "ポート",
copied: "クリップボードにコピーしました",
saveConfigPrompt: "設定名を入力してください:",
},
schemaDiff: {
optionsTitle: "比較オプション",
@ -2634,6 +2769,21 @@ export default {
mcpNpmBoundary: "DBXはMCPステータスの確認と説明のみを行います。インストールとアップグレードはnpmを通じて実行されます。",
mcpRefresh: "再確認",
mcpGuide: "MCPガイド",
updateDownloadSource: "アップデートのダウンロード元",
updateDownloadSourceDescription: "アプリ内アップデートのインストーラーのダウンロード元を選択します。公式ソース推奨。中国本土ではCNBの方が高速な場合があります。",
updateDownloadSourceOfficial: "公式ソース(推奨)",
updateDownloadSourceCnb: "CNB",
infiniteScroll: "無限スクロール読み込み",
infiniteScrollDescription: "テーブルのスクロール時に次のページのデータを自動読み込みします。",
infiniteScrollMaxRows: "無限スクロールの最大行数",
infiniteScrollMaxRowsDescription: "無限スクロールモードで読み込む最大行数1000〜50000。",
exportRowLimitEnabled: "エクスポート行数を制限",
exportRowLimitEnabledDescription: "有効時、クエリ結果とテーブルデータのエクスポートは以下の行数制限で停止します。",
exportRowLimit: "データエクスポートの行数制限",
exportRowLimitDescription: "クエリ結果とテーブルデータのエクスポートの最大行数。",
exportRowLimitUnlimited: "無制限",
queryExportKeysetOptimizationEnabled: "キーセット最適化を試行",
queryExportKeysetOptimizationEnabledDescription: "安全に認識された単一テーブルクエリにのみ適用。複雑なクエリは自動的にフォールバックします。",
aboutDescription: "オープンソースの軽量データベース管理ツール。",
community: "コミュニティ",
qqGroup: "QQグループ",
@ -2764,6 +2914,7 @@ export default {
driverStoreDirSuccess: "{target}を変更しました。再起動中…",
},
databaseExport: {
runInBackground: "バックグラウンドで実行",
title: "データベースをエクスポート",
options: "オプション",
includeStructure: "テーブル構造 (DDL)",
@ -2893,5 +3044,17 @@ export default {
next: "次へ",
test: "テスト",
readOnly: "読み取り専用",
createNamespace: "名前空間を作成",
editNamespace: "名前空間を編集",
creatingNamespace: "作成中...",
updatingNamespace: "更新中...",
namespaceCreated: "名前空間「{name}」を作成しました",
namespaceUpdated: "名前空間「{name}」を更新しました",
namespaceId: "名前空間ID",
namespaceIdPlaceholder: "空欄の場合はNacosが生成",
namespaceName: "名前空間名",
namespaceNamePlaceholder: "名前空間名を入力",
namespaceDesc: "説明",
namespaceDescPlaceholder: "デフォルトは名前空間名",
},
};
});

View File

@ -1,4 +1,6 @@
export default {
import { withEnglishFallback } from "./fallback";
export default withEnglishFallback({
app: {
name: "DBX",
},
@ -34,6 +36,8 @@ export default {
formatSqlFailed: "Falha ao formatar SQL",
keywordCaseLower: "Usar palavras-chave SQL em minúsculas",
keywordCaseUpper: "Usar palavras-chave SQL em maiúsculas",
previewSql: "Visualizar SQL",
hidePreviewSql: "Ocultar Visualização SQL",
saveSql: "Salvar na Biblioteca SQL",
openSql: "Abrir arquivo SQL",
theme: "Tema",
@ -179,6 +183,8 @@ export default {
driverName: "Nome do Driver",
driverNamePlaceholder: "Nome do fornecedor ou ambiente",
urlParams: "Parâmetros da URL",
gbaseServer: "GBASEDBTSERVER",
informixServer: "INFORMIXSERVER",
sslEnable: "Habilitar conexão criptografada",
caCertPath: "Certificado CA",
caCertPathPlaceholder: "Opcional, ex.: ~/.yandex/RootCA.crt",
@ -236,6 +242,23 @@ export default {
redisSentinelTls: "TLS do Sentinel",
redisSentinelTlsHint: "Usar TLS ao conectar aos nós Sentinel",
redisKeySeparator: "Separador de namespace de chave",
etcdEndpoints: "Endpoints",
etcdEndpointsHint: "Um endpoint por linha. Deixe em branco para usar o host e porta acima.",
etcdCaCertPlaceholder: "/caminho/para/ca.crt",
etcdCaCertBrowse: "Escolher certificado CA",
etcdClientAuth: "Autenticação do Cliente",
etcdClientCertPlaceholder: "/caminho/para/client.crt",
etcdClientKeyPlaceholder: "/caminho/para/client.key",
etcdClientCertHint: "O certificado e a chave privada do cliente devem ser fornecidos juntos quando o etcd exige mTLS.",
etcdClientCertBrowse: "Escolher certificado do cliente",
etcdClientKeyBrowse: "Escolher chave privada do cliente",
etcdClientCertPairRequired: "O certificado e a chave privada do cliente devem ser fornecidos juntos.",
zookeeperConnectString: "String de Conexão",
zookeeperConnectStringHint: "Entradas host:porta separadas por vírgula ou linha. Deixe em branco para usar o host e porta acima.",
zookeeperCreateModePersistent: "Persistente",
zookeeperCreateModeEphemeral: "Efêmero",
zookeeperCreateModePersistentSequential: "Persistente Sequencial",
zookeeperCreateModeEphemeralSequential: "Efêmero Sequencial",
nacosConsoleUrl: "URL do console",
nacosConsoleUrlHint: "Use o endereço do console/admin API do Nacos. O Nacos 3 Docker geralmente expõe o console em 8085; implantações antigas podem compartilhar 8848 com a porta de serviço.",
nacosConsoleUrlRequired: "A URL do console Nacos é obrigatória",
@ -320,6 +343,18 @@ export default {
idleTimeout: "Timeout de Inatividade (segundos)",
keepaliveInterval: "Intervalo de keepalive (segundos)",
readOnly: "Somente leitura",
createNamespace: "Criar Namespace",
editNamespace: "Editar Namespace",
creatingNamespace: "Criando...",
updatingNamespace: "Atualizando...",
namespaceCreated: 'Namespace "{name}" criado',
namespaceUpdated: 'Namespace "{name}" atualizado',
namespaceId: "ID do Namespace",
namespaceIdPlaceholder: "Deixe vazio para o Nacos gerar",
namespaceName: "Nome do Namespace",
namespaceNamePlaceholder: "Digite um nome de namespace",
namespaceDesc: "Descrição",
namespaceDescPlaceholder: "Padrão é o nome do namespace",
readOnlyHint: "Bloquear todas as operações de escrita (INSERT, UPDATE, DELETE, etc.)",
readOnlyBadge: "Somente leitura",
proxy: "Proxy",
@ -336,6 +371,8 @@ export default {
jdbcDriverClassPlaceholder: "A maioria dos drivers se registra automaticamente; use com.vendor.jdbc.Driver se necessário",
jdbcDriverPaths: "JARs do Driver",
jdbcDriverSelectPlaceholder: "Escolher driver importado",
jdbcManualClasspath: "Classpath manual",
jdbcManualClasspathCount: "{count} caminhos",
jdbcDriverPathsPlaceholder: "/caminho/para/driver.jar\n/caminho/para/outro-driver.jar",
jdbcDriverBrowse: "Escolher JAR do driver JDBC",
jdbcDocs: "Ver documentação JDBC",
@ -363,13 +400,18 @@ export default {
showResultsPane: "Mostrar resultados",
hideResultsPane: "Ocultar resultados",
noDatabase: "Nenhum banco de dados selecionado",
unsavedChangesTitle: "Alterações não salvas",
unsavedChangesMessage: "Esta aba tem alterações não salvas que serão perdidas se fechada. Salvar antes de fechar?",
discardChanges: "Descartar",
selectConnection: "Selecionar conexão",
searchConnection: "Pesquisar conexões...",
selectDatabase: "Selecionar banco de dados",
selectDatabaseRequired: "Selecione um banco de dados primeiro",
searchDatabase: "Pesquisar bancos de dados...",
selectSchema: "Selecionar schema",
setDefaultDatabase: "Definir Padrão",
defaultDatabase: "Padrão",
clearDatabase: "Limpar banco de dados",
completion: {
nullValue: "Valor NULL",
isNull: "Verificar se é NULL",
@ -448,8 +490,13 @@ export default {
table: "Tabela",
tableData: "Dados da Tabela",
redis: "Redis",
etcd: "etcd",
zookeeper: "ZooKeeper",
mongo: "Mongo",
vector: "Vector",
objects: "Objetos",
users: "Usuários e Privilégios",
executionSummary: "Resumo de Execução",
tooltipTitle: "Título:",
tooltipConnection: "Conexão:",
tooltipDatabase: "Banco de dados:",
@ -457,11 +504,40 @@ export default {
tooltipCollection: "Coleção:",
tooltipSchema: "Schema:",
resultN: "Resultado {n}",
runN: "Executar {n}",
resultRuns: "Execuções de resultado",
removeRun: "Remover execução {n}",
autoKeepResults: "Manter resultados automaticamente",
autoKeepResultsEnabled: "Manutenção automática de resultados ativada",
autoKeepResultsDisabled: "Manutenção automática de resultados desativada",
missingResultRun: "Este resultado não está mais disponível",
exportResultArchive: "Salvar Arquivo de Resultados",
importResultArchive: "Importar Resultados",
importedResultArchive: "Resultados importados",
resultArchiveExported: "Resultados exportados",
resultArchiveImported: "Resultados importados",
resultArchiveUnavailable: "Nenhum resultado salvo disponível para exportar",
resultArchiveImportInvalid: "Este arquivo de resultados não pôde ser aberto",
resultArchiveExportFailed: "Falha ao exportar resultados: {message}",
resultArchiveImportFailed: "Falha ao importar resultados: {message}",
scrollLeft: "Rolar abas para a esquerda",
scrollRight: "Rolar abas para a direita",
openTabs: "Abas abertas",
openDataTabs: "Tabelas abertas",
},
executionSummary: {
empty: "Nenhum resumo de execução",
executing: "Executando...",
statement: "Instrução",
type: "Tipo",
rows: "Linhas",
affected: "Afetadas",
time: "Tempo",
success: "Sucesso",
error: "Erro",
returnedTable: "Retornou uma tabela de resultado com {count} colunas",
noTable: "Nenhuma tabela de resultado retornada",
},
chart: {
title: "Gráfico",
type: "Tipo",
@ -533,6 +609,7 @@ export default {
exportFailed: "Falha na exportação: {message}",
copied: "Copiado",
copyFailed: "Falha ao copiar: {message}",
previewSqlEmpty: "Nenhuma alteração SQL pendente para visualizar",
domRenderMode: "DOM",
canvasRenderMode: "Canvas",
renderModeHint: "Alterne entre a renderização Canvas e a grade DOM alternativa.",
@ -740,7 +817,11 @@ export default {
tableInfoNoResults: "Nenhum resultado",
queryError: "Erro na Consulta",
dataUnavailable: "Os dados da tabela precisam ser recarregados.",
dataUnavailableHintPrefix: "Pressione ",
dataUnavailableHintSuffix: " ou clique em Atualizar abaixo para recarregar.",
refresh: "Atualizar",
undoChange: "Desfazer alteração",
redoChange: "Refazer alteração",
commit: "Confirmar",
rollback: "Reverter",
transactionSaveHint: "Confirmar {count} alteração(ões) pendente(s) em uma transação.",
@ -780,12 +861,19 @@ export default {
cancel: "Cancelar",
close: "Fechar",
tooltip: "Progresso da Exportação",
failedTooltip: "{count} tarefa em segundo plano falhou | {count} tarefas em segundo plano falharam",
popoverTitle: "Exportações",
noTasks: "Nenhuma exportação",
clearFinished: "Limpar concluídas",
showMore: "Mostrar mais {count}",
showLess: "Mostrar menos",
delete: "Remover",
databaseExportTitle: "Backup de banco de dados: {name}",
sqlFileTitle: "Arquivo SQL: {name}",
dataTransferTitle: "Transferência de dados: {name}",
objectsCount: "{current} / {total} objetos",
tablesCount: "{current} / {total} tabelas",
statementsCount: "{done} com sucesso, {failed} com falha",
},
welcome: {
title: "Área de Trabalho do Banco de Dados",
@ -819,6 +907,9 @@ export default {
retry: "Tentar novamente",
more: "Mais",
done: "Concluído",
copy: "Copiar",
import: "Importar",
remove: "Remover",
connection: "Conexão",
database: "Banco de dados",
table: "Tabela",
@ -967,6 +1058,8 @@ export default {
modelListApiKeyRequired: "Informe uma API key antes de carregar os modelos.",
codexMcpRequiredTitle: "DBX MCP Server obrigatório",
codexMcpRequiredDescription: "O Codex CLI usa o DBX MCP Server para acessar o schema do banco e as ferramentas de consulta. Instale-o antes de usar o Codex no assistente de AI.",
codexCliPath: "Caminho do Codex CLI",
codexCliPathHint: "Deixe vazio para usar o codex do PATH. Faça login separadamente com codex login.",
codexCliPathEnvError: "Codex CLI Path deve conter apenas o caminho do executável. Adicione variáveis de ambiente abaixo.",
codexCliEnv: "Variáveis de ambiente",
codexCliEnvAdd: "Adicionar variável",
@ -1055,6 +1148,9 @@ export default {
proxyEnable: "Enviar requisições de AI através do proxy",
proxyUrl: "URL do Proxy",
anthropicMessagesHint: "APIs compatíveis com Anthropic Messages geralmente usam /v1/messages.",
contextWindow: "Janela de Contexto",
contextWindowAuto: "Automático (detectar pelo nome do modelo)",
contextWindowHint: "Tokens. Deixe vazio para detecção automática. Defina manualmente para modelos locais/personalizados.",
enableThinking: "Raciocínio",
enableThinkingOn: "Ativado",
enableThinkingOff: "Desativado",
@ -1088,7 +1184,11 @@ export default {
editConnection: "Editar Conexão",
revealDatabaseFile: "Mostrar no gerenciador de arquivos",
selectVisibleDatabases: "Selecionar Bancos de Dados Visíveis",
configureVisibleObjects: "Filtro de Objetos Visíveis",
userAdmin: "Usuários e Privilégios",
openUserAdmin: "Abrir Usuários e Privilégios",
duplicateConnection: "Duplicar Conexão",
instanceInfo: "Informações da Instância",
newQuery: "Nova Consulta",
newSql: "Novo SQL",
generateSql: "Gerar SQL",
@ -1290,6 +1390,9 @@ export default {
},
tree: {
savedSql: "Biblioteca SQL",
userAdmin: "Usuários e Privilégios",
linkedServers: "Servidores Vinculados",
materializedViews: "Visualizações Materializadas",
defaultDatabase: "Banco padrão",
columns: "Colunas",
indexes: "Índices",
@ -1305,6 +1408,51 @@ export default {
loadMore: "Carregar mais...",
objectBrowser: "Navegar no Navegador de Objetos ({count})",
},
userAdmin: {
title: "Usuários e Privilégios",
unsupported: "Conexões compatíveis com MySQL e PostgreSQL são suportadas. SQL Server, Oracle e outros modelos de permissão podem ser adicionados em seguida.",
newUser: "Novo Usuário",
anonymous: "Anônimo",
roleName: "Nome da função",
allowLogin: "Permitir login",
searchUser: "Pesquisar usuário ou host",
loadingUsers: "Carregando usuários...",
loadingGrants: "Carregando permissões...",
emptyUsers: "Nenhum usuário encontrado, ou a conta atual não pode ler a lista de usuários.",
pluginUnknown: "Plugin de autenticação desconhecido",
grants: "Permissões",
noGrants: "Nenhuma permissão encontrada",
privilegeEditor: "Editor de Privilégios",
privilegeHint: "Escolha privilégios, banco de dados e tabela, então visualize o SQL antes de aplicar. * significa global ou todas as tabelas.",
database: "Banco de dados",
schema: "Schema",
table: "Tabela",
scope: "Escopo da concessão",
scopeDatabase: "Banco de dados",
scopeSchema: "Schema",
scopeTable: "Tabela",
scopeRole: "Associação de função",
memberRole: "Função membro",
privileges: "Privilégios",
grantOption: "Permitir mais concessões (WITH GRANT OPTION)",
adminOption: "Permitir gerenciamento de associação (WITH ADMIN OPTION)",
grant: "Conceder",
revoke: "Revogar",
username: "Nome de usuário",
host: "Host",
changePassword: "Alterar Senha",
newPassword: "Nova senha",
lock: "Bloquear",
unlock: "Desbloquear",
disableLogin: "Desabilitar Login",
enableLogin: "Habilitar Login",
dropUser: "Remover Usuário",
previewSql: "Visualizar SQL",
sqlPreview: "Visualização SQL",
applySql: "Aplicar SQL",
applySuccess: "Privilégios do usuário atualizados",
applyFailed: "Execução falhou: {message}",
},
objects: {
all: "Todos",
tables: "Tabelas",
@ -1443,6 +1591,26 @@ export default {
relationshipsCount: "{count} relacionamentos",
tableMode: "Visão de tabelas",
engineeringMode: "ER de engenharia",
modelRelationships: "Relacionamentos Modelados",
copyJoinSql: "Copiar SQL",
customRelationshipsCount: "{count} modelados",
relationshipName: "Nome",
relationshipNamePlaceholder: "Opcional",
sourceTable: "Tabela de origem",
sourceColumn: "Coluna de origem",
targetTable: "Tabela de destino",
targetColumn: "Coluna de destino",
cardinality: "Cardinalidade",
cardinalityOneToMany: "1:N",
cardinalityManyToOne: "N:1",
cardinalityOneToOne: "1:1",
addRelationship: "Adicionar relacionamento",
removeRelationship: "Remover relacionamento",
relationshipIncomplete: "Selecione as colunas de origem e destino",
relationshipSelfInvalid: "Um relacionamento não pode ter como alvo a mesma coluna",
relationshipExists: "Este relacionamento já existe",
relationshipAdded: "Relacionamento adicionado",
noJoinSql: "Nenhum SQL de relacionamento para copiar",
allTables: "Todas as tabelas",
relatedTables: "Tabelas relacionadas",
moreColumns: "+ {count} colunas",
@ -1453,6 +1621,58 @@ export default {
zoomOut: "Diminuir zoom",
resetLayout: "Redefinir layout",
},
etcd: {
prefixPlaceholder: "Prefixo, ex.: /app/",
newKey: "Nova Chave",
loadingKeys: "Carregando chaves...",
empty: "Nenhuma chave encontrada",
loadMore: "Carregar mais",
selectKey: "Selecione uma chave para ver seu valor",
loadingValue: "Carregando valor...",
notFound: "Chave não encontrada",
edit: "Editar",
editKey: "Editar Chave",
delete: "Excluir",
deleteTitle: "Excluir chave etcd",
keyPlaceholder: "/caminho/para/chave",
keyRequired: "Chave é obrigatória",
saved: "Chave salva",
deleted: "Chave excluída",
base64Readonly: "Valores Base64 são somente leitura nesta versão.",
},
zookeeper: {
prefixPlaceholder: "Prefixo de caminho, ex.: /app/",
newKey: "Novo Znode",
loadingKeys: "Carregando znodes...",
empty: "Nenhum znode encontrado",
loadMore: "Carregar mais",
selectKey: "Selecione um znode para ver seu valor",
loadingValue: "Carregando valor...",
notFound: "Znode não encontrado",
edit: "Editar",
editKey: "Editar Znode",
delete: "Excluir",
deleteTitle: "Excluir znode do ZooKeeper",
keyPlaceholder: "/caminho/para/znode",
keyRequired: "Caminho do znode é obrigatório",
saved: "Znode salvo",
deleted: "Znode excluído",
base64Readonly: "Valores Base64 são somente leitura nesta versão.",
createMode: "Modo de Criação",
createModePersistent: "Persistente",
createModeEphemeral: "Efêmero",
createModePersistentSequential: "Persistente Sequencial",
createModeEphemeralSequential: "Efêmero Sequencial",
add: "Adicionar",
value: "Valor",
metadata: "Informações do Nó",
prettyJson: "Formatado",
invalidJson: "JSON inválido",
summaryRevision: "rev",
summaryVersion: "ver",
summaryLease: "lease",
summarySize: "tamanho",
},
redis: {
selectKey: "Selecione uma chave para ver seu valor",
noKeys: "Nenhuma chave encontrada",
@ -1546,9 +1766,28 @@ export default {
jsonView: "Visão JSON",
rawContent: "Conteúdo bruto",
wordWrap: "Quebra de linha",
formatJson: "Formatar",
compressJson: "Comprimir",
jsonFormatError: "Formato JSON inválido",
clearHistory: "Limpar histórico de comandos",
historyCleared: "Histórico de comandos Redis limpo",
blockedCommand: "O comando {command} está bloqueado por segurança. Desative o ícone de escudo na barra de ferramentas para permiti-lo.",
slowlog: "Slow Log",
slowlogCount: "Contagem",
slowlogQuery: "Consultar",
slowlogNode: "Nó",
slowlogSelectNode: "Selecione um nó",
slowlogNodeRequired: "Selecione um nó primeiro",
slowlogEmpty: "Clique em Consultar para obter entradas do slow log",
slowlogFetchFailed: "Falha ao buscar slow log: {error}",
slowlogColumnId: "ID",
slowlogColumnTimestamp: "Timestamp",
slowlogColumnDuration: "Duração (μs)",
slowlogColumnCommand: "Comando",
slowlogColumnClientAddr: "Cliente",
slowlogColumnClientName: "Nome do Cliente",
slowlogTotal: "{count} entradas",
slowlogDetailTitle: "Entrada de Slow Log #{id}",
pubsub: "Pub/Sub",
pubsubConnected: "Conectado",
pubsubConnecting: "Conectando...",
@ -1589,6 +1828,19 @@ export default {
filterPlaceholder: "Filtrar...",
sortPlaceholder: "Ordenar...",
},
vector: {
collectionFallback: "coleção",
productCollection: "coleção {product}",
browse: "Navegar",
upsert: "Upsert",
delete: "Excluir",
reset: "Redefinir",
refresh: "Atualizar",
run: "Executar",
apply: "Aplicar",
requestEditor: "Editor de requisição de vetor",
operationSuccess: "Operação concluída. A pré-visualização da coleção foi atualizada.",
},
history: {
title: "Histórico",
search: "Pesquisar histórico...",
@ -1740,6 +1992,11 @@ export default {
tableError: "Falha na tabela {table}: {error}",
overallProgress: "Progresso geral",
dataTransfer: "Transferência de Dados",
runInBackground: "Executar em segundo plano",
newTask: "Nova transferência",
editConfig: "Editar configuração",
retry: "Tentar novamente",
targetTableBusy: "Outra transferência já está gravando na(s) tabela(s) de destino: {tables}",
},
tableImport: {
title: "Importar Dados da Tabela",
@ -1916,6 +2173,7 @@ export default {
databasePlaceholder: "Nome do banco de dados",
options: "Opções",
continueOnError: "Continuar em caso de erro",
runInBackground: "Executar em segundo plano",
cancelling: "Cancelando...",
cancel: "Cancelar",
execute: "Executar",
@ -1965,6 +2223,142 @@ export default {
swap: "Trocar origem e destino",
syncProgress: "Executando: {current}/{total}",
syncSummary: "{success} bem-sucedidas, {failed} com falha",
connection: "Conexão",
database: "Banco de dados",
schema: "Schema",
recentConfigs: "Configurações Recentes",
selectRecentConfig: "Selecionar configuração recente",
configSaved: "Configuração salva",
configDeleted: "Configuração excluída",
sourceObject: "Objeto de origem",
targetObject: "Objeto de destino",
operation: "Operação",
selectedCount: "{selected} selecionados de {total}",
saveConfig: "Salvar configuração",
loadConfig: "Carregar configuração",
options: "Opções",
ddlCompare: "Comparação DDL",
deployScript: "Script de implantação",
deployScriptAll: "Todos os scripts de implantação",
deployScriptDesc: "Script SQL para o objeto selecionado",
deployScriptAllDesc: "Script SQL para todos os objetos selecionados",
copy: "Copiar",
execute: "Executar",
executeAll: "Executar todos",
executeSuccess: "Executado com sucesso",
selectObjectToCompare: "Selecione um objeto para ver a comparação DDL",
noDdlAvailable: "Nenhum DDL disponível",
noDeployScript: "Nenhum script de implantação",
noDeployScriptAll: "Nenhum script de implantação para os objetos selecionados",
sourceDdl: "DDL de origem",
targetDdl: "DDL de destino",
objectNotExistsInSource: "Este objeto não existe no banco de dados de origem",
objectNotExistsInTarget: "Este objeto não existe no banco de dados de destino",
nextStepDeploy: "Próximo (Revisar Implantação)",
deployReview: "Revisão de Implantação",
backToResult: "Voltar ao Resultado",
copyScript: "Copiar Script",
exportSql: "Exportar .sql",
deployToServer: "Implantar no Servidor",
deployConfirmTitle: "Confirmação Final",
deployConfirmMessage: "Você está prestes a implantar as seguintes alterações no banco de dados de destino",
targetServer: "Servidor de Destino",
dbVersion: "Versão do Banco de Dados",
targetDatabase: "Banco de Dados de Destino",
targetSchema: "Schema de Destino",
useTransaction: "Executar em transação (rollback automático em caso de falha)",
confirmDeploy: "Confirmar Implantação",
exportSuccess: "Exportação bem-sucedida",
create: "Criar",
delete: "Excluir",
modify: "Modificar",
cancel: "Cancelar",
prevStep: "Anterior",
recompare: "Comparar novamente",
maximize: "Maximizar",
restore: "Restaurar",
operationLabel: {
modify: "Objetos a modificar",
create: "Objetos a criar",
delete: "Objetos a excluir",
none: "Nenhuma operação",
},
objectKindLabel: {
table: "Tabela",
view: "Visão",
function: "Função",
sequence: "Sequência",
rule: "Regra",
owner: "Proprietário",
index: "Índice",
foreignKey: "Chave Estrangeira",
trigger: "Gatilho",
},
noObjectsSelected: "Selecione objetos para implantar",
deploySuccess: "Implantação Bem-sucedida",
deployFailed: "Implantação Falhou",
deploySuccessMessage: "Script SQL executado com sucesso no banco de dados de destino",
deployFailedMessage: "Ocorreu um erro durante a execução",
affectedRows: "Linhas Afetadas",
executedStatements: "Instruções Executadas",
serverVersion: "Versão do Servidor",
info: "Informações",
connType: "Tipo de conexão",
connName: "Nome da conexão",
host: "Host",
port: "Porta",
copied: "Copiado para a área de transferência",
saveConfigPrompt: "Digite o nome da configuração:",
close: "Fechar",
},
schemaDiff: {
optionsTitle: "Opções de Comparação",
selectConfig: "Selecionar configuração",
newConfigName: "Nova Configuração",
newConfig: "Nova Configuração",
renameConfig: "Renomear Configuração",
duplicateConfig: "Duplicar Configuração",
deleteConfig: "Excluir Configuração",
exportConfig: "Exportar Configuração",
exportAllConfigs: "Exportar Todas as Configurações",
importConfig: "Importar Configuração",
importFromFile: "Importar de Arquivo",
importFromText: "Importar de Texto",
importPlaceholder: "Cole o JSON da configuração...",
importInvalidJson: "Formato JSON inválido",
configName: "Nome da Configuração",
tableFilter: "Filtro de tabela",
tableFilterHint: "Corresponde a nomes completos de tabela com regex. Não digite /.../. ^ significa começa com, $ significa termina com, | significa ou.",
tableFilterHintShort: "Limitar comparação por regex de nome de tabela",
tableFilterHelp: "Ajuda do filtro de tabela",
tableFilterHelpRule: "Corresponde a nomes completos de tabela. Não digite /.../.",
tableFilterHelpBlank: "Incluir em branco significa todas as tabelas. Pular em branco significa sem exclusões.",
tableFilterHelpExample: "^user_ significa começa com user_; _bak$ significa termina com _bak; a|b significa a ou b.",
tableIncludePattern: "Comparar apenas tabelas correspondidas",
tableIncludePatternPlaceholder: "ex.: ^user_",
tableExcludePattern: "Pular tabelas correspondidas",
tableExcludePatternPlaceholder: "ex.: _bak$",
tableFilterPriority: "Quando ambos correspondem",
tableFilterPriorityExclude: "Exclusão vence",
tableFilterPriorityInclude: "Inclusão vence",
options: {
tables: "Comparar tabelas",
primaryKeys: "Comparar chaves primárias",
foreignKeys: "Comparar chaves estrangeiras",
uniqueKeys: "Comparar chaves únicas",
checks: "Comparar constraints CHECK",
exclusions: "Comparar constraints de exclusão",
views: "Comparar visões",
functions: "Comparar funções",
indexes: "Comparar índices",
sequences: "Comparar sequências",
triggers: "Comparar gatilhos",
rules: "Comparar regras",
owners: "Comparar proprietários",
cascadeDelete: "Usar CASCADE delete",
sequenceLastValues: "Comparar últimos valores de sequência",
compareColumnOrder: "Comparar ordem das colunas",
},
},
dataCompare: {
title: "Comparar Dados",
@ -2138,6 +2532,10 @@ export default {
closeActionMinimize: "Minimizar para a bandeja",
updateNotificationsEnabled: "Ativar lembretes de atualização",
updateNotificationsEnabledDescription: "Quando desativado, o DBX não verificará automaticamente atualizações do app ou dos drivers nem mostrará indicadores. Verificações manuais continuam disponíveis.",
updateDownloadSource: "Fonte de download de atualização",
updateDownloadSourceDescription: "Escolha de onde os instaladores de atualização no aplicativo são baixados. A fonte oficial é recomendada; a CNB pode ser mais rápida em redes da China continental.",
updateDownloadSourceOfficial: "Fonte oficial (recomendada)",
updateDownloadSourceCnb: "CNB",
debugLoggingEnabled: "Ativar logs de depuração",
debugLoggingEnabledDescription: "Registra logs locais de diagnóstico do lado do usuário ao investigar relatos. Desativado por padrão.",
debugLogsCopy: "Copiar logs",
@ -2265,6 +2663,13 @@ export default {
redisScanPageSizeOption: "{count} chaves",
exportBatchSize: "Tamanho do lote de exportação",
exportBatchSizeDescription: "Linhas buscadas por lote ao exportar dados da tabela (100-100000).",
exportRowLimitEnabled: "Limitar linhas exportadas",
exportRowLimitEnabledDescription: "Quando ativado, as exportações de resultados de consulta e dados de tabela param no limite de linhas abaixo.",
exportRowLimit: "Limite de linhas da exportação",
exportRowLimitDescription: "Máximo de linhas para exportações de resultados de consulta e dados de tabela.",
exportRowLimitUnlimited: "Ilimitado",
queryExportKeysetOptimizationEnabled: "Tentar otimização keyset",
queryExportKeysetOptimizationEnabledDescription: "Aplica-se apenas a consultas de tabela única reconhecidas com segurança; consultas complexas recuam automaticamente.",
exportSection: "Exportar",
shortcutExecuteSql: "Executar SQL",
shortcutFind: "Localizar",
@ -2405,6 +2810,8 @@ export default {
progressJreExtract: "Extraindo JRE...",
progressDownloadJre: "Baixando JRE",
progressDownloadDriver: "Baixando driver",
progressDownloadJdbcPlugin: "Baixando plugin JDBC",
progressJdbcPluginExtract: "Instalando plugin JDBC...",
usageTitle: "Uso de armazenamento",
usageTotal: "Total {size}",
usageTotalLabel: "Total",
@ -2413,6 +2820,16 @@ export default {
usageAgentDrivers: "Agentes de driver integrados",
usageJdbcPlugin: "Plugin JDBC",
usageJdbcDriverJars: "JARs de driver JDBC",
offlineDownloadHint: "Para ambientes sem internet, baixe pacotes de driver offline em uma máquina com acesso à internet e importe-os aqui.",
offlineDownloadLink: "Downloads de driver offline",
searchDrivers: "Pesquisar nome, tipo, versão do driver...",
searchJdbcDrivers: "Pesquisar nome ou caminho do driver JDBC...",
jdbcMavenCoordinatePlaceholder: "Coordenada Maven, ex.: org.postgresql:postgresql:42.7.7",
jdbcMavenInstall: "Instalar do Maven",
jdbcMavenInstallSuccess: "Driver JDBC Maven instalado",
jdbcSourceMaven: "Maven",
jdbcSourceManual: "Manual",
noMatchingDrivers: "Nenhum driver correspondente.",
javaRuntimeSaved: "Configurações de runtime do Java salvas",
javaRuntimeSaveFailed: "Falha ao salvar configurações de runtime do Java: {error}",
chooseJavaExecutable: "Escolher executável do Java",
@ -2516,6 +2933,7 @@ export default {
dropTableIfExists: "Adicionar DROP TABLE IF EXISTS antes do DDL",
includeData: "Dados da tabela (INSERT)",
includeObjects: "Views / Procedures / Funções / Sequências",
runInBackground: "Executar em segundo plano",
tableSelection: "Tabelas",
selectedTables: "{selected}/{total} selecionadas",
selectAllTables: "Selecionar todas",
@ -2537,6 +2955,18 @@ export default {
services: "Serviços",
raw: "Raw",
namespace: "Namespace",
createNamespace: "Criar Namespace",
editNamespace: "Editar Namespace",
creatingNamespace: "Criando...",
updatingNamespace: "Atualizando...",
namespaceCreated: 'Namespace "{name}" criado',
namespaceUpdated: 'Namespace "{name}" atualizado',
namespaceId: "ID do Namespace",
namespaceIdPlaceholder: "Deixe vazio para o Nacos gerar",
namespaceName: "Nome do Namespace",
namespaceNamePlaceholder: "Digite um nome de namespace",
namespaceDesc: "Descrição",
namespaceDescPlaceholder: "Padrão é o nome do namespace",
dataId: "Data ID",
group: "Grupo",
format: "Formato",
@ -2640,4 +3070,4 @@ export default {
test: "Testar",
readOnly: "Somente leitura",
},
};
});

View File

@ -1,4 +1,6 @@
export default {
import { withEnglishFallback } from "./fallback";
export default withEnglishFallback({
app: {
name: "DBX",
},
@ -877,6 +879,8 @@ export default {
sqlHistoryOpenCount: "打开 {count} 次",
unknownConnection: "未知连接",
tip: "也可以在左侧展开连接,右键数据库或表查看更多操作。",
tipSidebar: "点击左侧表名查看数据",
tipExecute: "执行查询",
fileOpened: "已打开 {name}",
mcpTitle: "AI 编程助手集成",
mcpDescription: "除了内置 AI 助手,还可以通过 MCP 让 Claude Code、Cursor 等编程助手直接使用这里的数据库连接。",
@ -889,6 +893,9 @@ export default {
close: "关闭",
cancel: "取消",
save: "保存",
copy: "复制",
import: "导入",
remove: "移除",
retry: "重试",
more: "更多",
done: "完成",
@ -2219,20 +2226,28 @@ export default {
options: "选项",
ddlCompare: "DDL 比较",
deployScript: "部署脚本",
deployScriptDesc: "所选对象的 SQL 脚本",
selectObjectToCompare: "选择对象查看 DDL 对比",
noDdlAvailable: "无可用的 DDL",
noDeployScript: "暂无部署脚本",
objectNotExistsInSource: "此对象在源库中不存在",
objectNotExistsInTarget: "此对象在目标库中不存在",
sourceDdl: "源 DDL",
targetDdl: "目标 DDL",
deployScriptTitle: "部署脚本",
deployScriptAll: "全部部署脚本",
deployScriptAllDesc: "所有选中对象的 SQL 脚本",
deployScriptAllTitle: "全部部署脚本",
copyScript: "复制脚本",
copy: "复制",
executeScript: "执行脚本",
execute: "执行",
executeAll: "全部执行",
executeSuccess: "执行成功",
prevStep: "上一步",
recompare: "重新比较",
maximize: "最大化",
restore: "还原",
deploy: "下一步",
nextStepDeploy: "下一步(审核部署)",
deployReview: "部署审核",
@ -2286,6 +2301,7 @@ export default {
copied: "已复制到剪贴板",
configSaved: "配置已保存",
configDeleted: "配置已删除",
noDeployScriptAll: "暂无所选对象的部署脚本",
saveConfigPrompt: "请输入配置名称:",
},
schemaDiff: {
@ -3047,4 +3063,4 @@ export default {
test: "测试",
readOnly: "只读",
},
};
});

View File

@ -1,4 +1,6 @@
export default {
import { withEnglishFallback } from "./fallback";
export default withEnglishFallback({
app: {
name: "DBX",
},
@ -34,6 +36,8 @@ export default {
formatSqlFailed: "SQL 格式化失敗",
keywordCaseLower: "使用小寫 SQL 關鍵字",
keywordCaseUpper: "使用大寫 SQL 關鍵字",
previewSql: "預覽 SQL",
hidePreviewSql: "隱藏 SQL 預覽",
saveSql: "儲存到 SQL 庫",
openSql: "開啟 SQL 檔案",
theme: "主題",
@ -179,6 +183,8 @@ export default {
driverName: "驅動程式名稱",
driverNamePlaceholder: "廠商或環境名稱",
urlParams: "URL 參數",
gbaseServer: "GBASEDBTSERVER",
informixServer: "INFORMIXSERVER",
sslEnable: "啟用加密連線",
caCertPath: "CA 憑證",
caCertPathPlaceholder: "可選,例如 ~/.yandex/RootCA.crt",
@ -236,6 +242,23 @@ export default {
redisSentinelTls: "Sentinel TLS",
redisSentinelTlsHint: "連線 Sentinel 節點時使用 TLS",
redisKeySeparator: "鍵名分隔符(可選)",
etcdEndpoints: "端點",
etcdEndpointsHint: "每行一個端點。留空則使用上方的主機和連接埠。",
etcdCaCertPlaceholder: "/path/to/ca.crt",
etcdCaCertBrowse: "選擇 CA 憑證",
etcdClientAuth: "用戶端認證",
etcdClientCertPlaceholder: "/path/to/client.crt",
etcdClientKeyPlaceholder: "/path/to/client.key",
etcdClientCertHint: "etcd 要求 mTLS 時,用戶端憑證和私鑰必須一起填寫。",
etcdClientCertBrowse: "選擇用戶端憑證",
etcdClientKeyBrowse: "選擇用戶端私鑰",
etcdClientCertPairRequired: "用戶端憑證和私鑰必須一起填寫。",
zookeeperConnectString: "連線字串",
zookeeperConnectStringHint: "以逗號或換行分隔的 host:port 項目。留空則使用上方的主機和連接埠。",
zookeeperCreateModePersistent: "持久",
zookeeperCreateModeEphemeral: "臨時",
zookeeperCreateModePersistentSequential: "持久有序",
zookeeperCreateModeEphemeralSequential: "臨時有序",
nacosConsoleUrl: "控制台 URL",
nacosConsoleUrlHint: "填寫 Nacos 控制台/admin API 位址。Nacos 3 Docker 通常是 8085如果舊版控制台和服務共用 8848也可以填 8848。",
nacosConsoleUrlRequired: "Nacos 控制台 URL 不能為空",
@ -336,6 +359,8 @@ export default {
jdbcDriverClassPlaceholder: "多數驅動程式可自動識別;需要時填寫 com.vendor.jdbc.Driver",
jdbcDriverPaths: "驅動程式 JAR",
jdbcDriverSelectPlaceholder: "選擇已匯入驅動程式",
jdbcManualClasspath: "手動 classpath",
jdbcManualClasspathCount: "{count} 個路徑",
jdbcDriverPathsPlaceholder: "/path/to/driver.jar\n/path/to/another-driver.jar",
jdbcDriverBrowse: "選擇 JDBC 驅動程式 JAR",
jdbcDocs: "檢視 JDBC 文件",
@ -363,13 +388,18 @@ export default {
showResultsPane: "顯示結果",
hideResultsPane: "收起結果",
noDatabase: "未選擇資料庫",
unsavedChangesTitle: "未儲存的變更",
unsavedChangesMessage: "此分頁有未儲存的變更,關閉後將遺失。儲存後再關閉嗎?",
discardChanges: "捨棄",
selectConnection: "選擇連線",
searchConnection: "搜尋連線……",
selectDatabase: "選擇資料庫",
selectDatabaseRequired: "請先選擇資料庫",
searchDatabase: "搜尋資料庫……",
selectSchema: "選擇 Schema",
setDefaultDatabase: "設為預設",
defaultDatabase: "預設資料庫",
clearDatabase: "清除資料庫",
completion: {
nullValue: "空值",
isNull: "判斷是否為 NULL",
@ -448,9 +478,13 @@ export default {
table: "資料表",
tableData: "資料表",
redis: "Redis",
etcd: "etcd",
zookeeper: "ZooKeeper",
mongo: "Mongo",
vector: "向量",
objects: "物件",
users: "使用者與權限",
executionSummary: "執行摘要",
tooltipTitle: "標題:",
tooltipConnection: "連線:",
tooltipDatabase: "資料庫:",
@ -458,11 +492,40 @@ export default {
tooltipCollection: "集合:",
tooltipSchema: "Schema",
resultN: "結果 {n}",
runN: "執行 {n}",
resultRuns: "執行結果",
removeRun: "移除執行 {n}",
autoKeepResults: "自動保留查詢結果",
autoKeepResultsEnabled: "自動保留結果已啟用",
autoKeepResultsDisabled: "自動保留結果已停用",
missingResultRun: "此結果已不再可用",
exportResultArchive: "儲存結果封存",
importResultArchive: "匯入結果",
importedResultArchive: "已匯入的結果",
resultArchiveExported: "結果已匯出",
resultArchiveImported: "結果已匯入",
resultArchiveUnavailable: "沒有可匯出的已儲存結果",
resultArchiveImportInvalid: "無法開啟此結果封存",
resultArchiveExportFailed: "匯出結果失敗:{message}",
resultArchiveImportFailed: "匯入結果失敗:{message}",
scrollLeft: "向左捲動分頁",
scrollRight: "向右捲動分頁",
openTabs: "已開啟的分頁",
openDataTabs: "已開啟的資料表",
},
executionSummary: {
empty: "無執行摘要",
executing: "執行中...",
statement: "語句",
type: "類型",
rows: "列數",
affected: "影響",
time: "時間",
success: "成功",
error: "錯誤",
returnedTable: "回傳 {count} 欄的結果表",
noTable: "未回傳結果表",
},
chart: {
title: "圖表",
type: "類型",
@ -534,6 +597,7 @@ export default {
exportFailed: "匯出失敗:{message}",
copied: "已複製",
copyFailed: "複製失敗:{message}",
previewSqlEmpty: "沒有待預覽的 SQL 變更",
domRenderMode: "DOM",
canvasRenderMode: "Canvas",
renderModeHint: "在 Canvas 渲染和 DOM 備援表格之間切換。",
@ -739,8 +803,13 @@ export default {
tableInfoEmpty: "無",
tableInfoSearch: "搜尋……",
tableInfoNoResults: "沒有相符結果",
dataUnavailable: "資料表資料需要重新載入。",
dataUnavailableHintPrefix: "按 ",
dataUnavailableHintSuffix: " 或點擊下方重新整理來重新載入。",
queryError: "查詢出錯",
refresh: "重新整理",
undoChange: "復原變更",
redoChange: "重做變更",
commit: "提交",
rollback: "回溯",
transactionSaveHint: "在事務中提交 {count} 項待儲存更改。",
@ -767,6 +836,33 @@ export default {
sortUnsupported: "目前 SQL 不支援完整排序,請改為單條 SELECT 查詢後再嘗試。",
truncatedHint: "結果已截斷,僅顯示前 {count} 行。可經由底部分頁繼續載入,或調整每頁行數。",
},
exportProgress: {
title: "匯出資料表資料",
fetching: "正在從資料庫擷取資料...",
writing: "正在寫入檔案...",
done: "匯出完成!",
error: "匯出失敗",
cancelled: "匯出已取消。",
rowsCount: "{exported} / {total} 列",
rowsExported: "已匯出 {count} 列",
rowsShort: "列",
cancel: "取消",
close: "關閉",
tooltip: "背景工作",
failedTooltip: "{count} 個背景工作失敗 | {count} 個背景工作失敗",
popoverTitle: "背景工作",
noTasks: "無背景工作",
clearFinished: "清除已完成",
showMore: "顯示 {count} 個更多",
showLess: "顯示較少",
delete: "移除",
databaseExportTitle: "資料庫備份:{name}",
sqlFileTitle: "SQL 檔案:{name}",
dataTransferTitle: "資料傳輸:{name}",
objectsCount: "{current} / {total} 個物件",
tablesCount: "{current} / {total} 張資料表",
statementsCount: "{done} 成功,{failed} 失敗",
},
welcome: {
title: "資料庫工作檯",
subtitle: "選擇左側連線以瀏覽結構,或直接開啟查詢分頁。",
@ -796,6 +892,9 @@ export default {
close: "關閉",
cancel: "取消",
save: "保存",
copy: "複製",
import: "匯入",
remove: "移除",
retry: "重試",
more: "更多",
done: "完成",
@ -1022,6 +1121,11 @@ export default {
enableThinkingOff: "已停用",
enableThinkingHint: "此選項僅對 /chat/completions API 且部分支援的模型生效。設為停用後可大幅節省 token但產生結果品質可能會略微下降。",
anthropicMessagesHint: "Anthropic Messages 相容 API 通常使用 /v1/messages。",
contextWindow: "Context Window",
contextWindowAuto: "自動(從模型名稱偵測)",
contextWindowHint: "Token 數。留空以自動偵測。本機/自訂模型請手動設定。",
codexCliPath: "Codex CLI 路徑",
codexCliPathHint: "留空以使用 PATH 中的 codex。請另外以 codex login 登入。",
codexMcpRequiredTitle: "需要 DBX MCP Server",
codexMcpRequiredDescription: "Codex CLI 會透過 DBX MCP Server 存取資料庫結構與查詢工具。請先安裝後再於 AI 助理中使用 Codex。",
codexCliPathEnvError: "Codex CLI 路徑只能填寫可執行檔路徑。請在下方新增環境變數。",
@ -1068,8 +1172,12 @@ export default {
editConnection: "編輯連線",
revealDatabaseFile: "在檔案管理員中顯示",
selectVisibleDatabases: "選擇顯示資料庫",
configureVisibleObjects: "可見物件過濾",
userAdmin: "使用者與權限",
openUserAdmin: "開啟使用者與權限",
duplicateConnection: "複製連線",
newQuery: "建立查詢",
instanceInfo: "實例資訊",
newSql: "新增 SQL",
generateSql: "產生 SQL",
newInsert: "建立新增",
@ -1270,6 +1378,9 @@ export default {
},
tree: {
savedSql: "SQL 庫",
userAdmin: "使用者與權限",
linkedServers: "連結伺服器",
materializedViews: "具體化檢視",
defaultDatabase: "預設庫",
columns: "欄位",
indexes: "索引",
@ -1432,6 +1543,26 @@ export default {
zoomIn: "放大",
zoomOut: "縮小",
resetLayout: "重設布局",
modelRelationships: "模型關係",
copyJoinSql: "複製 SQL",
customRelationshipsCount: "{count} 個已建模",
relationshipName: "名稱",
relationshipNamePlaceholder: "可選",
sourceTable: "來源資料表",
sourceColumn: "來源欄位",
targetTable: "目標資料表",
targetColumn: "目標欄位",
cardinality: "基數",
cardinalityOneToMany: "1:N",
cardinalityManyToOne: "N:1",
cardinalityOneToOne: "1:1",
addRelationship: "新增關係",
removeRelationship: "移除關係",
relationshipIncomplete: "請同時選擇來源和目標欄位",
relationshipSelfInvalid: "關係不能指向同一欄位",
relationshipExists: "此關係已存在",
relationshipAdded: "關係已新增",
noJoinSql: "沒有可複製的關係 SQL",
},
redis: {
selectKey: "選擇一個 key 檢視值",
@ -1520,13 +1651,34 @@ export default {
viewMember: "檢視完整內容",
copyMember: "複製成員",
copied: "已複製",
copyInsertStatement: "複製為 INSERT 語句",
copyInsertStatementBinary: "無法為二進位資料產生 INSERT 語句",
editMember: "編輯",
jsonView: "JSON 檢視",
rawContent: "原始內容",
wordWrap: "自動換行",
formatJson: "格式化",
compressJson: "壓縮",
jsonFormatError: "無效的 JSON 格式",
clearHistory: "清除命令歷史",
historyCleared: "Redis 命令歷史已清除",
blockedCommand: "命令 {command} 因安全原因已被攔截。點擊工具列盾牌圖示可關閉攔截。",
slowlog: "慢日誌",
slowlogCount: "計數",
slowlogQuery: "查詢",
slowlogNode: "節點",
slowlogSelectNode: "選擇節點",
slowlogNodeRequired: "請先選擇節點",
slowlogEmpty: "點擊查詢以擷取慢日誌條目",
slowlogFetchFailed: "擷取慢日誌失敗:{error}",
slowlogColumnId: "ID",
slowlogColumnTimestamp: "時間戳",
slowlogColumnDuration: "耗時 (μs)",
slowlogColumnCommand: "命令",
slowlogColumnClientAddr: "用戶端",
slowlogColumnClientName: "用戶端名稱",
slowlogTotal: "{count} 條條目",
slowlogDetailTitle: "慢日誌條目 #{id}",
pubsub: "發布/訂閱",
pubsubConnected: "已連線",
pubsubConnecting: "連線中...",
@ -1727,6 +1879,15 @@ export default {
tableError: "資料表 {table} 傳輸失敗:{error}",
overallProgress: "整體進度",
dataTransfer: "資料傳輸",
targetTableNameCase: "目標資料表名稱大小寫",
tableNameCasePreserve: "保留",
tableNameCaseLower: "小寫",
tableNameCaseUpper: "大寫",
runInBackground: "背景執行",
newTask: "新增傳輸",
editConfig: "編輯配置",
retry: "重試",
targetTableBusy: "另一個傳輸正在寫入目標資料表:{tables}",
},
tableImport: {
title: "匯入資料表資料",
@ -1921,6 +2082,7 @@ export default {
error: "錯誤",
cancelled: "已取消",
},
runInBackground: "背景執行",
},
diff: {
title: "比較架構",
@ -1969,6 +2131,76 @@ export default {
foreignKey: "外鍵",
trigger: "觸發器",
},
recentConfigs: "最近配置",
selectRecentConfig: "選擇最近配置",
configSaved: "配置已儲存",
configDeleted: "配置已刪除",
sourceObject: "來源物件",
targetObject: "目標物件",
saveConfig: "儲存配置",
loadConfig: "載入配置",
ddlCompare: "DDL 比較",
deployScript: "部署腳本",
deployScriptAll: "全部部署腳本",
deployScriptDesc: "所選物件的 SQL 腳本",
deployScriptAllDesc: "所有已選物件的 SQL 腳本",
executeAll: "全部執行",
executeSuccess: "執行成功",
selectObjectToCompare: "選擇物件以檢視 DDL 比較",
noDdlAvailable: "無可用的 DDL",
noDeployScript: "無部署腳本",
noDeployScriptAll: "所選物件無部署腳本",
sourceDdl: "來源 DDL",
targetDdl: "目標 DDL",
objectNotExistsInSource: "此物件在來源資料庫中不存在",
objectNotExistsInTarget: "此物件在目標資料庫中不存在",
nextStepDeploy: "下一步(檢視部署)",
deployReview: "部署審查",
backToResult: "返回結果",
copyScript: "複製腳本",
deployToServer: "部署到伺服器",
deployConfirmTitle: "最終確認",
deployConfirmMessage: "您即將對目標資料庫部署以下變更",
targetServer: "目標伺服器",
dbVersion: "資料庫版本",
confirmDeploy: "確認部署",
recompare: "重新比較",
maximize: "最大化",
noObjectsSelected: "請選擇要部署的物件",
deploySuccess: "部署成功",
deployFailed: "部署失敗",
deploySuccessMessage: "SQL 腳本已在目標資料庫成功執行",
deployFailedMessage: "執行期間發生錯誤",
executedStatements: "已執行的語句",
serverVersion: "伺服器版本",
info: "資訊",
connType: "連線類型",
connName: "連線名稱",
port: "連接埠",
saveConfigPrompt: "請輸入配置名稱:",
connection: "連線",
database: "資料庫",
schema: "Schema",
operation: "操作",
selectedCount: "已選擇 {selected} 個(共 {total} 個)",
options: "選項",
copy: "複製",
execute: "執行",
exportSql: "匯出 .sql",
targetDatabase: "目標資料庫",
targetSchema: "目標 Schema",
useTransaction: "在事務中執行(失敗自動回滾)",
exportSuccess: "匯出成功",
create: "建立",
delete: "刪除",
modify: "修改",
cancel: "取消",
prevStep: "上一步",
restore: "還原",
affectedRows: "影響列數",
host: "主機",
copied: "已複製到剪貼簿",
close: "關閉",
},
schemaDiff: {
optionsTitle: "比較選項",
@ -2154,6 +2386,7 @@ export default {
jdbcTab: "JDBC 驅動程式",
securityTab: "安全",
aboutTab: "關於我們",
dataTab: "資料",
fontFamily: "字型",
selectFont: "選擇字型……",
searchFont: "搜尋字型……",
@ -2449,6 +2682,20 @@ export default {
mcpNpmBoundary: "DBX 只檢測和提示 MCP 狀態;安裝與升級仍由 npm 完成。",
mcpRefresh: "重新檢查",
mcpGuide: "MCP 指南",
updateDownloadSource: "更新下載來源",
updateDownloadSourceDescription: "選擇應用程式內更新安裝程式的下載來源。建議使用官方來源CNB 在中國大陸網路環境下可能更快。",
updateDownloadSourceOfficial: "官方來源(建議)",
updateDownloadSourceCnb: "CNB",
exportSection: "匯出",
exportBatchSize: "匯出批次大小",
exportBatchSizeDescription: "匯出資料時每批次擷取的列數100-100000。",
exportRowLimitEnabled: "限制匯出行數",
exportRowLimitEnabledDescription: "開啟後,查詢結果和資料表資料匯出將在下方設定的行數上限處停止。",
exportRowLimit: "資料匯出行數上限",
exportRowLimitDescription: "查詢結果和資料表資料匯出的最大行數。",
exportRowLimitUnlimited: "無限制",
queryExportKeysetOptimizationEnabled: "嘗試 keyset 最佳化",
queryExportKeysetOptimizationEnabledDescription: "僅適用於可安全識別的單表查詢;複雜查詢會自動回退。",
},
driverStore: {
progressJreExtract: "解壓縮 JRE……",
@ -2557,6 +2804,18 @@ export default {
driverStoreDirMigrationFailed: "驅動儲存路徑遷移失敗:{error}",
driverStoreDirDialogTitle: "選擇 {target}",
driverStoreDirSuccess: "{target} 已更改,正在重啟…",
progressDownloadJdbcPlugin: "正在下載 JDBC 外掛程式",
progressJdbcPluginExtract: "正在安裝 JDBC 外掛程式...",
offlineDownloadHint: "對於離線環境,請在有網路的機器上下載離線驅動程式包,然後在此處匯入。",
offlineDownloadLink: "離線驅動程式下載",
searchDrivers: "搜尋驅動程式名稱、類型、版本...",
searchJdbcDrivers: "搜尋 JDBC 驅動程式名稱或路徑...",
jdbcMavenCoordinatePlaceholder: "Maven 座標,例如 org.postgresql:postgresql:42.7.7",
jdbcMavenInstall: "從 Maven 安裝",
jdbcMavenInstallSuccess: "JDBC Maven 驅動程式已安裝",
jdbcSourceMaven: "Maven",
jdbcSourceManual: "手動",
noMatchingDrivers: "沒有相符的驅動程式。",
},
databaseExport: {
title: "匯出資料庫",
@ -2580,6 +2839,7 @@ export default {
exportSuccess: "資料庫匯出成功",
exportError: "匯出失敗: {error}",
exportCancelled: "匯出已取消",
runInBackground: "背景執行",
},
nacos: {
configs: "配置",
@ -2688,5 +2948,114 @@ export default {
next: "下一頁",
test: "測試",
readOnly: "唯讀",
createNamespace: "建立命名空間",
editNamespace: "編輯命名空間",
creatingNamespace: "正在建立...",
updatingNamespace: "正在更新...",
namespaceCreated: "命名空間「{name}」已建立",
namespaceUpdated: "命名空間「{name}」已更新",
namespaceId: "命名空間 ID",
namespaceIdPlaceholder: "留空由 Nacos 自動產生",
namespaceName: "命名空間名稱",
namespaceNamePlaceholder: "輸入命名空間名稱",
namespaceDesc: "描述",
namespaceDescPlaceholder: "預設為命名空間名稱",
},
};
userAdmin: {
title: "使用者與權限",
unsupported: "支援 MySQL 相容和 PostgreSQL 相容連線。SQL Server、Oracle 等其他權限模型將在後續版本中新增。",
newUser: "新增使用者",
anonymous: "匿名",
roleName: "角色名稱",
allowLogin: "允許登入",
searchUser: "搜尋使用者或主機",
loadingUsers: "正在載入使用者...",
loadingGrants: "正在載入授權...",
emptyUsers: "未找到使用者,或目前帳號無法讀取使用者清單。",
pluginUnknown: "認證外掛程式未知",
grants: "授權",
noGrants: "未找到授權",
privilegeEditor: "權限編輯器",
privilegeHint: "選擇權限、資料庫和資料表,然後在套用前預覽 SQL。* 表示全域或所有資料表。",
database: "資料庫",
schema: "Schema",
table: "資料表",
scope: "授權範圍",
scopeDatabase: "資料庫",
scopeSchema: "Schema",
scopeTable: "資料表",
scopeRole: "角色成員",
memberRole: "成員角色",
privileges: "權限",
grantOption: "允許進一步授權WITH GRANT OPTION",
adminOption: "允許成員管理WITH ADMIN OPTION",
grant: "授予",
revoke: "撤銷",
username: "使用者名稱",
host: "主機",
changePassword: "變更密碼",
newPassword: "新密碼",
lock: "鎖定",
unlock: "解鎖",
disableLogin: "停用登入",
enableLogin: "啟用登入",
dropUser: "刪除使用者",
previewSql: "預覽 SQL",
sqlPreview: "SQL 預覽",
applySql: "套用 SQL",
applySuccess: "使用者權限已更新",
applyFailed: "執行失敗:{message}",
},
etcd: {
prefixPlaceholder: "前綴,例如 /app/",
newKey: "新增 Key",
loadingKeys: "正在載入 key...",
empty: "未找到 key",
loadMore: "載入更多",
selectKey: "選擇一個 key 以檢視其值",
loadingValue: "正在載入值...",
notFound: "Key 未找到",
edit: "編輯",
editKey: "編輯 Key",
delete: "刪除",
deleteTitle: "刪除 etcd key",
keyPlaceholder: "/path/to/key",
keyRequired: "Key 不能為空",
saved: "Key 已儲存",
deleted: "Key 已刪除",
base64Readonly: "Base64 值在此版本中為唯讀。",
},
zookeeper: {
prefixPlaceholder: "路徑前綴,例如 /app/",
newKey: "新增 Znode",
loadingKeys: "正在載入 znode...",
empty: "未找到 znode",
loadMore: "載入更多",
selectKey: "選擇一個 znode 以檢視其值",
loadingValue: "正在載入值...",
notFound: "Znode 未找到",
edit: "編輯",
editKey: "編輯 Znode",
delete: "刪除",
deleteTitle: "刪除 ZooKeeper znode",
keyPlaceholder: "/path/to/znode",
keyRequired: "Znode 路徑不能為空",
saved: "Znode 已儲存",
deleted: "Znode 已刪除",
base64Readonly: "Base64 值在此版本中為唯讀。",
createMode: "建立模式",
createModePersistent: "持久",
createModeEphemeral: "臨時",
createModePersistentSequential: "持久有序",
createModeEphemeralSequential: "臨時有序",
add: "新增",
value: "值",
metadata: "節點資訊",
prettyJson: "格式化",
invalidJson: "無效的 JSON",
summaryRevision: "修訂",
summaryVersion: "版本",
summaryLease: "租約",
summarySize: "大小",
},
});