814 lines
45 KiB
JSON
814 lines
45 KiB
JSON
{
|
|
"meta": {
|
|
"code": "en",
|
|
"name": "English",
|
|
"native_name": "English",
|
|
"locale": "en-GB"
|
|
},
|
|
"translations": {
|
|
"meta.description": "Local GREE air conditioner controller",
|
|
"status.connecting": "Connecting…",
|
|
"status.connected": "Connected",
|
|
"status.disconnected": "Disconnected",
|
|
"status.connectionError": "Connection error",
|
|
"status.online": "Online",
|
|
"status.offline": "Offline",
|
|
"controls.language": "Language",
|
|
"controls.theme": "Theme",
|
|
"theme.system": "System",
|
|
"theme.light": "Light",
|
|
"theme.dark": "Dark",
|
|
"nav.navigation": "Navigation",
|
|
"nav.dashboard": "Dashboard",
|
|
"nav.devices": "Devices",
|
|
"nav.zones": "Zones",
|
|
"nav.history": "History",
|
|
"nav.more": "More",
|
|
"nav.schedules": "Schedules",
|
|
"nav.automations": "Automations",
|
|
"nav.settings": "Settings",
|
|
"nav.logs": "Events",
|
|
"nav.logsAndEvents": "Events and logs",
|
|
"actions.refresh": "Refresh",
|
|
"actions.discover": "Discover",
|
|
"actions.discovering": "Searching…",
|
|
"actions.add": "Add",
|
|
"actions.show": "Show",
|
|
"actions.save": "Save",
|
|
"actions.cancel": "Cancel",
|
|
"actions.edit": "Edit",
|
|
"actions.delete": "Delete",
|
|
"actions.read": "Read",
|
|
"actions.bind": "Bind",
|
|
"actions.noChange": "No change",
|
|
"actions.turnOn": "Turn on",
|
|
"actions.turnOff": "Turn off",
|
|
"dashboard.home": "Home",
|
|
"dashboard.title": "Comfort under control",
|
|
"dashboard.loading": "Loading devices…",
|
|
"dashboard.quickControl": "Manual control",
|
|
"dashboard.summary": "{online} of {total} devices online{active}.",
|
|
"dashboard.summaryActive": ", {count} running",
|
|
"dashboard.empty": "No devices. Start discovery or add a device manually.",
|
|
"dashboard.metricOnline": "Online",
|
|
"dashboard.metricActive": "Active",
|
|
"dashboard.metricDemand": "Zones requesting",
|
|
"devices.lan": "LAN network",
|
|
"devices.addManual": "Add manually",
|
|
"devices.add": "Add device",
|
|
"devices.ipAddress": "IP address",
|
|
"devices.protocol": "Protocol",
|
|
"devices.keyOptional": "Key (optional)",
|
|
"devices.keyPlaceholder": "Leave empty for automatic bind",
|
|
"devices.simulated": "Simulated device",
|
|
"devices.simulator": "simulator",
|
|
"devices.power": "Power",
|
|
"devices.currentTemperature": "Temperature",
|
|
"common.clickTemperatureToEdit": "Click the temperature to type a value",
|
|
"common.targetTemperature": "Target temperature",
|
|
"devices.outdoor": "outside",
|
|
"devices.quiet": "Quiet",
|
|
"devices.swing": "Swing",
|
|
"devices.turbo": "Turbo",
|
|
"devices.emptyTitle": "No devices",
|
|
"devices.emptyText": "Use Discover while the controller is on the same LAN.",
|
|
"devices.readDone": "Device state updated",
|
|
"devices.bound": "Device bound",
|
|
"devices.added": "Device added",
|
|
"devices.disabledZoneTechnicalOnly": "This zone is disabled. Manual control of its unit is available only from the Devices view.",
|
|
"zones.automation": "Automation",
|
|
"zones.new": "New zone",
|
|
"zones.description": "Zones define thermostat logic and sensor configuration. Use Quick thermostats on the Dashboard for current temperature, preset and mode changes.",
|
|
"zones.hysteresis": "Hysteresis °C",
|
|
"zones.separateHysteresis": "Set heating and cooling separately",
|
|
"zones.coolHysteresis": "Cooling hysteresis °C",
|
|
"zones.heatHysteresis": "Heating hysteresis °C",
|
|
"zones.source": "Temperature strategy",
|
|
"zones.greeSensor": "GREE only",
|
|
"zones.combinedSensor": "GREE + room sensor",
|
|
"zones.externalSensor": "Room sensor only",
|
|
"zones.minOn": "Min. ON (s)",
|
|
"zones.minOff": "Min. OFF (s)",
|
|
"zones.greeSource": "GREE sensor",
|
|
"zones.combinedSource": "GREE + room sensor",
|
|
"zones.externalSource": "room sensor",
|
|
"zones.measurement": "Control temperature",
|
|
"zones.demand": "Demand",
|
|
"zones.emptyTitle": "No zones",
|
|
"zones.emptyText": "Add a zone to control temperature automatically.",
|
|
"zones.roomSensorEntity": "Room sensor entity_id",
|
|
"zones.roomSensorWeight": "Room sensor weight %",
|
|
"zones.maxDifference": "Max. sensor difference °C",
|
|
"zones.sensorHelp": "This sensor belongs only to this zone. If it becomes unavailable, the controller automatically falls back to the GREE sensor.",
|
|
"zones.greeTemp": "GREE",
|
|
"zones.externalTemp": "Room",
|
|
"zones.usedSource": "used",
|
|
"zones.sourceDevice": "GREE",
|
|
"zones.sourceExternal": "room sensor",
|
|
"zones.sourceCombined": "combined",
|
|
"zones.sourceFallback": "GREE fallback",
|
|
"zones.sourceDiscrepancy": "GREE fallback: sensor mismatch",
|
|
"zones.sourceUnavailable": "unavailable",
|
|
"schedules.calendar": "Calendar",
|
|
"schedules.weekdays": "Weekdays",
|
|
"schedules.crossMidnight": "Intervals crossing midnight are supported",
|
|
"schedules.emptyTitle": "No schedules",
|
|
"schedules.emptyText": "Set a temperature by day and time.",
|
|
"automations.rules": "Rules",
|
|
"automations.namePlaceholder": "Emergency cooling",
|
|
"automations.trigger": "Trigger",
|
|
"automations.tempAbove": "Temperature above",
|
|
"automations.tempBelow": "Temperature below",
|
|
"automations.time": "Time",
|
|
"automations.measurementDevice": "Measurement device",
|
|
"automations.thresholdC": "Threshold °C",
|
|
"automations.action": "Action",
|
|
"automations.triggerAt": "at {time}",
|
|
"automations.triggerAbove": "above {temperature}",
|
|
"automations.triggerBelow": "below {temperature}",
|
|
"automations.triggerSummary": "Trigger {trigger} · action: {device}",
|
|
"automations.last": "Last",
|
|
"automations.emptyTitle": "No automations",
|
|
"automations.emptyText": "Add a temperature or time rule.",
|
|
"history.measurements": "Measurements",
|
|
"history.title": "Climate history",
|
|
"history.6h": "6 hours",
|
|
"history.24h": "24 hours",
|
|
"history.7d": "7 days",
|
|
"history.30d": "30 days",
|
|
"history.noData": "No measurements for the selected period",
|
|
"settings.system": "System",
|
|
"settings.controller": "Controller",
|
|
"settings.clientId": "Client identifier",
|
|
"settings.pollInterval": "Poll interval (s)",
|
|
"settings.zoneInterval": "Zone interval (s)",
|
|
"settings.broadcast": "Broadcast address",
|
|
"settings.discoveryTimeout": "Discovery timeout (ms)",
|
|
"settings.simulationMode": "Simulation mode",
|
|
"settings.haTokenKeep": "Leave empty to keep the saved token",
|
|
"settings.haTokenSaved": "Token saved — leave empty to keep it",
|
|
"settings.haLongLivedToken": "Long-Lived Access Token",
|
|
"settings.defaultEntity": "Default entity_id",
|
|
"settings.testHa": "Test HA",
|
|
"settings.systemState": "System status",
|
|
"settings.version": "Version",
|
|
"settings.uptime": "Uptime",
|
|
"settings.apiAuth": "API authentication",
|
|
"settings.enabled": "enabled",
|
|
"settings.disabled": "disabled",
|
|
"logs.diagnostics": "Diagnostics",
|
|
"logs.emptyTitle": "No events",
|
|
"logs.emptyText": "The event log is empty.",
|
|
"common.name": "Name",
|
|
"common.zone": "Zone",
|
|
"common.device": "Device",
|
|
"common.mode": "Mode",
|
|
"common.target": "Target",
|
|
"common.targetC": "Target °C",
|
|
"common.temperature": "Temperature",
|
|
"common.temperatureC": "Temperature °C",
|
|
"common.schedule": "Schedule",
|
|
"common.automation": "Automation",
|
|
"common.enabled": "Enabled",
|
|
"common.disabled": "Disabled",
|
|
"common.active": "Active",
|
|
"common.from": "From",
|
|
"common.to": "To",
|
|
"common.power": "Power",
|
|
"common.on": "ON",
|
|
"common.off": "OFF",
|
|
"common.noDevice": "No device",
|
|
"common.noZone": "No zone",
|
|
"common.cooldown": "Cooldown",
|
|
"common.cooldownSeconds": "Cooldown (s)",
|
|
"common.removed": "Removed",
|
|
"common.updated": "Data refreshed",
|
|
"common.saved": "Saved",
|
|
"placeholder.livingRoom": "Living room",
|
|
"placeholder.night": "Night",
|
|
"mode.auto": "Auto",
|
|
"mode.cool": "Cooling",
|
|
"mode.dry": "Dry",
|
|
"mode.fan": "Fan",
|
|
"mode.heat": "Heating",
|
|
"fan.auto": "Auto",
|
|
"fan.low": "Low",
|
|
"fan.mediumLow": "Medium-low",
|
|
"fan.medium": "Medium",
|
|
"fan.mediumHigh": "Medium-high",
|
|
"fan.high": "High",
|
|
"auth.required": "Authentication required",
|
|
"auth.token": "Access token",
|
|
"auth.connect": "Connect",
|
|
"auth.invalid": "Invalid access token",
|
|
"error.http": "HTTP error {status}",
|
|
"confirm.delete": "Delete {label}?",
|
|
"label.device": "device",
|
|
"label.zone": "zone",
|
|
"label.schedule": "schedule",
|
|
"label.automation": "automation",
|
|
"toast.found": "Found: {count}",
|
|
"toast.haTemperature": "Home Assistant: {temperature}°C",
|
|
"day.1": "Mon",
|
|
"day.2": "Tue",
|
|
"day.3": "Wed",
|
|
"day.4": "Thu",
|
|
"day.5": "Fri",
|
|
"day.6": "Sat",
|
|
"day.7": "Sun",
|
|
"settings.haSensorInput": "Home Assistant sensor input",
|
|
"settings.haSensorInputHint": "Optional. Used only when a room zone reads an external Home Assistant temperature sensor.",
|
|
"settings.haIntegrationAccess": "Home Assistant integration access",
|
|
"settings.haIntegrationHint": "Create a controller token and paste it into the GREE Controller integration in Home Assistant.",
|
|
"settings.newToken": "Create new token",
|
|
"settings.noTokens": "No integration tokens",
|
|
"settings.noTokensHint": "Create a token before adding GREE Controller to Home Assistant.",
|
|
"settings.tokenCreated": "Token created",
|
|
"settings.tokenCreatedHint": "Copy this token now. It will not be shown again.",
|
|
"settings.created": "Created",
|
|
"actions.copy": "Copy",
|
|
"actions.revoke": "Revoke",
|
|
"actions.done": "Done",
|
|
"confirm.revokeToken": "Revoke this Home Assistant access token?",
|
|
"toast.tokenCreated": "Home Assistant access token created",
|
|
"toast.tokenCopied": "Token copied",
|
|
"toast.tokenRevoked": "Token revoked",
|
|
"devices.protocolAuto": "Auto (V1 + V2)",
|
|
"devices.rename": "Name / protocol",
|
|
"devices.protocolChangeHint": "Changing protocol clears the saved device key and performs a new bind on the next request.",
|
|
"discovery.title": "Discover GREE devices",
|
|
"discovery.help": "Auto searches both AES-ECB and AES-GCM devices. Multiple passes improve discovery when several Wi-Fi modules answer the same broadcast.",
|
|
"discovery.protocol": "Discovery protocol",
|
|
"discovery.passes": "Scan passes",
|
|
"discovery.timeout": "Total scan time (ms)",
|
|
"zones.quickHint": "Quick target and mode control",
|
|
"actions.later": "Later",
|
|
"discovery.nameDevices": "Name discovered devices",
|
|
"discovery.nameDevicesHelp": "Give each new unit a friendly room name. The technical model and MAC remain available in diagnostics.",
|
|
"dashboard.quickThermostats": "Thermostats",
|
|
"common.unavailable": "Unavailable",
|
|
"mode.off": "Off",
|
|
"house.seasonMode": "Home climate mode",
|
|
"house.smartThermostat": "Smart thermostat",
|
|
"house.setpointStrategy": "Heating or cooling selects the automation direction. After resume, a zone with no active schedule, manual target, temporary session or other explicit control stays OFF. “Do not control” leaves devices untouched.",
|
|
"house.outdoor": "Outdoor",
|
|
"house.modeUpdated": "Home climate mode updated",
|
|
"zones.modePolicy": "Mode policy",
|
|
"zones.modePolicyHint": "If this zone should use the global Heating/Cooling mode selected in GREE Controller, leave “Follow global mode” unchanged. “Cooling only” or “Heating only” forces a fixed mode only for this zone.",
|
|
"zones.followHouse": "Follow global mode",
|
|
"zones.followHouseShort": "Global",
|
|
"zones.globalModeUnavailable": "Select global Heating or Cooling first",
|
|
"zones.profileTemperatures": "Comfort / sleep / away temperatures",
|
|
"zones.minAdjust": "Minimum adjustment interval (s)",
|
|
"zones.standbyOffset": "Standby setpoint offset °C",
|
|
"zones.smartFan": "Smart fan assist",
|
|
"zones.deviceTarget": "AC target",
|
|
"zones.overrideUntil": "Manual until",
|
|
"zones.scheduleControl": "Schedule control",
|
|
"zones.manualNoBoundary": "Manual · no next transition",
|
|
"zones.requesting": "Demand active",
|
|
"zones.satisfied": "Target reached",
|
|
"zones.quickHintSmart": "Quick changes last until the next schedule transition; without a schedule they stay active.",
|
|
"preset.auto": "Auto",
|
|
"preset.comfort": "Comfort",
|
|
"preset.sleep": "Sleep",
|
|
"preset.away": "Away",
|
|
"preset.custom": "Custom",
|
|
"schedules.quickSetup": "Quick schedule setup",
|
|
"schedules.quickSetupHint": "Choose a zone and a ready-made daily rhythm. You can edit every generated entry afterwards.",
|
|
"schedules.templateFamily": "Family",
|
|
"schedules.templateChild": "Child room",
|
|
"schedules.templateBedroom": "Bedroom",
|
|
"schedules.templateWorkday": "Workday",
|
|
"schedules.templateAlways": "Always comfort",
|
|
"schedules.chooseZone": "Choose a zone first",
|
|
"schedules.templateApplied": "Schedule preset applied",
|
|
"schedules.profile": "Profile",
|
|
"settings.outdoorEntity": "Outdoor temperature entity_id",
|
|
"settings.outdoorAssist": "Use outdoor temperature as smart-control assist",
|
|
"settings.allowInvalidTls": "Allow invalid/self-signed HTTPS certificate",
|
|
"settings.allowInvalidTlsHint": "Use only for a trusted local Home Assistant server, for example https://192.168.50.25.",
|
|
"zones.sleepNow": "Sleep",
|
|
"house.autoAll": "Auto schedule",
|
|
"house.comfortAll": "Comfort all",
|
|
"house.sleepAll": "Sleep all",
|
|
"house.awayAll": "Away all",
|
|
"house.presetUpdated": "Home preset updated",
|
|
"schedules.replaceConfirm": "Replace the current schedule for this zone with the selected preset? You can edit every generated entry afterwards.",
|
|
"automations.smartHintTitle": "Use thermostat presets for daily comfort",
|
|
"automations.smartHint": "Schedules and zone presets handle normal heating/cooling automatically. Keep automations for special exceptions so they do not fight the thermostat.",
|
|
"history.allZones": "All zones",
|
|
"history.temperatureOverview": "Temperature overview",
|
|
"history.temperatureOverviewHint": "GREE, room sensor, control temperature, targets and outdoor temperature.",
|
|
"history.operationOverview": "Targets and operation",
|
|
"history.operationOverviewHint": "Zone targets, compressor demand, power and fan activity over the same period.",
|
|
"history.greeSensor": "GREE sensor",
|
|
"history.roomSensor": "Room sensor",
|
|
"history.controlTemperature": "Control temperature",
|
|
"history.comfortTarget": "Comfort target",
|
|
"history.deviceSetpoint": "Device setpoint",
|
|
"history.outdoorTemperature": "Outdoor temperature",
|
|
"history.fanSpeed": "Fan speed",
|
|
"history.demand": "Demand",
|
|
"history.power": "Power",
|
|
"history.targetShort": "Target",
|
|
"history.sensor": "Indoor unit",
|
|
"history.homeAssistant": "Home Assistant",
|
|
"history.assist": "Outdoor assist",
|
|
"history.tabOverview": "Overview",
|
|
"history.tabZones": "Zones",
|
|
"history.tabDevices": "GREE devices",
|
|
"history.tabSensors": "HA sensors",
|
|
"history.tabCustom": "Custom chart",
|
|
"history.overviewHint": "All rooms, units and available outdoor measurements in one place.",
|
|
"history.customHint": "Compose your own chart from GREE, zone and Home Assistant data.",
|
|
"history.allDevices": "All GREE devices",
|
|
"history.allSensors": "All HA sensors",
|
|
"history.haSensor": "HA sensor",
|
|
"history.deviceSamples": "GREE samples",
|
|
"history.zoneSamples": "Zone samples",
|
|
"history.haSamples": "HA samples",
|
|
"history.greeHistory": "Device polling history",
|
|
"history.zoneHistory": "Thermostat history",
|
|
"history.haHistory": "External sensor history",
|
|
"history.allGreeIndoor": "All GREE indoor temperatures",
|
|
"history.allGreeIndoorHint": "Indoor temperature reported by every GREE unit, independent of zones.",
|
|
"history.allOutdoor": "Outdoor temperatures",
|
|
"history.allOutdoorHint": "Outdoor values reported by GREE units plus the optional Home Assistant outdoor sensor.",
|
|
"history.allZoneControl": "All zone control temperatures",
|
|
"history.allZoneControlHint": "The temperature actually used by the thermostat in every zone.",
|
|
"history.greeOutdoor": "GREE outdoor",
|
|
"history.deviceIndoor": "GREE indoor temperature",
|
|
"history.deviceIndoorHint": "Indoor sensor history for the selected unit or all units.",
|
|
"history.deviceOutdoor": "GREE outdoor temperature",
|
|
"history.deviceOutdoorHint": "Outdoor temperature reported by compatible GREE units. Units without this sensor are omitted.",
|
|
"history.deviceTargets": "GREE target temperatures",
|
|
"history.deviceTargetsHint": "Setpoints sent to each GREE unit over time.",
|
|
"history.deviceTarget": "Device target",
|
|
"history.indoorTemperature": "Indoor temperature",
|
|
"history.haSensors": "Home Assistant temperatures",
|
|
"history.haSensorsHint": "Room and outdoor temperature entities read from Home Assistant.",
|
|
"history.customTitle": "Chart composer",
|
|
"history.customDescription": "Mix any GREE, zone or Home Assistant temperature series. Save it locally or copy a shareable URL.",
|
|
"history.addSeries": "Add series",
|
|
"history.noCustomSeries": "Add at least one series to the chart.",
|
|
"history.chartName": "Chart name",
|
|
"history.copyLink": "Copy link",
|
|
"history.series": "series",
|
|
"history.noSavedCharts": "No saved custom charts yet.",
|
|
"history.customChart": "Custom climate chart",
|
|
"history.customChartHint": "Your selected data sources on one timeline.",
|
|
"history.chartSaved": "Custom chart saved",
|
|
"history.linkCopied": "Chart link copied",
|
|
"toast.successTitle": "Done",
|
|
"toast.errorTitle": "Something went wrong",
|
|
"plan.eyebrow": "Control plan",
|
|
"plan.title": "What happens next",
|
|
"plan.house": "Whole house",
|
|
"plan.houseSummary": "{zones} enabled zones · {demand} requesting action",
|
|
"plan.noEvents": "No scheduled changes in the next days",
|
|
"plan.loading": "Loading current automation plan…",
|
|
"plan.rules": "Extra automations",
|
|
"plan.ruleCount": "{count} active rules",
|
|
"plan.event": "Change",
|
|
"plan.groupSummary": "Group zones: {zones} · requesting action: {demand}",
|
|
"plan.groupOff": "Group off — group units are powered down and group ownership is released.",
|
|
"zones.enable": "Enable zone",
|
|
"zones.disable": "Disable zone",
|
|
"history.90d": "90 days",
|
|
"history.1y": "1 year",
|
|
"settings.metrics": "Metrics storage",
|
|
"settings.retentionDays": "Local retention (days)",
|
|
"settings.compaction": "Compact old metrics",
|
|
"settings.compactionHint": "SQLite keeps recent data locally and compacts older samples to the resolution used by charts.",
|
|
"settings.greeCommands": "GREE commands",
|
|
"settings.greeTraffic": "GREE traffic",
|
|
"settings.greeTrafficHint": "Live counters of UDP frames received from configured air conditioners since controller startup.",
|
|
"settings.receivedFramesTotal": "Received frames total",
|
|
"settings.receivedFramesDevices": "Air conditioners",
|
|
"settings.suppressBeep": "Try to suppress command beeps",
|
|
"settings.suppressBeepHint": "Only changed properties are sent. Buzzer suppression is also requested when supported by the unit firmware.",
|
|
"settings.influx": "Long-term InfluxDB history",
|
|
"settings.influxHint": "Optional archive for older history. InfluxDB 1.x and 2.x are supported. Samples older than the handoff age are removed from SQLite only after a successful archive write.",
|
|
"settings.influxEnabled": "Enable InfluxDB archive",
|
|
"settings.influxVersion": "InfluxDB version",
|
|
"settings.influxThreshold": "Use archive for history older than (days)",
|
|
"settings.influxDatabase": "Database",
|
|
"settings.influxUsername": "Username",
|
|
"settings.influxPassword": "Password",
|
|
"settings.influxOrg": "Organization",
|
|
"settings.influxBucket": "Bucket",
|
|
"settings.influxToken": "Token",
|
|
"settings.secretKeep": "Leave empty to keep saved secret",
|
|
"settings.secretSaved": "Secret already saved — leave empty to keep it",
|
|
"settings.debug": "On-screen debug",
|
|
"settings.debugOverlay": "Show debug window on every page",
|
|
"settings.debugGreeFrames": "Include GREE protocol frames",
|
|
"settings.backup": "Configuration backup",
|
|
"settings.backupHint": "Export/import application configuration. Exported files can contain GREE device keys plus Home Assistant, InfluxDB and notification secrets; metrics and API access tokens are not included.",
|
|
"settings.export": "Export settings",
|
|
"settings.import": "Import settings",
|
|
"settings.importConfirm": "Replace the current application configuration with this file? Existing metrics and API access tokens will be kept.",
|
|
"debug.title": "Live debug",
|
|
"debug.clear": "Clear",
|
|
"debug.apiAndGree": "Requests, events + GREE frames",
|
|
"debug.apiOnly": "Requests and application events",
|
|
"debug.empty": "No debug events yet.",
|
|
"toast.exported": "Configuration exported",
|
|
"toast.imported": "Configuration imported",
|
|
"nav.simulation": "Simulator",
|
|
"simulation.eyebrow": "Simulator",
|
|
"simulation.title": "Automation simulator",
|
|
"simulation.description": "Live preview of the thermostat and automation logic. The flow board shows how sensor readings, schedules, night mode and thermostat decisions become commands sent to each GREE unit.",
|
|
"simulation.timelineEyebrow": "Timeline",
|
|
"simulation.timelineTitle": "What will happen next",
|
|
"simulation.zoneEyebrow": "Zones",
|
|
"simulation.zoneTitle": "Thermostat decision flow",
|
|
"simulation.rulesEyebrow": "Rules",
|
|
"simulation.rulesTitle": "Automation rules",
|
|
"simulation.houseMode": "House mode",
|
|
"simulation.strategy": "Strategy: {strategy}",
|
|
"simulation.outdoor": "Outdoor",
|
|
"simulation.generatedAt": "Generated: {time}",
|
|
"simulation.activeZones": "Active zones",
|
|
"simulation.requestingZones": "Zones with demand: {count}",
|
|
"simulation.rulesLabel": "Active rules",
|
|
"simulation.eventsQueued": "Queued events: {count}",
|
|
"simulation.house": "House",
|
|
"simulation.stepRoom": "Room reading",
|
|
"simulation.stepTarget": "Target",
|
|
"simulation.stepDecision": "Decision",
|
|
"simulation.stepCommand": "Unit command",
|
|
"simulation.hysteresis": "Hysteresis {value}°C",
|
|
"simulation.deviceSetpoint": "Device setpoint",
|
|
"simulation.quietIfSupported": "If supported",
|
|
"simulation.manual": "Manual",
|
|
"simulation.noCommand": "No command preview",
|
|
"simulation.noActionPreview": "No direct action payload",
|
|
"simulation.ruleOnDevice": "Action target: {device}",
|
|
"simulation.nextReady": "Ready again",
|
|
"simulation.noRules": "No active automation rules.",
|
|
"simulation.waitingForData": "Waiting for data",
|
|
"simulation.stateDemand": "Demand",
|
|
"simulation.stateSatisfied": "Satisfied",
|
|
"simulation.reasonDisabled": "Zone is disabled, so the thermostat does not send control commands.",
|
|
"simulation.reasonHouseOff": "House “Do not control” leaves this zone under manual control and sends no commands to the air conditioner.",
|
|
"simulation.reasonWaiting": "The simulator is waiting for a valid room temperature and target.",
|
|
"simulation.reasonDemand": "Room needs {mode}. Thermostat compares the reading with the target {target}°C using hysteresis {hysteresis}°C.",
|
|
"simulation.reasonSatisfied": "Target is reached. The thermostat moves the unit into standby around {standby}°C to keep the room quiet and stable.",
|
|
"simulation.activeTargetLabel": "Active target before device rounding: {value}°C",
|
|
"simulation.standbyTargetLabel": "Standby target before device rounding: {value}°C",
|
|
"common.fan": "Fan",
|
|
"devices.nameProtocol": "Name / protocol",
|
|
"history.range": "Range",
|
|
"settings.controllerHint": "Runtime and LAN discovery settings.",
|
|
"settings.nightMode": "Night mode",
|
|
"settings.nightModeHint": "During selected hours the thermostat limits fan speed and can request Quiet plus native Sleep on compatible units.",
|
|
"settings.nightModeEnabled": "Enable night mode",
|
|
"settings.nightStart": "Start",
|
|
"settings.nightEnd": "End",
|
|
"settings.nightMaxFan": "Maximum fan speed",
|
|
"settings.nightForceQuiet": "Use Quiet when supported",
|
|
"settings.metricsAndLogs": "Metrics and logs",
|
|
"settings.eventRetentionDays": "Event/log retention (days)",
|
|
"settings.debugHint": "Live diagnostics displayed on every application page.",
|
|
"settings.sensorAliases": "Sensor aliases",
|
|
"settings.sensorAliasesHint": "Friendly names are used only in charts and selectors. Home Assistant requests always use the original entity_id.",
|
|
"settings.aliasPlaceholder": "Friendly name",
|
|
"settings.noSensorAliases": "No Home Assistant sensors are known yet. Add an entity_id below.",
|
|
"settings.aliasRequired": "Enter both entity_id and alias.",
|
|
"settings.saveHint": "Save changes made in the blocks above.",
|
|
"logs.retention": "Log retention",
|
|
"logs.retentionHint": "Old event rows are removed automatically during maintenance.",
|
|
"logs.keepFor": "Keep for",
|
|
"logs.retentionSaved": "Log retention set to {days} days.",
|
|
"simulation.flowEyebrow": "Live flow",
|
|
"simulation.flowTitle": "Automation flow board",
|
|
"simulation.legendInput": "Input",
|
|
"simulation.legendLogic": "Logic",
|
|
"simulation.legendAction": "Action",
|
|
"simulation.fanMax": "fan max",
|
|
"simulation.globalInput": "Global input",
|
|
"simulation.thermostat": "Thermostat",
|
|
"simulation.callForComfort": "Comfort demand",
|
|
"simulation.standby": "Quiet standby",
|
|
"simulation.nextEvent": "Next event",
|
|
"simulation.noEventShort": "No event",
|
|
"simulation.schedule": "Schedule",
|
|
"common.days": "days",
|
|
"actions.clear": "Clear",
|
|
"simulation.scheduled": "Scheduled",
|
|
"settings.nightNativeSleep": "Use native Sleep when supported",
|
|
"devices.features": "Unit features",
|
|
"devices.noExtraFeatures": "No additional features detected yet.",
|
|
"devices.light": "Panel light",
|
|
"devices.xfan": "X-FAN",
|
|
"devices.health": "Health",
|
|
"devices.air": "Air",
|
|
"devices.sleep": "Sleep",
|
|
"nav.nightMode": "Night mode",
|
|
"nav.homeAssistant": "Home Assistant / Sensors",
|
|
"night.eyebrow": "Comfort",
|
|
"night.description": "Configure quieter thermostat behavior for sleeping hours without mixing it with application settings.",
|
|
"night.saveHint": "Save night-mode changes.",
|
|
"homeAssistant.eyebrow": "Integration",
|
|
"homeAssistant.description": "Connection, temperature sensors, friendly aliases and access tokens for the Home Assistant integration.",
|
|
"homeAssistant.saveHint": "Save Home Assistant and sensor changes.",
|
|
"notifications.title": "Notifications",
|
|
"notifications.hint": "Send important events or only problems/anomalies.",
|
|
"notifications.enable": "Enable notifications",
|
|
"notifications.mode": "Mode",
|
|
"notifications.problems": "Errors and anomalies only",
|
|
"notifications.important": "Important events + problems",
|
|
"notifications.provider": "Provider",
|
|
"notifications.pushoverToken": "Pushover application token",
|
|
"notifications.pushoverUser": "Pushover user/group key",
|
|
"notifications.slackWebhook": "Slack incoming webhook",
|
|
"notifications.discordWebhook": "Discord webhook",
|
|
"notifications.cooldown": "Cooldown (s)",
|
|
"notifications.failureThreshold": "Communication failures before alert",
|
|
"notifications.targetTimeout": "Target not reached timeout (min)",
|
|
"notifications.test": "Send test notification",
|
|
"zones.copyFrom": "Copy thermostat settings from…",
|
|
"zones.copySettings": "Copy settings",
|
|
"automations.preset": "Preset…",
|
|
"automations.presetHot": "High temperature cooling",
|
|
"automations.presetCold": "Low temperature heating",
|
|
"automations.presetMorning": "Morning comfort",
|
|
"automations.presetNightOff": "Night power off",
|
|
"actions.apply": "Apply",
|
|
"logs.level": "Level",
|
|
"logs.category": "Category",
|
|
"logs.all": "All",
|
|
"logs.errors": "Errors",
|
|
"logs.warnings": "Warnings",
|
|
"logs.integrations": "Integrations",
|
|
"logs.systemOther": "System/other",
|
|
"zones.copyDifferent": "Choose a different thermostat profile",
|
|
"zones.copiedFrom": "Thermostat settings copied from {name}",
|
|
"house.noControl": "Do not control",
|
|
"house.powerAllEyebrow": "Global power",
|
|
"house.powerAllTitle": "All air conditioners",
|
|
"house.powerAllHint": "Bulk power control for all units. OFF leaves thermostats locally off until you explicitly turn a thermostat, group or the whole house back on.",
|
|
"house.powerOnAll": "Turn all on",
|
|
"house.powerOffAll": "Turn all off",
|
|
"house.powerOnDone": "All thermostats enabled and ON sent to all units",
|
|
"house.powerOffDone": "All units turned off; thermostats remain locally off",
|
|
"house.powerPartial": "Could not change power on {count} devices",
|
|
"preset.manual": "Manual",
|
|
"nav.groups": "Groups",
|
|
"groups.eyebrow": "Group control",
|
|
"groups.dashboardTitle": "Selected air conditioners",
|
|
"groups.dashboardHint": "Control each group independently: ON activates control of its units, OFF powers the units down and releases group ownership. You can also choose mode, preset, or a custom temperature.",
|
|
"groups.manage": "Manage groups",
|
|
"groups.new": "New group",
|
|
"groups.description": "Combine thermostat zones such as upstairs and downstairs and control only that set. Turning a group on activates its thermostats; turning it off powers its units down and releases group ownership.",
|
|
"groups.group": "Group",
|
|
"groups.namePlaceholder": "Upstairs",
|
|
"groups.members": "Group members",
|
|
"groups.membersHint": "Groups are built from thermostat zones. ON takes control of group members; OFF powers their units down without leaving a group ownership lock.",
|
|
"groups.noMembers": "No members",
|
|
"groups.mixed": "Mixed",
|
|
"groups.followHouse": "Global mode",
|
|
"groups.mode": "Mode",
|
|
"groups.profile": "Profile",
|
|
"groups.masterOff": "",
|
|
"groups.memberCount": "{count} zones",
|
|
"groups.emptyTitle": "No groups yet",
|
|
"groups.emptyText": "Create a group to control selected air conditioners together.",
|
|
"groups.partial": "Group updated, but {count} control operations could not be completed.",
|
|
"groups.controlUpdated": "Group state updated.",
|
|
"groups.noZones": "Create thermostat zones before creating a group.",
|
|
"automations.targetType": "Target type",
|
|
"automations.groupHint": "For a group, Auto means follow the whole-house heating/cooling mode. Group profiles are applied to all member zones.",
|
|
"simulation.openTab": "Open simulator only in new tab",
|
|
"simulation.fullscreen": "Full screen",
|
|
"simulation.exitFullscreen": "Exit full screen",
|
|
"simulation.viewBy": "View by",
|
|
"simulation.unitsView": "Individual units",
|
|
"simulation.groupsView": "Groups",
|
|
"simulation.show": "Show",
|
|
"simulation.allUnits": "All units",
|
|
"simulation.allGroups": "All groups",
|
|
"groups.chooseMember": "Select at least one thermostat zone.",
|
|
"zones.configuration": "Zone configuration",
|
|
"zones.currentStatus": "Current status",
|
|
"zones.controlOnDashboard": "Current control is available in Quick thermostats on the Dashboard.",
|
|
"zones.controlNow": "Control",
|
|
"zones.noGroup": "no group",
|
|
"zones.coolOnly": "Cooling only",
|
|
"zones.heatOnly": "Heating only",
|
|
"zones.manualDeviceControl": "Manual control active",
|
|
"zones.manualDeviceDescription": "Manual control has priority. Automation, schedules and group control for this zone stay paused until you explicitly choose Resume automation.",
|
|
"zones.manualDeviceUntil": "Manual control / remote until {time}",
|
|
"zones.manualDeviceNoBoundary": "Manual control / remote · until resumed",
|
|
"zones.resumeAutomation": "Resume automation",
|
|
"zones.localThermostatControl": "Local thermostat",
|
|
"zones.localThermostatOn": "Local control · on",
|
|
"zones.localThermostatOff": "Local control · off",
|
|
"zones.localThermostatOnDescription": "This zone runs locally regardless of whether group-level control is enabled. Sensor, hysteresis, profile and GREE regulation remain active.",
|
|
"zones.localThermostatOffDescription": "This zone is locally off. After automation is resumed it stays OFF unless a schedule, manual target, temporary session or another explicit control source is active.",
|
|
"zones.unitPowerLocalHint": "Turns this zone's local thermostat on or off; this is not remote-style or direct device control.",
|
|
"zones.localPowerUpdated": "Local thermostat state updated",
|
|
"zones.turnThermostatOn": "Turn thermostat on",
|
|
"zones.turnThermostatOff": "Turn thermostat off",
|
|
"zones.waiting": "Waiting",
|
|
"zones.noMeasurement": "No measurement",
|
|
"zones.localThermostatOffDescriptionTimed": "This zone is locally off. In {time}, automation will resume and start only if an explicit control source is active.",
|
|
"zones.localThermostatResuming": "Timer elapsed — automation is checking for an active control source…",
|
|
"zones.resumeNow": "Resume now",
|
|
"zones.controlOwner": "Control",
|
|
"zones.ownerAutomation": "Automation",
|
|
"zones.ownerLocalThermostat": "Local thermostat",
|
|
"zones.ownerExternal": "Remote / external control",
|
|
"zones.ownerHaDirect": "HA — direct control",
|
|
"zones.ownerWebDirect": "Web — direct control",
|
|
"zones.ownerGlobalOff": "Globally off",
|
|
"zones.ownerSince": "since",
|
|
"zones.ownerResume": "until",
|
|
"zones.lockoutUntil": "lockout until",
|
|
"settings.haSensorStaleAfterMinutes": "Maximum HA sensor reading age (min)",
|
|
"settings.haSensorStaleAfterHint": "If the HA sensor is not updated within this time, the reading is treated as stale. The thermostat falls back to the GREE sensor when available.",
|
|
"zones.quickThermostat": "Quick thermostat",
|
|
"zones.temporaryTitle": "Temporary mode",
|
|
"zones.temporaryActive": "Temporary Quick Thermostat active",
|
|
"zones.temporaryScheduled": "Temporary Quick Thermostat scheduled",
|
|
"zones.temporaryStop": "Finish and return to automation",
|
|
"zones.temporaryTarget": "Quick thermostat temperature",
|
|
"zones.temporaryStartRule": "When to start",
|
|
"zones.temporaryStartNow": "Immediately",
|
|
"zones.temporaryStartDelay": "After a delay",
|
|
"zones.temporaryStartAt": "At a specific date and time",
|
|
"zones.temporaryStartDelayMinutes": "Start in (min)",
|
|
"zones.temporaryStartAtDate": "Start at",
|
|
"zones.temporaryFinishRule": "When to return to automation",
|
|
"zones.temporaryDuration": "After a duration",
|
|
"zones.temporaryUntil": "At a specific date and time",
|
|
"zones.temporaryReached": "When a temperature condition is reached",
|
|
"zones.temporaryStable": "After a temperature condition stays stable",
|
|
"zones.temporaryScheduleBoundary": "At the next schedule transition",
|
|
"zones.temporaryDurationMinutes": "Run time (min)",
|
|
"zones.temporaryUntilDate": "Finish at",
|
|
"zones.temporaryCondition": "Condition",
|
|
"zones.temporaryWithin": "within target ± tolerance",
|
|
"zones.temporaryAtOrBelow": "temperature ≤ target",
|
|
"zones.temporaryAtOrAbove": "temperature ≥ target",
|
|
"zones.temporaryTolerance": "Tolerance °C",
|
|
"zones.temporaryHoldMinutes": "Condition must hold for (min)",
|
|
"zones.temporarySafetyLimit": "Safety limit (min, optional)",
|
|
"zones.temporaryStableHint": "If temperature leaves the condition, the hold countdown resets and starts again after the condition is met again.",
|
|
"zones.temporaryScheduleHint": "Quick Thermostat will finish at the next change of the active schedule entry for this zone.",
|
|
"zones.temporaryStart": "Start temporarily",
|
|
"zones.temporaryUpdate": "Update rules",
|
|
"zones.temporaryShort": "Timed",
|
|
"zones.temporaryStartHint": "Run Quick Thermostat temporarily or until a condition is met.",
|
|
"zones.temporaryOverride": "Temporary · {time}",
|
|
"zones.temporaryWithinShort": "{target}°C ±{tolerance}°C",
|
|
"zones.temporaryAtOrBelowShort": "≤ {target}°C · tol. {tolerance}°C",
|
|
"zones.temporaryAtOrAboveShort": "≥ {target}°C · tol. {tolerance}°C",
|
|
"zones.temporaryHoldingStatus": "Condition met: {condition}. Stability countdown is running.",
|
|
"zones.temporaryWaitingStable": "Waiting for continuous condition: {condition}.",
|
|
"zones.temporaryWaitingReached": "Waiting for condition: {condition}.",
|
|
"zones.temporaryUntilScheduleStatus": "Until the next schedule transition",
|
|
"zones.temporaryTimeStatus": "Until automatic return to automation",
|
|
"zones.temporaryScheduledStatus": "Scheduled start: {time}. Normal automation continues unchanged until then.",
|
|
"zones.temporaryStartingStatus": "Starting Quick Thermostat…",
|
|
"zones.temporaryWaitingMaster": "The session is waiting for MASTER to be enabled and is not consuming active runtime.",
|
|
"zones.temporaryPausedManual": "The session is paused by manual/remote control. Active runtime and condition hold time are not advancing.",
|
|
"zones.temporaryStopped": "Temporary mode finished — automation resumed control",
|
|
"zones.temporaryStarted": "Temporary Quick Thermostat started",
|
|
"zones.temporaryScheduledToast": "Temporary Quick Thermostat has been scheduled",
|
|
"zones.temporaryInvalidStartAt": "Enter a valid start date and time",
|
|
"zones.temporaryInvalidUntil": "Enter a valid finish date and time",
|
|
"zones.temporaryEndAfterStart": "The finish time must be after Quick Thermostat starts",
|
|
"zones.automationToggleHint": "Enables or disables thermostat automation for this zone. This is not temporary control.",
|
|
"dashboard.sections": "Dashboard sections",
|
|
"dashboard.tabMain": "Main",
|
|
"dashboard.tabThermostats": "Thermostats",
|
|
"dashboard.tabManual": "Manual control",
|
|
"dashboard.toolbarWorking": "{active}/{total} running",
|
|
"notifications.alertTypes": "Alert types",
|
|
"notifications.alertTypesHint": "Choose which alerts may be delivered. Thresholds above still define when an applicable alert is raised.",
|
|
"notifications.alertStaleSensor": "Stale Home Assistant sensor readings",
|
|
"notifications.alertSensorErrors": "Other Home Assistant sensor errors",
|
|
"notifications.alertCommunication": "Device communication problems",
|
|
"notifications.alertTargetTimeout": "Target temperature timeout",
|
|
"notifications.alertAutomation": "Automation errors and conflicts",
|
|
"notifications.alertControlErrors": "Thermostat and group control errors",
|
|
"notifications.alertImportantEvents": "Important state changes",
|
|
"notifications.alertOther": "Other warnings and errors",
|
|
"notifications.testSent": "Test notification sent",
|
|
"actions.close": "Close",
|
|
"actions.remove": "Remove",
|
|
"plan.strategySetpoint": "Setpoint",
|
|
"simulation.running": "RUNNING",
|
|
"simulation.idle": "IDLE",
|
|
"logs.info": "Info",
|
|
"logs.days7": "7 days",
|
|
"logs.days14": "14 days",
|
|
"logs.days30": "30 days",
|
|
"logs.days90": "90 days",
|
|
"logs.days180": "180 days",
|
|
"logs.days365": "365 days",
|
|
"history.hoverHint": "Hover or tap for exact values. Drag-select an area to zoom; pinch on mobile. Click legend items to hide or show metrics.",
|
|
"actions.saving": "Saving…",
|
|
"actions.retry": "Retry",
|
|
"auth.connecting": "Connecting…",
|
|
"confirm.discardChanges": "Discard unsaved changes?",
|
|
"status.offlineHint": "Live updates are unavailable. Displayed data may be stale.",
|
|
"validation.required": "This field is required.",
|
|
"validation.url": "Enter a valid http:// or https:// URL.",
|
|
"validation.range": "Enter a value from {min} to {max}.",
|
|
"validation.invalid": "Check this value.",
|
|
"validation.entityId": "Use a Home Assistant entity_id such as sensor.living_room_temperature.",
|
|
"validation.fixFields": "Correct the highlighted fields before saving.",
|
|
"history.legendShow": "Show metric: {name}",
|
|
"history.legendHide": "Hide metric: {name}",
|
|
"history.zoomControls": "Chart zoom",
|
|
"history.zoomOut": "Zoom out",
|
|
"history.zoomReset": "Reset zoom",
|
|
"history.zoomIn": "Zoom in",
|
|
"house.powerOffConfirm": "Turn all air conditioners off? All thermostats will remain locally OFF with no timer. You can later enable an individual thermostat, a group, or the whole house.",
|
|
"zones.temporaryStarting": "Starting…",
|
|
"notifications.applicationTokenPlaceholder": "Application token",
|
|
"notifications.userKeyPlaceholder": "User/group key",
|
|
"settings.testingHa": "Testing…",
|
|
"settings.settingsSections": "Settings sections",
|
|
"settings.applicationSettings": "Application",
|
|
"settings.greeSettings": "GREE",
|
|
"settings.applicationRuntime": "Application runtime",
|
|
"settings.applicationRuntimeHint": "Application-wide behavior that does not change GREE transport or discovery.",
|
|
"settings.simulationModeHint": "When enabled, a prominent simulation warning is shown throughout the application.",
|
|
"settings.greeConnection": "GREE connection",
|
|
"settings.greeConnectionHint": "Controller identity, polling intervals and LAN discovery transport.",
|
|
"settings.systemStatusTitle": "Controller health",
|
|
"settings.systemStateHint": "Application process, control engine, live connection and local runtime status.",
|
|
"settings.controlEngine": "Control engine",
|
|
"settings.ready": "Ready",
|
|
"settings.syncing": "Synchronizing",
|
|
"settings.websocket": "Live connection",
|
|
"settings.httpBind": "HTTP bind",
|
|
"settings.database": "Database",
|
|
"settings.basePath": "Base path",
|
|
"settings.healthy": "Healthy",
|
|
"settings.attention": "Check status",
|
|
"debug.filterAria": "Debug source",
|
|
"debug.all": "All",
|
|
"debug.requests": "Requests",
|
|
"debug.gree": "GREE",
|
|
"debug.emptyRequests": "No HTTP requests captured yet.",
|
|
"debug.emptyGree": "No GREE frames captured yet.",
|
|
"simulation.bannerTitle": "SIMULATION MODE",
|
|
"simulation.bannerText": "Simulation mode is enabled. Treat current states and results as test data.",
|
|
"zones.separateHysteresisHint": "Enable independent hysteresis values for heating and cooling. When disabled, one shared value is used.",
|
|
"groups.customTemperature": "Custom temperature",
|
|
"groups.customTemperatureHint": "Enter the target temperature for every zone in this group.",
|
|
"groups.applyCustomTemperatureHint": "Set this temperature as the manual target for the whole group.",
|
|
"groups.customTemperatureRange": "Group temperature must be between 8 and 30°C.",
|
|
"groups.activeControl": "Group control",
|
|
"groups.customOpenHint": "Open a custom temperature. The group changes only after you press Apply.",
|
|
"zones.ownerGroup": "Group control",
|
|
"zones.waitingLockout": "Waiting — compressor protection",
|
|
"zones.blockedByGroup": "Blocked by disabled group: {group}",
|
|
"zones.waitingStart": "Waiting for the unit to start",
|
|
"zones.waitingGroup": "Waiting — blocked by group: {groups}",
|
|
"zones.runningDemand": "Running",
|
|
"groups.customDraftPending": "Not applied. The group changes profile only after you press Apply.",
|
|
"zones.waitingOffline": "Waiting — unit offline or communication error",
|
|
"zones.waitingDeviceDisabled": "Waiting — device is technically disabled",
|
|
"zones.waitingMode": "Waiting for the unit mode to change",
|
|
"groups.gateOff": "Group off",
|
|
"zones.disabledByGroup": "Disabled by group: {groups}",
|
|
"groups.controlToggle": "Group power",
|
|
"groups.enableControlFirst": "Turn the group on first.",
|
|
"settings.compressorProtection": "Compressor protection",
|
|
"settings.compressorProtectionTime": "Protection time (min)",
|
|
"settings.compressorProtectionHint": "Recommended: 3 minutes. Starts and Heat/Cool changes requested during protection are queued. Open the full list with the Queue button above Thermostats.",
|
|
"zones.compressorQueueTitle": "Waiting for compressor protection",
|
|
"zones.queuedPowerOn": "Queued: power on · {mode} · {temperature}°C",
|
|
"zones.queuedGlobalPowerOn": "Queued: global unit power on",
|
|
"zones.queuedModeChange": "Queued: change mode to {mode} · {temperature}°C",
|
|
"zones.queuedAction": "Queued control task",
|
|
"zones.compressorQueueUntil": "Earliest execution: {time}",
|
|
"zones.afterProtection": "after protection ends",
|
|
"zones.cancelAllQueued": "Cancel all waiting",
|
|
"zones.queuedCancelled": "Queued task cancelled.",
|
|
"zones.noQueuedTask": "There is no queued task to cancel.",
|
|
"zones.queuedCancelledAll": "Cancelled queued tasks: {count}.",
|
|
"zones.queueCancelledStatus": "Protection task cancelled — waiting for a new command",
|
|
"zones.queueOverview": "Queue",
|
|
"zones.queueEyebrow": "Compressor protection",
|
|
"zones.queueTitle": "Command queue",
|
|
"zones.queueHint": "Commands waiting for compressor protection to end. You can cancel a single task or clear the whole queue.",
|
|
"zones.queuePendingLabel": "Waiting tasks",
|
|
"zones.queueEmptyTitle": "The queue is empty",
|
|
"zones.queueEmptyText": "There are no commands waiting for compressor protection to end.",
|
|
"zones.queueReasonProtection": "Compressor protection",
|
|
"zones.queueSource": "Source: {source}",
|
|
"zones.queueSourceGlobal": "Global power",
|
|
"zones.queueRemaining": "Remaining {time}",
|
|
"zones.queueReady": "Ready to execute",
|
|
"zones.queueCancelAllConfirm": "Cancel all tasks ({count}) waiting for compressor protection?"
|
|
}
|
|
}
|