{ "---": "---", "common.loading": "Loading...", "common.loadingShort": "Loading", "common.never": "never", "common.na": "--", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", "common.save": "Save", "common.copy": "Copy", "nav.overview": "Overview", "nav.machines": "Machines", "nav.reports": "Reports", "nav.settings": "Settings", "sidebar.productTitle": "MIS", "sidebar.productSubtitle": "Control Tower", "sidebar.userFallback": "User", "sidebar.loadingOrg": "Loading...", "sidebar.themeTooltip": "Theme and language settings", "sidebar.switchToDark": "Switch to dark mode", "sidebar.switchToLight": "Switch to light mode", "sidebar.logout": "Logout", "sidebar.role.member": "MEMBER", "sidebar.role.admin": "ADMIN", "sidebar.role.owner": "OWNER", "login.title": "Control Tower", "login.subtitle": "Sign in to your organization", "login.email": "Email", "login.password": "Password", "login.error.default": "Login failed", "login.error.network": "Network error", "login.submit.loading": "Signing in...", "login.submit.default": "Login", "login.newHere": "New here?", "login.createAccount": "Create an account", "signup.verify.title": "Verify your email", "signup.verify.sent": "We sent a verification link to {email}.", "signup.verify.failed": "Verification email failed to send. Please contact support.", "signup.verify.notice": "Once verified, you can sign in and invite your team.", "signup.verify.back": "Back to login", "signup.title": "Create your Control Tower", "signup.subtitle": "Set up your organization and invite the team.", "signup.orgName": "Organization name", "signup.yourName": "Your name", "signup.email": "Email", "signup.password": "Password", "signup.error.default": "Signup failed", "signup.error.network": "Network error", "signup.submit.loading": "Creating account...", "signup.submit.default": "Create account", "signup.alreadyHave": "Already have access?", "signup.signIn": "Sign in", "invite.loading": "Loading invite...", "invite.notFound": "Invite not found.", "invite.joinTitle": "Join {org}", "invite.acceptCopy": "Accept the invite for {email} as {role}.", "invite.yourName": "Your name", "invite.password": "Password", "invite.error.notFound": "Invite not found", "invite.error.acceptFailed": "Invite acceptance failed", "invite.submit.loading": "Joining...", "invite.submit.default": "Join organization", "overview.title": "Overview", "overview.subtitle": "Fleet pulse, alerts, and top attention items.", "overview.viewMachines": "View Machines", "overview.loading": "Loading overview...", "overview.fleetHealth": "Fleet Health", "overview.machinesTotal": "Machines total", "overview.online": "Online", "overview.offline": "Offline", "overview.run": "Run", "overview.idle": "Idle", "overview.stop": "Stop", "overview.productionTotals": "Production Totals", "overview.good": "Good", "overview.scrap": "Scrap", "overview.target": "Target", "overview.kpiSumNote": "Sum of latest KPIs across machines.", "overview.activityFeed": "Activity Feed", "overview.eventsRefreshing": "Refreshing recent events...", "overview.eventsLast30": "Last 30 merged events", "overview.eventsNone": "No recent events.", "overview.oeeAvg": "OEE (avg)", "overview.availabilityAvg": "Availability (avg)", "overview.performanceAvg": "Performance (avg)", "overview.qualityAvg": "Quality (avg)", "overview.attentionList": "Attention List", "overview.shown": "shown", "overview.noUrgent": "No urgent issues detected.", "overview.timeline": "Unified Timeline", "overview.items": "items", "overview.noEvents": "No events yet.", "overview.ack": "ACK", "overview.severity.critical": "CRITICAL", "overview.severity.warning": "WARNING", "overview.severity.info": "INFO", "overview.source.ingested": "ingested", "overview.source.derived": "derived", "overview.event.macrostop": "macrostop", "overview.event.microstop": "microstop", "overview.event.slow-cycle": "slow-cycle", "overview.status.offline": "OFFLINE", "overview.status.online": "ONLINE", "machines.title": "Machines", "machines.subtitle": "Select a machine to view live KPIs.", "machines.cancel": "Cancel", "machines.addMachine": "Add Machine", "machines.backOverview": "Back to Overview", "machines.addCardTitle": "Add a machine", "machines.addCardSubtitle": "Generate the machine ID and API key for your Node-RED edge.", "machines.field.name": "Machine Name", "machines.field.code": "Code (optional)", "machines.field.location": "Location (optional)", "machines.create.loading": "Creating...", "machines.create.default": "Create Machine", "machines.create.error.nameRequired": "Machine name is required", "machines.create.error.failed": "Failed to create machine", "machines.pairing.title": "Edge pairing code", "machines.pairing.machine": "Machine:", "machines.pairing.codeLabel": "Pairing code", "machines.pairing.expires": "Expires", "machines.pairing.soon": "soon", "machines.pairing.instructions": "Enter this code on the Node-RED Control Tower settings screen to link the edge device.", "machines.pairing.copy": "Copy Code", "machines.pairing.copied": "Copied", "machines.pairing.copyUnsupported": "Copy not supported", "machines.pairing.copyFailed": "Copy failed", "machines.loading": "Loading machines...", "machines.empty": "No machines found for this org.", "machines.status": "Status", "machines.status.noHeartbeat": "No heartbeat", "machines.status.ok": "Heartbeat", "machines.status.offline": "OFFLINE", "machines.status.unknown": "UNKNOWN", "machines.lastSeen": "Last seen {time}", "machine.detail.titleFallback": "Machine", "machine.detail.lastSeen": "Last seen {time}", "machine.detail.loading": "Loading...", "machine.detail.error.failed": "Failed to load machine", "machine.detail.error.network": "Network error", "machine.detail.back": "Back", "machine.detail.workOrders.upload": "Upload Work Orders", "machine.detail.workOrders.uploading": "Uploading...", "machine.detail.workOrders.uploadParsing": "Parsing file...", "machine.detail.workOrders.uploadHint": "CSV or XLSX with Work Order ID, SKU, Theoretical Cycle Time (Seconds), Target Quantity.", "machine.detail.workOrders.uploadSuccess": "Uploaded {count} work orders", "machine.detail.workOrders.uploadError": "Upload failed", "machine.detail.workOrders.uploadInvalid": "No valid work orders found", "machine.detail.workOrders.uploadUnauthorized": "Not authorized to upload work orders", "machine.detail.status.offline": "OFFLINE", "machine.detail.status.unknown": "UNKNOWN", "machine.detail.status.run": "RUN", "machine.detail.status.idle": "IDLE", "machine.detail.status.stop": "STOP", "machine.detail.status.down": "DOWN", "machine.detail.bucket.normal": "Normal Cycle", "machine.detail.bucket.slow": "Slow Cycle", "machine.detail.bucket.microstop": "Microstop", "machine.detail.bucket.macrostop": "Macrostop", "machine.detail.bucket.unknown": "Unknown", "machine.detail.activity.title": "Machine Activity Timeline", "machine.detail.activity.subtitle": "Real-time analysis of production cycles", "machine.detail.activity.noData": "No timeline data yet.", "machine.detail.tooltip.cycle": "Cycle: {label}", "machine.detail.tooltip.duration": "Duration", "machine.detail.tooltip.ideal": "Ideal", "machine.detail.tooltip.deviation": "Deviation", "machine.detail.kpi.updated": "Updated {time}", "machine.detail.currentWorkOrder": "Current Work Order", "machine.detail.recentEvents": "Recent Events", "machine.detail.noEvents": "No events yet.", "machine.detail.cycleTarget": "Cycle target", "machine.detail.mini.events": "Detected Events", "machine.detail.mini.events.subtitle": "Count by type (cycles)", "machine.detail.mini.deviation": "Actual vs Standard Cycle", "machine.detail.mini.deviation.subtitle": "Average deviation", "machine.detail.mini.impact": "Production Impact", "machine.detail.mini.impact.subtitle": "Extra time vs ideal", "machine.detail.modal.events": "Detected Events", "machine.detail.modal.deviation": "Actual vs Standard Cycle", "machine.detail.modal.impact": "Production Impact", "machine.detail.modal.standardCycle": "Standard cycle (ideal)", "machine.detail.modal.avgDeviation": "Average deviation", "machine.detail.modal.sample": "Sample", "machine.detail.modal.cycles": "cycles", "machine.detail.modal.tip": "Tip: the faint line is the ideal. Each point is a real cycle.", "machine.detail.modal.totalExtra": "Total extra time", "machine.detail.modal.microstops": "Microstops", "machine.detail.modal.macroStops": "Macro stops", "machine.detail.modal.extraTimeLabel": "Extra time", "machine.detail.modal.extraTimeNote": "This is \"lost time\" vs ideal, distributed by event type.", "reports.title": "Reports", "reports.subtitle": "Trends, downtime, and quality analytics across machines.", "reports.exportCsv": "Export CSV", "reports.exportPdf": "Export PDF", "reports.filters": "Filters", "reports.rangeLabel.last24": "Last 24 hours", "reports.rangeLabel.last7": "Last 7 days", "reports.rangeLabel.last30": "Last 30 days", "reports.rangeLabel.custom": "Custom range", "reports.filter.range": "Range", "reports.filter.machine": "Machine", "reports.filter.workOrder": "Work Order", "reports.filter.sku": "SKU", "reports.filter.allMachines": "All machines", "reports.filter.allWorkOrders": "All work orders", "reports.filter.allSkus": "All SKUs", "reports.loading": "Loading reports...", "reports.error.failed": "Failed to load reports", "reports.error.network": "Network error", "reports.kpi.note.withData": "Computed from KPI snapshots.", "reports.kpi.note.noData": "No data in selected range.", "reports.oeeTrend": "OEE Trend", "reports.downtimePareto": "Downtime Pareto", "reports.cycleDistribution": "Cycle Time Distribution", "reports.scrapTrend": "Scrap Trend", "reports.topLossDrivers": "Top Loss Drivers", "reports.qualitySummary": "Quality Summary", "reports.notes": "Notes for Ops", "reports.notes.suggested": "Suggested actions", "reports.notes.none": "No insights yet. Generate reports after data collection.", "reports.noTrend": "No trend data yet.", "reports.noDowntime": "No downtime data yet.", "reports.noCycle": "No cycle data yet.", "reports.scrapRate": "Scrap Rate", "reports.topScrapSku": "Top Scrap SKU", "reports.topScrapWorkOrder": "Top Scrap Work Order", "reports.loss.macrostop": "Macrostop", "reports.loss.microstop": "Microstop", "reports.loss.slowCycle": "Slow Cycle", "reports.loss.qualitySpike": "Quality Spike", "reports.loss.oeeDrop": "OEE Drop", "reports.loss.perfDegradation": "Perf Degradation", "reports.tooltip.cycles": "Cycles", "reports.tooltip.range": "Range", "reports.tooltip.below": "Below", "reports.tooltip.above": "Above", "reports.tooltip.extremes": "Extremes", "reports.tooltip.downtime": "Downtime", "reports.tooltip.extraTime": "Extra time", "reports.csv.section": "section", "reports.csv.key": "key", "reports.csv.value": "value", "reports.pdf.title": "Report Export", "reports.pdf.range": "Range", "reports.pdf.machine": "Machine", "reports.pdf.workOrder": "Work Order", "reports.pdf.sku": "SKU", "reports.pdf.metric": "Metric", "reports.pdf.value": "Value", "reports.pdf.topLoss": "Top Loss Drivers", "reports.pdf.qualitySummary": "Quality Summary", "reports.pdf.cycleDistribution": "Cycle Time Distribution", "reports.pdf.notes": "Notes for Ops", "reports.pdf.none": "None", "settings.title": "Settings", "settings.subtitle": "Live configuration for shifts, alerts, and defaults.", "settings.loading": "Loading settings...", "settings.loadingTeam": "Loading team...", "settings.refresh": "Refresh", "settings.save": "Save changes", "settings.saving": "Saving...", "settings.saved": "Settings saved", "settings.failedLoad": "Failed to load settings", "settings.failedTeam": "Failed to load team", "settings.failedSave": "Failed to save settings", "settings.unavailable": "Settings are unavailable.", "settings.conflict": "Settings changed elsewhere. Refresh and try again.", "settings.org.title": "Organization", "settings.org.plantName": "Plant Name", "settings.org.slug": "Slug", "settings.org.timeZone": "Time Zone", "settings.shiftSchedule": "Shift Schedule", "settings.shiftSubtitle": "Define active shifts and downtime compensation.", "settings.shiftName": "Shift name", "settings.shiftStart": "Start", "settings.shiftEnd": "End", "settings.shiftEnabled": "Enabled", "settings.shiftAdd": "Add shift", "settings.shiftRemove": "Remove", "settings.shiftComp": "Shift change compensation", "settings.lunchBreak": "Lunch break", "settings.minutes": "minutes", "settings.shiftHint": "Max 3 shifts, HH:mm", "settings.shiftTo": "to", "settings.shiftCompLabel": "Shift change compensation (min)", "settings.lunchBreakLabel": "Lunch break (min)", "settings.shift.defaultName": "Shift {index}", "settings.thresholds": "Alert thresholds", "settings.thresholdsSubtitle": "Tune production health alerts.", "settings.thresholds.appliesAll": "Applies to all machines", "settings.thresholds.oee": "OEE alert threshold", "settings.thresholds.performance": "Performance threshold", "settings.thresholds.qualitySpike": "Quality spike delta", "settings.thresholds.stoppage": "Stoppage multiplier", "settings.thresholds.macroStoppage": "Macro stoppage multiplier", "settings.alerts": "Alerts", "settings.alertsSubtitle": "Choose which alerts to notify.", "settings.alerts.oeeDrop": "OEE drop alerts", "settings.alerts.oeeDropHelper": "Notify when OEE falls below threshold", "settings.alerts.performanceDegradation": "Performance degradation alerts", "settings.alerts.performanceDegradationHelper": "Flag prolonged slow cycles", "settings.alerts.qualitySpike": "Quality spike alerts", "settings.alerts.qualitySpikeHelper": "Alert on scrap spikes", "settings.alerts.predictive": "Predictive OEE decline alerts", "settings.alerts.predictiveHelper": "Warn before OEE drops", "settings.defaults": "Mold Defaults", "settings.defaults.moldTotal": "Total molds", "settings.defaults.moldActive": "Active molds", "settings.updated": "Updated", "settings.updatedBy": "Updated by", "settings.team": "Team Members", "settings.teamTotal": "{count} total", "settings.teamNone": "No team members yet.", "settings.invites": "Invitations", "settings.inviteEmail": "Invite email", "settings.inviteRole": "Role", "settings.inviteSend": "Create invite", "settings.inviteSending": "Creating...", "settings.inviteStatus.copied": "Invite link copied", "settings.inviteStatus.emailRequired": "Email is required", "settings.inviteStatus.failed": "Failed to revoke invite", "settings.inviteStatus.sent": "Invite email sent", "settings.inviteStatus.createFailed": "Failed to create invite", "settings.inviteStatus.emailFailed": "Invite created, email failed: {url}", "settings.inviteNone": "No pending invites.", "settings.inviteExpires": "Expires {date}", "settings.inviteRole.member": "Member", "settings.inviteRole.admin": "Admin", "settings.inviteRole.owner": "Owner", "settings.inviteCopy": "Copy link", "settings.inviteRevoke": "Revoke", "settings.role.owner": "Owner", "settings.role.admin": "Admin", "settings.role.member": "Member", "settings.role.inactive": "Inactive", "settings.integrations": "Integrations", "settings.integrations.webhook": "Webhook URL", "settings.integrations.erp": "ERP Sync", "settings.integrations.erpNotConfigured": "Not configured" }