From dbd53f8d14891692de3426153420c86e2a949723 Mon Sep 17 00:00:00 2001 From: HomeAssistant Azure Date: Thu, 22 Oct 2020 00:32:19 +0000 Subject: [PATCH 001/125] [ci skip] Translation update --- translations/frontend/de.json | 26 ++++++++++--- translations/frontend/en.json | 12 +++++- translations/frontend/es.json | 8 ++-- translations/frontend/ko.json | 2 +- translations/frontend/nl.json | 55 +++++++++++++++++++++----- translations/frontend/pl.json | 62 +++++++++++++++--------------- translations/frontend/zh-Hans.json | 2 +- 7 files changed, 115 insertions(+), 52 deletions(-) diff --git a/translations/frontend/de.json b/translations/frontend/de.json index 450f85d629..9d3b7096c7 100644 --- a/translations/frontend/de.json +++ b/translations/frontend/de.json @@ -778,6 +778,9 @@ }, "platform_not_loaded": "Die {platform} -Komponente ist nicht geladen. Füge sie bitte deiner Konfiguration hinzu. Entweder durch Hinzufügen von 'default_config:' oder ''{platform}:''.", "required_error_msg": "Dieses Feld ist erforderlich", + "timer": { + "duration": "Dauer" + }, "yaml_not_editable": "Die Einstellungen dieser Entität können nicht über die Benutzeroberfläche bearbeitet werden. Nur über die Benutzeroberfläche eingerichtete Entitäten können über die Benutzeroberfläche konfiguriert werden." }, "image_cropper": { @@ -1504,18 +1507,24 @@ "add_prompt": "Mit diesem Gerät wurden noch keine {name} hinzugefügt. Du kannst eins hinzufügen, indem du auf den + Knopf drückst.", "automation": { "actions": { - "caption": "Wenn etwas ausgelöst wird ..." + "caption": "Wenn etwas ausgelöst wird ...", + "no_actions": "Keine Aktionen" }, "automations": "Automatisierungen", "conditions": { - "caption": "Tue nur dann etwas, wenn....." + "caption": "Tue nur dann etwas, wenn.....", + "no_conditions": "Keine Bedingungen", + "unknown_condition": "Unbekannte Bedingung" }, "create": "Automatisierung mit Gerät erstellen", "no_automations": "Keine Automatisierungen", "no_device_automations": "Für dieses Gerät sind keine Automatisierungen verfügbar.", "triggers": { - "caption": "Tue etwas, wenn..." - } + "caption": "Tue etwas, wenn...", + "no_triggers": "Keine Auslöser", + "unknown_trigger": "Unbekannter Auslöser" + }, + "unknown_automation": "Unbekannte Automatisierung" }, "cant_edit": "Du kannst nur Elemente bearbeiten, die in der Benutzeroberfläche erstellt wurden.", "caption": "Geräte", @@ -1638,7 +1647,8 @@ "input_datetime": "Datum und/oder Uhrzeit", "input_number": "Nummer", "input_select": "Dropdown", - "input_text": "Text" + "input_text": "Text", + "timer": "Timer" } }, "info": { @@ -1861,6 +1871,9 @@ }, "navigation": { "network": "Netzwerk", + "node": { + "config": "Konfig" + }, "select_instance": "Instanz auswählen" }, "network_status": { @@ -1879,6 +1892,9 @@ "network": { "header": "Netzwerkverwaltung" }, + "node_metadata": { + "product_manual": "Produkthandbuch" + }, "node_query_stages": { "associations": "Aktualisiert die verbundenen Gruppen und Mitgliedschaften" }, diff --git a/translations/frontend/en.json b/translations/frontend/en.json index 55a74a33c6..23584bfa90 100644 --- a/translations/frontend/en.json +++ b/translations/frontend/en.json @@ -695,6 +695,11 @@ }, "service-picker": { "service": "Service" + }, + "user-picker": { + "add_user": "Add user", + "no_user": "No user", + "remove_user": "Remove user" } }, "dialogs": { @@ -947,6 +952,7 @@ }, "notification_toast": { "connection_lost": "Connection lost. Reconnecting…", + "dismiss": "Dismiss", "service_call_failed": "Failed to call service {service}.", "started": "Home Assistant has started!", "starting": "Home Assistant is starting, not everything will be available until it is finished.", @@ -1200,6 +1206,9 @@ "trigger": "Trigger" }, "event": { + "context_user_pick": "Add user", + "context_user_picked": "User firing event", + "context_users": "Limit to events triggered by", "event_data": "Event data", "event_type": "Event type", "label": "Event" @@ -2941,7 +2950,8 @@ "exit_edit_mode": "Exit UI edit mode", "help": "Help", "refresh": "Refresh", - "reload_resources": "Reload resources" + "reload_resources": "Reload resources", + "start_conversation": "Start conversation" }, "reload_lovelace": "Reload UI", "reload_resources": { diff --git a/translations/frontend/es.json b/translations/frontend/es.json index b094cd4f47..98136c67e3 100644 --- a/translations/frontend/es.json +++ b/translations/frontend/es.json @@ -718,9 +718,9 @@ "enabled_description": "Las entidades deshabilitadas no se agregarán a Home Assistant.", "enabled_label": "Activar entidad", "entity_id": "ID de la entidad", - "icon": "Reemplazar Icono", + "icon": "Icono", "icon_error": "Los iconos deben tener el formato 'prefijo:nombreicono', por ejemplo, 'mdi:home'", - "name": "Cambio de nombre", + "name": "Nombre", "note": "Nota: puede que esto no funcione todavía con todas las integraciones", "unavailable": "Esta entidad no está disponible actualmente.", "update": "Actualizar" @@ -1547,8 +1547,8 @@ "cant_edit": "Solo puedes editar los elementos que se crean en la interfaz de usuario.", "caption": "Dispositivos", "confirm_delete": "¿Estás seguro de que quieres eliminar este dispositivo?", - "confirm_rename_entity_ids": "¿También quieres cambiar el nombre de los identificadores de entidad de tus entidades?", - "confirm_rename_entity_ids_warning": "Esto no cambiará ninguna configuración (como automatizaciones, scripts, escenas, Lovelace) que estén utilizando actualmente estas entidades, tendrás que actualizarlas tú mismo.", + "confirm_rename_entity_ids": "¿También quieres renombrar los IDs de entidad de tus entidades?", + "confirm_rename_entity_ids_warning": "Esto no cambiará ninguna configuración (como automatizaciones, scripts, escenas, paneles de control) que estén utilizando actualmente estas entidades. Tendrás que actualizarlas tú mismo para utilizar los nuevos IDs de entidad.", "data_table": { "area": "Área", "battery": "Batería", diff --git a/translations/frontend/ko.json b/translations/frontend/ko.json index 4824a5d5e7..3970f6c91d 100644 --- a/translations/frontend/ko.json +++ b/translations/frontend/ko.json @@ -1830,7 +1830,7 @@ }, "node": { "button": "노드 세부 정보", - "not_found": "노드를 찾을 수 없습니다." + "not_found": "노드를 찾을 수 없습니다" }, "nodes_table": { "failed": "실패함", diff --git a/translations/frontend/nl.json b/translations/frontend/nl.json index 2016b5133f..8977b0f643 100644 --- a/translations/frontend/nl.json +++ b/translations/frontend/nl.json @@ -718,9 +718,9 @@ "enabled_description": "Uitgeschakelde entiteiten zullen niet aan Home Assistant worden toegevoegd", "enabled_label": "Schakel entiteit in", "entity_id": "Entiteits-ID", - "icon": "Overschrijf pictogram", + "icon": "Pictogram", "icon_error": "Pictogrammen moeten de notatie 'prefix:pictogramnaam' hebben, bijvoorbeeld 'mdi:home'", - "name": "Naam overschrijven", + "name": "Naam", "note": "Opmerking: dit werkt mogelijk nog niet met alle integraties.", "unavailable": "Deze entiteit is momenteel niet beschikbaar.", "update": "Bijwerken" @@ -737,6 +737,13 @@ "ok": "OK" }, "helper_settings": { + "counter": { + "initial": "Beginwaarde", + "maximum": "Maximale waarde", + "minimum": "Minimale waarde", + "restore": "Herstel de laatst bekende waarde wanneer Home Assistant start", + "step": "Stapgrootte" + }, "generic": { "icon": "Pictogram", "name": "Naam" @@ -772,6 +779,9 @@ }, "platform_not_loaded": "De {platform} integratie is niet geladen. Voeg het aan je configuratie toe door 'default_config:' of ''{platform}:'' toe te voegen.", "required_error_msg": "Dit veld is verplicht", + "timer": { + "duration": "Duur" + }, "yaml_not_editable": "De instellingen van deze entiteit kunnen niet worden bewerkt vanuit de gebruikersinterface. Alleen entiteiten die zijn ingesteld vanuit de gebruikersinterface, kunnen worden geconfigureerd vanuit de gebruikersinterface." }, "image_cropper": { @@ -931,6 +941,7 @@ "notification_drawer": { "click_to_configure": "Klik op de knop om {entity} te configureren", "close": "Sluiten", + "dismiss_all": "Alles afkeuren", "empty": "Geen notificaties", "title": "Notificaties" }, @@ -1513,24 +1524,31 @@ "add_prompt": "Er is nog geen {name} toegevoegd met dit apparaat. U kunt er één toevoegen door op de + knop hierboven te klikken.", "automation": { "actions": { - "caption": "Wanneer iets wordt getriggerd..." + "caption": "Wanneer iets wordt getriggerd...", + "no_actions": "Geen acties", + "unknown_action": "Onbekende actie" }, "automations": "Automatiseringen", "conditions": { - "caption": "Doe alleen iets als..." + "caption": "Doe alleen iets als...", + "no_conditions": "Geen toestanden", + "unknown_condition": "Onbekende toestand" }, "create": "Maak een automatisering aan met het apparaat", "no_automations": "Geen automatiseringen", "no_device_automations": "Er zijn geen automatiseringen beschikbaar voor dit apparaat.", "triggers": { - "caption": "Doe iets wanneer..." - } + "caption": "Doe iets wanneer...", + "no_triggers": "Geen triggers", + "unknown_trigger": "Onbekende trigger" + }, + "unknown_automation": "Onbekende automatisering" }, "cant_edit": "Je kunt alleen items bewerken die in de gebruikersinterface zijn gemaakt.", "caption": "Apparaten", "confirm_delete": "Weet je zeker dat je dit apparaat wilt verwijderen?", "confirm_rename_entity_ids": "Wil je ook de entiteits-ID's van je entiteiten hernoemen?", - "confirm_rename_entity_ids_warning": "Dit zal geen enkele configuratie veranderen (zoals automatiseringen, scripts, scènes, Lovelace) die momenteel deze entiteiten gebruikt, je zult ze zelf moeten updaten.", + "confirm_rename_entity_ids_warning": "Dit zal geen enkele configuratie wijzigen (zoals automatiseringen, scripts, scènes, dashboards) die momenteel deze entiteiten gebruikt! U moet ze zelf bijwerken om de nieuwe entiteits-ID's te gebruiken!", "data_table": { "area": "Gebied", "battery": "Batterij", @@ -1643,11 +1661,13 @@ "no_helpers": "Er zijn geen helpers gevonden!" }, "types": { + "counter": "Teller", "input_boolean": "Schakelaar", "input_datetime": "Datum en/of tijd", "input_number": "Numeriek", "input_select": "Keuzelijst", - "input_text": "Tekst" + "input_text": "Tekst", + "timer": "Timer" } }, "info": { @@ -1866,6 +1886,8 @@ "network": "Netwerk", "node_id": "Knooppunt-ID", "ozw_instance": "Instantie van OpenZWave", + "query_stage": "Vraagfase", + "wakeup_instructions": "Wekinstructies", "zwave": "Z-Wave" }, "device_info": { @@ -1875,6 +1897,10 @@ }, "navigation": { "network": "Netwerk", + "node": { + "config": "Configuratie", + "dashboard": "Dashboard" + }, "nodes": "Knooppunten", "select_instance": "Instantie selecteren" }, @@ -1903,6 +1929,15 @@ "introduction": "Beheer netwerkbrede functies.", "node_count": "{count} knooppunten" }, + "node_config": { + "header": "Node Configuratie", + "help_source": "Configuratieparameterbeschrijvingen en helptekst worden geleverd door het OpenZWave-project.", + "introduction": "Beheer de verschillende configuratieparameters voor een Z-Wave-Node.", + "wakeup_help": "Batterijgevoede Nodes moeten wakker zijn om hun configuratie te wijzigen. Als de Node niet wakker is, zal OpenZWave proberen de configuratie van de Node bij te werken de volgende keer dat het ontwaakt, wat meerdere uren (of dagen) later kan zijn. Volg deze stappen om uw apparaat uit de slaapstand te halen:" + }, + "node_metadata": { + "product_manual": "Producthandleiding" + }, "node_query_stages": { "associations": "Associatiegroepen en lidmaatschappen verversen", "cacheload": "Informatie laden uit het OpenZWave-cachebestand. Knooppunten met batterij blijven in dit stadium totdat het knooppunt ontwaakt.", @@ -2162,6 +2197,7 @@ "last_scanned": "Laatst gescand", "name": "Naam" }, + "learn_more": "Meer informatie over tags", "never_scanned": "Nooit gescand", "no_tags": "Geen tags", "write": "Schrijf" @@ -2498,6 +2534,7 @@ "no_listeners": "Deze template luistert niet naar gebeurtenissen met statuswijziging en wordt niet automatisch bijgewerkt.", "reset": "Resetten naar demosjabloon", "template_extensions": "Home Assistant sjabloon extensiesHome Assistant", + "time": "Deze sjabloon wordt elke 60 seconden bijgewerkt na de laatste statuswijziging.", "title": "Sjablonen", "unknown_error_template": "Onbekende fout bij weergave sjabloon" } @@ -2848,7 +2885,7 @@ "migrate": { "header": "Configuratie incompatibel", "migrate": "Configuratie migreren", - "para_migrate": "Home Assistant kan ID's voor al je kaarten en weergaven automatisch voor je toevoegen door op de knop 'Migrate config' te klikken.", + "para_migrate": "Home Assistant kan automatisch ID's aan al uw kaarten en weergaven toevoegen door op de knop 'Configuratie migreren' te drukken.", "para_no_id": "Dit element heeft geen ID. Voeg een ID toe aan dit element in 'ui-lovelace.yaml'." }, "move_card": { diff --git a/translations/frontend/pl.json b/translations/frontend/pl.json index c3e882816b..f32939c6a2 100644 --- a/translations/frontend/pl.json +++ b/translations/frontend/pl.json @@ -29,7 +29,7 @@ "fan_mode": { "auto": "automatyczny", "off": "wyłączony", - "on": "włączony" + "on": "wł." }, "hvac_action": { "cooling": "chłodzenie", @@ -37,7 +37,7 @@ "fan": "wentylator", "heating": "grzanie", "idle": "nieaktywny", - "off": "wyłączony" + "off": "wył." }, "preset_mode": { "activity": "aktywność", @@ -107,7 +107,7 @@ }, "automation": { "off": "wyłączony", - "on": "włączony" + "on": "wł." }, "binary_sensor": { "battery": { @@ -123,8 +123,8 @@ "on": "online" }, "default": { - "off": "wyłączony", - "on": "włączony" + "off": "wył.", + "on": "wł." }, "door": { "off": "zamknięte", @@ -192,8 +192,8 @@ } }, "calendar": { - "off": "wyłączony", - "on": "włączony" + "off": "wył.", + "on": "wł." }, "camera": { "idle": "nieaktywna", @@ -206,10 +206,10 @@ "fan_only": "tylko wentylator", "heat": "grzanie", "heat_cool": "grzanie/chłodzenie", - "off": "wyłączony" + "off": "wył." }, "configurator": { - "configure": "Konfiguruj", + "configure": "konfiguruj", "configured": "skonfigurowany" }, "cover": { @@ -220,8 +220,8 @@ "stopped": "zatrzymanie" }, "default": { - "off": "wyłączony", - "on": "włączony", + "off": "wył.", + "on": "wł.", "unavailable": "niedostępny", "unknown": "nieznany" }, @@ -229,8 +229,8 @@ "not_home": "poza domem" }, "fan": { - "off": "wyłączony", - "on": "włączony" + "off": "wył.", + "on": "wł." }, "group": { "closed": "zamknięte", @@ -238,9 +238,9 @@ "home": "w domu", "locked": "zamknięty", "not_home": "poza domem", - "off": "wyłączony", + "off": "wył.", "ok": "ok", - "on": "włączony", + "on": "wł.", "open": "otwarte", "opening": "otwieranie", "problem": "problem", @@ -248,12 +248,12 @@ "unlocked": "otwarty" }, "input_boolean": { - "off": "wyłączony", - "on": "włączony" + "off": "wył.", + "on": "wł." }, "light": { - "off": "wyłączony", - "on": "włączony" + "off": "wył.", + "on": "wł." }, "lock": { "locked": "zamknięty", @@ -261,8 +261,8 @@ }, "media_player": { "idle": "nieaktywny", - "off": "wyłączony", - "on": "włączony", + "off": "wył.", + "on": "wł.", "paused": "wstrzymany", "playing": "odtwarzanie", "standby": "tryb czuwania" @@ -275,27 +275,27 @@ "problem": "problem" }, "remote": { - "off": "wyłączony", - "on": "włączony" + "off": "wył.", + "on": "wł." }, "scene": { "scening": "sceny" }, "script": { - "off": "wyłączony", - "on": "włączony" + "off": "wył.", + "on": "wł." }, "sensor": { "off": "wyłączony", - "on": "włączony" + "on": "wł." }, "sun": { "above_horizon": "powyżej horyzontu", "below_horizon": "poniżej horyzontu" }, "switch": { - "off": "wyłączony", - "on": "włączony" + "off": "wył.", + "on": "wł." }, "timer": { "active": "aktywny", @@ -375,7 +375,7 @@ "heating": "{name} grzanie", "high": "wysoka", "low": "niska", - "on_off": "Wł. / wył.", + "on_off": "wł. / wył.", "operation": "Tryb pracy", "preset_mode": "Ustawienia", "swing_mode": "Tryb ruchu łopatek", @@ -465,7 +465,7 @@ "water_heater": { "away_mode": "Tryb poza domem", "currently": "Obecnie", - "on_off": "Wł. / wył.", + "on_off": "wł. / wył.", "operation": "Tryb pracy", "target_temperature": "Temperatura docelowa" }, @@ -576,7 +576,7 @@ "entries_not_found": "Nie znaleziono wpisów w dzienniku.", "messages": { "became_unavailable": "jest niedostępny(-a)", - "changed_to_state": "zmienił(-a) się na {state}", + "changed_to_state": "zmienił się na {state}", "cleared_device_class": "brak (nie {device_class} ruchu)", "detected_device_class": "wykryto {device_class}", "rose": "wzeszło", diff --git a/translations/frontend/zh-Hans.json b/translations/frontend/zh-Hans.json index e40d57d49f..dac40d4b30 100644 --- a/translations/frontend/zh-Hans.json +++ b/translations/frontend/zh-Hans.json @@ -1221,7 +1221,7 @@ "mqtt": { "label": "MQTT", "payload": "参数(可选)", - "topic": "Topic" + "topic": "主题" }, "numeric_state": { "above": "大于", From 211ab4eea8f5eb2dae0a7bdbee848d479911a2f1 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Thu, 22 Oct 2020 11:00:36 +0200 Subject: [PATCH 002/125] Fix quickbar debounce (#7426) * Fix quicbar debounce * Clear search property when dialog is closed Co-authored-by: Donnie --- src/dialogs/quick-bar/ha-quick-bar.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/dialogs/quick-bar/ha-quick-bar.ts b/src/dialogs/quick-bar/ha-quick-bar.ts index ce8ace0a88..dc1fce0136 100644 --- a/src/dialogs/quick-bar/ha-quick-bar.ts +++ b/src/dialogs/quick-bar/ha-quick-bar.ts @@ -55,6 +55,8 @@ export class QuickBar extends LitElement { @internalProperty() private _filter = ""; + @internalProperty() private _search = ""; + @internalProperty() private _opened = false; @internalProperty() private _commandMode = false; @@ -79,6 +81,7 @@ export class QuickBar extends LitElement { this._done = false; this._focusSet = false; this._filter = ""; + this._search = ""; this._commandTriggered = -1; this._items = []; fireEvent(this, "dialog-closed", { dialog: this.localName }); @@ -116,7 +119,7 @@ export class QuickBar extends LitElement { .label=${this.hass.localize( "ui.dialogs.quick-bar.filter_placeholder" )} - .filter=${this._commandMode ? `>${this._filter}` : this._filter} + .filter=${this._commandMode ? `>${this._search}` : this._search} @keydown=${this._handleInputKeyDown} @focus=${this._setFocusFirstListItem} > @@ -237,12 +240,14 @@ export class QuickBar extends LitElement { if (newFilter.startsWith(">")) { this._commandMode = true; - this._debouncedSetFilter(newFilter.substring(1)); + this._search = newFilter.substring(1); } else { this._commandMode = false; - this._debouncedSetFilter(newFilter); + this._search = newFilter; } + this._debouncedSetFilter(this._search); + if (oldCommandMode !== this._commandMode) { this._items = undefined; this._focusSet = false; From d16daf0fd96a677732e643c558b2b5dbb3f2e303 Mon Sep 17 00:00:00 2001 From: Ian Richardson Date: Thu, 22 Oct 2020 05:37:51 -0500 Subject: [PATCH 003/125] Add last-updated as a secondaryinfo option to entity rows (#7433) --- src/panels/lovelace/cards/types.ts | 1 + src/panels/lovelace/components/hui-generic-entity-row.ts | 7 +++++++ .../config-elements/hui-generic-entity-row-editor.ts | 1 + src/translations/en.json | 3 ++- 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/panels/lovelace/cards/types.ts b/src/panels/lovelace/cards/types.ts index 6ecb657ad5..f7e173e72f 100644 --- a/src/panels/lovelace/cards/types.ts +++ b/src/panels/lovelace/cards/types.ts @@ -45,6 +45,7 @@ export interface EntitiesCardEntityConfig extends EntityConfig { | "entity-id" | "last-changed" | "last-triggered" + | "last-updated" | "position" | "tilt-position" | "brightness"; diff --git a/src/panels/lovelace/components/hui-generic-entity-row.ts b/src/panels/lovelace/components/hui-generic-entity-row.ts index 5831526e29..d8abefe0da 100644 --- a/src/panels/lovelace/components/hui-generic-entity-row.ts +++ b/src/panels/lovelace/components/hui-generic-entity-row.ts @@ -97,6 +97,13 @@ class HuiGenericEntityRow extends LitElement { .datetime=${stateObj.last_changed} > ` + : this.config.secondary_info === "last-updated" + ? html` + + ` : this.config.secondary_info === "last-triggered" ? stateObj.attributes.last_triggered ? html` diff --git a/src/panels/lovelace/editor/config-elements/hui-generic-entity-row-editor.ts b/src/panels/lovelace/editor/config-elements/hui-generic-entity-row-editor.ts index 8ff2d4cdec..e2164073ca 100644 --- a/src/panels/lovelace/editor/config-elements/hui-generic-entity-row-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-generic-entity-row-editor.ts @@ -31,6 +31,7 @@ import { configElementStyle } from "./config-elements-style"; const SecondaryInfoValues: { [key: string]: { domains?: string[] } } = { "entity-id": {}, "last-changed": {}, + "last-updated": {}, "last-triggered": { domains: ["automation", "script"] }, position: { domains: ["cover"] }, "tilt-position": { domains: ["cover"] }, diff --git a/src/translations/en.json b/src/translations/en.json index 284f574513..8a8d8d2c1c 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -2452,7 +2452,8 @@ "last-triggered": "Last Triggered", "position": "Position", "tilt-position": "Tilt Position", - "brightness": "Brightness" + "brightness": "Brightness", + "last-updated": "Last Updated" }, "entity_row": { "divider": "Divider", From 89b07ea0ae79bf7199a31d70e2f757121c78a789 Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Thu, 22 Oct 2020 16:24:12 +0200 Subject: [PATCH 004/125] Add outline color for dark buttons (#7444) --- src/resources/styles.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/resources/styles.ts b/src/resources/styles.ts index 948102eb4d..69b55f420c 100644 --- a/src/resources/styles.ts +++ b/src/resources/styles.ts @@ -89,6 +89,7 @@ export const derivedStyles = { "mdc-radio-disabled-color": "var(--disabled-text-color)", "mdc-tab-text-label-color-default": "var(--primary-text-color)", "mdc-button-disabled-ink-color": "var(--disabled-text-color)", + "mdc-button-outline-color": "var(--divider-color)", "mdc-dialog-scroll-divider-color": "var(--divider-color)", }; From 7428731eaca2e829209e931d3f60d487d3add6f1 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Thu, 22 Oct 2020 22:43:15 +0200 Subject: [PATCH 005/125] Fix ES5 build, fix virtualizer polyfill (#7451) --- build-scripts/bundle.js | 2 -- build-scripts/webpack.js | 12 +++++++++--- package.json | 1 - src/common/translations/localize.ts | 17 ++++++++++++----- src/fake_data/provide_hass.ts | 4 ++-- src/managers/notification-manager.ts | 2 +- src/mixins/lit-localize-lite-mixin.ts | 6 ++++-- src/resources/EventTarget-ponyfill.js | 14 ++++++++++++++ src/state/translations-mixin.ts | 8 ++++---- 9 files changed, 46 insertions(+), 20 deletions(-) create mode 100644 src/resources/EventTarget-ponyfill.js diff --git a/build-scripts/bundle.js b/build-scripts/bundle.js index c5056cc8b6..41f60aa66d 100644 --- a/build-scripts/bundle.js +++ b/build-scripts/bundle.js @@ -55,7 +55,6 @@ module.exports.babelOptions = ({ latestBuild }) => ({ !latestBuild && [ require("@babel/preset-env").default, { - modules: false, useBuiltIns: "entry", corejs: "3.6", }, @@ -71,7 +70,6 @@ module.exports.babelOptions = ({ latestBuild }) => ({ // Only support the syntax, Webpack will handle it. "@babel/plugin-syntax-import-meta", "@babel/plugin-syntax-dynamic-import", - "@babel/plugin-syntax-top-level-await", "@babel/plugin-proposal-optional-chaining", "@babel/plugin-proposal-nullish-coalescing-operator", [ diff --git a/build-scripts/webpack.js b/build-scripts/webpack.js index f82591e9e7..65d4287a34 100644 --- a/build-scripts/webpack.js +++ b/build-scripts/webpack.js @@ -51,9 +51,6 @@ const createWebpackConfig = ({ }), ], }, - experiments: { - topLevelAwait: true, - }, plugins: [ new ManifestPlugin({ // Only include the JS of entrypoints @@ -98,6 +95,15 @@ const createWebpackConfig = ({ new RegExp(bundle.emptyPackages({ latestBuild }).join("|")), path.resolve(paths.polymer_dir, "src/util/empty.js") ), + // We need to change the import of the polyfill for EventTarget, so we replace the polyfill file with our customized one + new webpack.NormalModuleReplacementPlugin( + new RegExp( + require.resolve( + "lit-virtualizer/lib/uni-virtualizer/lib/polyfillLoaders/EventTarget.js" + ) + ), + path.resolve(paths.polymer_dir, "src/resources/EventTarget-ponyfill.js") + ), ], resolve: { extensions: [".ts", ".js", ".json"], diff --git a/package.json b/package.json index 380e52a57d..82ba1c1336 100644 --- a/package.json +++ b/package.json @@ -139,7 +139,6 @@ "@babel/plugin-proposal-optional-chaining": "^7.11.0", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-top-level-await": "^7.10.4", "@babel/preset-env": "^7.11.5", "@babel/preset-typescript": "^7.10.4", "@rollup/plugin-commonjs": "^11.1.0", diff --git a/src/common/translations/localize.ts b/src/common/translations/localize.ts index df7b993b1d..fa6adc1b52 100644 --- a/src/common/translations/localize.ts +++ b/src/common/translations/localize.ts @@ -13,9 +13,12 @@ export interface FormatsType { time: FormatType; } -if (shouldPolyfill()) { - await import("@formatjs/intl-pluralrules/polyfill-locales"); -} +let polyfillLoaded = !shouldPolyfill(); +const polyfillProm = polyfillLoaded + ? import("@formatjs/intl-pluralrules/polyfill-locales").then(() => { + polyfillLoaded = true; + }) + : undefined; /** * Adapted from Polymer app-localize-behavior. @@ -38,12 +41,16 @@ if (shouldPolyfill()) { * } */ -export const computeLocalize = ( +export const computeLocalize = async ( cache: any, language: string, resources: Resources, formats?: FormatsType -): LocalizeFunc => { +): Promise => { + if (!polyfillLoaded) { + await polyfillProm; + } + // Everytime any of the parameters change, invalidate the strings cache. cache._localizationCache = {}; diff --git a/src/fake_data/provide_hass.ts b/src/fake_data/provide_hass.ts index f070dc7f41..0bc58b1040 100644 --- a/src/fake_data/provide_hass.ts +++ b/src/fake_data/provide_hass.ts @@ -55,7 +55,7 @@ export const provideHass = ( function updateTranslations(fragment: null | string, language?: string) { const lang = language || getLocalLanguage(); - getTranslation(fragment, lang).then((translation) => { + getTranslation(fragment, lang).then(async (translation) => { const resources = { [lang]: { ...(hass().resources && hass().resources[lang]), @@ -64,7 +64,7 @@ export const provideHass = ( }; hass().updateHass({ resources, - localize: computeLocalize(elements[0], lang, resources), + localize: await computeLocalize(elements[0], lang, resources), }); }); } diff --git a/src/managers/notification-manager.ts b/src/managers/notification-manager.ts index 9dcadfb2b2..a2db48db89 100644 --- a/src/managers/notification-manager.ts +++ b/src/managers/notification-manager.ts @@ -33,7 +33,7 @@ class NotificationManager extends LitElement { @internalProperty() private _noCancelOnOutsideClick = false; - @query("ha-toast", true) private _toast!: HaToast; + @query("ha-toast") private _toast!: HaToast; public async showDialog({ message, diff --git a/src/mixins/lit-localize-lite-mixin.ts b/src/mixins/lit-localize-lite-mixin.ts index a43ce610a1..f1d2cf072c 100644 --- a/src/mixins/lit-localize-lite-mixin.ts +++ b/src/mixins/lit-localize-lite-mixin.ts @@ -36,11 +36,13 @@ export const litLocalizeLiteMixin = >( (changedProperties.has("language") || changedProperties.has("resources")) ) { - this.localize = computeLocalize( + computeLocalize( this.constructor.prototype, this.language, this.resources - ); + ).then((localize) => { + this.localize = localize; + }); } } diff --git a/src/resources/EventTarget-ponyfill.js b/src/resources/EventTarget-ponyfill.js new file mode 100644 index 0000000000..730e3f0ad6 --- /dev/null +++ b/src/resources/EventTarget-ponyfill.js @@ -0,0 +1,14 @@ +let ET; +export default async function EventTarget() { + return ET || init(); +} +async function init() { + ET = window.EventTarget; + try { + // eslint-disable-next-line no-new + new ET(); + } catch (_a) { + ET = (await import("event-target-shim")).default.EventTarget; + } + return ET; +} diff --git a/src/state/translations-mixin.ts b/src/state/translations-mixin.ts index 215752dfa8..16e3abb5ac 100644 --- a/src/state/translations-mixin.ts +++ b/src/state/translations-mixin.ts @@ -133,7 +133,7 @@ export default >(superClass: T) => return this.hass!.localize; } - this._updateResources(language, resources); + await this._updateResources(language, resources); return this.hass!.localize; } @@ -187,7 +187,7 @@ export default >(superClass: T) => return this.hass!.localize; } - this._updateResources(language, resources); + await this._updateResources(language, resources); return this.hass!.localize; } @@ -216,7 +216,7 @@ export default >(superClass: T) => } } - private _updateResources(language: string, data: any) { + private async _updateResources(language: string, data: any) { // Update the language in hass, and update the resources with the newly // loaded resources. This merges the new data on top of the old data for // this language, so that the full translation set can be loaded across @@ -229,7 +229,7 @@ export default >(superClass: T) => }; const changes: Partial = { resources }; if (this.hass && language === this.hass.language) { - changes.localize = computeLocalize(this, language, resources); + changes.localize = await computeLocalize(this, language, resources); } this._updateHass(changes); } From eceed4ed74470bfb3cf00bda546d8ce9f1ee091f Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 22 Oct 2020 15:47:19 -0500 Subject: [PATCH 006/125] Avoid fetching logbook data instead in addition to not displaying it (#7427) Co-authored-by: Zack Barett --- src/dialogs/more-info/ha-more-info-dialog.ts | 45 ++++++++++++++----- src/dialogs/more-info/ha-more-info-logbook.ts | 13 +----- 2 files changed, 37 insertions(+), 21 deletions(-) diff --git a/src/dialogs/more-info/ha-more-info-dialog.ts b/src/dialogs/more-info/ha-more-info-dialog.ts index a0c3378af6..10a4b1f15b 100644 --- a/src/dialogs/more-info/ha-more-info-dialog.ts +++ b/src/dialogs/more-info/ha-more-info-dialog.ts @@ -38,6 +38,7 @@ import { showConfirmationDialog } from "../generic/show-dialog-box"; import "./ha-more-info-history"; import "./ha-more-info-logbook"; import "./controls/more-info-default"; +import { CONTINUOUS_DOMAINS } from "../../data/logbook"; const DOMAINS_NO_INFO = ["camera", "configurator"]; /** @@ -169,7 +170,8 @@ export class MoreInfoDialog extends LitElement { : ""} ${DOMAINS_WITH_MORE_INFO.includes(domain) && - this._computeShowHistoryComponent(entityId) + (this._computeShowHistoryComponent(entityId) || + this._computeShowLogBookComponent(entityId)) ? html` - `} + .hass=${this.hass} + .entityId=${this._entityId} + >`} + ${DOMAINS_WITH_MORE_INFO.includes(domain) || + !this._computeShowLogBookComponent(entityId) + ? "" + : html``} ${this._moreInfoType ? dynamicElement(this._moreInfoType, { hass: this.hass, @@ -264,12 +269,32 @@ export class MoreInfoDialog extends LitElement { private _computeShowHistoryComponent(entityId) { return ( - (isComponentLoaded(this.hass, "history") || - isComponentLoaded(this.hass, "logbook")) && + isComponentLoaded(this.hass, "history") && !DOMAINS_MORE_INFO_NO_HISTORY.includes(computeDomain(entityId)) ); } + private _computeShowLogBookComponent(entityId): boolean { + if (!isComponentLoaded(this.hass, "logbook")) { + return false; + } + + const stateObj = this.hass.states[entityId]; + if (!stateObj || stateObj.attributes.unit_of_measurement) { + return false; + } + + const domain = computeDomain(entityId); + if ( + CONTINUOUS_DOMAINS.includes(domain) || + DOMAINS_MORE_INFO_NO_HISTORY.includes(domain) + ) { + return false; + } + + return true; + } + private _removeEntity() { const entityId = this._entityId!; showConfirmationDialog(this, { diff --git a/src/dialogs/more-info/ha-more-info-logbook.ts b/src/dialogs/more-info/ha-more-info-logbook.ts index a221fae68f..107636a7c0 100644 --- a/src/dialogs/more-info/ha-more-info-logbook.ts +++ b/src/dialogs/more-info/ha-more-info-logbook.ts @@ -13,11 +13,7 @@ import { computeStateDomain } from "../../common/entity/compute_state_domain"; import { throttle } from "../../common/util/throttle"; import "../../components/ha-circular-progress"; import "../../components/state-history-charts"; -import { - CONTINUOUS_DOMAINS, - getLogbookData, - LogbookEntry, -} from "../../data/logbook"; +import { getLogbookData, LogbookEntry } from "../../data/logbook"; import "../../panels/logbook/ha-logbook"; import { haStyle, haStyleScrollbar } from "../../resources/styles"; import { HomeAssistant } from "../../types"; @@ -44,12 +40,7 @@ export class MoreInfoLogbook extends LitElement { } const stateObj = this.hass.states[this.entityId]; - if (!stateObj || stateObj.attributes.unit_of_measurement) { - return html``; - } - - const domain = computeStateDomain(stateObj); - if (CONTINUOUS_DOMAINS.includes(domain)) { + if (!stateObj) { return html``; } From 6aff35196d9f3cfa8c8a7874bbf148067509671e Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Thu, 22 Oct 2020 23:13:36 +0200 Subject: [PATCH 007/125] Fix capitalization of state attributes (#7448) --- src/components/ha-attributes.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ha-attributes.ts b/src/components/ha-attributes.ts index 933ed41d19..892148e664 100644 --- a/src/components/ha-attributes.ts +++ b/src/components/ha-attributes.ts @@ -34,7 +34,7 @@ class HaAttributes extends LitElement { (attribute) => html`
- ${attribute.replace(/_/g, " ").replace("id", "ID")} + ${attribute.replace(/_/g, " ").replace(/\bid\b/g, "ID")}
${this.formatAttribute(attribute)} From 9fbc94e8d82701c022e02f113664e77ed277d206 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Thu, 22 Oct 2020 23:29:26 +0200 Subject: [PATCH 008/125] Pass narrow to masonry view to calc columns (#7454) --- src/data/lovelace.ts | 1 + src/panels/lovelace/hui-root.ts | 5 +++++ src/panels/lovelace/views/hui-masonry-view.ts | 9 ++++++++- src/panels/lovelace/views/hui-view.ts | 7 +++++++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/data/lovelace.ts b/src/data/lovelace.ts index 608dbb9fb7..090bb0dfc0 100644 --- a/src/data/lovelace.ts +++ b/src/data/lovelace.ts @@ -89,6 +89,7 @@ export interface LovelaceViewConfig { export interface LovelaceViewElement extends HTMLElement { hass?: HomeAssistant; lovelace?: Lovelace; + narrow?: boolean; index?: number; cards?: Array; badges?: LovelaceBadge[]; diff --git a/src/panels/lovelace/hui-root.ts b/src/panels/lovelace/hui-root.ts index 740c5a7afb..ab652d6dcc 100644 --- a/src/panels/lovelace/hui-root.ts +++ b/src/panels/lovelace/hui-root.ts @@ -490,6 +490,10 @@ class HUIRoot extends LitElement { huiView.hass = this.hass; } + if (changedProperties.has("narrow") && huiView) { + huiView.narrow = this.narrow; + } + let newSelectView; let force = false; @@ -753,6 +757,7 @@ class HUIRoot extends LitElement { view.lovelace = this.lovelace; view.hass = this.hass; + view.narrow = this.narrow; const configBackground = viewConfig.background || this.config.background; diff --git a/src/panels/lovelace/views/hui-masonry-view.ts b/src/panels/lovelace/views/hui-masonry-view.ts index 00555cd6b1..23d9833c4c 100644 --- a/src/panels/lovelace/views/hui-masonry-view.ts +++ b/src/panels/lovelace/views/hui-masonry-view.ts @@ -49,6 +49,8 @@ export class MasonryView extends LitElement implements LovelaceViewElement { @property({ attribute: false }) public lovelace?: Lovelace; + @property({ type: Boolean }) public narrow!: boolean; + @property({ type: Number }) public index?: number; @property({ attribute: false }) public cards: Array< @@ -128,6 +130,10 @@ export class MasonryView extends LitElement implements LovelaceViewElement { } } + if (changedProperties.has("narrow")) { + this._updateColumns(); + } + const oldLovelace = changedProperties.get("lovelace") as | Lovelace | undefined; @@ -252,7 +258,8 @@ export class MasonryView extends LitElement implements LovelaceViewElement { // Do -1 column if the menu is docked and open this._columns = Math.max( 1, - matchColumns - Number(this.hass!.dockedSidebar === "docked") + matchColumns - + Number(!this.narrow && this.hass!.dockedSidebar === "docked") ); } diff --git a/src/panels/lovelace/views/hui-view.ts b/src/panels/lovelace/views/hui-view.ts index 60ee6c4760..1fd878e572 100644 --- a/src/panels/lovelace/views/hui-view.ts +++ b/src/panels/lovelace/views/hui-view.ts @@ -31,6 +31,8 @@ export class HUIView extends UpdatingElement { @property({ attribute: false }) public lovelace?: Lovelace; + @property({ type: Boolean }) public narrow!: boolean; + @property({ type: Number }) public index?: number; @internalProperty() private _cards: Array = []; @@ -111,6 +113,7 @@ export class HUIView extends UpdatingElement { this._createCards(viewConfig!); this._layoutElement!.hass = this.hass; + this._layoutElement!.narrow = this.narrow; this._layoutElement!.lovelace = lovelace; this._layoutElement!.index = this.index; } @@ -127,6 +130,10 @@ export class HUIView extends UpdatingElement { this._layoutElement!.hass = this.hass; } + if (changedProperties.has("narrow")) { + this._layoutElement!.narrow = this.narrow; + } + if (editModeChanged) { this._layoutElement!.lovelace = lovelace; } From 174f8f5823ea031597c30f89e95bc65017c31135 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Thu, 22 Oct 2020 23:51:33 +0200 Subject: [PATCH 009/125] Template dev tools: Print the type of the response and stringify objects (#7439) --- .../template/developer-tools-template.ts | 37 ++++++++++++++----- src/translations/en.json | 1 + 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/panels/developer-tools/template/developer-tools-template.ts b/src/panels/developer-tools/template/developer-tools-template.ts index a44755deb5..564f08f984 100644 --- a/src/panels/developer-tools/template/developer-tools-template.ts +++ b/src/panels/developer-tools/template/developer-tools-template.ts @@ -82,6 +82,13 @@ class HaPanelDevTemplate extends LitElement { } protected render() { + const type = typeof this._templateResult?.result; + const resultType = + type === "object" + ? Array.isArray(this._templateResult?.result) + ? "list" + : "dict" + : type; return html`
- - + ${this._rendering + ? html`` + : ""} + ${this._templateResult + ? html`${this.hass.localize( + "ui.panel.developer-tools.tabs.templates.result_type" + )}: + ${resultType}` + : ""} +
${this._error}${this._templateResult
-            ?.result}
+ class="rendered ${classMap({ + error: Boolean(this._error), + [resultType]: resultType, + })}" + >${this._error}${type === "object" + ? JSON.stringify(this._templateResult!.result, null, 2) + : this._templateResult?.result} ${this._templateResult?.listeners.time ? html`

diff --git a/src/translations/en.json b/src/translations/en.json index 8a8d8d2c1c..faf54dd649 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -2957,6 +2957,7 @@ "description": "Templates are rendered using the Jinja2 template engine with some Home Assistant specific extensions.", "editor": "Template editor", "reset": "Reset to demo template", + "result_type": "Result type", "jinja_documentation": "Jinja2 template documentation", "template_extensions": "Home Assistant template extensions", "unknown_error_template": "Unknown error rendering template", From edc2a03d1c4cd0e43aa194b644d9a581e6ab2057 Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Thu, 22 Oct 2020 23:57:52 +0200 Subject: [PATCH 010/125] Get rid of the unwanted tooltip copying (#7408) --- src/panels/config/info/system-health-card.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/panels/config/info/system-health-card.ts b/src/panels/config/info/system-health-card.ts index b3433a0831..13b9b80e2b 100644 --- a/src/panels/config/info/system-health-card.ts +++ b/src/panels/config/info/system-health-card.ts @@ -128,14 +128,24 @@ class SystemHealthCard extends LitElement { } private _copyInfo(): void { + // We have to copy title text and content separately, because + // copying the whole would also copy the tooltip text. const selection = window.getSelection()!; selection.removeAllRanges(); - const copyElement = this.shadowRoot?.querySelector( - "ha-card" + let copyElement = this.shadowRoot?.querySelector( + ".card-header-text" ) as HTMLElement; - const range = document.createRange(); + let range = document.createRange(); + range.selectNodeContents(copyElement); + selection.addRange(range); + + copyElement = this.shadowRoot?.querySelector( + ".card-content" + ) as HTMLElement; + + range = document.createRange(); range.selectNodeContents(copyElement); selection.addRange(range); From a78c00fb41dee46017bcdf9d12469fe9ff747847 Mon Sep 17 00:00:00 2001 From: Donnie Date: Thu, 22 Oct 2020 15:06:36 -0700 Subject: [PATCH 011/125] Fix quick bar dark mode contrast, filter returning all items, no primary text (#7430) Co-authored-by: Bram Kragten --- src/common/string/filter/sequence-matching.ts | 2 +- src/dialogs/quick-bar/ha-quick-bar.ts | 23 ++++++++----------- src/resources/styles.ts | 1 + 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/common/string/filter/sequence-matching.ts b/src/common/string/filter/sequence-matching.ts index f8ea1f40cf..dac81672a8 100644 --- a/src/common/string/filter/sequence-matching.ts +++ b/src/common/string/filter/sequence-matching.ts @@ -59,7 +59,7 @@ export const fuzzyFilterSort: FuzzyFilterSort = (filter, items) => { : fuzzySequentialMatch(filter, item.text); return item; }) - .filter((item) => item.score === undefined || item.score > 0) + .filter((item) => item.score !== undefined && item.score > 0) .sort(({ score: scoreA = 0 }, { score: scoreB = 0 }) => scoreA > scoreB ? -1 : scoreA < scoreB ? 1 : 0 ); diff --git a/src/dialogs/quick-bar/ha-quick-bar.ts b/src/dialogs/quick-bar/ha-quick-bar.ts index dc1fce0136..68132cad04 100644 --- a/src/dialogs/quick-bar/ha-quick-bar.ts +++ b/src/dialogs/quick-bar/ha-quick-bar.ts @@ -61,8 +61,6 @@ export class QuickBar extends LitElement { @internalProperty() private _commandMode = false; - @internalProperty() private _commandTriggered = -1; - @internalProperty() private _done = false; @query("search-input", false) private _filterInputField?: HTMLElement; @@ -82,7 +80,6 @@ export class QuickBar extends LitElement { this._focusSet = false; this._filter = ""; this._search = ""; - this._commandTriggered = -1; this._items = []; fireEvent(this, "dialog-closed", { dialog: this.localName }); } @@ -137,7 +134,6 @@ export class QuickBar extends LitElement { active >` : html`${item.altText} ` : null} - ${this._commandTriggered === index - ? html`` - : null} `; } private async processItemAndCloseDialog(item: QuickBarItem, index: number) { - this._commandTriggered = index; + this._addSpinnerToCommandItem(index); await item.action(); this.closeDialog(); @@ -234,6 +223,14 @@ export class QuickBar extends LitElement { return this.renderRoot.querySelector(`mwc-list-item[index="${index}"]`); } + private _addSpinnerToCommandItem(index: number): void { + const spinner = document.createElement("ha-circular-progress"); + spinner.size = "small"; + spinner.slot = "meta"; + spinner.active = true; + this._getItemAtIndex(index)?.appendChild(spinner); + } + private _handleSearchChange(ev: CustomEvent): void { const newFilter = ev.detail.value; const oldCommandMode = this._commandMode; @@ -303,7 +300,7 @@ export class QuickBar extends LitElement { private _generateEntityItems(): QuickBarItem[] { return Object.keys(this.hass.states) .map((entityId) => ({ - text: computeStateName(this.hass.states[entityId]), + text: computeStateName(this.hass.states[entityId]) || entityId, altText: entityId, icon: domainIcon(computeDomain(entityId), this.hass.states[entityId]), action: () => fireEvent(this, "hass-more-info", { entityId }), diff --git a/src/resources/styles.ts b/src/resources/styles.ts index 69b55f420c..2313327b54 100644 --- a/src/resources/styles.ts +++ b/src/resources/styles.ts @@ -12,6 +12,7 @@ export const darkStyles = { "switch-unchecked-button-color": "#999999", "switch-unchecked-track-color": "#9b9b9b", "divider-color": "rgba(225, 225, 225, .12)", + "mdc-ripple-color": "#AAAAAA", "codemirror-keyword": "#C792EA", "codemirror-operator": "#89DDFF", "codemirror-variable": "#f07178", From 5fa7cd9fa9a2b866d6b7643c08621a7cd6c83a3f Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 22 Oct 2020 17:10:51 -0500 Subject: [PATCH 012/125] Update template time listener phrasing for core changes (#7450) --- .../developer-tools/template/developer-tools-template.ts | 6 ++++-- src/translations/en.json | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/panels/developer-tools/template/developer-tools-template.ts b/src/panels/developer-tools/template/developer-tools-template.ts index 564f08f984..9ec9c1c4ad 100644 --- a/src/panels/developer-tools/template/developer-tools-template.ts +++ b/src/panels/developer-tools/template/developer-tools-template.ts @@ -228,11 +228,13 @@ class HaPanelDevTemplate extends LitElement { )} ` - : html` + : !this._templateResult?.listeners.time + ? html` ${this.hass.localize( "ui.panel.developer-tools.tabs.templates.no_listeners" )} - `} + ` + : html``}

`; diff --git a/src/translations/en.json b/src/translations/en.json index faf54dd649..3253f435c6 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -2961,9 +2961,9 @@ "jinja_documentation": "Jinja2 template documentation", "template_extensions": "Home Assistant template extensions", "unknown_error_template": "Unknown error rendering template", - "time": "This template updates every 60 seconds after the last state changed event.", + "time": "This template updates at the start of each minute.", "all_listeners": "This template listens for all state changed events.", - "no_listeners": "This template does not listen for any state changed events and will not update automatically.", + "no_listeners": "This template does not listen for any events and will not update automatically.", "listeners": "This template listens for the following state changed events:", "entity": "Entity", "domain": "Domain" From 19e69dc13e3b4454d18669689c2da709835bd1b6 Mon Sep 17 00:00:00 2001 From: HomeAssistant Azure Date: Fri, 23 Oct 2020 00:32:22 +0000 Subject: [PATCH 013/125] [ci skip] Translation update --- translations/frontend/af.json | 4 +- translations/frontend/ca.json | 12 ++++- translations/frontend/cs.json | 12 ++++- translations/frontend/en.json | 6 ++- translations/frontend/es.json | 12 ++++- translations/frontend/et.json | 9 +++- translations/frontend/lv.json | 3 ++ translations/frontend/nb.json | 12 ++++- translations/frontend/nl.json | 12 ++++- translations/frontend/pl.json | 80 +++++++++++++++++------------- translations/frontend/ru.json | 16 ++++-- translations/frontend/zh-Hans.json | 12 ++++- 12 files changed, 142 insertions(+), 48 deletions(-) diff --git a/translations/frontend/af.json b/translations/frontend/af.json index 2e416e5950..7a1320e448 100644 --- a/translations/frontend/af.json +++ b/translations/frontend/af.json @@ -784,6 +784,7 @@ "type_select": "Sneller tipe", "type": { "event": { + "context_user_pick": "Voeg gebruiker toe", "event_data": "Gebeurtenis data", "event_type": "Gebeurtenis tipe", "label": "Gebeurtenis" @@ -1545,7 +1546,8 @@ "configure_ui": "Stel gebruikerskoppelvlak op", "exit_edit_mode": "Verlaat UI-wysigingsmodus", "help": "Help", - "refresh": "Verfris" + "refresh": "Verfris", + "start_conversation": "Begin gesprek" }, "reload_lovelace": "Herlaai Lovelace", "unused_entities": { diff --git a/translations/frontend/ca.json b/translations/frontend/ca.json index 3fdfe7ce8f..41eabeb61f 100644 --- a/translations/frontend/ca.json +++ b/translations/frontend/ca.json @@ -695,6 +695,11 @@ }, "service-picker": { "service": "Servei" + }, + "user-picker": { + "add_user": "Afegeix usuari", + "no_user": "Cap usuari", + "remove_user": "Elimina usuari" } }, "dialogs": { @@ -947,6 +952,7 @@ }, "notification_toast": { "connection_lost": "Connexió perduda. Tornant a connectar...", + "dismiss": "Desestimar", "service_call_failed": "Ha fallat la crida al servei {service}.", "started": "Home Assistant s'ha iniciat!", "starting": "Home Assistant està iniciant-se, no estarà tot disponible fins que acabi", @@ -1200,6 +1206,9 @@ "trigger": "Disparador" }, "event": { + "context_user_pick": "Afegeix usuari", + "context_user_picked": "Esdeveniment cridat per usuari", + "context_users": "Limita-ho als esdeveniments disparats per", "event_data": "Dades de l'esdeveniment", "event_type": "Tipus d'esdeveniment", "label": "Esdeveniment" @@ -2941,7 +2950,8 @@ "exit_edit_mode": "Surt del mode d'edició d'interfície", "help": "Ajuda", "refresh": "Actualitzar", - "reload_resources": "Actualitza recursos" + "reload_resources": "Actualitza recursos", + "start_conversation": "Inicia conversa" }, "reload_lovelace": "Actualiza la interfície d'usuari", "reload_resources": { diff --git a/translations/frontend/cs.json b/translations/frontend/cs.json index d9f6988b27..1ded8cf167 100644 --- a/translations/frontend/cs.json +++ b/translations/frontend/cs.json @@ -695,6 +695,11 @@ }, "service-picker": { "service": "Služba" + }, + "user-picker": { + "add_user": "Přidat uživatele", + "no_user": "Žádný uživatel", + "remove_user": "Odebrat uživatele" } }, "dialogs": { @@ -947,6 +952,7 @@ }, "notification_toast": { "connection_lost": "Připojení bylo ztraceno. Připojuji se znovu...", + "dismiss": "Zavřít", "service_call_failed": "Službu {service} se nepodařilo zavolat.", "started": "Home Assistant je spuštěn!", "starting": "Home Assistant se spouští, ne všechno bude k dispozici, dokud nebude spuštění dokončeno.", @@ -1200,6 +1206,9 @@ "trigger": "Spouštěč" }, "event": { + "context_user_pick": "Přidat uživatele", + "context_user_picked": "Uživatel, který spustil událost", + "context_users": "Omezit na události spuštěné", "event_data": "Data události", "event_type": "Typ události", "label": "Událost" @@ -2941,7 +2950,8 @@ "exit_edit_mode": "Ukončit režim úprav uživatelského rozhraní", "help": "Pomoc", "refresh": "Obnovit", - "reload_resources": "Nově načíst zdroje" + "reload_resources": "Nově načíst zdroje", + "start_conversation": "Zahájit konverzaci" }, "reload_lovelace": "Nově načíst Lovelace", "reload_resources": { diff --git a/translations/frontend/en.json b/translations/frontend/en.json index 23584bfa90..09899e24a3 100644 --- a/translations/frontend/en.json +++ b/translations/frontend/en.json @@ -2540,10 +2540,11 @@ "entity": "Entity", "jinja_documentation": "Jinja2 template documentation", "listeners": "This template listens for the following state changed events:", - "no_listeners": "This template does not listen for any state changed events and will not update automatically.", + "no_listeners": "This template does not listen for any events and will not update automatically.", "reset": "Reset to demo template", + "result_type": "Result type", "template_extensions": "Home Assistant template extensions", - "time": "This template updates every 60 seconds after the last state changed event.", + "time": "This template updates at the start of each minute.", "title": "Template", "unknown_error_template": "Unknown error rendering template" } @@ -2686,6 +2687,7 @@ "entity-id": "Entity ID", "last-changed": "Last Changed", "last-triggered": "Last Triggered", + "last-updated": "Last Updated", "none": "No Secondary Info", "position": "Position", "tilt-position": "Tilt Position" diff --git a/translations/frontend/es.json b/translations/frontend/es.json index 98136c67e3..2fa797a52b 100644 --- a/translations/frontend/es.json +++ b/translations/frontend/es.json @@ -695,6 +695,11 @@ }, "service-picker": { "service": "Servicio" + }, + "user-picker": { + "add_user": "Añadir usuario", + "no_user": "Sin usuario", + "remove_user": "Eliminar usuario" } }, "dialogs": { @@ -947,6 +952,7 @@ }, "notification_toast": { "connection_lost": "Conexión perdida. Reconectando...", + "dismiss": "Descartar", "service_call_failed": "Error al llamar al servicio {service}.", "started": "¡Home Assistant se ha iniciado!", "starting": "Home Assistant se está iniciando, no estará todo disponible hasta que finalice.", @@ -1200,6 +1206,9 @@ "trigger": "Desencadenante" }, "event": { + "context_user_pick": "Añadir usuario", + "context_user_picked": "Evento desencadenado por usuario", + "context_users": "Límite a eventos desencadenados por", "event_data": "Datos del evento", "event_type": "Tipo de evento", "label": "Evento" @@ -2941,7 +2950,8 @@ "exit_edit_mode": "Salir del modo de edición de la interfaz de usuario", "help": "Ayuda", "refresh": "Actualizar", - "reload_resources": "Recargar recursos" + "reload_resources": "Recargar recursos", + "start_conversation": "Iniciar conversación" }, "reload_lovelace": "Recargar la IU Lovelace", "reload_resources": { diff --git a/translations/frontend/et.json b/translations/frontend/et.json index 05dee4ffa9..368259bfc6 100644 --- a/translations/frontend/et.json +++ b/translations/frontend/et.json @@ -695,6 +695,10 @@ }, "service-picker": { "service": "Teenus" + }, + "user-picker": { + "add_user": "Lisa kasutaja", + "remove_user": "Kustuta kasutaja" } }, "dialogs": { @@ -947,6 +951,7 @@ }, "notification_toast": { "connection_lost": "Ühendus kadunud. Taasühendamine...", + "dismiss": "Loobu", "service_call_failed": "Teenuse {service} väljakutsumine ebaõnnestus.", "started": "Koduabiline on käivitunud!", "starting": "Home Assistant käivitub, kõik elemendid ei pruugi veel saadaval olla", @@ -1200,6 +1205,7 @@ "trigger": "Päästik" }, "event": { + "context_user_pick": "Lisa kasutaja", "event_data": "Sündmuse andmed", "event_type": "Sündmuse tüüp", "label": "Sündmus" @@ -2941,7 +2947,8 @@ "exit_edit_mode": "Välju kasutajaliidese redigeerimisrežiimist", "help": "Abi", "refresh": "Värskenda", - "reload_resources": "Taaslae ressursid" + "reload_resources": "Taaslae ressursid", + "start_conversation": "Alusta vestlust" }, "reload_lovelace": "Taaslae Lovelace", "reload_resources": { diff --git a/translations/frontend/lv.json b/translations/frontend/lv.json index 9eeebcdaef..ff5f5dbd09 100644 --- a/translations/frontend/lv.json +++ b/translations/frontend/lv.json @@ -1468,6 +1468,7 @@ "name": "Vārds", "password": "Parole", "password_confirm": "Apstipriniet paroli", + "password_not_match": "Paroles nesakrīt", "username": "Lietotājvārds" }, "caption": "Lietotāji", @@ -1484,7 +1485,9 @@ "group": "Grupa", "id": "ID", "name": "Vārds", + "new_password": "Jauna parole", "owner": "Īpašnieks", + "password_changed": "Parole tika veiksmīgi nomainīta", "system_generated": "Sistēmas ģenerēts", "system_generated_users_not_editable": "Sistēmas ģenerētos lietotājus nevar atjaunināt.", "system_generated_users_not_removable": "Sistēmas ģenerētos lietotājus nevar dzēst.", diff --git a/translations/frontend/nb.json b/translations/frontend/nb.json index cf58af4beb..f23810f7e5 100644 --- a/translations/frontend/nb.json +++ b/translations/frontend/nb.json @@ -695,6 +695,11 @@ }, "service-picker": { "service": "Tjeneste" + }, + "user-picker": { + "add_user": "Legg til bruker", + "no_user": "Ingen bruker", + "remove_user": "Fjern bruker" } }, "dialogs": { @@ -947,6 +952,7 @@ }, "notification_toast": { "connection_lost": "Forbindelsen ble brutt. Kobler til på nytt...", + "dismiss": "Avvis", "service_call_failed": "Kunne ikke tilkalle tjenesten: {service}", "started": "Home Assistant har startet!", "starting": "Home Assistant starter, alt er ikke tilgjengelig før starten er fullført.", @@ -1200,6 +1206,9 @@ "trigger": "Utløser" }, "event": { + "context_user_pick": "Legg til bruker", + "context_user_picked": "Bruk avfyring hendelse", + "context_users": "Begrens til hendelser utløst av", "event_data": "Hendelse data", "event_type": "Hendelse type", "label": "Hendelse" @@ -2941,7 +2950,8 @@ "exit_edit_mode": "Avslutt redigeringsmodus for brukergrensesnitt", "help": "Hjelp", "refresh": "Oppdater", - "reload_resources": "Last inn ressurser på nytt" + "reload_resources": "Last inn ressurser på nytt", + "start_conversation": "Start samtale" }, "reload_lovelace": "Last inn brukergrensesnittet på nytt", "reload_resources": { diff --git a/translations/frontend/nl.json b/translations/frontend/nl.json index 8977b0f643..81662e6ab3 100644 --- a/translations/frontend/nl.json +++ b/translations/frontend/nl.json @@ -695,6 +695,11 @@ }, "service-picker": { "service": "Service" + }, + "user-picker": { + "add_user": "Gebruiker toevoegen", + "no_user": "Geen gebruiker", + "remove_user": "Gebruiker verwijderen" } }, "dialogs": { @@ -947,6 +952,7 @@ }, "notification_toast": { "connection_lost": "Verbinding verbroken. Opnieuw verbinden...", + "dismiss": "Afwijzen", "service_call_failed": "Kan service {service} niet aanroepen", "started": "Home Assistant is gestart!", "starting": "Home Assistant is aan het opstarten. Gedurende het opstarten zal niet alles beschikbaar zijn.", @@ -1200,6 +1206,9 @@ "trigger": "Trigger" }, "event": { + "context_user_pick": "Gebruiker toevoegen", + "context_user_picked": "Gebeurtenis door gebruiker", + "context_users": "Limiet voor gebeurtenissen die zijn geactiveerd door", "event_data": "Gebeurtenisdata", "event_type": "Gebeurtenistype", "label": "Gebeurtenis" @@ -2941,7 +2950,8 @@ "exit_edit_mode": "UI-bewerkingsmodus afsluiten", "help": "Help", "refresh": "Vernieuwen", - "reload_resources": "Herlaad bronnen" + "reload_resources": "Herlaad bronnen", + "start_conversation": "Gesprek starten" }, "reload_lovelace": "Lovelace herladen", "reload_resources": { diff --git a/translations/frontend/pl.json b/translations/frontend/pl.json index f32939c6a2..6fb49a3891 100644 --- a/translations/frontend/pl.json +++ b/translations/frontend/pl.json @@ -28,7 +28,7 @@ "climate": { "fan_mode": { "auto": "automatyczny", - "off": "wyłączony", + "off": "wył.", "on": "wł." }, "hvac_action": { @@ -106,7 +106,7 @@ "triggered": "wyzwolony" }, "automation": { - "off": "wyłączony", + "off": "wył.", "on": "wł." }, "binary_sensor": { @@ -286,7 +286,7 @@ "on": "wł." }, "sensor": { - "off": "wyłączony", + "off": "wył.", "on": "wł." }, "sun": { @@ -307,8 +307,8 @@ "docked": "w stacji dokującej", "error": "błąd", "idle": "nieaktywny", - "off": "wyłączony", - "on": "włączony", + "off": "wył.", + "on": "wł.", "paused": "wstrzymany", "returning": "powrót do stacji dokującej" }, @@ -575,29 +575,29 @@ "by_service": "przez usługę", "entries_not_found": "Nie znaleziono wpisów w dzienniku.", "messages": { - "became_unavailable": "jest niedostępny(-a)", - "changed_to_state": "zmienił się na {state}", - "cleared_device_class": "brak (nie {device_class} ruchu)", - "detected_device_class": "wykryto {device_class}", + "became_unavailable": "- encja stała się niedostępna", + "changed_to_state": "- stan encji zmienił się na {state}", + "cleared_device_class": "- encja przestała wykrywać {device_class}", + "detected_device_class": "- encja wykryła {device_class}", "rose": "wzeszło", "set": "zaszło", - "turned_off": "wyłączony(-a)", - "turned_on": "włączony(-a)", - "was_at_home": "był w domu", - "was_at_state": "był w {state}", - "was_away": "był poza domem", - "was_closed": "zostały(-o) zamknięte(-a)", - "was_connected": "został podłączony", - "was_disconnected": "został odłączony", - "was_locked": "został zamknięty", - "was_low": "był niski", - "was_normal": "był normalny", - "was_opened": "zostały(-o) otwarte(-a)", - "was_plugged_in": "został(-a) podłączony(-a)", - "was_safe": "nie było zagrożenia", - "was_unlocked": "został otwarty", - "was_unplugged": "został(-a) odłączony(-a)", - "was_unsafe": "było zagrożenie" + "turned_off": "- encja została wyłączona", + "turned_on": "- encja została włączona", + "was_at_home": "- stan encji zmienił się na \"w domu\"", + "was_at_state": "- stan encji zmienił się na {state}", + "was_away": "- stan encji zmienił się na \"poza domem\"", + "was_closed": "nastąpiło zamknięcie", + "was_connected": "nastąpiło podłączenie", + "was_disconnected": "nastąpiło odłączenie", + "was_locked": "nastąpiło zamknięcie", + "was_low": "- stan encji zmienił się na niski", + "was_normal": "- stan encji zmienił się na normalny", + "was_opened": "nastąpiło otwarcie", + "was_plugged_in": "nastąpiło podłączenie", + "was_safe": "- encja przestała wykrywać zagrożenie", + "was_unlocked": "nastąpiło otwarcie", + "was_unplugged": "nastąpiło odłączenie", + "was_unsafe": "- encja wykryła zagrożenie" } }, "media-browser": { @@ -695,6 +695,11 @@ }, "service-picker": { "service": "Usługa" + }, + "user-picker": { + "add_user": "Dodaj użytkownika", + "no_user": "Brak użytkownika", + "remove_user": "Usuń użytkownika" } }, "dialogs": { @@ -713,7 +718,7 @@ "dismiss": "Odrzuć", "editor": { "confirm_delete": "Czy na pewno chcesz usunąć ten wpis?", - "delete": "USUŃ", + "delete": "Usuń", "enabled_cause": "Wyłączone przez {cause}.", "enabled_description": "Wyłączone encje nie będą dostępne w Home Assistant.", "enabled_label": "Włącz encję", @@ -723,7 +728,7 @@ "name": "Nazwa", "note": "Uwaga: to może jeszcze nie działać ze wszystkimi integracjami.", "unavailable": "Ta encja nie jest obecnie dostępna.", - "update": "AKTUALIZUJ" + "update": "Aktualizuj" }, "faq": "dokumentacja", "no_unique_id": "Ta encja nie ma unikalnego identyfikatora, dlatego z poziomu interfejsu użytkownika nie można zarządzać jej ustawieniami. Więcej szczegółów znajdziesz w {faq_link}.", @@ -947,6 +952,7 @@ }, "notification_toast": { "connection_lost": "Utracono połączenie. Łączę ponownie...", + "dismiss": "Ukryj", "service_call_failed": "Nie udało się wywołać usługi {service}.", "started": "Home Assistant uruchomił się!", "starting": "Home Assistant uruchamia się, nie wszystko będzie dostępne, dopóki uruchamianie się nie zakończy.", @@ -1078,7 +1084,7 @@ "conditions": { "add": "Dodaj warunek", "delete": "Usuń", - "delete_confirm": "Czy chcesz usunąć?", + "delete_confirm": "Czy na pewno chcesz to usunąć?", "duplicate": "Duplikuj", "header": "Warunki", "introduction": "Warunki nie są wymagane w automatyzacji, ale zastosowanie ich wykluczy jej potencjalnie niechciane uruchomienia, póki logika każdego z nich przyjmuje wartość pozytywną.", @@ -1200,6 +1206,9 @@ "trigger": "Wyzwalacz" }, "event": { + "context_user_pick": "Dodaj użytkownika", + "context_user_picked": "Użytkownik wywołujący zdarzenie", + "context_users": "Tylko zdarzenia wywołane przez", "event_data": "Dane zdarzenia", "event_type": "Typ zdarzenia", "label": "Zdarzenie" @@ -1548,7 +1557,7 @@ "caption": "Urządzenia", "confirm_delete": "Czy na pewno chcesz usunąć to urządzenie?", "confirm_rename_entity_ids": "Czy chcesz także zmienić identyfikatory encji?", - "confirm_rename_entity_ids_warning": "Nie zmieni to żadnej konfiguracji (jak automatyzacje, skrypty, sceny, Lovelace), która obecnie używa tych encji, będziesz musiał je zaktualizować samodzielnie.", + "confirm_rename_entity_ids_warning": "Nie zmieni to żadnej konfiguracji (jak automatyzacje, skrypty, sceny, dashboardy), która obecnie używa tych encji. Będziesz musiał je zaktualizować samemu, by używać nowych identyfikatorów encji!", "data_table": { "area": "Obszar", "battery": "Bateria", @@ -1814,7 +1823,7 @@ "title_required": "Tytuł jest wymagany", "update": "Aktualizuj", "url": "URL", - "url_error_msg": "Adres URL nie może zawierać spacji ani znaków specjalnych, z wyjątkiem _ i -" + "url_error_msg": "Adres URL powininen zawierać -, a nie może zawierać spacji ani znaków specjalnych, z wyjątkiem _ i -" }, "picker": { "add_dashboard": "Dodaj dashboard", @@ -1829,7 +1838,7 @@ "open": "Otwórz" } }, - "description": "Konfiguruj dashboardy interfejsu użytkownika Lovelace", + "description": "Zarządzaj dashboardami interfejsu użytkownika Lovelace", "resources": { "cant_edit_yaml": "Korzystasz z interfejsu użytkownika Lovelace w trybie YAML, dlatego nie możesz zarządzać zasobami za pomocą interfejsu użytkownika. Zarządzaj nimi w pliku configuration.yaml.", "caption": "Zasoby", @@ -2312,7 +2321,7 @@ "create_group": "Zigbee Home Automation - utwórz grupę", "create_group_details": "Wprowadź wymagane dane, aby utworzyć nową grupę Zigbee", "creating_group": "Tworzenie grupy", - "description": "Twórz i modyfikuj grupy Zigbee", + "description": "Zarządzaj grupami Zigbee", "group_details": "Oto wszystkie szczegóły dotyczące zaznaczonej grupy Zigbee.", "group_id": "Identyfikator grupy", "group_info": "Informacje o grupie", @@ -2847,7 +2856,7 @@ "move_after": "Przesuń kartę za", "move_before": "Przesuń kartę przed", "options": "Więcej opcji", - "pick_card": "Wybierz kartę, którą chcesz dodać.", + "pick_card": "Którą kartę chcesz dodać?", "pick_card_view_title": "Którą kartę chcesz dodać do widoku {name}?", "search_cards": "Szukaj kart", "show_code_editor": "Edytor kodu", @@ -2941,7 +2950,8 @@ "exit_edit_mode": "Wyjdź z trybu edycji interfejsu użytkownika", "help": "Pomoc", "refresh": "Wczytaj ponownie", - "reload_resources": "Wczytaj ponownie zasoby" + "reload_resources": "Wczytaj ponownie zasoby", + "start_conversation": "Rozpocznij rozmowę" }, "reload_lovelace": "Wczytaj ponownie Lovelace", "reload_resources": { diff --git a/translations/frontend/ru.json b/translations/frontend/ru.json index 9c51a59359..0b8cf0bb96 100644 --- a/translations/frontend/ru.json +++ b/translations/frontend/ru.json @@ -695,6 +695,11 @@ }, "service-picker": { "service": "Служба" + }, + "user-picker": { + "add_user": "Добавить пользователя", + "no_user": "Нет пользователя", + "remove_user": "Удалить пользователя" } }, "dialogs": { @@ -871,7 +876,7 @@ "mqtt": "Перезагрузить объекты интеграции \"MQTT\"", "person": "Перезагрузить персоны", "ping": "Перезагрузить объекты интеграции \"Ping (ICMP)\"", - "reload": "Перезагрузить {domain}", + "reload": "Перезагрузить \"{domain}\"", "rest": "Перезагрузить объекты и службы уведомлений интеграции \"REST\"", "rpi_gpio": "Перезагрузить объекты интеграции \"Raspberry Pi GPIO\"", "scene": "Перезагрузить сцены", @@ -947,6 +952,7 @@ }, "notification_toast": { "connection_lost": "Соединение потеряно. Повторное подключение ...", + "dismiss": "Закрыть", "service_call_failed": "Не удалось вызвать службу {service}.", "started": "Home Assistant работает!", "starting": "Home Assistant запускается, пока что не всё может быть доступно.", @@ -1200,6 +1206,9 @@ "trigger": "Триггер" }, "event": { + "context_user_pick": "Добавить пользователя", + "context_user_picked": "Пользователь, вызывающий события", + "context_users": "Ограничить событиями, вызванными", "event_data": "Данные события", "event_type": "Тип события", "label": "Событие" @@ -2143,7 +2152,7 @@ "mqtt": "Перезагрузить объекты интеграции \"MQTT\"", "person": "Перезагрузить персоны", "ping": "Перезагрузить объекты интеграции \"Ping (ICMP)\"", - "reload": "Перезагрузить {domain}", + "reload": "Перезагрузить \"{domain}\"", "rest": "Перезагрузить объекты и службы уведомлений интеграции \"REST\"", "rpi_gpio": "Перезагрузить объекты интеграции \"Raspberry Pi GPIO\"", "scene": "Перезагрузить сцены", @@ -2941,7 +2950,8 @@ "exit_edit_mode": "Выход из режима редактирования интерфейса", "help": "Справка", "refresh": "Обновить", - "reload_resources": "Перезагрузить ресурсы" + "reload_resources": "Перезагрузить ресурсы", + "start_conversation": "Начать диалог" }, "reload_lovelace": "Перезагрузить пользовательский интерфейс", "reload_resources": { diff --git a/translations/frontend/zh-Hans.json b/translations/frontend/zh-Hans.json index dac40d4b30..fb56e41fea 100644 --- a/translations/frontend/zh-Hans.json +++ b/translations/frontend/zh-Hans.json @@ -695,6 +695,11 @@ }, "service-picker": { "service": "服务" + }, + "user-picker": { + "add_user": "添加用户", + "no_user": "没有用户", + "remove_user": "删除用户" } }, "dialogs": { @@ -947,6 +952,7 @@ }, "notification_toast": { "connection_lost": "连接中断。正在重新连接...", + "dismiss": "关闭", "service_call_failed": "调用服务 {service} 失败。", "started": "Home Assistant 已启动!", "starting": "Home Assistant 正在启动。在启动完成前,部分功能暂不可用。", @@ -1200,6 +1206,9 @@ "trigger": "触发条件" }, "event": { + "context_user_pick": "添加用户", + "context_user_picked": "用户触发事件", + "context_users": "仅限以下用户触发事件", "event_data": "事件数据", "event_type": "事件类型", "label": "事件" @@ -2941,7 +2950,8 @@ "exit_edit_mode": "退出 UI 编辑模式", "help": "帮助", "refresh": "刷新", - "reload_resources": "重载资源" + "reload_resources": "重载资源", + "start_conversation": "开始对话" }, "reload_lovelace": "重新加载 Lovelace", "reload_resources": { From d3fda9a8217fe1056824ba4df0809e5766bd154a Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Fri, 23 Oct 2020 16:29:27 +0200 Subject: [PATCH 014/125] Ensure attribute values are consistently right aligned (#7466) --- src/components/ha-attributes.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/ha-attributes.ts b/src/components/ha-attributes.ts index 892148e664..7f3966bc26 100644 --- a/src/components/ha-attributes.ts +++ b/src/components/ha-attributes.ts @@ -63,13 +63,14 @@ class HaAttributes extends LitElement { .data-entry .value { max-width: 200px; overflow-wrap: break-word; + text-align: right; } .key:first-letter { text-transform: capitalize; } .attribution { color: var(--secondary-text-color); - text-align: right; + text-align: center; } pre { font-family: inherit; From b8f3fcf00bcdc1011e71b2e198da73f0aa040fe2 Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Fri, 23 Oct 2020 16:43:20 +0200 Subject: [PATCH 015/125] Allow discovered integration titles to line wrap (#7468) --- src/panels/config/integrations/ha-config-integrations.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/panels/config/integrations/ha-config-integrations.ts b/src/panels/config/integrations/ha-config-integrations.ts index 744b3d0e8e..7c5e42b2bb 100644 --- a/src/panels/config/integrations/ha-config-integrations.ts +++ b/src/panels/config/integrations/ha-config-integrations.ts @@ -739,6 +739,13 @@ class HaConfigIntegrations extends SubscribeMixin(LitElement) { } h2 { margin-top: 0; + word-wrap: break-word; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 3; + overflow: hidden; + text-overflow: ellipsis; + white-space: normal; } `, ]; From 98b2b796b05b553b7d287cf5102d53c1a00a2fe8 Mon Sep 17 00:00:00 2001 From: Ryan Meek <25127328+maykar@users.noreply.github.com> Date: Fri, 23 Oct 2020 18:53:11 -0400 Subject: [PATCH 016/125] fix edit mode mwc-button size (#7472) --- src/components/ha-sidebar.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ha-sidebar.ts b/src/components/ha-sidebar.ts index 086b0bfdba..2f1f473ca4 100644 --- a/src/components/ha-sidebar.ts +++ b/src/components/ha-sidebar.ts @@ -781,7 +781,7 @@ class HaSidebar extends LitElement { display: initial; } .title mwc-button { - width: 100%; + width: 90%; } #sortable, .hidden-panel { From e2f27568a5f8c80b4643b4e1542355b4a9241e5d Mon Sep 17 00:00:00 2001 From: HomeAssistant Azure Date: Sat, 24 Oct 2020 00:32:12 +0000 Subject: [PATCH 017/125] [ci skip] Translation update --- translations/frontend/ca.json | 6 ++++-- translations/frontend/cs.json | 6 ++++-- translations/frontend/de.json | 26 +++++++++++++++++++++----- translations/frontend/es.json | 6 ++++-- translations/frontend/et.json | 21 +++++++++++++-------- translations/frontend/he.json | 2 +- translations/frontend/nb.json | 6 ++++-- translations/frontend/pl.json | 8 +++++--- translations/frontend/ru.json | 6 ++++-- translations/frontend/sv.json | 2 +- translations/frontend/uk.json | 2 +- translations/frontend/zh-Hans.json | 4 +++- translations/frontend/zh-Hant.json | 18 +++++++++++++++--- 13 files changed, 80 insertions(+), 33 deletions(-) diff --git a/translations/frontend/ca.json b/translations/frontend/ca.json index 41eabeb61f..e8f273af6c 100644 --- a/translations/frontend/ca.json +++ b/translations/frontend/ca.json @@ -2540,10 +2540,11 @@ "entity": "Entitat", "jinja_documentation": "Documentació sobre plantilles amb Jinja2", "listeners": "Aquesta plantilla escolta als següents esdeveniments de canvi d'estat:", - "no_listeners": "Aquesta plantilla no escolta cap esdeveniment de canvi d'estat i no s'actualitza automàticament.", + "no_listeners": "Aquesta plantilla no escolta cap esdeveniment i no s'actualitzarà automàticament.", "reset": "Restableix a la plantilla de demostració", + "result_type": "Tipus de resultat", "template_extensions": "Extensions de plantilla de Home Assistant", - "time": "Aquesta plantilla s'actualitza cada 60 segons després de l'últim canvi d'estat.", + "time": "Aquesta plantilla s'actualitza al començament de cada minut.", "title": "Plantilla", "unknown_error_template": "Error desconegut renderitzant plantilla" } @@ -2686,6 +2687,7 @@ "entity-id": "ID de l'entitat", "last-changed": "Últim canvi", "last-triggered": "Disparada per última vegada", + "last-updated": "Última actualització", "none": "Sense informació secundària", "position": "Posició", "tilt-position": "Inclinació" diff --git a/translations/frontend/cs.json b/translations/frontend/cs.json index 1ded8cf167..0e9eec5f66 100644 --- a/translations/frontend/cs.json +++ b/translations/frontend/cs.json @@ -2540,10 +2540,11 @@ "entity": "Entita", "jinja_documentation": "Dokumentace šablony Jinja2", "listeners": "Tato šablona naslouchá následujícím změnám stavu:", - "no_listeners": "Tato šablona neposlouchá žádné změny stavu a nebude se automaticky aktualizovat.", + "no_listeners": "Tato šablona nenaslouchá žádným událostem a nebude automaticky aktualizována.", "reset": "Obnovit ukázkovou šablonu", + "result_type": "Typ výsledku", "template_extensions": "Rozšíření šablony Home Assistant", - "time": "Tato šablona se aktualizuje každých 60 sekund po poslední změně stavu.", + "time": "Tato šablona se aktualizuje na začátku každé minuty.", "title": "Šablony", "unknown_error_template": "Šablona vykreslování neznámých chyb" } @@ -2686,6 +2687,7 @@ "entity-id": "ID entity", "last-changed": "Naposledy změněno", "last-triggered": "Naposledy spuštěno", + "last-updated": "Naposledy aktualizováno", "none": "Žádné doplňující informace", "position": "Pozice", "tilt-position": "Náklon" diff --git a/translations/frontend/de.json b/translations/frontend/de.json index 9d3b7096c7..0bfd7970e4 100644 --- a/translations/frontend/de.json +++ b/translations/frontend/de.json @@ -694,6 +694,11 @@ }, "service-picker": { "service": "Dienst" + }, + "user-picker": { + "add_user": "Benutzer hinzufügen", + "no_user": "Kein Benutzer", + "remove_user": "Benutzer entfernen" } }, "dialogs": { @@ -933,6 +938,7 @@ }, "notification_toast": { "connection_lost": "Verbindung getrennt. Verbinde erneut...", + "dismiss": "Ausblenden", "service_call_failed": "Fehler beim Aufrufen des Diensts {service}.", "started": "Home Assistant wurde vollständig gestartet!", "starting": "Home Assistant startet. Währenddessen kann es sein, dass nicht alles verfügbar ist.", @@ -1185,6 +1191,7 @@ "trigger": "Auslöser" }, "event": { + "context_user_pick": "Benutzer hinzufügen", "event_data": "Ereignisdaten", "event_type": "Ereignistyp", "label": "Ereignis" @@ -1508,7 +1515,8 @@ "automation": { "actions": { "caption": "Wenn etwas ausgelöst wird ...", - "no_actions": "Keine Aktionen" + "no_actions": "Keine Aktionen", + "unknown_action": "Unbekannte Aktion" }, "automations": "Automatisierungen", "conditions": { @@ -1872,7 +1880,8 @@ "navigation": { "network": "Netzwerk", "node": { - "config": "Konfig" + "config": "Konfig", + "dashboard": "Dashboard" }, "select_instance": "Instanz auswählen" }, @@ -1892,11 +1901,15 @@ "network": { "header": "Netzwerkverwaltung" }, + "node_config": { + "help_source": "Konfigurationsparameterbeschreibungen und Hilfstext werden vom OpenZWave-Projekt bereitgestellt." + }, "node_metadata": { "product_manual": "Produkthandbuch" }, "node_query_stages": { - "associations": "Aktualisiert die verbundenen Gruppen und Mitgliedschaften" + "associations": "Aktualisiert die verbundenen Gruppen und Mitgliedschaften", + "complete": "Der Interviewprozess ist abgeschlossen" }, "node": { "button": "Gerätedetails", @@ -2595,8 +2608,10 @@ "entity-id": "Entitäts-ID", "last-changed": "Zuletzt geändert", "last-triggered": "Zuletzt ausgelöst", + "last-updated": "Zuletzt aktualisiert", "none": "Keine Sekundärinfo", - "position": "Position" + "position": "Position", + "tilt-position": "Neigungsposition" }, "show_header_toggle": "Schalter anzeigen?", "special_row": "spezielle Reihe", @@ -2858,7 +2873,8 @@ "exit_edit_mode": "Schließen des UI-Bearbeitungsmodus", "help": "Hilfe", "refresh": "Aktualisieren", - "reload_resources": "Ressourcen neu laden" + "reload_resources": "Ressourcen neu laden", + "start_conversation": "Konversation starten" }, "reload_lovelace": "Benutzeroberfläche neu laden", "reload_resources": { diff --git a/translations/frontend/es.json b/translations/frontend/es.json index 2fa797a52b..d5b9446f27 100644 --- a/translations/frontend/es.json +++ b/translations/frontend/es.json @@ -2540,10 +2540,11 @@ "entity": "Entidad", "jinja_documentation": "Documentación de plantilla Jinja2", "listeners": "Esta plantilla escucha los siguientes eventos de cambio de estado:", - "no_listeners": "Esta plantilla no escucha ningún evento de cambio de estado y no se actualizará automáticamente.", + "no_listeners": "Esta plantilla no escucha ningún evento y no se actualizará automáticamente.", "reset": "Reiniciar a la plantilla de demostración", + "result_type": "Tipo de resultado", "template_extensions": "Extensiones de plantilla de Home Assistant", - "time": "Esta plantilla se actualiza cada 60 segundos después del último evento de cambio de estado.", + "time": "Esta plantilla se actualiza al comienzo de cada minuto.", "title": "Plantillas", "unknown_error_template": "Error desconocido al mostrar la plantilla" } @@ -2686,6 +2687,7 @@ "entity-id": "ID de entidad", "last-changed": "Último cambio", "last-triggered": "Última activación", + "last-updated": "Última actualización", "none": "Sin información secundaria", "position": "Posición", "tilt-position": "Posición de inclinación" diff --git a/translations/frontend/et.json b/translations/frontend/et.json index 368259bfc6..b5e310aef3 100644 --- a/translations/frontend/et.json +++ b/translations/frontend/et.json @@ -577,14 +577,14 @@ "messages": { "became_unavailable": "muutus kättesaamatuks", "changed_to_state": "muutus olekusse {state}", - "cleared_device_class": "kustutatud ( {device_class} ei leitud)", + "cleared_device_class": "lõpetatud ( {device_class} ei leitud)", "detected_device_class": "tuvastati {device_class}", "rose": "tõusis", "set": "määratud", "turned_off": "lülitus välja", "turned_on": "lülitus sisse", "was_at_home": "oli kodus", - "was_at_state": "oli olekus {state}", + "was_at_state": "oli @ {state}", "was_away": "oli ära", "was_closed": "sulgus", "was_connected": "ühendus", @@ -698,6 +698,7 @@ }, "user-picker": { "add_user": "Lisa kasutaja", + "no_user": "Kasutaja puudub", "remove_user": "Kustuta kasutaja" } }, @@ -915,7 +916,7 @@ "manuf": "{manufacturer} järgi", "no_area": "Ala puudub", "power_source": "Toiteallikas", - "quirk": "Veidrus", + "quirk": "Erim", "services": { "reconfigure": "Taasseadista (tervenda) ZHA seade. Kasuta seda, kui seadmega on probleeme. Kui seade on akutoitega, siis veendu, et see oleks ärkvel ja oleks valmis käske vastu võtma.", "remove": "Eemalda seade Zigbee võrgust.", @@ -1206,6 +1207,8 @@ }, "event": { "context_user_pick": "Lisa kasutaja", + "context_user_picked": "Kasutaja kes vallandas sündmuse", + "context_users": "Piira sündmustega mille on käivitanud", "event_data": "Sündmuse andmed", "event_type": "Sündmuse tüüp", "label": "Sündmus" @@ -1507,7 +1510,7 @@ "customize": { "attributes_customize": "Need atribuudid on juba määratud kirjes customize.yaml", "attributes_not_set": "Neid olemi atribuute ei määratud. Kui soovite, määrake need.", - "attributes_outside": "Need olemi atribuudid on kohandatud väljastpoolt customize.yaml", + "attributes_outside": "Need olemi atribuudid on kohandatud väljastpool customize.yaml-i", "attributes_override": "Soovi korral saate neid muuta.", "attributes_set": "Need olemi atribuudid määratakse programmiliselt.", "caption": "Kohandamised", @@ -1698,7 +1701,7 @@ }, "integration_panel_move": { "link_integration_page": "Sidumiste leht", - "missing_zha": "Puudub ZHA konfigureerimispaneel? See teisaldati lehele {integrations_page} ZHA kirje juurde.", + "missing_zha": "Ei näe ZHA konfigureerimispaneeli? See teisaldati lehele {integrations_page} ZHA kirje juurde.", "missing_zwave": "Puudub Z-Wave konfigureerimispaneel? See teisaldati lehele {integrations_page} Z-Wave kirje juurde." }, "integrations": { @@ -2537,10 +2540,11 @@ "entity": "Olem", "jinja_documentation": "Jinja2 malli dokumentatsioon", "listeners": "See mall kuulab järgmisi olekuga muutunud sündmusi:", - "no_listeners": "See mall ei kuula olekuga muudetud sündmusi ega värskenda seda automaatselt.", + "no_listeners": "See mall ei kuula olekuga muudetud sündmusi ega värskendu automaatselt.", "reset": "Lähtesta demomallile", + "result_type": "Tulemuse tüüp", "template_extensions": "Home Assistanti mallilaiendid", - "time": "See mall värskendub iga 60 sekundi järel pärast viimast olekut muutnud sündmust.", + "time": "See mall värskendub iga minuti alguses.", "title": "Mall", "unknown_error_template": "Malli renderdamisel ilmnes tundmatu viga" } @@ -2683,6 +2687,7 @@ "entity-id": "Olemi ID", "last-changed": "Viimati muudetud", "last-triggered": "Viimati vallandunud", + "last-updated": "Viimati uuendatud", "none": "Teisene teave puudub", "position": "Asend", "tilt-position": "Kalle" @@ -3264,7 +3269,7 @@ "dark_mode": { "auto": "Automaatne", "dark": "Tume", - "light": "Tuled" + "light": "Hele" }, "dropdown_label": "Teema", "error_no_theme": "Teemasid pole saadaval.", diff --git a/translations/frontend/he.json b/translations/frontend/he.json index b9332f7918..7c314b5a13 100644 --- a/translations/frontend/he.json +++ b/translations/frontend/he.json @@ -1471,7 +1471,7 @@ "confirm_partly_text": "אתה יכול להסיר רק את {removable} מהישויות שנבחרו {selected}. ניתן להסיר ישויות רק כאשר האינטגרציה כבר לא מספקת את הישויות. לפעמים אתה צריך להפעיל מחדש את עוזר הבית לפני שתוכל להסיר את הישויות של אינטגרציה שהוסרה. האם אתה בטוח שברצונך להסיר את הישויות הניתנות להסרה?", "confirm_partly_title": "ניתן להסיר רק {number} ישויות שנבחרו.", "confirm_text": "עליך להסיר אותם מתצורת ה- Lovelace ומהאוטומציות שלך אם הם מכילים ישויות אלה.", - "confirm_title": "האם ברצונך להסיר {מספר} ישויות?" + "confirm_title": "האם ברצונך להסיר {number} ישויות?" }, "search": "חיפוש ישויות", "selected": "{number} נבחרו", diff --git a/translations/frontend/nb.json b/translations/frontend/nb.json index f23810f7e5..376e7fe30d 100644 --- a/translations/frontend/nb.json +++ b/translations/frontend/nb.json @@ -2540,10 +2540,11 @@ "entity": "Entitet", "jinja_documentation": "Jinja2 mal dokumentasjon", "listeners": "Denne malen lytter etter følgende tilstand endret hendelser:", - "no_listeners": "Denne malen lytter ikke etter noen tilstand endret hendelser og oppdateres ikke automatisk.", + "no_listeners": "Denne malen lytter ikke etter noen hendelser og oppdateres ikke automatisk.", "reset": "Tilbakestill til demomal", + "result_type": "Resultat type", "template_extensions": "Mal utvidelser for Home Assistant", - "time": "Denne malen oppdateres hvert 60. sekund etter den siste endrede hendelsen", + "time": "Denne malen oppdateres i begynnelsen av hvert minutt.", "title": "Mal", "unknown_error_template": "Ukjent feil ved rendring av mal" } @@ -2686,6 +2687,7 @@ "entity-id": "Entitets-ID", "last-changed": "Sist endret", "last-triggered": "Sist utløst", + "last-updated": "Sist oppdatert", "none": "Ingen sekundær info", "position": "Posisjon", "tilt-position": "Vippeposisjon" diff --git a/translations/frontend/pl.json b/translations/frontend/pl.json index 6fb49a3891..faf7e3f06d 100644 --- a/translations/frontend/pl.json +++ b/translations/frontend/pl.json @@ -1823,7 +1823,7 @@ "title_required": "Tytuł jest wymagany", "update": "Aktualizuj", "url": "URL", - "url_error_msg": "Adres URL powininen zawierać -, a nie może zawierać spacji ani znaków specjalnych, z wyjątkiem _ i -" + "url_error_msg": "Adres URL powinien zawierać -, a nie może zawierać spacji ani znaków specjalnych, z wyjątkiem _ i -" }, "picker": { "add_dashboard": "Dodaj dashboard", @@ -2540,10 +2540,11 @@ "entity": "Encja", "jinja_documentation": "Dokumentacja szablonów Jinja2", "listeners": "Ten szablon nasłuchuje następujących zdarzeń zmiany stanu:", - "no_listeners": "Ten szablon nie nasłuchuje żadnych zdarzeń zmiany stanu i nie zostanie zaktualizowany automatycznie.", + "no_listeners": "Ten szablon nie nasłuchuje żadnych zdarzeń i nie zostanie zaktualizowany automatycznie.", "reset": "Zresetuj do szablonu demonstracyjnego", + "result_type": "Rodzaj wyniku", "template_extensions": "Rozszerzenia szablonów Home Assistant", - "time": "Ten szablon aktualizuje się co 60 sekund po ostatniej zmianie stanu.", + "time": "Ten szablon aktualizuje się z rozpoczęciem każdej minuty.", "title": "Szablon", "unknown_error_template": "Nieznany błąd podczas renderowania szablonu" } @@ -2686,6 +2687,7 @@ "entity-id": "Identyfikator encji", "last-changed": "Ostatnia zmiana", "last-triggered": "Ostatnie uruchomienie", + "last-updated": "Ostatnia aktualizacja", "none": "Brak dodatkowych informacji", "position": "Pozycja", "tilt-position": "Pochylenie" diff --git a/translations/frontend/ru.json b/translations/frontend/ru.json index 0b8cf0bb96..4472a1a3dd 100644 --- a/translations/frontend/ru.json +++ b/translations/frontend/ru.json @@ -2540,10 +2540,11 @@ "entity": "Объект", "jinja_documentation": "Узнайте больше о шаблонизаторе Jinja2", "listeners": "Этот шаблон отслеживает следующие события изменения состояния:", - "no_listeners": "Этот шаблон не отслеживает события изменения состояния и не обновляется автоматически.", + "no_listeners": "Этот шаблон не отслеживает никаких событий и не будет обновляться автоматически.", "reset": "Вернуться к демонстрационному шаблону", + "result_type": "Тип результата", "template_extensions": "Узнайте больше о шаблонах Home Assistant", - "time": "Этот шаблон обновляется каждые 60 секунд после последнего события изменения состояния.", + "time": "Этот шаблон обновляется в начале каждой минуты.", "title": "Шаблоны", "unknown_error_template": "Неизвестная ошибка при визуализации шаблона." } @@ -2686,6 +2687,7 @@ "entity-id": "ID объекта", "last-changed": "Последнее изменение", "last-triggered": "Последний запуск", + "last-updated": "Последнее обновление", "none": "Без дополнительной информации", "position": "Положение", "tilt-position": "Наклон" diff --git a/translations/frontend/sv.json b/translations/frontend/sv.json index 3bdaf081fc..2182c235e2 100644 --- a/translations/frontend/sv.json +++ b/translations/frontend/sv.json @@ -1487,7 +1487,7 @@ } }, "devices": { - "add_prompt": "Inget {name} har lagts till med hjälp av den här enheten ännu. Du kan lägga till en genom att klicka på + knappen ovan.", + "add_prompt": "Inga {name} har lagts till med hjälp av den här enheten ännu. Du kan lägga till genom att klicka på + knappen ovan.", "automation": { "actions": { "caption": "När något utlöses..." diff --git a/translations/frontend/uk.json b/translations/frontend/uk.json index 1eeed24ed6..e4bed65e19 100644 --- a/translations/frontend/uk.json +++ b/translations/frontend/uk.json @@ -1888,7 +1888,7 @@ "validation": { "check_config": "Перевірити конфігурацію", "heading": "Перевірка конфігурації", - "introduction": "Перевірте вашу конфігурацію, якщо ви нещодавно внесли деякі зміни у вашу конфігурацію та хочете переконатися, що вона є дійсною", + "introduction": "Перевірте вашу конфігурацію, якщо ви нещодавно внесли деякі зміни у вашу конфігурацію та хочете переконатися, що вона вірна.", "invalid": "Конфігурація недійсна", "valid": "Конфігурація дійсна!" } diff --git a/translations/frontend/zh-Hans.json b/translations/frontend/zh-Hans.json index fb56e41fea..e344599b9d 100644 --- a/translations/frontend/zh-Hans.json +++ b/translations/frontend/zh-Hans.json @@ -2542,8 +2542,9 @@ "listeners": "此模板监听以下状态改变事件:", "no_listeners": "此模板不监听任何状态改变事件,并且不会自动更新。", "reset": "重置为演示模板", + "result_type": "结果类型", "template_extensions": "Home Assistant 模板插件", - "time": "此模板在最后一次状态变化事件后每 60 秒更新一次。", + "time": "此模板在每分钟初更新。", "title": "模板", "unknown_error_template": "渲染模板时发生了未知错误" } @@ -2686,6 +2687,7 @@ "entity-id": "实体 ID", "last-changed": "上次变化", "last-triggered": "上次触发", + "last-updated": "上次更新", "none": "无次要信息", "position": "位置", "tilt-position": "倾斜位置" diff --git a/translations/frontend/zh-Hant.json b/translations/frontend/zh-Hant.json index a4328ed471..4153db8820 100644 --- a/translations/frontend/zh-Hant.json +++ b/translations/frontend/zh-Hant.json @@ -695,6 +695,11 @@ }, "service-picker": { "service": "服務" + }, + "user-picker": { + "add_user": "新增用戶", + "no_user": "沒有用戶", + "remove_user": "移除用戶" } }, "dialogs": { @@ -947,6 +952,7 @@ }, "notification_toast": { "connection_lost": "連線中斷。重新連線中...", + "dismiss": "關閉", "service_call_failed": "服務 {service} 執行失敗。", "started": "Home Assistant 已啟動!", "starting": "Home Assistant 正在啟動,在完成載入前、可能無法顯示所有功能。", @@ -1200,6 +1206,9 @@ "trigger": "觸發自動化" }, "event": { + "context_user_pick": "新增用戶", + "context_user_picked": "用戶觸發事件", + "context_users": "限制觸發事件", "event_data": "事件資料", "event_type": "事件類別", "label": "事件" @@ -2531,10 +2540,11 @@ "entity": "實體", "jinja_documentation": "Jinja2 模版文件", "listeners": "此模板監聽以下狀態變更事件:", - "no_listeners": "此模板不監聽任何狀態變更事件,將不會自動更新。", + "no_listeners": "此模板不監聽任何狀態變更事件,將不自動更新。", "reset": "重置示範範模板", + "result_type": "結果類型", "template_extensions": "Home Assistant 模板擴充", - "time": "此模板於上次狀態變更事件後每 60 秒更新一次。", + "time": "此模板於上次狀態變更事件後每分鐘更新一次。", "title": "模板", "unknown_error_template": "未知渲染模版錯誤" } @@ -2677,6 +2687,7 @@ "entity-id": "實體 ID", "last-changed": "上次變更", "last-triggered": "上次觸發", + "last-updated": "最後更新", "none": "無次要資訊", "position": "位置", "tilt-position": "標題位置" @@ -2941,7 +2952,8 @@ "exit_edit_mode": "退出 UI 編輯模式", "help": "說明", "refresh": "更新", - "reload_resources": "重新載入資源" + "reload_resources": "重新載入資源", + "start_conversation": "開始對話" }, "reload_lovelace": "重新載入 UI", "reload_resources": { From 28853b28bc56c4f1c221c51b7f262b67ab3549c4 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 24 Oct 2020 08:26:18 -0500 Subject: [PATCH 018/125] Show cover attributes on the more-info card (#7458) --- src/dialogs/more-info/controls/more-info-cover.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/dialogs/more-info/controls/more-info-cover.js b/src/dialogs/more-info/controls/more-info-cover.js index d2d0d8770e..4e26d57e86 100644 --- a/src/dialogs/more-info/controls/more-info-cover.js +++ b/src/dialogs/more-info/controls/more-info-cover.js @@ -64,6 +64,10 @@ class MoreInfoCover extends LocalizeMixin(PolymerElement) {
+ `; } From 21867c3576c78223e6a0fa449892731cdc34c712 Mon Sep 17 00:00:00 2001 From: HomeAssistant Azure Date: Sun, 25 Oct 2020 00:32:37 +0000 Subject: [PATCH 019/125] [ci skip] Translation update --- translations/frontend/cy.json | 87 ++++++- translations/frontend/hu.json | 385 ++++++++++++++++++++++++++--- translations/frontend/ja.json | 13 +- translations/frontend/nb.json | 6 +- translations/frontend/nl.json | 14 +- translations/frontend/zh-Hant.json | 18 +- 6 files changed, 467 insertions(+), 56 deletions(-) diff --git a/translations/frontend/cy.json b/translations/frontend/cy.json index 15f461bf91..5804d92c29 100644 --- a/translations/frontend/cy.json +++ b/translations/frontend/cy.json @@ -376,17 +376,31 @@ }, "service-picker": { "service": "Gwasanaeth" + }, + "user-picker": { + "add_user": "Ychwanegu defnyddiwr", + "no_user": "Dim defnyddiwr", + "remove_user": "Tynnu defnyddiwr" } }, "dialogs": { "entity_registry": { "editor": { "delete": "Dileu", + "icon": "Eicon", + "name": "Enw", "update": "Diweddariad" }, "no_unique_id": "Nid oes gan yr endid hwn ID unigryw, felly ni ellir rheoli ei osodiadau o'r UI." }, "helper_settings": { + "counter": { + "initial": "Gwerth cychwynnol", + "maximum": "Gwerth mwyaf", + "minimum": "Gwerth lleiaf", + "restore": "Adfer y gwerth hysbys diwethaf pan fydd Home Assistant yn cychwyn", + "step": "Maint cam" + }, "input_datetime": { "date": "Dyddiad", "datetime": "Dyddiad ac amser", @@ -401,6 +415,9 @@ "min": "Hyd lleiaf" }, "platform_not_loaded": "Nid yw'r integreiddiad {platform} wedi'i lwytho. Ychwanegwch eich cyfluniad ato naill ai trwy ychwanegu 'default_config:' neu ''{platform}:''.", + "timer": { + "duration": "Hyd" + }, "yaml_not_editable": "Ni ellir olygu gosodiadau'r endid hwn o'r UI. Dim ond endidau a sefydlwyd o'r UI y gellir eu ffurfweddu o'r UI." }, "more_info_control": { @@ -432,7 +449,11 @@ "remember": "Cofiwch" }, "notification_drawer": { - "close": "Cau" + "close": "Cau", + "dismiss_all": "Diystyru popeth" + }, + "notification_toast": { + "dismiss": "Gwrthod" }, "panel": { "config": { @@ -570,6 +591,9 @@ "type_select": "Math sbardun", "type": { "event": { + "context_user_pick": "Ychwanegu defnyddiwr", + "context_user_picked": "Digwyddiad tanio defnyddiwr", + "context_users": "Cyfyngiad i ddigwyddiadau a ysgogwyd gan", "event_data": "Data Digwyddiad", "event_type": "Math o ddigwyddiad", "label": "Digwyddiad" @@ -694,8 +718,24 @@ } }, "devices": { + "automation": { + "actions": { + "no_actions": "Dim gweithrediadau", + "unknown_action": "Gweithred anhysbys" + }, + "conditions": { + "no_conditions": "Dim amodau", + "unknown_condition": "Cyflwr anhysbys" + }, + "triggers": { + "no_triggers": "Dim sbardunau", + "unknown_trigger": "Sbardun anhysbys" + }, + "unknown_automation": "Awtomeiddiad anhysbys" + }, "confirm_delete": "Ydych chi'n siŵr eich bod eisiau dileu y ddyfais hon?", "confirm_rename_entity_ids": "A ydych chi hefyd eisiau ailenwi enwau eich endidau?", + "confirm_rename_entity_ids_warning": "Ni fydd hyn yn newid unrhyw ffurfweddiad (fel awtomeiddio, sgriptiau, golygfeydd, dashfyrddau) sy'n defnyddio'r endidau hyn ar hyn o bryd! Bydd yn rhaid i chi eu diweddaru eich hun i ddefnyddio'r IDau endid newydd!", "data_table": { "area": "Ardal", "battery": "Batri", @@ -715,12 +755,22 @@ "caption": "Gofrestrfa Endid", "description": "Trosolwg o holl endidau hysbys.", "picker": { + "filter": { + "hidden_entities": "{rhif} cudd {rhif, lluosog,\n un {endid}\n {endidau} eraill}\n}", + "show_all": "Dangos popeth" + }, "header": "Gofrestrfa Endid", "introduction": "Mae Home Assistant yn cadw gofrestrfa pob endid a welodd erioed ble gellir eu nodi yn unigryw. Bydd pob un endid wedi neilltuo efo endid adnabod sy'n cael eu cadw ar gyfer yr endid hwnnw.", "introduction2": "Defnyddiwch y gofrestrfa endid i ddiystyru yr enw, newid ID endid neu gael gwared y cofnod Home Assistant. Noder, ni fydd dileu'r cofnod cofrestrfa endid yn dileu yr endid. I wneud hynny, dilynwch y ddolen isod a thynnu oddi ar y dudalen integreiddio." } }, "header": "Ffurfweddu Home Assistant", + "helpers": { + "types": { + "counter": "Cownter", + "timer": "Amserydd" + } + }, "integrations": { "caption": "Integreiddiadau", "config_entry": { @@ -791,10 +841,16 @@ "common": { "controller": "Rheolwr", "instance": "Enghraifft", - "network": "Rhwydwaith" + "network": "Rhwydwaith", + "query_stage": "Cyfnod Ymholiad", + "wakeup_instructions": "Cyfarwyddiadau Deffro" }, "navigation": { "network": "Rhwydwaith", + "node": { + "config": "Ffurfweddu", + "dashboard": "Dashfwrdd" + }, "nodes": "Nodau", "select_instance": "Dewis Enghraifft" }, @@ -823,6 +879,15 @@ "introduction": "Rheoli swyddogaethau rhwydwaith-lydan", "node_count": "nodau {count}" }, + "node_config": { + "header": "Ffurfweddu nod", + "help_source": "Darperir disgrifiadau paramedr a thestun cymorth gan brosiect OpenZWave.", + "introduction": "Rheoli'r gwahanol baramedrau ffurfweddu ar gyfer nod Z-Wave.", + "wakeup_help": "Rhaid i nodau wedi'u pweru gan fatri fod yn effro i newid eu cyfluniad. Os nad yw'r nod yn effro, bydd OpenZWave yn ceisio diweddaru cyfluniad y nod tro nesaf y bydd yn deffro, a allai fod yn oriau lluosog (neu ddyddiau) yn ddiweddarach. Dilynwch y camau hyn i ddeffro'ch dyfais:" + }, + "node_metadata": { + "product_manual": "Llawlyfr Cynnyrch" + }, "select_instance": { "header": "Dewiswch Enghraifft OpenZWave", "introduction": "Mae gennych fwy nag un enghraifft OpenZWave yn rhedeg. Pa enghraifft hoffech chi ei rheoli?" @@ -912,6 +977,9 @@ } } }, + "tags": { + "learn_more": "Dysgu mwy am dagiau" + }, "users": { "add_user": { "caption": "Ychwanegu defnyddiwr", @@ -999,7 +1067,10 @@ "title": "Cyflerau" }, "templates": { + "no_listeners": "Nid yw'r templed hwn yn gwrando am unrhyw ddigwyddiadau ac ni fydd yn diweddaru'n awtomatig.", "reset": "Ailosod i dempled demo", + "result_type": "Math canlyniad", + "time": "Mae'r templed yma yn diweddaru ar ddechrau pob munud.", "title": "Templedi" } } @@ -1066,7 +1137,10 @@ }, "entities": { "description": "Y cerdyn Endidau yw'r math mwyaf cyffredin o gerdyn. Mae'n grwpio eitemau gyda'i gilydd fewn i restrau.", - "name": "Endidau" + "name": "Endidau", + "secondary_info_values": { + "last-updated": "Diweddarwyd Ddiwethaf" + } }, "entity-filter": { "description": "Mae'r cerdyn Hidlo Endid yn caniatáu ichi ddiffinio rhestr o endidau ydych eisiau diilyn pan fyddant mewn cyflwr penodol.", @@ -1166,6 +1240,9 @@ "custom_card": "Custom", "no_description": "Dim disgrifiad ar gael." }, + "edit_badges": { + "panel_mode": "Ni fydd y bathodynnau hyn yn cael eu harddangos oherwydd bod y farn hon yn \"Modd Panel\"." + }, "edit_card": { "add": "Ychwanegu Cerdyn", "delete": "Dileu", @@ -1224,6 +1301,7 @@ }, "view": { "panel_mode": { + "description": "Mae hyn yn golygu bod y cerdyn cyntaf yn ei led llawn. Ni fydd cardiau eraill yn y gweddlun hon yn ogystal â bathodynnau yn cael ei rendro.", "warning_multiple_cards": "Mae'r golwg yn cynnwys mwy nag un cerdyn, ond dim ond un cerdyn gall y golwg panel ei ddangos." } } @@ -1234,7 +1312,8 @@ "exit_edit_mode": "Gadael modd golygu UI", "help": "Help", "refresh": "Adnewyddu", - "reload_resources": "Ail-lwytho adnoddau" + "reload_resources": "Ail-lwytho adnoddau", + "start_conversation": "Cychwyn sgwrs" }, "reload_lovelace": "Ail-lwytho Lovelace", "reload_resources": { diff --git a/translations/frontend/hu.json b/translations/frontend/hu.json index b01c7ee5ad..f58167a447 100644 --- a/translations/frontend/hu.json +++ b/translations/frontend/hu.json @@ -19,6 +19,7 @@ "logbook": "Napló", "mailbox": "Postafiók", "map": "Térkép", + "media_browser": "Médiaböngésző", "profile": "Profil", "shopping_list": "Bevásárló lista", "states": "Áttekintés" @@ -420,10 +421,14 @@ }, "media_player": { "media_next_track": "Következő", + "media_play": "Lejátszás", + "media_play_pause": "Lejátszás/szünet", "media_previous_track": "Előző", "sound_mode": "Hangzás", "source": "Forrás", - "text_to_speak": "Beszéd szövege" + "text_to_speak": "Beszéd szövege", + "turn_off": "Kikapcsolás", + "turn_on": "Bekapcsolás" }, "persistent_notification": { "dismiss": "Elvetés" @@ -490,9 +495,11 @@ "wnw": "Ny-ÉNy", "wsw": "Ny-DNy" }, + "day": "Nappal", "forecast": "Előrejelzés", "high": "Magas", - "low": "Alacsony" + "low": "Alacsony", + "night": "Éjszaka" } }, "common": { @@ -500,6 +507,8 @@ "back": "Vissza", "cancel": "Mégse", "close": "Bezárás", + "continue": "Tovább", + "copied": "Másolva", "delete": "Törlés", "error_required": "Szükséges", "loading": "Betöltés", @@ -546,6 +555,10 @@ "toggle": "Váltás" }, "entity": { + "entity-attribute-picker": { + "attribute": "Attribútum", + "show_attributes": "Attribútumok megjelenítése" + }, "entity-picker": { "clear": "Törlés", "entity": "Entitás", @@ -556,8 +569,33 @@ "loading_history": "Állapot előzmények betöltése...", "no_history_found": "Nem található előzmény." }, + "logbook": { + "entries_not_found": "Nincsenek naplóbejegyzések." + }, "media-browser": { + "choose_player": "Lejátszó kiválasztása", "choose-source": "Forrás kiválasztása", + "class": { + "album": "Album", + "app": "App", + "artist": "Előadó", + "channel": "Csatorna", + "composer": "Zeneszerző", + "directory": "Könyvtár", + "episode": "Epizód", + "game": "Játék", + "genre": "Műfaj", + "image": "Kép", + "movie": "Film", + "music": "Zene", + "playlist": "Lejátszási lista", + "podcast": "Podcast", + "season": "Évad", + "track": "Szám", + "tv_show": "TV-műsor", + "url": "URL", + "video": "Videó" + }, "content-type": { "album": "Album", "artist": "Előadó", @@ -565,10 +603,16 @@ "playlist": "Lejátszási lista", "server": "Szerver" }, + "documentation": "dokumentáció", + "media_player": "Médialejátszó", + "media-player-browser": "Médialejátszó böngésző", "no_items": "Nincsenek elemek", + "no_local_media_found": "Nem található helyi média", + "pick": "Kiválasztás", "pick-media": "Média kiválasztása", "play": "Lejátszás", - "play-media": "Média lejátszása" + "play-media": "Média lejátszása", + "web-browser": "Böngésző" }, "related-items": { "area": "Terület", @@ -590,12 +634,31 @@ "week": "{count} {count, plural,\n one {héttel}\n other {héttel}\n}" }, "future": "{time} később", + "future_duration": { + "day": "{count} {count, plural,\n one {nap}\n other {nap}\n} múlva", + "hour": "{count} {count, plural,\n one {óra}\n other {óra}\n} múlva", + "minute": "{count} {count, plural,\n one {perc}\n other {perc}\n} múlva", + "second": "{count} {count, plural,\n one {másodperc}\n other {másodperc}\n} múlva", + "week": "{count} {count, plural,\n one {hét}\n other {hét}\n} múlva" + }, "just_now": "Éppen most", "never": "Soha", - "past": "{time} ezelőtt" + "past": "{time} ezelőtt", + "past_duration": { + "day": "{count} {count, plural,\n one {nappal}\n other {nappal}\n} ezelőtt", + "hour": "{count} {count, plural,\n one {órával}\n other {órával}\n} ezelőtt", + "minute": "{count} {count, plural,\n one {perccel}\n other {perccel}\n} ezelőtt", + "second": "{count} {count, plural,\n one {másodperccel}\n other {másodperccel}\n} ezelőtt", + "week": "{count} {count, plural,\n one {héttel}\n other {héttel}\n} ezelőtt" + } }, "service-picker": { "service": "Szolgáltatás" + }, + "user-picker": { + "add_user": "Felhasználó hozzáadása", + "no_user": "Nincs felhasználó", + "remove_user": "Felhasználó eltávolítása" } }, "dialogs": { @@ -606,6 +669,7 @@ "update": "Frissítés" }, "domain_toggler": { + "reset_entities": "Entitások visszaállítása", "title": "Domainek váltása" }, "entity_registry": { @@ -618,14 +682,15 @@ "enabled_description": "A letiltott entitások nem lesznek hozzáadva a Home Assistant-hoz.", "enabled_label": "Entitás engedélyezése", "entity_id": "Entitás ID", - "icon": "Ikon felülbírálása", + "icon": "Ikon", "icon_error": "Az ikonokat a 'prefix:ikonnév' formátumban kell megadni, pl.: 'mdi:home'", - "name": "Név felülbírálása", + "name": "Név", "note": "Megjegyzés: lehet, hogy ez még nem működik minden integrációval.", "unavailable": "Ez az entitás jelenleg nem elérhető.", "update": "Frissítés" }, - "no_unique_id": "Ennek az entitásnak nincs egyedi azonosítója, ezért beállításait nem lehet kezelni a kezelőfelületről. További részletek a {faq_link} .", + "faq": "dokumentáció", + "no_unique_id": "Ennek az entitásnak nincs egyedi azonosítója, ezért a beállításait nem lehet kezelni a felhasználói felületről. További részletek a {faq_link} oldalon találhatók.", "related": "Kapcsolatok", "settings": "Beállítások" }, @@ -636,6 +701,13 @@ "ok": "OK" }, "helper_settings": { + "counter": { + "initial": "Kezdeti érték", + "maximum": "Maximális érték", + "minimum": "Minimális érték", + "restore": "Az utolsó ismert érték visszaállítása a Home Assistant indításakor", + "step": "Lépés mérete" + }, "generic": { "icon": "Ikon", "name": "Név" @@ -671,14 +743,20 @@ }, "platform_not_loaded": "A(z) {platform} integráció nincs betöltve. Add hozzá a konfigurációdhoz a 'default_config:' vagy a(z) ''{platform}:'' hozzáadásával.", "required_error_msg": "Ez a mező kötelező", + "timer": { + "duration": "Időtartam" + }, "yaml_not_editable": "Ennek az entitásnak a beállításai nem szerkeszthetők a felhasználói felületről. Csak a felhasználói felületről beállított entitások konfigurálhatók a felhasználói felületről." }, "image_cropper": { "crop": "Kivágás" }, "more_info_control": { + "details": "Részletek", "dismiss": "Párbeszédpanel elvetése", "edit": "Entitás szerkesztése", + "history": "Előzmények", + "last_updated": "Utoljára frissítve", "person": { "create_zone": "Zóna létrehozása az aktuális helyről" }, @@ -734,6 +812,42 @@ "description": "Beállítások sikeresen mentve." } }, + "quick-bar": { + "commands": { + "reload": { + "automation": "Automatizálások újratöltése", + "command_line": "Parancssori entitások újratöltése", + "core": "Lokáció és testreszabások újratöltése", + "filter": "Szűrőentitások újratöltése", + "generic": "Általános IP kamera entitások újratöltése", + "generic_thermostat": "Általános termosztát entitások újratöltése", + "group": "Csoportok, csoport entitások és értesítési szolgáltatások újratöltése", + "history_stats": "Előzmény statisztika entitások újratöltése", + "homekit": "HomeKit újratöltése", + "input_boolean": "Bemeneti logikai változók újratöltése", + "input_datetime": "Időpont bemenetek újratöltése", + "input_number": "Szám bemenetek újratöltése", + "input_select": "Választási bemenetek újratöltése", + "input_text": "Bemeneti szövegek újratöltése", + "min_max": "Min/max entitások újratöltése", + "mqtt": "MQTT entitások újratöltése", + "person": "Személyek újratöltése", + "reload": "{domain} újratöltése", + "rest": "Rest entitások és értesítési szolgáltatások újratöltése", + "rpi_gpio": "Raspberry Pi GPIO entitások újratöltése", + "scene": "Jelenetek újratöltése", + "script": "Szkriptek újratöltése", + "smtp": "Smtp értesítési szolgáltatások újratöltése", + "statistics": "Statisztikai entitások újratöltése", + "telegram": "Telegram értesítési szolgáltatások újratöltése", + "template": "Sablonentitások újratöltése", + "trend": "Trend entitások újratöltése", + "universal": "Univerzális médialejátszó entitások újratöltése", + "zone": "Zónák újratöltése" + } + }, + "filter_placeholder": "Entitásszűrő" + }, "voice_command": { "did_not_hear": "A Home Assistant nem hallott semmit", "error": "Hoppá, hiba történt", @@ -788,11 +902,13 @@ "notification_drawer": { "click_to_configure": "Kattints a gombra a(z) {entity} beállításához", "close": "Bezárás", + "dismiss_all": "Az összes elvetése", "empty": "Nincsenek Értesítések", "title": "Értesítések" }, "notification_toast": { "connection_lost": "A kapcsolat megszakadt. Újracsatlakozás…", + "dismiss": "Elvetés", "service_call_failed": "Nem sikerült meghívni a(z) {service} szolgáltatást.", "started": "A Home Assistant indítása befejeződött!", "starting": "A Home Assistant indítása folyamatban van. Nem lesz minden elérhető, amíg ez be nem fejeződik.", @@ -846,7 +962,7 @@ "add": "Művelet hozzáadása", "delete": "Törlés", "delete_confirm": "Biztos, hogy ezt törölni szeretnéd?", - "duplicate": "Megkettőzés", + "duplicate": "Duplikálás", "header": "Műveletek", "introduction": "A műveleteket hajtja végre a Home Assistant, ha egy automatizálás triggerelődik. Kattints az alábbi linkre, ha többet szeretnél megtudni a műveletekről.", "learn_more": "Tudj meg többet a műveletekről", @@ -888,7 +1004,13 @@ "label": "Szolgáltatás meghívása", "service_data": "Szolgáltatás adatai" }, + "wait_for_trigger": { + "continue_timeout": "Folytatás időtúllépéskor", + "label": "Várakozás az eseményindítóra", + "timeout": "Időtúllépés (opcionális)" + }, "wait_template": { + "continue_timeout": "Folytatás időtúllépéskor", "label": "Várakozás", "timeout": "Időtúllépés (opcionális)", "wait_template": "Várakozási sablon" @@ -901,7 +1023,7 @@ "add": "Feltétel hozzáadása", "delete": "Törlés", "delete_confirm": "Biztos, hogy ezt törölni szeretnéd?", - "duplicate": "Megkettőzés", + "duplicate": "Duplikálás", "header": "Feltételek", "introduction": "A feltételek opcionálisak és meggátolják a további végrehajtást, kivéve, ha minden feltétel teljesül.", "learn_more": "Tudj meg többet a feltételekről", @@ -952,7 +1074,18 @@ "time": { "after": "Után", "before": "Előtt", - "label": "Idő" + "label": "Idő", + "type_input": "Dátum/idő segítő értéke", + "type_value": "Rögzített időpont", + "weekdays": { + "fri": "Péntek", + "mon": "Hétfő", + "sat": "Szombat", + "sun": "Vasárnap", + "thu": "Csütörtök", + "tue": "Kedd", + "wed": "Szerda" + } }, "zone": { "entity": "Entitás helyszínnel", @@ -962,6 +1095,7 @@ }, "unsupported_condition": "Nincs felhasználói felület támogatás a feltételhez: {condition}" }, + "copy_to_clipboard": "Másolás a vágólapra", "default_name": "Új Automatizálás", "description": { "label": "Leírás", @@ -992,7 +1126,7 @@ "add": "Trigger hozzáadása", "delete": "Törlés", "delete_confirm": "Biztos, hogy ezt törölni szeretnéd?", - "duplicate": "Megkettőzés", + "duplicate": "Duplikálás", "header": "Triggerek", "introduction": "Az eseményindítók (triggerek) indítják el az automatizálási szabályok feldolgozását. Több triggert is meg lehet adni egy szabályhoz. Ha egy trigger elindul, akkor a Home Assistant ellenőrzi a feltételeket - ha vannak -, majd meghívja a műveletet. Kattints az alábbi linkre, ha többet szeretnél megtudni a triggerekről.", "learn_more": "Tudj meg többet a triggerekről", @@ -1009,6 +1143,7 @@ "trigger": "Eseményindító" }, "event": { + "context_user_pick": "Felhasználó hozzáadása", "event_data": "Esemény adatai", "event_type": "Esemény típusa", "label": "Esemény" @@ -1039,6 +1174,7 @@ "value_template": "Érték sablon (opcionális)" }, "state": { + "attribute": "Attribútum (opcionális)", "for": "Időtartam", "from": "Eredeti állapot", "label": "Állapot", @@ -1051,6 +1187,9 @@ "sunrise": "Napkelte", "sunset": "Napnyugta" }, + "tag": { + "label": "Címke" + }, "template": { "label": "Sablon", "value_template": "Érték sablon" @@ -1063,7 +1202,9 @@ }, "time": { "at": "Mikor", - "label": "Idő" + "label": "Idő", + "type_input": "Dátum/idő segítő értéke", + "type_value": "Rögzített időpont" }, "webhook": { "label": "Webhook", @@ -1086,6 +1227,8 @@ "add_automation": "Automatizálás hozzáadása", "delete_automation": "Automatizálás törlése", "delete_confirm": "Biztosan törölni szeretnéd ezt az automatizálást?", + "duplicate": "Duplikálás", + "duplicate_automation": "Automatizálás duplikálása", "edit_automation": "Automatizálás szerkesztése", "header": "Automatizálás szerkesztő", "headers": { @@ -1171,6 +1314,8 @@ "expose": "Feltárás Alexának", "expose_entity": "Entitás feltárása", "exposed_entities": "Feltárt entitások", + "follow_domain": "Tartomány követése", + "manage_domains": "Tartományok kezelése", "not_exposed_entities": "Feltáratlan entitások", "title": "Alexa" }, @@ -1212,6 +1357,7 @@ "expose": "Feltárás a Google Asszisztensnek", "expose_entity": "Entitás feltárása", "exposed_entities": "Feltárt entitások", + "manage_domains": "Tartományok kezelése", "not_exposed_entities": "Feltáratlan entitások", "sync_to_google": "A változások szinkronizálása a Google-lal.", "title": "Google Asszisztens" @@ -1302,6 +1448,7 @@ "different_include": "Lehet domainnel, globbal vagy egy másik include fájllal.", "pick_attribute": "Válassz egy attribútumot a felülbíráláshoz", "picker": { + "documentation": "Testreszabási dokumentáció", "entity": "Entitás", "header": "Testreszabások", "introduction": "Szabd testre az entitások attribútumait. A hozzáadott, szerkesztett testreszabások azonnal érvényesülnek. A testreszabások eltávolítása akkor lép életbe, amikor az entitás frissül." @@ -1316,29 +1463,30 @@ "automation": { "actions": { "caption": "Ha valami triggerelődik, akkor...", - "no_actions": "Nincs műveletek", + "no_actions": "Nincsenek műveletek", "unknown_action": "Ismeretlen művelet" }, "automations": "Automatizálások", "conditions": { "caption": "Csak akkor csinálj valamit, ha a(z)...", "no_conditions": "Nincsenek feltételek", - "unknown_condition": "Ismeretlen állapot" + "unknown_condition": "Ismeretlen feltétel" }, "create": "Eszköz automatizálás létrehozása", "no_automations": "Nincsenek automatizálások", "no_device_automations": "Ehhez az eszközhöz nem állnak rendelkezésre automatizálások.", "triggers": { "caption": "Kezdj el csinálni valamit, amikor a(z)...", - "no_triggers": "Nincs kiváltó ok", - "unknown_trigger": "Ismeretlen ok." - } + "no_triggers": "Nincsenek eseményindítók", + "unknown_trigger": "Ismeretlen eseményindító" + }, + "unknown_automation": "Ismeretlen automatizálás" }, "cant_edit": "Kizárólag a felhasználói felületen létrehozott elemeket szerkesztheted.", "caption": "Eszközök", "confirm_delete": "Biztosan törölni szeretnéd ezt az eszközt?", "confirm_rename_entity_ids": "Szeretnéd átnevezni az entitások ID-ját is?", - "confirm_rename_entity_ids_warning": "Ez nem módosítja azokat a konfigurációkat (például automatizálásokat, parancsfájlokat, jeleneteket, irányítópultokat), amelyek jelenleg ezeket az entitásokat használják! Az új entitásazonosítók használatához saját kezűleg kell frissítenie őket!", + "confirm_rename_entity_ids_warning": "Ez nem módosítja azokat a konfigurációkat (például automatizálásokat, szkripteket, jeleneteket, irányítópultokat), amelyek jelenleg ezeket az entitásokat használják! Az új entitásazonosítók használatához saját kezűleg kell frissítened őket!", "data_table": { "area": "Terület", "battery": "Akkumulátor", @@ -1394,6 +1542,8 @@ }, "filter": { "filter": "Szűrő", + "hidden_entities": "{number} rejtett {number, plural,\n one {entitás}\n other {entitás}\n}", + "show_all": "Az összes megjelenítése", "show_disabled": "Letiltott entitások megjelenítése", "show_readonly": "Csak olvasható entitások megjelenítése", "show_unavailable": "Nem elérhető entitások megjelenítése" @@ -1449,11 +1599,13 @@ "no_helpers": "Úgy tűnik, még nincs egy segítőd sem!" }, "types": { + "counter": "Számláló", "input_boolean": "Váltás", "input_datetime": "Dátum és/vagy idő", "input_number": "Szám", "input_select": "Legördülő", - "input_text": "Szöveg" + "input_text": "Szöveg", + "timer": "Időzítő" } }, "info": { @@ -1481,6 +1633,7 @@ }, "integrations": { "add_integration": "Integráció hozzáadása", + "attention": "Figyelem szükséges", "caption": "Integrációk", "config_entry": { "area": "Terület: {area}", @@ -1501,8 +1654,10 @@ "options": "Opciók", "reload": "Újratöltés", "reload_confirm": "Az integráció újra lett töltve", + "reload_restart_confirm": "Indítsd újra a Home Assistant-et az integráció újratöltésének befejezéséhez", "rename": "Átnevezés", "restart_confirm": "Indítsd újra a Home Assistant-ot az integráció törlésének befejezéséhez", + "services": "{count} {count, plural,\n one {szolgáltatás}\n other {szolgáltatás}\n}", "settings_button": "{integration} beállításainak szerkesztése", "system_options": "Rendszerbeállítások", "system_options_button": "{integration} rendszerbeállításai", @@ -1549,6 +1704,7 @@ "none_found_detail": "Módosítsd a keresési feltételeket.", "note_about_integrations": "Még nem minden integráció konfigurálható a felhasználói felületen keresztül.", "note_about_website_reference": "Továbbiak érhetőek el itt: ", + "reconfigure": "Újrakonfigurálás", "rename_dialog": "A konfigurációs bejegyzés nevének szerkesztése", "rename_input_label": "Bejegyzés neve", "search": "Integrációk keresése" @@ -1659,23 +1815,70 @@ "topic": "téma" }, "ozw": { + "button": "Beállítás", "common": { + "controller": "Vezérlő", + "instance": "Példány", + "network": "Hálózat", "query_stage": "Lekérdezési fázis", "wakeup_instructions": "Ébresztési utasítások" }, "navigation": { + "network": "Hálózat", "node": { "config": "Konfiguráció", "dashboard": "Irányítópult" - } + }, + "nodes": "Csomópontok", + "select_instance": "Példány kiválasztása" + }, + "network_status": { + "details": { + "driverallnodesqueried": "Minden csomópont lekérdezésre került", + "driverallnodesqueriedsomedead": "Minden csomópont lekérdezésre került. Néhány csomópont halott.", + "driverawakenodesqueries": "Minden éber csomópont lekérdezésre került", + "driverfailed": "Nem sikerült csatlakozni a Z-Wave vezérlőhöz", + "driverready": "A Z-Wave vezérlő inicializálása", + "ready": "Csatlakozásra kész", + "stopped": "OpenZWave leállt" + }, + "offline": "Offline", + "online": "Online", + "starting": "Indulás", + "unknown": "Ismeretlen" + }, + "network": { + "header": "Hálózat menedzsment" }, "node_config": { "header": "Csomópont konfigurációja", - "introduction": "Kezelje a Z-Wave csomópont különböző konfigurációs paramétereit.", - "wakeup_help": "Az akkumulátoros csomópontoknak ébren kell lenniük a konfiguráció módosításához. Ha a csomópont nincs ébren, az OpenZWave megpróbálja frissíteni a csomópont konfigurációját a következő ébredéskor, ami több órával (vagy nappal) később is megtörténhet. Az eszköz felébresztéséhez kövesse az alábbi lépéseket:" + "introduction": "Z-Wave csomópont különböző konfigurációs paramétereinek kezelése.", + "wakeup_help": "Az akkumulátorról megtáplált csomópontoknak ébren kell lenniük a konfiguráció módosításához. Ha a csomópont nincs ébren, akkor az OpenZWave megpróbálja frissíteni a csomópont konfigurációját a következő ébredéskor, ami akár órákba (vagy napokba) is beletelhet. Az eszköz felébresztéséhez kövesd az alábbi lépéseket:" }, "node_metadata": { "product_manual": "Termék kézikönyve" + }, + "node": { + "button": "Csomópont részletei", + "not_found": "A csomópont nem található" + }, + "nodes_table": { + "failed": "Sikertelen", + "id": "ID", + "manufacturer": "Gyártó", + "model": "Modell", + "query_stage": "Lekérdezési fázis", + "zwave_plus": "Z-Wave Plus" + }, + "refresh_node": { + "button": "Csomópont frissítése" + }, + "select_instance": { + "header": "OpenZWave példány kiválasztása" + }, + "services": { + "add_node": "Csomópont hozzáadása", + "remove_node": "Csomópont eltávolítása" } }, "person": { @@ -1686,6 +1889,7 @@ "create_person": "Személy létrehozása", "description": "A Home Assistant által követett személyek kezelése", "detail": { + "admin": "Adminisztrátor", "create": "Létrehozás", "delete": "Törlés", "device_tracker_intro": "Válaszd ki azokat az eszközöket, amelyek ehhez a felhasználóhoz tartoznak.", @@ -1701,8 +1905,11 @@ "update": "Frissítés" }, "introduction": "Itt adhatod meg a Home Assistant minden érdekelt személyét.", + "learn_more": "Tudj meg többet az emberekről", "no_persons_created_yet": "Úgy tűnik, még nem hoztál létre személyeket.", - "note_about_persons_configured_in_yaml": "Megjegyzés: a configuration.yaml fájlban konfigurált személyek nem szerkeszthetők a felhasználói felületen." + "note_about_persons_configured_in_yaml": "Megjegyzés: a configuration.yaml fájlban konfigurált személyek nem szerkeszthetők a felhasználói felületen.", + "person_not_found": "Nem találtuk a személyt, akit szerkeszteni próbáltál.", + "person_not_found_title": "A személy nem található" }, "scene": { "activated": "Aktivált jelenet: {name}.", @@ -1776,6 +1983,7 @@ "restart": "Újraindítás", "single": "Egyszeri (alapértelmezett)" }, + "save_script": "Szkript mentése", "sequence": "Sorrend", "sequence_sentence": "A szkript műveleti sorrendje." }, @@ -1789,6 +1997,7 @@ "introduction": "A szkript szerkesztő lehetővé teszi szkriptek létrehozását és szerkesztését. Kérlek, olvasd el az útmutatót az alábbi linken, hogy megbizonyosodj róla, hogy a Home Assistant helyesen van konfigurálva.", "learn_more": "Tudj meg többet a szkriptekről", "no_scripts": "Nem találtunk szerkeszthető szkripteket", + "run_script": "Szkript futtatása", "show_info": "Információ megjelenítése a szkriptről", "trigger_script": "Sckript triggerelése" } @@ -1799,18 +2008,35 @@ "section": { "reloading": { "automation": "Automatizálások újratöltése", + "command_line": "Parancssori entitások újratöltése", "core": "Lokáció és testreszabások újratöltése", + "filter": "Szűrőentitások újratöltése", + "generic": "Általános IP kamera entitások újratöltése", + "generic_thermostat": "Általános termosztát entitások újratöltése", "group": "Csoportok, csoport entitások és értesítési szolgáltatások újratöltése", "heading": "YAML konfiguráció újratöltése", + "history_stats": "Előzmény statisztika entitások újratöltése", + "homekit": "HomeKit újratöltése", "input_boolean": "Bemeneti logikai változók újratöltése", "input_datetime": "Időpont bemenetek újratöltése", "input_number": "Szám bemenetek újratöltése", "input_select": "Választási bemenetek újratöltése", "input_text": "Bemeneti szövegek újratöltése", "introduction": "A Home Assistant bizonyos részei újraindítás nélkül újratölthetőek. Újratöltéskor az aktuálisan betöltött YAML konfiguráció helyére betöltődik az új.", + "min_max": "Min/max entitások újratöltése", + "mqtt": "MQTT entitások újratöltése", "person": "Személyek újratöltése", + "reload": "{domain} újratöltése", + "rest": "Rest entitások és értesítési szolgáltatások újratöltése", + "rpi_gpio": "Raspberry Pi GPIO entitások újratöltése", "scene": "Jelenetek újratöltése", "script": "Szkriptek újratöltése", + "smtp": "Smtp értesítési szolgáltatások újratöltése", + "statistics": "Statisztikai entitások újratöltése", + "telegram": "Telegram értesítési szolgáltatások újratöltése", + "template": "Sablonentitások újratöltése", + "trend": "Trend entitások újratöltése", + "universal": "Univerzális médialejátszó entitások újratöltése", "zone": "Zónák újratöltése" }, "server_management": { @@ -1831,6 +2057,23 @@ } }, "tags": { + "detail": { + "companion_apps": "társalkalmazások", + "create": "Létrehozás", + "create_and_write": "Létrehozás és írás", + "delete": "Törlés", + "description": "Leírás", + "name": "Név", + "new_tag": "Új címke", + "tag_id": "Címke azonosító", + "update": "Frissítés" + }, + "edit": "Szerkesztés", + "headers": { + "last_scanned": "Utoljára beolvasva", + "name": "Név" + }, + "learn_more": "Tudj meg többet a címkékről", "never_scanned": "Sosem volt szkennelve" }, "users": { @@ -1839,6 +2082,8 @@ "create": "Létrehozás", "name": "Név", "password": "Jelszó", + "password_confirm": "Jelszó megerősítése", + "password_not_match": "A jelszavak nem egyeznek", "username": "Felhasználónév" }, "caption": "Felhasználók", @@ -1855,6 +2100,7 @@ "group": "Csoport", "id": "ID", "name": "Név", + "new_password": "Új Jelszó", "owner": "Tulajdonos", "password_changed": "A jelszó módosítása sikeresen megtörtént", "system_generated": "Rendszer által létrehozott", @@ -1869,7 +2115,8 @@ "name": "Név", "system": "Rendszer" } - } + }, + "users_privileges_note": "A felhasználói csoport funkció jelenleg is fejlesztés alatt áll. A felhasználó nem tudja kezelni a példányt a felhasználói felületen keresztül. Folyamatosan ellenőrizzük az összes felügyeleti API-végpontot annak érdekében, hogy azok helyesen korlátozzák a hozzáférést az adminisztrátorok részére." }, "zha": { "add_device_page": { @@ -1905,7 +2152,7 @@ "clusters": { "header": "Klaszterek", "help_cluster_dropdown": "Válassz egy klasztert az attribútumok és parancsok megtekintéséhez.", - "introduction": "A zigbee-funkciók építőkövei a fürtök. A funkcionalitást logikai egységekre bontják. Vannak ügyfél- és kiszolgálótípusok, amelyek attribútumokból és parancsokból állnak." + "introduction": "A klaszterek a Zigbee funkcionalitásának építőelemei. A funkcionalitást logikai egységekre bontják. Vannak ügyfél- és kiszolgálótípusok, amelyek attribútumokból és parancsokból állnak." }, "common": { "add_devices": "Eszközök hozzáadása", @@ -2021,7 +2268,7 @@ }, "network_status": { "network_started": "Z-Wave hálózat elindult", - "network_started_note_all_queried": "Minden csomópont le lett kérdezve.", + "network_started_note_all_queried": "Minden csomópont lekérdezésre került.", "network_started_note_some_queried": "Az elérhető csomópontok le lettek kérdezve. Az alvó csomópontok akkor lesznek lekérdezve, ha elérhetővé válnak.", "network_starting": "Z-Wave hálózat indítása...", "network_starting_note": "Ez eltarthat egy ideig a hálózat méretétől függően.", @@ -2038,8 +2285,11 @@ "true": "Igaz" }, "node_management": { + "add_to_group": "Hozzáadás a csoporthoz", "header": "Z-Wave csomópontkezelés", - "nodes": "Csomópontok" + "nodes": "Csomópontok", + "nodes_in_group": "További csomópontok ebben a csoportban:", + "remove_from_group": "Eltávolítás a csoportból" }, "ozw_log": { "header": "OZW Log", @@ -2125,11 +2375,18 @@ "title": "Állapotok" }, "templates": { + "all_listeners": "Ez a sablon az összes állapotváltozási eseményre figyel.", "description": "A sablonok a Jinja2 sablonmotor és néhány Home Assistant specifikus bővítmény segítségével kerülnek kiértékelésre.", + "domain": "Tartomány", "editor": "Sablonszerkesztő", + "entity": "Entitás", "jinja_documentation": "Jinja2 sablon dokumentáció", + "listeners": "Ez a sablon a következő állapotváltozási eseményeket figyeli:", + "no_listeners": "Ez a sablon nem figyel semmilyen eseményre, és ezért nem frissül automatikusan.", + "reset": "Példa sablon visszaállítása", + "result_type": "Eredmény típusa", "template_extensions": "Home Assistant sablon bővítmények", - "time": "Ez a sablon 60 másodpercenként frissül az utolsó állapotváltozási esemény után.", + "time": "Ez a sablon minden perc elején frissül.", "title": "Sablon", "unknown_error_template": "Ismeretlen hiba a sablon kiértékelésekor" } @@ -2200,6 +2457,17 @@ "refresh": "Frissítés" }, "editor": { + "action-editor": { + "actions": { + "call-service": "Szolgáltatás meghívása", + "more-info": "További infók", + "none": "Nincs művelet", + "toggle": "Váltás", + "url": "URL" + }, + "navigation_path": "Navigációs útvonal", + "url_path": "URL elérési út" + }, "card": { "alarm-panel": { "available_states": "Rendelkezésre álló állapotok", @@ -2211,7 +2479,14 @@ "name": "Gomb" }, "calendar": { - "name": "Naptár" + "calendar_entities": "Naptár entitások", + "inital_view": "Kezdeti nézet", + "name": "Naptár", + "views": { + "dayGridDay": "Nap", + "dayGridMonth": "Hónap", + "listWeek": "Lista" + } }, "conditional": { "card": "Kártya", @@ -2231,8 +2506,29 @@ "entities": { "description": "Az Entitások kártya a legalapvetőbb kártya. Az elemeket listákba csoportosítja.", "edit_special_row": "A sor részleteinek megtekintése a Szerkesztés gombra kattintva", + "entity_row": { + "attribute": "Attribútum", + "button": "Gomb", + "buttons": "Gombok", + "call-service": "Szolgáltatás meghívása", + "cast": "Cast", + "conditional": "Feltételes", + "divider": "Elválasztó", + "section": "Szakasz", + "weblink": "Webes hivatkozás" + }, "name": "Entitások", + "secondary_info_values": { + "brightness": "Fényerő", + "entity-id": "Entitás ID", + "last-changed": "Utoljára módosult", + "last-triggered": "Utoljára aktiválva", + "last-updated": "Utoljára frissítve", + "position": "Pozíció", + "tilt-position": "Döntési pozíció" + }, "show_header_toggle": "Fejléc kapcsoló megjelenítése?", + "special_row": "speciális sor", "toggle": "Entitások váltása." }, "entity-filter": { @@ -2279,6 +2575,7 @@ "show_name": "Név megjelenítése?", "show_state": "Állapot megjelenítése?", "state": "Állapot", + "state_color": "Színes ikonok állapot alapján?", "tap_action": "Koppintási művelet", "theme": "Téma", "title": "Cím", @@ -2373,9 +2670,16 @@ } }, "cardpicker": { + "by_card": "Kártya szerint", + "by_entity": "Entitás szerint", "custom_card": "Egyéni", + "domain": "Tartomány", + "entity": "Entitás", "no_description": "Nincs leírás." }, + "edit_badges": { + "panel_mode": "Ezek a jelvények nem lesznek megjelenítve, mert ez a nézet \"Panel módban\" van." + }, "edit_card": { "add": "Kártya hozzáadása", "confirm_cancel": "Biztosan meg szeretnéd szakítani?", @@ -2384,9 +2688,12 @@ "edit": "Szerkesztés", "header": "Kártya Konfiguráció", "move": "Áthelyezés másik nézetbe", + "move_after": "Kártya mozgatása mögé", + "move_before": "Kártya mozgatása elé", "options": "További lehetõségek", "pick_card": "Melyik kártyát szeretnéd hozzáadni?", "pick_card_view_title": "Melyik kártyát szeretnéd hozzáadni a(z) {name} nézethez?", + "search_cards": "Kártyák keresése", "show_code_editor": "Kódszerkesztő megjelenítése", "show_visual_editor": "Vizuális szerkesztő megjelenítése", "toggle_editor": "Szerkesztő", @@ -2427,7 +2734,7 @@ }, "raw_editor": { "confirm_remove_config_text": "Automatikusan létrehozzuk a Lovelace felhasználói felületed nézeteit a területeiddel és eszközeiddel, ha eltávolítod a Lovelace konfigurációját.", - "confirm_remove_config_title": "Biztosan el szeretnéd távolítani a Lovelace felhasználói felület konfigurációját? Automatikusan létrehozzuk a Lovelace felhasználói felületed nézeteit a területeiddel és az eszközeiddel.", + "confirm_remove_config_title": "Biztosan el szeretnéd távolítani a Lovelace felhasználói felület konfigurációját?", "confirm_unsaved_changes": "Vannak nem mentett módosítások, biztosan ki akarsz lépni?", "confirm_unsaved_comments": "A konfiguráció megjegyzéseket tartalmaz, amik nem kerülnek elmentésre. Biztosan folytatod?", "error_invalid_config": "A konfiguráció érvénytelen: {error}", @@ -2459,7 +2766,7 @@ }, "view": { "panel_mode": { - "description": "Ez az első kártyát teljes szélességében fogja megjeleníteni; a többi kártya nem lesz megjelenítve", + "description": "Ez az első kártyát teljes szélességében fogja megjeleníteni. A többi kártya, továbbá a jelvények ebben a nézetben nem lesznek megjelenítve.", "title": "Panel mód?", "warning_multiple_cards": "Ez a nézet több kártyát is tartalmaz, de a panelnézet csak 1 kártyát tud megjeleníteni." } @@ -2471,7 +2778,8 @@ "exit_edit_mode": "Kilépés a felhasználói felület szerkesztési módból", "help": "Súgó", "refresh": "Frissítés", - "reload_resources": "Erőforrások újratöltése" + "reload_resources": "Erőforrások újratöltése", + "start_conversation": "Beszélgetés indítása" }, "reload_lovelace": "Felhasználói felület újratöltése", "reload_resources": { @@ -2669,6 +2977,11 @@ "more_integrations": "Több" }, "intro": "Készen állsz arra, hogy felébreszd az otthonod, visszaszerezd a magánéleted és csatlakozz egy világhálós közösséghez?", + "restore": { + "hide_log": "Teljes napló elrejtése", + "in_progress": "Visszaállítás folyamatban", + "show_log": "Teljes napló megjelenítése" + }, "user": { "create_account": "Fiók Létrehozása", "data": { @@ -2700,6 +3013,11 @@ "submit": "Küldés" }, "current_user": "Jelenleg {fullName} felhasználóként vagy bejelentkezve.", + "customize_sidebar": { + "button": "Szerkesztés", + "description": "Az oldalsáv fejlécét is nyomva tarthatod a szerkesztési mód aktiválásához.", + "header": "A sorrend módosítása és elemek elrejtése az oldalsávról" + }, "dashboard": { "description": "Válassz egy alapértelmezett irányítópultot ehhez az eszközhöz.", "dropdown_label": "Irányítópult", @@ -2722,6 +3040,7 @@ "confirm_delete": "Biztosan törölni szeretnéd {name} hozzáférési tokenjét?", "create": "Token Létrehozása", "create_failed": "Nem sikerült létrehozni a hozzáférési tokent.", + "created": "Létrehozva: {date}", "created_at": "Létrehozva: {date}", "delete_failed": "Nem sikerült törölni a hozzáférési tokent.", "description": "Hosszú életű hozzáférési tokenek létrehozásával engedélyezheted a szkriptjeid számára, hogy csatlakozzanak a Home Assistant példányodhoz. Minden token 10 évig érvényes a létrehozástól számítva. Jelenleg a következő hosszú életű hozzáférési tokenek aktívak.", @@ -2729,6 +3048,7 @@ "header": "Hosszú Életű Hozzáférési Tokenek", "last_used": "Utolsó használat ideje: {date}, helye: {location}", "learn_auth_requests": "Tudj meg többet a hitelesített kérelmek létrehozásáról.", + "name": "Név", "not_used": "Sosem használt", "prompt_copy_token": "Most másold ki a hozzáférési tokened! Erre később nem lesz lehetőséged.", "prompt_name": "Adj nevet a tokennek" @@ -2792,6 +3112,7 @@ } }, "sidebar": { + "done": "Kész", "external_app_configuration": "App Konfiguráció", "sidebar_toggle": "Oldalsáv kapcsoló" } diff --git a/translations/frontend/ja.json b/translations/frontend/ja.json index f7f7e4759e..07d98f644c 100644 --- a/translations/frontend/ja.json +++ b/translations/frontend/ja.json @@ -681,6 +681,10 @@ }, "service-picker": { "service": "サービス" + }, + "user-picker": { + "add_user": "ユーザーを追加", + "remove_user": "ユーザーを削除する" } }, "dialogs": { @@ -933,6 +937,7 @@ }, "notification_toast": { "connection_lost": "切断されました。再接続中...", + "dismiss": "退出", "service_call_failed": "サービス{service}の呼び出しに失敗しました。", "started": "ホームアシスタントが開始されました!", "starting": "Home Assistantが起動中です。終了するまですべてが利用できるわけではありません。", @@ -1186,6 +1191,9 @@ "trigger": "トリガー" }, "event": { + "context_user_pick": "ユーザーを追加", + "context_user_picked": "ユーザー起動イベント", + "context_users": "トリガーされるイベントの制限", "event_data": "イベントのデータ", "event_type": "イベントの種類", "label": "イベント" @@ -2519,6 +2527,7 @@ "listeners": "このテンプレートは、次の状態変更イベントをリッスンします。", "no_listeners": "このテンプレートは、状態が変更されたイベントが聞こえないため、自動的に更新されません。", "reset": "デモ テンプレートにリセット", + "result_type": "結果の種類", "template_extensions": "ホーム アシスタント テンプレートの拡張機能", "time": "このテンプレートは、最後の状態変更イベントの後 60 秒ごとに更新されます。", "title": "テンプレート", @@ -2663,6 +2672,7 @@ "entity-id": "エンティティ ID", "last-changed": "最終変更", "last-triggered": "最後にトリガーされた", + "last-updated": "最終更新日", "none": "セカンダリ情報なし", "position": "ポジション", "tilt-position": "チルト位置" @@ -2927,7 +2937,8 @@ "exit_edit_mode": "UI 編集モードを終了", "help": "ヘルプ", "refresh": "更新", - "reload_resources": "リソースの再読込" + "reload_resources": "リソースの再読込", + "start_conversation": "会話を開始する" }, "reload_lovelace": "Lovelace の再読込", "reload_resources": { diff --git a/translations/frontend/nb.json b/translations/frontend/nb.json index 376e7fe30d..5e14160465 100644 --- a/translations/frontend/nb.json +++ b/translations/frontend/nb.json @@ -1207,7 +1207,7 @@ }, "event": { "context_user_pick": "Legg til bruker", - "context_user_picked": "Bruk avfyring hendelse", + "context_user_picked": "Bruker avfyrer hendelse", "context_users": "Begrens til hendelser utløst av", "event_data": "Hendelse data", "event_type": "Hendelse type", @@ -1942,7 +1942,7 @@ "header": "Nodekonfigurasjon", "help_source": "Konfigurasjonsparameter beskrivelser og hjelpetekst er gitt av OpenZWave-prosjektet", "introduction": "Administrer de forskjellige konfigurasjonsparametrene for en Z-Wave-node", - "wakeup_help": "Batteridrevne noder må være våken for å endre konfigurasjonen. Hvis noden ikke er våken, vil OpenZWave prøve å oppdatere nodenes konfigurasjon neste gang den våkner, noe som kan være flere timer (eller dager) senere. Følg disse trinnene for å vekke enheten:" + "wakeup_help": "Batteridrevne noder må være våkne for å endre konfigurasjonen. Hvis noden ikke er våken, vil OpenZWave prøve å oppdatere nodenes konfigurasjon neste gang den våkner, noe som kan være flere timer (eller dager) senere. Følg disse trinnene for å vekke enheten:" }, "node_metadata": { "product_manual": "Produkthåndbok" @@ -2544,7 +2544,7 @@ "reset": "Tilbakestill til demomal", "result_type": "Resultat type", "template_extensions": "Mal utvidelser for Home Assistant", - "time": "Denne malen oppdateres i begynnelsen av hvert minutt.", + "time": "Denne malen oppdateres i begynnelsen av hvert minutt", "title": "Mal", "unknown_error_template": "Ukjent feil ved rendring av mal" } diff --git a/translations/frontend/nl.json b/translations/frontend/nl.json index 81662e6ab3..ca7550351e 100644 --- a/translations/frontend/nl.json +++ b/translations/frontend/nl.json @@ -2138,7 +2138,7 @@ "filter": "Herlaad filter-entiteiten", "generic": "Herlaad generieke IP camera entiteiten", "generic_thermostat": "Herlaad generieke thermostaat entiteiten", - "group": "Herlaad groepen, groepsentiteiten en meld services", + "group": "Herlaad groepen, groepsentiteiten en notify services", "heading": "Configuratie herladen", "history_stats": "Herlaad historische statistieken entiteiten", "homekit": "Herlaad HomeKit", @@ -2153,14 +2153,14 @@ "person": "Herlaad personen", "ping": "Herlaad ping binaire sensor entiteiten", "reload": "Herlaad {domain}", - "rest": "Laad resterende entiteiten opnieuw en stel services op de hoogte", + "rest": "Herlaad rest entiteiten en notify services", "rpi_gpio": "Herlaad Raspberry Pi GPIO-entiteiten", "scene": "Herlaad scenes", "script": "Herlaad scripts", - "smtp": "Herlaad telegram notify services", + "smtp": "Herlaad smtp notify services", "statistics": "Herlaad statistische entiteiten", "telegram": "Herlaad telegram notify services", - "template": "Herlaad sjabloon-entiteiten", + "template": "Herlaad template entiteiten", "trend": "Herlaad trend-entiteiten", "universal": "Herlaad universele mediaspeler entiteiten", "zone": "Herlaad zones" @@ -2444,10 +2444,10 @@ }, "ozw_log": { "header": "OZW-logboek", - "introduction": "Bekijk het logboek. 0 is het minimum (laadt het gehele logboek) en 1000 is het maximum. Laad toont een statisch logboek en staart wordt automatisch bijgewerkt met het laatst opgegeven aantal regels van het logboek.", + "introduction": "Bekijk het logboek. 0 is het minimum (laadt het gehele logboek) en 1000 is het maximum. Laad toont een statisch logboek en Tail wordt automatisch bijgewerkt met het laatst opgegeven aantal regels van het logboek.", "last_log_lines": "Aantal laatste logboekregels", "load": "Laden", - "tail": "Staart" + "tail": "Tail" }, "services": { "add_node": "Knooppunt toevoegen", @@ -2543,7 +2543,7 @@ "no_listeners": "Deze template luistert niet naar gebeurtenissen met statuswijziging en wordt niet automatisch bijgewerkt.", "reset": "Resetten naar demosjabloon", "template_extensions": "Home Assistant sjabloon extensiesHome Assistant", - "time": "Deze sjabloon wordt elke 60 seconden bijgewerkt na de laatste statuswijziging.", + "time": "Deze template wordt elke 60 seconden bijgewerkt na de laatste statuswijziging.", "title": "Sjablonen", "unknown_error_template": "Onbekende fout bij weergave sjabloon" } diff --git a/translations/frontend/zh-Hant.json b/translations/frontend/zh-Hant.json index 4153db8820..72aef299fd 100644 --- a/translations/frontend/zh-Hant.json +++ b/translations/frontend/zh-Hant.json @@ -711,7 +711,7 @@ }, "domain_toggler": { "reset_entities": "重置實體", - "title": "切換區域" + "title": "實體類群開關" }, "entity_registry": { "control": "控制", @@ -1380,8 +1380,8 @@ "expose_entity": "公開實體", "exposed": "{selected} 已公開", "exposed_entities": "已公開實體", - "follow_domain": "跟隨區域", - "manage_domains": "管理區域", + "follow_domain": "跟隨實體類群", + "manage_domains": "管理實體類群", "not_exposed": "{selected} 未公開", "not_exposed_entities": "未公開實體", "title": "Alexa" @@ -1425,8 +1425,8 @@ "expose_entity": "公開實體", "exposed": "{selected} 已公開", "exposed_entities": "已公開實體", - "follow_domain": "跟隨區域", - "manage_domains": "管理區域", + "follow_domain": "跟隨實體類群", + "manage_domains": "管理實體類群", "not_exposed": "{selected} 未公開", "not_exposed_entities": "未公開實體", "sync_to_google": "正與 Google 同步變更。", @@ -1515,7 +1515,7 @@ "attributes_set": "以下實體屬性為可程式化設定。", "caption": "自訂化", "description": "自訂化元件內容與中文化", - "different_include": "可能透過區域、全局或不同的包含。", + "different_include": "可能透過實體類群、全局或不同的包含。", "pick_attribute": "選擇欲覆寫屬性", "picker": { "documentation": "自訂化文件", @@ -2535,7 +2535,7 @@ "templates": { "all_listeners": "此模板監聽所有狀態變更事件。", "description": "模版使用 Jinja2 模板引擎及 Home Assistant 特殊擴充進行模板渲染。", - "domain": "區域", + "domain": "實體類群", "editor": "模板編輯器", "entity": "實體", "jinja_documentation": "Jinja2 模版文件", @@ -2840,7 +2840,7 @@ "by_card": "以面板", "by_entity": "以實體", "custom_card": "自訂面板", - "domain": "區域", + "domain": "實體類群", "entity": "實體", "no_description": "無描述可使用。" }, @@ -2962,7 +2962,7 @@ }, "unused_entities": { "available_entities": "此些為尚未於 Lovelace 介面中、可供使用的實體。", - "domain": "區域", + "domain": "實體類群", "entity": "實體", "entity_id": "實體 ID", "last_changed": "上次變更", From 2419f35eb907a5f747a9c707607b4780e1d0a477 Mon Sep 17 00:00:00 2001 From: HomeAssistant Azure Date: Mon, 26 Oct 2020 00:32:40 +0000 Subject: [PATCH 020/125] [ci skip] Translation update --- translations/frontend/cy.json | 10 +- translations/frontend/de.json | 5 +- translations/frontend/el.json | 61 ++++++++++-- translations/frontend/et.json | 4 +- translations/frontend/hu.json | 118 +++++++++++++++++++++--- translations/frontend/ja.json | 3 +- translations/frontend/lt.json | 168 +++++++++++++++++++++++++++++++++- translations/frontend/nl.json | 2 + 8 files changed, 346 insertions(+), 25 deletions(-) diff --git a/translations/frontend/cy.json b/translations/frontend/cy.json index 5804d92c29..25aeea3ae0 100644 --- a/translations/frontend/cy.json +++ b/translations/frontend/cy.json @@ -572,6 +572,7 @@ }, "unsupported_condition": "Cyflwr heb gymorth: {condition}" }, + "copy_to_clipboard": "Copïo i'r Clipfwrdd", "default_name": "Awtomeiddiad Newydd", "edit_ui": "Golygu gyda UI", "edit_yaml": "Golygu fel YAML", @@ -713,6 +714,7 @@ "caption": "Addasu", "description": "Addasu eich endidau", "picker": { + "documentation": "Dogfennaeth addasu", "header": "Addasu", "introduction": "Addasu nodweddion yr endid. Bydd ychwanegu/golygu osodiadau bersonol i rym ar unwaith. Bydd addasiadau sydd wedi tynnu yn dod i rym pan fydd yr endid yn cael ei ddiweddaru." } @@ -905,7 +907,10 @@ "device_tracker_pick": "Dewiswch dyfeis i'w dracio", "device_tracker_picked": "Tracio Dyfeis", "name": "Enw" - } + }, + "learn_more": "Dysgu mwy am bobl", + "person_not_found": "Ni allem ddarganfod y person yr oeddech yn ceisio ei olygu.", + "person_not_found_title": "Person heb ei ddarganfod" }, "scene": { "editor": { @@ -978,6 +983,9 @@ } }, "tags": { + "detail": { + "companion_apps": "apiau cydymaith" + }, "learn_more": "Dysgu mwy am dagiau" }, "users": { diff --git a/translations/frontend/de.json b/translations/frontend/de.json index 0bfd7970e4..918f5ab2e7 100644 --- a/translations/frontend/de.json +++ b/translations/frontend/de.json @@ -1192,6 +1192,8 @@ }, "event": { "context_user_pick": "Benutzer hinzufügen", + "context_user_picked": "Ereignis auslösender Benutzer", + "context_users": "Auf Ereignisse beschränken, die ausgelöst wurden durch", "event_data": "Ereignisdaten", "event_type": "Ereignistyp", "label": "Ereignis" @@ -2463,9 +2465,10 @@ "entity": "Entität", "jinja_documentation": "Jinja2 Template Dokumentation", "listeners": "Diese Vorlage überwacht die folgenden Statusänderungsereignisse:", - "no_listeners": "Diese Vorlage überwacht keine Geänderten Ereignisse und wird nicht automatisch aktualisiert.", + "no_listeners": "Diese Vorlage überwacht keine Ereignisse und wird nicht automatisch aktualisiert.", "reset": "Zurücksetzen auf Demo-Vorlage", "template_extensions": "Home Assistant-Vorlagenerweiterungen", + "time": "Diese Vorlage wird zu Beginn jeder Minute aktualisiert.", "title": "Vorlage", "unknown_error_template": "Unbekannter Fehler beim Rendern der Vorlage" } diff --git a/translations/frontend/el.json b/translations/frontend/el.json index b6fcb1360b..16f5bdba84 100644 --- a/translations/frontend/el.json +++ b/translations/frontend/el.json @@ -695,6 +695,11 @@ }, "service-picker": { "service": "Υπηρεσία" + }, + "user-picker": { + "add_user": "Προσθήκη χρήστη", + "no_user": "Κανένας χρήστης", + "remove_user": "Κατάργηση χρήστη" } }, "dialogs": { @@ -737,6 +742,13 @@ "ok": "Εντάξει" }, "helper_settings": { + "counter": { + "initial": "Αρχική τιμή", + "maximum": "Μέγιστη τιμή", + "minimum": "Ελάχιστη τιμή", + "restore": "Επαναφορά της τελευταίας γνωστής τιμής κατά την εκκίνηση του Home Assistant", + "step": "Μέγεθος βήματος" + }, "generic": { "icon": "Εικονίδιο", "name": "Όνομα" @@ -772,6 +784,9 @@ }, "platform_not_loaded": "Η ενσωμάτωση {platform} δεν έχει φορτωθεί. Προσθέστε το στη διαμόρφωσή σας είτε προσθέτοντας 'default_config:' ή '' {platform} : ''.", "required_error_msg": "Αυτό το πεδίο είναι υποχρεωτικό", + "timer": { + "duration": "Διάρκεια" + }, "yaml_not_editable": "Δεν είναι δυνατή η επεξεργασία των ρυθμίσεων αυτής της οντότητας από το περιβάλλον χρήστη. Μόνο οντότητες που έχουν δημιουργηθεί από το περιβάλλον χρήστη μπορούν να διαμορφωθούν από το περιβάλλον χρήστη." }, "image_cropper": { @@ -931,11 +946,13 @@ "notification_drawer": { "click_to_configure": "Πατήστε το κουμπί για να διαμορφώσετε το {entity}", "close": "Κλείστε", + "dismiss_all": "Απόρριψη όλων", "empty": "Καμία ειδοποίηση", "title": "Ειδοποιήσεις" }, "notification_toast": { "connection_lost": "Η σύνδεση χάθηκε. Επανασύνδεση…", + "dismiss": "Απόρριψη", "service_call_failed": "Απέτυχε η κλήση στην υπηρεσία {service}.", "started": "Το Home Assistant έχει ξεκινήσει!", "starting": "Το Home Assistant ξεκινά, ενδέχεται να μην είναι ακόμη διαθέσιμα όλα.", @@ -1189,6 +1206,9 @@ "trigger": "Έναυσμα" }, "event": { + "context_user_pick": "Προσθήκη χρήστη", + "context_user_picked": "Συμβάν πυροδότησης χρήστη", + "context_users": "Περιορισμός σε συμβάντα που ενεργοποιούνται από", "event_data": "Δεδομένα συμβάντος", "event_type": "Τύπος συμβάντος", "label": "Συμβάν" @@ -1513,18 +1533,25 @@ "add_prompt": "Δεν έχει προστεθεί ακόμα {name} χρησιμοποιώντας αυτήν τη συσκευή. Μπορείτε να προσθέσετε ένα κάνοντας κλικ στο κουμπί + παραπάνω.", "automation": { "actions": { - "caption": "Όταν ενεργοποιείται κάτι…" + "caption": "Όταν ενεργοποιείται κάτι…", + "no_actions": "Καμία ενέργεια", + "unknown_action": "Άγνωστη ενέργεια" }, "automations": "Αυτοματισμοί", "conditions": { - "caption": "Κάνε κάτι μόνο αν…" + "caption": "Κάνε κάτι μόνο αν…", + "no_conditions": "Χωρίς όρους", + "unknown_condition": "Άγνωστη κατάσταση" }, "create": "Δημιουργία αυτοματισμού με τη συσκευή", "no_automations": "Δεν υπάρχουν αυτοματισμοί", "no_device_automations": "Δεν υπάρχουν διαθέσιμοι αυτοματισμοί για αυτήν τη συσκευή.", "triggers": { - "caption": "Κάνε κάτι όταν…" - } + "caption": "Κάνε κάτι όταν…", + "no_triggers": "Χωρίς εναύσματα", + "unknown_trigger": "Άγνωστο έναυσμα" + }, + "unknown_automation": "Άγνωστος αυτοματισμός" }, "cant_edit": "Μπορείτε να επεξεργαστείτε μόνο στοιχεία που έχουν δημιουργηθεί στο UI.", "caption": "Συσκευές", @@ -1643,11 +1670,13 @@ "no_helpers": "Φαίνεται ότι δεν έχετε ακόμα βοηθούς!" }, "types": { + "counter": "Μετρητής", "input_boolean": "Εναλλαγή", "input_datetime": "Ημερομηνία και/ή ώρα", "input_number": "Αριθμός", "input_select": "Αναπτυσσόμενο μενού", - "input_text": "Κείμενο" + "input_text": "Κείμενο", + "timer": "Χρονόμετρο" } }, "info": { @@ -1866,6 +1895,8 @@ "network": "Δίκτυο", "node_id": "Αναγνωριστικό κόμβου", "ozw_instance": "Παρουσία OpenZWave", + "query_stage": "Στάδιο ερωτήματος", + "wakeup_instructions": "Οδηγίες αφύπνισης", "zwave": "Z-Wave" }, "device_info": { @@ -1875,6 +1906,10 @@ }, "navigation": { "network": "Δίκτυο", + "node": { + "config": "Διαμόρφωση", + "dashboard": "Πίνακας Επισκόπησης" + }, "nodes": "Κόμβοι", "select_instance": "Επιλέξτε στιγμιότυπο " }, @@ -1903,6 +1938,15 @@ "introduction": "Διαχείριση λειτουργιών δικτύου.", "node_count": "{count} κόμβοι" }, + "node_config": { + "header": "Ρύθμιση παραμέτρων κόμβου", + "help_source": "Οι περιγραφές παραμέτρων ρύθμισης παραμέτρων και το κείμενο βοήθειας παρέχονται από το έργο OpenZWave.", + "introduction": "Διαχειριστείτε τις διαφορετικές παραμέτρους ρύθμισης παραμέτρων για έναν κόμβο Z-Wave.", + "wakeup_help": "Οι κόμβοι που τροφοδοτούνται με μπαταρία πρέπει να είναι ξύπνιοι για να αλλάξουν τη ρύθμιση παραμέτρων τους. Εάν ο κόμβος δεν είναι ξύπνιος, το OpenZWave θα προσπαθήσει να ενημερώσει τη ρύθμιση παραμέτρων του κόμβου την επόμενη φορά που θα ξυπνήσει, η οποία θα μπορούσε να είναι πολλές ώρες (ή ημέρες) αργότερα. Ακολουθήστε αυτά τα βήματα για να ενεργοποιήσετε τη συσκευή σας:" + }, + "node_metadata": { + "product_manual": "Εγχειρίδιο προϊόντος" + }, "node_query_stages": { "associations": "Ανανέωση ομάδων συσχέτισης και μελών", "cacheload": "Φόρτωση πληροφοριών από το αρχείο προσωρινής αποθήκευσης OpenZWave. Οι κόμβοι μπαταρίας θα παραμείνουν σε αυτό το στάδιο έως ότου ξυπνήσει ο κόμβος.", @@ -2162,6 +2206,7 @@ "last_scanned": "Τελευταία σάρωση", "name": "Όνομα" }, + "learn_more": "Μάθετε περισσότερα σχετικά με τις ετικέτες", "never_scanned": "Δεν έγινε ποτέ σάρωση", "no_tags": "Καμία ετικέτα", "write": "Εγγραφή" @@ -2497,7 +2542,9 @@ "listeners": "Αυτό το πρότυπο ακούει για τα ακόλουθα συμβάντα που έχουν αλλάξει κατάσταση:", "no_listeners": "Αυτό το πρότυπο δεν ακούει για συμβάντα που έχουν αλλάξει κατάσταση και δεν θα ενημερώνεται αυτόματα.", "reset": "Επαναφορά στο πρότυπο επίδειξης", + "result_type": "Τύπος αποτελέσματος", "template_extensions": "Επεκτάσεις προτύπου Home Assistant", + "time": "Αυτό το πρότυπο ενημερώνεται στην αρχή κάθε λεπτού.", "title": "Πρότυπα", "unknown_error_template": "Άγνωστο σφάλμα ερμηνείας προτύπου" } @@ -2640,6 +2687,7 @@ "entity-id": "Αναγνωριστικό οντότητας", "last-changed": "Τελευταία αλλαγή", "last-triggered": "Τελευταία ενεργοποίηση", + "last-updated": "Τελευταία ενημέρωση", "none": "Δεν υπάρχουν δευτερεύουσες πληροφορίες", "position": "Θέση", "tilt-position": "Θέση κλίσης" @@ -2904,7 +2952,8 @@ "exit_edit_mode": "Έξοδος από τη λειτουργία επεξεργασίας περιβάλλοντος εργασίας χρήστη", "help": "Βοήθεια", "refresh": "Ανανέωση", - "reload_resources": "Επαναφόρτωση πόρων" + "reload_resources": "Επαναφόρτωση πόρων", + "start_conversation": "Έναρξη συζήτησης" }, "reload_lovelace": "Επαναφόρτωση Lovelace", "reload_resources": { diff --git a/translations/frontend/et.json b/translations/frontend/et.json index b5e310aef3..1407ed669a 100644 --- a/translations/frontend/et.json +++ b/translations/frontend/et.json @@ -585,7 +585,7 @@ "turned_on": "lülitus sisse", "was_at_home": "oli kodus", "was_at_state": "oli @ {state}", - "was_away": "oli ära", + "was_away": "oli kodust ära", "was_closed": "sulgus", "was_connected": "ühendus", "was_disconnected": "ühendati lahti", @@ -2237,7 +2237,7 @@ "name": "Nimi", "new_password": "Uus salasõna", "owner": "Omanik", - "password_changed": "Parooli muutmine õnnestus", + "password_changed": "Salasõna muutmine õnnestus", "system_generated": "Süsteemi genereeritud", "system_generated_users_not_editable": "Süsteemi loodud kasutajaid ei saa värskendada.", "system_generated_users_not_removable": "Süsteemi loodud kasutajaid ei saa eemaldada.", diff --git a/translations/frontend/hu.json b/translations/frontend/hu.json index f58167a447..d2dede2ed8 100644 --- a/translations/frontend/hu.json +++ b/translations/frontend/hu.json @@ -8,7 +8,7 @@ }, "groups": { "system-admin": "Adminisztrátorok", - "system-read-only": "Csak olvasható felhasználók", + "system-read-only": "Felhasználók csak olvasási jogosultsággal", "system-users": "Felhasználók" }, "panel": { @@ -420,6 +420,7 @@ "unlock": "Kinyit" }, "media_player": { + "browse_media": "Médiaböngészés", "media_next_track": "Következő", "media_play": "Lejátszás", "media_play_pause": "Lejátszás/szünet", @@ -570,9 +571,33 @@ "no_history_found": "Nem található előzmény." }, "logbook": { - "entries_not_found": "Nincsenek naplóbejegyzések." + "entries_not_found": "Nincsenek naplóbejegyzések.", + "messages": { + "became_unavailable": "elérhetetlenné vált", + "changed_to_state": "megváltozott: {state}", + "cleared_device_class": "{device_class} érzékelés befejeződött", + "detected_device_class": "{device_class}-t érzékelt", + "rose": "emelkedett", + "set": "beállít", + "turned_off": "kikapcsolt", + "turned_on": "bekapcsolt", + "was_at_home": "hazaért", + "was_at_state": "{state} állapotban volt", + "was_away": "távol volt", + "was_closed": "be lett zárva", + "was_connected": "csatlakozott", + "was_disconnected": "lecsatlakozott", + "was_low": "alacsony volt", + "was_normal": "normális volt", + "was_opened": "ki lett nyitva", + "was_plugged_in": "be lett dugva", + "was_safe": "biztonságos volt", + "was_unplugged": "ki lett húzva", + "was_unsafe": "nem volt biztonságos" + } }, "media-browser": { + "audio_not_supported": "A böngésződ nem támogatja az audio elemet.", "choose_player": "Lejátszó kiválasztása", "choose-source": "Forrás kiválasztása", "class": { @@ -581,6 +606,7 @@ "artist": "Előadó", "channel": "Csatorna", "composer": "Zeneszerző", + "contributing_artist": "Közreműködő előadó", "directory": "Könyvtár", "episode": "Epizód", "game": "Játék", @@ -612,8 +638,13 @@ "pick-media": "Média kiválasztása", "play": "Lejátszás", "play-media": "Média lejátszása", + "video_not_supported": "A böngésződ nem támogatja a video elemet.", "web-browser": "Böngésző" }, + "picture-upload": { + "label": "Kép", + "unsupported_format": "Nem támogatott formátum, válassz JPEG, PNG vagy GIF képet." + }, "related-items": { "area": "Terület", "automation": "A következő automatizálások része", @@ -818,6 +849,7 @@ "automation": "Automatizálások újratöltése", "command_line": "Parancssori entitások újratöltése", "core": "Lokáció és testreszabások újratöltése", + "filesize": "Fájlméret entitások újratöltése", "filter": "Szűrőentitások újratöltése", "generic": "Általános IP kamera entitások újratöltése", "generic_thermostat": "Általános termosztát entitások újratöltése", @@ -832,6 +864,7 @@ "min_max": "Min/max entitások újratöltése", "mqtt": "MQTT entitások újratöltése", "person": "Személyek újratöltése", + "ping": "Ping bináris érzékelő entitások újratöltése", "reload": "{domain} újratöltése", "rest": "Rest entitások és értesítési szolgáltatások újratöltése", "rpi_gpio": "Raspberry Pi GPIO entitások újratöltése", @@ -969,6 +1002,15 @@ "name": "Művelet", "type_select": "Művelet típusa", "type": { + "choose": { + "add_option": "Opció hozzáadása", + "conditions": "Feltételek", + "default": "Alapértelmezett műveletek", + "label": "Választ", + "option": "Opció {number}", + "remove_option": "Opció eltávolítása", + "sequence": "Műveletek" + }, "condition": { "label": "Feltétel" }, @@ -990,6 +1032,7 @@ }, "repeat": { "label": "Ismétlés", + "sequence": "Műveletek", "type_select": "Ismétlés típusa", "type": { "count": { @@ -1313,9 +1356,11 @@ "dont_expose_entity": "Entitás feltárásának törlése", "expose": "Feltárás Alexának", "expose_entity": "Entitás feltárása", + "exposed": "{selected} feltárva", "exposed_entities": "Feltárt entitások", "follow_domain": "Tartomány követése", "manage_domains": "Tartományok kezelése", + "not_exposed": "{selected} nincs feltárva", "not_exposed_entities": "Feltáratlan entitások", "title": "Alexa" }, @@ -1356,8 +1401,11 @@ "dont_expose_entity": "Entitás feltárásának törlése", "expose": "Feltárás a Google Asszisztensnek", "expose_entity": "Entitás feltárása", + "exposed": "{selected} feltárva", "exposed_entities": "Feltárt entitások", + "follow_domain": "Tartomány követése", "manage_domains": "Tartományok kezelése", + "not_exposed": "{selected} nincs feltárva", "not_exposed_entities": "Feltáratlan entitások", "sync_to_google": "A változások szinkronizálása a Google-lal.", "title": "Google Asszisztens" @@ -1820,8 +1868,14 @@ "controller": "Vezérlő", "instance": "Példány", "network": "Hálózat", + "node_id": "Csomópont ID", + "ozw_instance": "OpenZWave példány", "query_stage": "Lekérdezési fázis", - "wakeup_instructions": "Ébresztési utasítások" + "wakeup_instructions": "Ébresztési utasítások", + "zwave": "Z-Wave" + }, + "device_info": { + "zwave_info": "Z-Wave infó" }, "navigation": { "network": "Hálózat", @@ -1839,7 +1893,10 @@ "driverawakenodesqueries": "Minden éber csomópont lekérdezésre került", "driverfailed": "Nem sikerült csatlakozni a Z-Wave vezérlőhöz", "driverready": "A Z-Wave vezérlő inicializálása", + "offline": "OZWDaemon offline", "ready": "Csatlakozásra kész", + "started": "Csatlakoztatva az MQTT-hez", + "starting": "Csatlakozás az MQTT-hez", "stopped": "OpenZWave leállt" }, "offline": "Offline", @@ -1848,7 +1905,8 @@ "unknown": "Ismeretlen" }, "network": { - "header": "Hálózat menedzsment" + "header": "Hálózat menedzsment", + "node_count": "{count} csomópont" }, "node_config": { "header": "Csomópont konfigurációja", @@ -1871,7 +1929,10 @@ "zwave_plus": "Z-Wave Plus" }, "refresh_node": { - "button": "Csomópont frissítése" + "button": "Csomópont frissítése", + "node_status": "Csomópont állapota", + "start_refresh_button": "Frissítés indítása", + "step": "Lépés" }, "select_instance": { "header": "OpenZWave példány kiválasztása" @@ -1890,6 +1951,8 @@ "description": "A Home Assistant által követett személyek kezelése", "detail": { "admin": "Adminisztrátor", + "allow_login": "Személy bejelentkezésének engedélyezése", + "confirm_delete_user": "Biztos benne, hogy törölni szeretné a(z) {name} felhasználói fiókját? Továbbra is képes lesz nyomonkövetni a felhasználót, viszont a személy nem fog tudni bejelentkezni.", "create": "Létrehozás", "delete": "Törlés", "device_tracker_intro": "Válaszd ki azokat az eszközöket, amelyek ehhez a felhasználóhoz tartoznak.", @@ -2010,6 +2073,7 @@ "automation": "Automatizálások újratöltése", "command_line": "Parancssori entitások újratöltése", "core": "Lokáció és testreszabások újratöltése", + "filesize": "Fájlméret entitások újratöltése", "filter": "Szűrőentitások újratöltése", "generic": "Általános IP kamera entitások újratöltése", "generic_thermostat": "Általános termosztát entitások újratöltése", @@ -2026,6 +2090,7 @@ "min_max": "Min/max entitások újratöltése", "mqtt": "MQTT entitások újratöltése", "person": "Személyek újratöltése", + "ping": "Ping bináris érzékelő entitások újratöltése", "reload": "{domain} újratöltése", "rest": "Rest entitások és értesítési szolgáltatások újratöltése", "rpi_gpio": "Raspberry Pi GPIO entitások újratöltése", @@ -2057,6 +2122,11 @@ } }, "tags": { + "add_tag": "Címke hozzáadása", + "automation_title": "{name} címke beolvasva", + "caption": "Címkék", + "create_automation": "Automatizálás létrehozása címkével", + "description": "Címkék kezelése", "detail": { "companion_apps": "társalkalmazások", "create": "Létrehozás", @@ -2066,7 +2136,9 @@ "name": "Név", "new_tag": "Új címke", "tag_id": "Címke azonosító", - "update": "Frissítés" + "tag_id_placeholder": "Automatikusan generálódik, ha nincs kitöltve", + "update": "Frissítés", + "usage": "A címke beolvasáskor egy automatizálást indíthat el. Használhatsz NFC tageket, QR-kódokat vagy bármilyen más címkét. Használd a {companion_link} appot, hogy ezt a címkét egy programozható NFC tagre írd, vagy hozz létre egy QR-kódot lentebb." }, "edit": "Szerkesztés", "headers": { @@ -2074,7 +2146,9 @@ "name": "Név" }, "learn_more": "Tudj meg többet a címkékről", - "never_scanned": "Sosem volt szkennelve" + "never_scanned": "Sosem volt beolvasva", + "no_tags": "Nincsenek címkék", + "write": "Írás" }, "users": { "add_user": { @@ -2168,7 +2242,7 @@ "group_binding": { "bind_button_help": "Csatlakoztassa a kiválasztott csoportot a kiválasztott eszközfürtökhöz.", "bind_button_label": "Csoporthoz fűzés", - "cluster_selection_help": "Jelölje ki a kijelölt csoporthoz kötni kívánt fürtöket.", + "cluster_selection_help": "Jelöld ki azokat a klasztereket, amelyeket a kiválasztott csoporthoz szeretnél kötni.", "group_picker_help": "Jelölj ki egy csoportot a kötési parancs kiadásához.", "group_picker_label": "Köthető csoportok", "header": "Csoportkötés", @@ -2232,7 +2306,7 @@ "create": "Létrehozás", "delete": "Törlés", "icon": "Ikon", - "icon_error_msg": "Az ikonnak az előtag:ikonnév formátumban kell lennie, például: mdi:home", + "icon_error_msg": "Az ikonnak az \"előtag:ikonnév\" formátumban kell lennie, például: \"mdi:home\"", "latitude": "Szélesség", "longitude": "Hosszúság", "name": "Név", @@ -2386,7 +2460,7 @@ "reset": "Példa sablon visszaállítása", "result_type": "Eredmény típusa", "template_extensions": "Home Assistant sablon bővítmények", - "time": "Ez a sablon minden perc elején frissül.", + "time": "Ez a sablon minden perc kezdetekor frissül.", "title": "Sablon", "unknown_error_template": "Ismeretlen hiba a sablon kiértékelésekor" } @@ -2460,7 +2534,9 @@ "action-editor": { "actions": { "call-service": "Szolgáltatás meghívása", + "default_action": "Alapértelmezett művelet", "more-info": "További infók", + "navigate": "Navigál", "none": "Nincs művelet", "toggle": "Váltás", "url": "URL" @@ -2475,11 +2551,13 @@ "name": "Riasztópanel" }, "button": { + "default_action_help": "Az alapértelmezett művelet az entitás képességeitől függ, az entitás vagy kapcsolni fog vagy több információ fog megjelenni.", "description": "A Gomb kártya gombok hozzáadását teszi lehetővé feladatok végrehajtásához.", "name": "Gomb" }, "calendar": { "calendar_entities": "Naptár entitások", + "description": "A Naptár kártya egy olyan naptárat jelenít meg, mely a nap-, hét- és listanézetekkel rendelkezik", "inital_view": "Kezdeti nézet", "name": "Naptár", "views": { @@ -2506,6 +2584,7 @@ "entities": { "description": "Az Entitások kártya a legalapvetőbb kártya. Az elemeket listákba csoportosítja.", "edit_special_row": "A sor részleteinek megtekintése a Szerkesztés gombra kattintva", + "entity_row_editor": "Entitássor szerkesztő", "entity_row": { "attribute": "Attribútum", "button": "Gomb", @@ -2524,7 +2603,8 @@ "last-changed": "Utoljára módosult", "last-triggered": "Utoljára aktiválva", "last-updated": "Utoljára frissítve", - "position": "Pozíció", + "none": "Nincs másodlagos információ", + "position": "Helyzet", "tilt-position": "Döntési pozíció" }, "show_header_toggle": "Fejléc kapcsoló megjelenítése?", @@ -2648,7 +2728,8 @@ "description": "Az Érzékelő kártya gyors áttekintést nyújt az érzékelők állapotáról egy opcionális grafikon segítségével, amely az időbeli változásokat szemlélteti.", "graph_detail": "Grafikon részletei", "graph_type": "Grafikon típusa", - "name": "Érzékelő" + "name": "Érzékelő", + "show_more_detail": "További részletek megjelenítése" }, "shopping-list": { "description": "A Bevásárló lista kártya lehetővé teszi, hogy tételeket vegyél fel, szerkessz, pipálj ki, és törölj a bevásárlólistádról.", @@ -2732,6 +2813,9 @@ "para_migrate": "A Home Assistant a 'Konfiguráció áttelepítése' gomb megnyomásával az összes kártyához és nézethez automatikusan létre tud hozni ID-kat.", "para_no_id": "Ez az elem nem rendelkezik ID-val. Kérlek, adj hozzá egyet az 'ui-lovelace.yaml' fájlban!" }, + "move_card": { + "header": "Válaszd ki azt a nézetet, ahová a kártyát szeretnéd áthelyezni" + }, "raw_editor": { "confirm_remove_config_text": "Automatikusan létrehozzuk a Lovelace felhasználói felületed nézeteit a területeiddel és eszközeiddel, ha eltávolítod a Lovelace konfigurációját.", "confirm_remove_config_title": "Biztosan el szeretnéd távolítani a Lovelace felhasználói felület konfigurációját?", @@ -2759,6 +2843,10 @@ "yaml_control": "Ahhoz, hogy átvedd az irányítást YAML módban, hozz létre egy YAML fájlt az irányítópult konfigurációjában megadott vagy az alapértelmezett 'ui-lovelace.yaml' névvel.", "yaml_mode": "YAML módot használsz ehhez az irányítópulthoz, ezért nem módosíthatod a Lovelace konfigurációt a felhasználói felületről. Ha mégis onnan szeretnéd, akkor távolítsd el a 'mode: yaml' bejegyzést a Lovelace konfigurációból a 'configuration.yaml' fájlban." }, + "select_view": { + "dashboard_label": "Irányítópult", + "header": "Nézet kiválasztása" + }, "suggest_card": { "add": "Hozzáadás a Lovelace-hez", "create_own": "Készítsd el a sajátod", @@ -2978,6 +3066,7 @@ }, "intro": "Készen állsz arra, hogy felébreszd az otthonod, visszaszerezd a magánéleted és csatlakozz egy világhálós közösséghez?", "restore": { + "description": "Alternatív megoldásként visszaállíthatsz egy korábbi pillanatképet.", "hide_log": "Teljes napló elrejtése", "in_progress": "Visszaállítás folyamatban", "show_log": "Teljes napló megjelenítése" @@ -3090,6 +3179,7 @@ "header": "Kapcsolat automatikus bontása" }, "themes": { + "accent_color": "Kiemelő szín", "dark_mode": { "auto": "Automatikus", "dark": "Sötét", @@ -3098,7 +3188,9 @@ "dropdown_label": "Téma", "error_no_theme": "Nincsenek elérhető témák.", "header": "Téma", - "link_promo": "Tudj meg többet a témákról" + "link_promo": "Tudj meg többet a témákról", + "primary_color": "Elsődleges szín", + "reset": "Visszaállítás" }, "vibrate": { "description": "Rezgés engedélyezése vagy tiltása ezen az eszközön az eszközök vezérlésekor.", diff --git a/translations/frontend/ja.json b/translations/frontend/ja.json index 07d98f644c..3ab0605d66 100644 --- a/translations/frontend/ja.json +++ b/translations/frontend/ja.json @@ -684,6 +684,7 @@ }, "user-picker": { "add_user": "ユーザーを追加", + "no_user": "ユーザーなし", "remove_user": "ユーザーを削除する" } }, @@ -790,7 +791,7 @@ "restored": { "confirm_remove_text": "このエンティティを削除しますか?", "confirm_remove_title": "エンティティを削除しますか?", - "not_provided": "このエンティティは現在利用できず、削除、変更、または機能不全の統合または孤立したデバイスです。", + "not_provided": "このエンティティは現在利用できず、削除、変更ができなく孤立したデバイスです。", "remove_action": "エンティティの削除", "remove_intro": "エンティティが使用されなくなった場合は、削除することでクリーンアップできます。" }, diff --git a/translations/frontend/lt.json b/translations/frontend/lt.json index 567cd131d2..cee3dc2624 100644 --- a/translations/frontend/lt.json +++ b/translations/frontend/lt.json @@ -293,6 +293,34 @@ "device-picker": { "device": "Įrenginys" }, + "logbook": { + "by_service": "pagal paslaugą", + "messages": { + "became_unavailable": "tapo neprieinama", + "changed_to_state": "pakeista į {state}", + "cleared_device_class": "išvalyta {device_class} nerasta)", + "detected_device_class": "aptikta {device_class}", + "rose": "pakilo", + "set": "nustatyti", + "turned_off": "Išjungta", + "turned_on": "įjungta", + "was_at_home": "buvo namie", + "was_at_state": "buvo {state}", + "was_away": "buvo toli", + "was_closed": "buvo uždaryta", + "was_connected": "buvo prijungta", + "was_disconnected": "buvo atjungta", + "was_locked": "buvo užrakinta", + "was_low": "buvo mažas", + "was_normal": "buvo normalu", + "was_opened": "buvo atidaryta", + "was_plugged_in": "buvo prijungtas", + "was_safe": "buvo saugus", + "was_unlocked": "buvo atrakinta", + "was_unplugged": "buvo atjungtas", + "was_unsafe": "buvo nesaugus" + } + }, "relative_time": { "duration": { "day": "{count} {count, plural,\n one {diena}\n other {dienos}\n}", @@ -302,9 +330,29 @@ "week": "{count} {count, plural,\n one {savaitė}\n other {savaitės}\n}" }, "past": "prieš {time}" + }, + "user-picker": { + "add_user": "Pridėti naudotoją", + "no_user": "Nėra vartotojo", + "remove_user": "Pašalinti vartotoją" } }, "dialogs": { + "entity_registry": { + "faq": "dokumentacija" + }, + "helper_settings": { + "counter": { + "initial": "Pradinė reikšmė", + "maximum": "Didžiausia reiikšmė", + "minimum": "Mažiausia reikšmė", + "restore": "Atkurkite paskutinę žinomą reikšmę paleidus „Home Assistant“", + "step": "Žingsnio dydis" + }, + "timer": { + "duration": "Trukmė" + } + }, "more_info_control": { "dismiss": "Atsisakyti dialogo", "script": { @@ -319,6 +367,9 @@ "updater": { "title": "Atnaujinimo instrukcijos" } + }, + "quick-bar": { + "filter_placeholder": "Objekto filtras" } }, "duration": { @@ -335,10 +386,12 @@ }, "notification_drawer": { "close": "Uždaryti", + "dismiss_all": "Atmesti viską", "empty": "Pranešimų nėra", "title": "Pranešimai" }, "notification_toast": { + "dismiss": "Atmesti", "started": "Home Assistant startavo" }, "panel": { @@ -413,6 +466,7 @@ } } }, + "copy_to_clipboard": "Kopijuoti į iškarpinę", "edit_ui": "Redaguoti naudojant vartotojo sąsają", "edit_yaml": "Redaguoti kaip YAML", "triggers": { @@ -426,6 +480,9 @@ "type_select": "Trigerio tipas", "type": { "event": { + "context_user_pick": "Pridėti vartotoją", + "context_user_picked": "Vartotojo įvykis", + "context_users": "Apriboti įvykius, kuriuos sukėlė", "event_data": "Įvykio duomenys", "event_type": "Įvykio tipas", "label": "Įvykis:" @@ -499,10 +556,26 @@ }, "customize": { "picker": { + "documentation": "Tinkinimo dokumentacija", "header": "Pritaikymas" } }, "devices": { + "automation": { + "actions": { + "no_actions": "Nėra veiksmų", + "unknown_action": "Nežinomas veiksmas" + }, + "conditions": { + "no_conditions": "Nėra sąlygų", + "unknown_condition": "Nežinoma sąlyga" + }, + "triggers": { + "no_triggers": "Nėra paleidiklių", + "unknown_trigger": "Nežinomas paleidiklis" + }, + "unknown_automation": "Nežinomas automatizavimas" + }, "data_table": { "area": "Sritis", "device": "Įrenginys", @@ -514,11 +587,20 @@ "caption": "Subjektų registras", "description": "Visų žinomų subjektų apžvalga.", "picker": { + "filter": { + "show_all": "Rodyti viską" + }, "header": "Subjektų registras", "introduction2": "Naudokite subjekto registrą, kad perrašytumėte pavadinimą, pakeiskite subjekto ID arba pašalintumėte įrašą iš namų asistento. Atminkite, kad pašalindami registro įrašą tai nepanaikins pačio subjekto. Norėdami tai padaryti, sekite toliau pateiktą nuorodą ir pašalinkite ją iš integracijos puslapio." } }, "header": "Konfigūruoti Home Assistant", + "helpers": { + "types": { + "counter": "Skaitiklis", + "timer": "Laikmatis" + } + }, "integrations": { "config_entry": { "hub": "Prijungtas per", @@ -536,15 +618,55 @@ "mqtt": { "title": "MQTT" }, + "ozw": { + "common": { + "query_stage": "Užklausos etapas", + "wakeup_instructions": "Pažadinimo instrukcijos" + }, + "navigation": { + "node": { + "config": "Konfigūracija", + "dashboard": "Valdymo skydas" + } + }, + "node_config": { + "header": "Mazgo konfigūracija", + "help_source": "Konfigūracijos parametrų aprašymai ir žinyno tekstas pateikiami OpenZWave projekto.", + "introduction": "Valdyti skirtingus Z-Wave mazgo konfigūracijos parametrus." + }, + "node_metadata": { + "product_manual": "Gaminio vadovas" + } + }, "person": { "caption": "Asmenys", "detail": { + "allow_login": "Leisti asmeniui prisijungti", + "confirm_delete_user": "Ar tikrai norite panaikinti {name} vartotojo abonementą? Jūs vis dar galėsite sekti vartotoją, bet asmuo nebegalės prisijungti.", "device_tracker_intro": "Pasirinkite įrenginius, priklausančius šiam asmeniui.", "device_tracker_pick": "Pasirinkite įrenginį, kurį norite stebėti", "device_tracker_picked": "Stebėti įrenginį", "name": "Vardas" + }, + "learn_more": "Sužinokite daugiau apie žmones", + "person_not_found": "Nepavyko rasti asmens, kurį bandėte redaguoti.", + "person_not_found_title": "Asmuo nerastas" + }, + "script": { + "editor": { + "save_script": "Įrašyti scenarijų" + }, + "picker": { + "run_script": "Vykdyti scenarijų" } }, + "tags": { + "detail": { + "companion_apps": "papildomos programos", + "usage": "Nuskaitant žymą galima suaktyvinti automatizavimą, galite naudoti NFC žymes, QR kodus ar bet kokios kitos rūšies žymą. Naudokite mūsų {companion_link}, jei norite parašyti šią žymą į programuojamą NFC žymę arba sukurti QR kodą žemiau." + }, + "learn_more": "Sužinokite daugiau apie žymas" + }, "users": { "add_user": { "caption": "Pridėti vartotoją", @@ -591,6 +713,8 @@ "title": "Būsenos" }, "templates": { + "result_type": "Rezultato tipas", + "time": "Šis šablonas atnaujinamas kiekvienos minutės pradžioje.", "title": "Šablonas" } } @@ -617,11 +741,46 @@ } }, "editor": { + "action-editor": { + "actions": { + "call-service": "Skambučių paslauga", + "default_action": "Numatytasis veiksmas", + "more-info": "Daugiau informacijos", + "navigate": "Naršyti", + "none": "Nėra veiksmų", + "toggle": "Perjungti", + "url": "Internetinis adresas" + }, + "editor_service_data": "Paslaugos duomenis galima įvesti tik į kodo rengyklę" + }, + "card": { + "button": { + "default_action_help": "Numatytasis veiksmas priklauso nuo objekto galimybių, jis bus perjungtas arba bus rodoma daugiau informacijos." + }, + "entities": { + "entity_row_editor": "Objekto eilučių rengyklė", + "secondary_info_values": { + "brightness": "Ryškumas", + "entity-id": "Objekto ID", + "last-changed": "Paskutinį kartą pakeista", + "last-triggered": "Paskutinį kartą suaktyvinta", + "last-updated": "Paskutinį kartą atnaujinta", + "none": "Nėra antrinės informacijos", + "position": "Padėtis", + "tilt-position": "Pakreipimo padėtis" + } + } + }, + "edit_badges": { + "panel_mode": "Šie ženkleliai nebus rodomi, nes šis rodinys yra „Skydelio režime“." + }, "edit_card": { "add": "Pridėti kortelę", "delete": "Ištrinti", "edit": "Redaguoti", "move": "Perkelti", + "move_after": "Perkelti kortelę po", + "move_before": "Perkelti kortelę prieš", "pick_card": "Pasirinkite kortelę, kurią norite pridėti." }, "edit_lovelace": { @@ -665,7 +824,8 @@ "configure_ui": "Konfigūruoti UI", "exit_edit_mode": "Išeiti iš vartotojo sąsajos redagavimo režimo", "help": "Pagalba", - "refresh": "Atnaujinti" + "refresh": "Atnaujinti", + "start_conversation": "Pradėti pokalbį" }, "unused_entities": { "domain": "Domenas", @@ -710,6 +870,12 @@ } }, "page-onboarding": { + "restore": { + "description": "Taip pat galite atkurti iš ankstesnės momentinės kopijos.", + "hide_log": "Slėpti visą žurnalą", + "in_progress": "Vykdomas atkūrimas", + "show_log": "Rodyti visą žurnalą" + }, "user": { "data": { "password_confirm": "Patvirtinti slaptažodį" diff --git a/translations/frontend/nl.json b/translations/frontend/nl.json index ca7550351e..29cf2f6aea 100644 --- a/translations/frontend/nl.json +++ b/translations/frontend/nl.json @@ -2542,6 +2542,7 @@ "listeners": "Deze template luistert naar de volgende gebeurtenissen met gewijzigde status:", "no_listeners": "Deze template luistert niet naar gebeurtenissen met statuswijziging en wordt niet automatisch bijgewerkt.", "reset": "Resetten naar demosjabloon", + "result_type": "Resultaattype", "template_extensions": "Home Assistant sjabloon extensiesHome Assistant", "time": "Deze template wordt elke 60 seconden bijgewerkt na de laatste statuswijziging.", "title": "Sjablonen", @@ -2686,6 +2687,7 @@ "entity-id": "Entiteit ID", "last-changed": "Laatst gewijzigd", "last-triggered": "Voor het laatst uitgevoerd", + "last-updated": "Laatst bijgewerkt", "none": "Geen secundaire informatie", "position": "Positie", "tilt-position": "Kantelpositie" From 375f1431991599bb2dda6f24c5f6382b8fb83b82 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Mon, 26 Oct 2020 09:41:43 +0100 Subject: [PATCH 021/125] Update translation for MQTT reload (#7475) --- src/translations/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/translations/en.json b/src/translations/en.json index 3253f435c6..2e65d98cb8 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -999,7 +999,7 @@ "filesize": "Reload file size entities", "telegram": "Reload telegram notify services", "smtp": "Reload smtp notify services", - "mqtt": "Reload mqtt entities", + "mqtt": "Reload manually configured mqtt entities", "rpi_gpio": "Reload Raspberry Pi GPIO entities" }, "server_management": { From 733ce3b6b82de9d37f3162f6f9e53c1832bd3a0b Mon Sep 17 00:00:00 2001 From: Ryan Meek <25127328+maykar@users.noreply.github.com> Date: Mon, 26 Oct 2020 04:42:57 -0400 Subject: [PATCH 022/125] Fix lovelace background color (#7478) --- src/panels/lovelace/hui-root.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/panels/lovelace/hui-root.ts b/src/panels/lovelace/hui-root.ts index ab652d6dcc..ad92d4a9f8 100644 --- a/src/panels/lovelace/hui-root.ts +++ b/src/panels/lovelace/hui-root.ts @@ -789,7 +789,10 @@ class HUIRoot extends LitElement { ha-app-layout { min-height: 100%; - background: var(--lovelace-background); + background: var( + --lovelace-background, + var(--primary-background-color) + ); } ha-tabs { width: 100%; From 61e17395c96e7843f04918142b0e67abef3a1056 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Lov=C3=A9n?= Date: Mon, 26 Oct 2020 20:55:47 +0100 Subject: [PATCH 023/125] Correctly replace rebuilt badges in view (#7487) --- src/panels/lovelace/views/hui-view.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/panels/lovelace/views/hui-view.ts b/src/panels/lovelace/views/hui-view.ts index 1fd878e572..39b2cb3d44 100644 --- a/src/panels/lovelace/views/hui-view.ts +++ b/src/panels/lovelace/views/hui-view.ts @@ -224,7 +224,7 @@ export class HUIView extends UpdatingElement { badgeElToReplace ); } - this._badges = this._cards!.map((curBadgeEl) => + this._badges = this._badges!.map((curBadgeEl) => curBadgeEl === badgeElToReplace ? newBadgeEl : curBadgeEl ); } From 11e555ef6ff21bc9f9a3317b5e74d556f7773cb9 Mon Sep 17 00:00:00 2001 From: HomeAssistant Azure Date: Tue, 27 Oct 2020 00:32:18 +0000 Subject: [PATCH 024/125] [ci skip] Translation update --- translations/frontend/cs.json | 4 +- translations/frontend/cy.json | 50 +++++- translations/frontend/da.json | 28 +++- translations/frontend/de.json | 57 ++++++- translations/frontend/en.json | 4 +- translations/frontend/fi.json | 303 ++++++++++++++++++++++++++++++++-- translations/frontend/it.json | 71 ++++++-- translations/frontend/ru.json | 4 +- translations/frontend/sk.json | 7 +- 9 files changed, 477 insertions(+), 51 deletions(-) diff --git a/translations/frontend/cs.json b/translations/frontend/cs.json index 0e9eec5f66..0ec6c9b4b8 100644 --- a/translations/frontend/cs.json +++ b/translations/frontend/cs.json @@ -1530,7 +1530,7 @@ } }, "devices": { - "add_prompt": "Pomocí tohoto zařízení dosud nebyl přidán žádný {name}. Můžete ho přidat kliknutím na tlačítko + výše.", + "add_prompt": "Pomocí tohoto zařízení dosud nebyly přidány žádné {name}. Můžete je přidat kliknutím na tlačítko + výše.", "automation": { "actions": { "caption": "Když je něco spuštěno ...", @@ -2710,7 +2710,7 @@ "severity": { "define": "Definovat závažnost?", "green": "Zelená", - "red": "Červaná", + "red": "Červená", "yellow": "Žlutá" } }, diff --git a/translations/frontend/cy.json b/translations/frontend/cy.json index 25aeea3ae0..778937d59f 100644 --- a/translations/frontend/cy.json +++ b/translations/frontend/cy.json @@ -374,6 +374,25 @@ "entity": "Endid" } }, + "logbook": { + "messages": { + "became_unavailable": "Daeth anargael", + "changed_to_state": "wedi newid i {state}", + "cleared_device_class": "clirio (ni ganfuwyd {device_class}", + "detected_device_class": "canfodwyd {device_class}", + "turned_off": "i ffwrdd", + "turned_on": "troi ymlaen", + "was_at_home": "oedd gartref", + "was_closed": "oedd ar gau", + "was_locked": "wedi'i gloi", + "was_opened": "agorwyd", + "was_plugged_in": "oedd wedi'i gysylltu", + "was_safe": "yn ddiogel", + "was_unlocked": "wedi'i ddatgloi", + "was_unplugged": "wedi'i ddatgysylltu", + "was_unsafe": "yn anniogel" + } + }, "service-picker": { "service": "Gwasanaeth" }, @@ -391,6 +410,7 @@ "name": "Enw", "update": "Diweddariad" }, + "faq": "Dogfennaeth", "no_unique_id": "Nid oes gan yr endid hwn ID unigryw, felly ni ellir rheoli ei osodiadau o'r UI." }, "helper_settings": { @@ -435,6 +455,9 @@ "title": "Diweddaru Cyfarwyddiadau" } }, + "quick-bar": { + "filter_placeholder": "Hidlo Endid" + }, "voice_command": { "label": "Teipiwch gwestiwn a gwasgwch 'Enter'", "label_voice": "Teipiwch a pwyswch 'Enter' neu tapiwch y meicroffon i siarad" @@ -758,7 +781,7 @@ "description": "Trosolwg o holl endidau hysbys.", "picker": { "filter": { - "hidden_entities": "{rhif} cudd {rhif, lluosog,\n un {endid}\n {endidau} eraill}\n}", + "hidden_entities": "{number} hidden {number, plural,\n one {entity}\n other {entities}\n}", "show_all": "Dangos popeth" }, "header": "Gofrestrfa Endid", @@ -892,7 +915,8 @@ }, "select_instance": { "header": "Dewiswch Enghraifft OpenZWave", - "introduction": "Mae gennych fwy nag un enghraifft OpenZWave yn rhedeg. Pa enghraifft hoffech chi ei rheoli?" + "introduction": "Mae gennych fwy nag un enghraifft OpenZWave yn rhedeg. Pa enghraifft hoffech chi ei rheoli?", + "none_found": "Ni allem ddod o hyd i enghraifft OpenZWave. Os ydych chi'n credu bod hyn yn anghywir, gwiriwch eich setiau OpenZWave a MQTT a sicrhau y gall Home Assistant gyfathrebu â'ch brocer MQTT." }, "services": { "add_node": "Ychwanegu Nod", @@ -903,6 +927,7 @@ "caption": "Pobl", "description": "Rheoli'r pobl mae Home Assistant yn tracio.", "detail": { + "allow_login": "Caniatáu'r person i fewngofnodi", "device_tracker_intro": "Dewiswch y dyfeisiau sy'n perthyn i'r person hwn.", "device_tracker_pick": "Dewiswch dyfeis i'w dracio", "device_tracker_picked": "Tracio Dyfeis", @@ -945,10 +970,15 @@ "script": { "caption": "Sgript", "description": "Creu a golygu sgriptiau", + "editor": { + "save_script": "Arbed sgript" + }, "picker": { + "add_script": "Creu sgript newydd", "headers": { "name": "Enw" }, + "run_script": "Rhedeg sgript", "show_info": "Dangos gwybodaeth am y sgript" } }, @@ -984,7 +1014,8 @@ }, "tags": { "detail": { - "companion_apps": "apiau cydymaith" + "companion_apps": "apiau cydymaith", + "usage": "Gall tag sbarduno awtomeiddiad wrth ei sganio, gallwch ddefnyddio tagiau NFC, codau QR neu unrhyw fath arall o dag. Defnyddiwch ein {companion_link} i ysgrifennu'r tag hwn i dag NFC rhaglenadwy neu i greu cod QR isod." }, "learn_more": "Dysgu mwy am dagiau" }, @@ -1145,9 +1176,18 @@ }, "entities": { "description": "Y cerdyn Endidau yw'r math mwyaf cyffredin o gerdyn. Mae'n grwpio eitemau gyda'i gilydd fewn i restrau.", + "edit_special_row": "Gweld manylion y rhes yma drwy glicio ar y botwm golygu", + "entity_row_editor": "Golygydd Rhes endid", "name": "Endidau", "secondary_info_values": { - "last-updated": "Diweddarwyd Ddiwethaf" + "brightness": "Disgleirdeb", + "entity-id": "ID Endid", + "last-changed": "Newidiwyd Ddiwethaf", + "last-triggered": "Sbardunwyd Ddiwethaf", + "last-updated": "Diweddarwyd Ddiwethaf", + "none": "Dim Gwybodaeth Eilaidd", + "position": "Safle", + "tilt-position": "Safle Tilt" } }, "entity-filter": { @@ -1258,6 +1298,8 @@ "edit": "Golygu", "header": "Ffurfweddu Cerdyn", "move": "Symud", + "move_after": "Symud cerdyn ar ôl", + "move_before": "Symud cerdyn cyn", "pick_card": "Dewiswch y cerdyn rydych eisiau ychwanegu", "show_code_editor": "Dangos Golygydd Cod", "show_visual_editor": "Dangos Golygydd Gweledol", diff --git a/translations/frontend/da.json b/translations/frontend/da.json index 25b0906a7b..65fa173574 100644 --- a/translations/frontend/da.json +++ b/translations/frontend/da.json @@ -617,6 +617,11 @@ }, "service-picker": { "service": "Tjeneste" + }, + "user-picker": { + "add_user": "Tilføj bruger", + "no_user": "Ingen bruger", + "remove_user": "Fjern bruger" } }, "dialogs": { @@ -813,6 +818,7 @@ }, "notification_toast": { "connection_lost": "Forbindelse afbrudt. Opretter forbindelse igen...", + "dismiss": "Afvis", "service_call_failed": "Kunne ikke kalde tjenesten {service}.", "started": "Home Assistant er startet!", "starting": "Home Assistant starter. Nogle funktioner er måske ikke tilgængelige før opstarten er færdig.", @@ -1048,6 +1054,7 @@ "trigger": "Udløser" }, "event": { + "context_user_pick": "Tilføj bruger", "event_data": "Hændelsesdata", "event_type": "Hændelsestype", "label": "Hændelse" @@ -1702,6 +1709,12 @@ "stage": "Fase", "zwave_info": "Z-Wave-info" }, + "navigation": { + "node": { + "config": "Konfiguration", + "dashboard": "Betjeningspanel" + } + }, "network_status": { "details": { "ready": "Klar til at oprette forbindelse", @@ -1709,6 +1722,9 @@ "stopped": "OpenZWave stoppet" } }, + "node_metadata": { + "product_manual": "Brugervejledning" + }, "nodes_table": { "failed": "Mislykkedes", "zwave_plus": "Z-Wave Plus" @@ -1893,7 +1909,7 @@ "name": "Navn", "new_password": "Ny Adgangskode", "owner": "Ejer", - "password_changed": "Adgangskoden er ændret!", + "password_changed": "Adgangskoden er ændret", "system_generated": "Systemgenereret", "system_generated_users_not_editable": "Systemoprettede brugere kan ikke opdateres.", "system_generated_users_not_removable": "Kan ikke fjerne systemgenererede brugere.", @@ -1914,7 +1930,7 @@ "discovered_text": "Enheder vil dukke op her, når de er fundet.", "discovery_text": "Fundne enheder vil dukke op her. Følg instruktionerne for din enhed(er) og sæt enhed(erne) i parringstilstand.", "header": "Zigbee Home Automation - Tilføj enheder", - "no_devices_found": "Ingen enheder blev fundet. Sørg for at de er i paringtilstand, og hold dem vågne, mens opdagelsen kører.", + "no_devices_found": "Ingen enheder blev fundet. Sørg for at de er i parringstilstand og hold dem vågne mens der søges.", "pairing_mode": "Sørg for, at dine enheder er i parringstilstand. Se enhedens vejledning i, hvordan du gør dette.", "search_again": "Søg igen", "spinner": "Søger efter ZHA Zigbee-enheder..." @@ -2192,7 +2208,9 @@ "description": "Skabeloner gengives ved hjælp af Jinja2-skabelonmotoren med nogle Home Assistant-specifikke udvidelser.", "editor": "Skabelonredigering", "jinja_documentation": "Jinja2-skabelon-dokumentation", + "result_type": "Resultattype", "template_extensions": "Skabelon-udvidelser til Home Assistant", + "time": "Denne skabelon opdateres hvert minut", "title": "Skabelon", "unknown_error_template": "Ukendt fejl ved gengivelse af skabelon" } @@ -2294,6 +2312,9 @@ "entities": { "description": "Entiteter-kortet er det mest almindelige type kort. Det grupperer elementer på lister.", "name": "Entiteter", + "secondary_info_values": { + "last-updated": "Sidst opdateret %@" + }, "show_header_toggle": "Vis omskifter ved overskrift?", "toggle": "Til/fra entiteter." }, @@ -2541,7 +2562,8 @@ "exit_edit_mode": "Afslut brugerflade-redigeringstilstand", "help": "Hjælp", "refresh": "Opdater", - "reload_resources": "Genindlæs ressourcer" + "reload_resources": "Genindlæs ressourcer", + "start_conversation": "Start samtale" }, "reload_lovelace": "Genindlæs brugerflade", "reload_resources": { diff --git a/translations/frontend/de.json b/translations/frontend/de.json index 918f5ab2e7..13f0e103c3 100644 --- a/translations/frontend/de.json +++ b/translations/frontend/de.json @@ -577,6 +577,7 @@ "messages": { "became_unavailable": "nicht mehr verfügbar", "changed_to_state": "wechselte zu {state}", + "cleared_device_class": "gelöscht (keine {device_class} erkannt)", "detected_device_class": "erkannt {device_class}", "rose": "gestiegen", "set": "einstellen", @@ -858,19 +859,25 @@ "reload": { "automation": "Automationen neu laden", "filesize": "Dateigröße-Entitäten neu laden", - "filter": "Filter-Entitäten neu laden", + "filter": "Filter Entitäten neu laden", + "generic": "Allgemeine IP Kamera Entitäten neu laden", + "generic_thermostat": "Allgemeine Thermostat Entitäte neu laden", "homekit": "HomeKit neu laden", "input_boolean": "Input-Booleans neu laden", "input_datetime": "Input-Datum/Zeit neu laden", "input_number": "Input-Numern neu laden", "input_select": "Input-Selektionen neu laden", "input_text": "Input-Texte neu laden", + "min_max": "Min/Max-Entitäten neu laden", "mqtt": "MQTT-Entitäten neu laden", "person": "Personen neu laden", + "ping": "Binäre-Ping-Entitäten neu laden", "reload": "{domain} neu laden", + "rpi_gpio": "Raspberry Pi GPIO Entitäten neu laden", "scene": "Szenen neu laden", "script": "Skripte neu laden", "smtp": "SMTP-Benachrichtigungsdienst neu laden", + "statistics": "Statistik Entitäten neu laden", "telegram": "Telegram-Benachrichtigungsdienst neu laden", "template": "Templates neu laden", "zone": "Zonen neu laden" @@ -1123,6 +1130,7 @@ "after": "Nach", "before": "Vor", "label": "Zeit", + "type_input": "Wert eines Datum/Zeit-Helfers", "type_value": "Feste Zeit", "weekdays": { "fri": "Freitag", @@ -1253,6 +1261,7 @@ "time": { "at": "Um", "label": "Zeit", + "type_input": "Wert eines Datum/Zeit-Helfers", "type_value": "Feste Zeit" }, "webhook": { @@ -1409,6 +1418,7 @@ "expose_entity": "Entität verfügbar machen", "exposed": "{selected} verfügbar gemacht", "exposed_entities": "Exponierte Entitäten", + "follow_domain": "Domain folgen", "manage_domains": "Domains verwalten", "not_exposed": "{selected} wird nicht verfügbar gemacht", "not_exposed_entities": "Nicht angezeigte Entitäten", @@ -1540,6 +1550,7 @@ "caption": "Geräte", "confirm_delete": "Möchtest du dieses Gerät wirklich löschen?", "confirm_rename_entity_ids": "Möchten Sie auch die Entitäts-IDs Ihrer Entitäten umbenennen?", + "confirm_rename_entity_ids_warning": "Dies ändert keine Konfiguration (wie Automatisierungen, Skripte, Szenen, Dashboards), die derzeit diese Entitäten verwendet! Sie müssen sie selbst aktualisieren, um die neuen Entitäts-IDs zu verwenden!", "data_table": { "area": "Bereich", "battery": "Batterie", @@ -1874,23 +1885,35 @@ "common": { "instance": "Instanz", "network": "Netzwerk", + "node_id": "Knoten-ID", + "ozw_instance": "OpenZWave-Instanz", + "query_stage": "Abfragephase", + "wakeup_instructions": "Weckanleitung", "zwave": "Z-Wave" }, "device_info": { + "node_failed": "Knoten fehlgeschlagen", "zwave_info": "Z-Wave Infos" }, "navigation": { "network": "Netzwerk", "node": { - "config": "Konfig", + "config": "Konfiguration", "dashboard": "Dashboard" }, + "nodes": "Knoten", "select_instance": "Instanz auswählen" }, "network_status": { "details": { + "driverallnodesqueried": "Alle Knoten wurden abgefragt", + "driverallnodesqueriedsomedead": "Alle Knoten wurden abgefragt. Einige Knoten wurden tot aufgefunden", + "driverawakenodesqueries": "Alle wachen Knoten wurden abgefragt", + "driverfailed": "Verbindung zum Z-Wave-Controller fehlgeschlagen", + "driverready": "Initialisierung des Z-Wave Controllers", "driverremoved": "Der Treiber wurde entfernt", "driverreset": "Der Treiber wurde zurückgesetzt", + "offline": "OZWDaemon offline", "ready": "Bereit zum Verbinden", "started": "Verbunden mit MQTT", "starting": "Verbinde zu MQTT" @@ -1901,10 +1924,15 @@ "unknown": "Unbekannt" }, "network": { - "header": "Netzwerkverwaltung" + "header": "Netzwerkverwaltung", + "introduction": "Verwalten Sie netzwerkweite Funktionen.", + "node_count": "{count} Knoten" }, "node_config": { - "help_source": "Konfigurationsparameterbeschreibungen und Hilfstext werden vom OpenZWave-Projekt bereitgestellt." + "header": "Knotenkonfiguration", + "help_source": "Konfigurationsparameterbeschreibungen und Hilfetexte werden vom OpenZWave-Projekt bereitgestellt.", + "introduction": "Verwalten Sie die verschiedenen Konfigurationsparameter für einen Z-Wave Knoten.", + "wakeup_help": "Batteriebetriebene Knoten müssen wach sein, um ihre Konfiguration zu ändern. Wenn der Knoten nicht aktiv ist, versucht OpenZWave beim nächsten Aufwachen, die Konfiguration des Knotens zu aktualisieren. Dies kann mehrere Stunden (oder Tage) später sein. Führen Sie die folgenden Schritte aus, um Ihr Gerät zu aktivieren:" }, "node_metadata": { "product_manual": "Produkthandbuch" @@ -1927,7 +1955,14 @@ }, "refresh_node": { "button": "Geräte aktualisieren", - "start_refresh_button": "Aktualisierung starten" + "start_refresh_button": "Aktualisierung starten", + "step": "Schritt", + "title": "Knoteninformationen aktualisieren", + "wakeup_header": "Weckanleitung für" + }, + "select_instance": { + "introduction": "Sie haben mehr als eine OpenZWave-Instanz ausgeführt. Welche Instanz möchten Sie verwalten?", + "none_found": "Wir haben keine OpenZWave-Instanz gefunden. Wenn Sie der Meinung sind, dass dies nicht korrekt ist, überprüfen Sie Ihre OpenZWave- und MQTT-Setups und stellen Sie sicher, dass der Home Assistant mit Ihrem MQTT-Broker kommunizieren kann." }, "services": { "add_node": "Knoten hinzufügen", @@ -2065,11 +2100,14 @@ "section": { "reloading": { "automation": "Automatisierungen neu laden", + "command_line": "Kommandozeilen-Entitäten neu laden", "core": "Ort & Anpassungen neu laden", "filesize": "Dateigröße-Entitäten neu laden", "filter": "Filter-Entitäten neu laden", + "generic": "Allgemeine IP-Kamera Entitäten neu laden", "group": "Gruppen, Gruppenentitäten und Benachrichtigungsdienste neu laden", "heading": "Neuladen der YAML-Konfiguration", + "history_stats": "Verlaufsstatistik-Entitäten neu laden", "homekit": "HomeKit neu laden", "input_boolean": "Eingabe-Booleans neu laden", "input_datetime": "Eingabe-Datums- und Zeitfelder neu laden", @@ -2124,7 +2162,7 @@ "tag_id": "NFC Tag ID", "tag_id_placeholder": "Automatisch generiert, wenn leer gelassen", "update": "Aktualisieren", - "usage": "Ein Tag kann eine Automatisierung auslösen, wenn es gescannt wird, Sie können NFC-Tags, QR-Codes oder jede andere Art von Tag verwenden. Verwenden Sie unsere \"companion_link\", um dieses Tag in ein programmierbares NFC-Tag zu schreiben oder unten einen QR-Code zu erstellen." + "usage": "Ein Tag kann eine Automatisierung auslösen, wenn er gescannt wird. Sie können NFC-Tags, QR-Codes oder jede andere Art von Tags verwenden. Verwenden Sie unsere {companion_link}, um diesen Tag in ein programmierbares NFC-Tag zu schreiben oder einen QR-Code zu erstellen." }, "edit": "Bearbeiten", "headers": { @@ -2176,7 +2214,7 @@ "system": "System" } }, - "users_privileges_note": "Benutzergruppen sind derzeit noch nicht fertig entwickelt. Der Benutzer wird nicht in der Lage sein Änderungen an der Instanz über das UI vorzunehmen. Derzeit überprüfen wir noch alle API Endpunkte um sicherzustellen dass diese nur von Administratoren genutzt werden können." + "users_privileges_note": "Benutzergruppen sind derzeit noch in Entwicklung. Der Benutzer wird nicht in der Lage sein, Änderungen an der Instanz über das UI vorzunehmen. Derzeit überprüfen wir noch alle API Endpunkte um sicherzustellen dass diese nur von Administratoren genutzt werden können." }, "zha": { "add_device_page": { @@ -2467,6 +2505,7 @@ "listeners": "Diese Vorlage überwacht die folgenden Statusänderungsereignisse:", "no_listeners": "Diese Vorlage überwacht keine Ereignisse und wird nicht automatisch aktualisiert.", "reset": "Zurücksetzen auf Demo-Vorlage", + "result_type": "Ergebnistyp", "template_extensions": "Home Assistant-Vorlagenerweiterungen", "time": "Diese Vorlage wird zu Beginn jeder Minute aktualisiert.", "title": "Vorlage", @@ -2612,7 +2651,7 @@ "last-changed": "Zuletzt geändert", "last-triggered": "Zuletzt ausgelöst", "last-updated": "Zuletzt aktualisiert", - "none": "Keine Sekundärinfo", + "none": "Keine Sekundärinformatrionen", "position": "Position", "tilt-position": "Neigungsposition" }, @@ -3209,7 +3248,7 @@ }, "shopping-list": { "add_item": "Artikel hinzufügen", - "clear_completed": "Erledigte entfernen", + "clear_completed": "Abgehakte entfernen", "microphone_tip": "Tippe oben rechts auf das Mikrofon und sage oder schreibe “Süßigkeiten zu meiner Einkaufsliste hinzufügen”" } }, diff --git a/translations/frontend/en.json b/translations/frontend/en.json index 09899e24a3..cd4a859106 100644 --- a/translations/frontend/en.json +++ b/translations/frontend/en.json @@ -873,7 +873,7 @@ "input_select": "Reload input selects", "input_text": "Reload input texts", "min_max": "Reload min/max entities", - "mqtt": "Reload mqtt entities", + "mqtt": "Reload manually configured mqtt entities", "person": "Reload people", "ping": "Reload ping binary sensor entities", "reload": "Reload {domain}", @@ -2149,7 +2149,7 @@ "input_text": "Reload input texts", "introduction": "Some parts of Home Assistant can reload without requiring a restart. Hitting reload will unload their current YAML configuration and load the new one.", "min_max": "Reload min/max entities", - "mqtt": "Reload mqtt entities", + "mqtt": "Reload manually configured mqtt entities", "person": "Reload people", "ping": "Reload ping binary sensor entities", "reload": "Reload {domain}", diff --git a/translations/frontend/fi.json b/translations/frontend/fi.json index ef1cbd13eb..f1bd0def23 100644 --- a/translations/frontend/fi.json +++ b/translations/frontend/fi.json @@ -19,6 +19,7 @@ "logbook": "Lokikirja", "mailbox": "Postilaatikko", "map": "Kartta", + "media_browser": "Mediaselain", "profile": "Profiili", "shopping_list": "Ostoslista", "states": "Yleisnäkymä" @@ -569,6 +570,36 @@ "loading_history": "Ladataan tilahistoriaa...", "no_history_found": "Tilahistoriaa ei löydetty" }, + "logbook": { + "by": "mukaan", + "by_service": "palvelun mukaan", + "entries_not_found": "Lokikirjauksia ei löytynyt.", + "messages": { + "became_unavailable": "ei ollut käytettävissä", + "changed_to_state": "vaihdettu tilaan {state}", + "cleared_device_class": "tyhjennetty (ei {device_class} havaittu)", + "detected_device_class": "havaittu {device_class}", + "rose": "nousi", + "set": "laski", + "turned_off": "asetettiin pois päältä", + "turned_on": "asetettiin päälle", + "was_at_home": "oli kotona", + "was_at_state": "oli paikassa {state}", + "was_away": "oli poissa", + "was_closed": "suljettiin", + "was_connected": "yhdistettiin", + "was_disconnected": "katkaistiin", + "was_locked": "lukittiin", + "was_low": "oli alhainen", + "was_normal": "oli normaali", + "was_opened": "avattiin", + "was_plugged_in": "kytkettiin", + "was_safe": "oli turvallinen", + "was_unlocked": "avattiin", + "was_unplugged": "kytkettin irti", + "was_unsafe": "oli vaarallinen" + } + }, "media-browser": { "audio_not_supported": "Selaimesi ei tue audioelementtiä.", "choose_player": "Valitse soitin", @@ -603,7 +634,10 @@ "server": "Palvelin" }, "documentation": "dokumentaatio", + "learn_adding_local_media": "Lisätietoja median lisäämisestä {documentation} .", "local_media_files": "Sijoita video-, ääni- ja kuvatiedostot mediahakemistoon, jotta voit selata ja toistaa niitä selaimessa tai tuetuissa mediasoittimissa.", + "media_browsing_error": "Median selausvirhe", + "media_not_supported": "Browser Media Player ei tue tämän tyyppistä mediaa", "media_player": "Mediatoistin", "media-player-browser": "Media Player -selain", "no_items": "Ei kohteita", @@ -613,11 +647,13 @@ "pick-media": "Valitse media", "play": "Toista", "play-media": "Toista media", + "setup_local_help": "Tarkista paikallisen median määrittäminen {documentation}.", "video_not_supported": "Selaimesi ei tue videoelementtiä.", "web-browser": "Selain" }, "picture-upload": { - "label": "Kuva" + "label": "Kuva", + "unsupported_format": "Muotoa ei tueta, valitse JPEG-, PNG- tai GIF-kuva." }, "related-items": { "area": "Alue", @@ -645,6 +681,11 @@ }, "service-picker": { "service": "Palvelu" + }, + "user-picker": { + "add_user": "Lisää käyttäjä", + "no_user": "Ei käyttäjää", + "remove_user": "Poista käyttäjä" } }, "dialogs": { @@ -655,6 +696,7 @@ "update": "Päivitä" }, "domain_toggler": { + "reset_entities": "Nollaa entiteetit", "title": "Kytke verkkotunnukset" }, "entity_registry": { @@ -674,6 +716,7 @@ "unavailable": "Tämä kohde ei ole tällä hetkellä käytettävissä.", "update": "Päivitä" }, + "faq": "dokumentaatio", "no_unique_id": "Tällä kohteella ei ole yksilöivää tunnusta, joten sen asetuksia ei voida hallita käyttöliittymästä.", "related": "Liittyvät", "settings": "Asetukset" @@ -685,6 +728,13 @@ "ok": "OK" }, "helper_settings": { + "counter": { + "initial": "Asetusarvo", + "maximum": "Suurin arvo", + "minimum": "Pienin arvo", + "restore": "Palauta viimeisin tunnettu arvo, kun Home Assistant käynnistyy", + "step": "Askelkoko" + }, "generic": { "icon": "Kuvake", "name": "Nimi" @@ -720,16 +770,21 @@ }, "platform_not_loaded": "Integrointia {platform} ei ole ladattu. Voit ladata sen lisäämällä \"default_config:\" tai ''{platform}:'' konfiguraatiotiedostoon.", "required_error_msg": "Tämä kenttä on pakollinen", + "timer": { + "duration": "Kesto" + }, "yaml_not_editable": "Tämän kohteen asetuksia ei voi muokata käyttöliittymästä. Vain käyttöliittymästä määritetyt kohteet ovat määritettävissä käyttöliittymästä." }, "image_cropper": { "crop": "Rajaa" }, "more_info_control": { + "controls": "Ohjaimet", "details": "Yksityiskohdat", "dismiss": "Sulje ikkuna", "edit": "Muokkaa kohdetta", "history": "Historia", + "last_updated": "Viimeksi päivitetty", "person": { "create_zone": "Luo vyöhyke nykyisestä sijainnista" }, @@ -785,6 +840,23 @@ "description": "Asetukset tallennettiin onnistuneesti." } }, + "quick-bar": { + "commands": { + "reload": { + "homekit": "Lataa HomeKit uudelleen", + "input_boolean": "Lataa booleanit uudelleen", + "input_datetime": "Lataa syöttöpäivämäärät uudelleen", + "input_number": "Lataa syöttönumerot uudelleen", + "mqtt": "Lataa mqtt entiteetit uudelleen", + "person": "Lataa henkilöt uudelleen", + "rpi_gpio": "Lataa Raspberry Pi GPIO entiteetit uudelleen", + "scene": "Lataa tilanteet uudelleen", + "script": "Lataa scriptit uudelleen", + "zone": "Lataa alueet uudelleen" + } + }, + "filter_placeholder": "Entiteetin suodatin" + }, "voice_command": { "did_not_hear": "Home Assistant ei kuullut mitään", "error": "Hups, tapahtui virhe", @@ -839,11 +911,13 @@ "notification_drawer": { "click_to_configure": "Napsauta painiketta määrittääksesi {entity}", "close": "Sulje", + "dismiss_all": "Hylkää kaikki", "empty": "Ei ilmoituksia", "title": "Ilmoitukset" }, "notification_toast": { "connection_lost": "Ei yhteyttä. Yritetään muodostaa yhteys uudelleen...", + "dismiss": "Hylkää", "service_call_failed": "Palvelua {service} ei onnistuttu kutsumaan.", "started": "Home Assistant on käynnistynyt!", "starting": "Home Assistant käynnistyy, kaikki ei ole vielä valmista.", @@ -958,9 +1032,12 @@ "service_data": "Palvelun data" }, "wait_for_trigger": { - "label": "Odota laukaisinta" + "continue_timeout": "Jatka odotusajan jälkeen", + "label": "Odota laukaisinta", + "timeout": "Odotusaika (valinnainen)" }, "wait_template": { + "continue_timeout": "Jatka odotusajan jälkeen", "label": "Odota", "timeout": "Aikakatkaisu", "wait_template": "Odotusmalli (template)" @@ -1024,7 +1101,18 @@ "time": { "after": "Jälkeen", "before": "Ennen", - "label": "Aika" + "label": "Aika", + "type_input": "Päivämäärä/aika avustimen arvo", + "type_value": "Kiinteä aika", + "weekdays": { + "fri": "Perjantai", + "mon": "Maanantai", + "sat": "Lauantai", + "sun": "Sunnuntai", + "thu": "Torstai", + "tue": "Tiistai", + "wed": "Keskiviikko" + } }, "zone": { "entity": "Kokonaisuus, jolla on sijainti", @@ -1034,6 +1122,7 @@ }, "unsupported_condition": "Ehtoa ei tueta: {condition}" }, + "copy_to_clipboard": "Kopioi leikepöydälle", "default_name": "Uusi automaatio", "description": { "label": "Kuvaus", @@ -1082,6 +1171,9 @@ "trigger": "Laukaisin" }, "event": { + "context_user_pick": "Lisää käyttäjä", + "context_user_picked": "Käyttäjän laukaisutapahtuma", + "context_users": "Rajoita tapahtumiin, jotka ovat käynnistäneet", "event_data": "Tapahtuman tietosisältö", "event_type": "Tapahtuman tyyppi", "label": "Tapahtuma" @@ -1112,6 +1204,7 @@ "value_template": "Arvomalli (template)" }, "state": { + "attribute": "Attribuutti (valinnainen)", "for": "Viive", "from": "Lähtötila", "label": "Tila", @@ -1162,6 +1255,8 @@ "add_automation": "Lisää automaatio", "delete_automation": "Poista automaatio", "delete_confirm": "Haluatko varmasti poistaa tämän automaation?", + "duplicate": "Kopioi", + "duplicate_automation": "Kopioi automaatio", "edit_automation": "Muokkaa automaatiota", "header": "Automaatioeditori", "headers": { @@ -1243,9 +1338,14 @@ }, "alexa": { "banner": "Tämän käyttöliittymän kautta näkyvien kohteiden muokkaaminen on poistettu käytöstä, koska olet määrittänyt kohdesuodattimet kohteessa configuration.yaml.", + "dont_expose_entity": "Älä näytä entiteettiä", "expose": "Julkista Alexalle", + "expose_entity": "Näytä entiteetti", + "exposed": "{selected} on näkyvissä", "exposed_entities": "Julkistetut kohteet", + "follow_domain": "Seuraa verkkotunnusta", "manage_domains": "Hallitse toimialueita", + "not_exposed": "{selected} ei ole näkyvissä", "not_exposed_entities": "eJulk", "title": "Alexa" }, @@ -1283,9 +1383,14 @@ "google": { "banner": "Tämän käyttöliittymän kautta näkyvien kihteiden muokkaaminen on poistettu käytöstä, koska olet määrittänyt kohdesuodattimet kohteessa configuration.yaml.", "disable_2FA": "Poista kaksivaiheinen tunnistautuminen", + "dont_expose_entity": "Älä näytä entiteettiä", "expose": "Julkista Google Assistantille", + "expose_entity": "Näytä entiteetti", + "exposed": "{selected} on näkyvissä", "exposed_entities": "Julkistetut kohteet", + "follow_domain": "Seuraa verkkotunnusta", "manage_domains": "Hallitse toimialueita", + "not_exposed": "{selected} ei ole näkyvissä", "not_exposed_entities": "Julkistamattomat kohteet", "sync_to_google": "Synkronoidaan muutokset Googleen.", "title": "Google Assistant" @@ -1376,6 +1481,7 @@ "different_include": "Mahdollisesti verkkotunnuksen, glob-kaavan tai muun sisällön kautta.", "pick_attribute": "Valitse yliajettava määrite", "picker": { + "documentation": "Mukautusten dokumentaatio", "entity": "Kohde", "header": "Räätälöinti", "introduction": "Muotoile ominaisuuksia olemuskohtaisesti. Lisäykset/muokkaukset tulevat välittömästi voimaan. Poistetut mukautukset tulevat voimaan, kun olemus päivitetään." @@ -1387,25 +1493,34 @@ } }, "devices": { + "add_prompt": "Kohdetta {name} ei ole vielä lisätty tällä laitteella. Voit lisätä yhden napsauttamalla yllä olevaa + -painiketta.", "automation": { "actions": { - "caption": "Kun jokin laukeaa..." + "caption": "Kun jokin laukeaa...", + "no_actions": "Ei toimintoja", + "unknown_action": "Tuntematon toiminto" }, "automations": "Automaatiot", "conditions": { - "caption": "Tee jotain vain, jos..." + "caption": "Tee jotain vain, jos...", + "no_conditions": "Ei ehtoja", + "unknown_condition": "Tuntematon ehto" }, "create": "Luo automaatio laitteella", "no_automations": "Ei automaatioita", "no_device_automations": "Tälle laitteelle ei ole käytettävissä automaatioita.", "triggers": { - "caption": "Tee jotain kun..." - } + "caption": "Tee jotain kun...", + "no_triggers": "Ei laukaisuehtoja", + "unknown_trigger": "Tuntematon laukaisuehto" + }, + "unknown_automation": "Tuntematon automaatio" }, "cant_edit": "Voit muokata vain käyttöliittymässä luotuja kohteita.", "caption": "Laitteet", "confirm_delete": "Haluatko varmasti poistaa tämän laitteen?", "confirm_rename_entity_ids": "Haluatko myös nimetä kohteiden ID:t uudelleen?", + "confirm_rename_entity_ids_warning": "Tämä ei muuta mitään määrityksiä (kuten automaatiot, komentosarjat, tilanteet, kojelaudat), jotka käyttävät tällä hetkellä entiteettejä! Sinun on päivitettävä ne itse käyttääksesi uusia entiteettitunnuksia!", "data_table": { "area": "Alue", "battery": "Akku", @@ -1461,6 +1576,7 @@ }, "filter": { "filter": "Suodatin", + "show_all": "Näytä kaikki", "show_disabled": "Näytä käytöstä poistetut kohteet", "show_readonly": "Näytä vain luku -kohteet", "show_unavailable": "Näytä ei-käytettävissä olevat kohteet" @@ -1516,11 +1632,13 @@ "no_helpers": "Näyttää siltä, että sinulla ei ole vielä avustajia!" }, "types": { + "counter": "Laskuri", "input_boolean": "Kytkin", "input_datetime": "Päivämäärä ja/tai kellonaika", "input_number": "Numero", "input_select": "Alasvetovalikko", - "input_text": "Teksti" + "input_text": "Teksti", + "timer": "Ajastin" } }, "info": { @@ -1550,6 +1668,7 @@ }, "integrations": { "add_integration": "Lisää integraatio", + "attention": "Huomiota tarvitaan", "caption": "Integraatiot", "config_entry": { "area": "Alueessa {area}", @@ -1570,6 +1689,7 @@ "options": "Asetukset", "reload": "Lataa uudelleen", "reload_confirm": "Integraatio ladattiin uudelleen", + "reload_restart_confirm": "Viimeistele tämän integroinnin uudelleenlataaminen käynnistämällä Home Assistant uudelleen", "rename": "Nimeä uudelleen", "restart_confirm": "Käynnistä Home Assistant uudellen viimeistelläksesi tämän integraation poistamisen", "settings_button": "Muokkaa {integration}-asetuksia", @@ -1736,6 +1856,8 @@ "network": "Verkko", "node_id": "Solmun tunnus", "ozw_instance": "OpenZWave-instanssi", + "query_stage": "Kyselyn vaihe", + "wakeup_instructions": "Herätysohjeet", "zwave": "Z-Wave" }, "device_info": { @@ -1745,11 +1867,23 @@ }, "navigation": { "network": "Verkko", + "node": { + "config": "Asetus", + "dashboard": "Kojelauta" + }, "nodes": "Solmut", "select_instance": "Valitse instanssi" }, "network_status": { "details": { + "driverallnodesqueried": "Kaikkia solmuja on kysytty", + "driverallnodesqueriedsomedead": "Kaikkia solmuja on kysytty. Osa solmuista kuolleita", + "driverawakenodesqueries": "Kaikkia hereillä olevia solmuja on kysytty", + "driverfailed": "Yhteyden muodostaminen Z-Wave-ohjaimeen epäonnistui", + "driverready": "Alustetaan Z-Wave-ohjain", + "driverremoved": "Ohjain on poistettu", + "driverreset": "Ohjain on nollattu", + "offline": "OZWDaemon offline-tilassa", "ready": "Valmis yhdistämään", "started": "Yhdistetty MQTT:hen", "starting": "Yhdistetään MQTT:hen", @@ -1762,23 +1896,65 @@ }, "network": { "header": "Verkon hallinta", + "introduction": "Hallitse verkon laajuisia toimintoja.", "node_count": "{count} solmua" }, + "node_config": { + "header": "Solmun määritys", + "help_source": "Config-parametrien kuvaukset ja ohjetekstit ovat OpenZWave-projektin toimittamia.", + "introduction": "Hallitse Z-Wave-solmun eri kokoonpanoparametreja.", + "wakeup_help": "Akkukäyttösten solmujen on oltava hereillä, jotta niiden kokoonpanoa voidaan muuttaa. Jos solmu ei ole hereillä, OpenZWave yrittää päivittää solmun kokoonpanon seuraavan herätyksen yhteydessä, mikä voi olla useita tunteja (tai päiviä) myöhemmin. Herätä laite seuraavasti:" + }, + "node_metadata": { + "product_manual": "Tuotteen käyttöopas" + }, "node_query_stages": { - "complete": "Haastatteluprosessi on valmis" + "cacheload": "Ladataan tietoja OpenZWave-välimuistitiedostosta. Akkukäyttöiset solmut pysyvät tässä vaiheessa, kunnes solmu herää.", + "complete": "Haastatteluprosessi on valmis", + "configuration": "Noudetaan solmun määritysarvot", + "dynamic": "Noudetaan solmun usein muuttuvat arvot", + "instances": "Noudetaan lisätietoja, laitteen tukemista esiintymistä tai kanavista", + "manufacturerspecific1": "Noudetaan solmun valmistajan tiedot ja tuotetunnus", + "manufacturerspecific2": "Noudetaan solmun lisävalmistajan tiedot ja tuotetunnus", + "neighbors": "Noudetaan luettelo solmun naapureista", + "nodeinfo": "Noudetaan solmun tuetut komentoluokat", + "nodeplusinfo": "Noudetaan solmun Z-Wave+-tiedot", + "probe": "Tarkistetaan, onko solmu hereillä/elossa", + "protocolinfo": "Noudetaan tämän solmun Z-Wave-perusominaisuudet ohjaimelta", + "session": "Noudetaan solmun harvoin muuttuvat arvot", + "static": "Noudetaan staattiset arvot laitteesta", + "versions": "Noudetaan tiedot laiteohjelmistosta ja komentoluokan versioista", + "wakeup": "Asetetaan tuki herätysjonoille ja viesteille" + }, + "node": { + "button": "Solmun tiedot", + "not_found": "Solmua ei löytynyt" }, "nodes_table": { "failed": "Epäonnistui", "id": "ID", "manufacturer": "Valmistaja", "model": "Malli", + "query_stage": "Kyselyn vaihe", "zwave_plus": "Z-Wave Plus" }, "refresh_node": { - "button": "Päivitä solmu" + "battery_note": "Jos solmu on akkukäyttöinen, muista herättää se ennen jatkamista", + "button": "Päivitä solmu", + "complete": "Solmun päivitys valmis", + "description": "Tämä käskee OpenZWavea haastattelemaan solmun uudelleen ja päivittämään solmun komentoluokat, ominaisuudet ja arvot.", + "node_status": "Solmun tila", + "refreshing_description": "Päivitetään solmun tietoja...", + "start_refresh_button": "Aloita päivitys", + "step": "Askel", + "title": "Päivitä solmun tiedot", + "wakeup_header": "Herätysohjeet", + "wakeup_instructions_source": "Herätysohjeet ovat peräisin OpenZWave-yhteisölaitetietokannasta." }, "select_instance": { - "header": "Valitse OpenZWave" + "header": "Valitse OpenZWave", + "introduction": "Käynnissä on useita OpenZWave-esiintymiä. Mitä esiintymää haluat hallita?", + "none_found": "Emme löytäneet OpenZWave-esiintymää. Jos uskot, että tämä on väärin, tarkista OpenZWave- ja MQTT-asetukset ja varmista, että Home Assistant voi kommunikoida MQTT-välittäjäsi kanssa." }, "services": { "add_node": "Lisää solmu", @@ -1793,6 +1969,8 @@ "create_person": "Luo henkilö", "description": "Hallitse henkilöitä, joita Home Assistant seuraa", "detail": { + "admin": "Järjestelmänvalvoja", + "allow_login": "Salli henkilön kirjautua sisään", "confirm_delete_user": "Haluatko varmasti poistaa käyttäjän {name}? Voit edelleen seurata käyttäjää, mutta henkilö ei voi enää kirjautua sisään.", "create": "Luo", "delete": "Poista", @@ -1809,8 +1987,11 @@ "update": "Päivitä" }, "introduction": "Täällä voit määritellä jokaisen kiinnostavan henkilön Home Assistantissa.", + "learn_more": "Lisätietoja henkilöistä", "no_persons_created_yet": "Näyttää siltä, ettet ole vielä luonut yhtään henkilöä.", - "note_about_persons_configured_in_yaml": "Huomaa: configuration.yaml-tiedoston kautta määritettyjä henkilöitä ei voi muokata käyttöliittymän kautta." + "note_about_persons_configured_in_yaml": "Huomaa: configuration.yaml-tiedoston kautta määritettyjä henkilöitä ei voi muokata käyttöliittymän kautta.", + "person_not_found": "Emme löytäneet henkilöä, jota yritit muokata.", + "person_not_found_title": "Henkilöä ei löydy" }, "scene": { "activated": "Aktivoitu tilanne {name}.", @@ -1886,6 +2067,7 @@ "restart": "Käynnistä uudelleen", "single": "Yksittäinen (oletus)" }, + "save_script": "Tallenna komentosarja", "sequence": "Järjestys", "sequence_sentence": "Skriptin toimintojen järjestys." }, @@ -1899,6 +2081,7 @@ "introduction": "Skriptieditorin avulla voit luoda ja muokata skriptejä. Seuraa alla olevaa linkkiä lukeaksesi ohjeet varmistaaksesi, että olet määrittänyt Home Assistant -sovelluksen oikein.", "learn_more": "Lisätietoja skripteistä", "no_scripts": "Emme löytäneet muokattavia skriptejä", + "run_script": "Suorita komentosarja", "show_info": "Näytä tietoja skriptistä", "trigger_script": "Laukaise skripti" } @@ -1909,11 +2092,15 @@ "section": { "reloading": { "automation": "Lataa automaatiot uudelleen", + "command_line": "Lataa komentorivientiteetiteetit uudelleen", "core": "Lataa ydin uudelleen", "filesize": "Lataa tiedostokokokohteet uudelleen", + "filter": "Lataa suodatinentiteetiteetiteetit uudelleen", + "generic": "Lataa yleiset IP-kamera-entiteetit uudelleen", "generic_thermostat": "Lataa yleiset termostaatit uudelleen", "group": "Lataa ryhmät uudelleen", "heading": "Asetusten uudelleenlataus", + "history_stats": "Lataa historiatilastot-entiteetit uudelleen", "homekit": "Lataa HomeKit uudelleen", "input_boolean": "Lataa booleanit uudelleen", "input_datetime": "Lataa syöttöpäivämäärät uudelleen", @@ -1922,9 +2109,18 @@ "input_text": "Lataa syöttötekstit uudelleen", "introduction": "Jotkut Home Assistantin osat voidaan ladata uudelleen ilman, että tarvitaan uudelleenkäynnistystä. Painamalla uudelleenlatausta yaml-tiedosto luetaan uudelleen.", "min_max": "Lataa min/max-kohteet uudelleen", + "mqtt": "Lataa mqtt-entiteetit uudelleen", "person": "Lataa henkilöt uudelleen", + "ping": "Lataa ping-binaarianturin entiteetit uudelleen", + "reload": "Lataa uudelleen {domain}", + "rpi_gpio": "Lataa Raspberry Pi GPIO -entiteetit uudelleen", "scene": "Lataa tilanteet uudelleen", "script": "Lataa skriptit uudelleen", + "smtp": "Lataa smtp-ilmoituspalvelut uudelleen", + "statistics": "Lataa tilastoentiteetit uudelleen", + "template": "Lataa mallientiteetiteetit uudelleen", + "trend": "Lataa trendientiteetiteetit uudelleen", + "universal": "Lataa universaali mediasoittimen entiteetit uudelleen", "zone": "Lataa alueet uudelleen" }, "server_management": { @@ -1945,15 +2141,32 @@ } }, "tags": { + "add_tag": "Lisää tunniste", + "automation_title": "Tunniste {name} skannataan", + "caption": "Tunnisteet", + "create_automation": "Automaation luominen tunnisteella", + "description": "Hallitse tunnisteita", "detail": { + "companion_apps": "oheissovellukset", + "create": "Luo", + "create_and_write": "Luo ja kirjoita", + "delete": "Poista", "description": "Kuvaus", "name": "Nimi", - "tag_id": "Tägin ID" + "new_tag": "Uusi tunniste", + "tag_id": "Tägin ID", + "tag_id_placeholder": "Luodaan automaattisesti, kun se jätetään tyhjäksi", + "update": "Päivitä", + "usage": "Tunniste voi käynnistää automaation skannattaessa, voit käyttää NFC-tunnisteita, QR-koodeja tai mitä tahansa muuta tunnistetta. {companion_link} avulla voit kirjoittaa tämän tunnisteen ohjelmoitavaan NFC-tunnisteeseen tai luoda QR-koodin alla." }, "edit": "Muokkaa", "headers": { + "last_scanned": "Viimeksi skannattu", "name": "Nimi" }, + "learn_more": "Lisätietoja tunnisteista", + "never_scanned": "Ei koskaan skannattu", + "no_tags": "Ei tunnisteita", "write": "Kirjoita" }, "users": { @@ -2278,12 +2491,18 @@ "title": "Tilat" }, "templates": { + "all_listeners": "Tämä malli kuuntelee kaikkia tilan muuttamia tapahtumia.", "description": "Mallit tehdään Jinja2-mallimoottorilla, joissa on joitain Home Assistant -kohtaisia laajennuksia.", "domain": "Toimialue", "editor": "Mallieditori", "entity": "Kohde", "jinja_documentation": "Jinja2-mallin dokumentaatio", + "listeners": "Tämä malli kuuntelee seuraavia tilan muuttuneita tapahtumia:", + "no_listeners": "Tämä malli ei kuuntele mitään tapahtumia eikä päivity automaattisesti.", + "reset": "Palauta demomalliin", + "result_type": "Tuloksen tyyppi", "template_extensions": "Home Assistant -mallilaajennukset", + "time": "Tämä malli päivittyy jokaisen minuutin alussa.", "title": "Malli", "unknown_error_template": "Tuntematon virhe mallin renderöinnissa" } @@ -2354,6 +2573,20 @@ "refresh": "Päivitä" }, "editor": { + "action-editor": { + "actions": { + "call-service": "Kutsu palvelua", + "default_action": "Oletustoiminto", + "more-info": "Lisätietoja", + "navigate": "Siirry", + "none": "Ei toimintoa", + "toggle": "Vaihda", + "url": "URL-osoite" + }, + "editor_service_data": "Palvelutietoja voi syöttää vain koodieditoriin", + "navigation_path": "Navigointipolku", + "url_path": "URL-polku" + }, "card": { "alarm-panel": { "available_states": "Käytettävissä olevat tilat", @@ -2361,11 +2594,20 @@ "name": "Hälytyspaneeli" }, "button": { + "default_action_help": "Oletustoiminto riippuu entiteetin ominaisuuksista, se joko vaihtaa tai lisätietoja näytetään.", "description": "Painikekortti antaa sinun lisätä painikkeita tehtävien suorittamiseen.", "name": "Painike" }, "calendar": { - "name": "Kalenteri" + "calendar_entities": "Kalenteri entiteetit", + "description": "Kalenterikortissa näkyy kalenteri, joka sisältää päivä-, viikko- ja luettelonäkymät", + "inital_view": "Alkuperäinen näkymä", + "name": "Kalenteri", + "views": { + "dayGridDay": "Päivä", + "dayGridMonth": "Kuukausi", + "listWeek": "Luettelo" + } }, "conditional": { "card": "Kortti", @@ -2384,10 +2626,13 @@ }, "entities": { "description": "Kohde-kortti on yleisin korttityyppi. Se ryhmittelee kohteet yhteen luetteloiksi.", + "edit_special_row": "Näytä tämän rivin tiedot napsauttamalla Muokkaa-painiketta", + "entity_row_editor": "Entiteetti rivi editori", "entity_row": { "attribute": "Määrite", "button": "Painike", "buttons": "Painikkeet", + "call-service": "Kutsu palvelua", "cast": "Cast", "conditional": "Ehdollinen", "divider": "Jakaja", @@ -2396,9 +2641,17 @@ }, "name": "Kohteet", "secondary_info_values": { - "brightness": "Kirkkaus" + "brightness": "Kirkkaus", + "entity-id": "Entiteetin tunnus", + "last-changed": "Viimeksi muutettu", + "last-triggered": "Viimeksi laukaistu", + "last-updated": "Viimeksi päivitetty", + "none": "Ei toissijaisia tietoja", + "position": "Sijainti", + "tilt-position": "Kallistuksen sijainti" }, "show_header_toggle": "Näytä otsikkokytkin?", + "special_row": "erityinen rivi", "toggle": "Ota kohteet käyttöön tai poista käytöstä" }, "entity-filter": { @@ -2519,7 +2772,8 @@ "description": "Anturikortti antaa sinulle nopean yleiskatsauksen antureiden tilasta valinnaisella kaaviolla, joka kuvaa muutosta ajan myötä.", "graph_detail": "Kaavion tiedot", "graph_type": "Kaavion tyyppi", - "name": "Sensori" + "name": "Sensori", + "show_more_detail": "Näytä lisätietoja" }, "shopping-list": { "description": "Ostolistakortti antaa sinun lisätä, muokata, tarkistaa ja tyhjentää kohteita ostoslistaltasi.", @@ -2548,6 +2802,9 @@ "entity": "Kohde", "no_description": "Ei kuvausta saatavilla." }, + "edit_badges": { + "panel_mode": "Näitä kylttejä ei näytetä, koska tämä näkymä on \"Paneelitilassa\"." + }, "edit_card": { "add": "Lisää kortti", "confirm_cancel": "Haluatko varmasti peruuttaa?", @@ -2556,9 +2813,12 @@ "edit": "Muokkaa", "header": "Kortti-asetukset", "move": "Siirrä", + "move_after": "Siirrä kortti jälkeen", + "move_before": "Siirrä kortti ennen", "options": "Lisää vaihtoehtoja", "pick_card": "Valitse kortti jonka haluat lisätä", "pick_card_view_title": "Minkä kortin haluat lisätä {name} -näkymääsi?", + "search_cards": "Etsi kortteja", "show_code_editor": "Näytä koodieditori", "show_visual_editor": "Näytä visuaalinen editori", "toggle_editor": "Vaihda editori", @@ -2650,7 +2910,8 @@ "exit_edit_mode": "Poistu käyttöliittymän muokkaustilasta", "help": "Apua", "refresh": "Päivitä", - "reload_resources": "Lataa resurssit uudelleen" + "reload_resources": "Lataa resurssit uudelleen", + "start_conversation": "Aloita keskustelu" }, "reload_lovelace": "Lataa Lovelace uudelleen", "reload_resources": { @@ -2839,6 +3100,7 @@ "intro": "Hei {name}, tervetuloa Home Assistant -käyttäjäksi. Kuinka haluaisit nimetä uuden kotisi?", "intro_location": "Haluaisimme tietää, missä asut. Nämä tiedot auttavat näyttämään tietoja ja perustamaan aurinkoon perustuvia automaatioita. Näitä tietoja ei koskaan jaeta oman verkkosi ulkopuolelle.", "intro_location_detect": "Voimme auttaa sinua täyttämään nämä tiedot tekemällä kertaluonteisen pyynnön ulkoiselle palvelulle.", + "location_name": "Home Assistant -asennuksen nimi", "location_name_default": "Koti" }, "integration": { @@ -2847,6 +3109,12 @@ "more_integrations": "Lisää" }, "intro": "Oletko valmis herättämään kotisi eloon, palauttamaan yksityisyytesi ja liittymään maailmanlaajuiseen nikkarien joukkoon?", + "restore": { + "description": "Vaihtoehtoisesti voit palauttaa aiemmasta varmuuskopiosta.", + "hide_log": "Piilota koko loki", + "in_progress": "Palautus käynnissä", + "show_log": "Näytä koko loki" + }, "user": { "create_account": "Luo tili", "data": { @@ -2880,6 +3148,7 @@ "current_user": "Olet tällä hetkellä kirjautuneena tunnuksella {fullName}.", "customize_sidebar": { "button": "Muokkaa", + "description": "Voit myös aktivoida muokkaustilan pitämällä sivupalkin otsikkoa painettuna.", "header": "Muuta järjestystä ja piiloita kohteita sivupalkista" }, "dashboard": { diff --git a/translations/frontend/it.json b/translations/frontend/it.json index 334b30c2bf..dc1428984a 100644 --- a/translations/frontend/it.json +++ b/translations/frontend/it.json @@ -695,6 +695,11 @@ }, "service-picker": { "service": "Servizio" + }, + "user-picker": { + "add_user": "Aggiungi utente", + "no_user": "Nessun utente", + "remove_user": "Rimuovi utente" } }, "dialogs": { @@ -718,9 +723,9 @@ "enabled_description": "Le entità disabilitate non saranno aggiunte a Home Assistant", "enabled_label": "Abilita entità", "entity_id": "ID entità", - "icon": "Sostituzione icona", + "icon": "Icona", "icon_error": "Le icone dovrebbero essere nel formato 'prefisso:nome_icona', ad esempio 'mdi:home'.", - "name": "Sostituzione nome", + "name": "Nome", "note": "Nota: questo potrebbe non funzionare ancora con tutte le integrazioni.", "unavailable": "Questa entità non è attualmente disponibile.", "update": "Aggiorna" @@ -737,6 +742,13 @@ "ok": "OK" }, "helper_settings": { + "counter": { + "initial": "Valore iniziale", + "maximum": "Valore massimo", + "minimum": "Valore minimo", + "restore": "Ripristina l'ultimo valore noto all'avvio di Home Assistant", + "step": "Dimensione del passo" + }, "generic": { "icon": "Icona", "name": "Nome" @@ -772,6 +784,9 @@ }, "platform_not_loaded": "L'integrazione {platform} non è stata caricata. Si prega di aggiungerla alla propria configurazione, aggiungendo 'default_config:' o ''{platform}:''.", "required_error_msg": "Questo campo è obbligatorio", + "timer": { + "duration": "Durata" + }, "yaml_not_editable": "Le impostazioni di questa entità non possono essere modificate dall'Interfaccia Utente. Solo le entità impostate dall'Interfaccia Utente sono configurabili dall'Interfaccia Utente." }, "image_cropper": { @@ -931,11 +946,13 @@ "notification_drawer": { "click_to_configure": "Fare clic sul pulsante per configurare {entity}", "close": "Chiudi", + "dismiss_all": "Rimuovi tutto", "empty": "Nessuna notifica", "title": "Notifiche" }, "notification_toast": { "connection_lost": "Connessione persa. Riconnessione…", + "dismiss": "Rimuovi", "service_call_failed": "Fallita chiamata a servizio {service} .", "started": "Home Assistant si è avviato!", "starting": "Home Assistant si sta avviando, non tutto sarà disponibile fino a quando non avrà completato l'avvio.", @@ -1189,6 +1206,9 @@ "trigger": "Attivazione" }, "event": { + "context_user_pick": "Aggiungi utente", + "context_user_picked": "Evento di attivazione dell'utente", + "context_users": "Limita agli eventi attivati da", "event_data": "Dati dell'Evento", "event_type": "Tipo di Evento", "label": "Evento" @@ -1513,24 +1533,31 @@ "add_prompt": "Nessun {name} è stato ancora aggiunto utilizzando questo dispositivo. Puoi aggiungerne uno facendo clic sul pulsante + sopra.", "automation": { "actions": { - "caption": "Quando qualcosa si attiva..." + "caption": "Quando qualcosa si attiva...", + "no_actions": "Nessuna azione", + "unknown_action": "Azione sconosciuta" }, "automations": "Automazioni", "conditions": { - "caption": "Fai qualcosa solo se..." + "caption": "Fai qualcosa solo se...", + "no_conditions": "Nessuna condizione", + "unknown_condition": "Condizione sconosciuta" }, "create": "Crea l'automazione con il dispositivo", "no_automations": "Nessuna automazione", "no_device_automations": "Non ci sono Automazioni disponibili per questo dispositivo.", "triggers": { - "caption": "Fai qualcosa quando..." - } + "caption": "Fai qualcosa quando...", + "no_triggers": "Nessuna attivazione", + "unknown_trigger": "Attivazione sconosciuta" + }, + "unknown_automation": "Automazione sconosciuta" }, "cant_edit": "È possibile modificare solo gli elementi creati nell'Interfaccia Utente.", "caption": "Dispositivi", "confirm_delete": "Sei sicuro di voler eliminare questo dispositivo?", "confirm_rename_entity_ids": "Vuoi anche rinominare gli ID entità delle tue entità?", - "confirm_rename_entity_ids_warning": "Questo non cambierà alcuna configurazione (come automazioni, script, scene, Lovelace) che attualmente utilizza queste entità, dovrai aggiornarle tu stesso.", + "confirm_rename_entity_ids_warning": "Questo non cambierà alcuna configurazione (come automazioni, script, scene, plance) che sta attualmente utilizzando queste entità, dovrai aggiornarle tu stesso per utilizzare i nuovi ID entità!", "data_table": { "area": "Area", "battery": "Batteria", @@ -1643,11 +1670,13 @@ "no_helpers": "Sembra che tu non abbia ancora nessun aiutante!" }, "types": { + "counter": "Contatore", "input_boolean": "Commutatore", "input_datetime": "Data e/o ora", "input_number": "Numero", "input_select": "A discesa", - "input_text": "Testo" + "input_text": "Testo", + "timer": "Timer" } }, "info": { @@ -1866,6 +1895,8 @@ "network": "Rete", "node_id": "ID del nodo", "ozw_instance": "Istanza OpenZWave", + "query_stage": "Fase di richiesta", + "wakeup_instructions": "Istruzioni di riattivazione", "zwave": "Z-Wave" }, "device_info": { @@ -1875,6 +1906,10 @@ }, "navigation": { "network": "Rete", + "node": { + "config": "Configurazione", + "dashboard": "Plancia" + }, "nodes": "Nodi", "select_instance": "Seleziona istanza" }, @@ -1903,6 +1938,15 @@ "introduction": "Gestisci le funzioni a livello di rete.", "node_count": "{count} nodi" }, + "node_config": { + "header": "Configurazione del nodo", + "help_source": "Le descrizioni dei parametri di configurazione e il testo della guida sono forniti dal progetto OpenZWave.", + "introduction": "Gestisci i diversi parametri di configurazione per un nodo Z-Wave.", + "wakeup_help": "I nodi alimentati a batteria devono essere attivi per modificare la loro configurazione. Se il nodo non è attivo, OpenZWave tenterà di aggiornare la configurazione del nodo la prossima volta che si riattiva, il che potrebbe essere più ore (o giorni) dopo. Segui questi passaggi per riattivare il tuo dispositivo:" + }, + "node_metadata": { + "product_manual": "Manuale del prodotto" + }, "node_query_stages": { "associations": "Aggiornamento dell'associazione gruppi e appartenenze", "cacheload": "Caricamento delle informazioni dal file di cache di OpenZWave. I nodi a batteria rimarranno in questa fase fino a quando il nodo non si riattiva.", @@ -2162,6 +2206,7 @@ "last_scanned": "Ultima scansione", "name": "Nome" }, + "learn_more": "Ulteriori informazioni sui tag", "never_scanned": "Mai scansionato", "no_tags": "Nessuna etichetta", "write": "Scrivi" @@ -2495,9 +2540,11 @@ "entity": "Entità", "jinja_documentation": "Documentazione del modello Jinja2", "listeners": "Questo modello è in ascolto dei seguenti eventi di modifica dello stato:", - "no_listeners": "Questo modello non è in ascolto di alcun evento di modifica dello stato e non verrà aggiornato automaticamente.", + "no_listeners": "Questo modello non è in ascolto di alcun evento e non verrà aggiornato automaticamente.", "reset": "Ripristina il modello di esempio", + "result_type": "Tipo di risultato", "template_extensions": "Estensioni del modello Home Assistant", + "time": "Questo modello si aggiorna all'inizio di ogni minuto.", "title": "Modelli", "unknown_error_template": "Errore sconosciuto nel rendering del modello" } @@ -2640,6 +2687,7 @@ "entity-id": "ID Entità", "last-changed": "Ultima modifica", "last-triggered": "Ultima attivazione", + "last-updated": "Ultimo aggiornamento", "none": "Nessuna informazione secondaria", "position": "Posizione", "tilt-position": "Posizione di inclinazione" @@ -2848,7 +2896,7 @@ "migrate": { "header": "Configurazione incompatibile", "migrate": "Esporta Configurazione", - "para_migrate": "Home Assistant può aggiungere automaticamente gli ID a tutte le tue schede e viste in maniera automatica premendo il pulsante \"Esporta Configurazione\".", + "para_migrate": "Home Assistant può aggiungere automaticamente gli ID a tutte le tue schede e viste in maniera automatica premendo il pulsante \"Migra Configurazione\".", "para_no_id": "Questo elemento non ha un ID. Aggiungi un ID a questo elemento in 'ui-lovelace.yaml'." }, "move_card": { @@ -2904,7 +2952,8 @@ "exit_edit_mode": "Esci dalla modalità di modifica dell'Interfaccia Utente", "help": "Aiuto", "refresh": "Aggiorna", - "reload_resources": "Ricarica le risorse" + "reload_resources": "Ricarica le risorse", + "start_conversation": "Inizia la conversazione" }, "reload_lovelace": "Ricaricare l'Interfaccia Utente", "reload_resources": { diff --git a/translations/frontend/ru.json b/translations/frontend/ru.json index 4472a1a3dd..35ea1935f6 100644 --- a/translations/frontend/ru.json +++ b/translations/frontend/ru.json @@ -575,8 +575,8 @@ "by_service": "службой", "entries_not_found": "В журнале нет записей.", "messages": { - "became_unavailable": "недоступно", - "changed_to_state": "изменяется на \"{state}\"", + "became_unavailable": "изменяет состояние на \"Недоступно\"", + "changed_to_state": "изменяет состояние на \"{state}\"", "cleared_device_class": "не обнаруживает {device_class}", "detected_device_class": "обнаруживает {device_class}", "rose": "всходит", diff --git a/translations/frontend/sk.json b/translations/frontend/sk.json index 69e8252189..0e55648ebc 100644 --- a/translations/frontend/sk.json +++ b/translations/frontend/sk.json @@ -1069,6 +1069,8 @@ "label": "Zariadenie" }, "event": { + "context_user_pick": "Pridať používateľa", + "context_user_picked": "Udalosť spustenia používateľa", "event_data": "Dáta udalosti", "event_type": "Typ udalosti", "label": "Udalosť" @@ -2193,6 +2195,7 @@ "entity": "Entita", "listeners": "Táto šablóna počúva nasledujúce udalosti zmenené stavom:", "no_listeners": "Táto šablóna nepočúva žiadne udalosti zmenené stavom a neaktualizuje sa automaticky.", + "result_type": "Typ výsledku", "template_extensions": "Rozšírenia šablóny Home Assistant", "title": "Šablóny" } @@ -2326,6 +2329,7 @@ "entity-id": "ID entity", "last-changed": "Posledná zmena", "last-triggered": "Naposledy spustené", + "last-updated": "Posledná aktualizácia", "none": "Žiadne sekundárne informácie", "position": "Pozícia", "tilt-position": "Pozícia dlaždice" @@ -2574,7 +2578,8 @@ "exit_edit_mode": "Skončiť režim úprav používateľského rozhrania", "help": "Pomoc", "refresh": "Obnoviť", - "reload_resources": "Znovu načítať prostriedky" + "reload_resources": "Znovu načítať prostriedky", + "start_conversation": "Začať konverzáciu" }, "reload_lovelace": "Znovu načítať Lovelace", "reload_resources": { From ccb69dbdfa94cfd806ee6fa8e78e4b5bd2c83a12 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 26 Oct 2020 20:43:22 -0500 Subject: [PATCH 025/125] Add icons for shade device class (#7493) The blinds material icon looks more like a shade then a blind but since its already being used blind its still better than having it look like a window. --- src/common/entity/cover_icon.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common/entity/cover_icon.ts b/src/common/entity/cover_icon.ts index 5723ee2d34..7c9bc5ed53 100644 --- a/src/common/entity/cover_icon.ts +++ b/src/common/entity/cover_icon.ts @@ -43,6 +43,7 @@ export const coverIcon = (state?: string, stateObj?: HassEntity): string => { } case "blind": case "curtain": + case "shade": switch (state) { case "opening": return "hass:arrow-up-box"; From dbbd34c520928d3840d2abfda48b654dd113bba1 Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Tue, 27 Oct 2020 11:14:47 +0100 Subject: [PATCH 026/125] Allow breaking of entity ID in history tooltip into multiple lines (#7482) --- src/components/entity/ha-chart-base.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/entity/ha-chart-base.js b/src/components/entity/ha-chart-base.js index e02470bd08..09ebaef2c4 100644 --- a/src/components/entity/ha-chart-base.js +++ b/src/components/entity/ha-chart-base.js @@ -88,6 +88,7 @@ class HaChartBase extends mixinBehaviors( .chartTooltip .beforeBody { text-align: center; font-weight: 300; + word-break: break-all; } .chartLegend li { display: inline-block; From b56e9ef028988991b2cce3d6f2a3df3aa48dbcf5 Mon Sep 17 00:00:00 2001 From: Charles Garwood Date: Tue, 27 Oct 2020 09:00:21 -0400 Subject: [PATCH 027/125] Add cancel command button to ozw config panel (#7471) --- .../integration-panels/ozw/ozw-network-dashboard.ts | 1 + src/translations/en.json | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/panels/config/integrations/integration-panels/ozw/ozw-network-dashboard.ts b/src/panels/config/integrations/integration-panels/ozw/ozw-network-dashboard.ts index 013f2b794b..fccaa04a7f 100644 --- a/src/panels/config/integrations/integration-panels/ozw/ozw-network-dashboard.ts +++ b/src/panels/config/integrations/integration-panels/ozw/ozw-network-dashboard.ts @@ -129,6 +129,7 @@ class OZWNetworkDashboard extends LitElement {
${this._generateServiceButton("add_node")} ${this._generateServiceButton("remove_node")} + ${this._generateServiceButton("cancel_command")}
` diff --git a/src/translations/en.json b/src/translations/en.json index 2e65d98cb8..f73cf09a3c 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -2022,7 +2022,8 @@ }, "services": { "add_node": "Add Node", - "remove_node": "Remove Node" + "remove_node": "Remove Node", + "cancel_command": "Cancel Command" } }, "zha": { From ba4c2fc1bd135915b5b51e99e99ef81d7a6aa439 Mon Sep 17 00:00:00 2001 From: Florian Gareis Date: Tue, 27 Oct 2020 14:04:01 +0100 Subject: [PATCH 028/125] Replace prompt with showPromptDialog (#7460) Co-authored-by: Bram Kragten --- src/components/ha-push-notifications-toggle.js | 6 +++++- src/translations/en.json | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/components/ha-push-notifications-toggle.js b/src/components/ha-push-notifications-toggle.js index 61aec06691..d50e1a16af 100644 --- a/src/components/ha-push-notifications-toggle.js +++ b/src/components/ha-push-notifications-toggle.js @@ -3,6 +3,7 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; import { PolymerElement } from "@polymer/polymer/polymer-element"; import { getAppKey } from "../data/notify_html5"; import { EventsMixin } from "../mixins/events-mixin"; +import { showPromptDialog } from "../dialogs/generic/show-dialog-box"; import "./ha-switch"; export const pushSupported = @@ -88,7 +89,10 @@ class HaPushNotificationsToggle extends EventsMixin(PolymerElement) { browserName = "chrome"; } - const name = prompt("What should this device be called ?"); + const name = await showPromptDialog(this, { + title: this.hass.localize("ui.panel.profile.push_notifications.add_device_prompt.title"), + inputLabel: this.hass.localize("ui.panel.profile.push_notifications.add_device_prompt.input_label"), + }); if (name == null) { this.pushChecked = false; return; diff --git a/src/translations/en.json b/src/translations/en.json index f73cf09a3c..4136d5b2ea 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -2676,7 +2676,11 @@ "error_load_platform": "Configure notify.html5.", "error_use_https": "Requires SSL enabled for frontend.", "push_notifications": "Push notifications", - "link_promo": "Learn more" + "link_promo": "Learn more", + "add_device_prompt": { + "title": "What should this device be called?", + "input_label": "Device name" + } }, "language": { "header": "Language", From bf98a78f3d58a9fd7e8dbb0309dc3f676e1afa8e Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Tue, 27 Oct 2020 14:04:28 +0100 Subject: [PATCH 029/125] Add custom device action to remove a Tasmota device (#7469) --- src/data/tasmota.ts | 10 ++++ .../tasmota/ha-device-actions-tasmota.ts | 53 +++++++++++++++++++ .../config/devices/ha-config-device-page.ts | 13 +++++ 3 files changed, 76 insertions(+) create mode 100644 src/data/tasmota.ts create mode 100644 src/panels/config/devices/device-detail/integration-elements/tasmota/ha-device-actions-tasmota.ts diff --git a/src/data/tasmota.ts b/src/data/tasmota.ts new file mode 100644 index 0000000000..df9aad3032 --- /dev/null +++ b/src/data/tasmota.ts @@ -0,0 +1,10 @@ +import { HomeAssistant } from "../types"; + +export const removeTasmotaDeviceEntry = ( + hass: HomeAssistant, + deviceId: string +): Promise => + hass.callWS({ + type: "tasmota/device/remove", + device_id: deviceId, + }); diff --git a/src/panels/config/devices/device-detail/integration-elements/tasmota/ha-device-actions-tasmota.ts b/src/panels/config/devices/device-detail/integration-elements/tasmota/ha-device-actions-tasmota.ts new file mode 100644 index 0000000000..c83d785fdd --- /dev/null +++ b/src/panels/config/devices/device-detail/integration-elements/tasmota/ha-device-actions-tasmota.ts @@ -0,0 +1,53 @@ +import { + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, + css, +} from "lit-element"; +import { DeviceRegistryEntry } from "../../../../../../data/device_registry"; +import { removeTasmotaDeviceEntry } from "../../../../../../data/tasmota"; +import { showConfirmationDialog } from "../../../../../../dialogs/generic/show-dialog-box"; +import { haStyle } from "../../../../../../resources/styles"; +import { HomeAssistant } from "../../../../../../types"; + +@customElement("ha-device-actions-tasmota") +export class HaDeviceActionsTasmota extends LitElement { + @property({ attribute: false }) public hass!: HomeAssistant; + + @property() public device!: DeviceRegistryEntry; + + protected render(): TemplateResult { + return html` + + ${this.hass.localize("ui.panel.config.devices.delete")} + + `; + } + + private async _confirmDeleteEntry(): Promise { + const confirmed = await showConfirmationDialog(this, { + text: this.hass.localize("ui.panel.config.devices.confirm_delete"), + }); + + if (!confirmed) { + return; + } + + await removeTasmotaDeviceEntry(this.hass!, this.device.id); + } + + static get styles(): CSSResult[] { + return [ + haStyle, + css` + :host { + display: flex; + justify-content: space-between; + } + `, + ]; + } +} diff --git a/src/panels/config/devices/ha-config-device-page.ts b/src/panels/config/devices/ha-config-device-page.ts index c1072e6b29..15a471bd6c 100644 --- a/src/panels/config/devices/ha-config-device-page.ts +++ b/src/panels/config/devices/ha-config-device-page.ts @@ -528,6 +528,19 @@ export class HaConfigDevicePage extends LitElement { `); } + if (integrations.includes("tasmota")) { + import( + "./device-detail/integration-elements/tasmota/ha-device-actions-tasmota" + ); + templates.push(html` +
+ +
+ `); + } if (integrations.includes("zha")) { import("./device-detail/integration-elements/zha/ha-device-actions-zha"); import("./device-detail/integration-elements/zha/ha-device-info-zha"); From a19477d1791ed7f4ee79b389d4a8571e4e9688f0 Mon Sep 17 00:00:00 2001 From: Josh McCarty Date: Tue, 27 Oct 2020 07:24:52 -0700 Subject: [PATCH 030/125] Migrate ha-paper-dialog to ha-dialog in system options dialog (#7455) --- .../dialog-config-entry-system-options.ts | 83 +++++++++---------- 1 file changed, 37 insertions(+), 46 deletions(-) diff --git a/src/dialogs/config-entry-system-options/dialog-config-entry-system-options.ts b/src/dialogs/config-entry-system-options/dialog-config-entry-system-options.ts index d7a2ad6fbc..54ab1c7f41 100644 --- a/src/dialogs/config-entry-system-options/dialog-config-entry-system-options.ts +++ b/src/dialogs/config-entry-system-options/dialog-config-entry-system-options.ts @@ -1,5 +1,4 @@ -import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; -import "@polymer/paper-input/paper-input"; +import "@material/mwc-button/mwc-button"; import { css, CSSResult, @@ -10,16 +9,16 @@ import { internalProperty, TemplateResult, } from "lit-element"; -import "../../components/dialog/ha-paper-dialog"; +import "../../components/ha-dialog"; import "../../components/ha-circular-progress"; import "../../components/ha-switch"; import "../../components/ha-formfield"; +import { fireEvent } from "../../common/dom/fire_event"; import type { HaSwitch } from "../../components/ha-switch"; import { getConfigEntrySystemOptions, updateConfigEntrySystemOptions, } from "../../data/config_entries"; -import type { PolymerChangedEvent } from "../../polymer-types"; import { haStyleDialog } from "../../resources/styles"; import type { HomeAssistant } from "../../types"; import { ConfigEntrySystemOptionsDialogParams } from "./show-dialog-config-entry-system-options"; @@ -35,9 +34,9 @@ class DialogConfigEntrySystemOptions extends LitElement { @internalProperty() private _params?: ConfigEntrySystemOptionsDialogParams; - @internalProperty() private _loading?: boolean; + @internalProperty() private _loading = false; - @internalProperty() private _submitting?: boolean; + @internalProperty() private _submitting = false; public async showDialog( params: ConfigEntrySystemOptionsDialogParams @@ -51,7 +50,12 @@ class DialogConfigEntrySystemOptions extends LitElement { ); this._loading = false; this._disableNewEntities = systemOptions.disable_new_entities; - await this.updateComplete; + } + + public closeDialog(): void { + this._error = ""; + this._params = undefined; + fireEvent(this, "dialog-closed", { dialog: this.localName }); } protected render(): TemplateResult { @@ -60,21 +64,17 @@ class DialogConfigEntrySystemOptions extends LitElement { } return html` - -

- ${this.hass.localize( - "ui.dialogs.config_entry_system_options.title", - "integration", - this.hass.localize( - `component.${this._params.entry.domain}.title` - ) || this._params.entry.domain - )} -

- +
${this._loading ? html`
@@ -112,22 +112,22 @@ class DialogConfigEntrySystemOptions extends LitElement {
`} - - ${!this._loading - ? html` -
- - ${this.hass.localize( - "ui.dialogs.config_entry_system_options.update" - )} - -
- ` - : ""} - +
+ + ${this.hass.localize("ui.common.cancel")} + + + ${this.hass.localize("ui.dialogs.config_entry_system_options.update")} + + `; } @@ -154,19 +154,10 @@ class DialogConfigEntrySystemOptions extends LitElement { } } - private _openedChanged(ev: PolymerChangedEvent): void { - if (!(ev.detail as any).value) { - this._params = undefined; - } - } - static get styles(): CSSResult[] { return [ haStyleDialog, css` - ha-paper-dialog { - max-width: 500px; - } .init-spinner { padding: 50px 100px; text-align: center; From 40191a88d498e47af34668d422afefc6cedb2097 Mon Sep 17 00:00:00 2001 From: Nathan Orick Date: Tue, 27 Oct 2020 10:59:32 -0400 Subject: [PATCH 031/125] Allow edit card dialog to be made wider (#7492) --- .../editor/card-editor/hui-dialog-edit-card.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/panels/lovelace/editor/card-editor/hui-dialog-edit-card.ts b/src/panels/lovelace/editor/card-editor/hui-dialog-edit-card.ts index a779dd2080..4c0c1cb903 100755 --- a/src/panels/lovelace/editor/card-editor/hui-dialog-edit-card.ts +++ b/src/panels/lovelace/editor/card-editor/hui-dialog-edit-card.ts @@ -54,6 +54,8 @@ export class HuiDialogEditCard extends LitElement implements HassDialog { @property({ attribute: false }) public hass!: HomeAssistant; + @property({ type: Boolean, reflect: true }) public large = false; + @internalProperty() private _params?: EditCardDialogParams; @internalProperty() private _cardConfig?: LovelaceCardConfig; @@ -82,6 +84,7 @@ export class HuiDialogEditCard extends LitElement this._viewConfig = params.lovelaceConfig.views[view]; this._cardConfig = card !== undefined ? this._viewConfig.cards![card] : params.cardConfig; + this.large = false; if (this._cardConfig && !Object.isFrozen(this._cardConfig)) { this._cardConfig = deepFreeze(this._cardConfig); } @@ -162,7 +165,7 @@ export class HuiDialogEditCard extends LitElement >
-
${heading}
+
${heading}
${this._documentationURL !== undefined ? html` Date: Tue, 27 Oct 2020 10:00:46 -0700 Subject: [PATCH 032/125] Add toggle for disabling quick bar shortcuts (#7495) * Add toggle for disabling quick bar shortcuts * Remove accidentally included code * Change copy for toggle * Rename hass property to be for generic shortcuts --- src/panels/profile/ha-enable-shortcuts-row.ts | 51 +++++++++++++++++++ src/panels/profile/ha-panel-profile.ts | 6 ++- src/state/connection-mixin.ts | 1 + src/state/quick-bar-mixin.ts | 10 +++- src/translations/en.json | 4 ++ src/types.ts | 1 + src/util/ha-pref-storage.ts | 1 + 7 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 src/panels/profile/ha-enable-shortcuts-row.ts diff --git a/src/panels/profile/ha-enable-shortcuts-row.ts b/src/panels/profile/ha-enable-shortcuts-row.ts new file mode 100644 index 0000000000..8fb362c76b --- /dev/null +++ b/src/panels/profile/ha-enable-shortcuts-row.ts @@ -0,0 +1,51 @@ +import { + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import { fireEvent } from "../../common/dom/fire_event"; +import "../../components/ha-switch"; +import type { HaSwitch } from "../../components/ha-switch"; +import type { HomeAssistant } from "../../types"; +import "../../components/ha-settings-row"; + +@customElement("ha-enable-shortcuts-row") +class HaEnableShortcutsRow extends LitElement { + @property({ attribute: false }) public hass!: HomeAssistant; + + @property() public narrow!: boolean; + + protected render(): TemplateResult { + return html` + + + ${this.hass.localize("ui.panel.profile.enable_shortcuts.header")} + + + ${this.hass.localize("ui.panel.profile.enable_shortcuts.description")} + + + + `; + } + + private async _checkedChanged(ev: Event) { + const enabled = (ev.target as HaSwitch).checked; + if (enabled === this.hass.enableShortcuts) { + return; + } + + fireEvent(this, "hass-enable-shortcuts", enabled); + } +} + +declare global { + interface HTMLElementTagNameMap { + "ha-enable-shortcuts-row": HaEnableShortcutsRow; + } +} diff --git a/src/panels/profile/ha-panel-profile.ts b/src/panels/profile/ha-panel-profile.ts index 3c8e6ab6a4..9ce8a0bb6e 100644 --- a/src/panels/profile/ha-panel-profile.ts +++ b/src/panels/profile/ha-panel-profile.ts @@ -38,6 +38,7 @@ import "./ha-push-notifications-row"; import "./ha-refresh-tokens-card"; import "./ha-set-suspend-row"; import "./ha-set-vibrate-row"; +import "./ha-enable-shortcuts-row"; class HaPanelProfile extends LitElement { @property({ attribute: false }) public hass!: HomeAssistant; @@ -161,7 +162,10 @@ class HaPanelProfile extends LitElement { .narrow=${this.narrow} .hass=${this.hass} > - +
${this.hass.localize("ui.panel.profile.logout")} diff --git a/src/state/connection-mixin.ts b/src/state/connection-mixin.ts index 7af421029d..9862ed3bb3 100644 --- a/src/state/connection-mixin.ts +++ b/src/state/connection-mixin.ts @@ -48,6 +48,7 @@ export const connectionMixin = >( dockedSidebar: "docked", vibrate: true, suspendWhenHidden: true, + enableShortcuts: true, moreInfoEntityId: null, hassUrl: (path = "") => new URL(path, auth.data.hassUrl).toString(), callService: async (domain, service, serviceData = {}) => { diff --git a/src/state/quick-bar-mixin.ts b/src/state/quick-bar-mixin.ts index cfefcb388c..c7a8844285 100644 --- a/src/state/quick-bar-mixin.ts +++ b/src/state/quick-bar-mixin.ts @@ -4,10 +4,13 @@ import { QuickBarParams, showQuickBar, } from "../dialogs/quick-bar/show-dialog-quick-bar"; +import { HomeAssistant } from "../types"; +import { storeState } from "../util/ha-pref-storage"; declare global { interface HASSDomEvents { "hass-quick-bar": QuickBarParams; + "hass-enable-shortcuts": HomeAssistant["enableShortcuts"]; } } @@ -18,12 +21,17 @@ export default >(superClass: T) => protected firstUpdated(changedProps: PropertyValues) { super.firstUpdated(changedProps); + this.addEventListener("hass-enable-shortcuts", (ev) => { + this._updateHass({ enableShortcuts: ev.detail }); + storeState(this.hass!); + }); + this._registerShortcut(); } private _registerShortcut() { document.addEventListener("keydown", (e: KeyboardEvent) => { - if (!this.hass?.user?.is_admin) { + if (!this.hass?.user?.is_admin || !this.hass.enableShortcuts) { return; } if (this.isOSCtrlKey(e) && e.code === "KeyP") { diff --git a/src/translations/en.json b/src/translations/en.json index 4136d5b2ea..760327e3be 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -2666,6 +2666,10 @@ "header": "Vibrate", "description": "Enable or disable vibration on this device when controlling devices." }, + "enable_shortcuts": { + "header": "Keyboard Shortcuts", + "description": "Enable or disable keyboard shortcuts for performing various actions in the UI." + }, "suspend": { "header": "Automatically close connection", "description": "Should we close the connection to the server after being hidden for 5 minutes?" diff --git a/src/types.ts b/src/types.ts index 4092ac6c6a..5f302d4895 100644 --- a/src/types.ts +++ b/src/types.ts @@ -237,6 +237,7 @@ export interface HomeAssistant { localize: LocalizeFunc; translationMetadata: TranslationMetadata; suspendWhenHidden: boolean; + enableShortcuts: boolean; vibrate: boolean; dockedSidebar: "docked" | "always_hidden" | "auto"; defaultPanel: string; diff --git a/src/util/ha-pref-storage.ts b/src/util/ha-pref-storage.ts index bb06674f35..8c21de00b7 100644 --- a/src/util/ha-pref-storage.ts +++ b/src/util/ha-pref-storage.ts @@ -6,6 +6,7 @@ const STORED_STATE = [ "selectedLanguage", "vibrate", "suspendWhenHidden", + "enableShortcuts", "defaultPanel", ]; const STORAGE = window.localStorage || {}; From 5ec23bb7ab75a0936cd11fac413eb584ba283d7f Mon Sep 17 00:00:00 2001 From: Donnie Date: Tue, 27 Oct 2020 10:34:51 -0700 Subject: [PATCH 033/125] Change Quick Bar shortcuts to "e" and "c" (#7496) * Add toggle for disabling quick bar shortcuts * Change shortcut from Ctrl+P and Ctrl+Shift+P to qe and qc (Quick Entity, Quick Command) * Remove accidentally included code * Use tinykeys for handling shortcuts * Change shortcuts to e and c. And fix small typo. * Change copy for toggle * Rename hass property to be for generic shortcuts * Minor tweaks to address review comments --- package.json | 1 + src/state/quick-bar-mixin.ts | 37 +++++++++++++++++++----------------- yarn.lock | 5 +++++ 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 82ba1c1336..483b6ea952 100644 --- a/package.json +++ b/package.json @@ -119,6 +119,7 @@ "roboto-fontface": "^0.10.0", "sortablejs": "^1.10.2", "superstruct": "^0.10.12", + "tinykeys": "^1.1.1", "unfetch": "^4.1.0", "vue": "^2.6.11", "vue2-daterange-picker": "^0.5.1", diff --git a/src/state/quick-bar-mixin.ts b/src/state/quick-bar-mixin.ts index c7a8844285..3940ffe831 100644 --- a/src/state/quick-bar-mixin.ts +++ b/src/state/quick-bar-mixin.ts @@ -1,3 +1,4 @@ +import tinykeys from "tinykeys"; import type { Constructor, PropertyValues } from "lit-element"; import { HassElement } from "./hass-element"; import { @@ -14,8 +15,6 @@ declare global { } } -const isMacOS = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform); - export default >(superClass: T) => class extends superClass { protected firstUpdated(changedProps: PropertyValues) { @@ -30,23 +29,27 @@ export default >(superClass: T) => } private _registerShortcut() { - document.addEventListener("keydown", (e: KeyboardEvent) => { - if (!this.hass?.user?.is_admin || !this.hass.enableShortcuts) { - return; - } - if (this.isOSCtrlKey(e) && e.code === "KeyP") { - e.preventDefault(); - const eventParams: QuickBarParams = {}; - if (e.shiftKey) { - eventParams.commandMode = true; - } - - showQuickBar(this, eventParams); - } + tinykeys(window, { + e: (ev) => this._showQuickBar(ev), + c: (ev) => this._showQuickBar(ev, true), }); } - private isOSCtrlKey(e: KeyboardEvent) { - return isMacOS ? e.metaKey : e.ctrlKey; + private _showQuickBar(e: KeyboardEvent, commandMode = false) { + if ( + !this.hass?.user?.is_admin || + !this.hass.enableShortcuts || + this._inInputField(e) + ) { + return; + } + + showQuickBar(this, { commandMode }); + } + + private _inInputField(e: KeyboardEvent) { + return ["INPUT", "TEXTAREA"].includes( + (e.composedPath()[0] as HTMLElement).tagName + ); } }; diff --git a/yarn.lock b/yarn.lock index e1439d610c..7133eda793 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12230,6 +12230,11 @@ tinycolor2@^1.4.1: resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" integrity sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g= +tinykeys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/tinykeys/-/tinykeys-1.1.1.tgz#2535e8b24c8e2be447dd0ee1cff656ef435cd63d" + integrity sha512-YEA1TGMlkMabXI0NGddRFti+c1eMO2QP7wefwibSz0Pip8sA+d99yX5Pp7pK7wUeTKmrF4ys4XZVz44YydlTYg== + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" From efe97e8f512ed0db298cde8918d57475a765f08b Mon Sep 17 00:00:00 2001 From: Donnie Date: Tue, 27 Oct 2020 12:12:30 -0700 Subject: [PATCH 034/125] Refactor sidebar renders into methods (prep for mwc-list conversion) (#7453) --- src/components/ha-sidebar.ts | 401 +++++++++++++++++++---------------- 1 file changed, 216 insertions(+), 185 deletions(-) diff --git a/src/components/ha-sidebar.ts b/src/components/ha-sidebar.ts index 2f1f473ca4..717d376544 100644 --- a/src/components/ha-sidebar.ts +++ b/src/components/ha-sidebar.ts @@ -202,195 +202,17 @@ class HaSidebar extends LitElement { private _sortable?; protected render() { - const hass = this.hass; - - if (!hass) { + if (!this.hass) { return html``; } - const [beforeSpacer, afterSpacer] = computePanels( - hass.panels, - hass.defaultPanel, - this._panelOrder, - this._hiddenPanels - ); - - let notificationCount = this._notifications - ? this._notifications.length - : 0; - for (const entityId in hass.states) { - if (computeDomain(entityId) === "configurator") { - notificationCount++; - } - } - + // prettier-ignore return html` - - - ${this.editMode - ? html`
- ${guard([this._hiddenPanels, this._renderEmptySortable], () => - this._renderEmptySortable - ? "" - : this._renderPanels(beforeSpacer) - )} -
` - : this._renderPanels(beforeSpacer)} -
- ${this.editMode && this._hiddenPanels.length - ? html` - ${this._hiddenPanels.map((url) => { - const panel = this.hass.panels[url]; - if (!panel) { - return ""; - } - return html` - - ${panel.url_path === this.hass.defaultPanel - ? hass.localize("panel.states") - : hass.localize(`panel.${panel.title}`) || - panel.title} - - - - `; - })} -
- ` - : ""} - ${this._renderPanels(afterSpacer)} - ${this._externalConfig && this._externalConfig.hasSettingsScreen - ? html` -
- - - - ${hass.localize("ui.sidebar.external_app_configuration")} - - - - ` - : ""} - - -
- -
- - - ${!this.expanded && notificationCount > 0 - ? html` - - ${notificationCount} - - ` - : ""} - - ${hass.localize("ui.notification_drawer.title")} - - ${this.expanded && notificationCount > 0 - ? html` - ${notificationCount} - ` - : ""} - -
- - - - - - - ${hass.user ? hass.user.name : ""} - - - + ${this._renderHeader()} + ${this._renderAllPanels()} + ${this._renderDivider()} + ${this._renderNotifications()} + ${this._renderUserItem()}
`; @@ -475,6 +297,215 @@ class HaSidebar extends LitElement { } } + private _renderHeader() { + return html``; + } + + private _renderAllPanels() { + const [beforeSpacer, afterSpacer] = computePanels( + this.hass.panels, + this.hass.defaultPanel, + this._panelOrder, + this._hiddenPanels + ); + + // prettier-ignore + return html` + + ${this.editMode + ? this._renderPanelsEdit(beforeSpacer) + : this._renderPanels(beforeSpacer)} + ${this._renderSpacer()} + ${this._renderPanels(afterSpacer)} + ${this._renderExternalConfiguration()} + + `; + } + + private _renderPanelsEdit(beforeSpacer: PanelInfo[]) { + // prettier-ignore + return html`
+ ${guard([this._hiddenPanels, this._renderEmptySortable], () => + this._renderEmptySortable ? "" : this._renderPanels(beforeSpacer) + )} +
+ ${this._renderSpacer()} + ${this._renderHiddenPanels()} `; + } + + private _renderHiddenPanels() { + return html` ${this._hiddenPanels.length + ? html`${this._hiddenPanels.map((url) => { + const panel = this.hass.panels[url]; + if (!panel) { + return ""; + } + return html` + + ${panel.url_path === this.hass.defaultPanel + ? this.hass.localize("panel.states") + : this.hass.localize(`panel.${panel.title}`) || + panel.title} + + + + `; + })} + ${this._renderSpacer()}` + : ""}`; + } + + private _renderDivider() { + return html`
`; + } + + private _renderSpacer() { + return html`
`; + } + + private _renderNotifications() { + let notificationCount = this._notifications + ? this._notifications.length + : 0; + for (const entityId in this.hass.states) { + if (computeDomain(entityId) === "configurator") { + notificationCount++; + } + } + + return html`
+ + + ${!this.expanded && notificationCount > 0 + ? html` + + ${notificationCount} + + ` + : ""} + + ${this.hass.localize("ui.notification_drawer.title")} + + ${this.expanded && notificationCount > 0 + ? html` ${notificationCount} ` + : ""} + +
`; + } + + private _renderUserItem() { + return html` + + + + + ${this.hass.user ? this.hass.user.name : ""} + + + `; + } + + private _renderExternalConfiguration() { + return html`${this._externalConfig && this._externalConfig.hasSettingsScreen + ? html` + + + + + ${this.hass.localize("ui.sidebar.external_app_configuration")} + + + + ` + : ""}`; + } + private get _tooltip() { return this.shadowRoot!.querySelector(".tooltip")! as HTMLDivElement; } From ba99d1a10dd176a7d14e5ef664f49910d75d5140 Mon Sep 17 00:00:00 2001 From: Donnie Date: Tue, 27 Oct 2020 12:14:25 -0700 Subject: [PATCH 035/125] Add server restart/stop to quick bar command list (#7488) --- src/dialogs/quick-bar/ha-quick-bar.ts | 46 +++++++++++++++++++++++++-- src/translations/en.json | 5 +++ 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/src/dialogs/quick-bar/ha-quick-bar.ts b/src/dialogs/quick-bar/ha-quick-bar.ts index 68132cad04..95c4ce18bb 100644 --- a/src/dialogs/quick-bar/ha-quick-bar.ts +++ b/src/dialogs/quick-bar/ha-quick-bar.ts @@ -36,6 +36,10 @@ import "../../components/ha-header-bar"; import { domainToName } from "../../data/integration"; import { haStyleDialog } from "../../resources/styles"; import { HomeAssistant } from "../../types"; +import { + ConfirmationDialogParams, + showConfirmationDialog, +} from "../generic/show-dialog-box"; import { QuickBarParams } from "./show-dialog-quick-bar"; interface QuickBarItem extends ScorableTextItem { @@ -276,9 +280,10 @@ export class QuickBar extends LitElement { } private _generateCommandItems(): QuickBarItem[] { - return [...this._generateReloadCommands()].sort((a, b) => - compare(a.text.toLowerCase(), b.text.toLowerCase()) - ); + return [ + ...this._generateReloadCommands(), + ...this._generateServerControlCommands(), + ].sort((a, b) => compare(a.text.toLowerCase(), b.text.toLowerCase())); } private _generateReloadCommands(): QuickBarItem[] { @@ -297,6 +302,41 @@ export class QuickBar extends LitElement { })); } + private _generateServerControlCommands(): QuickBarItem[] { + const serverActions = ["restart", "stop"]; + + return serverActions.map((action) => + this._generateConfirmationCommand( + { + text: this.hass.localize( + "ui.dialogs.quick-bar.commands.server_control.perform_action", + "action", + this.hass.localize( + `ui.dialogs.quick-bar.commands.server_control.${action}` + ) + ), + icon: "hass:server", + action: () => this.hass.callService("homeassistant", action), + }, + this.hass.localize("ui.dialogs.generic.ok") + ) + ); + } + + private _generateConfirmationCommand( + item: QuickBarItem, + confirmText: ConfirmationDialogParams["confirmText"] + ): QuickBarItem { + return { + ...item, + action: () => + showConfirmationDialog(this, { + confirmText, + confirm: item.action, + }), + }; + } + private _generateEntityItems(): QuickBarItem[] { return Object.keys(this.hass.states) .map((entityId) => ({ diff --git a/src/translations/en.json b/src/translations/en.json index 760327e3be..5b804e72ff 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -485,6 +485,11 @@ "smtp": "[%key:ui::panel::config::server_control::section::reloading::smtp%]", "mqtt": "[%key:ui::panel::config::server_control::section::reloading::mqtt%]", "rpi_gpio": "[%key:ui::panel::config::server_control::section::reloading::rpi_gpio%]" + }, + "server_control": { + "perform_action": "{action} Server", + "restart": "[%key:ui::panel::config::server_control::section::server_management::restart%]", + "stop": "[%key:ui::panel::config::server_control::section::server_management::stop%]" } }, "filter_placeholder": "Entity Filter" From 58a58906e79d1237b2e022a9b7e6d71e68a09dd4 Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Tue, 27 Oct 2020 20:20:15 +0100 Subject: [PATCH 036/125] Get rid of the unwanted tooltip copying (final) (#7459) --- src/panels/config/info/system-health-card.ts | 29 +++++++++----------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/src/panels/config/info/system-health-card.ts b/src/panels/config/info/system-health-card.ts index 13b9b80e2b..69df18b5b5 100644 --- a/src/panels/config/info/system-health-card.ts +++ b/src/panels/config/info/system-health-card.ts @@ -72,7 +72,7 @@ class SystemHealthCard extends LitElement { } if (domain !== "homeassistant") { sections.push( - html`

${domainToName(this.hass.localize, domain)}

` + html`

${domainToName(this.hass.localize, domain)}

` ); } sections.push(html` @@ -128,30 +128,27 @@ class SystemHealthCard extends LitElement { } private _copyInfo(): void { - // We have to copy title text and content separately, because - // copying the whole would also copy the tooltip text. - const selection = window.getSelection()!; - selection.removeAllRanges(); - - let copyElement = this.shadowRoot?.querySelector( - ".card-header-text" - ) as HTMLElement; - - let range = document.createRange(); - range.selectNodeContents(copyElement); - selection.addRange(range); - - copyElement = this.shadowRoot?.querySelector( + const copyElement = this.shadowRoot?.querySelector( ".card-content" ) as HTMLElement; - range = document.createRange(); + // Add temporary heading (fixed in EN since usually executed to provide support data) + const tempTitle = document.createElement("h3"); + tempTitle.innerText = "System Health"; + copyElement.insertBefore(tempTitle, copyElement.firstElementChild); + + const selection = window.getSelection()!; + selection.removeAllRanges(); + const range = document.createRange(); range.selectNodeContents(copyElement); selection.addRange(range); document.execCommand("copy"); window.getSelection()!.removeAllRanges(); + // Remove temporary heading again + copyElement.removeChild(tempTitle); + this._toolTip!.show(); setTimeout(() => this._toolTip?.hide(), 3000); } From d814aa36a74ddbf2d223a82c23ec1d67e5e708b1 Mon Sep 17 00:00:00 2001 From: HomeAssistant Azure Date: Wed, 28 Oct 2020 00:32:29 +0000 Subject: [PATCH 037/125] [ci skip] Translation update --- translations/frontend/ca.json | 4 ++-- translations/frontend/cs.json | 4 ++-- translations/frontend/cy.json | 6 ++++++ translations/frontend/en.json | 14 ++++++++++++++ translations/frontend/es.json | 6 +++--- translations/frontend/nb.json | 4 ++-- translations/frontend/nl.json | 2 +- translations/frontend/pl.json | 8 ++++---- translations/frontend/ru.json | 4 ++-- translations/frontend/zh-Hant.json | 4 ++-- 10 files changed, 38 insertions(+), 18 deletions(-) diff --git a/translations/frontend/ca.json b/translations/frontend/ca.json index e8f273af6c..2f1fc0f7e5 100644 --- a/translations/frontend/ca.json +++ b/translations/frontend/ca.json @@ -873,7 +873,7 @@ "input_select": "Actualitza entrades de selecció", "input_text": "Actualitza entrades de text", "min_max": "Actualitza entitats min/max", - "mqtt": "Actualitza entitats MQTT", + "mqtt": "Actualitza entitats MQTT configurades manualment", "person": "Actualitza persones", "ping": "Actualitza entitats de sensors binaris de ping", "reload": "Actualitza {domain}", @@ -2149,7 +2149,7 @@ "input_text": "Actualitza entrades de text", "introduction": "Algunes parts de Home Assistant es poden actualitzar sense necessitat reiniciar-lo. Si prems actualitza s'esborrarà la configuració YAML actual i se'n carregarà la nova.", "min_max": "Actualitza entitats min/max", - "mqtt": "Actualitza entitats MQTT", + "mqtt": "Actualitza entitats MQTT configurades manualment", "person": "Actualitza persones", "ping": "Actualitza entitats de sensors binaris de ping", "reload": "Actualitza {domain}", diff --git a/translations/frontend/cs.json b/translations/frontend/cs.json index 0ec6c9b4b8..9a88f33658 100644 --- a/translations/frontend/cs.json +++ b/translations/frontend/cs.json @@ -873,7 +873,7 @@ "input_select": "Nově načíst pomocníky - výběry", "input_text": "Nově načíst pomocníky - texty", "min_max": "Nově načíst entity integrace Min/Max", - "mqtt": "Nově načíst entity integrace MQTT", + "mqtt": "Nově načíst ručně nakonfigurované entity integrace MQTT", "person": "Nově načíst osoby", "ping": "Nově načíst entity integrace Ping", "reload": "Nově načíst integraci {domain}", @@ -2149,7 +2149,7 @@ "input_text": "Nově načíst pomocníky - texty", "introduction": "Některé části Home Assistant lze nově načíst bez nutnosti restartování. Nové načtení zahodí jejich aktuální konfiguraci a načte novou.", "min_max": "Nově načíst entity integrace Min/Max", - "mqtt": "Nově načíst entity integrace MQTT", + "mqtt": "Nově načíst ručně nakonfigurované entity integrace MQTT", "person": "Nově načíst osoby", "ping": "Nově načíst entity integrace Ping", "reload": "Nově načíst integraci {domain}", diff --git a/translations/frontend/cy.json b/translations/frontend/cy.json index 778937d59f..65efe02d63 100644 --- a/translations/frontend/cy.json +++ b/translations/frontend/cy.json @@ -393,6 +393,12 @@ "was_unsafe": "yn anniogel" } }, + "relative_time": { + "future_duration": { + "day": "Mewn {count} {count, plural,\n one {day}\n other {days}\n}", + "week": "Mewn {count} {count, plural,\n one {week}\n other {weeks}\n}" + } + }, "service-picker": { "service": "Gwasanaeth" }, diff --git a/translations/frontend/en.json b/translations/frontend/en.json index cd4a859106..e188d2c7dd 100644 --- a/translations/frontend/en.json +++ b/translations/frontend/en.json @@ -888,6 +888,11 @@ "trend": "Reload trend entities", "universal": "Reload universal media player entities", "zone": "Reload zones" + }, + "server_control": { + "perform_action": "{action} Server", + "restart": "Restart", + "stop": "Stop" } }, "filter_placeholder": "Entity Filter" @@ -1998,6 +2003,7 @@ }, "services": { "add_node": "Add Node", + "cancel_command": "Cancel Command", "remove_node": "Remove Node" } }, @@ -3198,6 +3204,10 @@ "dropdown_label": "Dashboard", "header": "Dashboard" }, + "enable_shortcuts": { + "description": "Enable or disable keyboard shortcuts for performing various actions in the UI.", + "header": "Keyboard Shortcuts" + }, "force_narrow": { "description": "This will hide the sidebar by default, similar to the mobile experience.", "header": "Always hide the sidebar" @@ -3242,6 +3252,10 @@ "header": "Multi-factor Authentication Modules" }, "push_notifications": { + "add_device_prompt": { + "input_label": "Device name", + "title": "What should this device be called?" + }, "description": "Send notifications to this device.", "error_load_platform": "Configure notify.html5.", "error_use_https": "Requires SSL enabled for frontend.", diff --git a/translations/frontend/es.json b/translations/frontend/es.json index d5b9446f27..8f26a95807 100644 --- a/translations/frontend/es.json +++ b/translations/frontend/es.json @@ -873,7 +873,7 @@ "input_select": "Recargar los campos desplegables", "input_text": "Recargar los campos de texto", "min_max": "Recargar entidades min/max", - "mqtt": "Recargar entidades mqtt", + "mqtt": "Recargar entidades mqtt configuradas manualmente", "person": "Recargar personas", "ping": "Recargar entidades de sensor binario de ping", "reload": "Recargar {domain}", @@ -2149,7 +2149,7 @@ "input_text": "Recargar los campos de texto", "introduction": "Algunas partes de Home Assistant pueden recargarse sin necesidad de reiniciar. Al pulsar en recargar se descartará la configuración YAML actual y se cargará la nueva.", "min_max": "Recargar entidades min/max", - "mqtt": "Recargar entidades mqtt", + "mqtt": "Recargar entidades mqtt configuradas manualmente", "person": "Recargar personas", "ping": "Recargar entidades de sensor binario de ping", "reload": "Recargar {domain}", @@ -2541,7 +2541,7 @@ "jinja_documentation": "Documentación de plantilla Jinja2", "listeners": "Esta plantilla escucha los siguientes eventos de cambio de estado:", "no_listeners": "Esta plantilla no escucha ningún evento y no se actualizará automáticamente.", - "reset": "Reiniciar a la plantilla de demostración", + "reset": "Restablecer la plantilla de demostración", "result_type": "Tipo de resultado", "template_extensions": "Extensiones de plantilla de Home Assistant", "time": "Esta plantilla se actualiza al comienzo de cada minuto.", diff --git a/translations/frontend/nb.json b/translations/frontend/nb.json index 5e14160465..1d85ae59c7 100644 --- a/translations/frontend/nb.json +++ b/translations/frontend/nb.json @@ -873,7 +873,7 @@ "input_select": "Last inn innputt valg på nytt", "input_text": "Last inn innputt tekster på nytt", "min_max": "Last inn min/maks entiteter på nytt", - "mqtt": "Last inn MQTT entiteter på nytt", + "mqtt": "Laste inn manuelt konfigurerte mqtt-enheter", "person": "Last inn personer på nytt", "ping": "Last inn Ping binær sensor entiteter på nytt", "reload": "Last inn {domain} på nytt", @@ -2149,7 +2149,7 @@ "input_text": "Last inn innputt tekster på nytt", "introduction": "Noen deler av Home Assistant kan laste inn uten å kreve omstart. Hvis du trykker last på nytt, vil du bytte den nåværende konfigurasjonen med den nye.", "min_max": "Last inn min/maks entiteter på nytt", - "mqtt": "Last inn MQTT entiteter på nytt", + "mqtt": "Laste inn manuelt konfigurerte mqtt-enheter", "person": "Last inn personer på nytt", "ping": "Last inn Ping binær sensor entiteter på nytt", "reload": "Last inn {domain} på nytt", diff --git a/translations/frontend/nl.json b/translations/frontend/nl.json index 29cf2f6aea..aa448f334e 100644 --- a/translations/frontend/nl.json +++ b/translations/frontend/nl.json @@ -2149,7 +2149,7 @@ "input_text": "Herlaad input texts", "introduction": "Sommige delen van Home Assistant kunnen opnieuw worden geladen zonder dat een herstart vereist is. Als je herladen gebruikt, wordt de huidige configuratie leeggemaakt en wordt de nieuwe geladen.", "min_max": "Herlaad min/max entiteiten", - "mqtt": "Herlaad mqtt entiteiten", + "mqtt": "Herlaad handmatig geconfigureerde mqtt-entiteiten", "person": "Herlaad personen", "ping": "Herlaad ping binaire sensor entiteiten", "reload": "Herlaad {domain}", diff --git a/translations/frontend/pl.json b/translations/frontend/pl.json index faf7e3f06d..d690eb1ee8 100644 --- a/translations/frontend/pl.json +++ b/translations/frontend/pl.json @@ -2727,8 +2727,8 @@ "icon": "Ikona", "icon_height": "Wysokość ikony", "image": "Ścieżka obrazu", - "manual": "Manualny edytor konfiguracji", - "manual_description": "Chcesz dodać niestandardową kartę lub po prostu manualnie edytować konfiguracji?", + "manual": "Edytor konfiguracji YAML", + "manual_description": "Chcesz dodać niestandardową kartę lub po prostu edytować konfigurację YAML?", "maximum": "Maksimum", "minimum": "Minimum", "name": "Nazwa", @@ -2861,7 +2861,7 @@ "pick_card": "Którą kartę chcesz dodać?", "pick_card_view_title": "Którą kartę chcesz dodać do widoku {name}?", "search_cards": "Szukaj kart", - "show_code_editor": "Edytor kodu", + "show_code_editor": "Edytor YAML", "show_visual_editor": "Edytor wizualny", "toggle_editor": "Przełącz edytor", "typed_header": "Konfiguracja karty {type}", @@ -2891,7 +2891,7 @@ "header": "Edycja interfejsu użytkownika", "menu": { "open": "Otwórz menu interfejsu użytkownika Lovelace", - "raw_editor": "Manualny edytor konfiguracji" + "raw_editor": "Edytor konfiguracji YAML" }, "migrate": { "header": "Konfiguracja niekompatybilna", diff --git a/translations/frontend/ru.json b/translations/frontend/ru.json index 35ea1935f6..52d9711d52 100644 --- a/translations/frontend/ru.json +++ b/translations/frontend/ru.json @@ -873,7 +873,7 @@ "input_select": "Перезагрузить вспомогательные выпадающие списки", "input_text": "Перезагрузить вспомогательные элементы ввода текста", "min_max": "Перезагрузить объекты интеграции \"Min/Max\"", - "mqtt": "Перезагрузить объекты интеграции \"MQTT\"", + "mqtt": "Перезагрузить объекты интеграции \"MQTT\", настроенные вручную", "person": "Перезагрузить персоны", "ping": "Перезагрузить объекты интеграции \"Ping (ICMP)\"", "reload": "Перезагрузить \"{domain}\"", @@ -2149,7 +2149,7 @@ "input_text": "Перезагрузить вспомогательные элементы ввода текста", "introduction": "Некоторые компоненты Home Assistant можно перезагрузить без необходимости перезапуска всей системы. Перезагрузка выгружает текущую конфигурацию YAML и загружает новую.", "min_max": "Перезагрузить объекты интеграции \"Min/Max\"", - "mqtt": "Перезагрузить объекты интеграции \"MQTT\"", + "mqtt": "Перезагрузить объекты интеграции \"MQTT\", настроенные вручную", "person": "Перезагрузить персоны", "ping": "Перезагрузить объекты интеграции \"Ping (ICMP)\"", "reload": "Перезагрузить \"{domain}\"", diff --git a/translations/frontend/zh-Hant.json b/translations/frontend/zh-Hant.json index 72aef299fd..08ba49fabf 100644 --- a/translations/frontend/zh-Hant.json +++ b/translations/frontend/zh-Hant.json @@ -873,7 +873,7 @@ "input_select": "重新載入輸入選擇", "input_text": "重新載入輸入文字", "min_max": "重新載入最低/最高實體", - "mqtt": "重新載入 MQTT 實體", + "mqtt": "手動重新載入 MQTT 實體", "person": "重新載入人員", "ping": "重新載入 Ping 二進位傳感器實體", "reload": "重新載入{domain}", @@ -2149,7 +2149,7 @@ "input_text": "重新載入輸入文字", "introduction": "Home Assistant 中部分設定無須重啟即可重新載入生效。點選重新載入按鈕,即可解除目前 YAML 設定,並重新載入最新設定。", "min_max": "重新載入最低/最高實體", - "mqtt": "重新載入 MQTT 實體", + "mqtt": "手動重新載入 MQTT 實體", "person": "重新載入人員", "ping": "重新載入 Ping 二進位傳感器實體", "reload": "重新載入{domain}", From 40b238766733195467c8767572df199577cc69a9 Mon Sep 17 00:00:00 2001 From: Nathan Orick Date: Wed, 28 Oct 2020 10:57:01 -0400 Subject: [PATCH 038/125] Allow pressing return to submit on area dialog (#7509) --- .../config/areas/dialog-area-registry-detail.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/panels/config/areas/dialog-area-registry-detail.ts b/src/panels/config/areas/dialog-area-registry-detail.ts index de7574b00c..ae3e1e37d2 100644 --- a/src/panels/config/areas/dialog-area-registry-detail.ts +++ b/src/panels/config/areas/dialog-area-registry-detail.ts @@ -42,7 +42,7 @@ class DialogAreaDetail extends LitElement { return html``; } const entry = this._params.entry; - const nameInvalid = this._name.trim() === ""; + const nameInvalid = !this._isNameValid(); return html` ) { this._error = undefined; this._name = ev.detail.value; From a72183851a74d1905db728f22ce844fa66c6b7e7 Mon Sep 17 00:00:00 2001 From: Josh McCarty Date: Wed, 28 Oct 2020 08:00:39 -0700 Subject: [PATCH 039/125] Use ha-dialog for dialog-area-registry-detail (#7508) --- .../areas/dialog-area-registry-detail.ts | 79 +++++++++---------- 1 file changed, 37 insertions(+), 42 deletions(-) diff --git a/src/panels/config/areas/dialog-area-registry-detail.ts b/src/panels/config/areas/dialog-area-registry-detail.ts index ae3e1e37d2..cd07cbaf6a 100644 --- a/src/panels/config/areas/dialog-area-registry-detail.ts +++ b/src/panels/config/areas/dialog-area-registry-detail.ts @@ -10,7 +10,8 @@ import { internalProperty, TemplateResult, } from "lit-element"; -import "../../../components/dialog/ha-paper-dialog"; +import { fireEvent } from "../../../common/dom/fire_event"; +import "../../../components/ha-dialog"; import { AreaRegistryEntryMutableParams } from "../../../data/area_registry"; import { PolymerChangedEvent } from "../../../polymer-types"; import { haStyleDialog } from "../../../resources/styles"; @@ -37,6 +38,12 @@ class DialogAreaDetail extends LitElement { await this.updateComplete; } + public closeDialog(): void { + this._error = ""; + this._params = undefined; + fireEvent(this, "dialog-closed", { dialog: this.localName }); + } + protected render(): TemplateResult { if (!this._params) { return html``; @@ -44,17 +51,14 @@ class DialogAreaDetail extends LitElement { const entry = this._params.entry; const nameInvalid = !this._isNameValid(); return html` - -

- ${entry - ? entry.name - : this.hass.localize("ui.panel.config.areas.editor.default_name")} -

- +
${this._error ? html`
${this._error}
` : ""}
${entry @@ -79,29 +83,29 @@ class DialogAreaDetail extends LitElement { .invalid=${nameInvalid} >
- -
- ${entry - ? html` - - ${this.hass.localize("ui.panel.config.areas.editor.delete")} - - ` - : html``} - - ${entry - ? this.hass.localize("ui.panel.config.areas.editor.update") - : this.hass.localize("ui.panel.config.areas.editor.create")} -
- + ${entry + ? html` + + ${this.hass.localize("ui.panel.config.areas.editor.delete")} + + ` + : html``} + + ${entry + ? this.hass.localize("ui.panel.config.areas.editor.update") + : this.hass.localize("ui.panel.config.areas.editor.create")} + + `; } @@ -152,12 +156,6 @@ class DialogAreaDetail extends LitElement { } } - private _openedChanged(ev: PolymerChangedEvent): void { - if (!(ev.detail as any).value) { - this._params = undefined; - } - } - static get styles(): CSSResult[] { return [ haStyleDialog, @@ -165,9 +163,6 @@ class DialogAreaDetail extends LitElement { .form { padding-bottom: 24px; } - mwc-button.warning { - margin-right: auto; - } .error { color: var(--error-color); } From d63493a859e5d297a0f9ee96f82a1e0da0b3f012 Mon Sep 17 00:00:00 2001 From: HomeAssistant Azure Date: Thu, 29 Oct 2020 00:32:17 +0000 Subject: [PATCH 040/125] [ci skip] Translation update --- translations/frontend/cs.json | 16 +++- translations/frontend/de.json | 14 +++- translations/frontend/es.json | 14 ++++ translations/frontend/et.json | 16 +++- translations/frontend/hu.json | 124 ++++++++++++++++++++++++++--- translations/frontend/nb.json | 14 ++++ translations/frontend/pl.json | 26 ++++-- translations/frontend/ru.json | 14 ++++ translations/frontend/zh-Hant.json | 14 ++++ 9 files changed, 231 insertions(+), 21 deletions(-) diff --git a/translations/frontend/cs.json b/translations/frontend/cs.json index 9a88f33658..9b811c73e7 100644 --- a/translations/frontend/cs.json +++ b/translations/frontend/cs.json @@ -888,6 +888,11 @@ "trend": "Nově načíst entity integrace Trend", "universal": "Nově načíst entity integrace Universal media player", "zone": "Nově načíst zóny" + }, + "server_control": { + "perform_action": "{action} server", + "restart": "Restartovat", + "stop": "Zastavit" } }, "filter_placeholder": "Filtr entit" @@ -1998,6 +2003,7 @@ }, "services": { "add_node": "Přidat uzel", + "cancel_command": "Zrušit příkaz", "remove_node": "Odebrat uzel" } }, @@ -2024,7 +2030,7 @@ "name_error_msg": "Jméno je povinné", "new_person": "Nová osoba", "no_device_tracker_available_intro": "Pokud máte zařízení, která indikují přítomnost osoby, budete je moci zde přiřadit osobě. První zařízení můžete přidat přidáním integrace detekce přítomnosti ze stránky integrace.", - "update": "Aktualizace" + "update": "Aktualizovat" }, "introduction": "Zde můžete definovat každou osobu v Home Assistant.", "learn_more": "Další informace o osobách", @@ -3198,6 +3204,10 @@ "dropdown_label": "Dashboard", "header": "Dashboard" }, + "enable_shortcuts": { + "description": "Povolte nebo zakažte klávesové zkratky pro provádění různých akcí v uživatelském rozhraní.", + "header": "Klávesové zkratky" + }, "force_narrow": { "description": "Tato volba skryje postranním panelu jako výchozí nastavení, podobně jako na mobilním zažízení.", "header": "Vždy skrýt postranní panel" @@ -3242,6 +3252,10 @@ "header": "Multifaktorové autentizační moduly" }, "push_notifications": { + "add_device_prompt": { + "input_label": "Jméno zařízení", + "title": "Jak by se toto zařízení mělo jmenovat?" + }, "description": "Posílat oznámení na toto zařízení", "error_load_platform": "Konfigurovat notify.html5.", "error_use_https": "Vyžaduje SSL pro frontend.", diff --git a/translations/frontend/de.json b/translations/frontend/de.json index 13f0e103c3..a089c06035 100644 --- a/translations/frontend/de.json +++ b/translations/frontend/de.json @@ -881,6 +881,9 @@ "telegram": "Telegram-Benachrichtigungsdienst neu laden", "template": "Templates neu laden", "zone": "Zonen neu laden" + }, + "server_control": { + "perform_action": "{action} Server" } }, "filter_placeholder": "Entitätsfilter" @@ -1966,6 +1969,7 @@ }, "services": { "add_node": "Knoten hinzufügen", + "cancel_command": "Befehl abbrechen", "remove_node": "Knoten entfernen" } }, @@ -2116,7 +2120,7 @@ "input_text": "Eingabetexte neu laden", "introduction": "Einige Komponenten von Home Assistant können ohne einen Neustart neu geladen werden. \"Neu laden\" entlädt dabei die aktuelle Konfiguration und lädt die neue Konfiguration.", "min_max": "Min/Max-Entitäten neu laden", - "mqtt": "MQTT-Entitäten neu laden", + "mqtt": "Lade manuell konfigurierte MQTT-Entitäten neu", "person": "Personen neu laden", "reload": "Neu laden {domain}", "rest": "Rest Entitäten und Benachrichtigungsdienste neu laden", @@ -3161,6 +3165,10 @@ "dropdown_label": "Dashboard", "header": "Dashboard" }, + "enable_shortcuts": { + "description": "Aktiviere oder deaktiviere Tastaturkürzel, um verschiedene Aktionen in der Benutzeroberfläche auszuführen.", + "header": "Tastatürkürzel" + }, "force_narrow": { "description": "Dies blendet die Seitenleiste standardmäßig aus, ähnlich der Nutzung auf Mobilgeräten.", "header": "Verstecke die Seitenleiste immer" @@ -3205,6 +3213,10 @@ "header": "2-Faktor-Authentifizierung-Module" }, "push_notifications": { + "add_device_prompt": { + "input_label": "Gerätename", + "title": "Wie sollte dieses Gerät genannt werden?" + }, "description": "Sende Benachrichtigungen an dieses Gerät.", "error_load_platform": "Konfiguriere notify.html5.", "error_use_https": "Erfordert aktiviertes SSL/TLS für das Frontend.", diff --git a/translations/frontend/es.json b/translations/frontend/es.json index 8f26a95807..ec0644984c 100644 --- a/translations/frontend/es.json +++ b/translations/frontend/es.json @@ -888,6 +888,11 @@ "trend": "Recargar entidades de tendencia", "universal": "Recargar entidades de reproductor multimedia universal", "zone": "Recargar zonas" + }, + "server_control": { + "perform_action": "{action} Servidor", + "restart": "Reiniciar", + "stop": "Detener" } }, "filter_placeholder": "Filtro de entidad" @@ -1998,6 +2003,7 @@ }, "services": { "add_node": "Añadir Nodo", + "cancel_command": "Cancelar comando", "remove_node": "Eliminar Nodo" } }, @@ -3198,6 +3204,10 @@ "dropdown_label": "Panel de control", "header": "Panel de control" }, + "enable_shortcuts": { + "description": "Habilita o deshabilita los atajos de teclado para realizar varias acciones en la interfaz de usuario.", + "header": "Atajos de teclado" + }, "force_narrow": { "description": "Esto ocultará la barra lateral de forma predeterminada, similar a la experiencia móvil.", "header": "Ocultar siempre la barra lateral" @@ -3242,6 +3252,10 @@ "header": "Módulos de autenticación multifactor" }, "push_notifications": { + "add_device_prompt": { + "input_label": "Nombre del dispositivo", + "title": "¿Cómo debería llamarse este dispositivo?" + }, "description": "Enviar notificaciones a este dispositivo", "error_load_platform": "Configurar notify.html5.", "error_use_https": "Requiere SSL activado para frontend.", diff --git a/translations/frontend/et.json b/translations/frontend/et.json index 1407ed669a..793a225578 100644 --- a/translations/frontend/et.json +++ b/translations/frontend/et.json @@ -888,6 +888,11 @@ "trend": "Taaslae trendide olemid", "universal": "Taaslae meediumimängija olemid", "zone": "Tasslae tsoonid" + }, + "server_control": { + "perform_action": "{action} server", + "restart": "Taaskäivita", + "stop": "Peata" } }, "filter_placeholder": "Olemite filter" @@ -1998,6 +2003,7 @@ }, "services": { "add_node": "Lisa sõlm", + "cancel_command": "Tühista käsk", "remove_node": "Eemalda sõlm" } }, @@ -2149,7 +2155,7 @@ "input_text": "TAASLAE TEKSTISISESTUS", "introduction": "Mõned Home Assistant'i komponendid on taaslaetavad ilma taaskäivituseta. Taaslaadimise klõpsamisel tühistatakse nende praegused seaded ja laetakse uued.", "min_max": "TAASLAE MIN/MAX OLEMID", - "mqtt": "TAASLAE MQTT OLEMID", + "mqtt": "TAASLAE KÄSITSI SEADISTATUD MQTT OLEMID", "person": "Taaslae isikud", "ping": "TAASLAE PING BINAARANDURI OLEMID", "reload": "Laadi {domain} uuesti", @@ -3198,6 +3204,10 @@ "dropdown_label": "Kasutajaliidese vaade", "header": "Kasutajaliidese vaade" }, + "enable_shortcuts": { + "description": "Luba või keela kasutajaliidese erinevate toimingute tegemise kiirklahvid.", + "header": "Kiirklahvid" + }, "force_narrow": { "description": "See peidab vaikimisi külgriba, sarnaselt mobiilikogemusega.", "header": "Peida alati külgriba" @@ -3242,6 +3252,10 @@ "header": "Mitmeastmelise autentimise moodulid" }, "push_notifications": { + "add_device_prompt": { + "input_label": "Seadme nimi", + "title": "Kuidas peaks seda seadet nimetama?" + }, "description": "Saada teatisi sellele seadmele.", "error_load_platform": "Seadista notify.html5.", "error_use_https": "Nõuab kasutajaliidese jaoks SSL lubamist.", diff --git a/translations/frontend/hu.json b/translations/frontend/hu.json index d2dede2ed8..dadeffe9d1 100644 --- a/translations/frontend/hu.json +++ b/translations/frontend/hu.json @@ -571,27 +571,31 @@ "no_history_found": "Nem található előzmény." }, "logbook": { + "by": "által", + "by_service": "szolgáltatás szerint", "entries_not_found": "Nincsenek naplóbejegyzések.", "messages": { "became_unavailable": "elérhetetlenné vált", - "changed_to_state": "megváltozott: {state}", + "changed_to_state": "állapota megváltozott: {state}", "cleared_device_class": "{device_class} érzékelés befejeződött", "detected_device_class": "{device_class}-t érzékelt", - "rose": "emelkedett", - "set": "beállít", - "turned_off": "kikapcsolt", - "turned_on": "bekapcsolt", + "rose": "felkelt", + "set": "lenyugodott", + "turned_off": "ki lett kapcsolva", + "turned_on": "be lett kapcsolva", "was_at_home": "hazaért", "was_at_state": "{state} állapotban volt", "was_away": "távol volt", "was_closed": "be lett zárva", "was_connected": "csatlakozott", "was_disconnected": "lecsatlakozott", + "was_locked": "zárolva lett", "was_low": "alacsony volt", "was_normal": "normális volt", "was_opened": "ki lett nyitva", "was_plugged_in": "be lett dugva", "was_safe": "biztonságos volt", + "was_unlocked": "fel lett oldva", "was_unplugged": "ki lett húzva", "was_unsafe": "nem volt biztonságos" } @@ -630,14 +634,20 @@ "server": "Szerver" }, "documentation": "dokumentáció", + "learn_adding_local_media": "További információ a média hozzáadásáról a {documentation} .", + "local_media_files": "Helyezze el a video-, audio- és képfájljait a média könyvtárba, hogy böngészhessen és lejátszhassa őket a böngészőben vagy a támogatott médialejátszókon.", + "media_browsing_error": "Média böngészési hiba", + "media_not_supported": "A böngésző médialejátszó nem támogatja az ilyen típusú médiafájlokat", "media_player": "Médialejátszó", "media-player-browser": "Médialejátszó böngésző", "no_items": "Nincsenek elemek", "no_local_media_found": "Nem található helyi média", + "no_media_folder": "Úgy tűnik, hogy még nem hozott létre média könyvtárat.", "pick": "Kiválasztás", "pick-media": "Média kiválasztása", "play": "Lejátszás", "play-media": "Média lejátszása", + "setup_local_help": "Ellenőrizze a {documentation} a helyi adathordozók beállításáról.", "video_not_supported": "A böngésződ nem támogatja a video elemet.", "web-browser": "Böngésző" }, @@ -783,6 +793,7 @@ "crop": "Kivágás" }, "more_info_control": { + "controls": "Vezérlők", "details": "Részletek", "dismiss": "Párbeszédpanel elvetése", "edit": "Entitás szerkesztése", @@ -877,6 +888,11 @@ "trend": "Trend entitások újratöltése", "universal": "Univerzális médialejátszó entitások újratöltése", "zone": "Zónák újratöltése" + }, + "server_control": { + "perform_action": "{action} Szerver", + "restart": "Újraindítás", + "stop": "Leállítás" } }, "filter_placeholder": "Entitásszűrő" @@ -1037,6 +1053,14 @@ "type": { "count": { "label": "Számláló" + }, + "until": { + "conditions": "Amíg a feltételek", + "label": "Addig" + }, + "while": { + "conditions": "Míg a feltételek", + "label": "Míg" } } }, @@ -1155,6 +1179,7 @@ "queued": "Várólista hossza" }, "modes": { + "description": "A mód vezérli, hogy mi történik, ha az automatizálás elindul, miközben a műveletek még futnak egy korábbi indításból. További információk a {documentation_link} oldalon.", "documentation": "automatizálási dokumentáció", "label": "Mód", "parallel": "Párhuzamos", @@ -1187,6 +1212,8 @@ }, "event": { "context_user_pick": "Felhasználó hozzáadása", + "context_user_picked": "Esemény elküldése", + "context_users": "Korlátozás az által kiváltott eseményekre", "event_data": "Esemény adatai", "event_type": "Esemény típusa", "label": "Esemény" @@ -1508,6 +1535,7 @@ } }, "devices": { + "add_prompt": "Az eszköz használatával még nem adtak hozzá {name} nevet. A fenti + gombra kattintva hozzá adhat egyet.", "automation": { "actions": { "caption": "Ha valami triggerelődik, akkor...", @@ -1677,7 +1705,9 @@ "title": "Infó" }, "integration_panel_move": { - "link_integration_page": "integrációk oldal" + "link_integration_page": "integrációk oldal", + "missing_zha": "Nem találod a ZHA konfigurációs panelt? Át lett helyezve az {integrations_page} a ZHA bejegyzéséhez.", + "missing_zwave": "Nem találod a Z-Wave konfigurációs panelt? Át lett helyezve az {integrations_page} a Z-Wave bejegyzéséhez." }, "integrations": { "add_integration": "Integráció hozzáadása", @@ -1875,6 +1905,8 @@ "zwave": "Z-Wave" }, "device_info": { + "node_failed": "Sikertelen csomópont", + "stage": "Szakasz", "zwave_info": "Z-Wave infó" }, "navigation": { @@ -1893,6 +1925,8 @@ "driverawakenodesqueries": "Minden éber csomópont lekérdezésre került", "driverfailed": "Nem sikerült csatlakozni a Z-Wave vezérlőhöz", "driverready": "A Z-Wave vezérlő inicializálása", + "driverremoved": "A meghajtót eltávolították", + "driverreset": "Az illesztőprogram vissza lett állítva", "offline": "OZWDaemon offline", "ready": "Csatlakozásra kész", "started": "Csatlakoztatva az MQTT-hez", @@ -1906,16 +1940,37 @@ }, "network": { "header": "Hálózat menedzsment", + "introduction": "Az egész hálózatra kiterjedő funkciók kezelése.", "node_count": "{count} csomópont" }, "node_config": { "header": "Csomópont konfigurációja", + "help_source": "A konfigurációs paraméterek leírását és a súgószöveget az OpenZWave projekt biztosítja.", "introduction": "Z-Wave csomópont különböző konfigurációs paramétereinek kezelése.", "wakeup_help": "Az akkumulátorról megtáplált csomópontoknak ébren kell lenniük a konfiguráció módosításához. Ha a csomópont nincs ébren, akkor az OpenZWave megpróbálja frissíteni a csomópont konfigurációját a következő ébredéskor, ami akár órákba (vagy napokba) is beletelhet. Az eszköz felébresztéséhez kövesd az alábbi lépéseket:" }, "node_metadata": { "product_manual": "Termék kézikönyve" }, + "node_query_stages": { + "associations": "Társítási csoportok és tagságok frissítése", + "cacheload": "Adatok betöltése az OpenZWave gyorsítótárfájlból. Az akkumulátoros csomópontok ebben a szakaszban maradnak, amíg a csomópont fel nem ébred.", + "complete": "Az interjú folyamata befejeződött", + "configuration": "Konfigurációs értékek beszerzése a csomóponttól", + "dynamic": "Gyakran változó értékek beszerzése a csomóponttól", + "instances": "Részletek beszerzése arról, hogy az eszköz milyen példányokat vagy csatornákat támogat", + "manufacturerspecific1": "Gyártói és termékazonosító kódok beszerzése a csomóponttól", + "manufacturerspecific2": "További gyártói és termék-azonosító kódok beszerzése a csomóponttól", + "neighbors": "A csomópont szomszéd listájának beszerzése", + "nodeinfo": "Támogatott parancsosztályok megszerzése a csomóponttól", + "nodeplusinfo": "Z-Wave+ információk beszerzése a csomóponttól", + "probe": "Annak ellenőrzése, hogy a csomópont ébren van / él-e", + "protocolinfo": "Ennek a csomópontnak az alapvető Z-Wave képességeinek beszerzése a vezérlőtől", + "session": "Ritkán változó értékek beszerzése a csomóponttól", + "static": "Statikai értékek beszerzése az eszköztől", + "versions": "Információk beszerzése a firmware-ről és a parancsosztály verzióiról", + "wakeup": "Ébresztési várólisták és üzenetek támogatásának beállítása" + }, "node": { "button": "Csomópont részletei", "not_found": "A csomópont nem található" @@ -1929,16 +1984,26 @@ "zwave_plus": "Z-Wave Plus" }, "refresh_node": { + "battery_note": "Ha a csomópont akkumulátorról működik, a folytatás előtt feltétlenül ébreszd fel", "button": "Csomópont frissítése", + "complete": "Csomópont frissítés befejeződött", + "description": "Ez megmondja az OpenZWave-nek, hogy készítsen újra egy csomópontot, és frissítse a csomópont parancsosztályait, képességeit és értékeit.", "node_status": "Csomópont állapota", + "refreshing_description": "Csomópont információk frissítése...", "start_refresh_button": "Frissítés indítása", - "step": "Lépés" + "step": "Lépés", + "title": "Csomópont adatainak frissítése", + "wakeup_header": "Ébresztési utasítások:", + "wakeup_instructions_source": "Az ébresztési utasítások az OpenZWave közösségi eszköz adatbázisból származnak." }, "select_instance": { - "header": "OpenZWave példány kiválasztása" + "header": "OpenZWave példány kiválasztása", + "introduction": "Egynél több OpenZWave példány fut. Melyik példányt szeretnéd kezelni?", + "none_found": "Nem található OpenZWave példány. Ha úgy gondolod, hogy ez helytelen, akkor ellenőrizd az OpenZWave és az MQTT beállításait, és győződj meg arról, hogy a Home Assistant képes kommunikálni az MQTT közvetítővel." }, "services": { "add_node": "Csomópont hozzáadása", + "cancel_command": "Parancs visszavonása", "remove_node": "Csomópont eltávolítása" } }, @@ -1952,7 +2017,7 @@ "detail": { "admin": "Adminisztrátor", "allow_login": "Személy bejelentkezésének engedélyezése", - "confirm_delete_user": "Biztos benne, hogy törölni szeretné a(z) {name} felhasználói fiókját? Továbbra is képes lesz nyomonkövetni a felhasználót, viszont a személy nem fog tudni bejelentkezni.", + "confirm_delete_user": "Biztos törölni szeretnéd {name} felhasználói fiókját? Továbbra is képes leszel nyomonkövetni a felhasználót, viszont ő mostantól nem fog tudni bejelentkezni.", "create": "Létrehozás", "delete": "Törlés", "device_tracker_intro": "Válaszd ki azokat az eszközöket, amelyek ehhez a felhasználóhoz tartoznak.", @@ -2031,6 +2096,7 @@ "icon": "Ikon", "id": "Entitás ID", "id_already_exists": "Ez az ID már létezik", + "id_already_exists_save_error": "Nem mentheted ezt a szkriptet, mert az azonosító nem egyedi, válassz másik azonosítót, vagy hagyd üresen, hogy automatikusan létrejöjjön egy.", "introduction": "Használj szkripteket műveletsorozatok végrehajtásához.", "link_available_actions": "Tudj meg többet az elérhető műveletekről.", "load_error_not_editable": "Csak a scripts.yaml fájlban megadott szkriptek szerkeszthetők.", @@ -2039,6 +2105,7 @@ "queued": "Várólista hossza" }, "modes": { + "description": "A mód vezérli, hogy mi történik, ha a szkriptet meghívják, miközben egy vagy több korábbi meghívásbólmég fut. További információk a {documentation_link} oldalon.", "documentation": "szkript dokumentáció", "label": "Mód", "parallel": "Párhuzamos", @@ -2197,6 +2264,8 @@ "discovered_text": "Az eszközök itt fognak megjelenni, ha felfedezésre kerültek.", "discovery_text": "A felfedezett eszközök itt fognak megjelenni. A készülékek használati utasításai alapján állítsd őket párosítási módba.", "header": "Zigbee Home Automation - Eszközök hozzáadása", + "no_devices_found": "Nem találhatóak eszközök. Győződj meg arról, hogy párosítási módban vannak, és tartsd őket ébren, miközben a felfedezés fut.", + "pairing_mode": "Győződj meg arról, hogy az eszközeid párosítási módban vannak. Ellenőrizd a készüléked utasításait arról, hogy hogyan kell ezt megtenni.", "search_again": "Keresés Újra", "spinner": "ZHA Zigbee eszközök keresése..." }, @@ -2360,24 +2429,45 @@ }, "node_management": { "add_to_group": "Hozzáadás a csoporthoz", + "entities": "A csomópont entitásai", + "entity_info": "Entitás adatai", + "exclude_entity": "Kizárja ezt az entitást a Home Assistantból", + "group": "Csoport", "header": "Z-Wave csomópontkezelés", + "introduction": "Futtasson egyetlen csomópontot érintő Z-Wave parancsokat. Válasszon egy csomópontot az elérhető parancsok listájának megtekintéséhez.", + "max_associations": "Egyesületek száma:", + "node_group_associations": "Csomópontcsoport-társítások", + "node_protection": "Csomópont védelem", + "node_to_control": "A vezérlőhöz képest csomópont", "nodes": "Csomópontok", + "nodes_hint": "Válassz csomópontot a csomópontonkénti opciók megtekintéséhez", "nodes_in_group": "További csomópontok ebben a csoportban:", - "remove_from_group": "Eltávolítás a csoportból" + "pooling_intensity": "Lekérdezés gyakoirsága", + "protection": "Védelem", + "remove_broadcast": "A Broadcast eltávolítása", + "remove_from_group": "Eltávolítás a csoportból", + "set_protection": "Védelem beállítása" }, "ozw_log": { "header": "OZW Log", - "introduction": "Napló megtekintése. 0 a minimum (a teljes naplót betölti) és 1000 a maximum. A betöltés statikus naplót jelenít meg, és a vége automatikusan frissül a napló utolsó meghatározott számú sorával." + "introduction": "Napló megtekintése. 0 a minimum (a teljes naplót betölti) és 1000 a maximum. A betöltés statikus naplót jelenít meg, és a vége automatikusan frissül a napló utolsó meghatározott számú sorával.", + "last_log_lines": "Az utolsó naplósorok száma", + "load": "Betöltés", + "tail": "Vége" }, "services": { "add_node": "Csomópont hozzáadása", "add_node_secure": "Biztonságos csomópont hozzáadása", "cancel_command": "Parancs megszakítása", "heal_network": "Hálózati struktúra feltérképezése", + "heal_node": "Csomópont élesztése", "node_info": "Csomópont információ", + "print_node": "Nyomtatási csomópont", "refresh_entity": "Entitás frissítése", "refresh_node": "Csomópont frissítése", + "remove_failed_node": "Sikertelen csomópont eltávolítása", "remove_node": "Csomópont eltávolítása", + "replace_failed_node": "Sikertelen csomópont cseréje", "save_config": "Konfiguráció mentése", "soft_reset": "Soft Reset", "start_network": "Hálózat indítása", @@ -2541,6 +2631,7 @@ "toggle": "Váltás", "url": "URL" }, + "editor_service_data": "A szolgáltatási adatokat csak a kódszerkesztőben lehet megadni", "navigation_path": "Navigációs útvonal", "url_path": "URL elérési út" }, @@ -2676,6 +2767,7 @@ "name": "Vízszintes Készlet" }, "humidifier": { + "description": "A Páratartalom kártyával a páramntesitő/párásitó berendezés entitások vezérelhetők. Lehetővé teszi a páratartalom, illetve a mód megváltoztatását.", "name": "Párásító" }, "iframe": { @@ -2814,7 +2906,7 @@ "para_no_id": "Ez az elem nem rendelkezik ID-val. Kérlek, adj hozzá egyet az 'ui-lovelace.yaml' fájlban!" }, "move_card": { - "header": "Válaszd ki azt a nézetet, ahová a kártyát szeretnéd áthelyezni" + "header": "Válaszd ki azt a nézetet, ahova át szeretnéd helyezni a kártyát" }, "raw_editor": { "confirm_remove_config_text": "Automatikusan létrehozzuk a Lovelace felhasználói felületed nézeteit a területeiddel és eszközeiddel, ha eltávolítod a Lovelace konfigurációját.", @@ -3112,6 +3204,10 @@ "dropdown_label": "Irányítópult", "header": "Irányítópult" }, + "enable_shortcuts": { + "description": "A felhasználói felület különböző műveletekvégrehajtásához engedélyezze vagy tiltsa le a billentyűparancsokat.", + "header": "Billentyűparancsok" + }, "force_narrow": { "description": "Ez alapértelmezés szerint elrejti az oldalsávot, hasonlóan a mobil verzióhoz.", "header": "Mindig rejtse el az oldalsávot" @@ -3156,6 +3252,10 @@ "header": "Többfaktoros Hitelesítési Modulok" }, "push_notifications": { + "add_device_prompt": { + "input_label": "Eszköz neve", + "title": "Mi legyen ennek az eszköznek a neve?" + }, "description": "Értesítések küldése erre az eszközre.", "error_load_platform": "Állítsd be a notify.html5-t.", "error_use_https": "Szükséges az SSL engedélyezése a felülethez.", diff --git a/translations/frontend/nb.json b/translations/frontend/nb.json index 1d85ae59c7..5ca5853f6f 100644 --- a/translations/frontend/nb.json +++ b/translations/frontend/nb.json @@ -888,6 +888,11 @@ "trend": "Last inn trend entiteter på nytt", "universal": "Laste inn universelle mediespiller entiteter på nytt", "zone": "Last inn soner på nytt" + }, + "server_control": { + "perform_action": "{action} Server", + "restart": "Omstart", + "stop": "Stopp" } }, "filter_placeholder": "Entitetsfilter" @@ -1998,6 +2003,7 @@ }, "services": { "add_node": "Legg til node", + "cancel_command": "Avbryt kommando", "remove_node": "Fjern node" } }, @@ -3198,6 +3204,10 @@ "dropdown_label": "", "header": "" }, + "enable_shortcuts": { + "description": "Aktiver eller deaktiver hurtigtaster for å utføre forskjellige handlinger i brukergrensesnittet", + "header": "Hurtigtaster" + }, "force_narrow": { "description": "Dette vil skjule sidepanelet som standard, tilsvarende opplevelsen på en mobil.", "header": "Skjul alltid sidepanelet" @@ -3242,6 +3252,10 @@ "header": "Flerfaktor godkjenningsmoduler" }, "push_notifications": { + "add_device_prompt": { + "input_label": "Enhetsnavn", + "title": "Hva skal denne enheten hete?" + }, "description": "Send varsler til denne enheten.", "error_load_platform": "Konfigurer notify.html5.", "error_use_https": "Krever SSL aktivert for grensesnitt.", diff --git a/translations/frontend/pl.json b/translations/frontend/pl.json index d690eb1ee8..13655ba4cd 100644 --- a/translations/frontend/pl.json +++ b/translations/frontend/pl.json @@ -888,6 +888,11 @@ "trend": "Encje komponentu trend", "universal": "Encje komponentu uniwersalny odtwarzacz mediów", "zone": "Strefy" + }, + "server_control": { + "perform_action": "{action} serwer", + "restart": "Uruchom ponownie", + "stop": "Zatrzymaj" } }, "filter_placeholder": "Filtr encji" @@ -1078,7 +1083,7 @@ "wait_template": "Szablon czekania" } }, - "unsupported_action": "Nieobsługiwane działanie: {action}" + "unsupported_action": "Brak w interfejsie użytkownika wsparcia dla akcji: {action}" }, "alias": "Nazwa", "conditions": { @@ -1155,7 +1160,7 @@ "zone": "Strefa" } }, - "unsupported_condition": "Nieobsługiwany warunek: {condition}" + "unsupported_condition": "Brak w interfejsie użytkownika wsparcia dla warunku: {condition}" }, "copy_to_clipboard": "Skopiuj do schowka", "default_name": "Nowa automatyzacja", @@ -1284,7 +1289,7 @@ "zone": "Strefa" } }, - "unsupported_platform": "Nieobsługiwana platforma: {platform}" + "unsupported_platform": "Brak w interfejsie użytkownika wsparcia dla platformy: {platform}" }, "unsaved_confirm": "Masz niezapisane zmiany. Na pewno chcesz wyjść?" }, @@ -1557,7 +1562,7 @@ "caption": "Urządzenia", "confirm_delete": "Czy na pewno chcesz usunąć to urządzenie?", "confirm_rename_entity_ids": "Czy chcesz także zmienić identyfikatory encji?", - "confirm_rename_entity_ids_warning": "Nie zmieni to żadnej konfiguracji (jak automatyzacje, skrypty, sceny, dashboardy), która obecnie używa tych encji. Będziesz musiał je zaktualizować samemu, by używać nowych identyfikatorów encji!", + "confirm_rename_entity_ids_warning": "Nie zmieni to konfiguracji (automatyzacji, skryptów, scen, dashboardów), które obecnie używają tych encji. Będziesz musiał je zaktualizować samemu, by używać nowych identyfikatorów encji!", "data_table": { "area": "Obszar", "battery": "Bateria", @@ -1998,6 +2003,7 @@ }, "services": { "add_node": "Dodaj węzeł", + "cancel_command": "Anuluj polecenie", "remove_node": "Usuń węzeł" } }, @@ -2643,7 +2649,7 @@ "calendar": { "calendar_entities": "Encje kalendarza", "description": "Karta kalendarza wyświetla kalendarz zawierający widoki dnia, tygodnia i listy", - "inital_view": "Wstępny widok", + "inital_view": "Widok początkowy", "name": "Kalendarz", "views": { "dayGridDay": "Dzień", @@ -2896,7 +2902,7 @@ "migrate": { "header": "Konfiguracja niekompatybilna", "migrate": "Migracja konfiguracji", - "para_migrate": "Home Assistant może automatycznie dodać ID do wszystkich twoich kart i widoków, po kliknięciu przycisku \"Migracja konfiguracji\".", + "para_migrate": "Home Assistant może automatycznie dodać identyfikatory do wszystkich twoich kart i widoków, po kliknięciu przycisku 'Migracja konfiguracji'.", "para_no_id": "Ten element nie ma ID. Dodaj ID do tego elementu w \"ui-lovelace.yaml\"." }, "move_card": { @@ -3198,6 +3204,10 @@ "dropdown_label": "Dashboard", "header": "Dashboard" }, + "enable_shortcuts": { + "description": "Włącz lub wyłącz skróty klawiszowe do wykonywania różnych czynności w interfejsie użytkownika.", + "header": "Skróty klawiszowe" + }, "force_narrow": { "description": "Spowoduje to domyślne ukrycie paska bocznego, podobnie jak w przypadku urządzeń przenośnych.", "header": "Zawsze ukrywaj pasek boczny" @@ -3242,6 +3252,10 @@ "header": "Moduły uwierzytelniania wieloskładnikowego" }, "push_notifications": { + "add_device_prompt": { + "input_label": "Nazwa urządzenia", + "title": "Jak powinno nazywać się to urządzenie?" + }, "description": "Wysyłaj powiadomienia na to urządzenie.", "error_load_platform": "Skonfiguruj notify.html5", "error_use_https": "Wymagany protokół SSL dla interfejsu użytkownika", diff --git a/translations/frontend/ru.json b/translations/frontend/ru.json index 52d9711d52..41daa529cb 100644 --- a/translations/frontend/ru.json +++ b/translations/frontend/ru.json @@ -888,6 +888,11 @@ "trend": "Перезагрузить объекты интеграции \"Trend\"", "universal": "Перезагрузить объекты интеграции \"Universal Media Player\"", "zone": "Перезагрузить зоны" + }, + "server_control": { + "perform_action": "{action} сервер", + "restart": "Перезапустить", + "stop": "Остановить" } }, "filter_placeholder": "Фильтр объектов" @@ -1998,6 +2003,7 @@ }, "services": { "add_node": "Добавить узел", + "cancel_command": "Отменить команду", "remove_node": "Удалить узел" } }, @@ -3198,6 +3204,10 @@ "dropdown_label": "Панель", "header": "Панель Lovelace UI" }, + "enable_shortcuts": { + "description": "Сочетания клавиш для выполнения различных действий в пользовательском интерфейсе.", + "header": "Горячие клавиши" + }, "force_narrow": { "description": "Боковая панель будет скрыта, аналогично мобильному интерфейсу", "header": "Скрывать боковую панель" @@ -3242,6 +3252,10 @@ "header": "Модули многофакторной аутентификации" }, "push_notifications": { + "add_device_prompt": { + "input_label": "Название устройства", + "title": "Как следует называть это устройство?" + }, "description": "Отправлять уведомления на это устройство", "error_load_platform": "Настроить notify.html5.", "error_use_https": "Требуется SSL для веб-интерфейса.", diff --git a/translations/frontend/zh-Hant.json b/translations/frontend/zh-Hant.json index 08ba49fabf..b777b0f34f 100644 --- a/translations/frontend/zh-Hant.json +++ b/translations/frontend/zh-Hant.json @@ -888,6 +888,11 @@ "trend": "重新載入趨勢實體", "universal": "重新載入通用媒體播放器實體", "zone": "重新載入區域" + }, + "server_control": { + "perform_action": "{action} 伺服器", + "restart": "重啟", + "stop": "停止" } }, "filter_placeholder": "實體過濾" @@ -1998,6 +2003,7 @@ }, "services": { "add_node": "新增節點", + "cancel_command": "取消命令", "remove_node": "移除節點" } }, @@ -3198,6 +3204,10 @@ "dropdown_label": "主面板", "header": "主面板" }, + "enable_shortcuts": { + "description": "開啟或關閉鍵盤捷徑以於 UI 執行各種操作。", + "header": "鍵盤捷徑" + }, "force_narrow": { "description": "將預設隱藏側邊列,類似於手機 App 使用方式。", "header": "總是隱藏側邊列" @@ -3242,6 +3252,10 @@ "header": "多步驟驗證模組" }, "push_notifications": { + "add_device_prompt": { + "input_label": "設備名稱", + "title": "為該設備命名?" + }, "description": "傳送通知推送至此設備。", "error_load_platform": "設定 notify.html5。", "error_use_https": "需要啟用前端 SSL 加密。", From c3718ff7ddfd1580fd6ccdcc62552455c3f61ec5 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 29 Oct 2020 10:31:14 +0100 Subject: [PATCH 041/125] Add Grid card (#7476) --- demo/src/configs/teachingbirds/lovelace.ts | 342 ++++++++---------- src/panels/lovelace/cards/hui-grid-card.ts | 75 ++++ src/panels/lovelace/cards/hui-stack-card.ts | 8 +- src/panels/lovelace/cards/types.ts | 5 + .../create-element/create-card-element.ts | 1 + src/panels/lovelace/editor/lovelace-cards.ts | 4 + 6 files changed, 250 insertions(+), 185 deletions(-) create mode 100644 src/panels/lovelace/cards/hui-grid-card.ts diff --git a/demo/src/configs/teachingbirds/lovelace.ts b/demo/src/configs/teachingbirds/lovelace.ts index f7684fde6d..135dde6a0b 100644 --- a/demo/src/configs/teachingbirds/lovelace.ts +++ b/demo/src/configs/teachingbirds/lovelace.ts @@ -7,205 +7,183 @@ export const demoLovelaceTeachingbirds: DemoConfig["lovelace"] = () => ({ cards: [ { type: "custom:ha-demo-card" }, { + type: "grid", + columns: 4, cards: [ { - cards: [ + image: "/assets/teachingbirds/isa_square.jpg", + type: "picture-entity", + show_name: false, + tap_action: { + action: "more-info", + }, + entity: "sensor.presence_isa", + }, + { + image: "/assets/teachingbirds/Stefan_square.jpg", + type: "picture-entity", + show_name: false, + tap_action: { + action: "more-info", + }, + entity: "sensor.presence_stefan", + }, + { + image: "/assets/teachingbirds/background_square.png", + elements: [ { - image: "/assets/teachingbirds/isa_square.jpg", - type: "picture-entity", - show_name: false, + state_image: { + on: "/assets/teachingbirds/radiator_on.jpg", + off: "/assets/teachingbirds/radiator_off.jpg", + }, + type: "image", + style: { + width: "100%", + top: "50%", + left: "50%", + }, tap_action: { action: "more-info", }, - entity: "sensor.presence_isa", + entity: "switch.stefan_radiator_3", }, { - image: "/assets/teachingbirds/Stefan_square.jpg", - type: "picture-entity", - show_name: false, - tap_action: { - action: "more-info", + style: { + top: "90%", + left: "50%", }, - entity: "sensor.presence_stefan", - }, - { - image: "/assets/teachingbirds/background_square.png", - elements: [ - { - state_image: { - on: "/assets/teachingbirds/radiator_on.jpg", - off: "/assets/teachingbirds/radiator_off.jpg", - }, - type: "image", - style: { - width: "100%", - top: "50%", - left: "50%", - }, - tap_action: { - action: "more-info", - }, - entity: "switch.stefan_radiator_3", - }, - { - style: { - top: "90%", - left: "50%", - }, - type: "state-label", - entity: "sensor.temperature_stefan", - }, - ], - type: "picture-elements", - }, - { - image: "/assets/teachingbirds/background_square.png", - elements: [ - { - style: { - "--mdc-icon-size": "100%", - top: "50%", - left: "50%", - }, - type: "icon", - tap_action: { - action: "navigate", - navigation_path: "/lovelace/home_info", - }, - icon: "mdi:car", - }, - ], - type: "picture-elements", - }, - ], - type: "horizontal-stack", - }, - { - cards: [ - { - show_name: false, - type: "picture-entity", - name: "Alarm", - image: "/assets/teachingbirds/House_square.jpg", - entity: "alarm_control_panel.house", - }, - { - name: "Roomba", - image: "/assets/teachingbirds/roomba_square.jpg", - show_name: false, - type: "picture-entity", - state_image: { - "Not Today": "/assets/teachingbirds/roomba_bw_square.jpg", - }, - entity: "input_select.roomba_mode", - }, - { - show_name: false, - type: "picture-entity", - state_image: { - Mail: "/assets/teachingbirds/mailbox_square.jpg", - "Package and mail": - "/assets/teachingbirds/mailbox_square.jpg", - Empty: "/assets/teachingbirds/mailbox_bw_square.jpg", - Package: "/assets/teachingbirds/mailbox_square.jpg", - }, - entity: "sensor.mailbox", - }, - { - show_name: false, - state_image: { - "Put out": "/assets/teachingbirds/trash_square.jpg", - "Take in": "/assets/teachingbirds/trash_square.jpg", - }, - type: "picture-entity", - image: "/assets/teachingbirds/trash_bear_bw_square.jpg", - entity: "sensor.trash_status", - }, - ], - type: "horizontal-stack", - }, - { - cards: [ - { - state_image: { - Idle: "/assets/teachingbirds/washer_square.jpg", - Running: "/assets/teachingbirds/laundry_running_square.jpg", - Clean: "/assets/teachingbirds/laundry_clean_2_square.jpg", - }, - entity: "input_select.washing_machine_status", - type: "picture-entity", - show_name: false, - name: "Washer", - }, - { - state_image: { - Idle: "/assets/teachingbirds/dryer_square.jpg", - Running: "/assets/teachingbirds/clothes_drying_square.jpg", - Clean: "/assets/teachingbirds/folded_clothes_square.jpg", - }, - entity: "input_select.dryer_status", - type: "picture-entity", - show_name: false, - name: "Dryer", - }, - { - image: "/assets/teachingbirds/guests_square.jpg", - type: "picture-entity", - show_name: false, - tap_action: { - action: "toggle", - }, - entity: "input_boolean.guest_mode", - }, - { - image: "/assets/teachingbirds/cleaning_square.jpg", - type: "picture-entity", - show_name: false, - tap_action: { - action: "toggle", - }, - entity: "input_boolean.cleaning_day", - }, - ], - type: "horizontal-stack", - }, - ], - type: "vertical-stack", - }, - { - type: "vertical-stack", - cards: [ - { - cards: [ - { - graph: "line", - type: "sensor", - entity: "sensor.temperature_bedroom", - }, - { - graph: "line", - type: "sensor", - name: "S's room", + type: "state-label", entity: "sensor.temperature_stefan", }, ], - type: "horizontal-stack", + type: "picture-elements", }, { - cards: [ + image: "/assets/teachingbirds/background_square.png", + elements: [ { - graph: "line", - type: "sensor", - entity: "sensor.temperature_passage", - }, - { - graph: "line", - type: "sensor", - name: "Laundry", - entity: "sensor.temperature_downstairs_bathroom", + style: { + "--mdc-icon-size": "100%", + top: "50%", + left: "50%", + }, + type: "icon", + tap_action: { + action: "navigate", + navigation_path: "/lovelace/home_info", + }, + icon: "mdi:car", }, ], - type: "horizontal-stack", + type: "picture-elements", + }, + + { + show_name: false, + type: "picture-entity", + name: "Alarm", + image: "/assets/teachingbirds/House_square.jpg", + entity: "alarm_control_panel.house", + }, + { + name: "Roomba", + image: "/assets/teachingbirds/roomba_square.jpg", + show_name: false, + type: "picture-entity", + state_image: { + "Not Today": "/assets/teachingbirds/roomba_bw_square.jpg", + }, + entity: "input_select.roomba_mode", + }, + { + show_name: false, + type: "picture-entity", + state_image: { + Mail: "/assets/teachingbirds/mailbox_square.jpg", + "Package and mail": "/assets/teachingbirds/mailbox_square.jpg", + Empty: "/assets/teachingbirds/mailbox_bw_square.jpg", + Package: "/assets/teachingbirds/mailbox_square.jpg", + }, + entity: "sensor.mailbox", + }, + { + show_name: false, + state_image: { + "Put out": "/assets/teachingbirds/trash_square.jpg", + "Take in": "/assets/teachingbirds/trash_square.jpg", + }, + type: "picture-entity", + image: "/assets/teachingbirds/trash_bear_bw_square.jpg", + entity: "sensor.trash_status", + }, + + { + state_image: { + Idle: "/assets/teachingbirds/washer_square.jpg", + Running: "/assets/teachingbirds/laundry_running_square.jpg", + Clean: "/assets/teachingbirds/laundry_clean_2_square.jpg", + }, + entity: "input_select.washing_machine_status", + type: "picture-entity", + show_name: false, + name: "Washer", + }, + { + state_image: { + Idle: "/assets/teachingbirds/dryer_square.jpg", + Running: "/assets/teachingbirds/clothes_drying_square.jpg", + Clean: "/assets/teachingbirds/folded_clothes_square.jpg", + }, + entity: "input_select.dryer_status", + type: "picture-entity", + show_name: false, + name: "Dryer", + }, + { + image: "/assets/teachingbirds/guests_square.jpg", + type: "picture-entity", + show_name: false, + tap_action: { + action: "toggle", + }, + entity: "input_boolean.guest_mode", + }, + { + image: "/assets/teachingbirds/cleaning_square.jpg", + type: "picture-entity", + show_name: false, + tap_action: { + action: "toggle", + }, + entity: "input_boolean.cleaning_day", + }, + ], + }, + { + type: "grid", + columns: 2, + cards: [ + { + graph: "line", + type: "sensor", + entity: "sensor.temperature_bedroom", + }, + { + graph: "line", + type: "sensor", + name: "S's room", + entity: "sensor.temperature_stefan", + }, + { + graph: "line", + type: "sensor", + entity: "sensor.temperature_passage", + }, + { + graph: "line", + type: "sensor", + name: "Laundry", + entity: "sensor.temperature_downstairs_bathroom", }, ], }, diff --git a/src/panels/lovelace/cards/hui-grid-card.ts b/src/panels/lovelace/cards/hui-grid-card.ts new file mode 100644 index 0000000000..03f06998c2 --- /dev/null +++ b/src/panels/lovelace/cards/hui-grid-card.ts @@ -0,0 +1,75 @@ +import { css, CSSResult } from "lit-element"; +import { computeCardSize } from "../common/compute-card-size"; +import { HuiStackCard } from "./hui-stack-card"; +import { GridCardConfig } from "./types"; + +const DEFAULT_COLUMNS = 3; + +class HuiGridCard extends HuiStackCard { + public async getCardSize(): Promise { + if (!this._cards || !this._config) { + return 0; + } + + const promises: Array | number> = []; + + for (const element of this._cards) { + promises.push(computeCardSize(element)); + } + + const results = await Promise.all(promises); + + const maxCardSize = Math.max(...results); + + return maxCardSize * (this._cards.length / this.columns); + } + + get columns() { + return this._config!.columns || DEFAULT_COLUMNS; + } + + setConfig(config: GridCardConfig) { + super.setConfig(config); + this.style.setProperty("--grid-card-column-count", String(this.columns)); + this.toggleAttribute("square", config.square !== false); + } + + static get styles(): CSSResult[] { + return [ + super.sharedStyles, + css` + #root { + display: grid; + grid-template-columns: repeat( + var(--grid-card-column-count, ${DEFAULT_COLUMNS}), + minmax(0, 1fr) + ); + grid-gap: var(--grid-card-gap, 8px); + } + :host([square]) #root { + grid-auto-rows: 1fr; + } + :host([square]) #root::before { + content: ""; + width: 0; + padding-bottom: 100%; + grid-row: 1 / 1; + grid-column: 1 / 1; + } + + :host([square]) #root > *:first-child { + grid-row: 1 / 1; + grid-column: 1 / 1; + } + `, + ]; + } +} + +declare global { + interface HTMLElementTagNameMap { + "hui-grid-card": HuiGridCard; + } +} + +customElements.define("hui-grid-card", HuiGridCard); diff --git a/src/panels/lovelace/cards/hui-stack-card.ts b/src/panels/lovelace/cards/hui-stack-card.ts index dfe7a0ec6f..728cd51075 100644 --- a/src/panels/lovelace/cards/hui-stack-card.ts +++ b/src/panels/lovelace/cards/hui-stack-card.ts @@ -14,7 +14,9 @@ import { createCardElement } from "../create-element/create-card-element"; import { LovelaceCard, LovelaceCardEditor } from "../types"; import { StackCardConfig } from "./types"; -export abstract class HuiStackCard extends LitElement implements LovelaceCard { +export abstract class HuiStackCard + extends LitElement + implements LovelaceCard { public static async getConfigElement(): Promise { await import( /* webpackChunkName: "hui-stack-card-editor" */ "../editor/config-elements/hui-stack-card-editor" @@ -32,13 +34,13 @@ export abstract class HuiStackCard extends LitElement implements LovelaceCard { @property() protected _cards?: LovelaceCard[]; - @internalProperty() private _config?: StackCardConfig; + @internalProperty() protected _config?: T; public getCardSize(): number | Promise { return 1; } - public setConfig(config: StackCardConfig): void { + public setConfig(config: T): void { if (!config || !config.cards || !Array.isArray(config.cards)) { throw new Error("Card config incorrect"); } diff --git a/src/panels/lovelace/cards/types.ts b/src/panels/lovelace/cards/types.ts index f7e173e72f..2c3c9cb6d8 100644 --- a/src/panels/lovelace/cards/types.ts +++ b/src/panels/lovelace/cards/types.ts @@ -288,6 +288,11 @@ export interface StackCardConfig extends LovelaceCardConfig { title?: string; } +export interface GridCardConfig extends StackCardConfig { + columns?: number; + square?: boolean; +} + export interface ThermostatCardConfig extends LovelaceCardConfig { entity: string; theme?: string; diff --git a/src/panels/lovelace/create-element/create-card-element.ts b/src/panels/lovelace/create-element/create-card-element.ts index bf62823dbb..a10781a209 100644 --- a/src/panels/lovelace/create-element/create-card-element.ts +++ b/src/panels/lovelace/create-element/create-card-element.ts @@ -37,6 +37,7 @@ const LAZY_LOAD_TYPES = { "alarm-panel": () => import("../cards/hui-alarm-panel-card"), error: () => import("../cards/hui-error-card"), "empty-state": () => import("../cards/hui-empty-state-card"), + grid: () => import("../cards/hui-grid-card"), starting: () => import("../cards/hui-starting-card"), "entity-filter": () => import("../cards/hui-entity-filter-card"), humidifier: () => import("../cards/hui-humidifier-card"), diff --git a/src/panels/lovelace/editor/lovelace-cards.ts b/src/panels/lovelace/editor/lovelace-cards.ts index 13c099a791..6da45eef00 100644 --- a/src/panels/lovelace/editor/lovelace-cards.ts +++ b/src/panels/lovelace/editor/lovelace-cards.ts @@ -29,6 +29,10 @@ export const coreCards: Card[] = [ type: "glance", showElement: true, }, + { + type: "grid", + showElement: true, + }, { type: "history-graph", showElement: true, From d26f1fa371c53ab6dcf59b738ca358b98cb22dab Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 29 Oct 2020 14:21:49 +0100 Subject: [PATCH 042/125] Fix grid card size when square (#7520) --- src/panels/lovelace/cards/hui-grid-card.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/panels/lovelace/cards/hui-grid-card.ts b/src/panels/lovelace/cards/hui-grid-card.ts index 03f06998c2..d4914780ce 100644 --- a/src/panels/lovelace/cards/hui-grid-card.ts +++ b/src/panels/lovelace/cards/hui-grid-card.ts @@ -11,6 +11,11 @@ class HuiGridCard extends HuiStackCard { return 0; } + if (this.square) { + // When we're square, each row is size 2. + return (this._cards.length / this.columns) * 2; + } + const promises: Array | number> = []; for (const element of this._cards) { @@ -25,13 +30,17 @@ class HuiGridCard extends HuiStackCard { } get columns() { - return this._config!.columns || DEFAULT_COLUMNS; + return this._config?.columns || DEFAULT_COLUMNS; + } + + get square() { + return this._config?.square !== false; } setConfig(config: GridCardConfig) { super.setConfig(config); this.style.setProperty("--grid-card-column-count", String(this.columns)); - this.toggleAttribute("square", config.square !== false); + this.toggleAttribute("square", this.square); } static get styles(): CSSResult[] { From c7f5c6c1d1522988db499ae6ee5e78fc53ff0be9 Mon Sep 17 00:00:00 2001 From: Donnie Date: Thu, 29 Oct 2020 09:18:47 -0700 Subject: [PATCH 043/125] Fix issue with toggles blocking dialog and dialog launching on mobile (#7506) * Fix issue with some inputs blocking, or incorrectly allowing, keyboard shortcut activation * Explicitly declare all input types that we can allow alphanumeric overrides * Do not launch dialog in codemirror targets on mobile devices --- src/components/ha-code-editor.ts | 5 +++++ src/state/quick-bar-mixin.ts | 37 +++++++++++++++++++++++++------- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/src/components/ha-code-editor.ts b/src/components/ha-code-editor.ts index b49d57c897..5dc3b7f826 100644 --- a/src/components/ha-code-editor.ts +++ b/src/components/ha-code-editor.ts @@ -81,6 +81,7 @@ export class HaCodeEditor extends UpdatingElement { protected firstUpdated(changedProps: PropertyValues): void { super.firstUpdated(changedProps); + this._blockKeyboardShortcuts(); this._load(); } @@ -232,6 +233,10 @@ export class HaCodeEditor extends UpdatingElement { this.codemirror!.on("changes", () => this._onChange()); } + private _blockKeyboardShortcuts() { + this.addEventListener("keydown", (ev) => ev.stopPropagation()); + } + private _onChange(): void { const newValue = this.value; if (newValue === this._value) { diff --git a/src/state/quick-bar-mixin.ts b/src/state/quick-bar-mixin.ts index 3940ffe831..ceac362aa1 100644 --- a/src/state/quick-bar-mixin.ts +++ b/src/state/quick-bar-mixin.ts @@ -36,20 +36,41 @@ export default >(superClass: T) => } private _showQuickBar(e: KeyboardEvent, commandMode = false) { - if ( - !this.hass?.user?.is_admin || - !this.hass.enableShortcuts || - this._inInputField(e) - ) { + if (!this._canShowQuickBar(e)) { return; } showQuickBar(this, { commandMode }); } - private _inInputField(e: KeyboardEvent) { - return ["INPUT", "TEXTAREA"].includes( - (e.composedPath()[0] as HTMLElement).tagName + private _canShowQuickBar(e: KeyboardEvent) { + return ( + this.hass?.user?.is_admin && + this.hass.enableShortcuts && + this._canOverrideAlphanumericInput(e) ); } + + private _canOverrideAlphanumericInput(e: KeyboardEvent) { + const el = e.composedPath()[0] as any; + + if (el.tagName === "TEXTAREA") { + return false; + } + + if (el.tagName !== "INPUT") { + return true; + } + + switch (el.type) { + case "button": + case "checkbox": + case "hidden": + case "radio": + case "range": + return true; + default: + return false; + } + } }; From fbb43821baf3b1dd9a9b7634cff45c0c342aa848 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 29 Oct 2020 17:56:26 +0100 Subject: [PATCH 044/125] Add grid card to the gallery (#7524) --- gallery/src/demos/demo-hui-stack-card.ts | 42 ++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/gallery/src/demos/demo-hui-stack-card.ts b/gallery/src/demos/demo-hui-stack-card.ts index b746888dc1..982eab4f25 100644 --- a/gallery/src/demos/demo-hui-stack-card.ts +++ b/gallery/src/demos/demo-hui-stack-card.ts @@ -1,6 +1,7 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; /* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; +import { mockHistory } from "../../../demo/src/stubs/history"; import { getEntity } from "../../../src/fake_data/entity"; import { provideHass } from "../../../src/fake_data/provide_hass"; import "../components/demo-cards"; @@ -36,6 +37,10 @@ const ENTITIES = [ battery: 71, friendly_name: "Home Boy", }), + getEntity("sensor", "illumination", "23", { + friendly_name: "Illumination", + unit_of_measurement: "lx", + }), ]; const CONFIGS = [ @@ -89,6 +94,42 @@ const CONFIGS = [ entity: light.bed_light `, }, + { + heading: "Default Grid", + config: ` +- type: grid + cards: + - type: entity + entity: light.kitchen_lights + - type: entity + entity: light.bed_light + - type: entity + entity: device_tracker.demo_paulus + - type: sensor + entity: sensor.illumination + graph: line + - type: entity + entity: device_tracker.demo_anne_therese + `, + }, + { + heading: "Non-square Grid with 2 columns", + config: ` +- type: grid + columns: 2 + square: false + cards: + - type: entity + entity: light.kitchen_lights + - type: entity + entity: light.bed_light + - type: entity + entity: device_tracker.demo_paulus + - type: sensor + entity: sensor.illumination + graph: line + `, + }, ]; class DemoStack extends PolymerElement { @@ -110,6 +151,7 @@ class DemoStack extends PolymerElement { const hass = provideHass(this.$.demos); hass.updateTranslations(null, "en"); hass.addEntities(ENTITIES); + mockHistory(hass); } } From 99935f1e595e6989b5ef0503f562436b33332b1c Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 29 Oct 2020 18:29:20 +0100 Subject: [PATCH 045/125] Fix glance card with header if parent does not set block (#7526) --- src/panels/lovelace/cards/hui-glance-card.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/panels/lovelace/cards/hui-glance-card.ts b/src/panels/lovelace/cards/hui-glance-card.ts index f3e9fb7f55..d446b109ec 100644 --- a/src/panels/lovelace/cards/hui-glance-card.ts +++ b/src/panels/lovelace/cards/hui-glance-card.ts @@ -197,7 +197,6 @@ export class HuiGlanceCard extends LitElement implements LovelaceCard { display: flex; padding: 0 16px 4px; flex-wrap: wrap; - height: 100%; box-sizing: border-box; align-content: center; } From d0c44757244cbcab193a15d8293c6bc11833e1da Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Thu, 29 Oct 2020 18:29:54 +0100 Subject: [PATCH 046/125] Fix tooltip creating scrollbar history card (#7528) --- src/panels/lovelace/cards/hui-history-graph-card.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/panels/lovelace/cards/hui-history-graph-card.ts b/src/panels/lovelace/cards/hui-history-graph-card.ts index 57b932c2db..8b67582946 100644 --- a/src/panels/lovelace/cards/hui-history-graph-card.ts +++ b/src/panels/lovelace/cards/hui-history-graph-card.ts @@ -189,7 +189,6 @@ export class HuiHistoryGraphCard extends LitElement implements LovelaceCard { return css` ha-card { height: 100%; - overflow-y: auto; } .content { padding: 16px; From f0e959319e8e755fb6da53088a2a848cd9a6890b Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Thu, 29 Oct 2020 18:30:20 +0100 Subject: [PATCH 047/125] Add MQTT as ignorable discovery flow (#7527) --- src/data/config_flow.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/data/config_flow.ts b/src/data/config_flow.ts index 94cce83ba8..367924e015 100644 --- a/src/data/config_flow.ts +++ b/src/data/config_flow.ts @@ -11,6 +11,7 @@ export const DISCOVERY_SOURCES = [ "ssdp", "zeroconf", "discovery", + "mqtt", ]; export const ATTENTION_SOURCES = ["reauth"]; From 630d8c3bb69a626b67d5a399c7f504fc3931b760 Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Thu, 29 Oct 2020 20:08:44 +0100 Subject: [PATCH 048/125] Add last-updated to state info tooltip (#7445) --- src/components/entity/state-info.js | 38 +++++++++++++++++++++++++---- src/translations/en.json | 1 + 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/src/components/entity/state-info.js b/src/components/entity/state-info.js index 36014db18e..d228de67de 100644 --- a/src/components/entity/state-info.js +++ b/src/components/entity/state-info.js @@ -59,6 +59,19 @@ class StateInfo extends LocalizeMixin(PolymerElement) { @apply --paper-font-common-nowrap; color: var(--secondary-text-color); } + + .row { + display: flex; + flex-direction: row; + flex-wrap: no-wrap; + width: 100%; + justify-content: space-between; + margin: 0 2px 4px 0; + } + + .row:last-child { + margin-bottom: 0px; + } `; } @@ -81,11 +94,26 @@ class StateInfo extends LocalizeMixin(PolymerElement) { datetime="[[stateObj.last_changed]]" > - [[localize('ui.dialogs.more_info_control.last_updated')]]: - +
+
+ + [[localize('ui.dialogs.more_info_control.last_changed')]]: + + +
+
+ + [[localize('ui.dialogs.more_info_control.last_updated')]]: + + +
+
diff --git a/src/translations/en.json b/src/translations/en.json index 5b804e72ff..6323e70856 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -518,6 +518,7 @@ "details": "Details", "history": "History", "last_updated": "Last updated", + "last_changed": "Last changed", "script": { "last_action": "Last Action", "last_triggered": "Last Triggered" From 76a088e1773c1c5a8eb142174e49cc168893ab32 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 29 Oct 2020 21:28:34 +0100 Subject: [PATCH 049/125] Only show header toggle for entities card if title (#7525) --- src/panels/lovelace/cards/hui-entities-card.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/panels/lovelace/cards/hui-entities-card.ts b/src/panels/lovelace/cards/hui-entities-card.ts index d23d32cce8..7165b3b718 100644 --- a/src/panels/lovelace/cards/hui-entities-card.ts +++ b/src/panels/lovelace/cards/hui-entities-card.ts @@ -115,7 +115,7 @@ class HuiEntitiesCard extends LitElement implements LovelaceCard { this._config = config; this._configEntities = entities; - if (config.show_header_toggle === undefined) { + if (config.title !== undefined && config.show_header_toggle === undefined) { // Default value is show toggle if we can at least toggle 2 entities. let toggleable = 0; for (const rowConf of entities) { From f1c16d6674c937b9b04ca97ce964c56b9de05f21 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 29 Oct 2020 21:28:41 +0100 Subject: [PATCH 050/125] Mock subscribe template (#7529) --- demo/src/stubs/template.ts | 7 +++++++ gallery/src/demos/demo-hui-markdown-card.ts | 10 +++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/demo/src/stubs/template.ts b/demo/src/stubs/template.ts index 726926461c..0e3c1a2638 100644 --- a/demo/src/stubs/template.ts +++ b/demo/src/stubs/template.ts @@ -6,4 +6,11 @@ export const mockTemplate = (hass: MockHomeAssistant) => { body: { message: "Template dev tool does not work in the demo." }, }) ); + hass.mockWS("render_template", (msg, onChange) => { + onChange!({ + result: msg.template, + listeners: { all: false, domains: [], entities: [], time: false }, + }); + return () => {}; + }); }; diff --git a/gallery/src/demos/demo-hui-markdown-card.ts b/gallery/src/demos/demo-hui-markdown-card.ts index 07e974316e..1ae6b5f0f7 100644 --- a/gallery/src/demos/demo-hui-markdown-card.ts +++ b/gallery/src/demos/demo-hui-markdown-card.ts @@ -1,6 +1,8 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; /* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; +import { mockTemplate } from "../../../demo/src/stubs/template"; +import { provideHass } from "../../../src/fake_data/provide_hass"; import "../components/demo-cards"; const CONFIGS = [ @@ -254,7 +256,7 @@ const CONFIGS = [ class DemoMarkdown extends PolymerElement { static get template() { - return html` `; + return html` `; } static get properties() { @@ -265,6 +267,12 @@ class DemoMarkdown extends PolymerElement { }, }; } + + public ready() { + super.ready(); + const hass = provideHass(this.$.demos); + mockTemplate(hass); + } } customElements.define("demo-hui-markdown-card", DemoMarkdown); From 13b8160d741d244b44013e456fa23323faa33051 Mon Sep 17 00:00:00 2001 From: HomeAssistant Azure Date: Fri, 30 Oct 2020 00:32:19 +0000 Subject: [PATCH 051/125] [ci skip] Translation update --- translations/frontend/ca.json | 14 +++ translations/frontend/cs.json | 4 +- translations/frontend/de.json | 4 +- translations/frontend/el.json | 36 +++++--- translations/frontend/en.json | 1 + translations/frontend/es.json | 6 +- translations/frontend/et.json | 4 +- translations/frontend/fr.json | 142 ++++++++++++++++++++++++++--- translations/frontend/hu.json | 60 ++++++------ translations/frontend/it.json | 14 +++ translations/frontend/pl.json | 28 +++--- translations/frontend/ro.json | 55 +++++++++-- translations/frontend/ru.json | 2 +- translations/frontend/zh-Hans.json | 18 +++- 14 files changed, 305 insertions(+), 83 deletions(-) diff --git a/translations/frontend/ca.json b/translations/frontend/ca.json index 2f1fc0f7e5..dd246f05aa 100644 --- a/translations/frontend/ca.json +++ b/translations/frontend/ca.json @@ -888,6 +888,11 @@ "trend": "Actualitza entitats de tendència", "universal": "Actualitza entitats del reproductor universal", "zone": "Actualitza zones" + }, + "server_control": { + "perform_action": "{action} Servidor", + "restart": "Reinicia", + "stop": "Atura" } }, "filter_placeholder": "Filtre d'entitats" @@ -1998,6 +2003,7 @@ }, "services": { "add_node": "Afegeix node", + "cancel_command": "Cancel·la ordre", "remove_node": "Elimina node" } }, @@ -3198,6 +3204,10 @@ "dropdown_label": "Panell", "header": "Panell" }, + "enable_shortcuts": { + "description": "Activa o desactiva dreceres de teclat. Poden dur a terme diverses accions a la IU.", + "header": "Dreceres de teclat" + }, "force_narrow": { "description": "Això ocultarà la barra lateral de manera similar als mòbils i tablets.", "header": "Amaga sempre la barra lateral" @@ -3242,6 +3252,10 @@ "header": "Mòduls d'autenticació amb múltiples passos" }, "push_notifications": { + "add_device_prompt": { + "input_label": "Nom del dispositiu", + "title": "Com s'ha d'anomenar aquest dispositiu?" + }, "description": "Envia notificacions a aquest dispositiu.", "error_load_platform": "Configurar notify.html5.", "error_use_https": "Requereix tenir SSL habilitat per a la interfície (frontend).", diff --git a/translations/frontend/cs.json b/translations/frontend/cs.json index 9b811c73e7..ce70af5133 100644 --- a/translations/frontend/cs.json +++ b/translations/frontend/cs.json @@ -585,7 +585,7 @@ "turned_on": "zapnuto", "was_at_home": "byl doma", "was_at_state": "bylo v {state}", - "was_away": "byl pryč", + "was_away": "bylo pryč", "was_closed": "bylo zavřeno", "was_connected": "bylo připojeno", "was_disconnected": "bylo odpojeno", @@ -2956,7 +2956,7 @@ "close": "Zavřít", "configure_ui": "Upravit Dashboard", "exit_edit_mode": "Ukončit režim úprav uživatelského rozhraní", - "help": "Pomoc", + "help": "Nápověda", "refresh": "Obnovit", "reload_resources": "Nově načíst zdroje", "start_conversation": "Zahájit konverzaci" diff --git a/translations/frontend/de.json b/translations/frontend/de.json index a089c06035..4c15b45311 100644 --- a/translations/frontend/de.json +++ b/translations/frontend/de.json @@ -883,7 +883,9 @@ "zone": "Zonen neu laden" }, "server_control": { - "perform_action": "{action} Server" + "perform_action": "{action} Server", + "restart": "Neustarten", + "stop": "Stoppen" } }, "filter_placeholder": "Entitätsfilter" diff --git a/translations/frontend/el.json b/translations/frontend/el.json index 16f5bdba84..98e88188fa 100644 --- a/translations/frontend/el.json +++ b/translations/frontend/el.json @@ -584,7 +584,7 @@ "turned_off": "απενεργοποιήθηκε", "turned_on": "ενεργοποιήθηκε", "was_at_home": "ήταν στο σπίτι", - "was_at_state": "ήταν σε {κατάσταση}", + "was_at_state": "ήταν σε {state}", "was_away": "ήταν μακριά", "was_closed": "ήταν κλειστό", "was_connected": "ήταν συνδεδεμένο", @@ -679,8 +679,8 @@ "day": "Σε {count} {count, plural,\n μία {ημέρα}\n other {ημέρες}\n}", "hour": "Σε {count} {count, plural,\n one {ώρα}\n other {ώρες}\n}", "minute": "Σε {count} {count, plural,\n one {λεπτό}\n other {λεπτά}\n}", - "second": "Σε {count} {count, πληθυντικός,\n ένα {δευτερόλεπτο}\n άλλα {δευτερόλεπτα}\n}", - "week": "Σε {count} {count, πληθυντικός,\n μία {εβδομάδα}\n άλλες {εβδομάδες}\n}" + "second": "Σε {count} {count, plural,\n one {δευτερόλεπτο}\n other {δευτερόλεπτα}\n}", + "week": "Σε {count} {count, plural,\n one {εβδομάδα}\n other {εβδομάδες}\n}" }, "just_now": "Μόλις τώρα", "never": "Ποτέ", @@ -723,9 +723,9 @@ "enabled_description": "Οι απενεργοποιημένες οντότητες δεν θα προστεθούν στον Home Assistant.", "enabled_label": "Ενεργοποίηση οντότητας", "entity_id": "Αναγνωριστικό οντότητας", - "icon": "Επιβολή Εικονιδίου", + "icon": "Εικονίδιο", "icon_error": "Το εικονίδιο πρέπει να είναι στη μορφή 'πρόθεμα:όνομα_εικόνας', για παράδειγμα: 'mdi:home'", - "name": "Επιβολή Ονόματος", + "name": "Όνομα", "note": "Σημείωση: Αυτό μπορεί να μην λειτουργεί ακόμη με όλες τις ενσωματώσεις.", "unavailable": "Αυτή η οντότητα δεν είναι προς το παρόν διαθέσιμη.", "update": "Ενημέρωση" @@ -876,7 +876,7 @@ "mqtt": "Επανααφόρτωση οντοτήτων mqtt", "person": "Επαναφόρτωση ατόμων", "ping": "Επαναφόρτωση ping οντοτήτων δυαδικών αισθητήρων", - "reload": "Επαναφόρτωση {τομέα}", + "reload": "Επαναφόρτωση {domain}", "rest": "Επαναφόρτωση οντοτήτων ανάπαυσης και ειδοποίηση υπηρεσιών", "rpi_gpio": "Επαναφόρτωση GPIO οντοτήτων του Raspberry Pi", "scene": "Επαναφόρτωση σκηνών", @@ -888,6 +888,11 @@ "trend": "Επαναφόρτωση οντοτήτων τάσης", "universal": "Επαναφόρτωση οντοτήτων αναπαραγωγής καθολικών μέσων", "zone": "Επαναφόρτωση ζωνών" + }, + "server_control": { + "perform_action": "{action} Διακομιστής", + "restart": "Επανεκκίνηση", + "stop": "Στοπ" } }, "filter_placeholder": "Φίλτρο οντοτήτων" @@ -1556,8 +1561,8 @@ "cant_edit": "Μπορείτε να επεξεργαστείτε μόνο στοιχεία που έχουν δημιουργηθεί στο UI.", "caption": "Συσκευές", "confirm_delete": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτή τη συσκευή;", - "confirm_rename_entity_ids": "Θέλετε επίσης να μετονομάσετε τα αναγνωριστικά οντότητας των οντοτήτων σας;", - "confirm_rename_entity_ids_warning": "Αυτό δεν θα αλλάξει καμία ρύθμιση παραμέτρων (όπως αυτοματισμούς, σενάρια, σκηνές, Lovelace) που χρησιμοποιεί αυτήν τη στιγμή αυτές τις οντότητες, θα πρέπει να τις ενημερώσετε μόνοι σας.", + "confirm_rename_entity_ids": "Θέλετε επίσης να μετονομάσετε τα αναγνωριστικά των οντοτήτων σας;", + "confirm_rename_entity_ids_warning": "Αυτό δεν θα αλλάξει καμία διαμόρφωση (όπως αυτοματισμοί, σενάρια, σκηνές, πίνακες ελέγχου) που χρησιμοποιεί αυτήν τη στιγμή αυτές τις οντότητες! Θα πρέπει να τα ενημερώσετε μόνοι σας για να χρησιμοποιήσετε τα νέα αναγνωριστικά οντοτήτων!", "data_table": { "area": "Περιοχή", "battery": "Μπαταρία", @@ -1998,6 +2003,7 @@ }, "services": { "add_node": "Προσθήκη κόμβου", + "cancel_command": "Ακύρωση εντολής", "remove_node": "Κατάργηση κόμβου" } }, @@ -2149,7 +2155,7 @@ "input_text": "Επαναφόρτωση κειμένων εισόδου", "introduction": "Ορισμένα τμήματα του Home Assistant μπορούν να επαναφορτωθούν χωρίς να απαιτείται επανεκκίνηση. Πατώντας \"επαναφόρτωση\" θα ξεφορτωθεί η τρέχουσα παραμετροποίηση YAML και θα φορτωθεί η νέα.", "min_max": "Επαναφόρτωση οντοτήτων ελάχιστων / μέγιστων", - "mqtt": "Επαναφόρτωση οντοτήτων mqtt", + "mqtt": "Επανάληψη φόρτωσης μη αυτόματα ρυθμισμένων οντοτήτων mqtt", "person": "Επαναφόρτωση ατόμων", "ping": "Επαναφόρτωση οντοτήτων δυαδικών αισθητήρων ping", "reload": "Επαναφόρτωση {τομέα}", @@ -2896,7 +2902,7 @@ "migrate": { "header": "Μη συμβατή διαμόρφωση", "migrate": "Μετεγκατάσταση διαμόρφωσης", - "para_migrate": "Το Home Assistant μπορεί να προσθέσει αυτόματα αναγνωριστικά σε όλες τις κάρτες και τις προβολές σας, πατώντας το κουμπί \"Μετεγκατάσταση διαμόρφωσης\".", + "para_migrate": "To Home Assistant μπορεί να προσθέσει αυτόματα τα αναγνωριστικά σε όλες τις κάρτες και τις προβολές σας, πατώντας το κουμπί \"Μετεγκατάσταση διαμόρφωσης\".", "para_no_id": "Αυτό το στοιχείο δεν έχει αναγνωριστικό. Προσθέστε ένα αναγνωριστικό σε αυτό το στοιχείο στο 'ui-lovelace.yaml'." }, "move_card": { @@ -2940,7 +2946,7 @@ }, "view": { "panel_mode": { - "description": "Αυτό καθιστά την πρώτη κάρτα σε πλήρες πλάτος· άλλες κάρτες σε αυτήν την προβολή δε θα αποτυπωθούν.", + "description": "Αυτό καθιστά την πρώτη κάρτα σε πλήρες πλάτος. Άλλες κάρτες σε αυτήν την προβολή, καθώς και σήματα δεν θα αποδοθούν.", "title": "Λειτουργία πίνακα;", "warning_multiple_cards": "Αυτή η προβολή περιέχει περισσότερες από μία κάρτες, αλλά μια προβολή πίνακα μπορεί να εμφανίσει μόνο 1 κάρτα." } @@ -3198,6 +3204,10 @@ "dropdown_label": "Επισκόπηση", "header": "Επισκόπηση" }, + "enable_shortcuts": { + "description": "Ενεργοποίηση ή απενεργοποίηση συντομεύσεων πληκτρολογίου για την εκτέλεση διαφόρων ενεργειών στο περιβάλλον εργασίας χρήστη.", + "header": "Συντομεύσεις πληκτρολογίου" + }, "force_narrow": { "description": "Αυτό θα κρύψει την πλαϊνή μπάρα από προεπιλογή, παρόμοια με την εμπειρία κινητού.", "header": "Να αποκρύπτεται πάντα η πλαϊνή μπάρα" @@ -3242,6 +3252,10 @@ "header": "Πολυπαραγοντικά Αρθρώματα Ταυτοποίησης" }, "push_notifications": { + "add_device_prompt": { + "input_label": "Όνομα συσκευής", + "title": "Πώς πρέπει να ονομάζεται αυτή η συσκευή;" + }, "description": "Αποστολή ειδοποιήσεων σε αυτήν τη συσκευή.", "error_load_platform": "Ρυθμίστε το notify.html5.", "error_use_https": "Απαιτείται η ενεργοποίηση του SSL για το προσκήνιο.", diff --git a/translations/frontend/en.json b/translations/frontend/en.json index e188d2c7dd..3ab12ba356 100644 --- a/translations/frontend/en.json +++ b/translations/frontend/en.json @@ -798,6 +798,7 @@ "dismiss": "Dismiss dialog", "edit": "Edit entity", "history": "History", + "last_changed": "Last changed", "last_updated": "Last updated", "person": { "create_zone": "Create zone from current location" diff --git a/translations/frontend/es.json b/translations/frontend/es.json index ec0644984c..3f1d4c7959 100644 --- a/translations/frontend/es.json +++ b/translations/frontend/es.json @@ -151,7 +151,7 @@ "on": "Húmedo" }, "motion": { - "off": "Sin movimiento", + "off": "No detectado", "on": "Detectado" }, "occupancy": { @@ -577,7 +577,7 @@ "messages": { "became_unavailable": "dejó de estar disponible", "changed_to_state": "cambiado a {state}", - "cleared_device_class": "despejado (no se detecta {device_class})", + "cleared_device_class": "no detectado (no se detecta {device_class})", "detected_device_class": "detectado {device_class}", "rose": "salió", "set": "Establecer", @@ -2205,7 +2205,7 @@ "tag_id": "ID de etiqueta", "tag_id_placeholder": "Autogenerado cuando se deja vacío", "update": "Actualizar", - "usage": "Una etiqueta puede activar una automatización cuando se escanea, puedes usar etiquetas NFC, códigos QR o cualquier otro tipo de etiqueta. Utiliza nuestra {companion_link} para escribir esta etiqueta en una etiqueta NFC programable o crea un código QR a continuación." + "usage": "Una etiqueta puede activar una automatización cuando se escanea, puedes usar etiquetas NFC, códigos QR o cualquier otro tipo de etiqueta. Utiliza nuestras {companion_link} para escribir esta etiqueta en una etiqueta NFC programable o crea un código QR a continuación." }, "edit": "Editar", "headers": { diff --git a/translations/frontend/et.json b/translations/frontend/et.json index 793a225578..10eaefce62 100644 --- a/translations/frontend/et.json +++ b/translations/frontend/et.json @@ -669,7 +669,7 @@ "relative_time": { "duration": { "day": "{count} {count, plural,\n one {päev}\n other {päeva}\n}", - "hour": "{count} {count, plural,\n one {tund}\n other {tundi}\n}", + "hour": "{count} {count, plural,\n one {tund}\n other {tunni}\n}", "minute": "{count} {count, plural,\n one {minut}\n other {minutit}\n}", "second": "{count} {count, plural,\n one {sekund}\n other {sekundit}\n}", "week": "{count} {count, plural,\n one {nädal}\n other {nädalat}\n}" @@ -938,7 +938,7 @@ }, "duration": { "day": "{count} {count, plural,\n one {päev}\n other {päeva}\n}", - "hour": "{count} {count, plural,\n one {tund}\n other {tundi}\n}", + "hour": "{count} {count, plural,\n one {tund}\n other {tunni}\n}", "minute": "{count} {count, plural,\n one {minut}\n other {minutit}\n}", "second": "{count} {count, plural,\n one {sekund}\n other {sekundit}\n}", "week": "{count} {count, plural,\n one {nädal}\n other {nädalat}\n}" diff --git a/translations/frontend/fr.json b/translations/frontend/fr.json index d1b529543c..ae6298a82b 100644 --- a/translations/frontend/fr.json +++ b/translations/frontend/fr.json @@ -675,12 +675,31 @@ "week": "{count} {count, plural,\nzero {semaine}\none {semaine}\nother {semaines}\n}" }, "future": "Dans {time}", + "future_duration": { + "day": "Dans {count} {count, plural,\n one {day}\n other {days}\n}", + "hour": "Dans {count} {count, plural,\n one {hour}\n other {hours}\n}", + "minute": "Dans {count} {count, plural,\n one {minute}\n other {minutes}\n}", + "second": "Dans {count} {count, plural,\n one {second}\n other {seconds}\n}", + "week": "Dans {count} {count, plural,\n one {week}\n other {weeks}\n}" + }, "just_now": "Juste maintenant", "never": "Jamais", - "past": "Il y a {time}" + "past": "Il y a {time}", + "past_duration": { + "day": "Il y a {count} {count, plural,\n one {day}\n other {days}\n}", + "hour": "Il y a {count} {count, plural,\n one {hour}\n other {hours}\n}", + "minute": "Il y a {count} {count, plural,\n one {minute}\n other {minutes}\n}", + "second": "Il y a {count} {count, plural,\n one {second}\n other {seconds}\n}", + "week": "Il y a {count} {count, plural,\n one {week}\n other {weeks}\n}" + } }, "service-picker": { "service": "Service" + }, + "user-picker": { + "add_user": "Ajouter un utilisateur", + "no_user": "Aucun utilisateur", + "remove_user": "Supprimer l'utilisateur" } }, "dialogs": { @@ -704,9 +723,9 @@ "enabled_description": "Les entités désactivées ne seront pas ajoutées à Home Assistant.", "enabled_label": "Activer l'entité", "entity_id": "ID d'entité", - "icon": "Remplacer l'icône", + "icon": "Icône", "icon_error": "Les icônes doivent être au format «préfixe: iconname», par exemple «mdi: home»", - "name": "Remplacement de nom", + "name": "Nom", "note": "Remarque: cela peut ne pas encore fonctionner avec toutes les intégrations.", "unavailable": "Cette entité n'est pas disponible actuellement.", "update": "Mise à jour" @@ -723,6 +742,13 @@ "ok": "OK" }, "helper_settings": { + "counter": { + "initial": "Valeur initiale", + "maximum": "Valeur maximum", + "minimum": "Valeur minimum", + "restore": "Restaurer la dernière valeur connue au démarrage de Home Assistant", + "step": "Taille de pas" + }, "generic": { "icon": "Icône", "name": "Nom" @@ -758,6 +784,9 @@ }, "platform_not_loaded": "L'intégration {platform} n'est pas chargée. Veuillez l'ajouter à votre configuration en ajoutant 'default_config:' ou ''{platform}:''.", "required_error_msg": "Ce champ est requis", + "timer": { + "duration": "Durée" + }, "yaml_not_editable": "Les paramètres de cette entité ne peuvent pas être modifiés à partir de l'interface utilisateur. Seules les entités configurées à partir de l'interface utilisateur sont configurables à partir de l'interface utilisateur." }, "image_cropper": { @@ -826,6 +855,46 @@ } }, "quick-bar": { + "commands": { + "reload": { + "automation": "Recharger les automatisations", + "command_line": "Recharger les entités de ligne de commande", + "core": "Recharger les emplacements et personnalisations", + "filesize": "Recharger les entités de taille de fichier", + "filter": "Recharger les entités de filtre", + "generic": "Recharger les entités de caméra IP générique", + "generic_thermostat": "Recharger les entités de thermostat générique", + "group": "Recharger les groupes, les entités de groupe et notifier les services", + "history_stats": "Recharger les entités des statistiques historiques", + "homekit": "Recharger HomeKit", + "input_boolean": "Recharger les entrées booléennes (input boolean)", + "input_datetime": "Recharger les entrées de date et heure (input date time)", + "input_number": "Recharger les entrées numériques (input number)", + "input_select": "Recharger les listes de sélection (input select)", + "input_text": "Recharger les entrées de texte (input text)", + "min_max": "Recharger les entités min/max", + "mqtt": "Recharger les entités mqtt configurées manuellement", + "person": "Recharger les personnes", + "ping": "Recharger les entités de capteur binaire ping", + "reload": "Recharger {domain}", + "rest": "Recharger les entités REST et notifier les services", + "rpi_gpio": "Recharger les entités GPIO du Raspberry Pi", + "scene": "Recharger les scènes", + "script": "Recharger les scripts", + "smtp": "Recharger les services de notification smtp", + "statistics": "Recharger les entités de statistiques", + "telegram": "Recharger les services de notification de telegram", + "template": "Recharger les entités modèles", + "trend": "Recharger les entités de tendance", + "universal": "Recharger les entités de lecteur média universel", + "zone": "Recharger les zones" + }, + "server_control": { + "perform_action": "{action} Serveur", + "restart": "Redémarrer", + "stop": "Arrêter" + } + }, "filter_placeholder": "Filtre d'entité" }, "voice_command": { @@ -882,11 +951,13 @@ "notification_drawer": { "click_to_configure": "Cliquez sur le bouton pour configurer {entity}", "close": "Fermer", + "dismiss_all": "Tout ignorer", "empty": "Aucune notification", "title": "Notifications" }, "notification_toast": { "connection_lost": "Connexion perdue. Reconnexion en cours ...", + "dismiss": "Ignorer", "service_call_failed": "Échec d'appel du service \"{service}\".", "started": "Home Assistant a démarré !", "starting": "Home Assistant est en cours de démarrage, tout ne sera pas disponible tant qu’il n’aura pas terminé.", @@ -1091,6 +1162,7 @@ }, "unsupported_condition": "Pas d'interface utilisateur pour la condition : {condition}" }, + "copy_to_clipboard": "Copier dans le presse-papier", "default_name": "Nouvelle automatisation", "description": { "label": "Description", @@ -1139,6 +1211,9 @@ "trigger": "Déclencheur" }, "event": { + "context_user_pick": "Ajouter un utilisateur", + "context_user_picked": "Événement déclenché par l'utilisateur", + "context_users": "Limiter aux événements déclenchés par", "event_data": "Données de l'événement", "event_type": "Type d'événement", "label": "Événement :" @@ -1448,6 +1523,7 @@ "different_include": "Peut-être via un domaine, un glob ou un autre include.", "pick_attribute": "Sélectionnez un attribut à remplacer", "picker": { + "documentation": "Documentation sur la personnalisation", "entity": "Entité", "header": "Personnalisations", "introduction": "Ajuster les attributs par entité. Les personnalisations ajoutées / modifiées prendront effet immédiatement. Les personnalisations supprimées prendront effet lors de la mise à jour de l'entité." @@ -1462,24 +1538,31 @@ "add_prompt": "Aucun {name} n'a encore été ajouté à l'aide de cet appareil. Vous pouvez en ajouter un en cliquant sur le bouton + ci-dessus.", "automation": { "actions": { - "caption": "Quand quelque chose est déclenché ..." + "caption": "Quand quelque chose est déclenché ...", + "no_actions": "Aucune action", + "unknown_action": "Action inconnue" }, "automations": "Automatisations", "conditions": { - "caption": "Ne faire quelque chose que si ..." + "caption": "Ne faire quelque chose que si ...", + "no_conditions": "Aucune condition", + "unknown_condition": "Condition inconnue" }, "create": "Créer une automatisation avec l'appareil", "no_automations": "Aucune automatisation", "no_device_automations": "Aucune automatisation n'est disponible pour cet appareil.", "triggers": { - "caption": "Faire quelque chose quand ..." - } + "caption": "Faire quelque chose quand ...", + "no_triggers": "Pas de déclencheur", + "unknown_trigger": "Déclencheur inconnu" + }, + "unknown_automation": "Automatisation inconnue" }, "cant_edit": "Vous ne pouvez modifier que les éléments créés dans l'interface utilisateur.", "caption": "Appareils", "confirm_delete": "Voulez-vous vraiment supprimer cet appareil ?", "confirm_rename_entity_ids": "Voulez-vous aussi renommer les ID de vos entités?", - "confirm_rename_entity_ids_warning": "Cela ne changera aucune configuration (comme les automatismes, les scripts, les scènes, Lovelace) qui utilise actuellement ces entités, vous devrez les mettre à jour vous-même.", + "confirm_rename_entity_ids_warning": "Cela ne changera aucune configuration (comme les automatismes, les scripts, les scènes, Lovelace) qui utilisent actuellement ces entités, vous devrez les mettre à jour vous-même.", "data_table": { "area": "Zone", "battery": "Batterie", @@ -1535,6 +1618,8 @@ }, "filter": { "filter": "Filtre", + "hidden_entities": "{number} caché {number, plural,\n one {entity}\n other {entities}\n}", + "show_all": "Afficher tout", "show_disabled": "Afficher les entités désactivées", "show_readonly": "Afficher les entités en lecture seule", "show_unavailable": "Afficher les entités non disponibles" @@ -1590,11 +1675,13 @@ "no_helpers": "On dirait que vous n'avez pas encore d'aide!" }, "types": { + "counter": "Compteur", "input_boolean": "Interrupteur", "input_datetime": "Date et/ou heure", "input_number": "Nombre", "input_select": "Liste déroulante", - "input_text": "Texte" + "input_text": "Texte", + "timer": "Minuteur" } }, "info": { @@ -1813,6 +1900,8 @@ "network": "Réseau", "node_id": "ID du nœud", "ozw_instance": "Instance Z-Wave", + "query_stage": "Étape de requête", + "wakeup_instructions": "Instructions de réveil", "zwave": "Z-Wave" }, "device_info": { @@ -1822,6 +1911,10 @@ }, "navigation": { "network": "Réseau", + "node": { + "config": "Config", + "dashboard": "Tableau de bord" + }, "nodes": "Nœuds", "select_instance": "Sélectionnez une instance" }, @@ -1850,6 +1943,15 @@ "introduction": "Gérer les fonctions de niveau réseau.", "node_count": "{count} nœuds" }, + "node_config": { + "header": "Configuration du nœud", + "help_source": "Les descriptions des paramètres de configuration et le texte d'aide sont fournis par le projet OpenZWave.", + "introduction": "Gérez les différents paramètres de configuration d'un nœud Z-Wave.", + "wakeup_help": "Les nœuds alimentés par batterie doivent être éveillés pour modifier leur configuration. Si le nœud n'est pas réveillé, OpenZWave tentera de mettre à jour la configuration du nœud la prochaine fois qu'il se réveillera, ce qui pourrait être plusieurs heures (ou jours) plus tard. Suivez ces étapes pour réactiver votre appareil:" + }, + "node_metadata": { + "product_manual": "Manuel du produit" + }, "node_query_stages": { "associations": "Rafraîchissement les associations et les membres", "cacheload": "Chargement des informations à partir du fichier de cache OpenZWave. Les nœuds de batterie resteront à cette étape jusqu'à ce que le nœud se réveille.", @@ -1901,6 +2003,7 @@ }, "services": { "add_node": "Ajouter un nœud", + "cancel_command": "Annuler la commande", "remove_node": "Supprimer le nœud" } }, @@ -1930,6 +2033,7 @@ "update": "Mettre à jour" }, "introduction": "Ici, vous pouvez définir chaque personne d'intérêt dans Home Assistant.", + "learn_more": "En savoir plus sur les personnes", "no_persons_created_yet": "Il semble que vous n’avez encore créé personne.", "note_about_persons_configured_in_yaml": "Remarque: les personnes configurées via configuration.yaml ne peuvent pas être modifiées via l'interface utilisateur.", "person_not_found": "Nous n'avons pas trouvé la personne que vous tentiez de modifier.", @@ -2051,7 +2155,7 @@ "input_text": "Recharger les entrées de texte (input text)", "introduction": "Certaines parties de Home Assistant peuvent être rechargées sans nécessiter de redémarrage. Le fait de cliquer sur recharger déchargera leur configuration actuelle et chargera la nouvelle.", "min_max": "Recharger les entités min/max", - "mqtt": "Recharger les entités mqtt", + "mqtt": "Recharger les entités mqtt configurées manuellement", "person": "Recharger les personnes", "ping": "Recharger les entités de capteur binaire ping", "reload": "Recharger {domain}", @@ -2108,6 +2212,7 @@ "last_scanned": "Dernière analyse", "name": "Nom" }, + "learn_more": "En savoir plus sur les balises", "never_scanned": "Jamais scanné", "no_tags": "Aucunes balises", "write": "Écrire" @@ -2443,7 +2548,9 @@ "listeners": "Ce modèle écoute les événements de changement d'état suivants:", "no_listeners": "Ce modèle n'écoute aucun événement de changement d'état et ne sera pas mis à jour automatiquement.", "reset": "Réinitialiser au modèle de démonstration", + "result_type": "Type de résultat", "template_extensions": "Extensions de modèles de Home Assistant", + "time": "Ce modèle est mis à jour au début de chaque minute.", "title": "Modèle", "unknown_error_template": "Erreur inconnue lors du rendu du modèle" } @@ -2586,6 +2693,7 @@ "entity-id": "ID de l'entité", "last-changed": "Dernière modification", "last-triggered": "Dernier déclenchement", + "last-updated": "Dernière mise à jour", "none": "Pas d'informations secondaires", "position": "Position", "tilt-position": "position d'inclinaison" @@ -2742,6 +2850,9 @@ "entity": "Entité", "no_description": "Aucune description disponible." }, + "edit_badges": { + "panel_mode": "Ces badges ne seront pas affichés car cette vue est en \"Mode Panneau\"." + }, "edit_card": { "add": "Ajouter une action", "confirm_cancel": "Êtes-vous sûr de vouloir annuler ?", @@ -2847,7 +2958,8 @@ "exit_edit_mode": "Quitter le mode d'édition de l'interface utilisateur", "help": "Aide", "refresh": "Actualiser", - "reload_resources": "Recharger les ressources" + "reload_resources": "Recharger les ressources", + "start_conversation": "Démarrer la conversation" }, "reload_lovelace": "Recharger UI", "reload_resources": { @@ -3092,6 +3204,10 @@ "dropdown_label": "Tableau de bord", "header": "Tableau de bord" }, + "enable_shortcuts": { + "description": "Activez ou désactivez les raccourcis clavier pour effectuer diverses actions dans l'interface utilisateur.", + "header": "Raccourcis clavier" + }, "force_narrow": { "description": "Cela masquera la barre latérale par défaut, semblable à l'expérience mobile.", "header": "Toujours cacher la barre latérale" @@ -3136,6 +3252,10 @@ "header": "Modules d'authentification multi-facteurs" }, "push_notifications": { + "add_device_prompt": { + "input_label": "Nom de l'appareil", + "title": "Comment doit-on appeler cet appareil?" + }, "description": "Envoyer des notifications à cet appareil.", "error_load_platform": "Configurer notify.html5.", "error_use_https": "Nécessite l'activation SSL pour l'interface utilisateur.", diff --git a/translations/frontend/hu.json b/translations/frontend/hu.json index dadeffe9d1..69f4f62bc9 100644 --- a/translations/frontend/hu.json +++ b/translations/frontend/hu.json @@ -634,20 +634,20 @@ "server": "Szerver" }, "documentation": "dokumentáció", - "learn_adding_local_media": "További információ a média hozzáadásáról a {documentation} .", - "local_media_files": "Helyezze el a video-, audio- és képfájljait a média könyvtárba, hogy böngészhessen és lejátszhassa őket a böngészőben vagy a támogatott médialejátszókon.", + "learn_adding_local_media": "Tudj meg többet a média hozzáadásról a {documentation}ban.", + "local_media_files": "Helyezd el a videó-, hang- és képfájljaidat a média könyvtárban ahhoz, hogy tallózhasd és lejátszhasd őket a böngészőben vagy a támogatott médialejátszókon.", "media_browsing_error": "Média böngészési hiba", "media_not_supported": "A böngésző médialejátszó nem támogatja az ilyen típusú médiafájlokat", "media_player": "Médialejátszó", "media-player-browser": "Médialejátszó böngésző", "no_items": "Nincsenek elemek", "no_local_media_found": "Nem található helyi média", - "no_media_folder": "Úgy tűnik, hogy még nem hozott létre média könyvtárat.", + "no_media_folder": "Úgy tűnik, még nem hoztál létre média könyvtárat.", "pick": "Kiválasztás", "pick-media": "Média kiválasztása", "play": "Lejátszás", "play-media": "Média lejátszása", - "setup_local_help": "Ellenőrizze a {documentation} a helyi adathordozók beállításáról.", + "setup_local_help": "Ellenőrizd a {documentation}t a helyi adathordozó beállításáról.", "video_not_supported": "A böngésződ nem támogatja a video elemet.", "web-browser": "Böngésző" }, @@ -1013,7 +1013,7 @@ "delete_confirm": "Biztos, hogy ezt törölni szeretnéd?", "duplicate": "Duplikálás", "header": "Műveletek", - "introduction": "A műveleteket hajtja végre a Home Assistant, ha egy automatizálás triggerelődik. Kattints az alábbi linkre, ha többet szeretnél megtudni a műveletekről.", + "introduction": "A műveleteket hajtja végre a Home Assistant, ha egy automatizálás elindul. Kattints az alábbi linkre, ha többet szeretnél megtudni a műveletekről.", "learn_more": "Tudj meg többet a műveletekről", "name": "Művelet", "type_select": "Művelet típusa", @@ -1055,12 +1055,12 @@ "label": "Számláló" }, "until": { - "conditions": "Amíg a feltételek", - "label": "Addig" + "conditions": "Amíg nem teljesülnek a feltételek", + "label": "Amíg nem" }, "while": { - "conditions": "Míg a feltételek", - "label": "Míg" + "conditions": "Amíg teljesülnek a feltételek", + "label": "Amíg" } } }, @@ -1073,7 +1073,7 @@ }, "wait_for_trigger": { "continue_timeout": "Folytatás időtúllépéskor", - "label": "Várakozás az eseményindítóra", + "label": "Várakozás eseményindítóra", "timeout": "Időtúllépés (opcionális)" }, "wait_template": { @@ -1191,15 +1191,15 @@ "move_up": "Fel", "save": "Mentés", "triggers": { - "add": "Trigger hozzáadása", + "add": "Eseményindító hozzáadása", "delete": "Törlés", "delete_confirm": "Biztos, hogy ezt törölni szeretnéd?", "duplicate": "Duplikálás", - "header": "Triggerek", - "introduction": "Az eseményindítók (triggerek) indítják el az automatizálási szabályok feldolgozását. Több triggert is meg lehet adni egy szabályhoz. Ha egy trigger elindul, akkor a Home Assistant ellenőrzi a feltételeket - ha vannak -, majd meghívja a műveletet. Kattints az alábbi linkre, ha többet szeretnél megtudni a triggerekről.", - "learn_more": "Tudj meg többet a triggerekről", - "name": "Trigger", - "type_select": "Trigger típusa", + "header": "Eseményindítók", + "introduction": "Az eseményindítók indítják el az automatizálási szabályok feldolgozását. Több eseményindítót is meg lehet adni egy szabályhoz. Ha egy eseményindító elindul, akkor a Home Assistant ellenőrzi a feltételeket - ha vannak -, majd meghívja a műveletet.", + "learn_more": "Tudj meg többet az eseményindítókról", + "name": "Eseményindító", + "type_select": "Eseményindító típusa", "type": { "device": { "extra_fields": { @@ -1212,8 +1212,8 @@ }, "event": { "context_user_pick": "Felhasználó hozzáadása", - "context_user_picked": "Esemény elküldése", - "context_users": "Korlátozás az által kiváltott eseményekre", + "context_user_picked": "Eseményt kiváltó felhasználó", + "context_users": "Korlátozás felhasználó(k) által indított eseményekre", "event_data": "Esemény adatai", "event_type": "Esemény típusa", "label": "Esemény" @@ -1535,10 +1535,10 @@ } }, "devices": { - "add_prompt": "Az eszköz használatával még nem adtak hozzá {name} nevet. A fenti + gombra kattintva hozzá adhat egyet.", + "add_prompt": "Még nem lettek létrehozva {name} ennek az eszköznek a használatával. Hozzáadhatsz egyet a fenti + gombra kattintva.", "automation": { "actions": { - "caption": "Ha valami triggerelődik, akkor...", + "caption": "Ha egy esemény elindul, akkor...", "no_actions": "Nincsenek műveletek", "unknown_action": "Ismeretlen művelet" }, @@ -1548,7 +1548,7 @@ "no_conditions": "Nincsenek feltételek", "unknown_condition": "Ismeretlen feltétel" }, - "create": "Eszköz automatizálás létrehozása", + "create": "Automatizálás létrehozása eszközzel", "no_automations": "Nincsenek automatizálások", "no_device_automations": "Ehhez az eszközhöz nem állnak rendelkezésre automatizálások.", "triggers": { @@ -1593,7 +1593,7 @@ }, "scenes": "Jelenetek", "script": { - "create": "Szkript létrehozása eszköz alapján", + "create": "Szkript létrehozása eszközzel", "no_scripts": "Nincsenek szkriptek", "scripts": "Szkriptek" }, @@ -1925,7 +1925,7 @@ "driverawakenodesqueries": "Minden éber csomópont lekérdezésre került", "driverfailed": "Nem sikerült csatlakozni a Z-Wave vezérlőhöz", "driverready": "A Z-Wave vezérlő inicializálása", - "driverremoved": "A meghajtót eltávolították", + "driverremoved": "Az illesztőprogram el lett távolítva", "driverreset": "Az illesztőprogram vissza lett állítva", "offline": "OZWDaemon offline", "ready": "Csatlakozásra kész", @@ -2431,14 +2431,14 @@ "add_to_group": "Hozzáadás a csoporthoz", "entities": "A csomópont entitásai", "entity_info": "Entitás adatai", - "exclude_entity": "Kizárja ezt az entitást a Home Assistantból", + "exclude_entity": "Entitás kizárása a Home Assistant-ból", "group": "Csoport", "header": "Z-Wave csomópontkezelés", - "introduction": "Futtasson egyetlen csomópontot érintő Z-Wave parancsokat. Válasszon egy csomópontot az elérhető parancsok listájának megtekintéséhez.", - "max_associations": "Egyesületek száma:", + "introduction": "Futtass egyetlen csomópontot érintő Z-Wave parancsokat. Válassz egy csomópontot az elérhető parancsok listájának megtekintéséhez.", + "max_associations": "Társítások maximális száma:", "node_group_associations": "Csomópontcsoport-társítások", "node_protection": "Csomópont védelem", - "node_to_control": "A vezérlőhöz képest csomópont", + "node_to_control": "Vezérelni kívánt csomópont", "nodes": "Csomópontok", "nodes_hint": "Válassz csomópontot a csomópontonkénti opciók megtekintéséhez", "nodes_in_group": "További csomópontok ebben a csoportban:", @@ -2449,7 +2449,7 @@ "set_protection": "Védelem beállítása" }, "ozw_log": { - "header": "OZW Log", + "header": "OZW napló", "introduction": "Napló megtekintése. 0 a minimum (a teljes naplót betölti) és 1000 a maximum. A betöltés statikus naplót jelenít meg, és a vége automatikusan frissül a napló utolsó meghatározott számú sorával.", "last_log_lines": "Az utolsó naplósorok száma", "load": "Betöltés", @@ -2767,7 +2767,7 @@ "name": "Vízszintes Készlet" }, "humidifier": { - "description": "A Páratartalom kártyával a páramntesitő/párásitó berendezés entitások vezérelhetők. Lehetővé teszi a páratartalom, illetve a mód megváltoztatását.", + "description": "A Párásító kártyával a párásító berendezés entitások vezérelhetők. Lehetővé teszi a páratartalom, illetve a mód megváltoztatását.", "name": "Párásító" }, "iframe": { @@ -3205,7 +3205,7 @@ "header": "Irányítópult" }, "enable_shortcuts": { - "description": "A felhasználói felület különböző műveletekvégrehajtásához engedélyezze vagy tiltsa le a billentyűparancsokat.", + "description": "Engedélyezheted vagy letilthatod a felhasználói felület billentyűparancsait különböző műveletek végrehajtásához.", "header": "Billentyűparancsok" }, "force_narrow": { diff --git a/translations/frontend/it.json b/translations/frontend/it.json index dc1428984a..07c2e2260b 100644 --- a/translations/frontend/it.json +++ b/translations/frontend/it.json @@ -888,6 +888,11 @@ "trend": "Ricarica le entità di tendenza", "universal": "Ricarica le entità del lettore multimediale universale", "zone": "Ricarica le Zone" + }, + "server_control": { + "perform_action": "{action} Server", + "restart": "Riavvia", + "stop": "Ferma" } }, "filter_placeholder": "Filtro Entità" @@ -1998,6 +2003,7 @@ }, "services": { "add_node": "Aggiungi Nodo", + "cancel_command": "Annulla Comando", "remove_node": "Rimuovi nodo" } }, @@ -3198,6 +3204,10 @@ "dropdown_label": "Plancia", "header": "Plancia" }, + "enable_shortcuts": { + "description": "Abilita o disabilita le scorciatoie da tastiera per eseguire varie azioni nell'interfaccia utente.", + "header": "Scorciatoie da tastiera" + }, "force_narrow": { "description": "Questo nasconderà la barra laterale per impostazione predefinita, in modo simile all'esperienza mobile", "header": "Nascondi sempre la barra laterale" @@ -3242,6 +3252,10 @@ "header": "Codice di autenticazione a più fattori" }, "push_notifications": { + "add_device_prompt": { + "input_label": "Nome del dispositivo", + "title": "Come dovrebbe essere chiamato questo dispositivo?" + }, "description": "Invia notifiche a questo dispositivo.", "error_load_platform": "Configura notify.html5.", "error_use_https": "Richiede SSL abilitato per il frontend.", diff --git a/translations/frontend/pl.json b/translations/frontend/pl.json index 13655ba4cd..6a0c3bc390 100644 --- a/translations/frontend/pl.json +++ b/translations/frontend/pl.json @@ -575,29 +575,29 @@ "by_service": "przez usługę", "entries_not_found": "Nie znaleziono wpisów w dzienniku.", "messages": { - "became_unavailable": "- encja stała się niedostępna", - "changed_to_state": "- stan encji zmienił się na {state}", - "cleared_device_class": "- encja przestała wykrywać {device_class}", - "detected_device_class": "- encja wykryła {device_class}", + "became_unavailable": "encja stała się niedostępna", + "changed_to_state": "stan encji zmienił się na {state}", + "cleared_device_class": "encja przestała wykrywać", + "detected_device_class": "encja wykryła", "rose": "wzeszło", "set": "zaszło", - "turned_off": "- encja została wyłączona", - "turned_on": "- encja została włączona", - "was_at_home": "- stan encji zmienił się na \"w domu\"", - "was_at_state": "- stan encji zmienił się na {state}", - "was_away": "- stan encji zmienił się na \"poza domem\"", + "turned_off": "encja została wyłączona", + "turned_on": "encja została włączona", + "was_at_home": "stan encji zmienił się na \"w domu\"", + "was_at_state": "stan encji zmienił się na {state}", + "was_away": "stan encji zmienił się na \"poza domem\"", "was_closed": "nastąpiło zamknięcie", "was_connected": "nastąpiło podłączenie", "was_disconnected": "nastąpiło odłączenie", "was_locked": "nastąpiło zamknięcie", - "was_low": "- stan encji zmienił się na niski", - "was_normal": "- stan encji zmienił się na normalny", + "was_low": "stan encji zmienił się na niski", + "was_normal": "stan encji zmienił się na normalny", "was_opened": "nastąpiło otwarcie", "was_plugged_in": "nastąpiło podłączenie", - "was_safe": "- encja przestała wykrywać zagrożenie", + "was_safe": "encja przestała wykrywać zagrożenie", "was_unlocked": "nastąpiło otwarcie", "was_unplugged": "nastąpiło odłączenie", - "was_unsafe": "- encja wykryła zagrożenie" + "was_unsafe": "encja wykryła zagrożenie" } }, "media-browser": { @@ -1677,7 +1677,7 @@ "types": { "counter": "Licznik", "input_boolean": "Przełącznik", - "input_datetime": "Data i/lub czas", + "input_datetime": "Data/czas", "input_number": "Numer", "input_select": "Pole wyboru", "input_text": "Tekst", diff --git a/translations/frontend/ro.json b/translations/frontend/ro.json index f4d458f5c6..6bd0548b8a 100644 --- a/translations/frontend/ro.json +++ b/translations/frontend/ro.json @@ -546,7 +546,20 @@ "no_history_found": "Nici un istoric de stare nu a fost găsit." }, "logbook": { - "entries_not_found": "Nu s-au găsit intrări în jurnal." + "entries_not_found": "Nu s-au găsit intrări în jurnal.", + "messages": { + "rose": "Trandafir", + "set": "setaţi", + "turned_off": "oprit", + "turned_on": "pornit", + "was_at_home": "era acasă", + "was_at_state": "a fost în {state}", + "was_away": "a fost plecat", + "was_closed": "a fost închis", + "was_disconnected": "a fost deconectat", + "was_locked": "a fost încuiat", + "was_unlocked": "a fost deblocat" + } }, "media-browser": { "class": { @@ -591,11 +604,18 @@ "week": "{count}{count, plural,\n one { săptămână }\n other { săptămâni }\n}" }, "future": "În {time}", + "future_duration": { + "week": "În {count} {count, plural,\n one {week}\n other {weeks}\n}" + }, "never": "Niciodată", "past": "{time} în urmă" }, "service-picker": { "service": "Serviciu" + }, + "user-picker": { + "add_user": "Adăugați utilizator", + "no_user": "Niciun utilizator" } }, "dialogs": { @@ -671,6 +691,9 @@ }, "platform_not_loaded": "Integrarea {platform} nu este încărcată. Vă rugăm să-i adăugați configurația dvs. fie adăugând 'default_config:' sau ''{platform}:''.", "required_error_msg": "Acest câmp este obligatoriu", + "timer": { + "duration": "Durată" + }, "yaml_not_editable": "Setările acestei entități nu se pot edita din interfața grafica. Numai entitățile configurate in interfața grafica sunt configurabile din interfața grafica." }, "more_info_control": { @@ -965,6 +988,7 @@ }, "unsupported_condition": "Condiție neacceptată: {condition}" }, + "copy_to_clipboard": "Copiați în clipboard", "default_name": "Automatizare nouă", "description": { "label": "Descriere", @@ -1169,11 +1193,13 @@ "devices": { "automation": { "actions": { - "caption": "Când se declanșează ceva ..." + "caption": "Când se declanșează ceva ...", + "no_actions": "Fără acțiuni" }, "automations": "Automatizări", "conditions": { - "caption": "Fă ceva doar dacă ..." + "caption": "Fă ceva doar dacă ...", + "no_conditions": "Nu există condiții" }, "create": "Creează o automatizare cu dispozitivul", "no_automations": "Nu există automatizări", @@ -1238,6 +1264,8 @@ }, "filter": { "filter": "Filtru", + "hidden_entities": "{number} ascuns{number, plural,\n one {entity}\n other {entities}\n}", + "show_all": "Arata tot", "show_disabled": "Afișare entități dezactivate", "show_readonly": "Afișare entități doar în citire", "show_unavailable": "Afișare entități indisponibile" @@ -1293,7 +1321,8 @@ "input_datetime": "Data și / sau ora", "input_number": "Număr", "input_select": "Buton Dropdown", - "input_text": "Text" + "input_text": "Text", + "timer": "Temporizator" } }, "info": { @@ -1431,6 +1460,7 @@ "open": "Deschide" } }, + "description": "Gestionați-vă tablourile de bord Lovelace", "resources": { "cant_edit_yaml": "Utilizați Lovelace în modul YAML, prin urmare nu vă puteți gestiona resursele prin intermediul UI. Gestionează-le în configuration.yaml.", "caption": "Resurse", @@ -1505,7 +1535,9 @@ "device_tracker_pick": "Alegeți dispozitivul pentru a urmări", "device_tracker_picked": "Urmăriți dispozitivul", "name": "Nume" - } + }, + "learn_more": "Aflați mai multe despre persoane", + "person_not_found_title": "Persoana nu a fost găsită" }, "scene": { "activated": "Scenă activată {name}.", @@ -1922,6 +1954,7 @@ "jinja_documentation": "Șablon documentație Jinja2", "listeners": "Acest șablon ascultă următoarele evenimente modificate de stare:", "no_listeners": "Acest șablon ascultă următoarele evenimente modificate de stare:", + "result_type": "Tipul rezultatului", "template_extensions": "Șabloane de extensie pentru Home Assistant", "time": "Acest șablon se actualizează la fiecare 60 de secunde după ultimul eveniment modificat de stare.", "title": "Sabloane", @@ -2009,6 +2042,7 @@ }, "entities": { "description": "Cardul Entities este cel mai comun tip de card. Acesta grupează elementele împreună în liste.", + "edit_special_row": "Vizualizați detaliile acestui rând făcând clic pe butonul de editare", "entity_row_editor": "Editează rândul entității", "name": "Entități", "secondary_info_values": { @@ -2103,7 +2137,8 @@ }, "sensor": { "description": "Cardul Senzor vă oferă o imagine de ansamblu rapidă a stării senzorilor cu un grafic opțional pentru a vizualiza schimbarea în timp.", - "name": "Senzor" + "name": "Senzor", + "show_more_detail": "Afișați mai multe detalii" }, "shopping-list": { "description": "Cardul Listă cumpărături vă permite să adăugați, să editați, să verificați și să ștergeți elemente din lista de cumpărături.", @@ -2243,6 +2278,7 @@ "views": { "confirm_delete": "Ștergeți vizualizarea?", "confirm_delete_existing_cards": "Ștergerea acestei vizualizări va elimina și cardurile", + "confirm_delete_existing_cards_text": "Sigur doriți să ștergeți vizualizarea '' {name} ''? Vizualizarea conține {number} carduri care vor fi șterse. Această acțiune nu poate fi anulată.", "confirm_delete_text": "Sigur doriți să ștergeți vizualizarea „{name}”?" }, "warning": { @@ -2415,6 +2451,10 @@ "more_integrations": "Mai Mult" }, "intro": "Sunteți gata să vă treziți casa, să vă recuperați intimitatea și să vă alăturați unei comunități mondiale de creatori?", + "restore": { + "in_progress": "Restaurare în curs", + "show_log": "Afișați jurnalul complet" + }, "user": { "create_account": "Creează cont", "data": { @@ -2500,6 +2540,9 @@ "header": "Autentificare cu doi factori" }, "push_notifications": { + "add_device_prompt": { + "input_label": "Nume dispozitiv" + }, "description": "Trimiteți notificări către acest dispozitiv.", "error_load_platform": "Configurați notify.html5.", "error_use_https": "Necesită SSL activat pentru interfaţă.", diff --git a/translations/frontend/ru.json b/translations/frontend/ru.json index 41daa529cb..4f322dd9e5 100644 --- a/translations/frontend/ru.json +++ b/translations/frontend/ru.json @@ -571,7 +571,7 @@ "no_history_found": "История не найдена." }, "logbook": { - "by": "пользователем", + "by": "от", "by_service": "службой", "entries_not_found": "В журнале нет записей.", "messages": { diff --git a/translations/frontend/zh-Hans.json b/translations/frontend/zh-Hans.json index e344599b9d..7513de7ed8 100644 --- a/translations/frontend/zh-Hans.json +++ b/translations/frontend/zh-Hans.json @@ -873,7 +873,7 @@ "input_select": "重载多项选择器", "input_text": "重载文字输入", "min_max": "重载最小值/最大值实体", - "mqtt": "重载 mqtt 实体", + "mqtt": "重载手动配置的 mqtt 实体", "person": "重载人员", "ping": "重载 ping 二元传感器实体", "reload": "重载{domain}", @@ -888,6 +888,11 @@ "trend": "重载 trend 实体", "universal": "重载通用媒体播放器实体", "zone": "重载地点" + }, + "server_control": { + "perform_action": "{action}服务", + "restart": "重启", + "stop": "停止" } }, "filter_placeholder": "实体筛选" @@ -1998,6 +2003,7 @@ }, "services": { "add_node": "添加节点", + "cancel_command": "取消命令", "remove_node": "删除节点" } }, @@ -2149,7 +2155,7 @@ "input_text": "重载文字输入", "introduction": "Home Assistant 中的部分配置可以直接重载,而无需重启服务。点击重载按钮将重新载入新的配置。", "min_max": "重载最小值/最大值实体", - "mqtt": "重载 mqtt 实体", + "mqtt": "重载手动配置的 mqtt 实体", "person": "重载人员", "ping": "重载 ping 二元传感器实体", "reload": "重载{domain}", @@ -3198,6 +3204,10 @@ "dropdown_label": "仪表盘", "header": "仪表盘" }, + "enable_shortcuts": { + "description": "启用或禁用可在 UI 中执行各种操作的键盘快捷键。", + "header": "键盘快捷键" + }, "force_narrow": { "description": "这将默认隐藏侧边栏,体验与手机版类似。", "header": "始终隐藏侧边栏" @@ -3242,6 +3252,10 @@ "header": "多因素身份验证模块" }, "push_notifications": { + "add_device_prompt": { + "input_label": "设备名称", + "title": "如何称呼这台设备?" + }, "description": "向本设备发送通知", "error_load_platform": "请配置 notify.html5。", "error_use_https": "需要为前端启用 SSL。", From 89f359a52faac71079360225bf659cd9c68962b5 Mon Sep 17 00:00:00 2001 From: Zack Barett Date: Fri, 30 Oct 2020 08:28:51 -0500 Subject: [PATCH 052/125] Calendar: Fix background to match ha-card (#7539) --- src/panels/calendar/ha-full-calendar.ts | 15 +++++-- src/panels/calendar/ha-panel-calendar.ts | 51 +++++++++++------------- 2 files changed, 36 insertions(+), 30 deletions(-) diff --git a/src/panels/calendar/ha-full-calendar.ts b/src/panels/calendar/ha-full-calendar.ts index f568d14e46..0a4a1039cd 100644 --- a/src/panels/calendar/ha-full-calendar.ts +++ b/src/panels/calendar/ha-full-calendar.ts @@ -324,10 +324,19 @@ class HAFullCalendar extends LitElement { #calendar { flex-grow: 1; - background-color: var(--card-background-color); + background-color: var( + --ha-card-background, + var(--card-background-color, white) + ); min-height: 400px; - --fc-neutral-bg-color: var(--card-background-color); - --fc-list-event-hover-bg-color: var(--card-background-color); + --fc-neutral-bg-color: var( + --ha-card-background, + var(--card-background-color, white) + ); + --fc-list-event-hover-bg-color: var( + --ha-card-background, + var(--card-background-color, white) + ); --fc-theme-standard-border-color: var(--divider-color); --fc-border-color: var(--divider-color); } diff --git a/src/panels/calendar/ha-panel-calendar.ts b/src/panels/calendar/ha-panel-calendar.ts index 692194b06f..a81f8622fb 100644 --- a/src/panels/calendar/ha-panel-calendar.ts +++ b/src/panels/calendar/ha-panel-calendar.ts @@ -1,36 +1,33 @@ -import { - customElement, - LitElement, - property, - internalProperty, - CSSResultArray, - css, - TemplateResult, - html, - PropertyValues, -} from "lit-element"; -import { styleMap } from "lit-html/directives/style-map"; - -import "../../layouts/ha-app-layout"; -import "@polymer/app-layout/app-header/app-header"; -import "@polymer/app-layout/app-toolbar/app-toolbar"; import "@material/mwc-checkbox"; import "@material/mwc-formfield"; - -import "../../components/ha-menu-button"; +import "@polymer/app-layout/app-header/app-header"; +import "@polymer/app-layout/app-toolbar/app-toolbar"; +import { + css, + CSSResultArray, + customElement, + html, + internalProperty, + LitElement, + property, + PropertyValues, + TemplateResult, +} from "lit-element"; +import { styleMap } from "lit-html/directives/style-map"; +import { HASSDomEvent } from "../../common/dom/fire_event"; import "../../components/ha-card"; -import "./ha-full-calendar"; - +import "../../components/ha-menu-button"; +import { fetchCalendarEvents, getCalendars } from "../../data/calendar"; +import "../../layouts/ha-app-layout"; +import { haStyle } from "../../resources/styles"; import type { - HomeAssistant, - SelectedCalendar, + Calendar, CalendarEvent, CalendarViewChanged, - Calendar, + HomeAssistant, + SelectedCalendar, } from "../../types"; -import { haStyle } from "../../resources/styles"; -import { HASSDomEvent } from "../../common/dom/fire_event"; -import { getCalendars, fetchCalendarEvents } from "../../data/calendar"; +import "./ha-full-calendar"; @customElement("ha-panel-calendar") class PanelCalendar extends LitElement { @@ -179,7 +176,7 @@ class PanelCalendar extends LitElement { } :host(:not([narrow])) .content { - height: calc(100vh - var(--header-height); + height: calc(100vh - var(--header-height)); } .calendar-list { From 48ef8c86c23e35de3801ac9a53a11b7a257ca658 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 30 Oct 2020 14:30:27 +0100 Subject: [PATCH 053/125] Add unavailable entity to gauge demo (#7530) --- gallery/src/demos/demo-hui-gauge-card.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gallery/src/demos/demo-hui-gauge-card.ts b/gallery/src/demos/demo-hui-gauge-card.ts index 2963cab228..5dd0cf582b 100644 --- a/gallery/src/demos/demo-hui-gauge-card.ts +++ b/gallery/src/demos/demo-hui-gauge-card.ts @@ -8,6 +8,7 @@ import "../components/demo-cards"; const ENTITIES = [ getEntity("sensor", "brightness", "12", {}), getEntity("plant", "bonsai", "ok", {}), + getEntity("sensor", "not_working", "unavailable", {}), getEntity("sensor", "outside_humidity", "54", { unit_of_measurement: "%", }), @@ -74,6 +75,13 @@ const CONFIGS = [ entity: plant.bonsai `, }, + { + heading: "Unavailable entity", + config: ` +- type: gauge + entity: sensor.not_working + `, + }, ]; class DemoGaugeEntity extends PolymerElement { From 4bc8818145f8d4de56bf5511769be2685183a2f8 Mon Sep 17 00:00:00 2001 From: Ian Richardson Date: Fri, 30 Oct 2020 08:45:51 -0500 Subject: [PATCH 054/125] Remove ha-state-icon (#7545) --- src/components/entity/ha-state-icon.js | 25 ------------------- .../integrations/ha-config-integrations.ts | 1 - .../zha/zha-clusters-data-table.ts | 1 - .../zha/zha-device-endpoint-data-table.ts | 1 - 4 files changed, 28 deletions(-) delete mode 100644 src/components/entity/ha-state-icon.js diff --git a/src/components/entity/ha-state-icon.js b/src/components/entity/ha-state-icon.js deleted file mode 100644 index 80a7ad22d1..0000000000 --- a/src/components/entity/ha-state-icon.js +++ /dev/null @@ -1,25 +0,0 @@ -import { html } from "@polymer/polymer/lib/utils/html-tag"; -/* eslint-plugin-disable lit */ -import { PolymerElement } from "@polymer/polymer/polymer-element"; -import { stateIcon } from "../../common/entity/state_icon"; -import "../ha-icon"; - -class HaStateIcon extends PolymerElement { - static get template() { - return html` `; - } - - static get properties() { - return { - stateObj: { - type: Object, - }, - }; - } - - computeIcon(stateObj) { - return stateIcon(stateObj); - } -} - -customElements.define("ha-state-icon", HaStateIcon); diff --git a/src/panels/config/integrations/ha-config-integrations.ts b/src/panels/config/integrations/ha-config-integrations.ts index 7c5e42b2bb..915cd4920e 100644 --- a/src/panels/config/integrations/ha-config-integrations.ts +++ b/src/panels/config/integrations/ha-config-integrations.ts @@ -23,7 +23,6 @@ import "../../../common/search/search-input"; import { caseInsensitiveCompare } from "../../../common/string/compare"; import { LocalizeFunc } from "../../../common/translations/localize"; import { nextRender } from "../../../common/util/render-status"; -import "../../../components/entity/ha-state-icon"; import "../../../components/ha-button-menu"; import "../../../components/ha-card"; import "../../../components/ha-svg-icon"; diff --git a/src/panels/config/integrations/integration-panels/zha/zha-clusters-data-table.ts b/src/panels/config/integrations/integration-panels/zha/zha-clusters-data-table.ts index b602ada4ba..55b6683fce 100644 --- a/src/panels/config/integrations/integration-panels/zha/zha-clusters-data-table.ts +++ b/src/panels/config/integrations/integration-panels/zha/zha-clusters-data-table.ts @@ -12,7 +12,6 @@ import type { DataTableColumnContainer, HaDataTable, } from "../../../../../components/data-table/ha-data-table"; -import "../../../../../components/entity/ha-state-icon"; import type { Cluster } from "../../../../../data/zha"; import type { HomeAssistant } from "../../../../../types"; import { formatAsPaddedHex } from "./functions"; diff --git a/src/panels/config/integrations/integration-panels/zha/zha-device-endpoint-data-table.ts b/src/panels/config/integrations/integration-panels/zha/zha-device-endpoint-data-table.ts index 9537ed3572..3644b9d497 100644 --- a/src/panels/config/integrations/integration-panels/zha/zha-device-endpoint-data-table.ts +++ b/src/panels/config/integrations/integration-panels/zha/zha-device-endpoint-data-table.ts @@ -15,7 +15,6 @@ import type { HaDataTable, DataTableRowData, } from "../../../../../components/data-table/ha-data-table"; -import "../../../../../components/entity/ha-state-icon"; import type { ZHADeviceEndpoint, ZHAEntityReference, From 9b22b1e499d52d226898c8314f196a8901655eeb Mon Sep 17 00:00:00 2001 From: dklemm Date: Fri, 30 Oct 2020 13:47:09 +0000 Subject: [PATCH 055/125] Resolve #7533 Broken styling on stack card titles (#7534) --- src/components/ha-push-notifications-toggle.js | 8 ++++++-- src/panels/lovelace/cards/hui-stack-card.ts | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/components/ha-push-notifications-toggle.js b/src/components/ha-push-notifications-toggle.js index d50e1a16af..b8bead07fc 100644 --- a/src/components/ha-push-notifications-toggle.js +++ b/src/components/ha-push-notifications-toggle.js @@ -90,8 +90,12 @@ class HaPushNotificationsToggle extends EventsMixin(PolymerElement) { } const name = await showPromptDialog(this, { - title: this.hass.localize("ui.panel.profile.push_notifications.add_device_prompt.title"), - inputLabel: this.hass.localize("ui.panel.profile.push_notifications.add_device_prompt.input_label"), + title: this.hass.localize( + "ui.panel.profile.push_notifications.add_device_prompt.title" + ), + inputLabel: this.hass.localize( + "ui.panel.profile.push_notifications.add_device_prompt.input_label" + ), }); if (name == null) { this.pushChecked = false; diff --git a/src/panels/lovelace/cards/hui-stack-card.ts b/src/panels/lovelace/cards/hui-stack-card.ts index 728cd51075..aaa73530b4 100644 --- a/src/panels/lovelace/cards/hui-stack-card.ts +++ b/src/panels/lovelace/cards/hui-stack-card.ts @@ -89,6 +89,9 @@ export abstract class HuiStackCard color: var(--ha-card-header-color, --primary-text-color); font-family: var(--ha-card-header-font-family, inherit); font-size: var(--ha-card-header-font-size, 24px); + font-weight: normal; + margin-block-start: 0px; + margin-block-end: 0px; letter-spacing: -0.012em; line-height: 32px; display: block; From 01fe5dd2f7c5f845cf6132b457ac07bb3df14a80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Lov=C3=A9n?= Date: Fri, 30 Oct 2020 14:48:39 +0100 Subject: [PATCH 056/125] Make sure rebuilt cards show up in panel views (#7535) --- src/panels/lovelace/views/hui-panel-view.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/panels/lovelace/views/hui-panel-view.ts b/src/panels/lovelace/views/hui-panel-view.ts index 2b9c5ae1e0..e4d34a9831 100644 --- a/src/panels/lovelace/views/hui-panel-view.ts +++ b/src/panels/lovelace/views/hui-panel-view.ts @@ -52,6 +52,10 @@ export class PanelView extends LitElement implements LovelaceViewElement { ); } + if (changedProperties.has("cards")) { + this._createCard(); + } + if (!changedProperties.has("lovelace")) { return; } From facb3266c6c84d0da7a2d4df9052acdf8754af9d Mon Sep 17 00:00:00 2001 From: Zack Barett Date: Fri, 30 Oct 2020 08:55:30 -0500 Subject: [PATCH 057/125] Media Browser: Fix error handling (#7538) --- .../media-player/ha-media-player-browse.ts | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/components/media-player/ha-media-player-browse.ts b/src/components/media-player/ha-media-player-browse.ts index 8c17267fc4..93a5ca25e4 100644 --- a/src/components/media-player/ha-media-player-browse.ts +++ b/src/components/media-player/ha-media-player-browse.ts @@ -540,17 +540,20 @@ export class HaMediaPlayerBrowse extends LitElement { mediaContentType?: string ): Promise { this._loading = true; - const itemData = - this.entityId !== BROWSER_PLAYER - ? await browseMediaPlayer( - this.hass, - this.entityId, - mediaContentId, - mediaContentType - ) - : await browseLocalMediaPlayer(this.hass, mediaContentId); - - this._loading = false; + let itemData: any; + try { + itemData = + this.entityId !== BROWSER_PLAYER + ? await browseMediaPlayer( + this.hass, + this.entityId, + mediaContentId, + mediaContentType + ) + : await browseLocalMediaPlayer(this.hass, mediaContentId); + } finally { + this._loading = false; + } return itemData; } From 3dedbc545718b909c2765cb2e852b195a228e04e Mon Sep 17 00:00:00 2001 From: Rob McCann Date: Fri, 30 Oct 2020 14:36:52 +0000 Subject: [PATCH 058/125] Remove minification from translations to reduce build time by 1.5mins (#7552) --- build-scripts/gulp/translations.js | 2 - package.json | 1 - yarn.lock | 71 +----------------------------- 3 files changed, 1 insertion(+), 73 deletions(-) diff --git a/build-scripts/gulp/translations.js b/build-scripts/gulp/translations.js index 19d329a7e0..e357d38edf 100755 --- a/build-scripts/gulp/translations.js +++ b/build-scripts/gulp/translations.js @@ -7,7 +7,6 @@ const gulp = require("gulp"); const fs = require("fs"); const foreach = require("gulp-foreach"); const merge = require("gulp-merge-json"); -const minify = require("gulp-jsonminify"); const rename = require("gulp-rename"); const transform = require("gulp-json-transform"); const { mapFiles } = require("../util"); @@ -301,7 +300,6 @@ gulp.task("build-flattened-translations", function () { return flatten(data); }) ) - .pipe(minify()) .pipe( rename((filePath) => { if (filePath.dirname === "core") { diff --git a/package.json b/package.json index 483b6ea952..7fc0f96c56 100644 --- a/package.json +++ b/package.json @@ -177,7 +177,6 @@ "gulp": "^4.0.0", "gulp-foreach": "^0.1.0", "gulp-json-transform": "^0.4.6", - "gulp-jsonminify": "^1.1.0", "gulp-merge-json": "^1.3.1", "gulp-rename": "^2.0.0", "gulp-zopfli-green": "^3.0.1", diff --git a/yarn.lock b/yarn.lock index 7133eda793..128ab6a8a3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3921,13 +3921,6 @@ ansi-colors@^4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-cyan@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" - integrity sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM= - dependencies: - ansi-wrap "0.1.0" - ansi-escapes@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -3952,13 +3945,6 @@ ansi-html@0.0.7: resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= -ansi-red@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" - integrity sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw= - dependencies: - ansi-wrap "0.1.0" - ansi-regex@^0.2.0, ansi-regex@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9" @@ -4102,14 +4088,6 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -arr-diff@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" - integrity sha1-aHwydYFjWI/vfeezb6vklesaOZo= - dependencies: - arr-flatten "^1.0.1" - array-slice "^0.2.3" - arr-diff@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" @@ -4141,11 +4119,6 @@ arr-map@^2.0.0, arr-map@^2.0.2: dependencies: make-iterator "^1.0.0" -arr-union@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-2.1.0.tgz#20f9eab5ec70f5c7d215b1077b1c39161d292c7d" - integrity sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0= - arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" @@ -4224,11 +4197,6 @@ array-reduce@~0.0.0: resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= -array-slice@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" - integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= - array-slice@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" @@ -6563,13 +6531,6 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" -extend-shallow@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" - integrity sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE= - dependencies: - kind-of "^1.1.0" - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -7383,15 +7344,6 @@ gulp-json-transform@^0.4.6: through2 "^2.0.3" vinyl "^2.1.0" -gulp-jsonminify@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/gulp-jsonminify/-/gulp-jsonminify-1.1.0.tgz#3b3c787f252ab42bbd7f355c7629665357e88d1a" - integrity sha512-nkqH5aRajfCGD8HB2yN+QSEQG0SMEpS7UyOp3HS966Og4DqUX0y8sPF5SU8uSsGLLLXbnHwyHbDkxauYO/pSpQ== - dependencies: - jsonminify "~0.2.3" - plugin-error "^0.1.2" - through2 "~0.6.5" - gulp-merge-json@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/gulp-merge-json/-/gulp-merge-json-1.3.1.tgz#38a8f69c18598085a4b33a08f4074406451e9f2a" @@ -8448,11 +8400,6 @@ jsonify@~0.0.0: resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= -jsonminify@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/jsonminify/-/jsonminify-0.2.3.tgz#4b842c8a3fe5d6aa48b2f8f95a1cf9a80c019d8e" - integrity sha1-S4Qsij/l1qpIsvj5Whz5qAwBnY4= - just-debounce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" @@ -8468,11 +8415,6 @@ killable@^1.0.1: resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== -kind-of@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" - integrity sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ= - kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -10347,17 +10289,6 @@ please-upgrade-node@^3.0.2, please-upgrade-node@^3.1.1: dependencies: semver-compare "^1.0.0" -plugin-error@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-0.1.2.tgz#3b9bb3335ccf00f425e07437e19276967da47ace" - integrity sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4= - dependencies: - ansi-cyan "^0.1.1" - ansi-red "^0.1.1" - arr-diff "^1.0.1" - arr-union "^2.0.1" - extend-shallow "^1.1.2" - plugin-error@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" @@ -12190,7 +12121,7 @@ through2@^3.0.0: dependencies: readable-stream "2 || 3" -through2@~0.6.3, through2@~0.6.5: +through2@~0.6.3: version "0.6.5" resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" integrity sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg= From 1d9779d47cbdae10170d8296a40c87e326e1bb48 Mon Sep 17 00:00:00 2001 From: Zack Barett Date: Fri, 30 Oct 2020 11:28:19 -0500 Subject: [PATCH 059/125] Calendar Panel: Persist Calendars in Local Storage (#7540) --- src/panels/calendar/ha-panel-calendar.ts | 61 +++++++++++++----------- src/types.ts | 5 -- 2 files changed, 34 insertions(+), 32 deletions(-) diff --git a/src/panels/calendar/ha-panel-calendar.ts b/src/panels/calendar/ha-panel-calendar.ts index a81f8622fb..6c26de4580 100644 --- a/src/panels/calendar/ha-panel-calendar.ts +++ b/src/panels/calendar/ha-panel-calendar.ts @@ -14,6 +14,7 @@ import { TemplateResult, } from "lit-element"; import { styleMap } from "lit-html/directives/style-map"; +import { LocalStorage } from "../../common/decorators/local-storage"; import { HASSDomEvent } from "../../common/dom/fire_event"; import "../../components/ha-card"; import "../../components/ha-menu-button"; @@ -25,7 +26,6 @@ import type { CalendarEvent, CalendarViewChanged, HomeAssistant, - SelectedCalendar, } from "../../types"; import "./ha-full-calendar"; @@ -36,20 +36,20 @@ class PanelCalendar extends LitElement { @property({ type: Boolean, reflect: true }) public narrow!: boolean; - @internalProperty() private _calendars: SelectedCalendar[] = []; + @internalProperty() private _calendars: Calendar[] = []; @internalProperty() private _events: CalendarEvent[] = []; + @LocalStorage("deSelectedCalendars", true) + private _deSelectedCalendars: string[] = []; + private _start?: Date; private _end?: Date; protected firstUpdated(changedProps: PropertyValues): void { super.firstUpdated(changedProps); - this._calendars = getCalendars(this.hass).map((calendar) => ({ - selected: true, - calendar, - })); + this._calendars = getCalendars(this.hass); } protected render(): TemplateResult { @@ -75,19 +75,22 @@ class PanelCalendar extends LitElement {
${this._calendars.map( (selCal) => - html`
- - - -
` + html` +
+ + + +
+ ` )}
selCal.selected) - .map((cal) => cal.calendar); + .filter((selCal) => !this._deSelectedCalendars.includes(selCal.entity_id)) + .map((cal) => cal); } private async _fetchEvents( @@ -121,24 +124,28 @@ class PanelCalendar extends LitElement { private async _handleToggle(ev): Promise { const results = this._calendars.map(async (cal) => { - if (ev.target.value !== cal.calendar.entity_id) { + if (ev.target.value !== cal.entity_id) { return cal; } const checked = ev.target.checked; if (checked) { - const events = await this._fetchEvents(this._start!, this._end!, [ - cal.calendar, - ]); + const events = await this._fetchEvents(this._start!, this._end!, [cal]); this._events = [...this._events, ...events]; + this._deSelectedCalendars = this._deSelectedCalendars.filter( + (deCal) => deCal !== cal.entity_id + ); } else { this._events = this._events.filter( - (event) => event.calendar !== cal.calendar.entity_id + (event) => event.calendar !== cal.entity_id ); + this._deSelectedCalendars = [ + ...this._deSelectedCalendars, + cal.entity_id, + ]; } - cal.selected = checked; return cal; }); diff --git a/src/types.ts b/src/types.ts index 5f302d4895..08f3b4625f 100644 --- a/src/types.ts +++ b/src/types.ts @@ -127,11 +127,6 @@ export interface Calendar { backgroundColor?: string; } -export interface SelectedCalendar { - selected: boolean; - calendar: Calendar; -} - export interface CalendarEvent { summary: string; title: string; From 14db37459f18be99f70a371d55af2f5149c92133 Mon Sep 17 00:00:00 2001 From: Josh McCarty Date: Fri, 30 Oct 2020 14:58:52 -0700 Subject: [PATCH 060/125] Formats number state with selected language in compute_state_display (#7516) --- src/common/entity/compute_state_display.ts | 5 ++++- src/common/string/number-format.ts | 22 +++++++++++++++++++ .../common/entity/compute_state_display.ts | 14 ++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 src/common/string/number-format.ts diff --git a/src/common/entity/compute_state_display.ts b/src/common/entity/compute_state_display.ts index 2a437901ea..d588cd1688 100644 --- a/src/common/entity/compute_state_display.ts +++ b/src/common/entity/compute_state_display.ts @@ -5,6 +5,7 @@ import { formatDateTime } from "../datetime/format_date_time"; import { formatTime } from "../datetime/format_time"; import { LocalizeFunc } from "../translations/localize"; import { computeStateDomain } from "./compute_state_domain"; +import { numberFormat } from "../string/number-format"; export const computeStateDisplay = ( localize: LocalizeFunc, @@ -19,7 +20,9 @@ export const computeStateDisplay = ( } if (stateObj.attributes.unit_of_measurement) { - return `${compareState} ${stateObj.attributes.unit_of_measurement}`; + return `${numberFormat(compareState, language)} ${ + stateObj.attributes.unit_of_measurement + }`; } const domain = computeStateDomain(stateObj); diff --git a/src/common/string/number-format.ts b/src/common/string/number-format.ts new file mode 100644 index 0000000000..39d20e47a5 --- /dev/null +++ b/src/common/string/number-format.ts @@ -0,0 +1,22 @@ +/** + * Formats a number based on the specified language with thousands separator(s) and decimal character for better legibility. + * + * @param num The number to format + * @param language The language to use when formatting the number + */ +export const numberFormat = ( + num: string | number, + language: string +): string => { + // Polyfill for Number.isNaN, which is more reliable that the global isNaN() + Number.isNaN = + Number.isNaN || + function isNaN(input) { + return typeof input === "number" && isNaN(input); + }; + + if (!Number.isNaN(Number(num)) && Intl) { + return new Intl.NumberFormat(language).format(Number(num)); + } + return num.toString(); +}; diff --git a/test-mocha/common/entity/compute_state_display.ts b/test-mocha/common/entity/compute_state_display.ts index e8663c5a12..b4822774f4 100644 --- a/test-mocha/common/entity/compute_state_display.ts +++ b/test-mocha/common/entity/compute_state_display.ts @@ -64,6 +64,20 @@ describe("computeStateDisplay", () => { assert.strictEqual(computeStateDisplay(localize, stateObj, "en"), "123 m"); }); + it("Localizes and formats numeric sensor value with units", () => { + const stateObj: any = { + entity_id: "sensor.test", + state: "1234.5", + attributes: { + unit_of_measurement: "m", + }, + }; + assert.strictEqual( + computeStateDisplay(localize, stateObj, "en"), + "1,234.5 m" + ); + }); + it("Localizes unknown sensor value with units", () => { const altLocalize = (message, ...args) => { if (message === "state.sensor.unknown") { From e555b24f50d636477f8ca84b24394475b27d7525 Mon Sep 17 00:00:00 2001 From: Zack Barett Date: Fri, 30 Oct 2020 17:03:02 -0500 Subject: [PATCH 061/125] Calendar: Adds an Update Size and Makes list view start today and adds in local for first day of week (#7541) --- src/panels/calendar/ha-full-calendar.ts | 49 +++++++++++++++++-- .../lovelace/cards/hui-calendar-card.ts | 10 +++- src/types.ts | 2 +- 3 files changed, 55 insertions(+), 6 deletions(-) diff --git a/src/panels/calendar/ha-full-calendar.ts b/src/panels/calendar/ha-full-calendar.ts index 0a4a1039cd..019642fcbc 100644 --- a/src/panels/calendar/ha-full-calendar.ts +++ b/src/panels/calendar/ha-full-calendar.ts @@ -2,6 +2,7 @@ import fullcalendarStyle from "@fullcalendar/common/main.css"; import type { CalendarOptions } from "@fullcalendar/core"; import { Calendar } from "@fullcalendar/core"; +import allLocales from "@fullcalendar/core/locales-all"; import dayGridPlugin from "@fullcalendar/daygrid"; // @ts-ignore import daygridStyle from "@fullcalendar/daygrid/main.css"; @@ -44,6 +45,15 @@ declare global { } } +const getListWeekRange = (currentDate: Date): { start: Date; end: Date } => { + const startDate = new Date(currentDate.valueOf()); + const endDate = new Date(currentDate.valueOf()); + + endDate.setDate(endDate.getDate() + 7); + + return { start: startDate, end: endDate }; +}; + const defaultFullCalendarConfig: CalendarOptions = { headerToolbar: false, plugins: [dayGridPlugin, listPlugin, interactionPlugin], @@ -51,16 +61,22 @@ const defaultFullCalendarConfig: CalendarOptions = { dayMaxEventRows: true, height: "parent", eventDisplay: "list-item", + locales: allLocales, + views: { + list: { + visibleRange: getListWeekRange, + }, + }, }; const viewButtons: ToggleButton[] = [ { label: "Month View", value: "dayGridMonth", iconPath: mdiViewModule }, { label: "Week View", value: "dayGridWeek", iconPath: mdiViewWeek }, { label: "Day View", value: "dayGridDay", iconPath: mdiViewDay }, - { label: "List View", value: "listWeek", iconPath: mdiViewAgenda }, + { label: "List View", value: "list", iconPath: mdiViewAgenda }, ]; -class HAFullCalendar extends LitElement { +export class HAFullCalendar extends LitElement { public hass!: HomeAssistant; @property({ type: Boolean, reflect: true }) public narrow = false; @@ -79,6 +95,10 @@ class HAFullCalendar extends LitElement { @internalProperty() private _activeView?: FullCalendarView; + public updateSize(): void { + this.calendar?.updateSize(); + } + protected render(): TemplateResult { const viewToggleButtons = this._viewToggleButtons(this.views); @@ -186,6 +206,12 @@ class HAFullCalendar extends LitElement { this.calendar!.changeView(this._activeView); this._fireViewChanged(); } + + const oldHass = changedProps.get("hass") as HomeAssistant; + + if (oldHass && oldHass.language !== this.hass.language) { + this.calendar.setOption("locale", this.hass.language); + } } protected firstUpdated(): void { @@ -243,7 +269,7 @@ class HAFullCalendar extends LitElement { this._fireViewChanged(); } - private _handleView(ev): void { + private _handleView(ev: CustomEvent): void { this._activeView = ev.detail.value; this.calendar!.changeView(this._activeView!); this._fireViewChanged(); @@ -496,6 +522,23 @@ class HAFullCalendar extends LitElement { :host([narrow]) .fc-dayGridMonth-view .fc-scrollgrid-sync-table { overflow: hidden; } + + .fc-scroller::-webkit-scrollbar { + width: 0.4rem; + height: 0.4rem; + } + + .fc-scroller::-webkit-scrollbar-thumb { + -webkit-border-radius: 4px; + border-radius: 4px; + background: var(--scrollbar-thumb-color); + } + + .fc-scroller { + overflow-y: auto; + scrollbar-color: var(--scrollbar-thumb-color) transparent; + scrollbar-width: thin; + } `, ]; } diff --git a/src/panels/lovelace/cards/hui-calendar-card.ts b/src/panels/lovelace/cards/hui-calendar-card.ts index 9e373f2f19..1e4fbd44d9 100644 --- a/src/panels/lovelace/cards/hui-calendar-card.ts +++ b/src/panels/lovelace/cards/hui-calendar-card.ts @@ -7,6 +7,7 @@ import { LitElement, property, PropertyValues, + query, TemplateResult, } from "lit-element"; import { HA_COLOR_PALETTE } from "../../../common/const"; @@ -24,6 +25,7 @@ import type { HomeAssistant, } from "../../../types"; import "../../calendar/ha-full-calendar"; +import type { HAFullCalendar } from "../../calendar/ha-full-calendar"; import { findEntities } from "../common/find-entites"; import { installResizeObserver } from "../common/install-resize-observer"; import "../components/hui-warning"; @@ -71,6 +73,8 @@ export class HuiCalendarCard extends LitElement implements LovelaceCard { @internalProperty() private _veryNarrow = false; + @query("ha-full-calendar", true) private _calendar?: HAFullCalendar; + private _startDate?: Date; private _endDate?: Date; @@ -121,8 +125,8 @@ export class HuiCalendarCard extends LitElement implements LovelaceCard { } const views: FullCalendarView[] = this._veryNarrow - ? ["listWeek"] - : ["listWeek", "dayGridMonth", "dayGridDay"]; + ? ["list"] + : ["list", "dayGridMonth", "dayGridDay"]; return html` @@ -186,6 +190,8 @@ export class HuiCalendarCard extends LitElement implements LovelaceCard { } this._narrow = card.offsetWidth < 870; this._veryNarrow = card.offsetWidth < 350; + + this._calendar?.updateSize(); } private async _attachObserver(): Promise { diff --git a/src/types.ts b/src/types.ts index 08f3b4625f..8911fac720 100644 --- a/src/types.ts +++ b/src/types.ts @@ -148,7 +148,7 @@ export type FullCalendarView = | "dayGridMonth" | "dayGridWeek" | "dayGridDay" - | "listWeek"; + | "list"; export interface ToggleButton { label: string; From 5bfd25c8c6360904ba46491d1b8e6afbf6e42024 Mon Sep 17 00:00:00 2001 From: Ian Richardson Date: Fri, 30 Oct 2020 17:04:13 -0500 Subject: [PATCH 062/125] Convert ha-climate-state to TypeScript/LitElement (#7544) Co-authored-by: Zack Barett --- src/components/ha-climate-state.js | 131 --------------------------- src/components/ha-climate-state.ts | 139 +++++++++++++++++++++++++++++ 2 files changed, 139 insertions(+), 131 deletions(-) delete mode 100644 src/components/ha-climate-state.js create mode 100644 src/components/ha-climate-state.ts diff --git a/src/components/ha-climate-state.js b/src/components/ha-climate-state.js deleted file mode 100644 index eb961cce4c..0000000000 --- a/src/components/ha-climate-state.js +++ /dev/null @@ -1,131 +0,0 @@ -import { html } from "@polymer/polymer/lib/utils/html-tag"; -/* eslint-plugin-disable lit */ -import { PolymerElement } from "@polymer/polymer/polymer-element"; -import { CLIMATE_PRESET_NONE } from "../data/climate"; -import LocalizeMixin from "../mixins/localize-mixin"; - -/* - * @appliesMixin LocalizeMixin - */ -class HaClimateState extends LocalizeMixin(PolymerElement) { - static get template() { - return html` - - -
- -
[[computeTarget(hass, stateObj)]]
-
- - - `; - } - - static get properties() { - return { - hass: Object, - stateObj: Object, - currentStatus: { - type: String, - computed: "computeCurrentStatus(hass, stateObj)", - }, - }; - } - - computeCurrentStatus(hass, stateObj) { - if (!hass || !stateObj) return null; - if (stateObj.attributes.current_temperature != null) { - return `${stateObj.attributes.current_temperature} ${hass.config.unit_system.temperature}`; - } - if (stateObj.attributes.current_humidity != null) { - return `${stateObj.attributes.current_humidity} %`; - } - return null; - } - - computeTarget(hass, stateObj) { - if (!hass || !stateObj) return null; - // We're using "!= null" on purpose so that we match both null and undefined. - if ( - stateObj.attributes.target_temp_low != null && - stateObj.attributes.target_temp_high != null - ) { - return `${stateObj.attributes.target_temp_low}-${stateObj.attributes.target_temp_high} ${hass.config.unit_system.temperature}`; - } - if (stateObj.attributes.temperature != null) { - return `${stateObj.attributes.temperature} ${hass.config.unit_system.temperature}`; - } - if ( - stateObj.attributes.target_humidity_low != null && - stateObj.attributes.target_humidity_high != null - ) { - return `${stateObj.attributes.target_humidity_low}-${stateObj.attributes.target_humidity_high}%`; - } - if (stateObj.attributes.humidity != null) { - return `${stateObj.attributes.humidity} %`; - } - - return ""; - } - - _hasKnownState(state) { - return state !== "unknown"; - } - - _localizeState(localize, stateObj) { - const stateString = localize(`component.climate.state._.${stateObj.state}`); - return stateObj.attributes.hvac_action - ? `${localize( - `state_attributes.climate.hvac_action.${stateObj.attributes.hvac_action}` - )} (${stateString})` - : stateString; - } - - _localizePreset(localize, preset) { - return localize(`state_attributes.climate.preset_mode.${preset}`) || preset; - } - - _renderPreset(attributes) { - return ( - attributes.preset_mode && attributes.preset_mode !== CLIMATE_PRESET_NONE - ); - } -} -customElements.define("ha-climate-state", HaClimateState); diff --git a/src/components/ha-climate-state.ts b/src/components/ha-climate-state.ts new file mode 100644 index 0000000000..39ece5ee43 --- /dev/null +++ b/src/components/ha-climate-state.ts @@ -0,0 +1,139 @@ +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import { HassEntity } from "home-assistant-js-websocket"; + +import { CLIMATE_PRESET_NONE } from "../data/climate"; +import type { HomeAssistant } from "../types"; + +@customElement("ha-climate-state") +class HaClimateState extends LitElement { + @property({ attribute: false }) public hass!: HomeAssistant; + + @property({ attribute: false }) public stateObj!: HassEntity; + + protected render(): TemplateResult { + const currentStatus = this._computeCurrentStatus(); + + return html`
+ ${this.stateObj.state !== "unknown" + ? html` + ${this._localizeState()} + ${this.stateObj.attributes.preset_mode && + this.stateObj.attributes.preset_mode !== CLIMATE_PRESET_NONE + ? html`- + ${this.hass.localize( + `state_attributes.climate.preset_mode.${this.stateObj.attributes.preset_mode}` + ) || this.stateObj.attributes.preset_mode}` + : ""} + ` + : ""} +
${this._computeTarget()}
+
+ + ${currentStatus + ? html`
+ ${this.hass.localize("ui.card.climate.currently")}: +
${currentStatus}
+
` + : ""}`; + } + + private _computeCurrentStatus(): string | undefined { + if (!this.hass || !this.stateObj) { + return undefined; + } + + if (this.stateObj.attributes.current_temperature != null) { + return `${this.stateObj.attributes.current_temperature} ${this.hass.config.unit_system.temperature}`; + } + + if (this.stateObj.attributes.current_humidity != null) { + return `${this.stateObj.attributes.current_humidity} %`; + } + + return undefined; + } + + private _computeTarget(): string { + if (!this.hass || !this.stateObj) { + return ""; + } + + if ( + this.stateObj.attributes.target_temp_low != null && + this.stateObj.attributes.target_temp_high != null + ) { + return `${this.stateObj.attributes.target_temp_low}-${this.stateObj.attributes.target_temp_high} ${this.hass.config.unit_system.temperature}`; + } + + if (this.stateObj.attributes.temperature != null) { + return `${this.stateObj.attributes.temperature} ${this.hass.config.unit_system.temperature}`; + } + if ( + this.stateObj.attributes.target_humidity_low != null && + this.stateObj.attributes.target_humidity_high != null + ) { + return `${this.stateObj.attributes.target_humidity_low}-${this.stateObj.attributes.target_humidity_high}%`; + } + + if (this.stateObj.attributes.humidity != null) { + return `${this.stateObj.attributes.humidity} %`; + } + + return ""; + } + + private _localizeState(): string { + const stateString = this.hass.localize( + `component.climate.state._.${this.stateObj.state}` + ); + + return this.stateObj.attributes.hvac_action + ? `${this.hass.localize( + `state_attributes.climate.hvac_action.${this.stateObj.attributes.hvac_action}` + )} (${stateString})` + : stateString; + } + + static get styles(): CSSResult { + return css` + :host { + display: flex; + flex-direction: column; + justify-content: center; + white-space: nowrap; + } + + .target { + color: var(--primary-text-color); + } + + .current { + color: var(--secondary-text-color); + } + + .state-label { + font-weight: bold; + text-transform: capitalize; + } + + .unit { + display: inline-block; + direction: ltr; + } + `; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ha-climate-state": HaClimateState; + } +} From 89e5953e89f192788edebfd83f8c00a87ed19513 Mon Sep 17 00:00:00 2001 From: HomeAssistant Azure Date: Sat, 31 Oct 2020 00:33:15 +0000 Subject: [PATCH 063/125] [ci skip] Translation update --- translations/frontend/ca.json | 5 +- translations/frontend/cs.json | 1 + translations/frontend/es.json | 1 + translations/frontend/et.json | 29 +-- translations/frontend/it.json | 9 +- translations/frontend/ja.json | 20 +- translations/frontend/nb.json | 3 +- translations/frontend/pl.json | 25 +- translations/frontend/ru.json | 1 + translations/frontend/sl.json | 365 ++++++++++++++++++++++------- translations/frontend/uk.json | 43 +++- translations/frontend/zh-Hans.json | 1 + translations/frontend/zh-Hant.json | 3 +- 13 files changed, 380 insertions(+), 126 deletions(-) diff --git a/translations/frontend/ca.json b/translations/frontend/ca.json index dd246f05aa..dd83cc294e 100644 --- a/translations/frontend/ca.json +++ b/translations/frontend/ca.json @@ -798,6 +798,7 @@ "dismiss": "Desestimar el diàleg", "edit": "Edita entitat", "history": "Historial", + "last_changed": "Darrera canvi", "last_updated": "Última actualització", "person": { "create_zone": "Crea una zona a partir de la ubicació actual" @@ -1637,7 +1638,7 @@ "button": "Elimina seleccionada/es", "confirm_partly_text": "Només pots eliminar {removable} de les {selected} entitats seleccionades. Les entitats només es poden eliminar quan la integració ja no les està proporcionant.\nA vegades pot ser que hagis de reiniciar Home Assistant per poder eliminar les entitats d'una antiga integració eliminada. Segur que vols eliminar les entitats?", "confirm_partly_title": "Només es poden eliminar {number} entitats seleccionades.", - "confirm_text": "Les hauries d'eliminar de la configuració Lovelace i de les automatitzacions si contenen aquestes entitats.", + "confirm_text": "Hauries d'eliminar aquestes entitats de les configuracions de Lovelace i de les automatitzacions que les continguin.", "confirm_title": "Vols eliminar {number} entitat/s?" }, "search": "Cerca entitats", @@ -1731,7 +1732,7 @@ "no_devices": "Aquesta integració no té dispositius.", "options": "Opcions", "reload": "Torna a carregar", - "reload_confirm": "La integració s'ha tornar a carregar", + "reload_confirm": "La integració s'ha tornat a carregar", "reload_restart_confirm": "Reinicia Home Assistant per acabar de carregar aquesta integració", "rename": "Canvia el nom", "restart_confirm": "Reinicia Home Assistant per acabar d'eliminar aquesta integració", diff --git a/translations/frontend/cs.json b/translations/frontend/cs.json index ce70af5133..51586e31f7 100644 --- a/translations/frontend/cs.json +++ b/translations/frontend/cs.json @@ -798,6 +798,7 @@ "dismiss": "Zavřít dialog", "edit": "Upravit entitu", "history": "Historie", + "last_changed": "Naposledy změněno", "last_updated": "Poslední aktualizace", "person": { "create_zone": "Vytvořit zónu z aktuálního umístění" diff --git a/translations/frontend/es.json b/translations/frontend/es.json index 3f1d4c7959..a40088b3e6 100644 --- a/translations/frontend/es.json +++ b/translations/frontend/es.json @@ -798,6 +798,7 @@ "dismiss": "Descartar diálogo", "edit": "Editar entidad", "history": "Historial", + "last_changed": "Último cambio", "last_updated": "Última actualización", "person": { "create_zone": "Crear zona a partir de la ubicación actual" diff --git a/translations/frontend/et.json b/translations/frontend/et.json index 10eaefce62..9fcce1c30b 100644 --- a/translations/frontend/et.json +++ b/translations/frontend/et.json @@ -669,28 +669,28 @@ "relative_time": { "duration": { "day": "{count} {count, plural,\n one {päev}\n other {päeva}\n}", - "hour": "{count} {count, plural,\n one {tund}\n other {tunni}\n}", + "hour": "{count} {count, plural,\n one {tund}\n other {tundi}\n}", "minute": "{count} {count, plural,\n one {minut}\n other {minutit}\n}", "second": "{count} {count, plural,\n one {sekund}\n other {sekundit}\n}", "week": "{count} {count, plural,\n one {nädal}\n other {nädalat}\n}" }, "future": "{time} pärast", "future_duration": { - "day": "{count} {count, plural,\n one {päev}\n other {päeva}\n} pärast", - "hour": "{count} {count, plural,\n one {tund}\n other {tunni}\n} pärast", - "minute": "{count} {count, plural,\n one {minut}\n other {minutit}\n} pärast", - "second": "{count} {count, plural,\n one {sekund}\n other {sekundi}\n} pärast", - "week": "{count} {count, plural,\n one {nädal}\n other {nädala}\n} pärast" + "day": "{count} {count, plural,\n one {päeva}\n other {päeva}\n} pärast", + "hour": "{count} {count, plural,\n one {tunni}\n other {tunni}\n} pärast", + "minute": "{count} {count, plural,\n one {minuti}\n other {minuti}\n} pärast", + "second": "{count} {count, plural,\n one {sekundi}\n other {sekundi}\n} pärast", + "week": "{count} {count, plural,\n one {nädala}\n other {nädala}\n} pärast" }, "just_now": "Just praegu", "never": "Iial", "past": "{time} tagasi", "past_duration": { - "day": "{count} {count, plural,\n one {päev}\n other {päeva}\n} eest", - "hour": "{count} {count, plural,\n one {tund}\n other {tunni}\n} eest", - "minute": "{count} {count, plural,\n one {minut}\n other {minuti}\n} eest", - "second": "{count} {count, plural,\n one {sekund}\n other {sekundi}\n} eest", - "week": "{count} {count, plural,\n one {nädal}\n other {nädala}\n} eest" + "day": "{count} {count, plural,\n one {päeva}\n other {päeva}\n} eest", + "hour": "{count} {count, plural,\n one {tunni}\n other {tunni}\n} eest", + "minute": "{count} {count, plural,\n one {minuti}\n other {minuti}\n} eest", + "second": "{count} {count, plural,\n one {sekundi}\n other {sekundi}\n} eest", + "week": "{count} {count, plural,\n one {nädala}\n other {nädala}\n} eest" } }, "service-picker": { @@ -798,6 +798,7 @@ "dismiss": "Loobu dialoogist", "edit": "Muuda olemit", "history": "Ajalugu", + "last_changed": "Viimati muudetud", "last_updated": "Viimati uuendatud", "person": { "create_zone": "Loo tsoon praegusest asukohast" @@ -938,7 +939,7 @@ }, "duration": { "day": "{count} {count, plural,\n one {päev}\n other {päeva}\n}", - "hour": "{count} {count, plural,\n one {tund}\n other {tunni}\n}", + "hour": "{count} {count, plural,\n one {tund}\n other {tundi}\n}", "minute": "{count} {count, plural,\n one {minut}\n other {minutit}\n}", "second": "{count} {count, plural,\n one {sekund}\n other {sekundit}\n}", "week": "{count} {count, plural,\n one {nädal}\n other {nädalat}\n}" @@ -1579,7 +1580,7 @@ "device_not_found": "Seadet ei leitud.", "entities": { "add_entities_lovelace": "Lisa Lovelace'i", - "disabled_entities": "{count} {count, plural,\n one {keelatudolem}\n other {keelatudolemit}\n}", + "disabled_entities": "{count} {count, plural,\n one {keelatud olem}\n other {keelatud olemit}\n}", "entities": "Olemid", "hide_disabled": "Peida keelatud", "none": "Sellel seadmel pole olemeid" @@ -1721,7 +1722,7 @@ "device_unavailable": "seade pole saadaval", "devices": "{count} {count, plural,\n one {seade}\n other {seadet}\n}", "documentation": "Vaata dokumentatsiooni", - "entities": "{count} {count, plural,\n one {olemid}\n other{olemit}\n}", + "entities": "{count} {count, plural,\n one {olem}\n other{olemit}\n}", "entity_unavailable": "olem pole saadaval", "firmware": "Püsivara: {version}", "hub": "Ühendatud", diff --git a/translations/frontend/it.json b/translations/frontend/it.json index 07c2e2260b..02a72f379b 100644 --- a/translations/frontend/it.json +++ b/translations/frontend/it.json @@ -577,7 +577,7 @@ "messages": { "became_unavailable": "non è più disponibile", "changed_to_state": "cambiato in {state}", - "cleared_device_class": "cancellato (nessun {device_class} rilevato)", + "cleared_device_class": "sgombro (nessun {device_class} rilevato)", "detected_device_class": "rilevato {device_class}", "rose": "sorto", "set": "impostato", @@ -798,6 +798,7 @@ "dismiss": "Chiudi finestra di dialogo", "edit": "Modifica entità", "history": "Storico", + "last_changed": "Ultima modifica", "last_updated": "Ultimo aggiornamento", "person": { "create_zone": "Crea zona dalla posizione corrente" @@ -873,7 +874,7 @@ "input_select": "Ricarica input a discesa", "input_text": "Ricarica input testuali", "min_max": "Ricarica le entità min/max", - "mqtt": "Ricarica le entità MQTT", + "mqtt": "Ricarica entità mqtt configurate manualmente", "person": "Ricarica le persone", "ping": "Ricarica le entità del sensore binario Ping", "reload": "Ricarica {domain}", @@ -2155,7 +2156,7 @@ "input_text": "Ricarica input testuali", "introduction": "Alcune parti di Home Assistant possono essere ricaricate senza richiedere un riavvio. Premendo su Ricarica si rimuoverà la loro Configurazione YAML attuale e si caricherà la versione aggiornata.", "min_max": "Ricarica le entità min/max", - "mqtt": "Ricarica le entità MQTT", + "mqtt": "Ricarica entità mqtt configurate manualmente", "person": "Ricarica le persone", "ping": "Ricarica le entità del sensore binario Ping", "reload": "Ricarica {domain}", @@ -3294,7 +3295,7 @@ }, "vibrate": { "description": "Abilitare o disabilitare la vibrazione su questo dispositivo durante il controllo dei dispositivi.", - "header": "Vibrare" + "header": "Vibrazione" } }, "shopping-list": { diff --git a/translations/frontend/ja.json b/translations/frontend/ja.json index 3ab0605d66..6a40ddf9e8 100644 --- a/translations/frontend/ja.json +++ b/translations/frontend/ja.json @@ -391,7 +391,7 @@ "humidifier": { "humidity": "目標湿度", "mode": "モード", - "on_entity": "{名前} オン", + "on_entity": "{name} オン", "target_humidity_entity": "目標湿度" }, "light": { @@ -784,6 +784,7 @@ "dismiss": "ダイアログを閉じる", "edit": "エンティティを編集", "history": "履歴", + "last_changed": "最終変更日", "last_updated": "最終更新", "person": { "create_zone": "現在地からゾーンを作成" @@ -874,6 +875,11 @@ "trend": "トレンドエンティティをリロードします", "universal": "ユニバーサルメディアプレーヤーエンティティをリロードします", "zone": "ゾーンの再読込" + }, + "server_control": { + "perform_action": "{action}サーバー", + "restart": "再起動", + "stop": "停止" } }, "filter_placeholder": "エンティティフィルター" @@ -1984,6 +1990,7 @@ }, "services": { "add_node": "ノードを追加", + "cancel_command": "コマンドのキャンセル", "remove_node": "ノードを削除" } }, @@ -2170,7 +2177,7 @@ }, "tags": { "add_tag": "タグを追加する", - "automation_title": "タグ {名前} がスキャンされます", + "automation_title": "{name}タグのスキャン", "caption": "タグ", "create_automation": "タグを使用したオートメーションの作成", "description": "タグの管理", @@ -3125,7 +3132,7 @@ "core-config": { "button_detect": "検出", "finish": "次", - "intro": "こんにちは {名前}, ホーム アシスタントへようこそ.あなたの家に名前を付けますか?", + "intro": "こんにちは {name}, ホーム アシスタントへようこそ.あなたの家に名前を付けますか?", "intro_location": "どこに住んでいるか知りたいです。 この情報は、他の情報の表示および太陽の位置に関する自動化の設定に役立ちます。 これらの情報がインターネットで外部と共有されることがありません。", "intro_location_detect": "外部サービスに対してワンタイムリクエストを行うことで、この情報を入力することができます。", "location_name": "ホーム アシスタントの名前", @@ -3184,6 +3191,9 @@ "dropdown_label": "ダッシュボード", "header": "ダッシュボード" }, + "enable_shortcuts": { + "header": "キーボード ショートカット" + }, "force_narrow": { "description": "これにより、モバイルエクスペリエンスと同様に、サイドバーがデフォルトで非表示になります。", "header": "サイドバーを常に非表示にする" @@ -3228,6 +3238,10 @@ "header": "多要素認証モジュール" }, "push_notifications": { + "add_device_prompt": { + "input_label": "デバイス名", + "title": "このデバイスは何を呼び出す必要がありますか?" + }, "description": "このデバイスに通知を送信します。", "error_load_platform": "notify.html5を設定", "error_use_https": "Frontend で SSL を有効になっている必要があります。", diff --git a/translations/frontend/nb.json b/translations/frontend/nb.json index 5ca5853f6f..29d01d8cf5 100644 --- a/translations/frontend/nb.json +++ b/translations/frontend/nb.json @@ -798,6 +798,7 @@ "dismiss": "Avvis dialogboksen", "edit": "Redigér entitet", "history": "Historie", + "last_changed": "Sist endret", "last_updated": "Sist oppdatert", "person": { "create_zone": "Opprett sone fra gjeldende plassering" @@ -890,7 +891,7 @@ "zone": "Last inn soner på nytt" }, "server_control": { - "perform_action": "{action} Server", + "perform_action": "{action} server", "restart": "Omstart", "stop": "Stopp" } diff --git a/translations/frontend/pl.json b/translations/frontend/pl.json index 6a0c3bc390..e27851505a 100644 --- a/translations/frontend/pl.json +++ b/translations/frontend/pl.json @@ -576,28 +576,28 @@ "entries_not_found": "Nie znaleziono wpisów w dzienniku.", "messages": { "became_unavailable": "encja stała się niedostępna", - "changed_to_state": "stan encji zmienił się na {state}", - "cleared_device_class": "encja przestała wykrywać", - "detected_device_class": "encja wykryła", + "changed_to_state": "nastąpiła zmiana stanu na {state}", + "cleared_device_class": "brak", + "detected_device_class": "wykryto", "rose": "wzeszło", "set": "zaszło", - "turned_off": "encja została wyłączona", - "turned_on": "encja została włączona", - "was_at_home": "stan encji zmienił się na \"w domu\"", - "was_at_state": "stan encji zmienił się na {state}", - "was_away": "stan encji zmienił się na \"poza domem\"", + "turned_off": "nastąpiło wyłączenie", + "turned_on": "nastąpiło włączenie", + "was_at_home": "nastąpiła zmiana stanu na \"w domu\"", + "was_at_state": "nastąpiła zmiana stanu na {state}", + "was_away": "nastąpiła zmiana stanu na \"poza domem\"", "was_closed": "nastąpiło zamknięcie", "was_connected": "nastąpiło podłączenie", "was_disconnected": "nastąpiło odłączenie", "was_locked": "nastąpiło zamknięcie", - "was_low": "stan encji zmienił się na niski", - "was_normal": "stan encji zmienił się na normalny", + "was_low": "nastąpiła zmiana stanu na niski", + "was_normal": "nastąpiła zmiana stanu na normalny", "was_opened": "nastąpiło otwarcie", "was_plugged_in": "nastąpiło podłączenie", - "was_safe": "encja przestała wykrywać zagrożenie", + "was_safe": "brak zagrożenia", "was_unlocked": "nastąpiło otwarcie", "was_unplugged": "nastąpiło odłączenie", - "was_unsafe": "encja wykryła zagrożenie" + "was_unsafe": "wykryto zagrożenie" } }, "media-browser": { @@ -798,6 +798,7 @@ "dismiss": "Zamknij okno dialogowe", "edit": "Edytuj encję", "history": "Historia", + "last_changed": "Ostatnia zmiana", "last_updated": "Ostatnio zaktualizowano", "person": { "create_zone": "Utwórz strefę z bieżącej lokalizacji" diff --git a/translations/frontend/ru.json b/translations/frontend/ru.json index 4f322dd9e5..29b99fc5e9 100644 --- a/translations/frontend/ru.json +++ b/translations/frontend/ru.json @@ -798,6 +798,7 @@ "dismiss": "Закрыть диалог", "edit": "Изменить объект", "history": "История", + "last_changed": "Последнее изменение", "last_updated": "Последнее обновление", "person": { "create_zone": "Создать зону из текущего местоположения" diff --git a/translations/frontend/sl.json b/translations/frontend/sl.json index acac1d917f..e1f2ffde41 100644 --- a/translations/frontend/sl.json +++ b/translations/frontend/sl.json @@ -13,7 +13,7 @@ }, "panel": { "calendar": "Koledar", - "config": "Konfiguracija", + "config": "Nastavitve", "developer_tools": "Orodja za razvijalce", "history": "Zgodovina", "logbook": "Dnevnik", @@ -359,7 +359,7 @@ }, "automation": { "last_triggered": "Nazadnje sprožen", - "trigger": "Izvedi" + "trigger": "Zaženi" }, "camera": { "not_available": "Slika ni na voljo" @@ -419,9 +419,16 @@ "unlock": "Odkleni" }, "media_player": { + "browse_media": "Brskaj po vsebini", + "media_next_track": "Naslednji", + "media_play": "Predvajaj", + "media_play_pause": "Predvajanje / premor", + "media_previous_track": "Prejšnji", "sound_mode": "Zvočni način", "source": "Vir", - "text_to_speak": "Besedilo v govor" + "text_to_speak": "Besedilo v govor", + "turn_off": "Izklopi", + "turn_on": "Vklopi" }, "persistent_notification": { "dismiss": "Opusti" @@ -432,7 +439,7 @@ "script": { "cancel": "Prekliči", "cancel_multiple": "Prekliči {number}", - "execute": "Izvedi" + "execute": "Zaženi" }, "service": { "run": "Poženi" @@ -554,6 +561,54 @@ "loading_history": "Nalagam zgodovino stanj...", "no_history_found": "Ni najdene zgodovine stanj." }, + "logbook": { + "by": "od", + "by_service": "od storitve", + "entries_not_found": "Ni bilo najdenih vnosov v dnevnik.", + "messages": { + "became_unavailable": "postal nedosegljiv", + "changed_to_state": "je spremenil stanje v {state}", + "cleared_device_class": "počiščeno (no {device_class} detected)", + "detected_device_class": "zaznan {device_class}", + "rose": "zrastel", + "set": "nastavljen", + "turned_off": "ugasnjen", + "turned_on": "vključen", + "was_at_home": "je bil/a doma", + "was_away": "je bil odsoten", + "was_closed": "je bil zaprt", + "was_connected": "je bil povezan", + "was_disconnected": "je bil odklopljen", + "was_locked": "je bil zaklenjen", + "was_low": "je bila nizek", + "was_normal": "je bil normalen", + "was_opened": "je bil odprt", + "was_plugged_in": "je bil priključen", + "was_safe": "je bil varen/a", + "was_unlocked": "je bil odklenjen", + "was_unplugged": "je bil izključen", + "was_unsafe": "je bil ogrožen/a" + } + }, + "media-browser": { + "choose-source": "Izberite vir", + "content-type": { + "album": "Album", + "artist": "Ustvarjalec", + "library": "Knjižnica", + "playlist": "Seznam predvajanja", + "server": "Strežnik" + }, + "no_items": "Ni elementov", + "pick": "Izberi", + "pick-media": "Izberi vsebino", + "play": "Predvajaj", + "play-media": "Predvajaj vsebino" + }, + "picture-upload": { + "label": "Slika", + "unsupported_format": "Nepodprta oblika, izberite sliko JPEG, PNG ali GIF." + }, "related-items": { "area": "Območje", "automation": "Del naslednjih avtomatizacij", @@ -574,11 +629,17 @@ "week": "{count} {count, plural,\none {Teden}\nother {Tednov}\n}" }, "future": "Čez {time}", + "just_now": "Pravkar", "never": "Nikoli", "past": "Pred {time}" }, "service-picker": { "service": "Storitev" + }, + "user-picker": { + "add_user": "Dodaj uporabnika", + "no_user": "Brez uporabnika", + "remove_user": "Odstrani uporabnika" } }, "dialogs": { @@ -589,6 +650,7 @@ "update": "Posodobite" }, "domain_toggler": { + "reset_entities": "Ponastavi entitete", "title": "Preklopi domene" }, "entity_registry": { @@ -601,14 +663,14 @@ "enabled_description": "Onemogočeni subjekti ne bodo dodani v Home Assistant-a.", "enabled_label": "Omogoči entiteto", "entity_id": "ID subjekta", - "icon": "Preglasitev ikone", + "icon": "Ikona", "icon_error": "Ikone morajo biti v obliki \"predpona: imeIkone\", na primer \"MDI: Home\"", - "name": "Preglasitev imena", + "name": "Ime", "note": "Opomba: to morda še ne deluje z vsemi integracijami.", "unavailable": "Ta entiteta trenutno ni na voljo.", "update": "Posodobi" }, - "no_unique_id": "Ta entiteta nima edinstvenega ID-ja, zato njenih nastavitev ni mogoče upravljati iz uporabniškega vmesnika.", + "no_unique_id": "Ta entiteta nima enoličnega ID-ja, zato njenih nastavitev ni mogoče upravljati iz uporabniškega vmesnika. Za več podrobnosti glejte {faq_link} .", "related": "Povezano", "settings": "Nastavitve" }, @@ -619,6 +681,13 @@ "ok": "OK" }, "helper_settings": { + "counter": { + "initial": "Začetna vrednost", + "maximum": "Najvišja vrednost", + "minimum": "Najnižja vrednost", + "restore": "Obnovi zadnjo znano vrednost ob naslednjem zagonu Home Assistant", + "step": "Velikost koraka" + }, "generic": { "icon": "Ikona", "name": "Ime" @@ -654,11 +723,22 @@ }, "platform_not_loaded": "Integracija {platform} ni naložena. Prosimo, dodajte ga v svojo konfiguracijo tako, da dodate 'default_config: 'ali' ' {platform} :' '.", "required_error_msg": "To polje je obvezno", + "timer": { + "duration": "Trajanje" + }, "yaml_not_editable": "Nastavitev te entitete ni mogoče urejati iz uporabniškega vmesnika. Od tam se lahko konfigurirajo samo entitete, nastavljene iz uporabniškega vmesnika." }, + "image_cropper": { + "crop": "Izreži" + }, "more_info_control": { + "controls": "Kontrolniki", + "details": "Podrobnosti", "dismiss": "Opusti pogovorno okno", "edit": "Uredi entiteto", + "history": "Zgodovina", + "last_changed": "Zadnja sprememba", + "last_updated": "Zadnja posodobitev", "person": { "create_zone": "Ustvari območje iz trenutne lokacije" }, @@ -714,6 +794,29 @@ "description": "Možnosti so uspešno shranjene." } }, + "quick-bar": { + "commands": { + "reload": { + "automation": "Ponovno naloži avtomatizacije", + "homekit": "Znova naložite HomeKit", + "mqtt": "Ponovno naloži ", + "person": "Ponovno naloži osebe", + "reload": "Ponovno naloži {domain}", + "rpi_gpio": "Ponovno naloži Raspberry Pi GPIO entitete", + "scene": "Ponovno naloži scene", + "script": "Ponovno naloži skripte", + "smtp": "Ponovno naloži smtp strežnike za obvestila.", + "telegram": "Ponovno naloži telegram strežnike za obvestila.", + "zone": "Ponovno naloži območja" + }, + "server_control": { + "perform_action": "{action} strežnik", + "restart": "Ponovno zaženi", + "stop": "Zaustavi" + } + }, + "filter_placeholder": "Filter entitet" + }, "voice_command": { "did_not_hear": "Home Assistant ni slišal ničesar", "error": "Ups, prišlo je do napake", @@ -773,6 +876,7 @@ }, "notification_toast": { "connection_lost": "Povezava prekinjena. Vnovično vzpostavljanje povezave...", + "dismiss": "Opusti", "service_call_failed": "Storitve ni bilo mogoče poklicati {service}.", "started": "Home Assistant se je zagnal!", "starting": "Home Assistant se zaganja, vse ne bo na voljo, dokler se zagon ne konča.", @@ -798,7 +902,7 @@ "confirmation_text": "Vse naprave na tem območju ne bodo dodeljene.", "confirmation_title": "Ali ste prepričani, da želite izbrisati to območje?" }, - "description": "Pregled vseh območij v vašem domu.", + "description": "Upravljanje območij v vašem domu", "editor": { "area_id": "ID območja", "create": "Ustvari", @@ -820,7 +924,7 @@ }, "automation": { "caption": "Avtomatizacije", - "description": "Ustvarite in uredite avtomatizacije", + "description": "Upravljanje avtomatizacij", "editor": { "actions": { "add": "Dodaj akcijo", @@ -828,8 +932,8 @@ "delete_confirm": "Ali ste prepričani, da želite to izbrisati?", "duplicate": "Podvoji", "header": "Akcije", - "introduction": "Akcije so, kaj bo storil Home Assistant, ko se sproži avtomatizacija. \n\n [Več o dejavnostih.] (Https://home-assistant.io/docs/automation/action/)", - "learn_more": "Več o akcijah", + "introduction": "Dejanja so tisto, kar bo Home Assistant izvedel, ko se sproži avtomatizacija.", + "learn_more": "Preberite več o dejanjih", "name": "Akcija", "type_select": "Vrsta ukrepa", "type": { @@ -886,13 +990,16 @@ "label": "Kliči storitev", "service_data": "Podatki storitve" }, + "wait_for_trigger": { + "label": "Počakaj na sprožilec" + }, "wait_template": { "label": "počakajte", "timeout": "Časovna omejitev (neobvezno)", "wait_template": "Čakalna predloga" } }, - "unsupported_action": "Nepodprta akcija: {action}" + "unsupported_action": "Ni podpore za UI za dejanje: {action}" }, "alias": "Ime", "conditions": { @@ -902,7 +1009,7 @@ "duplicate": "Podvoji", "header": "Pogoji", "introduction": "Pogoji so izbirni in bodo preprečili nadaljnjo izvedbo, razen če so izpolnjeni vsi pogoji.", - "learn_more": "Več o pogojih", + "learn_more": "Preberite več o pogojih", "name": "Stanje", "type_select": "Vrsta pogoja", "type": { @@ -950,7 +1057,16 @@ "time": { "after": "Po", "before": "Pred", - "label": "Čas" + "label": "Čas", + "weekdays": { + "fri": "petek", + "mon": "ponedeljek", + "sat": "sobota", + "sun": "nedelja", + "thu": "četrtek", + "tue": "torek", + "wed": "sreda" + } }, "zone": { "entity": "Entitete z lokacijo", @@ -958,15 +1074,16 @@ "zone": "Območje" } }, - "unsupported_condition": "Nepodprti pogoj: {condition}" + "unsupported_condition": "Brez podpore za UI za pogoj: {condition}" }, + "copy_to_clipboard": "Kopiraj v odložišče", "default_name": "Nova avtomatizacija", "description": { "label": "Opis", "placeholder": "Izbirni opis" }, - "edit_ui": "Uredi z uporabniškim vmesnikom", - "edit_yaml": "Uredi z YAML-om", + "edit_ui": "Uredi v uporabniškem vmesniku", + "edit_yaml": "Uredi kot YAML", "enable_disable": "Omogoči / onemogoči avtomatizacijo", "introduction": "Uporabite avtomatizacije za oživitev vašega doma.", "load_error_not_editable": "Urejati je mogoče le avtomatizacije v automations.yaml.", @@ -993,8 +1110,8 @@ "delete_confirm": "Ali ste prepričani, da želite to izbrisati?", "duplicate": "Podvoji", "header": "Sprožilci", - "introduction": "Sprožilci so tisto, kar začne postopek obdelave avtomatizacije pravila. Za isto pravilo je mogoče določiti več sprožilcev. Ko se začne sprožilec, bo Home Assistant potrdil pogoje, če so, in poklical dejanje. \n\n [Več o sprožilcih.] (Https://home-assistant.io/docs/automation/trigger/)", - "learn_more": "Več o sprožilcih", + "introduction": "Sprožilci so tisto, kar začne obdelavo pravila avtomatizacije. Za isto pravilo je mogoče določiti več sprožilcev. Ko se sprožilec sproži, bo Home Assistant preveril morebitne pogoje in izvedel dejanje.", + "learn_more": "Preberite več o sprožilcih", "name": "Sprožilec", "type_select": "Tip sprožilca", "type": { @@ -1008,6 +1125,7 @@ "trigger": "Sprožilec" }, "event": { + "context_user_pick": "Dodaj uporabnika", "event_data": "Podatki o dogodku", "event_type": "Vrsta dogodka", "label": "Dogodek" @@ -1038,6 +1156,7 @@ "value_template": "Vrednostna predloga (neobvezno)" }, "state": { + "attribute": "Atribut (neobvezno)", "for": "Za", "from": "Od", "label": "Stanje", @@ -1050,6 +1169,9 @@ "sunrise": "Sončni vzhod", "sunset": "Sončni zahod" }, + "tag": { + "label": "Značka" + }, "template": { "label": "Predloga", "value_template": "Vrednostna predloga" @@ -1062,7 +1184,8 @@ }, "time": { "at": "Ob", - "label": "Čas" + "label": "Čas", + "type_value": "Fiksni čas" }, "webhook": { "label": "Webhook", @@ -1077,7 +1200,7 @@ "zone": "Območje" } }, - "unsupported_platform": "Nepodprta platforma: {platform}" + "unsupported_platform": "Brez podpore za UI za platformo: {platform}" }, "unsaved_confirm": "Imate neshranjene spremembe. Ste prepričani, da želite zapustiti stran?" }, @@ -1091,7 +1214,7 @@ "name": "Ime" }, "introduction": "Urejevalnik za avtomatizacijo vam omogoča ustvarjanje in urejanje avtomatizacij. Prosimo, da preberete [navodila] (https://home-assistant.io/docs/automation/editor/), da preverite, ali ste pravilno nastavili Home Assistant-a.", - "learn_more": "Več o avtomatizacijah", + "learn_more": "Preberite več o avtomatizacijah", "no_automations": "Ne moremo najti nobene avtomatizacije za urejanje", "only_editable": "Urejajo se lahko samo avtomatizacije, definirane v automations.yaml.", "pick_automation": "Izberite avtomatizacijo za urejanje", @@ -1108,7 +1231,7 @@ "enable_state_reporting": "Omogoči poročanje o stanju", "info": "Z integracijo Alexa za Home Assistant cloud boste lahko nadzirali vse svoje naprave s pomočjo katere koli naprave, ki podpira Alexa.", "info_state_reporting": "Če omogočite poročanje o stanju, bo Home Assistant amazonu poslal vse spremembe stanja izpostavljenih entitet. To vam omogoča, da vedno vidite najnovejša stanja v aplikaciji Alexa.", - "manage_entities": "Upravljajte entitete", + "manage_entities": "Upravljaj entitete", "state_reporting_error": "Stanja poročila ni mogoče {enable_disable}.", "sync_entities": "Sinhroniziranje entitet", "sync_entities_error": "Sinhroniziranje entitet ni uspelo:", @@ -1127,7 +1250,7 @@ "enter_pin_info": "Prosimo vnesite kodo pin za interakcijo z varnostnimi napravami. Varnostne naprave so vrata, garažna vrata in ključavnice. Med interakcijo s takšnimi napravami prek Googlovega pomočnika boste morali povedati / vnesti ta pin.", "info": "Z integracijo Pomočnik Google za Home Assistant cloud boste lahko nadzirali vse svoje naprave s pomočjo katere koli naprave, ki ga podpirajo.", "info_state_reporting": "Če omogočite poročanje o stanju, bo Home Assistant Googlu poslal vse spremembe stanja izpostavljenih entitet. To vam omogoča, da vedno vidite najnovejša stanja v aplikaciji Google.", - "manage_entities": "Upravljajte entitete", + "manage_entities": "Upravljaj entitete", "security_devices": "Varnostne naprave", "sync_entities": "Sinhronizirajte entitete z Googlom", "sync_entities_404_message": "Ni bilo mogoče sinhronizirati vaših entitet z Googlom, prosite Google »Hej Google, sinhroniziraj moje naprave«, da bi sinhroniziral vaše entitete.", @@ -1137,7 +1260,7 @@ "integrations_introduction": "Integracija za Home Assistant Cloud vam omogoča povezovanje s storitvami v oblaku, ne da bi vam bilo treba Home Assistant javno izpostavljati po internetu.", "integrations_introduction2": "Preverite spletno stran za ", "integrations_link_all_features": "vse razpoložljive funkcije", - "manage_account": "Upravljanje računa", + "manage_account": "Upravljaj račun", "nabu_casa_account": "Nabu Casa račun", "not_connected": "Brez povezave", "remote": { @@ -1168,6 +1291,7 @@ "banner": "Urejanje entitet, ki so izpostavljeni prek tega uporabniškega vmesnika, je onemogočeno, ker ste v config.yaml konfigurirali filtre entitet.", "expose": "Izpostavite Alexi", "exposed_entities": "Izpostavljene entitete", + "manage_domains": "Upravljaj z domenami", "not_exposed_entities": "Entitete, ki niso izpostavljene", "title": "Alexa" }, @@ -1207,6 +1331,7 @@ "disable_2FA": "Onemogočite dvofaktorsko preverjanje pristnosti", "expose": "Izpostavite Pomočniku Google", "exposed_entities": "Izpostavljene entitete", + "manage_domains": "Upravljaj z domenami", "not_exposed_entities": "Entitete, ki niso izpostavljene", "sync_to_google": "Sinhroniziranje sprememb z Googlom.", "title": "Pomočnik Google" @@ -1265,7 +1390,7 @@ "section": { "core": { "core_config": { - "edit_requires_storage": "Urejevalnik je onemogočen, ker je konfiguracija shranjena v configuration.yaml.", + "edit_requires_storage": "Urejevalnik je onemogočen, ker so nastavitve shranjene v configuration.yaml.", "elevation": "Nadmorska višina", "elevation_meters": "metrov", "external_url": "Zunanji URL", @@ -1281,7 +1406,7 @@ "unit_system_imperial": "Imperial", "unit_system_metric": "Metrično" }, - "header": "Konfiguracija in nadzor strežnika", + "header": "Nastavitve in nadzor strežnika", "introduction": "Spreminjanje konfiguracije je lahko zapleten proces. Vemo. Ta del bo poskušal narediti vaše življenje malo lažje." } } @@ -1297,7 +1422,7 @@ "different_include": "Mogoče prek domene, globusa ali drugačne vsebovanosti.", "pick_attribute": "Izberite atribut, ki ga želite preglasiti", "picker": { - "entity": "Subjekt", + "entity": "Entiteta", "header": "Prilagoditve", "introduction": "Prilagajanja atributov na entiteti. Dodane/spremenjene prilagoditve začnejo veljati takoj. Odstranjene pa po posodobitvi entitete." }, @@ -1310,23 +1435,30 @@ "devices": { "automation": { "actions": { - "caption": "Ko se nekaj sproži ..." + "caption": "Ko se nekaj sproži ...", + "no_actions": "Brez dejanj", + "unknown_action": "Neznano dejanje" }, "automations": "Avtomatizacije", "conditions": { - "caption": "Naredite nekaj, samo če ..." + "caption": "Naredite nekaj, samo če ...", + "no_conditions": "Brez pogojev", + "unknown_condition": "Neznan pogoj" }, "create": "Ustvarjanje avtomatizacije z napravo", "no_automations": "Ni avtomatizacij", "no_device_automations": "Za to napravo ni na voljo nobenih avtomatizacij.", "triggers": { - "caption": "Naredi nekaj, ko ..." + "caption": "Naredi nekaj, ko ...", + "no_triggers": "Brez sprožilcev", + "unknown_trigger": "Neznan sprožilec" } }, "cant_edit": "Urejate lahko samo elemente, ki so ustvarjeni v uporabniškem vmesniku.", "caption": "Naprave", "confirm_delete": "Ali ste prepričani, da želite odstraniti to napravo?", - "confirm_rename_entity_ids": "Ali želite preimenovati tudi ID entitete vaših entitet?", + "confirm_rename_entity_ids": "Ali želite tudi preimenovati ID-je entitet?", + "confirm_rename_entity_ids_warning": "To ne bo spremenilo nobene konfiguracije (kot so avtomatizacije, skripti, prizori, nadzorne plošče), ki trenutno uporabljajo te entitete! Sami jih boste morali posodobiti, da boste uporabili nove ID-je entitet!", "data_table": { "area": "Območje", "battery": "Baterija", @@ -1338,7 +1470,7 @@ "no_devices": "Brez naprav" }, "delete": "Izbriši", - "description": "Upravljajte povezane naprave", + "description": "Upravljanje povezanih naprav", "device_info": "Informacije o napravi", "device_not_found": "Naprave ni bilo mogoče najti", "entities": { @@ -1368,7 +1500,7 @@ }, "entities": { "caption": "Entitete", - "description": "Pregled vseh znanih entitet.", + "description": "Upravljanje znanih entitet", "picker": { "disable_selected": { "button": "Onemogoči izbrane", @@ -1402,7 +1534,7 @@ "confirm_text": "Če vsebujejo te entitete, bi jih morali odstraniti iz vašega Lovelace config-a in avtomatizacije.", "confirm_title": "Ali želite odstraniti {number} entiteto-i/e?" }, - "search": "Iskanje subjektov", + "search": "Iskanje entitet", "selected": "{številka} izbrana/ih", "status": { "disabled": "Onemogočeno", @@ -1420,7 +1552,7 @@ "header": "Konfiguriraj Home Assistant", "helpers": { "caption": "Pomočniki", - "description": "Elementi, ki lahko pomagajo graditi avtomatizacije.", + "description": "Upravljanje elementov, s katerimi si lahko pomagate pri gradnji avtomatizacij.", "dialog": { "add_helper": "Dodajte pomočnika", "add_platform": "Dodaj {platform}", @@ -1448,7 +1580,7 @@ "built_using": "Zgrajen z uporabo", "caption": "Info", "custom_uis": "Uporabniški vmesniki po meri:", - "description": "Informacije o vaši namestitvi programa Home Assistant", + "description": "Ogled informacij o namestitvi Home Assistant", "developed_by": "Razvija ga kup osupljivih ljudi.", "documentation": "Dokumentacija", "frontend": "frontend-ui", @@ -1471,6 +1603,7 @@ }, "integrations": { "add_integration": "Dodaj integracijo", + "attention": "Potrebna pozornost", "caption": "Integracije", "config_entry": { "area": "V {area}", @@ -1489,6 +1622,9 @@ "no_device": "Entitete brez naprav", "no_devices": "Ta integracija je brez naprav.", "options": "Možnosti", + "reload": "Ponovno naloži", + "reload_confirm": "Integracija je bila ponovno naložena", + "reload_restart_confirm": "Znova zaženite Home Assistant, da dokončate ponovno nalaganje te integracije", "rename": "Preimenujte", "restart_confirm": "Znova zaženite Home Assistant-a, da dokončate odstranitev te integracije", "settings_button": "Uredite nastavitve za {integration}", @@ -1499,7 +1635,7 @@ "config_flow": { "aborted": "Prekinjeno", "close": "Zapri", - "created_config": "Ustvarjena konfiguracija za {name}.", + "created_config": "Ustvarjene nastavitve za {name}.", "dismiss": "Opusti pogovorno okno", "error_saving_area": "Napaka pri shranjevanju območja: {error}", "external_step": { @@ -1513,7 +1649,7 @@ }, "configure": "Konfiguriraj", "configured": "Konfigurirano", - "description": "Upravljajte in postavljajte integracije", + "description": "Upravljanje integracij", "details": "Podrobnosti integracije", "discovered": "Odkrito", "home_assistant_website": "spletne strani Home Assistant", @@ -1537,11 +1673,12 @@ "none_found_detail": "Prilagodite iskalne kriterije.", "note_about_integrations": "Vseh integracij še ni mogoče konfigurirati prek uporabniškega vmesnika.", "note_about_website_reference": "Več jih je na voljo prek", + "reconfigure": "Ponovno nastavite", "rename_dialog": "Uredite ime tega vnosa konfiguracije", "rename_input_label": "Ime vnosa", "search": "Iskanje integracij" }, - "introduction": "Tukaj je mogoče konfigurirati vaše komponente in Home Assistanta. Vsega ni mogoče konfigurirati iz uporabniškega vmesnika (vendar delamo na tem).", + "introduction": "V tem pogledu je mogoče konfigurirati komponente in nastavitve za Home Assistant. Iz uporabniškega vmesnika še ni mogoče konfigurirati vsega, vendar delamo na tem.", "logs": { "caption": "Dnevniki", "clear": "Počisti", @@ -1597,9 +1734,9 @@ "open": "Odpri" } }, - "description": "Konfigurirajte nadzorne plošče Lovelace", + "description": "Upravljanje nadzornih plošč Lovelace", "resources": { - "cant_edit_yaml": "Lovelace uporabljate v načinu YAML, zato ne morete upravljati svojih virov prek uporabniškega vmesnika. Upravljajte jih v config.yaml.", + "cant_edit_yaml": "Lovelace uporabljate v načinu YAML, zato ne morete upravljati svojih virov prek uporabniškega vmesnika. Upravljajte jih v configuration.yaml.", "caption": "Viri", "confirm_delete": "Ali ste prepričani, da želite izbrisati ta vir?", "detail": { @@ -1647,6 +1784,7 @@ "topic": "tema" }, "ozw": { + "button": "Nastavi", "common": { "node_id": "ID vozlišča", "ozw_instance": "OpenZWave primerek", @@ -1657,6 +1795,12 @@ "stage": "Stopnja", "zwave_info": "Z-Wave Informacije" }, + "network": { + "header": "Upravljanje omrežja" + }, + "node_metadata": { + "product_manual": "Priročnik za izdelek" + }, "node_query_stages": { "complete": "Postopek intervjuja je končan", "configuration": "Pridobitev konfiguracijskih vrednosti iz vozlišča", @@ -1671,6 +1815,9 @@ "title": "Osveži podatke o vozlišču", "wakeup_header": "Navodila za bujenje za", "wakeup_instructions_source": "Navodila za prebujanje so pridobljena iz podatkovne zbirke naprav OpenZWave." + }, + "services": { + "cancel_command": "Prekliči ukaz" } }, "person": { @@ -1679,7 +1826,7 @@ "confirm_delete": "Ali ste prepričani, da želite izbrisati to osebo?", "confirm_delete2": "Vse naprave, ki pripadajo tej osebi, bodo postale nedodeljene.", "create_person": "Ustvari osebo", - "description": "Upravljajte osebe, ki jih sledi Home Assistant.", + "description": "Upravljanje oseb, ki jim sledi Home Assistant.", "detail": { "create": "Ustvarite", "delete": "Izbriši", @@ -1696,13 +1843,13 @@ "update": "Posodobite" }, "introduction": "Tu lahko določite vsako osebo (uporabnika) v Home Assistant-a.", - "no_persons_created_yet": "Izgleda, da še niste ustvarili nobene osebe.", + "no_persons_created_yet": "Videti je, da še niste ustvarili nobene osebe.", "note_about_persons_configured_in_yaml": "Opomba: oseb, konfiguriranih prek config.yaml, ni mogoče urejati prek uporabniškega vmesnika." }, "scene": { "activated": "Aktivirana scena {name} .", "caption": "Scene", - "description": "Ustvarjanje in urejanje scen", + "description": "Upravljanje scen", "editor": { "default_name": "Nova scena", "devices": { @@ -1746,7 +1893,7 @@ }, "script": { "caption": "Skripte", - "description": "Ustvarite in uredite skripte", + "description": "Upravljanje skriptov", "editor": { "alias": "Ime", "default_name": "Nova Skripta", @@ -1754,7 +1901,7 @@ "delete_script": "Izbriši skripto", "header": "Skripta: {name}", "icon": "Ikona", - "id": "ID subjekta", + "id": "ID entitete", "id_already_exists": "Ta ID že obstaja", "id_already_exists_save_error": "Te skripte ne morete shraniti, ker ID ni edinstven, izberite drug ID ali ga pustite prazno, da ga samodejno ustvari.", "introduction": "Uporabite skripte za izvajanje zaporedij dejanj.", @@ -1777,7 +1924,7 @@ "sequence_sentence": "Zaporedje dejanj te skripte." }, "picker": { - "add_script": "Dodaj skripto", + "add_script": "Ustvari novo skripto", "edit_script": "Uredi skripto", "header": "Urejevalnik skript", "headers": { @@ -1796,37 +1943,74 @@ "section": { "reloading": { "automation": "Ponovno naloži avtomatizacije", + "command_line": "Znova naložite entitete ukazne vrstice", "core": "Ponovno naloži lokacijo in prilagoditve", - "group": "Ponovno naloži skupine", + "filter": "Znova naložite entitete filtrov", + "group": "Znova naložite skupine, skupine entitete in storitve obveščanja", "heading": "Ponovno nalaganje konfiguracije YAML", + "homekit": "Znova naložite HomeKit", "input_boolean": "Ponovno naloži \"input booleans\"", "input_datetime": "Ponovno naloži vhodne datumske čase", "input_number": "Ponovno naloži vhodne številke", "input_select": "Ponovno naloži izbirne vnose", "input_text": "Ponovno naloži vhodna besedila", - "introduction": "Nekateri deli programa Home Assistant-a se lahko naložijo brez ponovnega zagona. S ponovnim nalaganjem se trenutna konfiguracija YAML zamenja in naloži nova.", + "introduction": "Nekateri deli programa Home Assistant se lahko naložijo brez ponovnega zagona. S ponovnim nalaganjem se trenutna konfiguracija YAML zamenja in naloži nova.", + "mqtt": "Znova naložite ročno konfigurirane entitete mqtt", "person": "Ponovno naloži osebe", + "rest": "Znova entitete rest in storitve obveščanja", "scene": "Ponovno naloži scene", "script": "Ponovno naloži skripte", + "statistics": "Znova naložite statistične entitete", + "template": "Znova naložite entitete predloge", + "universal": "Znova naložite enote univerzalnega predvajalnika", "zone": "Ponovno naloži območja" }, "server_management": { - "confirm_restart": "Ali ste prepričani, da želite znova zagnati Home Assistant-a?", - "confirm_stop": "Ali ste prepričani, da želite ustaviti Home Assistant-a?", + "confirm_restart": "Ali ste prepričani, da želite znova zagnati Home Assistant?", + "confirm_stop": "Ali ste prepričani, da želite za ustaviti Home Assistant?", "heading": "Upravljanje strežnika", - "introduction": "Nadzirajte strežnik Home Assistant ... iz Home Assistant-a", + "introduction": "Nadzirajte strežnik Home Assistant... iz Home Assistant.", "restart": "Ponovni zagon", - "stop": "Ustavi" + "stop": "Zaustavitev" }, "validation": { "check_config": "Preverite konfiguracijo", "heading": "Preverjanje konfiguracije", "introduction": "Potrdite svojo konfiguracijo, če ste nedavno spremenili svojo konfiguracijo in se prepričajte, da je vse veljavno", - "invalid": "Konfiguracija ni veljavna", - "valid": "Konfiguracija veljavna!" + "invalid": "Nastavitve niso veljavne", + "valid": "Nastavitve so veljavne!" } } }, + "tags": { + "add_tag": "Dodaj značko", + "automation_title": "Značka {name} se prebira", + "caption": "Značke", + "create_automation": "Ustvarite avtomatizacijo z značko", + "description": "Upravljanje značk", + "detail": { + "companion_apps": "spremljevalne aplikacije", + "create": "Ustvari", + "create_and_write": "Ustvari in zapiši", + "delete": "Izbriši", + "description": "Opis", + "name": "Ime", + "new_tag": "Nova značka", + "tag_id": "ID značke", + "tag_id_placeholder": "Samodejno ustvarjeno, če ostane prazno", + "update": "Posodobi", + "usage": "Značka lahko sproži avtomatizacijo, koje prebraba. Uporabite lahko značke NFC, QR kode ali katero koli drugo vrsto. Uporabite našo {companion_link} da to značko zapišete v programabilno oznako NFC ali spodaj ustvarite kodo QR." + }, + "edit": "Uredi", + "headers": { + "last_scanned": "Zadnje branje", + "name": "Ime" + }, + "learn_more": "Preberite več o značkah", + "never_scanned": "Nikoli prebrano", + "no_tags": "Brez značk", + "write": "Zapiši" + }, "users": { "add_user": { "caption": "Dodaj uporabnika", @@ -1836,7 +2020,7 @@ "username": "Uporabniško ime" }, "caption": "Uporabniki", - "description": "Upravljajte uporabnike", + "description": "Upravljanje uporabnikov", "editor": { "activate_user": "Aktiviraj uporabnika", "active": "aktiven", @@ -1850,6 +2034,7 @@ "id": "ID", "name": "Ime", "owner": "Lastnik", + "password_changed": "Geslo je bilo uspešno spremenjeno", "system_generated": "Sistemsko generirano", "system_generated_users_not_editable": "Sistemskih uporabnikov ni mogoče posodobiti.", "system_generated_users_not_removable": "Sistemskih uporabnikov ni mogoče odstraniti.", @@ -1863,7 +2048,7 @@ "system": "Sistem" } }, - "users_privileges_note": "Skupine uporabnikov je delo v teku. Uporabnik ne bo mogel upravljati primerka prek uporabniškega vmesnika. Še vedno poteka revidiranje vseh končnih točk API-ja za upravljanje, da zagotovimo pravilno omejevanje dostopa do administratorjev." + "users_privileges_note": "Zmožnosti skupin uporabnikov so delo v teku. Uporabnik ne bo mogel upravljati primerka prek uporabniškega vmesnika. Še vedno poteka revidiranje vseh končnih točk API-ja za upravljanje, da zagotovimo pravilno omejevanje dostopa do administratorjev." }, "zha": { "add_device_page": { @@ -1933,7 +2118,7 @@ "create_group": "Zigbee Home Automation - Ustvari skupino", "create_group_details": "Da ustvarite novo skupino Zigbee vnesite zahtevane podrobnosti.", "creating_group": "Ustvarjanje skupine", - "description": "Ustvarjajte in spreminjajte skupine Zigbee", + "description": "Upravljanje skupin Zigbee", "group_details": "Tu so vse podrobnosti za izbrano skupino Zigbee.", "group_id": "ID skupine", "group_info": "Informacije o skupini", @@ -1981,7 +2166,7 @@ "create": "Ustvari", "delete": "Izbriši", "icon": "Ikona", - "icon_error_msg": "Ikona mora biti v obliki predpona:ime ikone, na primer: mdi:home", + "icon_error_msg": "Ikona mora biti v obliki \"predpona:ime\" ikone, na primer: \"mdi:home\"", "latitude": "Zemljepisna širina", "longitude": "Zemljepisna dolžina", "name": "Ime", @@ -2035,13 +2220,13 @@ }, "node_management": { "add_to_group": "Dodaj v skupino", - "entities": "Subjekti tega vozlišča", - "entity_info": "Podatki o subjektu", + "entities": "Entitete tega vozlišča", + "entity_info": "Podatki o entiteti", "exclude_entity": "Izključite to entiteto iz Home Assistant-a", "group": "Skupina", "header": "Upravljanje Z-Wave vozlišč", "introduction": "Poženite ukaze Z-Wave, ki vplivajo na posamezno vozlišče. Izberite vozlišče in si oglejte seznam razpoložljivih ukazov.", - "max_associations": "Max združenja:", + "max_associations": "Največ združenj:", "node_group_associations": "Združenja skupin vozlišč", "node_protection": "Zaščita vozlišča", "node_to_control": "Vozlišče za nadzor", @@ -2069,7 +2254,7 @@ "heal_node": "Pozdravi Vozlišče", "node_info": "Informacije o vozlišču", "print_node": "Podatki o vozlišču", - "refresh_entity": "Osveži subjekt", + "refresh_entity": "Osveži entiteto", "refresh_node": "Osveži vozlišče", "remove_failed_node": "Odstranite neuspešno vozlišče", "remove_node": "Odstrani vozlišče", @@ -2104,7 +2289,7 @@ "documentation": "Dokumentacija o dogodkih.", "event_fired": "Dogodek {name} zagnan", "fire_event": "Zaženite dogodek", - "listen_to_events": "Poslušajte dogodkom", + "listen_to_events": "Prisluhnite dogodkom", "listening_to": "Poslušanje", "notification_event_fired": "Dogodek {type} uspešno zagnan!", "start_listening": "Začnite poslušati", @@ -2148,7 +2333,11 @@ "description": "Predloge so upodobljene s pomočjo mehanizma za predloge Jinja2 z nekaterimi posebnimi razširitvami Home Assistant.", "editor": "Urejevalnik predlog", "jinja_documentation": "Dokumentacija predloge Jinja2", + "no_listeners": "Ta predloga ne posluša nobenih dogodkov in se ne bo samodejno posodabljala.", + "reset": "Ponastavi na demo predlogo", + "result_type": "Tip rezultata", "template_extensions": "Home Assistant razširitvene predloge", + "time": "Ta predloga se posodobi na začetku vsake minute.", "title": "Predloge", "unknown_error_template": "Neznana napaka upodabljanju predloge" } @@ -2215,7 +2404,7 @@ } }, "changed_toast": { - "message": "Konfiguracija uporabniškega vmesnika Lovelace za to nadzorno ploščo je bila posodobljena, če želite videti spremembe jo morate osvežiti.", + "message": "Nastavitve uporabniškega vmesnika Lovelace za to nadzorno ploščo so bile posodobljene, če želite videti spremembe jo morate osvežiti.", "refresh": "Osveži" }, "editor": { @@ -2246,7 +2435,12 @@ }, "entities": { "description": "Kartica entitet je najpogostejša vrsta kartice. Predmete združuje v sezname.", + "edit_special_row": "Podrobnosti te vrstice si oglejte s klikom na gumb za urejanje", "name": "Subjekti", + "secondary_info_values": { + "last-triggered": "Zadnjič sproženo", + "last-updated": "Zadnja posodobitev" + }, "show_header_toggle": "Pokaži preklop glave?", "toggle": "Preklopi entitete." }, @@ -2255,8 +2449,8 @@ "name": "Filter entitet" }, "entity": { - "description": "Entity kartica vam omogoča hiter pregled stanja vašega subjekta.", - "name": "Subjekt" + "description": "Kartica vam omogoča hiter pregled stanja vaše entitete.", + "name": "Entiteta" }, "gauge": { "description": "Gauge kartica je osnovna kartica, ki omogoča vizualno videnje podatkov senzorjev.", @@ -2398,7 +2592,7 @@ "delete": "Izbriši kartico", "duplicate": "Podvoji kartico", "edit": "Uredi", - "header": "Konfiguracija kartice", + "header": "Nastavitve kartice", "move": "Premakni v pogled", "options": "Več možnosti", "pick_card": "Katero kartico želite dodati?", @@ -2436,9 +2630,9 @@ "raw_editor": "\"Surovi\" urejevalnik konfiguracije" }, "migrate": { - "header": "Konfiguracija Nezdružljiva", + "header": "Nastavitve so nezdružljiva", "migrate": "Selitev konfiguracije", - "para_migrate": "Home Assistant lahko za vas samodejno doda ID na vse vaše kartice in poglede s pritiskom na gumb »Preseli konfiguracijo«.", + "para_migrate": "Home Assistant lahko samodejno doda ID na vse vaše kartice in poglede s pritiskom na gumb »Preseli konfiguracijo«.", "para_no_id": "Ta element nima ID-ja. Prosimo, dodajte ID tega elementa v 'ui-lovelace.yaml'." }, "move_card": { @@ -2446,7 +2640,7 @@ }, "raw_editor": { "confirm_remove_config_text": "Samodejno bomo ustvarili vaše poglede uporabniškega vmesnika Lovelace z vašimi območji in napravami, če odstranite konfiguracijo uporabniškega vmesnika Lovelace.", - "confirm_remove_config_title": "Ali ste prepričani, da želite odstraniti konfiguracijo uporabniškega vmesnika Lovelace? Samodejno bomo ustvarili vaše poglede uporabniškega vmesnika Lovelace z vašimi območji in napravami.", + "confirm_remove_config_title": "Ali ste prepričani, da želite odstraniti konfiguracijo uporabniškega vmesnika Lovelace?", "confirm_unsaved_changes": "Imate neshranjene spremembe, ali ste prepričani, da želite zapreti?", "confirm_unsaved_comments": "Vaša konfiguracija vsebuje komentarje, ki ne bodo shranjeni. Ali želite nadaljevati?", "error_invalid_config": "Vaša konfiguracija ni veljavna: {error}", @@ -2467,7 +2661,7 @@ "para": "To nadzorno ploščo trenutno vzdržuje Home Assistant. Samodejno se posodobi, ko bodo na voljo novi subjekti ali komponente Lovelace UI. Če prevzamete nadzor, se ta nadzorna plošča ne bo več samodejno posodabljala. Vedno lahko ustvarite novo nadzorno ploščo v konfiguraciji, s katero se lahko igrate.", "para_sure": "Ali ste prepričani, da želite prevzeti nadzor nad vašim vmesnikom?", "save": "Prevzemite nadzor", - "yaml_config": "Za pomoč pri zagonu je tukaj trenutna konfiguracija te nadzorne plošče:", + "yaml_config": "Za začetek vam lahko pomaga trenutne nastavitve te nadzorne plošče:", "yaml_control": "Če želite prevzeti nadzor v načinu YAML, ustvarite datoteko YAML z imenom, ki ste ga določili v konfiguraciji za to nadzorno ploščo, ali privzeto 'ui-lovelace.yaml'.", "yaml_mode": "Za to nadzorno ploščo uporabljate način YAML, kar pomeni, da ne morete spremeniti konfiguracije Lovelace iz uporabniškega vmesnika. Če želite upravljati to nadzorno ploščo iz uporabniškega vmesnika, iz konfiguracije Lovelace v 'config.yaml.' Odstranite 'mode: yaml'." }, @@ -2482,7 +2676,7 @@ }, "view": { "panel_mode": { - "description": "To prikaže prvo kartico v polni širini, ostale ne bodo prikazane.", + "description": "To prikaže prvo kartico v polni širini. Ostale kartice v tem pogledu in značke ne bodo prikazane.", "title": "Način panel?", "warning_multiple_cards": "Ta pogled vsebuje več kartic, na plošči je lahko prikazana največ ena kartica." } @@ -2490,11 +2684,12 @@ }, "menu": { "close": "Zapri", - "configure_ui": "Konfiguriraj UI", + "configure_ui": "Uredi nadzorno ploščo", "exit_edit_mode": "Zapustite način urejanja iz uporabniškega vmesnika", "help": "Pomoč", "refresh": "Osveži", - "reload_resources": "Ponovno naloži vire" + "reload_resources": "Ponovno naloži vire", + "start_conversation": "Začni pogovor" }, "reload_lovelace": "Ponovno naloži uporabniški vmesnik", "reload_resources": { @@ -2507,8 +2702,8 @@ "entity": "Subjekt", "entity_id": "ID subjekta", "last_changed": "Zadnja sprememba", - "no_data": "Najdenih ni bilo neuporabljenih subjektov", - "search": "Iskanje subjektov", + "no_data": "Najdenih ni bilo neuporabljenih entitet", + "search": "Iskanje entitet", "select_to_add": "Izberite entitete, ki jih želite dodati na kartico, in nato kliknite gumb Dodaj kartico.", "title": "Neuporabljene entitete" }, @@ -2637,7 +2832,7 @@ "demo": { "demo_by": "avtor: {name}", "introduction": "Dobrodošli doma! Dosegli ste predstavitev Home Assistant-a, kjer smo predstavili najboljše uporabniške vmesnike, ki jih je ustvarila naša skupnost.", - "learn_more": "Več o Home Assistant-u", + "learn_more": "Preberite več o Home Assistant", "next_demo": "Naslednja predstavitev" } }, @@ -2727,6 +2922,10 @@ "dropdown_label": "Nadzorna plošča", "header": "Nadzorna plošča" }, + "enable_shortcuts": { + "description": "Omogočite ali onemogočite bližnjice na tipkovnici za izvajanje različnih dejanj v uporabniškem vmesniku.", + "header": "Bližnjice na tipkovnici" + }, "force_narrow": { "description": "To bo privzeto skrilo stransko vrstico, podobno kot pri mobilnih napravah.", "header": "Vedno skrij stransko vrstico" @@ -2753,7 +2952,7 @@ "learn_auth_requests": "Naučite se, kako naredite preverjene zahteve.", "not_used": "Nikoli ni bil uporabljen", "prompt_copy_token": "Kopirate žeton za dostop. Ta ne bo prikazan znova.", - "prompt_name": "Ime?" + "prompt_name": "Dajte žetonu ime" }, "mfa_setup": { "close": "Zapri", @@ -2769,6 +2968,10 @@ "header": "Večfaktorski moduli za preverjanje pristnosti" }, "push_notifications": { + "add_device_prompt": { + "input_label": "Ime naprave", + "title": "Kako naj se imenuje ta naprava?" + }, "description": "Pošiljaj obvestila tej napravi", "error_load_platform": "Konfiguriraj notify.html5 (push obvestila).", "error_use_https": "Zahteva SSL za Frontend.", @@ -2817,7 +3020,7 @@ } }, "sidebar": { - "external_app_configuration": "Konfiguracija aplikacije", + "external_app_configuration": "Nastavitve aplikacije", "sidebar_toggle": "Preklop stranske vrstice" } } diff --git a/translations/frontend/uk.json b/translations/frontend/uk.json index e4bed65e19..dc18d54118 100644 --- a/translations/frontend/uk.json +++ b/translations/frontend/uk.json @@ -569,7 +569,7 @@ "messages": { "became_unavailable": "стала недоступною", "changed_to_state": "змінено на {state}", - "cleared_device_class": "чисто (не {device_class} виявлено)", + "cleared_device_class": "чисто ({device_class} не виявлено)", "detected_device_class": "виявлено {device_class}", "set": "встановити", "turned_off": "вимкнено", @@ -623,14 +623,15 @@ "hour": "In {count} {count, plural,\n one {hour}\n other {hours}\n}", "minute": "In {count} {count, plural,\n one {minute}\n other {minutes}\n}" }, - "just_now": "Прямо зараз", + "just_now": "Щойно", "never": "Ніколи", "past": "{time} тому", "past_duration": { - "day": "{count} {count, plural,\n one {day}\n other {days}\n} тому", - "hour": "{count} {count, plural,\n one {hour}\n other {hours}\n} тому", - "minute": "{count} {count, plural,\n one {minute}\n other {minutes}\n} тому", - "second": "{count} {count, plural,\n one {second}\n other {seconds}\n} тому" + "day": "{count} {count, plural,\n one {день}\n other {днів}\n} тому", + "hour": "{count} {count, plural,\n one {годину}\n other {годин}\n} тому", + "minute": "{count} {count, plural,\n one {хвилину}\n other {хвилин}\n} тому", + "second": "{count} {count, plural,\n one {секунду}\n other {секунд}\n} тому", + "week": "{count} {count, plural,\n one {тиждень}\n other {тижнів}\n} тому" } }, "service-picker": { @@ -676,6 +677,13 @@ "ok": "ТАК" }, "helper_settings": { + "counter": { + "initial": "Початкове значення", + "maximum": "Максимальне значення", + "minimum": "Мінімальне значення", + "restore": "Відновлення останнього відомого значення під час Home Assistant", + "step": "Розмір кроку" + }, "generic": { "icon": "Значок", "name": "Назва" @@ -708,7 +716,10 @@ "password": "Пароль", "text": "Текст" }, - "required_error_msg": "Це поле є обов'язковим" + "required_error_msg": "Це поле є обов'язковим", + "timer": { + "duration": "Тривалість" + } }, "image_cropper": { "crop": "Обрізати" @@ -719,6 +730,7 @@ "dismiss": "Відхилити", "edit": "Редагувати об'єкт", "history": "Історія", + "last_changed": "Востаннє змінено", "last_updated": "Останнє оновлення", "person": { "create_zone": "Створити зону з поточного місця розташування" @@ -774,6 +786,13 @@ } }, "quick-bar": { + "commands": { + "server_control": { + "perform_action": "{action} сервер", + "restart": "Перезапустити", + "stop": "Зупинити" + } + }, "filter_placeholder": "Фільтр об'єкта" }, "voice_command": { @@ -836,6 +855,7 @@ }, "notification_toast": { "connection_lost": "З'єднання втрачено. Повторне підключення...", + "dismiss": "Відхилити", "service_call_failed": "Не вдалося викликати сервіс {service}.", "started": "Home Assistant запущений!", "triggered": "Запущено {name}" @@ -1141,6 +1161,7 @@ "time": { "at": "У", "label": "Час", + "type_input": "Значення помічнику дати й часу", "type_value": "Фіксований час" }, "webhook": { @@ -1512,11 +1533,13 @@ "no_helpers": "Схоже, у вас ще немає помічників!" }, "types": { + "counter": "Лічильник", "input_boolean": "Тумблер", "input_datetime": "Дата та/або час", "input_number": "Номер", "input_select": "Випадання", - "input_text": "Текст" + "input_text": "Текст", + "timer": "Таймер" } }, "info": { @@ -2362,6 +2385,7 @@ "entity-id": "ID об'єкта", "last-changed": "Востаннє змінено", "last-triggered": "Останнє спрацьовування", + "last-updated": "Останнє оновлення", "none": "Немає додаткової інформації", "position": "Положення", "tilt-position": "Положення нахилу" @@ -2896,6 +2920,9 @@ "header": "Багатофакторна перевірка справжності модулів" }, "push_notifications": { + "add_device_prompt": { + "input_label": "Ім'я пристрою" + }, "description": "Надіслати сповіщення на цей пристрій.", "error_load_platform": "Налаштувати notify.html5.", "error_use_https": "Потрібно ввімкнути SSL для інтерфейсу.", diff --git a/translations/frontend/zh-Hans.json b/translations/frontend/zh-Hans.json index 7513de7ed8..86887903a6 100644 --- a/translations/frontend/zh-Hans.json +++ b/translations/frontend/zh-Hans.json @@ -798,6 +798,7 @@ "dismiss": "关闭对话框", "edit": "编辑实体", "history": "历史", + "last_changed": "上次变化", "last_updated": "上次更新", "person": { "create_zone": "从当前位置创建地点" diff --git a/translations/frontend/zh-Hant.json b/translations/frontend/zh-Hant.json index b777b0f34f..c4fc360cdb 100644 --- a/translations/frontend/zh-Hant.json +++ b/translations/frontend/zh-Hant.json @@ -798,6 +798,7 @@ "dismiss": "忽略對話", "edit": "編輯實體", "history": "歷史", + "last_changed": "上次變更", "last_updated": "最後更新", "person": { "create_zone": "使用目前位置新增區域" @@ -1732,7 +1733,7 @@ "options": "選項", "reload": "重新載入", "reload_confirm": "整合已重新載入", - "reload_restart_confirm": "重啟 Home Assistant 以為重整合重新載入", + "reload_restart_confirm": "重啟 Home Assistant 以完成整合重新載入", "rename": "重新命名", "restart_confirm": "重啟 Home Assistant 以完成此整合移動", "services": "{count} {count, plural,\n one {項服務}\n other {項服務}\n}", From 1753c9163cad2988080d1c7701f01ff57d8686a8 Mon Sep 17 00:00:00 2001 From: HomeAssistant Azure Date: Sun, 1 Nov 2020 00:32:29 +0000 Subject: [PATCH 064/125] [ci skip] Translation update --- translations/frontend/cy.json | 30 ++- translations/frontend/el.json | 1 + translations/frontend/hu.json | 1 + translations/frontend/it.json | 6 +- translations/frontend/sl.json | 396 +++++++++++++++++++++++------ translations/frontend/sv.json | 136 +++++++++- translations/frontend/zh-Hans.json | 4 +- 7 files changed, 488 insertions(+), 86 deletions(-) diff --git a/translations/frontend/cy.json b/translations/frontend/cy.json index 65efe02d63..a09725d53a 100644 --- a/translations/frontend/cy.json +++ b/translations/frontend/cy.json @@ -378,7 +378,7 @@ "messages": { "became_unavailable": "Daeth anargael", "changed_to_state": "wedi newid i {state}", - "cleared_device_class": "clirio (ni ganfuwyd {device_class}", + "cleared_device_class": "clirio (ni ganfuwyd {device_class})", "detected_device_class": "canfodwyd {device_class}", "turned_off": "i ffwrdd", "turned_on": "troi ymlaen", @@ -448,6 +448,7 @@ }, "more_info_control": { "dismiss": "Gwrthod deialog", + "last_changed": "Newidiwyd ddiwethaf", "script": { "last_action": "Gweithrediad diwethaf" }, @@ -462,6 +463,21 @@ } }, "quick-bar": { + "commands": { + "reload": { + "filesize": "Ailgychwyn endidau maint ffeil", + "mqtt": "Ailgychwyn endidau mqtt wedi'u ffurfweddu", + "ping": "Ailgychwyn endidau sensor ping binary", + "rpi_gpio": "Ailgychwyn endidau GPIO Raspberry Pi", + "smtp": "Ailgychwyn gwasanaethau hysbysu smtp", + "telegram": "Ailgychwyn gwasanaethau hysbysu telegram" + }, + "server_control": { + "perform_action": "{action} Gweinydd", + "restart": "Ailgychwyn", + "stop": "Stop" + } + }, "filter_placeholder": "Hidlo Endid" }, "voice_command": { @@ -926,6 +942,7 @@ }, "services": { "add_node": "Ychwanegu Nod", + "cancel_command": "Canslo Gorchymyn", "remove_node": "Tynnu Nod" } }, @@ -999,6 +1016,7 @@ "group": "Ail-lwytho grwpiau", "heading": "Ffurfweddiad yn ail-lwytho", "introduction": "Gall rhai rhannau o Home Assistant ail-lwytho heb orfod ailgychwyn. Bydd taro ail-lwytho yn dadlwytho eu cyfluniad cyfredol a llwytho'r un newydd.", + "mqtt": "Ail-lwytho endidau mqtt wedi'u ffurfweddu", "rest": "Ail-lwytho endidau gorffwys", "script": "Ail-lwytho sgriptiau", "statistics": "Ail-lwytho endidau ystadegau", @@ -1501,6 +1519,16 @@ "description": "Dewiswch ddangosfwrdd diofyn ar gyfer y ddyfais hon.", "dropdown_label": "Dangosfwrdd", "header": "Dangosfwrdd" + }, + "enable_shortcuts": { + "description": "Galluogi neu analluogi llwybrau byr bysellfwrdd ar gyfer perfformio gweithredoedd amrywiol yn yr UI.", + "header": "Llwybrau byr bysellfwrdd" + }, + "push_notifications": { + "add_device_prompt": { + "input_label": "Enw dyfais", + "title": "Beth ddylid galw'r ddyfais yma?" + } } }, "shopping-list": { diff --git a/translations/frontend/el.json b/translations/frontend/el.json index 98e88188fa..80d31314c1 100644 --- a/translations/frontend/el.json +++ b/translations/frontend/el.json @@ -798,6 +798,7 @@ "dismiss": "Κλείσιμο διαλόγου.", "edit": "Επεξεργασία οντότητας", "history": "Ιστορικό", + "last_changed": "Τελευταία αλλαγή", "last_updated": "Τελευταία ενημέρωση", "person": { "create_zone": "Δημιουργία ζώνης από την τρέχουσα θέση" diff --git a/translations/frontend/hu.json b/translations/frontend/hu.json index 69f4f62bc9..57feb0f3cb 100644 --- a/translations/frontend/hu.json +++ b/translations/frontend/hu.json @@ -798,6 +798,7 @@ "dismiss": "Párbeszédpanel elvetése", "edit": "Entitás szerkesztése", "history": "Előzmények", + "last_changed": "Utoljára módosult", "last_updated": "Utoljára frissítve", "person": { "create_zone": "Zóna létrehozása az aktuális helyről" diff --git a/translations/frontend/it.json b/translations/frontend/it.json index 02a72f379b..7cfaa12b79 100644 --- a/translations/frontend/it.json +++ b/translations/frontend/it.json @@ -2004,7 +2004,7 @@ }, "services": { "add_node": "Aggiungi Nodo", - "cancel_command": "Annulla Comando", + "cancel_command": "Annulla comando", "remove_node": "Rimuovi nodo" } }, @@ -2627,9 +2627,9 @@ "call-service": "Chiama il Servizio", "default_action": "Azione predefinita", "more-info": "Ulteriori informazioni", - "navigate": "Navigare", + "navigate": "Vai a", "none": "Nessuna Azione", - "toggle": "Commutatore", + "toggle": "Commuta", "url": "Url" }, "editor_service_data": "I dati di servizio possono essere inseriti solo nell'editor del codice", diff --git a/translations/frontend/sl.json b/translations/frontend/sl.json index e1f2ffde41..ded5af72af 100644 --- a/translations/frontend/sl.json +++ b/translations/frontend/sl.json @@ -19,6 +19,7 @@ "logbook": "Dnevnik", "mailbox": "Nabiralnik", "map": "Zemljevid", + "media_browser": "Medijski brskalnik", "profile": "Profil", "shopping_list": "Nakupovalni seznam", "states": "Pregled" @@ -495,9 +496,11 @@ "wnw": "Zahod-severozahod", "wsw": "Zahod-jugozahod" }, + "day": "Dan", "forecast": "Napoved", "high": "Visoko", - "low": "Nizko" + "low": "Nizko", + "night": "Noč" } }, "common": { @@ -505,6 +508,8 @@ "back": "Nazaj", "cancel": "Prekliči", "close": "Zapri", + "continue": "Nadaljuj", + "copied": "Kopirano", "delete": "Izbriši", "error_required": "Zahtevano", "loading": "Nalaganje", @@ -551,6 +556,10 @@ "toggle": "Preklopite" }, "entity": { + "entity-attribute-picker": { + "attribute": "Atribut", + "show_attributes": "Pokaži atribute" + }, "entity-picker": { "clear": "Počisti", "entity": "Entiteta", @@ -570,11 +579,12 @@ "changed_to_state": "je spremenil stanje v {state}", "cleared_device_class": "počiščeno (no {device_class} detected)", "detected_device_class": "zaznan {device_class}", - "rose": "zrastel", + "rose": "zrasel", "set": "nastavljen", "turned_off": "ugasnjen", "turned_on": "vključen", "was_at_home": "je bil/a doma", + "was_at_state": "je bil {state}", "was_away": "je bil odsoten", "was_closed": "je bil zaprt", "was_connected": "je bil povezan", @@ -591,7 +601,31 @@ } }, "media-browser": { + "audio_not_supported": "Vaš brskalnik ne podpira zvočnega elementa.", + "choose_player": "Izberi predvajalnik", "choose-source": "Izberite vir", + "class": { + "album": "Album", + "app": "Aplikacija", + "artist": "Ustvarjalec", + "channel": "Kanal", + "composer": "Skladatelj", + "contributing_artist": "Ustvarjalec, ki prispeva", + "directory": "Knjižnica", + "episode": "Epizoda", + "game": "Igra", + "genre": "Žanr", + "image": "Slika", + "movie": "Film", + "music": "Glasba", + "playlist": "Seznam predvajanja", + "podcast": "Poddaja", + "season": "Sezona", + "track": "Skladba", + "tv_show": "Televizijska oddaja", + "url": "URL", + "video": "Video" + }, "content-type": { "album": "Album", "artist": "Ustvarjalec", @@ -599,11 +633,23 @@ "playlist": "Seznam predvajanja", "server": "Strežnik" }, + "documentation": "dokumentacija", + "learn_adding_local_media": "Več o dodajanju medijev preberite v {documentation}.", + "local_media_files": "V imenik predstavnosti postavite video, zvočne in slikovne datoteke, da lahko brskate in jih predvajate v brskalniku ali podprtih predvajalnikih.", + "media_browsing_error": "Napaka pri brskanju po medijih", + "media_not_supported": "Predvajalnik ne podpira te vrste", + "media_player": "Medijski predvajalnik", + "media-player-browser": "Brskalnik za medijski predvajalnik", "no_items": "Ni elementov", + "no_local_media_found": "Ni bilo najdenega lokalnega medija", + "no_media_folder": "Videti je, da še niste ustvarili medijskega imenika.", "pick": "Izberi", "pick-media": "Izberi vsebino", "play": "Predvajaj", - "play-media": "Predvajaj vsebino" + "play-media": "Predvajaj vsebino", + "setup_local_help": "Preverite {documentation} o tem, kako nastaviti lokalni medij.", + "video_not_supported": "Vaš brskalnik ne podpira video elementa.", + "web-browser": "Spletni brskalnik" }, "picture-upload": { "label": "Slika", @@ -629,9 +675,23 @@ "week": "{count} {count, plural,\none {Teden}\nother {Tednov}\n}" }, "future": "Čez {time}", + "future_duration": { + "day": "V {count} {count, plural,\n one {dnevu}\n other {dnevih}\n}", + "hour": "V {count} {count, plural,\n one {uri}\n other {urah}\n}", + "minute": "V {count} {count, plural,\n one {minuti}\n other {minutah}\n}", + "second": "V {count} {count, plural,\n one {sekundi}\n other {sekundah}\n}", + "week": "V {count} {count, plural,\n one {tednu}\n other {tednih}\n}" + }, "just_now": "Pravkar", "never": "Nikoli", - "past": "Pred {time}" + "past": "Pred {time}", + "past_duration": { + "day": "Pred {count} {count, plural,\n one {dnevom}\n two {dnevoma}\n other {dnevi}\n}", + "hour": "Pred {count} {count, plural,\n one {uro}\n two {urama}\n other {urami}\n}", + "minute": "Pred {count} {count, plural,\n one {minuto}\n two {minutama}\n other {minutami}\n}", + "second": "Pred {count} {count, plural,\n one {sekundo}\n two {sekundama}\n other {sekundami}\n}", + "week": "Pred {count} {count, plural,\n one {tednom}\n two {tednoma}\n other {tedni}\n}" + } }, "service-picker": { "service": "Storitev" @@ -645,7 +705,7 @@ "dialogs": { "config_entry_system_options": { "enable_new_entities_description": "Če je onemogočeno, novo odkrite entitete za {integration} ne bodo samodejno dodane v Home Assistant.", - "enable_new_entities_label": "Omogočite novo dodane subjekte.", + "enable_new_entities_label": "Omogoči novo dodane entitete.", "title": "Sistemske možnosti za {integration}", "update": "Posodobite" }, @@ -660,16 +720,17 @@ "confirm_delete": "Ali ste prepričani, da želite izbrisati ta vnos?", "delete": "Izbriši", "enabled_cause": "Onemogočeno zaradi {cause}.", - "enabled_description": "Onemogočeni subjekti ne bodo dodani v Home Assistant-a.", + "enabled_description": "Onemogočene entitete ne bodo dodane v Home Assistant.", "enabled_label": "Omogoči entiteto", - "entity_id": "ID subjekta", + "entity_id": "ID entitete", "icon": "Ikona", - "icon_error": "Ikone morajo biti v obliki \"predpona: imeIkone\", na primer \"MDI: Home\"", + "icon_error": "Ikone morajo biti v obliki 'prefix:iconname', npr. 'mid:home'", "name": "Ime", "note": "Opomba: to morda še ne deluje z vsemi integracijami.", "unavailable": "Ta entiteta trenutno ni na voljo.", "update": "Posodobi" }, + "faq": "dokumentacija", "no_unique_id": "Ta entiteta nima enoličnega ID-ja, zato njenih nastavitev ni mogoče upravljati iz uporabniškega vmesnika. Za več podrobnosti glejte {faq_link} .", "related": "Povezano", "settings": "Nastavitve" @@ -718,7 +779,7 @@ "min": "Najkrajša dolžina", "mode": "Način prikaza", "password": "Geslo", - "pattern": "Vzorec Regex za validacijo na strani odjemalca", + "pattern": "Regex vzorec za preverjanje veljavnosti na strani odjemalca", "text": "Besedilo" }, "platform_not_loaded": "Integracija {platform} ni naložena. Prosimo, dodajte ga v svojo konfiguracijo tako, da dodate 'default_config: 'ali' ' {platform} :' '.", @@ -780,7 +841,7 @@ "entities": "Entitete", "no_entities": "Brez entitet", "no_triggers": "Brez sprožilcev", - "payload_display": "Payload display", + "payload_display": "Prikaz koristnega tovora", "recent_messages": "{n} zadnjih prejetih sporočil", "show_as_yaml": "Pokaži kot YAML", "title": "{Device} debug info", @@ -797,21 +858,41 @@ "quick-bar": { "commands": { "reload": { - "automation": "Ponovno naloži avtomatizacije", - "homekit": "Znova naložite HomeKit", - "mqtt": "Ponovno naloži ", - "person": "Ponovno naloži osebe", - "reload": "Ponovno naloži {domain}", - "rpi_gpio": "Ponovno naloži Raspberry Pi GPIO entitete", - "scene": "Ponovno naloži scene", - "script": "Ponovno naloži skripte", - "smtp": "Ponovno naloži smtp strežnike za obvestila.", - "telegram": "Ponovno naloži telegram strežnike za obvestila.", - "zone": "Ponovno naloži območja" + "automation": "Znova naloži avtomatizacije", + "command_line": "Znova naloži entitete ukazne vrstice", + "core": "Znova naloži lokacijo in prilagoditve", + "filesize": "Znova naloži entitete velikosti datoteke", + "filter": "Znova naloži entitete entitete filtra", + "generic": "Znova naloži entitete generičnih IP kamer", + "generic_thermostat": "Znova naloži entitete generičnih termostatov", + "group": "Znova naloži skupine, skupine entitete in storitve obveščanja", + "history_stats": "Znova naloži entitete statistike zgodovine", + "homekit": "Znova naloži HomeKit", + "input_boolean": "Znova naloži vhode boolean", + "input_datetime": "Znova naloži datumske vhode", + "input_number": "Znova naloži števične vhode", + "input_select": "Znova naloži izbirne vhode", + "input_text": "Znova naloži tekstovne vhode", + "min_max": "Znova naloži entitete min/max", + "mqtt": "Znova naloži ročno nastavljene entitete MQTT", + "person": "Znova naloži osebe", + "ping": "Znova naloži entitete binarnega senzorja PING", + "reload": "Znova naloži {domain}", + "rest": "Znova naloži entitete REST in storitve obveščanja", + "rpi_gpio": "Znova naloži Raspberry Pi GPIO entitete", + "scene": "Znova naloži scene", + "script": "Znova naloži skripte", + "smtp": "Znova naloži smtp strežnike za obvestila.", + "statistics": "Znova naloži statistične entitete", + "telegram": "Znova naloži telegram strežnike za obvestila.", + "template": "Znova naloži entitete predlog", + "trend": "Znova naloži entitete trendov", + "universal": "Znova naloži entitete univerzalnega predvajalnika", + "zone": "Znova naloži območja" }, "server_control": { "perform_action": "{action} strežnik", - "restart": "Ponovno zaženi", + "restart": "Znova zaženi", "stop": "Zaustavi" } }, @@ -829,7 +910,7 @@ "buttons": { "add": "Dodajte naprave prek te naprave", "clusters": "Upravljanje gruč", - "reconfigure": "Ponovno konfigurirajte napravo", + "reconfigure": "Znova konfiguriraj napravo", "remove": "Odstranite napravo", "zigbee_information": "Podpis naprave Zigbee" }, @@ -843,7 +924,7 @@ "power_source": "Vir napajanja", "quirk": "Posebnost", "services": { - "reconfigure": "Ponovno konfigurirajte napravo ZHA (\"pozdravite\" napravo). To uporabite, če imate z njo težave. Če ta naprava deluje na baterije, se prepričajte, da je budna in sprejema ukaze pri uporabi te storitve.", + "reconfigure": "Znova konfiguriraj napravo ZHA (\"pozdravite\" napravo). To uporabite, če imate z njo težave. Če ta naprava deluje na baterije, se prepričajte, da je budna in sprejema ukaze pri uporabi te storitve.", "remove": "Odstranite napravo iz omrežja Zigbee.", "updateDeviceName": "Nastavite ime po meri za to napravo v registru naprav.", "zigbee_information": "Oglejte si informacije Zigbee za to napravo." @@ -871,6 +952,7 @@ "notification_drawer": { "click_to_configure": "Kliknite gumb, da konfigurirate {entity}", "close": "Zapri", + "dismiss_all": "Zavrzi vse", "empty": "Ni obvestil", "title": "Obvestila" }, @@ -991,9 +1073,12 @@ "service_data": "Podatki storitve" }, "wait_for_trigger": { - "label": "Počakaj na sprožilec" + "continue_timeout": "Nadaljuj ob časovni omejitvi", + "label": "Počakaj na sprožilec", + "timeout": "Časovna omejitev (neobvezno)" }, "wait_template": { + "continue_timeout": "Nadaljuj ob časovni omejitvi", "label": "počakajte", "timeout": "Časovna omejitev (neobvezno)", "wait_template": "Čakalna predloga" @@ -1058,6 +1143,8 @@ "after": "Po", "before": "Pred", "label": "Čas", + "type_input": "Vrednost pomagalnika za datum/čas", + "type_value": "Fiksni čas", "weekdays": { "fri": "petek", "mon": "ponedeljek", @@ -1126,6 +1213,8 @@ }, "event": { "context_user_pick": "Dodaj uporabnika", + "context_user_picked": "Dogodek uporabnikove sprožitve", + "context_users": "Omeji na dogodke, ki jih sproži", "event_data": "Podatki o dogodku", "event_type": "Vrsta dogodka", "label": "Dogodek" @@ -1185,6 +1274,7 @@ "time": { "at": "Ob", "label": "Čas", + "type_input": "Vrednost pomočnika za datum/čas", "type_value": "Fiksni čas" }, "webhook": { @@ -1208,6 +1298,8 @@ "add_automation": "Dodaj avtomatizacijo", "delete_automation": "Izbriši avtomatizacijo", "delete_confirm": "Ali ste prepričani, da želite izbrisati to avtomatizacijo?", + "duplicate": "Podvoji", + "duplicate_automation": "Podvoji avtomatizacijo", "edit_automation": "Urejanje avtomatizacije", "header": "Urejevalnik avtomatizacije", "headers": { @@ -1230,7 +1322,7 @@ "enable_ha_skill": "Omogoči Home Assistant spretnost za Alexo", "enable_state_reporting": "Omogoči poročanje o stanju", "info": "Z integracijo Alexa za Home Assistant cloud boste lahko nadzirali vse svoje naprave s pomočjo katere koli naprave, ki podpira Alexa.", - "info_state_reporting": "Če omogočite poročanje o stanju, bo Home Assistant amazonu poslal vse spremembe stanja izpostavljenih entitet. To vam omogoča, da vedno vidite najnovejša stanja v aplikaciji Alexa.", + "info_state_reporting": "Če omogočite poročanje o stanju, bo Home Assistant Amazonu poslal vse spremembe stanja izpostavljenih entitet. To vam omogoča, da vedno vidite najnovejša stanja v aplikaciji Alexa.", "manage_entities": "Upravljaj entitete", "state_reporting_error": "Stanja poročila ni mogoče {enable_disable}.", "sync_entities": "Sinhroniziranje entitet", @@ -1261,7 +1353,7 @@ "integrations_introduction2": "Preverite spletno stran za ", "integrations_link_all_features": "vse razpoložljive funkcije", "manage_account": "Upravljaj račun", - "nabu_casa_account": "Nabu Casa račun", + "nabu_casa_account": "Račun Nabu Casa", "not_connected": "Brez povezave", "remote": { "access_is_being_prepared": "Oddaljeni dostop se pripravlja. Obvestili vas bomo, ko bo pripravljen.", @@ -1289,9 +1381,14 @@ }, "alexa": { "banner": "Urejanje entitet, ki so izpostavljeni prek tega uporabniškega vmesnika, je onemogočeno, ker ste v config.yaml konfigurirali filtre entitet.", + "dont_expose_entity": "Ne izpostavljaj entitete", "expose": "Izpostavite Alexi", + "expose_entity": "Izpostavi entiteto", + "exposed": "izpostavljeno: {selected}", "exposed_entities": "Izpostavljene entitete", + "follow_domain": "Sledi domeni", "manage_domains": "Upravljaj z domenami", + "not_exposed": "ni izpostavljeno: {selected}", "not_exposed_entities": "Entitete, ki niso izpostavljene", "title": "Alexa" }, @@ -1329,9 +1426,14 @@ "google": { "banner": "Urejanje entitet, ki so izpostavljeni prek tega uporabniškega vmesnika, je onemogočeno, ker ste v config.yaml konfigurirali filtre entitet.", "disable_2FA": "Onemogočite dvofaktorsko preverjanje pristnosti", + "dont_expose_entity": "Ne izpostavi entitete", "expose": "Izpostavite Pomočniku Google", + "expose_entity": "Izpostavi entiteto", + "exposed": "izpostavljeno: {selected}", "exposed_entities": "Izpostavljene entitete", + "follow_domain": "Sledi domeni", "manage_domains": "Upravljaj z domenami", + "not_exposed": "ni izpostavljeno: {selected}", "not_exposed_entities": "Entitete, ki niso izpostavljene", "sync_to_google": "Sinhroniziranje sprememb z Googlom.", "title": "Pomočnik Google" @@ -1374,7 +1476,7 @@ "link_terms_conditions": "Pravila in Pogoji", "password": "Geslo", "password_error_msg": "Gesla morajo biti dolga vsaj 8 znakov", - "resend_confirm_email": "Ponovno pošlji potrditveno e-poštno sporočilo", + "resend_confirm_email": "Znova pošlji potrditveno e-poštno sporočilo", "start_trial": "Začnite preizkus", "title": "Registrirajte račun" } @@ -1422,6 +1524,7 @@ "different_include": "Mogoče prek domene, globusa ali drugačne vsebovanosti.", "pick_attribute": "Izberite atribut, ki ga želite preglasiti", "picker": { + "documentation": "Dokumentacija o prilagoditvah", "entity": "Entiteta", "header": "Prilagoditve", "introduction": "Prilagajanja atributov na entiteti. Dodane/spremenjene prilagoditve začnejo veljati takoj. Odstranjene pa po posodobitvi entitete." @@ -1433,6 +1536,7 @@ } }, "devices": { + "add_prompt": "Noben {name} še ni bil dodan s to napravo. Lahko ga dodaš s klikom na gumb + spodaj.", "automation": { "actions": { "caption": "Ko se nekaj sproži ...", @@ -1452,7 +1556,8 @@ "caption": "Naredi nekaj, ko ...", "no_triggers": "Brez sprožilcev", "unknown_trigger": "Neznan sprožilec" - } + }, + "unknown_automation": "Neznana avtomatizacija" }, "cant_edit": "Urejate lahko samo elemente, ki so ustvarjeni v uporabniškem vmesniku.", "caption": "Naprave", @@ -1490,7 +1595,7 @@ "scenes": "Scene", "script": { "create": "Ustvarjanje skript z napravo", - "no_scripts": "Ni skript", + "no_scripts": "Brez skriptov", "scripts": "Skripte" }, "scripts": "Skripte", @@ -1504,8 +1609,8 @@ "picker": { "disable_selected": { "button": "Onemogoči izbrane", - "confirm_text": "Onemogočeni subjekti ne bodo dodani v Home Assistant-a.", - "confirm_title": "Ali želite onemogočiti {number} entiteto/i/e?" + "confirm_text": "Onemogočene entitete ne bodo dodane v Home Assistant.", + "confirm_title": "Ali želite onemogočiti {number} entitet?" }, "enable_selected": { "button": "Omogoči izbrane", @@ -1514,13 +1619,15 @@ }, "filter": { "filter": "Filter", - "show_disabled": "Pokaži onemogočene subjekte", + "hidden_entities": "{number} {number, plural,\n one {skrita entiteta}\n two {skriti entiteti}\n other {skrite entitete}\n}", + "show_all": "Pokaži vse", + "show_disabled": "Pokaži onemogočene entitete", "show_readonly": "Prikaži entitete \"samo za branje\"", "show_unavailable": "Pokaži nerazpoložljive entitete" }, "header": "Entitete", "headers": { - "entity_id": "ID subjekta", + "entity_id": "ID entitete", "integration": "Integracija", "name": "Ime", "status": "Stanje" @@ -1562,18 +1669,20 @@ "add_helper": "Dodajte pomočnika", "headers": { "editable": "Za urejanje", - "entity_id": "ID subjekta", + "entity_id": "ID entitete", "name": "Ime", "type": "Vrsta" }, "no_helpers": "Zdi se, da še nimate pomočnikov!" }, "types": { + "counter": "Števec", "input_boolean": "Preklopite", "input_datetime": "Datum in/ali čas", "input_number": "Številka", "input_select": "Spustni", - "input_text": "Besedilo" + "input_text": "Besedilo", + "timer": "Časovnik" } }, "info": { @@ -1613,7 +1722,7 @@ "device_unavailable": "naprava ni na voljo", "devices": "{count} {count, plural,\n one {naprava}\n other {naprav}\n}", "documentation": "Dokumentacija", - "entities": "{count} {count, plural,\n one {entiteta}\n other {entitet}\n}", + "entities": "{count} {count, plural,\n one {entiteta}\n two {entiteti}\n other {entitete}\n}", "entity_unavailable": "entiteta ni na voljo", "firmware": "Firmware: {version}", "hub": "Povezan prek", @@ -1622,11 +1731,12 @@ "no_device": "Entitete brez naprav", "no_devices": "Ta integracija je brez naprav.", "options": "Možnosti", - "reload": "Ponovno naloži", - "reload_confirm": "Integracija je bila ponovno naložena", - "reload_restart_confirm": "Znova zaženite Home Assistant, da dokončate ponovno nalaganje te integracije", + "reload": "Znova naloži", + "reload_confirm": "Integracija je bila znova naložena", + "reload_restart_confirm": "Znova zaženi Home Assistant, da dokončate ponovno nalaganje te integracije", "rename": "Preimenujte", "restart_confirm": "Znova zaženite Home Assistant-a, da dokončate odstranitev te integracije", + "services": "{count} {count, plural,\n one {storitev}\n two {storitvi}\n other {storitve}\n}", "settings_button": "Uredite nastavitve za {integration}", "system_options": "Sistemske možnosti", "system_options_button": "Sistemske možnosti za {integration}", @@ -1673,7 +1783,7 @@ "none_found_detail": "Prilagodite iskalne kriterije.", "note_about_integrations": "Vseh integracij še ni mogoče konfigurirati prek uporabniškega vmesnika.", "note_about_website_reference": "Več jih je na voljo prek", - "reconfigure": "Ponovno nastavite", + "reconfigure": "Znova nastavi", "rename_dialog": "Uredite ime tega vnosa konfiguracije", "rename_input_label": "Ime vnosa", "search": "Iskanje integracij" @@ -1786,8 +1896,13 @@ "ozw": { "button": "Nastavi", "common": { + "controller": "Krmilnik", + "instance": "Instanca", + "network": "Omrežje", "node_id": "ID vozlišča", "ozw_instance": "OpenZWave primerek", + "query_stage": "Stopnja poizvedbe", + "wakeup_instructions": "Ukazi za prebujanje", "zwave": "Z-Wave" }, "device_info": { @@ -1795,8 +1910,33 @@ "stage": "Stopnja", "zwave_info": "Z-Wave Informacije" }, + "navigation": { + "network": "Omrežje", + "node": { + "config": "Konfiguracija", + "dashboard": "Nadzorna plošča" + }, + "nodes": "Vozlišča", + "select_instance": "Izberi instanco" + }, + "network_status": { + "details": { + "driverallnodesqueried": "Poizvedena so bila vsa vozlišča", + "started": "Povezan z MQTT", + "starting": "Povezovanje z MQTT" + }, + "offline": "Brez povezave", + "online": "Povezan", + "starting": "Zaganja se", + "unknown": "Neznano" + }, "network": { - "header": "Upravljanje omrežja" + "header": "Upravljanje omrežja", + "introduction": "Upravljajte omrežne funkcije.", + "node_count": "{count} vozlišč" + }, + "node_config": { + "header": "Konfiguracija vozlišča" }, "node_metadata": { "product_manual": "Priročnik za izdelek" @@ -1807,17 +1947,34 @@ "dynamic": "Pridobivanje pogosto spreminjajočih se vrednosti iz vozlišča", "session": "Pridobitev redko spreminjajočih se vrednosti iz vozlišča" }, + "node": { + "button": "Podrobnosti o vozlišču", + "not_found": "Vozlišča ni mogoče najti" + }, + "nodes_table": { + "manufacturer": "Proizvajalec", + "model": "Model", + "zwave_plus": "Z-Wave Plus" + }, "refresh_node": { "battery_note": "Če vozlišče napaja baterijo, se pred nadaljevanjem prepričajte, da ga zbudite", + "button": "Osveži vozlišče", "complete": "Osveževanje vozlišča je končano", + "node_status": "Stanje vozlišča", "refreshing_description": "Osveževanje informacij o vozlišču ...", "start_refresh_button": "Začni osveževanje", + "step": "Korak", "title": "Osveži podatke o vozlišču", "wakeup_header": "Navodila za bujenje za", "wakeup_instructions_source": "Navodila za prebujanje so pridobljena iz podatkovne zbirke naprav OpenZWave." }, + "select_instance": { + "header": "Izberite OpenZWave instanco" + }, "services": { - "cancel_command": "Prekliči ukaz" + "add_node": "Dodaj vozlišče", + "cancel_command": "Prekliči ukaz", + "remove_node": "Odstrani vozlišče" } }, "person": { @@ -1828,11 +1985,14 @@ "create_person": "Ustvari osebo", "description": "Upravljanje oseb, ki jim sledi Home Assistant.", "detail": { + "admin": "Administrator", + "allow_login": "Dovoli osebi, da se prijavi", + "confirm_delete_user": "Ali ste prepričani, da želite izbrisati uporabniški račun za {name}? Uporabnika lahko še vedno spremljate, vendar se oseba ne bo več mogla prijaviti.", "create": "Ustvarite", "delete": "Izbriši", "device_tracker_intro": "Izberite naprave, ki pripadajo tej osebi.", "device_tracker_pick": "Izberite napravo za sledenje", - "device_tracker_picked": "Sledi Napravi", + "device_tracker_picked": "Sledi napravi", "link_integrations_page": "Stran za integracije", "link_presence_detection_integrations": "Integracije zaznavanja prisotnosti", "linked_user": "Povezani uporabnik", @@ -1843,8 +2003,11 @@ "update": "Posodobite" }, "introduction": "Tu lahko določite vsako osebo (uporabnika) v Home Assistant-a.", + "learn_more": "Preberite več o osebah", "no_persons_created_yet": "Videti je, da še niste ustvarili nobene osebe.", - "note_about_persons_configured_in_yaml": "Opomba: oseb, konfiguriranih prek config.yaml, ni mogoče urejati prek uporabniškega vmesnika." + "note_about_persons_configured_in_yaml": "Opomba: oseb, konfiguriranih prek config.yaml, ni mogoče urejati prek uporabniškega vmesnika.", + "person_not_found": "Nismo našli osebe, ki ste jo poskušali urediti.", + "person_not_found_title": "Oseba ni najdena" }, "scene": { "activated": "Aktivirana scena {name} .", @@ -1863,7 +2026,7 @@ "delete": "Izbrišite entiteto", "device_entities": "Če dodate entiteto, ki pripada napravi, bo dodana naprava.", "header": "Entitete", - "introduction": "Tu lahko nastavite subjekte, ki ne pripadajo napravi.", + "introduction": "Tu lahko nastavite entitete, ki ne pripadajo napravi.", "without_device": "Entitete brez naprave" }, "icon": "Ikona", @@ -1920,6 +2083,7 @@ "restart": "Ponovni zagon", "single": "Enojno (privzeta nastavitev)" }, + "save_script": "Shrani skripto", "sequence": "Zaporedje", "sequence_sentence": "Zaporedje dejanj te skripte." }, @@ -1933,6 +2097,7 @@ "introduction": "Urejevalnik skript vam omogoča njihovo ustvarjanje in urejanje. Upoštevajte spodnjo povezavo in si preberite navodila, da se prepričate, da ste pravilno konfigurirali Home Assistant-a.", "learn_more": "Preberite več o skriptah", "no_scripts": "Nismo našli nobene skripte za urejanje", + "run_script": "Zaženi skripto", "show_info": "Pokaži informacije o skripti", "trigger_script": "Sproži skripto" } @@ -1942,27 +2107,38 @@ "description": "Znova zaženite in ustavite strežnik Home Assistant", "section": { "reloading": { - "automation": "Ponovno naloži avtomatizacije", - "command_line": "Znova naložite entitete ukazne vrstice", - "core": "Ponovno naloži lokacijo in prilagoditve", - "filter": "Znova naložite entitete filtrov", - "group": "Znova naložite skupine, skupine entitete in storitve obveščanja", - "heading": "Ponovno nalaganje konfiguracije YAML", - "homekit": "Znova naložite HomeKit", + "automation": "Znova naloži avtomatizacije", + "command_line": "Znova naloži entitete ukazne vrstice", + "core": "Znova naloži lokacijo in prilagoditve", + "filesize": "Znova naloži entitete velikosti datoteke", + "filter": "Znova naloži entitete filtrov", + "generic": "Znova naloži entitete generičnih IP kamer", + "generic_thermostat": "Znova naloži entitete generičnih termostatov", + "group": "Znova naloži skupine, skupine entitete in storitve obveščanja", + "heading": "Konfiguracije YAML se znova nalaga", + "history_stats": "Znova naloži entitete statistike zgodovine", + "homekit": "Znova naloži HomeKit", "input_boolean": "Ponovno naloži \"input booleans\"", "input_datetime": "Ponovno naloži vhodne datumske čase", "input_number": "Ponovno naloži vhodne številke", "input_select": "Ponovno naloži izbirne vnose", "input_text": "Ponovno naloži vhodna besedila", "introduction": "Nekateri deli programa Home Assistant se lahko naložijo brez ponovnega zagona. S ponovnim nalaganjem se trenutna konfiguracija YAML zamenja in naloži nova.", - "mqtt": "Znova naložite ročno konfigurirane entitete mqtt", + "min_max": "Znova naloži entitete min/max", + "mqtt": "Ročno osveži konfigurirane entitete MQTT", "person": "Ponovno naloži osebe", - "rest": "Znova entitete rest in storitve obveščanja", + "ping": "Znova naloži entitete binarnega senzorja PING", + "reload": "Ponovno naloži {domain}", + "rest": "Znova naloži entitete REST in storitve obveščanja", + "rpi_gpio": "Znova naloži entitete GPIO z Raspberry Pi", "scene": "Ponovno naloži scene", "script": "Ponovno naloži skripte", - "statistics": "Znova naložite statistične entitete", - "template": "Znova naložite entitete predloge", - "universal": "Znova naložite enote univerzalnega predvajalnika", + "smtp": "Znova naloži storitve obveščanja SMTP", + "statistics": "Znova naloži statistične entitete", + "telegram": "Znova naloži storitve obveščanja Telegram", + "template": "Znova naloži entitete predlog", + "trend": "Znova naloži entitete trendov", + "universal": "Znova naloži entitete univerzalnega predvajalnika", "zone": "Ponovno naloži območja" }, "server_management": { @@ -1999,7 +2175,7 @@ "tag_id": "ID značke", "tag_id_placeholder": "Samodejno ustvarjeno, če ostane prazno", "update": "Posodobi", - "usage": "Značka lahko sproži avtomatizacijo, koje prebraba. Uporabite lahko značke NFC, QR kode ali katero koli drugo vrsto. Uporabite našo {companion_link} da to značko zapišete v programabilno oznako NFC ali spodaj ustvarite kodo QR." + "usage": "Značka lahko sproži avtomatizacijo, ko je prebrana. Uporabite lahko značke NFC, QR kode ali katero koli drugo vrsto. Uporabite našo {companion_link} da to značko zapišete v programabilno oznako NFC ali spodaj ustvarite kodo QR." }, "edit": "Uredi", "headers": { @@ -2017,6 +2193,8 @@ "create": "Ustvari", "name": "Ime", "password": "Geslo", + "password_confirm": "Potrdi geslo", + "password_not_match": "Gesli se ne ujemata", "username": "Uporabniško ime" }, "caption": "Uporabniki", @@ -2033,6 +2211,7 @@ "group": "Skupina", "id": "ID", "name": "Ime", + "new_password": "Novo geslo", "owner": "Lastnik", "password_changed": "Geslo je bilo uspešno spremenjeno", "system_generated": "Sistemsko generirano", @@ -2172,7 +2351,7 @@ "name": "Ime", "new_zone": "Novo območje", "passive": "Pasivno", - "passive_note": "Pasivna območja so skrita v \"frontendu\" in jih ne uporabljamo za sledenje naprav. Koristna so, če jih želite uporabiti samo za avtomatizacijo.", + "passive_note": "Pasivna območja so skrita v uporabniškem vmesniku in jih ne uporabljamo za sledenje naprav. Koristna so, če jih želite uporabiti samo za avtomatizacijo.", "radius": "Polmer", "required_error_msg": "To polje je obvezno", "update": "Posodobite" @@ -2330,9 +2509,13 @@ "title": "Stanja" }, "templates": { + "all_listeners": "Ta predloga posluša vse dogodke spremembe stanja.", "description": "Predloge so upodobljene s pomočjo mehanizma za predloge Jinja2 z nekaterimi posebnimi razširitvami Home Assistant.", + "domain": "Domena", "editor": "Urejevalnik predlog", + "entity": "Entiteta", "jinja_documentation": "Dokumentacija predloge Jinja2", + "listeners": "Ta predloga posluša naslednje dogodke spremembe stanja:", "no_listeners": "Ta predloga ne posluša nobenih dogodkov in se ne bo samodejno posodabljala.", "reset": "Ponastavi na demo predlogo", "result_type": "Tip rezultata", @@ -2408,6 +2591,20 @@ "refresh": "Osveži" }, "editor": { + "action-editor": { + "actions": { + "call-service": "Kliči Storitev", + "default_action": "Privzeto dejanje", + "more-info": "Več informacij", + "navigate": "Krmari", + "none": "Brez akcije", + "toggle": "Preklopi", + "url": "URL" + }, + "editor_service_data": "Podatke o storitvah lahko vnesete samo v urejevalniku kode", + "navigation_path": "Navigacijska pot", + "url_path": "Url pot" + }, "card": { "alarm-panel": { "available_states": "Stanja na voljo", @@ -2415,9 +2612,21 @@ "name": "Alarmna plošča" }, "button": { + "default_action_help": "Privzeto dejanje je odvisno od zmožnosti entitete, bodisi se preklopi ali pa se prikaže več informacij.", "description": "Gumbna kartica vam omogoča, da dodate gumbe za opravljanje nalog.", "name": "Gumb" }, + "calendar": { + "calendar_entities": "Entitete koledarja", + "description": "Kartica Koledar prikazuje koledar, ki vključuje poglede dneva, tedna in seznama", + "inital_view": "Začetni pogled", + "name": "Koledar", + "views": { + "dayGridDay": "Dan", + "dayGridMonth": "Mesec", + "listWeek": "Seznam" + } + }, "conditional": { "card": "Kartica", "change_type": "Spremeni tip", @@ -2436,12 +2645,30 @@ "entities": { "description": "Kartica entitet je najpogostejša vrsta kartice. Predmete združuje v sezname.", "edit_special_row": "Podrobnosti te vrstice si oglejte s klikom na gumb za urejanje", + "entity_row_editor": "Urejevalnik vrstic entitete", + "entity_row": { + "attribute": "Atribut", + "button": "Gumb", + "buttons": "Gumbi", + "call-service": "Kliči Storitev", + "conditional": "Pogojno", + "divider": "Razdelilnik", + "section": "Sekcija", + "weblink": "Spletna povezava" + }, "name": "Subjekti", "secondary_info_values": { + "brightness": "Svetlost", + "entity-id": "ID entitete", + "last-changed": "Zadnja sprememba", "last-triggered": "Zadnjič sproženo", - "last-updated": "Zadnja posodobitev" + "last-updated": "Zadnja posodobitev", + "none": "Brez sekundarnih informacij", + "position": "Položaj", + "tilt-position": "Položaj nagiba" }, "show_header_toggle": "Pokaži preklop glave?", + "special_row": "posebna vrstica", "toggle": "Preklopi entitete." }, "entity-filter": { @@ -2488,6 +2715,7 @@ "show_name": "Prikaži ime?", "show_state": "Prikaži stanje?", "state": "Stanje", + "state_color": "Barvne ikone glede na stanje?", "tap_action": "Dejanje dotika", "theme": "Tema", "title": "Naslov", @@ -2505,7 +2733,7 @@ }, "horizontal-stack": { "description": "Kartica Horizontal stack vam omogoča, da skupaj zložite več kart, tako da vedno stojijo drug poleg drugega v razmaku enega stolpca.", - "name": "Vodoravna skladnica" + "name": "Vodoravni sklad" }, "humidifier": { "description": "Kartica \"humidifier\" omogoča nadzor nad vašo vlažilno enoto. Omogoča vam, da spremenite vlažnost in način dela entitete.", @@ -2534,7 +2762,7 @@ "name": "Markdown" }, "media-control": { - "description": "Kartica Media Control se uporablja za prikazovanje subjektov predvajalnikov v vmesniku z enostavnimi kontrolami.", + "description": "Kartica Media Control se uporablja za prikaz entitet predvajalnika na vmesniku s preprostimi kontrolniki.", "name": "Nadzor predvajalnika" }, "picture-elements": { @@ -2542,8 +2770,8 @@ "name": "Slikovni elementi" }, "picture-entity": { - "description": "Kartica Picture entity prikazuje subjekt v obliki slike. Namesto slik z URL-ja lahko prikaže tudi sliko subjektov kamer.", - "name": "Subjekt slike" + "description": "Kartica Slika prikazuje entiteto v obliki slike. Namesto slik z URL-ja lahko prikaže tudi sliko kamer.", + "name": "Slika" }, "picture-glance": { "description": "Kartica Picture Glance prikazuje sliko in ustrezna stanja entitete kot ikono. Subjekti na desni strani omogočajo preklopna dejanja, drugi pa prikazujejo pogovorno okno z več informacijami.", @@ -2561,7 +2789,8 @@ "description": "Kartica Sensor vam omogoča hiter pregled stanja vaših senzorjev z izbirnim grafom, s katerim lahko prikažete spremembe skozi čas.", "graph_detail": "Podrobnosti grafa", "graph_type": "Vrsta grafikona", - "name": "Senzor" + "name": "Senzor", + "show_more_detail": "Pokaži več podrobnosti" }, "shopping-list": { "description": "Kartica nakupovalni seznam omogoča dodajanje, urejanje in brisanje elementov s seznama nakupov.", @@ -2569,12 +2798,12 @@ "name": "Nakupovalni seznam" }, "thermostat": { - "description": "Kartica Termostat omogoča nadzor nad vašo klimatsko enoto. Omogoča vam spreminjanje temperature in načina dela.", + "description": "Kartica Termostat omogoča nadzor nad vašo klimatsko enoto. Omogoča spreminjanje temperature in načina dela.", "name": "Termostat" }, "vertical-stack": { "description": "Kartica Vertical Stack vam omogoča, da združite več kartic, tako da vedno sedijo v istem stolpcu.", - "name": "Navpična skladnica" + "name": "Navpični sklad" }, "weather-forecast": { "description": "Kartica Weather Forecast prikazuje vreme. Zelo koristno za vključiti na vmesnike, ki jih ljudje prikažejo na steni.", @@ -2583,9 +2812,16 @@ } }, "cardpicker": { + "by_card": "Po kartici", + "by_entity": "Po entiteti", "custom_card": "Po meri", + "domain": "Domena", + "entity": "Entiteta", "no_description": "Opis ni na voljo." }, + "edit_badges": { + "panel_mode": "Te značke ne bodo prikazane, ker je ta pogled v načinu \"Panel Mode\"." + }, "edit_card": { "add": "Dodaj kartico", "confirm_cancel": "Ali ste prepričani, da želite preklicati?", @@ -2594,9 +2830,12 @@ "edit": "Uredi", "header": "Nastavitve kartice", "move": "Premakni v pogled", + "move_after": "Premakni kartico po", + "move_before": "Premakni kartico pred", "options": "Več možnosti", "pick_card": "Katero kartico želite dodati?", "pick_card_view_title": "Katero kartico želite dodati v pogled {name}?", + "search_cards": "Poišči kartice", "show_code_editor": "Pokaži urejevalnik kode", "show_visual_editor": "Pokaži vizualni urejevalnik", "toggle_editor": "Preklop na urejevalnik", @@ -2648,7 +2887,7 @@ "error_remove": "Konfiguracije ni mogoče odstraniti: {error}", "error_save_yaml": "YAML-a ni mogoče shraniti: {error}", "header": "Uredi konfiguracijo", - "resources_moved": "Viri se naj ne bi več dodajali v Lovelace konfiguracijo ampak v Lovelace config ploščo.", + "resources_moved": "Virov ne bi smeli več dodajati v konfiguracijo Lovelace, lahko pa jih dodate na konfiguracijski plošči Lovelace.", "save": "Shrani", "saved": "Shranjeno", "unsaved_changes": "Neshranjene spremembe" @@ -2658,7 +2897,7 @@ "close": "Zapri", "empty_config": "Začnite s prazno nadzorno ploščo", "header": "Prevzemite nadzor nad lovelace vmesnikom", - "para": "To nadzorno ploščo trenutno vzdržuje Home Assistant. Samodejno se posodobi, ko bodo na voljo novi subjekti ali komponente Lovelace UI. Če prevzamete nadzor, se ta nadzorna plošča ne bo več samodejno posodabljala. Vedno lahko ustvarite novo nadzorno ploščo v konfiguraciji, s katero se lahko igrate.", + "para": "To nadzorno ploščo trenutno vzdržuje Home Assistant. Samodejno se posodobi, ko bodo na voljo nove entitete ali komponente Lovelace UI. Če prevzamete nadzor, se ta nadzorna plošča ne bo več samodejno posodabljala. Vedno lahko ustvarite novo nadzorno ploščo v konfiguraciji, s katero se lahko igrate.", "para_sure": "Ali ste prepričani, da želite prevzeti nadzor nad vašim vmesnikom?", "save": "Prevzemite nadzor", "yaml_config": "Za začetek vam lahko pomaga trenutne nastavitve te nadzorne plošče:", @@ -2700,7 +2939,7 @@ "available_entities": "To so entitete, ki so vam na voljo, vendar še niso v uporabniškem vmesniku Lovelace.", "domain": "Domena", "entity": "Subjekt", - "entity_id": "ID subjekta", + "entity_id": "ID entitete", "last_changed": "Zadnja sprememba", "no_data": "Najdenih ni bilo neuporabljenih entitet", "search": "Iskanje entitet", @@ -2878,6 +3117,7 @@ "intro": "Pozdravljeni {name}, dobrodošli v Home Assistantu. Kako bi radi poimenovali vaš dom?", "intro_location": "Radi bi vedeli, kje živite. Te informacije vam bodo pomagale pri prikazovanju informacij in postavitvi avtomatizacij, ki temeljijo na soncu. Ti podatki se nikoli ne delijo izven vašega omrežja.", "intro_location_detect": "Lahko vam pomagamo izpolniti te informacije z enkratno zahtevo za zunanjo storitev.", + "location_name": "Ime namestitve Home Assistant", "location_name_default": "Dom" }, "integration": { @@ -2886,6 +3126,12 @@ "more_integrations": "Več" }, "intro": "Ali ste pripravljeni prebuditi svoj dom, povrniti svojo zasebnost in se pridružiti svetovni skupnosti ustvarjalcev?", + "restore": { + "description": "Lahko pa obnovite tudi iz prejšnjega posnetka.", + "hide_log": "Skrij celoten dnevnik", + "in_progress": "Obnavljanje v teku", + "show_log": "Prikaži celoten dnevnik" + }, "user": { "create_account": "Ustvarite račun", "data": { @@ -2917,6 +3163,11 @@ "submit": "Pošlji" }, "current_user": "Trenutno ste prijavljeni kot {fullName}.", + "customize_sidebar": { + "button": "Uredi", + "description": "Če želite aktivirati način urejanja, lahko pritisnete in pridržite glavo stranske vrstice.", + "header": "Spremeni vrstni red in skrij predmete v stranski vrstici" + }, "dashboard": { "description": "Izberite privzeto nadzorno ploščo za to napravo.", "dropdown_label": "Nadzorna plošča", @@ -2943,6 +3194,7 @@ "confirm_delete": "Ali ste prepričani, da želite izbrisati žeton za dostop za {name} ?", "create": "Ustvari žeton", "create_failed": "Ni bilo mogoče ustvariti žetona za dostop.", + "created": "Ustvarjeno {date}", "created_at": "Ustvarjen na {date}", "delete_failed": "Ni bilo mogoče ustvariti žetona za dostop.", "description": "Ustvarite dolgožive žetone dostopa, s katerimi lahko skripte komunicirajo z vašim primerkom Home Assistanta. Vsak žeton bo veljaven 10 let od nastanka. Trenutno so aktivni naslednji dolgotrajni dostopni žetoni.", @@ -2950,6 +3202,7 @@ "header": "Dolgotrajni dostopni žetoni", "last_used": "Nazadnje uporabljen {date} iz {location}", "learn_auth_requests": "Naučite se, kako naredite preverjene zahteve.", + "name": "Ime", "not_used": "Nikoli ni bil uporabljen", "prompt_copy_token": "Kopirate žeton za dostop. Ta ne bo prikazan znova.", "prompt_name": "Dajte žetonu ime" @@ -3020,6 +3273,7 @@ } }, "sidebar": { + "done": "Končano", "external_app_configuration": "Nastavitve aplikacije", "sidebar_toggle": "Preklop stranske vrstice" } diff --git a/translations/frontend/sv.json b/translations/frontend/sv.json index 2182c235e2..20129a006c 100644 --- a/translations/frontend/sv.json +++ b/translations/frontend/sv.json @@ -577,6 +577,8 @@ "messages": { "became_unavailable": "blev otillgänglig", "changed_to_state": "ändrades till {state}", + "cleared_device_class": "rensat (ingen {device_class} upptäckt)", + "detected_device_class": "upptäckt {device_class}", "rose": "gick upp", "set": "gick ned", "turned_off": "Slogs av", @@ -599,6 +601,7 @@ } }, "media-browser": { + "audio_not_supported": "Mediaspelaren i webbläsaren stödjer inte denna typ av musikmedia.", "choose_player": "Välj spelare", "choose-source": "Välj källa", "class": { @@ -645,6 +648,7 @@ "play": "Spela", "play-media": "Spela media", "setup_local_help": "Kontrollera {documentation} om hur du ställer in lokala medier.", + "video_not_supported": "Mediaspelaren i webbläsaren stödjer inte denna typ av videomedia.", "web-browser": "Webbläsare" }, "picture-upload": { @@ -691,6 +695,11 @@ }, "service-picker": { "service": "Tjänst" + }, + "user-picker": { + "add_user": "Lägg till användare", + "no_user": "Ingen användare", + "remove_user": "Ta bort användare" } }, "dialogs": { @@ -733,6 +742,13 @@ "ok": "OK" }, "helper_settings": { + "counter": { + "initial": "Initialt värde", + "maximum": "Maximalt värde", + "minimum": "Minsta värde", + "restore": "Återställ det senast kända värdet när Home Assistant startar", + "step": "Steglängd" + }, "generic": { "icon": "Ikon", "name": "Namn" @@ -768,6 +784,9 @@ }, "platform_not_loaded": "Integrationen {platform} har ej laddats in. Lägg till integrationen genom att lägga till 'default_config:' eller ''{platform}:''.", "required_error_msg": "Det här fältet krävs", + "timer": { + "duration": "Varaktighet" + }, "yaml_not_editable": "Inställningar för denna entitet kan inte ändras från användargränssnittet. Enbart entiteter uppsatta från användargränssnittet är konfigurerbara från användargränssnittet." }, "image_cropper": { @@ -779,6 +798,7 @@ "dismiss": "Avfärda", "edit": "Redigera entitet", "history": "Historik", + "last_changed": "Senast ändrad", "last_updated": "Senast uppdaterad", "person": { "create_zone": "Skapa zon från aktuell plats" @@ -839,18 +859,41 @@ "commands": { "reload": { "automation": "Ladda om automationer", + "command_line": "Ladda om command line entiteter", + "core": "Ladda om plats ", + "filesize": "Ladda om filstorleks ", + "filter": "Ladda om filter entiteter", + "generic": "Ladda om standard IP kamera entiteter", + "generic_thermostat": "Ladda om standard termostat entiteter", + "group": "Ladda om grupper, grupp entiteter och meddelandetjänster", + "history_stats": "Ladda om historisk statistik entiteter", "homekit": "Ladda om HomeKit", + "input_boolean": "Ladda om input boolean", "input_datetime": "Ladda om inmatningsdatum/tid", + "input_number": "Ladda om input nummer", + "input_select": "Ladda om input rullista", + "input_text": "Ladda om input texter", "min_max": "Ladda om min/max entiteter", "mqtt": "Ladda om mqtt entiteter", "person": "Ladda om personer", + "ping": "Ladda om ping och binära sensor entiteter", "reload": "Ladda om {domain}", + "rest": "Ladda om rest entiteter och ", "rpi_gpio": "Ladda om Raspberry Pi GPIO entiteter", "scene": "Ladda om scener", "script": "Ladda om skripts", "smtp": "Ladda om smtp notifieringstjänster", + "statistics": "Ladda om statistik entiteter", "telegram": "Ladda om telegram notifieringstjänster", + "template": "Ladda om mallade entiteter", + "trend": "Ladda om trend entiteter", + "universal": "Ladda om universella mediaspelar entiteter", "zone": "Ladda om zoner" + }, + "server_control": { + "perform_action": "{action} Server", + "restart": "Starta om", + "stop": "Stopp" } }, "filter_placeholder": "Entitetsfilter" @@ -909,11 +952,13 @@ "notification_drawer": { "click_to_configure": "Klicka på knappen för att konfigurera {entity}", "close": "Stäng", + "dismiss_all": "Avfärda alla", "empty": "Inga notiser", "title": "Notiser" }, "notification_toast": { "connection_lost": "Anslutning tappad. Ansluter igen...", + "dismiss": "Avfärda", "service_call_failed": "Misslyckades med att anropa tjänsten {service}.", "started": "Home Assistant har startat!", "starting": "Home Assistant startar, allt är inte tillgängligt förrän uppstarten är klar.", @@ -1167,6 +1212,9 @@ "trigger": "Utlösare" }, "event": { + "context_user_pick": "Lägg till användare", + "context_user_picked": "Användaravfyrning", + "context_users": "Begränsa till händelser som utlöses av", "event_data": "Händelsedata", "event_type": "Händelsetyp", "label": "Händelse" @@ -1476,6 +1524,7 @@ "different_include": "Möjligen via en domain, en glob eller en annan include.", "pick_attribute": "Välj ett attribut att anpassa", "picker": { + "documentation": "Anpassningsdokumentation", "entity": "Entitet", "header": "Anpassningar", "introduction": "Justera attribut per enhet. Tillagda och redigerade anpassningar kommer att tillträda omedelbart. Borttagna anpassningar kommer att träda i kraft när enheten är uppdaterad." @@ -1490,18 +1539,25 @@ "add_prompt": "Inga {name} har lagts till med hjälp av den här enheten ännu. Du kan lägga till genom att klicka på + knappen ovan.", "automation": { "actions": { - "caption": "När något utlöses..." + "caption": "När något utlöses...", + "no_actions": "Inga åtgärder", + "unknown_action": "Okänd åtgärd" }, "automations": "Automatiseringar", "conditions": { - "caption": "Utför endast om..." + "caption": "Utför endast om...", + "no_conditions": "Inga villkor", + "unknown_condition": "Okänt villkor" }, "create": "Skapa automatisering med enheten", "no_automations": "Inga automatiseringar", "no_device_automations": "Det finns inga automatiseringar tillgängliga för den här enheten.", "triggers": { - "caption": "Gör något när ..." - } + "caption": "Gör något när ...", + "no_triggers": "Inga utlösare", + "unknown_trigger": "Okänd utlösare" + }, + "unknown_automation": "Okänd automatisering" }, "cant_edit": "Du kan bara redigera objekt som skapas i användargränssnittet.", "caption": "Enheter", @@ -1563,6 +1619,7 @@ }, "filter": { "filter": "Filter", + "hidden_entities": "{number} dold {number, plural,\n one {entity}\n other {entities}\n}", "show_all": "Visa alla", "show_disabled": "Visa inaktiverade entiteter", "show_readonly": "Visa skrivskyddade entiteter", @@ -1619,11 +1676,13 @@ "no_helpers": "Det verkar som att du inte har några hjälpare än!" }, "types": { + "counter": "Räknare", "input_boolean": "Växla", "input_datetime": "Datum och/eller tid", "input_number": "Nummer", "input_select": "Rullgardinsmenyn", - "input_text": "Text" + "input_text": "Text", + "timer": "Timer" } }, "info": { @@ -1842,6 +1901,8 @@ "network": "Nätverk", "node_id": "Nod-ID", "ozw_instance": "OpenZWave-instans", + "query_stage": "Frågestadium", + "wakeup_instructions": "Väckningsinstruktioner", "zwave": "Z-Wave" }, "device_info": { @@ -1851,11 +1912,18 @@ }, "navigation": { "network": "Nätverk", + "node": { + "config": "Konfiguration", + "dashboard": "Instrumentpanel" + }, "nodes": "Noder", "select_instance": "Välj instans" }, "network_status": { "details": { + "driverallnodesqueried": "Alla noder har frågats", + "driverallnodesqueriedsomedead": "Alla noder har ifrågasatts. Vissa noder hittades döda", + "driverawakenodesqueries": "Alla vakna noder har ifrågasatts", "driverfailed": "Det gick inte att ansluta till Z-Wave-styrenheten", "driverready": "Initierar Z-Wave-styrenheten", "driverremoved": "Drivrutinen har tagits bort", @@ -1876,19 +1944,33 @@ "introduction": "Hantera nätverksövergripande funktioner.", "node_count": "{count} noder" }, + "node_config": { + "header": "Nodkonfiguration", + "help_source": "Config-parameterbeskrivningar och hjälptext tillhandahålls av OpenZWave-projektet.", + "introduction": "Hantera de olika konfigurationsparametrarna för en Z-Wave-nod.", + "wakeup_help": "Batteridrivna noder måste vara vaken för att ändra konfigurationen. Om noden inte är vaken kommer OpenZWave att försöka uppdatera nodens konfiguration nästa gång den vaknar, vilket kan vara flera timmar (eller dagar) senare. Följ dessa steg för att väcka enheten:" + }, + "node_metadata": { + "product_manual": "Produktmanual" + }, "node_query_stages": { "associations": "Uppdaterar associationsgrupper och medlemskap", + "cacheload": "Laddar information från OpenZWave-cachefilen. Batterinoder förblir i detta skede tills noden vaknar.", "complete": "Intervjuprocessen är klar", "configuration": "Hämtar konfigurationsvärden från noden", "dynamic": "Hämtar värden som ofta ändras från noden", "instances": "Inhämtar detaljer om vilka instanser eller kanaler en enhet stöder", "manufacturerspecific1": "Inhämtar tillverkar- och produkt-ID-koder från noden", + "manufacturerspecific2": "Skaffa ytterligare tillverkar- och produkt-ID-koder från noden", "neighbors": "Hämtar en lista över nodens grannar", + "nodeinfo": "Skaffa kommandoklasser som stöds från noden", "nodeplusinfo": "Hämtar Z-Wave+-information från noden", "probe": "Kontrollera om noden är vaken / levande", + "protocolinfo": "Hämta grundläggande Z-Wave-funktioner för denna nod från styrenheten", "session": "Hämtar värden som sällan ändras från noden", "static": "Hämtar statiska värden från enheten", - "versions": "Inhämtar information om firmware och kommandoklassversioner" + "versions": "Inhämtar information om firmware och kommandoklassversioner", + "wakeup": "Ställa in stöd för väckarköer och meddelanden" }, "node": { "button": "Noddetaljer", @@ -1899,6 +1981,7 @@ "id": "ID", "manufacturer": "Tillverkare", "model": "Modell", + "query_stage": "Frågestadium", "zwave_plus": "Z-Wave Plus" }, "refresh_node": { @@ -1921,6 +2004,7 @@ }, "services": { "add_node": "Lägg till nod", + "cancel_command": "Avbryt kommandot", "remove_node": "Ta bort nod" } }, @@ -2055,11 +2139,15 @@ "section": { "reloading": { "automation": "Ladda om automatiseringar", + "command_line": "Ladda om command line entiteter", "core": "Ladda om plats & anpassningar", + "filesize": "Ladda om filstorleks entiteter", "filter": "Ladda om filterentiteter", "generic": "Ladda om generella IP kamera entiteter", + "generic_thermostat": "Ladda om standard termometer entiteter", "group": "Ladda om grupper", "heading": "YAML-konfiguration laddas om", + "history_stats": "Ladda om historiskstatistik entiteter", "homekit": "Ladda om HomeKit", "input_boolean": "Ladda om inmatning av booleska värden", "input_datetime": "Ladda om inmatningsdatum/tid", @@ -2067,15 +2155,21 @@ "input_select": "Ladda om inmatningsväljare", "input_text": "Ladda om inmatningstext", "introduction": "Vissa delar av Home Assistant kan laddas om utan att en omstart krävs. Att trycka på \"ladda om\" innebär att den nuvarande konfiguration inaktiveras och den nya laddas.", + "min_max": "Ladda om min/max entiteter", "mqtt": "Ladda om MQTT entiteter", "person": "Ladda om personer", + "ping": "Ladda om ping binära sensor entiteter", "reload": "Ladda om {domain}", + "rest": "Ladda om rest entiteter och aviseringstjänster", "rpi_gpio": "Ladda om Raspberry Pi GPIO-entiteter", "scene": "Ladda om scenarier", "script": "Ladda om skript", "smtp": "Ladda om SMTP aviseringstjänster", + "statistics": "Ladda om statistik entiteter", "telegram": "Ladda om Telegram aviseringstjänster", "template": "Ladda om mallar för entiteter", + "trend": "Ladda om trend entiteter", + "universal": "Ladda om universella mediespelare entiteter", "zone": "Ladda om zoner" }, "server_management": { @@ -2102,6 +2196,7 @@ "create_automation": "Skapa automatisering med tagg", "description": "Hantera taggar", "detail": { + "companion_apps": "kompletterande appar", "create": "Skapa", "create_and_write": "Skapa och redigera", "delete": "Ta bort", @@ -2110,13 +2205,15 @@ "new_tag": "Ny tagg", "tag_id": "Tagg-ID", "tag_id_placeholder": "Autogenereras när det lämnas tomt", - "update": "Uppdatera" + "update": "Uppdatera", + "usage": "En tagg kan utlösa en automatisering när den skannas, du kan använda NFC-taggar, QR-koder eller någon annan typ av tagg. Använd vår {companion_link} att skriva den här taggen till en programmerbar NFC-tagg eller skapa en QR-kod nedan." }, "edit": "Redigera", "headers": { "last_scanned": "Senast skannad", "name": "Namn" }, + "learn_more": "Lär dig mer om utlösare", "never_scanned": "Aldrig skannad", "no_tags": "Inga taggar", "write": "Redigera" @@ -2279,7 +2376,7 @@ "create": "Skapa", "delete": "Radera", "icon": "Ikon", - "icon_error_msg": "Ikonen ska vara i format prefix:ikonnamn, till exempel: mdi:home", + "icon_error_msg": "Ikonen ska vara i format \"prefix:ikonnamn\", till exempel: \"mdi:home\"", "latitude": "Latitud", "longitude": "Longitud", "name": "Namn", @@ -2452,7 +2549,9 @@ "listeners": "Den här mallen lyssnar efter följande tillståndsändrade händelser:", "no_listeners": "Den här mallen lyssnar inte efter några tillståndsändrade händelser och uppdateras inte automatiskt.", "reset": "Återställ till demomall", + "result_type": "Resultattyp", "template_extensions": "Mallutökningar för Home Assistant", + "time": "Den här mallen uppdateras i början av varje minut.", "title": "Mallar", "unknown_error_template": "Okänt fel vid rendering av mall" } @@ -2525,6 +2624,7 @@ "editor": { "action-editor": { "actions": { + "call-service": "Anropa tjänst", "default_action": "Standardåtgärd", "more-info": "Mer information", "navigate": "Navigera", @@ -2533,6 +2633,7 @@ "url": "URL" }, "editor_service_data": "Data för en tjänst kan bara anges i kodredigeraren", + "navigation_path": "Navigationsväg", "url_path": "Sökväg till URL" }, "card": { @@ -2542,11 +2643,14 @@ "name": "Larmpanel" }, "button": { + "default_action_help": "Standardåtgärden beror på enhetens funktioner, den växlas antingen eller mer information visas.", "description": "Knappkortet låter dig lägga till knappar för att utföra uppgifter.", "name": "Knapp" }, "calendar": { + "calendar_entities": "Kalenderentiteter", "description": "Kalenderkortet visar en kalender med dag-, vecka- och listvyer", + "inital_view": "Ursprunglig vy", "name": "Kalender", "views": { "dayGridDay": "Dag", @@ -2572,6 +2676,7 @@ "entities": { "description": "Entitetskortet är den vanligaste korttypen. Det grupperar objekt i listor.", "edit_special_row": "Visa detaljerna för denna rad genom att klicka på redigeringsknappen", + "entity_row_editor": "Enhetsradredigerare", "entity_row": { "attribute": "Attribut", "button": "Knapp", @@ -2589,6 +2694,7 @@ "entity-id": "Entitets-ID", "last-changed": "Senast ändrad", "last-triggered": "Senast utlöst", + "last-updated": "Senast uppdaterad", "none": "Ingen sekundärinformation", "position": "Position", "tilt-position": "Lutningsposition" @@ -2745,6 +2851,9 @@ "entity": "Entitet", "no_description": "Ingen beskrivning finns tillgänglig." }, + "edit_badges": { + "panel_mode": "Dessa märken visas inte eftersom den här vyn är i \"Panelläge\"." + }, "edit_card": { "add": "Lägg till kort", "confirm_cancel": "Är du säker på att du vill avbryta?", @@ -2850,7 +2959,8 @@ "exit_edit_mode": "Avsluta UI-redigeringsläge", "help": "Hjälp", "refresh": "Uppdatera", - "reload_resources": "Ladda om resurser" + "reload_resources": "Ladda om resurser", + "start_conversation": "Starta konversation" }, "reload_lovelace": "Ladda om användargränssnittet", "reload_resources": { @@ -3095,6 +3205,10 @@ "dropdown_label": "Instrumentpanel", "header": "Instrumentpanel" }, + "enable_shortcuts": { + "description": "Aktivera eller inaktivera kortkommandon för att utföra olika åtgärder i användargränssnittet.", + "header": "Tangentbordsgenvägar" + }, "force_narrow": { "description": "Detta kommer att dölja sidofältet som standard, liknande mobilupplevelsen.", "header": "Göm alltid sidofältet" @@ -3139,6 +3253,10 @@ "header": "Tvåfaktorsautentiseringsmoduler" }, "push_notifications": { + "add_device_prompt": { + "input_label": "Enhetsnamn", + "title": "Vad ska den här enheten kallas?" + }, "description": "Skicka meddelanden till den här enheten", "error_load_platform": "Konfigurera notify.html5.", "error_use_https": "Kräver att SSL är aktiverat för frontend.", diff --git a/translations/frontend/zh-Hans.json b/translations/frontend/zh-Hans.json index 86887903a6..18a93d2ee4 100644 --- a/translations/frontend/zh-Hans.json +++ b/translations/frontend/zh-Hans.json @@ -1654,7 +1654,7 @@ }, "filtering": { "clear": "清除", - "filtering_by": "筛选方式" + "filtering_by": "正在筛选:" }, "header": "配置 Home Assistant", "helpers": { @@ -1774,7 +1774,7 @@ "show_ignored": "显示忽略的集成", "stop_ignore": "不再忽略" }, - "integration": "个集成", + "integration": "集成", "integration_not_found": "未找到集成。", "new": "设置新集成", "no_integrations": "您好像还没有配置任何集成。点击下面的按钮来添加第一个集成!", From 3b91343082f0079d4550931c5cec31f75595a34e Mon Sep 17 00:00:00 2001 From: Ryan Meek <25127328+maykar@users.noreply.github.com> Date: Sun, 1 Nov 2020 16:04:27 -0500 Subject: [PATCH 065/125] Dark mode header color (#7514) Co-authored-by: Bram Kragten --- src/common/color/convert-color.ts | 13 ++---------- src/common/color/hex.ts | 24 +++++++++++++++++++++++ src/common/dom/apply_themes_on_element.ts | 8 ++++++++ src/resources/styles.ts | 2 +- 4 files changed, 35 insertions(+), 12 deletions(-) create mode 100644 src/common/color/hex.ts diff --git a/src/common/color/convert-color.ts b/src/common/color/convert-color.ts index f48e6184a0..29f95b4283 100644 --- a/src/common/color/convert-color.ts +++ b/src/common/color/convert-color.ts @@ -1,10 +1,4 @@ -const expand_hex = (hex: string): string => { - let result = ""; - for (const val of hex) { - result += val + val; - } - return result; -}; +import { expandHex } from "./hex"; const rgb_hex = (component: number): string => { const hex = Math.round(Math.min(Math.max(component, 0), 255)).toString(16); @@ -14,10 +8,7 @@ const rgb_hex = (component: number): string => { // Conversion between HEX and RGB export const hex2rgb = (hex: string): [number, number, number] => { - hex = hex.replace("#", ""); - if (hex.length === 3 || hex.length === 4) { - hex = expand_hex(hex); - } + hex = expandHex(hex); return [ parseInt(hex.substring(0, 2), 16), diff --git a/src/common/color/hex.ts b/src/common/color/hex.ts new file mode 100644 index 0000000000..a25b6d6442 --- /dev/null +++ b/src/common/color/hex.ts @@ -0,0 +1,24 @@ +export const expandHex = (hex: string): string => { + hex = hex.replace("#", ""); + if (hex.length === 6) return hex; + let result = ""; + for (const val of hex) { + result += val + val; + } + return result; +}; + +// Blend 2 hex colors: c1 is placed over c2, blend is c1's opacity. +export const hexBlend = (c1: string, c2: string, blend = 50): string => { + let color = ""; + c1 = expandHex(c1); + c2 = expandHex(c2); + for (let i = 0; i <= 5; i += 2) { + const h1 = parseInt(c1.substr(i, 2), 16); + const h2 = parseInt(c2.substr(i, 2), 16); + let hex = Math.floor(h2 + (h1 - h2) * (blend / 100)).toString(16); + while (hex.length < 2) hex = "0" + hex; + color += hex; + } + return `#${color}`; +}; diff --git a/src/common/dom/apply_themes_on_element.ts b/src/common/dom/apply_themes_on_element.ts index 902a1a196a..4e1aeb9ec6 100644 --- a/src/common/dom/apply_themes_on_element.ts +++ b/src/common/dom/apply_themes_on_element.ts @@ -7,6 +7,7 @@ import { rgb2hex, rgb2lab, } from "../color/convert-color"; +import { hexBlend } from "../color/hex"; import { labBrighten, labDarken } from "../color/lab"; import { rgbContrast } from "../color/rgb"; @@ -37,6 +38,13 @@ export const applyThemesOnElement = ( if (themeOptions.dark) { cacheKey = `${cacheKey}__dark`; themeRules = darkStyles; + if (themeOptions.primaryColor) { + themeRules["app-header-background-color"] = hexBlend( + themeOptions.primaryColor, + "#121212", + 8 + ); + } } if (themeOptions.primaryColor) { cacheKey = `${cacheKey}__primary_${themeOptions.primaryColor}`; diff --git a/src/resources/styles.ts b/src/resources/styles.ts index 2313327b54..c263427770 100644 --- a/src/resources/styles.ts +++ b/src/resources/styles.ts @@ -8,7 +8,7 @@ export const darkStyles = { "secondary-text-color": "#9b9b9b", "disabled-text-color": "#6f6f6f", "app-header-text-color": "#e1e1e1", - "app-header-background-color": "#1c1c1c", + "app-header-background-color": "#101e24", "switch-unchecked-button-color": "#999999", "switch-unchecked-track-color": "#9b9b9b", "divider-color": "rgba(225, 225, 225, .12)", From 199e17d0b11e57e75ea6b784f8a2d24f6e784abd Mon Sep 17 00:00:00 2001 From: Ryan Meek <25127328+maykar@users.noreply.github.com> Date: Sun, 1 Nov 2020 16:04:52 -0500 Subject: [PATCH 066/125] Use paper-tabs while in edit mode (#7563) Co-authored-by: Bram Kragten --- src/panels/lovelace/hui-root.ts | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/panels/lovelace/hui-root.ts b/src/panels/lovelace/hui-root.ts index ad92d4a9f8..77f0ca4199 100644 --- a/src/panels/lovelace/hui-root.ts +++ b/src/panels/lovelace/hui-root.ts @@ -17,6 +17,7 @@ import "@polymer/app-layout/app-header/app-header"; import "@polymer/app-layout/app-scroll-effects/effects/waterfall"; import "@polymer/app-layout/app-toolbar/app-toolbar"; import "@polymer/paper-tabs/paper-tab"; +import "@polymer/paper-tabs/paper-tabs"; import { css, CSSResult, @@ -381,7 +382,7 @@ class HUIRoot extends LitElement { ${this._editMode ? html`
- ` : ""} - +
` : ""} @@ -798,13 +799,17 @@ class HUIRoot extends LitElement { width: 100%; height: 100%; margin-left: 4px; + } + paper-tabs { + margin-left: 12px; + margin-left: max(env(safe-area-inset-left), 12px); + margin-right: env(safe-area-inset-right); + } + ha-tabs, paper-tabs { --paper-tabs-selection-bar-color: var(--text-primary-color, #fff); text-transform: uppercase; } - .edit-mode ha-tabs { - margin-left: max(env(safe-area-inset-left), 24px); - margin-right: max(env(safe-area-inset-right), 24px); - } + .edit-mode { background-color: var(--dark-color, #455a64); color: var(--text-dark-color); From 57500f6c9796d9e6b7dd963c281b0e1307ad04b7 Mon Sep 17 00:00:00 2001 From: HomeAssistant Azure Date: Mon, 2 Nov 2020 00:32:22 +0000 Subject: [PATCH 067/125] [ci skip] Translation update --- translations/frontend/ca.json | 4 ++-- translations/frontend/el.json | 36 +++++++++++++++++------------------ translations/frontend/et.json | 2 +- translations/frontend/fr.json | 1 + translations/frontend/hu.json | 16 ++++++++-------- translations/frontend/ru.json | 2 +- translations/frontend/sl.json | 4 ++-- 7 files changed, 33 insertions(+), 32 deletions(-) diff --git a/translations/frontend/ca.json b/translations/frontend/ca.json index dd83cc294e..31ac096b02 100644 --- a/translations/frontend/ca.json +++ b/translations/frontend/ca.json @@ -798,7 +798,7 @@ "dismiss": "Desestimar el diàleg", "edit": "Edita entitat", "history": "Historial", - "last_changed": "Darrera canvi", + "last_changed": "Darrer canvi", "last_updated": "Última actualització", "person": { "create_zone": "Crea una zona a partir de la ubicació actual" @@ -3255,7 +3255,7 @@ "push_notifications": { "add_device_prompt": { "input_label": "Nom del dispositiu", - "title": "Com s'ha d'anomenar aquest dispositiu?" + "title": "Com vols anomenar aquest dispositiu?" }, "description": "Envia notificacions a aquest dispositiu.", "error_load_platform": "Configurar notify.html5.", diff --git a/translations/frontend/el.json b/translations/frontend/el.json index 80d31314c1..c0cb9cf939 100644 --- a/translations/frontend/el.json +++ b/translations/frontend/el.json @@ -439,7 +439,7 @@ }, "script": { "cancel": "Ακύρωση", - "cancel_multiple": "Ακύρωση {αριθμός}", + "cancel_multiple": "Ακύρωση {number}", "execute": "Εκτέλεση" }, "service": { @@ -634,7 +634,7 @@ "server": "Διακομιστής" }, "documentation": "τεκμηρίωση", - "learn_adding_local_media": "Μάθετε περισσότερα σχετικά με την προσθήκη πολυμέσων στην {τεκμηρίωση}.", + "learn_adding_local_media": "Μάθετε περισσότερα σχετικά με την προσθήκη πολυμέσων στην {documentation} .", "local_media_files": "Τοποθετήστε τα αρχεία βίντεο, ήχου και εικόνας στον κατάλογο πολυμέσων για να μπορείτε να περιηγηθείτε και να τα αναπαραγάγετε στο πρόγραμμα περιήγησης ή σε υποστηριζόμενες συσκευές αναπαραγωγής πολυμέσων.", "media_browsing_error": "Σφάλμα περιήγησης πολυμέσων", "media_not_supported": "Το Πρόγραμμα αναπαραγωγής πολυμέσων του προγράμματος περιήγησης δεν υποστηρίζει αυτόν τον τύπο πολυμέσων", @@ -647,7 +647,7 @@ "pick-media": "Επιλογή μέσων", "play": "Αναπαραγωγή", "play-media": "Αναπαραγωγή πολυμέσων", - "setup_local_help": "Ελέγξτε την {τεκμηρίωση} σχετικά με τον τρόπο ρύθμισης των τοπικών μέσων.", + "setup_local_help": "Ελέγξτε την {documentation} σχετικά με τον τρόπο ρύθμισης τοπικών μέσων.", "video_not_supported": "Το πρόγραμμα περιήγησής σας δεν υποστηρίζει το στοιχείο βίντεο.", "web-browser": "Φυλλομετρητής" }, @@ -1024,7 +1024,7 @@ "conditions": "Συνθήκες", "default": "Προεπιλεγμένες ενέργειες", "label": "Επιλέξτε", - "option": "Επιλογή {αριθμός}", + "option": "Επιλογή {number}", "remove_option": "Κατάργηση επιλογής", "sequence": "Ενέργειες" }, @@ -1384,11 +1384,11 @@ "dont_expose_entity": "Να μην εκτεθεί η οντότητα", "expose": "Έκθεση στο Alexa", "expose_entity": "Έκθεση οντότητας", - "exposed": "{επιλεγμένο} εκτεθειμένο", + "exposed": "{selected} εκτεθειμένο", "exposed_entities": "Εκτεθειμένες οντότητες", "follow_domain": "Παρακολούθηση τομέα", "manage_domains": "Διαχείριση τομέων", - "not_exposed": "{επιλεγμένο} δεν εκτίθεται", + "not_exposed": "{selected} μη εκτεθειμένο", "not_exposed_entities": "Μη εκτεθειμένες οντότητες", "title": "Alexa" }, @@ -1429,11 +1429,11 @@ "dont_expose_entity": "Να μην εκτεθεί η οντότητα", "expose": "Έκθεση στο Google Assistant.", "expose_entity": "Έκθεση οντότητας", - "exposed": "{επιλεγμένο} εκτεθειμένο", + "exposed": "{selected} εκτεθειμένο", "exposed_entities": "Εκτεθειμένες οντότητες", "follow_domain": "Παρακολούθηση τομέα", "manage_domains": "Διαχείριση τομέων", - "not_exposed": "{επιλεγμένο} μη-εκτεθειμένο", + "not_exposed": "{selected} μη εκτεθειμένο", "not_exposed_entities": "Μη εκτεθειμένες οντότητες", "sync_to_google": "Συγχρονισμός αλλαγών στο Google.", "title": "Google Assistant" @@ -1580,7 +1580,7 @@ "device_not_found": "Η συσκευή δε βρέθηκε.", "entities": { "add_entities_lovelace": "Προσθήκη στο Lovelace", - "disabled_entities": "+{count} {count, πληθυντικός,\n μία {απενεργοποιημένη οντότητα}\n άλλες {απενεργοποιημένες οντότητες}\n}", + "disabled_entities": "+{count} {count, plural,\n one {απενεργοποιημένη οντότηταy}\n other {απενεργοποιημένες οντότητες}\n}", "entities": "Οντότητες", "hide_disabled": "Η απόκρυψη είναι απενεργοποιημένη", "none": "Αυτή η συσκευή δεν έχει οντότητες" @@ -1619,7 +1619,7 @@ }, "filter": { "filter": "Φίλτρο", - "hidden_entities": "{αριθμός} κρυφό {αριθμός, πληθυντικός,\n μία {οντότητα}\n άλλες {οντότητες}\n}", + "hidden_entities": "{number} κρυφό {number, plural,\n one {οντότητα}\n other {οντότητες}\n}", "show_all": "Εμφάνιση όλων", "show_disabled": "Προβολή απενεργοποιημένων οντοτήτων", "show_readonly": "Εμφάνιση οντοτήτων μόνο για ανάγνωση", @@ -1636,7 +1636,7 @@ "introduction2": "Χρησιμοποιήστε το μητρώο οντοτήτων για να παρακάμψετε το όνομα, να αλλάξετε το αναγνωριστικό οντότητας ή να καταργήσετε την καταχώριση από το Home Assistant.", "remove_selected": { "button": "Αφαίρεση επιλεγμένων", - "confirm_partly_text": "Μπορείτε να καταργήσετε μόνο {αφαιρούμενες} από τις επιλεγμένες {επιλεγμένες} οντότητες. Οι οντότητες μπορούν να καταργηθούν μόνο όταν η ενσωμάτωση δεν παρέχει πλέον τις οντότητες. Μερικές φορές πρέπει να κάνετε επανεκκίνηση του Home Assistant για να μπορέσετε να καταργήσετε τις οντότητες μιας ενσωμάτωσης που καταργήθηκε. Είστε βέβαιοι ότι θέλετε να καταργήσετε τις αφαιρούμενες οντότητες;", + "confirm_partly_text": "Μπορείτε να αφαιρέσετε μόνο {removable} από τις επιλεγμένες {selected} οντότητες. Οι οντότητες μπορούν να καταργηθούν μόνο όταν η ενοποίηση δεν παρέχει πλέον τις οντότητες. Μερικές φορές πρέπει να κάνετε επανεκκίνηση του Home Assistant για να μπορέσετε να καταργήσετε τις οντότητες μιας καταργημένης ενοποίησης. Είστε βέβαιοι ότι θέλετε να καταργήσετε τις αφαιρούμενες οντότητες;", "confirm_partly_title": "Μόνο {number} επιλεγμένες οντότητες μπορούν να καταργηθούν.", "confirm_text": "Θα πρέπει να τα αφαιρέσετε από το Lovelace config και τους αυτοματισμούς σας εάν περιέχουν αυτές τις οντότητες.", "confirm_title": "θέλετε να αφαιρέσετε {number} οντότητες;" @@ -1662,7 +1662,7 @@ "description": "Διαχειριστείτε στοιχεία που βοηθούν στη δημιουργία αυτοματισμών", "dialog": { "add_helper": "Προσθήκη βοηθού", - "add_platform": "Προσθήκη {πλατφόρμας}", + "add_platform": "Προσθήκη {platform}", "create": "Δημιουργία" }, "picker": { @@ -2159,7 +2159,7 @@ "mqtt": "Επανάληψη φόρτωσης μη αυτόματα ρυθμισμένων οντοτήτων mqtt", "person": "Επαναφόρτωση ατόμων", "ping": "Επαναφόρτωση οντοτήτων δυαδικών αισθητήρων ping", - "reload": "Επαναφόρτωση {τομέα}", + "reload": "Επαναφόρτωση {domain}", "rest": "Επαναφόρτωση οντοτήτων ανάπαυσης και ειδοποίηση υπηρεσιών", "rpi_gpio": "Επαναφόρτωση οντοτήτων Raspberry Pi GPIO", "scene": "Επαναφόρτωση σκηνών", @@ -2348,7 +2348,7 @@ "zha_zigbee_groups": "ZHA oμάδες Zigbee" }, "header": "Διαμόρφωση οικιακού αυτοματισμού Zigbee", - "introduction": "Εδώ μπορείς να παραμετροποιήσεις την ενοποίηση ZHA. Δεν είναι ακόμα δυνατό να παραμετροποιηθούν τα πάντα μέσω του γραφικού περιβάλλοντος εργασίας, αλλά το δουλεύουμε.", + "introduction": "Εδώ είναι δυνατό να ρυθμίσετε τις παραμέτρους του στοιχείου ZHA. Δεν είναι όλα δυνατά για να ρυθμίσετε από το ui ακόμα, αλλά εργαζόμαστε σε αυτό.", "network_management": { "header": "Διαχείριση δικτύου", "introduction": "Εντολές που επηρεάζουν ολόκληρο το δίκτυο" @@ -2363,7 +2363,7 @@ "hint_wakeup": "Μερικές συσκευές όπως οι αισθητήρες Xiaomi έχουν ένα κουμπί αφύπνισης το οποίο μπορείτε να πιέσετε για διαστήματα των ~5 δευτερολέπτων ώστε να κρατήσετε τις συσκευές αφυπνισμένες ενώ αλληλεπιδράτε μαζί τους.", "introduction": "Εκτελέστε εντολές ZHA που επηρεάζουν μια μόνο συσκευή. Επιλέξτε μια συσκευή για να δείτε μια λίστα διαθέσιμων εντολών." }, - "title": "Zigbee Home Automation" + "title": "Οικιακός Αυτοματισμός Zigbee" }, "zone": { "add_zone": "Προσθήκη ζώνης", @@ -2497,7 +2497,7 @@ "data": "Δεδομένα συμβάντος (YAML, προαιρετικό)", "description": "Πυροδοτήστε ένα συμβάν στο δίαυλο συμβάντων.", "documentation": "Έγγραφα συμβάντων", - "event_fired": "Το συμβάν {type} πυροδοτήθηκε επιτυχώς", + "event_fired": "Το συμβάν {name} ενεργοποιήθηκε", "fire_event": "Εκκίνηση συμβάντος", "listen_to_events": "Επισκόπηση συμβάντων", "listening_to": "Ακούω", @@ -2871,7 +2871,7 @@ "show_code_editor": "Εμφάνιση επεξεργαστή κώδικα", "show_visual_editor": "Εμφάνιση οπτικού προγράμματος επεξεργασίας", "toggle_editor": "Εναλλαγή κειμενογράφου", - "typed_header": "{τύπος} Διαμόρφωση κάρτας", + "typed_header": "{type} Διαμόρφωση κάρτας", "unsaved_changes": "Έχετε μη αποθηκευμένες αλλαγές" }, "edit_lovelace": { @@ -3226,7 +3226,7 @@ "confirm_delete": "Είστε σίγουρος ότι θέλετε να διαγράψετε το διακριτικό πρόσβασης για το {name};", "create": "Δημιουργία Διακριτικού", "create_failed": "Αδύνατη η δημιουργία του τρέχοντος διακριτικού.", - "created": "Δημιουργήθηκε {ημερομηνία}", + "created": "Δημιουργήθηκε {date}", "created_at": "Δημιουργήθηκε στις {date}", "delete_failed": "Αδύνατη η διαγραφή του τρέχοντος διακριτικού.", "description": "Δημιουργήστε διακριτικά πρόσβασης μακράς διάρκειας για να επιτρέψετε στα σενάρια σας να αλληλεπιδρούν με το Home Assistant. Κάθε διακριτικό θα ισχύει για 10 χρόνια. Τα παρακάτω διακριτικά πρόσβασης μακράς διαρκείας είναι ενεργά.", diff --git a/translations/frontend/et.json b/translations/frontend/et.json index 9fcce1c30b..ef98cca5e0 100644 --- a/translations/frontend/et.json +++ b/translations/frontend/et.json @@ -669,7 +669,7 @@ "relative_time": { "duration": { "day": "{count} {count, plural,\n one {päev}\n other {päeva}\n}", - "hour": "{count} {count, plural,\n one {tund}\n other {tundi}\n}", + "hour": "{count} {count, plural,\n one {tund}\n other {tunni}\n}", "minute": "{count} {count, plural,\n one {minut}\n other {minutit}\n}", "second": "{count} {count, plural,\n one {sekund}\n other {sekundit}\n}", "week": "{count} {count, plural,\n one {nädal}\n other {nädalat}\n}" diff --git a/translations/frontend/fr.json b/translations/frontend/fr.json index ae6298a82b..87f75bf4ef 100644 --- a/translations/frontend/fr.json +++ b/translations/frontend/fr.json @@ -798,6 +798,7 @@ "dismiss": "Fermer la fenêtre de dialogue", "edit": "Modifier l'entité", "history": "Historique", + "last_changed": "Dernière modification", "last_updated": "Dernière mise à jour", "person": { "create_zone": "Créer une zone à partir de l'emplacement actuel" diff --git a/translations/frontend/hu.json b/translations/frontend/hu.json index 57feb0f3cb..416447bb2e 100644 --- a/translations/frontend/hu.json +++ b/translations/frontend/hu.json @@ -868,11 +868,11 @@ "group": "Csoportok, csoport entitások és értesítési szolgáltatások újratöltése", "history_stats": "Előzmény statisztika entitások újratöltése", "homekit": "HomeKit újratöltése", - "input_boolean": "Bemeneti logikai változók újratöltése", + "input_boolean": "Logikai változó bemenetek újratöltése", "input_datetime": "Időpont bemenetek újratöltése", "input_number": "Szám bemenetek újratöltése", "input_select": "Választási bemenetek újratöltése", - "input_text": "Bemeneti szövegek újratöltése", + "input_text": "Szöveg bemenetek újratöltése", "min_max": "Min/max entitások újratöltése", "mqtt": "MQTT entitások újratöltése", "person": "Személyek újratöltése", @@ -885,7 +885,7 @@ "smtp": "Smtp értesítési szolgáltatások újratöltése", "statistics": "Statisztikai entitások újratöltése", "telegram": "Telegram értesítési szolgáltatások újratöltése", - "template": "Sablonentitások újratöltése", + "template": "Sablon entitások újratöltése", "trend": "Trend entitások újratöltése", "universal": "Univerzális médialejátszó entitások újratöltése", "zone": "Zónák újratöltése" @@ -1367,7 +1367,7 @@ "sign_out": "Kijelentkezés", "thank_you_note": "Köszönjük, hogy a Home Assistant Felhő részese vagy. Az olyan emberek miatt, mint te, vagyunk képesek mindenki számára nagyszerű otthoni automatizálási élményt nyújtani. Köszönjük!", "webhooks": { - "disable_hook_error_msg": "A webhook letiltása sikertelen:", + "disable_hook_error_msg": "Nem sikerült letiltani a webhookot:", "info": "Bármihez, ami úgy van beállítva, hogy egy webhook által elindulhasson, létrehozható egy nyilvánosan elérhető URL, ami lehetővé teszi, hogy adatokat küldhess vissza a Home Assistant számára bárhonnan, anélkül, hogy kinyitnád a rendszered az internet felé.", "link_learn_more": "Tudj meg többet a webhook-alapú automatizálások létrehozásáról.", "loading": "Betöltés...", @@ -1677,7 +1677,7 @@ }, "types": { "counter": "Számláló", - "input_boolean": "Váltás", + "input_boolean": "Váltó", "input_datetime": "Dátum és/vagy idő", "input_number": "Szám", "input_select": "Legördülő", @@ -2149,11 +2149,11 @@ "heading": "YAML konfiguráció újratöltése", "history_stats": "Előzmény statisztika entitások újratöltése", "homekit": "HomeKit újratöltése", - "input_boolean": "Bemeneti logikai változók újratöltése", + "input_boolean": "Logikai változó bemenetek újratöltése", "input_datetime": "Időpont bemenetek újratöltése", "input_number": "Szám bemenetek újratöltése", "input_select": "Választási bemenetek újratöltése", - "input_text": "Bemeneti szövegek újratöltése", + "input_text": "Szöveg bemenetek újratöltése", "introduction": "A Home Assistant bizonyos részei újraindítás nélkül újratölthetőek. Újratöltéskor az aktuálisan betöltött YAML konfiguráció helyére betöltődik az új.", "min_max": "Min/max entitások újratöltése", "mqtt": "MQTT entitások újratöltése", @@ -2167,7 +2167,7 @@ "smtp": "Smtp értesítési szolgáltatások újratöltése", "statistics": "Statisztikai entitások újratöltése", "telegram": "Telegram értesítési szolgáltatások újratöltése", - "template": "Sablonentitások újratöltése", + "template": "Sablon entitások újratöltése", "trend": "Trend entitások újratöltése", "universal": "Univerzális médialejátszó entitások újratöltése", "zone": "Zónák újratöltése" diff --git a/translations/frontend/ru.json b/translations/frontend/ru.json index 29b99fc5e9..c2cc7d546d 100644 --- a/translations/frontend/ru.json +++ b/translations/frontend/ru.json @@ -377,7 +377,7 @@ "low": "низкий", "on_off": "Вкл / Выкл", "operation": "Режим работы", - "preset_mode": "Набор настроек", + "preset_mode": "Предустановка", "swing_mode": "Режим качания воздушных шторок", "target_humidity": "Заданная влажность", "target_temperature": "Заданная температура", diff --git a/translations/frontend/sl.json b/translations/frontend/sl.json index ded5af72af..2ade9347f5 100644 --- a/translations/frontend/sl.json +++ b/translations/frontend/sl.json @@ -2128,7 +2128,7 @@ "mqtt": "Ročno osveži konfigurirane entitete MQTT", "person": "Ponovno naloži osebe", "ping": "Znova naloži entitete binarnega senzorja PING", - "reload": "Ponovno naloži {domain}", + "reload": "Znova naloži {domain}", "rest": "Znova naloži entitete REST in storitve obveščanja", "rpi_gpio": "Znova naloži entitete GPIO z Raspberry Pi", "scene": "Ponovno naloži scene", @@ -2152,7 +2152,7 @@ "validation": { "check_config": "Preverite konfiguracijo", "heading": "Preverjanje konfiguracije", - "introduction": "Potrdite svojo konfiguracijo, če ste nedavno spremenili svojo konfiguracijo in se prepričajte, da je vse veljavno", + "introduction": "Potrdite svojo konfiguracijo, če ste nedavno spremenili svojo konfiguracijo in se prepričajte, da je vse veljavno.", "invalid": "Nastavitve niso veljavne", "valid": "Nastavitve so veljavne!" } From da12233ade8045b98743d821b7e60c0ca9f87f11 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Mon, 2 Nov 2020 10:46:52 +0100 Subject: [PATCH 068/125] Add dark mode toggle to gallery cards (#7532) --- gallery/src/components/demo-cards.js | 35 +++++++-- gallery/src/components/demo-more-info.js | 9 +-- gallery/src/components/more-info-content.ts | 73 ------------------- .../src/demos/demo-hui-alarm-panel-card.ts | 19 ++++- .../src/demos/demo-hui-entity-button-card.ts | 2 +- gallery/src/demos/demo-more-info-light.ts | 8 +- src/dialogs/more-info/ha-more-info-dialog.ts | 31 ++------ src/dialogs/more-info/more-info-content.ts | 57 +++++++++++++++ src/fake_data/provide_hass.ts | 26 ++++--- 9 files changed, 131 insertions(+), 129 deletions(-) delete mode 100644 gallery/src/components/more-info-content.ts create mode 100644 src/dialogs/more-info/more-info-content.ts diff --git a/gallery/src/components/demo-cards.js b/gallery/src/components/demo-cards.js index 26ac82e3f7..9e076371c4 100644 --- a/gallery/src/components/demo-cards.js +++ b/gallery/src/components/demo-cards.js @@ -5,11 +5,16 @@ import { PolymerElement } from "@polymer/polymer/polymer-element"; import "../../../src/components/ha-switch"; import "../../../src/components/ha-formfield"; import "./demo-card"; +import { applyThemesOnElement } from "../../../src/common/dom/apply_themes_on_element"; class DemoCards extends PolymerElement { static get template() { return html`
@@ -31,16 +39,21 @@ class DemoCards extends PolymerElement { + + +
-
- +
+
+ +
`; } @@ -59,6 +72,12 @@ class DemoCards extends PolymerElement { _showConfigToggled(ev) { this._showConfig = ev.target.checked; } + + _darkThemeToggled(ev) { + applyThemesOnElement(this.$.container, { themes: {} }, "default", { + dark: ev.target.checked, + }); + } } customElements.define("demo-cards", DemoCards); diff --git a/gallery/src/components/demo-more-info.js b/gallery/src/components/demo-more-info.js index 9e4a34023f..0805e77c37 100644 --- a/gallery/src/components/demo-more-info.js +++ b/gallery/src/components/demo-more-info.js @@ -3,7 +3,7 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; import { PolymerElement } from "@polymer/polymer/polymer-element"; import "../../../src/components/ha-card"; import "../../../src/state-summary/state-card-content"; -import "./more-info-content"; +import "../../../src/dialogs/more-info/more-info-content"; class DemoMoreInfo extends PolymerElement { static get template() { @@ -16,15 +16,12 @@ class DemoMoreInfo extends PolymerElement { ha-card { width: 333px; + padding: 20px 24px; } state-card-content { display: block; - padding: 16px; - } - - more-info-content { - padding: 0 16px; + margin-bottom: 16px; } pre { diff --git a/gallery/src/components/more-info-content.ts b/gallery/src/components/more-info-content.ts deleted file mode 100644 index 549ac4fa2d..0000000000 --- a/gallery/src/components/more-info-content.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { HassEntity } from "home-assistant-js-websocket"; -import { property, PropertyValues, UpdatingElement } from "lit-element"; -import dynamicContentUpdater from "../../../src/common/dom/dynamic_content_updater"; -import { stateMoreInfoType } from "../../../src/dialogs/more-info/state_more_info_control"; -import "../../../src/dialogs/more-info/controls/more-info-alarm_control_panel"; -import "../../../src/dialogs/more-info/controls/more-info-automation"; -import "../../../src/dialogs/more-info/controls/more-info-camera"; -import "../../../src/dialogs/more-info/controls/more-info-climate"; -import "../../../src/dialogs/more-info/controls/more-info-configurator"; -import "../../../src/dialogs/more-info/controls/more-info-counter"; -import "../../../src/dialogs/more-info/controls/more-info-cover"; -import "../../../src/dialogs/more-info/controls/more-info-default"; -import "../../../src/dialogs/more-info/controls/more-info-fan"; -import "../../../src/dialogs/more-info/controls/more-info-group"; -import "../../../src/dialogs/more-info/controls/more-info-humidifier"; -import "../../../src/dialogs/more-info/controls/more-info-input_datetime"; -import "../../../src/dialogs/more-info/controls/more-info-light"; -import "../../../src/dialogs/more-info/controls/more-info-lock"; -import "../../../src/dialogs/more-info/controls/more-info-media_player"; -import "../../../src/dialogs/more-info/controls/more-info-person"; -import "../../../src/dialogs/more-info/controls/more-info-script"; -import "../../../src/dialogs/more-info/controls/more-info-sun"; -import "../../../src/dialogs/more-info/controls/more-info-timer"; -import "../../../src/dialogs/more-info/controls/more-info-vacuum"; -import "../../../src/dialogs/more-info/controls/more-info-water_heater"; -import "../../../src/dialogs/more-info/controls/more-info-weather"; -import { HomeAssistant } from "../../../src/types"; - -class MoreInfoContent extends UpdatingElement { - @property({ attribute: false }) public hass?: HomeAssistant; - - @property() public stateObj?: HassEntity; - - private _detachedChild?: ChildNode; - - protected firstUpdated(): void { - this.style.position = "relative"; - this.style.display = "block"; - } - - // This is not a lit element, but an updating element, so we implement update - protected update(changedProps: PropertyValues): void { - super.update(changedProps); - const stateObj = this.stateObj; - const hass = this.hass; - - if (!stateObj || !hass) { - if (this.lastChild) { - this._detachedChild = this.lastChild; - // Detach child to prevent it from doing work. - this.removeChild(this.lastChild); - } - return; - } - - if (this._detachedChild) { - this.appendChild(this._detachedChild); - this._detachedChild = undefined; - } - - const moreInfoType = - stateObj.attributes && "custom_ui_more_info" in stateObj.attributes - ? stateObj.attributes.custom_ui_more_info - : "more-info-" + stateMoreInfoType(stateObj); - - dynamicContentUpdater(this, moreInfoType.toUpperCase(), { - hass, - stateObj, - }); - } -} - -customElements.define("more-info-content", MoreInfoContent); diff --git a/gallery/src/demos/demo-hui-alarm-panel-card.ts b/gallery/src/demos/demo-hui-alarm-panel-card.ts index 12b5f130b4..73d46b53fd 100644 --- a/gallery/src/demos/demo-hui-alarm-panel-card.ts +++ b/gallery/src/demos/demo-hui-alarm-panel-card.ts @@ -15,6 +15,10 @@ const ENTITIES = [ getEntity("alarm_control_panel", "unavailable", "unavailable", { friendly_name: "Alarm", }), + getEntity("alarm_control_panel", "alarm_code", "disarmed", { + friendly_name: "Alarm", + code_format: "number", + }), ]; const CONFIGS = [ @@ -30,7 +34,14 @@ const CONFIGS = [ config: ` - type: alarm-panel entity: alarm_control_panel.alarm_armed - title: My Alarm + name: My Alarm + `, + }, + { + heading: "Code Example", + config: ` +- type: alarm-panel + entity: alarm_control_panel.alarm_code `, }, { @@ -83,8 +94,12 @@ class DemoAlarmPanelEntity extends PolymerElement { public ready() { super.ready(); + this._setupDemo(); + } + + private async _setupDemo() { const hass = provideHass(this.$.demos); - hass.updateTranslations(null, "en"); + await hass.updateTranslations(null, "en"); hass.addEntities(ENTITIES); } } diff --git a/gallery/src/demos/demo-hui-entity-button-card.ts b/gallery/src/demos/demo-hui-entity-button-card.ts index 8c4c77e100..5b89327432 100644 --- a/gallery/src/demos/demo-hui-entity-button-card.ts +++ b/gallery/src/demos/demo-hui-entity-button-card.ts @@ -98,4 +98,4 @@ class DemoButtonEntity extends PolymerElement { } } -customElements.define("demo-hui-button-card", DemoButtonEntity); +customElements.define("demo-hui-entity-button-card", DemoButtonEntity); diff --git a/gallery/src/demos/demo-more-info-light.ts b/gallery/src/demos/demo-more-info-light.ts index 8c5ac611e9..70b77560d9 100644 --- a/gallery/src/demos/demo-more-info-light.ts +++ b/gallery/src/demos/demo-more-info-light.ts @@ -6,7 +6,7 @@ import { SUPPORT_BRIGHTNESS } from "../../../src/data/light"; import { getEntity } from "../../../src/fake_data/entity"; import { provideHass } from "../../../src/fake_data/provide_hass"; import "../components/demo-more-infos"; -import "../components/more-info-content"; +import "../../../src/dialogs/more-info/more-info-content"; const ENTITIES = [ getEntity("light", "bed_light", "on", { @@ -40,8 +40,12 @@ class DemoMoreInfoLight extends PolymerElement { public ready() { super.ready(); + this._setupDemo(); + } + + private async _setupDemo() { const hass = provideHass(this); - hass.updateTranslations(null, "en"); + await hass.updateTranslations(null, "en"); hass.addEntities(ENTITIES); } } diff --git a/src/dialogs/more-info/ha-more-info-dialog.ts b/src/dialogs/more-info/ha-more-info-dialog.ts index 10a4b1f15b..836273f07f 100644 --- a/src/dialogs/more-info/ha-more-info-dialog.ts +++ b/src/dialogs/more-info/ha-more-info-dialog.ts @@ -17,14 +17,10 @@ import { DOMAINS_MORE_INFO_NO_HISTORY, DOMAINS_WITH_MORE_INFO, } from "../../common/const"; -import { dynamicElement } from "../../common/dom/dynamic-element-directive"; import { fireEvent } from "../../common/dom/fire_event"; import { computeDomain } from "../../common/entity/compute_domain"; import { computeStateName } from "../../common/entity/compute_state_name"; -import { - stateMoreInfoType, - importMoreInfoControl, -} from "./state_more_info_control"; + import { navigate } from "../../common/navigate"; import "../../components/ha-dialog"; import "../../components/ha-header-bar"; @@ -39,6 +35,7 @@ import "./ha-more-info-history"; import "./ha-more-info-logbook"; import "./controls/more-info-default"; import { CONTINUOUS_DOMAINS } from "../../data/logbook"; +import "./more-info-content"; const DOMAINS_NO_INFO = ["camera", "configurator"]; /** @@ -63,8 +60,6 @@ export class MoreInfoDialog extends LitElement { @internalProperty() private _entityId?: string | null; - @internalProperty() private _moreInfoType?: string; - @internalProperty() private _currTabIndex = 0; public showDialog(params: MoreInfoDialogParams) { @@ -74,18 +69,6 @@ export class MoreInfoDialog extends LitElement { return; } this.large = false; - - const stateObj = this.hass.states[this._entityId]; - if (!stateObj) { - return; - } - if (stateObj.attributes && "custom_ui_more_info" in stateObj.attributes) { - this._moreInfoType = stateObj.attributes.custom_ui_more_info; - } else { - const type = stateMoreInfoType(stateObj); - importMoreInfoControl(type); - this._moreInfoType = type === "hidden" ? undefined : `more-info-${type}`; - } } public closeDialog() { @@ -218,12 +201,10 @@ export class MoreInfoDialog extends LitElement { .hass=${this.hass} .entityId=${this._entityId} >`} - ${this._moreInfoType - ? dynamicElement(this._moreInfoType, { - hass: this.hass, - stateObj, - }) - : ""} + ${stateObj.attributes.restored ? html`

diff --git a/src/dialogs/more-info/more-info-content.ts b/src/dialogs/more-info/more-info-content.ts new file mode 100644 index 0000000000..47570226fa --- /dev/null +++ b/src/dialogs/more-info/more-info-content.ts @@ -0,0 +1,57 @@ +import { HassEntity } from "home-assistant-js-websocket"; +import { property, PropertyValues, UpdatingElement } from "lit-element"; + +import { HomeAssistant } from "../../types"; +import dynamicContentUpdater from "../../common/dom/dynamic_content_updater"; +import { stateMoreInfoType } from "./state_more_info_control"; +import { importMoreInfoControl } from "../../panels/lovelace/custom-card-helpers"; + +class MoreInfoContent extends UpdatingElement { + @property({ attribute: false }) public hass?: HomeAssistant; + + @property() public stateObj?: HassEntity; + + private _detachedChild?: ChildNode; + + // This is not a lit element, but an updating element, so we implement update + protected update(changedProps: PropertyValues): void { + super.update(changedProps); + const stateObj = this.stateObj; + const hass = this.hass; + + if (!stateObj || !hass) { + if (this.lastChild) { + this._detachedChild = this.lastChild; + // Detach child to prevent it from doing work. + this.removeChild(this.lastChild); + } + return; + } + + if (this._detachedChild) { + this.appendChild(this._detachedChild); + this._detachedChild = undefined; + } + + let moreInfoType: string | undefined; + + if (stateObj.attributes && "custom_ui_more_info" in stateObj.attributes) { + moreInfoType = stateObj.attributes.custom_ui_more_info; + } else { + const type = stateMoreInfoType(stateObj); + importMoreInfoControl(type); + moreInfoType = type === "hidden" ? undefined : `more-info-${type}`; + } + + if (!moreInfoType) { + return; + } + + dynamicContentUpdater(this, moreInfoType.toUpperCase(), { + hass, + stateObj, + }); + } +} + +customElements.define("more-info-content", MoreInfoContent); diff --git a/src/fake_data/provide_hass.ts b/src/fake_data/provide_hass.ts index 0bc58b1040..3407ecbb18 100644 --- a/src/fake_data/provide_hass.ts +++ b/src/fake_data/provide_hass.ts @@ -53,19 +53,21 @@ export const provideHass = ( } = {}; const entities = {}; - function updateTranslations(fragment: null | string, language?: string) { + async function updateTranslations( + fragment: null | string, + language?: string + ) { const lang = language || getLocalLanguage(); - getTranslation(fragment, lang).then(async (translation) => { - const resources = { - [lang]: { - ...(hass().resources && hass().resources[lang]), - ...translation.data, - }, - }; - hass().updateHass({ - resources, - localize: await computeLocalize(elements[0], lang, resources), - }); + const translation = await getTranslation(fragment, lang); + const resources = { + [lang]: { + ...(hass().resources && hass().resources[lang]), + ...translation.data, + }, + }; + hass().updateHass({ + resources, + localize: await computeLocalize(elements[0], lang, resources), }); } From e52be20fbad23818f8043a54d1370ec63fd1017d Mon Sep 17 00:00:00 2001 From: Zack Barett Date: Mon, 2 Nov 2020 03:47:24 -0600 Subject: [PATCH 069/125] Grid Card: Fix Card Picker (#7562) Co-authored-by: Bram Kragten --- src/panels/lovelace/editor/lovelace-cards.ts | 7 +++---- src/translations/en.json | 4 ++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/panels/lovelace/editor/lovelace-cards.ts b/src/panels/lovelace/editor/lovelace-cards.ts index 6da45eef00..5842e566c9 100644 --- a/src/panels/lovelace/editor/lovelace-cards.ts +++ b/src/panels/lovelace/editor/lovelace-cards.ts @@ -29,10 +29,6 @@ export const coreCards: Card[] = [ type: "glance", showElement: true, }, - { - type: "grid", - showElement: true, - }, { type: "history-graph", showElement: true, @@ -95,6 +91,9 @@ export const coreCards: Card[] = [ { type: "entity-filter", }, + { + type: "grid", + }, { type: "horizontal-stack", }, diff --git a/src/translations/en.json b/src/translations/en.json index 6323e70856..78034f08cd 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -2502,6 +2502,10 @@ "columns": "Columns", "description": "The Glance card is useful to group multiple sensors in a compact overview." }, + "grid": { + "name": "Grid", + "description": "The Grid card allows you to show multiple cards in a grid." + }, "history-graph": { "name": "History Graph", "description": "The History Graph card allows you to display a graph for each of the entities listed." From 8361b9553bede32f991bcbd993cccb39153583d9 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Mon, 2 Nov 2020 22:06:49 +0100 Subject: [PATCH 070/125] Fix polyfill check (#7575) --- src/common/translations/localize.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/common/translations/localize.ts b/src/common/translations/localize.ts index fa6adc1b52..6ebba251b8 100644 --- a/src/common/translations/localize.ts +++ b/src/common/translations/localize.ts @@ -15,10 +15,10 @@ export interface FormatsType { let polyfillLoaded = !shouldPolyfill(); const polyfillProm = polyfillLoaded - ? import("@formatjs/intl-pluralrules/polyfill-locales").then(() => { + ? undefined + : import("@formatjs/intl-pluralrules/polyfill-locales").then(() => { polyfillLoaded = true; - }) - : undefined; + }); /** * Adapted from Polymer app-localize-behavior. From 924e4a45d0f38dfb659ee6097cd96c0487877737 Mon Sep 17 00:00:00 2001 From: HomeAssistant Azure Date: Tue, 3 Nov 2020 00:32:27 +0000 Subject: [PATCH 071/125] [ci skip] Translation update --- translations/frontend/ca.json | 2 +- translations/frontend/cy.json | 6 ++++- translations/frontend/de.json | 4 ++-- translations/frontend/en.json | 4 ++++ translations/frontend/fr.json | 2 +- translations/frontend/hu.json | 2 +- translations/frontend/ko.json | 45 +++++++++++++++++++++++++++++++++-- translations/frontend/lb.json | 35 ++++++++++++++++++++++++++- 8 files changed, 91 insertions(+), 9 deletions(-) diff --git a/translations/frontend/ca.json b/translations/frontend/ca.json index 31ac096b02..7c0a765664 100644 --- a/translations/frontend/ca.json +++ b/translations/frontend/ca.json @@ -2493,7 +2493,7 @@ "events": { "alert_event_type": "El tipus d'esdeveniment és un camp obligatori", "available_events": "Esdeveniments disponibles", - "count_listeners": " ({count} oients)", + "count_listeners": " ({count} oient/s)", "data": "Dades de l'esdeveniment (en YAML, opcionals)", "description": "Crida un esdeveniment al bus d'esdeveniments.", "documentation": "Documentació d'esdeveniments.", diff --git a/translations/frontend/cy.json b/translations/frontend/cy.json index a09725d53a..a2e7731b55 100644 --- a/translations/frontend/cy.json +++ b/translations/frontend/cy.json @@ -466,11 +466,15 @@ "commands": { "reload": { "filesize": "Ailgychwyn endidau maint ffeil", + "history_stats": "Ail-lwytho endidau ystadegau hanes", + "homekit": "Ail-lwytho HomeKit", + "min_max": "AIl-lwytho endidau lleiaf/uchaf", "mqtt": "Ailgychwyn endidau mqtt wedi'u ffurfweddu", "ping": "Ailgychwyn endidau sensor ping binary", "rpi_gpio": "Ailgychwyn endidau GPIO Raspberry Pi", "smtp": "Ailgychwyn gwasanaethau hysbysu smtp", - "telegram": "Ailgychwyn gwasanaethau hysbysu telegram" + "telegram": "Ailgychwyn gwasanaethau hysbysu telegram", + "trend": "Ail-lwytho endidau tuedd" }, "server_control": { "perform_action": "{action} Gweinydd", diff --git a/translations/frontend/de.json b/translations/frontend/de.json index 4c15b45311..ce2cc22c4d 100644 --- a/translations/frontend/de.json +++ b/translations/frontend/de.json @@ -1751,7 +1751,7 @@ }, "configure": "Konfigurieren", "configured": "Konfiguriert", - "description": "Verwalte verbundene Integrationen", + "description": "Verbundene Integrationen verwalten", "details": "Details zur Integration", "discovered": "Entdeckt", "home_assistant_website": "Home Assistant Website", @@ -1981,7 +1981,7 @@ "confirm_delete": "Möchtest du diese Person wirklich löschen?", "confirm_delete2": "Alle Geräte, die zu dieser Person gehören, werden nicht mehr zugeordnet.", "create_person": "Person erstellen", - "description": "Verwalte die Personen, denen Home Assistant folgt.", + "description": "Personen verwalten, denen Home Assistant folgt.", "detail": { "admin": "Administrator", "allow_login": "Erlauben Sie dieser Person, sich einzuloggen.", diff --git a/translations/frontend/en.json b/translations/frontend/en.json index 3ab12ba356..a15c767c8b 100644 --- a/translations/frontend/en.json +++ b/translations/frontend/en.json @@ -2759,6 +2759,10 @@ "description": "The Glance card is useful to group multiple sensors in a compact overview.", "name": "Glance" }, + "grid": { + "description": "The Grid card allows you to show multiple cards in a grid.", + "name": "Grid" + }, "history-graph": { "description": "The History Graph card allows you to display a graph for each of the entities listed.", "name": "History Graph" diff --git a/translations/frontend/fr.json b/translations/frontend/fr.json index 87f75bf4ef..be701d7cc4 100644 --- a/translations/frontend/fr.json +++ b/translations/frontend/fr.json @@ -1673,7 +1673,7 @@ "name": "Nom", "type": "Type" }, - "no_helpers": "On dirait que vous n'avez pas encore d'aide!" + "no_helpers": "On dirait que vous n'avez pas encore d'entrée!" }, "types": { "counter": "Compteur", diff --git a/translations/frontend/hu.json b/translations/frontend/hu.json index 416447bb2e..447bb6f981 100644 --- a/translations/frontend/hu.json +++ b/translations/frontend/hu.json @@ -1793,7 +1793,7 @@ "caption": "Napló", "clear": "Törlés", "description": "A Home Assistant naplófájlok megtekintése", - "details": "Naplózás részletessége ({level})", + "details": "Naplóbejegyzés részletei ({level})", "load_full_log": "Teljes Home Assistant napló betöltése", "loading_log": "Hibanapló betöltése...", "multiple_messages": "az üzenet először a következő időpontban fordult elő: {time}, majd később {counter} alkalommal ismétlődött", diff --git a/translations/frontend/ko.json b/translations/frontend/ko.json index 3970f6c91d..53a85040d6 100644 --- a/translations/frontend/ko.json +++ b/translations/frontend/ko.json @@ -654,6 +654,11 @@ }, "service-picker": { "service": "서비스" + }, + "user-picker": { + "add_user": "사용자 추가", + "no_user": "사용자 없음", + "remove_user": "사용자 제거" } }, "dialogs": { @@ -741,6 +746,7 @@ "dismiss": "대화창 닫기", "edit": "구성요소 편집", "history": "기록 내용", + "last_changed": "최근 변경 됨", "person": { "create_zone": "현재 위치로 지역 만들기" }, @@ -796,6 +802,15 @@ "description": "옵션이 성공적으로 저장되었습니다." } }, + "quick-bar": { + "commands": { + "server_control": { + "perform_action": "서버 {action}", + "restart": "재시작", + "stop": "중지" + } + } + }, "voice_command": { "did_not_hear": "Home Assistant 가 아무 소리도 듣지 못했습니다", "error": "이런, 오류가 발생했습니다", @@ -855,6 +870,7 @@ }, "notification_toast": { "connection_lost": "서버와 연결이 끊어졌습니다. 다시 연결 중...", + "dismiss": "해제", "service_call_failed": "{service} 서비스를 호출하지 못했습니다.", "started": "Home Assistant 가 시작되었습니다!", "starting": "Home Assistant 가 시작됩니다. 완료될 때까지 모든 기능을 사용할 수 있는 것은 아닙니다.", @@ -940,7 +956,7 @@ }, "event": { "event": "이벤트:", - "label": "이벤트 발생", + "label": "이벤트 발행", "service_data": "서비스 데이터" }, "repeat": { @@ -1098,6 +1114,9 @@ "trigger": "트리거" }, "event": { + "context_user_pick": "사용자 추가", + "context_user_picked": "사용자 발행 이벤트", + "context_users": "트리거된 이벤트로 제한", "event_data": "이벤트 데이터", "event_type": "이벤트 유형", "label": "이벤트" @@ -1809,6 +1828,13 @@ "introduction": "네트워크 전체 기능을 관리합니다.", "node_count": "{count} 개 노드" }, + "node_config": { + "help_source": "구성 매개변수 설명 및 도움말 텍스트는 OpenZWave 프로젝트에서 제공합니다.", + "wakeup_help": "배터리 전원을 사용하는 노드는 구성을 변경하려면 반드시 절전 해제된 상태이어야 합니다. 노드가 절전 생태인 경우 Openzwave 는 절전 해제될 때 노드의 구성 업데이트를 시도합니다. 이 과정은 몇 시간 (또는 며칠) 후에 이루어질 수 있습니다. 기기를 절전 해제하려면 다음 단계를 따라주세요." + }, + "node_metadata": { + "product_manual": "제품 설명서" + }, "node_query_stages": { "associations": "연결 그룹 및 구성원 자격 새로고침", "cacheload": "OpenZWave 캐시 파일에서 정보를 읽어오기. 배터리 노드는 노드가 절전 해제 상태가 될 때까지 이 단계를 유지합니다.", @@ -1859,6 +1885,7 @@ }, "services": { "add_node": "노드 추가", + "cancel_command": "명령 취소", "remove_node": "노드 제거" } }, @@ -2393,7 +2420,9 @@ "listeners": "이 템플릿은 다음의 상태 변경 이벤트를 수신합니다.", "no_listeners": "이 템플릿은 상태 변경 이벤트를 수신하지 않으며 자동으로 업데이트되지 않습니다.", "reset": "데모 템플릿으로 재설정", + "result_type": "결과 유형", "template_extensions": "Home Assistant 템플릿 확장기능 문서 보기", + "time": "이 템플릿은 매 분마다 업데이트됩니다.", "title": "템플릿", "unknown_error_template": "템플릿 구성 중 알 수 없는 오류가 발생했습니다" } @@ -2508,6 +2537,9 @@ "weblink": "웹 링크" }, "name": "구성요소 모음", + "secondary_info_values": { + "last-updated": "최근 업데이트 됨" + }, "show_header_toggle": "헤더 토글 표시", "special_row": "특별 행", "toggle": "구성요소 토글" @@ -2763,7 +2795,8 @@ "exit_edit_mode": "UI 편집 모드 종료", "help": "도움말", "refresh": "새로고침", - "reload_resources": "리소스 다시 읽어오기" + "reload_resources": "리소스 다시 읽어오기", + "start_conversation": "대화 시작" }, "reload_lovelace": "UI 다시 읽어오기", "reload_resources": { @@ -3002,6 +3035,10 @@ "dropdown_label": "대시보드", "header": "대시보드" }, + "enable_shortcuts": { + "description": "UI 에서 다양한 작업을 수행하기 위한 단축키를 활성화하거나 비활성화합니다.", + "header": "키보드 단축키" + }, "force_narrow": { "description": "모바일 환경과 마찬가지로 기본적으로 사이드바가 숨겨집니다.", "header": "항상 사이드바 숨기기" @@ -3046,6 +3083,10 @@ "header": "다단계 인증 모듈" }, "push_notifications": { + "add_device_prompt": { + "input_label": "기기 이름", + "title": "이 기기의 이름을 지어주세요" + }, "description": "이 기기에 알림을 보냅니다.", "error_load_platform": "notify.html5 를 구성해주세요.", "error_use_https": "SSL 을 통한 보안 연결된 환경이 필요합니다.", diff --git a/translations/frontend/lb.json b/translations/frontend/lb.json index 2d2a986bf4..5292e9f36b 100644 --- a/translations/frontend/lb.json +++ b/translations/frontend/lb.json @@ -681,6 +681,11 @@ }, "service-picker": { "service": "Service" + }, + "user-picker": { + "add_user": "Benotzer erstellen", + "no_user": "Kee Benotzer", + "remove_user": "Benotzer läschen" } }, "dialogs": { @@ -723,6 +728,12 @@ "ok": "OK" }, "helper_settings": { + "counter": { + "initial": "Initial Wäert", + "maximum": "Maximale Wäert", + "minimum": "Minimale Wäert", + "step": "Schrëtt Gréisst" + }, "generic": { "icon": "Ikon", "name": "Numm" @@ -769,6 +780,7 @@ "dismiss": "Dialog ofbriechen", "edit": "Entitéit änneren", "history": "Verlaf", + "last_changed": "Läscht Ännerung", "last_updated": "Läscht mise à jour", "person": { "create_zone": "Zone erstellen vun der aktueller Positioun" @@ -826,6 +838,13 @@ } }, "quick-bar": { + "commands": { + "server_control": { + "perform_action": "{action} Server", + "restart": "Restart", + "stop": "Stop" + } + }, "filter_placeholder": "Entitéite Filter" }, "voice_command": { @@ -1140,6 +1159,7 @@ "trigger": "Ausléiser" }, "event": { + "context_user_pick": "Benotzer erstellen", "event_data": "Evenement Donnée", "event_type": "Typ vun Evenement", "label": "Evenement" @@ -1464,7 +1484,8 @@ "add_prompt": "Nach keen {name} gouf mat dësem Apparat dobäigesat. Du kanns een dobäisetzen mat engem Klick op de + Knäppchen hei uewen.", "automation": { "actions": { - "caption": "Wann eppes ausgeléist gëtt" + "caption": "Wann eppes ausgeléist gëtt", + "unknown_action": "Onbekannten Aktioun" }, "automations": "Automatismen", "conditions": { @@ -1824,6 +1845,9 @@ }, "navigation": { "network": "Netzwierk", + "node": { + "dashboard": "Tableau de Bord" + }, "nodes": "Nodes", "select_instance": "Instanz auswielen" }, @@ -2107,6 +2131,7 @@ "last_scanned": "Läscht duerchsicht", "name": "Numm" }, + "learn_more": "Méi iwwert Tags liesen", "never_scanned": "Niemols gescannt", "no_tags": "Keng Tags", "write": "Schréiwen" @@ -2585,6 +2610,7 @@ "entity-id": "Entitéit ID", "last-changed": "Läscht Ännerung", "last-triggered": "Läscht ausgeléist", + "last-updated": "Läscht mise à jour", "none": "Keng Sekundär Informatioun", "position": "Positioun", "tilt-position": "Kippstellung" @@ -3091,6 +3117,9 @@ "dropdown_label": "Tableau de Bord", "header": "Tableau de Bord" }, + "enable_shortcuts": { + "header": "Tastatur Ofkierzungen" + }, "force_narrow": { "description": "Dës Optioun verstoppt d'Säite Läischt esou wéi op engem mobillen Apparat.", "header": "Säite Läischt ëmmer verstoppen" @@ -3135,6 +3164,10 @@ "header": "Multi-Faktor Authentifikatioun's Module" }, "push_notifications": { + "add_device_prompt": { + "input_label": "Numm vum Apparat", + "title": "Wéi soll dësen Apparat genannt ginn?" + }, "description": "Noriichten op dësen Apparat schécken", "error_load_platform": "Notifiy.html5 konfiguréieren.", "error_use_https": "Benéidegt SSL fir de Frontend", From 2e47763ecc9b92a761109117e9409cb3c435c6fb Mon Sep 17 00:00:00 2001 From: HomeAssistant Azure Date: Wed, 4 Nov 2020 00:32:29 +0000 Subject: [PATCH 072/125] [ci skip] Translation update --- translations/frontend/ca.json | 4 ++ translations/frontend/cs.json | 4 ++ translations/frontend/de.json | 2 +- translations/frontend/el.json | 8 +++- translations/frontend/es.json | 4 ++ translations/frontend/et.json | 6 ++- translations/frontend/hu.json | 4 ++ translations/frontend/lb.json | 74 +++++++++++++++++++++++++++--- translations/frontend/nb.json | 4 ++ translations/frontend/nl.json | 18 ++++++++ translations/frontend/pl.json | 4 ++ translations/frontend/ru.json | 4 ++ translations/frontend/sv.json | 34 +++++++------- translations/frontend/tr.json | 46 ++++++++++++++++++- translations/frontend/zh-Hans.json | 4 ++ 15 files changed, 192 insertions(+), 28 deletions(-) diff --git a/translations/frontend/ca.json b/translations/frontend/ca.json index 7c0a765664..859b988bfb 100644 --- a/translations/frontend/ca.json +++ b/translations/frontend/ca.json @@ -2759,6 +2759,10 @@ "description": "La targeta visualització és útil per agrupar diversos sensors de forma general i compacta.", "name": "Visualització" }, + "grid": { + "description": "La targeta quadrícula et permet mostrar diferents targetes dins d'una quadrícula.", + "name": "Quadrícula" + }, "history-graph": { "description": "La targeta gràfic històric et permet mostrar un gràfic per a cadascuna de les entitats establertes.", "name": "Gràfic històric" diff --git a/translations/frontend/cs.json b/translations/frontend/cs.json index 51586e31f7..e426d1ad84 100644 --- a/translations/frontend/cs.json +++ b/translations/frontend/cs.json @@ -2759,6 +2759,10 @@ "description": "Karta Náhled je užitečná pro seskupení více senzorů v kompaktním přehledu.", "name": "Rychlý náhled" }, + "grid": { + "description": "Karta Mřížka umožňuje zobrazit více karet v mřížce.", + "name": "Mřížka" + }, "history-graph": { "description": "Karta Graf historie umožňuje zobrazit graf pro každou z uvedených entit.", "name": "Graf historie" diff --git a/translations/frontend/de.json b/translations/frontend/de.json index ce2cc22c4d..cd53a3ef52 100644 --- a/translations/frontend/de.json +++ b/translations/frontend/de.json @@ -2677,7 +2677,7 @@ "description": "Die Messkarte ist eine Basiskarte, mit der Sensordaten visuell angezeigt werden können.", "name": "Gauge", "severity": { - "define": "Schweregrad definieren?", + "define": "Schwellenwerte definieren?", "green": "Grün", "red": "Rot", "yellow": "Gelb" diff --git a/translations/frontend/el.json b/translations/frontend/el.json index c0cb9cf939..f5e2aceaf6 100644 --- a/translations/frontend/el.json +++ b/translations/frontend/el.json @@ -571,8 +571,8 @@ "no_history_found": "Δεν έχει βρεθεί ιστορικό κατάστασης." }, "logbook": { - "by": "ανά", - "by_service": "ανά υπηρεσία", + "by": "από", + "by_service": "από υπηρεσία", "entries_not_found": "Δεν βρέθηκαν καταχωρήσεις ημερολογίου.", "messages": { "became_unavailable": "μετετράπη σε μη διαθέσιμο", @@ -2759,6 +2759,10 @@ "description": "Η κάρτα Glance είναι χρήσιμη για την ομαδοποίηση πολλαπλών αισθητήρων σε μια συμπαγή επισκόπηση.", "name": "Ματιά" }, + "grid": { + "description": "Η κάρτα πλέγματος σάς επιτρέπει να εμφανίζετε πολλές κάρτες σε ένα πλέγμα.", + "name": "Πλέγμα" + }, "history-graph": { "description": "Η κάρτα Ιστορικού γραφήματος σάς επιτρέπει να εμφανίσετε ένα γράφημα για καθεμία από τις αναφερόμενες οντότητες.", "name": "Ιστορικό γράφημα" diff --git a/translations/frontend/es.json b/translations/frontend/es.json index a40088b3e6..8149c78426 100644 --- a/translations/frontend/es.json +++ b/translations/frontend/es.json @@ -2759,6 +2759,10 @@ "description": "La tarjeta Vistazo es útil para agrupar varios sensores en una visión general compacta.", "name": "Vistazo" }, + "grid": { + "description": "La tarjeta Cuadrícula te permite mostrar varias tarjetas en una cuadrícula.", + "name": "Cuadrícula" + }, "history-graph": { "description": "La tarjeta Historial Gráfico te permite mostrar un gráfico para cada una de las entidades enumeradas.", "name": "Gráfico histórico" diff --git a/translations/frontend/et.json b/translations/frontend/et.json index ef98cca5e0..6c60373ed4 100644 --- a/translations/frontend/et.json +++ b/translations/frontend/et.json @@ -2041,7 +2041,7 @@ "person_not_found_title": "Isikuid ei leitud" }, "scene": { - "activated": "Aktiveeritud stseen {name} .", + "activated": "Stseen {name} on käivitatud.", "caption": "Stseenid", "description": "Loo ja muuda stseene", "editor": { @@ -2759,6 +2759,10 @@ "description": "Kaart Pilk on kasulik mitme sensori rühmitamiseks kompaktse ülevaatena.", "name": "Pilk" }, + "grid": { + "description": "GRID kaart võimaldab kuvada võrgustikus mitut kaarti.", + "name": "" + }, "history-graph": { "description": "Ajaloograafiku kaart võimaldab kuvada graafiku iga loetletud olemi kohta.", "name": "Ajalooline graafik" diff --git a/translations/frontend/hu.json b/translations/frontend/hu.json index 447bb6f981..f341422100 100644 --- a/translations/frontend/hu.json +++ b/translations/frontend/hu.json @@ -2759,6 +2759,10 @@ "description": "A Pillantás kártyával több érzékelő csoportosítható egy kompakt áttekintő nézetbe.", "name": "Pillantás" }, + "grid": { + "description": "A Rács kártya lehetővé teszi több kártya megjelenítését egy rácsban.", + "name": "Rács" + }, "history-graph": { "description": "Az Előzmény grafikon kártya lehetővé teszi az entitások múltbeli értékeinek grafikus megjelenítését.", "name": "Előzmény grafikon" diff --git a/translations/frontend/lb.json b/translations/frontend/lb.json index 5292e9f36b..4cb7556cc1 100644 --- a/translations/frontend/lb.json +++ b/translations/frontend/lb.json @@ -732,6 +732,7 @@ "initial": "Initial Wäert", "maximum": "Maximale Wäert", "minimum": "Minimale Wäert", + "restore": "Restauréiert de leschte bekannte Wäert wann Home Assistant start", "step": "Schrëtt Gréisst" }, "generic": { @@ -769,6 +770,9 @@ }, "platform_not_loaded": "{platform} Integratioun ass net gelueden. Setz et an deng Konfiguration dobäi mat 'default_config:' oder ''{platform}:''.", "required_error_msg": "Dëst Feld ass erfuerderlech", + "timer": { + "duration": "Dauer" + }, "yaml_not_editable": "D'Astellunge vun dëser Entitéit kënnen net vun vum Benotzer Interface as geännert ginn. Nëmmen Entitéiten déi iwwer den Benotzer Interface aus konfiguréiert sinn kënnen vun do aus geännert ginn." }, "image_cropper": { @@ -839,6 +843,31 @@ }, "quick-bar": { "commands": { + "reload": { + "automation": "Automatisme frësch lueden", + "command_line": "Kommando Zeilen Entitéite frësch lueden", + "filter": "Filter Entitéite frësch lueden", + "generic": "Generesch IP Kamera Entitéite frësch lueden", + "generic_thermostat": "Generesch Thermostat Entitéite frësch lueden", + "homekit": "HomeKit frësch lueden", + "input_datetime": "Agab Zäit-Datum frësch lueden", + "input_number": "Agab Zuelen frësch lueden", + "input_text": "Agab Text frësch lueden", + "min_max": "Min/Max Entitéite frësch lueden", + "mqtt": "Manuell konfiguréiert MQTT Entitéite frësch lueden", + "person": "Persoune frësch lueden", + "reload": "{domain} frësch lueden", + "rest": "Rest Entitéiten an Notifikatioun Servicer frësch lueden", + "rpi_gpio": "Raspberry Pi GPIO Entitéite frësch lueden", + "scene": "Zeene frësch lueden", + "script": "Skripte frësch lueden", + "smtp": "SMTP Notifikatioun Servicer frësch lueden", + "statistics": "Statistik Entitéite frësch lueden", + "telegram": "Telegram Notifikatioun Servicer frësch lueden", + "template": "Virlag Entitéite frësch lueden", + "universal": "Universell Medie Spiller Entitéite frësch lueden", + "zone": "Zone frësch lueden" + }, "server_control": { "perform_action": "{action} Server", "restart": "Restart", @@ -901,11 +930,13 @@ "notification_drawer": { "click_to_configure": "Dréck de Knäppchen fir {entity} ze konfiguréieren", "close": "Zoumaachen", + "dismiss_all": "Alles verwerfen", "empty": "Keng Notifikatioune", "title": "Notifikatioune" }, "notification_toast": { "connection_lost": "Verbindung verluer. Verbindung gëtt nees opgebaut...", + "dismiss": "Verwerfen", "service_call_failed": "Feeler beim opruffen vun {service}", "started": "Home Assistant ass gestart!", "starting": "Home Assistant start, et wäert nach net alles prett sinn bis et fäerdeg gestart ass.", @@ -1160,6 +1191,8 @@ }, "event": { "context_user_pick": "Benotzer erstellen", + "context_user_picked": "Benotzer deen den Evenement gestart huet", + "context_users": "Op Evenementer limitéieren déi ausgeléist goufen duerch ", "event_data": "Evenement Donnée", "event_type": "Typ vun Evenement", "label": "Evenement" @@ -1485,18 +1518,24 @@ "automation": { "actions": { "caption": "Wann eppes ausgeléist gëtt", + "no_actions": "Keng Aktiounen", "unknown_action": "Onbekannten Aktioun" }, "automations": "Automatismen", "conditions": { - "caption": "Nëmmen eppes maachen wann..." + "caption": "Nëmmen eppes maachen wann...", + "no_conditions": "Keng Konditiounen", + "unknown_condition": "Onbekannte Konditioun" }, "create": "Automatisme mat Apparat erstellen", "no_automations": "Keng Automatismen", "no_device_automations": "Et gi keng Automatisme fir dësen Apparat.", "triggers": { - "caption": "Maach eppes wann..." - } + "caption": "Maach eppes wann...", + "no_triggers": "Keng Ausléiser", + "unknown_trigger": "Onbekannten Ausléiser" + }, + "unknown_automation": "Onbekannten Automatisme" }, "cant_edit": "Dir kënnt nëmmen Elementer änneren déi an der UI erstallt goufen.", "caption": "Apparater", @@ -1614,11 +1653,13 @@ "no_helpers": "Et gesäit sou aus wéi wann nach keng Helpers erstallt goufen." }, "types": { + "counter": "Compteur", "input_boolean": "Ëmschalten", "input_datetime": "Datum an/oder Zäit", "input_number": "Nummer", "input_select": "Auswiellëscht", - "input_text": "Text" + "input_text": "Text", + "timer": "Timer" } }, "info": { @@ -1836,6 +1877,7 @@ "network": "Netzwierk", "node_id": "Node ID", "ozw_instance": "OpenZWave Instanz", + "wakeup_instructions": "Instruktioune fir d'erwächen", "zwave": "Z-Wave" }, "device_info": { @@ -1846,6 +1888,7 @@ "navigation": { "network": "Netzwierk", "node": { + "config": "Konfiguratioun", "dashboard": "Tableau de Bord" }, "nodes": "Nodes", @@ -1876,6 +1919,14 @@ "introduction": "Netzwierk wäit Funktioune verwalten", "node_count": "{count} nodes" }, + "node_config": { + "header": "Konfiguratioun vum Node", + "introduction": "Verwalt déi verschidde Konfiguratioun Parameter fir ee Z-Wave Node.", + "wakeup_help": "Batterie bedriwwen Nodes mussen un si fir hier Konfiguratioun ze veränneren. Falls den Node net un ass, probéiert OpenZWave dem Node seng Konfiguratioun ze veränneren déi nächste Kéier wann de Node aktiv gëtt, dëst ka méi Stonnen (oder Deeg) daueren. \nFolleg dëse Schrëtt fir den Apparat unzeschalten:" + }, + "node_metadata": { + "product_manual": "Produkt Gebrauchsanweisung" + }, "node_query_stages": { "associations": "Associatiounsgruppen a Memberen aktualiséieren", "cacheload": "Lued Informatioune vun der OpenZWave Cache Datei. Batterie Nodes bleiwen op dëser Etapp bis de Node erwächt.", @@ -1925,6 +1976,7 @@ }, "services": { "add_node": "Node dobäisetzen", + "cancel_command": "Commande ofbriechen", "remove_node": "Node läschen" } }, @@ -2116,6 +2168,7 @@ "create_automation": "Erstell Automatisme mam Tag", "description": "Tags verwalten", "detail": { + "companion_apps": "Begleeder Apps", "create": "Erstellen", "create_and_write": "Erstellen a schréiwen", "delete": "Läschen", @@ -2124,7 +2177,8 @@ "new_tag": "Neien tag", "tag_id": "Tag id", "tag_id_placeholder": "Automatesch erstallt falls eidel geloss", - "update": "Aktualiséieren" + "update": "Aktualiséieren", + "usage": "Een Tag kann een Automatisme ausléise wann e gescannt gëtt, du kanns NFC Tage, QR Code oder iergendeng Zort vun Tags benotzen. Benotz ons {companion_link} fir dësen Tag op eng programméierbar NFC Tag ze schreiwen oder erstell ee QR Code hei ënnen." }, "edit": "Änneren", "headers": { @@ -2467,7 +2521,9 @@ "listeners": "Dës Virlag lauschtert fir déi folgend geännert Evenementer:", "no_listeners": "Dës Virlag lauschtert net fir geännert Zoustänn Evenementer a gëtt net automatesch aktualiséiert.", "reset": "Op Demo Modell zeréck setzen", + "result_type": "Typ vum Resultat", "template_extensions": "Home Assistant Modell Erweiderungen", + "time": "Dës Virlag aktualiséiert sech am Ufank vun all Minutt.", "title": "Modeller", "unknown_error_template": "Onbekannte Feeler beim duerstelle vum Modell" } @@ -2675,6 +2731,10 @@ "description": "D'Glance Kaart ass nëtzlech fir verschidde Sensoren an enger kompakter Iwwersiicht ze gruppéieren.", "name": "Usiicht" }, + "grid": { + "description": "Gitter Kaart erlaabt et multiple Kaarten als Gitter unzeweisen.", + "name": "Gitter" + }, "history-graph": { "description": "D'Verlaf's Grafik Kaart erlaabt Iech eng Grafik fir all eenzel opgelëschten Entitéiten unzeweisen.", "name": "Verlaf Diagramm" @@ -2872,7 +2932,8 @@ "exit_edit_mode": "Benotzer Interface Editéierungsmodus verloossen", "help": "Hëllef", "refresh": "Erneieren", - "reload_resources": "Ressource frësch lueden" + "reload_resources": "Ressource frësch lueden", + "start_conversation": "Ënnerhalung starten" }, "reload_lovelace": "Benotzer frësch lueden", "reload_resources": { @@ -3118,6 +3179,7 @@ "header": "Tableau de Bord" }, "enable_shortcuts": { + "description": "Tastatur Ofkierzungen aktivéieren oder déaktivéieren fir verschidde Aktiounen am Interface auszeféieren.", "header": "Tastatur Ofkierzungen" }, "force_narrow": { diff --git a/translations/frontend/nb.json b/translations/frontend/nb.json index 29d01d8cf5..efb8c4713e 100644 --- a/translations/frontend/nb.json +++ b/translations/frontend/nb.json @@ -2759,6 +2759,10 @@ "description": "Glance-kortet er nyttig for å gruppere flere sensorer i en kompakt oversikt.", "name": "Blikk" }, + "grid": { + "description": "Med Rutenett-kortet kan du vise flere kort i et rutenett.", + "name": "Rutenettet" + }, "history-graph": { "description": "Med History Graph-kortet kan du vise en graf for hver av enhetene som er oppført.", "name": "Historikk graf" diff --git a/translations/frontend/nl.json b/translations/frontend/nl.json index aa448f334e..62402c9829 100644 --- a/translations/frontend/nl.json +++ b/translations/frontend/nl.json @@ -798,6 +798,7 @@ "dismiss": "Dialoogvenster sluiten", "edit": "Entiteit bewerken", "history": "Geschiedenis", + "last_changed": "Laatst gewijzigd", "last_updated": "Laatst bijgewerkt", "person": { "create_zone": "Creëer zone van huidige locatie" @@ -888,6 +889,10 @@ "trend": "Herlaad trend entiteiten", "universal": "Herlaad universele mediaplayer entiteiten", "zone": "Herlaad zones" + }, + "server_control": { + "restart": "Herstarten", + "stop": "Stop" } }, "filter_placeholder": "Entiteitsfilter" @@ -1998,6 +2003,7 @@ }, "services": { "add_node": "Knooppunt toevoegen", + "cancel_command": "Opdracht annuleren", "remove_node": "Knooppunt verwijderen" } }, @@ -2752,6 +2758,10 @@ "description": "De Glance-kaart is handig om meerdere sensoren in een compact overzicht te groeperen.", "name": "Oogopslag" }, + "grid": { + "description": "Met de rasterkaart kun je meerdere kaarten in een raster tonen.", + "name": "Raster" + }, "history-graph": { "description": "Met de History Graph-kaart kunt u een grafiek weergeven voor elk van de vermelde entiteiten.", "name": "Geschiedenis grafiek" @@ -3198,6 +3208,10 @@ "dropdown_label": "Dashboard", "header": "Dashboard" }, + "enable_shortcuts": { + "description": "Schakel sneltoetsen in of uit voor het uitvoeren van verschillende acties in de UI.", + "header": "Toetsenbord sneltoetsen" + }, "force_narrow": { "description": "De zijbalk standaard verbergen, vergelijkbaar met de mobiele ervaring.", "header": "Zijbalk altijd verbergen" @@ -3242,6 +3256,10 @@ "header": "Twee-factor-authenticatie modules" }, "push_notifications": { + "add_device_prompt": { + "input_label": "Apparaatnaam", + "title": "Hoe moet dit apparaat genoemd worden?" + }, "description": "Verstuur meldingen naar dit apparaat.", "error_load_platform": "Configureer notify.html5.", "error_use_https": "Vereist SSL voor de frontend", diff --git a/translations/frontend/pl.json b/translations/frontend/pl.json index e27851505a..0ead10bb49 100644 --- a/translations/frontend/pl.json +++ b/translations/frontend/pl.json @@ -2759,6 +2759,10 @@ "description": "Karta glance umożliwia grupowanie wielu sensorów w kompaktowym przeglądzie.", "name": "Glance" }, + "grid": { + "description": "Karta siatka umożliwia wyświetlanie wielu kart w siatce.", + "name": "Siatka" + }, "history-graph": { "description": "Karta wykres historii umożliwia wyświetlenie wykresu dla każdej z wymienionych encji.", "name": "Wykres historii" diff --git a/translations/frontend/ru.json b/translations/frontend/ru.json index c2cc7d546d..fb617dd7ec 100644 --- a/translations/frontend/ru.json +++ b/translations/frontend/ru.json @@ -2759,6 +2759,10 @@ "description": "Компактно группирует несколько объектов. Рекомендуется для сенсоров.", "name": "Glance" }, + "grid": { + "description": "Позволяет отображать несколько карточек в виде сетки.", + "name": "Сетка" + }, "history-graph": { "description": "Позволяет отображать графики для выбранных объектов.", "name": "График истории" diff --git a/translations/frontend/sv.json b/translations/frontend/sv.json index 20129a006c..a25045a0a4 100644 --- a/translations/frontend/sv.json +++ b/translations/frontend/sv.json @@ -723,15 +723,15 @@ "enabled_description": "Inaktiverade entiteter kommer inte att läggas till i Home Assistant.", "enabled_label": "Aktivera entitet", "entity_id": "Entitets-ID", - "icon": "Överskrid ikon", + "icon": "Ikon", "icon_error": "Ikoner ska vara i formatet 'prefix:ikonnamn', t.ex. 'mdi:home'", - "name": "Skriv över namn", + "name": "Namn", "note": "Obs: detta kanske inte fungerar ännu med alla integrationer.", "unavailable": "Den här entiteten är för närvarande inte tillgänglig.", "update": "Uppdatera" }, "faq": "dokumentation", - "no_unique_id": "Den här entiteten har inget unikt ID, därför kan den inte hanteras från användargränssnittet.", + "no_unique_id": "Den här entiteten har inget unikt ID, därför kan den inte hanteras från användargränssnittet.\nKlicka här {faq_link} för mer detaljer.", "related": "Relaterade", "settings": "Inställningar" }, @@ -860,7 +860,7 @@ "reload": { "automation": "Ladda om automationer", "command_line": "Ladda om command line entiteter", - "core": "Ladda om plats ", + "core": "Ladda om plats och anpassningar", "filesize": "Ladda om filstorleks ", "filter": "Ladda om filter entiteter", "generic": "Ladda om standard IP kamera entiteter", @@ -882,9 +882,9 @@ "rpi_gpio": "Ladda om Raspberry Pi GPIO entiteter", "scene": "Ladda om scener", "script": "Ladda om skripts", - "smtp": "Ladda om smtp notifieringstjänster", + "smtp": "Ladda om smtp aviseringstjänster", "statistics": "Ladda om statistik entiteter", - "telegram": "Ladda om telegram notifieringstjänster", + "telegram": "Ladda om telegram aviseringstjänster", "template": "Ladda om mallade entiteter", "trend": "Ladda om trend entiteter", "universal": "Ladda om universella mediaspelar entiteter", @@ -912,7 +912,7 @@ "clusters": "Hantera kluster", "reconfigure": "Konfigurera om enheten", "remove": "Ta bort enhet", - "zigbee_information": "Zigbee-information" + "zigbee_information": "Zigbee-enhetens signatur" }, "confirmations": { "remove": "Är du säker på att du vill ta bort enheten?" @@ -1619,7 +1619,7 @@ }, "filter": { "filter": "Filter", - "hidden_entities": "{number} dold {number, plural,\n one {entity}\n other {entities}\n}", + "hidden_entities": "{number} dold {number, plural,\n one {entitet}\n other {entiteter}\n}", "show_all": "Visa alla", "show_disabled": "Visa inaktiverade entiteter", "show_readonly": "Visa skrivskyddade entiteter", @@ -1946,7 +1946,7 @@ }, "node_config": { "header": "Nodkonfiguration", - "help_source": "Config-parameterbeskrivningar och hjälptext tillhandahålls av OpenZWave-projektet.", + "help_source": "Konfig-parameterbeskrivningar och hjälptext tillhandahålls av OpenZWave-projektet.", "introduction": "Hantera de olika konfigurationsparametrarna för en Z-Wave-nod.", "wakeup_help": "Batteridrivna noder måste vara vaken för att ändra konfigurationen. Om noden inte är vaken kommer OpenZWave att försöka uppdatera nodens konfiguration nästa gång den vaknar, vilket kan vara flera timmar (eller dagar) senare. Följ dessa steg för att väcka enheten:" }, @@ -2119,7 +2119,7 @@ "sequence_sentence": "Handlingssekvensen för detta skript." }, "picker": { - "add_script": "Lägg till skript", + "add_script": "Lägg till nytt skript", "edit_script": "Redigera skript", "header": "Skript-redigerare", "headers": { @@ -2145,7 +2145,7 @@ "filter": "Ladda om filterentiteter", "generic": "Ladda om generella IP kamera entiteter", "generic_thermostat": "Ladda om standard termometer entiteter", - "group": "Ladda om grupper", + "group": "Ladda om grupper, gruppentiteter och aviseringstjänster", "heading": "YAML-konfiguration laddas om", "history_stats": "Ladda om historiskstatistik entiteter", "homekit": "Ladda om HomeKit", @@ -2206,7 +2206,7 @@ "tag_id": "Tagg-ID", "tag_id_placeholder": "Autogenereras när det lämnas tomt", "update": "Uppdatera", - "usage": "En tagg kan utlösa en automatisering när den skannas, du kan använda NFC-taggar, QR-koder eller någon annan typ av tagg. Använd vår {companion_link} att skriva den här taggen till en programmerbar NFC-tagg eller skapa en QR-kod nedan." + "usage": "En tagg kan utlösa en automatisering när den skannas, du kan använda NFC-taggar, QR-koder eller någon annan typ av tagg. Använd vår {companion_link} till att skriva den här taggen till en programmerbar NFC-tagg eller skapa en QR-kod nedan." }, "edit": "Redigera", "headers": { @@ -2371,7 +2371,7 @@ "configured_in_yaml": "Zoner konfigurerade via configuration.yaml kan inte redigeras via användargränssnittet.", "confirm_delete": "Är du säker på att du vill ta bort den här zonen?", "create_zone": "Skapa Zon", - "description": "Hantera zonerna du vill följa personer i", + "description": "Hantera zonerna som du vill följa personer i", "detail": { "create": "Skapa", "delete": "Radera", @@ -2547,7 +2547,7 @@ "entity": "Entitet", "jinja_documentation": "Malldokumentation för Jinja2", "listeners": "Den här mallen lyssnar efter följande tillståndsändrade händelser:", - "no_listeners": "Den här mallen lyssnar inte efter några tillståndsändrade händelser och uppdateras inte automatiskt.", + "no_listeners": "Den här mallen lyssnar inte efter några händelser och uppdateras inte automatiskt.", "reset": "Återställ till demomall", "result_type": "Resultattyp", "template_extensions": "Mallutökningar för Home Assistant", @@ -2911,7 +2911,7 @@ }, "raw_editor": { "confirm_remove_config_text": "Vi kommer automatiskt att generera dina Lovelace UI-vyer med dina områden och enheter om du tar bort din Lovelace UI-konfiguration.", - "confirm_remove_config_title": "Är du säker på att du vill ta bort din Lovelace UI konfiguration? Vi kommer automatiskt att generera dina Lovelace UI-vyer med dina områden och enheter.", + "confirm_remove_config_title": "Är du säker på att du vill ta bort din Lovelace UI konfiguration?", "confirm_unsaved_changes": "Du har osparade ändringar. Är du säker på att du vill avsluta?", "confirm_unsaved_comments": "Din konfiguration innehåller en eller flera kommentarer, dessa kommer inte att sparas. Vill du fortsätta ändå?", "error_invalid_config": "Din konfiguration är inte giltig: {error}", @@ -2955,7 +2955,7 @@ }, "menu": { "close": "Stäng", - "configure_ui": "Konfigurera användargränssnittet", + "configure_ui": "Redigera kontrollpanel", "exit_edit_mode": "Avsluta UI-redigeringsläge", "help": "Hjälp", "refresh": "Uppdatera", @@ -3237,7 +3237,7 @@ "name": "Namn", "not_used": "Har aldrig använts", "prompt_copy_token": "Kopiera din åtkomsttoken. Den kommer inte att visas igen.", - "prompt_name": "Namn?" + "prompt_name": "Ge token ett namn" }, "mfa_setup": { "close": "Stäng", diff --git a/translations/frontend/tr.json b/translations/frontend/tr.json index e85c19fe12..adc51e13b4 100644 --- a/translations/frontend/tr.json +++ b/translations/frontend/tr.json @@ -609,6 +609,11 @@ }, "service-picker": { "service": "Servis" + }, + "user-picker": { + "add_user": "Kullanıcı Ekle", + "no_user": "Kullanıcı yok", + "remove_user": "Kullanıcıyı kaldır" } }, "dialogs": { @@ -693,6 +698,7 @@ "dismiss": "İletişim kutusunu kapat", "edit": "Varlığı düzenle", "history": "Geçmiş", + "last_changed": "Son değişiklik", "person": { "create_zone": "Geçerli konumdan bölge oluşturma" }, @@ -747,6 +753,15 @@ "description": "Seçenekler başarıyla kaydedildi." } }, + "quick-bar": { + "commands": { + "server_control": { + "perform_action": "{action} Sunucu", + "restart": "Yeniden Başlat", + "stop": "Durdur" + } + } + }, "voice_command": { "did_not_hear": "Home asistanı hiçbir şey duymadı", "error": "Oops, bir hata oluştu", @@ -805,6 +820,7 @@ }, "notification_toast": { "connection_lost": "Bağlantı koptu. Yeniden bağlanıyor ...", + "dismiss": "Yoksay", "service_call_failed": "{service} çağrı yapılamadı.", "started": "Home Assistant başladı!", "starting": "Home Assistant başlıyor, arayüzün yüklenmesi için bekleyiniz", @@ -1042,6 +1058,9 @@ "trigger": "tetik" }, "event": { + "context_user_pick": "Kullanıcı Ekle", + "context_user_picked": "Kullanıcı tarafından tetiklenmiş olay", + "context_users": "Tarafından tetiklenen olaylarla sınırla", "event_data": "Etkinlik Verisi", "event_type": "Olay Türü", "label": "Olay:" @@ -1678,6 +1697,15 @@ }, "starting": "Başlatılıyor", "unknown": "Bilinmeyen" + }, + "node_config": { + "wakeup_help": "Pille çalışan nodlar, yapılandırmalarını değiştirmek için uyanık olmalıdır. Nodlar uyanık değilse OpenZWave, bir sonraki uyanışında düğümün yapılandırmasını güncellemeye çalışacaktır, bu birkaç saat (veya gün) sonra olabilir. Cihazınızı uyandırmak için şu adımları izleyin:" + }, + "node_metadata": { + "product_manual": "Ürün kılavuzu" + }, + "services": { + "cancel_command": "Komutu İptal Et" } }, "person": { @@ -2133,7 +2161,9 @@ "jinja_documentation": "Jinja2 taslak dökümantasyonu", "listeners": "Bu şablon, takip edilen durumu değişen olayları dinler:", "no_listeners": "Bu şablon, durum değiştirilen olayları dinlemez ve otomatik olarak güncelleştirilmez.", + "result_type": "Sonuç türü", "template_extensions": "Home Assistant taslak eklentileri", + "time": "Bu şablon her dakika güncellenir.", "title": "Taslaklar", "unknown_error_template": "Bilinmeyen taslak gösterim hatası" } @@ -2252,6 +2282,7 @@ "secondary_info_values": { "last-changed": "Son değiştirilen", "last-triggered": "Son Tetiklenen", + "last-updated": "Son güncelleme", "position": "Pozisyon" }, "show_header_toggle": "Başlık Değiştirme Gösterilsin mi?", @@ -2308,6 +2339,10 @@ "description": "Bakış kartı, birden fazla sensörü kompakt bir genel bakışta gruplamak için kullanışlıdır.", "name": "Glance" }, + "grid": { + "description": "Izgara kartı, ızgarada birden çok kart göstermenizi sağlar.", + "name": "Izgara" + }, "history-graph": { "description": "Geçmiş Grafiği kartı, listelenen varlıkların her biri için bir grafik görüntülemenizi sağlar.", "name": "Geçmiş grafiği" @@ -2491,7 +2526,8 @@ "exit_edit_mode": "UI düzenleme modundan çık", "help": "Yardım", "refresh": "Yenile", - "reload_resources": "Kaynakları yeniden yükle" + "reload_resources": "Kaynakları yeniden yükle", + "start_conversation": "Konuşmayı başlatın" }, "reload_lovelace": "Arayüzü yeniden yükle", "reload_resources": { @@ -2723,6 +2759,10 @@ "dropdown_label": "Gösterge Paneli", "header": "Gösterge Paneli" }, + "enable_shortcuts": { + "description": "Kullanıcı arayüzünde çeşitli eylemler gerçekleştirmek için klavye kısayollarını etkinleştirin veya devre dışı bırakın.", + "header": "Klavye kısayolları" + }, "force_narrow": { "description": "Bu, mobil deneyimi benzer kenar çubuğunu varsayılan olarak gizler.", "header": "Kenar çubuğunu her zaman gizle" @@ -2767,6 +2807,10 @@ "header": "Çok Faktörlü Kimlik Doğrulama Modülleri" }, "push_notifications": { + "add_device_prompt": { + "input_label": "Cihaz adı", + "title": "Bu cihaz ne olarak adlandırılmalı?" + }, "description": "Bu cihaza bildirimler gönder", "error_load_platform": "Notify.html5 'i yapılandırın.", "error_use_https": "Önyüz için SSL'nin etkinleştirilmesini gerektirir.", diff --git a/translations/frontend/zh-Hans.json b/translations/frontend/zh-Hans.json index 18a93d2ee4..0e6f1cafd5 100644 --- a/translations/frontend/zh-Hans.json +++ b/translations/frontend/zh-Hans.json @@ -2759,6 +2759,10 @@ "description": "“概览”卡片用于将多个传感器汇聚成一个紧凑的概览。", "name": "概览" }, + "grid": { + "description": "“网格”卡片用于将多个卡片显示在一个网格。", + "name": "网格" + }, "history-graph": { "description": "“历史图表”卡片用于为每一个列出的实体显示图表。", "name": "历史图表" From 028ae061da35495c6e1ba900661451539145a62a Mon Sep 17 00:00:00 2001 From: HomeAssistant Azure Date: Thu, 5 Nov 2020 00:32:18 +0000 Subject: [PATCH 073/125] [ci skip] Translation update --- translations/frontend/ca.json | 20 ++++++++++---------- translations/frontend/cs.json | 2 +- translations/frontend/el.json | 4 ++-- translations/frontend/es.json | 2 +- translations/frontend/ko.json | 4 ++++ translations/frontend/zh-Hant.json | 4 ++++ 6 files changed, 22 insertions(+), 14 deletions(-) diff --git a/translations/frontend/ca.json b/translations/frontend/ca.json index 859b988bfb..d01bda86ab 100644 --- a/translations/frontend/ca.json +++ b/translations/frontend/ca.json @@ -432,7 +432,7 @@ "turn_on": "Engega" }, "persistent_notification": { - "dismiss": "Desestimar" + "dismiss": "Omet" }, "scene": { "activate": "Activar" @@ -715,7 +715,7 @@ }, "entity_registry": { "control": "Control", - "dismiss": "Desestimar", + "dismiss": "Omet", "editor": { "confirm_delete": "Estàs segur que vols eliminar aquesta entrada?", "delete": "Elimina", @@ -795,7 +795,7 @@ "more_info_control": { "controls": "Controls", "details": "Detalls", - "dismiss": "Desestimar el diàleg", + "dismiss": "Omet el diàleg", "edit": "Edita entitat", "history": "Historial", "last_changed": "Darrer canvi", @@ -952,13 +952,13 @@ "notification_drawer": { "click_to_configure": "Prem el botó per configurar {entity}", "close": "Tanca", - "dismiss_all": "Descarta-ho tot", + "dismiss_all": "Omet tot", "empty": "No hi ha notificacions", "title": "Notificacions" }, "notification_toast": { "connection_lost": "Connexió perduda. Tornant a connectar...", - "dismiss": "Desestimar", + "dismiss": "Omet", "service_call_failed": "Ha fallat la crida al servei {service}.", "started": "Home Assistant s'ha iniciat!", "starting": "Home Assistant està iniciant-se, no estarà tot disponible fins que acabi", @@ -1084,7 +1084,7 @@ "wait_template": "Plantilla d'espera" } }, - "unsupported_action": "Acció no suportada per la UI: {action}" + "unsupported_action": "La UI no és compatible amb l'acció: {action}" }, "alias": "Nom", "conditions": { @@ -1161,7 +1161,7 @@ "zone": "Zona" } }, - "unsupported_condition": "Condició no suportada per la UI: {condition}" + "unsupported_condition": "La UI no és compatible amb la condició: {condition}" }, "copy_to_clipboard": "Copia al porta-retalls", "default_name": "Nova automatització", @@ -1290,7 +1290,7 @@ "zone": "Zona" } }, - "unsupported_platform": "Plataforma no suportada per la UI: {platform}" + "unsupported_platform": "La UI no és compatible amb la plataforma: {platform}" }, "unsaved_confirm": "Hi ha canvis no desats. Segur que vols sortir?" }, @@ -1441,7 +1441,7 @@ "login": { "alert_email_confirm_necessary": "Has de confirmar el teu correu electrònic abans d'iniciar sessió.", "alert_password_change_required": "Has de canviar la teva contrasenya abans d'iniciar sessió.", - "dismiss": "Desestimar", + "dismiss": "Omet", "email": "Correu electrònic", "email_error_msg": "Correu electrònic invàlid", "forgot_password": "has oblidat la contrasenya?", @@ -1746,7 +1746,7 @@ "aborted": "Avortat", "close": "Tanca", "created_config": "S'ha creat configuració per a {name}.", - "dismiss": "Desestima el diàleg", + "dismiss": "Omet el diàleg", "error_saving_area": "Error desant àrea: {error}", "external_step": { "description": "Aquest pas requereix que visitis un lloc web extern per completar-lo.", diff --git a/translations/frontend/cs.json b/translations/frontend/cs.json index e426d1ad84..13f081a26a 100644 --- a/translations/frontend/cs.json +++ b/translations/frontend/cs.json @@ -571,7 +571,7 @@ "no_history_found": "Historie stavu chybí." }, "logbook": { - "by": "přes", + "by": "prostřednictvím", "by_service": "službou", "entries_not_found": "Nenalezeny žádné záznamy.", "messages": { diff --git a/translations/frontend/el.json b/translations/frontend/el.json index f5e2aceaf6..43f34c5af5 100644 --- a/translations/frontend/el.json +++ b/translations/frontend/el.json @@ -577,8 +577,8 @@ "messages": { "became_unavailable": "μετετράπη σε μη διαθέσιμο", "changed_to_state": "άλλαξε σε {state}", - "cleared_device_class": "διαγράφηκε (δεν εντοπίστηκε {device_class} )", - "detected_device_class": "εντοπίστηκε {device_class}", + "cleared_device_class": "παραγράφηκε (δεν εντοπίστηκε {device_class} )", + "detected_device_class": "εντόπισε {device_class}", "rose": "αυξήθηκε", "set": "ορίστηκε", "turned_off": "απενεργοποιήθηκε", diff --git a/translations/frontend/es.json b/translations/frontend/es.json index 8149c78426..39739448a2 100644 --- a/translations/frontend/es.json +++ b/translations/frontend/es.json @@ -1536,7 +1536,7 @@ } }, "devices": { - "add_prompt": "Todavía no se ha añadido ningún {name} usando este dispositivo. Puedes añadir uno pulsando en el botón + de arriba.", + "add_prompt": "Todavía no se han añadido {name} usando este dispositivo. Puedes añadir pulsando en el botón + de arriba.", "automation": { "actions": { "caption": "Cuando algo se activa....", diff --git a/translations/frontend/ko.json b/translations/frontend/ko.json index 53a85040d6..c8f388fa15 100644 --- a/translations/frontend/ko.json +++ b/translations/frontend/ko.json @@ -2600,6 +2600,10 @@ "description": "한눈에 보기 카드는 여러 센서를 간단한 개요로 그룹화하는 데 유용합니다.", "name": "한눈에 보기" }, + "grid": { + "description": "격자 모아보기 카드를 사용하면 한 격자에 여러 카드를 표시할 수 있습니다.", + "name": "격자 모아보기" + }, "history-graph": { "description": "기록 그래프 카드를 사용하면 나열된 각 구성요소에 대한 그래프를 표시할 수 있습니다.", "name": "기록 그래프" diff --git a/translations/frontend/zh-Hant.json b/translations/frontend/zh-Hant.json index c4fc360cdb..3ed39e5d51 100644 --- a/translations/frontend/zh-Hant.json +++ b/translations/frontend/zh-Hant.json @@ -2759,6 +2759,10 @@ "description": "簡略式面板以緊致群組方式顯示多個傳感器狀態。", "name": "簡略式面板" }, + "grid": { + "description": "方格排列面板可於方格內顯示多個面板。", + "name": "方格排列面板" + }, "history-graph": { "description": "歷史圖表式面板可供顯示每個列表實體圖表。", "name": "歷史圖表式面板" From 0037cd2e69f3528265a2a0f90224d8c8cc41466a Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Thu, 5 Nov 2020 16:15:16 +0100 Subject: [PATCH 074/125] Make thingtalk dialogs translatable (#7574) --- .../automation/thingtalk/dialog-thingtalk.ts | 31 +++++++++++++------ .../thingtalk/ha-thingtalk-placeholders.ts | 19 ++++++++---- src/translations/en.json | 19 +++++++++++- 3 files changed, 53 insertions(+), 16 deletions(-) diff --git a/src/panels/config/automation/thingtalk/dialog-thingtalk.ts b/src/panels/config/automation/thingtalk/dialog-thingtalk.ts index 546eba0344..6659c03ac8 100644 --- a/src/panels/config/automation/thingtalk/dialog-thingtalk.ts +++ b/src/panels/config/automation/thingtalk/dialog-thingtalk.ts @@ -85,13 +85,22 @@ class DialogThingtalk extends LitElement { .opened=${this._opened} @opened-changed=${this._openedChanged} > -

Create a new automation

+

+ ${this.hass.localize( + `ui.panel.config.automation.thingtalk.task_selection.header` + )} +

${this._error ? html`
${this._error}
` : ""} - Type below what this automation should do, and we will try to convert - it into a Home Assistant automation. (only English is supported for - now)

- For example: + ${this.hass.localize( + `ui.panel.config.automation.thingtalk.task_selection.introduction` + )}

+ ${this.hass.localize( + `ui.panel.config.automation.thingtalk.task_selection.language_note` + )}

+ ${this.hass.localize( + `ui.panel.config.automation.thingtalk.task_selection.for_example` + )}