From 38cc7b10905c861a2055b198c17386b589a468e2 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 24 Aug 2019 09:55:49 -0700 Subject: [PATCH 1/8] Fix advanced mode not representing state correctly (#3519) --- src/panels/profile/ha-panel-profile.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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` ` : ""} From a66960fa00260c2e2ed9b55ce232f90780a3adeb Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 24 Aug 2019 12:42:38 -0700 Subject: [PATCH 2/8] Add context to comment --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index d7d36c6142..e71313cfcf 100644 --- a/package.json +++ b/package.json @@ -173,6 +173,7 @@ "workbox-webpack-plugin": "^4.1.1" }, "_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", From cdcafe9e6f5e025288bb1a57d92ada1a699625d4 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 24 Aug 2019 12:48:57 -0700 Subject: [PATCH 3/8] Run markdown in web worker (#3524) * Run markdown in web worker * Set global object --- build-scripts/webpack.js | 6 ++ package.json | 3 +- src/components/ha-markdown.js | 96 -------------------------------- src/components/ha-markdown.ts | 64 +++++++++++++++++++++ src/resources/load_markdown.js | 5 -- src/resources/markdown_worker.ts | 14 +++++ yarn.lock | 9 ++- 7 files changed, 94 insertions(+), 103 deletions(-) delete mode 100644 src/components/ha-markdown.js create mode 100644 src/components/ha-markdown.ts delete mode 100644 src/resources/load_markdown.js create mode 100644 src/resources/markdown_worker.ts 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 e71313cfcf..3dc0486a28 100644 --- a/package.json +++ b/package.json @@ -170,7 +170,8 @@ "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", 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/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..151efbe79f --- /dev/null +++ b/src/resources/markdown_worker.ts @@ -0,0 +1,14 @@ +import marked from "marked"; +// @ts-ignore +import filterXSS from "xss"; + +export const renderMarkdown = async ( + content: string, + markedOptions: object +) => { + return filterXSS(marked(content, markedOptions), { + onIgnoreTag(tag, html) { + return ["svg", "path", "ha-icon"].indexOf(tag) !== -1 ? html : null; + }, + }); +}; 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" From d841cc92ef462c473ce1ae74668c644fbfe30297 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 24 Aug 2019 12:55:40 -0700 Subject: [PATCH 4/8] Slightly simplify markdown API --- src/resources/markdown_worker.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/resources/markdown_worker.ts b/src/resources/markdown_worker.ts index 151efbe79f..9c45e697f7 100644 --- a/src/resources/markdown_worker.ts +++ b/src/resources/markdown_worker.ts @@ -2,13 +2,9 @@ import marked from "marked"; // @ts-ignore import filterXSS from "xss"; -export const renderMarkdown = async ( - content: string, - markedOptions: object -) => { - return filterXSS(marked(content, markedOptions), { +export const renderMarkdown = (content: string, markedOptions: object) => + filterXSS(marked(content, markedOptions), { onIgnoreTag(tag, html) { return ["svg", "path", "ha-icon"].indexOf(tag) !== -1 ? html : null; }, }); -}; From b624b363bdafe607e2c0010077ce1adbb9506adb Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 25 Aug 2019 21:51:47 -0700 Subject: [PATCH 5/8] Fix LL menu (#3528) --- src/panels/lovelace/hui-root.ts | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) 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")} + From 3709c13975604c767f7ab99a2523e02815e61ba5 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 25 Aug 2019 22:08:49 -0700 Subject: [PATCH 6/8] Increase touch target of menu button with notifications (#3527) --- src/components/ha-menu-button.ts | 1 + 1 file changed, 1 insertion(+) 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; From 0d43bef6009b7588234dbf77562fe67dca50b960 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 25 Aug 2019 22:20:35 -0700 Subject: [PATCH 7/8] Update translations --- translations/es-419.json | 111 +++++++++++++++++++++++++++++++++++++- translations/fr.json | 7 +-- translations/he.json | 18 ++++++- translations/ko.json | 17 +++++- translations/nn.json | 5 +- translations/pl.json | 79 ++++++++++++++++----------- translations/ru.json | 4 +- translations/sl.json | 17 +++++- translations/sv.json | 16 +++++- translations/zh-Hant.json | 17 +++++- 10 files changed, 245 insertions(+), 46 deletions(-) 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 From 62ae7df09715abf0641eeab29117491de5a71d47 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 25 Aug 2019 22:20:44 -0700 Subject: [PATCH 8/8] Bumped version to 20190825.0 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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",