Finalish MVP

This commit is contained in:
mdares
2026-01-05 16:36:00 +00:00
parent 538b06bd4b
commit ea92b32618
19 changed files with 2289 additions and 701 deletions

333
lib/i18n/es-MX.json Normal file
View File

@@ -0,0 +1,333 @@
{
"---": "---",
"common.loading": "Cargando...",
"common.loadingShort": "Cargando",
"common.never": "nunca",
"common.na": "--",
"common.back": "Volver",
"common.cancel": "Cancelar",
"common.close": "Cerrar",
"common.save": "Guardar",
"common.copy": "Copiar",
"nav.overview": "Resumen",
"nav.machines": "Máquinas",
"nav.reports": "Reportes",
"nav.settings": "Configuración",
"sidebar.productTitle": "MIS",
"sidebar.productSubtitle": "Control Tower",
"sidebar.userFallback": "Usuario",
"sidebar.loadingOrg": "Cargando...",
"sidebar.themeTooltip": "Tema e idioma",
"sidebar.switchToDark": "Cambiar a modo oscuro",
"sidebar.switchToLight": "Cambiar a modo claro",
"sidebar.logout": "Cerrar sesión",
"sidebar.role.member": "MIEMBRO",
"sidebar.role.admin": "ADMIN",
"sidebar.role.owner": "PROPIETARIO",
"login.title": "Control Tower",
"login.subtitle": "Inicia sesión en tu organización",
"login.email": "Correo electrónico",
"login.password": "Contraseña",
"login.error.default": "Inicio de sesión fallido",
"login.error.network": "Error de red",
"login.submit.loading": "Iniciando sesión...",
"login.submit.default": "Iniciar sesión",
"login.newHere": "¿Nuevo aquí?",
"login.createAccount": "Crear cuenta",
"signup.verify.title": "Verifica tu correo",
"signup.verify.sent": "Enviamos un enlace de verificación a {email}.",
"signup.verify.failed": "No se pudo enviar el correo de verificación. Contacta a soporte.",
"signup.verify.notice": "Después de verificar, puedes iniciar sesión e invitar a tu equipo.",
"signup.verify.back": "Volver al inicio de sesión",
"signup.title": "Crea tu Control Tower",
"signup.subtitle": "Configura tu organización e invita al equipo.",
"signup.orgName": "Nombre de la organización",
"signup.yourName": "Tu nombre",
"signup.email": "Correo electrónico",
"signup.password": "Contraseña",
"signup.error.default": "Registro fallido",
"signup.error.network": "Error de red",
"signup.submit.loading": "Creando cuenta...",
"signup.submit.default": "Crear cuenta",
"signup.alreadyHave": "¿Ya tienes acceso?",
"signup.signIn": "Iniciar sesión",
"invite.loading": "Cargando invitación...",
"invite.notFound": "Invitación no encontrada.",
"invite.joinTitle": "Únete a {org}",
"invite.acceptCopy": "Acepta la invitación para {email} como {role}.",
"invite.yourName": "Tu nombre",
"invite.password": "Contraseña",
"invite.error.notFound": "Invitación no encontrada",
"invite.error.acceptFailed": "No se pudo aceptar la invitación",
"invite.submit.loading": "Uniéndote...",
"invite.submit.default": "Unirse a la organización",
"overview.title": "Resumen",
"overview.subtitle": "Pulso de flota, alertas y elementos prioritarios.",
"overview.viewMachines": "Ver Máquinas",
"overview.loading": "Cargando resumen...",
"overview.fleetHealth": "Salud de flota",
"overview.machinesTotal": "Máquinas totales",
"overview.online": "En línea",
"overview.offline": "Fuera de línea",
"overview.run": "En marcha",
"overview.idle": "En espera",
"overview.stop": "Paro",
"overview.productionTotals": "Totales de producción",
"overview.good": "Buenas",
"overview.scrap": "Scrap",
"overview.target": "Meta",
"overview.kpiSumNote": "Suma de los últimos KPIs por máquina.",
"overview.activityFeed": "Actividad",
"overview.eventsRefreshing": "Actualizando eventos recientes...",
"overview.eventsLast30": "Últimos 30 eventos combinados",
"overview.eventsNone": "Sin eventos recientes.",
"overview.oeeAvg": "OEE (avg)",
"overview.availabilityAvg": "Availability (avg)",
"overview.performanceAvg": "Performance (avg)",
"overview.qualityAvg": "Quality (avg)",
"overview.attentionList": "Lista de atención",
"overview.shown": "mostrados",
"overview.noUrgent": "No se detectaron problemas urgentes.",
"overview.timeline": "Línea de tiempo unificada",
"overview.items": "elementos",
"overview.noEvents": "Sin eventos aún.",
"overview.ack": "ACK",
"overview.severity.critical": "CRÍTICO",
"overview.severity.warning": "ADVERTENCIA",
"overview.severity.info": "INFO",
"overview.source.ingested": "ingestado",
"overview.source.derived": "derivado",
"overview.event.macrostop": "macroparo",
"overview.event.microstop": "microparo",
"overview.event.slow-cycle": "ciclo lento",
"overview.status.offline": "FUERA DE LÍNEA",
"overview.status.online": "EN LÍNEA",
"machines.title": "Máquinas",
"machines.subtitle": "Selecciona una máquina para ver KPIs en vivo.",
"machines.cancel": "Cancelar",
"machines.addMachine": "Agregar máquina",
"machines.backOverview": "Volver al Resumen",
"machines.addCardTitle": "Agregar máquina",
"machines.addCardSubtitle": "Genera el ID de máquina y la API key para tu edge Node-RED.",
"machines.field.name": "Nombre de la máquina",
"machines.field.code": "Código (opcional)",
"machines.field.location": "Ubicación (opcional)",
"machines.create.loading": "Creando...",
"machines.create.default": "Crear máquina",
"machines.create.error.nameRequired": "El nombre de la máquina es obligatorio",
"machines.create.error.failed": "No se pudo crear la máquina",
"machines.pairing.title": "Código de emparejamiento",
"machines.pairing.machine": "Máquina:",
"machines.pairing.codeLabel": "Código de emparejamiento",
"machines.pairing.expires": "Expira",
"machines.pairing.soon": "pronto",
"machines.pairing.instructions": "Ingresa este código en la pantalla de configuración de Node-RED Control Tower para vincular el dispositivo.",
"machines.pairing.copy": "Copiar código",
"machines.pairing.copied": "Copiado",
"machines.pairing.copyUnsupported": "Copiar no disponible",
"machines.pairing.copyFailed": "Falló la copia",
"machines.loading": "Cargando máquinas...",
"machines.empty": "No se encontraron máquinas para esta organización.",
"machines.status": "Estado",
"machines.status.noHeartbeat": "Sin heartbeat",
"machines.status.ok": "OK",
"machines.status.offline": "FUERA DE LÍNEA",
"machines.status.unknown": "DESCONOCIDO",
"machines.lastSeen": "Visto hace {time}",
"machine.detail.titleFallback": "Máquina",
"machine.detail.lastSeen": "Visto hace {time}",
"machine.detail.loading": "Cargando...",
"machine.detail.error.failed": "No se pudo cargar la máquina",
"machine.detail.error.network": "Error de red",
"machine.detail.back": "Volver",
"machine.detail.status.offline": "FUERA DE LÍNEA",
"machine.detail.status.unknown": "DESCONOCIDO",
"machine.detail.status.run": "EN MARCHA",
"machine.detail.status.idle": "EN ESPERA",
"machine.detail.status.stop": "PARO",
"machine.detail.status.down": "CAÍDA",
"machine.detail.bucket.normal": "Ciclo normal",
"machine.detail.bucket.slow": "Ciclo lento",
"machine.detail.bucket.microstop": "Microparo",
"machine.detail.bucket.macrostop": "Macroparo",
"machine.detail.bucket.unknown": "Desconocido",
"machine.detail.activity.title": "Línea de tiempo de actividad",
"machine.detail.activity.subtitle": "Análisis en tiempo real de ciclos de producción",
"machine.detail.activity.noData": "Sin datos de línea de tiempo.",
"machine.detail.tooltip.cycle": "Ciclo: {label}",
"machine.detail.tooltip.duration": "Duración",
"machine.detail.tooltip.ideal": "Ideal",
"machine.detail.tooltip.deviation": "Desviación",
"machine.detail.kpi.updated": "Actualizado {time}",
"machine.detail.currentWorkOrder": "Orden de trabajo actual",
"machine.detail.recentEvents": "Eventos recientes",
"machine.detail.noEvents": "Sin eventos aún.",
"machine.detail.cycleTarget": "Ciclo objetivo",
"machine.detail.mini.events": "Eventos detectados",
"machine.detail.mini.events.subtitle": "Conteo por tipo (ciclos)",
"machine.detail.mini.deviation": "Ciclo real vs estándar",
"machine.detail.mini.deviation.subtitle": "Desviación promedio",
"machine.detail.mini.impact": "Impacto en producción",
"machine.detail.mini.impact.subtitle": "Tiempo extra vs ideal",
"machine.detail.modal.events": "Eventos detectados",
"machine.detail.modal.deviation": "Ciclo real vs estándar",
"machine.detail.modal.impact": "Impacto en producción",
"machine.detail.modal.standardCycle": "Ciclo estándar (ideal)",
"machine.detail.modal.avgDeviation": "Desviación promedio",
"machine.detail.modal.sample": "Muestra",
"machine.detail.modal.cycles": "ciclos",
"machine.detail.modal.tip": "Tip: la línea tenue es el ideal. Cada punto es un ciclo real.",
"machine.detail.modal.totalExtra": "Tiempo extra total",
"machine.detail.modal.microstops": "Microparos",
"machine.detail.modal.macroStops": "Macroparos",
"machine.detail.modal.extraTimeLabel": "Tiempo extra",
"machine.detail.modal.extraTimeNote": "Esto es \"tiempo perdido\" vs ideal, distribuido por tipo de evento.",
"reports.title": "Reportes",
"reports.subtitle": "Tendencias, paros y analítica de calidad por máquina.",
"reports.exportCsv": "Exportar CSV",
"reports.exportPdf": "Exportar PDF",
"reports.filters": "Filtros",
"reports.rangeLabel.last24": "Últimas 24 horas",
"reports.rangeLabel.last7": "Últimos 7 días",
"reports.rangeLabel.last30": "Últimos 30 días",
"reports.rangeLabel.custom": "Rango personalizado",
"reports.filter.range": "Rango",
"reports.filter.machine": "Máquina",
"reports.filter.workOrder": "Orden de trabajo",
"reports.filter.sku": "SKU",
"reports.filter.allMachines": "Todas las máquinas",
"reports.filter.allWorkOrders": "Todas las órdenes",
"reports.filter.allSkus": "Todos los SKUs",
"reports.loading": "Cargando reportes...",
"reports.error.failed": "No se pudieron cargar los reportes",
"reports.error.network": "Error de red",
"reports.kpi.note.withData": "Calculado a partir de KPIs.",
"reports.kpi.note.noData": "Sin datos en el rango seleccionado.",
"reports.oeeTrend": "Tendencia de OEE",
"reports.downtimePareto": "Pareto de paros",
"reports.cycleDistribution": "Distribución de tiempos de ciclo",
"reports.scrapTrend": "Tendencia de scrap",
"reports.topLossDrivers": "Principales causas de pérdida",
"reports.qualitySummary": "Resumen de calidad",
"reports.notes": "Notas para operaciones",
"reports.notes.suggested": "Acciones sugeridas",
"reports.notes.none": "Sin insights todavía. Genera reportes tras recolectar datos.",
"reports.noTrend": "Sin datos de tendencia.",
"reports.noDowntime": "Sin datos de paros.",
"reports.noCycle": "Sin datos de ciclo.",
"reports.scrapRate": "Scrap Rate",
"reports.topScrapSku": "SKU con más scrap",
"reports.topScrapWorkOrder": "Orden con más scrap",
"reports.loss.macrostop": "Macroparo",
"reports.loss.microstop": "Microparo",
"reports.loss.slowCycle": "Ciclo lento",
"reports.loss.qualitySpike": "Pico de calidad",
"reports.loss.oeeDrop": "Caída de OEE",
"reports.loss.perfDegradation": "Baja de desempeño",
"reports.tooltip.cycles": "Ciclos",
"reports.tooltip.range": "Rango",
"reports.tooltip.below": "Debajo de",
"reports.tooltip.above": "Encima de",
"reports.tooltip.extremes": "Extremos",
"reports.tooltip.downtime": "Tiempo de paro",
"reports.tooltip.extraTime": "Tiempo extra",
"reports.csv.section": "sección",
"reports.csv.key": "clave",
"reports.csv.value": "valor",
"reports.pdf.title": "Exportación de reporte",
"reports.pdf.range": "Rango",
"reports.pdf.machine": "Máquina",
"reports.pdf.workOrder": "Orden de trabajo",
"reports.pdf.sku": "SKU",
"reports.pdf.metric": "Métrica",
"reports.pdf.value": "Valor",
"reports.pdf.topLoss": "Principales causas de pérdida",
"reports.pdf.qualitySummary": "Resumen de calidad",
"reports.pdf.cycleDistribution": "Distribución de tiempos de ciclo",
"reports.pdf.notes": "Notas para operaciones",
"reports.pdf.none": "Ninguna",
"settings.title": "Configuración",
"settings.subtitle": "Configuración en vivo para turnos, alertas y valores predeterminados.",
"settings.loading": "Cargando configuración...",
"settings.loadingTeam": "Cargando equipo...",
"settings.refresh": "Actualizar",
"settings.save": "Guardar cambios",
"settings.saving": "Guardando...",
"settings.saved": "Configuración guardada",
"settings.failedLoad": "No se pudo cargar la configuración",
"settings.failedTeam": "No se pudo cargar el equipo",
"settings.failedSave": "No se pudo guardar la configuración",
"settings.unavailable": "La configuración no está disponible.",
"settings.conflict": "La configuración cambió en otro lugar. Actualiza e intenta de nuevo.",
"settings.org.title": "Organización",
"settings.org.plantName": "Nombre de planta",
"settings.org.slug": "Slug",
"settings.org.timeZone": "Zona horaria",
"settings.shiftSchedule": "Turnos",
"settings.shiftSubtitle": "Define turnos activos y compensación de paros.",
"settings.shiftName": "Nombre del turno",
"settings.shiftStart": "Inicio",
"settings.shiftEnd": "Fin",
"settings.shiftEnabled": "Activo",
"settings.shiftAdd": "Agregar turno",
"settings.shiftRemove": "Eliminar",
"settings.shiftComp": "Compensación por cambio de turno",
"settings.lunchBreak": "Comida",
"settings.minutes": "minutos",
"settings.shiftHint": "Máx 3 turnos, HH:mm",
"settings.shiftTo": "a",
"settings.shiftCompLabel": "Compensación por cambio de turno (min)",
"settings.lunchBreakLabel": "Comida (min)",
"settings.shift.defaultName": "Turno {index}",
"settings.thresholds": "Umbrales de alertas",
"settings.thresholdsSubtitle": "Ajusta alertas de salud de producción.",
"settings.thresholds.appliesAll": "Aplica a todas las máquinas",
"settings.thresholds.oee": "Umbral de alerta OEE",
"settings.thresholds.performance": "Umbral de Performance",
"settings.thresholds.qualitySpike": "Delta de pico de calidad",
"settings.thresholds.stoppage": "Multiplicador de paro",
"settings.alerts": "Alertas",
"settings.alertsSubtitle": "Elige qué alertas notificar.",
"settings.alerts.oeeDrop": "Alertas por caída de OEE",
"settings.alerts.oeeDropHelper": "Notificar cuando OEE esté por debajo del umbral",
"settings.alerts.performanceDegradation": "Alertas por baja de Performance",
"settings.alerts.performanceDegradationHelper": "Marcar ciclos lentos prolongados",
"settings.alerts.qualitySpike": "Alertas por picos de calidad",
"settings.alerts.qualitySpikeHelper": "Alertar por picos de scrap",
"settings.alerts.predictive": "Alertas predictivas de caída OEE",
"settings.alerts.predictiveHelper": "Avisar antes de que OEE caiga",
"settings.defaults": "Valores predeterminados de moldes",
"settings.defaults.moldTotal": "Moldes totales",
"settings.defaults.moldActive": "Moldes activos",
"settings.updated": "Actualizado",
"settings.updatedBy": "Actualizado por",
"settings.team": "Miembros del equipo",
"settings.teamTotal": "{count} total",
"settings.teamNone": "Sin miembros del equipo.",
"settings.invites": "Invitaciones",
"settings.inviteEmail": "Correo de invitación",
"settings.inviteRole": "Rol",
"settings.inviteSend": "Crear invitación",
"settings.inviteSending": "Creando...",
"settings.inviteStatus.copied": "Enlace de invitación copiado",
"settings.inviteStatus.emailRequired": "El correo es obligatorio",
"settings.inviteStatus.failed": "No se pudo revocar la invitación",
"settings.inviteStatus.sent": "Correo de invitación enviado",
"settings.inviteStatus.createFailed": "No se pudo crear la invitación",
"settings.inviteStatus.emailFailed": "Invitación creada, falló el correo: {url}",
"settings.inviteNone": "Sin invitaciones pendientes.",
"settings.inviteExpires": "Expira {date}",
"settings.inviteRole.member": "Miembro",
"settings.inviteRole.admin": "Admin",
"settings.inviteRole.owner": "Propietario",
"settings.inviteCopy": "Copiar enlace",
"settings.inviteRevoke": "Revocar",
"settings.role.owner": "Propietario",
"settings.role.admin": "Admin",
"settings.role.member": "Miembro",
"settings.role.inactive": "Inactivo",
"settings.integrations": "Integraciones",
"settings.integrations.webhook": "Webhook URL",
"settings.integrations.erp": "ERP Sync",
"settings.integrations.erpNotConfigured": "No configurado"
}