diff --git a/build-scripts/webpack.js b/build-scripts/webpack.js
index f41b318f2c..fa9bfb9edd 100644
--- a/build-scripts/webpack.js
+++ b/build-scripts/webpack.js
@@ -170,6 +170,8 @@ const createAppConfig = ({ isProdBuild, latestBuild, isStatsBuild }) => {
chunkFilename: genChunkFilename(isProdBuild, isStatsBuild),
path: latestBuild ? paths.output : paths.output_es5,
publicPath: latestBuild ? "/frontend_latest/" : "/frontend_es5/",
+ // For workerize loader
+ globalObject: "self",
},
resolve,
};
@@ -210,6 +212,8 @@ const createDemoConfig = ({ isProdBuild, latestBuild, isStatsBuild }) => {
latestBuild ? "frontend_latest" : "frontend_es5"
),
publicPath: latestBuild ? "/frontend_latest/" : "/frontend_es5/",
+ // For workerize loader
+ globalObject: "self",
},
};
};
@@ -255,6 +259,8 @@ const createCastConfig = ({ isProdBuild, latestBuild }) => {
latestBuild ? "frontend_latest" : "frontend_es5"
),
publicPath: latestBuild ? "/frontend_latest/" : "/frontend_es5/",
+ // For workerize loader
+ globalObject: "self",
},
};
};
diff --git a/package.json b/package.json
index d7d36c6142..3dc0486a28 100644
--- a/package.json
+++ b/package.json
@@ -170,9 +170,11 @@
"webpack-cli": "^3.3.0",
"webpack-dev-server": "^3.2.1",
"webpack-manifest-plugin": "^2.0.4",
- "workbox-webpack-plugin": "^4.1.1"
+ "workbox-webpack-plugin": "^4.1.1",
+ "workerize-loader": "^1.1.0"
},
"_comment": "Polymer fixed to 3.1 because 3.2 throws on logbook page",
+ "_comment_2": "Fix in https://github.com/Polymer/polymer/pull/5569",
"resolutions": {
"@webcomponents/webcomponentsjs": "^2.2.10",
"@vaadin/vaadin-lumo-styles": "^1.4.2",
diff --git a/setup.py b/setup.py
index 6556a0867f..3a89e5018a 100644
--- a/setup.py
+++ b/setup.py
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
setup(
name="home-assistant-frontend",
- version="20190822.0",
+ version="20190825.0",
description="The Home Assistant frontend",
url="https://github.com/home-assistant/home-assistant-polymer",
author="The Home Assistant Authors",
diff --git a/src/components/ha-markdown.js b/src/components/ha-markdown.js
deleted file mode 100644
index 02c31e84d9..0000000000
--- a/src/components/ha-markdown.js
+++ /dev/null
@@ -1,96 +0,0 @@
-import { PolymerElement } from "@polymer/polymer/polymer-element";
-import { EventsMixin } from "../mixins/events-mixin";
-
-let loaded = null;
-
-const tagWhiteList = ["svg", "path", "ha-icon"];
-
-/*
- * @appliesMixin EventsMixin
- */
-class HaMarkdown extends EventsMixin(PolymerElement) {
- static get properties() {
- return {
- content: {
- observer: "_render",
- type: String,
- },
- };
- }
-
- connectedCallback() {
- super.connectedCallback();
- // 0 = not loaded, 1 = success, 2 = error
- this._scriptLoaded = 0;
- this._renderScheduled = false;
- this._resize = () => this.fire("iron-resize");
-
- if (!loaded) {
- loaded = import(/* webpackChunkName: "load_markdown" */ "../resources/load_markdown");
- }
- loaded
- .then(
- ({ marked, filterXSS }) => {
- this.marked = marked;
- this.filterXSS = filterXSS;
- this._scriptLoaded = 1;
- },
- () => {
- this._scriptLoaded = 2;
- }
- )
- .then(() => this._render());
- }
-
- _render() {
- if (this._scriptLoaded === 0 || this._renderScheduled) {
- return;
- }
-
- this._renderScheduled = true;
-
- // debounce it to next microtask.
- Promise.resolve().then(() => {
- this._renderScheduled = false;
-
- if (this._scriptLoaded === 1) {
- this.innerHTML = this.filterXSS(
- this.marked(this.content, {
- breaks: true,
- gfm: true,
- tables: true,
- }),
- {
- onIgnoreTag: (tag, html) =>
- tagWhiteList.indexOf(tag) >= 0 ? html : null,
- }
- );
- this._resize();
-
- const walker = document.createTreeWalker(
- this,
- 1 /* SHOW_ELEMENT */,
- null,
- false
- );
-
- while (walker.nextNode()) {
- const node = walker.currentNode;
-
- // Open external links in a new window
- if (node.tagName === "A" && node.host !== document.location.host) {
- node.target = "_blank";
-
- // Fire a resize event when images loaded to notify content resized
- } else if (node.tagName === "IMG") {
- node.addEventListener("load", this._resize);
- }
- }
- } else if (this._scriptLoaded === 2) {
- this.innerText = this.content;
- }
- });
- }
-}
-
-customElements.define("ha-markdown", HaMarkdown);
diff --git a/src/components/ha-markdown.ts b/src/components/ha-markdown.ts
new file mode 100644
index 0000000000..41d5e08b90
--- /dev/null
+++ b/src/components/ha-markdown.ts
@@ -0,0 +1,64 @@
+import { UpdatingElement, property, customElement } from "lit-element";
+// eslint-disable-next-line import/no-webpack-loader-syntax
+// @ts-ignore
+// tslint:disable-next-line: no-implicit-dependencies
+import markdownWorker from "workerize-loader!../resources/markdown_worker";
+import { fireEvent } from "../common/dom/fire_event";
+
+let worker: any | undefined;
+
+@customElement("ha-markdown")
+class HaMarkdown extends UpdatingElement {
+ @property() public content = "";
+
+ protected update(changedProps) {
+ super.update(changedProps);
+
+ if (!worker) {
+ worker = markdownWorker();
+ }
+
+ this._render();
+ }
+
+ private async _render() {
+ this.innerHTML = await worker.renderMarkdown(this.content, {
+ breaks: true,
+ gfm: true,
+ tables: true,
+ });
+
+ this._resize();
+
+ const walker = document.createTreeWalker(
+ this,
+ 1 /* SHOW_ELEMENT */,
+ null,
+ false
+ );
+
+ while (walker.nextNode()) {
+ const node = walker.currentNode;
+
+ // Open external links in a new window
+ if (
+ node.nodeName === "A" &&
+ (node as HTMLAnchorElement).host !== document.location.host
+ ) {
+ (node as HTMLAnchorElement).target = "_blank";
+
+ // Fire a resize event when images loaded to notify content resized
+ } else if (node.nodeName === "IMG") {
+ node.addEventListener("load", this._resize);
+ }
+ }
+ }
+
+ private _resize = () => fireEvent(this, "iron-resize");
+}
+
+declare global {
+ interface HTMLElementTagNameMap {
+ "ha-markdown": HaMarkdown;
+ }
+}
diff --git a/src/components/ha-menu-button.ts b/src/components/ha-menu-button.ts
index 291e48eadb..721082155a 100644
--- a/src/components/ha-menu-button.ts
+++ b/src/components/ha-menu-button.ts
@@ -127,6 +127,7 @@ class HaMenuButton extends LitElement {
position: relative;
}
.dot {
+ pointer-events: none;
position: absolute;
background-color: var(--accent-color);
width: 12px;
diff --git a/src/panels/lovelace/hui-root.ts b/src/panels/lovelace/hui-root.ts
index cba56cb59b..ce513e27bb 100644
--- a/src/panels/lovelace/hui-root.ts
+++ b/src/panels/lovelace/hui-root.ts
@@ -116,11 +116,11 @@ class HUIRoot extends LitElement {
@iron-select="${this._deselect}"
slot="dropdown-content"
>
- ${this.hass!.localize(
+
+ ${this.hass!.localize(
"ui.panel.lovelace.editor.menu.raw_editor"
- )}
+ )}
+
@@ -154,7 +154,7 @@ class HUIRoot extends LitElement {
aria-label=${this.hass!.localize(
"ui.panel.lovelace.menu.refresh"
)}
- @click="${this._handleRefresh}"
+ @tap="${this._handleRefresh}"
>
${this.hass!.localize(
"ui.panel.lovelace.menu.refresh"
@@ -169,7 +169,7 @@ class HUIRoot extends LitElement {
aria-label=${this.hass!.localize(
"ui.panel.lovelace.menu.unused_entities"
)}
- @click="${this._handleUnusedEntities}"
+ @tap="${this._handleUnusedEntities}"
>
${this.hass!.localize(
"ui.panel.lovelace.menu.unused_entities"
@@ -180,20 +180,20 @@ class HUIRoot extends LitElement {
aria-label=${this.hass!.localize(
"ui.panel.lovelace.menu.configure_ui"
)}
- @click="${this._editModeEnable}"
- >${this.hass!.localize(
- "ui.panel.lovelace.menu.configure_ui"
- )}
+ ${this.hass!.localize(
+ "ui.panel.lovelace.menu.configure_ui"
+ )}
+
${this.hass!.localize(
- "ui.panel.lovelace.menu.help"
- )}
+ ${this.hass!.localize("ui.panel.lovelace.menu.help")}
+
diff --git a/src/panels/profile/ha-panel-profile.ts b/src/panels/profile/ha-panel-profile.ts
index 2bdc22955e..02b485acc5 100644
--- a/src/panels/profile/ha-panel-profile.ts
+++ b/src/panels/profile/ha-panel-profile.ts
@@ -136,7 +136,7 @@ class HaPanelProfile extends LitElement {
? html`
`
: ""}
diff --git a/src/resources/load_markdown.js b/src/resources/load_markdown.js
deleted file mode 100644
index 57a0a8b4ba..0000000000
--- a/src/resources/load_markdown.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import marked_ from "marked";
-import filterXSS_ from "xss";
-
-export const marked = marked_;
-export const filterXSS = filterXSS_;
diff --git a/src/resources/markdown_worker.ts b/src/resources/markdown_worker.ts
new file mode 100644
index 0000000000..9c45e697f7
--- /dev/null
+++ b/src/resources/markdown_worker.ts
@@ -0,0 +1,10 @@
+import marked from "marked";
+// @ts-ignore
+import filterXSS from "xss";
+
+export const renderMarkdown = (content: string, markedOptions: object) =>
+ filterXSS(marked(content, markedOptions), {
+ onIgnoreTag(tag, html) {
+ return ["svg", "path", "ha-icon"].indexOf(tag) !== -1 ? html : null;
+ },
+ });
diff --git a/translations/es-419.json b/translations/es-419.json
index adcd4e960f..ed313e10d7 100644
--- a/translations/es-419.json
+++ b/translations/es-419.json
@@ -141,7 +141,8 @@
"high_demand": "Alta Demanda",
"heat_pump": "Bomba de Calor",
"gas": "Gas",
- "manual": "Manual"
+ "manual": "Manual",
+ "heat_cool": "Calentar\/Enfriar"
},
"configurator": {
"configure": "Configurar",
@@ -323,6 +324,9 @@
},
"mqtt": {
"title": ""
+ },
+ "info": {
+ "title": "Información"
}
}
},
@@ -589,7 +593,46 @@
"zwave": {
"caption": "",
"description": "Administrar su red Z-Wave",
+ "network_management": {
+ "header": "Gestión de la red Z-Wave",
+ "introduction": "Ejecute comandos que afectan a la red Z-Wave. No recibirá comentarios sobre si la mayoría de los comandos tuvieron éxito, pero puede consultar el registro OZW para intentar averiguarlo."
+ },
+ "network_status": {
+ "network_stopped": "Red Z-Wave detenida",
+ "network_starting": "Iniciando la Red Z-Wave...",
+ "network_starting_note": "Esto puede llevar un tiempo dependiendo del tamaño de su red.",
+ "network_started": "Red Z-Wave iniciada",
+ "network_started_note_some_queried": "Los nodos despiertos han sido consultados. Los nodos dormidos serán consultados cuando se despierten.",
+ "network_started_note_all_queried": "Todos los nodos han sido consultados."
+ },
+ "services": {
+ "start_network": "Iniciar red",
+ "stop_network": "Detener red",
+ "test_network": "Red de prueba",
+ "save_config": "Guardar configuración",
+ "add_node_secure": "Agregar nodo seguro",
+ "add_node": "Agregar nodo",
+ "remove_node": "Eliminar nodo",
+ "cancel_command": "Cancelar comando"
+ },
+ "common": {
+ "value": "Valor",
+ "instance": "Instancia",
+ "index": "Índice",
+ "unknown": "desconocido",
+ "wakeup_interval": "Intervalo de activación"
+ },
+ "values": {
+ "header": "Valores del nodo"
+ },
"node_config": {
+ "header": "Opciones de configuración del nodo",
+ "seconds": "segundos",
+ "set_wakeup": "Establecer intervalo de activación",
+ "config_parameter": "Parámetro de configuración",
+ "config_value": "Valor de configuración",
+ "true": "Verdadero",
+ "false": "Falso",
"set_config_parameter": "Establecer parámetro de configuración"
}
},
@@ -702,7 +745,10 @@
"unavailable": "Esta entidad no está disponible actualmente.",
"default_name": "Nueva Área",
"delete": "ELIMINAR",
- "update": "ACTUALIZAR"
+ "update": "ACTUALIZAR",
+ "enabled_label": "Habilitar entidad",
+ "enabled_cause": "Deshabilitado por {cause}.",
+ "enabled_description": "Las entidades deshabilitadas no serán agregadas a Home Assistant."
}
},
"person": {
@@ -714,6 +760,34 @@
"device_tracker_picked": "Dispositivo de seguimiento",
"device_tracker_pick": "Elegir dispositivo para rastrear"
}
+ },
+ "server_control": {
+ "caption": "Control del servidor",
+ "description": "Reinicie y detenga el servidor de Home Assistant",
+ "section": {
+ "validation": {
+ "heading": "Validación de la configuración",
+ "introduction": "Valide su configuración si recientemente realizó algunos cambios en su configuración y quiere asegurarse de que sea válida",
+ "check_config": "Verificar configuración",
+ "valid": "¡Configuración valida!",
+ "invalid": "Configuración inválida"
+ },
+ "reloading": {
+ "heading": "Recarga de configuración",
+ "introduction": "Algunas partes de Home Assistant pueden volver a cargarse sin necesidad de reiniciar. Al pulsar recargar descargará su configuración actual y cargará la nueva.",
+ "core": "Recargar núcleo",
+ "group": "Recargar grupos",
+ "automation": "Recargar automatizaciones",
+ "script": "Recargar scripts",
+ "scene": "Recargar escenas"
+ },
+ "server_management": {
+ "heading": "Administración del servidor",
+ "introduction": "Controle su servidor Home Assistant ... desde Home Assistant.",
+ "restart": "Reiniciar",
+ "stop": "Detener"
+ }
+ }
}
},
"profile": {
@@ -784,6 +858,11 @@
"step_done": "Configuración realizada para {step}",
"close": "Cerrar",
"submit": "Enviar"
+ },
+ "logout": "Cerrar sesión",
+ "force_narrow": {
+ "header": "Ocultar siempre la barra lateral",
+ "description": "Esto ocultará la barra lateral de forma predeterminada, similar a la experiencia móvil."
}
},
"page-authorize": {
@@ -1216,6 +1295,19 @@
"updater": {
"title": "Instrucciones de actualización"
}
+ },
+ "options_flow": {
+ "form": {
+ "header": "Opciones"
+ },
+ "success": {
+ "description": "Opciones guardadas con éxito."
+ }
+ },
+ "config_entry_system_options": {
+ "title": "Opciones del sistema",
+ "enable_new_entities_label": "Habilitar entidades recién agregadas.",
+ "enable_new_entities_description": "Si está deshabilitado, las entidades recién descubiertas no se agregarán automáticamente a Home Assistant."
}
},
"auth_store": {
@@ -1296,6 +1388,14 @@
"home": "En Casa",
"sleep": "Dormir",
"activity": "Actividad"
+ },
+ "hvac_action": {
+ "off": "Desactivado",
+ "heating": "Calentando",
+ "cooling": "Enfriando",
+ "drying": "Secando",
+ "idle": "Inactivo",
+ "fan": "Ventilador"
}
}
},
@@ -1303,5 +1403,12 @@
"system-admin": "Administradores",
"system-users": "Usuarios",
"system-read-only": "Usuarios de solo lectura"
+ },
+ "config_entry": {
+ "disabled_by": {
+ "user": "Usuario",
+ "integration": "Integración",
+ "config_entry": "Entrada de configuración"
+ }
}
}
\ No newline at end of file
diff --git a/translations/fr.json b/translations/fr.json
index 3bfad800e3..d7bc851162 100644
--- a/translations/fr.json
+++ b/translations/fr.json
@@ -621,7 +621,7 @@
"value": "Valeur",
"instance": "Instance",
"index": "Indice",
- "unknown": "Inconnu",
+ "unknown": "inconnu",
"wakeup_interval": "Intervalle de réveil"
},
"values": {
@@ -629,7 +629,7 @@
},
"node_config": {
"header": "Options de configuration du nœud",
- "seconds": "Secondes",
+ "seconds": "secondes",
"set_wakeup": "Définir l'intervalle de réveil",
"config_parameter": "Paramètre de configuration",
"config_value": "Valeur de configuration",
@@ -1409,7 +1409,8 @@
"config_entry": {
"disabled_by": {
"user": "Utilisateur",
- "integration": "Intégration"
+ "integration": "Intégration",
+ "config_entry": "Paramètre de configuration"
}
}
}
\ No newline at end of file
diff --git a/translations/he.json b/translations/he.json
index 18cd5d43b3..3677c06852 100644
--- a/translations/he.json
+++ b/translations/he.json
@@ -762,7 +762,7 @@
},
"server_control": {
"caption": "בקרת שרת",
- "description": "שליטה על שרת ה Home Assistant",
+ "description": "אתחל וכבה את שרת ה Home Assistant",
"section": {
"validation": {
"heading": "בדיקת הקונפיגורציה",
@@ -859,7 +859,7 @@
},
"logout": "התנתק",
"force_narrow": {
- "header": "הסתר תמיד את הסרגל הצדדי",
+ "header": "הסתר תמיד את הסרגל הצידי",
"description": "פעולה זו תסתיר את הסרגל הצדדי כברירת מחדל, בדומה לחוויה בנייד."
}
},
@@ -1293,6 +1293,14 @@
"updater": {
"title": "הוראות עדכון"
}
+ },
+ "options_flow": {
+ "success": {
+ "description": "האפשרויות נשמרו בהצלחה."
+ }
+ },
+ "config_entry_system_options": {
+ "title": "אפשרויות מערכת"
}
},
"auth_store": {
@@ -1388,5 +1396,11 @@
"system-admin": "מנהלים",
"system-users": "משתמשים",
"system-read-only": "משתמשים לקריאה בלבד"
+ },
+ "config_entry": {
+ "disabled_by": {
+ "user": "משתמש",
+ "integration": "אינטגרציה"
+ }
}
}
\ No newline at end of file
diff --git a/translations/ko.json b/translations/ko.json
index 96c257ead8..6db3cf7be5 100644
--- a/translations/ko.json
+++ b/translations/ko.json
@@ -747,7 +747,10 @@
"unavailable": "이 구성요소는 현재 사용할 수 없습니다.",
"default_name": "새로운 영역",
"delete": "삭제",
- "update": "업데이트"
+ "update": "업데이트",
+ "enabled_label": "구성요소 활성화",
+ "enabled_cause": "{cause} 에 의해 비활성화 되었습니다.",
+ "enabled_description": "비활성화 된 구성요소는 Home Assistant 에 추가되지 않습니다."
}
},
"person": {
@@ -1302,6 +1305,11 @@
"success": {
"description": "옵션이 성공적으로 저장되었습니다."
}
+ },
+ "config_entry_system_options": {
+ "title": "시스템 옵션",
+ "enable_new_entities_label": "새로 추가된 구성요소를 활성화합니다.",
+ "enable_new_entities_description": "비활성화한 경우 새로 검색된 구성요소는 Home Assistant 에 자동으로 추가되지 않습니다."
}
},
"auth_store": {
@@ -1397,5 +1405,12 @@
"system-admin": "관리자",
"system-users": "사용자",
"system-read-only": "읽기 전용 사용자"
+ },
+ "config_entry": {
+ "disabled_by": {
+ "user": "사용자",
+ "integration": "통합 구성요소",
+ "config_entry": "구성 항목"
+ }
}
}
\ No newline at end of file
diff --git a/translations/nn.json b/translations/nn.json
index 433b5247f2..8121aa8a2f 100644
--- a/translations/nn.json
+++ b/translations/nn.json
@@ -698,7 +698,10 @@
"unavailable": "Denne eininga er for augeblinken ikkje tilgjengeleg.",
"default_name": "Nytt område",
"delete": "SLETT",
- "update": "OPPDATER"
+ "update": "OPPDATER",
+ "enabled_label": "Aktiver oppføringa",
+ "enabled_cause": "Deaktivert av {cause} .",
+ "enabled_description": "Deaktiverte eininga kjem ikkje til å verta lagt til i Home Assistant"
}
},
"person": {
diff --git a/translations/pl.json b/translations/pl.json
index 2b2867f8bd..a275704c7b 100644
--- a/translations/pl.json
+++ b/translations/pl.json
@@ -278,7 +278,7 @@
"unknown": "niezn",
"unavailable": "niedos",
"error": "błąd",
- "entity_not_found": "brak"
+ "entity_not_found": "Nie znaleziono jednostki"
},
"alarm_control_panel": {
"armed": "uzbr",
@@ -397,10 +397,10 @@
},
"customize": {
"caption": "Dostosowywanie",
- "description": "Dostosuj swoje encje",
+ "description": "Dostosuj swoje jednostki",
"picker": {
"header": "Dostosowywanie",
- "introduction": "Dostosuj atrybuty encji. Dodawane\/edytowane dostosowywania zostaną wprowadzone natychmiast. Usunięte dostosowania zostaną uwzględnione, gdy encja zostanie zaktualizowana."
+ "introduction": "Ulepsz atrybuty poszczególnych jednostek. Dodane\/edytowane dostosowania zaczną obowiązywać natychmiast. Usunięte dostosowania zostaną zastosowane po zaktualizowaniu encji."
}
},
"automation": {
@@ -475,7 +475,7 @@
},
"zone": {
"label": "Strefa",
- "entity": "Encja z lokalizacją",
+ "entity": "jednostka z lokalizacją",
"zone": "Strefa",
"event": "Zdarzenie:",
"enter": "Wprowadź",
@@ -508,7 +508,7 @@
"add": "Dodaj warunek",
"duplicate": "Duplikuj",
"delete": "Usuń",
- "delete_confirm": "Jesteś pewien, że chcesz usunąć?",
+ "delete_confirm": "Czy chcesz usunąć?",
"unsupported_condition": "Stan nieobsługiwany: {condition}",
"type_select": "Typ warunku",
"type": {
@@ -542,7 +542,7 @@
},
"zone": {
"label": "Strefa",
- "entity": "Encja z lokalizacją",
+ "entity": "Jednostka z lokalizacją",
"zone": "Strefa"
}
},
@@ -629,13 +629,13 @@
},
"node_config": {
"header": "Opcje konfiguracji węzła",
- "seconds": "sekund",
+ "seconds": "sekundy",
"set_wakeup": "Ustaw interwał wybudzenia",
"config_parameter": "Parametr",
"config_value": "Wartość",
"true": "Prawda",
"false": "Fałsz",
- "set_config_parameter": "Ustaw parametr"
+ "set_config_parameter": "Ustaw parametr konfiguracji"
}
},
"users": {
@@ -676,14 +676,14 @@
"none": "Nic jeszcze nie zostało skonfigurowane",
"config_entry": {
"no_devices": "Ta integracja nie ma żadnych urządzeń.",
- "no_device": "Encje bez urządzeń",
+ "no_device": "Jednostki bez urządzeń",
"delete_confirm": "Czy na pewno chcesz usunąć tę integrację?",
"restart_confirm": "Zrestartuj Home Assistant'a, aby zakończyć usuwanie tej integracji",
"manuf": "przez: {manufacturer}",
"via": "Połączony przez",
"firmware": "Oprogramowanie: {version}",
"device_unavailable": "urządzenie niedostępne",
- "entity_unavailable": "encja niedostępna",
+ "entity_unavailable": "jednostka niedostępna",
"no_area": "brak",
"hub": "Połączony przez"
},
@@ -734,20 +734,23 @@
}
},
"entity_registry": {
- "caption": "Rejestr encji",
- "description": "Przegląd wszystkich znanych encji",
+ "caption": "Rejestr jednostek",
+ "description": "Przegląd wszystkich znanych jednostek.",
"picker": {
- "header": "Rejestr encji",
- "unavailable": "(niedostępna)",
- "introduction": "Home Assistant prowadzi rejestr każdego podmiotu, jaki kiedykolwiek widział, i który można jednoznacznie zidentyfikować. Każda z tych jednostek będzie miała przypisany identyfikator podmiotu, który będzie zarezerwowany tylko dla tego podmiotu.",
- "introduction2": "Użyj rejestru jednostek, aby nadpisać nazwę, zmienić identyfikator jednostki lub usunąć wpis z Home Assistant. Uwaga: usunięcie wpisu rejestru jednostki nie spowoduje usunięcia encji. Aby to zrobić, kliknij poniższy link i usuń go ze strony integracji.",
+ "header": "Rejestr jednostek",
+ "unavailable": "(niedostępne)",
+ "introduction": "Home Assistant prowadzi rejestr wszystkich jednostek, które kiedykolwiek widział, które można jednoznacznie zidentyfikować. Każda z tych jednostek będzie miała przypisany ID jednostki, który będzie zarezerwowany tylko dla tej jednostki.",
+ "introduction2": "Użyj rejestru jednostek, aby zastąpić nazwę, zmienić ID jednostki lub usunąć wpis z Home Assistant. Uwaga usunięcie wpisu z rejestru jednostek nie spowoduje usunięcia jednostki. Aby to zrobić, kliknij poniższy link i usuń go ze strony integracji.",
"integrations_page": "Strona integracji"
},
"editor": {
- "unavailable": "Ta encja nie jest obecnie dostępna.",
+ "unavailable": "Ten jednostka nie jest obecnie dostępna.",
"default_name": "Nowy obszar",
"delete": "USUŃ",
- "update": "UAKTUALNIJ"
+ "update": "UAKTUALNIJ",
+ "enabled_label": "Włącz jednostkę",
+ "enabled_cause": "Wyłączone przez {cause}.",
+ "enabled_description": "Wyłączone jednostki nie zostaną dodane do Home Assistant."
}
},
"person": {
@@ -772,13 +775,13 @@
"invalid": "Konfiguracja nieprawidłowa"
},
"reloading": {
- "heading": "Przeładowanie konfiguracji",
- "introduction": "Niektóre części Home Assistant'a można przeładować bez konieczności ponownego uruchomienia. Kliknięcie przeładuj spowoduje ponowne wczytanie konfiguracji.",
- "core": "Przeładuj rdzeń",
- "group": "Przeładuj grupy",
- "automation": "Przeładuj automatyzacje",
- "script": "Przeładuj skrypty",
- "scene": "Przeładuj sceny"
+ "heading": "Ponowne załadowanie konfiguracji",
+ "introduction": "Niektóre części Home Assistant można przeładować bez konieczności ponownego uruchamiania. Naciśnięcie przycisku przeładowania spowoduje zwolnienie bieżącej konfiguracji i załadowanie nowej.",
+ "core": "Załaduj ponownie rdzeń",
+ "group": "Załaduj ponownie grupy",
+ "automation": "Załaduj ponownie automatyzacje",
+ "script": "Załaduj ponownie skrypty",
+ "scene": "Załaduj ponownie sceny"
},
"server_management": {
"heading": "Zarządzanie serwerem",
@@ -1038,7 +1041,7 @@
},
"save_config": {
"header": "Przejmij kontrolę nad interfejsem użytkownika Lovelace",
- "para": "Domyślnie Home Assistant będzie zarządzać interfejsem użytkownika, aktualizując go, gdy pojawią się nowe encje lub komponenty Lovelace. Jeśli przejmiesz kontrolę, Home Assistant nie będzie już automatycznie wprowadzać dla ciebie zmian.",
+ "para": "Domyślnie asystent domowy będzie utrzymywał interfejs użytkownika, aktualizując go, gdy pojawią się nowe elementy lub komponenty Lovelace. Jeśli przejmiesz kontrolę, nie będziemy już dokonywać zmian automatycznie.",
"para_sure": "Czy na pewno chcesz przejąć kontrolę nad interfejsem użytkownika?",
"cancel": "Nieważne",
"save": "Przejmuję kontrolę"
@@ -1055,13 +1058,13 @@
},
"menu": {
"configure_ui": "Konfiguracja interfejsu użytkownika",
- "unused_entities": "Nieużywane encje",
+ "unused_entities": "Nieużywane jednostki",
"help": "Pomoc",
"refresh": "Odśwież"
},
"warning": {
- "entity_not_found": "Ta encja nie jest dostępna: {entity}",
- "entity_non_numeric": "Ta encja nie jest numeryczna: {entity}"
+ "entity_not_found": "Ta jednostka jest niedostępna: {entity}",
+ "entity_non_numeric": "Ta jednostka nie jest numeryczna: {entity}"
},
"changed_toast": {
"message": "Zaktualizowano konfigurację Lovelace, czy chcesz odświeżyć?",
@@ -1246,7 +1249,7 @@
"components": {
"entity": {
"entity-picker": {
- "entity": "Encja"
+ "entity": "Jednostka"
}
},
"service-picker": {
@@ -1280,7 +1283,7 @@
"more_info_settings": {
"save": "Zapisz",
"name": "Nadpisanie nazwy",
- "entity_id": "Identyfikator encji"
+ "entity_id": "ID jednostki"
},
"more_info_control": {
"script": {
@@ -1300,8 +1303,13 @@
"header": "Opcje"
},
"success": {
- "description": "Opcje zapisane pomyślnie."
+ "description": "Opcje pomyślnie zapisane."
}
+ },
+ "config_entry_system_options": {
+ "title": "Opcje systemu",
+ "enable_new_entities_label": "Włącz nowo dodane jednostki.",
+ "enable_new_entities_description": "Jeśli wyłączone, nowo odkryte jednostki nie będą automatycznie dodawane do Home Assistant."
}
},
"auth_store": {
@@ -1397,5 +1405,12 @@
"system-admin": "Administratorzy",
"system-users": "Użytkownicy",
"system-read-only": "Użytkownicy (tylko odczyt)"
+ },
+ "config_entry": {
+ "disabled_by": {
+ "user": "Użytkownik",
+ "integration": "Integracja",
+ "config_entry": "Wpis konfiguracji"
+ }
}
}
\ No newline at end of file
diff --git a/translations/ru.json b/translations/ru.json
index dcc6ca98ac..09a4b3f5dd 100644
--- a/translations/ru.json
+++ b/translations/ru.json
@@ -749,7 +749,7 @@
"delete": "УДАЛИТЬ",
"update": "ОБНОВИТЬ",
"enabled_label": "Включить объект",
- "enabled_cause": "Отключен {cause} .",
+ "enabled_cause": "Отключен {cause}.",
"enabled_description": "Отключенные объекты не будут добавлены в Home Assistant."
}
},
@@ -1063,7 +1063,7 @@
"refresh": "Обновить"
},
"warning": {
- "entity_not_found": "Объект недоступен: {entity}",
+ "entity_not_found": "Объект {entity} недоступен.",
"entity_non_numeric": "Объект не является числом: {entity}"
},
"changed_toast": {
diff --git a/translations/sl.json b/translations/sl.json
index 2408d6aedf..09d7d7ce73 100644
--- a/translations/sl.json
+++ b/translations/sl.json
@@ -747,7 +747,10 @@
"unavailable": "Ta entiteta trenutno ni na voljo.",
"default_name": "Novo območje",
"delete": "BRISANJE",
- "update": "POSODOBITEV"
+ "update": "POSODOBITEV",
+ "enabled_label": "Omogoči entiteto",
+ "enabled_cause": "Onemogočeno zaradi {cause}.",
+ "enabled_description": "Onemogočeni subjekti ne bodo dodani v Home Assistant-a."
}
},
"person": {
@@ -1302,6 +1305,11 @@
"success": {
"description": "Možnosti so uspešno shranjene."
}
+ },
+ "config_entry_system_options": {
+ "title": "Sistemske možnosti",
+ "enable_new_entities_label": "Omogočite novo dodane subjekte.",
+ "enable_new_entities_description": "Če je onemogočeno, novo odkrite entitete ne bodo samodejno dodane v Home Assistant."
}
},
"auth_store": {
@@ -1397,5 +1405,12 @@
"system-admin": "Skrbniki",
"system-users": "Uporabniki",
"system-read-only": "Uporabniki \"samo za branje\""
+ },
+ "config_entry": {
+ "disabled_by": {
+ "user": "Uporabnik",
+ "integration": "Integracija",
+ "config_entry": "Vnos konfiguracije"
+ }
}
}
\ No newline at end of file
diff --git a/translations/sv.json b/translations/sv.json
index 8cae3f01cb..d897e06dce 100644
--- a/translations/sv.json
+++ b/translations/sv.json
@@ -747,7 +747,10 @@
"unavailable": "Denna enhet är inte tillgänglig för tillfället.",
"default_name": "Nytt område",
"delete": "RADERA",
- "update": "UPPDATERA"
+ "update": "UPPDATERA",
+ "enabled_label": "Aktivera enhet",
+ "enabled_cause": "Inaktiverad på grund av {cause}.",
+ "enabled_description": "Inaktiverade enheter kommer ej läggas till i Home Assistant."
}
},
"person": {
@@ -1302,6 +1305,11 @@
"success": {
"description": "Inställningar sparade"
}
+ },
+ "config_entry_system_options": {
+ "title": "Inställningar",
+ "enable_new_entities_label": "Aktivera nyligen tillagda enheter.",
+ "enable_new_entities_description": "Nyupptäckta enheter kommer ej läggas till automatiskt i Home Assistant om de är inaktiverade."
}
},
"auth_store": {
@@ -1397,5 +1405,11 @@
"system-admin": "Administratörer",
"system-users": "Användare",
"system-read-only": "Användare med läsbehörighet"
+ },
+ "config_entry": {
+ "disabled_by": {
+ "user": "Användare",
+ "integration": "Integration"
+ }
}
}
\ No newline at end of file
diff --git a/translations/zh-Hant.json b/translations/zh-Hant.json
index 43bdc84187..c78c9272af 100644
--- a/translations/zh-Hant.json
+++ b/translations/zh-Hant.json
@@ -747,7 +747,10 @@
"unavailable": "該物件目前不可用。",
"default_name": "新分區",
"delete": "刪除",
- "update": "更新"
+ "update": "更新",
+ "enabled_label": "啟用物件",
+ "enabled_cause": "由 {cause} 關閉。",
+ "enabled_description": "關閉的物件將不會新增至 Home Assistant。"
}
},
"person": {
@@ -1302,6 +1305,11 @@
"success": {
"description": "選項已儲存。"
}
+ },
+ "config_entry_system_options": {
+ "title": "系統選項",
+ "enable_new_entities_label": "啟用新增之物件。",
+ "enable_new_entities_description": "關閉後,新發現的物件將不會自動新增至 Home Assistant。"
}
},
"auth_store": {
@@ -1397,5 +1405,12 @@
"system-admin": "管理員",
"system-users": "用戶",
"system-read-only": "唯讀用戶"
+ },
+ "config_entry": {
+ "disabled_by": {
+ "user": "使用者",
+ "integration": "整合",
+ "config_entry": "設定物件"
+ }
}
}
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index efc1eb942f..1e048b582a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8639,7 +8639,7 @@ loader-utils@^0.2.16:
json5 "^0.5.0"
object-assign "^4.0.1"
-loader-utils@^1.0.2, loader-utils@^1.1.0:
+loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
@@ -14362,6 +14362,13 @@ worker-farm@^1.5.2:
dependencies:
errno "~0.1.7"
+workerize-loader@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/workerize-loader/-/workerize-loader-1.1.0.tgz#d3a634390dcb685cc1ee292cd1fffeef0a646044"
+ integrity sha512-cU2jPVE3AzzVxOonBe9lCCO//qwE9s/K4a9njFVRLueznzNDNND5vGHVorGuzK6xvamdDOZ9+g7CPIc7QKzucQ==
+ dependencies:
+ loader-utils "^1.2.3"
+
wrap-ansi@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"