diff --git a/package.json b/package.json index 7fc5052144..66c8aa500d 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "fuse.js": "^6.0.0", "google-timezones-json": "^1.0.2", "hls.js": "^0.12.4", - "home-assistant-js-websocket": "^5.3.0", + "home-assistant-js-websocket": "^5.4.0", "idb-keyval": "^3.2.0", "intl-messageformat": "^8.3.9", "js-yaml": "^3.13.1", diff --git a/setup.py b/setup.py index 4e8a2b4f5a..1d9ca6a700 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages setup( name="home-assistant-frontend", - version="20200623.3", + version="20200626.0", description="The Home Assistant frontend", url="https://github.com/home-assistant/home-assistant-polymer", author="The Home Assistant Authors", diff --git a/src/panels/logbook/ha-logbook.ts b/src/panels/logbook/ha-logbook.ts index 507319fb2e..6c8ecf866b 100644 --- a/src/panels/logbook/ha-logbook.ts +++ b/src/panels/logbook/ha-logbook.ts @@ -9,7 +9,6 @@ import { } from "lit-element"; import { scroll } from "lit-virtualizer"; import { formatDate } from "../../common/datetime/format_date"; -import { fetchUsers } from "../../data/user"; import { formatTimeWithSeconds } from "../../common/datetime/format_time"; import { fireEvent } from "../../common/dom/fire_event"; import { domainIcon } from "../../common/entity/domain_icon"; @@ -22,8 +21,7 @@ import { HomeAssistant } from "../../types"; class HaLogbook extends LitElement { @property() public hass!: HomeAssistant; - @property({ attribute: false }) - private _userid_to_name = {}; + @property() public userIdToName = {}; @property() public entries: LogbookEntry[] = []; @@ -62,20 +60,6 @@ class HaLogbook extends LitElement { `; } - private async _fetchUsers() { - const users = await fetchUsers(this.hass); - const userid_to_name = {}; - users.forEach((user) => { - userid_to_name[user.id] = user.name; - }); - this._userid_to_name = userid_to_name; - } - - protected firstUpdated(changedProperties: PropertyValues) { - super.firstUpdated(changedProperties); - this._fetchUsers(); - } - private _renderLogbookItem( item: LogbookEntry, index?: number @@ -86,7 +70,7 @@ class HaLogbook extends LitElement { const previous = this.entries[index - 1]; const state = item.entity_id ? this.hass.states[item.entity_id] : undefined; const item_username = - item.context_user_id && this._userid_to_name[item.context_user_id]; + item.context_user_id && this.userIdToName[item.context_user_id]; return html`
${index === 0 || diff --git a/src/panels/logbook/ha-panel-logbook.ts b/src/panels/logbook/ha-panel-logbook.ts index 6e7e64ccf5..42dc369094 100644 --- a/src/panels/logbook/ha-panel-logbook.ts +++ b/src/panels/logbook/ha-panel-logbook.ts @@ -17,6 +17,7 @@ import { } from "lit-element"; import { HomeAssistant } from "../../types"; import { haStyle } from "../../resources/styles"; +import { fetchUsers } from "../../data/user"; import { clearLogbookCache, getLogbookData, @@ -32,6 +33,9 @@ export class HaPanelLogbook extends LitElement { @property({ reflect: true, type: Boolean }) narrow!: boolean; + @property({ attribute: false }) + private _userIdToName = {}; + @property() _startDate: Date; @property() _endDate: Date; @@ -46,6 +50,8 @@ export class HaPanelLogbook extends LitElement { @property() private _ranges?: DateRangePickerRanges; + private _fetchUserDone?: Promise; + public constructor() { super(); @@ -112,6 +118,7 @@ export class HaPanelLogbook extends LitElement { : html``} `; @@ -121,6 +128,8 @@ export class HaPanelLogbook extends LitElement { super.firstUpdated(changedProps); this.hass.loadBackendTranslation("title"); + this._fetchUserDone = this._fetchUsers(); + const today = new Date(); today.setHours(0, 0, 0, 0); const todayEnd = new Date(today); @@ -184,6 +193,15 @@ export class HaPanelLogbook extends LitElement { } } + private async _fetchUsers() { + const users = await fetchUsers(this.hass); + const userid_to_name = {}; + users.forEach((user) => { + userid_to_name[user.id] = user.name; + }); + this._userIdToName = userid_to_name; + } + private _dateRangeChanged(ev) { this._startDate = ev.detail.startDate; const endDate = ev.detail.endDate; @@ -209,12 +227,18 @@ export class HaPanelLogbook extends LitElement { private async _getData() { this._isLoading = true; - this._entries = await getLogbookData( - this.hass, - this._startDate.toISOString(), - this._endDate.toISOString(), - this._entityId - ); + const [entries] = await Promise.all([ + getLogbookData( + this.hass, + this._startDate.toISOString(), + this._endDate.toISOString(), + this._entityId + ), + this._fetchUserDone, + ]); + // Fixed in TS 3.9 but upgrade out of scope for this PR. + // @ts-ignore + this._entries = entries; this._isLoading = false; } diff --git a/src/panels/lovelace/components/hui-image.ts b/src/panels/lovelace/components/hui-image.ts index 4dbbfeac10..cdfc7bfb2f 100644 --- a/src/panels/lovelace/components/hui-image.ts +++ b/src/panels/lovelace/components/hui-image.ts @@ -54,11 +54,8 @@ export class HuiImage extends LitElement { private _cameraUpdater?: number; - private _attached?: boolean; - public connectedCallback(): void { super.connectedCallback(); - this._attached = true; if (this.cameraImage && this.cameraView !== "live") { this._startUpdateCameraInterval(); } @@ -66,7 +63,6 @@ export class HuiImage extends LitElement { public disconnectedCallback(): void { super.disconnectedCallback(); - this._attached = false; this._stopUpdateCameraInterval(); } @@ -170,7 +166,7 @@ export class HuiImage extends LitElement { private _startUpdateCameraInterval(): void { this._stopUpdateCameraInterval(); - if (this.cameraImage && this._attached) { + if (this.cameraImage && this.isConnected) { this._cameraUpdater = window.setInterval( () => this._updateCameraImageSrc(), UPDATE_INTERVAL @@ -181,6 +177,7 @@ export class HuiImage extends LitElement { private _stopUpdateCameraInterval(): void { if (this._cameraUpdater) { clearInterval(this._cameraUpdater); + this._cameraUpdater = undefined; } } diff --git a/src/panels/lovelace/editor/config-elements/hui-picture-entity-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-picture-entity-card-editor.ts index fc8e2587bc..efd1e2b831 100644 --- a/src/panels/lovelace/editor/config-elements/hui-picture-entity-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-picture-entity-card-editor.ts @@ -77,7 +77,7 @@ export class HuiPictureEntityCardEditor extends LitElement } get _aspect_ratio(): string { - return this._config!.aspect_ratio || "50"; + return this._config!.aspect_ratio || ""; } get _tap_action(): ActionConfig { diff --git a/translations/frontend/ca.json b/translations/frontend/ca.json index 9e0247c285..a9de5664d1 100644 --- a/translations/frontend/ca.json +++ b/translations/frontend/ca.json @@ -48,6 +48,19 @@ "none": "Cap", "sleep": "Dormint" } + }, + "humidifier": { + "mode": { + "auto": "Automàtic", + "away": "A fora", + "baby": "Nadó", + "boost": "Incrementat", + "comfort": "Confort", + "eco": "Econòmic", + "home": "A casa", + "normal": "Normal", + "sleep": "Dormint" + } } }, "state_badge": { @@ -388,6 +401,12 @@ "reverse": "Invers", "speed": "Velocitat" }, + "humidifier": { + "humidity": "Humitat desitjada", + "mode": "Mode", + "on_entity": "{name} on", + "target_humidity_entity": "Temperatura desitjada de {name}" + }, "light": { "brightness": "Brillantor", "color_temperature": "Temperatura de color", @@ -2198,6 +2217,10 @@ "description": "La targeta pila horizontal et permet agrupar diferents targetes, una al costat de l'altra (horizontalment), pero dins d'una única columna.", "name": "Pila horitzontal" }, + "humidifier": { + "description": "La targeta humidificador et permet controlar una entitat de tipus humidificador. Pots canviar-ne tant la humitat com el mode.", + "name": "Humidificador" + }, "iframe": { "description": "La targeta pàgina web et permet incrustar els teus llocs web preferits directament a Home Assistant.", "name": "Pàgina web" diff --git a/translations/frontend/cs.json b/translations/frontend/cs.json index b0405ef4ca..b4cb190800 100644 --- a/translations/frontend/cs.json +++ b/translations/frontend/cs.json @@ -478,9 +478,12 @@ "cancel": "Zrušit", "close": "Zavřít", "delete": "Smazat", + "error_required": "Povinné", "loading": "Načítání", + "menu": "Menu", "next": "Další", "no": "Ne", + "overflow_menu": "Přesah menu", "previous": "Předchozí", "refresh": "Obnovit", "save": "Uložit", @@ -503,6 +506,11 @@ "clear": "Vymazat", "show_areas": "Zobrazit oblasti" }, + "date-range-picker": { + "end_date": "Koncové datum", + "select": "Vybrat", + "start_date": "Počáteční datum" + }, "device-picker": { "clear": "Zrušit", "device": "Zařízení", @@ -691,10 +699,11 @@ }, "zha_device_info": { "buttons": { - "add": "Přidat zařízení", + "add": "Přidejte zařízení prostřednictvím tohoto zařízení", + "clusters": "Clustery", "reconfigure": "Překonfigurovat zařízení", "remove": "Odebrat zařízení", - "zigbee_information": "Informace o Zigbee" + "zigbee_information": "Podpis zařízení Zigbee" }, "confirmations": { "remove": "Opravdu chcete zařízení odebrat?" @@ -714,7 +723,7 @@ "unknown": "Neznámý", "zha_device_card": { "area_picker_label": "Oblast", - "device_name_placeholder": "Název přidělený uživatelem", + "device_name_placeholder": "Změnit název zařízení", "update_name_button": "Název aktualizace" } } @@ -910,6 +919,8 @@ "introduction": "Použijte automatizace k oživení svého domova", "load_error_not_editable": "Lze upravovat pouze automatizace v automations.yaml.", "load_error_unknown": "Chyba při načítání automatizace ({err_no}).", + "move_down": "Posunout dolů", + "move_up": "Posunout nahoru", "save": "Uložit", "triggers": { "add": "Přidat spouštěč", @@ -1221,6 +1232,7 @@ "different_include": "Možné přidat přes doménu", "pick_attribute": "Vyberte vlastnost, kterou chcete přepsat", "picker": { + "entity": "Entita", "header": "Přizpůsobení", "introduction": "Upravit atributy entity. Přídání/úprava bude mít okamžitý efekt. Odebraní se projeví až po aktualizaci entity." }, @@ -1367,7 +1379,9 @@ }, "info": { "built_using": "Sestaveno pomocí", + "caption": "Informace", "custom_uis": "Vlastní uživatelská rozhraní:", + "description": "Informace o instalaci Home Assistant", "developed_by": "Vyvinuto partou úžasných lidí.", "documentation": "Dokumentace", "frontend": "frontend-ui", @@ -1383,6 +1397,11 @@ "system_health_error": "Součást System Health není načtena. Přidejte 'system_health:' do configuration.yaml", "title": "Informace" }, + "integration_panel_move": { + "link_integration_page": "stránka integrací", + "missing_zha": "Hledáte konfiguraci ZHA? Byl přesunut do položky Z-Wave na {integrations_page} .", + "missing_zwave": "Hledáte konfiguraci Z-Wave? Byl přesunut do položky Z-Wave na {integrations_page} ." + }, "integrations": { "add_integration": "Přidat integraci", "caption": "Integrace", @@ -1392,6 +1411,7 @@ "delete_button": "Smazat {integration}", "delete_confirm": "Opravdu chcete odstranit tuto integraci?", "device_unavailable": "zařízení není k dispozici", + "devices": "{count} {count, plural,\n one {zařízení}\n other {zařízení}\n}", "entities": "{count} {count, plural,\n one {entita}\n other {entit}\n}", "entity_unavailable": "entita není k dispozici", "firmware": "Firmware: {version}", @@ -1454,7 +1474,9 @@ }, "introduction": "Zde je možné konfigurovat vaše komponenty a Home Assistant.\nZ uživatelského rozhraní sice zatím není možné konfigurovat vše, ale pracujeme na tom.", "logs": { + "caption": "Logy", "clear": "Zrušit", + "description": "Zobrazit log Home Assistant", "details": "Detaily protokolu ({level})", "load_full_log": "Načíst úplný protokol Home Assistanta", "loading_log": "Načítání protokolu chyb...", @@ -1542,6 +1564,7 @@ } }, "mqtt": { + "button": "Konfigurovat", "description_listen": "Naslouchat tématu", "description_publish": "Publikovat paket", "listening_to": "Naslouchám", @@ -1662,6 +1685,11 @@ "core": "Znovu načíst umístění a přizpůsobení", "group": "Znovu načíst skupiny", "heading": "Konfigurace se načítá", + "input_boolean": "Znovu načíst logické hodnoty", + "input_datetime": "Znovu načíst časy", + "input_number": "Znovu načíst vstupní čísla", + "input_select": "Znovu načíst výběr", + "input_text": "Znovu načíst text", "introduction": "Některé části Home Assistant lze načíst bez nutnosti restartování. Volba načtení zahodí jejich aktuální konfiguraci a načte novou.", "person": "Znovu načíst osoby", "scene": "Znovu načíst scény", @@ -1720,12 +1748,16 @@ "name": "Název", "system": "Systémový" } - } + }, + "users_privileges_note": "Skupina uživatelů je v přípravě. Uživatel nebude moci spravovat instanci prostřednictvím uživatelského rozhraní. Stále kontrolujeme všechny koncové body API pro správu, abychom zajistili, že správně omezují přístup." }, "zha": { "add_device_page": { + "discovered_text": "Jakmile se objeví nalezne, zobrazí se zde.", "discovery_text": "Zde se objeví nalezená zařízení. Postupujte dle pokynů pro vaše zařízení a uveďte je do režimu párování.", "header": "Zigbee Home Automation - Přidat zařízení", + "no_devices_found": "Žádná zařízení nalezena, ujistěte se, že jsou v režimu párování a udržujte je zapnuté, zatímco je objevování spuštěno.", + "pairing_mode": "Zkontrolujte, zda jsou vaše zařízení v režimu párování. Postupujte podle pokynů svého zařízení.", "search_again": "Hledat znovu", "spinner": "Hledání zařízení ZHA Zigbee ..." }, @@ -1733,6 +1765,7 @@ "caption": "Přidat zařízení", "description": "Přidat zařízení do sítě Zigbee" }, + "button": "Nakonfigurovat", "caption": "ZHA", "cluster_attributes": { "attributes_of_cluster": "Atributy vybraného klastru", @@ -1811,6 +1844,9 @@ "header": "Správa sítě", "introduction": "Příkazy, které ovlivňují celou síť" }, + "network": { + "caption": "Síť" + }, "node_management": { "header": "Správa zařízení", "help_node_dropdown": "Vyberte zařízení pro zobrazení možností pro jednotlivé zařízení.", @@ -1850,6 +1886,7 @@ "no_zones_created_yet": "Vypadá to, že nejsou vytvořené žádné zóny." }, "zwave": { + "button": "Nakonfigurovat", "caption": "Z-Wave", "common": { "index": "Index", @@ -1907,7 +1944,8 @@ "header": "Protokol OZW", "introduction": "Zobrazit protokol. 0 je minimum (načte celý protokol) a 1000 je maximum. Načíst zobrazí statický protokol a tail automaticky aktualizuje protokol s naposledy zvoleným počtem řádků.", "last_log_lines": "Počet řádků posledního protokolu", - "load": "Načíst" + "load": "Načíst", + "tail": "Konec" }, "services": { "add_node": "Přidat uzel", @@ -1916,6 +1954,7 @@ "heal_network": "Vyléčit síť", "heal_node": "Uzdravit uzel", "node_info": "Informace o uzlu", + "print_node": "Otisk nodu", "refresh_entity": "Znovu načíst Entitu", "refresh_node": "Obnovit uzel", "remove_failed_node": "Odebrat selhaný uzel", @@ -2003,11 +2042,23 @@ }, "history": { "period": "Období", + "ranges": { + "last_week": "Minulý týden", + "this_week": "Tento týden", + "today": "Dnes", + "yesterday": "Včera" + }, "showing_entries": "Zobrazeny údaje pro" }, "logbook": { "entries_not_found": "Nebyly nalezeny žádné záznamy v deníku.", "period": "Období", + "ranges": { + "last_week": "Minulý týden", + "this_week": "Tento týden", + "today": "Dnes", + "yesterday": "Včera" + }, "showing_entries": "Zobrazeny údaje pro" }, "lovelace": { diff --git a/translations/frontend/el.json b/translations/frontend/el.json index a3a222d2ef..817d721ef0 100644 --- a/translations/frontend/el.json +++ b/translations/frontend/el.json @@ -496,6 +496,11 @@ "clear": "Εκκαθάριση", "show_areas": "Εμφάνιση περιοχών" }, + "date-range-picker": { + "end_date": "Ημερομηνία λήξης", + "select": "Επιλογή", + "start_date": "Ημερομηνία έναρξης" + }, "device-picker": { "clear": "Καθαρός", "device": "Συσκευή", @@ -605,6 +610,7 @@ "zha_device_info": { "buttons": { "add": "Προσθήκη συσκευών", + "clusters": "Διαχείριση συμπλεγμάτων", "reconfigure": "Ρυθμίστε Ξανά Τη Συσκευή", "remove": "Κατάργηση συσκευής" }, @@ -1231,6 +1237,9 @@ "system_health_error": "Το στοιχείο Υγεία Συστήματος δεν έχει φορτωθεί. Προσθέστε 'system_health:' στη ρύθμιση παραμέτρων configuration.yaml", "title": "Πληροφορίες" }, + "integration_panel_move": { + "link_integration_page": "Σελίδα ενσωματώσεων" + }, "integrations": { "caption": "Ενσωματώσεις", "config_entry": { @@ -1320,6 +1329,7 @@ } }, "mqtt": { + "button": "Διαμόρφωση", "description_listen": "Ακούστε ένα θέμα", "description_publish": "Δημοσιεύστε ένα πακέτο", "listening_to": "Ακούγοντας το", @@ -1571,6 +1581,9 @@ "header": "Διαχείριση δικτύου", "introduction": "Εντολές που επηρεάζουν ολόκληρο το δίκτυο" }, + "network": { + "caption": "Δίκτυο" + }, "node_management": { "header": "Διαχείριση συσκευής", "help_node_dropdown": "Επιλέξτε μια συσκευή για να προβάλετε επιλογές ανά συσκευή.", @@ -1584,6 +1597,7 @@ "edit_home_zone": "Η τοποθεσία του σπιτιού σας μπορεί να αλλαχτεί από τις γενικές ρυθμίσεις." }, "zwave": { + "button": "Διαμόρφωση", "caption": "Z-Wave", "common": { "index": "Δείκτης", @@ -1707,11 +1721,23 @@ }, "history": { "period": "Περίοδος", + "ranges": { + "last_week": "Προηγούμενη εβδομάδα", + "this_week": "Αυτή την εβδομάδα", + "today": "Σήμερα", + "yesterday": "Εχθές" + }, "showing_entries": "Εμφανίζονται καταχωρήσεις για" }, "logbook": { "entries_not_found": "Δε βρέθηκαν καταχωρήσεις στο αρχείο καταγραφής.", "period": "Περίοδος", + "ranges": { + "last_week": "Προηγούμενη εβδομάδα", + "this_week": "Αυτή την εβδομάδα", + "today": "Σήμερα", + "yesterday": "Εχθές" + }, "showing_entries": "Εμφανίζοντα καταχωρήσεις για" }, "lovelace": { diff --git a/translations/frontend/en.json b/translations/frontend/en.json index c1556a7418..2a8e087a86 100644 --- a/translations/frontend/en.json +++ b/translations/frontend/en.json @@ -48,6 +48,19 @@ "none": "None", "sleep": "Sleep" } + }, + "humidifier": { + "mode": { + "auto": "Auto", + "away": "Away", + "baby": "Baby", + "boost": "Boost", + "comfort": "Comfort", + "eco": "Eco", + "home": "Home", + "normal": "Normal", + "sleep": "Sleep" + } } }, "state_badge": { @@ -388,6 +401,12 @@ "reverse": "Reverse", "speed": "Speed" }, + "humidifier": { + "humidity": "Target humidity", + "mode": "Mode", + "on_entity": "{name} on", + "target_humidity_entity": "{name} target humidity" + }, "light": { "brightness": "Brightness", "color_temperature": "Color temperature", @@ -2198,6 +2217,10 @@ "description": "The Horizontal Stack card allows you to stack together multiple cards, so they always sit next to each other in the space of one column.", "name": "Horizontal Stack" }, + "humidifier": { + "description": "The Humidifier card gives control of your humidifier entity. Allowing you to change the humidity and mode of the entity.", + "name": "Humidifier" + }, "iframe": { "description": "The Webpage card allows you to embed your favorite webpage right into Home Assistant.", "name": "Webpage" diff --git a/translations/frontend/es.json b/translations/frontend/es.json index e2a116d648..1600140cb9 100644 --- a/translations/frontend/es.json +++ b/translations/frontend/es.json @@ -48,6 +48,19 @@ "none": "Ninguno", "sleep": "Dormir" } + }, + "humidifier": { + "mode": { + "auto": "Auto", + "away": "Ausente", + "baby": "Bebé", + "boost": "Impulso", + "comfort": "Confort", + "eco": "Eco", + "home": "Casa", + "normal": "Normal", + "sleep": "Dormir" + } } }, "state_badge": { @@ -388,6 +401,12 @@ "reverse": "Inverso", "speed": "Velocidad" }, + "humidifier": { + "humidity": "Fijar humedad", + "mode": "Modo", + "on_entity": "{name} encendido", + "target_humidity_entity": "{name} fijada humedad" + }, "light": { "brightness": "Brillo", "color_temperature": "Temperatura del color", @@ -2198,6 +2217,10 @@ "description": "La tarjeta de la Pila Horizontal permite apilar varias tarjetas, de modo que siempre se sientan una al lado de la otra en el espacio de una columna.", "name": "Pila horizontal" }, + "humidifier": { + "description": "La tarjeta Humidificador te da el control de tu entidad humidificador. Te permite cambiar la humedad y el modo de la entidad.", + "name": "Humidificador" + }, "iframe": { "description": "La tarjeta de página web te permite incrustar tu página web favorita directamente en Home Assistant.", "name": "Página web" diff --git a/translations/frontend/fi.json b/translations/frontend/fi.json index 1c7c882707..fda56dd169 100644 --- a/translations/frontend/fi.json +++ b/translations/frontend/fi.json @@ -506,6 +506,11 @@ "clear": "Tyhjennä", "show_areas": "Näytä alueet" }, + "date-range-picker": { + "end_date": "Päättymispäivä", + "select": "Valitse", + "start_date": "Aloituspäivä" + }, "device-picker": { "clear": "Tyhjennä", "device": "Laite", @@ -695,9 +700,10 @@ "zha_device_info": { "buttons": { "add": "Lisää laitteita", + "clusters": "Hallitse klustereita", "reconfigure": "Määritä laite uudelleen", "remove": "Poista laite", - "zigbee_information": "Zigbee-tiedot" + "zigbee_information": "Zigbee-laitteen allekirjoitus" }, "confirmations": { "remove": "Haluatko varmasti poistaa laitteen?" @@ -717,7 +723,7 @@ "unknown": "Tuntematon", "zha_device_card": { "area_picker_label": "Alue", - "device_name_placeholder": "Käyttäjän etunimi", + "device_name_placeholder": "Vaihda laitteen nimi", "update_name_button": "Päivitä nimi" } } @@ -1558,6 +1564,7 @@ } }, "mqtt": { + "button": "Määritä", "description_listen": "Kuuntele aihetta", "description_publish": "Julkaise paketti", "listening_to": "Kuunnellaan", @@ -2035,11 +2042,23 @@ }, "history": { "period": "aikajakso", + "ranges": { + "last_week": "Viime viikolla", + "this_week": "Tällä viikolla", + "today": "Tänään", + "yesterday": "Eilen" + }, "showing_entries": "Näytetään tapahtumat alkaen" }, "logbook": { "entries_not_found": "Lokikirjauksia ei löytynyt.", "period": "aikajakso", + "ranges": { + "last_week": "Viime viikolla", + "this_week": "Tällä viikolla", + "today": "Tänään", + "yesterday": "Eilen" + }, "showing_entries": "Näytetään kirjaukset ajalta" }, "lovelace": { diff --git a/translations/frontend/he.json b/translations/frontend/he.json index 6a1a16bf9f..9410eece82 100644 --- a/translations/frontend/he.json +++ b/translations/frontend/he.json @@ -48,6 +48,12 @@ "none": "לא נבחר", "sleep": "שינה" } + }, + "humidifier": { + "mode": { + "away": "לא בבית", + "home": "בבית" + } } }, "state_badge": { @@ -1664,6 +1670,7 @@ "true": "True" }, "node_management": { + "add_to_group": "הוסף לקבוצה", "entities": "ישויות היחידה", "entity_info": "מידע על הישות", "exclude_entity": "אל תכלול ישות זו ב Home Assistant", @@ -1677,11 +1684,13 @@ "nodes_hint": "בחר יחידה כדי להציג אפשרויות ליחידה", "pooling_intensity": "עוצמת דגימה", "protection": "הגנה", + "remove_from_group": "הסר מהקבוצה", "set_protection": "הגדרת הגנה" }, "ozw_log": { "header": "יומן OZW", - "introduction": "צפה ביומן. 0 הוא המינימום (טוען יומן שלם) ו -1000 הוא המקסימום. הטעינה תציג יומן סטטי והסוף יתעדכן אוטומטית במספר האחרון שצוין של שורות היומן." + "introduction": "צפה ביומן. 0 הוא המינימום (טוען יומן שלם) ו -1000 הוא המקסימום. הטעינה תציג יומן סטטי והסוף יתעדכן אוטומטית במספר האחרון שצוין של שורות היומן.", + "load": "לִטעוֹן" }, "services": { "add_node": "הוסף רכיב", @@ -1777,6 +1786,12 @@ "logbook": { "entries_not_found": "לא נמצאו רשומות ביומן.", "period": "תקופה", + "ranges": { + "last_week": "שבוע שעבר", + "this_week": "השבוע", + "today": "היום", + "yesterday": "אתמול" + }, "showing_entries": "מציג רשומות עבור" }, "lovelace": { diff --git a/translations/frontend/ko.json b/translations/frontend/ko.json index d538eec03c..5d8a51939c 100644 --- a/translations/frontend/ko.json +++ b/translations/frontend/ko.json @@ -506,6 +506,11 @@ "clear": "지우기", "show_areas": "영역 표시" }, + "date-range-picker": { + "end_date": "종료일", + "select": "선택", + "start_date": "시작일" + }, "device-picker": { "clear": "지우기", "device": "기기", @@ -695,6 +700,7 @@ "zha_device_info": { "buttons": { "add": "이 기기를 통해 기기 추가", + "clusters": "클러스터 관리", "reconfigure": "기기 재설정", "remove": "기기 제거", "zigbee_information": "Zigbee 기기 서명" @@ -1558,6 +1564,7 @@ } }, "mqtt": { + "button": "설정", "description_listen": "토픽 내용 들어보기", "description_publish": "패킷 발행", "listening_to": "토픽 청취 중", @@ -2035,11 +2042,23 @@ }, "history": { "period": "기간", + "ranges": { + "last_week": "지난주", + "this_week": "이번주", + "today": "오늘", + "yesterday": "어제" + }, "showing_entries": "다음 날짜의 항목을 표시" }, "logbook": { "entries_not_found": "로그북 구성요소를 찾을 수 없습니다.", "period": "기간", + "ranges": { + "last_week": "지난주", + "this_week": "이번주", + "today": "오늘", + "yesterday": "어제" + }, "showing_entries": "다음 날짜의 항목을 표시" }, "lovelace": { diff --git a/translations/frontend/lb.json b/translations/frontend/lb.json index 9e7132c41e..d661df02c8 100644 --- a/translations/frontend/lb.json +++ b/translations/frontend/lb.json @@ -48,6 +48,19 @@ "none": "Keen", "sleep": "Schlofen" } + }, + "humidifier": { + "mode": { + "auto": "Auto", + "away": "Ënnerwee", + "baby": "Baby", + "boost": "Boost", + "comfort": "Bequem", + "eco": "Eco", + "home": "Doheem", + "normal": "Normal", + "sleep": "Schlofen" + } } }, "state_badge": { @@ -388,6 +401,12 @@ "reverse": "Hannerzeg", "speed": "Vitesse" }, + "humidifier": { + "humidity": "Viséiert Fiichtegkeet", + "mode": "Modus", + "on_entity": "{name} un", + "target_humidity_entity": "{name} Viséiert Fiichtegkeet" + }, "light": { "brightness": "Hellegkeet", "color_temperature": "Faarf Temperatur", @@ -505,6 +524,11 @@ "clear": "Läschen", "show_areas": "Beräicher uweisen" }, + "date-range-picker": { + "end_date": "End Datum", + "select": "Auswielen", + "start_date": "Start Datum" + }, "device-picker": { "clear": "Läschen", "device": "Apparat", @@ -694,6 +718,7 @@ "zha_device_info": { "buttons": { "add": "Apparater dobäisetzen", + "clusters": "Cluster verwalten", "reconfigure": "Apparat frësch konfiguréieren", "remove": "Apparat läschen", "zigbee_information": "Zigbee Informatiounen" @@ -1557,6 +1582,7 @@ } }, "mqtt": { + "button": "Astellen", "description_listen": "Sujet lauschteren", "description_publish": "Ee Pak publizéieren", "listening_to": "Lauschtert op", @@ -2027,11 +2053,23 @@ }, "history": { "period": "Zäitraum", + "ranges": { + "last_week": "Läscht Woch", + "this_week": "Dës Woch", + "today": "Haut", + "yesterday": "Gëschter" + }, "showing_entries": "Weist Beiträg fir" }, "logbook": { "entries_not_found": "Keng Logbicher Entrée fonnt", "period": "Zäitraum", + "ranges": { + "last_week": "Läscht Woch", + "this_week": "Dës Woch", + "today": "Haut", + "yesterday": "Gëschter" + }, "showing_entries": "Weist Beiträg fir" }, "lovelace": { @@ -2171,6 +2209,9 @@ "description": "Horizontal Kaart erlaabt et méi Kaarten ze gruppéieren fir dass se ëmmer an der selwechter Rei ugewise ginn.", "name": "Horizontale Stapel" }, + "humidifier": { + "name": "Loftbefiichter" + }, "iframe": { "description": "Websäit Kaart erlaabt et eng aaner Websäit am Home Assistant unzeweisen.", "name": "Websäit" diff --git a/translations/frontend/pl.json b/translations/frontend/pl.json index 569e5612a8..ab994f8749 100644 --- a/translations/frontend/pl.json +++ b/translations/frontend/pl.json @@ -35,7 +35,7 @@ "drying": "osuszanie", "fan": "wentylator", "heating": "grzanie", - "idle": "Bezczynny", + "idle": "nieaktywny", "off": "wyłączony" }, "preset_mode": { @@ -46,7 +46,20 @@ "eco": "ekonomicznie", "home": "w domu", "none": "brak", - "sleep": "sen" + "sleep": "noc" + } + }, + "humidifier": { + "mode": { + "auto": "automatycznie", + "away": "poza domem", + "baby": "dziecko", + "boost": "wzmocnienie", + "comfort": "komfort", + "eco": "ekonomicznie", + "home": "w domu", + "normal": "normalnie", + "sleep": "noc" } } }, @@ -362,11 +375,11 @@ "high": "wysoka", "low": "niska", "on_off": "Wł. / wył.", - "operation": "Tryb działania", + "operation": "Tryb pracy", "preset_mode": "Ustawienia", "swing_mode": "Tryb ruchu łopatek", - "target_humidity": "Docelowa wilgotność", - "target_temperature": "Docelowa temperatura", + "target_humidity": "Wilgotność docelowa", + "target_temperature": "Wilgotność docelowa", "target_temperature_entity": "{name} temperatura docelowa", "target_temperature_mode": "{name} temperatura docelowa {mode}" }, @@ -388,6 +401,12 @@ "reverse": "Wstecz", "speed": "Prędkość" }, + "humidifier": { + "humidity": "Wilgotność docelowa", + "mode": "Tryb pracy", + "on_entity": "{name} włączony", + "target_humidity_entity": "{name} wilgotność docelowa" + }, "light": { "brightness": "Jasność", "color_temperature": "Temperatura barwy", @@ -437,7 +456,7 @@ "away_mode": "Tryb poza domem", "currently": "Obecnie", "on_off": "Wł. / wył.", - "operation": "Tryb działania", + "operation": "Tryb pracy", "target_temperature": "Temperatura docelowa" }, "weather": { @@ -610,7 +629,7 @@ "min": "Minimalna wartość", "mode": "Tryb wyświetlania", "slider": "suwak", - "step": "Wielkość kroku suwaka", + "step": "Rozmiar kroku", "unit_of_measurement": "Jednostka miary" }, "input_select": { @@ -699,7 +718,7 @@ }, "zha_device_info": { "buttons": { - "add": "Dodaj urządzenia", + "add": "Dodaj urządzenia za pomocą tego urządzenia", "clusters": "Zarządzaj klastrami", "reconfigure": "Rekonfiguracja urządzenia", "remove": "Usuń urządzenie", @@ -723,7 +742,7 @@ "unknown": "Nieznany", "zha_device_card": { "area_picker_label": "Obszar", - "device_name_placeholder": "Nazwa użytkownika", + "device_name_placeholder": "Zmień nazwę urządzenia", "update_name_button": "Aktualizuj nazwę" } } @@ -764,7 +783,7 @@ "link_profile_page": "strona Twojego profilu" }, "areas": { - "caption": "Rejestr obszarów", + "caption": "Obszary", "data_table": { "area": "Obszar", "devices": "Urządzenia" @@ -776,17 +795,17 @@ "description": "Przegląd wszystkich obszarów w twoim domu", "editor": { "area_id": "Identyfikator obszaru", - "create": "UTWÓRZ", + "create": "Utwórz", "default_name": "Nowy obszar", - "delete": "USUŃ", + "delete": "Usuń", "name": "Nazwa", "name_required": "Nazwa jest wymagana", "unknown_error": "Nieznany błąd", - "update": "AKTUALIZUJ" + "update": "Aktualizuj" }, "picker": { "create_area": "Utwórz obszar", - "header": "Rejestr obszarów", + "header": "Obszary", "integrations_page": "Strona integracji", "introduction": "Obszary służą do organizacji urządzeń. Informacje te będą używane w Home Assistant, aby pomóc w organizacji interfejsu, uprawnień i integracji z innymi systemami.", "introduction2": "Aby umieścić urządzenia w danym obszarze, użyj poniższego linku, aby przejść do strony integracji, a następnie kliknij skonfigurowaną integrację, aby dostać się do kart urządzeń.", @@ -1445,7 +1464,7 @@ }, "configure": "Konfiguruj", "configured": "Skonfigurowane", - "description": "Zarządzaj integracjami", + "description": "Zarządzaj i konfiguruj integracje", "details": "Szczegóły integracji", "discovered": "Wykryte", "home_assistant_website": "Home Assistanta", @@ -2198,6 +2217,10 @@ "description": "Karta poziomego stosu umożliwia układanie wielu kart razem, dzięki czemu zawsze zlokalizowane są obok siebie w przestrzeni jednej kolumny.", "name": "Poziomy stos" }, + "humidifier": { + "description": "Karta nawilżacza zapewnia kontrolę nad encją nawilżacza. Umożliwia zmianę wilgotności i trybu pracy encji.", + "name": "Nawilżacz" + }, "iframe": { "description": "Karta strona web pozwala osadzić ulubioną stronę bezpośrednio w Home Assistant.", "name": "Strona web" @@ -2275,7 +2298,7 @@ }, "edit_card": { "add": "Dodaj kartę", - "delete": "Usuń", + "delete": "Usuń kartę", "duplicate": "Duplikuj kartę", "edit": "Edytuj", "header": "Konfiguracja karty", diff --git a/translations/frontend/ru.json b/translations/frontend/ru.json index 489268a2be..53abac9545 100644 --- a/translations/frontend/ru.json +++ b/translations/frontend/ru.json @@ -48,6 +48,19 @@ "none": "Не выбран", "sleep": "Ночь" } + }, + "humidifier": { + "mode": { + "auto": "Авто", + "away": "Не дома", + "baby": "Ребенок", + "boost": "Турбо", + "comfort": "Комфорт", + "eco": "Эко", + "home": "Дома", + "normal": "Нормальный", + "sleep": "Ночь" + } } }, "state_badge": { @@ -388,6 +401,12 @@ "reverse": "Задний ход", "speed": "Скорость" }, + "humidifier": { + "humidity": "Заданная влажность", + "mode": "Режим", + "on_entity": "{name} включено", + "target_humidity_entity": "{name} заданная влажность" + }, "light": { "brightness": "Яркость", "color_temperature": "Цветовая температура", @@ -2198,6 +2217,10 @@ "description": "Позволяет сгруппировать несколько карточек так, чтобы они всегда находились рядом друг с другом в пределах одного столбца.", "name": "Горизонтальный массив" }, + "humidifier": { + "description": "Позволяет контролировать увлажнитель воздуха, изменять влажность и режим работы.", + "name": "Увлажнитель" + }, "iframe": { "description": "Позволяет встроить веб-страницу в интерфейс Home Assistant.", "name": "Веб-страница" diff --git a/translations/frontend/zh-Hans.json b/translations/frontend/zh-Hans.json index 90030b9222..3e7fc68123 100644 --- a/translations/frontend/zh-Hans.json +++ b/translations/frontend/zh-Hans.json @@ -48,6 +48,19 @@ "none": "无", "sleep": "睡眠" } + }, + "humidifier": { + "mode": { + "auto": "自动", + "away": "离开", + "baby": "儿童", + "boost": "强力", + "comfort": "舒适", + "eco": "节能", + "home": "在家", + "normal": "标准", + "sleep": "睡眠" + } } }, "state_badge": { @@ -388,6 +401,10 @@ "reverse": "反向", "speed": "风速" }, + "humidifier": { + "humidity": "设定湿度", + "mode": "模式" + }, "light": { "brightness": "亮度", "color_temperature": "色温", @@ -2198,6 +2215,10 @@ "description": "“水平堆叠”卡片用于将多张卡片堆叠在一起,使它们始终彼此相邻放置成一行。", "name": "水平堆叠" }, + "humidifier": { + "description": "“加湿器”卡片用于控制加湿器实体,改变其设定湿度和模式。", + "name": "加湿器" + }, "iframe": { "description": "“网页”卡片供您将喜欢的网页直接嵌入 Home Assistant 中。", "name": "网页" diff --git a/yarn.lock b/yarn.lock index d4f02c9517..9882f3ec8f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6683,10 +6683,10 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -home-assistant-js-websocket@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/home-assistant-js-websocket/-/home-assistant-js-websocket-5.3.0.tgz#261d371c72746ec8b0eb8768b286d4f865e408b7" - integrity sha512-treEjeKpHB7JNrLddOf4FJudcm7hf9y23bNv/9GKiOvmmWIbblKt7UN+2V0WjPmBkSRvLmGprA/xxh5cgS8S1g== +home-assistant-js-websocket@^5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/home-assistant-js-websocket/-/home-assistant-js-websocket-5.4.0.tgz#637321ba47138562716290404adfa921d8d525dc" + integrity sha512-/sMJZwKTkoDvCljBTwGRiZy67ODZua/xYNH61n4zmX3Lcgb1D/zRDiJtwvW+g//BO/RAsNR5GulbUOdDrqmQlA== homedir-polyfill@^1.0.1: version "1.0.3"