This commit is contained in:
Mateusz Gruszczyński
2026-09-01 22:20:10 +02:00
parent 1cb62c8d0b
commit 16e0d94564
47 changed files with 2565 additions and 117 deletions
+134 -1
View File
@@ -809,6 +809,139 @@
"zones.queueSourceGlobal": "Global power",
"zones.queueRemaining": "Remaining {time}",
"zones.queueReady": "Ready to execute",
"zones.queueCancelAllConfirm": "Cancel all tasks ({count}) waiting for compressor protection?"
"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."
}
}
+134 -1
View File
@@ -809,6 +809,139 @@
"zones.queueSourceGlobal": "Zasilanie globalne",
"zones.queueRemaining": "Pozostało {time}",
"zones.queueReady": "Gotowe do wykonania",
"zones.queueCancelAllConfirm": "Anulować wszystkie oczekujące zadania ({count}) ochrony sprężarki?"
"zones.queueCancelAllConfirm": "Anulować wszystkie oczekujące zadania ({count}) ochrony sprężarki?",
"nav.flows": "Flow",
"flow.eyebrow": "Logika wizualna",
"flow.new": "Nowy Flow",
"flow.infoTitle": "Jedno miejsce dla harmonogramów i automatyzacji",
"flow.infoText": "Układasz logikę z bloków. GREE Controller tłumaczy Flow na generowane harmonogramy i automatyzacje. Wygenerowane wpisy są tylko do odczytu poza tym edytorem.",
"flow.sourceOfTruth": "Flow = źródło logiki",
"flow.blocks": "Bloki",
"flow.defaultDescription": "Wizualna logika sterowania",
"flow.compilesAutomatically": "Automatycznie tłumaczone na harmonogramy i automatyzacje",
"flow.openEditor": "Otwórz edytor",
"flow.emptyTitle": "Brak Flow",
"flow.emptyText": "Utwórz pierwszy przepływ i ułóż logikę z bloków.",
"flow.editorEyebrow": "Edytor Flow",
"flow.namePlaceholder": "Nazwa logiki",
"flow.paletteHint": "Dodaj blok, a potem połącz jego wyjście z kolejnym blokiem.",
"flow.time": "Czas",
"flow.sensors": "Czujniki",
"flow.logic": "Logika",
"flow.actions": "Akcje",
"flow.emptyCanvas": "Zacznij od dodania bloków",
"flow.emptyCanvasHint": "Warunki układaj po lewej, akcje po prawej.",
"flow.interpretation": "Interpretacja",
"flow.selectBlock": "Wybierz blok",
"flow.selectBlockHint": "Tutaj pojawią się jego ustawienia.",
"flow.newDefaultName": "Nowa logika",
"flow.notFound": "Nie znaleziono Flow",
"flow.connectHere": "Połącz tutaj",
"flow.startConnection": "Rozpocznij połączenie",
"flow.allConditions": "Wszystkie warunki muszą być spełnione",
"flow.operator": "Operator",
"flow.state": "Stan",
"flow.value": "Wartość",
"flow.andHint": "AND łączy kilka gałęzi. Wszystkie warunki doprowadzone do akcji muszą być spełnione.",
"flow.blockSettings": "Ustawienia bloku",
"flow.noActionsYet": "Dodaj akcję, aby zobaczyć interpretację logiki.",
"flow.always": "Zawsze",
"flow.compileCount": "{schedules} harm. · {automations} autom.",
"flow.nameRequired": "Podaj nazwę Flow",
"flow.saved": "Flow zapisany i przetłumaczony na logikę wykonawczą.",
"flow.deleteConfirm": "Usunąć Flow „{name}” razem z wygenerowanymi harmonogramami i automatyzacjami?",
"flow.deleted": "Flow usunięty.",
"flow.generated": "Wygenerowane przez Flow",
"flow.generatedReadOnly": "Wygenerowane przez Flow — edycja tylko w edytorze Flow",
"flow.anyCondition": "Wystarczy jeden warunek",
"flow.invertCondition": "Odwrócenie warunku",
"flow.orHint": "OR zwraca prawdę, gdy spełniona jest co najmniej jedna podłączona gałąź.",
"flow.notHint": "NOT odwraca wynik dokładnie jednej podłączonej gałęzi.",
"flow.and": "i",
"flow.or": "lub",
"flow.not": "nie",
"flow.node.weekday": "Dni tygodnia",
"flow.node.timeRange": "Przedział godzin",
"flow.node.dateRange": "Zakres dat",
"flow.node.outdoorTemperature": "Temperatura zewn.",
"flow.node.deviceTemperature": "Temperatura urządzenia",
"flow.node.zoneTemperature": "Temperatura strefy",
"flow.node.haState": "HA: stan",
"flow.node.haNumeric": "HA: wartość",
"flow.node.and": "AND",
"flow.node.or": "OR",
"flow.node.not": "NOT",
"flow.node.thermostat": "Termostat",
"flow.node.greeDevice": "Urządzenie GREE",
"flow.node.group": "Grupa",
"common.yes": "Tak",
"common.no": "Nie",
"common.loading": "Ładowanie…",
"flow.import": "Importuj Flow",
"flow.export": "Eksportuj",
"flow.exported": "Flow wyeksportowany.",
"flow.imported": "Flow zaimportowany i skompilowany.",
"flow.importFailed": "Nie udało się zaimportować Flow",
"flow.templates": "Presety",
"flow.templateLibrary": "Biblioteka Flow",
"flow.templatesHint": "Gotowe układy tworzą edytowalny graf z użyciem istniejących stref, urządzeń i grup.",
"flow.templateReplaceConfirm": "Zastąpić obecne bloki wybranym presetem?",
"flow.dryRun": "Dry-run",
"flow.logs": "Logi",
"flow.testMode": "Diagnostyka Flow",
"flow.simulationTime": "Data i godzina symulacji",
"flow.runSimulation": "Uruchom symulację",
"flow.dryRunHint": "Dry-run nie zmienia stanu termostatów, urządzeń, grup, harmonogramów ani automatyzacji.",
"flow.simulationOverrides": "Nadpisania czujników",
"flow.simulationOverridesHint": "Zostaw puste, aby użyć aktualnego stanu aplikacji lub Home Assistant.",
"flow.useLiveValue": "aktualna wartość",
"flow.noSimulationOverrides": "Ten Flow nie ma źródeł, które wymagają nadpisania wartości.",
"flow.runningSimulation": "Symulacja…",
"flow.simulationFailed": "Symulacja nie powiodła się",
"flow.compiledPreview": "Kompilacja: {schedules} harm. · {automations} autom.",
"flow.wouldExecute": "Akcja wykonałaby się",
"flow.blockedByOwnership": "Zablokowane przez ownership",
"flow.conditionFalse": "Warunek niespełniony",
"flow.blockReason": "Powód blokady",
"flow.saveBeforeLogs": "Najpierw zapisz Flow, aby zobaczyć jego logi.",
"flow.noLogs": "Brak logów dla tego Flow.",
"flow.logsFailed": "Nie udało się pobrać logów.",
"flow.attribute": "Atrybut",
"flow.houseMode": "Tryb domu",
"flow.field": "Pole",
"flow.node.haAttribute": "HA: atrybut",
"flow.node.houseMode": "Tryb domu",
"flow.node.deviceState": "Stan urządzenia",
"flow.node.zoneState": "Stan termostatu",
"flow.node.constant": "Stała testowa",
"flow.template.workday_comfort.title": "Komfort w dni robocze",
"flow.template.workday_comfort.description": "Pon.pt. rano uruchamia preset komfortu w wybranej strefie.",
"flow.template.weather_comfort.title": "Komfort zależny od pogody",
"flow.template.weather_comfort.description": "Łączy dzień, godzinę i temperaturę zewnętrzną przez AND przed sterowaniem termostatem.",
"flow.template.smart_demand.title": "Inteligentne zapotrzebowanie",
"flow.template.smart_demand.description": "Złożona logika czasu, trybu domu i alternatywy temperatury zewnętrznej lub pokojowej.",
"flow.template.device_resilience.title": "Sterowanie tylko przy sprawnym urządzeniu",
"flow.template.device_resilience.description": "Uruchamia termostat tylko gdy urządzenie jest włączone, online i tryb domu pozwala na pracę.",
"flow.template.night_group.title": "Noc dla grupy",
"flow.template.night_group.description": "Nocny przedział czasu + tryb domu sterują presetem sleep dla grupy lub strefy.",
"flow.template.ha_window_guard.title": "Otwarte okno — wyłącz HVAC",
"flow.template.ha_window_guard.description": "Przykład integracji z binary_sensor Home Assistant: otwarte okno wyłącza termostat. Ustaw właściwy entity_id.",
"flow.node.groupState": "Stan grupy",
"flow.node.nightMode": "Tryb nocny",
"flow.nightModeActive": "aktywny zgodnie z ustawieniami aplikacji",
"flow.nightModeHint": "Warunek jest prawdziwy, gdy skonfigurowany w aplikacji Tryb nocny jest aktualnie aktywny. Użyj NOT, aby sprawdzić czas poza trybem nocnym.",
"flow.template.presence_eco.title": "Obecność: komfort / eco",
"flow.template.presence_eco.description": "Dwie jawne gałęzie Home Assistant: stan home włącza komfort, a not_home ustawia preset away. Ustaw właściwy entity_id osoby lub czujnika obecności.",
"flow.template.frost_guard.title": "Ochrona przeciwzamrożeniowa",
"flow.template.frost_guard.description": "W trybie grzania, przy niskiej temperaturze zewnętrznej i pokojowej, ustawia bezpieczny niski cel termostatu.",
"flow.template.nested_guard.title": "Złożony warunek z OR i NOT",
"flow.template.nested_guard.description": "Dni i godziny + temperatura zewnętrzna LUB pokojowa + NOT dla otwartego okna. Przykład wielopoziomowego grafu.",
"flow.template.night_quiet.title": "Nocny profil grupy",
"flow.template.night_quiet.description": "Korzysta bezpośrednio z istniejącego Trybu nocnego aplikacji i stanu grupy, aby zastosować preset sleep.",
"flow.node.haAvailable": "HA: dostępność",
"flow.available": "dostępna",
"flow.haAvailableHint": "Warunek jest prawdziwy tylko wtedy, gdy encja Home Assistant odpowiada stanem innym niż unknown/unavailable. Błąd połączenia jest traktowany bezpiecznie jako false. Przydatne jako bramka przed NOT i logiką bezpieczeństwa.",
"flow.deviceOptions": "Zaawansowane opcje GREE",
"flow.deviceOptionsHint": "Te pola używają istniejącego DeviceCommand. Fan/quiet/sleep oraz tryby dry/fan są blokowane dla urządzenia przypisanego do termostatu, gdy mogłyby walczyć z regulatorem; użyj wtedy akcji Termostat."
}
}