1044 lines
62 KiB
JSON
1044 lines
62 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": "Home Assistant connection, thermostat temperature sources, shared Flow inputs, sensor aliases and integration access.",
|
|
"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. Automation will resume automatically in {time}. After resuming, the zone stays OFF unless a schedule or another explicit control source is active.",
|
|
"zones.groupOffDescriptionTimed": "Group “{group}” is off. Automation will resume automatically in {time}. After resuming, the zone stays OFF unless a schedule or another 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?",
|
|
"nav.flows": "Flow",
|
|
"flow.eyebrow": "Visual logic",
|
|
"flow.new": "New Flow",
|
|
"flow.infoTitle": "One place for schedules and automations",
|
|
"flow.infoText": "Build logic from blocks. GREE Controller translates Flow into generated schedules and automations. Generated entries are read-only outside this editor.",
|
|
"flow.sourceOfTruth": "Flow = source of truth",
|
|
"flow.blocks": "Blocks",
|
|
"flow.defaultDescription": "Visual control logic",
|
|
"flow.compilesAutomatically": "Automatically translated into schedules and automations",
|
|
"flow.openEditor": "Open editor",
|
|
"flow.emptyTitle": "No Flows",
|
|
"flow.emptyText": "Create your first Flow and build the logic from blocks.",
|
|
"flow.editorEyebrow": "Flow editor",
|
|
"flow.namePlaceholder": "Logic name",
|
|
"flow.paletteHint": "Add a block, then connect its output to the next block.",
|
|
"flow.time": "Time",
|
|
"flow.sensors": "Sensors",
|
|
"flow.logic": "Logic",
|
|
"flow.actions": "Actions",
|
|
"flow.emptyCanvas": "Start by adding blocks",
|
|
"flow.emptyCanvasHint": "Put conditions on the left and actions on the right.",
|
|
"flow.interpretation": "Interpretation",
|
|
"flow.selectBlock": "Select a block",
|
|
"flow.selectBlockHint": "Its settings will appear here.",
|
|
"flow.newDefaultName": "New logic",
|
|
"flow.notFound": "Flow not found",
|
|
"flow.connectHere": "Connect here",
|
|
"flow.startConnection": "Start connection",
|
|
"flow.allConditions": "All conditions must match",
|
|
"flow.operator": "Operator",
|
|
"flow.state": "State",
|
|
"flow.value": "Value",
|
|
"flow.andHint": "AND joins multiple branches. All conditions connected upstream of an action must match.",
|
|
"flow.blockSettings": "Block settings",
|
|
"flow.noActionsYet": "Add an action to see the interpreted logic.",
|
|
"flow.always": "Always",
|
|
"flow.compileCount": "{schedules} schedules · {automations} automations",
|
|
"flow.nameRequired": "Enter a Flow name",
|
|
"flow.saved": "Flow saved and translated into executable logic.",
|
|
"flow.deleteConfirm": "Delete Flow “{name}” together with its generated schedules and automations?",
|
|
"flow.deleted": "Flow deleted.",
|
|
"flow.generated": "Generated by Flow",
|
|
"flow.generatedReadOnly": "Generated by Flow — edit only in the Flow editor",
|
|
"flow.anyCondition": "Any condition may match",
|
|
"flow.invertCondition": "Invert condition",
|
|
"flow.orHint": "OR is true when at least one connected branch matches.",
|
|
"flow.notHint": "NOT inverts exactly one connected branch.",
|
|
"flow.and": "and",
|
|
"flow.or": "or",
|
|
"flow.not": "not",
|
|
"flow.node.weekday": "Weekdays",
|
|
"flow.node.timeRange": "Time range",
|
|
"flow.node.dateRange": "Date range",
|
|
"flow.node.outdoorTemperature": "Outdoor temperature",
|
|
"flow.node.deviceTemperature": "Device temperature",
|
|
"flow.node.zoneTemperature": "Zone temperature",
|
|
"flow.node.haState": "HA: state",
|
|
"flow.node.haNumeric": "HA: numeric value",
|
|
"flow.node.and": "AND",
|
|
"flow.node.or": "OR",
|
|
"flow.node.not": "NOT",
|
|
"flow.node.thermostat": "Thermostat",
|
|
"flow.node.greeDevice": "GREE device",
|
|
"flow.node.group": "Group",
|
|
"common.yes": "Yes",
|
|
"common.no": "No",
|
|
"common.loading": "Loading…",
|
|
"flow.import": "Import Flow",
|
|
"flow.export": "Export",
|
|
"flow.exported": "Flow exported.",
|
|
"flow.imported": "Flow imported and compiled.",
|
|
"flow.importFailed": "Flow import failed",
|
|
"flow.templates": "Templates",
|
|
"flow.templateLibrary": "Flow library",
|
|
"flow.templatesHint": "Ready-made layouts create an editable graph using existing zones, devices and groups.",
|
|
"flow.templateReplaceConfirm": "Replace the current blocks with this template?",
|
|
"flow.dryRun": "Dry-run",
|
|
"flow.logs": "Logs",
|
|
"flow.testMode": "Flow diagnostics",
|
|
"flow.simulationTime": "Simulation date and time",
|
|
"flow.runSimulation": "Run simulation",
|
|
"flow.dryRunHint": "Dry-run does not change thermostat, device, group, schedule or automation state.",
|
|
"flow.simulationOverrides": "Sensor overrides",
|
|
"flow.simulationOverridesHint": "Leave blank to use the current application or Home Assistant state.",
|
|
"flow.useLiveValue": "live value",
|
|
"flow.noSimulationOverrides": "This Flow has no sources that need value overrides.",
|
|
"flow.runningSimulation": "Simulating…",
|
|
"flow.simulationFailed": "Simulation failed",
|
|
"flow.compiledPreview": "Compilation: {schedules} schedules · {automations} automations",
|
|
"flow.wouldExecute": "Action would execute",
|
|
"flow.blockedByOwnership": "Blocked by ownership",
|
|
"flow.conditionFalse": "Condition false",
|
|
"flow.blockReason": "Block reason",
|
|
"flow.saveBeforeLogs": "Save the Flow first to view its logs.",
|
|
"flow.noLogs": "No logs for this Flow.",
|
|
"flow.logsFailed": "Could not load Flow logs.",
|
|
"flow.attribute": "Attribute",
|
|
"flow.houseMode": "House mode",
|
|
"flow.field": "Field",
|
|
"flow.node.haAttribute": "HA: attribute",
|
|
"flow.node.houseMode": "House mode",
|
|
"flow.node.deviceState": "Device state",
|
|
"flow.node.zoneState": "Thermostat state",
|
|
"flow.node.constant": "Test constant",
|
|
"flow.template.workday_comfort.title": "Workday comfort",
|
|
"flow.template.workday_comfort.description": "Weekday morning comfort preset for the selected thermostat zone.",
|
|
"flow.template.weather_comfort.title": "Weather-aware comfort",
|
|
"flow.template.weather_comfort.description": "Combines weekday, time and outdoor temperature with AND before thermostat control.",
|
|
"flow.template.smart_demand.title": "Smart demand",
|
|
"flow.template.smart_demand.description": "Complex time, house-mode and outdoor-or-room temperature logic.",
|
|
"flow.template.device_resilience.title": "Only when device is healthy",
|
|
"flow.template.device_resilience.description": "Runs the thermostat only when the device is enabled, online and house mode allows operation.",
|
|
"flow.template.night_group.title": "Night group",
|
|
"flow.template.night_group.description": "Night time + house mode applies sleep preset to a group or zone.",
|
|
"flow.template.ha_window_guard.title": "Open window — stop HVAC",
|
|
"flow.template.ha_window_guard.description": "Home Assistant binary_sensor example: an open window turns the thermostat off. Set the correct entity_id.",
|
|
"flow.node.groupState": "Group state",
|
|
"flow.node.nightMode": "Night mode",
|
|
"flow.nightModeActive": "active according to app settings",
|
|
"flow.nightModeHint": "This condition is true while the Night mode configured in the app is currently active. Use NOT to match time outside Night mode.",
|
|
"flow.template.presence_eco.title": "Presence: comfort / eco",
|
|
"flow.template.presence_eco.description": "Two explicit Home Assistant branches: home enables comfort while not_home selects the away preset. Set the correct person or presence entity_id.",
|
|
"flow.template.frost_guard.title": "Frost protection",
|
|
"flow.template.frost_guard.description": "In heating mode, low outdoor and room temperatures select a safe low thermostat target.",
|
|
"flow.template.nested_guard.title": "Nested OR and NOT guard",
|
|
"flow.template.nested_guard.description": "Weekdays and time + outdoor OR room temperature + NOT open window. An example of a multi-level graph.",
|
|
"flow.template.night_quiet.title": "Night group profile",
|
|
"flow.template.night_quiet.description": "Uses the app Night mode and group state directly to apply the sleep preset.",
|
|
"flow.node.haAvailable": "HA: availability",
|
|
"flow.available": "available",
|
|
"flow.haAvailableHint": "This condition is true only when the Home Assistant entity returns a state other than unknown/unavailable. Connection errors fail closed as false. Useful as a guard before NOT and safety logic.",
|
|
"flow.deviceOptions": "Advanced GREE options",
|
|
"flow.deviceOptionsHint": "These fields use the existing DeviceCommand. Fan/quiet/sleep and dry/fan HVAC modes are blocked on a thermostat-assigned device when they would fight the regulator; use the Thermostat action there instead.",
|
|
"settings.haConnection": "Home Assistant connection",
|
|
"settings.haConnectionHint": "Server address and credentials used by all Home Assistant features.",
|
|
"settings.haThermostatSources": "Thermostat temperature sources",
|
|
"settings.haThermostatSourcesHint": "These settings belong to thermostat and temperature-source logic, not reusable Flow inputs.",
|
|
"flow.listEyebrow": "Your automations",
|
|
"flow.listTitle": "Flow list",
|
|
"flow.listCount": "{count} Flows",
|
|
"flow.quickToggleHint": "Enable or disable the Flow without opening the editor",
|
|
"flow.quickEnabled": "Flow enabled",
|
|
"flow.quickDisabled": "Flow disabled",
|
|
"flow.selectAll": "Select all",
|
|
"flow.clearSelection": "Clear selection",
|
|
"flow.selectedCount": "Selected: {count}",
|
|
"flow.node.sharedInput": "Shared input",
|
|
"flow.sharedInputMissing": "Shared input missing",
|
|
"flow.sharedInputTitle": "Shared Flow input",
|
|
"flow.sharedInputEyebrow": "Reusable data",
|
|
"flow.sharedInputType": "Source type",
|
|
"flow.sharedInputAdd": "Add input",
|
|
"flow.sharedInputsTitle": "Shared Flow inputs",
|
|
"flow.sharedInputsHint": "Define constants, states and sensors once, then reuse them in many Flows. Changes here apply to every Flow that references the input.",
|
|
"flow.sharedInputsEmpty": "No shared inputs",
|
|
"flow.sharedInputsEmptyHint": "Add a constant, Home Assistant state, or another shared source for multiple Flows.",
|
|
"flow.sharedInputNodeHint": "This block uses the central shared-input configuration.",
|
|
"flow.sharedInputNodeEmptyHint": "Add a shared input in Home Assistant / Sensors first.",
|
|
"flow.sharedInputNameRequired": "Enter a shared input name.",
|
|
"flow.sharedInputDeleteConfirm": "Delete shared input “{name}”?",
|
|
"flow.sharedInputDeleteUsed": "Input “{name}” is used by {count} Flows. Those conditions will evaluate false after deletion. Delete it anyway?",
|
|
"flow.templateCategory.comfort": "Comfort",
|
|
"flow.templateCategory.comfort.hint": "Everyday comfort scenarios based on time, weather and house mode.",
|
|
"flow.templateCategory.energy": "Energy & cost",
|
|
"flow.templateCategory.energy.hint": "Reduce consumption during absence, expensive energy periods or high household load.",
|
|
"flow.templateCategory.safety": "Protection & safety",
|
|
"flow.templateCategory.safety.hint": "Guards for frost, overheating, humidity and open-window operation.",
|
|
"flow.templateCategory.night": "Night",
|
|
"flow.templateCategory.night.hint": "Quieter operation, sleep profiles and bedroom conditions.",
|
|
"flow.templateCategory.reliability": "Reliability",
|
|
"flow.templateCategory.reliability.hint": "Flows resilient to unavailable sensors, offline devices and disabled thermostats.",
|
|
"flow.templateCategory.advanced": "Advanced",
|
|
"flow.templateCategory.advanced.hint": "Nested AND/OR/NOT logic, multiple rooms and Home Assistant states.",
|
|
"flow.template.morning_boost.title": "Cold-weather morning boost",
|
|
"flow.template.morning_boost.description": "On workday mornings, only in heating mode and during cold weather, raises the target to 22.5°C.",
|
|
"flow.template.weekend_comfort.title": "Weekend comfort",
|
|
"flow.template.weekend_comfort.description": "Keeps daytime comfort on Saturday and Sunday while the house climate mode is not off.",
|
|
"flow.template.energy_price_eco.title": "Expensive energy + nobody home",
|
|
"flow.template.energy_price_eco.description": "When energy is expensive and nobody is home, switches the selected zone to an economical away profile.",
|
|
"flow.template.peak_power_guard.title": "Peak power guard",
|
|
"flow.template.peak_power_guard.description": "Turns HVAC off when household power draw exceeds the configured threshold while climate control is active.",
|
|
"flow.template.mild_weather_eco.title": "Mild weather — HVAC off",
|
|
"flow.template.mild_weather_eco.description": "When outdoor temperature is within a comfortable band and the window is closed, turns HVAC off.",
|
|
"flow.template.unoccupied_shutdown.title": "Shut down while away",
|
|
"flow.template.unoccupied_shutdown.description": "During daytime hours, turns off a group or zone when the selected person is away.",
|
|
"flow.template.humidity_guard.title": "High humidity cooling",
|
|
"flow.template.humidity_guard.description": "With high humidity, occupancy and cooling house mode, applies moderate cooling.",
|
|
"flow.template.overheat_guard.title": "Overheat guard",
|
|
"flow.template.overheat_guard.description": "If a zone is very warm, house mode is cooling and the window is closed, starts protective cooling.",
|
|
"flow.template.window_available_guard.title": "Window availability + open state",
|
|
"flow.template.window_available_guard.description": "Turns HVAC off only when the window sensor is available and reports open, avoiding false reactions to unavailable.",
|
|
"flow.template.sleep_temperature_guard.title": "Night cooling only when needed",
|
|
"flow.template.sleep_temperature_guard.description": "In night mode, cools only when room temperature is above the threshold and the house is in cooling mode.",
|
|
"flow.template.bedroom_window_night.title": "Bedroom: night + closed window",
|
|
"flow.template.bedroom_window_night.description": "Combines night mode with NOT open-window logic so the sleep profile runs only with a closed window.",
|
|
"flow.template.sensor_availability_guard.title": "Cooling with sensor validation",
|
|
"flow.template.sensor_availability_guard.description": "Checks HA sensor availability first, then temperature and house mode before starting cooling.",
|
|
"flow.template.offline_safe_off.title": "Offline device safe-off",
|
|
"flow.template.offline_safe_off.description": "When a device is offline while its thermostat remains active, issues a conservative off command with a long cooldown.",
|
|
"flow.template.thermostat_enabled_guard.title": "Control only an active thermostat",
|
|
"flow.template.thermostat_enabled_guard.description": "Requires an enabled zone, active demand and a non-off house mode before the action executes.",
|
|
"flow.template.occupancy_weather_matrix.title": "Occupancy + weather + window",
|
|
"flow.template.occupancy_weather_matrix.description": "Comfort runs only when someone is home, outdoor or room demand exists, and the window is not open.",
|
|
"flow.template.dual_threshold_control.title": "Dual threshold heating/cooling",
|
|
"flow.template.dual_threshold_control.description": "Two independent branches heat below the lower threshold and cool above the upper threshold.",
|
|
"flow.template.multi_room_group_guard.title": "Multiple rooms → one group",
|
|
"flow.template.multi_room_group_guard.description": "If either of two zones is too warm and house mode is cooling, starts a shared group or zone.",
|
|
"flow.template.ha_attribute_mode_guard.title": "HA attribute + window + availability",
|
|
"flow.template.ha_attribute_mode_guard.description": "Reads hvac_action, entity availability and window state to stop HVAC only when the data is trustworthy.",
|
|
"flow.templateCategory.home_assistant": "Home Assistant / heat sources",
|
|
"flow.templateCategory.home_assistant.hint": "Coordinate GREE with a gas boiler, external heat source, heating demand and temperatures read from Home Assistant.",
|
|
"flow.template.ha_gas_heating_off.title": "Gas boiler heating → turn GREE off",
|
|
"flow.template.ha_gas_heating_off.description": "Reads hvac_action from climate.gas_boiler. When HA reports heating and the entity is available, the selected GREE zone is turned off.",
|
|
"flow.template.ha_gas_heating_boost.title": "Gas boiler heating → GREE heat boost",
|
|
"flow.template.ha_gas_heating_boost.description": "When the gas boiler is actively heating, the room is below 20°C and house mode is heat, GREE assists with a 23.5°C target.",
|
|
"flow.template.ha_gas_heating_reduce.title": "Boiler heating + room warm → reduce GREE",
|
|
"flow.template.ha_gas_heating_reduce.description": "When gas heat is already active and the zone reaches at least 21°C, lowers the GREE target to 18°C so the heat sources do not fight each other.",
|
|
"flow.template.ha_gas_backup_heat.title": "Gas not heating + room cold → GREE backup",
|
|
"flow.template.ha_gas_backup_heat.description": "When the boiler entity is available but does not report heating and the room drops below 19°C, GREE provides backup heat to 22°C.",
|
|
"flow.template.ha_external_heat_source_off.title": "Other heat source ON → turn GREE off",
|
|
"flow.template.ha_external_heat_source_off.description": "Generic fireplace, furnace or other source preset. binary_sensor.external_heat_source = on turns the GREE group or zone off.",
|
|
"flow.template.ha_external_heat_source_assist.title": "Other heat source ON → assist with GREE",
|
|
"flow.template.ha_external_heat_source_assist.description": "When an external heat source is running but the room is still below 20°C, GREE assists in heat mode with a 23°C target.",
|
|
"flow.template.ha_heating_demand_follow.title": "Follow Home Assistant heating demand",
|
|
"flow.template.ha_heating_demand_follow.description": "binary_sensor.heating_demand = on starts GREE heating to 22.5°C while the house is in heat mode.",
|
|
"flow.template.ha_boiler_supply_boost.title": "Hot boiler supply + cold room → boost",
|
|
"flow.template.ha_boiler_supply_boost.description": "Reads sensor.boiler_supply_temperature. Above 45°C with a cold room, GREE is set to 23.5°C.",
|
|
"flow.template.ha_thermostat_idle_fallback.title": "Gas thermostat idle → GREE fallback heat",
|
|
"flow.template.ha_thermostat_idle_fallback.description": "If climate.gas_boiler is available, reports hvac_action=idle and the room falls below 19°C, GREE heats to 21.5°C."
|
|
}
|
|
}
|