343 lines
16 KiB
JSON
343 lines
16 KiB
JSON
{
|
|
"---": "---",
|
|
"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"
|
|
}
|