{
  "fields": {
    "title": "Producto — Título",
    "subtitle": "Producto — Subtítulo",
    "description": "Producto — Descripción",
    "material": "Producto — Material",
    "technical_specifications": "Técnico — Especificaciones",
    "typical_composition": "Técnico — Composición típica",
    "recommended_applications": "Técnico — Aplicaciones recomendadas",
    "technical_sheet_filename": "Ficha técnica — Nombre del archivo",
    "technical_sheet_url": "Ficha técnica — URL",
    "technical_sheet_type": "Ficha técnica — Tipo",
    "technical_sheet_uri": "Ficha técnica — URI",
    "Availability": "Marketplace — Disponibilidad",
    "Available Quantity": "Marketplace — Cantidad disponible",
    "Supply Frequency": "Marketplace — Frecuencia de suministro",
    "Waste Type": "Marketplace — Tipo de residuo",
    "seo_title": "SEO — Título",
    "seo_description": "SEO — Descripción",
    "seo_keywords": "SEO — Palabras clave"
  },
  "adminRoutes": {
    "common": {
      "loading": "Cargando...",
      "save": "Guardar",
      "delete": "Eliminar",
      "edit": "Editar",
      "view": "Ver",
      "cancel": "Cancelar",
      "close": "Cerrar",
      "loginRequired": "Por favor, inicia sesión en el panel de administración."
    },
    "locations": {
      "title": "Ubicaciones del producto",
      "subtitle": "Crea ubicaciones principales con sub-ubicaciones anidadas para filtros y selección de residuos del producto.",
      "loading": "Cargando ubicaciones...",
      "loadError": "No se pudieron cargar las ubicaciones.",
      "empty": "Aún no se han añadido ubicaciones.",
      "emptySubLocations": "Aún no hay sub-ubicaciones.",
      "parentLabel": "Padre:",
      "actions": {
        "addLocation": "Añadir ubicación",
        "addSubLocation": "Añadir sub-ubicación",
        "editLocation": "Editar ubicación",
        "editSubLocation": "Editar sub-ubicación"
      },
      "toasts": {
        "locationAdded": "Ubicación añadida correctamente.",
        "locationAddError": "No se pudo añadir la ubicación.",
        "locationUpdated": "Ubicación actualizada correctamente.",
        "locationUpdateError": "No se pudo actualizar la ubicación.",
        "locationDeleted": "Ubicación eliminada correctamente.",
        "locationDeleteError": "No se pudo eliminar la ubicación.",
        "subLocationAdded": "Sub-ubicación añadida correctamente.",
        "subLocationAddError": "No se pudo añadir la sub-ubicación.",
        "subLocationUpdated": "Sub-ubicación actualizada correctamente.",
        "subLocationUpdateError": "No se pudo actualizar la sub-ubicación.",
        "subLocationDeleted": "Sub-ubicación eliminada correctamente.",
        "subLocationDeleteError": "No se pudo eliminar la sub-ubicación."
      }
    },
    "emailTemplates": {
      "title": "Plantillas de correo",
      "subtitle": "Gestiona todas las plantillas de correo transaccional",
      "layouts": "Diseños",
      "emailLogs": "Registros de correo",
      "newTemplate": "+ Nueva plantilla",
      "editTemplate": "Editar plantilla",
      "createTemplate": "Crear plantilla",
      "saveChanges": "Guardar cambios",
      "active": "Activa",
      "testEmail": "Correo de prueba",
      "basicInformation": "Información básica",
      "slugPlaceholder": "p. ej. password-reset",
      "slugHint": "Slug único usado en código. No se puede cambiar tras crearlo.",
      "titlePlaceholder": "p. ej. Restablecer contraseña",
      "preview": "Vista previa",
      "history": "Historial",
      "productionReadonly": "El modo de producción está activo. Las plantillas son solo de lectura; crear, editar, eliminar y restaurar están deshabilitados.",
      "empty": "No se encontraron plantillas. Crea una para comenzar.",
      "loadError": "No se pudieron cargar las plantillas",
      "toasts": {
        "deleted": "Plantilla eliminada"
      },
      "categories": {
        "all": "Todas",
        "user": "Usuario",
        "order": "Pedido",
        "payment": "Pago",
        "admin": "Admin"
      },
      "fields": {
        "title": "Título",
        "slug": "Slug",
        "description": "Descripción"
      }
    },
    "cms": {
      "pageBuilder": "Constructor de páginas",
      "componentTypes": "Tipos de componentes"
    },
    "pageBuilder": {
      "pagesTitle": "Páginas",
      "newPage": "Nueva página",
      "loadError": "No se pudieron cargar las páginas.",
      "empty": "No hay páginas. Crea una para empezar.",
      "deletePageTitle": "¿Eliminar página?",
      "deletePageText": "Esta acción no se puede deshacer.",
      "back": "Volver",
      "titleLabel": "Título *",
      "slugLabel": "Slug *",
      "descriptionLabel": "Descripción",
      "descriptionPlaceholder": "Introducir descripción de la página",
      "statusLabel": "Estado",
      "draft": "Borrador",
      "published": "Publicado",
      "sections": "Secciones",
      "addSection": "Añadir sección",
      "createSection": "Crear sección",
      "newSection": "Nueva sección",
      "sectionName": "Nombre de la sección",
      "addComponent": "Añadir componente",
      "removeSection": "Eliminar sección",
      "removeSectionTitle": "¿Eliminar sección?",
      "removeSectionText": "Esta sección y todos sus componentes serán eliminados.",
      "noComponents": "No hay componentes. Usa el botón Añadir componente.",
      "required": "Obligatorio",
      "titleRequired": "El título es obligatorio.",
      "slugRequired": "El slug es obligatorio.",
      "fillRequiredSections": "Completa los campos obligatorios en las secciones.",
      "pageSaved": "Página guardada correctamente.",
      "sectionSaved": "Sección guardada correctamente.",
      "downloadBrochureFile": "Descargar archivo de folleto",
      "previewCurrentFile": "Vista previa del archivo actual",
      "uploadedFile": "Archivo subido",
      "noBrochureUploaded": "Aún no se ha subido un folleto.",
      "replaceBrochure": "Reemplazar folleto",
      "uploadBrochure": "Subir folleto",
      "selected": "Seleccionado:",
      "uploadSaveBrochure": "Subir y guardar folleto",
      "saveBrochure": "Guardar folleto",
      "savedTitle": "Guardado",
      "failedTitle": "Error",
      "genericError": "Algo salió mal",
      "brochureSaved": "¡Folleto guardado correctamente!",
      "uploadFailed": "Error al subir",
      "saveFailed": "Error al guardar",
      "removeBrochureTitle": "¿Eliminar folleto?",
      "removeBrochureText": "Esto eliminará el enlace del folleto.",
      "yesRemove": "Sí, eliminar",
      "removeFailed": "Error al eliminar",
      "removedTitle": "Eliminado"
    },
    "notFound": {
      "title": "Página no encontrada",
      "description": "La página que buscas no existe.",
      "back": "Volver al panel"
    },
    "contactInquiries": {
      "title": "Consultas de contacto",
      "subtitle": "Envíos desde el formulario de contacto.",
      "loadError": "No se pudieron cargar las consultas.",
      "empty": "Aún no hay consultas de contacto.",
      "columns": {
        "nameCompany": "Nombre / Empresa",
        "email": "Correo",
        "phone": "Teléfono",
        "country": "País",
        "company": "Empresa",
        "inquiryType": "Tipo de consulta",
        "message": "Mensaje",
        "privacy": "Privacidad",
        "submitted": "Enviado"
      }
    },
    "quoteRequests": {
      "title": "Solicitudes de presupuesto",
      "subtitle": "Solicitudes de presupuesto personalizadas desde la tienda.",
      "loadError": "No se pudieron cargar las solicitudes de presupuesto.",
      "empty": "Aún no hay solicitudes de presupuesto.",
      "columns": {
        "company": "Empresa",
        "contactName": "Nombre de contacto",
        "email": "Correo",
        "phone": "Teléfono",
        "industry": "Industria",
        "wasteVolume": "Volumen de residuo",
        "needs": "Necesidades",
        "privacy": "Privacidad",
        "comms": "Comunicaciones",
        "submitted": "Enviado"
      }
    },
    "analyticsScripts": {
      "title": "Scripts de analítica",
      "subtitle": "Gestiona Google Analytics y otros scripts de seguimiento para tu tienda.",
      "loadError": "No se pudieron cargar los scripts de analítica.",
      "saveSuccess": "¡Scripts de analítica guardados correctamente!",
      "saveError": "No se pudieron guardar los scripts",
      "headerLabel": "Scripts del encabezado",
      "bodyLabel": "Scripts del cuerpo",
      "footerLabel": "Scripts del pie",
      "headerHint": "Scripts para inyectar en la sección <head> (p. ej., código de Google Analytics)",
      "bodyHint": "Scripts para inyectar al inicio de la sección <body>",
      "footerHint": "Scripts para inyectar al final de la sección <body> (p. ej., widgets de chat)",
      "scriptPlaceholder": "<script>...</script>",
      "save": "Guardar scripts"
    },
    "formOptions": {
      "title": "Opciones de formulario",
      "subtitle": "Gestiona los valores de los desplegables para los formularios de la tienda",
      "addOption": "Añadir opción",
      "formName": "Nombre del formulario",
      "formField": "Campo del formulario",
      "selectForm": "Seleccionar formulario",
      "selectField": "Seleccionar campo",
      "empty": "No se encontraron opciones para este tipo.",
      "saveOption": "Guardar opción",
      "addNewOption": "Añadir nueva opción",
      "editOption": "Editar opción",
      "form": "Formulario",
      "section": "Sección",
      "labelRequired": "Etiqueta *",
      "valueRequired": "Valor *",
      "valueHint": "Valor interno usado por el sistema (sin espacios, se recomienda minúsculas)",
      "columns": {
        "label": "Etiqueta",
        "value": "Valor",
        "actions": "Acciones"
      },
      "placeholders": {
        "label": "Ej.: Fabricación",
        "value": "Ej.: fabricacion"
      },
      "deleteDialog": {
        "title": "Eliminar opción",
        "description": "¿Seguro que quieres eliminar esta opción?"
      },
      "toasts": {
        "optionDeleted": "Opción eliminada correctamente",
        "optionDeleteFailed": "No se pudo eliminar la opción",
        "optionCreated": "Opción creada correctamente",
        "optionCreateFailed": "No se pudo crear la opción",
        "optionUpdated": "Opción actualizada correctamente",
        "optionUpdateFailed": "No se pudo actualizar la opción",
        "labelValueRequired": "La etiqueta y el valor son obligatorios"
      }
    },
    "locales": {
      "title": "Idiomas de la tienda",
      "subtitle": "Selecciona el idioma predeterminado opcional de la tienda. Si no se selecciona uno, la tienda mostrará los datos originales hasta que el cliente elija un idioma.",
      "loading": "Cargando idiomas...",
      "loadError": "No se pudieron cargar los idiomas.",
      "empty": "Aún no hay idiomas configurados. Añade idiomas en la configuración de traducciones.",
      "storeNotFound": "Tienda no encontrada.",
      "saveSuccess": "Idioma predeterminado actualizado.",
      "saveError": "No se pudo actualizar el idioma predeterminado.",
      "noDefaultTitle": "Sin idioma predeterminado",
      "noDefaultSubtitle": "Usar datos originales de la tienda por defecto.",
      "enabled": "Habilitado",
      "disabled": "Deshabilitado",
      "save": "Guardar idioma predeterminado"
    },
    "registeredUsers": {
      "title": "Usuarios registrados",
      "subtitle": "Consulta las cuentas de clientes creadas por registro y gestiona su acceso.",
      "loadError": "No se pudieron cargar los usuarios registrados.",
      "empty": "Aún no hay usuarios registrados.",
      "unnamedUser": "Usuario sin nombre",
      "updateStatusError": "No se pudo actualizar el estado de la cuenta.",
      "statusUpdated": "Usuario marcado como {{status}}",
      "view": "Ver",
      "unblock": "Desbloquear",
      "block": "Bloquear",
      "columns": {
        "user": "Usuario",
        "email": "Correo",
        "phone": "Teléfono",
        "company": "Empresa",
        "country": "País",
        "status": "Estado",
        "registered": "Registrado",
        "actions": "Acciones"
      }
    },
    "emailLogs": {
      "title": "Registros de correo",
      "subtitle": "Historial completo de entregas: depura aquí cualquier problema de envío.",
      "loadError": "No se pudieron cargar los registros de correo.",
      "empty": "No se encontraron registros de correo.",
      "total": "Total: {{count}} correos",
      "sent": "Enviado",
      "failed": "Fallido",
      "to": "Para:",
      "error": "Error:",
      "viewEmail": "Ver correo",
      "previewTitle": "Vista previa del correo",
      "toLabel": "Para:",
      "subjectLabel": "Asunto:",
      "templateLabel": "Plantilla:",
      "sentAtLabel": "Enviado el:",
      "previewReadonlyHint": "Esta vista previa es solo de lectura. Los enlaces, botones y campos del correo están deshabilitados."
    }
  },
  "biomketProduct": {
    "common": {
      "save": "Guardar",
      "delete": "Eliminar",
      "current": "Actual",
      "currentWithValue": "{{value}} (Actual)"
    },
    "seo": {
      "loading": "Cargando datos de SEO...",
      "loadError": "No se pudieron cargar los datos de SEO.",
      "title": "SEO",
      "subtitle": "Gestiona los metadatos SEO de este producto.",
      "fieldTitle": "Título SEO",
      "fieldTitlePlaceholder": "Nombre del producto para buscadores",
      "fieldDescription": "Descripción SEO",
      "fieldDescriptionPlaceholder": "Breve descripción para resultados de búsqueda",
      "fieldKeywords": "Palabras clave SEO",
      "fieldKeywordsPlaceholder": "orgánico, residuos, compost",
      "keywordsHint": "Palabras clave separadas por comas",
      "saveSuccess": "Metadatos SEO guardados correctamente.",
      "saveError": "No se pudieron guardar los metadatos SEO."
    },
    "marketplace": {
      "loading": "Cargando datos del marketplace...",
      "loadError": "No se pudieron cargar los datos del marketplace.",
      "title": "Detalles del marketplace",
      "subtitle": "Gestiona las cuatro tarjetas de información de la tienda y la disponibilidad desde la barra lateral del producto.",
      "availabilityStatus": "Estado de disponibilidad",
      "selectAvailability": "Seleccionar disponibilidad",
      "inStock": "En stock",
      "outOfStock": "Sin stock",
      "recurringSupply": "Suministro recurrente",
      "onRequest": "Bajo pedido",
      "availableQuantity": "Cantidad disponible",
      "quantityPlaceholder": "500 toneladas/mes",
      "unitOfMeasurement": "Unidad de medida",
      "selectUnit": "Seleccionar unidad",
      "unitTonne": "Tonelada (t)",
      "unitKilogram": "Kilogramo (kg)",
      "unitLiter": "Litro (L)",
      "unitCubicMeter": "Metro cúbico (m3)",
      "supplyFrequency": "Frecuencia de suministro",
      "supplyFrequencyPlaceholder": "Recurrente mensual",
      "productLocation": "Ubicación del producto",
      "selectLocation": "Seleccionar ubicación del producto",
      "wasteType": "Tipo de residuo",
      "wasteTypePlaceholder": "Heces y orina animal",
      "saveSuccess": "Detalles del marketplace guardados correctamente.",
      "saveError": "No se pudieron guardar los detalles del marketplace.",
      "saveMetadataError": "No se pudieron guardar los metadatos del marketplace.",
      "saveLocationError": "No se pudo guardar la ubicación del producto.",
      "currentQtyHint": "Inventario disponible actual: {{count}} unidades"
    },
    "technicalSheet": {
      "title": "Ficha técnica",
      "uploadLabel": "Subir archivo de ficha técnica",
      "selectedFile": "Seleccionado: {{name}}",
      "preview": "Vista previa de la ficha técnica",
      "download": "Descargar",
      "uploadedFileFallback": "Archivo subido",
      "noFileYet": "Aún no se ha subido ninguna ficha técnica.",
      "saveButton": "Guardar ficha técnica",
      "uploadFailed": "Error al subir el archivo",
      "saveFailed": "No se pudo guardar la ficha técnica",
      "swalProductMissingTitle": "Error",
      "swalProductMissingText": "Faltan los datos del producto",
      "swalSavedTitle": "Guardado",
      "swalSavedText": "¡Ficha técnica guardada correctamente!",
      "swalSaveFailedTitle": "Error al guardar",
      "swalGenericError": "Algo salió mal"
    },
    "typicalComposition": {
      "title": "Composición típica",
      "addRow": "+ Añadir composición",
      "empty": "Aún no hay filas de composición.",
      "labelPlaceholder": "Etiqueta (p. ej., Nitrógeno (N))",
      "valuePlaceholder": "Valor mostrado (p. ej., 1,8-2,5%)",
      "percentPlaceholder": "% barra",
      "save": "Guardar composición",
      "productMissing": "Faltan los datos del producto.",
      "saveSuccess": "Composición típica guardada correctamente.",
      "saveError": "No se pudo guardar la composición típica."
    },
    "technicalSpecs": {
      "title": "Especificaciones técnicas",
      "addRow": "+ Añadir especificación",
      "empty": "Aún no hay especificaciones.",
      "keyPlaceholder": "Clave (p. ej., nivel de pH)",
      "valuePlaceholder": "Valor (p. ej., 7,5 - 8,5)",
      "save": "Guardar especificaciones",
      "productMissing": "Faltan los datos del producto.",
      "saveSuccess": "Especificaciones técnicas guardadas correctamente.",
      "saveError": "No se pudieron guardar las especificaciones técnicas."
    },
    "translationStructuredEditor": {
      "pageTitle": "Campos de traducción estructurados",
      "banner": "Edite especificaciones técnicas y composición típica por idioma con formularios claros en lugar del JSON en bloque del editor masivo.",
      "open": "Abrir editor estructurado",
      "back": "Volver",
      "save": "Guardar cambios",
      "intro": "Elija un idioma que ya tenga una fila de traducción para este producto (en Configuración → Traducciones). Al guardar se actualiza el mismo registro que Traducciones → Producto.",
      "locale": "Idioma",
      "pickLocale": "Seleccionar idioma",
      "loading": "Cargando traducciones…",
      "noLocales": "Aún no hay filas de traducción para este producto. Créelas en Configuración → Traducciones → Productos.",
      "noProduct": "Falta el id del producto.",
      "specsHeading": "Técnico — Especificaciones",
      "specFieldLabel": "Nombre del campo",
      "specFieldValue": "Valor",
      "addSpecRow": "Añadir fila",
      "specEmpty": "No hay filas de especificación para traducir.",
      "specEmptyNoDefaults": "Este producto aún no tiene claves de especificación. Añada «Técnico — Especificaciones» en la ficha del producto primero; los nombres de campo se toman de ahí.",
      "specKeysLockedHint": "Los nombres de campo (columna izquierda) salen de los metadatos por defecto del producto y no se editan aquí—solo traduzca los valores.",
      "compHeading": "Técnico — Composición típica",
      "compLabelCol": "Etiqueta",
      "compValueCol": "Valor mostrado",
      "compPercentCol": "% barra",
      "saveSuccess": "Campos de traducción guardados.",
      "saveError": "No se pudieron guardar los campos.",
      "missingSelection": "Seleccione un idioma primero.",
      "bulkEditorNoteTitle": "Sobre Configuración → Traducciones → Editar (masivo)",
      "bulkEditorNoteBody": "La pantalla masiva de Medusa no puede mostrar formularios personalizados: los campos JSON siguen como texto allí. Use esta página para los campos estructurados; ambas pantallas guardan los mismos registros de traducción.",
      "quickAccessTitle": "Editor de traducciones estructuradas",
      "quickAccessBody": "Abra el editor estructurado estable para este producto sin usar el modal masivo de Medusa.",
      "openEditor": "Abrir editor estructurado"
    },
    "recommendedApps": {
      "title": "Aplicaciones recomendadas",
      "addRow": "+ Añadir aplicación",
      "empty": "Aún no hay aplicaciones añadidas.",
      "placeholder": "p. ej., plantas de biogás",
      "save": "Guardar aplicaciones",
      "productMissing": "Faltan los datos del producto.",
      "saveSuccess": "Aplicaciones recomendadas guardadas correctamente.",
      "saveError": "No se pudieron guardar las aplicaciones recomendadas.",
      "translationHint": "Las aplicaciones se guardan como texto JSON legible (cadena, no array nativo en metadata) para que Traducciones → Producto pueda mostrarlas en “recommended_applications”. Use la misma forma de array JSON en cada idioma."
    }
  }
}
