* chore: just a plan update * Add LM Studio as local AI provider (OpenAI-compatible, like Ollama) * Convert WebP thumbnails to JPEG before image analysis for LM Studio compatibility * Strengthen language enforcement in image analysis prompt for local models * Use i18n localized prompts for image analysis instead of English instructions * Add airplane mode (Flugmodus) with status bar toggle and offline model preferences * Fix flightmode: persist model IDs, skip network when offline, airplane icon * Auto-fallback to offline models in airplane mode for chat, title, and image analysis * Auto-select first local model as offline fallback when no explicit offline model configured * Block git fetch/pull/push and site upload in airplane mode * fix: thumbnails optimized for AI * fix: error handling in airplane mode --------- Co-authored-by: hugo <hugoms@me.com>
1058 lines
65 KiB
JSON
1058 lines
65 KiB
JSON
{
|
|
"common.save": "Guardar",
|
|
"common.cancel": "Cancelar",
|
|
"common.clear": "Limpiar",
|
|
"common.settings": "Configuración",
|
|
"common.tasks": "Tareas",
|
|
"common.running": "en ejecución",
|
|
"common.pending": "pendiente",
|
|
"activity.posts": "Entradas",
|
|
"activity.pages": "Páginas",
|
|
"activity.media": "Medios",
|
|
"activity.scripts": "Scripts",
|
|
"activity.tags": "Etiquetas",
|
|
"activity.templates": "Plantillas",
|
|
"activity.aiAssistant": "Asistente IA",
|
|
"activity.import": "Importar",
|
|
"activity.sourceControl": "Control de código fuente",
|
|
"activity.toggleHint": "(haz clic de nuevo para alternar la barra lateral)",
|
|
"tasks.backgroundTasks": "Tareas en segundo plano",
|
|
"tasks.clearCompleted": "Limpiar completadas",
|
|
"tasks.recent": "Recientes",
|
|
"tasks.noActive": "No hay tareas activas",
|
|
"tasks.cancelTask": "Cancelar tarea",
|
|
"tasks.triggerTitle": "{running} en ejecución, {pending} pendiente",
|
|
"app.taskCompleted": "Tarea completada: {message}",
|
|
"app.taskFailed": "Tarea fallida: {message}",
|
|
"app.blogmark.transforms.summary": "Transformaciones de blogmark: {applied} aplicadas, {failed} fallidas",
|
|
"app.blogmark.transforms.appliedList": "Scripts aplicados: {scripts}",
|
|
"app.blogmark.transforms.failed": "Transformación fallida ({script}): {message}",
|
|
"app.blogmark.transforms.toast": "Toast del script: {message}",
|
|
"app.blogmark.transforms.errorToast": "Errores de transformación de blogmark: {count}",
|
|
"app.databaseRebuildFailed": "La reconstrucción de la base de datos falló",
|
|
"app.textReindexFailed": "La reindexación de texto falló",
|
|
"app.sitemapGenerationFailed": "La generación del sitemap falló",
|
|
"app.calendarRegenerationFailed": "La regeneración del calendario falló",
|
|
"app.uploadSiteFailed": "Error al subir el sitio",
|
|
"app.uploadSiteOfflineMode": "La subida del sitio no está disponible en modo avión.",
|
|
"app.uploadSiteNoCredentials": "Configure primero las credenciales SSH en Configuración.",
|
|
"app.previewOpenFailed": "No se pudo abrir la vista previa de la entrada seleccionada",
|
|
"app.metadataDiff": "Diferencia de Metadatos",
|
|
"app.importComplete": "Importación completada: {posts} entradas, {media} archivos multimedia",
|
|
"siteValidation.tabTitle": "Validación del sitio",
|
|
"siteValidation.title": "Validar sitio",
|
|
"siteValidation.summary": "URLs esperadas: {expected} · URLs HTML existentes: {existing} · Faltantes: {missing} · Sobrantes: {extra} · Entradas actualizadas: {updated}",
|
|
"siteValidation.loading": "Validando el sitio...",
|
|
"siteValidation.missingTitle": "URLs HTML faltantes (para renderizar)",
|
|
"siteValidation.extraTitle": "URLs HTML no referenciadas (para eliminar)",
|
|
"siteValidation.updatedTitle": "URLs de entradas actualizadas (para volver a renderizar)",
|
|
"siteValidation.noneMissing": "No se encontraron URLs faltantes.",
|
|
"siteValidation.noneExtra": "No se encontraron URLs sobrantes.",
|
|
"siteValidation.noneUpdated": "No se encontraron URLs de entradas actualizadas.",
|
|
"siteValidation.apply": "Aplicar",
|
|
"siteValidation.applying": "Aplicando...",
|
|
"siteValidation.error.validate": "La validación del sitio falló",
|
|
"siteValidation.error.apply": "La aplicación de la validación falló",
|
|
"siteValidation.toast.applySuccess": "Validación aplicada: {rendered} renderizadas, {deleted} eliminadas",
|
|
"menuEditor.tabTitle": "Menú del blog",
|
|
"menuEditor.title": "Editor del menú del blog",
|
|
"menuEditor.description": "Gestiona la estructura central de navegación del blog y guárdala en meta/menu.opml.",
|
|
"menuEditor.loading": "Cargando menú...",
|
|
"menuEditor.loadError": "No se pudo cargar el menú del blog",
|
|
"menuEditor.save": "Guardar menú",
|
|
"menuEditor.saving": "Guardando...",
|
|
"menuEditor.saved": "Menú del blog guardado",
|
|
"menuEditor.saveFailed": "No se pudo guardar el menú del blog",
|
|
"menuEditor.addEntry": "Añadir entrada",
|
|
"menuEditor.newEntryPlaceholder": "Escribe un título de página o etiqueta de submenú",
|
|
"menuEditor.createHint": "Selecciona una página abajo o pulsa Enter para crear un submenú",
|
|
"menuEditor.pagePicker.title": "Seleccionar página",
|
|
"menuEditor.pagePicker.searchPlaceholder": "Buscar páginas por título o slug...",
|
|
"menuEditor.pagePicker.loading": "Cargando páginas...",
|
|
"menuEditor.pagePicker.empty": "No se encontraron páginas coincidentes.",
|
|
"menuEditor.pagePicker.loadError": "No se pudieron cargar las páginas",
|
|
"menuEditor.addPage": "Añadir página",
|
|
"menuEditor.addCategoryArchive": "Añadir archivo de categoría",
|
|
"menuEditor.addCategoryArchiveShort": "C+",
|
|
"menuEditor.addSubmenu": "Añadir submenú",
|
|
"menuEditor.addChildPage": "Añadir página hija",
|
|
"menuEditor.addChildSubmenu": "Añadir submenú hijo",
|
|
"menuEditor.moveUp": "Mover arriba",
|
|
"menuEditor.moveDown": "Mover abajo",
|
|
"menuEditor.indent": "Sangrar",
|
|
"menuEditor.unindent": "Quitar sangría",
|
|
"menuEditor.delete": "Eliminar",
|
|
"menuEditor.details": "Detalles de la entrada",
|
|
"menuEditor.selectItem": "Selecciona una entrada para editar sus detalles.",
|
|
"menuEditor.field.title": "Título",
|
|
"menuEditor.field.type": "Tipo",
|
|
"menuEditor.field.pageSlug": "Slug de página",
|
|
"menuEditor.field.pageId": "ID de página",
|
|
"menuEditor.type.page": "Página",
|
|
"menuEditor.type.home": "Inicio",
|
|
"menuEditor.type.submenu": "Submenú",
|
|
"menuEditor.type.categoryArchive": "Archivo de categoría",
|
|
"menuEditor.empty": "Aún no hay entradas de menú. Añade una página o un submenú para empezar.",
|
|
"menuEditor.newPage": "Nueva página",
|
|
"menuEditor.newSubmenu": "Nuevo submenú",
|
|
"menuEditor.newCategoryPlaceholder": "Escribe un nombre de categoría",
|
|
"menuEditor.categoryPicker.loadError": "No se pudieron cargar las categorías",
|
|
"settings.language.english": "Inglés",
|
|
"settings.language.german": "Alemán",
|
|
"settings.language.french": "Francés",
|
|
"settings.language.italian": "Italiano",
|
|
"settings.language.spanish": "Español",
|
|
"settings.language.portuguese": "Portugués (Português)",
|
|
"settings.language.dutch": "Neerlandés (Nederlands)",
|
|
"settings.language.polish": "Polaco (Polski)",
|
|
"settings.language.russian": "Ruso (Русский)",
|
|
"settings.language.japanese": "Japonés (日本語)",
|
|
"settings.language.chinese": "Chino (中文)",
|
|
"settings.language.korean": "Coreano (한국어)",
|
|
"settings.language.arabic": "Árabe (العربية)",
|
|
"settings.language.hindi": "Hindi",
|
|
"settings.language.turkish": "Turco (Türkçe)",
|
|
"settings.language.swedish": "Sueco (Svenska)",
|
|
"settings.language.danish": "Danés (Dansk)",
|
|
"settings.language.norwegian": "Noruego (Norsk)",
|
|
"settings.language.finnish": "Finés (Suomi)",
|
|
"settings.language.czech": "Checo (Čeština)",
|
|
"settings.project.title": "Proyecto",
|
|
"settings.project.browse": "Examinar",
|
|
"settings.project.reset": "Restablecer",
|
|
"settings.project.resetDefault": "Restablecer por defecto",
|
|
"settings.project.selectDataFolder": "Seleccionar carpeta de datos del proyecto",
|
|
"settings.editor.title": "Editor de texto",
|
|
"settings.editor.mode.wysiwyg": "WYSIWYG (editor visual)",
|
|
"settings.editor.mode.markdown": "Markdown (fuente)",
|
|
"settings.editor.mode.preview": "Vista previa (solo lectura)",
|
|
"settings.editor.diff.inline": "En línea",
|
|
"settings.editor.diff.sideBySide": "Lado a lado",
|
|
"settings.content.title": "Categorías de entradas",
|
|
"settings.content.renderInLists": "Mostrar en listas",
|
|
"settings.content.showTitles": "Mostrar títulos",
|
|
"settings.ai.title": "Asistente IA",
|
|
"settings.ai.noModels": "No hay modelos disponibles",
|
|
"settings.technology.title": "Tecnología",
|
|
"settings.technology.description": "Configura el comportamiento de ejecución para scripts de Python.",
|
|
"settings.technology.pythonRuntimeModeLabel": "Modo de ejecución de Python",
|
|
"settings.technology.pythonRuntimeModeDescription": "Elige dónde se ejecutan los scripts de Python para los flujos de transformación.",
|
|
"settings.technology.pythonRuntimeMode.webworker": "Web Worker (recomendado)",
|
|
"settings.technology.pythonRuntimeMode.mainThread": "Hilo principal (heredado)",
|
|
"settings.publishing.sshTitle": "Publicación SSH",
|
|
"settings.data.title": "Mantenimiento de base de datos",
|
|
"settings.data.fileSystemTitle": "Sistema de archivos",
|
|
"settings.search.placeholder": "Buscar configuración...",
|
|
"settings.search.noResults": "No se encontró configuración que coincida con \"{query}\"",
|
|
"settings.search.clear": "Limpiar búsqueda",
|
|
"settings.toast.publishingSaved": "Credenciales de publicación guardadas",
|
|
"settings.toast.saveCredentialsFailed": "No se pudieron guardar las credenciales",
|
|
"settings.toast.credentialsCleared": "Credenciales de {type} borradas",
|
|
"settings.toast.projectSaved": "Configuración del proyecto guardada",
|
|
"settings.toast.projectSaveFailed": "No se pudo guardar la configuración del proyecto",
|
|
"settings.toast.blogmarkBookmarkletCopied": "Bookmarklet de blogmark copiado al portapapeles",
|
|
"settings.toast.blogmarkBookmarkletCopyFailed": "No se pudo copiar el bookmarklet de blogmark",
|
|
"settings.toast.blogmarkBookmarkletGenerateFailed": "No se pudo generar el bookmarklet de blogmark",
|
|
"settings.toast.categoryAdded": "Categoría \"{category}\" agregada",
|
|
"settings.toast.categoryAddFailed": "No se pudo agregar la categoría",
|
|
"settings.toast.categoryExists": "La categoría ya existe",
|
|
"settings.toast.categoryProtected": "No se puede eliminar la categoría estándar \"{category}\"",
|
|
"settings.toast.categoryAtLeastOne": "Debe haber al menos una categoría",
|
|
"settings.toast.categoryRemoved": "Categoría \"{category}\" eliminada",
|
|
"settings.toast.categoryRemoveFailed": "No se pudo eliminar la categoría",
|
|
"settings.toast.categoriesReset": "Categorías restablecidas a los valores predeterminados",
|
|
"settings.toast.categoriesResetFailed": "No se pudieron restablecer las categorías",
|
|
"settings.toast.categorySettingsUpdateFailed": "No se pudo actualizar la configuración de categorías",
|
|
"settings.toast.systemPromptSaved": "Prompt del sistema guardado",
|
|
"settings.toast.systemPromptSaveFailed": "No se pudo guardar el prompt del sistema",
|
|
"settings.toast.systemPromptReset": "Prompt del sistema restablecido al predeterminado",
|
|
"settings.toast.systemPromptResetFailed": "No se pudo restablecer el prompt del sistema",
|
|
"settings.toast.apiKeySaved": "Clave API guardada y validada",
|
|
"settings.toast.apiKeyInvalid": "Clave API no válida",
|
|
"settings.toast.apiKeySaveFailed": "No se pudo guardar la clave API",
|
|
"settings.toast.defaultModelUpdated": "Modelo predeterminado actualizado",
|
|
"settings.toast.defaultModelUpdateFailed": "No se pudo establecer el modelo predeterminado",
|
|
"settings.toast.rebuildPostsLoading": "Reconstruyendo base de datos de entradas...",
|
|
"settings.toast.rebuildPostsSuccess": "Base de datos de publicaciones reconstruida",
|
|
"settings.toast.rebuildPostsFailed": "No se pudo reconstruir la base de datos de entradas",
|
|
"settings.toast.rebuildMediaLoading": "Reconstruyendo base de datos de medios...",
|
|
"settings.toast.rebuildMediaSuccess": "Base de datos de medios reconstruida",
|
|
"settings.toast.rebuildMediaFailed": "No se pudo reconstruir la base de datos de medios",
|
|
"settings.toast.rebuildScriptsLoading": "Reconstruyendo base de datos de scripts...",
|
|
"settings.toast.rebuildScriptsSuccess": "Base de datos de scripts reconstruida",
|
|
"settings.toast.rebuildScriptsFailed": "No se pudo reconstruir la base de datos de scripts",
|
|
"settings.toast.rebuildTemplatesLoading": "Reconstruyendo la base de datos de plantillas...",
|
|
"settings.toast.rebuildTemplatesSuccess": "Base de datos de plantillas reconstruida",
|
|
"settings.toast.rebuildTemplatesFailed": "Error al reconstruir la base de datos de plantillas",
|
|
"settings.toast.rebuildLinksLoading": "Reconstruyendo enlaces de entradas...",
|
|
"settings.toast.rebuildLinksSuccess": "Enlaces de publicaciones reconstruidos",
|
|
"settings.toast.rebuildLinksFailed": "No se pudieron reconstruir los enlaces de entradas",
|
|
"settings.toast.thumbnailsLoading": "Generando miniaturas...",
|
|
"settings.toast.thumbnailsGenerated": "Se generaron {count} miniaturas",
|
|
"settings.toast.thumbnailsAlreadyExist": "Todas las miniaturas ya existen",
|
|
"settings.toast.thumbnailsComplete": "Generación de miniaturas completa",
|
|
"settings.toast.thumbnailsFailed": "No se pudieron generar miniaturas",
|
|
"chat.setupTitle": "Configuración de chat IA",
|
|
"chat.apiKeyRequiredTitle": "Clave API requerida",
|
|
"chat.apiKeyRequiredDescription": "Configura una clave API en Ajustes para habilitar el chat de IA.",
|
|
"chat.openSettings": "Abrir Ajustes",
|
|
"chat.apiKeyPlaceholder": "Introduce tu clave API...",
|
|
"chat.apiKeySave": "Guardar clave",
|
|
"chat.newChat": "Nuevo chat",
|
|
"chat.welcomeTitle": "Bienvenido al asistente de IA",
|
|
"chat.welcomeDescription": "Puedo ayudarte a gestionar tu blog con visualizaciones interactivas. Prueba a pedirme que:",
|
|
"chat.welcomeTipSearch": "Busque entradas sobre un tema específico",
|
|
"chat.welcomeTipChart": "Muestre un gráfico de entradas publicadas por mes",
|
|
"chat.welcomeTipTable": "Compare mis entradas recientes en una tabla",
|
|
"chat.welcomeTipMetadata": "Actualice metadatos de entradas o medios",
|
|
"chat.welcomeTipTabs": "Muestre estadísticas por año en pestañas con gráficos",
|
|
"chat.role.you": "Tú",
|
|
"chat.role.assistant": "Asistente",
|
|
"chat.stop": "Detener",
|
|
"chat.inputPlaceholder": "Escribe un mensaje...",
|
|
"chat.errorPrefix": "Error del sistema: {error}",
|
|
"chat.errorNoResponse": "No se pudo obtener una respuesta. Inténtalo de nuevo.",
|
|
"chat.errorEmptyResponse": "El modelo devolvió una respuesta vacía. Prueba otro modelo o reformula tu pregunta.",
|
|
"chat.errorGeneric": "Lo siento, ocurrió un error al procesar tu mensaje.",
|
|
"chat.cancelledSuffix": "(cancelado)",
|
|
"aiSuggestions.title": "Análisis de imagen IA",
|
|
"aiSuggestions.close": "Cerrar",
|
|
"aiSuggestions.analyzing": "Analizando imagen...",
|
|
"aiSuggestions.titleField": "Título",
|
|
"aiSuggestions.altField": "Texto alternativo",
|
|
"aiSuggestions.captionField": "Pie de foto",
|
|
"aiSuggestions.hasExisting": "(tiene valor existente)",
|
|
"aiSuggestions.current": "Actual",
|
|
"aiSuggestions.intro": "Selecciona qué valores generados por IA aplicar. Los valores existentes se conservan de forma predeterminada.",
|
|
"aiSuggestions.empty": "No se generaron sugerencias para esta imagen.",
|
|
"aiSuggestions.wait": "Por favor espera...",
|
|
"aiSuggestions.applySelected": "Aplicar seleccionados",
|
|
"insert.title.link": "Insertar enlace",
|
|
"insert.title.image": "Insertar imagen",
|
|
"insert.tab.linkInternal": "Enlazar a entrada",
|
|
"insert.tab.imageInternal": "Biblioteca multimedia",
|
|
"insert.tab.linkExternal": "URL externa",
|
|
"insert.tab.imageExternal": "Imagen externa",
|
|
"insert.searchPlaceholder.link": "Buscar entradas por título o contenido...",
|
|
"insert.searchPlaceholder.image": "Buscar medios por nombre, título o texto alternativo...",
|
|
"insert.status.searching": "Buscando...",
|
|
"insert.status.typeMore": "Escribe al menos 2 caracteres para buscar",
|
|
"insert.status.noResults": "No se encontró {kind} para \"{query}\"",
|
|
"insert.label.url": "Dirección URL",
|
|
"insert.label.linkTextOptional": "Texto del enlace (opcional)",
|
|
"insert.label.altText": "Texto alternativo",
|
|
"insert.placeholder.linkUrl": "https://ejemplo.es",
|
|
"insert.placeholder.imageUrl": "https://ejemplo.es/imagen.jpg",
|
|
"insert.placeholder.linkText": "Haz clic aquí",
|
|
"insert.placeholder.imageAlt": "Descripción de la imagen",
|
|
"insert.submit.link": "Insertar enlace",
|
|
"insert.submit.image": "Insertar imagen",
|
|
"insert.hint.internal": "Usa ↑↓ para navegar, Enter para seleccionar, Esc para cerrar",
|
|
"insert.hint.external": "Introduce la URL y pulsa Enter o haz clic en el botón, Esc para cerrar",
|
|
"insert.hint.canonicalPost": "Canónico: /YYYY/MM/DD/slug",
|
|
"insert.hint.canonicalMedia": "Canónico: /media/YYYY/MM/archivo.ext",
|
|
"insert.createPost": "Crear artículo \"{title}\"",
|
|
"insert.createdPost": "Artículo \"{title}\" creado",
|
|
"postLinks.loading": "Cargando enlaces...",
|
|
"postLinks.link": "enlace",
|
|
"postLinks.links": "enlaces",
|
|
"postLinks.linksTo": "Enlaces a ({count})",
|
|
"postLinks.linkedBy": "Enlazado por ({count})",
|
|
"postLinks.openTitle": "Abrir: {title}",
|
|
"docs.title": "Documentación",
|
|
"docs.subtitle": "Guía de usuario para esta versión instalada de bDS.",
|
|
"docs.apiTitle": "Documentación API",
|
|
"docs.apiSubtitle": "Referencia completa de llamadas API del runtime de Python.",
|
|
"docs.copyCode": "Copiar código",
|
|
"gitDiff.header": "Diferencia: {target}",
|
|
"gitDiff.noProject": "No hay un proyecto activo seleccionado.",
|
|
"gitDiff.noProjectPath": "No se pudo resolver la ruta del proyecto.",
|
|
"gitDiff.loadFailed": "No se pudo cargar el diff.",
|
|
"gitDiff.loading": "Cargando diff...",
|
|
"gitDiff.changedFiles": "Archivos modificados",
|
|
"gitDiff.previousFile": "Archivo anterior",
|
|
"gitDiff.nextFile": "Archivo siguiente",
|
|
"errorModal.error": "Error del sistema",
|
|
"errorModal.stackTrace": "Traza de pila",
|
|
"errorModal.copyClipboard": "Copiar al portapapeles",
|
|
"errorModal.copy": "Copiar",
|
|
"errorModal.noStack": "No hay traza de pila disponible",
|
|
"confirmDelete.title": "Confirmar eliminación",
|
|
"confirmDelete.promptPost": "¿Seguro que quieres eliminar la entrada",
|
|
"confirmDelete.promptMedia": "¿Seguro que quieres eliminar el archivo multimedia",
|
|
"confirmDelete.warning": "Advertencia:",
|
|
"confirmDelete.referencedBy": "Este {itemType} está referenciado por los siguientes elementos:",
|
|
"confirmDelete.note": "Eliminar este {itemType} quitará todas estas referencias.",
|
|
"confirmDelete.cancel": "Cancelar",
|
|
"confirmDelete.deletePost": "Eliminar publicación",
|
|
"confirmDelete.deleteMedia": "Eliminar medio",
|
|
"confirmDelete.itemType.post": "entrada",
|
|
"confirmDelete.itemType.media": "medios",
|
|
"lightbox.close": "Cerrar (Esc)",
|
|
"lightbox.previous": "Anterior (←)",
|
|
"lightbox.next": "Siguiente (→)",
|
|
"credentials.error.load": "No se pudieron cargar las credenciales:",
|
|
"credentials.error.save": "No se pudieron guardar las credenciales:",
|
|
"credentials.toast.saved": "Credenciales guardadas",
|
|
"credentials.toast.saveFailed": "No se pudieron guardar las credenciales",
|
|
"credentials.toast.testing": "Probando conexión {type}...",
|
|
"credentials.toast.connectionFailed": "La conexión falló - revisa las credenciales",
|
|
"credentials.tab.ssh": "Acceso SSH",
|
|
"credentials.ssh.title": "Publicación SSH",
|
|
"credentials.ssh.description": "Configura SSH para publicar de forma segura en tu servidor.",
|
|
"credentials.field.host": "Servidor",
|
|
"credentials.field.username": "Nombre de usuario",
|
|
"credentials.field.sshRemotePath": "Ruta remota",
|
|
"credentials.ssh.placeholder.host": "servidor.ejemplo.es",
|
|
"credentials.ssh.placeholder.username": "usuario-ssh",
|
|
"credentials.ssh.placeholder.remotePath": "/var/www/html",
|
|
"gitSidebar.header": "CONTROL DE CÓDIGO FUENTE",
|
|
"gitSidebar.loading": "Cargando...",
|
|
"gitSidebar.error.fetchRemoteUpdates": "No se pudieron obtener las actualizaciones remotas.",
|
|
"gitSidebar.error.refreshRemoteState": "No se pudo actualizar el estado de seguimiento remoto.",
|
|
"gitSidebar.error.gitMissing": "No se encontró el ejecutable de Git. Instala Git y reinicia la aplicación.",
|
|
"gitSidebar.error.noActiveProject": "No hay un proyecto activo seleccionado.",
|
|
"gitSidebar.error.loadRepoStatus": "No se pudo cargar el estado del repositorio.",
|
|
"gitSidebar.error.initFailed": "No se pudo inicializar el repositorio Git.",
|
|
"gitSidebar.error.actionFailed": "No se pudo {action}.",
|
|
"gitSidebar.error.offlineMode": "Esta acción no está disponible en modo avión.",
|
|
"gitSidebar.error.commitFailed": "No se pudieron confirmar los cambios.",
|
|
"gitSidebar.progress.preparingInit": "Preparando inicialización del repositorio...",
|
|
"gitSidebar.progress.pushingRemote": "Enviando commits al remoto... esto puede tardar con cargas grandes.",
|
|
"gitSidebar.progress.fetching": "Obteniendo actualizaciones remotas...",
|
|
"gitSidebar.progress.pulling": "Extrayendo los últimos cambios...",
|
|
"gitSidebar.progress.pruningLfs": "Limpiando caché local de Git LFS...",
|
|
"gitSidebar.progress.committing": "Creando commit...",
|
|
"gitSidebar.progress.initializingRepo": "Inicializando repositorio...",
|
|
"gitSidebar.history.synced": "Sincronizado",
|
|
"gitSidebar.history.localOnly": "Solo local",
|
|
"gitSidebar.history.remoteOnly": "Solo remoto",
|
|
"gitSidebar.init.transcript": "Registro de inicialización",
|
|
"gitSidebar.aria.repoActions": "Acciones del repositorio",
|
|
"gitSidebar.aria.openChanges": "Cambios abiertos",
|
|
"gitSidebar.aria.commitStatusLegend": "Leyenda del estado de commit",
|
|
"gitSidebar.aria.versionHistory": "Historial de versiones",
|
|
"gitSidebar.action.fetch": "Obtener",
|
|
"gitSidebar.action.fetching": "Obteniendo...",
|
|
"gitSidebar.action.pull": "Traer",
|
|
"gitSidebar.action.pulling": "Trayendo cambios...",
|
|
"gitSidebar.action.push": "Enviar",
|
|
"gitSidebar.action.pushing": "Enviando...",
|
|
"gitSidebar.action.pruneLfs": "Podar LFS",
|
|
"gitSidebar.action.pruning": "Podando...",
|
|
"gitSidebar.action.commit": "Realizar commit",
|
|
"gitSidebar.action.committing": "Haciendo commit...",
|
|
"gitSidebar.action.loadMoreHistory": "Cargar más",
|
|
"gitSidebar.action.initializeGit": "Inicializar Git",
|
|
"gitSidebar.action.initializing": "Inicializando...",
|
|
"gitSidebar.openChanges": "Cambios abiertos ({count})",
|
|
"gitSidebar.versionHistory": "Historial de versiones ({count})",
|
|
"gitSidebar.loadingChanges": "Cargando cambios...",
|
|
"gitSidebar.noChanges": "Sin cambios",
|
|
"gitSidebar.loadingHistory": "Cargando historial...",
|
|
"gitSidebar.noCommits": "Aún no hay commits",
|
|
"gitSidebar.branch": "Rama: {branch}",
|
|
"gitSidebar.aheadBehind": "adelante {ahead} / detrás {behind}",
|
|
"gitSidebar.notRepo": "Este proyecto no es un repositorio git.",
|
|
"gitSidebar.placeholder.remoteUrl": "URL opcional del repositorio remoto",
|
|
"gitSidebar.placeholder.commitMessage": "Mensaje de commit",
|
|
"editor.untitled": "Sin título",
|
|
"tabBar.style": "Estilo",
|
|
"tabBar.scripts": "Scripts",
|
|
"tabBar.loading": "Cargando...",
|
|
"tabBar.unknown": "Desconocido",
|
|
"tabBar.preview": "Vista previa",
|
|
"tabBar.modified": "Modificado",
|
|
"tabBar.closeHint": "Cerrar (Ctrl+W)",
|
|
"tabBar.scrollLeft": "Desplazar pestañas a la izquierda",
|
|
"tabBar.scrollRight": "Desplazar pestañas a la derecha",
|
|
"tabBar.commitTitle": "Confirmación {hash}",
|
|
"tabBar.error.fetchPostTitle": "No se pudo cargar el título de la entrada:",
|
|
"tabBar.error.fetchChatTitle": "No se pudo cargar el título del chat:",
|
|
"tabBar.error.fetchImportTitle": "No se pudo cargar el título de la definición de importación:",
|
|
"tabBar.error.fetchScriptTitle": "No se pudo cargar el título del script:",
|
|
"tabBar.error.fetchTemplateTitle": "No se pudo cargar el título de la plantilla:",
|
|
"tabBar.error.fetchCommitTitle": "No se pudieron cargar los títulos de los commits:",
|
|
"metadataDiff.title": "Herramienta diff de metadatos",
|
|
"metadataDiff.description": "Compara los metadatos de las entradas entre la base de datos y los archivos Markdown. Corrige inconsistencias causadas por errores o ediciones manuales.",
|
|
"metadataDiff.error.loadStats": "No se pudieron cargar las estadísticas de la base de datos",
|
|
"metadataDiff.error.scan": "No se pudieron analizar las diferencias",
|
|
"metadataDiff.progress.starting": "Iniciando escaneo...",
|
|
"metadataDiff.progress.scanningPublished": "Escaneando entradas publicadas...",
|
|
"metadataDiff.progress.scanning": "Escaneando...",
|
|
"metadataDiff.action.scan": "Buscar diferencias",
|
|
"metadataDiff.action.rescan": "Volver a escanear",
|
|
"metadataDiff.stats.totalPosts": "Entradas totales",
|
|
"metadataDiff.stats.published": "Publicadas",
|
|
"metadataDiff.stats.drafts": "Borradores",
|
|
"metadataDiff.stats.mediaFiles": "Archivos multimedia",
|
|
"metadataDiff.summary.noDiffs": "✅ ¡No se encontraron diferencias! Todas las {total} entradas publicadas están sincronizadas.",
|
|
"metadataDiff.summary.withDiffs": "⚠️ Se encontraron {count} entradas con diferencias de un total de {total} entradas publicadas.",
|
|
"metadataDiff.group.differences": "Diferencias de {label}",
|
|
"metadataDiff.group.postsCount": "{count} entradas",
|
|
"metadataDiff.sync.failed": "falló",
|
|
"metadataDiff.sync.dbToFile.title": "Actualizar archivos con valores de la base de datos",
|
|
"metadataDiff.sync.dbToFile.success": "Se sincronizaron {success} entradas a archivos{falló}",
|
|
"metadataDiff.sync.dbToFile.error": "No se pudo sincronizar a archivos",
|
|
"metadataDiff.sync.fileToDb.title": "Actualizar base de datos con valores de archivos",
|
|
"metadataDiff.sync.fileToDb.success": "Se sincronizaron {success} archivos a la base de datos{falló}",
|
|
"metadataDiff.sync.fileToDb.error": "No se pudo sincronizar a la base de datos",
|
|
"metadataDiff.value.database": "Base de datos",
|
|
"metadataDiff.value.file": "Archivo",
|
|
"metadataDiff.empty": "Haz clic en \"Buscar diferencias\" para comparar metadatos de base de datos con metadatos de archivos.",
|
|
"sidebar.archive": "Archivo",
|
|
"sidebar.clearFilter": "Limpiar filtro",
|
|
"sidebar.tags": "Etiquetas",
|
|
"sidebar.categories": "Categorías",
|
|
"sidebar.clearTags": "Limpiar etiquetas",
|
|
"sidebar.clearCategories": "Limpiar categorías",
|
|
"sidebar.noPostsYet": "Aún no hay entradas",
|
|
"sidebar.noPagesYet": "Aún no hay páginas",
|
|
"sidebar.noMediaYet": "Aún no hay medios",
|
|
"sidebar.search": "Buscar",
|
|
"sidebar.searchPostsPlaceholder": "Buscar entradas...",
|
|
"sidebar.searchPagesPlaceholder": "Buscar páginas...",
|
|
"sidebar.searchMediaPlaceholder": "Buscar medios...",
|
|
"sidebar.toggleFilters": "Alternar filtros",
|
|
"sidebar.newPost": "Nueva entrada",
|
|
"sidebar.importMedia": "Importar medios",
|
|
"sidebar.results": "{count} resultados",
|
|
"sidebar.resultsFor": "{count} resultados para \"{query}\"",
|
|
"sidebar.clearFilters": "Limpiar filtros",
|
|
"sidebar.drafts": "Borradores",
|
|
"sidebar.published": "Publicadas",
|
|
"sidebar.archived": "Archivadas",
|
|
"sidebar.untitled": "Sin título",
|
|
"sidebar.noMatchingPosts": "No hay entradas coincidentes",
|
|
"sidebar.createFirstPost": "Crea tu primera entrada",
|
|
"sidebar.loadMore": "Cargar más ({loaded} de {total})",
|
|
"sidebar.loading": "Cargando...",
|
|
"sidebar.noMediaFiles": "No hay archivos multimedia",
|
|
"sidebar.settingsHeader": "Configuración",
|
|
"sidebar.tagsHeader": "Etiquetas",
|
|
"sidebar.nav.project": "Proyecto",
|
|
"sidebar.nav.editor": "Editor",
|
|
"sidebar.nav.content": "Contenido",
|
|
"sidebar.nav.ai": "Asistente IA",
|
|
"sidebar.nav.technology": "Tecnología",
|
|
"sidebar.nav.publishing": "Publicación",
|
|
"sidebar.nav.data": "Datos",
|
|
"sidebar.nav.style": "Estilo",
|
|
"sidebar.nav.scripts": "Scripts",
|
|
"scripts.run": "Ejecutar script",
|
|
"scripts.save": "Guardar script",
|
|
"scripts.delete": "Eliminar script",
|
|
"scripts.content": "Contenido del script",
|
|
"scripts.field.kind": "Tipo",
|
|
"scripts.field.entrypoint": "Punto de entrada",
|
|
"scripts.entrypoint.main": "main",
|
|
"scripts.entrypoint.none": "No se encontraron funciones",
|
|
"scripts.field.enabled": "Habilitado",
|
|
"scripts.syntax.check": "Comprobar sintaxis",
|
|
"scripts.syntax.checking": "Comprobando...",
|
|
"scripts.syntax.valid": "La sintaxis de Python es válida",
|
|
"scripts.syntax.invalid": "Errores de sintaxis de Python: {count}",
|
|
"scripts.syntax.checkFailed": "La comprobación de sintaxis de Python falló",
|
|
"scripts.kind.utility": "utility",
|
|
"scripts.kind.macro": "macro",
|
|
"scripts.kind.transform": "transform",
|
|
"templates.save": "Guardar plantilla",
|
|
"templates.delete": "Eliminar plantilla",
|
|
"templates.content": "Contenido de la plantilla",
|
|
"templates.field.kind": "Tipo",
|
|
"templates.field.enabled": "Habilitado",
|
|
"templates.validate": "Validar",
|
|
"templates.validate.valid": "La sintaxis de la plantilla es válida",
|
|
"templates.validate.invalid": "Errores de sintaxis de la plantilla: {count}",
|
|
"templates.validate.checking": "Validando...",
|
|
"templates.kind.post": "entrada",
|
|
"templates.kind.list": "lista",
|
|
"templates.kind.not_found": "no encontrado",
|
|
"templates.kind.partial": "parcial",
|
|
"sidebar.tagCloud": "Nube de etiquetas",
|
|
"sidebar.createEdit": "Crear y editar",
|
|
"sidebar.mergeTags": "Combinar etiquetas",
|
|
"settings.project.descriptionGeneral": "Configuración general del proyecto de blog activo.",
|
|
"settings.project.nameLabel": "Nombre del proyecto",
|
|
"settings.project.nameDescription": "Nombre visible de tu proyecto de blog.",
|
|
"settings.project.namePlaceholder": "Mi blog",
|
|
"settings.project.descriptionLabel": "Descripción",
|
|
"settings.project.descriptionDescription": "Descripción breve de tu blog. Puede usarse en plantillas y metadatos.",
|
|
"settings.project.descriptionPlaceholder": "Un blog sobre...",
|
|
"settings.project.dataPathLabel": "Ruta de datos del proyecto",
|
|
"settings.project.dataPathDescription": "Carpeta personalizada para guardar entradas, medios y metadatos. Déjala vacía para usar la ubicación predeterminada: {path}",
|
|
"settings.project.defaultLocation": "Ubicación predeterminada",
|
|
"settings.project.publicUrlLabel": "URL pública",
|
|
"settings.project.publicUrlDescription": "URL base pública de tu blog publicado (se usa para generar el sitemap).",
|
|
"settings.project.publicUrlPlaceholder": "https://example.com",
|
|
"settings.project.mainLanguageLabel": "Idioma principal",
|
|
"settings.project.mainLanguageDescription": "Idioma principal del contenido del blog. Los títulos, textos alternativos y pies generados por IA usarán este idioma.",
|
|
"settings.project.defaultAuthorLabel": "Autor predeterminado",
|
|
"settings.project.defaultAuthorDescription": "Nombre de autor predeterminado para nuevas entradas y medios. Se puede reemplazar por elemento.",
|
|
"settings.project.defaultAuthorPlaceholder": "Nombre del autor",
|
|
"settings.project.maxPostsPerPageLabel": "Máx. entradas por página",
|
|
"settings.project.maxPostsPerPageDescription": "Número máximo de entradas mostradas por página de ruta de vista previa.",
|
|
"settings.project.blogmarkCategoryLabel": "Categoría de blogmark",
|
|
"settings.project.blogmarkCategoryDescription": "Categoría asignada a entradas creadas mediante deep links del bookmarklet.",
|
|
"settings.project.blogmarkBookmarkletLabel": "Bookmarklet del navegador",
|
|
"settings.project.blogmarkBookmarkletDescription": "Copia un bookmarklet para pegarlo en la barra de marcadores del navegador y enviar enlaces de páginas a bDS.",
|
|
"settings.project.blogmarkBookmarkletCopyButton": "Copiar bookmarklet de blogmark",
|
|
"settings.project.saveButton": "Guardar configuración del proyecto",
|
|
"editor.loadingPost": "Cargando entrada...",
|
|
"editor.unsavedChanges": "Cambios sin guardar (se guarda automáticamente al cambiar)",
|
|
"editor.saving": "Guardando...",
|
|
"editor.publish": "Publicar",
|
|
"editor.publishTitle": "Guardar y hacer pública esta entrada",
|
|
"editor.discardChanges": "Descartar cambios",
|
|
"editor.discardDraft": "Descartar borrador",
|
|
"editor.discardChangesTitle": "Volver a la última versión publicada",
|
|
"editor.discardDraftTitle": "Eliminar este borrador de forma permanente",
|
|
"editor.delete": "Eliminar",
|
|
"editor.deleteTitle": "Eliminar esta entrada de forma permanente",
|
|
"editor.field.title": "Título",
|
|
"editor.field.tags": "Etiquetas",
|
|
"editor.field.author": "Autor",
|
|
"editor.field.slug": "Slug",
|
|
"editor.field.categories": "Categorías",
|
|
"editor.field.content": "Contenido",
|
|
"editor.field.template": "Plantilla",
|
|
"editor.field.templateDefault": "Predeterminada",
|
|
"editor.placeholder.tags": "Agregar etiquetas...",
|
|
"editor.placeholder.author": "Nombre del autor",
|
|
"editor.placeholder.categories": "Agregar categorías...",
|
|
"editor.placeholder.startWriting": "Empieza a escribir...",
|
|
"editor.mode.visual": "Visual",
|
|
"editor.mode.visualTitle": "Editor visual",
|
|
"editor.mode.markdownTitle": "Código Markdown",
|
|
"editor.mode.previewTitle": "Vista previa de solo lectura",
|
|
"editor.galleryTitle": "Ver {count} imagen(es)",
|
|
"editor.insertPostLinkTitle": "Enlazar entrada (Ctrl+K)",
|
|
"editor.insertMediaTitle": "Insertar imagen desde la biblioteca multimedia",
|
|
"editor.previewFrameTitle": "Vista previa de la entrada",
|
|
"editor.previewLoading": "Cargando vista previa...",
|
|
"editor.metadata.toggle": "Metadatos",
|
|
"editor.footer.created": "Creado",
|
|
"editor.footer.updated": "Actualizado",
|
|
"editor.footer.published": "Publicado",
|
|
"dashboard.title": "Panel",
|
|
"dashboard.subtitle": "Resumen de la base de datos de tu blog",
|
|
"dashboard.stats.totalPosts": "Entradas totales",
|
|
"dashboard.stats.published": "{count} publicadas",
|
|
"dashboard.stats.drafts": "{count} borradores",
|
|
"dashboard.stats.archived": "{count} archivadas",
|
|
"dashboard.stats.mediaFiles": "Archivos multimedia",
|
|
"dashboard.stats.images": "{count} imágenes",
|
|
"dashboard.stats.tags": "Etiquetas",
|
|
"dashboard.stats.categories": "{count} categorías",
|
|
"dashboard.stats.protocolHealth": "Salud del protocolo",
|
|
"dashboard.stats.blockedActions": "{count} acciones bloqueadas",
|
|
"dashboard.stats.fallbackTurns": "{count} respuestas de respaldo",
|
|
"dashboard.section.postsOverTime": "Entradas a lo largo del tiempo",
|
|
"dashboard.section.tags": "Etiquetas",
|
|
"dashboard.section.categories": "Categorías",
|
|
"dashboard.section.recentlyUpdated": "Actualizadas recientemente",
|
|
"dashboard.tagCloud.more": "+{count} más",
|
|
"dashboard.postCount.one": "{count} entrada",
|
|
"dashboard.postCount.other": "{count} entradas",
|
|
"dashboard.status.draft": "Borrador",
|
|
"dashboard.status.published": "Publicada",
|
|
"dashboard.status.archived": "Archivada",
|
|
"projectSelector.switchProject": "Cambiar proyecto",
|
|
"projectSelector.selectProject": "Seleccionar proyecto",
|
|
"projectSelector.projectsHeader": "Proyectos",
|
|
"projectSelector.noProjectsYet": "Aún no hay proyectos",
|
|
"projectSelector.newProject": "Nuevo proyecto",
|
|
"projectSelector.createNewProject": "Crear nuevo proyecto",
|
|
"projectSelector.projectName": "Nombre del proyecto",
|
|
"projectSelector.projectNamePlaceholder": "Mi blog",
|
|
"projectSelector.descriptionOptional": "Descripción (opcional)",
|
|
"projectSelector.descriptionPlaceholder": "Breve descripción de este proyecto...",
|
|
"projectSelector.projectLocation": "Ubicación del proyecto",
|
|
"projectSelector.useDefaultLocation": "Usar ubicación predeterminada",
|
|
"projectSelector.defaultInternalStorage": "Predeterminado (almacenamiento interno)",
|
|
"projectSelector.chooseFolder": "Elegir carpeta...",
|
|
"projectSelector.projectLocationHint": "Elige una carpeta personalizada para copia de seguridad en la nube o usa el almacenamiento interno predeterminado.",
|
|
"projectSelector.createProject": "Crear proyecto",
|
|
"projectSelector.deleteProject": "Eliminar proyecto",
|
|
"projectSelector.deleteWarning": "Esto eliminará permanentemente el proyecto \"{name}\" y todos sus datos, incluyendo:",
|
|
"projectSelector.deleteItemPosts": "Todas las entradas del blog",
|
|
"projectSelector.deleteItemMedia": "Todos los archivos multimedia",
|
|
"projectSelector.deleteItemSettings": "Toda la configuración del proyecto",
|
|
"projectSelector.typeToConfirm": "Escribe {name} para confirmar la eliminación:",
|
|
"projectSelector.selectProjectLocation": "Seleccionar ubicación del proyecto",
|
|
"projectSelector.deleteProjectTitle": "Eliminar {name}",
|
|
"projectSelector.toast.switched": "Cambiado a {name}",
|
|
"projectSelector.toast.switchFailed": "No se pudo cambiar de proyecto",
|
|
"projectSelector.toast.created": "Proyecto \"{name}\" creado",
|
|
"projectSelector.toast.createFailed": "No se pudo crear el proyecto",
|
|
"projectSelector.toast.existingSettingsFound": "Se encontró configuración de proyecto existente",
|
|
"projectSelector.toast.selectFolderFailed": "No se pudo seleccionar la carpeta",
|
|
"projectSelector.toast.deletedWithData": "Proyecto \"{name}\" y todos sus datos eliminados",
|
|
"projectSelector.toast.deleteFailed": "No se pudo eliminar el proyecto",
|
|
"tagsView.title": "Gestión de etiquetas",
|
|
"tagsView.subtitle": "Administra las etiquetas del blog, asigna colores y realiza operaciones masivas.",
|
|
"tagsView.loadingTags": "Cargando etiquetas...",
|
|
"tagsView.noTagsFound": "No se encontraron etiquetas",
|
|
"tagsView.discoverFromPosts": "Descubrir etiquetas desde entradas",
|
|
"tagsView.selectedCount": "{count} etiqueta(s) seleccionada(s)",
|
|
"tagsView.clearSelection": "Limpiar selección",
|
|
"tagsView.cloud.title": "Nube de etiquetas",
|
|
"tagsView.cloud.description": "Haz clic en las etiquetas para seleccionarlas para operaciones masivas. Pasa el cursor para ver el número de entradas.",
|
|
"tagsView.manage.title": "Crear y editar etiquetas",
|
|
"tagsView.manage.description": "Crea etiquetas nuevas o edita las existentes. Asigna colores para distinguirlas visualmente.",
|
|
"tagsView.create.title": "Crear nueva etiqueta",
|
|
"tagsView.create.action": "Crear",
|
|
"tagsView.tagNamePlaceholder": "Nombre de etiqueta",
|
|
"tagsView.chooseColor": "Elegir color",
|
|
"tagsView.removeColor": "Quitar color",
|
|
"tagsView.edit.title": "Editar etiqueta: {name}",
|
|
"tagsView.edit.action": "Editar",
|
|
"tagsView.edit.postTemplate": "Plantilla de entrada",
|
|
"tagsView.deleteAction": "Eliminar",
|
|
"tagsView.merge.title": "Combinar etiquetas",
|
|
"tagsView.merge.description": "Selecciona varias etiquetas arriba y combínalas en una sola. Se actualizarán todas las entradas.",
|
|
"tagsView.merge.selectAtLeastTwo": "Selecciona 2 o más etiquetas de la nube para combinarlas.",
|
|
"tagsView.merge.countInto": "Combinar {count} etiquetas en:",
|
|
"tagsView.merge.selectTarget": "Seleccionar etiqueta de destino...",
|
|
"tagsView.merge.action": "Combinar etiquetas",
|
|
"tagsView.merge.tagsToDelete": "Etiquetas que se eliminarán: {tags}",
|
|
"tagsView.sync.title": "Sincronizar etiquetas",
|
|
"tagsView.sync.description": "Descubre etiquetas que existen en entradas pero no en la base de datos de etiquetas.",
|
|
"tagsView.sync.action": "Sincronizar etiquetas desde entradas",
|
|
"tagsView.confirmDelete.title": "Eliminar etiqueta",
|
|
"tagsView.confirmDelete.message": "¿Seguro que quieres eliminar la etiqueta \"{tagName}\"? Se quitará de todas las entradas. Esta acción se ejecuta en segundo plano.",
|
|
"tagsView.confirmDelete.action": "Eliminar etiqueta",
|
|
"tagsView.confirmMerge.title": "Combinar etiquetas",
|
|
"tagsView.confirmMerge.message": "¿Seguro que quieres combinar {count} etiqueta(s) en \"{target}\"? Las etiquetas de origen se eliminarán y se actualizarán todas las entradas. Esta acción se ejecuta en segundo plano.",
|
|
"tagsView.confirmMerge.action": "Combinar etiquetas",
|
|
"tagsView.none": "(ninguna)",
|
|
"tagsView.tagCountTitle": "{count} {item}",
|
|
"tagsView.postsSingular": "entrada",
|
|
"tagsView.postsPlural": "entradas",
|
|
"tagsView.toast.tagNameRequired": "El nombre de la etiqueta es obligatorio",
|
|
"tagsView.toast.tagCreated": "Etiqueta creada",
|
|
"tagsView.toast.tagDeleted": "Etiqueta eliminada. {postsUpdated} entrada(s) actualizada(s).",
|
|
"tagsView.toast.tagUpdated": "Etiqueta actualizada",
|
|
"tagsView.toast.targetTagNotFound": "No se encontró la etiqueta de destino",
|
|
"tagsView.toast.noSourceTagsToMerge": "No hay etiquetas de origen para combinar",
|
|
"tagsView.toast.tagsMerged": "Se combinaron {tagsDeleted} etiqueta(s) en \"{targetTag}\". {postsUpdated} entrada(s) actualizada(s).",
|
|
"tagsView.toast.discoveredTags": "Se descubrieron {count} etiqueta(s) nueva(s)",
|
|
"tagsView.toast.alreadySynced": "Todas las etiquetas ya están sincronizadas",
|
|
"tagsView.error.deleteFailedTitle": "Error al eliminar",
|
|
"tagsView.error.mergeFailedTitle": "Error al combinar",
|
|
"linkedMediaPanel.title": "📷 Medios vinculados",
|
|
"linkedMediaPanel.collapsedTitle": "📷 Medios ({count})",
|
|
"linkedMediaPanel.importAndLink": "Importar y vincular medios",
|
|
"linkedMediaPanel.linkExisting": "Vincular medio existente",
|
|
"linkedMediaPanel.selectMediaToLink": "Seleccionar medios para vincular",
|
|
"linkedMediaPanel.searchPlaceholder": "Buscar medios...",
|
|
"linkedMediaPanel.noUnlinkedMedia": "No hay medios sin vincular disponibles",
|
|
"linkedMediaPanel.noMediaLinked": "No hay medios vinculados a esta entrada",
|
|
"linkedMediaPanel.importMedia": "Importar medios",
|
|
"linkedMediaPanel.unlinkFromPost": "Desvincular de la entrada",
|
|
"linkedMediaPanel.toast.importedLinked": "Se importaron y vincularon {count} archivo(s)",
|
|
"linkedMediaPanel.toast.importFailed": "Error al importar medios",
|
|
"linkedMediaPanel.toast.unlinked": "Medio desvinculado de la entrada",
|
|
"linkedMediaPanel.toast.unlinkFailed": "Error al desvincular medio",
|
|
"linkedMediaPanel.toast.linked": "Medio vinculado a la entrada",
|
|
"linkedMediaPanel.toast.linkFailed": "Error al vincular medio",
|
|
"styleView.title": "Estilo",
|
|
"styleView.subtitle": "Selecciona un tema de Pico CSS y previsualiza las entradas principales antes de aplicarlo.",
|
|
"styleView.themePickerAria": "Selector de tema Pico",
|
|
"styleView.previewMode": "Modo de vista previa",
|
|
"styleView.mode.auto": "Auto",
|
|
"styleView.mode.light": "Claro",
|
|
"styleView.mode.dark": "Oscuro",
|
|
"styleView.applyTheme": "Aplicar tema",
|
|
"styleView.themePreviewTitle": "Vista previa del tema",
|
|
"styleView.toast.appliedTheme": "Tema aplicado: {theme}",
|
|
"styleView.toast.applyThemeFailed": "No se pudo aplicar el tema",
|
|
"panel.tabsAria": "Pestañas del panel",
|
|
"panel.output": "Salida",
|
|
"panel.postLinks": "Enlaces de entrada",
|
|
"panel.gitLog": "Registro Git",
|
|
"panel.closeTitle": "Cerrar panel",
|
|
"panel.noRecentTasks": "No hay tareas recientes",
|
|
"panel.noOutput": "Sin salida",
|
|
"panel.copyOutput": "Copiar salida",
|
|
"panel.openPostEditor": "Abre un editor de entradas para ver los enlaces",
|
|
"panel.loadingPostLinks": "Cargando enlaces de entradas...",
|
|
"panel.noPostLinks": "No hay enlaces para esta entrada",
|
|
"panel.openPostOrMediaEditor": "Abre un editor de entradas o medios para ver el registro Git",
|
|
"panel.loadingGitLog": "Cargando registro Git...",
|
|
"panel.noCommits": "No se encontraron commits para este elemento",
|
|
"panel.error.loadPostLinks": "No se pudieron cargar los enlaces de la entrada.",
|
|
"panel.error.loadGitLog": "No se pudo cargar el registro Git.",
|
|
"panel.direction.from": "desde",
|
|
"panel.direction.to": "hacia",
|
|
"settings.editor.description": "Personaliza el comportamiento y la apariencia del editor.",
|
|
"settings.editor.defaultModeLabel": "Modo predeterminado",
|
|
"settings.editor.defaultModeDescription": "Elige cómo se abre el editor por defecto.",
|
|
"settings.editor.diffViewStyleLabel": "Estilo de vista diff",
|
|
"settings.editor.diffViewStyleDescription": "Define cómo se muestran las diferencias.",
|
|
"settings.editor.wrapLongLinesLabel": "Ajustar líneas largas",
|
|
"settings.editor.wrapLongLinesDescription": "Ajusta automáticamente las líneas largas.",
|
|
"settings.editor.wrapLongLinesAria": "Activar ajuste de línea",
|
|
"settings.editor.hideUnchangedRegionsLabel": "Ocultar regiones sin cambios",
|
|
"settings.editor.hideUnchangedRegionsDescription": "Contrae las secciones sin cambios en la vista diff.",
|
|
"settings.editor.hideUnchangedRegionsAria": "Activar ocultar regiones sin cambios",
|
|
"settings.content.newCategoryPlaceholder": "Nueva categoría",
|
|
"settings.content.addCategory": "Añadir categoría",
|
|
"settings.content.resetDefaults": "Restablecer valores predeterminados",
|
|
"settings.content.description": "Gestiona las categorías disponibles para las entradas del blog. Cada entrada puede tener una sola categoría que determina su plantilla de visualización.",
|
|
"settings.content.standardSuffix": " (estándar)",
|
|
"settings.content.categoryColumn": "Categoría",
|
|
"settings.content.titleColumn": "Título",
|
|
"settings.content.actionsColumn": "Acciones",
|
|
"settings.content.postTemplateColumn": "Plantilla de entrada",
|
|
"settings.content.listTemplateColumn": "Plantilla de lista",
|
|
"settings.content.postTemplateAria": "{category} plantilla de entrada",
|
|
"settings.content.listTemplateAria": "{category} plantilla de lista",
|
|
"settings.content.renderInListsAria": "{category} mostrar en listas",
|
|
"settings.content.showTitlesAria": "{category} mostrar títulos",
|
|
"settings.content.categoryTitleAria": "Título visible para {category}",
|
|
"settings.content.removeCategoryTitle": "Eliminar categoría \"{category}\"",
|
|
"settings.ai.description": "Configura el asistente de chat con IA que te ayuda a gestionar el contenido de tu blog.",
|
|
"settings.ai.apiKeyLabel": "Clave API",
|
|
"settings.ai.apiKeyDescription": "Introduce tu clave API para habilitar funciones de IA.",
|
|
"settings.ai.apiKeyConfigured": "Clave API configurada",
|
|
"settings.ai.configured": "Configurado",
|
|
"settings.ai.changeApiKey": "Cambiar clave API",
|
|
"settings.ai.defaultModelLabel": "Modelo predeterminado",
|
|
"settings.ai.defaultModelDescription": "Selecciona el modelo de IA usado por defecto.",
|
|
"settings.ai.systemPromptLabel": "Prompt del sistema",
|
|
"settings.ai.systemPromptDescription": "Define las instrucciones del sistema enviadas al modelo.",
|
|
"settings.ai.systemPromptPlaceholder": "Escribe aquí tu prompt del sistema…",
|
|
"settings.ai.savePrompt": "Guardar prompt",
|
|
"settings.ai.resetPrompt": "Restablecer prompt",
|
|
"settings.ai.refreshModelCatalog": "Actualizar catálogo de modelos",
|
|
"settings.ai.refreshing": "Actualizando…",
|
|
"settings.ai.modelInfoMaxOutput": "Salida máx.",
|
|
"settings.ai.modelInfoContext": "Contexto",
|
|
"settings.ai.modelInfoInputPrice": "Entrada",
|
|
"settings.ai.modelInfoOutputPrice": "Salida",
|
|
"settings.ai.modelInfoTokens": "tokens",
|
|
"settings.ai.modelInfoPerMTok": "/MTok",
|
|
"settings.ai.mistralApiKeyLabel": "Clave API de Mistral",
|
|
"settings.ai.mistralApiKeyDescription": "Su clave API de Mistral AI. Habilita los modelos Mistral como alternativa a OpenCode.",
|
|
"settings.ai.mistralApiKeyConfigured": "Clave API de Mistral configurada",
|
|
"settings.ai.changeMistralApiKey": "Cambiar clave API de Mistral",
|
|
"settings.ai.titleModelLabel": "Modelo de generación de títulos",
|
|
"settings.ai.titleModelDescription": "Modelo utilizado para generar títulos de conversación automáticamente.",
|
|
"settings.ai.imageAnalysisModelLabel": "Modelo de análisis de imágenes",
|
|
"settings.ai.imageAnalysisModelDescription": "Modelo utilizado para el análisis automático de imágenes (título, texto alternativo, leyenda).",
|
|
"settings.ai.providerOpenCode": "OpenCode",
|
|
"settings.ai.providerMistral": "Mistral",
|
|
"settings.ai.providerOllama": "Ollama (Local)",
|
|
"settings.ai.providerLmstudio": "LM Studio (Local)",
|
|
"settings.ai.providerOther": "Otro",
|
|
"settings.ai.ollamaLabel": "Ollama (Modelos locales)",
|
|
"settings.ai.ollamaDescription": "Conéctate a una instancia local de Ollama para usar modelos de IA locales.",
|
|
"settings.ai.ollamaEnable": "Activar Ollama",
|
|
"settings.ai.ollamaCapabilitiesDescription": "Configurar las capacidades de cada modelo Ollama. Activar herramientas para llamadas a funciones o visión para análisis de imágenes.",
|
|
"settings.ai.ollamaCapModel": "Modelo",
|
|
"settings.ai.ollamaCapTools": "Herramientas",
|
|
"settings.ai.ollamaCapVision": "Visión",
|
|
"chat.providerKeyMissing": "El modelo '{{model}}' requiere una clave API de {{provider}}. Configúrela en Ajustes.",
|
|
"settings.toast.modelCatalogRefreshed": "Catálogo actualizado ({{count}} modelos)",
|
|
"settings.toast.modelCatalogUpToDate": "El catálogo ya está actualizado",
|
|
"settings.toast.modelCatalogRefreshFailed": "No se pudo actualizar el catálogo",
|
|
"settings.toast.ollamaEnabled": "Ollama activado",
|
|
"settings.toast.ollamaDisabled": "Ollama desactivado",
|
|
"settings.ai.lmstudioLabel": "LM Studio (Modelos locales)",
|
|
"settings.ai.lmstudioDescription": "Conéctate a una instancia local de LM Studio para usar modelos de IA locales.",
|
|
"settings.ai.lmstudioEnable": "Activar LM Studio",
|
|
"settings.ai.lmstudioCapabilitiesDescription": "Configurar las capacidades de cada modelo LM Studio. Activar herramientas para llamadas a funciones o visión para análisis de imágenes.",
|
|
"settings.ai.lmstudioCapModel": "Modelo",
|
|
"settings.ai.lmstudioCapTools": "Herramientas",
|
|
"settings.ai.lmstudioCapVision": "Visión",
|
|
"settings.toast.lmstudioEnabled": "LM Studio activado",
|
|
"settings.toast.lmstudioDisabled": "LM Studio desactivado",
|
|
"settings.ai.offlineLabel": "Modo avión",
|
|
"settings.ai.offlineDescription": "Cuando está activado, solo se usan modelos alojados localmente (Ollama, LM Studio). Los proveedores en la nube se desactivan.",
|
|
"settings.ai.offlineEnable": "Activar modo avión",
|
|
"settings.ai.offlineChatModel": "Modelo de chat sin conexión",
|
|
"settings.ai.offlineChatModelDescription": "Modelo usado para conversaciones en modo avión.",
|
|
"settings.ai.offlineTitleModel": "Modelo de título sin conexión",
|
|
"settings.ai.offlineTitleModelDescription": "Modelo usado para generar títulos en modo avión.",
|
|
"settings.ai.offlineImageAnalysisModel": "Modelo de análisis de imagen sin conexión",
|
|
"settings.ai.offlineImageAnalysisModelDescription": "Modelo usado para el análisis de imágenes en modo avión.",
|
|
"settings.ai.offlineNoLocalProviders": "No hay proveedores locales activados. Activa primero Ollama o LM Studio.",
|
|
"settings.ai.offlineNoLocalModels": "No hay modelos locales disponibles",
|
|
"settings.toast.offlineEnabled": "Modo avión activado",
|
|
"settings.toast.offlineDisabled": "Modo avión desactivado",
|
|
"settings.publishing.sshHostDescription": "Nombre de host o IP del servidor SSH.",
|
|
"settings.publishing.sshUsernameDescription": "Nombre de usuario de SSH.",
|
|
"settings.publishing.sshRemotePathDescription": "El directorio de destino en el servidor remoto donde se publicará tu blog.",
|
|
"settings.publishing.sshModeLabel": "Modo de transferencia",
|
|
"settings.publishing.sshModeDescription": "Selecciona el método de transferencia de archivos para publicar mediante SSH.",
|
|
"settings.publishing.sshMode.scp": "SCP",
|
|
"settings.publishing.sshMode.rsync": "rsync",
|
|
"settings.publishing.sshKeyAuthNotice": "La autenticación con clave SSH debe estar configurada en tu sistema antes de usar este método de publicación. Asegúrate de que tu clave pública esté agregada al archivo authorized_keys del servidor remoto.",
|
|
"settings.data.description": "Gestiona y reconstruye los datos locales.",
|
|
"settings.data.rebuildPostsLabel": "Reconstruir índice de publicaciones",
|
|
"settings.data.rebuildPostsDescription": "Escanea todas las publicaciones y actualiza el índice de datos.",
|
|
"settings.data.rebuildPostsAction": "Reconstruir",
|
|
"settings.data.rebuildMediaLabel": "Reconstruir base de datos de medios",
|
|
"settings.data.rebuildMediaDescription": "Reescanea todos los archivos multimedia y metadatos sidecar. Regenera las entradas faltantes.",
|
|
"settings.data.rebuildMediaAction": "Reconstruir medios",
|
|
"settings.data.rebuildScriptsLabel": "Reconstruir base de datos de scripts",
|
|
"settings.data.rebuildScriptsDescription": "Reescanea todos los scripts de Python y reconstruye el índice de metadatos de scripts.",
|
|
"settings.data.rebuildScriptsAction": "Reconstruir scripts",
|
|
"settings.data.rebuildTemplatesLabel": "Reconstruir base de datos de plantillas",
|
|
"settings.data.rebuildTemplatesDescription": "Re-escanear todas las plantillas Liquid y reconstruir el índice de metadatos.",
|
|
"settings.data.rebuildTemplatesAction": "Reconstruir plantillas",
|
|
"settings.data.rebuildLinksLabel": "Reconstruir enlaces de publicaciones",
|
|
"settings.data.rebuildLinksDescription": "Reescanea todas las publicaciones y reconstruye el grafo interno de enlaces entre publicaciones.",
|
|
"settings.data.rebuildLinksAction": "Reconstruir enlaces",
|
|
"settings.data.regenerateThumbnailsLabel": "Regenerar miniaturas",
|
|
"settings.data.regenerateThumbnailsDescription": "Genera miniaturas faltantes para todas las imágenes. Útil tras importar medios externamente.",
|
|
"settings.data.regenerateThumbnailsAction": "Generar miniaturas",
|
|
"settings.data.fileSystemDescription": "Accede a los archivos y carpetas de datos del proyecto.",
|
|
"settings.data.openDataFolderLabel": "Abrir carpeta de datos",
|
|
"settings.data.openDataFolderDescription": "Abre la carpeta de datos del proyecto que contiene publicaciones, medios y archivos de base de datos.",
|
|
"settings.data.openFolderAction": "Abrir carpeta",
|
|
"sidebar.chat.header": "Chat",
|
|
"sidebar.chat.newChat": "Nuevo chat",
|
|
"sidebar.chat.apiKeyNeeded": "Se necesita una clave API para usar el chat.",
|
|
"sidebar.chat.noConversations": "Sin conversaciones",
|
|
"sidebar.chat.startNew": "Iniciar una nueva conversación",
|
|
"sidebar.chat.deleteConversation": "Eliminar conversación",
|
|
"sidebar.chat.createFailed": "No se pudo crear la conversación: {error}",
|
|
"sidebar.chat.deleteFailed": "No se pudo eliminar la conversación: {error}",
|
|
"sidebar.chat.yesterday": "Ayer",
|
|
"sidebar.import.header": "Importación",
|
|
"sidebar.import.newDefinition": "Nueva definición",
|
|
"sidebar.scripts.header": "SCRIPTS",
|
|
"sidebar.scripts.newScript": "Nuevo script",
|
|
"sidebar.scripts.none": "Aún no hay scripts",
|
|
"sidebar.scripts.createScript": "Crear un script",
|
|
"sidebar.scripts.createFailed": "No se pudo crear el script",
|
|
"sidebar.scripts.deleteScript": "Eliminar script",
|
|
"sidebar.scripts.deleteFailed": "No se pudo eliminar el script",
|
|
"sidebar.templates.header": "PLANTILLAS",
|
|
"sidebar.templates.newTemplate": "Nueva plantilla",
|
|
"sidebar.templates.none": "Aún no hay plantillas",
|
|
"sidebar.templates.createTemplate": "Crear una plantilla",
|
|
"sidebar.templates.createFailed": "No se pudo crear la plantilla",
|
|
"sidebar.templates.deleteTemplate": "Eliminar plantilla",
|
|
"sidebar.templates.deleteFailed": "No se pudo eliminar la plantilla",
|
|
"sidebar.templates.deleteConfirmWithRefs": "Esta plantilla está referenciada por {postCount} entrada(s) y {tagCount} etiqueta(s). ¿Eliminar de todos modos? Las referencias serán eliminadas.",
|
|
"sidebar.import.none": "Sin definiciones de importación",
|
|
"sidebar.import.createDefinition": "Crear definición",
|
|
"sidebar.import.deleteDefinition": "Eliminar definición",
|
|
"sidebar.import.createFailed": "No se pudo crear la definición: {error}",
|
|
"sidebar.import.deleteFailed": "No se pudo eliminar la definición: {error}",
|
|
"editor.error.saveTitle": "Error al guardar",
|
|
"editor.error.saveMessage": "No se pudo guardar la publicación: {error}",
|
|
"editor.error.publishTitle": "Error al publicar",
|
|
"editor.error.publishMessage": "No se pudo publicar la publicación: {error}",
|
|
"editor.error.discardTitle": "Error al descartar",
|
|
"editor.error.deleteTitle": "Error al eliminar",
|
|
"editor.error.operationMessage": "La operación falló: {error}",
|
|
"editor.error.deletePostMessage": "No se pudo eliminar la publicación: {error}",
|
|
"editor.error.fetchPostReferencesMessage": "No se pudieron obtener las referencias de la publicación: {error}",
|
|
"editor.confirm.discardChanges": "¿Descartar los cambios sin guardar?",
|
|
"editor.confirm.deleteDraft": "¿Eliminar este borrador?",
|
|
"editor.toast.published": "Publicación publicada",
|
|
"editor.toast.reverted": "Cambios revertidos",
|
|
"editor.toast.draftDeleted": "Borrador eliminado",
|
|
"editor.toast.postDeleted": "Publicación eliminada",
|
|
"editor.media.notFound": "Medio no encontrado",
|
|
"editor.media.error.analyzeImage": "No se pudo analizar la imagen: {error}",
|
|
"editor.media.error.updateTitle": "Error al actualizar",
|
|
"editor.media.error.updateMessage": "No se pudo actualizar el medio: {error}",
|
|
"editor.media.error.replaceTitle": "Error al reemplazar",
|
|
"editor.media.error.replaceMessage": "No se pudo reemplazar el archivo de medios: {error}",
|
|
"editor.media.error.deleteMessage": "No se pudo eliminar el medio: {error}",
|
|
"editor.media.error.fetchReferencesMessage": "No se pudieron obtener las referencias del medio: {error}",
|
|
"editor.media.toast.aiApplied": "Sugerencias de IA aplicadas",
|
|
"editor.media.toast.linkedToPost": "Medio vinculado a la publicación",
|
|
"editor.media.toast.linkFailed": "No se pudo vincular el medio: {error}",
|
|
"editor.media.toast.unlinkedFromPost": "Medio desvinculado de la publicación",
|
|
"editor.media.toast.unlinkFailed": "No se pudo desvincular el medio: {error}",
|
|
"editor.media.toast.updated": "Medio actualizado",
|
|
"editor.media.toast.fileReplaced": "Archivo de medios reemplazado",
|
|
"editor.media.toast.deleted": "Medio eliminado",
|
|
"editor.media.quickActions.title": "Acciones rápidas",
|
|
"editor.media.quickActions.analyzing": "🔎 Analizando…",
|
|
"editor.media.quickActions.button": "✨ Analizar con IA",
|
|
"editor.media.quickActions.aiTitle": "Título sugerido por IA",
|
|
"editor.media.quickActions.aiDescription": "Genera automáticamente título, texto alternativo y pie de foto.",
|
|
"editor.media.replaceFile": "Reemplazar archivo",
|
|
"editor.media.field.fileName": "Nombre de archivo",
|
|
"editor.media.field.type": "Tipo",
|
|
"editor.media.field.size": "Tamaño",
|
|
"editor.media.field.dimensions": "Dimensiones",
|
|
"editor.media.field.title": "Título",
|
|
"editor.media.field.altText": "Texto alternativo",
|
|
"editor.media.field.caption": "Pie de foto",
|
|
"editor.media.field.tags": "Etiquetas",
|
|
"editor.media.field.author": "Autor",
|
|
"editor.media.placeholder.title": "Introduce un título",
|
|
"editor.media.placeholder.altText": "Describe la imagen para accesibilidad",
|
|
"editor.media.placeholder.caption": "Añadir pie de foto",
|
|
"editor.media.placeholder.tags": "Añadir etiquetas",
|
|
"editor.media.placeholder.author": "Nombre del autor",
|
|
"editor.media.linkedPosts": "Publicaciones vinculadas",
|
|
"editor.media.linkToPostTitle": "Vincular a una publicación",
|
|
"editor.media.linkAction": "Vincular",
|
|
"editor.media.searchPosts": "Buscar publicaciones",
|
|
"editor.media.noMatchingPosts": "No hay publicaciones que coincidan con “{query}”",
|
|
"editor.media.noPostsToLink": "No hay publicaciones disponibles para vincular",
|
|
"editor.media.morePosts": "{count} publicaciones más",
|
|
"editor.media.notLinked": "No vinculado",
|
|
"editor.media.openPost": "Abrir publicación",
|
|
"editor.media.unlinkFromPost": "Desvincular de la publicación",
|
|
"postSearch.placeholder": "Buscar publicaciones…",
|
|
"postSearch.searching": "Buscando…",
|
|
"postSearch.typeMore": "Escribe más caracteres para buscar",
|
|
"postSearch.noResults": "Sin resultados para “{query}”",
|
|
"postSearch.hint": "Busca por título, slug o contenido",
|
|
"statusBar.posts": "Publicaciones",
|
|
"statusBar.media": "Medios",
|
|
"statusBar.more": "+{count} más",
|
|
"statusBar.tokens": "Tokens: {input} entr. / {output} sal. ({cached} en caché)",
|
|
"statusBar.theme": "Tema: {theme}",
|
|
"statusBar.ui": "UI",
|
|
"statusBar.uiLanguage": "Idioma de la interfaz",
|
|
"statusBar.offlineMode": "Modo avión",
|
|
"statusBar.offlineModeActive": "Modo avión (activo)",
|
|
"statusBar.offlineModeTooltip": "Haz clic para activar/desactivar el modo avión",
|
|
"windowTitleBar.toggleSidebar": "Alternar barra lateral",
|
|
"windowTitleBar.hideSidebar": "Ocultar barra lateral",
|
|
"windowTitleBar.showSidebar": "Mostrar barra lateral",
|
|
"windowTitleBar.togglePanel": "Alternar panel",
|
|
"windowTitleBar.hidePanel": "Ocultar panel",
|
|
"windowTitleBar.showPanel": "Mostrar panel",
|
|
"windowTitleBar.toggleAssistantSidebar": "Alternar barra del asistente",
|
|
"windowTitleBar.hideAssistantSidebar": "Ocultar barra del asistente (Ctrl+\\)",
|
|
"windowTitleBar.showAssistantSidebar": "Mostrar barra del asistente (Ctrl+\\)",
|
|
"assistantSidebar.title": "Asistente IA",
|
|
"assistantSidebar.description": "Comienza con un prompt enfocado y enriquecido con el contexto actual del editor.",
|
|
"assistantSidebar.context.label": "Contexto actual",
|
|
"assistantSidebar.context.none": "Sin contexto de editor activo",
|
|
"assistantSidebar.prompt.placeholder": "Pide al asistente analizar o consultar tu trabajo actual…",
|
|
"assistantSidebar.button.start": "Iniciar con contexto",
|
|
"assistantSidebar.button.starting": "Iniciando…",
|
|
"assistantSidebar.conversationTitle": "Sesión de asistente",
|
|
"assistantSidebar.error.startFailed": "No se pudo iniciar la sesión del asistente",
|
|
"assistantSidebar.error.actionFailed": "No se pudo ejecutar la acción del asistente",
|
|
"tagInput.alreadyAdded": "La etiqueta “{tag}” ya está añadida",
|
|
"tagInput.remove": "Quitar",
|
|
"tagInput.createdTag": "Etiqueta “{tag}” creada",
|
|
"tagInput.createdCategory": "Categoría “{name}” creada",
|
|
"tagInput.createTag": "Crear etiqueta “{tag}”",
|
|
"tagInput.createCategory": "Crear categoría “{name}”",
|
|
"importAnalysis.loadingDefinition": "Cargando definición de importación…",
|
|
"importAnalysis.namePlaceholder": "Nombre de la definición de importación",
|
|
"importAnalysis.headerDescription": "Analiza un archivo WXR antes de importar.",
|
|
"importAnalysis.uploadsFolder": "Carpeta uploads",
|
|
"importAnalysis.noFolderSelected": "Ninguna carpeta seleccionada",
|
|
"importAnalysis.wxrFile": "Archivo WXR",
|
|
"importAnalysis.selectFileToAnalyze": "Selecciona un archivo para analizar",
|
|
"importAnalysis.analyzing": "Analizando…",
|
|
"importAnalysis.selectAndAnalyze": "Seleccionar y analizar",
|
|
"importAnalysis.analyzingWxr": "Analizando archivo WXR…",
|
|
"importAnalysis.emptyState": "Selecciona un archivo WXR e inicia el análisis.",
|
|
"importAnalysis.importing": "Importando…",
|
|
"importAnalysis.importComplete": "Importación completada: {count}",
|
|
"importAnalysis.importFailed": "La importación falló: {error}",
|
|
"importAnalysis.untitledImport": "Importación sin título",
|
|
"importAnalysis.executionStarting": "Iniciando...",
|
|
"importAnalysis.unknownError": "Error desconocido",
|
|
"importAnalysis.readyToImport": "Listo para importar:",
|
|
"importAnalysis.tagsCategories": "etiquetas/categorías",
|
|
"importAnalysis.posts": "publicaciones",
|
|
"importAnalysis.media": "medios",
|
|
"importAnalysis.pages": "páginas",
|
|
"importAnalysis.nothingToImport": "Nada para importar",
|
|
"importAnalysis.importItems": "Importar {count} elementos",
|
|
"importAnalysis.postSlugConflicts": "Conflictos de slug de publicaciones",
|
|
"importAnalysis.pageSlugConflicts": "Conflictos de slug de páginas",
|
|
"importAnalysis.postsWithCount": "Publicaciones ({count})",
|
|
"importAnalysis.otherWithCount": "Otros ({count})",
|
|
"importAnalysis.pagesWithCount": "Páginas ({count})",
|
|
"importAnalysis.mediaWithCount": "Medios ({count})",
|
|
"importAnalysis.site": "Sitio",
|
|
"importAnalysis.untitled": "Sin título",
|
|
"importAnalysis.url": "URL",
|
|
"importAnalysis.language": "Idioma",
|
|
"importAnalysis.file": "Archivo",
|
|
"importAnalysis.notAvailable": "N/D",
|
|
"importAnalysis.new": "nuevo",
|
|
"importAnalysis.update": "actualización",
|
|
"importAnalysis.conflict": "conflicto",
|
|
"importAnalysis.duplicate": "duplicado",
|
|
"importAnalysis.missing": "faltante",
|
|
"importAnalysis.categories": "Categorías",
|
|
"importAnalysis.existing": "existente",
|
|
"importAnalysis.mapped": "mapeado",
|
|
"importAnalysis.tags": "Etiquetas",
|
|
"importAnalysis.dateDistribution": "Distribución por fecha",
|
|
"importAnalysis.postsPages": "Publicaciones/Páginas",
|
|
"importAnalysis.total": "total",
|
|
"importAnalysis.wordpressId": "ID de WordPress",
|
|
"importAnalysis.type": "Tipo",
|
|
"importAnalysis.author": "Autor",
|
|
"importAnalysis.unknown": "Desconocido",
|
|
"importAnalysis.published": "Publicado",
|
|
"importAnalysis.excerpt": "Extracto",
|
|
"importAnalysis.content": "Contenido",
|
|
"importAnalysis.loading": "Cargando...",
|
|
"importAnalysis.mimeType": "Tipo MIME",
|
|
"importAnalysis.uploaded": "Subido",
|
|
"importAnalysis.parentPostId": "ID de publicación padre",
|
|
"importAnalysis.description": "Descripción",
|
|
"importAnalysis.slug": "Slug",
|
|
"importAnalysis.newEntryWxr": "Nueva entrada (WXR)",
|
|
"importAnalysis.existingEntry": "Entrada existente",
|
|
"importAnalysis.resolution": "Resolución",
|
|
"importAnalysis.ignore": "Ignorar",
|
|
"importAnalysis.overwrite": "Sobrescribir",
|
|
"importAnalysis.importNewSlug": "Importar (nuevo slug)",
|
|
"importAnalysis.status": "Estado",
|
|
"importAnalysis.title": "Título",
|
|
"importAnalysis.wpStatus": "Estado WP",
|
|
"importAnalysis.existingMatch": "Coincidencia existente",
|
|
"importAnalysis.none": "--",
|
|
"importAnalysis.filename": "Nombre de archivo",
|
|
"importAnalysis.path": "Ruta",
|
|
"importAnalysis.taxonomyTitle": "Categorías y Etiquetas",
|
|
"importAnalysis.mappedCount": "{count} mapeados",
|
|
"importAnalysis.analyzeWith": "Analizar con...",
|
|
"importAnalysis.aiMappingHint": "La IA sugerirá mapeos de elementos nuevos a existentes para evitar duplicados",
|
|
"importAnalysis.mapToPlaceholder": "Mapear a...",
|
|
"importAnalysis.mappingTooltip": "Haz clic para {action} el mapeo",
|
|
"importAnalysis.mappingActionEdit": "editar",
|
|
"importAnalysis.mappingActionAdd": "agregar",
|
|
"importAnalysis.clearMapping": "Borrar mapeo",
|
|
"importAnalysis.macrosWithCount": "Macros ({count})",
|
|
"importAnalysis.unmappedCount": "{count} sin mapear",
|
|
"importAnalysis.macroStatusMapped": "Mapeado",
|
|
"importAnalysis.macroStatusUnknown": "Desconocido",
|
|
"importAnalysis.macroUses": "{count} usos",
|
|
"importAnalysis.usedIn": "Usado en: {items}{more}",
|
|
"importAnalysis.moreSuffix": ", +{count} más",
|
|
"importAnalysis.noParameters": "(sin parámetros)",
|
|
|
|
"sidebar.nav.mcp": "Servidor MCP",
|
|
|
|
"settings.mcp.title": "Servidor MCP",
|
|
"settings.mcp.description": "Configure el servidor Model Context Protocol que permite a los agentes de programación IA interactuar con su blog.",
|
|
"settings.mcp.statusLabel": "Estado del servidor",
|
|
"settings.mcp.statusDescription": "Estado actual del servidor MCP.",
|
|
"settings.mcp.portRunning": "Ejecutándose en el puerto {port}",
|
|
"settings.mcp.portStopped": "No está en ejecución",
|
|
"settings.mcp.agentsTitle": "Configuración de agentes",
|
|
"settings.mcp.agentsDescription": "Añada el servidor MCP de bDS a la configuración de su agente de programación. Las configuraciones existentes se conservan.",
|
|
"settings.mcp.addToAgent": "Añadir a {agent}",
|
|
"settings.mcp.removeFromAgent": "Eliminar de {agent}",
|
|
"settings.mcp.alreadyConfigured": "Configurado",
|
|
"settings.toast.mcpConfigSuccess": "Servidor MCP de bDS añadido a la configuración de {agent}",
|
|
"settings.toast.mcpConfigRemoveSuccess": "Servidor MCP de bDS eliminado de la configuración de {agent}",
|
|
"settings.toast.mcpConfigFailed": "Error al configurar {agent}: {error}",
|
|
"settings.toast.mcpConfigRemoveFailed": "Error al eliminar de {agent}: {error}",
|
|
"settings.toast.mcpConfigPath": "Configuración escrita en {path}"
|
|
}
|