From 6b0a8eae7464f09729688b1deff74633dc8b132a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Wed, 27 Jan 2021 17:13:18 +0100 Subject: [PATCH 01/54] Add twine to release flow (#8254) --- .github/workflows/release.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 425d0e3a2f..8653bc9644 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -33,6 +33,7 @@ jobs: - name: Build and release package run: | + python3 -m pip install twine export TWINE_USERNAME="__token__" export TWINE_PASSWORD="${{ secrets.TWINE_TOKEN }}" From 12acb5473b683dd9ef633973d0c86f9f4e6c4107 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Wed, 27 Jan 2021 17:17:20 +0100 Subject: [PATCH 02/54] Bumped version to 20210127.1 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c0915cc7e9..5da1895d91 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages setup( name="home-assistant-frontend", - version="20210127.0", + version="20210127.1", description="The Home Assistant frontend", url="https://github.com/home-assistant/home-assistant-polymer", author="The Home Assistant Authors", From 4d6c11ce31372408cd173bd7a6e5e58b685bbb0c Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Wed, 27 Jan 2021 17:22:01 +0100 Subject: [PATCH 03/54] Enforce "good" states of binary_sensor as green in history timeline chart (#8145) --- src/components/entity/ha-chart-base.js | 8 +++- .../state-history-chart-timeline.js | 39 ++++++++++++++++++- 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/src/components/entity/ha-chart-base.js b/src/components/entity/ha-chart-base.js index 749b79ac3b..a6ed78fe48 100644 --- a/src/components/entity/ha-chart-base.js +++ b/src/components/entity/ha-chart-base.js @@ -638,8 +638,14 @@ class HaChartBase extends mixinBehaviors( const name = data[3]; if (name === null) return Color().hsl(0, 40, 38); if (name === undefined) return Color().hsl(120, 40, 38); - const name1 = name.toLowerCase(); + let name1 = name.toLowerCase(); if (ret === undefined) { + if (data[4]) { + // Invert on/off if data[4] is true. Required for some binary_sensor device classes + // (BINARY_SENSOR_DEVICE_CLASS_COLOR_INVERTED) where "off" is the good (= green color) value. + name1 = name1 === "on" ? "off" : name1 === "off" ? "on" : name1; + } + ret = colorDict[name1]; } if (ret === undefined) { diff --git a/src/components/state-history-chart-timeline.js b/src/components/state-history-chart-timeline.js index 50c234f35f..727e5af83d 100644 --- a/src/components/state-history-chart-timeline.js +++ b/src/components/state-history-chart-timeline.js @@ -3,10 +3,27 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; /* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; import { formatDateTimeWithSeconds } from "../common/datetime/format_date_time"; +import { computeDomain } from "../common/entity/compute_domain"; import { computeRTL } from "../common/util/compute_rtl"; import LocalizeMixin from "../mixins/localize-mixin"; import "./entity/ha-chart-base"; +/** Binary sensor device classes for which the static colors for on/off need to be inverted. + * List the ones were "off" = good or normal state = should be rendered "green". + */ +const BINARY_SENSOR_DEVICE_CLASS_COLOR_INVERTED = new Set([ + "battery", + "door", + "garage_door", + "gas", + "lock", + "opening", + "problem", + "safety", + "smoke", + "window", +]); + class StateHistoryChartTimeline extends LocalizeMixin(PolymerElement) { static get template() { return html` @@ -129,6 +146,12 @@ class StateHistoryChartTimeline extends LocalizeMixin(PolymerElement) { let prevLastChanged = startTime; const entityDisplay = names[stateInfo.entity_id] || stateInfo.name; + const invertOnOff = + computeDomain(stateInfo.entity_id) === "binary_sensor" && + BINARY_SENSOR_DEVICE_CLASS_COLOR_INVERTED.has( + this.hass.states[stateInfo.entity_id].attributes.device_class + ); + const dataRow = []; stateInfo.data.forEach((state) => { let newState = state.state; @@ -144,7 +167,13 @@ class StateHistoryChartTimeline extends LocalizeMixin(PolymerElement) { if (prevState !== null && newState !== prevState) { newLastChanged = new Date(state.last_changed); - dataRow.push([prevLastChanged, newLastChanged, locState, prevState]); + dataRow.push([ + prevLastChanged, + newLastChanged, + locState, + prevState, + invertOnOff, + ]); prevState = newState; locState = state.state_localize; @@ -157,7 +186,13 @@ class StateHistoryChartTimeline extends LocalizeMixin(PolymerElement) { }); if (prevState !== null) { - dataRow.push([prevLastChanged, endTime, locState, prevState]); + dataRow.push([ + prevLastChanged, + endTime, + locState, + prevState, + invertOnOff, + ]); } datasets.push({ data: dataRow, entity_id: stateInfo.entity_id }); labels.push(entityDisplay); From 69d0a22091284b81af334082a3736d22f9a5f520 Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Wed, 27 Jan 2021 18:39:03 +0100 Subject: [PATCH 04/54] Add check to prevent undefined access during action validation (#8257) --- src/panels/lovelace/editor/types.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/panels/lovelace/editor/types.ts b/src/panels/lovelace/editor/types.ts index a42cc8dcb3..2cd040cf37 100644 --- a/src/panels/lovelace/editor/types.ts +++ b/src/panels/lovelace/editor/types.ts @@ -96,8 +96,14 @@ export interface EditSubElementEvent { } export const actionConfigStruct = dynamic((_value, ctx) => { - const test = actionConfigMap[ctx.branch[0][ctx.path[0]].action]; - return test || actionConfigStructType; + if (ctx.branch[0][ctx.path[0]]) { + return ( + actionConfigMap[ctx.branch[0][ctx.path[0]].action] || + actionConfigStructType + ); + } + + return actionConfigStructType; }); const actionConfigStructUser = object({ From 5ee0250ba5a40f542388b079b9d1a696a9c6aa45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Wed, 27 Jan 2021 22:38:07 +0100 Subject: [PATCH 05/54] Add hostname and metrics to Add-ons (#8253) --- .../src/addon-view/info/hassio-addon-info.ts | 561 ++++++++++-------- src/data/hassio/addon.ts | 1 + 2 files changed, 324 insertions(+), 238 deletions(-) diff --git a/hassio/src/addon-view/info/hassio-addon-info.ts b/hassio/src/addon-view/info/hassio-addon-info.ts index b4208a6f8f..8c91d8b98b 100644 --- a/hassio/src/addon-view/info/hassio-addon-info.ts +++ b/hassio/src/addon-view/info/hassio-addon-info.ts @@ -49,14 +49,20 @@ import { uninstallHassioAddon, validateHassioAddonOption, } from "../../../../src/data/hassio/addon"; -import { extractApiErrorMessage } from "../../../../src/data/hassio/common"; +import { + extractApiErrorMessage, + fetchHassioStats, + HassioStats, +} from "../../../../src/data/hassio/common"; import { showAlertDialog, showConfirmationDialog, } from "../../../../src/dialogs/generic/show-dialog-box"; import { haStyle } from "../../../../src/resources/styles"; import { HomeAssistant } from "../../../../src/types"; +import { bytesToString } from "../../../../src/util/bytes-to-string"; import "../../components/hassio-card-content"; +import "../../components/supervisor-metric"; import { showHassioMarkdownDialog } from "../../dialogs/markdown/show-dialog-hassio-markdown"; import { hassioStyle } from "../../resources/hassio-style"; @@ -131,9 +137,24 @@ class HassioAddonInfo extends LitElement { @property({ attribute: false }) public addon!: HassioAddonDetails; + @internalProperty() private _metrics?: HassioStats; + @internalProperty() private _error?: string; protected render(): TemplateResult { + const metrics = [ + { + description: "Add-on CPU Usage", + value: this._metrics?.cpu_percent, + }, + { + description: "Add-on RAM Usage", + value: this._metrics?.memory_percent, + tooltip: `${bytesToString(this._metrics?.memory_usage)}/${bytesToString( + this._metrics?.memory_limit + )}`, + }, + ]; return html` ${this.addon.update_available ? html` @@ -237,249 +258,281 @@ class HassioAddonInfo extends LitElement { > for details. - ${this.addon.logo - ? html` - - ` - : ""} -
- ${this.addon.stage !== "stable" - ? html` +
+ ${this.addon.logo + ? html` + + ` + : ""} +
+ ${this.addon.stage !== "stable" + ? html` + + ` + : ""} + + - - ` - : ""} + > + ${this.addon.host_network + ? html` + + + + ` + : ""} + ${this.addon.full_access + ? html` + + + + ` + : ""} + ${this.addon.homeassistant_api + ? html` + + + + ` + : ""} + ${this._computeHassioApi + ? html` + + + + ` + : ""} + ${this.addon.docker_api + ? html` + + + + ` + : ""} + ${this.addon.host_pid + ? html` + + + + ` + : ""} + ${this.addon.apparmor + ? html` + + + + ` + : ""} + ${this.addon.auth_api + ? html` + + + + ` + : ""} + ${this.addon.ingress + ? html` + + + + ` + : ""} +
- - ${this.addon.host_network - ? html` - - - - ` - : ""} - ${this.addon.full_access - ? html` - - - - ` - : ""} - ${this.addon.homeassistant_api - ? html` - - - - ` - : ""} - ${this._computeHassioApi - ? html` - - - - ` - : ""} - ${this.addon.docker_api - ? html` - - - - ` - : ""} - ${this.addon.host_pid - ? html` - - - - ` - : ""} - ${this.addon.apparmor - ? html` - - - - ` - : ""} - ${this.addon.auth_api - ? html` - - - - ` - : ""} - ${this.addon.ingress - ? html` - - - - ` - : ""} + ${this.addon.version + ? html` +
+ + + Start on boot + + + Make the add-on start during a system boot + + + + + ${this.addon.startup !== "once" + ? html` + + + Watchdog + + + This will start the add-on if it crashes + + + + ` + : ""} + ${this.addon.auto_update || + this.hass.userData?.showAdvanced + ? html` + + + Auto update + + + Auto update the add-on when there is a new + version available + + + + ` + : ""} + ${this.addon.ingress + ? html` + + + Show in sidebar + + + ${this._computeCannotIngressSidebar + ? "This option requires Home Assistant 0.92 or later." + : "Add this add-on to your sidebar"} + + + + ` + : ""} + ${this._computeUsesProtectedOptions + ? html` + + + Protection mode + + + Blocks elevated system access from the add-on + + + + ` + : ""} +
+ ` + : ""} +
+
+ ${this.addon.state === "started" + ? html` + + Hostname + + + ${this.addon.hostname} + + + ${metrics.map( + (metric) => + html` + + ` + )}` + : ""} +
- - ${this.addon.version - ? html` -
- - - Start on boot - - - Make the add-on start during a system boot - - - - - ${this.addon.startup !== "once" - ? html` - - - Watchdog - - - This will start the add-on if it crashes - - - - ` - : ""} - ${this.addon.auto_update || this.hass.userData?.showAdvanced - ? html` - - - Auto update - - - Auto update the add-on when there is a new version - available - - - - ` - : ""} - ${this.addon.ingress - ? html` - - - Show in sidebar - - - ${this._computeCannotIngressSidebar - ? "This option requires Home Assistant 0.92 or later." - : "Add this add-on to your sidebar"} - - - - ` - : ""} - ${this._computeUsesProtectedOptions - ? html` - - - Protection mode - - - Blocks elevated system access from the add-on - - - - ` - : ""} -
- ` - : ""} ${this._error ? html`
${this._error}
` : ""}
@@ -579,6 +632,22 @@ class HassioAddonInfo extends LitElement { `; } + protected updated(changedProps) { + super.updated(changedProps); + if (changedProps.has("addon")) { + this._loadData(); + } + } + + private async _loadData(): Promise { + if (this.addon.state === "started") { + this._metrics = await fetchHassioStats( + this.hass, + `addons/${this.addon.slug}` + ); + } + } + private get _computeHassioApi(): boolean { return ( this.addon.hassio_api && @@ -988,10 +1057,26 @@ class HassioAddonInfo extends LitElement { .addon-options { max-width: 50%; } + .addon-options.started { + max-width: 90%; + } + + .addon-container { + display: grid; + grid-auto-flow: column; + grid-template-columns: 1fr auto; + } + .addon-container div:last-of-type { + align-self: end; + } + @media (max-width: 720px) { .addon-options { max-width: 100%; } + .addon-container { + display: block; + } } `, ]; diff --git a/src/data/hassio/addon.ts b/src/data/hassio/addon.ts index 5e05ae05bc..963af90aa6 100644 --- a/src/data/hassio/addon.ts +++ b/src/data/hassio/addon.ts @@ -41,6 +41,7 @@ export interface HassioAddonDetails extends HassioAddonInfo { gpio: boolean; hassio_api: boolean; hassio_role: "default" | "homeassistant" | "manager" | "admin"; + hostname: string; homeassistant_api: boolean; homeassistant: string; host_dbus: boolean; From 7de6ea0879df2e542c064ee62f429e55ae4d280e Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 27 Jan 2021 23:42:06 +0100 Subject: [PATCH 06/54] Fix tts (#8261) --- src/data/tts.ts | 2 +- src/panels/config/cloud/account/dialog-cloud-tts-try.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data/tts.ts b/src/data/tts.ts index 23404087b9..e4469ffb24 100644 --- a/src/data/tts.ts +++ b/src/data/tts.ts @@ -9,4 +9,4 @@ export const convertTextToSpeech = ( language?: string; options?: Record; } -) => hass.callApi<{ url: string }>("POST", "tts_get_url", data); +) => hass.callApi<{ url: string; path: string }>("POST", "tts_get_url", data); diff --git a/src/panels/config/cloud/account/dialog-cloud-tts-try.ts b/src/panels/config/cloud/account/dialog-cloud-tts-try.ts index 0fb9891aeb..076c9aef20 100644 --- a/src/panels/config/cloud/account/dialog-cloud-tts-try.ts +++ b/src/panels/config/cloud/account/dialog-cloud-tts-try.ts @@ -164,7 +164,7 @@ export class DialogTryTts extends LitElement { language, options: { gender }, }); - url = result.url; + url = result.path; } catch (err) { this._loadingExample = false; showAlertDialog(this, { From 3a522215a95e7c61ec4a959af2863555a4f5dc7a Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Thu, 28 Jan 2021 01:34:39 +0000 Subject: [PATCH 07/54] Translation update --- translations/frontend/ca.json | 13 +++- translations/frontend/cs.json | 37 +++++++-- translations/frontend/de.json | 69 +++++++++++++--- translations/frontend/en.json | 38 ++++++++- translations/frontend/es.json | 11 +++ translations/frontend/et.json | 11 +++ translations/frontend/he.json | 53 ++++++++++++- translations/frontend/nb.json | 121 +++++++++++++++++++++++++---- translations/frontend/nl.json | 50 +++++++++++- translations/frontend/zh-Hans.json | 109 ++++++++++++++++++++++++-- translations/frontend/zh-Hant.json | 111 ++++++++++++++++++++++++-- 11 files changed, 574 insertions(+), 49 deletions(-) diff --git a/translations/frontend/ca.json b/translations/frontend/ca.json index b54279eed0..ad7cbe1eac 100644 --- a/translations/frontend/ca.json +++ b/translations/frontend/ca.json @@ -557,6 +557,10 @@ "remove_user": "Elimina usuari", "select_blueprint": "Selecciona un blueprint" }, + "calendar": { + "my_calendars": "Calendaris", + "today": "Avui" + }, "data-table": { "no-data": "No hi ha dades", "search": "Cerca" @@ -2657,14 +2661,21 @@ }, "dashboard": { "driver_version": "Versió del controlador", + "dump_dead_nodes_text": "Alguns dels nodes no han respost i s'han donat com a morts. Aquests no s'exportaran completament.", + "dump_dead_nodes_title": "Alguns dels teus nodes estan morts", + "dump_debug": "Baixa un fitxer de buidatge de la xarxa per ajudar-te a diagnosticar problemes", + "dump_not_ready_confirm": "Baixa", + "dump_not_ready_text": "Si fas una exportació mentre tots els nodes no estan preparats, pots perdre dades útils. Deixa més temps perque la xarxa consulti tots els nodes. Vols seguir amb el procés?", + "dump_not_ready_title": "Encara no tots els nodes estan preparats", "header": "Gestiona la teva xarxa Z-Wave", "home_id": "ID principal", "introduction": "Gestiona la teva xarxa i nodes Z-Wave", "node_count": "Recompte de nodes", + "nodes_ready": "Nodes preparats", "server_version": "Versió del servidor" }, "device_info": { - "node_ready": "Node llest", + "node_ready": "Node preparat", "node_status": "Estat del node", "zwave_info": "Informació Z-Wave" }, diff --git a/translations/frontend/cs.json b/translations/frontend/cs.json index 40eeb13b22..f8414936a5 100644 --- a/translations/frontend/cs.json +++ b/translations/frontend/cs.json @@ -1117,7 +1117,9 @@ "device_id": { "action": "Akce", "extra_fields": { - "code": "Kód" + "code": "Kód", + "message": "Zpráva", + "title": "Název" }, "label": "Zařízení" }, @@ -1293,7 +1295,8 @@ "extra_fields": { "above": "Větší než", "below": "Menší než", - "for": "Doba trvání" + "for": "Doba trvání", + "zone": "Zóna" }, "label": "Zařízení", "trigger": "Spouštěč" @@ -1464,7 +1467,7 @@ "info_state_reporting": "Pokud povolíte hlášení stavu, Home Assistant bude posílat veškeré změny stavů všech exponovaných entit do Amazonu. Toto vám umožní sledovat aktuální stavy entity v aplikaci Alexa a použít tyto stavy k vytvoření rutin.", "manage_entities": "Správa entit", "state_reporting_error": "Nelze {enable_disable} hlášení stavu.", - "sync_entities": "Synchronizovat entity", + "sync_entities": "Synchronizovat entity do Amazonu", "sync_entities_error": "Chyba při synchronizaci entit:", "title": "Alexa" }, @@ -1505,6 +1508,11 @@ }, "sign_out": "Odhlásit se", "thank_you_note": "Děkujeme, že jste se stali součástí Home Assistant Cloud. Díky lidem, jako jste vy, jsme schopni udělat skvělý zážitek z domácí automatizace pro každého. Díky!", + "tts": { + "female": "Žena", + "male": "Muž", + "title": "Převod textu do řeč" + }, "webhooks": { "disable_hook_error_msg": "Nepodařilo se deaktivovat webhook:", "info": "Všechno, co je nastaveno tak, aby bylo spouštěno webhookem, může mít veřejně přístupnou adresu URL, která vám umožní posílat data zpět Home Assistant odkudkoli, aniž by byla vaše instance vystavena internetu.", @@ -1536,11 +1544,11 @@ "description_login": "Přihlášen jako {email}", "description_not_login": "Nepřihlášen", "dialog_certificate": { - "certificate_expiration_date": "Datum vypršení platnosti certifikátu", + "certificate_expiration_date": "Datum vypršení platnosti certifikátu:", "certificate_information": "Informace o certifikátu", "close": "Zavřít", "fingerprint": "Otisk certifikátu:", - "will_be_auto_renewed": "Bude automaticky obnoveno" + "will_be_auto_renewed": "bude automaticky obnoveno" }, "dialog_cloudhook": { "available_at": "Webhook je k dispozici na následující URL adrese:", @@ -1583,7 +1591,7 @@ "dismiss": "Zavřít", "email": "E-mail", "email_error_msg": "Neplatný e-mail", - "forgot_password": "zapomenuté heslo?", + "forgot_password": "Zapomněl jste heslo?", "introduction": "Home Assistant Cloud poskytuje zabezpečené vzdálené připojení k vaší instanci zatímco jste mimo domov. Umožňuje také připojení ke cloudovým službám: Amazon Alexa a Google Assistant.", "introduction2": "Tuto službu provozuje náš partner ", "introduction2a": ", společnost založená zakladateli Home Assistant a Hass.io.", @@ -2621,6 +2629,22 @@ "introduction": "Zóny umožňují určit určité oblasti na zemi. Když je osoba v zóně, stav převezme název ze zóny. Zóny lze také použít jako aktivační událost nebo podmínku v nastavení automatizace.", "no_zones_created_yet": "Vypadá to, že nejsou vytvořené žádné zóny." }, + "zwave_js": { + "button": "Nastavit", + "common": { + "add_node": "Přidat uzel", + "close": "Zavřít", + "home_id": "ID domácnosti", + "network": "Síť", + "node_id": "ID uzlu", + "remove_node": "Odebrat uzel" + }, + "dashboard": { + "dump_not_ready_confirm": "Stáhnout", + "home_id": "ID domácnosti", + "server_version": "Verze serveru" + } + }, "zwave": { "button": "Nastavit", "caption": "Z-Wave", @@ -2998,6 +3022,7 @@ "name": "Rychlý náhled" }, "grid": { + "columns": "Sloupce", "description": "Karta Mřížka umožňuje zobrazit více karet v mřížce.", "name": "Mřížka" }, diff --git a/translations/frontend/de.json b/translations/frontend/de.json index 5d239d3bea..5c436a153b 100644 --- a/translations/frontend/de.json +++ b/translations/frontend/de.json @@ -557,6 +557,10 @@ "remove_user": "Benutzer entfernen", "select_blueprint": "Wähle eine Vorlage aus" }, + "calendar": { + "my_calendars": "Meine Kalender", + "today": "Heute" + }, "data-table": { "no-data": "Keine Daten", "search": "Suche" @@ -604,9 +608,9 @@ "set": "einstellen", "turned_off": "ausgeschaltet", "turned_on": "eingeschaltet", - "was_at_home": "war zu Hause", - "was_at_state": "war bei {state}", - "was_away": "war abwesend", + "was_at_home": "wurde zu Hause erkannt", + "was_at_state": "wurde bei {state} erkannt", + "was_away": "wurde als abwesend erkannt", "was_closed": "wurde geschlossen", "was_connected": "wurde verbunden", "was_disconnected": "wurde getrennt", @@ -1117,7 +1121,9 @@ "device_id": { "action": "Aktion", "extra_fields": { - "code": "Code" + "code": "Code", + "message": "Nachricht", + "title": "Titel" }, "label": "Gerät" }, @@ -1464,7 +1470,7 @@ "info_state_reporting": "Wenn die Statusberichterstellung aktiviert wird, sendet Home Assistant alle Statusänderungen exponierter Entitäten an Amazon. So wird in der Alexa-App immer der neueste Status angezeigt.", "manage_entities": "Entitäten verwalten", "state_reporting_error": "Der Berichtsstatus kann nicht {enable_disable} werden.", - "sync_entities": "Entitäten synchronisieren", + "sync_entities": "Entitäten zu Amazon synchronisieren", "sync_entities_error": "Fehler beim Synchronisieren von Entitäten:", "title": "Alexa" }, @@ -1505,6 +1511,11 @@ }, "sign_out": "Abmelden", "thank_you_note": "Vielen Dank, dass du Teil der Home Assistant Cloud bist. Es ist wegen Menschen wie dir, dass wir in der Lage sind, eine großartige Home Automation Erfahrung für alle zu machen. Danke!", + "tts": { + "default_language": "Zu verwendende Standardsprache", + "female": "Weiblich", + "male": "Männlich" + }, "webhooks": { "disable_hook_error_msg": "Fehler beim Deaktivieren des Webhooks:", "info": "Alles, was so konfiguriert ist, dass es durch einen Webhook ausgelöst wird, kann mit einer öffentlich zugänglichen URL versehen werden, damit Daten von überall an Home Assistant gesendet werden können, ohne deine Installation dem Internet zu öffnen.", @@ -1536,11 +1547,11 @@ "description_login": "Angemeldet als {email}", "description_not_login": "Nicht angemeldet", "dialog_certificate": { - "certificate_expiration_date": "Ablaufdatum des Zertifikats", + "certificate_expiration_date": "Ablaufdatum des Zertifikats:", "certificate_information": "Zertifikatsinformationen", "close": "Schließen", "fingerprint": "Zertifikat Fingerabdruck:", - "will_be_auto_renewed": "Wird automatisch erneuert" + "will_be_auto_renewed": "wird automatisch erneuert" }, "dialog_cloudhook": { "available_at": "Der Webhook ist unter der folgenden URL verfügbar:", @@ -2587,7 +2598,9 @@ "title": "Zigbee Home Automation", "visualization": { "caption": "Visualisierung", - "header": "Netzwerkvisualisierung" + "header": "Netzwerkvisualisierung", + "highlight_label": "Geräte hervorheben", + "zoom_label": "Auf Gerät zoomen" } }, "zone": { @@ -2619,6 +2632,35 @@ "introduction": "Mit Zonen kannst du bestimmte Regionen auf der Erde angeben. Befindet sich eine Person in einer Zone, übernimmt der Zustand den Namen aus der Zone. Zonen können auch als Auslöser oder Bedingung in Automatisierungs-Setups verwendet werden.", "no_zones_created_yet": "Es sieht so aus, als hättest du noch keine Zonen erstellt." }, + "zwave_js": { + "add_node": { + "view_device": "Gerät anzeigen" + }, + "button": "Konfigurieren", + "common": { + "close": "Schließen", + "network": "Netzwerk" + }, + "dashboard": { + "driver_version": "Treiberversion", + "dump_not_ready_confirm": "Herunterladen", + "header": "Verwalte dein Z-Wave-Netzwerk", + "server_version": "Serverversion" + }, + "navigation": { + "network": "Netzwerk" + }, + "network_status": { + "unknown": "Unbekannt" + }, + "node_status": { + "alive": "Lebendig", + "asleep": "Schläft", + "awake": "Wach", + "dead": "Tot", + "unknown": "Unbekannt" + } + }, "zwave": { "button": "Konfigurieren", "caption": "Z-Wave", @@ -2813,6 +2855,11 @@ }, "cards": { "action_confirmation": "Bist du sicher, dass du die Aktion \"{action}\" ausführen möchtest?", + "actions": { + "action_confirmation": "Bist du sicher, dass du die Aktion \"{action}\" ausführen möchtest?", + "no_navigation_path": "Kein Navigationspfad angegeben", + "no_service": "Kein Dienst zur Ausführung angegeben" + }, "confirm_delete": "Möchten Sie diese Karte wirklich löschen?", "empty_state": { "go_to_integrations_page": "Gehe zur Integrationsseite.", @@ -2879,7 +2926,7 @@ "name": "Alarmpanel" }, "button": { - "default_action_help": "Die Standardaktion hängt von den Funktionen der Entität ab: sie wird entweder umgeschaltet oder die weiteren Informationen werden angezeigt.", + "default_action_help": "Die Standardaktion hängt von den Funktionen der Entität ab. Sie wird entweder umgeschaltet oder die weiteren Informationen werden angezeigt.", "description": "Mit der Schaltflächen-Karte kannst du Schaltflächen hinzufügen, um Aufgaben auszuführen.", "name": "Schaltfläche" }, @@ -2996,8 +3043,10 @@ "name": "Glance" }, "grid": { + "columns": "Spalten", "description": "Mit der Grid-Karte können Sie mehrere Karten in einem Raster anzeigen.", - "name": "Raster" + "name": "Raster", + "square": "Karten als Quadrate rendern" }, "history-graph": { "description": "Mit der Verlaufsdiagramm-Karte kannst du für jedes der aufgelisteten Objekte ein Diagramm anzeigen.", diff --git a/translations/frontend/en.json b/translations/frontend/en.json index a84f077391..aa4757d024 100644 --- a/translations/frontend/en.json +++ b/translations/frontend/en.json @@ -592,6 +592,7 @@ } }, "history_charts": { + "history_disabled": "History integration disabled", "loading_history": "Loading state history...", "no_history_found": "No state history found." }, @@ -750,8 +751,13 @@ }, "entity_registry": { "control": "Control", + "customize_link": "entity customizations", "dismiss": "Dismiss", "editor": { + "advanced": "Advanced settings", + "area": "Set entity area only", + "area_note": "By default the entities of a device are in the same area as the device. If you change the area of this entity, it will no longer follow the area of the device.", + "change_device_area": "Change device area", "confirm_delete": "Are you sure you want to delete this entry?", "delete": "Delete", "device_disabled": "The device of this entity is disabled.", @@ -761,6 +767,7 @@ "enabled_label": "Enable entity", "enabled_restart_confirm": "Restart Home Assistant to finish enabling the entities", "entity_id": "Entity ID", + "follow_device_area": "Follow device area", "icon": "Icon", "icon_error": "Icons should be in the format 'prefix:iconname', e.g. 'mdi:home'", "name": "Name", @@ -770,6 +777,7 @@ "update": "Update" }, "faq": "documentation", + "info_customize": "You can overwrite some attributes in the {customize_link} section.", "no_unique_id": "This entity (\"{entity_id}\") does not have a unique ID, therefore its settings cannot be managed from the UI. See the {faq_link} for more detail.", "related": "Related", "settings": "Settings" @@ -1013,6 +1021,18 @@ "second": "{count} {count, plural,\n one {second}\n other {seconds}\n}", "week": "{count} {count, plural,\n one {week}\n other {weeks}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "You can still edit your config in YAML.", + "editor_not_available": "No visual editor available for type \"{type}\".", + "editor_not_supported": "Visual editor is not supported for this configuration", + "error_detected": "Configuration errors detected", + "key_missing": "Required key \"{key}\" is missing.", + "key_not_expected": "Key \"{key}\" is not expected or not supported by the visual editor.", + "key_wrong_type": "The provided value for \"{key}\" is not supported by the visual editor editor. We support ({type_correct}) but received ({type_wrong}).", + "no_type_provided": "No type provided." + } + }, "login-form": { "log_in": "Log in", "password": "Password", @@ -1514,10 +1534,18 @@ "thank_you_note": "Thank you for being part of Home Assistant Cloud. It's because of people like you that we are able to make a great home automation experience for everyone. Thank you!", "tts": { "default_language": "Default language to use", + "dialog": { + "example_message": "Hello {name}, you can play any text on any supported media player!", + "header": "Try Text to Speech", + "play": "Play", + "target": "Target", + "target_browser": "Browser" + }, "female": "Female", "info": "Bring personality to your home by having it speak to you by using our Text-to-Speech services. You can use this in automations and scripts by using the {service} service.", "male": "Male", - "title": "Text to Speech" + "title": "Text to Speech", + "try": "Try" }, "webhooks": { "disable_hook_error_msg": "Failed to disable webhook:", @@ -2717,6 +2745,12 @@ }, "description": "Manage your Z-Wave network", "learn_more": "Learn more about Z-Wave", + "migration": { + "ozw": { + "header": "Migrate to OpenZWave", + "introduction": "This wizard will help you migrate from the legacy Z-Wave integration to the OpenZWave integration that is currently in beta." + } + }, "network_management": { "header": "Z-Wave Network Management", "introduction": "Run commands that affect the Z-Wave network. You won't get feedback on whether most commands succeeded, but you can check the OZW Log to try to find out." @@ -3261,6 +3295,8 @@ } }, "menu": { + "manage_dashboards": "Manage dashboards", + "manage_resources": "Manage resources", "open": "Open Lovelace UI menu", "raw_editor": "Raw configuration editor" }, diff --git a/translations/frontend/es.json b/translations/frontend/es.json index a8ab43228f..54b3c0cd8d 100644 --- a/translations/frontend/es.json +++ b/translations/frontend/es.json @@ -557,6 +557,10 @@ "remove_user": "Eliminar usuario", "select_blueprint": "Selecciona un plano" }, + "calendar": { + "my_calendars": "Mis calendarios", + "today": "Hoy" + }, "data-table": { "no-data": "Sin datos", "search": "Buscar" @@ -2657,10 +2661,17 @@ }, "dashboard": { "driver_version": "Versión del controlador", + "dump_dead_nodes_text": "Algunos de tus nodos no respondieron y se supone que están muertos. Estos no se exportarán por completo.", + "dump_dead_nodes_title": "Algunos de tus nodos están muertos", + "dump_debug": "Descarga un volcado de tu red para ayudar a diagnosticar problemas", + "dump_not_ready_confirm": "Descargar", + "dump_not_ready_text": "Si creas una exportación cuando no todos los nodos están listos, puedes perder datos necesarios. Dale a tu red algo de tiempo para consultar todos los nodos. ¿Quieres continuar con el volcado?", + "dump_not_ready_title": "Aún no están listos todos los nodos", "header": "Administra tu red Z-Wave", "home_id": "ID de casa", "introduction": "Administra tu red Z-Wave y los nodos Z-Wave", "node_count": "Recuento de nodos", + "nodes_ready": "Nodos listos", "server_version": "Versión del servidor" }, "device_info": { diff --git a/translations/frontend/et.json b/translations/frontend/et.json index 8ce6b7fcee..8c5a322b8c 100644 --- a/translations/frontend/et.json +++ b/translations/frontend/et.json @@ -557,6 +557,10 @@ "remove_user": "Kustuta kasutaja", "select_blueprint": "Kavandi valimine" }, + "calendar": { + "my_calendars": "Minu kalendrid", + "today": "Täna" + }, "data-table": { "no-data": "Andmeid pole", "search": "Otsing" @@ -2657,10 +2661,17 @@ }, "dashboard": { "driver_version": "Ajuri versioon", + "dump_dead_nodes_text": "Mõni sõlm ei vastanud ja eeldatakse, et see on surnud. Neid ei ekspordita täielikult.", + "dump_dead_nodes_title": "Mõned sõlmed on surnud", + "dump_debug": "Probleemide diagnoosimiseks lae alla oma võrgutõmmis", + "dump_not_ready_confirm": "Lae alla", + "dump_not_ready_text": "Kui lood ekspordi kui kõik sõlmed pole veel valmis, võid vajaminevad andmed vahele jätta. Anna oma võrgule aega kõigi sõlmede päringuteks. Kas soovid elspordiga jätkata?", + "dump_not_ready_title": "Kõik sõlmed pole veel valmis", "header": "Halda oma Z-Wave'i võrku", "home_id": "Kodu ID", "introduction": "Halda oma Z-Wave'i võrgustikku ja Z-Wave'i sõlmi", "node_count": "Sõlmede arv", + "nodes_ready": "Valmisolevad sõlmed", "server_version": "Serveri versioon" }, "device_info": { diff --git a/translations/frontend/he.json b/translations/frontend/he.json index 2a8db80e13..d86b669ef9 100644 --- a/translations/frontend/he.json +++ b/translations/frontend/he.json @@ -504,6 +504,8 @@ "copied": "מועתק", "copied_clipboard": "הועתק ללוח", "delete": "מחיקה", + "disable": "השבת", + "enable": "אפשר", "error_required": "חובה", "loading": "טוען", "menu": "תפריט", @@ -512,7 +514,9 @@ "overflow_menu": "תפריט גולש", "previous": "הקודם", "refresh": "רענן", + "remove": "הסר", "save": "שמור", + "skip": "דלג", "successfully_deleted": "נמחק בהצלחה", "successfully_saved": "נשמר בהצלחה", "undo": "בטל", @@ -534,6 +538,10 @@ "no_match": "לא נמצאו אזורים תואמים", "show_areas": "הצג אזורים" }, + "calendar": { + "my_calendars": "היומנים שלי", + "today": "היום" + }, "data-table": { "no-data": "אין נתונים", "search": "חיפוש" @@ -645,6 +653,10 @@ "remove_area_id": "הסר אזור", "remove_device_id": "הסר מכשיר", "remove_entity_id": "הסר ישות" + }, + "user-picker": { + "add_user": "הוסף משתמש", + "no_user": "אין משתמש" } }, "dialogs": { @@ -861,6 +873,7 @@ }, "notification_toast": { "connection_lost": "החיבור אבד. מתחבר מחדש...", + "dismiss": "בטל", "service_call_failed": "נכשלה הקריאה לשירות {service} .", "started": "Home Assistant עלה!", "starting": "Home Assistant בעלייה, ייתכן שלא הכל יהיה זמין עד שהעליה תסתיים", @@ -1106,6 +1119,7 @@ "trigger": "טריגר" }, "event": { + "context_user_pick": "בחר משתמש", "event_data": "נתוני אירוע", "event_type": "סוג אירוע", "label": "אירוע" @@ -1197,6 +1211,15 @@ "only_editable": "רק אוטומציות שהוגדרו ב automations.yaml ניתנות לעריכה.", "pick_automation": "בחר אוטומציה לעריכה", "show_info_automation": "הצג מידע על אוטומציה" + }, + "thingtalk": { + "create": "צור אוטומציה", + "link_devices": { + "unknown_placeholder": "לא ידוע" + }, + "task_selection": { + "for_example": "לדוגמה:" + } } }, "blueprint": { @@ -1845,6 +1868,9 @@ }, "select_instance": { "none_found": "לא הצלחנו למצוא שרת OpenZWave. אם אתה סבור שזה לא נכון, בדוק את הגדרות OpenZWave ו- MQTT וודא ש Home Assistant יכול לתקשר עם ה MQTT broker." + }, + "services": { + "cancel_command": "בטל פקודה" } }, "person": { @@ -2231,6 +2257,17 @@ "introduction": "אזורים מאפשרים לך לציין אזורים מסוימים בכדור הארץ. כאשר אדם נמצא באזור, הסטטוס יקח את השם מהאזור. אזורים יכולים לשמש גם כטריגר או תנאי בתוך הגדרות אוטומציה.", "no_zones_created_yet": "נראה שעדיין לא יצרת אזורים." }, + "zwave_js": { + "dashboard": { + "dump_dead_nodes_text": "חלק מהצמתים שלך לא הגיבו ונחשבים מתים. אלה לא ייוצאו לחלוטין.", + "dump_dead_nodes_title": "חלק מהצמתים שלך מתים", + "dump_debug": "הורד תמונת מצב של הרשת שלך כדי לעזור באבחון בעיות", + "dump_not_ready_confirm": "הורדה", + "dump_not_ready_text": "אם אתה יוצר ייצוא בזמן שלא כל הצמתים מוכנים, אתה עלול לפספס את הנתונים הדרושים. תן לרשת שלך זמן לשאילת כל הצמתים. האם אתה רוצה להמשיך?", + "dump_not_ready_title": "עדיין לא כל הצמתים מוכנים", + "nodes_ready": "צמתים מוכנים" + } + }, "zwave": { "button": "הגדר", "caption": "Z-Wave", @@ -2415,6 +2452,10 @@ }, "cards": { "action_confirmation": "האם אתה בטוח שברצונך לבצע פעולה \" {action} \"?", + "actions": { + "no_service": "לא צוין שום שירות לביצוע", + "no_url": "לא צוין כתובת אתר לפתיחה" + }, "confirm_delete": "האם אתה בטוח שברצונך למחוק את הכרטיס הזה?", "empty_state": { "go_to_integrations_page": "עבור אל דף האינטגרציות.", @@ -2522,6 +2563,7 @@ "entity-id": "מזהה ישות", "last-changed": "שונה לאחרונה", "last-triggered": "הופעל לאחרונה", + "last-updated": "עודכן לאחרונה", "none": "אין מידע משני", "position": "מיקום", "tilt-position": "הטה מיקום" @@ -2585,7 +2627,9 @@ "name": "Glance" }, "grid": { - "name": "רשת" + "columns": "עמודות", + "name": "רשת", + "square": "הצג כרטיסים כריבועים" }, "history-graph": { "description": "הכרטיס History Graph מאפשר לך להציג גרף עבור כל אחת מהישויות המפורטות.", @@ -2917,6 +2961,7 @@ "working": "אנא המתן" }, "initializing": "מאתחל", + "logging_in_to_with": "כניסה ל- ** {locationName} ** באמצעות ** {authProviderName} **.", "logging_in_with": "מתחבר עם **{authProviderName}**.", "pick_auth_provider": "או התחבר עם" }, @@ -3024,6 +3069,9 @@ "dropdown_label": "לוח בקרה", "header": "לוח בקרה" }, + "enable_shortcuts": { + "header": "קיצורי מקשים" + }, "force_narrow": { "description": "פעולה זו תסתיר את הסרגל הצדדי כברירת מחדל, בדומה לחוויה בנייד.", "header": "הסתר תמיד את הסרגל הצידי" @@ -3111,6 +3159,9 @@ "header": "רטט" } }, + "shopping_list": { + "start_conversation": "התחל שיחה" + }, "shopping-list": { "add_item": "הוסף פריט", "clear_completed": "ניקוי הושלם", diff --git a/translations/frontend/nb.json b/translations/frontend/nb.json index 4fee5de76a..2d43bce01b 100644 --- a/translations/frontend/nb.json +++ b/translations/frontend/nb.json @@ -557,6 +557,10 @@ "remove_user": "Fjern bruker", "select_blueprint": "Velg en Blueprint" }, + "calendar": { + "my_calendars": "Mine kalendere", + "today": "I dag" + }, "data-table": { "no-data": "Ingen data", "search": "Søk" @@ -604,9 +608,9 @@ "set": "solnedgang", "turned_off": "slått av", "turned_on": "slått på", - "was_at_home": "var hjemme", - "was_at_state": "var {state}", - "was_away": "var borte", + "was_at_home": "ble oppdaget hjemme", + "was_at_state": "ble oppdaget på {state}", + "was_away": "ble oppdaget borte", "was_closed": "ble lukket", "was_connected": "var tilkoblet", "was_disconnected": "ble frakoblet", @@ -1117,7 +1121,9 @@ "device_id": { "action": "Handling", "extra_fields": { - "code": "Kode" + "code": "Kode", + "message": "Melding", + "title": "Tittel" }, "label": "Enhet" }, @@ -1293,7 +1299,8 @@ "extra_fields": { "above": "Over", "below": "Under", - "for": "Varighet" + "for": "Varighet", + "zone": "Sone" }, "label": "Enhet", "trigger": "Utløser" @@ -1464,7 +1471,7 @@ "info_state_reporting": "Hvis du aktiverer tilstandsrapportering, vil Home Assistant sende alle tilstandsendringer av eksponerte entiteter til Amazon. Dette lar deg alltid se de siste tilstandene i Alexa-appen og bruke tilstandsendringene til å lage rutiner.", "manage_entities": "Håndtér entiteter", "state_reporting_error": "Kan ikke {enable_disable} rapportere status.", - "sync_entities": "Synkronisér entiteter", + "sync_entities": "Synkroniser enheter til Amazon", "sync_entities_error": "Kunne ikke synkronisere entiteter:", "title": "" }, @@ -1505,6 +1512,13 @@ }, "sign_out": "Logg ut", "thank_you_note": "Takk for at du er en del av Home Assistant Cloud. Det er på grunn av personer som deg at vi er i stand til å lage en flott hjemmeautomasjon opplevelse for alle. Tusen takk!", + "tts": { + "default_language": "Standardspråk som skal brukes", + "female": "Kvinne", + "info": "Ta med personlighet hjem ved å få den til å snakke med deg ved å bruke våre tekst-til-tale-tjenester. Du kan bruke dette i automatiseringer og skript ved hjelp av tjenesten {service}.", + "male": "Mann", + "title": "Tekst til tale" + }, "webhooks": { "disable_hook_error_msg": "Kan ikke deaktivere webhook:", "info": "Alt som er konfigurert til å utløses av en webhook, kan gis en offentlig tilgjengelig URL-adresse for å tillate deg å sende data tilbake til Home Assistent fra hvor som helst, uten å utsette forekomsten din for Internett.", @@ -1536,11 +1550,11 @@ "description_login": "Logget inn som {email}", "description_not_login": "Ikke pålogget", "dialog_certificate": { - "certificate_expiration_date": "Utløpsdato for sertifikat", + "certificate_expiration_date": "Utløpsdato for sertifikat:", "certificate_information": "Sertifikatinformasjon", "close": "Lukk", "fingerprint": "Fingeravtrykk for sertifikat:", - "will_be_auto_renewed": "Vil automatisk bli fornyet" + "will_be_auto_renewed": "vil automatisk bli fornyet" }, "dialog_cloudhook": { "available_at": "Webhooken er tilgjengelig på følgende URL:", @@ -1583,7 +1597,7 @@ "dismiss": "Avvis", "email": "E-post", "email_error_msg": "Ugyldig e-postadresse", - "forgot_password": "glemt passord?", + "forgot_password": "Glemt passord?", "introduction": "Home Assistant Cloud gir deg en sikker ekstern tilkobling til din forekomst mens du er borte fra hjemmet. Du kan også koble til med skytjenester: Amazon Alexa og Google Assistant.", "introduction2": "Denne tjenesten drives av vår partner", "introduction2a": ", et selskap av grunnleggerne av Home Assistant og Hass.io.", @@ -2621,6 +2635,76 @@ "introduction": "Med soner kan du angi bestemte områder på jorden. Når en person er innenfor en sone, vil tilstanden til enheten ta navnet fra sonen. Soner kan også brukes som en utløser eller betingelse i automasjoner.", "no_zones_created_yet": "Det ser ikke ut som du har opprettet noen soner enda" }, + "zwave_js": { + "add_node": { + "cancel_inclusion": "Avbryt inkludering", + "controller_in_inclusion_mode": "Z-Wave-kontrolleren er nå i inkluderingsmodus.", + "follow_device_instructions": "Følg instruksjonene som fulgte med enheten, for å utløse paring på enheten.", + "inclusion_failed": "Noden kunne ikke legges til. Vennligst sjekk loggene for mer informasjon.", + "inclusion_finished": "Noden er lagt til. Det kan ta noen minutter før alle enheter dukker opp når vi er ferdig med å sette opp noden i bakgrunnen.", + "introduction": "Denne veiviseren vil guide deg gjennom å legge til en node i Z-Wave-nettverket.", + "secure_inclusion_warning": "Sikre enheter krever ekstra båndbredde; for mange sikre enheter kan redusere Z-Wave-nettverket. Vi anbefaler bare å bruke sikker inkludering for enheter som krever det, for eksempel låser eller garasjeportåpnere.", + "start_inclusion": "Start inkludering", + "start_secure_inclusion": "Start sikker inkludering", + "title": "Legg til en Z-Wave-node", + "use_secure_inclusion": "Bruk sikker inkludering", + "view_device": "Vis enhet" + }, + "button": "Konfigurer", + "common": { + "add_node": "Legg til node", + "close": "Lukk", + "home_id": "Hjem-ID", + "network": "Nettverk", + "node_id": "Node-ID", + "remove_node": "Fjern node" + }, + "dashboard": { + "driver_version": "Driverversjon", + "dump_dead_nodes_text": "Noen av nodene dine svarte ikke og antas døde. Disse vil ikke bli fullstendig eksportert.", + "dump_dead_nodes_title": "Noen av nodene dine er døde", + "dump_debug": "Last ned en dump av nettverket ditt for å diagnostisere problemer", + "dump_not_ready_confirm": "Laste ned", + "dump_not_ready_text": "Hvis du oppretter en eksport mens ikke alle noder er klare, kan du gå glipp av nødvendige data. Gi nettverket litt tid til å spørre alle noder. Vil du fortsette med dumpen?", + "dump_not_ready_title": "Ikke alle noder er klare ennå", + "header": "Administrere Z-Wave-nettverket", + "home_id": "Hjem-ID", + "introduction": "Administrer Z-Wave-nettverket og Z-Wave-nodene dine", + "node_count": "Antall noder", + "nodes_ready": "Noder klare", + "server_version": "Serverversjon" + }, + "device_info": { + "node_ready": "Node klar", + "node_status": "Node-status", + "zwave_info": "Z-Wave Info" + }, + "navigation": { + "network": "Nettverk" + }, + "network_status": { + "connected": "Tilkoblet", + "connecting": "Kobler til", + "unknown": "Ukjent" + }, + "node_status": { + "alive": "I live", + "asleep": "Sover", + "awake": "Våken", + "dead": "Død", + "unknown": "Ukjent" + }, + "remove_node": { + "cancel_exclusion": "Avbryt ekskludering", + "controller_in_exclusion_mode": "Z-Wave-kontrolleren er nå i ekskluderingsmodus.", + "exclusion_failed": "Noden kunne ikke fjernes. Vennligst sjekk loggene for mer informasjon.", + "exclusion_finished": "Node {id} er fjernet fra Z-Wave-nettverket.", + "follow_device_instructions": "Følg instruksjonene som fulgte med enheten for å utløse ekskludering på enheten.", + "introduction": "Fjern en node fra Z-Wave-nettverket, og fjern den tilknyttede enheten og enhetene fra Home Assistant.", + "start_exclusion": "Start ekskludering", + "title": "Fjern en Z-Wave-node" + } + }, "zwave": { "button": "Konfigurer", "caption": "Z-Wave", @@ -2815,6 +2899,14 @@ }, "cards": { "action_confirmation": "Er du sikker på at du vil utføre handlingen \"{action}\"?", + "actions": { + "action_confirmation": "Er du sikker på at du vil utføre handlingen \"{action}\"?", + "no_entity_more_info": "Ingen enhet angitt for mer informasjon dialog", + "no_entity_toggle": "Ingen enhet gitt for å veksle", + "no_navigation_path": "Ingen navigasjonssti spesifisert", + "no_service": "Ingen tjeneste for utførelse spesifisert", + "no_url": "Ingen URL-adresse å åpne angitt" + }, "confirm_delete": "Er du sikker på at du vil slette dette kortet?", "empty_state": { "go_to_integrations_page": "Gå til integrasjonssiden.", @@ -2827,7 +2919,7 @@ "picture-elements": { "call_service": "Tilkall tjeneste {name}", "hold": "", - "more_info": "Vis mer info: {name}", + "more_info": "Vis mer informasjon: {name}", "navigate_to": "Naviger til {location}", "tap": "Trykk:", "toggle": "Veksle {name}", @@ -2881,7 +2973,7 @@ "name": "Alarmpanel" }, "button": { - "default_action_help": "Standardhandlingen avhenger av enhetens funksjoner, den vil enten bli vekslet eller mer informasjon vises.", + "default_action_help": "Standardhandlingen avhenger av enhetens funksjoner, den vil enten bli vekslet eller mer informasjonsdialogboksen vises.", "description": "The Button card lar deg legge til knapper for å utføre oppgaver.", "name": "Knapp" }, @@ -2998,8 +3090,10 @@ "name": "Blikk" }, "grid": { + "columns": "Kolonner", "description": "Med Rutenett-kortet kan du vise flere kort i et rutenett", - "name": "Rutenett" + "name": "Rutenett", + "square": "Gjengi kort som firkanter" }, "history-graph": { "description": "Med Historikkgraf-kortet kan du vise en graf for hver av enhetene som er oppført.", @@ -3052,7 +3146,7 @@ "name": "Bilde entitet" }, "picture-glance": { - "description": "Bilde blikk-kortet viser et bilde og tilhørende entitetstilstander som et ikon. Entitetene på høyre side tillater veksling av handlinger, andre viser dialogboksen mer informasjon.", + "description": "Bildetikk-kortet viser et bilde og tilsvarende enhetsstatuser som et ikon. Enhetene på høyre side tillater vekslehandlinger, andre viser dialogboksen mer informasjon.", "name": "Bilde blikk", "state_entity": "Statusentitet" }, @@ -3372,6 +3466,7 @@ "working": "Vennligst vent" }, "initializing": "Initialiserer", + "logging_in_to_with": "Logger på **{locationName}** med **{authProviderName}**.", "logging_in_with": "Logg inn med **{authProviderName}**.", "pick_auth_provider": "Eller logg inn med" }, diff --git a/translations/frontend/nl.json b/translations/frontend/nl.json index 78ab42b4c3..27904d82ee 100644 --- a/translations/frontend/nl.json +++ b/translations/frontend/nl.json @@ -557,6 +557,10 @@ "remove_user": "Gebruiker verwijderen", "select_blueprint": "Selecteer een blauwdruk" }, + "calendar": { + "my_calendars": "Mijn agenda's", + "today": "Vandaag" + }, "data-table": { "no-data": "Geen gegevens", "search": "Zoek" @@ -1117,7 +1121,9 @@ "device_id": { "action": "Actie", "extra_fields": { - "code": "Code" + "code": "Code", + "message": "Bericht", + "title": "Titel" }, "label": "Apparaat" }, @@ -1293,7 +1299,8 @@ "extra_fields": { "above": "Boven", "below": "Onder", - "for": "Duur" + "for": "Duur", + "zone": "Zone" }, "label": "Apparaat", "trigger": "Trigger" @@ -1505,6 +1512,12 @@ }, "sign_out": "Afmelden", "thank_you_note": "Bedankt voor uw deelname aan Home Assistant Cloud. Het is vanwege mensen zoals u dat we een geweldige domotica-ervaring voor iedereen kunnen maken. Dank je!", + "tts": { + "default_language": "Standaardtaal om te gebruiken", + "female": "Vrouw", + "male": "Man", + "title": "Tekst naar spraak" + }, "webhooks": { "disable_hook_error_msg": "Kan webhook niet uitschakelen:", "info": "Alles wat is geconfigureerd om door een webhook te worden geactiveerd, kan een openbaar toegankelijke URL krijgen zodat u gegevens overal naar Home Assistant kunt terugsturen, zonder uw exemplaar aan internet bloot te stellen.", @@ -2621,6 +2634,38 @@ "introduction": "Met zones kan je bepaalde regio's op aarde opgeven. Wanneer een persoon zich in een zone bevindt, dan wordt de staat de naam uit de zone. Zones kunnen ook worden gebruikt als trigger of voorwaarde in automatiseringen.", "no_zones_created_yet": "Het lijkt erop dat je nog geen zones hebt aangemaakt." }, + "zwave_js": { + "add_node": { + "view_device": "Bekijk apparaat" + }, + "button": "Configureer", + "common": { + "close": "Sluiten", + "network": "Netwerk" + }, + "dashboard": { + "driver_version": "Driver Versie", + "dump_dead_nodes_text": "Sommige van uw knooppunten reageerden niet en worden verondersteld onbereikbaar te zijn. Deze worden niet volledig geëxporteerd.", + "dump_dead_nodes_title": "Sommige van uw knooppunten zijn onbereikbaar", + "dump_not_ready_confirm": "Downloaden", + "dump_not_ready_title": "Nog niet alle knooppunten zijn gereed", + "nodes_ready": "Knooppunten gereed", + "server_version": "Server Versie" + }, + "navigation": { + "network": "Netwerk" + }, + "network_status": { + "connected": "Verbonden", + "unknown": "Onbekend" + }, + "node_status": { + "alive": "Levend", + "asleep": "In slaap", + "awake": "Wakker", + "dead": "Onbereikbaar" + } + }, "zwave": { "button": "Configureer", "caption": "Z-Wave", @@ -2998,6 +3043,7 @@ "name": "Oogopslag" }, "grid": { + "columns": "Kolommen", "description": "Met de rasterkaart kun je meerdere kaarten in een raster tonen.", "name": "Raster" }, diff --git a/translations/frontend/zh-Hans.json b/translations/frontend/zh-Hans.json index 092dc0ce25..66b70cee13 100644 --- a/translations/frontend/zh-Hans.json +++ b/translations/frontend/zh-Hans.json @@ -557,6 +557,10 @@ "remove_user": "删除用户", "select_blueprint": "选择 Blueprint" }, + "calendar": { + "my_calendars": "我的日历", + "today": "今天" + }, "data-table": { "no-data": "没有数据", "search": "搜索" @@ -605,7 +609,7 @@ "turned_off": "已关闭", "turned_on": "已开启", "was_at_home": "在家", - "was_at_state": "处于 {state}", + "was_at_state": "位于 {state}", "was_away": "离开", "was_closed": "已关闭", "was_connected": "已连接", @@ -1117,7 +1121,9 @@ "device_id": { "action": "动作", "extra_fields": { - "code": "代码" + "code": "代码", + "message": "消息", + "title": "标题" }, "label": "设备" }, @@ -1293,7 +1299,8 @@ "extra_fields": { "above": "大于", "below": "小于", - "for": "持续时间" + "for": "持续时间", + "zone": "地点" }, "label": "设备", "trigger": "触发条件" @@ -1464,7 +1471,7 @@ "info_state_reporting": "如果启用状态报告,Home Assistant将向 Amazon 发送所有公开实体的状态更改。这允许您始终查看 Alexa 应用中的最新状态,并使用状态更改创建例程。", "manage_entities": "管理实体:", "state_reporting_error": "无法{enable_disable}状态报告。", - "sync_entities": "同步实体", + "sync_entities": "同步实体到 Amazon", "sync_entities_error": "无法同步实体:", "title": "Alexa" }, @@ -1505,6 +1512,13 @@ }, "sign_out": "退出", "thank_you_note": "感谢您加入 Home Assistant Cloud。正是因为像您这样的人,我们才得以为每个人带来出色的智能家居体验。谢谢!", + "tts": { + "default_language": "默认使用语言", + "female": "女声", + "info": "用我们的 TTS 服务,让您的家能开口说话,把智能家居变得更有人情味吧。可以在自动化和脚本中调用 {service} 服务来使用它。", + "male": "男声", + "title": "TTS" + }, "webhooks": { "disable_hook_error_msg": "无法禁用 Webhook:", "info": "由webhook触发的任何配置可以提供公开访问的URL,它允许您将数据发送回家庭助理从任何地方,并且不会暴露您的实例。", @@ -1536,7 +1550,7 @@ "description_login": "登录为 {email}", "description_not_login": "未登录", "dialog_certificate": { - "certificate_expiration_date": "证书到期日期", + "certificate_expiration_date": "证书到期日期:", "certificate_information": "证书信息", "close": "关闭", "fingerprint": "证书指纹:", @@ -2621,6 +2635,76 @@ "introduction": "地点用于定义世界的某个地方。若某人位于一个地点,则其状态的名称就取自该地点。地点也可用作自动化配置中的触发条件和环境条件。", "no_zones_created_yet": "您还没有建立地点。" }, + "zwave_js": { + "add_node": { + "cancel_inclusion": "取消 inclusion", + "controller_in_inclusion_mode": "您的 Z-Wave 控制器现在处于 inclusion 模式。", + "follow_device_instructions": "请按照设备说明书,触发设备配对。", + "inclusion_failed": "无法添加该节点。请查看日志以了解更多信息。", + "inclusion_finished": "节点已添加。需要花费几分钟在后台完成节点设置,然后才能显示出所有实体。", + "introduction": "此向导将指导您向 Z-Wave 网络添加节点。", + "secure_inclusion_warning": "安全设备需要额外的带宽;安全设备过多可能会降低 Z-Wave 网络的速度。建议仅当设备需要时才使用 secure inclusion,例如门锁和车库开门器。", + "start_inclusion": "开始 inclusion", + "start_secure_inclusion": "开始 secure inclusion", + "title": "添加 Z-Wave 节点", + "use_secure_inclusion": "使用 secure inclusion", + "view_device": "查看设备" + }, + "button": "配置", + "common": { + "add_node": "添加节点", + "close": "关闭", + "home_id": "家庭 ID", + "network": "网络", + "node_id": "节点 ID", + "remove_node": "删除节点" + }, + "dashboard": { + "driver_version": "驱动程序版本", + "dump_dead_nodes_text": "有些节点没有响应。这些节点被认为离线,不会完全导出。", + "dump_dead_nodes_title": "有些节点已断线", + "dump_debug": "下载网络转储以便诊断问题", + "dump_not_ready_confirm": "下载", + "dump_not_ready_text": "如果在节点尚未全部就绪的情况下就导出,可能会丢失所需的数据。请等待一段时间以便网络查询所有节点。仍要继续创建转储吗?", + "dump_not_ready_title": "仍有节点未准备就绪", + "header": "管理 Z-Wave 网络", + "home_id": "家庭 ID", + "introduction": "管理 Z-Wave 网络和节点", + "node_count": "节点数量", + "nodes_ready": "节点就绪", + "server_version": "服务器版本" + }, + "device_info": { + "node_ready": "节点就绪", + "node_status": "节点状态", + "zwave_info": "Z-Wave 信息" + }, + "navigation": { + "network": "网络" + }, + "network_status": { + "connected": "已连接", + "connecting": "正在连接", + "unknown": "未知" + }, + "node_status": { + "alive": "在线", + "asleep": "睡眠", + "awake": "唤醒", + "dead": "断线", + "unknown": "未知" + }, + "remove_node": { + "cancel_exclusion": "取消 exclusion", + "controller_in_exclusion_mode": "您的 Z-Wave 控制器现在处于 exclusion 模式。", + "exclusion_failed": "无法删除该节点。请查看日志以了解更多信息。", + "exclusion_finished": "节点 {id} 已从 Z-Wave 网络中删除。", + "follow_device_instructions": "请按照设备说明书,触发设备的 exclusion。", + "introduction": "从 Z-Wave 网络中删除节点,并从 Home Assistant 中删除关联的设备和实体。", + "start_exclusion": "开始 exclusion", + "title": "删除 Z-Wave 节点" + } + }, "zwave": { "button": "配置", "caption": "Z-Wave", @@ -2815,6 +2899,14 @@ }, "cards": { "action_confirmation": "您确定要执行动作“{action}”吗?", + "actions": { + "action_confirmation": "您确定要执行动作“{action}”吗?", + "no_entity_more_info": "未指定要显示更多信息的实体", + "no_entity_toggle": "未指定要切换的实体", + "no_navigation_path": "未指定要前往的路径", + "no_service": "未指定要执行的服务", + "no_url": "未指定要打开的 URL" + }, "confirm_delete": "您确定要删除此卡片吗?", "empty_state": { "go_to_integrations_page": "前往集成页面。", @@ -2827,7 +2919,7 @@ "picture-elements": { "call_service": "调用服务{name}", "hold": "按住:", - "more_info": "显示更多信息: {name}", + "more_info": "显示更多信息:{name}", "navigate_to": "转到 {location}", "tap": "点击:", "toggle": "切换{name}", @@ -2998,8 +3090,10 @@ "name": "概览" }, "grid": { + "columns": "列数", "description": "“网格”卡片用于将多个卡片显示在一个网格。", - "name": "网格" + "name": "网格", + "square": "将卡片显示为正方形" }, "history-graph": { "description": "“历史图表”卡片用于为每一个列出的实体显示图表。", @@ -3372,6 +3466,7 @@ "working": "请稍候" }, "initializing": "正在初始化", + "logging_in_to_with": "正在通过 **{authProviderName}** 登录 **{locationName}**。", "logging_in_with": "正在通过 **{authProviderName}** 登录。", "pick_auth_provider": "或者用以下方式登录" }, diff --git a/translations/frontend/zh-Hant.json b/translations/frontend/zh-Hant.json index 8fc017dff3..29a741e2fa 100644 --- a/translations/frontend/zh-Hant.json +++ b/translations/frontend/zh-Hant.json @@ -557,6 +557,10 @@ "remove_user": "移除使用者", "select_blueprint": "選擇 Blueprint" }, + "calendar": { + "my_calendars": "我的行事曆", + "today": "今天" + }, "data-table": { "no-data": "沒有資料", "search": "搜尋" @@ -604,9 +608,9 @@ "set": "設定", "turned_off": "關閉", "turned_on": "開啟", - "was_at_home": "狀態為在家", - "was_at_state": "狀態為{state}", - "was_away": "狀態為離家", + "was_at_home": "偵測為在家", + "was_at_state": "偵測為{state}", + "was_away": "偵測為離家", "was_closed": "狀態為關閉", "was_connected": "狀態為連線", "was_disconnected": "狀態為斷線", @@ -1117,7 +1121,9 @@ "device_id": { "action": "動作", "extra_fields": { - "code": "碼" + "code": "碼", + "message": "訊息", + "title": "標題" }, "label": "裝置" }, @@ -1293,7 +1299,8 @@ "extra_fields": { "above": "在...之上", "below": "在...之下", - "for": "持續時間" + "for": "持續時間", + "zone": "區域" }, "label": "裝置", "trigger": "觸發自動化" @@ -1464,7 +1471,7 @@ "info_state_reporting": "假如開啟狀態回報,Home Assistant 將會持續傳送所有連結實體的狀態改變至 Amazon。以確保於 Alexa app 中裝置永遠保持最新狀態、並藉以創建例行自動化。", "manage_entities": "管理實體", "state_reporting_error": "無法 {enable_disable} 回報狀態。", - "sync_entities": "同步實體", + "sync_entities": "同步實體至 Amazon", "sync_entities_error": "同步實體失敗:", "title": "Alexa" }, @@ -1505,6 +1512,13 @@ }, "sign_out": "登出", "thank_you_note": "感謝您參與支持 Home Assistant Cloud 雲服務。由於有你們的支持,我們才能持續為每個人帶來絕佳的家庭自動化體驗,謝謝!", + "tts": { + "default_language": "預設使用語言", + "female": "女性", + "info": "運用「文字轉語音」服務讓您的智能家庭更具個性與個人化,可以藉由 {service} 服務於腳本與自動化中使用此相功能。", + "male": "男性", + "title": "所要閱讀的文字" + }, "webhooks": { "disable_hook_error_msg": "關閉 Webhook 失敗:", "info": "任何設定透過 Webhook 觸發內容,都可以取得公開可存取的 URL、以供傳送資料回 Home Assistant,而不需將 Home Assistant 暴露至網路網路上。", @@ -1536,7 +1550,7 @@ "description_login": "登入帳號:{email}", "description_not_login": "未登入", "dialog_certificate": { - "certificate_expiration_date": "認證過期日期", + "certificate_expiration_date": "認證過期日:", "certificate_information": "認證資訊", "close": "關閉", "fingerprint": "認證歷程:", @@ -2621,6 +2635,76 @@ "introduction": "區域允許您指定地球上的特定區域,當人員進入到此區域時、狀態會顯示為該區域名字。區域同時也能夠作為自動化的觸發器或條件設定。", "no_zones_created_yet": "看起來您還沒有新增任何區域。" }, + "zwave_js": { + "add_node": { + "cancel_inclusion": "取消登記", + "controller_in_inclusion_mode": "Z-Wave 控制器目前處於登記模式。", + "follow_device_instructions": "跟隨裝置隨附的說明書以觸發裝置上的配對功能。", + "inclusion_failed": "節點無法新增,請參閱日誌以獲得更詳細資訊。", + "inclusion_finished": "節點已經新增。由於於後台完成設定、可能需要一點時間以讓所有節點進行顯示。", + "introduction": "導引將帶領你於 Z-Wave 網路中新增節點。", + "secure_inclusion_warning": "加密裝置需要額外的頻寬,過多的加密裝置可能拖慢您的 Z-Wave 網路。建議您僅於需要時才使用加密裝置登記、例如門鎖或車庫開門裝置。", + "start_inclusion": "開始登記", + "start_secure_inclusion": "開始加密登記", + "title": "新增 Z-Wave 節點", + "use_secure_inclusion": "使用加密登記", + "view_device": "檢視裝置" + }, + "button": "設定", + "common": { + "add_node": "新增節點", + "close": "關閉", + "home_id": "家庭 ID", + "network": "網路", + "node_id": "節點 ID", + "remove_node": "移除節點" + }, + "dashboard": { + "driver_version": "驅動程式版本", + "dump_dead_nodes_text": "部分節點沒有回應、可能為失效狀態。將不會完全進行匯出。", + "dump_dead_nodes_title": "部分節點已經失效", + "dump_debug": "下載網路匯出資料以協助診斷問題", + "dump_not_ready_confirm": "下載", + "dump_not_ready_text": "假如您於所有節點尚未就緒時執行匯出,將會遺失所需要的資料。建驗讓網路擁有足夠的時間查詢所有節點。是否要繼續匯出動作?", + "dump_not_ready_title": "尚未準備好所有節點", + "header": "管理 Z-Wave 網路", + "home_id": "家庭 ID", + "introduction": "管理 Z-Wave 網路與節點", + "node_count": "節點計數", + "nodes_ready": "就緒節點", + "server_version": "伺服器版本" + }, + "device_info": { + "node_ready": "就緒節點", + "node_status": "節點狀態", + "zwave_info": "Z-Wave 資訊" + }, + "navigation": { + "network": "網路" + }, + "network_status": { + "connected": "已連線", + "connecting": "連線中", + "unknown": "未知" + }, + "node_status": { + "alive": "線上", + "asleep": "睡眠", + "awake": "喚醒", + "dead": "失效", + "unknown": "未知" + }, + "remove_node": { + "cancel_exclusion": "取消排除", + "controller_in_exclusion_mode": "Z-Wave 控制器目前處於排除模式。", + "exclusion_failed": "節點無法移除,請參閱以日誌以獲得更詳細資訊。", + "exclusion_finished": "已經自 Z-Wave 網路中移除節點 {id}。", + "follow_device_instructions": "跟隨裝置隨附的說明書以觸發裝置上的排除功能。", + "introduction": "Remove a node from 自 Z-Wave 網路移除節點、並自 Home Assistant 移除相關裝置與實體。", + "start_exclusion": "開始排除", + "title": "移除 Z-Wave 節點" + } + }, "zwave": { "button": "設定", "caption": "Z-Wave", @@ -2815,6 +2899,14 @@ }, "cards": { "action_confirmation": "確定要執行動作 \"{action}\"?", + "actions": { + "action_confirmation": "確定要執行動作 \"{action}\"?", + "no_entity_more_info": "未提供獲得更詳細資料對話實體", + "no_entity_toggle": "未提供實體進行切換", + "no_navigation_path": "未提供指定導航路徑", + "no_service": "未提供指定執行服務", + "no_url": "未提供指定開啟 URL" + }, "confirm_delete": "確定要刪除此面板?", "empty_state": { "go_to_integrations_page": "轉至整合頁面。", @@ -2998,8 +3090,10 @@ "name": "簡略式面板" }, "grid": { + "columns": "列", "description": "方格排列面板可於方格內顯示多個面板。", - "name": "方格排列面板" + "name": "方格排列面板", + "square": "以方形繪製卡片" }, "history-graph": { "description": "歷史圖表式面板可供顯示每個列表實體圖表。", @@ -3372,6 +3466,7 @@ "working": "請稍候" }, "initializing": "初始化中", + "logging_in_to_with": "使用 **{authProviderName}** 登入 **{locationName}**。", "logging_in_with": "使用 **{authProviderName}** 登入。", "pick_auth_provider": "或以其他方式登入" }, From d33e8d77c20cfc1d0488d4b29fc768bf345d7f42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Thu, 28 Jan 2021 11:54:34 +0100 Subject: [PATCH 08/54] Typo in texts (#8264) --- 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 50429653ce..4c2cca84e8 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -2505,7 +2505,7 @@ "cards": { "confirm_delete": "Are you sure you want to delete this card?", "actions": { - "action_confirmation": "Are you sure you want to exectue action \"{action}\"?", + "action_confirmation": "Are you sure you want to execute action \"{action}\"?", "no_entity_more_info": "No entity provided for more info dialog", "no_entity_toggle": "No entity provided to toggle", "no_navigation_path": "No navigation path specified", From e1cf5919fa302f40b8c285551d97d9e0d6664aa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Thu, 28 Jan 2021 11:55:00 +0100 Subject: [PATCH 09/54] Typo in texts (#8265) --- 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 4c2cca84e8..efcab1801e 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -774,7 +774,7 @@ "edit_in_yaml_supported": "You can still edit your config in YAML.", "key_missing": "Required key \"{key}\" is missing.", "key_not_expected": "Key \"{key}\" is not expected or not supported by the visual editor.", - "key_wrong_type": "The provided value for \"{key}\" is not supported by the visual editor editor. We support ({type_correct}) but received ({type_wrong})." + "key_wrong_type": "The provided value for \"{key}\" is not supported by the visual editor. We support ({type_correct}) but received ({type_wrong})." } }, "login-form": { From d4000cf662d3a2cdfd292192fb0b6bc5cc0bfc3b Mon Sep 17 00:00:00 2001 From: Kendell R Date: Thu, 28 Jan 2021 03:00:40 -0800 Subject: [PATCH 10/54] Allow theming of header edit background color (#8246) Co-authored-by: Bram Kragten --- src/panels/lovelace/hui-root.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/panels/lovelace/hui-root.ts b/src/panels/lovelace/hui-root.ts index 5354007fe3..4e166c0dd5 100644 --- a/src/panels/lovelace/hui-root.ts +++ b/src/panels/lovelace/hui-root.ts @@ -841,8 +841,6 @@ class HUIRoot extends LitElement { haStyle, css` :host { - --dark-color: #455a64; - --text-dark-color: #fff; -ms-user-select: none; -webkit-user-select: none; -moz-user-select: none; @@ -872,8 +870,8 @@ class HUIRoot extends LitElement { .edit-mode app-header, .edit-mode app-toolbar { - background-color: var(--dark-color, #455a64); - color: var(--text-dark-color); + background-color: var(--app-header-edit-background-color, #455a64); + color: var(--app-header-edit-text-color, #fff); } .edit-mode div[main-title] { pointer-events: auto; From f02841409cf1fbd6571cf9a1329a43071d81f0f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Lov=C3=A9n?= Date: Thu, 28 Jan 2021 14:05:07 +0100 Subject: [PATCH 11/54] Make input_text entity row usable when value is "unknown" (#8258) --- src/panels/lovelace/entity-rows/hui-input-text-entity-row.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/panels/lovelace/entity-rows/hui-input-text-entity-row.ts b/src/panels/lovelace/entity-rows/hui-input-text-entity-row.ts index 6722028303..38d6e8058e 100644 --- a/src/panels/lovelace/entity-rows/hui-input-text-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-input-text-entity-row.ts @@ -10,7 +10,7 @@ import { PropertyValues, TemplateResult, } from "lit-element"; -import { UNAVAILABLE_STATES } from "../../../data/entity"; +import { UNAVAILABLE } from "../../../data/entity"; import { setValue } from "../../../data/input_text"; import { HomeAssistant } from "../../../types"; import { hasConfigOrEntityChanged } from "../common/has-changed"; @@ -54,7 +54,7 @@ class HuiInputTextEntityRow extends LitElement implements LovelaceRow { Date: Thu, 28 Jan 2021 09:24:18 -0600 Subject: [PATCH 12/54] Separate fan speeds into percentages and presets modes (#8216) --- src/data/fan.ts | 4 ++ .../more-info/controls/more-info-fan.js | 65 +++++++++++++++---- src/translations/en.json | 1 + 3 files changed, 57 insertions(+), 13 deletions(-) create mode 100644 src/data/fan.ts diff --git a/src/data/fan.ts b/src/data/fan.ts new file mode 100644 index 0000000000..7fe1e8af52 --- /dev/null +++ b/src/data/fan.ts @@ -0,0 +1,4 @@ +export const SUPPORT_SET_SPEED = 1; +export const SUPPORT_OSCILLATE = 2; +export const SUPPORT_DIRECTION = 4; +export const SUPPORT_PRESET_MODE = 8; diff --git a/src/dialogs/more-info/controls/more-info-fan.js b/src/dialogs/more-info/controls/more-info-fan.js index fde009e367..a5b1b5df52 100644 --- a/src/dialogs/more-info/controls/more-info-fan.js +++ b/src/dialogs/more-info/controls/more-info-fan.js @@ -5,12 +5,15 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; /* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; import { attributeClassNames } from "../../../common/entity/attribute_class_names"; +import { supportsFeature } from "../../../common/entity/supports-feature"; import "../../../components/ha-attributes"; import "../../../components/ha-icon-button"; +import "../../../components/ha-labeled-slider"; import "../../../components/ha-paper-dropdown-menu"; import "../../../components/ha-switch"; import { EventsMixin } from "../../../mixins/events-mixin"; import LocalizeMixin from "../../../mixins/localize-mixin"; +import { SUPPORT_SET_SPEED } from "../../../data/fan"; /* * @appliesMixin EventsMixin @@ -20,13 +23,15 @@ class MoreInfoFan extends LocalizeMixin(EventsMixin(PolymerElement)) { return html`
-
+
+ +
+ +
@@ -96,7 +113,7 @@ class MoreInfoFan extends LocalizeMixin(EventsMixin(PolymerElement)) { `; } @@ -115,6 +132,10 @@ class MoreInfoFan extends LocalizeMixin(EventsMixin(PolymerElement)) { oscillationToggleChecked: { type: Boolean, }, + + percentageSliderValue: { + type: Number, + }, }; } @@ -122,6 +143,7 @@ class MoreInfoFan extends LocalizeMixin(EventsMixin(PolymerElement)) { if (newVal) { this.setProperties({ oscillationToggleChecked: newVal.attributes.oscillating, + percentageSliderValue: newVal.attributes.percentage, }); } @@ -135,19 +157,36 @@ class MoreInfoFan extends LocalizeMixin(EventsMixin(PolymerElement)) { computeClassNames(stateObj) { return ( "more-info-fan " + - attributeClassNames(stateObj, ["oscillating", "speed_list", "direction"]) + (supportsFeature(stateObj, SUPPORT_SET_SPEED) ? "has-percentage " : "") + + (stateObj.attributes.preset_modes && + stateObj.attributes.preset_modes.length + ? "has-preset_modes " + : "") + + attributeClassNames(stateObj, ["oscillating", "direction"]) ); } - speedChanged(ev) { - const oldVal = this.stateObj.attributes.speed; + presetModeChanged(ev) { + const oldVal = this.stateObj.attributes.preset_mode; const newVal = ev.detail.value; if (!newVal || oldVal === newVal) return; - this.hass.callService("fan", "turn_on", { + this.hass.callService("fan", "set_preset_mode", { entity_id: this.stateObj.entity_id, - speed: newVal, + preset_mode: newVal, + }); + } + + percentageChanged(ev) { + const oldVal = parseInt(this.stateObj.attributes.percentage, 10); + const newVal = ev.target.value; + + if (isNaN(newVal) || oldVal === newVal) return; + + this.hass.callService("fan", "set_percentage", { + entity_id: this.stateObj.entity_id, + percentage: newVal, }); } diff --git a/src/translations/en.json b/src/translations/en.json index efcab1801e..7f225af03c 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -157,6 +157,7 @@ }, "fan": { "speed": "Speed", + "preset_mode": "Preset Mode", "oscillate": "Oscillate", "direction": "Direction", "forward": "Forward", From a653bf5b0d61dbc787d0d2fe2b5bff46b30ee556 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Thu, 28 Jan 2021 20:10:15 +0100 Subject: [PATCH 13/54] Move try tss button to bottom (#8266) --- src/panels/config/cloud/account/cloud-tts-pref.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/panels/config/cloud/account/cloud-tts-pref.ts b/src/panels/config/cloud/account/cloud-tts-pref.ts index 828590f47d..e069a71ad5 100644 --- a/src/panels/config/cloud/account/cloud-tts-pref.ts +++ b/src/panels/config/cloud/account/cloud-tts-pref.ts @@ -2,7 +2,6 @@ import "@polymer/paper-dropdown-menu/paper-dropdown-menu-light"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; import "@material/mwc-button"; -import { mdiPlayCircleOutline } from "@mdi/js"; import { css, CSSResult, @@ -59,12 +58,6 @@ export class CloudTTSPref extends LitElement { -
- - -  ${this.hass.localize("ui.panel.config.cloud.account.tts.try")} - -
${this.hass.localize( "ui.panel.config.cloud.account.tts.info", @@ -112,6 +105,11 @@ export class CloudTTSPref extends LitElement {
+
+ + ${this.hass.localize("ui.panel.config.cloud.account.tts.try")} + +
`; } From c1caad6d43fb13c4035d6cd816f4f6af8b7d47b7 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Thu, 28 Jan 2021 20:16:00 +0100 Subject: [PATCH 14/54] hide config links in demo (#8267) --- src/dialogs/more-info/ha-more-info-dialog.ts | 3 ++ src/panels/lovelace/hui-root.ts | 53 +++++++++++--------- 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/src/dialogs/more-info/ha-more-info-dialog.ts b/src/dialogs/more-info/ha-more-info-dialog.ts index 5e58c4e013..0e57bc9112 100644 --- a/src/dialogs/more-info/ha-more-info-dialog.ts +++ b/src/dialogs/more-info/ha-more-info-dialog.ts @@ -78,6 +78,9 @@ export class MoreInfoDialog extends LitElement { } protected shouldShowEditIcon(domain, stateObj): boolean { + if (__DEMO__) { + return false; + } if (EDITABLE_DOMAINS_WITH_ID.includes(domain) && stateObj.attributes.id) { return true; } diff --git a/src/panels/lovelace/hui-root.ts b/src/panels/lovelace/hui-root.ts index 4e166c0dd5..30aac3d42f 100644 --- a/src/panels/lovelace/hui-root.ts +++ b/src/panels/lovelace/hui-root.ts @@ -189,30 +189,6 @@ class HUIRoot extends LitElement { )} `} - - - ${this.hass!.localize( - "ui.panel.lovelace.editor.menu.manage_dashboards" - )} - - - - ${this.hass!.localize( - "ui.panel.lovelace.editor.menu.manage_resources" - )} - + ${__DEMO__ /* No config available in the demo */ + ? "" + : html` + + ${this.hass!.localize( + "ui.panel.lovelace.editor.menu.manage_dashboards" + )} + + ${this.hass.userData?.showAdvanced + ? html` + + ${this.hass!.localize( + "ui.panel.lovelace.editor.menu.manage_resources" + )} + ` + : ""} `} ` From 448d19bfbba7bf0bc20374a9df7d9ef9bb2d4671 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Thu, 28 Jan 2021 20:18:13 +0100 Subject: [PATCH 15/54] Use close dialog function to close device registry detail dialog (#8269) --- .../device-registry-detail/dialog-device-registry-detail.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/panels/config/devices/device-registry-detail/dialog-device-registry-detail.ts b/src/panels/config/devices/device-registry-detail/dialog-device-registry-detail.ts index c30d63b50e..e60439f2de 100644 --- a/src/panels/config/devices/device-registry-detail/dialog-device-registry-detail.ts +++ b/src/panels/config/devices/device-registry-detail/dialog-device-registry-detail.ts @@ -149,7 +149,7 @@ class DialogDeviceRegistryDetail extends LitElement { area_id: this._areaId || null, disabled_by: this._disabledBy || null, }); - this._params = undefined; + this.closeDialog(); } catch (err) { this._error = err.message || From 101067d0186c77825c3a78e7c313381fe83f5537 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Thu, 28 Jan 2021 20:20:07 +0100 Subject: [PATCH 16/54] Fix race condition in zwave migration (#8268) --- .../zwave/zwave-migration.ts | 54 ++++++++++++------- 1 file changed, 34 insertions(+), 20 deletions(-) diff --git a/src/panels/config/integrations/integration-panels/zwave/zwave-migration.ts b/src/panels/config/integrations/integration-panels/zwave/zwave-migration.ts index 0dc8d750a4..d7e791bb49 100644 --- a/src/panels/config/integrations/integration-panels/zwave/zwave-migration.ts +++ b/src/panels/config/integrations/integration-panels/zwave/zwave-migration.ts @@ -37,8 +37,7 @@ import { showAlertDialog } from "../../../../../dialogs/generic/show-dialog-box" import { computeStateName } from "../../../../../common/entity/compute_state_name"; import { computeDeviceName, - DeviceRegistryEntry, - fetchDeviceRegistry, + subscribeDeviceRegistry, } from "../../../../../data/device_registry"; @customElement("zwave-migration") @@ -53,8 +52,6 @@ export class ZwaveMigration extends LitElement { @internalProperty() private _networkStatus?: ZWaveNetworkStatus; - @internalProperty() private _unsub?: Promise; - @internalProperty() private _step = 0; @internalProperty() private _stoppingNetwork = false; @@ -65,10 +62,18 @@ export class ZwaveMigration extends LitElement { @internalProperty() private _migratedZwaveEntities?: string[]; - @internalProperty() private _deviceRegistry?: DeviceRegistryEntry[]; + @internalProperty() private _deviceNameLookup: { [id: string]: string } = {}; + + private _unsub?: Promise; + + private _unsubDevices?: UnsubscribeFunc; public disconnectedCallback(): void { this._unsubscribe(); + if (this._unsubDevices) { + this._unsubDevices(); + this._unsubDevices = undefined; + } } protected render(): TemplateResult { @@ -89,7 +94,8 @@ export class ZwaveMigration extends LitElement { "ui.panel.config.zwave.migration.ozw.introduction" )}
- ${!this.hass.config.components.includes("mqtt") + ${!this.hass.config.components.includes("hassio") && + !this.hass.config.components.includes("mqtt") ? html`
@@ -277,9 +283,9 @@ export class ZwaveMigration extends LitElement { ).map( (device_id) => html`
  • - ${this._computeDeviceName( + ${this._deviceNameLookup[ device_id - )} + ] || device_id}
  • ` )} ` @@ -372,10 +378,7 @@ export class ZwaveMigration extends LitElement { private async _setupOzw() { const ozwConfigFlow = await startOzwConfigFlow(this.hass); - if ( - !this.hass.config.components.includes("hassio") && - this.hass.config.components.includes("ozw") - ) { + if (this.hass.config.components.includes("ozw")) { this._getMigrationData(); this._step = 3; return; @@ -399,18 +402,29 @@ export class ZwaveMigration extends LitElement { this._migrationData.migration_entity_map ); if (Object.keys(this._migrationData.migration_device_map).length) { - this._deviceRegistry = await fetchDeviceRegistry(this.hass); + this._fetchDevices(); } } - private _computeDeviceName(deviceId) { - const device = this._deviceRegistry?.find( - (devReg) => devReg.id === deviceId + private _fetchDevices() { + this._unsubDevices = subscribeDeviceRegistry( + this.hass.connection, + (devices) => { + if (!this._migrationData) { + return; + } + const migrationDevices = Object.keys( + this._migrationData.migration_device_map + ); + const deviceNameLookup = {}; + devices.forEach((device) => { + if (migrationDevices.includes(device.id)) { + deviceNameLookup[device.id] = computeDeviceName(device, this.hass); + } + }); + this._deviceNameLookup = deviceNameLookup; + } ); - if (!device) { - return deviceId; - } - return computeDeviceName(device, this.hass); } private async _doMigrate() { From 0e5c1b2041d6b380563db04af400bbc9b95859d0 Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Thu, 28 Jan 2021 22:39:45 +0100 Subject: [PATCH 17/54] Add missing extra field translation for cover position (#8273) * Ensure ha-form-integer passes "0" to form data * Only keep the translation change --- src/translations/en.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/translations/en.json b/src/translations/en.json index 7f225af03c..1f821ec4d4 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -1427,7 +1427,8 @@ "extra_fields": { "code": "Code", "message": "Message", - "title": "Title" + "title": "Title", + "position": "[%key:ui::card::cover::position%]" } }, "scene": { From 566ffe24a407ef4fb1647c9c72856ea5e64e79f5 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Fri, 29 Jan 2021 01:33:55 +0000 Subject: [PATCH 18/54] Translation update --- translations/frontend/ca.json | 40 +++++++++- translations/frontend/cs.json | 40 +++++++++- translations/frontend/da.json | 63 +++++++++++---- translations/frontend/de.json | 24 +++++- translations/frontend/en.json | 6 +- translations/frontend/es.json | 38 ++++++++- translations/frontend/et.json | 38 ++++++++- translations/frontend/fr.json | 121 ++++++++++++++++++++++++++++- translations/frontend/ja.json | 4 +- translations/frontend/lb.json | 38 +++++++++ translations/frontend/nb.json | 66 ++++++++++++---- translations/frontend/nl.json | 39 ++++++++-- translations/frontend/pl.json | 86 +++++++++++++++++++- translations/frontend/pt.json | 115 ++++++++++++++++++++++++++- translations/frontend/ro.json | 115 ++++++++++++++++++++++++--- translations/frontend/ru.json | 99 ++++++++++++++++++++++- translations/frontend/zh-Hant.json | 38 ++++++++- 17 files changed, 897 insertions(+), 73 deletions(-) diff --git a/translations/frontend/ca.json b/translations/frontend/ca.json index ad7cbe1eac..7d5e1619ae 100644 --- a/translations/frontend/ca.json +++ b/translations/frontend/ca.json @@ -592,8 +592,9 @@ } }, "history_charts": { + "history_disabled": "Integració d'històric desactivada", "loading_history": "Carregant historial d'estats...", - "no_history_found": "No s'ha trobat cap historial d'estats." + "no_history_found": "No s'ha trobat cap històric d'estats." }, "logbook": { "by": "per", @@ -750,8 +751,13 @@ }, "entity_registry": { "control": "Control", + "customize_link": "personalitzacions d'entitat", "dismiss": "Omet", "editor": { + "advanced": "Configuració avançada", + "area": "Defineix només l'àrea de l'entitat", + "area_note": "De manera predeterminada, les entitats d'un dispositiu es troben a la mateixa àrea que el dispositiu. Si canvies l'àrea d'aquesta entitat, deixarà de seguir la del dispositiu.", + "change_device_area": "Canvia l'àrea del dispositiu", "confirm_delete": "Estàs segur que vols eliminar aquesta entrada?", "delete": "Elimina", "device_disabled": "El dispositiu d'aquesta entitat està desactivat.", @@ -761,6 +767,7 @@ "enabled_label": "Activa l'entitat", "enabled_restart_confirm": "Reinicia Home Assistant per acabar d'activar les entitats", "entity_id": "ID de l'entitat", + "follow_device_area": "Segueix l'àrea del dispositiu", "icon": "Icona", "icon_error": "Els icones han de tenir el format 'prefix:nom_icona', per exemple: 'mdi:home'", "name": "Nom", @@ -770,6 +777,7 @@ "update": "Actualitza" }, "faq": "documentació", + "info_customize": "Pots sobreescriure alguns atributs a la secció {customize_link}.", "no_unique_id": "Aquesta entitat (\"{entity_id}\") no té un ID únic, per tant, la seva configuració no pot ser gestionada des de la interfície d'usuari. Consulta les {faq_link} per a més detalls.", "related": "Relacionat", "settings": "Configuració" @@ -1013,6 +1021,18 @@ "second": "{count} {count, plural,\none {segon}\nother {segons}\n}", "week": "{count} {count, plural,\n one {setmana}\n other {setmanes}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "Encara pots editar la configuració a YAML.", + "editor_not_available": "L'eeditor visual no està disponible per al tipus \"{type}\".", + "editor_not_supported": "L'editor visual no és compatible amb aquesta configuració", + "error_detected": "S'han detectat errors de configuració", + "key_missing": "Falta la clau obligatòria \"{key}\".", + "key_not_expected": "No s'està esperant la clau \"{key}\" o no és compatible amb l'editor visual.", + "key_wrong_type": "L'editor visual no admet el valor proporcionat de \"{key}\". ({type_correct}) és compatible, però s'ha rebut ({type_wrong}).", + "no_type_provided": "No s'ha proporcionat cap tipus." + } + }, "login-form": { "log_in": "Iniciar sessió", "password": "Contrasenya", @@ -1514,10 +1534,18 @@ "thank_you_note": "Gràcies per formar part de Home Assistant Cloud. És gràcies a persones com tu que podem oferir una experiència domòtica excel·lent per a tothom.", "tts": { "default_language": "Idioma predeterminat a utilitzar", + "dialog": { + "example_message": "Hola {name}, pots reproduir qualsevol text en els reproductor multimèdia compatibles!", + "header": "Prova el text a veu", + "play": "Reprodueix", + "target": "Objectiu", + "target_browser": "Navegador" + }, "female": "Dona", "info": "Afegeix personalitat a casa teva a mitjançant l'ús dels nostres serveis de text a veu. Pots utilitzar-los en automatitzacions i scripts a través del servei {service}.", "male": "Home", - "title": "Text a veu" + "title": "Text a veu", + "try": "Prova-ho" }, "webhooks": { "disable_hook_error_msg": "No s'ha pogut desactivar el webhook:", @@ -2717,6 +2745,12 @@ }, "description": "Gestiona la teva xarxa Z-Wave", "learn_more": "Més informació sobre Z-Wave", + "migration": { + "ozw": { + "header": "Migra a OpenZWave", + "introduction": "Aquest assistent t'ajudarà a fer la migració des de la integració Z-Wave estàndard a la integració d'OpenZWave, actualment en versió beta." + } + }, "network_management": { "header": "Gestió de la xarxa Z-Wave", "introduction": "Executa ordres a la xarxa Z-Wave. No es rebrà cap resposta si la majoria de les ordres han tingut èxit, però pots consultar el registre OZW." @@ -3261,6 +3295,8 @@ } }, "menu": { + "manage_dashboards": "Gestiona els panells", + "manage_resources": "Gestiona els recursos", "open": "Obre el menú de Lovelace", "raw_editor": "Editor de codi" }, diff --git a/translations/frontend/cs.json b/translations/frontend/cs.json index f8414936a5..cbad62879d 100644 --- a/translations/frontend/cs.json +++ b/translations/frontend/cs.json @@ -588,6 +588,7 @@ } }, "history_charts": { + "history_disabled": "Integrace Historie je zákázána", "loading_history": "Historie stavu se načítá...", "no_history_found": "Historie stavu chybí." }, @@ -604,9 +605,9 @@ "set": "zapadlo", "turned_off": "vypnuto", "turned_on": "zapnuto", - "was_at_home": "byl doma", - "was_at_state": "bylo v {state}", - "was_away": "bylo pryč", + "was_at_home": "byl zjištěn doma", + "was_at_state": "byl zjištěn v {state}", + "was_away": "byl zjištěn pryč", "was_closed": "bylo zavřeno", "was_connected": "bylo připojeno", "was_disconnected": "bylo odpojeno", @@ -746,8 +747,11 @@ }, "entity_registry": { "control": "Řízení", + "customize_link": "přizpůsobení entit", "dismiss": "Zavrhnout", "editor": { + "advanced": "Pokročilá nastavení", + "change_device_area": "Změna oblasti zařízení", "confirm_delete": "Opravdu chcete tuto položku smazat?", "delete": "Odstranit", "device_disabled": "Zařízení této entity je zakázáno.", @@ -766,6 +770,7 @@ "update": "Aktualizovat" }, "faq": "dokumentace", + "info_customize": "Některé atributy můžete přepsat v sekci {customize_link}.", "no_unique_id": "Tato entita (\"{entity_id}\") nemá jedinečné ID, proto její nastavení nelze spravovat z uživatelského rozhraní. Další podrobnosti naleznete na stránce {faq_link}.", "related": "Související", "settings": "Nastavení" @@ -1009,6 +1014,18 @@ "second": "{count} {count, plural,\none {sekunda}\nfew {sekundy}\nother {sekund}\n}", "week": "{count} {count, plural,\none {týden}\nfew {týdny}\nother {týdnů}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "Své nastavení můžete stále upravovat v YAML.", + "editor_not_available": "Pro typ \"{type}\" není k dispozici žádný vizuální editor.", + "editor_not_supported": "Vizuální editor není pro toto nastavení podporován", + "error_detected": "Zjištěny chyby nastavení", + "key_missing": "Chybí požadovaný klíč \"{key}\".", + "key_not_expected": "Klíč \"{key}\" není vizuálním editorem očekáván nebo podporován.", + "key_wrong_type": "Zadávanou hodnotu \"{key}\" nepodporuje vizuální editor. Podporuje ({type_correct}), ale obdržel ({type_wrong}).", + "no_type_provided": "Není k dispozici žádný typ." + } + }, "login-form": { "log_in": "Přihlásit se", "password": "Heslo", @@ -1509,9 +1526,15 @@ "sign_out": "Odhlásit se", "thank_you_note": "Děkujeme, že jste se stali součástí Home Assistant Cloud. Díky lidem, jako jste vy, jsme schopni udělat skvělý zážitek z domácí automatizace pro každého. Díky!", "tts": { + "dialog": { + "header": "Zkuste převod textu na řeč", + "play": "Přehrát", + "target_browser": "Prohlížeč" + }, "female": "Žena", "male": "Muž", - "title": "Převod textu do řeč" + "title": "Převod textu do řeč", + "try": "Zkusit" }, "webhooks": { "disable_hook_error_msg": "Nepodařilo se deaktivovat webhook:", @@ -2839,6 +2862,13 @@ }, "cards": { "action_confirmation": "Opravdu chcete provést akci \"{action}\"?", + "actions": { + "no_entity_more_info": "Pro dialog s dalšími informacemi není poskytnuta žádná entita", + "no_entity_toggle": "K přepnutí není poskytnuta žádná entita", + "no_navigation_path": "Není zadána žádná navigační cesta", + "no_service": "Není zadána žádná služba pro spuštění", + "no_url": "Není zadána žádná adresa URL k otevření" + }, "confirm_delete": "Opravdu chcete tuto kartu smazat?", "empty_state": { "go_to_integrations_page": "Přejděte na stránku integrace.", @@ -3192,6 +3222,8 @@ } }, "menu": { + "manage_dashboards": "Správa ovládacích panelů", + "manage_resources": "Správa zdrojů", "open": "Otevřít Lovelace menu", "raw_editor": "Editor kódu nastavení" }, diff --git a/translations/frontend/da.json b/translations/frontend/da.json index 8c1f2effea..51aec4f1f9 100644 --- a/translations/frontend/da.json +++ b/translations/frontend/da.json @@ -557,6 +557,10 @@ "remove_user": "Fjern bruger", "select_blueprint": "Vælg et Blueprint" }, + "calendar": { + "my_calendars": "Mine kalendere", + "today": "I dag" + }, "data-table": { "no-data": "Ingen data", "search": "Søg" @@ -588,6 +592,7 @@ } }, "history_charts": { + "history_disabled": "Historikintegration deaktiveret", "loading_history": "Indlæser tilstandshistorik...", "no_history_found": "Ingen tilstandshistorik fundet." }, @@ -605,7 +610,7 @@ "turned_off": "blev slukket", "turned_on": "tændte", "was_at_home": "var hjemme", - "was_at_state": "var på {state}", + "was_at_state": "blev registreret som {state}", "was_away": "var væk", "was_closed": "blev lukket", "was_connected": "blev tilsluttet", @@ -746,8 +751,13 @@ }, "entity_registry": { "control": "Kontrol", + "customize_link": "entitetstilpasninger", "dismiss": "Afvis", "editor": { + "advanced": "Avancerede indstillinger", + "area": "Angiv entitetsomåde", + "area_note": "Som standard er entiteterne på en enhed i samme område som enheden. Hvis du ændrer området for denne entitet, følger den ikke længere enhedens område.", + "change_device_area": "Ændre enhedsområde", "confirm_delete": "Er du sikker på, at du vil slette denne post?", "delete": "Slet", "device_disabled": "Denne entitets enheden er deaktiveret.", @@ -757,16 +767,18 @@ "enabled_label": "Aktivér entitet", "enabled_restart_confirm": "Genstart Home Assistant for at fuldføre aktiveringen af entiteterne", "entity_id": "Entitets-id", + "follow_device_area": "Følg enhedsområde", "icon": "Brugerdefineret ikon", "icon_error": "Ikoner skal være i formatet 'præfiks:ikonnavn', fx. 'mdi:home'", "name": "Brugerdefineret navn", - "note": "Bemærk: Dette virker muligvis ikke med alle integrationer endnu.", + "note": "Bemærk: Alle integrationer virker muligvis ikke med endnu.", "open_device_settings": "Åbn enhedsindstillinger", "unavailable": "Denne entitet er ikke tilgængelig i øjeblikket.", "update": "Opdater" }, "faq": "dokumentation", - "no_unique_id": "Denne entitet har ikke et unikt id. Derfor kan dens indstillinger ikke styres fra brugerfladen.", + "info_customize": "Du kan overskrive nogle attributter i afsnittet {customize_link}.", + "no_unique_id": "Denne entitet (\" {entity_id} \") har ikke et unikt id, og dens indstillinger kan derfor ikke administreres fra brugergrænsefladen. Se {faq_link} for flere detaljer.", "related": "Relaterede", "settings": "Indstillinger" }, @@ -1009,6 +1021,18 @@ "second": "{count} {count, plural,\none {sekund}\nother {sekunder}\n}", "week": "{count} {count, plural,\none {uge}\nother {uger}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "Du kan stadig redigere din konfiguration i YAML.", + "editor_not_available": "Ingen visuel editor tilgængelig for typen \" {type} \".", + "editor_not_supported": "Visuel editor understøttes ikke til denne konfiguration", + "error_detected": "Der blev fundet konfigurationsfejl", + "key_missing": "Påkrævede nøgle \"{key}\" mangler.", + "key_not_expected": "Nøglen \"{key}\" er ikke forventet eller understøttes ikke af den visuelle editor.", + "key_wrong_type": "Den angivne værdi for \" {key} \" understøttes ikke af den visuelle editor. Vi understøtter ( {type_correct} ) men modtog ( {type_wrong} ).", + "no_type_provided": "Der er ikke angivet nogen type." + } + }, "login-form": { "log_in": "Log ind", "password": "Adgangskode", @@ -1163,7 +1187,7 @@ "wait_template": "Vente-skabelon" } }, - "unsupported_action": "Ikke-understøttet handling: {action}" + "unsupported_action": "Ingen UI-understøttelse af handling: {action}" }, "alias": "Navn", "blueprint": { @@ -1248,7 +1272,7 @@ "zone": "Zone" } }, - "unsupported_condition": "Ikke-understøttet betingelse: {condition}" + "unsupported_condition": "Ingen UI-understøttelse af betingelse: {condition}" }, "copy_to_clipboard": "Kopier til udklipsholder", "default_name": "Ny automatisering", @@ -1376,7 +1400,7 @@ "zone": "Zone" } }, - "unsupported_platform": "Ikke understøttet platform: {platform}" + "unsupported_platform": "Ingen UI-understøttelse af platform: {platform}" }, "unsaved_confirm": "Du har ikke-gemte ændringer. Er du sikker på, at du vil forlade?" }, @@ -1463,7 +1487,7 @@ "info_state_reporting": "Hvis du aktiverer tilstandsrapportering, vil Home Assistant sende alle tilstandsændringer af eksponerede entiteter til Amazon. Dette giver dig mulighed for altid at se de seneste tilstande i Alexa-appen og bruge tilstandsændringer til at oprette rutiner.", "manage_entities": "Administrer entiteter", "state_reporting_error": "Kunne ikke {enable_disable} rapporteringstilstand.", - "sync_entities": "Synkroniser entiteter", + "sync_entities": "Synkroniser entiteter til Amazon", "sync_entities_error": "Kunne ikke synkronisere entiteter:", "title": "Alexa" }, @@ -1504,6 +1528,14 @@ }, "sign_out": "Log ud", "thank_you_note": "Tak for at du er en del af Home Assistant Cloud. Det er på grund af folk som dig, at vi er i stand til at skabe en god hjemmeautomatiseringsoplevelse for alle. Tak skal du have!", + "tts": { + "dialog": { + "example_message": "Hej {name}, kan du afspille tekst på enhver understøttet medieafspiller!", + "play": "Afspil", + "target": "Modtager", + "target_browser": "Gennemse" + } + }, "webhooks": { "disable_hook_error_msg": "Webhook kunne ikke deaktiveres:", "info": "Alt, hvad der er konfigureret til at blive udløst af en webhook, kan gives en offentligt tilgængelig webadresse, så du kan sende data tilbage til Home Assistant hvor som helst, uden at eksponere din instans til internettet.", @@ -1535,11 +1567,11 @@ "description_login": "Logget ind som {email}", "description_not_login": "Ikke logget ind", "dialog_certificate": { - "certificate_expiration_date": "Udløbsdato for certifikat", + "certificate_expiration_date": "Udløbsdato for certifikat:", "certificate_information": "Certifikatoplysninger", "close": "Luk", "fingerprint": "Certifikat-fingeraftryk:", - "will_be_auto_renewed": "Vil automatisk blive fornyet" + "will_be_auto_renewed": "vil automatisk blive fornyet" }, "dialog_cloudhook": { "available_at": "Webhook er tilgængelig på følgende webadresse:", @@ -1582,7 +1614,7 @@ "dismiss": "Afvis", "email": "Email", "email_error_msg": "Ugyldig email", - "forgot_password": "glemt adgangskode?", + "forgot_password": "Glemt adgangskode?", "introduction": "Home Assistant Cloud giver dig en sikker fjernforbindelse til din instans, når du er væk fra hjemmet. Det giver dig også mulighed for at oprette forbindelse til cloud-tjenesterne: Amazon Alexa og Google Assistant.", "introduction2": "Denne tjeneste drives af vores partner", "introduction2a": ", et selskab grundlagt af grundlæggerne af Home Assistant og Hass.io.", @@ -2260,7 +2292,7 @@ }, "script": { "caption": "Scripts", - "description": "Administrer scripts", + "description": "Udføre en sekvens af handlinger", "editor": { "alias": "Navn", "default_name": "Nyt script", @@ -2576,7 +2608,7 @@ "create": "Opret", "delete": "Slet", "icon": "Ikon", - "icon_error_msg": "Ikonet skal være i formatet præfiks:ikonnavn, for eksempel: mdi:home", + "icon_error_msg": "Ikonet skal være i formatet \"præfiks:ikonnavn\", for eksempel: \"mdi:home\"", "latitude": "Breddegrad", "longitude": "Længdegrad", "name": "Navn", @@ -2971,8 +3003,10 @@ "name": "Blik" }, "grid": { + "columns": "Kolonner", "description": "Gitterkortet giver dig mulighed for at vise flere kort i et gitter.", - "name": "Gitter" + "name": "Gitter", + "square": "Vis kort som kvadrater" }, "history-graph": { "description": "Historikgraf-kortet kan vise en graf for hver af de anførte entiteter.", @@ -3140,6 +3174,8 @@ } }, "menu": { + "manage_dashboards": "Administrer betjeningspaneler", + "manage_resources": "Administrer ressourcer", "open": "Åbn Lovelace-brugerflademenu", "raw_editor": "Tekstbaseret redigering" }, @@ -3345,6 +3381,7 @@ "working": "Vent venligst" }, "initializing": "Initialiserer", + "logging_in_to_with": "Logger ind på ** {locationName} ** med ** {authProviderName} **.", "logging_in_with": "Log ind med **{authProviderName}**.", "pick_auth_provider": "Eller log ind med" }, diff --git a/translations/frontend/de.json b/translations/frontend/de.json index 5c436a153b..a707a3ea09 100644 --- a/translations/frontend/de.json +++ b/translations/frontend/de.json @@ -752,6 +752,7 @@ "control": "Steuerung", "dismiss": "Ausblenden", "editor": { + "advanced": "Erweiterte Einstellungen", "confirm_delete": "Möchtest du diesen Eintrag wirklich löschen?", "delete": "Löschen", "device_disabled": "Das Gerät dieser Entität ist deaktiviert.", @@ -1513,8 +1514,14 @@ "thank_you_note": "Vielen Dank, dass du Teil der Home Assistant Cloud bist. Es ist wegen Menschen wie dir, dass wir in der Lage sind, eine großartige Home Automation Erfahrung für alle zu machen. Danke!", "tts": { "default_language": "Zu verwendende Standardsprache", + "dialog": { + "play": "Play", + "target": "Ziel", + "target_browser": "Browser" + }, "female": "Weiblich", - "male": "Männlich" + "male": "Männlich", + "try": "Versuchen" }, "webhooks": { "disable_hook_error_msg": "Fehler beim Deaktivieren des Webhooks:", @@ -2639,18 +2646,26 @@ "button": "Konfigurieren", "common": { "close": "Schließen", - "network": "Netzwerk" + "network": "Netzwerk", + "remove_node": "Node entfernen" }, "dashboard": { "driver_version": "Treiberversion", "dump_not_ready_confirm": "Herunterladen", "header": "Verwalte dein Z-Wave-Netzwerk", + "node_count": "Anzahl an Nodes", "server_version": "Serverversion" }, + "device_info": { + "node_ready": "Node Bereit", + "node_status": "Node Status" + }, "navigation": { "network": "Netzwerk" }, "network_status": { + "connected": "Verbunden", + "connecting": "Verbinden", "unknown": "Unbekannt" }, "node_status": { @@ -2659,6 +2674,9 @@ "awake": "Wach", "dead": "Tot", "unknown": "Unbekannt" + }, + "remove_node": { + "exclusion_failed": "Die Node konnte nicht entfernt werden. Bitte schaue für mehr Informationen in die Logs." } }, "zwave": { @@ -3214,6 +3232,8 @@ } }, "menu": { + "manage_dashboards": "Dashboards verwalten", + "manage_resources": "Ressourcen verwalten", "open": "Lovelace-Menü öffnen", "raw_editor": "Raw-Konfigurationseditor" }, diff --git a/translations/frontend/en.json b/translations/frontend/en.json index aa4757d024..b33a1ec485 100644 --- a/translations/frontend/en.json +++ b/translations/frontend/en.json @@ -401,6 +401,7 @@ "direction": "Direction", "forward": "Forward", "oscillate": "Oscillate", + "preset_mode": "Preset Mode", "reverse": "Reverse", "speed": "Speed" }, @@ -1029,7 +1030,7 @@ "error_detected": "Configuration errors detected", "key_missing": "Required key \"{key}\" is missing.", "key_not_expected": "Key \"{key}\" is not expected or not supported by the visual editor.", - "key_wrong_type": "The provided value for \"{key}\" is not supported by the visual editor editor. We support ({type_correct}) but received ({type_wrong}).", + "key_wrong_type": "The provided value for \"{key}\" is not supported by the visual editor. We support ({type_correct}) but received ({type_wrong}).", "no_type_provided": "No type provided." } }, @@ -1143,6 +1144,7 @@ "extra_fields": { "code": "Code", "message": "Message", + "position": "Position", "title": "Title" }, "label": "Device" @@ -2934,7 +2936,7 @@ "cards": { "action_confirmation": "Are you sure you want to exectue action \"{action}\"?", "actions": { - "action_confirmation": "Are you sure you want to exectue action \"{action}\"?", + "action_confirmation": "Are you sure you want to execute action \"{action}\"?", "no_entity_more_info": "No entity provided for more info dialog", "no_entity_toggle": "No entity provided to toggle", "no_navigation_path": "No navigation path specified", diff --git a/translations/frontend/es.json b/translations/frontend/es.json index 54b3c0cd8d..e67a865336 100644 --- a/translations/frontend/es.json +++ b/translations/frontend/es.json @@ -592,6 +592,7 @@ } }, "history_charts": { + "history_disabled": "Integración de historial deshabilitada", "loading_history": "Cargando historial de estado...", "no_history_found": "No se encontró historial de estado." }, @@ -750,8 +751,13 @@ }, "entity_registry": { "control": "Control", + "customize_link": "personalizaciones de entidades", "dismiss": "Descartar", "editor": { + "advanced": "Configuración avanzada", + "area": "Establecer solo el área de la entidad", + "area_note": "Por defecto, las entidades de un dispositivo están en la misma área que el dispositivo. Si cambias el área de esta entidad, ya no seguirá el área del dispositivo.", + "change_device_area": "Cambiar el área del dispositivo", "confirm_delete": "¿Estás seguro de que quieres eliminar este elemento?", "delete": "Eliminar", "device_disabled": "El dispositivo de esta entidad está deshabilitado.", @@ -761,6 +767,7 @@ "enabled_label": "Activar entidad", "enabled_restart_confirm": "Reinicia Home Assistant para terminar de habilitar las entidades", "entity_id": "ID de la entidad", + "follow_device_area": "Seguir el área del dispositivo", "icon": "Icono", "icon_error": "Los iconos deben tener el formato 'prefijo:nombreicono', por ejemplo, 'mdi:home'", "name": "Nombre", @@ -770,6 +777,7 @@ "update": "Actualizar" }, "faq": "documentación", + "info_customize": "Puedes sobrescribir algunos atributos en la sección {customize_link}.", "no_unique_id": "Esta entidad (\"{entity_id}\") no tiene un ID único, por lo tanto, su configuración no se puede administrar desde la IU. Consulta el {faq_link} para obtener más detalles.", "related": "Relacionado", "settings": "Configuración" @@ -1013,6 +1021,18 @@ "second": "{count} {count, plural,\none {segundo}\nother {segundos}\n}", "week": "{count} {count, plural,\none {semana}\nother {semanas}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "Aún puedes editar tu configuración en YAML.", + "editor_not_available": "No hay ningún editor visual disponible para el tipo \"{type}\".", + "editor_not_supported": "El editor visual no es compatible con esta configuración", + "error_detected": "Errores de configuración detectados", + "key_missing": "Falta la clave obligatoria \"{key}\".", + "key_not_expected": "El editor visual no espera o no admite la clave \"{key}\".", + "key_wrong_type": "El valor proporcionado para \"{key}\" no es compatible con el editor visual. Aceptamos ({type_correct}) pero recibimos ({type_wrong}).", + "no_type_provided": "No se proporciona ningún tipo." + } + }, "login-form": { "log_in": "Iniciar sesión", "password": "Contraseña", @@ -1514,10 +1534,18 @@ "thank_you_note": "Gracias por ser parte de Home Assistant Cloud. Gracias a personas como tú, podemos hacer una gran experiencia domótica para todos. ¡Gracias!", "tts": { "default_language": "Idioma predeterminado para usar", + "dialog": { + "example_message": "¡Hola {name}, puedes reproducir cualquier texto en cualquier reproductor multimedia compatible!", + "header": "Probar texto a voz", + "play": "Reproducir", + "target": "Objetivo", + "target_browser": "Navegador" + }, "female": "Femenino", "info": "Aporta personalidad a tu hogar haciendo que te hable mediante el uso de nuestros servicios de Texto a voz. Puedes usar esto en automatizaciones y scripts usando el servicio {service} .", "male": "Masculino", - "title": "Texto a voz" + "title": "Texto a voz", + "try": "Probar" }, "webhooks": { "disable_hook_error_msg": "No se pudo deshabilitar el webhook:", @@ -2717,6 +2745,12 @@ }, "description": "Administra tu red Z-Wave", "learn_more": "Aprende más sobre Z-Wave", + "migration": { + "ozw": { + "header": "Migrar a OpenZWave", + "introduction": "Este asistente te ayudará a migrar de la antigua integración de Z-Wave a la integración de OpenZWave que se encuentra actualmente en versión beta." + } + }, "network_management": { "header": "Administración de red Z-Wave", "introduction": "Ejecutar comandos que afectan a la red Z-Wave. No recibirás comentarios sobre si la mayoría de los comandos tuvieron éxito, pero puedes consultar el Registro OZW para intentar averiguarlo." @@ -3261,6 +3295,8 @@ } }, "menu": { + "manage_dashboards": "Administrar paneles de control", + "manage_resources": "Administrar recursos", "open": "Abrir el menú de la IU Lovelace", "raw_editor": "Editor de configuración en bruto" }, diff --git a/translations/frontend/et.json b/translations/frontend/et.json index 8c5a322b8c..62bd85f186 100644 --- a/translations/frontend/et.json +++ b/translations/frontend/et.json @@ -592,6 +592,7 @@ } }, "history_charts": { + "history_disabled": "Ajalookirjete sidumine on keelatud", "loading_history": "Laadin ajalugu...", "no_history_found": "Oleku ajalugu ei leitud" }, @@ -750,8 +751,13 @@ }, "entity_registry": { "control": "Juhtimine", + "customize_link": "olemite kohandused", "dismiss": "Loobu", "editor": { + "advanced": "Täpsemad sätted", + "area": "Määra ainult olemi ala", + "area_note": "Vaikimisi asuvad seadme olemid seadmega samas alas. Kui muudad selle üksuse ala, ei järgi see enam seadme ala.", + "change_device_area": "Muuda seadme ala", "confirm_delete": "Oled kindel, et soovid selle kirje kustutada?", "delete": "Kustuta", "device_disabled": "Selle olemi seade on keelatud.", @@ -761,6 +767,7 @@ "enabled_label": "Luba olem", "enabled_restart_confirm": "Olemite sidumise lubamiseks taaskäivita Home Assistant", "entity_id": "Olemi ID", + "follow_device_area": "Seadme ala järgimine", "icon": "Ikooni muutmine", "icon_error": "Ikoonid peaksid olema vormingus 'prefix: iconname', nt 'mdi: home'", "name": "Nime muutmine", @@ -770,6 +777,7 @@ "update": "Uuenda" }, "faq": "dokumentatsioon", + "info_customize": "Mõned atribuudid saab jaotises {customize_link} üle kirjutada.", "no_unique_id": "Olemil (\"{entity_id}\") puudub unikaalne ID-d. Seetõttu ei saa selle seadeid kasutajaliidesest hallata. Lisainfot vaata {faq_link}.", "related": "Seotud", "settings": "Seaded" @@ -1013,6 +1021,18 @@ "second": "{count} {count, plural,\n one {sekund}\n other {sekundit}\n}", "week": "{count} {count, plural,\n one {nädal}\n other {nädalat}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "YAML-is saad endiselt muuta oma konfiguratsiooni.", + "editor_not_available": "Tüübi \" {type} \" jaoks pole saadaval visuaalne redaktor.", + "editor_not_supported": "Selle konfiguratsiooni korral ei toetata visuaalset redaktorit", + "error_detected": "Tuvastati konfiguratsioonitõrked", + "key_missing": "Nõutav võti \" {key} \" puudub.", + "key_not_expected": "Võti \"{key}\" pole visuaalses redaktoris eeldatud või toetatatud.", + "key_wrong_type": "Visuaalne redaktor ei toeta \"{key}\" jaoks esitatud väärtust. Toetatud on ({type_correct}) kuid saadi ({type_wrong}).", + "no_type_provided": "Tüüpi pole esitatud." + } + }, "login-form": { "log_in": "Logi sisse", "password": "Salasõna", @@ -1514,10 +1534,18 @@ "thank_you_note": "Täname, et liitusite Home Assistanti pilvega. Just teiesuguste inimeste tõttu suudame me pakkuda kõigile suurepärase Home Assistanti kogemuse. Aitäh!", "tts": { "default_language": "Vaikimisi kasutatav keel", + "dialog": { + "example_message": "Tere {name}, saad esitada mis tahes teksti mis tahes toetatud meediaesitajas!", + "header": "Proovi teksti kõneks toimimist", + "play": "Esita", + "target": "Meediaesitaja", + "target_browser": "Veebilehitseja" + }, "female": "Naissoost", "info": "Too isikupära oma koju kasutades meie kõnesünteesiteenuseid. Saad seda kasutada automaatiseeringutes ja skriptides kasutades {service} .", "male": "Meessoost", - "title": "Tekst kõneks" + "title": "Tekst kõneks", + "try": "Proovi" }, "webhooks": { "disable_hook_error_msg": "Veebihaagi keelamine ebaõnnestus:", @@ -2717,6 +2745,12 @@ }, "description": "Halda oma Z-Wave võrku", "learn_more": "Lisateave Z-Wave'i kohta", + "migration": { + "ozw": { + "header": "Mine üle OpenZWave'ile", + "introduction": "See viisard aitab vanalt Z-Wave'i sidumiselt üle minna praegu beetaversioonis olevale OpenZWave'i sidumisele." + } + }, "network_management": { "header": "Z-Wave võrgu haldamine", "introduction": "Käivita käske, mis mõjutavad Z-Wave võrku. Sa ei saa tagasisidet selle kohta, kas enamik käske õnnestus, kuid selle kontrollimiseks võid uurida OZW-logi." @@ -3261,6 +3295,8 @@ } }, "menu": { + "manage_dashboards": "Vaadete haldamine", + "manage_resources": "Halda ressursikirjeid", "open": "Ava Lovelace'i kasutajaliidese menüü", "raw_editor": "Konfiguratsiooni muutmine YAMLis" }, diff --git a/translations/frontend/fr.json b/translations/frontend/fr.json index 11f7de3115..5fe12d66e8 100644 --- a/translations/frontend/fr.json +++ b/translations/frontend/fr.json @@ -557,6 +557,10 @@ "remove_user": "Supprimer l'utilisateur", "select_blueprint": "Sélectionnez un Blueprint" }, + "calendar": { + "my_calendars": "Mes calendriers", + "today": "Aujourd'hui" + }, "data-table": { "no-data": "Pas de données", "search": "Chercher" @@ -588,6 +592,7 @@ } }, "history_charts": { + "history_disabled": "Intégration historique désactivée", "loading_history": "Chargement de l'historique des valeurs ...", "no_history_found": "Aucun historique des valeurs trouvé." }, @@ -746,8 +751,12 @@ }, "entity_registry": { "control": "Contrôle", + "customize_link": "personnalisations d'entité", "dismiss": "Ignorer", "editor": { + "advanced": "Paramètres avancés", + "area_note": "Par défaut, les entités d'un appareil se trouvent dans la même zone que l'appareil. Si vous modifiez la zone de cette entité, elle ne suivra plus la zone de l'appareil.", + "change_device_area": "Modifier la zone de l'appareil", "confirm_delete": "Voulez-vous vraiment supprimer cette entrée ?", "delete": "Supprimer", "device_disabled": "L'appareil de cette entité est désactivé.", @@ -757,6 +766,7 @@ "enabled_label": "Activer l'entité", "enabled_restart_confirm": "Redémarrez Home Assistant pour terminer l'activation des entités", "entity_id": "ID d'entité", + "follow_device_area": "Suivre la zone de l'appareil", "icon": "Icône", "icon_error": "Les icônes doivent être au format «préfixe: iconname», par exemple «mdi: home»", "name": "Nom", @@ -766,6 +776,7 @@ "update": "Mise à jour" }, "faq": "documentation", + "info_customize": "Vous pouvez remplacer certains attributs dans la section {customize_link} .", "no_unique_id": "Cette entité (\"{entity_id}\") n'a pas d'ID unique, par conséquent ses paramètres ne peuvent pas être gérés à partir de l'interface utilisateur. Consultez le {faq_link} pour plus de détails.", "related": "Liées", "settings": "Réglages" @@ -1009,6 +1020,18 @@ "second": "{count} {count, plural,\nzero {seconde}\none {seconde}\nother {secondes}\n}", "week": "{count} {count, plural,\nzero {semaine}\none {semaine}\nother {semaines}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "Vous pouvez toujours modifier votre configuration dans YAML.", + "editor_not_available": "Aucun éditeur visuel disponible pour le type \" {type} \".", + "editor_not_supported": "L'éditeur visuel n'est pas pris en charge pour cette configuration", + "error_detected": "Erreurs de configuration détectées", + "key_missing": "La clé requise « {key} » est manquante.", + "key_not_expected": "La clé « {key} » n’est pas attendue ou non prise en charge par l’éditeur visuel.", + "key_wrong_type": "La valeur fournie pour \"{key}\" n'est pas prise en charge par l'éditeur visuel. Nous supportons ({type_correct}) mais avons reçu ({type_wrong}).", + "no_type_provided": "Aucun type fourni." + } + }, "login-form": { "log_in": "Connexion", "password": "Mot de passe", @@ -1117,7 +1140,9 @@ "device_id": { "action": "Action", "extra_fields": { - "code": "Code" + "code": "Code", + "message": "Message", + "title": "Titre" }, "label": "Appareil" }, @@ -1293,7 +1318,8 @@ "extra_fields": { "above": "Au-dessus de", "below": "En dessous de", - "for": "Durée" + "for": "Durée", + "zone": "Zone" }, "label": "Équipements", "trigger": "Déclencheur" @@ -1505,6 +1531,19 @@ }, "sign_out": "Déconnexion", "thank_you_note": "Merci de faire partie de Home Assistant Cloud. C’est grâce à des personnes comme vous que nous sommes en mesure de proposer une expérience domotique exceptionnelle à tout le monde. Je vous remercie!", + "tts": { + "default_language": "Langue par défaut à utiliser", + "dialog": { + "example_message": "Bonjour {name}, vous pouvez lire n’importe quel texte sur n’importe quel lecteur multimédia pris en charge !", + "header": "Essayez la synthèse vocale", + "play": "Lecture" + }, + "female": "Femme", + "info": "Donnez de la personnalité à votre maison en lui faisant parler en utilisant nos services de synthèse vocale. Vous pouvez l'utiliser dans des automatismes et des scripts en utilisant le service {service}.", + "male": "Homme", + "title": "Synthèse vocale", + "try": "Essayer" + }, "webhooks": { "disable_hook_error_msg": "Impossible de désactiver le Webhook:", "info": "Tout ce qui est configuré pour être déclenché par un Webhook peut recevoir une URL accessible publiquement pour vous permettre de renvoyer des données à Home Assistant de n’importe où, sans exposer votre instance à Internet.", @@ -2621,6 +2660,71 @@ "introduction": "Les zones vous permettent de spécifier certaines régions sur la terre. Lorsqu'une personne se trouve dans une zone, l'état prend le nom de la zone. Les zones peuvent également être utilisées comme déclencheur ou condition dans les configurations d'automatisation.", "no_zones_created_yet": "Il semble que vous n'ayez pas encore créé de zones." }, + "zwave_js": { + "add_node": { + "cancel_inclusion": "Annuler l'inclusion", + "controller_in_inclusion_mode": "Votre contrôleur Z-Wave est maintenant en mode inclusion.", + "inclusion_failed": "Le nœud n'a pas pu être ajouté. Veuillez consulter les journaux pour plus d'informations.", + "inclusion_finished": "Le nœud a été ajouté. Quelques minutes peuvent s'écouler avant que toutes les entités n'apparaissent, alors que nous terminons la mise en place du nœud en arrière-plan.", + "introduction": "Cet assistant vous guidera dans l'ajout d'un nœud à votre réseau Z-Wave.", + "secure_inclusion_warning": "Les dispositifs sécurisés nécessitent une bande passante supplémentaire ; un trop grand nombre de dispositifs sécurisés peut ralentir votre réseau Z-Wave. Nous recommandons de n'utiliser l'inclusion sécurisée que pour les dispositifs qui en ont besoin, comme les serrures ou les ouvre-portes de garage.", + "start_inclusion": "Commencer l'inclusion", + "start_secure_inclusion": "Commencer l'inclusion sécurisée", + "title": "Ajouter un nœud Z-Wave", + "use_secure_inclusion": "Utiliser l'inclusion sécurisée", + "view_device": "Afficher l'appareil" + }, + "button": "Configurer", + "common": { + "add_node": "Ajouter un nœud", + "close": "Fermer", + "home_id": "ID de la maison", + "network": "Réseau", + "node_id": "ID du nœud", + "remove_node": "Supprimer le nœud" + }, + "dashboard": { + "driver_version": "Version du pilote", + "dump_dead_nodes_text": "Certains de vos nœuds n'ont pas répondu et sont supposés morts. Ils ne seront pas entièrement exportés.", + "dump_dead_nodes_title": "Certains de vos nœuds sont morts", + "dump_not_ready_confirm": "Télécharger", + "dump_not_ready_title": "Tous les nœuds ne sont pas encore prêts", + "header": "Gérez votre réseau Z-Wave", + "home_id": "ID de la maison", + "introduction": "Gérez votre réseau Z-Wave et vos nœuds Z-Wave", + "node_count": "Nombre de nœuds", + "nodes_ready": "Les nœuds sont prêts", + "server_version": "Version du serveur" + }, + "device_info": { + "node_ready": "Nœud prêt", + "node_status": "État du nœud", + "zwave_info": "Informations Z-Wave" + }, + "navigation": { + "network": "Réseau" + }, + "network_status": { + "connected": "Connecté", + "connecting": "Connexion", + "unknown": "Inconnu" + }, + "node_status": { + "alive": "Actif", + "asleep": "Endormi", + "awake": "Éveillé", + "dead": "Mort", + "unknown": "Inconnu" + }, + "remove_node": { + "cancel_exclusion": "Annuler l'exclusion", + "controller_in_exclusion_mode": "Votre contrôleur Z-Wave est maintenant en mode exclusion.", + "exclusion_finished": "Le nœud {id} a été supprimé de votre réseau Z-Wave.", + "introduction": "Supprimez un nœud de votre réseau Z-Wave et supprimez l’appareil et les entités associés de Home Assistant.", + "start_exclusion": "Commencer l'exclusion", + "title": "Supprimer un nœud Z-Wave" + } + }, "zwave": { "button": "Configurer", "caption": "Z-Wave", @@ -2633,6 +2737,12 @@ }, "description": "Gérer votre réseau Z-Wave", "learn_more": "En savoir plus sur Z-Wave", + "migration": { + "ozw": { + "header": "Migrer vers OpenZWave", + "introduction": "Cet assistant vous aidera à migrer de l'ancienne intégration Z-Wave vers l'intégration OpenZWave qui est actuellement en bêta." + } + }, "network_management": { "header": "Gestion de réseau Z-Wave", "introduction": "Exécutez les commandes qui affectent le réseau Z-Wave. Vous ne saurez pas si la plupart des commandes ont réussi, mais vous pouvez consulter le journal OZW pour essayer de le savoir." @@ -2816,7 +2926,10 @@ "cards": { "action_confirmation": "Voulez-vous vraiment exécuter l'action \" {action} \"?", "actions": { - "no_service": "Aucun service d'exécution spécifié" + "action_confirmation": "Voulez-vous vraiment exécuter l'action \" {action} \"?", + "no_navigation_path": "Aucun chemin de navigation spécifié", + "no_service": "Aucun service d'exécution spécifié", + "no_url": "Aucune URL à ouvrir spécifiée" }, "confirm_delete": "Êtes-vous sûr de vouloir supprimer cette carte?", "empty_state": { @@ -3172,6 +3285,8 @@ } }, "menu": { + "manage_dashboards": "Gérer les tableaux de bord", + "manage_resources": "Gérer les ressources", "open": "Ouvrir le menu Lovelace UI", "raw_editor": "Éditeur de configuration" }, diff --git a/translations/frontend/ja.json b/translations/frontend/ja.json index ae22cb6df5..f612b2b542 100644 --- a/translations/frontend/ja.json +++ b/translations/frontend/ja.json @@ -2356,7 +2356,7 @@ "mqtt": "mqtt エンティティの再読み込み", "person": "人の再読込", "ping": "ping バイナリ センサー エンティティの再読み込み", - "reload": "{ドメイン} の再読み込み", + "reload": "{domain} の再読み込み", "rest": "残りのエンティティの再読み込み", "rpi_gpio": "Raspberry PiGPIOエンティティの再読み込み", "scene": "シーンの再読込", @@ -2875,7 +2875,7 @@ "cards": { "action_confirmation": "アクション「{action}」を実行してもよろしいですか?", "actions": { - "action_confirmation": "アクション \"{action}\" を実行しますか?", + "action_confirmation": "指定したアクション \"{action}\" を実行しますか?", "no_entity_more_info": "詳細情報ダイアログにエンティティが提供されていません", "no_entity_toggle": "切り替えるエンティティが提供されていません", "no_navigation_path": "ナビゲーションパスが指定されていません", diff --git a/translations/frontend/lb.json b/translations/frontend/lb.json index aab6dda4af..d8cd7a1f6b 100644 --- a/translations/frontend/lb.json +++ b/translations/frontend/lb.json @@ -734,6 +734,8 @@ "control": "Kontroll", "dismiss": "Verwerfen", "editor": { + "advanced": "Avancéiert Astellungen", + "change_device_area": "Beräich vum Apparat änneren", "confirm_delete": "Sécher fir dës Entrée ze läsche?", "delete": "Läschen", "device_disabled": "Den Apparat vun dëser Entitéit ass déaktivéiert.", @@ -743,6 +745,7 @@ "enabled_label": "Entitéit aktivéieren", "enabled_restart_confirm": "Start Home Assistant nei fir dës Entitéiten z'aktivéieren", "entity_id": "ID vun der Entitéit", + "follow_device_area": "Beräich vum Apparat verfollegen", "icon": "Ikon", "icon_error": "Ikonen sollten am format 'prefix:numm' sinn, Beispill: 'mdi:home'", "name": "Numm", @@ -985,6 +988,18 @@ "second": "{count} {count, plural,\none {Sekonn}\nother {Sekonnen}\n}", "week": "{count} {count, plural,\none {Woch}\nother {Wochen}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "Du kanns nach ëmmer demg Konfiguratioun am YAML änneren.", + "editor_not_available": "Kee visuellen Editeur disponibel fir den Typ \"{type}\".", + "editor_not_supported": "Visuellen Editeur ass net ënnerstëtzt fir dës Konfiguratioun", + "error_detected": "Konfiguratiouns Feeler erkannt", + "key_missing": "Néidege Schlëssel \"{key}\" feelt.", + "key_not_expected": "Schlëssel \"{key}\" ass net erwaard oder vum visuellen Editeur ënnerstëtzt.", + "key_wrong_type": "De Wäert fir \"{key}\" ass net vum visuelle Editeur ënnerstëtzt. Mir ënnerstëtzen ({type_correct}) mee mir kruuten ({type_wrong}).", + "no_type_provided": "Keen Typ uginn." + } + }, "login-form": { "log_in": "Aloggen", "password": "Passwuert", @@ -1480,6 +1495,16 @@ }, "sign_out": "Ofmellen", "thank_you_note": "Merci dass dir Deel sidd vun der Home Assistant Cloud. Et ass wéinst iech dass mir sou eng groussaarteg Home Automation Erfarung fir jiddweree kënne maachen. Villmools Merci!", + "tts": { + "dialog": { + "example_message": "Hallo {name}, du kanns all Text op all ënnerstëtzte Medie Spiller ofspillen!", + "header": "Probéier Text zu Sprooch", + "play": "Ofspillen", + "target": "Ziel", + "target_browser": "Navigateur" + }, + "try": "Probéier" + }, "webhooks": { "disable_hook_error_msg": "Feeler beim désaktivéieren vum Webhook:", "info": "Alles wat konfiguréiert ass fir duerch e Webhook ausgeléist ze ginn, kann eng ëffentlech zougänglech URL kréien, fir datt Dir Är Donnéeën zréck un den Home Assistant vun iergendwou kënnt zréckschécken, ouni Är Instanz um Internet z'exposéieren", @@ -2583,6 +2608,11 @@ "introduction": "Zonen erlaben Iech verschidde Regiounen op der Äerd ze spezifizéieren. Wann eng Persoun an enger Zone ass, hëlt de Status den Numm aus der Zone. Zonë kënnen och als Ausléiser oder als Konditioun an Automatisme benotzt ginn.", "no_zones_created_yet": "Et gesäit sou aus wéi wann nach keng Zone erstallt goufen." }, + "zwave_js": { + "dashboard": { + "dump_not_ready_confirm": "Eroflueden" + } + }, "zwave": { "button": "Astellen", "caption": "Z-Wave", @@ -2595,6 +2625,12 @@ }, "description": "Verwalt är Z-Wave Netzwierk", "learn_more": "Méi iwwert Z-Wave léieren", + "migration": { + "ozw": { + "header": "Op OpenZWave migréieren", + "introduction": "Dësen Assistent hëlleft bei der Migratioun vun der aler Z-Wave Integratioun op OpenZWave Integratioun wlecht nach aktuell an der Beta ass." + } + }, "network_management": { "header": "Z-Wave Netzwierk Verwaltung", "introduction": "Féiert Commande aus am Z-Wave Netzwierk. Di kritt kee Feedback op déi meeschte Commande erfollegräich ausgeféiert goufen, mee dir kënnt de OZW Log ënnersiche fir weider Detailer" @@ -3128,6 +3164,8 @@ } }, "menu": { + "manage_dashboards": "Tableau de Bord verwalten", + "manage_resources": "Ressource verwalten", "open": "Lovelace Menu opmaachen", "raw_editor": "Editeur fir déi reng Konfiguratioun" }, diff --git a/translations/frontend/nb.json b/translations/frontend/nb.json index 2d43bce01b..324ca60ac6 100644 --- a/translations/frontend/nb.json +++ b/translations/frontend/nb.json @@ -592,6 +592,7 @@ } }, "history_charts": { + "history_disabled": "Historieintegrasjon deaktivert", "loading_history": "Laster statushistorikk...", "no_history_found": "Ingen statushistorikk funnet" }, @@ -750,8 +751,13 @@ }, "entity_registry": { "control": "Kontroll", + "customize_link": "enhetstilpasninger", "dismiss": "Avvis", "editor": { + "advanced": "Avanserte innstillinger", + "area": "Angi bare enhetsområde", + "area_note": "Enhetene til en enhet er som standard i samme område som enheten. Hvis du endrer området til denne enheten, vil den ikke lenger følge området på enheten.", + "change_device_area": "Endre enhetsområdet", "confirm_delete": "Er du sikker på at du vil slette denne oppføringen?", "delete": "Slett", "device_disabled": "Enheten til denne enhtiteen er deaktivert", @@ -761,6 +767,7 @@ "enabled_label": "Aktiver entitet", "enabled_restart_confirm": "Start Home Assistant på nytt for å fullføre aktiveringen av enhetene", "entity_id": "Entitets-ID", + "follow_device_area": "Følg enhetsområdet", "icon": "Ikon", "icon_error": "Ikoner bør være i formatet 'prefiks:ikonnavn', f.eks 'mdi:home'", "name": "Navn", @@ -770,6 +777,7 @@ "update": "Oppdater" }, "faq": "dokumentasjon", + "info_customize": "Du kan overskrive noen attributter i delen {customize_link}.", "no_unique_id": "Denne enheten ({entity_id}) har ikke en unik ID, derfor kan ikke innstillingene administreres fra brukergrensesnittet. Se {faq_link} hvis du vil ha mer informasjon.", "related": "Relaterte", "settings": "Innstillinger" @@ -1013,6 +1021,18 @@ "second": "{count} {count, plural,\none {sekund}\nother {sekunder}\n}", "week": "{count} {count, plural,\n one {uke}\n other {uker}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "Du kan fortsatt redigere konfigurasjonen din i YAML.", + "editor_not_available": "Ingen visuell editor tilgjengelig for typen \"{type}\".", + "editor_not_supported": "Visual editor støttes ikke for denne konfigurasjonen", + "error_detected": "Konfigurasjonsfeil oppdaget", + "key_missing": "Nødvendig nøkkel \"{key}\" mangler.", + "key_not_expected": "Nøkkelen \"{key}\" forventes ikke eller støttes ikke av det visuelle redigeringsprogrammet.", + "key_wrong_type": "Den angitte verdien for \"{key}\" støttes ikke av redigeringsprogrammet for visuell redigering. Vi støtter ({type_correct}) men mottok ({type_wrong}).", + "no_type_provided": "Ingen type oppgitt." + } + }, "login-form": { "log_in": "Logg inn", "password": "Passord", @@ -1514,10 +1534,18 @@ "thank_you_note": "Takk for at du er en del av Home Assistant Cloud. Det er på grunn av personer som deg at vi er i stand til å lage en flott hjemmeautomasjon opplevelse for alle. Tusen takk!", "tts": { "default_language": "Standardspråk som skal brukes", + "dialog": { + "example_message": "Hei {name}, du kan spille hvilken som helst tekst på en hvilken som helst mediaspiller som støttes!", + "header": "Prøv Tekst-til-tale", + "play": "Spill av", + "target": "Mål", + "target_browser": "Nettleser" + }, "female": "Kvinne", "info": "Ta med personlighet hjem ved å få den til å snakke med deg ved å bruke våre tekst-til-tale-tjenester. Du kan bruke dette i automatiseringer og skript ved hjelp av tjenesten {service}.", "male": "Mann", - "title": "Tekst til tale" + "title": "Tekst til tale", + "try": "Prøve" }, "webhooks": { "disable_hook_error_msg": "Kan ikke deaktivere webhook:", @@ -2638,11 +2666,11 @@ "zwave_js": { "add_node": { "cancel_inclusion": "Avbryt inkludering", - "controller_in_inclusion_mode": "Z-Wave-kontrolleren er nå i inkluderingsmodus.", - "follow_device_instructions": "Følg instruksjonene som fulgte med enheten, for å utløse paring på enheten.", + "controller_in_inclusion_mode": "Z-Wave-kontrolleren er nå i inkluderingsmodus", + "follow_device_instructions": "Følg instruksjonene som fulgte med enheten for å utløse sammenkobling på enheten", "inclusion_failed": "Noden kunne ikke legges til. Vennligst sjekk loggene for mer informasjon.", - "inclusion_finished": "Noden er lagt til. Det kan ta noen minutter før alle enheter dukker opp når vi er ferdig med å sette opp noden i bakgrunnen.", - "introduction": "Denne veiviseren vil guide deg gjennom å legge til en node i Z-Wave-nettverket.", + "inclusion_finished": "Noden er lagt til. Det kan ta noen minutter før alle entiteter dukker opp når vi er ferdig med å sette opp noden i bakgrunnen.", + "introduction": "Denne veiviseren vil guide deg gjennom å legge til en node i Z-Wave-nettverket ditt", "secure_inclusion_warning": "Sikre enheter krever ekstra båndbredde; for mange sikre enheter kan redusere Z-Wave-nettverket. Vi anbefaler bare å bruke sikker inkludering for enheter som krever det, for eksempel låser eller garasjeportåpnere.", "start_inclusion": "Start inkludering", "start_secure_inclusion": "Start sikker inkludering", @@ -2664,9 +2692,9 @@ "dump_dead_nodes_text": "Noen av nodene dine svarte ikke og antas døde. Disse vil ikke bli fullstendig eksportert.", "dump_dead_nodes_title": "Noen av nodene dine er døde", "dump_debug": "Last ned en dump av nettverket ditt for å diagnostisere problemer", - "dump_not_ready_confirm": "Laste ned", - "dump_not_ready_text": "Hvis du oppretter en eksport mens ikke alle noder er klare, kan du gå glipp av nødvendige data. Gi nettverket litt tid til å spørre alle noder. Vil du fortsette med dumpen?", - "dump_not_ready_title": "Ikke alle noder er klare ennå", + "dump_not_ready_confirm": "Last ned", + "dump_not_ready_text": "Hvis du oppretter en eksport før alle noder er klare, kan du gå glipp av nødvendige data. Gi nettverket litt tid til å spørre alle noder. Vil du fortsette med dumpen?", + "dump_not_ready_title": "Alle noder er ikke klare ennå", "header": "Administrere Z-Wave-nettverket", "home_id": "Hjem-ID", "introduction": "Administrer Z-Wave-nettverket og Z-Wave-nodene dine", @@ -2676,8 +2704,8 @@ }, "device_info": { "node_ready": "Node klar", - "node_status": "Node-status", - "zwave_info": "Z-Wave Info" + "node_status": "Node status", + "zwave_info": "Z-Wave Informasjon" }, "navigation": { "network": "Nettverk" @@ -2688,7 +2716,7 @@ "unknown": "Ukjent" }, "node_status": { - "alive": "I live", + "alive": "Levende", "asleep": "Sover", "awake": "Våken", "dead": "Død", @@ -2696,11 +2724,11 @@ }, "remove_node": { "cancel_exclusion": "Avbryt ekskludering", - "controller_in_exclusion_mode": "Z-Wave-kontrolleren er nå i ekskluderingsmodus.", + "controller_in_exclusion_mode": "Z-Wave-kontrolleren er nå i ekskluderingsmodus", "exclusion_failed": "Noden kunne ikke fjernes. Vennligst sjekk loggene for mer informasjon.", - "exclusion_finished": "Node {id} er fjernet fra Z-Wave-nettverket.", - "follow_device_instructions": "Følg instruksjonene som fulgte med enheten for å utløse ekskludering på enheten.", - "introduction": "Fjern en node fra Z-Wave-nettverket, og fjern den tilknyttede enheten og enhetene fra Home Assistant.", + "exclusion_finished": "Node {id} er fjernet fra Z-Wave-nettverket", + "follow_device_instructions": "Følg instruksjonene som fulgte med enheten for å utløse ekskludering på enheten", + "introduction": "Fjern en node fra Z-Wave-nettverket, og fjern den tilknyttede enheten og entitetene fra Home Assistant", "start_exclusion": "Start ekskludering", "title": "Fjern en Z-Wave-node" } @@ -2717,6 +2745,12 @@ }, "description": "Administrer ditt Z-Wave-nettverk", "learn_more": "Lær mer om Z-Wave", + "migration": { + "ozw": { + "header": "Migrer til OpenZWave", + "introduction": "Denne veiviseren hjelper deg med å migrere fra den eldre Z-Wave-integrasjonen til OpenZWave-integrasjonen som for øyeblikket er i beta." + } + }, "network_management": { "header": "Z-Wave nettverksadministrasjon", "introduction": "Kjør kommandoer som påvirker Z-Wave nettverket. Du får ikke tilbakemelding på om de fleste kommandoer lykkes, men du kan sjekke OZW-loggen for å prøve å finne det ut." @@ -3261,6 +3295,8 @@ } }, "menu": { + "manage_dashboards": "Administrer dashbord", + "manage_resources": "Administrer ressurser", "open": "Åpne Lovelace brukergrensesnitt-menyen", "raw_editor": "Redigeringsprogram for raw-konfigurasjon" }, diff --git a/translations/frontend/nl.json b/translations/frontend/nl.json index 27904d82ee..18e8ca5a62 100644 --- a/translations/frontend/nl.json +++ b/translations/frontend/nl.json @@ -610,7 +610,7 @@ "turned_on": "is ingeschakeld", "was_at_home": "was thuis", "was_at_state": "was bij {state}", - "was_away": "was weg", + "was_away": "was afwezig", "was_closed": "gesloten", "was_connected": "verbonden", "was_disconnected": "verbroken", @@ -752,6 +752,8 @@ "control": "Bediening", "dismiss": "Sluiten", "editor": { + "advanced": "Geavanceerde instellingen", + "change_device_area": "Verander het apparaatgebied", "confirm_delete": "Weet je zeker dat je dit item wilt verwijderen?", "delete": "Verwijderen", "device_disabled": "Het apparaat van deze entiteit is uitgeschakeld.", @@ -1013,6 +1015,13 @@ "second": "{count} {count, plural,\none {seconde}\nother {seconden}\n}", "week": "{count} {count, plural,\none {week}\nother {weken}\n}" }, + "errors": { + "config": { + "editor_not_supported": "Visuele editor wordt niet ondersteund voor deze configuratie", + "error_detected": "Configuratiefouten ontdekt", + "no_type_provided": "Geen type opgegeven." + } + }, "login-form": { "log_in": "Aanmelden", "password": "Wachtwoord", @@ -1471,7 +1480,7 @@ "info_state_reporting": "Als u statusrapportage inschakelt, stuurt Home Assistant alle statuswijzigingen van opengestelde entiteiten naar Amazon. Hiermee kunt u altijd de laatste status zien in de Alexa app en kunt u de statuswijzigingen gebruiken om routines te maken.", "manage_entities": "Entiteiten beheren", "state_reporting_error": "Kan de rapportstatus niet {aanzetten_uitzetten}", - "sync_entities": "Synchronisatie-entiteiten", + "sync_entities": "Entiteiten synchroniseren naar Amazon", "sync_entities_error": "Kan entiteiten niet synchroniseren:", "title": "Alexa" }, @@ -1514,9 +1523,17 @@ "thank_you_note": "Bedankt voor uw deelname aan Home Assistant Cloud. Het is vanwege mensen zoals u dat we een geweldige domotica-ervaring voor iedereen kunnen maken. Dank je!", "tts": { "default_language": "Standaardtaal om te gebruiken", + "dialog": { + "example_message": "Hallo {naam}, je kunt elke tekst afspelen op elke ondersteunde mediaspeler!", + "header": "Probeer Tekst naar Spraak", + "play": "Speel", + "target": "Doel", + "target_browser": "Browser" + }, "female": "Vrouw", "male": "Man", - "title": "Tekst naar spraak" + "title": "Tekst naar spraak", + "try": "Probeer" }, "webhooks": { "disable_hook_error_msg": "Kan webhook niet uitschakelen:", @@ -1549,11 +1566,11 @@ "description_login": "Ingelogd als {email}", "description_not_login": "Niet ingelogd", "dialog_certificate": { - "certificate_expiration_date": "Vervaldatum certificaat", + "certificate_expiration_date": "Vervaldatum certificaat:", "certificate_information": "Certificaatinfo", "close": "Sluiten", "fingerprint": "Certificaat vingerafdruk:", - "will_be_auto_renewed": "Wordt automatisch vernieuwd" + "will_be_auto_renewed": "wordt automatisch vernieuwd" }, "dialog_cloudhook": { "available_at": "De webhook is beschikbaar op de volgende URL:", @@ -2678,6 +2695,12 @@ }, "description": "Beheer je Z-Wave-netwerk", "learn_more": "Meer informatie over Z-Wave", + "migration": { + "ozw": { + "header": "Migreren naar OpenZWave", + "introduction": "Deze wizard helpt u te migreren van de oude Z-Wave integratie naar de OpenZWave integratie die momenteel in beta is." + } + }, "network_management": { "header": "Z-Wave netwerkbeheer", "introduction": "Voer opdrachten uit die van invloed zijn op het Z-Wave-netwerk. Je krijgt geen terugkoppeling of de meeste commando's gelukt zijn, maar je kunt wel het OZW Logboek raadplegen om te proberen uit te vinden of het gelukt is." @@ -2926,7 +2949,7 @@ "name": "Alarm paneel" }, "button": { - "default_action_help": "De standaard actie is afhankelijk van de mogelijkheden van de entiteit, deze zal ofwel worden omgeschakeld of meer informatie zal worden getoond.", + "default_action_help": "De standaard actie is afhankelijk van de mogelijkheden van de entiteit. Deze kan worden omgeschakeld of meer informatie kan worden getoond.", "description": "Met de Button-kaart kun je knoppen toevoegen om taken uit te voeren.", "name": "Knop" }, @@ -3098,7 +3121,7 @@ "name": "Afbeelding-entiteit" }, "picture-glance": { - "description": "De Picture Glance-kaart toont een afbeelding en de bijbehorende entiteitstoestanden als een pictogram. De entiteiten aan de rechterkant staan schakelacties toe, andere tonen het dialoogvenster met meer informatie.", + "description": "De Afbeelding oogopslag-kaart toont een afbeelding en de bijbehorende entiteitstoestanden als een pictogram. De entiteiten aan de rechterkant staan schakelacties toe, andere tonen het dialoogvenster met meer informatie.", "name": "Afbeelding oogopslag", "state_entity": "Status entiteit" }, @@ -3213,6 +3236,8 @@ } }, "menu": { + "manage_dashboards": "Beheer dashboards", + "manage_resources": "Beheer bronnen", "open": "Open het Lovelace-menu", "raw_editor": "Ruwe configuratie-editor" }, diff --git a/translations/frontend/pl.json b/translations/frontend/pl.json index a70831680a..5883b41e75 100644 --- a/translations/frontend/pl.json +++ b/translations/frontend/pl.json @@ -557,6 +557,10 @@ "remove_user": "Usuń użytkownika", "select_blueprint": "Wybierz schemat" }, + "calendar": { + "my_calendars": "Moje kalendarze", + "today": "Dzisiaj" + }, "data-table": { "no-data": "Brak danych", "search": "Szukaj" @@ -588,6 +592,7 @@ } }, "history_charts": { + "history_disabled": "Integracja historia wyłączona", "loading_history": "Ładowanie historii...", "no_history_found": "Nie znaleziono historii." }, @@ -1117,7 +1122,9 @@ "device_id": { "action": "Akcja", "extra_fields": { - "code": "Kod" + "code": "Kod", + "message": "Wiadomość", + "title": "Tytuł" }, "label": "Urządzenie" }, @@ -1293,7 +1300,8 @@ "extra_fields": { "above": "Powyżej", "below": "Poniżej", - "for": "Czas trwania" + "for": "Czas trwania", + "zone": "Strefa" }, "label": "Urządzenie", "trigger": "Wyzwalacz" @@ -1505,6 +1513,21 @@ }, "sign_out": "Wyloguj", "thank_you_note": "Dziękujemy, że jesteś częścią Chmury Home Assistant. To dzięki ludziom takim jak Ty jesteśmy w stanie zapewnić wszystkim wspaniałe doświadczenia z automatyzacją domu. Dziękuję Ci!", + "tts": { + "default_language": "Używany język domyślny", + "dialog": { + "example_message": "Witaj {name} , możesz odtwarzać dowolny tekst na dowolnym obsługiwanym odtwarzaczu multimedialnym!", + "header": "Wypróbuj zamiany tekstu na mowę", + "play": "Odtwarzaj", + "target": "Cel", + "target_browser": "Przeglądarka" + }, + "female": "Kobieta", + "info": "Podaruj swemu domu osobowość dając mu możliwość mówienia do Ciebie za pomocą naszych usług zamiany tekstu na mowę. Możesz ich użyć w automatyzacjach i skryptach, korzystając z usługi {service} .", + "male": "Mężczyzna", + "title": "Zamiana tekstu na mowę", + "try": "Wypróbuj" + }, "webhooks": { "disable_hook_error_msg": "Nie udało się wyłączyć webhook:", "info": "Wszystko, co jest skonfigurowane do działania poprzez webhook, może otrzymać publicznie dostępny adres URL, aby umożliwić wysyłanie danych do Home Assistanta z dowolnego miejsca, bez narażania instancji na publiczny dostęp z Internetu.", @@ -2621,6 +2644,55 @@ "introduction": "Strefy pozwalają określić regiony na ziemi. Gdy dana osoba znajduje się w strefie, jej encja pobierze stan z nazwy strefy. Strefy mogą być również używane jako wyzwalacz lub warunek w automatyzacjach.", "no_zones_created_yet": "Wygląda na to, że nie utworzyłeś jeszcze żadnych stref." }, + "zwave_js": { + "add_node": { + "title": "Dodaj węzeł Z-Wave" + }, + "button": "Konfiguruj", + "common": { + "add_node": "Dodaj węzeł", + "close": "Zamknij", + "home_id": "Identyfikator domu", + "network": "Sieć", + "node_id": "Identyfikator węzła", + "remove_node": "Usuń węzeł" + }, + "dashboard": { + "driver_version": "Wersja sterownika", + "dump_dead_nodes_text": "Niektóre z Twoich węzłów nie odpowiedziały i są uznawane za martwe. Nie zostaną one w pełni wyeksportowane.", + "dump_dead_nodes_title": "Niektóre z twoich węzłów są martwe", + "dump_debug": "Pobierz zrzut swojej sieci, aby zdiagnozować problemy", + "dump_not_ready_confirm": "Pobierz", + "dump_not_ready_text": "Jeśli utworzysz zrzut, gdy nie wszystkie węzły są gotowe, może w nim brakować ważnych danych. Daj swojej sieci trochę czasu na odpytanie wszystkich węzłów. Czy chcesz kontynuować zrzut?", + "dump_not_ready_title": "Jeszcze nie wszystkie węzły są gotowe", + "header": "Zarządzaj siecią Z-Wave", + "home_id": "Identyfikator domu", + "introduction": "Zarządzaj siecią i węzłami Z-Wave", + "node_count": "Liczba węzłów", + "nodes_ready": "Węzły gotowe", + "server_version": "Wersja serwera" + }, + "device_info": { + "node_ready": "gotowy", + "node_status": "Stan węzła", + "zwave_info": "Informacje Z-Wave" + }, + "navigation": { + "network": "Sieć" + }, + "network_status": { + "connected": "połączono", + "connecting": "łączenie", + "unknown": "nieznany" + }, + "node_status": { + "alive": "żywy", + "asleep": "uśpiony", + "awake": "wybudzony", + "dead": "martwy", + "unknown": "nieznany" + } + }, "zwave": { "button": "Konfiguracja", "caption": "Z-Wave", @@ -2633,6 +2705,12 @@ }, "description": "Zarządzaj siecią Z-Wave", "learn_more": "Dowiedz się więcej o Z-Wave", + "migration": { + "ozw": { + "header": "Migruj do OpenZWave", + "introduction": "Ten kreator pomoże Ci w migracji ze starszej integracji Z-Wave do integracji OpenZWave, która jest obecnie w wersji beta." + } + }, "network_management": { "header": "Zarządzanie siecią Z-Wave", "introduction": "Uruchom polecenia sterujące siecią Z-Wave. Nie otrzymasz informacji o tym, czy wykonanie poleceń się powiodło, ale możesz szukać informacji na ten temat w logu OZW." @@ -3173,6 +3251,8 @@ } }, "menu": { + "manage_dashboards": "Zarządzaj dashboardami", + "manage_resources": "Zarządzaj zasobami", "open": "Otwórz menu interfejsu użytkownika Lovelace", "raw_editor": "Edytor konfiguracji YAML" }, @@ -3378,7 +3458,7 @@ "working": "Proszę czekać" }, "initializing": "inicjalizacja", - "logging_in_to_with": "Logowanie do ** {locationName} ** przy użyciu ** {authProviderName} **.", + "logging_in_to_with": "Logowanie do **{locationName}** przy użyciu **{authProviderName}**.", "logging_in_with": "Logowanie za pomocą **{authProviderName}**.", "pick_auth_provider": "Lub zaloguj się za pomocą" }, diff --git a/translations/frontend/pt.json b/translations/frontend/pt.json index cddb050949..d4c3397aa9 100644 --- a/translations/frontend/pt.json +++ b/translations/frontend/pt.json @@ -557,6 +557,10 @@ "remove_user": "Remover utilizador", "select_blueprint": "Escolhe um projeto" }, + "calendar": { + "my_calendars": "Os meus Calendários", + "today": "Hoje" + }, "data-table": { "no-data": "Dados do evento", "search": "Procurar" @@ -588,6 +592,7 @@ } }, "history_charts": { + "history_disabled": "Integração de histórico desativada", "loading_history": "A carregar histórico de estados...", "no_history_found": "Nenhum histórico de estado encontrado." }, @@ -746,8 +751,11 @@ }, "entity_registry": { "control": "Controle", + "customize_link": "personalizações de entidade", "dismiss": "Fechar", "editor": { + "advanced": "Configurações avançadas", + "change_device_area": "Alterar área do dispositivo", "confirm_delete": "Tem certeza de que deseja apagar esta entrada?", "delete": "Apagar", "device_disabled": "O dispositivo desta entidade está desativado.", @@ -757,6 +765,7 @@ "enabled_label": "Ativar entidade", "enabled_restart_confirm": "Reinicie o Home Assistant para ativar as entidades", "entity_id": "Identificação da entidade", + "follow_device_area": "Siga a área do dispositivo", "icon": "Ícone", "icon_error": "Os ícones devem estar no formato 'prefixo:nome do ícone', por exemplo 'mdi:home'.", "name": "Nome", @@ -1009,6 +1018,15 @@ "second": "{count} {count, plural,\n one {segundo}\n other {segundos}\n}", "week": "{count} {count, plural,\n one {semana}\n other {semanas}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "Você ainda pode editar sua configuração no YAML.", + "editor_not_available": "Nenhum editor visual disponível para o tipo \" {type} \".", + "editor_not_supported": "O editor visual não é suportado para esta configuração", + "error_detected": "Erros de configuração detectados", + "no_type_provided": "Nenhum tipo fornecido." + } + }, "login-form": { "log_in": "Entrar", "password": "Palavra-passe", @@ -1117,7 +1135,9 @@ "device_id": { "action": "Ação", "extra_fields": { - "code": "Código" + "code": "Código", + "message": "Mensagem", + "title": "Título" }, "label": "Dispositivo" }, @@ -1293,7 +1313,8 @@ "extra_fields": { "above": "Acima", "below": "Abaixo", - "for": "Duração" + "for": "Duração", + "zone": "Zona" }, "label": "Dispositivo", "trigger": "Acionador" @@ -1505,6 +1526,19 @@ }, "sign_out": "Terminar sessão", "thank_you_note": "Obrigado por fazer parte do Home Assistant Cloud. É por causa de pessoas como você que somos capazes de fazer uma ótima experiência de automação residencial para todos. Muito obrigado!", + "tts": { + "default_language": "Linguagem predefinida a utilizar", + "dialog": { + "header": "Tentar Texto para Fala", + "play": "Reproduzir", + "target": "Alvo", + "target_browser": "Navegador" + }, + "female": "Mulher", + "male": "Homem", + "title": "Texto para Fala", + "try": "Tentar" + }, "webhooks": { "disable_hook_error_msg": "Falha ao desativar o webhook:", "info": "Qualquer coisa que esteja configurada para ser acionada por um webhook pode receber um URL público para permitir que você envie dados de volta para o Home Assistant de qualquer lugar, sem expor a sua instância à Internet.", @@ -2588,7 +2622,8 @@ "visualization": { "caption": "Visualização", "header": "Visualização de rede", - "highlight_label": "Destacar Dispositivos" + "highlight_label": "Destacar Dispositivos", + "zoom_label": "Zoom para dispositivo" } }, "zone": { @@ -2620,6 +2655,63 @@ "introduction": "As zonas permitem especificar determinadas regiões da Terra. Quando uma pessoa está dentro de uma zona, o estado assume o nome da zona. As zonas também podem ser usadas como gatilho ou condição nas configurações de automação.", "no_zones_created_yet": "Parece que você ainda não criou nenhuma zona." }, + "zwave_js": { + "add_node": { + "cancel_inclusion": "Cancelar Inclusão", + "controller_in_inclusion_mode": "O seu controlador Z-Wave está agora em modo de inclusão.", + "introduction": "Este assistente irá guiá-lo para adicionar um nó à sua rede Z-Wave.", + "start_inclusion": "Iniciar Inclusão", + "start_secure_inclusion": "Iniciar a Inclusão Segura", + "title": "Adicionar um nó Z-Wave", + "use_secure_inclusion": "Utilizar inclusão segura", + "view_device": "Exibir dispositivo" + }, + "button": "Configurar", + "common": { + "add_node": "Adicionar nó", + "close": "Fechar", + "home_id": "ID de Casa", + "network": "Rede", + "node_id": "ID de nó", + "remove_node": "Remover nó" + }, + "dashboard": { + "driver_version": "Versão do driver", + "dump_dead_nodes_title": "Alguns de seus nós estão desativados", + "dump_not_ready_confirm": "Download", + "dump_not_ready_title": "Nem todos os nós estão prontos", + "header": "Gerir a sua rede Z-Wave", + "home_id": "ID de Casa", + "introduction": "Gerir a sua rede Z-Wave e respetivos nós", + "node_count": "Nº de nós", + "nodes_ready": "Nós prontos", + "server_version": "Versão do servidor" + }, + "device_info": { + "node_ready": "Nó Pronto", + "node_status": "Estado do Nó", + "zwave_info": "Informações sobre Z-Wave" + }, + "navigation": { + "network": "Rede" + }, + "network_status": { + "connected": "Conectado", + "connecting": "A conectar", + "unknown": "Desconhecido" + }, + "node_status": { + "alive": "Ativo", + "asleep": "Adormecido", + "awake": "Acordado", + "dead": "Inativo", + "unknown": "Desconhecido" + }, + "remove_node": { + "cancel_exclusion": "Cancelar Exclusão", + "start_exclusion": "Iniciar Exclusão" + } + }, "zwave": { "button": "Configurar UI", "caption": "Z-Wave", @@ -2632,6 +2724,11 @@ }, "description": "Gerir a sua rede Z-Wave", "learn_more": "Saiba mais sobre o Z-Wave", + "migration": { + "ozw": { + "header": "Migrar para OpenZWave" + } + }, "network_management": { "header": "Gestão da rede Z-Wave", "introduction": "Executar comando que afeta a rede Z-Wave. Não obterá feedback se grande parte dos comandos concluírem com sucesso, mas pode verificar o registo OZW para tentar descobrir." @@ -2814,6 +2911,11 @@ }, "cards": { "action_confirmation": "Tem a certeza que quer executar a acção \"{action}\"?", + "actions": { + "no_entity_toggle": "Nenhuma entidade fornecida para alternar", + "no_navigation_path": "Nenhum caminho de navegação especificado", + "no_url": "Nenhuma URL para abrir especificada" + }, "confirm_delete": "Tem a certeza que quer apagar este cartão?", "empty_state": { "go_to_integrations_page": "Ir para a página de integrações.", @@ -2854,6 +2956,7 @@ }, "components": { "timestamp-display": { + "invalid": "Data / hora inválido", "invalid_format": "Formato inválido" } }, @@ -2996,8 +3099,10 @@ "name": "Relance" }, "grid": { + "columns": "Colunas", "description": "O cartão em Grelha permite mostrar vários cartões numa grelha.", - "name": "Grelha" + "name": "Grelha", + "square": "Apresentar cartões quadrados" }, "history-graph": { "description": "O cartão Gráfico de histórico permite exibir um gráfico para cada uma das entidades listadas.", @@ -3165,6 +3270,8 @@ } }, "menu": { + "manage_dashboards": "Gerir Dashboards", + "manage_resources": "Gerir recursos", "open": "Abrir menu Lovelace IU", "raw_editor": "Editor de configuração do código-fonte" }, diff --git a/translations/frontend/ro.json b/translations/frontend/ro.json index 94d3e681e3..84601cf66c 100644 --- a/translations/frontend/ro.json +++ b/translations/frontend/ro.json @@ -598,9 +598,9 @@ "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_at_home": "a fost detectat acasă", + "was_at_state": "a fost detectat la {state}", + "was_away": "a fost detectat plecat", "was_closed": "a fost închis", "was_connected": "a fost conectat", "was_disconnected": "a fost deconectat", @@ -734,6 +734,8 @@ "control": "Control", "dismiss": "Renunțați", "editor": { + "advanced": "Setari avansate", + "change_device_area": "Schimbați zona dispozitivului", "confirm_delete": "Sigur doriți să ștergeți această intrare?", "delete": "Ștergeți", "device_disabled": "Dispozitivul acestei entități este dezactivat.", @@ -743,6 +745,7 @@ "enabled_label": "Activați entitatea", "enabled_restart_confirm": "Reporniți Home Assistant pentru a finaliza activarea entităților", "entity_id": "ID-ul entității", + "follow_device_area": "Urmați zona dispozitivului", "icon": "Pictogramă", "icon_error": "Pictogramele trebuie să fie în formatul 'prefix:iconname', de ex. 'mdi:home'", "name": "Nume", @@ -964,6 +967,18 @@ "second": "{count} {count, plural,\n one {secundă}\n other {secunde}\n}", "week": "{count}{count, plural,\n one { săptămână }\n other { săptămâni }\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "Puteți edita în continuare configurația în YAML.", + "editor_not_available": "Nu există editor vizual disponibil pentru tipul „ {type} ”.", + "editor_not_supported": "Editorul vizual nu este acceptat pentru această configurație", + "error_detected": "Au fost detectate erori de configurare", + "key_missing": "Cheia necesară \"{key}\" lipsește.", + "key_not_expected": "Cheia \"{key}\" nu este așteptată sau nu este acceptată de editorul vizual.", + "key_wrong_type": "Valoarea furnizată pentru \"{key}\" nu este acceptată de editorul de editare vizuală. Acceptăm ({type_correct}), dar am primit ({type_wrong}).", + "no_type_provided": "Niciun tip furnizat." + } + }, "login-form": { "log_in": "Autentificare", "password": "Parolă", @@ -1072,7 +1087,9 @@ "device_id": { "action": "Acțiune", "extra_fields": { - "code": "Cod" + "code": "Cod", + "message": "Mesaj", + "title": "Titlu" }, "label": "Dispozitiv" }, @@ -1245,7 +1262,8 @@ "extra_fields": { "above": "Deasupra", "below": "Sub", - "for": "Durată" + "for": "Durată", + "zone": "Zonă" }, "label": "Dispozitiv", "trigger": "Declanșator" @@ -1412,7 +1430,7 @@ "info_state_reporting": "Dacă activați raportarea stării, Home Assistant va trimite toate modificările de stare ale entităților expuse către Amazon. Acest lucru vă permite să vedeți întotdeauna cele mai recente stări în aplicația Alexa și să utilizați modificările de stare pentru a crea rutine.", "manage_entities": "Gestionați entități", "state_reporting_error": "Imposibil de {enable_disable} stare raport.", - "sync_entities": "Sincronizează entități", + "sync_entities": "Sincronizați entitățile cu Amazon", "sync_entities_error": "Sincronizarea entităților nu a reușit:", "title": "Alexa" }, @@ -1450,6 +1468,21 @@ }, "sign_out": "Deconectare", "thank_you_note": "Vă mulțumim că faceți parte din Home Assistant Cloud. Datorită oamenilor ca dvs. suntem capabili să facem o experiență excelentă de automatizare a locuinței pentru toată lumea. Mulțumim!", + "tts": { + "default_language": "Limba implicită de utilizat", + "dialog": { + "example_message": "Bună ziua {name}, puteți reda orice text pe orice player media acceptat!", + "header": "Încercați text în vorbire", + "play": "Redare", + "target": "Ţintă", + "target_browser": "Browser" + }, + "female": "Femeie", + "info": "Aduceți personalitate acasă, făcându-i să vă vorbească folosind serviciile noastre Text-to-Speech. Puteți utiliza acest lucru în automatizări și scripturi utilizând serviciul {service} .", + "male": "Bărbat", + "title": "Text în vorbire", + "try": "Încercaţi" + }, "webhooks": { "disable_hook_error_msg": "Nu putut fi dezactivat webhook-ul:", "info": "Orice lucru care este configurat pentru a fi declanșat de un webhook poate primi o adresă URL accesibilă publicului pentru a vă permite să trimiteți date înapoi la Home Assistant de oriunde, fără a vă expune instanța pe internet.", @@ -1480,11 +1513,11 @@ "description_login": "Conectat ca {email}", "description_not_login": "Nu v-ați conectat", "dialog_certificate": { - "certificate_expiration_date": "Data expirării certificatului", + "certificate_expiration_date": "Data expirării certificatului:", "certificate_information": "Informații despre certificat", "close": "Închideți", "fingerprint": "Amprenta certificatului:", - "will_be_auto_renewed": "Va fi reînnoit automat" + "will_be_auto_renewed": "va fi reînnoit automat" }, "dialog_cloudhook": { "available_at": "Webhook-ul este disponibil la următoarea adresă URL:", @@ -2267,7 +2300,7 @@ "mqtt": "Reîncărcați entitățile MQTT configurate manual", "person": "Reîncărcați persoanele", "reload": "Reîncarcă {domain}", - "rest": "Reîncărcați entitățile în repaus și notificați serviciile", + "rest": "Reîncărcați entitățile rest și serviciile de notificare rest", "rpi_gpio": "Reîncărcați entitățile Raspberry Pi GPIO", "scene": "Reîncărcați scenarii", "script": "Reîncărcați script-uri", @@ -2367,7 +2400,8 @@ "system": "Generat de sistem", "username": "Nume de utilizator" } - } + }, + "users_privileges_note": "Funcția de grup de utilizatori este o lucrare în desfășurare. Utilizatorul nu va putea administra instanța prin interfața de utilizare. În continuare audităm toate punctele finale ale API-ului de gestionare pentru a ne asigura că limitează corect accesul la administratori." }, "zha": { "add_device": "Adăugați dispozitiv", @@ -2517,6 +2551,57 @@ "introduction": "Zonele vă permit să specificați anumite regiuni de pe pământ. Când o persoană se află într-o zonă, identificatorul va lua numele din zonă. Zonele pot fi de asemenea utilizate ca declanșator sau condiție în cadrul setărilor de automatizare.", "no_zones_created_yet": "Se pare că nu ai creat încă nici o zonă." }, + "zwave_js": { + "add_node": { + "cancel_inclusion": "Anulați includerea", + "controller_in_inclusion_mode": "Controlerul dvs. Z-Wave este acum în modul de includere.", + "inclusion_failed": "Nodul nu a putut fi adăugat. Vă rugăm să verificați jurnalele pentru mai multe informații.", + "introduction": "Acest expert vă va ghida prin adăugarea unui nod în rețeaua dvs. Z-Wave.", + "secure_inclusion_warning": "Dispozitivele securizate necesită lățime de bandă suplimentară; prea multe dispozitive sigure vă pot încetini rețeaua Z-Wave. Vă recomandăm să folosiți o includere sigură numai pentru dispozitivele care necesită acest lucru, cum ar fi încuietori sau deschizători de uși de garaj.", + "start_inclusion": "Pornire includere", + "start_secure_inclusion": "Pornire includere securizată", + "title": "Adăugați un nod Z-Wave", + "use_secure_inclusion": "Folosiți includere sigură" + }, + "button": "Configurează", + "common": { + "add_node": "Adăugați nod", + "close": "Închide", + "home_id": "ID domiciliu", + "network": "Rețea", + "node_id": "ID Nod", + "remove_node": "Eliminați nodul" + }, + "dashboard": { + "driver_version": "Versiunea driverului", + "dump_not_ready_confirm": "Descarca", + "header": "Gestionați-vă rețeaua Z-Wave", + "home_id": "ID domiciliu", + "introduction": "Gestionați rețeaua Z-Wave și nodurile Z-Wave", + "node_count": "Numărul de noduri", + "server_version": "Versiunea serverului" + }, + "device_info": { + "node_ready": "Nod gata", + "node_status": "Stare nod", + "zwave_info": "Informații Z-Wave" + }, + "navigation": { + "network": "Rețea" + }, + "network_status": { + "connected": "Conectat", + "connecting": "Se conectează la", + "unknown": "Necunoscut" + }, + "node_status": { + "alive": "În viaţă", + "asleep": "Adormit", + "awake": "Treaz", + "dead": "Inactiv", + "unknown": "Necunoscut" + } + }, "zwave": { "button": "Configurează", "caption": "Z-Wave", @@ -2529,6 +2614,12 @@ }, "description": "Gestionați-vă rețeaua Z-Wave", "learn_more": "Aflați mai multe despre Z-Wave", + "migration": { + "ozw": { + "header": "Migrați la OpenZWave", + "introduction": "Acest expert vă va ajuta să migrați de la integrarea Z-Wave moștenită la integrarea OpenZWave care este în prezent în versiune beta." + } + }, "network_management": { "header": "Managementul rețelei Z-Wave", "introduction": "Executați comenzi care afectează rețeaua Z-Wave. Nu veți primi feedback dacă majoritatea comenzilor au reușit, dar puteți verifica istoricul OZW pentru a încerca să aflați." @@ -2765,6 +2856,7 @@ "name": "Panou alarmă" }, "button": { + "default_action_help": "Acțiunea implicită depinde de capacitățile entității, va fi fie comutată, fie va fi afișat dialogul cu mai multe informații.", "description": "Cardul buton vă permite să adăugați butoane pentru a efectua sarcini.", "name": "Buton" }, @@ -2917,6 +3009,7 @@ "name": "Entitate imagine" }, "picture-glance": { + "description": "Cardul Picture Glance arată o imagine și stările de entitate corespunzătoare ca pictogramă. Entitățile din partea dreaptă permit comutarea acțiunilor, altele afișează dialogul cu mai multe informații.", "name": "Privire imagine", "state_entity": "Entitate de stare" }, @@ -3029,6 +3122,8 @@ } }, "menu": { + "manage_dashboards": "Gestionați tablourile de bord", + "manage_resources": "Gestionați resursele", "open": "Deschideți meniul Lovelace UI", "raw_editor": "Editor de configurare brut" }, diff --git a/translations/frontend/ru.json b/translations/frontend/ru.json index e8cc483425..a469265408 100644 --- a/translations/frontend/ru.json +++ b/translations/frontend/ru.json @@ -557,6 +557,10 @@ "remove_user": "Удалить пользователя", "select_blueprint": "Выберите проект" }, + "calendar": { + "my_calendars": "Мои календари", + "today": "Сегодня" + }, "data-table": { "no-data": "Нет данных", "search": "Поиск" @@ -1117,7 +1121,9 @@ "device_id": { "action": "Действие", "extra_fields": { - "code": "Код" + "code": "Код", + "message": "Сообщение", + "title": "Заголовок" }, "label": "Устройство" }, @@ -1293,7 +1299,8 @@ "extra_fields": { "above": "Выше", "below": "Ниже", - "for": "Продолжительность" + "for": "Продолжительность", + "zone": "Зона" }, "label": "Устройство", "trigger": "Триггер" @@ -1505,6 +1512,13 @@ }, "sign_out": "Выйти", "thank_you_note": "Спасибо за то, что стали частью Home Assistant Cloud. Именно благодаря таким людям, как Вы, мы можем сделать все возможное для того, чтобы домашняя автоматизация была максимально удобной для всех. Спасибо!", + "tts": { + "default_language": "Язык для использования по умолчанию", + "female": "Женский", + "info": "Добавьте индивидуальности Вашему дому, воспользовавшись нашей услугой по преобразованию текста в речь. Используйте её в автоматизациях и сценариях с помощью службы {service}.", + "male": "Мужской", + "title": "Воспроизвести текст" + }, "webhooks": { "disable_hook_error_msg": "Не удалось отключить Webhook", "info": "Всему, что настроено на срабатывание через Webhook, может быть предоставлен общедоступный URL-адрес. Это позволяет отправлять данные в Home Assistant откуда угодно, не выставляя свой сервер в Интернете.", @@ -2621,6 +2635,74 @@ "introduction": "Зоны позволяют указывать определенные области на земле. Когда отслеживаемая персона находится в назначенной зоне, её состоянием будет название зоны. Зоны также могут использоваться в качестве триггера или условия в автоматизациях.", "no_zones_created_yet": "У Вас еще нет добавленных зон." }, + "zwave_js": { + "add_node": { + "cancel_inclusion": "Отменить подключение", + "controller_in_inclusion_mode": "Ваш контроллер Z-Wave находится в режиме подключения.", + "follow_device_instructions": "Следуйте инструкциям к подключаемому устройству, чтобы инициировать сопряжение.", + "inclusion_failed": "Не удалось добавить узел. Проверьте журналы для получения дополнительной информации.", + "inclusion_finished": "Узел добавлен. Настройка узла выполняется в фоновом режиме, поэтому может пройти несколько минут, пока все объекты появятся в интерфейсе.", + "introduction": "Этот мастер поможет Вам добавить узел в Вашу сеть Z-Wave.", + "secure_inclusion_warning": "Для защищенных устройств требуется дополнительная пропускная способность. Слишком много таких устройств может замедлить работу Вашей сети Z-Wave. Мы рекомендуем использовать безопасное подключение только для устройств, которым требуется дополнительная защита, например, для замков или открывателей гаражных ворот.", + "start_inclusion": "Начать подключение", + "start_secure_inclusion": "Начать безопасное подключение", + "title": "Добавить узел Z-Wave", + "use_secure_inclusion": "Использовать безопасное подключение", + "view_device": "Просмотр устройства" + }, + "button": "Настройки", + "common": { + "add_node": "Добавить узел", + "close": "Закрыть", + "home_id": "ID дома", + "network": "Сеть", + "node_id": "ID узла", + "remove_node": "Удалить узел" + }, + "dashboard": { + "driver_version": "Версия драйвера", + "dump_dead_nodes_text": "Некоторые из Ваших узлов не ответили и считаются мертвыми. Они не будут полностью экспортированы.", + "dump_dead_nodes_title": "Некоторые из Ваших узлов мертвы", + "dump_debug": "Загрузите дамп Вашей сети, чтобы помочь диагностировать проблемы", + "dump_not_ready_title": "Ещё не все узлы готовы", + "header": "Управление сетью Z-Wave", + "home_id": "ID дома", + "introduction": "Управляйте сетью и отдельными узлами Z-Wave", + "node_count": "Количество узлов", + "nodes_ready": "Узлы готовы", + "server_version": "Версия сервера" + }, + "device_info": { + "node_ready": "Узел готов", + "node_status": "Статус узла", + "zwave_info": "Информация о Z-Wave" + }, + "navigation": { + "network": "Сеть" + }, + "network_status": { + "connected": "Подключен", + "connecting": "Подключение", + "unknown": "Неизвестно" + }, + "node_status": { + "alive": "Живой", + "asleep": "Спит", + "awake": "Проснулся", + "dead": "Мертвый", + "unknown": "Неизвестно" + }, + "remove_node": { + "cancel_exclusion": "Отменить отключение", + "controller_in_exclusion_mode": "Ваш контроллер Z-Wave находится в режиме отключения.", + "exclusion_failed": "Не удалось удалить узел. Проверьте журналы для получения дополнительной информации.", + "exclusion_finished": "Узел {id} был удален из Вашей сети Z-Wave.", + "follow_device_instructions": "Следуйте инструкциям к подключаемому устройству, чтобы инициировать отключение.", + "introduction": "Удалить узел из Вашей сети Z-Wave, а также связанное устройство и объекты из Home Assistant.", + "start_exclusion": "Начать отключение", + "title": "Удалить узел Z-Wave" + } + }, "zwave": { "button": "Настройки", "caption": "Z-Wave", @@ -2815,6 +2897,14 @@ }, "cards": { "action_confirmation": "Вы действительно хотите выполнить действие \"{action}\"?", + "actions": { + "action_confirmation": "Вы действительно хотите выполнить действие \"{action}\"?", + "no_entity_more_info": "Не указан объект для диалогового окна с дополнительной информацией", + "no_entity_toggle": "Не указан объект для переключения состояния", + "no_navigation_path": "Не указан путь навигации", + "no_service": "Не указана служба для выполнения", + "no_url": "Не указан URL-адрес" + }, "confirm_delete": "Вы уверены, что хотите удалить эту карточку?", "empty_state": { "go_to_integrations_page": "Перейти на страницу интеграций", @@ -2998,8 +3088,10 @@ "name": "Glance" }, "grid": { + "columns": "Столбцы", "description": "Позволяет отображать несколько карточек в виде сетки.", - "name": "Сетка" + "name": "Сетка", + "square": "Отображать карточки как квадраты" }, "history-graph": { "description": "Позволяет отображать графики для выбранных объектов.", @@ -3372,6 +3464,7 @@ "working": "Пожалуйста, подождите" }, "initializing": "Инициализация", + "logging_in_to_with": "Вход в **{locationName}** с помощью **{authProviderName}**.", "logging_in_with": "Провайдер аутентификации: **{authProviderName}**.", "pick_auth_provider": "Или войти с помощью" }, diff --git a/translations/frontend/zh-Hant.json b/translations/frontend/zh-Hant.json index 29a741e2fa..29d656add0 100644 --- a/translations/frontend/zh-Hant.json +++ b/translations/frontend/zh-Hant.json @@ -592,6 +592,7 @@ } }, "history_charts": { + "history_disabled": "歷史整合已關閉", "loading_history": "正在載入狀態歷史...", "no_history_found": "找不到狀態歷史。" }, @@ -750,8 +751,13 @@ }, "entity_registry": { "control": "控制", + "customize_link": "實體自訂化", "dismiss": "關閉", "editor": { + "advanced": "進階設定", + "area": "僅設定實體分區", + "area_note": "預設的裝置實體將與裝置處於相同分區。假如變更此實體分區,將不再跟隨裝置所設定的分區。", + "change_device_area": "變更裝置分區", "confirm_delete": "確定要刪除此實體?", "delete": "刪除", "device_disabled": "該實體目前不可用。", @@ -761,6 +767,7 @@ "enabled_label": "啟用實體", "enabled_restart_confirm": "重新啟動 Home Assistant 以完成實體啟用", "entity_id": "實體 ID", + "follow_device_area": "跟隨裝置分區", "icon": "圖示", "icon_error": "圖示必須按照格式「prefix:iconname」設定,例如「mdi:home」", "name": "名稱", @@ -770,6 +777,7 @@ "update": "更新" }, "faq": "相關文件", + "info_customize": "可以於 {customize_link} 部分中覆蓋部分屬性。", "no_unique_id": "此實體(\"{entity_id}\")不包含唯一 ID、因此無法由 UI 進行管理設定。請參閱{faq_link}以獲得更詳細資訊。", "related": "相關", "settings": "設定" @@ -1013,6 +1021,18 @@ "second": "{count} {count, plural,\none {秒}\nother {秒}\n}", "week": "{count} {count, plural,\none {週}\nother {週}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "依舊可以於 YAML 中編輯設定。", + "editor_not_available": "類型 \"{type}\" 沒有可供使用的視覺化編輯器。", + "editor_not_supported": "此設定不支援視覺化編輯器", + "error_detected": "發現設定錯誤", + "key_missing": "缺少所需的密鑰 \"{key}\"。", + "key_not_expected": "視覺化編輯器不支援密鑰 \"{key}\"。", + "key_wrong_type": "視覺化編輯器不支援所提供的 \"{key}\" 數值。支援 ({type_correct}) 但卻收到 ({type_wrong})。", + "no_type_provided": "未提供類型。" + } + }, "login-form": { "log_in": "登入", "password": "密碼", @@ -1514,10 +1534,18 @@ "thank_you_note": "感謝您參與支持 Home Assistant Cloud 雲服務。由於有你們的支持,我們才能持續為每個人帶來絕佳的家庭自動化體驗,謝謝!", "tts": { "default_language": "預設使用語言", + "dialog": { + "example_message": "哈囉 {name}、您可以於任何支援的媒體播放器上閱讀文字!", + "header": "測試閱讀文字", + "play": "播放", + "target": "目標", + "target_browser": "瀏覽器" + }, "female": "女性", "info": "運用「文字轉語音」服務讓您的智能家庭更具個性與個人化,可以藉由 {service} 服務於腳本與自動化中使用此相功能。", "male": "男性", - "title": "所要閱讀的文字" + "title": "所要閱讀的文字", + "try": "測試" }, "webhooks": { "disable_hook_error_msg": "關閉 Webhook 失敗:", @@ -2717,6 +2745,12 @@ }, "description": "管理 Z-Wave 網絡", "learn_more": "詳細了解 Z-Wave", + "migration": { + "ozw": { + "header": "遷移至 OpenZWave", + "introduction": "導引將會協助你將舊版 Z-Wave 整合遷移至目前仍處於測試版本的 OpenZWave 整合。" + } + }, "network_management": { "header": "Z-Wave 網路管理", "introduction": "執行令命將會影響 Z-Wave 網路。將無法獲得回饋或指令是否成功執行,但可透過 OZW 日誌進行查詢。" @@ -3261,6 +3295,8 @@ } }, "menu": { + "manage_dashboards": "管理主面板", + "manage_resources": "管理資源", "open": "開啟 Lovelace UI 選單", "raw_editor": "文字模式編輯器" }, From bd59c4fccfa96c3ad0cfe8bce228ffc9f7c706c7 Mon Sep 17 00:00:00 2001 From: chriss158 Date: Fri, 29 Jan 2021 13:40:09 +0100 Subject: [PATCH 19/54] Fix external auth reconnection loop if connection lost after refresh token expiration (#8279) --- src/external_app/external_auth.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/external_app/external_auth.ts b/src/external_app/external_auth.ts index f1624e77d6..cf7cf41804 100644 --- a/src/external_app/external_auth.ts +++ b/src/external_app/external_auth.ts @@ -68,8 +68,14 @@ export class ExternalAuth extends Auth { public async refreshAccessToken(force?: boolean) { if (this._tokenCallbackPromise && !force) { - await this._tokenCallbackPromise; - return; + try { + await this._tokenCallbackPromise; + return; + } catch (e) { + // _tokenCallbackPromise is in a rejected state + // Clear the _tokenCallbackPromise and go on refreshing access token + this._tokenCallbackPromise = undefined; + } } const payload: GetExternalAuthPayload = { callback: CALLBACK_SET_TOKEN, From b798523d53383accbe18ce061386e63cd873c314 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Fri, 29 Jan 2021 17:19:01 +0100 Subject: [PATCH 20/54] Fix map editor (#8280) --- .../config-elements/hui-map-card-editor.ts | 22 +++++++++---------- src/panels/map/ha-entity-marker.js | 4 ++-- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/panels/lovelace/editor/config-elements/hui-map-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-map-card-editor.ts index 714dc8deb1..39dde0b377 100644 --- a/src/panels/lovelace/editor/config-elements/hui-map-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-map-card-editor.ts @@ -96,37 +96,37 @@ export class HuiMapCardEditor extends LitElement implements LovelaceCardEditor { return html`
    @@ -145,14 +145,14 @@ export class HuiMapCardEditor extends LitElement implements LovelaceCardEditor { > @@ -169,7 +169,7 @@ export class HuiMapCardEditor extends LitElement implements LovelaceCardEditor {
    Date: Fri, 29 Jan 2021 18:06:38 +0100 Subject: [PATCH 21/54] Initial UI config for add-ons (#8271) --- .../addon-view/config/hassio-addon-config.ts | 144 ++++++++++++++---- src/data/hassio/addon.ts | 3 +- 2 files changed, 120 insertions(+), 27 deletions(-) diff --git a/hassio/src/addon-view/config/hassio-addon-config.ts b/hassio/src/addon-view/config/hassio-addon-config.ts index beb8b6a749..02d420f46f 100644 --- a/hassio/src/addon-view/config/hassio-addon-config.ts +++ b/hassio/src/addon-view/config/hassio-addon-config.ts @@ -1,4 +1,7 @@ import "@material/mwc-button"; +import { ActionDetail } from "@material/mwc-list"; +import "@material/mwc-list/mwc-list-item"; +import { mdiDotsVertical } from "@mdi/js"; import "@polymer/iron-autogrow-textarea/iron-autogrow-textarea"; import { css, @@ -14,7 +17,9 @@ import { } from "lit-element"; import { fireEvent } from "../../../../src/common/dom/fire_event"; import "../../../../src/components/buttons/ha-progress-button"; +import "../../../../src/components/ha-button-menu"; import "../../../../src/components/ha-card"; +import "../../../../src/components/ha-form/ha-form"; import "../../../../src/components/ha-yaml-editor"; import type { HaYamlEditor } from "../../../../src/components/ha-yaml-editor"; import { @@ -29,35 +34,67 @@ import type { HomeAssistant } from "../../../../src/types"; import { suggestAddonRestart } from "../../dialogs/suggestAddonRestart"; import { hassioStyle } from "../../resources/hassio-style"; +const SUPPORTED_UI_TYPES = ["string", "select", "boolean", "integer", "float"]; + @customElement("hassio-addon-config") class HassioAddonConfig extends LitElement { - @property({ attribute: false }) public hass!: HomeAssistant; - @property({ attribute: false }) public addon!: HassioAddonDetails; - @internalProperty() private _error?: string; + @property({ attribute: false }) public hass!: HomeAssistant; @property({ type: Boolean }) private _configHasChanged = false; @property({ type: Boolean }) private _valid = true; - @query("ha-yaml-editor", true) private _editor!: HaYamlEditor; + @internalProperty() private _canShowSchema = false; + + @internalProperty() private _error?: string; + + @internalProperty() private _options?: Record; + + @internalProperty() private _yamlMode = false; + + @query("ha-yaml-editor") private _editor?: HaYamlEditor; protected render(): TemplateResult { return html`

    ${this.addon.name}

    - + +
    +

    Configuration

    +
    + + + + + + ${this._yamlMode ? "Edit in UI" : "Edit in YAML"} + + + Reset to defaults + + +
    +
    +
    - + ${!this._yamlMode && this._canShowSchema && this.addon.schema + ? html`` + : html` `} ${this._error ? html`
    ${this._error}
    ` : ""} - ${this._valid ? "" : html`
    Invalid YAML
    `} + ${!this._yamlMode || + (this._canShowSchema && this.addon.schema) || + this._valid + ? "" + : html`
    Invalid YAML
    `}
    - - Reset to defaults - !SUPPORTED_UI_TYPES.includes(entry.type) + ); + this._yamlMode = !this._canShowSchema; + } + protected updated(changedProperties: PropertyValues): void { - super.updated(changedProperties); if (changedProperties.has("addon")) { - this._editor.setValue(this.addon.options); + this._options = { ...this.addon.options }; + } + super.updated(changedProperties); + if ( + changedProperties.has("_yamlMode") || + changedProperties.has("_options") + ) { + if (this._yamlMode) { + const editor = this._editor; + if (editor) { + editor.setValue(this._options!); + } + } + } + } + + private _handleAction(ev: CustomEvent) { + switch (ev.detail.index) { + case 0: + this._yamlMode = !this._yamlMode; + break; + case 1: + this._resetTapped(ev); + break; } } private _configChanged(ev): void { - this._configHasChanged = true; - this._valid = ev.detail.isValid; + if (this.addon.schema && this._canShowSchema && !this._yamlMode) { + this._valid = true; + this._configHasChanged = true; + } else { + this._configHasChanged = true; + this._valid = ev.detail.isValid; + } + if (this._valid) { + this._options! = ev.detail.value; + } } private async _resetTapped(ev: CustomEvent): Promise { @@ -122,18 +197,12 @@ class HassioAddonConfig extends LitElement { const button = ev.currentTarget as any; button.progress = true; - let data: HassioAddonSetOptionParams; this._error = undefined; + try { - data = { - options: this._editor.value, - }; - } catch (err) { - this._error = err; - return; - } - try { - await setHassioAddonOption(this.hass, this.addon.slug, data); + await setHassioAddonOption(this.hass, this.addon.slug, { + options: this._options!, + }); this._configHasChanged = false; const eventdata = { success: true, @@ -178,6 +247,29 @@ class HassioAddonConfig extends LitElement { .syntaxerror { color: var(--error-color); } + .card-menu { + float: right; + z-index: 3; + --mdc-theme-text-primary-on-background: var(--primary-text-color); + } + mwc-list-item[disabled] { + --mdc-theme-text-primary-on-background: var(--disabled-text-color); + } + .header { + display: flex; + justify-content: space-between; + } + .header h2 { + 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); + letter-spacing: -0.012em; + line-height: 48px; + padding: 12px 16px 16px; + display: block; + margin-block: 0px; + font-weight: normal; + } `, ]; } diff --git a/src/data/hassio/addon.ts b/src/data/hassio/addon.ts index 963af90aa6..93a3e222ee 100644 --- a/src/data/hassio/addon.ts +++ b/src/data/hassio/addon.ts @@ -1,3 +1,4 @@ +import { HaFormSchema } from "../../components/ha-form/ha-form"; import { HomeAssistant } from "../../types"; import { hassioApiResultExtractor, HassioResponse } from "./common"; @@ -62,7 +63,7 @@ export interface HassioAddonDetails extends HassioAddonInfo { privileged: any; protected: boolean; rating: "1-6"; - schema: Record; + schema: HaFormSchema[]; services_role: string[]; slug: string; startup: "initialize" | "system" | "services" | "application" | "once"; From 226013d9996e73f9542400180e7bb2dd9c2dc6ae Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Fri, 29 Jan 2021 18:10:18 +0100 Subject: [PATCH 22/54] Z-wave migration tweaks (#8283) --- src/common/config/is_component_loaded.ts | 2 +- .../zwave/zwave-migration.ts | 24 ++++++++++++++----- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/common/config/is_component_loaded.ts b/src/common/config/is_component_loaded.ts index 6275d705dc..1d212f3ff5 100644 --- a/src/common/config/is_component_loaded.ts +++ b/src/common/config/is_component_loaded.ts @@ -4,4 +4,4 @@ import { HomeAssistant } from "../../types"; export const isComponentLoaded = ( hass: HomeAssistant, component: string -): boolean => hass && hass.config.components.indexOf(component) !== -1; +): boolean => hass && hass.config.components.includes(component); diff --git a/src/panels/config/integrations/integration-panels/zwave/zwave-migration.ts b/src/panels/config/integrations/integration-panels/zwave/zwave-migration.ts index d7e791bb49..ce595713af 100644 --- a/src/panels/config/integrations/integration-panels/zwave/zwave-migration.ts +++ b/src/panels/config/integrations/integration-panels/zwave/zwave-migration.ts @@ -39,6 +39,7 @@ import { computeDeviceName, subscribeDeviceRegistry, } from "../../../../../data/device_registry"; +import { isComponentLoaded } from "../../../../../common/config/is_component_loaded"; @customElement("zwave-migration") export class ZwaveMigration extends LitElement { @@ -94,8 +95,8 @@ export class ZwaveMigration extends LitElement { "ui.panel.config.zwave.migration.ozw.introduction" )}
    - ${!this.hass.config.components.includes("hassio") && - !this.hass.config.components.includes("mqtt") + ${!isComponentLoaded(this.hass, "hassio") && + !isComponentLoaded(this.hass, "mqtt") ? html`
    @@ -182,7 +183,7 @@ export class ZwaveMigration extends LitElement {

    Now it's time to set up the OZW integration.

    - ${this.hass.config.components.includes("hassio") + ${isComponentLoaded(this.hass, "hassio") ? html`

    The OZWDaemon runs in a Home Assistant addon @@ -378,7 +379,7 @@ export class ZwaveMigration extends LitElement { private async _setupOzw() { const ozwConfigFlow = await startOzwConfigFlow(this.hass); - if (this.hass.config.components.includes("ozw")) { + if (isComponentLoaded(this.hass, "ozw")) { this._getMigrationData(); this._step = 3; return; @@ -386,7 +387,7 @@ export class ZwaveMigration extends LitElement { showConfigFlowDialog(this, { continueFlowId: ozwConfigFlow.flow_id, dialogClosedCallback: () => { - if (this.hass.config.components.includes("ozw")) { + if (isComponentLoaded(this.hass, "ozw")) { this._getMigrationData(); this._step = 3; } @@ -397,7 +398,18 @@ export class ZwaveMigration extends LitElement { } private async _getMigrationData() { - this._migrationData = await migrateZwave(this.hass, true); + try { + this._migrationData = await migrateZwave(this.hass, true); + } catch (err) { + showAlertDialog(this, { + title: "Failed to get migration data!", + text: + err.code === "unknown_command" + ? "Restart Home Assistant and try again." + : err.message, + }); + return; + } this._migratedZwaveEntities = Object.keys( this._migrationData.migration_entity_map ); From 0e9984413cda2a214a12636265b7d52a008cd565 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Fri, 29 Jan 2021 18:37:58 +0100 Subject: [PATCH 23/54] Fix grid + map editor (#8284) --- .../config-elements/hui-grid-card-editor.ts | 40 +++++++++++++------ .../config-elements/hui-map-card-editor.ts | 19 +++++---- 2 files changed, 38 insertions(+), 21 deletions(-) diff --git a/src/panels/lovelace/editor/config-elements/hui-grid-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-grid-card-editor.ts index 0e4a62867b..681ebd0dc9 100644 --- a/src/panels/lovelace/editor/config-elements/hui-grid-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-grid-card-editor.ts @@ -29,6 +29,14 @@ export class HuiGridCardEditor extends HuiStackCardEditor { this._config = config; } + get _columns(): number { + return this._config!.columns || 3; + } + + get _square(): boolean { + return this._config!.square ?? true; + } + protected render(): TemplateResult { if (!this.hass || !this._config) { return html``; @@ -44,7 +52,7 @@ export class HuiGridCardEditor extends HuiStackCardEditor { "ui.panel.lovelace.editor.card.config.optional" )})" type="number" - .value=${(this._config as GridCardConfig).columns} + .value=${this._columns} .configValue=${"columns"} @value-changed=${this._handleColumnsChanged} > @@ -55,7 +63,7 @@ export class HuiGridCardEditor extends HuiStackCardEditor { .dir=${computeRTLDirection(this.hass)} > @@ -70,24 +78,30 @@ export class HuiGridCardEditor extends HuiStackCardEditor { if (!this._config) { return; } - - this._config = { - ...this._config, - columns: Number(ev.target.value), - }; + const value = Number(ev.target.value); + if (this._columns === value) { + return; + } + if (!ev.target.value) { + this._config = { ...this._config }; + delete this._config.columns; + } else { + this._config = { + ...this._config, + columns: value, + }; + } fireEvent(this, "config-changed", { config: this._config }); } private _handleSquareChanged(ev): void { - if (!this._config) { + if (!this._config || this._square === ev.target.checked) { return; } - this._config = { - ...this._config, - square: ev.target.checked, - }; - fireEvent(this, "config-changed", { config: this._config }); + fireEvent(this, "config-changed", { + config: { ...this._config, square: ev.target.checked }, + }); } } diff --git a/src/panels/lovelace/editor/config-elements/hui-map-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-map-card-editor.ts index 39dde0b377..e32c9f56bc 100644 --- a/src/panels/lovelace/editor/config-elements/hui-map-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-map-card-editor.ts @@ -73,7 +73,7 @@ export class HuiMapCardEditor extends LitElement implements LovelaceCardEditor { } get _default_zoom(): number { - return this._config!.default_zoom || NaN; + return this._config!.default_zoom || 0; } get _geo_location_sources(): string[] { @@ -199,22 +199,25 @@ export class HuiMapCardEditor extends LitElement implements LovelaceCardEditor { return; } const target = ev.target! as EditorTarget; - let value = ev.detail.value; - - if (target.configValue && this[`_${target.configValue}`] === value) { + if (!target.configValue) { return; } - if (target.type === "number") { + + let value = target.checked ?? ev.detail.value; + + if (value && target.type === "number") { value = Number(value); } - if (value === "" || (target.type === "number" && isNaN(value))) { + if (this[`_${target.configValue}`] === value) { + return; + } + if (value === "") { this._config = { ...this._config }; delete this._config[target.configValue!]; } else if (target.configValue) { this._config = { ...this._config, - [target.configValue]: - target.checked !== undefined ? target.checked : value, + [target.configValue]: value, }; } fireEvent(this, "config-changed", { config: this._config }); From c92eeb6bb78b699050d6e6d903afef513b433d6b Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sat, 30 Jan 2021 01:33:03 +0000 Subject: [PATCH 24/54] Translation update --- translations/frontend/ca.json | 2 + translations/frontend/es.json | 2 + translations/frontend/et.json | 4 +- translations/frontend/is.json | 178 +++++++++++++++++++++++++++-- translations/frontend/nb.json | 4 +- translations/frontend/pt.json | 2 + translations/frontend/ru.json | 56 +++++++-- translations/frontend/zh-Hant.json | 2 + 8 files changed, 228 insertions(+), 22 deletions(-) diff --git a/translations/frontend/ca.json b/translations/frontend/ca.json index 7d5e1619ae..b5134b3948 100644 --- a/translations/frontend/ca.json +++ b/translations/frontend/ca.json @@ -401,6 +401,7 @@ "direction": "Direcció", "forward": "Endavant", "oscillate": "Oscil·lació", + "preset_mode": "Mode predefinit", "reverse": "Invers", "speed": "Velocitat" }, @@ -1143,6 +1144,7 @@ "extra_fields": { "code": "Codi", "message": "Missatge", + "position": "Posició", "title": "Títol" }, "label": "Dispositiu" diff --git a/translations/frontend/es.json b/translations/frontend/es.json index e67a865336..dae74b2907 100644 --- a/translations/frontend/es.json +++ b/translations/frontend/es.json @@ -401,6 +401,7 @@ "direction": "Dirección", "forward": "Adelante", "oscillate": "Oscilar", + "preset_mode": "Modo preestablecido", "reverse": "Inverso", "speed": "Velocidad" }, @@ -1143,6 +1144,7 @@ "extra_fields": { "code": "Código", "message": "Mensaje", + "position": "Posición", "title": "Título" }, "label": "Dispositivo" diff --git a/translations/frontend/et.json b/translations/frontend/et.json index 62bd85f186..2181ecb2fb 100644 --- a/translations/frontend/et.json +++ b/translations/frontend/et.json @@ -401,6 +401,7 @@ "direction": "Suund", "forward": "Edaspidi", "oscillate": "Võnkumine", + "preset_mode": "Eelseadistatud režiim", "reverse": "Tagurpidi", "speed": "Kiirus" }, @@ -1029,7 +1030,7 @@ "error_detected": "Tuvastati konfiguratsioonitõrked", "key_missing": "Nõutav võti \" {key} \" puudub.", "key_not_expected": "Võti \"{key}\" pole visuaalses redaktoris eeldatud või toetatatud.", - "key_wrong_type": "Visuaalne redaktor ei toeta \"{key}\" jaoks esitatud väärtust. Toetatud on ({type_correct}) kuid saadi ({type_wrong}).", + "key_wrong_type": "Visuaalne redaktor ei toeta \"{key}\" jaoks sisestatud väärtust. Toetatud on ({type_correct}) kuid saadi ({type_wrong}).", "no_type_provided": "Tüüpi pole esitatud." } }, @@ -1143,6 +1144,7 @@ "extra_fields": { "code": "Kood", "message": "Sõnum", + "position": "Asukoht", "title": "Nimetus" }, "label": "Seade" diff --git a/translations/frontend/is.json b/translations/frontend/is.json index 8e3894a7cf..02bc7c3d5f 100644 --- a/translations/frontend/is.json +++ b/translations/frontend/is.json @@ -1,6 +1,7 @@ { "config_entry": { "disabled_by": { + "device": "Tæki", "integration": "Samþætting", "user": "Notandi" } @@ -473,6 +474,7 @@ "cancel": "Hætta við", "close": "Loka", "continue": "Halda áfram", + "copied_clipboard": "Afritað á klemmuspjald", "delete": "Eyða", "error_required": "Skilyrt", "loading": "Hleð", @@ -504,6 +506,10 @@ "remove_user": "Fjarlægja notanda", "select_blueprint": "Velja uppdrátt" }, + "calendar": { + "my_calendars": "Dagatölin mín", + "today": "Í dag" + }, "data-table": { "search": "Leita" }, @@ -567,8 +573,10 @@ "service": "Þjónusta" }, "target-picker": { - "add_area_id": "Veldu svæði", + "add_area_id": "Velja svæði", "add_device_id": "Velja tæki", + "add_entity_id": "Velja einingu", + "remove_area_id": "Fjarlægja svæði", "remove_device_id": "Fjarlægja tæki", "remove_entity_id": "Fjarlægja einingu" } @@ -582,12 +590,15 @@ "entity_registry": { "dismiss": "Vísa frá", "editor": { + "advanced": "Ítarlegar stillingar", "delete": "Eyða", + "device_disabled": "Tæki þessarar einingar er óvirkt.", "enabled_cause": "Afvirkjað vegna {cause}.", "enabled_label": "Virkja einingu", "entity_id": "Kenni eingar", "icon": "Yfirskrifa táknmynd", "name": "Yfirskrifa nafn", + "open_device_settings": "Opna stillingar tækis", "update": "Uppfæra" }, "related": "Tengt", @@ -631,6 +642,10 @@ "required_error_msg": "þetta er skilyrtur reitur" }, "more_info_control": { + "cover": { + "close_cover": "Loka kápu", + "open_cover": "Opna kápu" + }, "edit": "Breyta einingu", "history": "Saga", "last_changed": "Síðast breytt", @@ -673,13 +688,16 @@ "quick-bar": { "commands": { "navigation": { + "areas": "Svæði", "automation": "Sjálfvirkni", + "blueprint": "Uppdrættir", "core": "Almennt", "devices": "Tæki", "entities": "Einingar", "helpers": "Hjálp", "info": "Upplýsingar", "integrations": "Samþættingar", + "logs": "Atburðaskrá", "lovelace": "Skjáborð", "person": "Persónur", "scene": "Senur", @@ -730,6 +748,17 @@ "second": "{count} {count, plural,\n one {sekúnda}\n other {sekúndur}\n}", "week": "{count} {count, plural,\n one {vika}\n other {vikur}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "Þú getur samt breytt stillingum þínum í YAML.", + "editor_not_available": "Enginn ritill er tiltækur fyrir gerð \"{type}\".", + "editor_not_supported": "Ritill er ekki studdur fyrir þessar stillingar", + "error_detected": "Villur fundust í stillingum", + "key_missing": "Nauðsynlegan lykil \"{key}\" vantar.", + "key_not_expected": "Ekki er búist við lyklinum \"{key}\" eða hann er ekki studdur af ritlinum.", + "key_wrong_type": "Uppgefið gildi fyrir \"{key}\" er ekki stutt af ritlinum. Við styðjum ({type_correct}) en fengum ({type_wrong})." + } + }, "login-form": { "log_in": "Skrá inn", "password": "Lykilorð", @@ -781,11 +810,14 @@ "blueprint": { "use_blueprint": "Nota uppdrátt" }, + "header": "Búa til nýja sjálfvirkni", "how": "Hvernig viltu búa til nýju sjálfvirknina?", + "start_empty": "Byrja með tóma sjálfvirkni", "thingtalk": { "create": "Stofna", "header": "Lýstu sjálfvirkninni sem þú vilt búa til", - "input_label": "Hvað ætti þessi sjálfvirkni að gera?" + "input_label": "Hvað ætti þessi sjálfvirkni að gera?", + "intro": "Og við munum reyna að búa það til fyrir þig. Til dæmis: Slökktu ljósin þegar ég fer." } }, "editor": { @@ -810,7 +842,9 @@ "device_id": { "action": "Aðgerð", "extra_fields": { - "code": "Kóði" + "code": "Kóði", + "message": "Skilaboð", + "title": "Titill" }, "label": "Tæki" }, @@ -836,7 +870,12 @@ }, "alias": "Nafn", "blueprint": { - "header": "Uppdráttur" + "blueprint_to_use": "Uppdráttur sem skal nota", + "header": "Uppdráttur", + "inputs": "Inntök", + "manage_blueprints": "Stjórna uppdráttum", + "no_blueprints": "Þú ert ekki með neina uppdrætti", + "no_inputs": "Þessi uppdráttur er ekki með neinum inntökum." }, "conditions": { "add": "Bæta við skilyrði", @@ -942,7 +981,8 @@ "extra_fields": { "above": "Yfir", "below": "Undir", - "for": "Tímalengd" + "for": "Tímalengd", + "zone": "Svæði" }, "label": "Tæki" }, @@ -1044,24 +1084,36 @@ }, "blueprint": { "add": { + "error_no_url": "Færðu inn vefslóð uppdráttarins", "file_name": "Slóð uppdráttar", "header": "Flytja inn uppdrátt", "import_btn": "Forskoða uppdrátt", + "import_header": "Uppdráttur \"{name}\"", + "import_introduction": "Þú getur flutt inn uppdrætti frá öðrum notendum frá Github og samfélagsspjallsvæðum. Sláðu inn vefslóð uppdráttarins hér að neðan.", "importing": "Hleð inn uppdrátt...", "raw_blueprint": "Innihald uppdráttar", "save_btn": "Flytja inn uppdrátt", - "saving": "Flyt inn uppdrátt..." + "saving": "Flyt inn uppdrátt...", + "unsupported_blueprint": "Þessi uppdráttur er ekki studdur", + "url": "Vefslóð uppdráttarins" }, "caption": "Uppdrættir", + "description": "Stjórna uppdráttum", "overview": { "add_blueprint": "Flytja inn uppdrátt", - "delete_blueprint": "Eyða uppdrátt", + "confirm_delete_header": "Eyða þessum uppdrætti?", + "confirm_delete_text": "Á örugglega að eyða þessum uppdrætti?", + "delete_blueprint": "Eyða uppdrætti", "discover_more": "Uppgötva fleiri uppdrætti", + "header": "Uppdráttarritill", "headers": { + "domain": "Lén", "file_name": "Skráarnafn", "name": "Nafn" }, - "learn_more": "Læra meira um hvernig nota á uppdrætti" + "introduction": "Stjórnun uppdrátta gerir þér kleift að flytja inn og stjórna uppdráttunum þínum.", + "learn_more": "Læra meira um hvernig nota á uppdrætti", + "use_blueprint": "Búa til sjálfvirkni" } }, "cloud": { @@ -1089,6 +1141,17 @@ "title": "Fjarstýring" }, "sign_out": "Skrá út", + "tts": { + "default_language": "Sjálfgefið tungumál", + "dialog": { + "header": "Reyna texta í tal", + "play": "Spila", + "target_browser": "Vafri" + }, + "female": "Kvenkyns", + "male": "Karlkyns", + "try": "Reyna" + }, "webhooks": { "loading": "Hleð ...", "no_hooks_yet2": " eða með því að stofna ", @@ -1197,6 +1260,7 @@ "conditions": { "caption": "Bara framkvæma eitthvað ef..." }, + "create_disable": "Ekki er hægt að búa til sjálfvirkni með óvirku tæki", "no_automations": "Engin sjálfvirkni", "triggers": { "caption": "Framkvæma eitthvað þegar..." @@ -1218,12 +1282,13 @@ "description": "Stjórna tengdum tækjum", "device_info": "Upplýsingar um tæki", "device_not_found": "Tæki fannst ekki.", - "disabled": "Afvirkjað", + "disabled": "Óvirkt", "disabled_by": { "integration": "Samþætting", "user": "Notandi" }, - "enabled_cause": "Afvirkjað vegna {cause}.", + "enabled_cause": "Tækið er óvirkt vegna {cause}.", + "enabled_description": "Óvirk tæki verða ekki sýnd, einingar sem tilheyra tækinu verða gerðar óvirkar og þeim ekki bætt við Home Assistant.", "enabled_label": "Virkja einingu", "entities": { "add_entities_lovelace": "Bæta við í Lovelace", @@ -1239,14 +1304,16 @@ "show_all": "Sýna allt", "show_disabled": "Sýna óvirk tæki" }, - "search": "Leit að tækjum" + "search": "Leita að tækjum" }, "scene": { + "create_disable": "Ekki er hægt að búa til vettvang með óvirku tæki", "no_scenes": "Engar senur", "scenes": "Senur" }, "scenes": "Senur", "script": { + "create_disable": "Ekki er hægt að búa til forskrift með óvirku tæki", "scripts": "Skriftur" }, "scripts": "Skriftur", @@ -1269,6 +1336,7 @@ }, "header": "Einingarskrá", "headers": { + "area": "Svæði", "integration": "Samþætting", "name": "Nafn", "status": "Staða" @@ -1315,6 +1383,7 @@ "info": { "built_using": "Byggt með", "caption": "Upplýsingar", + "copy_github": "Fyrir GitHub", "copy_raw": "Hrár texti", "documentation": "Skjölun", "icons_by": "Smátákn eftir", @@ -1544,6 +1613,8 @@ "sequence": "Röð" }, "picker": { + "duplicate": "Tvífalda", + "duplicate_script": "Tvífalda forskrift", "headers": { "name": "Nafn" }, @@ -1609,6 +1680,7 @@ "editor": { "activate_user": "Virkja notanda", "active": "Virkur", + "active_tooltip": "Stýrir því hvort notandi getur skráð sig inn", "admin": "Stjórnandi", "caption": "Skoða notanda", "change_password": "Breyta lykilorði", @@ -1627,6 +1699,7 @@ "add_user": "Bæta við notanda", "headers": { "group": "Hópur", + "is_active": "Virkur", "is_owner": "Eigandi", "name": "Nafn", "system": "Kerfi", @@ -1635,6 +1708,7 @@ } }, "zha": { + "add_device": "Bæta við tæki", "add_device_page": { "discovery_text": "Uppgötvuð tæki munu birtast hér. Fylgdu leiðbeiningunum fyrir tækið þitt og setjið tækið í pörunarstillingu.", "header": "Zigbee sjálfvirkni - Bæta við tækjum", @@ -1659,7 +1733,16 @@ "value": "Gildi" }, "description": "Zigbee Home Automation net stjórnun", + "device_pairing_card": { + "CONFIGURED": "Uppsetningu lokið", + "CONFIGURED_status_text": "Frumstilli", + "INITIALIZED": "Frumstillingu lokið", + "INITIALIZED_status_text": "Tækið er tilbúið til notkunar", + "INTERVIEW_COMPLETE_status_text": "Set upp", + "PAIRED": "Tæki fannst" + }, "groups": { + "add_group": "Bæta við hópi", "add_members": "Bæta við meðlim", "adding_members": "Bæti meðlimum við", "caption": "Hópar", @@ -1683,6 +1766,10 @@ }, "node_management": { "header": "Tækjaumsýsla" + }, + "visualization": { + "header": "Netbirting", + "zoom_label": "Þysja inn að tæki" } }, "zone": { @@ -1699,6 +1786,60 @@ "update": "Uppfæra" } }, + "zwave_js": { + "add_node": { + "title": "Bæta við Z-Wave hnúti", + "view_device": "Skoða tæki" + }, + "button": "Stilla", + "common": { + "add_node": "Bæta við hnúti", + "close": "Loka", + "network": "Net", + "node_id": "Hnútauðkenni", + "remove_node": "Fjarlægja hnút" + }, + "dashboard": { + "driver_version": "Útgáfa rekils", + "dump_dead_nodes_text": "Sumir hnútanna svöruðu ekki og er gert ráð fyrir að þeir séu dauðir. Þessir hnútar verða ekki fluttir út að fullu.", + "dump_dead_nodes_title": "Sumir hnútanna eru dauðir", + "dump_not_ready_confirm": "Sækja", + "dump_not_ready_title": "Ekki eru allir hnútar tilbúnir ennþá", + "node_count": "Fjöldi hnúta", + "nodes_ready": "Hnútar tilbúnir", + "server_version": "Útgáfa miðlara" + }, + "device_info": { + "node_ready": "Hnútur tilbúinn", + "node_status": "Staða hnúts", + "zwave_info": "Z-Wave upplýsingar" + }, + "navigation": { + "network": "Net" + }, + "network_status": { + "connected": "Tengt", + "connecting": "Tengist", + "unknown": "Óþekkt" + }, + "node_status": { + "alive": "Á lífi", + "asleep": "Sofandi", + "awake": "Vakandi", + "dead": "Dauður", + "unknown": "Óþekkt" + }, + "remove_node": { + "cancel_exclusion": "Hætta við útilokun", + "controller_in_exclusion_mode": "Z-Wave stjórinn þinn er nú í útilokunarham.", + "exclusion_failed": "Ekki tókst að fjarlægja hnútinn. Vinsamlegast athugaðu atburðaskrár fyrir frekari upplýsingar.", + "exclusion_finished": "Hnúturinn {id} hefur verið fjarlægður af Z-Wave netinu.", + "follow_device_instructions": "Fylgdu leiðbeiningunum sem fylgdu tækinu þínu til að kveikja á útilokun í tækinu.", + "introduction": "Fjarlægðu hnút af Z-Wave netinu þínu og fjarlægðu tengd tæki og einingar úr Home Assistant.", + "start_exclusion": "Hefja útilokun", + "title": "Fjarlægja Z-Wave hnút" + } + }, "zwave": { "button": "Stilla", "caption": "Z-Wave", @@ -1801,6 +1942,10 @@ }, "lovelace": { "cards": { + "actions": { + "action_confirmation": "Á örugglega að framkvæma aðgerð \"{action}\"?", + "no_url": "Engin vefslóð til að opna tilgreint" + }, "empty_state": { "go_to_integrations_page": "Fara á samþættingar síðu.", "no_devices": "Þessi síða leyfir þér að stjórna tækjunum þínum, hinsvegar lýtur út fyrir að þú sért ekki með nein tæki uppsett sem stendur. Farðu yfir á samþættingarsíðu til að byrja.", @@ -1908,6 +2053,9 @@ "glance": { "columns": "Dálkar" }, + "grid": { + "columns": "Dálkar" + }, "history-graph": { "name": "Sögulínurit" }, @@ -1924,6 +2072,7 @@ "name": "Ljós" }, "logbook": { + "description": "Skráningarsöguspjaldið sýnir lista yfir atburði eininga.", "name": "Skráningarsaga" }, "map": { @@ -1936,6 +2085,9 @@ "content": "Innihald", "name": "Markdown" }, + "picture-glance": { + "state_entity": "Stöðueining" + }, "picture": { "name": "Mynd" }, @@ -2148,6 +2300,7 @@ "working": "Vinsamlegast bíðið" }, "initializing": "Frumstilli", + "logging_in_to_with": "Skrái þig inn á **{locationName}** með **{authProviderName}**.", "logging_in_with": "Skrái inn með ** {authProviderName} **.", "pick_auth_provider": "Eða skráðu þig inn með" }, @@ -2231,11 +2384,12 @@ "confirm_new_password": "Staðfesta nýtt lykilorð", "current_password": "Núverandi lykilorð", "error_new_is_old": "Nýja lykilorðið verður að vera annað en núverandi lykilorð", + "error_new_mismatch": "Innslegin lykilorð eru ekki eins", "error_required": "Skilyrt", "header": "Breyta lykilorði", "new_password": "Nýtt lykilorð", "submit": "Senda", - "success": "Lykilorðið breytt" + "success": "Lykilorði breytt" }, "current_user": "Þú ert skráð(ur) inn sem {fullName}.", "customize_sidebar": { diff --git a/translations/frontend/nb.json b/translations/frontend/nb.json index 324ca60ac6..65d2114282 100644 --- a/translations/frontend/nb.json +++ b/translations/frontend/nb.json @@ -401,6 +401,7 @@ "direction": "Retning", "forward": "Framover", "oscillate": "Vandring", + "preset_mode": "Forhåndsinnstilt modus", "reverse": "Omvendt", "speed": "Hastighet" }, @@ -1029,7 +1030,7 @@ "error_detected": "Konfigurasjonsfeil oppdaget", "key_missing": "Nødvendig nøkkel \"{key}\" mangler.", "key_not_expected": "Nøkkelen \"{key}\" forventes ikke eller støttes ikke av det visuelle redigeringsprogrammet.", - "key_wrong_type": "Den angitte verdien for \"{key}\" støttes ikke av redigeringsprogrammet for visuell redigering. Vi støtter ({type_correct}) men mottok ({type_wrong}).", + "key_wrong_type": "Den angitte verdien for \"{key}\" støttes ikke av det visuelle redigeringsprogrammet. Vi støtter ({type_correct}), men mottatt ({type_wrong}).", "no_type_provided": "Ingen type oppgitt." } }, @@ -1143,6 +1144,7 @@ "extra_fields": { "code": "Kode", "message": "Melding", + "position": "Posisjon", "title": "Tittel" }, "label": "Enhet" diff --git a/translations/frontend/pt.json b/translations/frontend/pt.json index d4c3397aa9..a6b728ec1b 100644 --- a/translations/frontend/pt.json +++ b/translations/frontend/pt.json @@ -401,6 +401,7 @@ "direction": "Direção", "forward": "Seguinte", "oscillate": "Oscilar", + "preset_mode": "Modo Pré-definido", "reverse": "Reverter", "speed": "Velocidade" }, @@ -1137,6 +1138,7 @@ "extra_fields": { "code": "Código", "message": "Mensagem", + "position": "Posição", "title": "Título" }, "label": "Dispositivo" diff --git a/translations/frontend/ru.json b/translations/frontend/ru.json index a469265408..29e88d8857 100644 --- a/translations/frontend/ru.json +++ b/translations/frontend/ru.json @@ -401,6 +401,7 @@ "direction": "Направление", "forward": "Вперед", "oscillate": "Колебания", + "preset_mode": "Предустановленный режим", "reverse": "Задний ход", "speed": "Скорость" }, @@ -592,6 +593,7 @@ } }, "history_charts": { + "history_disabled": "Интеграция \"History\" отключена", "loading_history": "Загрузка истории...", "no_history_found": "История не найдена." }, @@ -750,8 +752,13 @@ }, "entity_registry": { "control": "Управление", + "customize_link": "кастомизация", "dismiss": "Отклонить", "editor": { + "advanced": "Дополнительные настройки", + "area": "Задать помещение для этого объекта", + "area_note": "По умолчанию объекты устройства находятся в том же помещении, что и устройство. Если Вы измените помещение для этого объекта, он больше не будет наследовать настройки помещения устройства.", + "change_device_area": "Изменить помещение для устройства", "confirm_delete": "Вы уверены, что хотите удалить эту запись?", "delete": "Удалить", "device_disabled": "Родительское устройство этого объекта скрыто.", @@ -761,6 +768,7 @@ "enabled_label": "Отображать объект", "enabled_restart_confirm": "Перезапустите Home Assistant, чтобы завершить изменение объектов", "entity_id": "ID объекта", + "follow_device_area": "Получить настройки помещения от устройства", "icon": "Значок", "icon_error": "Параметр должен быть в формате 'prefix:iconname' (например: 'mdi:home')", "name": "Название", @@ -770,6 +778,7 @@ "update": "Обновить" }, "faq": "документацией", + "info_customize": "Вы можете перезаписать некоторые атрибуты в разделе {customize_link}.", "no_unique_id": "У этого объекта (\"{entity_id}\") нет уникального идентификатора, поэтому его настройками нельзя управлять из пользовательского интерфейса. Ознакомьтесь с {faq_link} для получения более подробной информации.", "related": "Зависимости", "settings": "Настройки" @@ -1013,6 +1022,18 @@ "second": "{count} {count, plural,\n one {сек.}\n other {сек.}\n}", "week": "{count} {count, plural,\none {нед.}\nother {нед.}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "Вы все ещё можете редактировать свою конфигурацию в YAML.", + "editor_not_available": "Для типа \"{type}\" нет визуального редактора.", + "editor_not_supported": "Визуальный редактор не поддерживается для этой конфигурации", + "error_detected": "Обнаружены ошибки конфигурации", + "key_missing": "Требуемый ключ \"{key}\" отсутствует.", + "key_not_expected": "Ключ \"{key}\" не ожидается или не поддерживается визуальным редактором.", + "key_wrong_type": "Предоставленное значение для \"{key}\" не поддерживается визуальным редактором. Поддерживается: ({type_correct}), получено: ({type_wrong}).", + "no_type_provided": "Тип не указан." + } + }, "login-form": { "log_in": "Вход", "password": "Пароль", @@ -1123,6 +1144,7 @@ "extra_fields": { "code": "Код", "message": "Сообщение", + "position": "Положение", "title": "Заголовок" }, "label": "Устройство" @@ -1471,7 +1493,7 @@ "info_state_reporting": "Если Вы включите этот параметр, Home Assistant будет отправлять все изменения состояний объектов, доступных Amazon. Это позволит Вам всегда видеть актуальные состояния в приложениях Alexa и использовать изменения состояний для автоматизации повседневных задач.", "manage_entities": "Управление объектами", "state_reporting_error": "Не удалось {enable_disable} отправку изменения состояний.", - "sync_entities": "Синхронизировать объекты", + "sync_entities": "Синхронизировать объекты с Amazon", "sync_entities_error": "Не удалось синхронизировать объекты:", "title": "Alexa" }, @@ -1514,10 +1536,18 @@ "thank_you_note": "Спасибо за то, что стали частью Home Assistant Cloud. Именно благодаря таким людям, как Вы, мы можем сделать все возможное для того, чтобы домашняя автоматизация была максимально удобной для всех. Спасибо!", "tts": { "default_language": "Язык для использования по умолчанию", + "dialog": { + "example_message": "Привет, {name}! Вы можете воспроизводить любой текст на любом поддерживаемом медиаплеере!", + "header": "Попробуйте воспроизвести текст", + "play": "Воспроизвести", + "target": "Цель", + "target_browser": "Браузер" + }, "female": "Женский", "info": "Добавьте индивидуальности Вашему дому, воспользовавшись нашей услугой по преобразованию текста в речь. Используйте её в автоматизациях и сценариях с помощью службы {service}.", "male": "Мужской", - "title": "Воспроизвести текст" + "title": "Воспроизвести текст", + "try": "Попробовать" }, "webhooks": { "disable_hook_error_msg": "Не удалось отключить Webhook", @@ -1550,7 +1580,7 @@ "description_login": "{email}", "description_not_login": "Вход не выполнен", "dialog_certificate": { - "certificate_expiration_date": "Сертификат действителен до", + "certificate_expiration_date": "Срок действия сертификата:", "certificate_information": "Информация о сертификате", "close": "Закрыть", "fingerprint": "Отпечаток сертификата:", @@ -1597,7 +1627,7 @@ "dismiss": "Отклонить", "email": "Адрес электронной почты", "email_error_msg": "Неверный адрес электронной почты.", - "forgot_password": "забыли пароль?", + "forgot_password": "Забыли пароль?", "introduction": "Home Assistant Cloud обеспечивает безопасный доступ к Вашему серверу, даже если Вы находитесь вдали от дома. Также это даёт возможность простого подключения к функциям облачных сервисов Amazon Alexa и Google Assistant.", "introduction2": "Услуга предоставляется нашим партнером ", "introduction2a": ", компанией от основателей Home Assistant и Hass.io.", @@ -2664,6 +2694,8 @@ "dump_dead_nodes_text": "Некоторые из Ваших узлов не ответили и считаются мертвыми. Они не будут полностью экспортированы.", "dump_dead_nodes_title": "Некоторые из Ваших узлов мертвы", "dump_debug": "Загрузите дамп Вашей сети, чтобы помочь диагностировать проблемы", + "dump_not_ready_confirm": "Скачать", + "dump_not_ready_text": "Если продолжить экспорт, пока не все узлы готовы, Вы можете упустить нужные данные. Дайте вашей сети некоторое время, чтобы опросить все узлы. Хотите продолжить экспорт дампа?", "dump_not_ready_title": "Ещё не все узлы готовы", "header": "Управление сетью Z-Wave", "home_id": "ID дома", @@ -2715,6 +2747,12 @@ }, "description": "Управление сетью Z-Wave", "learn_more": "Узнайте больше о Z-Wave", + "migration": { + "ozw": { + "header": "Переход на OpenZWave", + "introduction": "Этот мастер поможет Вам перейти от устаревшей интеграции Z-Wave к интеграции с OpenZWave, которая в настоящее время находится в стадии бета-тестирования." + } + }, "network_management": { "header": "Управление сетью Z-Wave", "introduction": "Управляйте сетью Z-Wave с помощью представленных команд. Информацию о результате выполненных команд Вы можете получить в журнале OZW." @@ -2898,7 +2936,7 @@ "cards": { "action_confirmation": "Вы действительно хотите выполнить действие \"{action}\"?", "actions": { - "action_confirmation": "Вы действительно хотите выполнить действие \"{action}\"?", + "action_confirmation": "Вы уверены, что хотите выполнить действие \"{action}\"?", "no_entity_more_info": "Не указан объект для диалогового окна с дополнительной информацией", "no_entity_toggle": "Не указан объект для переключения состояния", "no_navigation_path": "Не указан путь навигации", @@ -2917,7 +2955,7 @@ "picture-elements": { "call_service": "Вызвать службу {name}", "hold": "Удержание:", - "more_info": "Показать больше информации: {name}", + "more_info": "Показать окно с дополнительной информацией: {name}", "navigate_to": "Перейти к {location}", "tap": "Нажатие:", "toggle": "Переключить {name}", @@ -2971,7 +3009,7 @@ "name": "Панель сигнализации" }, "button": { - "default_action_help": "Действие по умолчанию зависит от возможностей объекта. Это может быть переключение состояния, либо отображение дополнительной информации.", + "default_action_help": "Действие по умолчанию зависит от возможностей объекта. Это может быть переключение состояния, либо отображение диалогового окна с дополнительной информацией.", "description": "Позволяет добавлять кнопки для выполнения каких-либо задач.", "name": "Кнопка" }, @@ -3144,7 +3182,7 @@ "name": "Picture Entity" }, "picture-glance": { - "description": "Показывает изображение и состояния объектов в виде значков. Объекты в правой стороне позволяют выполнять действия, остальные объекты при нажатии отображают окно с дополнительной информацией.", + "description": "Показывает изображение и состояния объектов в виде значков. Объекты в правой стороне позволяют выполнять действия, остальные объекты при нажатии отображают диалоговое окно с дополнительной информацией.", "name": "Picture Glance", "state_entity": "Объект, определяющий состояние изображения" }, @@ -3259,6 +3297,8 @@ } }, "menu": { + "manage_dashboards": "Управление панелями", + "manage_resources": "Управление ресурсами", "open": "Открыть меню пользовательского интерфейса Lovelace", "raw_editor": "Текстовый редактор" }, diff --git a/translations/frontend/zh-Hant.json b/translations/frontend/zh-Hant.json index 29d656add0..86d4874516 100644 --- a/translations/frontend/zh-Hant.json +++ b/translations/frontend/zh-Hant.json @@ -401,6 +401,7 @@ "direction": "方向", "forward": "正向", "oscillate": "擺動", + "preset_mode": "預置模式", "reverse": "反向", "speed": "風速" }, @@ -1143,6 +1144,7 @@ "extra_fields": { "code": "碼", "message": "訊息", + "position": "位置", "title": "標題" }, "label": "裝置" From 5a8009e46e5a0d512b5b9f36f0cb4a8d7dd634da Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Sat, 30 Jan 2021 21:30:47 +0100 Subject: [PATCH 25/54] Don't use badges in generated Lovelace + group entities by area (#8291) --- .../common/generate-lovelace-config.ts | 34 ++++--------------- 1 file changed, 7 insertions(+), 27 deletions(-) diff --git a/src/panels/lovelace/common/generate-lovelace-config.ts b/src/panels/lovelace/common/generate-lovelace-config.ts index bd11c3946e..cf2c1797cb 100644 --- a/src/panels/lovelace/common/generate-lovelace-config.ts +++ b/src/panels/lovelace/common/generate-lovelace-config.ts @@ -43,18 +43,9 @@ import { PictureEntityCardConfig, ThermostatCardConfig, } from "../cards/types"; -import { processEditorEntities } from "../editor/process-editor-entities"; import { LovelaceRowConfig } from "../entity-rows/types"; const DEFAULT_VIEW_ENTITY_ID = "group.default_view"; -const DOMAINS_BADGES = [ - "binary_sensor", - "mailbox", - "person", - "sensor", - "sun", - "timer", -]; const HIDE_DOMAIN = new Set([ "automation", "configurator", @@ -91,10 +82,12 @@ const splitByAreas = ( ); for (const entity of entityEntries) { if ( - areaDevices.has( + ((areaDevices.has( // @ts-ignore entity.device_id ) && + !entity.area_id) || + entity.area_id === area.area_id) && entity.entity_id in allEntities ) { areaEntities.push(allEntities[entity.entity_id]); @@ -246,30 +239,18 @@ const generateViewConfig = ( (gr1, gr2) => groupOrders[gr1.entity_id] - groupOrders[gr2.entity_id] ); - const badgeEntities: { [domain: string]: string[] } = {}; const ungroupedEntitites: { [domain: string]: string[] } = {}; - // Organize ungrouped entities in badges/ungrouped things + // Organize ungrouped entities in ungrouped things Object.keys(splitted.ungrouped).forEach((entityId) => { const state = splitted.ungrouped[entityId]; const domain = computeStateDomain(state); - const coll = DOMAINS_BADGES.includes(domain) - ? badgeEntities - : ungroupedEntitites; - - if (!(domain in coll)) { - coll[domain] = []; + if (!(domain in ungroupedEntitites)) { + ungroupedEntitites[domain] = []; } - coll[domain].push(state.entity_id); - }); - - let badges: string[] = []; - DOMAINS_BADGES.forEach((domain) => { - if (domain in badgeEntities) { - badges = badges.concat(badgeEntities[domain]); - } + ungroupedEntitites[domain].push(state.entity_id); }); let cards: LovelaceCardConfig[] = []; @@ -315,7 +296,6 @@ const generateViewConfig = ( const view: LovelaceViewConfig = { path, title, - badges: processEditorEntities(badges), cards, }; From 6b938b2597112e1a965776b3b3d9993372a9539b Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Sat, 30 Jan 2021 21:32:25 +0100 Subject: [PATCH 26/54] Add missing device_classes to sensor (#8288) --- src/util/hass-attributes-util.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/util/hass-attributes-util.ts b/src/util/hass-attributes-util.ts index f26384786a..1b9c521e34 100644 --- a/src/util/hass-attributes-util.ts +++ b/src/util/hass-attributes-util.ts @@ -40,13 +40,17 @@ const hassAttributeUtil = { humidifier: ["dehumidifier", "humidifier"], sensor: [ "battery", + "current", + "energy", "humidity", "illuminance", - "temperature", - "pressure", "power", + "power_factor", + "pressure", "signal_strength", + "temperature", "timestamp", + "voltage", ], switch: ["switch", "outlet"], }, From bd9f4fe41cbc74f5dc691dbb5b245dba46c7d81d Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Sat, 30 Jan 2021 22:42:01 +0100 Subject: [PATCH 27/54] Fix tts try on ios (#8292) --- .../config/cloud/account/dialog-cloud-tts-try.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/panels/config/cloud/account/dialog-cloud-tts-try.ts b/src/panels/config/cloud/account/dialog-cloud-tts-try.ts index 076c9aef20..e4d340d46d 100644 --- a/src/panels/config/cloud/account/dialog-cloud-tts-try.ts +++ b/src/panels/config/cloud/account/dialog-cloud-tts-try.ts @@ -141,7 +141,10 @@ export class DialogTryTts extends LitElement { this._target = target; if (target === "browser") { - this._playBrowser(message); + // We create the audio element here + do a play, because iOS requires it to be done by user action + const audio = new Audio(); + audio.play(); + this._playBrowser(message, audio); } else { this.hass.callService("tts", "cloud_say", { entity_id: target, @@ -150,7 +153,7 @@ export class DialogTryTts extends LitElement { } } - private async _playBrowser(message: string) { + private async _playBrowser(message: string, audio: HTMLAudioElement) { this._loadingExample = true; const language = this._params!.defaultVoice[0]; @@ -173,13 +176,17 @@ export class DialogTryTts extends LitElement { }); return; } - const audio = new Audio(url); + audio.src = url; audio.addEventListener("canplaythrough", () => { audio.play(); }); audio.addEventListener("playing", () => { this._loadingExample = false; }); + audio.addEventListener("error", () => { + showAlertDialog(this, { title: "Error playing audio." }); + this._loadingExample = false; + }); } static get styles(): CSSResult[] { From 1523558f4ceaf7c06a666c3a5133eba3b7111927 Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Sat, 30 Jan 2021 22:49:48 +0100 Subject: [PATCH 28/54] More precise name handling for auto-generated dashboards (#8289) Co-authored-by: Bram Kragten --- .../lovelace/common/generate-lovelace-config.ts | 14 +++++++++++++- .../lovelace/components/hui-generic-entity-row.ts | 3 --- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/panels/lovelace/common/generate-lovelace-config.ts b/src/panels/lovelace/common/generate-lovelace-config.ts index cf2c1797cb..26e6337213 100644 --- a/src/panels/lovelace/common/generate-lovelace-config.ts +++ b/src/panels/lovelace/common/generate-lovelace-config.ts @@ -184,7 +184,7 @@ export const computeCards = ( (name = computeStateName(stateObj)).startsWith(titlePrefix) ? { entity: entityId, - name: name.substr(titlePrefix.length), + name: adjustName(name.substr(titlePrefix.length)), } : entityId; @@ -203,6 +203,18 @@ export const computeCards = ( return cards; }; +const hasUpperCase = (str: string): boolean => { + return str.toLowerCase() !== str; +}; + +const adjustName = (name: string): string => { + // If first word already has an upper case letter (e.g. from brand name) + // leave as-is, otherwise capitalize the first word. + return hasUpperCase(name.substr(0, name.indexOf(" "))) + ? name + : name[0].toUpperCase() + name.slice(1); +}; + const computeDefaultViewStates = ( entities: HassEntities, entityEntries: EntityRegistryEntry[] diff --git a/src/panels/lovelace/components/hui-generic-entity-row.ts b/src/panels/lovelace/components/hui-generic-entity-row.ts index ddc4b8040d..8bf4b1abbd 100644 --- a/src/panels/lovelace/components/hui-generic-entity-row.ts +++ b/src/panels/lovelace/components/hui-generic-entity-row.ts @@ -173,9 +173,6 @@ class HuiGenericEntityRow extends LitElement { overflow: hidden; text-overflow: ellipsis; } - .info::first-letter { - text-transform: uppercase; - } .flex ::slotted(*) { margin-left: 8px; min-width: 0; From fbcf35414c0e36a81bc849cc64ae2ee1ae7132ec Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sun, 31 Jan 2021 01:36:47 +0000 Subject: [PATCH 29/54] Translation update --- translations/frontend/de.json | 47 ++++++++++++++++++++++---- translations/frontend/it.json | 21 ++++++++++++ translations/frontend/pl.json | 62 ++++++++++++++++++++++++++++++----- translations/frontend/tr.json | 51 +++++++++++++++++++++++++--- 4 files changed, 162 insertions(+), 19 deletions(-) diff --git a/translations/frontend/de.json b/translations/frontend/de.json index a707a3ea09..bb0c673538 100644 --- a/translations/frontend/de.json +++ b/translations/frontend/de.json @@ -177,7 +177,7 @@ "on": "Unsicher" }, "smoke": { - "off": "OK", + "off": "Normal", "on": "Rauch erkannt" }, "sound": { @@ -592,6 +592,7 @@ } }, "history_charts": { + "history_disabled": "Integration \"Historie\" deaktiviert", "loading_history": "Lade Zustandsverlauf...", "no_history_found": "Kein Zustandsverlauf gefunden." }, @@ -750,9 +751,13 @@ }, "entity_registry": { "control": "Steuerung", + "customize_link": "Entitätsanpassungen", "dismiss": "Ausblenden", "editor": { "advanced": "Erweiterte Einstellungen", + "area": "Nur Entitätsbereich festlegen", + "area_note": "Standardmäßig befinden sich die Entitäten eines Geräts in demselben Bereich wie das Gerät. Wenn du den Bereich dieser Entität änderst, folgt sie nicht mehr dem Bereich des Geräts.", + "change_device_area": "Gerätebereich ändern", "confirm_delete": "Möchtest du diesen Eintrag wirklich löschen?", "delete": "Löschen", "device_disabled": "Das Gerät dieser Entität ist deaktiviert.", @@ -762,6 +767,7 @@ "enabled_label": "Entität aktivieren", "enabled_restart_confirm": "Starte Home Assistant neu, um die Aktivierung der Entitäten abzuschließen", "entity_id": "Entitäts-ID", + "follow_device_area": "Gerätebereich übernehmen", "icon": "Symbol", "icon_error": "Symbole sollten das Format 'Präfix:iconname' haben, z. B. 'mdi:home'", "name": "Namen", @@ -771,6 +777,7 @@ "update": "Aktualisieren" }, "faq": "Dokumentation", + "info_customize": "Du kannst einige Attribute im Abschnitt {customize_link} überschreiben.", "no_unique_id": "Diese Entität (\"{entity_id}\") hat keine eindeutige ID, daher können die Einstellungen nicht über die UI verwaltet werden. Schaue in der {faq_link} nach für mehr Details.", "related": "Verwandte", "settings": "Einstellungen" @@ -1014,6 +1021,18 @@ "second": "{count} {count, plural,\none {Sekunde}\nother {Sekunden}\n}", "week": "{count} {count, plural,\none {Woche}\nother {Wochen}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "Du kannst deine Konfiguration weiterhin in YAML bearbeiten.", + "editor_not_available": "Kein visueller Editor für Typ \"{type}\" verfügbar.", + "editor_not_supported": "Visueller Editor wird für diese Konfiguration nicht unterstützt.", + "error_detected": "Konfigurationsfehler erkannt", + "key_missing": "Erforderlicher Schlüssel \"{key}\" fehlt.", + "key_not_expected": "Der Schlüssel \"{key}\" wird vom visuellen Editor nicht erwartet oder nicht unterstützt.", + "key_wrong_type": "Der angegebene Wert für \"{key}\" wird vom visuellen Editor nicht unterstützt. Wir unterstützen ({type_correct}), haben aber ({type_wrong}) erhalten.", + "no_type_provided": "Kein Typ angegeben." + } + }, "login-form": { "log_in": "Anmelden", "password": "Passwort", @@ -1124,6 +1143,7 @@ "extra_fields": { "code": "Code", "message": "Nachricht", + "position": "Position", "title": "Titel" }, "label": "Gerät" @@ -1300,7 +1320,8 @@ "extra_fields": { "above": "Über", "below": "Unter", - "for": "Dauer" + "for": "Dauer", + "zone": "Zone" }, "label": "Gerät", "trigger": "Auslöser" @@ -1515,13 +1536,17 @@ "tts": { "default_language": "Zu verwendende Standardsprache", "dialog": { - "play": "Play", + "example_message": "Hallo {name} , du kannst beliebigen Text auf jedem unterstützten Media Player abspielen!", + "header": "Text-zu-Sprache ausprobieren", + "play": "Abspielen", "target": "Ziel", "target_browser": "Browser" }, "female": "Weiblich", + "info": "Bringe Flair in dein Haus, indem du es mit unseren Text-zu-Sprache-Diensten zu dir sprechen lässt. Du kannst dies in Automatisierungen und Skripten verwenden, indem du den Dienst {service} nutzst.", "male": "Männlich", - "try": "Versuchen" + "title": "Text-zu-Sprache", + "try": "Probieren" }, "webhooks": { "disable_hook_error_msg": "Fehler beim Deaktivieren des Webhooks:", @@ -2676,7 +2701,8 @@ "unknown": "Unbekannt" }, "remove_node": { - "exclusion_failed": "Die Node konnte nicht entfernt werden. Bitte schaue für mehr Informationen in die Logs." + "exclusion_failed": "Die Knoten konnte nicht entfernt werden. Bitte schaue für mehr Informationen in die Logs.", + "exclusion_finished": "Der Knoten {id} wurde aus deinem Z-Wave-Netzwerk entfernt." } }, "zwave": { @@ -2691,6 +2717,11 @@ }, "description": "Z-Wave-Netzwerk verwalten", "learn_more": "Erfahre mehr über Z-Wave", + "migration": { + "ozw": { + "header": "Migration zu OpenZWave" + } + }, "network_management": { "header": "Z-Wave Netzwerkverwaltung", "introduction": "Führt Befehle aus, die das Z-Wave Netzwerk betreffen. Es wird keine Rückmeldung darüber geben, ob die meisten Befehle erfolgreich waren, aber das OZW-Protokoll kann Hinweise darauf enthalten." @@ -2875,8 +2906,11 @@ "action_confirmation": "Bist du sicher, dass du die Aktion \"{action}\" ausführen möchtest?", "actions": { "action_confirmation": "Bist du sicher, dass du die Aktion \"{action}\" ausführen möchtest?", + "no_entity_more_info": "Keine Entität für Mehr-Info Dialog angegeben", + "no_entity_toggle": "Keine Entität zum Umschalten angegeben", "no_navigation_path": "Kein Navigationspfad angegeben", - "no_service": "Kein Dienst zur Ausführung angegeben" + "no_service": "Kein Dienst zur Ausführung angegeben", + "no_url": "Keine URL zum Öffnen angegeben" }, "confirm_delete": "Möchten Sie diese Karte wirklich löschen?", "empty_state": { @@ -3439,6 +3473,7 @@ "working": "Bitte warten" }, "initializing": "Initialisieren", + "logging_in_to_with": "Anmelden bei **{locationName}** mit **{authProviderName}**.", "logging_in_with": "Anmeldung mit **{authProviderName}**.", "pick_auth_provider": "Oder melde dich an mit" }, diff --git a/translations/frontend/it.json b/translations/frontend/it.json index 3d5c9db531..055dc55870 100644 --- a/translations/frontend/it.json +++ b/translations/frontend/it.json @@ -401,6 +401,7 @@ "direction": "Direzione", "forward": "Avanti", "oscillate": "Oscillazione", + "preset_mode": "Modalità Predefinita", "reverse": "Indietro", "speed": "Velocità" }, @@ -557,6 +558,10 @@ "remove_user": "Rimuovi utente", "select_blueprint": "Seleziona un progetto" }, + "calendar": { + "my_calendars": "Calendari personali", + "today": "Oggi" + }, "data-table": { "no-data": "Nessun dato", "search": "Ricerca" @@ -1119,6 +1124,7 @@ "extra_fields": { "code": "Codice", "message": "Messaggio", + "position": "Posizione", "title": "Titolo" }, "label": "Dispositivo" @@ -1510,6 +1516,11 @@ "thank_you_note": "Grazie per far parte di Home Assistant Cloud. È grazie a persone come te che siamo in grado di creare un'ottima esperienza domotica per tutti. Grazie!", "tts": { "default_language": "Lingua predefinita da utilizzare", + "dialog": { + "play": "Riproduci", + "target": "Bersaglio", + "target_browser": "Browser" + }, "female": "Donna", "info": "Porta un po' di personalità a casa tua facendola parlare con te utilizzando i nostri servizi di sintesi vocale. Puoi usarlo nelle automazioni e negli script usando il servizio {service}.", "male": "Uomo", @@ -2657,10 +2668,13 @@ }, "dashboard": { "driver_version": "Versione del driver", + "dump_dead_nodes_title": "Alcuni dei tuoi nodi sono morti", + "dump_not_ready_title": "Non tutti i nodi sono ancora pronti", "header": "Gestisci la tua rete Z-Wave", "home_id": "ID Home", "introduction": "Gestisci la tua rete Z-Wave e i nodi Z-Wave", "node_count": "Numero Nodi", + "nodes_ready": "Nodi pronti", "server_version": "Versione del server" }, "device_info": { @@ -2706,6 +2720,11 @@ }, "description": "Gestisci la tua rete Z-Wave", "learn_more": "Ulteriori informazioni su Z-Wave", + "migration": { + "ozw": { + "header": "Migrare a OpenZWave" + } + }, "network_management": { "header": "Gestione della rete Z-Wave", "introduction": "Eseguire comandi che interessano la rete Z-Wave. Non otterrete un feedback sul successo della maggior parte dei comandi, ma potete controllare il Log OZW per cercare di scoprirlo." @@ -3250,6 +3269,8 @@ } }, "menu": { + "manage_dashboards": "Gestisci le tue plance di Lovelace", + "manage_resources": "Gestisci le risorse", "open": "Apri il menu dell'interfaccia utente di Lovelace", "raw_editor": "Editor di Configurazione testuale" }, diff --git a/translations/frontend/pl.json b/translations/frontend/pl.json index 5883b41e75..b0692739cd 100644 --- a/translations/frontend/pl.json +++ b/translations/frontend/pl.json @@ -292,8 +292,8 @@ "on": "wł." }, "sun": { - "above_horizon": "powyżej horyzontu", - "below_horizon": "poniżej horyzontu" + "above_horizon": "Nad horyzontem", + "below_horizon": "Poniżej horyzontu" }, "switch": { "off": "wył.", @@ -321,12 +321,12 @@ "fog": "mgła", "hail": "grad", "lightning": "błyskawice", - "lightning-rainy": "burza", + "lightning-rainy": "Burza", "partlycloudy": "częściowe zachmurzenie", "pouring": "ulewa", "rainy": "deszczowo", - "snowy": "opady śniegu", - "snowy-rainy": "śnieg z deszczem", + "snowy": "Opady śniegu", + "snowy-rainy": "Śnieg z deszczem", "sunny": "słonecznie", "windy": "wietrznie", "windy-variant": "wietrznie" @@ -379,7 +379,7 @@ "low": "niska", "on_off": "wł. / wył.", "operation": "Tryb pracy", - "preset_mode": "Ustawienia", + "preset_mode": "Ustawienie predefiniowane", "swing_mode": "Tryb ruchu łopatek", "target_humidity": "Wilgotność docelowa", "target_temperature": "Temperatura docelowa", @@ -401,6 +401,7 @@ "direction": "Kierunek", "forward": "Naprzód", "oscillate": "Oscylacja", + "preset_mode": "Ustawienie predefiniowane", "reverse": "Wstecz", "speed": "Prędkość" }, @@ -751,8 +752,13 @@ }, "entity_registry": { "control": "Kontrola", + "customize_link": "dostosowywania encji", "dismiss": "Odrzuć", "editor": { + "advanced": "Zaawansowane ustawienia", + "area": "Ustaw obszar encji", + "area_note": "Domyślnie encje urządzenia znajdują się w tym samym obszarze co urządzenie. Jeśli zmienisz obszar tej encji, nie będzie ona już występować w obszarze urządzenia.", + "change_device_area": "Zmień obszar urządzenia", "confirm_delete": "Czy na pewno chcesz usunąć ten wpis?", "delete": "Usuń", "device_disabled": "Urządzenie tej encji jest wyłączone", @@ -762,6 +768,7 @@ "enabled_label": "Włącz encję", "enabled_restart_confirm": "Uruchom ponownie Home Assistanta, aby zakończyć włączanie encji", "entity_id": "Identyfikator encji", + "follow_device_area": "Użyj obszaru urządzenia", "icon": "Ikona", "icon_error": "Ikony powinny mieć format 'prefix:iconname', np. 'mdi:home'", "name": "Nazwa", @@ -771,6 +778,7 @@ "update": "Aktualizuj" }, "faq": "dokumentacja", + "info_customize": "Możesz nadpisać niektóre atrybuty w sekcji {customize_link}.", "no_unique_id": "Encja \"{entity_id}\" 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}.", "related": "Powiązane", "settings": "Ustawienia" @@ -1014,6 +1022,18 @@ "second": "{count} {count, plural,\n one {sekunda}\n few {sekundy}\n many {sekund}\n other {sekund}\n}", "week": "{count} {count, plural,\n one {tydzień}\n few {tygodnie}\n many {tygodni}\n other {tygodni}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "Nadal możesz edytować konfigurację w YAML.", + "editor_not_available": "Brak edytora wizualnego dla typu \"{type}\".", + "editor_not_supported": "Edytor wizualny nie jest obsługiwany dla tej konfiguracji", + "error_detected": "Wykryto błędy konfiguracji", + "key_missing": "Brak wymaganego klucza \"{key}\".", + "key_not_expected": "Klucz \"{key}\" nie jest oczekiwany lub nie jest obsługiwany przez edytor wizualny.", + "key_wrong_type": "Wprowadzona wartość dla \"{key}\" nie jest obsługiwana przez edytor wizualny. Obsługujemy ({type_correct}), a otrzymaliśmy ({type_wrong}).", + "no_type_provided": "Nie wprowadzono typu." + } + }, "login-form": { "log_in": "Zaloguj", "password": "Hasło", @@ -1124,6 +1144,7 @@ "extra_fields": { "code": "Kod", "message": "Wiadomość", + "position": "Pozycja", "title": "Tytuł" }, "label": "Urządzenie" @@ -2646,7 +2667,18 @@ }, "zwave_js": { "add_node": { - "title": "Dodaj węzeł Z-Wave" + "cancel_inclusion": "Anuluj dodawanie węzła", + "controller_in_inclusion_mode": "Kontroler Z-Wave jest teraz w trybie dodawania węzła.", + "follow_device_instructions": "Postępuj zgodnie ze wskazówkami dołączonymi do urządzenia, aby wywołać dodawanie do sieci.", + "inclusion_failed": "Nie można dodać węzła. Sprawdź logi, aby uzyskać więcej informacji.", + "inclusion_finished": "Węzeł został dodany. Trwa kończenie konfiguracji węzła w tle, dodawanie encji urządzenia może zająć kilka minut.", + "introduction": "Ten kreator poprowadzi Cię przez proces dodawania węzła do sieci Z-Wave.", + "secure_inclusion_warning": "Bezpieczne węzły wymagają dodatkowej przepustowości; zbyt wiele bezpiecznych węzłów może spowolnić twoją sieć Z-Wave. Zalecamy używanie bezpiecznego włączenia tylko w przypadku urządzeń, które tego wymagają, takich jak zamki lub urządzenia sterujące bramami garażowymi.", + "start_inclusion": "Rozpocznij dodawanie węzła", + "start_secure_inclusion": "Rozpocznij dodawanie bezpiecznego węzła", + "title": "Dodaj węzeł Z-Wave", + "use_secure_inclusion": "Użyj bezpiecznego dodawania", + "view_device": "Wyświetl urządzenie" }, "button": "Konfiguruj", "common": { @@ -2691,6 +2723,16 @@ "awake": "wybudzony", "dead": "martwy", "unknown": "nieznany" + }, + "remove_node": { + "cancel_exclusion": "Anuluj usuwanie węzła", + "controller_in_exclusion_mode": "Kontroler Z-Wave jest teraz w trybie usuwania węzła.", + "exclusion_failed": "Nie można usunąć węzła. Sprawdź logi, aby uzyskać więcej informacji.", + "exclusion_finished": "Węzeł {id} został usunięty z sieci Z-Wave.", + "follow_device_instructions": "Postępuj zgodnie ze wskazówkami dołączonymi do urządzenia, aby wywołać usuwanie z sieci.", + "introduction": "Usuń węzeł ze swojej sieci Z-Wave i usuń powiązane urządzenie i encje z Home Assistanta.", + "start_exclusion": "Rozpocznij usuwanie węzła", + "title": "Usuń węzeł Z-Wave" } }, "zwave": { @@ -2895,6 +2937,9 @@ "action_confirmation": "Czy na pewno chcesz wykonać akcję \"{action}\"?", "actions": { "action_confirmation": "Czy na pewno chcesz wykonać akcję \"{action}\"?", + "no_entity_more_info": "Nie wybrano encji dla okna dialogowego \"więcej informacji\"", + "no_entity_toggle": "Nie wybrano encji do przełączenia", + "no_navigation_path": "Nie określono ścieżki nawigacji", "no_service": "Nie określono usługi do wykonania", "no_url": "Nie określono adresu URL do otwarcia" }, @@ -3083,7 +3128,8 @@ "grid": { "columns": "Kolumny", "description": "Karta siatka umożliwia wyświetlanie wielu kart w siatce.", - "name": "Siatka" + "name": "Siatka", + "square": "Renderuj karty jako kwadraty" }, "history-graph": { "description": "Karta wykres historii umożliwia wyświetlenie wykresu dla każdej z wymienionych encji.", diff --git a/translations/frontend/tr.json b/translations/frontend/tr.json index 74b1212317..371779e9cd 100644 --- a/translations/frontend/tr.json +++ b/translations/frontend/tr.json @@ -401,6 +401,7 @@ "direction": "Yön", "forward": "Ileri", "oscillate": "Salınım", + "preset_mode": "Ön Ayar Modu", "reverse": "Ters", "speed": "Hız" }, @@ -556,6 +557,10 @@ "remove_user": "Kullanıcıyı kaldır", "select_blueprint": "Bir Taslak Seçin" }, + "calendar": { + "my_calendars": "Takvimlerim", + "today": "Bugün" + }, "data-table": { "no-data": "Veri yok", "search": "Ara" @@ -603,9 +608,9 @@ "set": "Ayarlamak", "turned_off": "Kapatıldı", "turned_on": "Açıldı", - "was_at_home": "evdeydi", - "was_at_state": "{state}", - "was_away": "uzaktaydı", + "was_at_home": "evde tespit edildi", + "was_at_state": "{state} tespit edildi", + "was_away": "uzakta tespit edildi", "was_closed": "kapatıldı", "was_connected": "bağlandı", "was_disconnected": "bağlantısı kesildi", @@ -747,6 +752,8 @@ "control": "Kontrol", "dismiss": "Kapat", "editor": { + "advanced": "Gelişmiş Ayarlar", + "change_device_area": "Cihaz alanını değiştir", "confirm_delete": "Bu girişi silmek istediğinizden emin misiniz?", "delete": "Sil", "device_disabled": "Bu varlığın ait olduğu cihaz devre dışı.", @@ -756,6 +763,7 @@ "enabled_label": "Varlığı etkinleştir", "enabled_restart_confirm": "Varlıkları etkinleştirmeyi tamamlamak için Home Assistant'ı yeniden başlatın", "entity_id": "Varlık kimliği", + "follow_device_area": "Cihaz alanını takip edin", "icon": "Simge", "icon_error": "Simgeler 'önek: simge adı' biçiminde olmalıdır, örneğin 'mdi: home'", "name": "Ad", @@ -1008,6 +1016,17 @@ "second": "{count}{count, plural,\n one {saniye}\n other {saniyeler}\n}", "week": "{count}{count, plural,\n one { hafta }\n other { hafta }\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "Yapılandırmanızı YAML'de hala düzenleyebilirsiniz.", + "editor_not_available": "\"{type}\" türü için görsel düzenleyici yok.", + "editor_not_supported": "Görsel düzenleyici bu yapılandırma için desteklenmez", + "error_detected": "Yapılandırma hataları algılandı", + "key_missing": "Gerekli anahtar \" {key} \" eksik.", + "key_wrong_type": "\" {key} \" için sağlanan değer görsel düzenleyici tarafından desteklenmiyor. Destekliyoruz ( {type_correct} ) ancak {type_wrong} ( {type_wrong} ).", + "no_type_provided": "Tür sağlanmadı." + } + }, "login-form": { "log_in": "Oturum aç", "password": "Şifre", @@ -1463,7 +1482,7 @@ "info_state_reporting": "Durum raporlamayı etkinleştirirseniz, Home Assistant sergilenmis varlıkların tüm durum değişikliklerini Amazon'a gönderir. Bu, Alexa uygulamasında her zaman en son durumları görmenizi ve rutin oluşturmak için durum değişikliklerini kullanmanızı sağlar.", "manage_entities": "Varlıkları Yönetin", "state_reporting_error": "Durum {enable_disable} rapor edilemidi.", - "sync_entities": "Varlıkları Senkronize Et", + "sync_entities": "Varlıkları Amazon ile Senkronize Etme", "sync_entities_error": "Varlıklar senkronize edilemedi:", "title": "Alexa" }, @@ -1504,6 +1523,15 @@ }, "sign_out": "oturumu Kapat", "thank_you_note": "Home Assistant Cloud'un bir parçası olduğunuz için teşekkür ederiz. Sizin gibi insanlar sayesinde herkes için harika bir ev otomasyonu deneyimi yaşayabiliyoruz. Teşekkür ederim!", + "tts": { + "dialog": { + "example_message": "Merhaba {name} , desteklenen herhangi bir medya oynatıcıda herhangi bir metni seslendirebilirsiniz!", + "header": "Metinden Konuşmaya Deneyin", + "target": "Hedef", + "target_browser": "Tarayıcı" + }, + "try": "Deneyin" + }, "webhooks": { "disable_hook_error_msg": "Webhook devre dışı bırakılamadı:", "info": "Bir webhook tarafından tetiklenecek şekilde yapılandırılan her şeye, örneğinizi internete maruz bırakmadan herhangi bir yerden Home Assistant'a geri göndermenize izin vermek için herkese açık bir URL verilebilir.", @@ -2618,6 +2646,14 @@ "introduction": "Bölgeler, dünyadaki belirli bölgeleri belirtmenize izin verir. Bir kişi bir bölge içindeyse, durumunu bölgenin isminden alır. Bölgeler, otomasyon kurulumlarında tetikleyici veya koşul olarak da kullanılabilir.", "no_zones_created_yet": "Görünüşe göre henüz herhangi bir bölge oluşturmadınız." }, + "zwave_js": { + "add_node": { + "view_device": "Cihazı Görüntüle" + }, + "dashboard": { + "server_version": "Sunucu Sürümü" + } + }, "zwave": { "button": "Yapılandır", "caption": "Z-Wave", @@ -2811,6 +2847,9 @@ "yaml_unsupported": "YAML modunda Lovelace kullanıcı arayüzünü kullanırken bu işlevi kullanamazsınız." }, "cards": { + "actions": { + "action_confirmation": "\"{action}\" eylemini yürütmek istediğinizden emin misiniz?" + }, "confirm_delete": "Bu kartı silmek istediğinizden emin misiniz?", "empty_state": { "go_to_integrations_page": "Entegrasyonlar sayfasına gidin.", @@ -2869,7 +2908,7 @@ "name": "Alarm Paneli" }, "button": { - "default_action_help": "Varsayılan eylem varlığın yeteneklerine bağlıdır, ya değiştirilecek ya da daha fazla bilgi gösterilecektir.", + "default_action_help": "Varsayılan eylem varlığın yeteneklerine bağlıdır, ya değiştirilecek ya da daha fazla bilgi iletişim kutusu gösterilecektir.", "description": "Düğme kartı görevleri gerçekleştirmek için düğme eklemenizi sağlar.", "name": "Düğme" }, @@ -2986,6 +3025,7 @@ "name": "Glance" }, "grid": { + "columns": "Sütunlar", "description": "Izgara kartı, ızgarada birden çok kart göstermenizi sağlar.", "name": "Izgara" }, @@ -3155,6 +3195,7 @@ } }, "menu": { + "manage_resources": "Kaynakları yönetin", "open": "Lovelace UI menüsünü aç", "raw_editor": "Ham config editörü" }, From 3659cf7c87fd3becbab7bf9dfacea11593b15330 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Mon, 1 Feb 2021 01:37:09 +0000 Subject: [PATCH 30/54] Translation update --- translations/frontend/cs.json | 8 ++++- translations/frontend/it.json | 40 +++++++++++++++++---- translations/frontend/lt.json | 65 ++++++++++++++++++++++++++++++++--- translations/frontend/tr.json | 10 +++++- 4 files changed, 110 insertions(+), 13 deletions(-) diff --git a/translations/frontend/cs.json b/translations/frontend/cs.json index cbad62879d..d1afe80dc3 100644 --- a/translations/frontend/cs.json +++ b/translations/frontend/cs.json @@ -557,6 +557,9 @@ "remove_user": "Odebrat uživatele", "select_blueprint": "Vyberte šablonu" }, + "calendar": { + "my_calendars": "Moje kalendáře" + }, "data-table": { "no-data": "Žádná data", "search": "Hledat" @@ -1136,6 +1139,7 @@ "extra_fields": { "code": "Kód", "message": "Zpráva", + "position": "Pozice", "title": "Název" }, "label": "Zařízení" @@ -2863,6 +2867,7 @@ "cards": { "action_confirmation": "Opravdu chcete provést akci \"{action}\"?", "actions": { + "action_confirmation": "Opravdu chcete provést akci \"{action}\"?", "no_entity_more_info": "Pro dialog s dalšími informacemi není poskytnuta žádná entita", "no_entity_toggle": "K přepnutí není poskytnuta žádná entita", "no_navigation_path": "Není zadána žádná navigační cesta", @@ -3054,7 +3059,8 @@ "grid": { "columns": "Sloupce", "description": "Karta Mřížka umožňuje zobrazit více karet v mřížce.", - "name": "Mřížka" + "name": "Mřížka", + "square": "Vykreslit karty jako čtverce" }, "history-graph": { "description": "Karta Graf historie umožňuje zobrazit graf pro každou z uvedených entit.", diff --git a/translations/frontend/it.json b/translations/frontend/it.json index 055dc55870..e4d2acb316 100644 --- a/translations/frontend/it.json +++ b/translations/frontend/it.json @@ -593,6 +593,7 @@ } }, "history_charts": { + "history_disabled": "Integrazione della cronologia disabilitata", "loading_history": "Caricamento storico...", "no_history_found": "Nessuno storico trovato." }, @@ -751,8 +752,13 @@ }, "entity_registry": { "control": "Controllo", + "customize_link": "personalizzazioni delle entità", "dismiss": "Annullare", "editor": { + "advanced": "Impostazioni avanzate", + "area": "Imposta solo l'area dell'entità", + "area_note": "Per impostazione predefinita, le entità di un dispositivo si trovano nella stessa area del dispositivo. Se si modifica l'area di questa entità, essa non seguirà più l'area del dispositivo.", + "change_device_area": "Cambia l'area del dispositivo", "confirm_delete": "Sei sicuro di voler eliminare questa voce?", "delete": "Elimina", "device_disabled": "Il dispositivo di questa entità è disabilitato.", @@ -762,6 +768,7 @@ "enabled_label": "Abilita entità", "enabled_restart_confirm": "Riavviare Home Assistant per completare l'abilitazione delle entità", "entity_id": "ID entità", + "follow_device_area": "Segui l'area del dispositivo", "icon": "Icona", "icon_error": "Le icone dovrebbero essere nel formato 'prefisso:nome_icona', ad esempio 'mdi:home'.", "name": "Nome", @@ -771,6 +778,7 @@ "update": "Aggiorna" }, "faq": "documentazione", + "info_customize": "Puoi sovrascrivere alcuni attributi nella sezione {customize_link}.", "no_unique_id": "Questa entità (\"{entity_id}\") non ha un ID univoco, pertanto le sue impostazioni non possono essere gestite dall'Interfaccia Utente. Vedere {faq_link} per maggiori dettagli.", "related": "Relazionato", "settings": "Impostazioni" @@ -1014,6 +1022,18 @@ "second": "{count} {count, plural,\none {secondo}\nother {secondi}\n}", "week": "{count} {count, plural,\none {settimana}\nother {settimane}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "Puoi ancora modificare la tua configurazione in YAML.", + "editor_not_available": "Nessun editor visivo disponibile per il tipo \"{type}\".", + "editor_not_supported": "L'editor visivo non è supportato per questa configurazione", + "error_detected": "Rilevati errori di configurazione", + "key_missing": "Chiave obbligatoria \"{key}\" mancante.", + "key_not_expected": "La chiave \"{key}\" non è prevista o non è supportata dall'editor visivo.", + "key_wrong_type": "Il valore fornito per \"{key}\" non è supportato dall'editor visivo. Supportiamo ({type_correct}) ma ricevuto ({type_wrong}).", + "no_type_provided": "Nessun tipo fornito." + } + }, "login-form": { "log_in": "Accedi", "password": "Password", @@ -1124,7 +1144,7 @@ "extra_fields": { "code": "Codice", "message": "Messaggio", - "position": "Posizione", + "position": "Apertura", "title": "Titolo" }, "label": "Dispositivo" @@ -1517,6 +1537,8 @@ "tts": { "default_language": "Lingua predefinita da utilizzare", "dialog": { + "example_message": "Ciao {name}, puoi riprodurre qualsiasi testo su qualsiasi lettore multimediale supportato!", + "header": "Prova la sintesi vocale", "play": "Riproduci", "target": "Bersaglio", "target_browser": "Browser" @@ -1524,7 +1546,8 @@ "female": "Donna", "info": "Porta un po' di personalità a casa tua facendola parlare con te utilizzando i nostri servizi di sintesi vocale. Puoi usarlo nelle automazioni e negli script usando il servizio {service}.", "male": "Uomo", - "title": "Sintesi vocale" + "title": "Sintesi vocale", + "try": "Prova" }, "webhooks": { "disable_hook_error_msg": "Impossibile disabilitare webhook:", @@ -2142,7 +2165,7 @@ "network_status": { "details": { "driverallnodesqueried": "Tutti i nodi sono stati interrogati.", - "driverallnodesqueriedsomedead": "Tutti i nodi sono stati interrogati. Alcuni nodi sono stati trovati morti", + "driverallnodesqueriedsomedead": "Tutti i nodi sono stati interrogati. Alcuni nodi sono stati trovati disattivi", "driverawakenodesqueries": "Tutti i nodi svegli sono stati interrogati", "driverfailed": "Impossibile connettersi al controller Z-Wave", "driverready": "Inizializzazione del controller Z-Wave", @@ -2668,7 +2691,11 @@ }, "dashboard": { "driver_version": "Versione del driver", - "dump_dead_nodes_title": "Alcuni dei tuoi nodi sono morti", + "dump_dead_nodes_text": "Alcuni dei tuoi nodi non hanno risposto e si presume che siano disattivi. Questi non verranno esportati completamente.", + "dump_dead_nodes_title": "Alcuni dei tuoi nodi sono disattivi", + "dump_debug": "Scarica una struttura della tua rete per diagnosticare i problemi", + "dump_not_ready_confirm": "Scarica", + "dump_not_ready_text": "Se crei un'esportazione mentre i nodi non sono tutti pronti, potresti perdere dati necessari. Dai alla tua rete un po' di tempo per interrogare tutti i nodi. Vuoi continuare con questa struttura di rete?", "dump_not_ready_title": "Non tutti i nodi sono ancora pronti", "header": "Gestisci la tua rete Z-Wave", "home_id": "ID Home", @@ -2722,7 +2749,8 @@ "learn_more": "Ulteriori informazioni su Z-Wave", "migration": { "ozw": { - "header": "Migrare a OpenZWave" + "header": "Migrare a OpenZWave", + "introduction": "Questa procedura guidata consente di eseguire la migrazione dall'integrazione Z-Wave legacy all'integrazione OpenZWave attualmente in versione beta." } }, "network_management": { @@ -3269,7 +3297,7 @@ } }, "menu": { - "manage_dashboards": "Gestisci le tue plance di Lovelace", + "manage_dashboards": "Gestisci le plance", "manage_resources": "Gestisci le risorse", "open": "Apri il menu dell'interfaccia utente di Lovelace", "raw_editor": "Editor di Configurazione testuale" diff --git a/translations/frontend/lt.json b/translations/frontend/lt.json index fb77abbf4b..f0f748cc21 100644 --- a/translations/frontend/lt.json +++ b/translations/frontend/lt.json @@ -308,7 +308,8 @@ "device-picker": { "device": "Įrenginys", "no_devices": "Neturite jokių įrenginių", - "no_match": "Nerasta atitinkančių įrenginių" + "no_match": "Nerasta atitinkančių įrenginių", + "show_devices": "Rodyti įrenginius" }, "entity": { "entity-picker": { @@ -461,6 +462,9 @@ }, "areas": { "caption": "Sričių registras", + "data_table": { + "devices": "Įrenginiai" + }, "description": "Visų jūsų namų sričių apžvalga.", "editor": { "create": "SUKURTI", @@ -550,6 +554,7 @@ "copy_to_clipboard": "Kopijuoti į iškarpinę", "edit_ui": "Redaguoti naudojant vartotojo sąsają", "edit_yaml": "Redaguoti kaip YAML", + "load_error_not_editable": "Redagavimas leidžiamas tik automatizavimai, esantys automations.yaml", "triggers": { "add": "Pridėti trigerį", "delete": "Ištrinti", @@ -622,7 +627,9 @@ } }, "picker": { - "learn_more": "Sužinokite daugiau apie automatizavimą" + "learn_more": "Sužinokite daugiau apie automatizavimą", + "no_automations": "Redaguojamas automatizavimas nerastas", + "only_editable": "Redagavimas leidžiamas tik automatizavimai, esantys automations.yaml" } }, "blueprint": { @@ -661,6 +668,10 @@ "cloud": { "account": { "connected": "Prisijungęs", + "google": { + "devices_pin": "Įrenginio saugos Pin kodas", + "security_devices": "Apsaugoti įrenginiai" + }, "not_connected": "Neprisijungęs" }, "caption": "Home Assistant Cloud" @@ -680,23 +691,34 @@ "no_actions": "Nėra veiksmų", "unknown_action": "Nežinomas veiksmas" }, + "automations": "Automatizavimas", "conditions": { "no_conditions": "Nėra sąlygų", "unknown_condition": "Nežinoma sąlyga" }, "create_disable": "Negalima sukurti automatizavimo su išjungtu įrenginiu", + "no_automations": "Nėra automatizavimų", + "no_device_automations": "Šiam įrenginiui nėra automatizavimo įrankių", "triggers": { "no_triggers": "Nėra paleidiklių", "unknown_trigger": "Nežinomas paleidiklis" }, "unknown_automation": "Nežinomas automatizavimas" }, + "confirm_delete": "Ar tikrai norite ištrinti šį įrenginį?", "data_table": { "area": "Sritis", + "battery": "Baterija", "device": "Įrenginys", - "model": "Modelis" + "integration": "Integracija", + "manufacturer": "Gamintojas", + "model": "Modelis", + "no_devices": "Nėra įrenginių" }, + "delete": "Ištrinti", "description": "Tvarkyti prijungtus įrenginius", + "device_info": "Įrenginio info", + "device_not_found": "Įrenginys nerastas", "disabled": "Išjungta", "disabled_by": { "config_entry": "Konfigūracijos įrašas", @@ -706,6 +728,7 @@ "enabled_cause": "Įrenginį išjungė {cause}.", "enabled_description": "Išjungti įrenginiai nebus rodomi, o įrenginiui priklausantys objektai bus išjungti ir nepridedami į Home Assistant.", "enabled_label": "Įgalinti įrenginį", + "no_devices": "Nėra įrenginių", "picker": { "filter": { "filter": "Filtras", @@ -716,11 +739,16 @@ "search": "Ieškoti įrenginių" }, "scene": { - "create_disable": "Negalima sukurti scenos su išjungtu įrenginiu" + "create_disable": "Negalima sukurti scenos su išjungtu įrenginiu", + "no_scenes": "Nėra scenų", + "scenes": "Scenos" }, + "scenes": "Scenos", "script": { "create_disable": "Negalima sukurti skripto su išjungtu įrenginiu" - } + }, + "unknown_error": "Nežinoma klaida", + "unnamed_device": "Bevardis įrenginys" }, "entities": { "caption": "Subjektų registras", @@ -815,6 +843,22 @@ "person_not_found": "Nepavyko rasti asmens, kurį bandėte redaguoti.", "person_not_found_title": "Asmuo nerastas" }, + "scene": { + "caption": "Scenos", + "editor": { + "devices": { + "add": "Pridėti įrenginį", + "delete": "Pašalinti įrenginį", + "header": "Įrenginiai" + }, + "load_error_not_editable": "Redaguoti galima tik scenas, esančias scenes.yaml." + }, + "picker": { + "learn_more": "Sužinokite daugiau apie scenas", + "no_scenes": "Neradome jokių redaguojamų scenų", + "only_editable": "Redaguoti galima tik scenas, esančias scenes.yaml." + } + }, "script": { "editor": { "save_script": "Įrašyti scenarijų" @@ -825,6 +869,13 @@ "run_script": "Vykdyti scenarijų" } }, + "server_control": { + "section": { + "reloading": { + "scene": "Perkraukite scenas" + } + } + }, "tags": { "detail": { "companion_apps": "papildomos programos", @@ -861,6 +912,10 @@ "header": "„Zigbee“ namų automatika - pridėti įrenginių", "spinner": "Ieškoma ZHA Zigbee įrenginių..." }, + "common": { + "add_devices": "Pridėti įrenginius", + "devices": "Įrenginiai" + }, "description": "„Zigbee Home Automation“ tinklo valdymas", "device_pairing_card": { "CONFIGURED": "Konfigūracija baigta", diff --git a/translations/frontend/tr.json b/translations/frontend/tr.json index 371779e9cd..b089d8677f 100644 --- a/translations/frontend/tr.json +++ b/translations/frontend/tr.json @@ -1135,7 +1135,8 @@ "device_id": { "action": "Aksiyon", "extra_fields": { - "code": "Kod" + "code": "Kod", + "position": "Konum" }, "label": "Cihaz" }, @@ -1527,6 +1528,7 @@ "dialog": { "example_message": "Merhaba {name} , desteklenen herhangi bir medya oynatıcıda herhangi bir metni seslendirebilirsiniz!", "header": "Metinden Konuşmaya Deneyin", + "play": "Oynat", "target": "Hedef", "target_browser": "Tarayıcı" }, @@ -2666,6 +2668,11 @@ }, "description": "Z-Wave ağınızı yönetin", "learn_more": "Z-Wave hakkında daha fazla bilgi edinin", + "migration": { + "ozw": { + "header": "OpenZWave'e geçiş yapın" + } + }, "network_management": { "header": "Z-Wave Ağ Yönetimi", "introduction": "Z-Dalga ağını etkileyen komutları çalıştırın. Çoğu komutun başarılı olup olmadığı hakkında geri bildirim almazsınız, ancak öğrenmek için OZW Günlüğü'ne göz atabilirsiniz." @@ -3195,6 +3202,7 @@ } }, "menu": { + "manage_dashboards": "Gösterge panelini yönet", "manage_resources": "Kaynakları yönetin", "open": "Lovelace UI menüsünü aç", "raw_editor": "Ham config editörü" From 3d4a0b02e5cbbb1e5a513340e66b90b45b3e684d Mon Sep 17 00:00:00 2001 From: Mike Morrison Date: Mon, 1 Feb 2021 02:52:12 -0800 Subject: [PATCH 31/54] Fix gaps in history charts (#8293) --- src/components/state-history-chart-line.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/components/state-history-chart-line.js b/src/components/state-history-chart-line.js index ba71b0358c..1b97a69b2c 100644 --- a/src/components/state-history-chart-line.js +++ b/src/components/state-history-chart-line.js @@ -139,6 +139,15 @@ class StateHistoryChartLine extends LocalizeMixin(PolymerElement) { return; } data.forEach((d, i) => { + if (datavalues[i] === null && prevValues && prevValues[i] !== null) { + // null data values show up as gaps in the chart. + // If the current value for the dataset is null and the previous + // value of the data set is not null, then add an 'end' point + // to the chart for the previous value. Otherwise the gap will + // be too big. It will go from the start of the previous data + // value until the start of the next data value. + d.data.push({ x: timestamp, y: prevValues[i] }); + } d.data.push({ x: timestamp, y: datavalues[i] }); }); prevValues = datavalues; From a9192ae2e1aa754e72ba8b5a8c4809667898048b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Mon, 1 Feb 2021 13:00:38 +0100 Subject: [PATCH 32/54] Force YAML if schema has multiple (#8298) --- hassio/src/addon-view/config/hassio-addon-config.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hassio/src/addon-view/config/hassio-addon-config.ts b/hassio/src/addon-view/config/hassio-addon-config.ts index 02d420f46f..8190267d71 100644 --- a/hassio/src/addon-view/config/hassio-addon-config.ts +++ b/hassio/src/addon-view/config/hassio-addon-config.ts @@ -109,7 +109,8 @@ class HassioAddonConfig extends LitElement { protected firstUpdated(changedProps) { super.firstUpdated(changedProps); this._canShowSchema = !this.addon.schema.find( - (entry) => !SUPPORTED_UI_TYPES.includes(entry.type) + // @ts-ignore + (entry) => !SUPPORTED_UI_TYPES.includes(entry.type) || entry.multiple ); this._yamlMode = !this._canShowSchema; } From a30ec32ac1c5b5a66c6e464f7768cc5d177226eb Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 2 Feb 2021 01:31:33 +0000 Subject: [PATCH 33/54] Translation update --- translations/frontend/cs.json | 1 + translations/frontend/nl.json | 13 +++ translations/frontend/pl.json | 14 +-- translations/frontend/sv.json | 18 +++- translations/frontend/tr.json | 150 +++++++++++++++++++++++------ translations/frontend/zh-Hans.json | 40 +++++++- 6 files changed, 199 insertions(+), 37 deletions(-) diff --git a/translations/frontend/cs.json b/translations/frontend/cs.json index d1afe80dc3..0d4344adcb 100644 --- a/translations/frontend/cs.json +++ b/translations/frontend/cs.json @@ -401,6 +401,7 @@ "direction": "Směr", "forward": "Vpřed", "oscillate": "Oscilovat", + "preset_mode": "Předvolba", "reverse": "Vzad", "speed": "Rychlost" }, diff --git a/translations/frontend/nl.json b/translations/frontend/nl.json index 18e8ca5a62..e9e3882128 100644 --- a/translations/frontend/nl.json +++ b/translations/frontend/nl.json @@ -592,6 +592,7 @@ } }, "history_charts": { + "history_disabled": "Geschiedenis integratie uitgeschakeld", "loading_history": "Geschiedenis laden ...", "no_history_found": "Geen geschiedenis gevonden" }, @@ -753,6 +754,8 @@ "dismiss": "Sluiten", "editor": { "advanced": "Geavanceerde instellingen", + "area": "Alleen entiteitsgebied instellen", + "area_note": "Standaard liggen de entiteiten van een apparaat in hetzelfde gebied als het apparaat. Als u het gebied van deze entiteit wijzigt, zal het niet langer het gebied van het apparaat volgen.", "change_device_area": "Verander het apparaatgebied", "confirm_delete": "Weet je zeker dat je dit item wilt verwijderen?", "delete": "Verwijderen", @@ -1017,8 +1020,12 @@ }, "errors": { "config": { + "edit_in_yaml_supported": "Je kan nog steeds de configuratie in YAML bewerken.", + "editor_not_available": "Geen visuele editor beschikbaar voor type \"{type}\".", "editor_not_supported": "Visuele editor wordt niet ondersteund voor deze configuratie", "error_detected": "Configuratiefouten ontdekt", + "key_missing": "Verplichte sleutel \"{key}\" ontbreekt.", + "key_wrong_type": "De opgegeven waarde voor \" {key} \" wordt niet ondersteund door de visuele editor. We ondersteunen ( {type_correct} ) maar hebben ( {type_wrong} ) ontvangen.", "no_type_provided": "Geen type opgegeven." } }, @@ -2681,6 +2688,9 @@ "asleep": "In slaap", "awake": "Wakker", "dead": "Onbereikbaar" + }, + "remove_node": { + "title": "Een Z-Wave Node verwijderen" } }, "zwave": { @@ -2883,6 +2893,9 @@ }, "cards": { "action_confirmation": "Weet u zeker dat u actie \" {action} \" wilt uitvoeren?", + "actions": { + "action_confirmation": "Weet je zeker dat je actie \"{action}\" wilt uitvoeren?" + }, "confirm_delete": "Weet je zeker dat je deze kaart wilt verwijderen?", "empty_state": { "go_to_integrations_page": "Ga naar de integraties pagina.", diff --git a/translations/frontend/pl.json b/translations/frontend/pl.json index b0692739cd..fa1aef59bf 100644 --- a/translations/frontend/pl.json +++ b/translations/frontend/pl.json @@ -1493,7 +1493,7 @@ "info_state_reporting": "Jeśli włączysz raportowanie stanów, Home Assistant wyśle wszystkie zmiany stanu udostępnionych encji na serwery Amazona. Dzięki temu zawsze możesz zobaczyć najnowsze stany w aplikacji Alexa i używać zmian stanów do tworzenia rutyn.", "manage_entities": "Zarządzanie encjami", "state_reporting_error": "Nie można przesłać stanu {enable_disable}", - "sync_entities": "Synchronizuj encje", + "sync_entities": "Synchronizuj encje z Amazon", "sync_entities_error": "Nie udało się zsynchronizować encji:", "title": "Alexa" }, @@ -1544,7 +1544,7 @@ "target_browser": "Przeglądarka" }, "female": "Kobieta", - "info": "Podaruj swemu domu osobowość dając mu możliwość mówienia do Ciebie za pomocą naszych usług zamiany tekstu na mowę. Możesz ich użyć w automatyzacjach i skryptach, korzystając z usługi {service} .", + "info": "Podaruj swemu domu osobowość dając mu możliwość mówienia do Ciebie za pomocą naszych usług zamiany tekstu na mowę. Możesz ich użyć w automatyzacjach i skryptach, korzystając z usługi {service}.", "male": "Mężczyzna", "title": "Zamiana tekstu na mowę", "try": "Wypróbuj" @@ -1580,11 +1580,11 @@ "description_login": "Zalogowany jako {email}", "description_not_login": "Nie zalogowany", "dialog_certificate": { - "certificate_expiration_date": "Data ważności certyfikatu", + "certificate_expiration_date": "Data ważności certyfikatu:", "certificate_information": "Informacja o certyfikacie", "close": "Zamknij", "fingerprint": "Odcisk palca certyfikatu:", - "will_be_auto_renewed": "Będzie automatycznie odnawiany" + "will_be_auto_renewed": "będzie automatycznie odnawiany" }, "dialog_cloudhook": { "available_at": "Webhook jest dostępny pod następującym adresem URL:", @@ -2561,7 +2561,7 @@ }, "description": "Zarządzanie siecią Zigbee Home Automation", "device_pairing_card": { - "CONFIGURED": "Konfigurowanie zakończona", + "CONFIGURED": "Konfigurowanie zakończone", "CONFIGURED_status_text": "Inicjalizacja", "INITIALIZED": "Inicjalizacja zakończona", "INITIALIZED_status_text": "Urządzenie jest gotowe do użycia", @@ -2673,7 +2673,7 @@ "inclusion_failed": "Nie można dodać węzła. Sprawdź logi, aby uzyskać więcej informacji.", "inclusion_finished": "Węzeł został dodany. Trwa kończenie konfiguracji węzła w tle, dodawanie encji urządzenia może zająć kilka minut.", "introduction": "Ten kreator poprowadzi Cię przez proces dodawania węzła do sieci Z-Wave.", - "secure_inclusion_warning": "Bezpieczne węzły wymagają dodatkowej przepustowości; zbyt wiele bezpiecznych węzłów może spowolnić twoją sieć Z-Wave. Zalecamy używanie bezpiecznego włączenia tylko w przypadku urządzeń, które tego wymagają, takich jak zamki lub urządzenia sterujące bramami garażowymi.", + "secure_inclusion_warning": "Bezpieczne węzły wymagają dodatkowej przepustowości; zbyt wiele bezpiecznych węzłów może spowolnić twoją sieć Z-Wave. Zalecamy używanie bezpiecznego dodawania tylko w przypadku urządzeń, które tego wymagają, takich jak zamki lub urządzenia sterujące bramami garażowymi.", "start_inclusion": "Rozpocznij dodawanie węzła", "start_secure_inclusion": "Rozpocznij dodawanie bezpiecznego węzła", "title": "Dodaj węzeł Z-Wave", @@ -3009,7 +3009,7 @@ "name": "Panel alarmu" }, "button": { - "default_action_help": "Domyślna akcja zależy od możliwości encji, encja zostanie przełączona lub zostanie wyświetlone okno więcej informacji.", + "default_action_help": "Domyślna akcja zależy od możliwości encji, encja zostanie przełączona lub zostanie wyświetlone okno \"Więcej informacji\".", "description": "Karta przycisku umożliwia dodawanie przycisków do wykonywania zadań.", "name": "Przycisk" }, diff --git a/translations/frontend/sv.json b/translations/frontend/sv.json index fc15aa7db0..bb85dbaeae 100644 --- a/translations/frontend/sv.json +++ b/translations/frontend/sv.json @@ -1008,6 +1008,11 @@ "second": "{count} {count, plural,\none {sekund}\nother {sekunder}\n}", "week": "{count} {count, plural,\none {vecka}\nother {veckor}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "Du kan fortfarande redigera din konfiguration i YAML." + } + }, "login-form": { "log_in": "Logga in", "password": "Lösenord", @@ -1116,7 +1121,8 @@ "device_id": { "action": "Åtgärd", "extra_fields": { - "code": "Kod" + "code": "Kod", + "position": "Position" }, "label": "Enhet" }, @@ -1298,7 +1304,7 @@ "trigger": "Utlösare" }, "event": { - "context_user_pick": "Lägg till användare", + "context_user_pick": "Välj användare", "context_user_picked": "Användaravfyrning", "context_users": "Begränsa till händelser som utlöses av", "event_data": "Händelsedata", @@ -1501,6 +1507,13 @@ }, "sign_out": "Logga ut", "thank_you_note": "Tack för att du är en del av Home Assistant Cloud. Det är tack vare människor som dig vi kan göra en fantastisk hemautomationsupplevelse för alla. Tack!", + "tts": { + "dialog": { + "header": "Prova Text till tal", + "target_browser": "Webbläsare" + }, + "try": "Prova" + }, "webhooks": { "disable_hook_error_msg": "Det gick inte att inaktivera webhook:", "info": "Allt som är konfigurerat för att utlösas av en webhook kan ges en offentligt tillgänglig URL för att låta dig skicka tillbaka data till Home Assistant var som helst, utan att exponera din instans för internet.", @@ -3152,6 +3165,7 @@ } }, "menu": { + "manage_resources": "Hantera resurser", "open": "Öppna Lovelace-menyn", "raw_editor": "Rå konfigurationsredigerare" }, diff --git a/translations/frontend/tr.json b/translations/frontend/tr.json index b089d8677f..6b1dbad2e6 100644 --- a/translations/frontend/tr.json +++ b/translations/frontend/tr.json @@ -513,6 +513,7 @@ "close": "Kapat", "continue": "Devam et", "copied": "Kopyalandı", + "copied_clipboard": "Panoya kopyalandı", "delete": "Sil", "disable": "Devre dışı bırak", "enable": "Etkinleştir", @@ -592,6 +593,7 @@ } }, "history_charts": { + "history_disabled": "Geçmiş entegrasyonu devre dışı bırakıldı", "loading_history": "Durum geçmişi yükleniyor...", "no_history_found": "Durum geçmişi bulunamadı." }, @@ -750,9 +752,12 @@ }, "entity_registry": { "control": "Kontrol", + "customize_link": "varlık özelleştirmeleri", "dismiss": "Kapat", "editor": { "advanced": "Gelişmiş Ayarlar", + "area": "Yalnızca varlık alanını ayarla", + "area_note": "Varsayılan olarak, bir aygıtın varlıkları aygıtla aynı alandadır. Bu varlığın alanını değiştirirseniz, artık aygıtın alanını takip etmeyecektir.", "change_device_area": "Cihaz alanını değiştir", "confirm_delete": "Bu girişi silmek istediğinizden emin misiniz?", "delete": "Sil", @@ -773,6 +778,7 @@ "update": "Güncelle" }, "faq": "dokümantasyon", + "info_customize": "{customize_link} bölümünde bazı özniteliklerin üzerine yazabilirsiniz.", "no_unique_id": "Bu varlığın (\" {entity_id} \") benzersiz bir kimliği yok, bu nedenle ayarları kullanıcı arayüzünden yönetilemez. Daha fazla ayrıntı için {faq_link} bakın.", "related": "İlgili", "settings": "Ayarlar" @@ -820,7 +826,7 @@ "max": "Maksimum uzunluk", "min": "Minimum uzunluk", "mode": "Görüntü modu", - "password": "Şifre", + "password": "Parola", "pattern": "İstemci tarafı doğrulaması için normal ifade kalıbı", "text": "Metin" }, @@ -949,7 +955,7 @@ "mqtt": "Manuel olarak yapılandırılmış MQTT varlıklarını yeniden yükleyin", "person": "Kişileri yeniden yükle", "ping": "Ping ikili sensör varlıklarını yeniden yükle", - "reload": "{domain} alanını yeniden yükleyin", + "reload": "{domain} yükleyin", "rest": "Rest varlıklarını yeniden yükleyin ve hizmetleri bilgilendirin", "rpi_gpio": "Raspberry Pi GPIO varlıklarını yeniden yükleyin", "scene": "Sahneleri yeniden yükle", @@ -1023,13 +1029,14 @@ "editor_not_supported": "Görsel düzenleyici bu yapılandırma için desteklenmez", "error_detected": "Yapılandırma hataları algılandı", "key_missing": "Gerekli anahtar \" {key} \" eksik.", - "key_wrong_type": "\" {key} \" için sağlanan değer görsel düzenleyici tarafından desteklenmiyor. Destekliyoruz ( {type_correct} ) ancak {type_wrong} ( {type_wrong} ).", + "key_not_expected": "Anahtar \"{key}\" beklenmiyor veya görsel düzenleyici tarafından desteklenmiyor.", + "key_wrong_type": "\"{key}\" için sağlanan değer görsel düzenleyici tarafından desteklenmez. Biz destek ({type_correct}) ama alınan ({type_wrong}).", "no_type_provided": "Tür sağlanmadı." } }, "login-form": { "log_in": "Oturum aç", - "password": "Şifre", + "password": "Parola", "remember": "Hatırla" }, "notification_drawer": { @@ -1136,7 +1143,9 @@ "action": "Aksiyon", "extra_fields": { "code": "Kod", - "position": "Konum" + "message": "İleti", + "position": "Konum", + "title": "Başlık" }, "label": "Cihaz" }, @@ -1312,7 +1321,8 @@ "extra_fields": { "above": "Üzerinde", "below": "Altında", - "for": "Süre" + "for": "Süre", + "zone": "Bölge" }, "label": "Cihaz", "trigger": "tetik" @@ -1525,6 +1535,7 @@ "sign_out": "oturumu Kapat", "thank_you_note": "Home Assistant Cloud'un bir parçası olduğunuz için teşekkür ederiz. Sizin gibi insanlar sayesinde herkes için harika bir ev otomasyonu deneyimi yaşayabiliyoruz. Teşekkür ederim!", "tts": { + "default_language": "Kullanılacak varsayılan dil", "dialog": { "example_message": "Merhaba {name} , desteklenen herhangi bir medya oynatıcıda herhangi bir metni seslendirebilirsiniz!", "header": "Metinden Konuşmaya Deneyin", @@ -1532,6 +1543,10 @@ "target": "Hedef", "target_browser": "Tarayıcı" }, + "female": "Kadın", + "info": "Metinden Konuşmaya hizmetlerimizi kullanarak sizinle konuşmasını sağlayarak evinize kişilik katın. Bunu, {service} hizmetini kullanarak otomasyonlarda ve komut dosyalarında kullanabilirsiniz.", + "male": "Erkek", + "title": "Metinden Konuşmaya", "try": "Deneyin" }, "webhooks": { @@ -1569,7 +1584,7 @@ "certificate_information": "Sertifika bilgileri", "close": "Kapat", "fingerprint": "Sertifika parmak izi:", - "will_be_auto_renewed": "Olacak otomatik olarak yenilenecektir" + "will_be_auto_renewed": "otomatik olarak yenilenecektir" }, "dialog_cloudhook": { "available_at": "Webhook aşağıdaki URL'de kullanılabilir:", @@ -1583,7 +1598,7 @@ "webhook_for": "{name} için Webhook" }, "forgot_password": { - "check_your_email": "Şifrenizi nasıl sıfırlayacağınıza ilişkin talimatlar için e-postanızı kontrol edin.", + "check_your_email": "Parolanızı nasıl sıfırlayacağınıza ilişkin talimatlar için e-postanızı kontrol edin.", "email": "E-posta", "email_error_msg": "Geçersiz e-posta", "instructions": "E-posta adresinizi girin, size şifrenizi sıfırlamanız için bir bağlantı gönderelim.", @@ -1608,13 +1623,13 @@ }, "login": { "alert_email_confirm_necessary": "Giriş yapmadan önce e-postanızı onaylamanız gerekiyor.", - "alert_password_change_required": "Giriş yapmadan önce şifrenizi değiştirmeniz gerekiyor.", + "alert_password_change_required": "Giriş yapmadan önce parolanızı değiştirmeniz gerekiyor.", "dismiss": "Kapat", "email": "E-posta", "email_error_msg": "Geçersiz e-posta", "forgot_password": "Parolanızı mı unuttunuz?", "introduction": "Home Assistant Cloud, evden uzaktayken örneğinize güvenli bir uzaktan bağlantı sağlar. Ayrıca diğer bulut hizmetlerine bağlanmanıza olanak tanır: Amazon Alexa ve Google Assistant.", - "introduction2": "Bu hizmet ortağımız ", + "introduction2": "Bu hizmet ortağımız tarafından yürütülmektedir ", "introduction2a": "tarafından verilmektedir, Home Assistant ve Hass.io kurucuları tarafından kurulan bir şirket.", "introduction3": "Home Assistant Cloud, bir aylık ücretsiz deneme sürümüne sahip bir abonelik hizmetidir. Ödeme bilgisi gerekmez.", "learn_more_link": "Home Assistant Cloud hakkında daha fazla bilgi edin", @@ -1758,7 +1773,7 @@ "enabled_label": "Cihazı etkinleştir", "entities": { "add_entities_lovelace": "Tüm cihaz varlıklarını Lovelace kullanıcı arayüzüne ekle", - "disabled_entities": "+{count} {count, plural,\n one {engelli varlık}\n other {engelli varlıklar}\n}", + "disabled_entities": "+{count} {count, plural,\n one {disabled entity}\n other {disabled entities}\n}", "entities": "Varlıkları", "hide_disabled": "Devre dışı olanları gizle", "none": "Bu cihazın varlığı yok" @@ -1799,12 +1814,12 @@ "disable_selected": { "button": "Seçilenleri devre dışı bırak", "confirm_text": "Devre dışı bırakılan varlıklar Home Assistant'a eklenmeyecek.", - "confirm_title": "{number} {number, plural,\n one {entity}\n other {entities}\n} varlığı devre dışı bırakmak istiyor musunuz?" + "confirm_title": "Do you want to disable {number} {number, plural,\n one {entity}\n other {entities}\n}?" }, "enable_selected": { "button": "Seçilenleri etkinleştir", "confirm_text": "Bu, artık devre dışı bırakılırsa, onları Home Assistant 'nda yeniden kullanılabilir hale getirecektir.", - "confirm_title": "{number} {number, plural,\n one {entity}\n other {entities}\n} varlığı etkinleştirmek istiyor musunuz?" + "confirm_title": "Do you want to enable {number} {number, plural,\n one {entity}\n other {entities}\n}?" }, "filter": { "filter": "filtre", @@ -1827,9 +1842,9 @@ "remove_selected": { "button": "Seçilenleri kaldır", "confirm_partly_text": "Yalnızca seçili {selected} varlıkları {removable} kaldırabilirsiniz. Varlıklar yalnızca entegrasyon özelliklerini sağlamadığında kaldırılabilir. Bazen, kaldırılan bir entegrasyondaki varlıkları kaldırabilmeniz için önce Home Assistant'ı yeniden başlatmanız gerekir. Çıkarılabilir varlıkları kaldırmak istediğinizden emin misiniz?", - "confirm_partly_title": "Sadece {number} {number, plural,\n one {selected entity}\n other {selected entities}\n} kaldırlabilir.", + "confirm_partly_title": "Only {number} {number, plural,\n one {selected entity}\n other {selected entities}\n} can be removed.", "confirm_text": "Bu varlıkları içeriyorsa, bunları Lovelace yapılandırmanız ve otomasyonlarınızdan kaldırmalısınız.", - "confirm_title": "{number} {number, plural,\n one {entity}\n other {entities}\n} varlığı kaldırmak istiyor musunuz ?" + "confirm_title": "Do you want to remove {number} {number, plural,\n one {entity}\n other {entities}\n}?" }, "search": "Varlıkları ara", "selected": "{number} seçildi", @@ -1943,14 +1958,14 @@ "attention": "Bu alan gereklidir", "caption": "Entegrasyonlar", "config_entry": { - "area": "{alan} içinde", + "area": "{area} içinde", "delete": "Sil", - "delete_button": "{Entegrasyon} sil", + "delete_button": "{integration} silin", "delete_confirm": "Bu entegrasyonu silmek istediğinizden emin misiniz?", "device_unavailable": "Cihaz kullanılamıyor", - "devices": "{count} {count, plural,\n one {cihaz}\n other {cihazlar}\n}", + "devices": "{count} {count, plural,\n one {device}\n other {devices}\n}", "documentation": "Dökümanlar", - "entities": "{count} {count, plural,\n one {varlık}\n other {varlıklar}\n}", + "entities": "{count} {count, plural,\n one {entity}\n other {entities}\n}", "entity_unavailable": "Varlık kullanılamıyor", "firmware": "Aygıt yazılımı: {version}", "hub": "Şununla bağlı:", @@ -2375,7 +2390,7 @@ "filter": "Filtre varlıklarını yeniden yükleyin", "generic": "Genel IP kamera varlıklarını yeniden yükleyin", "generic_thermostat": "Genel termostat varlıklarını yeniden yükleyin", - "group": "Grupları, grup varlıklarını yeniden yükleyin ve hizmetleri bildirin", + "group": "Grupları, grup varlıklarını ve grup bildirim hizmetlerini yeniden yükleyin", "heading": "YAML yapılandırması yeniden yükleniyor", "history_stats": "Geçmiş istatistik varlıklarını yeniden yükle", "homekit": "HomeKit'i yeniden yükle", @@ -2389,7 +2404,7 @@ "mqtt": "Mqtt varlıklarını yeniden yükleme", "person": "Kişileri yeniden yükleme", "ping": "Ping ikili sensör varlıklarını yeniden yükle", - "reload": "{etki alanı} yeniden yükleme", + "reload": "{domain} yükleyin", "rest": "Rest varlıklarını yeniden yükleyin ve hizmetleri bilgilendirin", "rpi_gpio": "Raspberry Pi GPIO varlıklarını yeniden yükleyin", "scene": "Sahneleri yeniden yükle", @@ -2616,7 +2631,9 @@ "title": "Zigbee Ev Otomasyonu", "visualization": { "caption": "Görselleştirme", - "header": "Ağ Görselleştirme" + "header": "Ağ Görselleştirme", + "highlight_label": "Cihazları Vurgula", + "zoom_label": "Cihaza Yakınlaştır" } }, "zone": { @@ -2650,10 +2667,72 @@ }, "zwave_js": { "add_node": { + "cancel_inclusion": "Dahil Etmeyi İptal Et", + "controller_in_inclusion_mode": "Z-Wave kontrol cihazınız artık dahil etme modunda.", + "follow_device_instructions": "Cihazda eşleştirmeyi tetiklemek için cihazınızla birlikte gelen talimatları izleyin.", + "inclusion_failed": "Düğüm eklenemedi. Daha fazla bilgi için lütfen günlükleri kontrol edin.", + "inclusion_finished": "Düğüm eklendi. Düğümün arka planda kurulumunu tamamladığımızda tüm varlıkların görünmesi birkaç dakika sürebilir.", + "introduction": "Bu sihirbaz, Z-Wave ağınıza bir düğüm eklerken size yol gösterecektir.", + "secure_inclusion_warning": "Güvenli cihazlar ek bant genişliği gerektirir; çok fazla güvenli cihaz Z-Wave ağınızı yavaşlatabilir. Yalnızca kilitler veya garaj kapısı açıcılar gibi bunu gerektiren cihazlar için güvenli dahil etme kullanmanızı öneririz.", + "start_inclusion": "Dahil Etmeye Başlayın", + "start_secure_inclusion": "Güvenli Dahil Etmeyi Başlatın", + "title": "Bir Z-Wave Düğümü Ekleyin", + "use_secure_inclusion": "Güvenli dahil etme kullanın", "view_device": "Cihazı Görüntüle" }, + "button": "Yapılandır", + "common": { + "add_node": "Düğüm Ekle", + "close": "Kapat", + "home_id": "Ev kimliği", + "network": "Ağ", + "node_id": "Düğüm Kimliği", + "remove_node": "Düğümü Kaldır" + }, "dashboard": { + "driver_version": "Sürücü Sürümü", + "dump_dead_nodes_text": "Düğümlerinizden bazıları yanıt vermedi ve öldüğü varsayılıyor. Bunlar tamamen ihraç edilmeyecek.", + "dump_dead_nodes_title": "Düğümlerinizden bazıları öldü", + "dump_debug": "Sorunları tanılamaya yardımcı olmak için ağınızın dökümünün karşıdan yükle", + "dump_not_ready_confirm": "İndir", + "dump_not_ready_text": "Tüm düğümler hazır değilken bir dışa aktarma oluşturursanız, gerekli verileri kaçırabilirsiniz. Ağınıza tüm düğümleri sorgulaması için biraz zaman tanıyın. Çöplükle devam etmek istiyor musun?", + "dump_not_ready_title": "Henüz tüm düğümler hazır değil", + "header": "Z-Wave Ağınızı Yönetin", + "home_id": "Ev kimliği", + "introduction": "Z-Wave ağınızı ve Z-Wave düğümlerinizi yönetin", + "node_count": "Düğüm Sayısı", + "nodes_ready": "Düğümler hazır", "server_version": "Sunucu Sürümü" + }, + "device_info": { + "node_ready": "Düğüm Hazır", + "node_status": "Düğüm Durumu", + "zwave_info": "Z-Wave Bilgisi" + }, + "navigation": { + "network": "Ağ" + }, + "network_status": { + "connected": "Bağlı", + "connecting": "Bağlanıyor", + "unknown": "Bilinmeyen" + }, + "node_status": { + "alive": "Canlı", + "asleep": "Uykuda", + "awake": "Uyanık", + "dead": "Ölü", + "unknown": "Bilinmeyen" + }, + "remove_node": { + "cancel_exclusion": "Hariç Tutmayı İptal Et", + "controller_in_exclusion_mode": "Z-Wave denetleyiciniz artık dışlama modunda.", + "exclusion_failed": "Düğüm kaldırılamadı. Daha fazla bilgi için lütfen günlükleri kontrol edin.", + "exclusion_finished": "{id} düğümü, Z-Wave ağınızdan kaldırıldı.", + "follow_device_instructions": "Cihazda hariç tutmayı tetiklemek için cihazınızla birlikte gelen talimatları izleyin.", + "introduction": "Z-Wave ağınızdan bir düğümü kaldırın ve ilişkili cihazı ve varlıkları Home Assistant'tan kaldırın.", + "start_exclusion": "Hariç Tutmayı Başlat", + "title": "Bir Z-Wave Düğümünü Kaldırma" } }, "zwave": { @@ -2670,7 +2749,8 @@ "learn_more": "Z-Wave hakkında daha fazla bilgi edinin", "migration": { "ozw": { - "header": "OpenZWave'e geçiş yapın" + "header": "OpenZWave'e geçiş yapın", + "introduction": "Bu sihirbaz, eski Z-Wave entegrasyonundan şu anda beta sürümünde olan OpenZWave entegrasyonuna geçmenize yardımcı olacaktır." } }, "network_management": { @@ -2854,8 +2934,14 @@ "yaml_unsupported": "YAML modunda Lovelace kullanıcı arayüzünü kullanırken bu işlevi kullanamazsınız." }, "cards": { + "action_confirmation": "\" {action} \" işlemini yürütmek istediğinizden emin misiniz?", "actions": { - "action_confirmation": "\"{action}\" eylemini yürütmek istediğinizden emin misiniz?" + "action_confirmation": "\"{action}\" eylemini yürütmek istediğinizden emin misiniz?", + "no_entity_more_info": "Daha fazla bilgi iletişim kutusu için varlık sağlanmadı", + "no_entity_toggle": "Geçiş yapmak için varlık sağlanmadı", + "no_navigation_path": "Gezinme yolu belirtilmedi", + "no_service": "Yürütme için hizmet belirtilmedi", + "no_url": "Açılacak URL belirtilmedi" }, "confirm_delete": "Bu kartı silmek istediğinizden emin misiniz?", "empty_state": { @@ -2882,7 +2968,9 @@ "shopping-list": { "add_item": "Öge Ekle", "checked_items": "Seçili öğeler", - "clear_items": "Seçili ögeleri temizle" + "clear_items": "Seçili ögeleri temizle", + "drag_and_drop": "Sürükle ve bırak", + "reorder_items": "Öğeleri yeniden sıralayın" }, "starting": { "description": "Home Assistant başlıyor, lütfen bekleyin ...", @@ -2893,6 +2981,12 @@ "message": "Bu kontrol paneli için Lovelace UI yapılandırması güncellendi. Değişiklikleri görmek için yenilensin mi?", "refresh": "Yenile" }, + "components": { + "timestamp-display": { + "invalid": "Geçersiz zaman damgası", + "invalid_format": "Geçersiz görüntü biçimi" + } + }, "editor": { "action-editor": { "actions": { @@ -3034,7 +3128,8 @@ "grid": { "columns": "Sütunlar", "description": "Izgara kartı, ızgarada birden çok kart göstermenizi sağlar.", - "name": "Izgara" + "name": "Izgara", + "square": "Kartları kareler halinde işleyin" }, "history-graph": { "description": "Geçmiş Grafiği kartı, listelenen varlıkların her biri için bir grafik görüntülemenizi sağlar.", @@ -3087,7 +3182,7 @@ "name": "Varlık resim" }, "picture-glance": { - "description": "Picture Glance kartı bir resmi ve karşılık gelen varlık durumlarını bir simge olarak gösterir. Sağ taraftaki varlıklar durum değiştirme işlemlerine izin verir, diğerleri daha fazla bilgi iletişim kutusunu gösterir.", + "description": "Picture Glance kartı bir görüntüyü ve ilgili varlık durumlarını bir simge olarak gösterir. Sağ taraftaki varlıklar geçiş işlemlerine izin verir, diğerleri daha fazla bilgi iletişim kutusunu gösterir.", "name": "Resimli Bakış", "state_entity": "Varlık Durumu" }, @@ -3409,6 +3504,7 @@ "working": "Lütfen bekleyin" }, "initializing": "Başlatılıyor", + "logging_in_to_with": "Logging in to **{locationName}** with **{authProviderName}**.", "logging_in_with": "**{authProviderName} ile giriş.", "pick_auth_provider": "Veya oturum aç" }, diff --git a/translations/frontend/zh-Hans.json b/translations/frontend/zh-Hans.json index 66b70cee13..7816c8750b 100644 --- a/translations/frontend/zh-Hans.json +++ b/translations/frontend/zh-Hans.json @@ -401,6 +401,7 @@ "direction": "方向", "forward": "正向", "oscillate": "摇头", + "preset_mode": "预设模式", "reverse": "反向", "speed": "风速" }, @@ -592,6 +593,7 @@ } }, "history_charts": { + "history_disabled": "已禁用“历史”集成", "loading_history": "正在加载历史状态...", "no_history_found": "没有找到历史状态。" }, @@ -750,8 +752,13 @@ }, "entity_registry": { "control": "控制", + "customize_link": "自定义实体", "dismiss": "忽略", "editor": { + "advanced": "高级设置", + "area": "只设置实体区域", + "area_note": "默认情况下,实体的区域与对应设备相同。如果您更改了实体的区域,它将不再跟随设备的区域。", + "change_device_area": "更改设备区域", "confirm_delete": "您确定要删除此条目吗?", "delete": "删除", "device_disabled": "该实体的设备已禁用。", @@ -761,6 +768,7 @@ "enabled_label": "启用实体", "enabled_restart_confirm": "重启 Home Assistant 以完成实体的启用", "entity_id": "实体 ID", + "follow_device_area": "跟随设备区域", "icon": "图标", "icon_error": "图标的格式应为 prefix:iconname,例如:mdi:home", "name": "名称", @@ -770,6 +778,7 @@ "update": "更新" }, "faq": "文档", + "info_customize": "您可以在{customize_link}部分中覆盖一些属性。", "no_unique_id": "该实体 (\"{entity_id}\") 没有唯一的 ID,因此无法由 UI 管理其设置。请参阅 {faq_link} 以详细了解。", "related": "关联", "settings": "设置" @@ -1013,6 +1022,18 @@ "second": "{count} {count, plural,\none {秒}\nother {秒}\n}", "week": "{count} {count, plural,\none {周}\nother {周}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "您仍然可以以 YAML 编辑配置。", + "editor_not_available": "“{type}”类型没有可视化编辑器。", + "editor_not_supported": "此配置不支持可视编辑器", + "error_detected": "检测到配置错误", + "key_missing": "缺少必需的键“{key}”。", + "key_not_expected": "“{key}”选项不可用,或不被可视化编辑器支持。", + "key_wrong_type": "“{key}”的值不受可视化编辑器支持。支持 ({type_correct}) 但得到 ({type_wrong})。", + "no_type_provided": "未提供类型。" + } + }, "login-form": { "log_in": "登录", "password": "密码", @@ -1123,6 +1144,7 @@ "extra_fields": { "code": "代码", "message": "消息", + "position": "位置", "title": "标题" }, "label": "设备" @@ -1514,10 +1536,18 @@ "thank_you_note": "感谢您加入 Home Assistant Cloud。正是因为像您这样的人,我们才得以为每个人带来出色的智能家居体验。谢谢!", "tts": { "default_language": "默认使用语言", + "dialog": { + "example_message": "{name},您好,现在可以支持的媒体播放器上播报任意文本了!", + "header": "尝试 TTS", + "play": "播放", + "target": "目标", + "target_browser": "浏览器" + }, "female": "女声", "info": "用我们的 TTS 服务,让您的家能开口说话,把智能家居变得更有人情味吧。可以在自动化和脚本中调用 {service} 服务来使用它。", "male": "男声", - "title": "TTS" + "title": "TTS", + "try": "尝试" }, "webhooks": { "disable_hook_error_msg": "无法禁用 Webhook:", @@ -2717,6 +2747,12 @@ }, "description": "管理 Z-Wave 网络", "learn_more": "详细了解 Z-Wave", + "migration": { + "ozw": { + "header": "迁移到 OpenZWave", + "introduction": "此向导将帮助您从传统的 Z-Wave 集成迁移到测试中的 OpenZWave 集成。" + } + }, "network_management": { "header": "Z-Wave 网络管理", "introduction": "运行影响 Z-Wave 网络的命令。大多数命令无法反馈是否执行成功,但您可以尝试检查 OZW 日志来确认。" @@ -3261,6 +3297,8 @@ } }, "menu": { + "manage_dashboards": "管理仪表盘", + "manage_resources": "管理资源", "open": "打开 Lovelace UI 菜单", "raw_editor": "原始配置编辑器" }, From 4e4d8bdc5ebef936d9f599b33c4b44eced334c22 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Tue, 2 Feb 2021 21:17:38 +0100 Subject: [PATCH 34/54] Revert "Add icon support to gauge" (#8303) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Joakim Sørensen --- src/panels/lovelace/cards/hui-gauge-card.ts | 26 +++--------- src/panels/lovelace/cards/types.ts | 1 - .../config-elements/hui-gauge-card-editor.ts | 41 +++++-------------- 3 files changed, 15 insertions(+), 53 deletions(-) diff --git a/src/panels/lovelace/cards/hui-gauge-card.ts b/src/panels/lovelace/cards/hui-gauge-card.ts index f760bb2720..48e49d6432 100644 --- a/src/panels/lovelace/cards/hui-gauge-card.ts +++ b/src/panels/lovelace/cards/hui-gauge-card.ts @@ -14,7 +14,6 @@ import { styleMap } from "lit-html/directives/style-map"; import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; import { fireEvent } from "../../../common/dom/fire_event"; import { computeStateName } from "../../../common/entity/compute_state_name"; -import { stateIcon } from "../../../common/entity/state_icon"; import { isValidEntityId } from "../../../common/entity/valid_entity_id"; import "../../../components/ha-card"; import "../../../components/ha-gauge"; @@ -140,11 +139,8 @@ class HuiGaugeCard extends LitElement implements LovelaceCard { "--gauge-color": this._computeSeverity(state), })} > -

    - -
    - ${this._config.name || computeStateName(stateObj)} -
    +
    + ${this._config.name || computeStateName(stateObj)}
    `; @@ -236,25 +232,13 @@ class HuiGaugeCard extends LitElement implements LovelaceCard { max-width: 250px; } - .row { - display: flex; - justify-content: space-around; - margin-top: 4px; - align-items: center; - } - .name { text-align: center; line-height: initial; - color: var(--secondary-text-color); + color: var(--primary-text-color); width: 100%; - font-size: 16px; - font-weight: 500; - } - - ha-icon { - color: var(--state-icon-color, #44739e); - margin-right: 4px; + font-size: 15px; + margin-top: 8px; } `; } diff --git a/src/panels/lovelace/cards/types.ts b/src/panels/lovelace/cards/types.ts index 3c0d104639..05330f9dbf 100644 --- a/src/panels/lovelace/cards/types.ts +++ b/src/panels/lovelace/cards/types.ts @@ -115,7 +115,6 @@ export interface GaugeCardConfig extends LovelaceCardConfig { max?: number; severity?: SeverityConfig; theme?: string; - icon?: string; } export interface ConfigEntity extends EntityConfig { diff --git a/src/panels/lovelace/editor/config-elements/hui-gauge-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-gauge-card-editor.ts index da0147c5e2..7c12ea1fce 100644 --- a/src/panels/lovelace/editor/config-elements/hui-gauge-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-gauge-card-editor.ts @@ -12,10 +12,8 @@ import { import { assert, number, object, optional, string } from "superstruct"; import { fireEvent } from "../../../../common/dom/fire_event"; import { computeRTLDirection } from "../../../../common/util/compute_rtl"; -import { stateIcon } from "../../../../common/entity/state_icon"; import "../../../../components/ha-formfield"; import "../../../../components/ha-switch"; -import "../../../../components/ha-icon-input"; import { HomeAssistant } from "../../../../types"; import { GaugeCardConfig, SeverityConfig } from "../../cards/types"; import "../../components/hui-entity-editor"; @@ -33,7 +31,6 @@ const cardConfigStruct = object({ max: optional(number()), severity: optional(object()), theme: optional(string()), - icon: optional(string()), }); const includeDomains = ["sensor"]; @@ -78,10 +75,6 @@ export class HuiGaugeCardEditor extends LitElement return this._config!.severity || undefined; } - get _icon(): string { - return this._config!.icon || ""; - } - protected render(): TemplateResult { if (!this.hass || !this._config) { return html``; @@ -112,30 +105,16 @@ export class HuiGaugeCardEditor extends LitElement .configValue=${"name"} @value-changed="${this._valueChanged}" > -
    - - -
    + Date: Wed, 3 Feb 2021 01:23:54 +0000 Subject: [PATCH 35/54] Translation update --- translations/frontend/ar.json | 73 +++++++++++++++++++++++++++-- translations/frontend/cs.json | 71 +++++++++++++++++++++++++++- translations/frontend/ja.json | 43 ++++++++++++++++- translations/frontend/nl.json | 17 ++++++- translations/frontend/pl.json | 10 ++-- translations/frontend/pt.json | 6 ++- translations/frontend/sl.json | 88 +++++++++++++++++++++++++++++++++-- translations/frontend/sv.json | 63 ++++++++++++++++++++++--- translations/frontend/tr.json | 18 +++---- 9 files changed, 355 insertions(+), 34 deletions(-) diff --git a/translations/frontend/ar.json b/translations/frontend/ar.json index 49d6938902..204afd658e 100644 --- a/translations/frontend/ar.json +++ b/translations/frontend/ar.json @@ -71,7 +71,7 @@ }, "state": { "alarm_control_panel": { - "armed": "مسلح", + "armed": "مفعّل", "armed_away": "مفعّل في الخارج", "armed_custom_bypass": "تجاوز التفعيل", "armed_home": "مفعّل في المنزل", @@ -145,7 +145,7 @@ }, "problem": { "off": "موافق", - "on": "عطل" + "on": "مشكلة" }, "safety": { "off": "أمن", @@ -346,6 +346,7 @@ }, "fan": { "direction": "Richting", + "preset_mode": "وضع الضبط المسبق", "speed": "Snelheid" }, "humidifier": { @@ -440,6 +441,10 @@ "no_match": "لم يتم العثور على مناطق مطابقة", "show_areas": "إظهار المناطق" }, + "calendar": { + "my_calendars": "التقويمات الخاصة بي", + "today": "اليوم" + }, "data-table": { "no-data": "لايوجد بيانات", "search": "بحث" @@ -459,6 +464,7 @@ } }, "history_charts": { + "history_disabled": "تم تعطيل سجل التكامل", "loading_history": "جارٍ تحميل سجل الحالات ...", "no_history_found": "لم يتم العثور على سجل الحالات." }, @@ -484,9 +490,14 @@ "update": "تحديث" }, "entity_registry": { + "customize_link": "تخصيصات العنصر", "editor": { + "advanced": "إعدادات متقدمة", + "area": "حدد منطقة العنصر فقط", + "change_device_area": "تغيير منطقة الجهاز", "confirm_delete": "هل أنت متأكد أنك تريد حذف هذا الإدخال؟", "delete": "حذف", + "follow_device_area": "اتبع منطقة الجهاز", "note": "ملاحظة: قد لا يعمل مع كافة التكاملات بعد.", "update": "تحديث" }, @@ -566,6 +577,17 @@ "second": "{count} {count, plural,\none {ثانية}\nother {ثواني}\n}", "week": "{count} {count, plural,\none {أسبوع}\nother {أسابيع}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "لا يزال بإمكانك تعديل التكوين الخاص بك في YAML.", + "editor_not_available": "لا يتوفر محرر مرئي للنوع \" {type} \".", + "editor_not_supported": "المحرر المرئي غير معتمد لهذا التكوين", + "error_detected": "تم الكشف عن أخطاء التكوين", + "key_missing": "المفتاح المطلوب \" {key} \" مفقود.", + "key_not_expected": "المفتاح \" {key} \" غير متوقع أو غير مدعوم بواسطة المحرر المرئي.", + "no_type_provided": "لم يتم تقديم أي نوع." + } + }, "login-form": { "log_in": "تسجيل الدخول", "password": "كلمة السر", @@ -630,7 +652,10 @@ "label": "التأخير" }, "device_id": { - "action": "أضف إجراء" + "action": "أضف إجراء", + "extra_fields": { + "position": "مكان" + } }, "event": { "event": "الحدث", @@ -810,7 +835,17 @@ "account": { "integrations": "تكاملات", "integrations_introduction2": "تحقق من الموقع ل", - "integrations_link_all_features": " جميع الميزات المتوفرة" + "integrations_link_all_features": " جميع الميزات المتوفرة", + "tts": { + "dialog": { + "example_message": "مرحبًا {name} ، يمكنك تشغيل أي نص على أي مشغل وسائط مدعوم!", + "header": "جرب تحويل النص إلى كلام", + "play": "تشغيل", + "target": "الهدف", + "target_browser": "تصفح" + }, + "try": "حاول" + } }, "caption": "سحابة Home Assistant", "description_login": "تم تسجيل الدخول كـ {email}", @@ -1187,10 +1222,30 @@ }, "introduction": "تسمح لك المناطق بتحديد مناطق معينة على وجه الأرض. عندما يكون الشخص داخل منطقة ما ، ستأخذ الحالة الاسم من المنطقة. يمكن أيضًا استخدام المناطق كمشغل أو حالة داخل إعدادات الأتمتة." }, + "zwave_js": { + "add_node": { + "cancel_inclusion": "إلغاء التضمين", + "controller_in_inclusion_mode": "أصبحت وحدة التحكم Z-Wave الآن في وضع التضمين.", + "follow_device_instructions": "اتبع الإرشادات المرفقة مع جهازك لبدء الاقتران على الجهاز.", + "view_device": "عرض الجهاز" + }, + "dashboard": { + "dump_not_ready_confirm": "تحميل" + }, + "remove_node": { + "cancel_exclusion": "إلغاء الاستبعاد", + "start_exclusion": "بدء الاستبعاد" + } + }, "zwave": { "button": "كوِن", "caption": "Z-Wave", "description": "إدارة شبكة Z-Wave", + "migration": { + "ozw": { + "header": "الانتقال الى OpenZWave" + } + }, "node_config": { "seconds": "ثواني", "set_config_parameter": "تعيين معلمة التكوين" @@ -1274,6 +1329,9 @@ }, "lovelace": { "cards": { + "actions": { + "no_url": "لم يتم تحديد عنوان URL لفتحه" + }, "empty_state": { "go_to_integrations_page": "انتقل إلى صفحة التكاملات.", "no_devices": "تسمح لك هذه الصفحة بالتحكم في أجهزتك ، ولكن يبدو أنك لم تعد أي أجهزة حتى الآن. توجه إلى صفحة التكاملات للبدء." @@ -1333,6 +1391,9 @@ "glance": { "description": "بطاقة اللمحة مفيدة لتجميع أجهزة استشعار متعددة في نظرة عامة مدمجة." }, + "grid": { + "columns": "الأعمدة" + }, "history-graph": { "description": "تسمح لك بطاقة الرسم البياني التاريخي بعرض رسم بياني لكل من الكيانات المذكورة." }, @@ -1415,6 +1476,10 @@ "select_users": "تحديد المستخدمين الذين يجب أن يروا طريقة العرض هذه في التنقل" } }, + "menu": { + "manage_dashboards": "ادارة لوحة المعلومات", + "manage_resources": "ادارة الموارد" + }, "raw_editor": { "header": "تعديل", "save": "حفظ", diff --git a/translations/frontend/cs.json b/translations/frontend/cs.json index 0d4344adcb..35503be599 100644 --- a/translations/frontend/cs.json +++ b/translations/frontend/cs.json @@ -559,7 +559,8 @@ "select_blueprint": "Vyberte šablonu" }, "calendar": { - "my_calendars": "Moje kalendáře" + "my_calendars": "Moje kalendáře", + "today": "Dnes" }, "data-table": { "no-data": "Žádná data", @@ -755,6 +756,8 @@ "dismiss": "Zavrhnout", "editor": { "advanced": "Pokročilá nastavení", + "area": "Nastavit pouze oblast entity", + "area_note": "Ve výchozím nastavení jsou entity zařízení ve stejné oblasti jako zařízení. Pokud změníte oblast této entity, nebude již sledovat oblast zařízení.", "change_device_area": "Změna oblasti zařízení", "confirm_delete": "Opravdu chcete tuto položku smazat?", "delete": "Odstranit", @@ -765,6 +768,7 @@ "enabled_label": "Povolit entitu", "enabled_restart_confirm": "Restartujte Home Assistant a dokončete povolení entit", "entity_id": "Entity ID", + "follow_device_area": "Sledovat oblast zařízení", "icon": "Ikona", "icon_error": "Ikony by měly být ve formátu 'prefix:nazevikony', např. 'mdi:home'", "name": "Jméno", @@ -1531,12 +1535,16 @@ "sign_out": "Odhlásit se", "thank_you_note": "Děkujeme, že jste se stali součástí Home Assistant Cloud. Díky lidem, jako jste vy, jsme schopni udělat skvělý zážitek z domácí automatizace pro každého. Díky!", "tts": { + "default_language": "Výchozí jazyk, který se má použít", "dialog": { + "example_message": "Dobrý den, {name} , můžete přehrávat libovolný text na libovolném podporovaném přehrávači médií!", "header": "Zkuste převod textu na řeč", "play": "Přehrát", + "target": "Cíl", "target_browser": "Prohlížeč" }, "female": "Žena", + "info": "Přineste osobnost do svého domova tím, že s vámi mluví pomocí našich služeb pro převod textu na řeč. Tuto možnost můžete použít v automatizaci a skriptech pomocí služby {service}.", "male": "Muž", "title": "Převod textu do řeč", "try": "Zkusit" @@ -2658,6 +2666,20 @@ "no_zones_created_yet": "Vypadá to, že nejsou vytvořené žádné zóny." }, "zwave_js": { + "add_node": { + "cancel_inclusion": "Zrušit začlenění", + "controller_in_inclusion_mode": "Váš ovladač Z-Wave je nyní v režimu začlenění.", + "follow_device_instructions": "Podle pokynů dodaných se zařízením aktivujte párování na zařízení.", + "inclusion_failed": "Uzel nelze přidat. Další informace najdete v protokolech.", + "inclusion_finished": "Uzel byl přidán. Může trvat několik minut, než se všechny entity zobrazí, když dokončíme nastavení uzlu na pozadí.", + "introduction": "Tento průvodce vás provede přidáním uzlu do vaší sítě Z-Wave.", + "secure_inclusion_warning": "Zabezpečená zařízení vyžadují větší šířku pásma; příliš mnoho zabezpečených zařízení může zpomalit vaši síť Z-Wave. Bezpečné začlenění doporučujeme používat pouze u zařízení, která to vyžadují, jako jsou zámky nebo otvírače garážových vrat.", + "start_inclusion": "Zahájit začlenění", + "start_secure_inclusion": "Spusťte zabezpečené začlenění", + "title": "Přidejte uzel Z-Wave", + "use_secure_inclusion": "Použijte zabezpečené začlenění", + "view_device": "Zobrazit zařízení" + }, "button": "Nastavit", "common": { "add_node": "Přidat uzel", @@ -2668,9 +2690,49 @@ "remove_node": "Odebrat uzel" }, "dashboard": { + "driver_version": "Verze ovladače", + "dump_dead_nodes_text": "Některé uzly neodpověděly a předpokládá se, že jsou mrtvé. Ty nebudou plně exportovány.", + "dump_dead_nodes_title": "Některé uzly jsou mrtvé.", + "dump_debug": "Stáhněte si výpis své sítě a pomozte diagnostikovat problémy", "dump_not_ready_confirm": "Stáhnout", + "dump_not_ready_text": "Pokud vytvoříte export, zatímco ne všechny uzly jsou připraveny, mohla by vám chybět potřebná data. Dejte své síti nějaký čas na dotazování všech uzlů. Chcete pokračovat s výpisem?", + "dump_not_ready_title": "Ne všechny uzly jsou ještě připraveny", + "header": "Spravujte svoji síť Z-Wave", "home_id": "ID domácnosti", + "introduction": "Správa sítě Z-Wave a uzlů Z-Wave", + "node_count": "Počet uzlů", + "nodes_ready": "Uzly připraveny", "server_version": "Verze serveru" + }, + "device_info": { + "node_ready": "Uzel připraven", + "node_status": "Stav uzlu", + "zwave_info": "Z-Wave Info" + }, + "navigation": { + "network": "Síť" + }, + "network_status": { + "connected": "Připojeno", + "connecting": "Připojování", + "unknown": "Nezjištěno" + }, + "node_status": { + "alive": "Naživu", + "asleep": "Spící", + "awake": "Probuzený", + "dead": "Mrtvý", + "unknown": "Nezjištěno" + }, + "remove_node": { + "cancel_exclusion": "Zrušit vyloučení", + "controller_in_exclusion_mode": "Kontroler Z-Wave je nyní v režimu vyloučení.", + "exclusion_failed": "Uzel nelze odstranit. Další informace najdete v protokolech.", + "exclusion_finished": "Uzel {id} byl odebrán z vaší sítě Z-Wave.", + "follow_device_instructions": "Postupujte podle pokynů dodanéch se zařízením a aktivujte vyloučení na zařízení.", + "introduction": "Odeberte uzel ze sítě Z-Wave a odeberte přidružené zařízení a entity z Home Assistant.", + "start_exclusion": "Zahájit vyloučení", + "title": "Odebrání uzlu Z-Wave" } }, "zwave": { @@ -2685,6 +2747,12 @@ }, "description": "Správa síťě Z-Wave", "learn_more": "Další informace o Z-Wave", + "migration": { + "ozw": { + "header": "Migrovat na OpenZWave", + "introduction": "Tento průvodce vám pomůže migrovat ze starší integrace Z-Wave do integrace OpenZWave, která je aktuálně v beta verzi." + } + }, "network_management": { "header": "Správa sítě Z-Wave", "introduction": "Spouštějte příkazy, které ovlivňují síť Z-Wave. Nebudete mít žádnou zpětnou vazbu o tom, zda příkazy uspěly, ale můžete se podívat do OZW protokolu, kde to můžete zjistit." @@ -3436,6 +3504,7 @@ "working": "Počkejte prosím" }, "initializing": "Inicializuji", + "logging_in_to_with": "Přihlášení k **{locationName}** pomocí **{authProviderName}**.", "logging_in_with": "Přihlásit se pomocí **{authProviderName}**.", "pick_auth_provider": "Nebo se přihlaste s" }, diff --git a/translations/frontend/ja.json b/translations/frontend/ja.json index f612b2b542..5edd5c8653 100644 --- a/translations/frontend/ja.json +++ b/translations/frontend/ja.json @@ -543,6 +543,10 @@ "remove_user": "ユーザーの削除", "select_blueprint": "設計図の選択" }, + "calendar": { + "my_calendars": "マイカレンダー", + "today": "今日" + }, "data-table": { "no-data": "データなし", "search": "検索" @@ -574,6 +578,7 @@ } }, "history_charts": { + "history_disabled": "インテグレーションの履歴が無効", "loading_history": "状態履歴を読込中...", "no_history_found": "状態履歴がありません。" }, @@ -732,8 +737,13 @@ }, "entity_registry": { "control": "コントロール", + "customize_link": "エンティティのカスタマイズ", "dismiss": "消去", "editor": { + "advanced": "詳細設定", + "area": "エンティティ領域のみを設定する", + "area_note": "デフォルトでは、デバイスのエンティティはデバイスと同じエリアにあります。このエンティティの領域を変更すると、デバイスの領域に追従しなくなります。", + "change_device_area": "デバイスエリアの変更", "confirm_delete": "このエントリを削除してもよろしいですか?", "delete": "削除", "device_disabled": "このエンティティのデバイスは無効になっています。", @@ -743,6 +753,7 @@ "enabled_label": "エンティティを有効化", "enabled_restart_confirm": "ホーム アシスタントを再起動してエンティティの有効化を完了", "entity_id": "エンティティ ID", + "follow_device_area": "デバイスエリアをフォローする", "icon": "アイコンの上書き", "icon_error": "アイコンは「prefix:iconname」の形式にする必要があります(例:「mdi:home」)。", "name": "名前の上書き", @@ -995,6 +1006,15 @@ "second": "{count} {count, plural,\n one {秒}\n other {秒}\n}", "week": "{count} {count, plural,\n one {週間}\n other {週間}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "YAMLで設定を編集することはできます。", + "error_detected": "構成エラーが検出されました", + "key_missing": "必要なキー \"{key}\" がありません。", + "key_wrong_type": "\"{key}\" に指定された値は、ビジュアル エディターではサポートされていません。({type_correct}) をサポートしていますが、受信しました ({type_wrong})。", + "no_type_provided": "タイプは提供されていません。" + } + }, "login-form": { "log_in": "ログイン", "password": "パスワード", @@ -1496,10 +1516,17 @@ "thank_you_note": "Home Assistant Cloudにご参加いただきありがとうございます。私たちは皆のために優れたホームオートメーション体験を作ることができるのはあなたのような人々のおかげです。ありがとうございました!", "tts": { "default_language": "使用するデフォルト言語", + "dialog": { + "example_message": "こんにちは{name} 、サポートされているメディアプレーヤーで任意のテキストを再生できます!", + "play": "再生", + "target": "ターゲット", + "target_browser": "ブラウザ" + }, "female": "女性", "info": "私たちのテキスト読み上げサービスを使用してあなたに話をさせることによって、あなたの家に人格をもたらします。これは、{service} サービスを使用して、自動化およびスクリプトで使用できます。", "male": "男性", - "title": "テキスト読み上げ" + "title": "テキスト読み上げ", + "try": "試す" }, "webhooks": { "disable_hook_error_msg": "ウェブホックを無効にできませんでした:", @@ -2643,10 +2670,17 @@ }, "dashboard": { "driver_version": "ドライバーバージョン", + "dump_dead_nodes_text": "一部のノードが応答せず、停止していると見なされます。これらは完全にはエクスポートされません。", + "dump_dead_nodes_title": "一部のノードが停止しています", + "dump_debug": "ネットワークのダンプをダウンロードして、問題の診断に役立ててください", + "dump_not_ready_confirm": "ダウンロード", + "dump_not_ready_text": "すべてのノードの準備が整っていない状態でエクスポートを作成すると、必要なデータが見逃される可能性があります。ネットワークにすべてのノードを照会する時間を与えます。ダンプを続行しますか?", + "dump_not_ready_title": "すべてのノードが照会されました。", "header": "Z-Wave ネットワークの管理", "home_id": "ホームID", "introduction": "Z-WaveネットワークとZ-Waveノードを管理する", "node_count": "ノード数", + "nodes_ready": "ノードの準備完了", "server_version": "サーバーバージョン" }, "device_info": { @@ -2692,6 +2726,12 @@ }, "description": "Z-waveネットワークを管理します", "learn_more": "Z-Wave の詳細", + "migration": { + "ozw": { + "header": "OpenZWaveに移行", + "introduction": "このウィザードは、従来の Z-Wave 統合から、現在ベータ版の OpenZWave 統合に移行するのに役立ちます。" + } + }, "network_management": { "header": "Z-Waveネットワーク管理", "introduction": "Z-Wave ネットワークに影響するコマンドを実行します。ほとんどのコマンドが成功したかどうかについてのフィードバックは得られませんが、OZWログをチェックして調べることもできます。" @@ -3236,6 +3276,7 @@ } }, "menu": { + "manage_dashboards": "ダッシュボードの管理", "open": "Lovelace メニューを開く", "raw_editor": "詳細設定エディター" }, diff --git a/translations/frontend/nl.json b/translations/frontend/nl.json index e9e3882128..4f9420c58d 100644 --- a/translations/frontend/nl.json +++ b/translations/frontend/nl.json @@ -401,6 +401,7 @@ "direction": "Richting", "forward": "Voorwaarts", "oscillate": "Oscilleren", + "preset_mode": "Vooraf ingestelde modus", "reverse": "Omkeren", "speed": "Snelheid" }, @@ -751,6 +752,7 @@ }, "entity_registry": { "control": "Bediening", + "customize_link": "entiteitsaanpassingen", "dismiss": "Sluiten", "editor": { "advanced": "Geavanceerde instellingen", @@ -766,6 +768,7 @@ "enabled_label": "Schakel entiteit in", "enabled_restart_confirm": "Start Home Assistant opnieuw om het inschakelen van de entiteiten te voltooien", "entity_id": "Entiteits-ID", + "follow_device_area": "Volg het apparaatgebied", "icon": "Pictogram", "icon_error": "Pictogrammen moeten de notatie 'prefix:pictogramnaam' hebben, bijvoorbeeld 'mdi:home'", "name": "Naam", @@ -775,6 +778,7 @@ "update": "Bijwerken" }, "faq": "documentatie", + "info_customize": "U kunt sommige attributen overschrijven in de {customize_link} sectie.", "no_unique_id": "Deze entiteit (\" {entity_id} \") heeft geen unieke ID, daarom kunnen de instellingen ervan niet worden beheerd vanuit de gebruikersinterface. Zie de {faq_link} voor meer details.", "related": "Gerelateerd", "settings": "instellingen" @@ -1025,6 +1029,7 @@ "editor_not_supported": "Visuele editor wordt niet ondersteund voor deze configuratie", "error_detected": "Configuratiefouten ontdekt", "key_missing": "Verplichte sleutel \"{key}\" ontbreekt.", + "key_not_expected": "Sleutel \" {key} \" wordt niet verwacht of wordt niet ondersteund door de visuele editor.", "key_wrong_type": "De opgegeven waarde voor \" {key} \" wordt niet ondersteund door de visuele editor. We ondersteunen ( {type_correct} ) maar hebben ( {type_wrong} ) ontvangen.", "no_type_provided": "Geen type opgegeven." } @@ -1538,6 +1543,7 @@ "target_browser": "Browser" }, "female": "Vrouw", + "info": "Breng persoonlijkheid in uw huis door het tegen u te laten spreken met behulp van onze Tekst-naar-Spraak diensten. U kunt dit gebruiken in automatiseringen en scripts door gebruik te maken van de {service} service.", "male": "Man", "title": "Tekst naar spraak", "try": "Probeer" @@ -2894,7 +2900,12 @@ "cards": { "action_confirmation": "Weet u zeker dat u actie \" {action} \" wilt uitvoeren?", "actions": { - "action_confirmation": "Weet je zeker dat je actie \"{action}\" wilt uitvoeren?" + "action_confirmation": "Weet je zeker dat je actie \"{action}\" wilt uitvoeren?", + "no_entity_more_info": "Geen entiteit voorzien voor meer info dialoog", + "no_entity_toggle": "Geen entiteit opgegeven om te schakelen", + "no_navigation_path": "Geen navigatiepad opgegeven", + "no_service": "Geen service voor uitvoering opgegeven", + "no_url": "Geen URL om te openen opgegeven" }, "confirm_delete": "Weet je zeker dat je deze kaart wilt verwijderen?", "empty_state": { @@ -3081,7 +3092,8 @@ "grid": { "columns": "Kolommen", "description": "Met de rasterkaart kun je meerdere kaarten in een raster tonen.", - "name": "Raster" + "name": "Raster", + "square": "Geef kaarten weer als vierkanten" }, "history-graph": { "description": "Met de History Graph-kaart kunt u een grafiek weergeven voor elk van de vermelde entiteiten.", @@ -3456,6 +3468,7 @@ "working": "Een ogenblik geduld" }, "initializing": "Initialiseren", + "logging_in_to_with": "Aanmelden bij **{locationName}** met **{authProviderName}**.", "logging_in_with": "Aan het inloggen met **{authProviderName}**.", "pick_auth_provider": "Of log in met" }, diff --git a/translations/frontend/pl.json b/translations/frontend/pl.json index fa1aef59bf..09721de464 100644 --- a/translations/frontend/pl.json +++ b/translations/frontend/pl.json @@ -292,8 +292,8 @@ "on": "wł." }, "sun": { - "above_horizon": "Nad horyzontem", - "below_horizon": "Poniżej horyzontu" + "above_horizon": "nad horyzontem", + "below_horizon": "poniżej horyzontu" }, "switch": { "off": "wył.", @@ -321,12 +321,12 @@ "fog": "mgła", "hail": "grad", "lightning": "błyskawice", - "lightning-rainy": "Burza", + "lightning-rainy": "burza", "partlycloudy": "częściowe zachmurzenie", "pouring": "ulewa", "rainy": "deszczowo", - "snowy": "Opady śniegu", - "snowy-rainy": "Śnieg z deszczem", + "snowy": "opady śniegu", + "snowy-rainy": "śnieg z deszczem", "sunny": "słonecznie", "windy": "wietrznie", "windy-variant": "wietrznie" diff --git a/translations/frontend/pt.json b/translations/frontend/pt.json index a6b728ec1b..be2bcec33d 100644 --- a/translations/frontend/pt.json +++ b/translations/frontend/pt.json @@ -2711,7 +2711,9 @@ }, "remove_node": { "cancel_exclusion": "Cancelar Exclusão", - "start_exclusion": "Iniciar Exclusão" + "controller_in_exclusion_mode": "O seu controlador Z-Wave está agora em modo de exclusão.", + "start_exclusion": "Iniciar Exclusão", + "title": "Remover um nó Z-Wave" } }, "zwave": { @@ -2912,7 +2914,7 @@ "yaml_unsupported": "Você não pode usar esta função ao usar o Lovelace IU no modo YAML." }, "cards": { - "action_confirmation": "Tem a certeza que quer executar a acção \"{action}\"?", + "action_confirmation": "Tem a certeza que quer executar a ação \"{action}\"?", "actions": { "no_entity_toggle": "Nenhuma entidade fornecida para alternar", "no_navigation_path": "Nenhum caminho de navegação especificado", diff --git a/translations/frontend/sl.json b/translations/frontend/sl.json index c6f6a3f83c..c6d10d9b14 100644 --- a/translations/frontend/sl.json +++ b/translations/frontend/sl.json @@ -512,6 +512,7 @@ "close": "Zapri", "continue": "Nadaljuj", "copied": "Kopirano", + "copied_clipboard": "Kopirano v odložišče", "delete": "Izbriši", "disable": "Onemogoči", "enable": "Omogoči", @@ -556,6 +557,9 @@ "remove_user": "Odstrani uporabnika", "select_blueprint": "Izberite načrt" }, + "calendar": { + "my_calendars": "Moji koledarji" + }, "data-table": { "no-data": "Ni podatkov", "search": "Iskanje" @@ -747,6 +751,7 @@ "control": "Nadzor", "dismiss": "Opusti", "editor": { + "change_device_area": "Spremenite območje naprave", "confirm_delete": "Ali ste prepričani, da želite izbrisati ta vnos?", "delete": "Izbriši", "device_disabled": "Naprava za to entiteto je onemogočena", @@ -1008,6 +1013,12 @@ "second": "{count} {count, plural,\none {sekunda}\ntwo {sekundi}\nthree {sekunde}\nfour {sekunde}\nother {sekund}\n}", "week": "{count} {count, plural,\none {Teden}\nother {Tednov}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "Konfiguracijo lahko še vedno urejate v YAML.", + "key_missing": "Manjka zahtevani ključ \"{key} \"." + } + }, "login-form": { "log_in": "Prijavi se", "password": "Geslo", @@ -1116,7 +1127,9 @@ "device_id": { "action": "Akcija", "extra_fields": { - "code": "Koda" + "code": "Koda", + "message": "Sporočilo", + "title": "Naslov" }, "label": "Naprava" }, @@ -1504,6 +1517,15 @@ }, "sign_out": "Izpis", "thank_you_note": "Zahvaljujemo se vam za to, da ste del Home Assistant Cloud-a. Zaradi ljudi, kot ste vi, smo sposobni narediti dobro izkušnjo avtomatizacije doma za vsakogar. hvala!", + "tts": { + "dialog": { + "play": "Predvajaj", + "target_browser": "Brskalnik" + }, + "female": "Ženska", + "male": "Moški", + "try": "Poskusi" + }, "webhooks": { "disable_hook_error_msg": "Ni uspelo onemogočiti webhook:", "info": "Vsemu, kar je nastavljeno tako, da se sproži webhook je mogoče dati javno dostopen URL, kar jim omogoča, pošljanje podatkov nazaj na Home Assistant od kjerkoli, ne da bi izpostavili vaš primerek na internetu.", @@ -1582,7 +1604,7 @@ "dismiss": "Opustite", "email": "E-poštni naslov", "email_error_msg": "Neveljaven e-poštni naslov", - "forgot_password": "pozabljeno geslo?", + "forgot_password": "Pozabljeno geslo", "introduction": "Home Assistant Cloud vam tudi takrat, ko vas ni doma zagotavlja varno oddaljeno povezavo do vašega Home Assistant-a. Prav tako vam omogoča, da se povežete z ostalimi oblačnimi storitvami Amazon Alexa in Google Assistant.", "introduction2": "To storitev upravlja naš partner ", "introduction2a": ", podjetje, ki so ga ustanovili ustanovitelji Home Assistant-a.", @@ -2586,7 +2608,8 @@ "title": "Zigbee Home Automation", "visualization": { "caption": "Vizualizacija", - "header": "Prikaz omrežja" + "header": "Prikaz omrežja", + "zoom_label": "Povečaj na napravo" } }, "zone": { @@ -2618,6 +2641,51 @@ "introduction": "Območja omogočajo določitev določenih regij. Ko je oseba znotraj tega območja, bo stanje prevzelo njegovo ime. Območja se lahko uporabljajo tudi kot sprožilec ali pogoj v avtomatizacijah.", "no_zones_created_yet": "Izgleda, da še niste ustvarili nobenih con." }, + "zwave_js": { + "add_node": { + "view_device": "Ogled naprave" + }, + "button": "Nastavi", + "common": { + "add_node": "Dodaj vozlišče", + "close": "Zapri", + "home_id": "ID doma", + "network": "Omrežje", + "node_id": "ID vozlišča", + "remove_node": "Odstrani vozlišče" + }, + "dashboard": { + "driver_version": "Različica gonilnika", + "dump_dead_nodes_text": "Nekatera vaša vozlišča se niso odzvala in so domnevno mrtva. Ta ne bodo v celoti izvožena.", + "home_id": "ID doma", + "node_count": "Število vozlišč" + }, + "device_info": { + "node_ready": "Vozlišče pripravljeno", + "node_status": "Stanje vozlišča", + "zwave_info": "Z-Wave Informacije" + }, + "navigation": { + "network": "Omrežje" + }, + "network_status": { + "connected": "Povezan", + "connecting": "Povezovanje", + "unknown": "Neznano" + }, + "node_status": { + "alive": "Živ", + "asleep": "Spi", + "awake": "Buden", + "dead": "Mrtev", + "unknown": "Neznano" + }, + "remove_node": { + "exclusion_failed": "Vozlišča ni bilo mogoče odstraniti. Za več informacij preverite dnevnike.", + "exclusion_finished": "Vozlišče {id} je bilo odstranjeno iz vašega Z-Wave omrežja.", + "title": "Odstrani Z-Wave vozlišče" + } + }, "zwave": { "button": "Konfiguriraj", "caption": "Z-Wave", @@ -2811,6 +2879,10 @@ "yaml_unsupported": "Te funkcije ne morete uporabljati, če uporabniški vmesnik Lovelace uporabljate v načinu YAML." }, "cards": { + "actions": { + "action_confirmation": "Ali ste prepričani, da želite izvesti akcijo \" {action} \"?", + "no_url": "Ni URL-ja za odpiranje izbranega" + }, "confirm_delete": "Ali ste prepričani, da želite izbrisati to kartico?", "empty_state": { "go_to_integrations_page": "Pojdite na stran za integracije.", @@ -2836,7 +2908,9 @@ "shopping-list": { "add_item": "Dodaj element", "checked_items": "Označeni predmeti", - "clear_items": "Počisti označene elemente" + "clear_items": "Počisti označene elemente", + "drag_and_drop": "Povleci in spusti", + "reorder_items": "Prerazporedite elemente" }, "starting": { "description": "Home Assistant se zaganja, prosimo počakajte ...", @@ -2847,6 +2921,11 @@ "message": "Nastavitve uporabniškega vmesnika Lovelace za to nadzorno ploščo so bile posodobljene. Če želite videti spremembe, jo osvežite.", "refresh": "Osveži" }, + "components": { + "timestamp-display": { + "invalid_format": "Neveljavna oblika prikaza" + } + }, "editor": { "action-editor": { "actions": { @@ -2986,6 +3065,7 @@ "name": "Pregled" }, "grid": { + "columns": "Stolpci", "description": "Kartica Mreža omogoča prikaz več kartic v mreži.", "name": "Mreža" }, diff --git a/translations/frontend/sv.json b/translations/frontend/sv.json index bb85dbaeae..8a75d62173 100644 --- a/translations/frontend/sv.json +++ b/translations/frontend/sv.json @@ -512,6 +512,7 @@ "close": "Stäng", "continue": "Fortsätt", "copied": "Kopierad", + "copied_clipboard": "Kopierat till urklipp", "delete": "Radera", "disable": "Inaktivera", "enable": "Aktivera", @@ -556,6 +557,10 @@ "remove_user": "Ta bort användare", "select_blueprint": "Ta bort blueprint" }, + "calendar": { + "my_calendars": "Mina Kalendrar", + "today": "Idag" + }, "data-table": { "no-data": "Ingen data", "search": "Sök" @@ -587,6 +592,7 @@ } }, "history_charts": { + "history_disabled": "Integrationen Historik är inaktiverad", "loading_history": "Laddar historik...", "no_history_found": "Ingen historik hittad." }, @@ -747,6 +753,9 @@ "control": "Kontrollera", "dismiss": "Avfärda", "editor": { + "advanced": "Avancerade inställningar", + "area_note": "Som standard har entiteterna som tillhör en enhet samma område som enheten. Om du ändrar området för denna entitet kommer den inte längre att använda enhetens område.", + "change_device_area": "Ändra område för entitet", "confirm_delete": "Är du säker på att du vill ta bort den här posten?", "delete": "Radera", "device_disabled": "Enheten för den här entiteten är inaktiverad.", @@ -1010,7 +1019,9 @@ }, "errors": { "config": { - "edit_in_yaml_supported": "Du kan fortfarande redigera din konfiguration i YAML." + "edit_in_yaml_supported": "Du kan fortfarande redigera din konfiguration i YAML.", + "error_detected": "Konfigurationsfel upptäcktes", + "key_missing": "Nödvändig nyckel \"{key}\" saknas." } }, "login-form": { @@ -1122,7 +1133,9 @@ "action": "Åtgärd", "extra_fields": { "code": "Kod", - "position": "Position" + "message": "Meddelande", + "position": "Position", + "title": "Titel" }, "label": "Enhet" }, @@ -1298,7 +1311,8 @@ "extra_fields": { "above": "Över", "below": "Under", - "for": "Varaktighet" + "for": "Varaktighet", + "zone": "Zon" }, "label": "Enhet", "trigger": "Utlösare" @@ -1423,12 +1437,14 @@ }, "blueprint": { "add": { + "community_forums": "forum", "error_no_url": "Ange webbadressen till blueprint:et", "file_name": "Blueprintsökväg", - "header": "Importera en blueprint", + "header": "Importera blueprint", "import_btn": "Förhandsgranska blueprint", "import_header": "Blueprint \"{name}\"", "import_introduction": "Du kan importera blueprints av andra användare från Github och communityforum. Ange webbadressen till ritningen nedan.", + "import_introduction_link": "Du kan importera blueprints från andra användare och {community_link}. Ange URL för blueprint nedan.", "importing": "Laddar blueprint...", "raw_blueprint": "Innehåll i blueprint", "save_btn": "Importera blueprint", @@ -1443,6 +1459,7 @@ "confirm_delete_header": "Ta bort detta blueprint?", "confirm_delete_text": "Är du säker på att du vill ta bort det här blueprint:et", "delete_blueprint": "Ta bort blueprint", + "discover_more": "Upptäck fler blueprints", "header": "Blueprint Editor", "headers": { "domain": "Domän", @@ -1508,10 +1525,13 @@ "sign_out": "Logga ut", "thank_you_note": "Tack för att du är en del av Home Assistant Cloud. Det är tack vare människor som dig vi kan göra en fantastisk hemautomationsupplevelse för alla. Tack!", "tts": { + "default_language": "Standardspråk att använda", "dialog": { "header": "Prova Text till tal", + "play": "Spela", "target_browser": "Webbläsare" }, + "title": "Text till tal", "try": "Prova" }, "webhooks": { @@ -1963,7 +1983,7 @@ "finish": "Slutför", "loading_first_time": "Vänligen vänta medan integrationen installeras", "not_all_required_fields": "Alla obligatoriska fält har inte fyllts i.", - "submit": "Skicka" + "submit": "Spara" }, "configure": "Konfigurera", "configured": "Konfigurerad", @@ -2628,6 +2648,26 @@ "introduction": "Med zoner kan du ange vissa regioner på jorden. När en person befinner sig i en zon tar tillståndet namnet från zonen. Zoner kan också användas som utlösare eller villkor i automatiseringsinställningar.", "no_zones_created_yet": "Det verkar som om du inte har skapat några zoner ännu." }, + "zwave_js": { + "add_node": { + "cancel_inclusion": "Avbryt inkludering", + "start_inclusion": "Påbörja inkludering", + "start_secure_inclusion": "Påbörja säker inkludering", + "use_secure_inclusion": "Använd säker inkludering" + }, + "button": "Konfigurera", + "common": { + "close": "Stäng" + }, + "network_status": { + "connected": "Ansluten", + "connecting": "Ansluter" + }, + "node_status": { + "dead": "Död", + "unknown": "Okänd" + } + }, "zwave": { "button": "Konfigurera", "caption": "Z-Wave", @@ -2821,6 +2861,7 @@ "yaml_unsupported": "Du kan inte använda den här funktionen när du använder Lovelace användargränssnitt i YAML-läge." }, "cards": { + "action_confirmation": "Är du säker på att du vill utföra händelsen \"{action}\"?", "confirm_delete": "Är du säker på att du vill ta bort det här kortet?", "empty_state": { "go_to_integrations_page": "Gå till integrationssidan.", @@ -2846,7 +2887,9 @@ "shopping-list": { "add_item": "Lägg till objekt", "checked_items": "Markerade objekt", - "clear_items": "Rensa markerade objekt" + "clear_items": "Rensa markerade objekt", + "drag_and_drop": "Dra och släpp", + "reorder_items": "Ändra ordning på objekt" }, "starting": { "description": "Home Assistant startar, var god vänta...", @@ -2857,6 +2900,12 @@ "message": "Lovelace-konfigurationen uppdaterades, vill du ladda om?", "refresh": "Uppdatera" }, + "components": { + "timestamp-display": { + "invalid": "Ogiltig tidsstämpel", + "invalid_format": "Ogiltigt visningsformat" + } + }, "editor": { "action-editor": { "actions": { @@ -2996,6 +3045,7 @@ "name": "Blick" }, "grid": { + "columns": "Kolumner", "description": "Med Grid-kortet kan du visa flera kort i ett rutnät.", "name": "Rutnät" }, @@ -3165,6 +3215,7 @@ } }, "menu": { + "manage_dashboards": "Hantera kontrollpaneler", "manage_resources": "Hantera resurser", "open": "Öppna Lovelace-menyn", "raw_editor": "Rå konfigurationsredigerare" diff --git a/translations/frontend/tr.json b/translations/frontend/tr.json index 6b1dbad2e6..9cb9c715c1 100644 --- a/translations/frontend/tr.json +++ b/translations/frontend/tr.json @@ -1773,7 +1773,7 @@ "enabled_label": "Cihazı etkinleştir", "entities": { "add_entities_lovelace": "Tüm cihaz varlıklarını Lovelace kullanıcı arayüzüne ekle", - "disabled_entities": "+{count} {count, plural,\n one {disabled entity}\n other {disabled entities}\n}", + "disabled_entities": "+{count} {count, plural,\n one {engelli varlık}\n other {engelli varlıklar}\n}", "entities": "Varlıkları", "hide_disabled": "Devre dışı olanları gizle", "none": "Bu cihazın varlığı yok" @@ -1814,12 +1814,12 @@ "disable_selected": { "button": "Seçilenleri devre dışı bırak", "confirm_text": "Devre dışı bırakılan varlıklar Home Assistant'a eklenmeyecek.", - "confirm_title": "Do you want to disable {number} {number, plural,\n one {entity}\n other {entities}\n}?" + "confirm_title": "devre dışı bırakmak istiyor musunuz {number} {number, plural,\n one {varlık}\n other {varlıklar}\n}?" }, "enable_selected": { "button": "Seçilenleri etkinleştir", "confirm_text": "Bu, artık devre dışı bırakılırsa, onları Home Assistant 'nda yeniden kullanılabilir hale getirecektir.", - "confirm_title": "Do you want to enable {number} {number, plural,\n one {entity}\n other {entities}\n}?" + "confirm_title": "etkinleştirmek istiyor musunuz {number} {number, plural,\n one {varlık}\n other {varlıklar}\n}?" }, "filter": { "filter": "filtre", @@ -1842,9 +1842,9 @@ "remove_selected": { "button": "Seçilenleri kaldır", "confirm_partly_text": "Yalnızca seçili {selected} varlıkları {removable} kaldırabilirsiniz. Varlıklar yalnızca entegrasyon özelliklerini sağlamadığında kaldırılabilir. Bazen, kaldırılan bir entegrasyondaki varlıkları kaldırabilmeniz için önce Home Assistant'ı yeniden başlatmanız gerekir. Çıkarılabilir varlıkları kaldırmak istediğinizden emin misiniz?", - "confirm_partly_title": "Only {number} {number, plural,\n one {selected entity}\n other {selected entities}\n} can be removed.", + "confirm_partly_title": "Sadece {number} {number, plural,\n one {seçilen varlık}\n other {seçilen varlıklar}\n} kaldırılabilir.", "confirm_text": "Bu varlıkları içeriyorsa, bunları Lovelace yapılandırmanız ve otomasyonlarınızdan kaldırmalısınız.", - "confirm_title": "Do you want to remove {number} {number, plural,\n one {entity}\n other {entities}\n}?" + "confirm_title": "Kaldırmak istiyormusunuz {number} {number, plural,\n one {varlık}\n other {varlıklar}\n}?" }, "search": "Varlıkları ara", "selected": "{number} seçildi", @@ -1963,9 +1963,9 @@ "delete_button": "{integration} silin", "delete_confirm": "Bu entegrasyonu silmek istediğinizden emin misiniz?", "device_unavailable": "Cihaz kullanılamıyor", - "devices": "{count} {count, plural,\n one {device}\n other {devices}\n}", + "devices": "{count} {count, plural,\n one {cihaz}\n other {cihazlar}\n}", "documentation": "Dökümanlar", - "entities": "{count} {count, plural,\n one {entity}\n other {entities}\n}", + "entities": "{count} {count, plural,\n one {varlık}\n other {varlıklar}\n}", "entity_unavailable": "Varlık kullanılamıyor", "firmware": "Aygıt yazılımı: {version}", "hub": "Şununla bağlı:", @@ -1979,7 +1979,7 @@ "reload_restart_confirm": "Bu entegrasyonu yeniden yüklemeyi bitirmek için Home Assistant'ı yeniden başlatın", "rename": "Yeniden adlandır", "restart_confirm": "Bu entegrasyonu kaldırmaya devam etmek için Home Assistant'ı yeniden başlatın", - "services": "{count} {count, plural,\n one {service}\n other {services}\n}", + "services": "{count} {count, plural,\n one {hizmet}\n other {hizmetler}\n}", "settings_button": "{integration} ayarlarını düzenleyin", "system_options": "Sistem seçenekleri", "system_options_button": "{integration} için sistem seçenekleri", @@ -3504,7 +3504,7 @@ "working": "Lütfen bekleyin" }, "initializing": "Başlatılıyor", - "logging_in_to_with": "Logging in to **{locationName}** with **{authProviderName}**.", + "logging_in_to_with": "**{locationName}** ile **{authProviderName}** giriş.", "logging_in_with": "**{authProviderName} ile giriş.", "pick_auth_provider": "Veya oturum aç" }, From 62dd0a561ed72ae58a50d1f2268ac91742780fc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Wed, 3 Feb 2021 15:45:01 +0100 Subject: [PATCH 36/54] Fix display issue wtih addon-info grid (#8313) --- hassio/src/addon-view/info/hassio-addon-info.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/hassio/src/addon-view/info/hassio-addon-info.ts b/hassio/src/addon-view/info/hassio-addon-info.ts index 8c91d8b98b..4ce12665d8 100644 --- a/hassio/src/addon-view/info/hassio-addon-info.ts +++ b/hassio/src/addon-view/info/hassio-addon-info.ts @@ -1055,18 +1055,16 @@ class HassioAddonInfo extends LitElement { } .addon-options { - max-width: 50%; - } - .addon-options.started { max-width: 90%; } .addon-container { display: grid; grid-auto-flow: column; - grid-template-columns: 1fr auto; + grid-template-columns: 60% 40%; } - .addon-container div:last-of-type { + + .addon-container > div:last-of-type { align-self: end; } From f7c7ac44f7cd6bd45cd5664ca3b88c5bd6b50ecc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Wed, 3 Feb 2021 15:52:52 +0100 Subject: [PATCH 37/54] Show eMMC lifetime (#8302) --- hassio/src/system/hassio-host-info.ts | 12 ++++++++++++ src/data/hassio/host.ts | 1 + 2 files changed, 13 insertions(+) diff --git a/hassio/src/system/hassio-host-info.ts b/hassio/src/system/hassio-host-info.ts index 773fcc8bab..b4fd17f9b2 100644 --- a/hassio/src/system/hassio-host-info.ts +++ b/hassio/src/system/hassio-host-info.ts @@ -150,6 +150,18 @@ class HassioHostInfo extends LitElement { : ""}
    + ${this.supervisor.host.disk_life_time !== "" && + this.supervisor.host.disk_life_time >= 10 + ? html` + + eMMC Lifetime Used + + + ${this.supervisor.host.disk_life_time - 10}% - + ${this.supervisor.host.disk_life_time}% + + ` + : ""} ${metrics.map( (metric) => html` diff --git a/src/data/hassio/host.ts b/src/data/hassio/host.ts index 10af5955f8..79e518b4c9 100644 --- a/src/data/hassio/host.ts +++ b/src/data/hassio/host.ts @@ -5,6 +5,7 @@ export type HassioHostInfo = { chassis: string; cpe: string; deployment: string; + disk_life_time: number | ""; disk_free: number; disk_total: number; disk_used: number; From 17aff2f9b8e06439187ca241892a0a7ddbbdbbeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Wed, 3 Feb 2021 15:58:17 +0100 Subject: [PATCH 38/54] Move save button to the right (#8314) --- hassio/src/addon-view/config/hassio-addon-config.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hassio/src/addon-view/config/hassio-addon-config.ts b/hassio/src/addon-view/config/hassio-addon-config.ts index 8190267d71..5d7bd46368 100644 --- a/hassio/src/addon-view/config/hassio-addon-config.ts +++ b/hassio/src/addon-view/config/hassio-addon-config.ts @@ -94,7 +94,7 @@ class HassioAddonConfig extends LitElement { ? "" : html`
    Invalid YAML
    `}
    -
    +
    Date: Wed, 3 Feb 2021 16:08:29 +0100 Subject: [PATCH 39/54] Fix button layout for addon-info (#8315) --- .../src/addon-view/info/hassio-addon-info.ts | 163 +++++++++--------- 1 file changed, 82 insertions(+), 81 deletions(-) diff --git a/hassio/src/addon-view/info/hassio-addon-info.ts b/hassio/src/addon-view/info/hassio-addon-info.ts index 4ce12665d8..79674fac22 100644 --- a/hassio/src/addon-view/info/hassio-addon-info.ts +++ b/hassio/src/addon-view/info/hassio-addon-info.ts @@ -536,85 +536,88 @@ class HassioAddonInfo extends LitElement { ${this._error ? html`
    ${this._error}
    ` : ""}
    - ${this.addon.version - ? html` - ${this._computeIsRunning - ? html` - - Stop - - - Restart - - ` - : html` - - Start - - `} - ${this._computeShowWebUI - ? html` - - +
    + ${this.addon.version + ? this._computeIsRunning + ? html` + + Stop + + + Restart + + ` + : html` + + Start + + ` + : html` + ${!this.addon.available + ? html` +

    + This add-on is not available on your system. +

    + ` + : ""} + + Install + + `} +
    +
    + ${this.addon.version + ? html` ${this._computeShowWebUI + ? html` + + + Open web UI + + + ` + : ""} + ${this._computeShowIngressUI + ? html` + Open web UI - - ` - : ""} - ${this._computeShowIngressUI - ? html` - - Open web UI - - ` - : ""} - - Uninstall - - ${this.addon.build - ? html` - - Rebuild - - ` - : ""} - ` - : html` - ${!this.addon.available - ? html` -

    - This add-on is not available on your system. -

    - ` - : ""} - - Install - - `} + ` + : ""} + + Uninstall + + ${this.addon.build + ? html` + + Rebuild + + ` + : ""}` + : ""} +
    @@ -994,9 +997,6 @@ class HassioAddonInfo extends LitElement { font-weight: 500; color: var(--primary-color); } - .right { - float: right; - } protection-enable mwc-button { --mdc-theme-primary: white; } @@ -1019,7 +1019,8 @@ class HassioAddonInfo extends LitElement { margin-bottom: 16px; } .card-actions { - display: flow-root; + justify-content: space-between; + display: flex; } .security h3 { margin-bottom: 8px; From e06642e892b0700ec414a93c1a976174d80d5126 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Wed, 3 Feb 2021 17:35:55 +0100 Subject: [PATCH 40/54] Show the reason why an add-on is not available (#8312) Co-authored-by: Bram Kragten --- .../src/addon-view/hassio-addon-dashboard.ts | 4 ++ hassio/src/addon-view/hassio-addon-router.ts | 4 ++ .../addon-view/info/hassio-addon-info-tab.ts | 4 ++ .../src/addon-view/info/hassio-addon-info.ts | 56 +++++++++++++++---- hassio/src/util/addon.ts | 7 +++ src/data/hassio/addon.ts | 3 +- src/data/hassio/supervisor.ts | 9 +-- src/data/supervisor/supervisor.ts | 2 + 8 files changed, 72 insertions(+), 17 deletions(-) create mode 100644 hassio/src/util/addon.ts diff --git a/hassio/src/addon-view/hassio-addon-dashboard.ts b/hassio/src/addon-view/hassio-addon-dashboard.ts index bee5d12166..4260ea4f92 100644 --- a/hassio/src/addon-view/hassio-addon-dashboard.ts +++ b/hassio/src/addon-view/hassio-addon-dashboard.ts @@ -19,6 +19,7 @@ import { fetchHassioAddonInfo, HassioAddonDetails, } from "../../../src/data/hassio/addon"; +import { Supervisor } from "../../../src/data/supervisor/supervisor"; import "../../../src/layouts/hass-tabs-subpage"; import type { PageNavigation } from "../../../src/layouts/hass-tabs-subpage"; import { haStyle } from "../../../src/resources/styles"; @@ -35,6 +36,8 @@ import "./log/hassio-addon-logs"; class HassioAddonDashboard extends LitElement { @property({ attribute: false }) public hass!: HomeAssistant; + @property({ attribute: false }) public supervisor!: Supervisor; + @property({ attribute: false }) public route!: Route; @property({ attribute: false }) public addon?: HassioAddonDetails; @@ -106,6 +109,7 @@ class HassioAddonDashboard extends LitElement { .route=${route} .narrow=${this.narrow} .hass=${this.hass} + .supervisor=${this.supervisor} .addon=${this.addon} > diff --git a/hassio/src/addon-view/hassio-addon-router.ts b/hassio/src/addon-view/hassio-addon-router.ts index 56892612fb..e2d540527d 100644 --- a/hassio/src/addon-view/hassio-addon-router.ts +++ b/hassio/src/addon-view/hassio-addon-router.ts @@ -1,5 +1,6 @@ import { customElement, property } from "lit-element"; import { HassioAddonDetails } from "../../../src/data/hassio/addon"; +import { Supervisor } from "../../../src/data/supervisor/supervisor"; import { HassRouterPage, RouterOptions, @@ -17,6 +18,8 @@ class HassioAddonRouter extends HassRouterPage { @property({ attribute: false }) public hass!: HomeAssistant; + @property({ attribute: false }) public supervisor!: Supervisor; + @property({ attribute: false }) public addon!: HassioAddonDetails; protected routerOptions: RouterOptions = { @@ -41,6 +44,7 @@ class HassioAddonRouter extends HassRouterPage { protected updatePageEl(el) { el.route = this.routeTail; el.hass = this.hass; + el.supervisor = this.supervisor; el.addon = this.addon; el.narrow = this.narrow; } diff --git a/hassio/src/addon-view/info/hassio-addon-info-tab.ts b/hassio/src/addon-view/info/hassio-addon-info-tab.ts index 620ea89f51..dffd2a8b66 100644 --- a/hassio/src/addon-view/info/hassio-addon-info-tab.ts +++ b/hassio/src/addon-view/info/hassio-addon-info-tab.ts @@ -9,6 +9,7 @@ import { } from "lit-element"; import "../../../../src/components/ha-circular-progress"; import { HassioAddonDetails } from "../../../../src/data/hassio/addon"; +import { Supervisor } from "../../../../src/data/supervisor/supervisor"; import { haStyle } from "../../../../src/resources/styles"; import { HomeAssistant } from "../../../../src/types"; import { hassioStyle } from "../../resources/hassio-style"; @@ -20,6 +21,8 @@ class HassioAddonInfoDashboard extends LitElement { @property({ attribute: false }) public hass!: HomeAssistant; + @property({ attribute: false }) public supervisor!: Supervisor; + @property({ attribute: false }) public addon?: HassioAddonDetails; protected render(): TemplateResult { @@ -32,6 +35,7 @@ class HassioAddonInfoDashboard extends LitElement {
    diff --git a/hassio/src/addon-view/info/hassio-addon-info.ts b/hassio/src/addon-view/info/hassio-addon-info.ts index 79674fac22..fd93dfaa18 100644 --- a/hassio/src/addon-view/info/hassio-addon-info.ts +++ b/hassio/src/addon-view/info/hassio-addon-info.ts @@ -54,6 +54,7 @@ import { fetchHassioStats, HassioStats, } from "../../../../src/data/hassio/common"; +import { Supervisor } from "../../../../src/data/supervisor/supervisor"; import { showAlertDialog, showConfirmationDialog, @@ -65,6 +66,7 @@ import "../../components/hassio-card-content"; import "../../components/supervisor-metric"; import { showHassioMarkdownDialog } from "../../dialogs/markdown/show-dialog-hassio-markdown"; import { hassioStyle } from "../../resources/hassio-style"; +import { addonArchIsSupported } from "../../util/addon"; const STAGE_ICON = { stable: mdiCheckCircle, @@ -137,6 +139,8 @@ class HassioAddonInfo extends LitElement { @property({ attribute: false }) public addon!: HassioAddonDetails; + @property({ attribute: false }) public supervisor!: Supervisor; + @internalProperty() private _metrics?: HassioStats; @internalProperty() private _error?: string; @@ -170,11 +174,25 @@ class HassioAddonInfo extends LitElement { iconClass="update" > ${!this.addon.available - ? html` -

    - This update is no longer compatible with your system. -

    - ` + ? !addonArchIsSupported( + this.supervisor.info.supported_arch, + this.addon.arch + ) + ? html` +

    + This add-on is not compatible with the processor of + your device or the operating system you have installed + on your device. +

    + ` + : html` +

    + You are running Home Assistant + ${this.supervisor.core.version}, to update to this + version of the add-on you need at least version + ${this.addon.homeassistant} of Home Assistant +

    + ` : ""}
    @@ -534,6 +552,27 @@ class HassioAddonInfo extends LitElement {
    ${this._error ? html`
    ${this._error}
    ` : ""} + ${!this.addon.available + ? !addonArchIsSupported( + this.supervisor.info.supported_arch, + this.addon.arch + ) + ? html` +

    + This add-on is not compatible with the processor of your + device or the operating system you have installed on your + device. +

    + ` + : html` +

    + You are running Home Assistant + ${this.supervisor.core.version}, to install this add-on you + need at least version ${this.addon.homeassistant} of Home + Assistant +

    + ` + : ""}
    @@ -561,13 +600,6 @@ class HassioAddonInfo extends LitElement { ` : html` - ${!this.addon.available - ? html` -

    - This add-on is not available on your system. -

    - ` - : ""} + addon_archs.some((arch) => supported_archs.includes(arch)) +); diff --git a/src/data/hassio/addon.ts b/src/data/hassio/addon.ts index 93a3e222ee..a56a2670e9 100644 --- a/src/data/hassio/addon.ts +++ b/src/data/hassio/addon.ts @@ -1,5 +1,6 @@ import { HaFormSchema } from "../../components/ha-form/ha-form"; import { HomeAssistant } from "../../types"; +import { SupervisorArch } from "../supervisor/supervisor"; import { hassioApiResultExtractor, HassioResponse } from "./common"; export interface HassioAddonInfo { @@ -24,7 +25,7 @@ export interface HassioAddonInfo { export interface HassioAddonDetails extends HassioAddonInfo { apparmor: "disable" | "default" | "profile"; - arch: "armhf" | "aarch64" | "i386" | "amd64"; + arch: SupervisorArch[]; audio_input: null | string; audio_output: null | string; audio: boolean; diff --git a/src/data/hassio/supervisor.ts b/src/data/hassio/supervisor.ts index 6cc6b04433..0db84b3d6c 100644 --- a/src/data/hassio/supervisor.ts +++ b/src/data/hassio/supervisor.ts @@ -1,9 +1,10 @@ import { HomeAssistant, PanelInfo } from "../../types"; +import { SupervisorArch } from "../supervisor/supervisor"; import { HassioAddonInfo, HassioAddonRepository } from "./addon"; import { hassioApiResultExtractor, HassioResponse } from "./common"; export type HassioHomeAssistantInfo = { - arch: string; + arch: SupervisorArch; audio_input: string | null; audio_output: string | null; boot: boolean; @@ -22,7 +23,7 @@ export type HassioHomeAssistantInfo = { export type HassioSupervisorInfo = { addons: HassioAddonInfo[]; addons_repositories: HassioAddonRepository[]; - arch: string; + arch: SupervisorArch; channel: string; debug: boolean; debug_block: boolean; @@ -39,7 +40,7 @@ export type HassioSupervisorInfo = { }; export type HassioInfo = { - arch: string; + arch: SupervisorArch; channel: string; docker: string; features: string[]; @@ -51,7 +52,7 @@ export type HassioInfo = { operating_system: string; supervisor: string; supported: boolean; - supported_arch: string[]; + supported_arch: SupervisorArch[]; timezone: string; }; diff --git a/src/data/supervisor/supervisor.ts b/src/data/supervisor/supervisor.ts index 7a5e6c2705..bc0161becf 100644 --- a/src/data/supervisor/supervisor.ts +++ b/src/data/supervisor/supervisor.ts @@ -7,6 +7,8 @@ import { HassioSupervisorInfo, } from "../hassio/supervisor"; +export type SupervisorArch = "armhf" | "armv7" | "aarch64" | "i386" | "amd64"; + export interface Supervisor { host: HassioHostInfo; supervisor: HassioSupervisorInfo; From fe3d22d4f868ce7247f8772fcbe8d2f16c9579e8 Mon Sep 17 00:00:00 2001 From: Tobias Sauerwein Date: Wed, 3 Feb 2021 20:51:28 +0100 Subject: [PATCH 41/54] Only display current temp when not None (#8316) Co-authored-by: Bram Kragten --- .../lovelace/cards/hui-thermostat-card.ts | 45 ++++++++++--------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/src/panels/lovelace/cards/hui-thermostat-card.ts b/src/panels/lovelace/cards/hui-thermostat-card.ts index d78318531f..64c0c54714 100644 --- a/src/panels/lovelace/cards/hui-thermostat-card.ts +++ b/src/panels/lovelace/cards/hui-thermostat-card.ts @@ -132,27 +132,30 @@ export class HuiThermostatCard extends LitElement implements LovelaceCard { > `; - const currentTemperature = !isNaN(stateObj.attributes.current_temperature) - ? svg` - - - ${formatNumber( - stateObj.attributes.current_temperature, - this.hass!.language - )} - - ${this.hass.config.unit_system.temperature} - - - - ` - : ""; + const currentTemperature = svg` + + + ${ + stateObj.attributes.current_temperature !== null && + !isNaN(stateObj.attributes.current_temperature) + ? svg`${formatNumber( + stateObj.attributes.current_temperature, + this.hass!.language + )} + + ${this.hass.config.unit_system.temperature} + ` + : "" + } + + + `; const setValues = svg` From 9ccfa79199a688b026bf7c948099d9d23528f196 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Thu, 4 Feb 2021 01:16:30 +0000 Subject: [PATCH 42/54] Translation update --- translations/frontend/de.json | 6 +-- translations/frontend/lt.json | 4 +- translations/frontend/nl.json | 26 ++++++++++- translations/frontend/sv.json | 82 ++++++++++++++++++++++++++++++++--- translations/frontend/tr.json | 12 ++--- 5 files changed, 112 insertions(+), 18 deletions(-) diff --git a/translations/frontend/de.json b/translations/frontend/de.json index bb0c673538..cf048adcf7 100644 --- a/translations/frontend/de.json +++ b/translations/frontend/de.json @@ -603,10 +603,10 @@ "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}", + "cleared_device_class": "zurückgesetzt (kein(e) {device_class} erkannt)", + "detected_device_class": "{device_class} erkannt", "rose": "aufgegangen", - "set": "einstellen", + "set": "untergegangen", "turned_off": "ausgeschaltet", "turned_on": "eingeschaltet", "was_at_home": "wurde zu Hause erkannt", diff --git a/translations/frontend/lt.json b/translations/frontend/lt.json index f0f748cc21..c9af91d638 100644 --- a/translations/frontend/lt.json +++ b/translations/frontend/lt.json @@ -261,7 +261,8 @@ "ui": { "card": { "alarm_control_panel": { - "arm_custom_bypass": "Individualizuotas apėjimas" + "arm_custom_bypass": "Individualizuotas apėjimas", + "arm_night": "Naktinė apsauga" }, "camera": { "not_available": "Vaizdas negalimas" @@ -983,6 +984,7 @@ }, "lovelace": { "cards": { + "action_confirmation": "Ar tikrai norite atlikti veiksmą \"{action}\" ?", "empty_state": { "go_to_integrations_page": "Į integracijų puslapį", "title": "Sveiki sugrįžę namo" diff --git a/translations/frontend/nl.json b/translations/frontend/nl.json index 4f9420c58d..81c4ac6795 100644 --- a/translations/frontend/nl.json +++ b/translations/frontend/nl.json @@ -2666,36 +2666,58 @@ }, "zwave_js": { "add_node": { + "follow_device_instructions": "Volg de aanwijzingen die bij het apparaat zijn geleverd om de koppeling van het apparaat te activeren.", + "inclusion_failed": "Het knooppunt kon niet worden toegevoegd. Controleer de logs voor meer informatie.", + "inclusion_finished": "Het knooppunt is toegevoegd. Het kan een paar minuten duren voordat alle entiteiten zichtbaar zijn, omdat we het opzetten van het knooppunt op de achtergrond afwerken.", + "introduction": "Deze wizard begeleidt u bij het toevoegen van een knooppunt aan uw Z-Wave netwerk.", + "title": "Voeg een Z-Wave knooppunt toe", "view_device": "Bekijk apparaat" }, "button": "Configureer", "common": { + "add_node": "Knooppunt toevoegen", "close": "Sluiten", - "network": "Netwerk" + "network": "Netwerk", + "node_id": "Knooppunt-ID", + "remove_node": "Knooppunt verwijderen" }, "dashboard": { "driver_version": "Driver Versie", "dump_dead_nodes_text": "Sommige van uw knooppunten reageerden niet en worden verondersteld onbereikbaar te zijn. Deze worden niet volledig geëxporteerd.", "dump_dead_nodes_title": "Sommige van uw knooppunten zijn onbereikbaar", "dump_not_ready_confirm": "Downloaden", + "dump_not_ready_text": "Als u een export maakt terwijl niet alle knooppunten gereed zijn, mist u mogelijk de benodigde gegevens. Geef uw netwerk wat tijd om alle knooppunten te doorzoeken. Wilt u doorgaan met de dump?", "dump_not_ready_title": "Nog niet alle knooppunten zijn gereed", + "header": "Beheer je Z-Wave netwerk", + "introduction": "Beheer uw Z-Wave netwerk en Z-Wave knooppunten", + "node_count": "Aantal knooppunten", "nodes_ready": "Knooppunten gereed", "server_version": "Server Versie" }, + "device_info": { + "node_ready": "Knooppunt gereed", + "node_status": "Knooppuntstatus", + "zwave_info": "Z-Wave info" + }, "navigation": { "network": "Netwerk" }, "network_status": { "connected": "Verbonden", + "connecting": "Verbinden", "unknown": "Onbekend" }, "node_status": { "alive": "Levend", "asleep": "In slaap", "awake": "Wakker", - "dead": "Onbereikbaar" + "dead": "Onbereikbaar", + "unknown": "Onbekend" }, "remove_node": { + "exclusion_failed": "Het knooppunt kon niet worden verwijderd. Controleer de logboeken voor meer informatie.", + "exclusion_finished": "Knooppunt {id} is verwijderd uit het Z-Wave-netwerk.", + "introduction": "Verwijder een knooppunt uit uw Z-Wave-netwerk en verwijder het gekoppelde apparaat met bijbehorende entiteiten uit Home Assistant.", "title": "Een Z-Wave Node verwijderen" } }, diff --git a/translations/frontend/sv.json b/translations/frontend/sv.json index 8a75d62173..bfdd339dc9 100644 --- a/translations/frontend/sv.json +++ b/translations/frontend/sv.json @@ -765,6 +765,7 @@ "enabled_label": "Aktivera entitet", "enabled_restart_confirm": "Starta om Home Assistant för att slutföra aktiveringen av enheterna", "entity_id": "Entitets-ID", + "follow_device_area": "Följ enhets område", "icon": "Ikon", "icon_error": "Ikoner ska vara i formatet 'prefix:ikonnamn', t.ex. 'mdi:home'", "name": "Namn", @@ -1020,8 +1021,11 @@ "errors": { "config": { "edit_in_yaml_supported": "Du kan fortfarande redigera din konfiguration i YAML.", + "editor_not_available": "Ingen visuell redigerare tillgänglig för typen \"{type}\".", + "editor_not_supported": "Visuell redigerare stöds inte för den här konfigurationen", "error_detected": "Konfigurationsfel upptäcktes", - "key_missing": "Nödvändig nyckel \"{key}\" saknas." + "key_missing": "Nödvändig nyckel \"{key}\" saknas.", + "no_type_provided": "Ingen typ angiven." } }, "login-form": { @@ -1527,10 +1531,15 @@ "tts": { "default_language": "Standardspråk att använda", "dialog": { + "example_message": "Hej {name} , du kan spela vilken text som helst, på vilken mediaspelare du vill!", "header": "Prova Text till tal", "play": "Spela", + "target": "Mål", "target_browser": "Webbläsare" }, + "female": "Kvinna", + "info": "Gör ditt hem mer personligt genom att få det att prata med vår tjänst för text-till-tal.\nDu kan använda denna i automationer och skript genom att använda tjänsten {service}.", + "male": "Man", "title": "Text till tal", "try": "Prova" }, @@ -2616,7 +2625,8 @@ "title": "ZigBee Hemautomation", "visualization": { "caption": "Visualisering", - "header": "Visualisering av nätverk" + "header": "Visualisering av nätverk", + "highlight_label": "Markera enheter" } }, "zone": { @@ -2651,21 +2661,68 @@ "zwave_js": { "add_node": { "cancel_inclusion": "Avbryt inkludering", + "controller_in_inclusion_mode": "Din Z-Wave-styrenhet är nu i inkluderingsläge.", + "follow_device_instructions": "Följ anvisningarna som följde med din enhet för att aktivera parning på enheten.", + "inclusion_failed": "Noden kunde inte läggas till. Kontrollera loggarna för mer information.", + "inclusion_finished": "Noden har lagts till. Det kan ta några minuter för alla entiteter att dyka upp när vi avslutar inställningen av noden i bakgrunden.", + "introduction": "Denna guide guidar dig genom att lägga till en nod i ditt Z-Wave-nätverk.", "start_inclusion": "Påbörja inkludering", "start_secure_inclusion": "Påbörja säker inkludering", - "use_secure_inclusion": "Använd säker inkludering" + "title": "Lägg till Z-Wave nod", + "use_secure_inclusion": "Använd säker inkludering", + "view_device": "Visa enhet" }, "button": "Konfigurera", "common": { - "close": "Stäng" + "add_node": "Lägg till nod", + "close": "Stäng", + "home_id": "Hem ID", + "network": "Nätverk", + "node_id": "Nod ID", + "remove_node": "Ta bort nod" + }, + "dashboard": { + "driver_version": "Drivrutinsversion", + "dump_dead_nodes_title": "Några av dina noder är döda", + "dump_debug": "Ladda ner en rapport från ditt nätverk för att diagnostisera problem", + "dump_not_ready_confirm": "Ladda ner", + "dump_not_ready_title": "Alla noder är inte redo än", + "header": "Hantera ditt Z-Wave-nätverk", + "home_id": "Hem ID", + "introduction": "Hantera ditt Z-Wave-nätverk och dina noder.", + "node_count": "Antal noder", + "nodes_ready": "Noder redo", + "server_version": "Serverversion" + }, + "device_info": { + "node_ready": "Nod redo", + "node_status": "Nodstatus", + "zwave_info": "Z-Wave info" + }, + "navigation": { + "network": "Nätverk" }, "network_status": { "connected": "Ansluten", - "connecting": "Ansluter" + "connecting": "Ansluter", + "unknown": "Okänd" }, "node_status": { + "alive": "Levande", + "asleep": "Sovande", + "awake": "Vaken", "dead": "Död", "unknown": "Okänd" + }, + "remove_node": { + "cancel_exclusion": "Avbryt exkludering", + "controller_in_exclusion_mode": "Din Z-Wave-styrenhet är nu i exkluderingsläge.", + "exclusion_failed": "Det gick inte att ta bort noden. Vänligen kontrollera loggarna för mer information.", + "exclusion_finished": "Noden {id} har tagits bort från ditt Z-Wave-nätverk.", + "follow_device_instructions": "Följ anvisningarna som följde med din enhet för att aktivera exkluderingen.", + "introduction": "Ta bort nod från ditt Z-Wave-nätverk samt ta bort tillhörande enhet och entiteter från Home Assistant.", + "start_exclusion": "Starta exkludering", + "title": "Ta bort en Z-Wave nod" } }, "zwave": { @@ -2680,6 +2737,11 @@ }, "description": "Hantera ditt Z-Wave nätverk", "learn_more": "Läs mer om Z-Wave", + "migration": { + "ozw": { + "header": "Migrera till OpenZWave" + } + }, "network_management": { "header": "Hantering av Z-Wave-nätverk", "introduction": "Kör kommandon som påverkar Z-Wave-nätverket. De flesta kommandon ger ingen bekräftelse om de lyckas men du kan kontrollera OZW-loggen för att försöka ta reda på det." @@ -2862,6 +2924,13 @@ }, "cards": { "action_confirmation": "Är du säker på att du vill utföra händelsen \"{action}\"?", + "actions": { + "action_confirmation": "Är du säker på att du vill utföra händelsen \"{action}\"?", + "no_entity_more_info": "Ingen entitet angiven för mer info dialog", + "no_entity_toggle": "Ingen entitet angiven för växla", + "no_navigation_path": "Ingen navigationsväg angiven", + "no_url": "Ingen URL att öppna angiven" + }, "confirm_delete": "Är du säker på att du vill ta bort det här kortet?", "empty_state": { "go_to_integrations_page": "Gå till integrationssidan.", @@ -3047,7 +3116,8 @@ "grid": { "columns": "Kolumner", "description": "Med Grid-kortet kan du visa flera kort i ett rutnät.", - "name": "Rutnät" + "name": "Rutnät", + "square": "Återge kort som fyrkanter" }, "history-graph": { "description": "Historikdiagramkortet låter dig att visa en graf för varje listad enhet.", diff --git a/translations/frontend/tr.json b/translations/frontend/tr.json index 9cb9c715c1..7e61411e7a 100644 --- a/translations/frontend/tr.json +++ b/translations/frontend/tr.json @@ -1492,14 +1492,14 @@ "info": "Home Assistant Cloud için Alexa entegrasyonu ile, tüm Home Assistant cihazlarınızı herhangi bir Alexa özellikli cihaz üzerinden kontrol edebilirsiniz.", "info_state_reporting": "Durum raporlamayı etkinleştirirseniz, Home Assistant sergilenmis varlıkların tüm durum değişikliklerini Amazon'a gönderir. Bu, Alexa uygulamasında her zaman en son durumları görmenizi ve rutin oluşturmak için durum değişikliklerini kullanmanızı sağlar.", "manage_entities": "Varlıkları Yönetin", - "state_reporting_error": "Durum {enable_disable} rapor edilemidi.", + "state_reporting_error": "Durum {enable_disable} rapor edilemiyor.", "sync_entities": "Varlıkları Amazon ile Senkronize Etme", "sync_entities_error": "Varlıklar senkronize edilemedi:", "title": "Alexa" }, "connected": "Bağlı", "connection_status": "Cloud bağlantı durumu", - "fetching_subscription": "Abonelik alinyor...", + "fetching_subscription": "Abonelik alınıyor…", "google": { "config_documentation": "Yapılandırma belgeleri", "devices_pin": "Güvenlik Cihazları Pın", @@ -1630,13 +1630,13 @@ "forgot_password": "Parolanızı mı unuttunuz?", "introduction": "Home Assistant Cloud, evden uzaktayken örneğinize güvenli bir uzaktan bağlantı sağlar. Ayrıca diğer bulut hizmetlerine bağlanmanıza olanak tanır: Amazon Alexa ve Google Assistant.", "introduction2": "Bu hizmet ortağımız tarafından yürütülmektedir ", - "introduction2a": "tarafından verilmektedir, Home Assistant ve Hass.io kurucuları tarafından kurulan bir şirket.", + "introduction2a": " tarafından verilmektedir, Home Assistant ve Hass.io kurucuları tarafından kurulan bir şirket.", "introduction3": "Home Assistant Cloud, bir aylık ücretsiz deneme sürümüne sahip bir abonelik hizmetidir. Ödeme bilgisi gerekmez.", "learn_more_link": "Home Assistant Cloud hakkında daha fazla bilgi edin", "password": "Parola", "password_error_msg": "Parolalar en az 8 karakterdir", "sign_in": "Oturum Aç", - "start_trial": "1 aylık ücretsiz deneme sürümünüzü başlatın", + "start_trial": "1 aylık ücretsiz deneme sürümünüzü başlatın.", "title": "Cloud girişi", "trial_info": "Ödeme bilgisi gerekmez" }, @@ -1653,7 +1653,7 @@ "information": "Home Assistant Cloud ile bir aylık ücretsiz denemenizi başlatmak için bir hesap oluşturun. Ödeme bilgisi gerekmez.", "information2": "Deneme, aşağıdakiler de dahil olmak üzere Home Assistant Cloud'un tüm avantajlarına erişmenizi sağlayacaktır:", "information3": "Bu hizmet ortağımız ", - "information3a": "tarafından verilmektedir, Home Assistant ve Hass.io kurucuları tarafından kurulan bir şirket.", + "information3a": " tarafından verilmektedir, Home Assistant ve Hass.io kurucuları tarafından kurulan bir şirket.", "information4": "Bir hesap kaydederek aşağıdaki şartlar ve koşulları kabul etmiş olursunuz.", "link_privacy_policy": "Gizlilik Politikası", "link_terms_conditions": "Şartlar ve koşullar", @@ -2380,7 +2380,7 @@ }, "server_control": { "caption": "Sunucu Kontrolleri", - "description": "Home Assistant sunucusunu yeniden başlatın veya durdurun", + "description": "Home Assistant sunucusunu yeniden başlatın veya durdurun.", "section": { "reloading": { "automation": "Otomasyonları yeniden yükle", From 4273b72d71883a1e723213b5adfd8615b0d8edce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Thu, 4 Feb 2021 14:01:53 +0100 Subject: [PATCH 43/54] Fix issue where schema is null (#8322) Co-authored-by: Paulus Schoutsen --- hassio/src/addon-view/config/hassio-addon-config.ts | 10 ++++++---- src/data/hassio/addon.ts | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/hassio/src/addon-view/config/hassio-addon-config.ts b/hassio/src/addon-view/config/hassio-addon-config.ts index 5d7bd46368..5762d17da9 100644 --- a/hassio/src/addon-view/config/hassio-addon-config.ts +++ b/hassio/src/addon-view/config/hassio-addon-config.ts @@ -108,10 +108,12 @@ class HassioAddonConfig extends LitElement { protected firstUpdated(changedProps) { super.firstUpdated(changedProps); - this._canShowSchema = !this.addon.schema.find( - // @ts-ignore - (entry) => !SUPPORTED_UI_TYPES.includes(entry.type) || entry.multiple - ); + this._canShowSchema = + this.addon.schema !== null && + !this.addon.schema.find( + // @ts-ignore + (entry) => !SUPPORTED_UI_TYPES.includes(entry.type) || entry.multiple + ); this._yamlMode = !this._canShowSchema; } diff --git a/src/data/hassio/addon.ts b/src/data/hassio/addon.ts index a56a2670e9..0429734bbd 100644 --- a/src/data/hassio/addon.ts +++ b/src/data/hassio/addon.ts @@ -64,7 +64,7 @@ export interface HassioAddonDetails extends HassioAddonInfo { privileged: any; protected: boolean; rating: "1-6"; - schema: HaFormSchema[]; + schema: HaFormSchema[] | null; services_role: string[]; slug: string; startup: "initialize" | "system" | "services" | "application" | "once"; From 6a553e9554a6b6eae6ef03a60a26597427886e4f Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Fri, 5 Feb 2021 01:17:26 +0000 Subject: [PATCH 44/54] Translation update --- translations/frontend/es.json | 6 +-- translations/frontend/fi.json | 70 +++++++++++++++++++++++++++++++++-- translations/frontend/fr.json | 20 ++++++++-- translations/frontend/sv.json | 9 ++++- translations/frontend/tr.json | 4 +- 5 files changed, 95 insertions(+), 14 deletions(-) diff --git a/translations/frontend/es.json b/translations/frontend/es.json index dae74b2907..5704b835b8 100644 --- a/translations/frontend/es.json +++ b/translations/frontend/es.json @@ -1812,12 +1812,12 @@ "description": "Administra las entidades conocidas.", "picker": { "disable_selected": { - "button": "Desactivar seleccionadas", + "button": "Deshabilitar seleccionadas", "confirm_text": "Las entidades deshabilitadas no se agregarán a Home Assistant.", "confirm_title": "¿Deseas deshabilitar {number} {number, plural,\n one {entidad}\n other {entidades}\n }?" }, "enable_selected": { - "button": "Activar seleccionadas", + "button": "Habilitar seleccionadas", "confirm_text": "Esto las hará disponibles en Home Assistant de nuevo si ahora están deshabilitadas.", "confirm_title": "¿Deseas activar {number} {number, plural,\n one {entidad}\n other {entidades}\n }?" }, @@ -2421,7 +2421,7 @@ "confirm_restart": "¿Seguro que quieres reiniciar Home Assistant?", "confirm_stop": "¿Seguro que quieres detener Home Assistant?", "heading": "Administración del servidor", - "introduction": "Controla tu servidor de Home Assistant... desde Home Assistant.", + "introduction": "Controla tu servidor Home Assistant... desde Home Assistant.", "restart": "Reiniciar", "stop": "Detener" }, diff --git a/translations/frontend/fi.json b/translations/frontend/fi.json index d216050869..d27bba76c4 100644 --- a/translations/frontend/fi.json +++ b/translations/frontend/fi.json @@ -401,6 +401,7 @@ "direction": "Suunta", "forward": "Eteenpäin", "oscillate": "Kääntyminen", + "preset_mode": "Esiasetustila", "reverse": "Taaksepäin", "speed": "Nopeus" }, @@ -556,6 +557,9 @@ "remove_user": "Poista käyttäjä", "select_blueprint": "Valitse piirustus" }, + "calendar": { + "today": "Tänään" + }, "data-table": { "no-data": "Ei dataa", "search": "Hae" @@ -745,6 +749,8 @@ "control": "Ohjaus", "dismiss": "Hylkää", "editor": { + "advanced": "Lisäasetukset", + "change_device_area": "Vaihda laitteen aluetta", "confirm_delete": "Haluatko varmasti poistaa tämän kohteen?", "delete": "Poista", "device_disabled": "Tämän kohteen laite on poistettu käytöstä.", @@ -753,6 +759,7 @@ "enabled_label": "Ota kohte käyttöön", "enabled_restart_confirm": "Käynnistä Home Assistant uudelleen, jotta kohteet otetaan käyttöön", "entity_id": "Kohde ID", + "follow_device_area": "Seuraa laitteen aluetta", "icon": "Kuvakkeen yliajo", "icon_error": "Kuvakkeen tulisi olla muodossa etuliite:ikoni, esimerkiksi: mdi:home", "name": "Nimen yliajo", @@ -979,6 +986,11 @@ "second": "{count} {count, plural,\none {sekunti}\nother {sekuntia}\n}", "week": "{count} {count, plural,\n one {viikko}\n other {viikkoa}\n}" }, + "errors": { + "config": { + "no_type_provided": "Tyyppiä ei ole annettu." + } + }, "login-form": { "log_in": "Kirjaudu sisään", "password": "Salasana", @@ -1084,7 +1096,9 @@ "device_id": { "action": "Toiminta", "extra_fields": { - "code": "Koodi" + "code": "Koodi", + "message": "Viesti", + "title": "Otsikko" }, "label": "Laite" }, @@ -1470,6 +1484,17 @@ }, "sign_out": "Kirjaudu ulos", "thank_you_note": "Kiitos, että olet osa Home Assistant Cloudia. Sinun kaltaisten ihmisten takia pystymme tarjoamaan loistavan kodin automaatiokokemuksen kaikille. Kiitos!", + "tts": { + "dialog": { + "header": "Kokeile \"teksti puheeksi\"-toimintoa", + "play": "Toista", + "target": "Kohde", + "target_browser": "Selain" + }, + "female": "Nainen", + "male": "Mies", + "try": "Yritä" + }, "webhooks": { "disable_hook_error_msg": "Webhookin poistaminen epäonnistui:", "info": "Kaikille, jotka ovat määritetty käynnistymään webhookin avulla, voidaan antaa julkisesti saatavilla oleba URL jotta voit lähettää tietoja takaisin Home Assistant mistä tahansa, paljastamatta järjestelmääsi Internetiin.", @@ -2581,6 +2606,40 @@ "introduction": "Vyöhykkeiden avulla voit määrittää alueita maan päällä. Kun henkilö on vyöhykkeellä, tila saa vyöhykkeen nimen. Vyöhykkeitä voidaan käyttää myös laukaisimina tai ehtoina automaatioissa.", "no_zones_created_yet": "Näyttää siltä, että et ole vielä luonut vyöhykkeitä." }, + "zwave_js": { + "add_node": { + "view_device": "Näytä laite" + }, + "button": "Määrittele", + "common": { + "close": "Sulje", + "home_id": "Kodin ID", + "network": "Verkko" + }, + "dashboard": { + "driver_version": "Ohjaimen versio", + "dump_not_ready_confirm": "Lataa", + "home_id": "Kodin ID" + }, + "device_info": { + "node_ready": "Solmu valmis" + }, + "navigation": { + "network": "Verkko" + }, + "network_status": { + "connected": "Yhdistetty", + "connecting": "Yhdistetään", + "unknown": "Tuntematon" + }, + "node_status": { + "alive": "Elossa", + "asleep": "Unessa", + "awake": "Hereillä", + "dead": "Kuollut", + "unknown": "Tuntematon" + } + }, "zwave": { "button": "Määritä", "caption": "Z-Wave", @@ -2797,7 +2856,8 @@ "shopping-list": { "add_item": "Lisää", "checked_items": "Valitut kohteet", - "clear_items": "Tyhjää valitut kohteet" + "clear_items": "Tyhjää valitut kohteet", + "drag_and_drop": "Raahaa ja pudota" }, "starting": { "description": "Home Assistant käynnistyy...", @@ -2947,8 +3007,10 @@ "name": "Pikavilkaisu" }, "grid": { + "columns": "Sarakkeet", "description": "Ruudukkokortin avulla voit näyttää useita kortteja ruudukossa.", - "name": "Ruudukko" + "name": "Ruudukko", + "square": "Tee kortit neliöinä" }, "history-graph": { "description": "Historiakaavio-kortin avulla voit näyttää kaavion kullekin luettelossa olevalle kohteelle.", @@ -3114,6 +3176,8 @@ } }, "menu": { + "manage_dashboards": "Hallinnoi työpöytiä", + "manage_resources": "Hallinnoi resursseja", "open": "Avaa Lovelace-valikko", "raw_editor": "Raaka konfigurointieditori" }, diff --git a/translations/frontend/fr.json b/translations/frontend/fr.json index 5fe12d66e8..00081b3a02 100644 --- a/translations/frontend/fr.json +++ b/translations/frontend/fr.json @@ -401,6 +401,7 @@ "direction": "Direction", "forward": "En avant", "oscillate": "Osciller", + "preset_mode": "Mode préréglé", "reverse": "Sens inverse", "speed": "Vitesse" }, @@ -609,9 +610,9 @@ "set": "s'est couché", "turned_off": "éteint", "turned_on": "activé", - "was_at_home": "Présent", - "was_at_state": "était à {state}", - "was_away": "Absent", + "was_at_home": "a été détecté à la maison", + "was_at_state": "a été détecté à {state}", + "was_away": "a été détecté absent", "was_closed": "était fermé", "was_connected": "était connecté", "was_disconnected": "était déconnecté", @@ -755,6 +756,7 @@ "dismiss": "Ignorer", "editor": { "advanced": "Paramètres avancés", + "area": "Définir la zone d'entité uniquement", "area_note": "Par défaut, les entités d'un appareil se trouvent dans la même zone que l'appareil. Si vous modifiez la zone de cette entité, elle ne suivra plus la zone de l'appareil.", "change_device_area": "Modifier la zone de l'appareil", "confirm_delete": "Voulez-vous vraiment supprimer cette entrée ?", @@ -1142,6 +1144,7 @@ "extra_fields": { "code": "Code", "message": "Message", + "position": "Position", "title": "Titre" }, "label": "Appareil" @@ -1536,7 +1539,9 @@ "dialog": { "example_message": "Bonjour {name}, vous pouvez lire n’importe quel texte sur n’importe quel lecteur multimédia pris en charge !", "header": "Essayez la synthèse vocale", - "play": "Lecture" + "play": "Lecture", + "target": "Cible", + "target_browser": "Navigateur" }, "female": "Femme", "info": "Donnez de la personnalité à votre maison en lui faisant parler en utilisant nos services de synthèse vocale. Vous pouvez l'utiliser dans des automatismes et des scripts en utilisant le service {service}.", @@ -2664,6 +2669,7 @@ "add_node": { "cancel_inclusion": "Annuler l'inclusion", "controller_in_inclusion_mode": "Votre contrôleur Z-Wave est maintenant en mode inclusion.", + "follow_device_instructions": "Suivez les instructions fournies avec votre appareil pour déclencher l'appairage sur l'appareil.", "inclusion_failed": "Le nœud n'a pas pu être ajouté. Veuillez consulter les journaux pour plus d'informations.", "inclusion_finished": "Le nœud a été ajouté. Quelques minutes peuvent s'écouler avant que toutes les entités n'apparaissent, alors que nous terminons la mise en place du nœud en arrière-plan.", "introduction": "Cet assistant vous guidera dans l'ajout d'un nœud à votre réseau Z-Wave.", @@ -2687,7 +2693,9 @@ "driver_version": "Version du pilote", "dump_dead_nodes_text": "Certains de vos nœuds n'ont pas répondu et sont supposés morts. Ils ne seront pas entièrement exportés.", "dump_dead_nodes_title": "Certains de vos nœuds sont morts", + "dump_debug": "Téléchargez un vidage de votre réseau pour aider à diagnostiquer les problèmes", "dump_not_ready_confirm": "Télécharger", + "dump_not_ready_text": "Si vous créez une exportation alors que tous les nœuds ne sont pas prêts, vous risquez de manquer les données nécessaires. Donnez à votre réseau le temps d'interroger tous les nœuds. Voulez-vous continuer le vidage?", "dump_not_ready_title": "Tous les nœuds ne sont pas encore prêts", "header": "Gérez votre réseau Z-Wave", "home_id": "ID de la maison", @@ -2719,7 +2727,9 @@ "remove_node": { "cancel_exclusion": "Annuler l'exclusion", "controller_in_exclusion_mode": "Votre contrôleur Z-Wave est maintenant en mode exclusion.", + "exclusion_failed": "Le nœud n'a pas pu être supprimé. Veuillez consulter les journaux pour plus d'informations.", "exclusion_finished": "Le nœud {id} a été supprimé de votre réseau Z-Wave.", + "follow_device_instructions": "Suivez les instructions fournies avec votre appareil pour déclencher une exclusion sur l'appareil.", "introduction": "Supprimez un nœud de votre réseau Z-Wave et supprimez l’appareil et les entités associés de Home Assistant.", "start_exclusion": "Commencer l'exclusion", "title": "Supprimer un nœud Z-Wave" @@ -2927,6 +2937,8 @@ "action_confirmation": "Voulez-vous vraiment exécuter l'action \" {action} \"?", "actions": { "action_confirmation": "Voulez-vous vraiment exécuter l'action \" {action} \"?", + "no_entity_more_info": "Aucune entité fournie pour plus d'informations", + "no_entity_toggle": "Aucune entité fournie pour basculer", "no_navigation_path": "Aucun chemin de navigation spécifié", "no_service": "Aucun service d'exécution spécifié", "no_url": "Aucune URL à ouvrir spécifiée" diff --git a/translations/frontend/sv.json b/translations/frontend/sv.json index bfdd339dc9..1358b35340 100644 --- a/translations/frontend/sv.json +++ b/translations/frontend/sv.json @@ -755,7 +755,7 @@ "editor": { "advanced": "Avancerade inställningar", "area_note": "Som standard har entiteterna som tillhör en enhet samma område som enheten. Om du ändrar området för denna entitet kommer den inte längre att använda enhetens område.", - "change_device_area": "Ändra område för entitet", + "change_device_area": "Ändra område för enhet", "confirm_delete": "Är du säker på att du vill ta bort den här posten?", "delete": "Radera", "device_disabled": "Enheten för den här entiteten är inaktiverad.", @@ -775,6 +775,7 @@ "update": "Uppdatera" }, "faq": "dokumentation", + "info_customize": "Du kan skriva över vissa attribut i avsnittet {customize_link}.", "no_unique_id": "Den här entiteten (\"{entity_id}\") 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" @@ -2666,6 +2667,7 @@ "inclusion_failed": "Noden kunde inte läggas till. Kontrollera loggarna för mer information.", "inclusion_finished": "Noden har lagts till. Det kan ta några minuter för alla entiteter att dyka upp när vi avslutar inställningen av noden i bakgrunden.", "introduction": "Denna guide guidar dig genom att lägga till en nod i ditt Z-Wave-nätverk.", + "secure_inclusion_warning": "Säkra enheter kräver ytterligare bandbredd, för många säkra enheter kan göra ditt Z-Wave-nätverk långsammare. Vi rekommenderar att endast använda säker inkludering för enheter som kräver det, som lås eller dörröppnare för garage.", "start_inclusion": "Påbörja inkludering", "start_secure_inclusion": "Påbörja säker inkludering", "title": "Lägg till Z-Wave nod", @@ -2683,6 +2685,7 @@ }, "dashboard": { "driver_version": "Drivrutinsversion", + "dump_dead_nodes_text": "Några av dina noder svarade inte och antas vara döda. Dessa kommer inte att exporteras fullt ut.", "dump_dead_nodes_title": "Några av dina noder är döda", "dump_debug": "Ladda ner en rapport från ditt nätverk för att diagnostisera problem", "dump_not_ready_confirm": "Ladda ner", @@ -2739,7 +2742,8 @@ "learn_more": "Läs mer om Z-Wave", "migration": { "ozw": { - "header": "Migrera till OpenZWave" + "header": "Migrera till OpenZWave", + "introduction": "Den här guiden hjälper dig att migrera från den äldre Z-Wave-integrationen till OpenZWave-integrationen som för närvarande finns i beta." } }, "network_management": { @@ -3492,6 +3496,7 @@ "working": "Vänligen vänta" }, "initializing": "Initierar", + "logging_in_to_with": "Loggar in på ** {locationName} ** med ** {authProviderName} **.", "logging_in_with": "Loggar in med **{authProviderName}**.", "pick_auth_provider": "Eller logga in med" }, diff --git a/translations/frontend/tr.json b/translations/frontend/tr.json index 7e61411e7a..253e531b38 100644 --- a/translations/frontend/tr.json +++ b/translations/frontend/tr.json @@ -1719,7 +1719,7 @@ } }, "devices": { - "add_prompt": "Bu aygıt kullanılarak henüz {ad} eklenmedi. Yukarıdaki + butonuna tıklayarak bir tane ekleyebilirsiniz.", + "add_prompt": "Bu aygıt kullanılarak henüz {name} eklenmedi. Yukarıdaki + butonuna tıklayarak bir tane ekleyebilirsiniz.", "automation": { "actions": { "caption": "Bir şey tetiklendiğinde...", @@ -2517,7 +2517,7 @@ "add_device": "Cihaz Ekle", "add_device_page": { "discovered_text": "Cihazlar keşfedildikten sonra burada görünecektir.", - "discovery_text": "Keşfedilen cihazlar burada görünecektir. Cihaz (lar) ınız için talimatları izleyin ve cihazları eşleştirme moduna getirin.", + "discovery_text": "Keşfedilen aygıtlar burada gösterilecek. Cihazınızın(lar) yönergelerini izleyin ve aygıtı(lar) eşleştirme moduna yerleştirin.", "header": "Zigbee Ev Otomasyonu - Cihaz Ekle", "no_devices_found": "Hiçbir cihaz bulunamadı, eşleştirme modunda olduklarından emin olun ve keşfetme sırasında cihazı açık tutun.", "pairing_mode": "Cihazlarınızın eşleme modunda olduğundan emin olun. Bunun nasıl yapılacağı konusunda cihazınızın talimatlarını kontrol edin.", From b66d14e980a226e6890d7f56f416890ecb129dbf Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sat, 6 Feb 2021 01:15:59 +0000 Subject: [PATCH 45/54] Translation update --- translations/frontend/cs.json | 2 +- translations/frontend/zh-Hans.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/translations/frontend/cs.json b/translations/frontend/cs.json index 35503be599..41de89ac98 100644 --- a/translations/frontend/cs.json +++ b/translations/frontend/cs.json @@ -2692,7 +2692,7 @@ "dashboard": { "driver_version": "Verze ovladače", "dump_dead_nodes_text": "Některé uzly neodpověděly a předpokládá se, že jsou mrtvé. Ty nebudou plně exportovány.", - "dump_dead_nodes_title": "Některé uzly jsou mrtvé.", + "dump_dead_nodes_title": "Některé uzly jsou mrtvé", "dump_debug": "Stáhněte si výpis své sítě a pomozte diagnostikovat problémy", "dump_not_ready_confirm": "Stáhnout", "dump_not_ready_text": "Pokud vytvoříte export, zatímco ne všechny uzly jsou připraveny, mohla by vám chybět potřebná data. Dejte své síti nějaký čas na dotazování všech uzlů. Chcete pokračovat s výpisem?", diff --git a/translations/frontend/zh-Hans.json b/translations/frontend/zh-Hans.json index 7816c8750b..f3418bc9d5 100644 --- a/translations/frontend/zh-Hans.json +++ b/translations/frontend/zh-Hans.json @@ -1026,7 +1026,7 @@ "config": { "edit_in_yaml_supported": "您仍然可以以 YAML 编辑配置。", "editor_not_available": "“{type}”类型没有可视化编辑器。", - "editor_not_supported": "此配置不支持可视编辑器", + "editor_not_supported": "此配置不支持可视化编辑器", "error_detected": "检测到配置错误", "key_missing": "缺少必需的键“{key}”。", "key_not_expected": "“{key}”选项不可用,或不被可视化编辑器支持。", @@ -1537,7 +1537,7 @@ "tts": { "default_language": "默认使用语言", "dialog": { - "example_message": "{name},您好,现在可以支持的媒体播放器上播报任意文本了!", + "example_message": "{name},您好,现在可以在支持的媒体播放器上播报任意文本了!", "header": "尝试 TTS", "play": "播放", "target": "目标", From 9c7af0dfce95b3cf053896d8e74ef6fdad9d0da0 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 6 Feb 2021 23:00:06 +0100 Subject: [PATCH 46/54] Drop margin from cast header (#8331) --- cast/src/launcher/layout/hc-layout.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cast/src/launcher/layout/hc-layout.ts b/cast/src/launcher/layout/hc-layout.ts index 1c7a850a30..58e1f7cc94 100644 --- a/cast/src/launcher/layout/hc-layout.ts +++ b/cast/src/launcher/layout/hc-layout.ts @@ -98,8 +98,12 @@ class HcLayout extends LitElement { line-height: 32px; padding: 24px 16px 16px; display: block; + margin: 0; + } + + .hero { + border-radius: 4px 4px 0 0; } - .subtitle { font-size: 14px; color: var(--secondary-text-color); From c04419fd09a9755b9612d7a3bf1be617bb44095a Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sun, 7 Feb 2021 01:18:53 +0000 Subject: [PATCH 47/54] Translation update --- translations/frontend/el.json | 155 +++++++++++++++++++++++++++++++--- translations/frontend/it.json | 26 +++--- translations/frontend/sv.json | 16 +++- 3 files changed, 169 insertions(+), 28 deletions(-) diff --git a/translations/frontend/el.json b/translations/frontend/el.json index d73a3e5a7a..962fd6f37e 100644 --- a/translations/frontend/el.json +++ b/translations/frontend/el.json @@ -401,6 +401,7 @@ "direction": "Κατεύθυνση", "forward": "Εμπρός", "oscillate": "Περιστροφή", + "preset_mode": "Προεπιλεγμένη λειτουργία", "reverse": "Αντιστροφή", "speed": "Ταχύτητα" }, @@ -557,6 +558,10 @@ "remove_user": "Κατάργηση χρήστη", "select_blueprint": "Επιλέξτε ένα σχεδιάγραμμα" }, + "calendar": { + "my_calendars": "Τα ημερολόγιά μου", + "today": "Σήμερα" + }, "data-table": { "no-data": "Δεν υπάρχουν δεδομένα", "search": "Αναζήτηση" @@ -588,6 +593,7 @@ } }, "history_charts": { + "history_disabled": "Η ενσωμάτωση ιστορικού είναι απενεργοποιημένη", "loading_history": "Φόρτωση ιστορικού κατάστασης …", "no_history_found": "Δεν έχει βρεθεί ιστορικό κατάστασης." }, @@ -604,9 +610,9 @@ "set": "έδυσε", "turned_off": "απενεργοποιήθηκε", "turned_on": "ενεργοποιήθηκε", - "was_at_home": "ήταν στο σπίτι", - "was_at_state": "ήταν σε {state}", - "was_away": "ήταν μακριά", + "was_at_home": "εντοπίστηκε στο σπίτι", + "was_at_state": "εντοπίστηκε σε {κατάσταση}", + "was_away": "εντοπίστηκε μακριά", "was_closed": "ήταν κλειστό", "was_connected": "ήταν συνδεδεμένο", "was_disconnected": "ήταν αποσυνδεδεμένο", @@ -746,8 +752,13 @@ }, "entity_registry": { "control": "Έλεγχος", + "customize_link": "προσαρμογές οντοτήτων", "dismiss": "Απόρριψη", "editor": { + "advanced": "Ρυθμίσεις για προχωρημένους", + "area": "Ορισμός μόνο περιοχής οντότητας", + "area_note": "Από προεπιλογή, οι οντότητες μιας συσκευής βρίσκονται στην ίδια περιοχή με τη συσκευή. Εάν αλλάξετε την περιοχή αυτής της οντότητας, δεν θα ακολουθεί πλέον την περιοχή της συσκευής.", + "change_device_area": "Αλλαγή περιοχής συσκευής", "confirm_delete": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την καταχώριση;", "delete": "Διαγραφή", "device_disabled": "Η συσκευή αυτής της οντότητας είναι απενεργοποιημένη.", @@ -757,6 +768,7 @@ "enabled_label": "Ενεργοποίηση οντότητας", "enabled_restart_confirm": "Επανεκκινήστε το Home Assistant για να ολοκληρώσετε την ενεργοποίηση των στοιχείων", "entity_id": "Αναγνωριστικό οντότητας", + "follow_device_area": "Παρακολούθηση της περιοχής συσκευής", "icon": "Εικονίδιο", "icon_error": "Το εικονίδιο πρέπει να είναι στη μορφή 'πρόθεμα:όνομα_εικόνας', για παράδειγμα: 'mdi:home'", "name": "Όνομα", @@ -766,6 +778,7 @@ "update": "Ενημέρωση" }, "faq": "τεκμηρίωση", + "info_customize": "Μπορείτε να αντικαταστήσετε ορισμένα χαρακτηριστικά στην ενότητα {customize_link}.", "no_unique_id": "Αυτή η οντότητα (\" {entity_id} \") δεν έχει μοναδικό αναγνωριστικό, επομένως δεν είναι δυνατή η διαχείριση των ρυθμίσεών της από το περιβάλλον χρήστη. Δείτε το {faq_link} για περισσότερες λεπτομέρειες.", "related": "Σχετίζεται με", "settings": "Ρυθμίσεις" @@ -1009,6 +1022,18 @@ "second": "{count} {count, plural,\n one {δευτερόλεπτο}\n other {δευτερόλεπτα}\n}", "week": "{count} {count, plural,\n one {εβδομάδα}\n other {εβδομάδες}\n}" }, + "errors": { + "config": { + "edit_in_yaml_supported": "Μπορείτε ακόμα να επεξεργαστείτε τη διαμόρφωσή σας στο YAML.", + "editor_not_available": "Δεν διατίθεται οπτικός επεξεργαστής για τον τύπο \" {type} \".", + "editor_not_supported": "Ο οπτικός επεξεργαστής δεν υποστηρίζεται για αυτήν τη διαμόρφωση", + "error_detected": "Εντοπίστηκαν σφάλματα ρύθμισης παραμέτρων", + "key_missing": "Λείπει το απαιτούμενο κλειδί \"{key}\".", + "key_not_expected": "Το κλειδί \"{key}\" δεν αναμένεται ή δεν υποστηρίζεται από το οπτικό πρόγραμμα επεξεργασίας.", + "key_wrong_type": "Η παρεχόμενη τιμή για το \"{key}\" δεν υποστηρίζεται από το οπτικό πρόγραμμα επεξεργασίας. Υποστηρίζουμε ({type_correct}) αλλά λάβαμε ({type_wrong}).", + "no_type_provided": "Δεν παρέχεται τύπος." + } + }, "login-form": { "log_in": "Σύνδεση", "password": "Κωδικός", @@ -1117,7 +1142,10 @@ "device_id": { "action": "Ενέργεια", "extra_fields": { - "code": "Κώδικας" + "code": "Κώδικας", + "message": "Μήνυμα", + "position": "Θέση", + "title": "Τίτλος" }, "label": "Συσκευή" }, @@ -1293,7 +1321,8 @@ "extra_fields": { "above": "Πάνω από", "below": "Κάτω από", - "for": "Διάρκεια" + "for": "Διάρκεια", + "zone": "Ζώνη" }, "label": "Συσκευή", "trigger": "Έναυσμα" @@ -1464,7 +1493,7 @@ "info_state_reporting": "Αν ενεργοποιήσετε την αναφορά κατάστασης, ο Home Assistant θα στείλει όλες τις αλλαγές καταστάσεων των εκτεθειμένων οντοτήτων στο Amazon. Αυτό σας επιτρέπει να βλέπετε πάντα τις τελευταίες καταστάσεις στην εφαρμογή Alexa και να χρησιμοποιείτε τις αλλαγές κατάστασης για να δημιουργήσετε ρουτίνες.", "manage_entities": "Διαχείριση Οντοτήτων", "state_reporting_error": "Δεν είναι δυνατή η {enable_disable} της κατάσταση αναφοράς.", - "sync_entities": "Συγχρονισμός οντοτήτων", + "sync_entities": "Συγχρονισμός οντοτήτων με το Amazon", "sync_entities_error": "Ο συγχρονισμός των οντοτήτων απέτυχε:", "title": "Alexa" }, @@ -1505,6 +1534,21 @@ }, "sign_out": "Αποσύνδεση", "thank_you_note": "Σας ευχαριστούμε που συμμετείχατε στο Home Assistant Cloud. Υπάρχει εξαιτίας ανθρώπων σαν εσάς που μπορούμε να κάνουμε μια μεγάλη εμπειρία αυτοματισμού σπιτιού για όλους. Σας ευχαριστούμε!", + "tts": { + "default_language": "Προεπιλεγμένη γλώσσα για χρήση", + "dialog": { + "example_message": "Γεια σας {όνομα}, μπορείτε να αναπαραγάγετε οποιοδήποτε κείμενο σε οποιοδήποτε υποστηριζόμενο πρόγραμμα αναπαραγωγής πολυμέσων!", + "header": "Δοκιμή κειμένου σε ομιλία", + "play": "Αναπαραγωγή", + "target": "Στόχος", + "target_browser": "Φυλλομετρητής" + }, + "female": "Θηλυκό", + "info": "Φέρτε την προσωπικότητα στο σπίτι σας με το να σας μιλήσει χρησιμοποιώντας τις υπηρεσίες κειμένου σε ομιλία. Μπορείτε να το χρησιμοποιήσετε σε αυτοματισμούς και δέσμες ενεργειών χρησιμοποιώντας την υπηρεσία {service}.", + "male": "Αρσενικό", + "title": "Κείμενο σε ομιλία", + "try": "Δοκιμή" + }, "webhooks": { "disable_hook_error_msg": "Απέτυχε η απενεργοποίηση του διαδικτυακού αγκίστρου:", "info": "Σε οτιδήποτε έχει ρυθμιστεί να ενεργοποιείται από ένα διαδικτυακό άγκιστρο, μπορεί να δοθεί μια διεύθυνση URL προσβάσιμη δημοσίως, ώστε να μπορείτε να στέλνετε δεδομένα πίσω στον Home Assistant από οπουδήποτε, χωρίς να εκτίθεται η παρουσία σας στο διαδίκτυο.", @@ -1536,11 +1580,11 @@ "description_login": "Συνδεδεμένος ως {email}", "description_not_login": "Μη συνδεδεμένος", "dialog_certificate": { - "certificate_expiration_date": "Ημερομηνία λήξης πιστοποιητικού", + "certificate_expiration_date": "Ημερομηνία λήξης πιστοποιητικού:", "certificate_information": "Πληροφορίες Πιστοποιητικού", "close": "Κλείστε", "fingerprint": "Αποτύπωμα πιστοποιητικού:", - "will_be_auto_renewed": "Θα ανανεωθεί αυτόματα" + "will_be_auto_renewed": "θα ανανεωθεί αυτόματα" }, "dialog_cloudhook": { "available_at": "Το webhook είναι διαθέσιμο στον ακόλουθο σύνδεσμο URL:", @@ -1914,7 +1958,7 @@ "attention": "Απαιτείται προσοχή", "caption": "Ενσωματώσεις", "config_entry": { - "area": "Στην {area}", + "area": "Στο {area}", "delete": "Διαγραφή", "delete_button": "Διαγραφή {integration}", "delete_confirm": "Είστε σίγουρος ότι θέλετε να διαγραφεί αυτή η ενοποίηση;", @@ -2621,6 +2665,76 @@ "introduction": "Οι ζώνες σας επιτρέπουν να καθορίσετε ορισμένες περιοχές στη γη. Όταν ένα άτομο βρίσκεται μέσα σε μια ζώνη, η κατάσταση θα οριστεί από τη ζώνη. Οι ζώνες μπορούν επίσης να χρησιμοποιηθούν ως έναυσμα ή συνθήκη μέσα στις ρυθμίσεις αυτοματισμού.", "no_zones_created_yet": "Φαίνεται ότι δεν έχετε δημιουργήσει ζώνες ακόμα." }, + "zwave_js": { + "add_node": { + "cancel_inclusion": "Ακύρωση συμπερίληψης", + "controller_in_inclusion_mode": "Ο ελεγκτής Z-Wave βρίσκεται τώρα σε κατάσταση συμπερίληψης.", + "follow_device_instructions": "Ακολουθήστε τις οδηγίες που συνοδεύουν τη συσκευή σας για να ενεργοποιήσετε τη σύζευξη στη συσκευή.", + "inclusion_failed": "Δεν ήταν δυνατή η προσθήκη του κόμβου. Ελέγξτε τα αρχεία καταγραφής για περισσότερες πληροφορίες.", + "inclusion_finished": "Ο κόμβος έχει προστεθεί. Ενδέχεται να χρειαστούν μερικά λεπτά για να εμφανιστούν όλες οι οντότητες καθώς ολοκληρώνουμε τη ρύθμιση του κόμβου στο παρασκήνιο.", + "introduction": "Αυτός ο οδηγός θα σας καθοδηγήσει στην προσθήκη ενός κόμβου στο δίκτυο Z-Wave.", + "secure_inclusion_warning": "Οι ασφαλείς συσκευές απαιτούν πρόσθετο εύρος ζώνης. Πάρα πολλές ασφαλείς συσκευές μπορούν να επιβραδύνουν το δίκτυο Z-Wave. Συνιστούμε να χρησιμοποιείτε μόνο ασφαλή συμπερίληψη για συσκευές που την απαιτούν, όπως κλειδαριές ή ανοιχτήρια πορτών γκαράζ.", + "start_inclusion": "Έναρξη συμπερίληψης", + "start_secure_inclusion": "Έναρξη ασφαλούς συμπερίληψης", + "title": "Προσθήκη κόμβου Z-Wave", + "use_secure_inclusion": "Χρήση ασφαλούς συμπερίληψης", + "view_device": "Προβολή συσκευής" + }, + "button": "Διαμόρφωση", + "common": { + "add_node": "Προσθήκη κόμβου", + "close": "Κλείσιμο", + "home_id": "Αναγνωριστικό οικίας", + "network": "Δίκτυο", + "node_id": "Αναγνωριστικό κόμβου", + "remove_node": "Κατάργηση κόμβου" + }, + "dashboard": { + "driver_version": "Έκδοση προγράμματος οδήγησης", + "dump_dead_nodes_text": "Μερικοί από τους κόμβους σας δεν ανταποκρίθηκαν και θεωρούνται νεκροί. Αυτά δεν θα εξαχθούν πλήρως.", + "dump_dead_nodes_title": "Μερικοί από τους κόμβους σου είναι νεκροί.", + "dump_debug": "Λήψη μιας ένδειξης δίσκου του δικτύου σας για τη διάγνωση προβλημάτων", + "dump_not_ready_confirm": "Λήψη", + "dump_not_ready_text": "Εάν δημιουργήσετε μια εξαγωγή ενώ δεν είναι έτοιμοι όλοι οι κόμβοι, ενδέχεται να χάσετε τα απαιτούμενα δεδομένα. Δώστε στο δίκτυό σας κάποιο χρόνο για να υποβάλει ερώτημα σε όλους τους κόμβους. Θέλετε να συνεχίσετε με το αχούρι;", + "dump_not_ready_title": "Δεν είναι όλοι οι κόμβοι έτοιμοι ακόμα", + "header": "Διαχειριστείτε το δίκτυο Z-Wave", + "home_id": "Αναγνωριστικό οικίας", + "introduction": "Διαχειριστείτε το δίκτυο Z-Wave και τους κόμβους Z-Wave", + "node_count": "Αριθμός κόμβων", + "nodes_ready": "Κόμβοι έτοιμοι", + "server_version": "Έκδοση διακομιστή" + }, + "device_info": { + "node_ready": "Κόμβος έτοιμος", + "node_status": "Κατάσταση Κόμβου", + "zwave_info": "Πληροφορίες Z-Wave" + }, + "navigation": { + "network": "Δίκτυο" + }, + "network_status": { + "connected": "Συνδεδεμένο", + "connecting": "Σύνδεση", + "unknown": "Άγνωστο" + }, + "node_status": { + "alive": "Ζωντανό", + "asleep": "Κοιμισμένο", + "awake": "Ξύπνιο", + "dead": "Νεκρό", + "unknown": "Άγνωστο" + }, + "remove_node": { + "cancel_exclusion": "Ακύρωση εξαίρεσης", + "controller_in_exclusion_mode": "Ο ελεγκτής Z-Wave βρίσκεται τώρα σε λειτουργία αποκλεισμού.", + "exclusion_failed": "Δεν ήταν δυνατή η κατάργηση του κόμβου. Ελέγξτε τα αρχεία καταγραφής για περισσότερες πληροφορίες.", + "exclusion_finished": "Ο κόμβος {id} έχει καταργηθεί από το δίκτυο Z-Wave.", + "follow_device_instructions": "Ακολουθήστε τις οδηγίες που συνοδεύουν τη συσκευή σας για να ενεργοποιήσετε την εξαίρεση στη συσκευή.", + "introduction": "Καταργήστε έναν κόμβο από το δίκτυο Z-Wave και καταργήστε τη συσχετισμένη συσκευή και οντότητες από το Home Assistant.", + "start_exclusion": "Έναρξη εξαίρεσης", + "title": "Κατάργηση κόμβου Z-Wave" + } + }, "zwave": { "button": "Διαμόρφωση", "caption": "Z-Wave", @@ -2633,6 +2747,12 @@ }, "description": "Διαχειριστείτε το δίκτυο Z-Wave", "learn_more": "Μάθετε περισσότερα σχετικά με το Z-wave", + "migration": { + "ozw": { + "header": "Μετεγκατάσταση στο OpenZWave", + "introduction": "Αυτός ο οδηγός θα σας βοηθήσει να κάνετε μετεγκατάσταση από την παλαιά ενσωμάτωση Z-Wave στην ενσωμάτωση OpenZWave που είναι αυτήν τη στιγμή σε έκδοση beta." + } + }, "network_management": { "header": "Διαχείριση δικτύου Z-Wave", "introduction": "Εκτελέστε εντολές που επηρεάζουν το δίκτυο Z-Wave. Δε θα λάβετε πληροφόρηση σχετικά με το εάν οι περισσότερες εντολές επιτύχουν, αλλά μπορείτε να ελέγξετε το αρχείο καταγραφής OZW για να προσπαθήσετε να το μάθετε." @@ -2815,6 +2935,14 @@ }, "cards": { "action_confirmation": "Είστε βέβαιοι ότι θέλετε να εκτελέσετε την ενέργεια \"{action}\";", + "actions": { + "action_confirmation": "Είστε βέβαιοι ότι θέλετε να εκτελέσετε την ενέργεια \"{action}\";", + "no_entity_more_info": "Δεν παρέχεται οντότητα για το παράθυρο διαλόγου περισσότερων πληροφοριών", + "no_entity_toggle": "Δεν παρέχεται οντότητα για εναλλαγή", + "no_navigation_path": "Δεν καθορίστηκε διαδρομή περιήγησης", + "no_service": "Δεν καθορίστηκε υπηρεσία για εκτέλεση", + "no_url": "Δεν καθορίστηκε διεύθυνση URL για άνοιγμα" + }, "confirm_delete": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την κάρτα;", "empty_state": { "go_to_integrations_page": "Μεταβείτε στη σελίδα ενοποίησης.", @@ -2881,7 +3009,7 @@ "name": "Πίνακας συναγερμών" }, "button": { - "default_action_help": "Η προεπιλεγμένη ενέργεια εξαρτάται από τις δυνατότητες της οντότητας, είτε θα εναλλάσσεται είτε θα εμφανίζονται περισσότερες πληροφορίες.", + "default_action_help": "Η προεπιλεγμένη ενέργεια εξαρτάται από τις δυνατότητες της οντότητας, είτε θα εναλλάσσεται είτε θα εμφανίζεται το παράθυρο διαλόγου περισσότερων πληροφοριών.", "description": "Η κάρτα Button σας επιτρέπει να προσθέσετε κουμπιά για την εκτέλεση εργασιών.", "name": "Κουμπί" }, @@ -2998,8 +3126,10 @@ "name": "Ματιά" }, "grid": { + "columns": "Στήλες", "description": "Η κάρτα πλέγματος σάς επιτρέπει να εμφανίζετε πολλές κάρτες σε ένα πλέγμα.", - "name": "Πλέγμα" + "name": "Πλέγμα", + "square": "Απόδοση καρτών ως τετραγώνων" }, "history-graph": { "description": "Η κάρτα Ιστορικού γραφήματος σάς επιτρέπει να εμφανίσετε ένα γράφημα για καθεμία από τις αναφερόμενες οντότητες.", @@ -3167,6 +3297,8 @@ } }, "menu": { + "manage_dashboards": "Διαχείριση πινάκων ελέγχου", + "manage_resources": "Διαχείριση πόρων", "open": "Ανοίξτε το μενού Lovelace", "raw_editor": "Πρόγραμμα επεξεργασίας ρύθμισης παραμέτρων raw" }, @@ -3372,6 +3504,7 @@ "working": "Παρακαλώ περιμένετε" }, "initializing": "Αρχικοποίηση", + "logging_in_to_with": "Σύνδεση στο **{locationName}** με **{authProviderName}**.", "logging_in_with": "Σύνδεση με **{authProviderName}**.", "pick_auth_provider": "Ή συνδεθείτε με" }, diff --git a/translations/frontend/it.json b/translations/frontend/it.json index e4d2acb316..30e629d675 100644 --- a/translations/frontend/it.json +++ b/translations/frontend/it.json @@ -321,15 +321,15 @@ "fog": "Nebbia", "hail": "Grandine", "lightning": "Temporale", - "lightning-rainy": "Temporale, piovoso", + "lightning-rainy": "Temporale, pioggia", "partlycloudy": "Parzialmente nuvoloso", "pouring": "Piogge intense", - "rainy": "Piovoso", - "snowy": "Nevoso", - "snowy-rainy": "Nevoso, piovoso", + "rainy": "Pioggia", + "snowy": "Neve", + "snowy-rainy": "Neve, pioggia", "sunny": "Soleggiato", - "windy": "Ventoso", - "windy-variant": "Ventoso" + "windy": "Vento", + "windy-variant": "Vento" }, "zwave": { "default": { @@ -1262,7 +1262,7 @@ "type_value": "Tempo fisso", "weekdays": { "fri": "Venerdì", - "mon": "Lunedi", + "mon": "Lunedì", "sat": "Sabato", "sun": "Domenica", "thu": "Giovedì", @@ -1979,7 +1979,7 @@ "reload_restart_confirm": "Riavvia Home Assistant per completare il ricaricamento di questa integrazione", "rename": "Rinomina", "restart_confirm": "Riavvia Home Assistant per completare la rimozione di questa integrazione", - "services": "{count} {count, plural,\n one {service}\n other {services}\n}", + "services": "{count} {count, plural,\n one {servizio}\n other {servizi}\n}", "settings_button": "Modificare le impostazioni per {integration}.", "system_options": "Opzioni di sistema", "system_options_button": "Opzioni di sistema per {integration}", @@ -2213,7 +2213,7 @@ "session": "Recupero di valori che cambiano di rado dal nodo", "static": "Recupero di valori statici dal dispositivo", "versions": "Recupero di informazioni sulle versioni del firmware e della classe di comando", - "wakeup": "Configurazione del supporto per code di riattivazione e messaggi " + "wakeup": "Configurazione del supporto per code di riattivazione e messaggi" }, "node": { "button": "Dettagli del nodo", @@ -2231,7 +2231,7 @@ "battery_note": "Se il nodo è alimentato a batteria, assicurarsi di riattivarlo prima di procedere", "button": "Aggiorna nodo", "complete": "Aggiornamento del nodo completato", - "description": "In questo modo si dirà a OpenZWave di re-interrogare un nodo e aggiornare le classi di comando, le funzionalità e i valori del nodo.", + "description": "In questo modo si dirà a OpenZWave di re interrogare un nodo e aggiornare le classi di comando, le funzionalità e i valori del nodo.", "node_status": "Stato del nodo", "refreshing_description": "Aggiornamento delle informazioni sul nodo in corso ...", "start_refresh_button": "Avvia aggiornamento", @@ -2673,7 +2673,7 @@ "inclusion_failed": "Impossibile aggiungere il nodo. Si prega di controllare i registri per ulteriori informazioni.", "inclusion_finished": "Il nodo è stato aggiunto. Potrebbero essere necessari alcuni minuti prima che tutte le entità vengano visualizzate mentre finiamo di configurare il nodo in background.", "introduction": "Questa procedura ti guiderà nell'aggiunta di un nodo alla tua rete Z-Wave.", - "secure_inclusion_warning": "I dispositivi protetti richiedono una larghezza di banda aggiuntiva; troppi dispositivi sicuri possono rallentare la tua rete Z-Wave. Si consiglia di utilizzare l'inclusione sicura solo per i dispositivi che lo richiedono, come serrature o apriporta da garage.", + "secure_inclusion_warning": "I dispositivi protetti richiedono una larghezza di banda aggiuntiva; troppi dispositivi sicuri possono rallentare la tua rete Z-Wave. Si consiglia di utilizzare l'inclusione sicura solo per i dispositivi che lo richiedono, come serrature o apri porta da garage.", "start_inclusion": "Avvia inclusione", "start_secure_inclusion": "Avvia inclusione sicura", "title": "Aggiungi un Nodo Z-Wave", @@ -2750,7 +2750,7 @@ "migration": { "ozw": { "header": "Migrare a OpenZWave", - "introduction": "Questa procedura guidata consente di eseguire la migrazione dall'integrazione Z-Wave legacy all'integrazione OpenZWave attualmente in versione beta." + "introduction": "Questa procedura guidata consente di eseguire la migrazione dalla vecchia integrazione Z-Wave all'integrazione OpenZWave attualmente in versione beta." } }, "network_management": { @@ -3371,7 +3371,7 @@ "reload_resources": "Ricarica le risorse", "start_conversation": "Inizia la conversazione" }, - "reload_lovelace": "Ricaricare l'Interfaccia Utente", + "reload_lovelace": "Ricarica l'Interfaccia Utente", "reload_resources": { "refresh_body": "È necessario aggiornare la pagina per completare il ricaricamento, si desidera aggiornare ora?", "refresh_header": "Vuoi aggiornare?" diff --git a/translations/frontend/sv.json b/translations/frontend/sv.json index 1358b35340..f22326a6a8 100644 --- a/translations/frontend/sv.json +++ b/translations/frontend/sv.json @@ -80,7 +80,7 @@ "triggered": "Utlöst" }, "default": { - "entity_not_found": "Enheten hittades inte", + "entity_not_found": "Entiteten hittades inte", "error": "Fel", "unavailable": "Otillgänglig", "unknown": "Okänd" @@ -401,6 +401,7 @@ "direction": "Riktning", "forward": "Framåt", "oscillate": "Pendlar", + "preset_mode": "Förinställt läge", "reverse": "Baklänges", "speed": "Hastighet" }, @@ -751,9 +752,11 @@ }, "entity_registry": { "control": "Kontrollera", + "customize_link": "entitetsanpassningar", "dismiss": "Avfärda", "editor": { "advanced": "Avancerade inställningar", + "area": "Ange endast entitetsområde", "area_note": "Som standard har entiteterna som tillhör en enhet samma område som enheten. Om du ändrar området för denna entitet kommer den inte längre att använda enhetens område.", "change_device_area": "Ändra område för enhet", "confirm_delete": "Är du säker på att du vill ta bort den här posten?", @@ -1026,6 +1029,8 @@ "editor_not_supported": "Visuell redigerare stöds inte för den här konfigurationen", "error_detected": "Konfigurationsfel upptäcktes", "key_missing": "Nödvändig nyckel \"{key}\" saknas.", + "key_not_expected": "Nyckeln \"{key}\" förväntas inte eller stöds inte av den visuella redigeraren.", + "key_wrong_type": "Det angivna värdet för \"{key}\" stöds inte av den visuella redigeraren. Vi stöder ({type_correct}) men fick ({type_wrong}).", "no_type_provided": "Ingen typ angiven." } }, @@ -1957,11 +1962,11 @@ "delete": "Ta bort", "delete_button": "Ta bort {integration}", "delete_confirm": "Är du säker på att du vill radera denna integration?", - "device_unavailable": "enhet otillgänglig", + "device_unavailable": "Enhet otillgänglig", "devices": "{count} {count, plural,\n one {enhet}\n other {enheter}\n}", "documentation": "Dokumentation", "entities": "{count} {count, plural,\n one {entitet}\n other {entiteter}\n}", - "entity_unavailable": "entitet otillgänglig", + "entity_unavailable": "Entitet otillgänglig", "firmware": "Firmware: {version}", "hub": "Ansluten via", "manuf": "av {manufacturer}", @@ -2627,7 +2632,8 @@ "visualization": { "caption": "Visualisering", "header": "Visualisering av nätverk", - "highlight_label": "Markera enheter" + "highlight_label": "Markera enheter", + "zoom_label": "Zooma till enhet" } }, "zone": { @@ -2689,6 +2695,7 @@ "dump_dead_nodes_title": "Några av dina noder är döda", "dump_debug": "Ladda ner en rapport från ditt nätverk för att diagnostisera problem", "dump_not_ready_confirm": "Ladda ner", + "dump_not_ready_text": "Om du skapar en export när inte alla noder är klara, kan du missa data som behövs. Ge ditt nätverk lite tid att fråga alla noder. Vill du fortsätta med exporten?", "dump_not_ready_title": "Alla noder är inte redo än", "header": "Hantera ditt Z-Wave-nätverk", "home_id": "Hem ID", @@ -2933,6 +2940,7 @@ "no_entity_more_info": "Ingen entitet angiven för mer info dialog", "no_entity_toggle": "Ingen entitet angiven för växla", "no_navigation_path": "Ingen navigationsväg angiven", + "no_service": "Ingen tjänst för körning har angetts", "no_url": "Ingen URL att öppna angiven" }, "confirm_delete": "Är du säker på att du vill ta bort det här kortet?", From c3f50ba0fb3cd0a5d91decbe52aaba07b8d83788 Mon Sep 17 00:00:00 2001 From: chriss158 Date: Sun, 7 Feb 2021 14:33:44 +0100 Subject: [PATCH 48/54] Fix no disconnect after 5 minute timeout (#8339) --- src/layouts/home-assistant.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/layouts/home-assistant.ts b/src/layouts/home-assistant.ts index 1ec55ca9aa..42abe399ce 100644 --- a/src/layouts/home-assistant.ts +++ b/src/layouts/home-assistant.ts @@ -183,7 +183,7 @@ export class HomeAssistantAppEl extends QuickBarMixin(HassElement) { this._hiddenTimeout = undefined; // setTimeout can be delayed in the background and only fire // when we switch to the tab or app again (Hey Android!) - if (!document.hidden) { + if (document.hidden) { this._suspendApp(); } }, 300000); From 2c07a2c825b866b673349d81a83b6b55a2f44c23 Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Sun, 7 Feb 2021 14:37:35 +0100 Subject: [PATCH 49/54] Correct typo in "find-entities.ts" file name (#8343) --- src/panels/lovelace/cards/hui-alarm-panel-card.ts | 2 +- src/panels/lovelace/cards/hui-button-card.ts | 2 +- src/panels/lovelace/cards/hui-calendar-card.ts | 2 +- src/panels/lovelace/cards/hui-entities-card.ts | 2 +- src/panels/lovelace/cards/hui-entity-card.ts | 2 +- src/panels/lovelace/cards/hui-gauge-card.ts | 2 +- src/panels/lovelace/cards/hui-glance-card.ts | 2 +- src/panels/lovelace/cards/hui-humidifier-card.ts | 2 +- src/panels/lovelace/cards/hui-light-card.ts | 2 +- src/panels/lovelace/cards/hui-logbook-card.ts | 2 +- src/panels/lovelace/cards/hui-map-card.ts | 2 +- src/panels/lovelace/cards/hui-media-control-card.ts | 8 ++++++-- src/panels/lovelace/cards/hui-picture-elements-card.ts | 2 +- src/panels/lovelace/cards/hui-picture-entity-card.ts | 2 +- src/panels/lovelace/cards/hui-picture-glance-card.ts | 2 +- src/panels/lovelace/cards/hui-plant-status-card.ts | 2 +- src/panels/lovelace/cards/hui-sensor-card.ts | 2 +- src/panels/lovelace/cards/hui-thermostat-card.ts | 2 +- src/panels/lovelace/cards/hui-weather-forecast-card.ts | 2 +- .../lovelace/common/{find-entites.ts => find-entities.ts} | 0 .../lovelace/header-footer/hui-graph-header-footer.ts | 2 +- 21 files changed, 25 insertions(+), 21 deletions(-) rename src/panels/lovelace/common/{find-entites.ts => find-entities.ts} (100%) diff --git a/src/panels/lovelace/cards/hui-alarm-panel-card.ts b/src/panels/lovelace/cards/hui-alarm-panel-card.ts index e82273bfef..2b3298b425 100644 --- a/src/panels/lovelace/cards/hui-alarm-panel-card.ts +++ b/src/panels/lovelace/cards/hui-alarm-panel-card.ts @@ -22,7 +22,7 @@ import { FORMAT_NUMBER, } from "../../../data/alarm_control_panel"; import type { HomeAssistant } from "../../../types"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { createEntityNotFoundWarning } from "../components/hui-warning"; import type { LovelaceCard } from "../types"; import { AlarmPanelCardConfig } from "./types"; diff --git a/src/panels/lovelace/cards/hui-button-card.ts b/src/panels/lovelace/cards/hui-button-card.ts index dd5ec60b6f..a9666c33b9 100644 --- a/src/panels/lovelace/cards/hui-button-card.ts +++ b/src/panels/lovelace/cards/hui-button-card.ts @@ -32,7 +32,7 @@ import { LightEntity } from "../../../data/light"; import { ActionHandlerEvent } from "../../../data/lovelace"; import { HomeAssistant } from "../../../types"; import { actionHandler } from "../common/directives/action-handler-directive"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { handleAction } from "../common/handle-action"; import { hasAction } from "../common/has-action"; import { createEntityNotFoundWarning } from "../components/hui-warning"; diff --git a/src/panels/lovelace/cards/hui-calendar-card.ts b/src/panels/lovelace/cards/hui-calendar-card.ts index cc5dd82956..18100de6b8 100644 --- a/src/panels/lovelace/cards/hui-calendar-card.ts +++ b/src/panels/lovelace/cards/hui-calendar-card.ts @@ -25,7 +25,7 @@ import type { } from "../../../types"; import "../../calendar/ha-full-calendar"; import type { HAFullCalendar } from "../../calendar/ha-full-calendar"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { installResizeObserver } from "../common/install-resize-observer"; import "../components/hui-warning"; import type { LovelaceCard, LovelaceCardEditor } from "../types"; diff --git a/src/panels/lovelace/cards/hui-entities-card.ts b/src/panels/lovelace/cards/hui-entities-card.ts index 696532a881..fa6837c5c5 100644 --- a/src/panels/lovelace/cards/hui-entities-card.ts +++ b/src/panels/lovelace/cards/hui-entities-card.ts @@ -14,7 +14,7 @@ import { computeDomain } from "../../../common/entity/compute_domain"; import "../../../components/ha-card"; import { HomeAssistant } from "../../../types"; import { computeCardSize } from "../common/compute-card-size"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { processConfigEntities } from "../common/process-config-entities"; import "../components/hui-entities-toggle"; import { createHeaderFooterElement } from "../create-element/create-header-footer-element"; diff --git a/src/panels/lovelace/cards/hui-entity-card.ts b/src/panels/lovelace/cards/hui-entity-card.ts index 8ec63a66be..735aee9c90 100644 --- a/src/panels/lovelace/cards/hui-entity-card.ts +++ b/src/panels/lovelace/cards/hui-entity-card.ts @@ -21,7 +21,7 @@ import "../../../components/ha-icon"; import { UNAVAILABLE_STATES } from "../../../data/entity"; import { HomeAssistant } from "../../../types"; import { computeCardSize } from "../common/compute-card-size"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { hasConfigOrEntityChanged } from "../common/has-changed"; import { createEntityNotFoundWarning } from "../components/hui-warning"; import { createHeaderFooterElement } from "../create-element/create-header-footer-element"; diff --git a/src/panels/lovelace/cards/hui-gauge-card.ts b/src/panels/lovelace/cards/hui-gauge-card.ts index 48e49d6432..092b48f294 100644 --- a/src/panels/lovelace/cards/hui-gauge-card.ts +++ b/src/panels/lovelace/cards/hui-gauge-card.ts @@ -19,7 +19,7 @@ import "../../../components/ha-card"; import "../../../components/ha-gauge"; import { UNAVAILABLE } from "../../../data/entity"; import type { HomeAssistant } from "../../../types"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { hasConfigOrEntityChanged } from "../common/has-changed"; import { createEntityNotFoundWarning } from "../components/hui-warning"; import type { LovelaceCard, LovelaceCardEditor } from "../types"; diff --git a/src/panels/lovelace/cards/hui-glance-card.ts b/src/panels/lovelace/cards/hui-glance-card.ts index a3bf016856..daf60ca629 100644 --- a/src/panels/lovelace/cards/hui-glance-card.ts +++ b/src/panels/lovelace/cards/hui-glance-card.ts @@ -27,7 +27,7 @@ import { } from "../../../data/lovelace"; import { HomeAssistant } from "../../../types"; import { actionHandler } from "../common/directives/action-handler-directive"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { handleAction } from "../common/handle-action"; import { hasAction } from "../common/has-action"; import { processConfigEntities } from "../common/process-config-entities"; diff --git a/src/panels/lovelace/cards/hui-humidifier-card.ts b/src/panels/lovelace/cards/hui-humidifier-card.ts index 05b8915a8d..baa2b772a8 100644 --- a/src/panels/lovelace/cards/hui-humidifier-card.ts +++ b/src/panels/lovelace/cards/hui-humidifier-card.ts @@ -21,7 +21,7 @@ import "../../../components/ha-icon-button"; import { UNAVAILABLE_STATES } from "../../../data/entity"; import { HumidifierEntity } from "../../../data/humidifier"; import { HomeAssistant } from "../../../types"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { hasConfigOrEntityChanged } from "../common/has-changed"; import { createEntityNotFoundWarning } from "../components/hui-warning"; import { LovelaceCard, LovelaceCardEditor } from "../types"; diff --git a/src/panels/lovelace/cards/hui-light-card.ts b/src/panels/lovelace/cards/hui-light-card.ts index 5e528cbb38..a1b49d9378 100644 --- a/src/panels/lovelace/cards/hui-light-card.ts +++ b/src/panels/lovelace/cards/hui-light-card.ts @@ -26,7 +26,7 @@ import { LightEntity, SUPPORT_BRIGHTNESS } from "../../../data/light"; import { ActionHandlerEvent } from "../../../data/lovelace"; import { HomeAssistant } from "../../../types"; import { actionHandler } from "../common/directives/action-handler-directive"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { handleAction } from "../common/handle-action"; import { hasAction } from "../common/has-action"; import { hasConfigOrEntityChanged } from "../common/has-changed"; diff --git a/src/panels/lovelace/cards/hui-logbook-card.ts b/src/panels/lovelace/cards/hui-logbook-card.ts index da7ebd7d26..78fa5026ff 100644 --- a/src/panels/lovelace/cards/hui-logbook-card.ts +++ b/src/panels/lovelace/cards/hui-logbook-card.ts @@ -19,7 +19,7 @@ import "../../../components/ha-circular-progress"; import { getLogbookData, LogbookEntry } from "../../../data/logbook"; import type { HomeAssistant } from "../../../types"; import "../../logbook/ha-logbook"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { processConfigEntities } from "../common/process-config-entities"; import "../components/hui-warning"; import type { EntityConfig } from "../entity-rows/types"; diff --git a/src/panels/lovelace/cards/hui-map-card.ts b/src/panels/lovelace/cards/hui-map-card.ts index a1fb811d68..894e896271 100644 --- a/src/panels/lovelace/cards/hui-map-card.ts +++ b/src/panels/lovelace/cards/hui-map-card.ts @@ -35,7 +35,7 @@ import "../../../components/ha-icon-button"; import { fetchRecent } from "../../../data/history"; import { HomeAssistant } from "../../../types"; import "../../map/ha-entity-marker"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { installResizeObserver } from "../common/install-resize-observer"; import { processConfigEntities } from "../common/process-config-entities"; import { EntityConfig } from "../entity-rows/types"; diff --git a/src/panels/lovelace/cards/hui-media-control-card.ts b/src/panels/lovelace/cards/hui-media-control-card.ts index 8442872892..cd53ba0f4b 100644 --- a/src/panels/lovelace/cards/hui-media-control-card.ts +++ b/src/panels/lovelace/cards/hui-media-control-card.ts @@ -40,7 +40,7 @@ import { SUPPORT_TURN_ON, } from "../../../data/media-player"; import type { HomeAssistant } from "../../../types"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { hasConfigOrEntityChanged } from "../common/has-changed"; import { installResizeObserver } from "../common/install-resize-observer"; import "../components/hui-marquee"; @@ -332,7 +332,11 @@ export class HuiMediaControlCard extends LitElement implements LovelaceCard { protected updated(changedProps: PropertyValues): void { super.updated(changedProps); - if (!this._config || !this.hass || (!changedProps.has("_config") && !changedProps.has("hass"))) { + if ( + !this._config || + !this.hass || + (!changedProps.has("_config") && !changedProps.has("hass")) + ) { return; } diff --git a/src/panels/lovelace/cards/hui-picture-elements-card.ts b/src/panels/lovelace/cards/hui-picture-elements-card.ts index 51c68971ef..0905c84f0f 100644 --- a/src/panels/lovelace/cards/hui-picture-elements-card.ts +++ b/src/panels/lovelace/cards/hui-picture-elements-card.ts @@ -12,7 +12,7 @@ import { import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; import "../../../components/ha-card"; import { HomeAssistant } from "../../../types"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { LovelaceElement, LovelaceElementConfig } from "../elements/types"; import { LovelaceCard } from "../types"; import { createStyledHuiElement } from "./picture-elements/create-styled-hui-element"; diff --git a/src/panels/lovelace/cards/hui-picture-entity-card.ts b/src/panels/lovelace/cards/hui-picture-entity-card.ts index 2ff26e3496..1bd6d1bf1f 100644 --- a/src/panels/lovelace/cards/hui-picture-entity-card.ts +++ b/src/panels/lovelace/cards/hui-picture-entity-card.ts @@ -20,7 +20,7 @@ import { UNAVAILABLE_STATES } from "../../../data/entity"; import { ActionHandlerEvent } from "../../../data/lovelace"; import { HomeAssistant } from "../../../types"; import { actionHandler } from "../common/directives/action-handler-directive"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { handleAction } from "../common/handle-action"; import { hasAction } from "../common/has-action"; import { hasConfigOrEntityChanged } from "../common/has-changed"; diff --git a/src/panels/lovelace/cards/hui-picture-glance-card.ts b/src/panels/lovelace/cards/hui-picture-glance-card.ts index fbe5211ba5..72601e25ec 100644 --- a/src/panels/lovelace/cards/hui-picture-glance-card.ts +++ b/src/panels/lovelace/cards/hui-picture-glance-card.ts @@ -22,7 +22,7 @@ import "../../../components/ha-icon-button"; import { ActionHandlerEvent } from "../../../data/lovelace"; import { HomeAssistant } from "../../../types"; import { actionHandler } from "../common/directives/action-handler-directive"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { handleAction } from "../common/handle-action"; import { hasAction } from "../common/has-action"; import { hasConfigOrEntityChanged } from "../common/has-changed"; diff --git a/src/panels/lovelace/cards/hui-plant-status-card.ts b/src/panels/lovelace/cards/hui-plant-status-card.ts index 73f579921d..9019fcd8b7 100644 --- a/src/panels/lovelace/cards/hui-plant-status-card.ts +++ b/src/panels/lovelace/cards/hui-plant-status-card.ts @@ -17,7 +17,7 @@ import "../../../components/ha-card"; import "../../../components/ha-icon"; import { HomeAssistant } from "../../../types"; import { actionHandler } from "../common/directives/action-handler-directive"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { hasConfigOrEntityChanged } from "../common/has-changed"; import { createEntityNotFoundWarning } from "../components/hui-warning"; import { LovelaceCard, LovelaceCardEditor } from "../types"; diff --git a/src/panels/lovelace/cards/hui-sensor-card.ts b/src/panels/lovelace/cards/hui-sensor-card.ts index 8e74909619..c8a1f917bc 100644 --- a/src/panels/lovelace/cards/hui-sensor-card.ts +++ b/src/panels/lovelace/cards/hui-sensor-card.ts @@ -1,7 +1,7 @@ import { HassEntity } from "home-assistant-js-websocket/dist/types"; import { customElement } from "lit-element"; import { HomeAssistant } from "../../../types"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { GraphHeaderFooterConfig } from "../header-footer/types"; import { LovelaceCardEditor } from "../types"; import { HuiEntityCard } from "./hui-entity-card"; diff --git a/src/panels/lovelace/cards/hui-thermostat-card.ts b/src/panels/lovelace/cards/hui-thermostat-card.ts index 64c0c54714..c12cfc9a61 100644 --- a/src/panels/lovelace/cards/hui-thermostat-card.ts +++ b/src/panels/lovelace/cards/hui-thermostat-card.ts @@ -31,7 +31,7 @@ import { } from "../../../data/climate"; import { UNAVAILABLE } from "../../../data/entity"; import { HomeAssistant } from "../../../types"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { hasConfigOrEntityChanged } from "../common/has-changed"; import { createEntityNotFoundWarning } from "../components/hui-warning"; import { LovelaceCard, LovelaceCardEditor } from "../types"; diff --git a/src/panels/lovelace/cards/hui-weather-forecast-card.ts b/src/panels/lovelace/cards/hui-weather-forecast-card.ts index 913812d51f..aca161b379 100644 --- a/src/panels/lovelace/cards/hui-weather-forecast-card.ts +++ b/src/panels/lovelace/cards/hui-weather-forecast-card.ts @@ -35,7 +35,7 @@ import { weatherSVGStyles, } from "../../../data/weather"; import { actionHandler } from "../common/directives/action-handler-directive"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { handleAction } from "../common/handle-action"; import { hasAction } from "../common/has-action"; import { hasConfigOrEntityChanged } from "../common/has-changed"; diff --git a/src/panels/lovelace/common/find-entites.ts b/src/panels/lovelace/common/find-entities.ts similarity index 100% rename from src/panels/lovelace/common/find-entites.ts rename to src/panels/lovelace/common/find-entities.ts diff --git a/src/panels/lovelace/header-footer/hui-graph-header-footer.ts b/src/panels/lovelace/header-footer/hui-graph-header-footer.ts index 6085f22e69..f13f90b9f6 100644 --- a/src/panels/lovelace/header-footer/hui-graph-header-footer.ts +++ b/src/panels/lovelace/header-footer/hui-graph-header-footer.ts @@ -13,7 +13,7 @@ import { import "../../../components/ha-circular-progress"; import { fetchRecent } from "../../../data/history"; import { HomeAssistant } from "../../../types"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { coordinates } from "../common/graph/coordinates"; import { hasConfigOrEntityChanged } from "../common/has-changed"; import "../components/hui-graph-base"; From 01df01cd664304d8a38fb02c31aed15e01b555c4 Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Sun, 7 Feb 2021 14:38:54 +0100 Subject: [PATCH 50/54] Provide stub config for entity-filter (#8121) * Provide stub config for entity-filter * "card" option is optional since it has a default * Search dynamically for stub config entities --- .../lovelace/cards/hui-entity-filter-card.ts | 25 +++++++++++++++++++ src/panels/lovelace/cards/types.ts | 2 +- src/translations/en.json | 2 +- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/panels/lovelace/cards/hui-entity-filter-card.ts b/src/panels/lovelace/cards/hui-entity-filter-card.ts index 734de7033d..efc2ec2c44 100644 --- a/src/panels/lovelace/cards/hui-entity-filter-card.ts +++ b/src/panels/lovelace/cards/hui-entity-filter-card.ts @@ -8,6 +8,7 @@ import { LovelaceCardConfig } from "../../../data/lovelace"; import { HomeAssistant } from "../../../types"; import { computeCardSize } from "../common/compute-card-size"; import { evaluateFilter } from "../common/evaluate-filter"; +import { findEntities } from "../common/find-entites"; import { processConfigEntities } from "../common/process-config-entities"; import { createCardElement } from "../create-element/create-card-element"; import { EntityFilterEntityConfig } from "../entity-rows/types"; @@ -15,6 +16,30 @@ import { LovelaceCard } from "../types"; import { EntityFilterCardConfig } from "./types"; class EntityFilterCard extends UpdatingElement implements LovelaceCard { + public static getStubConfig( + hass: HomeAssistant, + entities: string[], + entitiesFallback: string[] + ): EntityFilterCardConfig { + const maxEntities = 3; + const foundEntities = findEntities( + hass, + maxEntities, + entities, + entitiesFallback, + ["light", "switch", "sensor"] + ); + + return { + type: "entity-filter", + entities: foundEntities, + state_filter: [ + foundEntities[0] ? hass.states[foundEntities[0]].state : "", + ], + card: { type: "entities" }, + }; + } + @property({ attribute: false }) public hass?: HomeAssistant; @property() public isPanel = false; diff --git a/src/panels/lovelace/cards/types.ts b/src/panels/lovelace/cards/types.ts index 05330f9dbf..6f70d507ce 100644 --- a/src/panels/lovelace/cards/types.ts +++ b/src/panels/lovelace/cards/types.ts @@ -92,7 +92,7 @@ export interface EntityFilterCardConfig extends LovelaceCardConfig { type: "entity-filter"; entities: Array; state_filter: Array<{ key: string } | string>; - card: Partial; + card?: Partial; show_empty?: boolean; } diff --git a/src/translations/en.json b/src/translations/en.json index 1f821ec4d4..be81a0c290 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -2833,7 +2833,7 @@ "image": "Image Path", "maximum": "Maximum", "manual": "Manual", - "manual_description": "Need to add a custom card or just want to manually write the yaml?", + "manual_description": "Need to add a custom card or just want to manually write the YAML?", "minimum": "Minimum", "name": "Name", "refresh_interval": "Refresh Interval", From e5ea762cbc24c81c028aace1b361dac3ac948342 Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Sun, 7 Feb 2021 16:36:25 +0100 Subject: [PATCH 51/54] Resolve merge conflict from PR #8121 --- src/panels/lovelace/cards/hui-entity-filter-card.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/panels/lovelace/cards/hui-entity-filter-card.ts b/src/panels/lovelace/cards/hui-entity-filter-card.ts index efc2ec2c44..f6bcdb4307 100644 --- a/src/panels/lovelace/cards/hui-entity-filter-card.ts +++ b/src/panels/lovelace/cards/hui-entity-filter-card.ts @@ -8,7 +8,7 @@ import { LovelaceCardConfig } from "../../../data/lovelace"; import { HomeAssistant } from "../../../types"; import { computeCardSize } from "../common/compute-card-size"; import { evaluateFilter } from "../common/evaluate-filter"; -import { findEntities } from "../common/find-entites"; +import { findEntities } from "../common/find-entities"; import { processConfigEntities } from "../common/process-config-entities"; import { createCardElement } from "../create-element/create-card-element"; import { EntityFilterEntityConfig } from "../entity-rows/types"; From 83de75b68904f609ec982b3ff0fde80fd0ba2de0 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Mon, 8 Feb 2021 01:17:33 +0000 Subject: [PATCH 52/54] Translation update --- translations/frontend/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/frontend/en.json b/translations/frontend/en.json index b33a1ec485..86a2659a03 100644 --- a/translations/frontend/en.json +++ b/translations/frontend/en.json @@ -3101,7 +3101,7 @@ "icon_height": "Icon Height", "image": "Image Path", "manual": "Manual", - "manual_description": "Need to add a custom card or just want to manually write the yaml?", + "manual_description": "Need to add a custom card or just want to manually write the YAML?", "maximum": "Maximum", "minimum": "Minimum", "name": "Name", From c8717bfa32b61c85baf162cadf1e8e427a8b2694 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Mon, 8 Feb 2021 14:48:54 +0100 Subject: [PATCH 53/54] Add my panel (#8349) --- package.json | 1 + src/common/url/search-params.ts | 13 ++ .../config-flow/dialog-data-entry-flow.ts | 18 ++- src/layouts/hass-error-screen.ts | 4 + src/layouts/partial-panel-resolver.ts | 1 + .../blueprint/dialog-import-blueprint.ts | 6 + .../config/blueprint/ha-blueprint-overview.ts | 21 ++- .../integrations/ha-config-integrations.ts | 49 ++++++- src/panels/my/ha-panel-my.ts | 132 ++++++++++++++++++ src/translations/en.json | 6 + yarn.lock | 5 + 11 files changed, 246 insertions(+), 10 deletions(-) create mode 100644 src/panels/my/ha-panel-my.ts diff --git a/package.json b/package.json index f6e9c22437..3ff0c23af5 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "author": "Paulus Schoutsen (http://paulusschoutsen.nl)", "license": "Apache-2.0", "dependencies": { + "@braintree/sanitize-url": "^5.0.0", "@formatjs/intl-getcanonicallocales": "^1.4.6", "@formatjs/intl-pluralrules": "^3.4.10", "@fullcalendar/common": "5.1.0", diff --git a/src/common/url/search-params.ts b/src/common/url/search-params.ts index 9d67cdb472..90b3677a66 100644 --- a/src/common/url/search-params.ts +++ b/src/common/url/search-params.ts @@ -6,3 +6,16 @@ export const extractSearchParamsObject = (): Record => { } return query; }; + +export const extractSearchParam = (param: string): string | null => { + const urlParams = new URLSearchParams(window.location.search); + return urlParams.get(param); +}; + +export const createSearchParam = (params: Record): string => { + const urlParams = new URLSearchParams(); + Object.entries(params).forEach(([key, value]) => { + urlParams.append(key, value); + }); + return urlParams.toString(); +}; diff --git a/src/dialogs/config-flow/dialog-data-entry-flow.ts b/src/dialogs/config-flow/dialog-data-entry-flow.ts index fc7102cc71..206276ce50 100644 --- a/src/dialogs/config-flow/dialog-data-entry-flow.ts +++ b/src/dialogs/config-flow/dialog-data-entry-flow.ts @@ -32,6 +32,7 @@ import { } from "../../data/device_registry"; import { haStyleDialog } from "../../resources/styles"; import type { HomeAssistant } from "../../types"; +import { showAlertDialog } from "../generic/show-dialog-box"; import { DataEntryFlowDialogParams } from "./show-dialog-data-entry-flow"; import "./step-flow-abort"; import "./step-flow-create-entry"; @@ -105,9 +106,20 @@ class DataEntryFlowDialog extends LitElement { this._loading = true; const curInstance = this._instance; - const step = await (params.continueFlowId - ? params.flowConfig.fetchFlow(this.hass, params.continueFlowId) - : params.flowConfig.createFlow(this.hass, params.startFlowHandler!)); + let step: DataEntryFlowStep; + try { + step = await (params.continueFlowId + ? params.flowConfig.fetchFlow(this.hass, params.continueFlowId) + : params.flowConfig.createFlow(this.hass, params.startFlowHandler!)); + } catch (err) { + this._step = undefined; + this._params = undefined; + showAlertDialog(this, { + title: "Error", + text: "Config flow could not be loaded", + }); + return; + } // Happens if second showDialog called if (curInstance !== this._instance) { diff --git a/src/layouts/hass-error-screen.ts b/src/layouts/hass-error-screen.ts index db0b3a671e..75642c5e0b 100644 --- a/src/layouts/hass-error-screen.ts +++ b/src/layouts/hass-error-screen.ts @@ -70,10 +70,14 @@ class HassErrorScreen extends LitElement { color: var(--primary-text-color); height: calc(100% - var(--header-height)); display: flex; + padding: 16px; align-items: center; justify-content: center; flex-direction: column; } + a { + color: var(--primary-color); + } `, ]; } diff --git a/src/layouts/partial-panel-resolver.ts b/src/layouts/partial-panel-resolver.ts index 931a73c197..0c37a91b6d 100644 --- a/src/layouts/partial-panel-resolver.ts +++ b/src/layouts/partial-panel-resolver.ts @@ -29,6 +29,7 @@ const COMPONENTS = { logbook: () => import("../panels/logbook/ha-panel-logbook"), mailbox: () => import("../panels/mailbox/ha-panel-mailbox"), map: () => import("../panels/map/ha-panel-map"), + my: () => import("../panels/my/ha-panel-my"), profile: () => import("../panels/profile/ha-panel-profile"), "shopping-list": () => import("../panels/shopping-list/ha-panel-shopping-list"), diff --git a/src/panels/config/blueprint/dialog-import-blueprint.ts b/src/panels/config/blueprint/dialog-import-blueprint.ts index 4761091b63..0151e8276a 100644 --- a/src/panels/config/blueprint/dialog-import-blueprint.ts +++ b/src/panels/config/blueprint/dialog-import-blueprint.ts @@ -39,17 +39,21 @@ class DialogImportBlueprint extends LitElement { @internalProperty() private _result?: BlueprintImportResult; + @internalProperty() private _url?: string; + @query("#input") private _input?: PaperInputElement; public showDialog(params): void { this._params = params; this._error = undefined; + this._url = this._params.url; } public closeDialog(): void { this._error = undefined; this._result = undefined; this._params = undefined; + this._url = undefined; fireEvent(this, "dialog-closed", { dialog: this.localName }); } @@ -123,6 +127,7 @@ class DialogImportBlueprint extends LitElement { .label=${this.hass.localize( "ui.panel.config.blueprint.add.url" )} + .value=${this._url} dialogInitialFocus >`}
    @@ -171,6 +176,7 @@ class DialogImportBlueprint extends LitElement { } private async _import() { + this._url = undefined; this._importing = true; this._error = undefined; try { diff --git a/src/panels/config/blueprint/ha-blueprint-overview.ts b/src/panels/config/blueprint/ha-blueprint-overview.ts index 14f86ca4da..0d35921deb 100644 --- a/src/panels/config/blueprint/ha-blueprint-overview.ts +++ b/src/panels/config/blueprint/ha-blueprint-overview.ts @@ -7,10 +7,13 @@ import { html, LitElement, property, + PropertyValues, TemplateResult, } from "lit-element"; import memoizeOne from "memoize-one"; import { fireEvent } from "../../../common/dom/fire_event"; +import { navigate } from "../../../common/navigate"; +import { extractSearchParam } from "../../../common/url/search-params"; import { DataTableColumnContainer } from "../../../components/data-table/ha-data-table"; import "../../../components/entity/ha-entity-toggle"; import "../../../components/ha-fab"; @@ -155,6 +158,17 @@ class HaBlueprintOverview extends LitElement { }) ); + protected firstUpdated(changedProps: PropertyValues) { + super.firstUpdated(changedProps); + if (this.route.path === "/import") { + const url = extractSearchParam("blueprint_url"); + navigate(this, "/config/blueprint/dashboard", true); + if (url) { + this._addBlueprint(url); + } + } + } + protected render(): TemplateResult { return html` this._reload() }); + private _addBlueprint(url?: string) { + showAddBlueprintDialog(this, { + url, + importedCallback: () => this._reload(), + }); } private _reload() { diff --git a/src/panels/config/integrations/ha-config-integrations.ts b/src/panels/config/integrations/ha-config-integrations.ts index ddcfaccb7e..eebc6a42d7 100644 --- a/src/panels/config/integrations/ha-config-integrations.ts +++ b/src/panels/config/integrations/ha-config-integrations.ts @@ -18,9 +18,11 @@ import { import { classMap } from "lit-html/directives/class-map"; import memoizeOne from "memoize-one"; import { HASSDomEvent } from "../../../common/dom/fire_event"; +import { navigate } from "../../../common/navigate"; import "../../../common/search/search-input"; import { caseInsensitiveCompare } from "../../../common/string/compare"; import { LocalizeFunc } from "../../../common/translations/localize"; +import { extractSearchParam } from "../../../common/url/search-params"; import { nextRender } from "../../../common/util/render-status"; import "../../../components/ha-button-menu"; import "../../../components/ha-card"; @@ -222,8 +224,15 @@ class HaConfigIntegrations extends SubscribeMixin(LitElement) { protected firstUpdated(changed: PropertyValues) { super.firstUpdated(changed); this._loadConfigEntries(); - this.hass.loadBackendTranslation("title", undefined, true); + const localizePromise = this.hass.loadBackendTranslation( + "title", + undefined, + true + ); this._fetchManifests(); + if (this.route.path === "/add") { + this._handleAdd(localizePromise); + } } protected updated(changed: PropertyValues) { @@ -535,11 +544,15 @@ class HaConfigIntegrations extends SubscribeMixin(LitElement) { ); } + private _handleFlowUpdated() { + this._loadConfigEntries(); + getConfigFlowInProgressCollection(this.hass.connection).refresh(); + } + private _createFlow() { showConfigFlowDialog(this, { dialogClosedCallback: () => { - this._loadConfigEntries(); - getConfigFlowInProgressCollection(this.hass.connection).refresh(); + this._handleFlowUpdated(); }, showAdvanced: this.showAdvanced, }); @@ -551,8 +564,7 @@ class HaConfigIntegrations extends SubscribeMixin(LitElement) { showConfigFlowDialog(this, { continueFlowId: (ev.target! as any).flowId, dialogClosedCallback: () => { - this._loadConfigEntries(); - getConfigFlowInProgressCollection(this.hass.connection).refresh(); + this._handleFlowUpdated(); }, }); } @@ -649,6 +661,33 @@ class HaConfigIntegrations extends SubscribeMixin(LitElement) { } } + private async _handleAdd(localizePromise: Promise) { + const domain = extractSearchParam("domain"); + navigate(this, "/config/integrations", true); + if (!domain) { + return; + } + const localize = await localizePromise; + if ( + !(await showConfirmationDialog(this, { + title: localize( + "ui.panel.config.integrations.confirm_new", + "integration", + domainToName(localize, domain) + ), + })) + ) { + return; + } + showConfigFlowDialog(this, { + dialogClosedCallback: () => { + this._handleFlowUpdated(); + }, + startFlowHandler: domain, + showAdvanced: this.hass.userData?.showAdvanced, + }); + } + static get styles(): CSSResult[] { return [ haStyle, diff --git a/src/panels/my/ha-panel-my.ts b/src/panels/my/ha-panel-my.ts new file mode 100644 index 0000000000..b9eaea9916 --- /dev/null +++ b/src/panels/my/ha-panel-my.ts @@ -0,0 +1,132 @@ +import { + customElement, + html, + internalProperty, + LitElement, + property, +} from "lit-element"; +import { sanitizeUrl } from "@braintree/sanitize-url"; +import { navigate } from "../../common/navigate"; +import { HomeAssistant, Route } from "../../types"; +import { + createSearchParam, + extractSearchParamsObject, +} from "../../common/url/search-params"; +import "../../layouts/hass-error-screen"; + +const REDIRECTS = { + info: { + redirect: "/config/info", + }, + logs: { + redirect: "/config/logs", + }, + profile: { + redirect: "/profile/dashboard", + }, + blueprint_import: { + redirect: "/config/blueprint/dashboard/import", + params: { + blueprint_url: "url", + }, + }, + config_flow_start: { + redirect: "/config/integrations/add", + params: { + domain: "string", + }, + }, +}; + +type ParamType = "url" | "string"; + +interface Redirect { + redirect: string; + params?: { + [key: string]: ParamType; + }; +} + +@customElement("ha-panel-my") +class HaPanelMy extends LitElement { + @property({ attribute: false }) public hass!: HomeAssistant; + + @property() public route!: Route; + + @internalProperty() public _error = ""; + + connectedCallback() { + super.connectedCallback(); + const path = this.route.path.substr(1); + const redirect: Redirect | undefined = REDIRECTS[path]; + + if (!redirect) { + this._error = this.hass.localize( + "ui.panel.my.not_supported", + "link", + html`${this.hass.localize("ui.panel.my.faq_link")}` + ); + return; + } + + let url: string; + try { + url = this._createRedirectUrl(redirect); + } catch (err) { + this._error = this.hass.localize("ui.panel.my.error"); + return; + } + + navigate(this, url, true); + } + + protected render() { + if (this._error) { + return html``; + } + return html``; + } + + private _createRedirectUrl(redirect: Redirect): string { + const params = this._createRedirectParams(redirect); + return `${redirect.redirect}${params}`; + } + + private _createRedirectParams(redirect: Redirect): string { + const params = extractSearchParamsObject(); + if (!redirect.params && !Object.keys(params).length) { + return ""; + } + const resultParams = {}; + Object.entries(redirect.params || {}).forEach(([key, type]) => { + if (!params[key] || !this._checkParamType(type, params[key])) { + throw Error(); + } + resultParams[key] = params[key]; + }); + return `?${createSearchParam(resultParams)}`; + } + + private _checkParamType(type: ParamType, value: string) { + if (type === "string") { + return true; + } + if (type === "url") { + return value && value === sanitizeUrl(value); + } + return false; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ha-panel-my": HaPanelMy; + } +} diff --git a/src/translations/en.json b/src/translations/en.json index be81a0c290..9a7cff23c4 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -804,6 +804,11 @@ "done": "Done" }, "panel": { + "my": { + "not_supported": "This redirect is not supported by your Home Assistant instance. Check the {link} for the supported redirects and the version they where introduced.", + "faq_link": "My Home Assistant FAQ", + "error": "An unknown error occured" + }, "config": { "header": "Configure Home Assistant", "introduction": "In this view it is possible to configure your components and Home Assistant. Not everything is possible to configure from the UI yet, but we're working on it.", @@ -2000,6 +2005,7 @@ "attention": "Attention required", "configured": "Configured", "new": "Set up a new integration", + "confirm_new": "Do you want to set up {integration}?", "add_integration": "Add integration", "no_integrations": "Seems like you don't have any integations configured yet. Click on the button below to add your first integration!", "note_about_integrations": "Not all integrations can be configured via the UI yet.", diff --git a/yarn.lock b/yarn.lock index 026e4d1e9d..e29445f16b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1900,6 +1900,11 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@braintree/sanitize-url@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-5.0.0.tgz#3ba791f37b90e7f6170d252b63aacfcae943c039" + integrity sha512-WmKrB/575EJCzbeSJR3YQ5sET5FaizeljLRw1382qVUeGqzuWBgIS+AF5a0FO51uQTrDpoRgvuHC2IWVsgwkkA== + "@formatjs/ecma402-abstract@^1.2.5": version "1.2.5" resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.2.5.tgz#5a61ac1990ff2df8d1348ab12e186c1ca2a2bd71" From cd72287d99db2ba86fcad750e5cd2f3469c34bc5 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Mon, 8 Feb 2021 15:12:42 +0100 Subject: [PATCH 54/54] Bumped version to 20210208.0 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 5da1895d91..efdb01ab43 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages setup( name="home-assistant-frontend", - version="20210127.1", + version="20210208.0", description="The Home Assistant frontend", url="https://github.com/home-assistant/home-assistant-polymer", author="The Home Assistant Authors",