Merge pull request #9517 from home-assistant/dev

This commit is contained in:
Bram Kragten 2021-07-07 09:58:19 +02:00 committed by GitHub
commit 5c737e1969
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 117 additions and 21 deletions

View File

@ -2,7 +2,7 @@ from setuptools import setup, find_packages
setup( setup(
name="home-assistant-frontend", name="home-assistant-frontend",
version="20210706.0", version="20210707.0",
description="The Home Assistant frontend", description="The Home Assistant frontend",
url="https://github.com/home-assistant/home-assistant-polymer", url="https://github.com/home-assistant/home-assistant-polymer",
author="The Home Assistant Authors", author="The Home Assistant Authors",

View File

@ -6,9 +6,7 @@ import { formatNumber } from "../common/string/format_number";
import { afterNextRender } from "../common/util/render-status"; import { afterNextRender } from "../common/util/render-status";
import { FrontendLocaleData } from "../data/translation"; import { FrontendLocaleData } from "../data/translation";
import { getValueInPercentage, normalize } from "../util/calculate"; import { getValueInPercentage, normalize } from "../util/calculate";
import { isSafari } from "../util/is_safari";
// Workaround for https://github.com/home-assistant/frontend/issues/6467
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
const getAngle = (value: number, min: number, max: number) => { const getAngle = (value: number, min: number, max: number) => {
const percentage = getValueInPercentage(normalize(value, min, max), min, max); const percentage = getValueInPercentage(normalize(value, min, max), min, max);
@ -70,6 +68,7 @@ export class Gauge extends LitElement {
)} )}
> >
${ ${
// Workaround for https://github.com/home-assistant/frontend/issues/6467
isSafari isSafari
? svg`<animateTransform ? svg`<animateTransform
attributeName="transform" attributeName="transform"

View File

@ -2,6 +2,7 @@ import { clear, get, set, createStore, promisifyRequest } from "idb-keyval";
import { promiseTimeout } from "../common/util/promise-timeout"; import { promiseTimeout } from "../common/util/promise-timeout";
import { iconMetadata } from "../resources/icon-metadata"; import { iconMetadata } from "../resources/icon-metadata";
import { IconMeta } from "../types"; import { IconMeta } from "../types";
import { isSafari } from "../util/is_safari";
export interface Icons { export interface Icons {
[key: string]: string; [key: string]: string;
@ -28,8 +29,7 @@ export const getIcon = (iconName: string) =>
return; return;
} }
promiseTimeout( const readIcons = () =>
1000,
iconStore("readonly", (store) => { iconStore("readonly", (store) => {
for (const [iconName_, resolve_, reject_] of toRead) { for (const [iconName_, resolve_, reject_] of toRead) {
promisifyRequest<string | undefined>(store.get(iconName_)) promisifyRequest<string | undefined>(store.get(iconName_))
@ -37,8 +37,24 @@ export const getIcon = (iconName: string) =>
.catch((e) => reject_(e)); .catch((e) => reject_(e));
} }
toRead = []; toRead = [];
});
let readIconPromise: Promise<void>;
if (isSafari && (indexedDB as any).databases) {
let intervalId: number;
readIconPromise = new Promise<void>((resolveTry) => {
const tryIdb = () => (indexedDB as any).databases().finally(resolveTry);
intervalId = window.setInterval(tryIdb, 100);
tryIdb();
}) })
).catch((e) => { .then(() => readIcons())
.finally(() => clearInterval(intervalId));
} else {
readIconPromise = readIcons();
}
promiseTimeout(1000, readIconPromise).catch((e) => {
// Firefox in private mode doesn't support IDB // Firefox in private mode doesn't support IDB
// Safari sometime doesn't open the DB so we time out // Safari sometime doesn't open the DB so we time out
for (const [, , reject_] of toRead) { for (const [, , reject_] of toRead) {

View File

@ -91,6 +91,9 @@ export class HaDeviceTrigger extends LitElement {
} }
protected updated(changedPros) { protected updated(changedPros) {
if (!changedPros.has("trigger")) {
return;
}
const prevTrigger = changedPros.get("trigger"); const prevTrigger = changedPros.get("trigger");
if (prevTrigger && !deviceAutomationsEqual(prevTrigger, this.trigger)) { if (prevTrigger && !deviceAutomationsEqual(prevTrigger, this.trigger)) {
this._getCapabilities(); this._getCapabilities();
@ -119,6 +122,9 @@ export class HaDeviceTrigger extends LitElement {
) { ) {
trigger = this._origTrigger; trigger = this._origTrigger;
} }
if (this.trigger.id) {
trigger.id = this.trigger.id;
}
fireEvent(this, "value-changed", { value: trigger }); fireEvent(this, "value-changed", { value: trigger });
} }

View File

@ -0,0 +1,3 @@
export const isSafari = /^((?!chrome|android).)*safari/i.test(
navigator.userAgent
);

View File

@ -800,8 +800,8 @@
"detected_device_class": "s'ha detectat {device_class}", "detected_device_class": "s'ha detectat {device_class}",
"is_closing": "s'està tancant", "is_closing": "s'està tancant",
"is_opening": "s'està obrint", "is_opening": "s'està obrint",
"rose": "rosa", "rose": "ha sortit",
"set": "establert", "set": "s'ha post",
"turned_off": "s'ha apagat", "turned_off": "s'ha apagat",
"turned_on": "s'ha engegat", "turned_on": "s'ha engegat",
"was_at_home": "s'ha detectat a casa", "was_at_home": "s'ha detectat a casa",
@ -1513,6 +1513,11 @@
"wed": "Dimecres" "wed": "Dimecres"
} }
}, },
"trigger": {
"id": "ID del disparador",
"label": "Disparador",
"no_triggers": "No hi ha disparadors disponibles"
},
"zone": { "zone": {
"entity": "Entitat amb ubicació", "entity": "Entitat amb ubicació",
"label": "Zona", "label": "Zona",
@ -1556,6 +1561,7 @@
"delete_confirm": "Segur que vols eliminar-ho?", "delete_confirm": "Segur que vols eliminar-ho?",
"duplicate": "Duplica", "duplicate": "Duplica",
"header": "Disparadors", "header": "Disparadors",
"id": "ID del disparador (utilitzat per la condició de disparador)",
"introduction": "Els disparadors són les regles que fan que s'executi una automatització. Pots definir més d'un disparador per a cada automatització. Una vegada salti un disparador, Home Assistant validarà les condicions (si n'hi ha) i finalment cridarà l'acció.", "introduction": "Els disparadors són les regles que fan que s'executi una automatització. Pots definir més d'un disparador per a cada automatització. Una vegada salti un disparador, Home Assistant validarà les condicions (si n'hi ha) i finalment cridarà l'acció.",
"learn_more": "Més informació sobre els activadors", "learn_more": "Més informació sobre els activadors",
"name": "Disparador", "name": "Disparador",
@ -2664,10 +2670,12 @@
}, },
"save_script": "Desa l'script", "save_script": "Desa l'script",
"sequence": "Seqüència", "sequence": "Seqüència",
"sequence_sentence": "Seqüència d'accions de l'script." "sequence_sentence": "Seqüència d'accions de l'script.",
"show_trace": "Mostra la traça"
}, },
"picker": { "picker": {
"add_script": "Afegeix script", "add_script": "Afegeix script",
"dev_script": "Depura script",
"duplicate": "Duplica", "duplicate": "Duplica",
"duplicate_script": "Duplica l'script", "duplicate_script": "Duplica l'script",
"edit_script": "Edita l'script", "edit_script": "Edita l'script",

View File

@ -1513,6 +1513,11 @@
"wed": "Středa" "wed": "Středa"
} }
}, },
"trigger": {
"id": "ID spouštěče",
"label": "Spouštěč",
"no_triggers": "Nejsou k dispozici žádné spouštěče"
},
"zone": { "zone": {
"entity": "Entita s umístěním", "entity": "Entita s umístěním",
"label": "Zóna", "label": "Zóna",
@ -1556,6 +1561,7 @@
"delete_confirm": "Opravdu smazat?", "delete_confirm": "Opravdu smazat?",
"duplicate": "Duplikovat", "duplicate": "Duplikovat",
"header": "Spouštěče", "header": "Spouštěče",
"id": "ID spouštěče (použitého podmínkou \"spouštěč\")",
"introduction": "Spouštěče spouštějí automatizaci. Pro jednu automatizaci je možné zadat více spouštěčů. Po spuštění ověří Home Assistant případné podmínky a zavolá akci.", "introduction": "Spouštěče spouštějí automatizaci. Pro jednu automatizaci je možné zadat více spouštěčů. Po spuštění ověří Home Assistant případné podmínky a zavolá akci.",
"learn_more": "Další informace o spouštěčích", "learn_more": "Další informace o spouštěčích",
"name": "Spouštěč", "name": "Spouštěč",
@ -2664,10 +2670,12 @@
}, },
"save_script": "Uložit skript", "save_script": "Uložit skript",
"sequence": "Sekvence", "sequence": "Sekvence",
"sequence_sentence": "Posloupnost akcí tohoto skriptu." "sequence_sentence": "Posloupnost akcí tohoto skriptu.",
"show_trace": "Zobrazit trasu"
}, },
"picker": { "picker": {
"add_script": "Přidat skript", "add_script": "Přidat skript",
"dev_script": "Ladit skript",
"duplicate": "Duplikát", "duplicate": "Duplikát",
"duplicate_script": "Duplikovat skript", "duplicate_script": "Duplikovat skript",
"edit_script": "Upravit skript", "edit_script": "Upravit skript",

View File

@ -1513,6 +1513,11 @@
"wed": "Mittwoch" "wed": "Mittwoch"
} }
}, },
"trigger": {
"id": "Trigger-ID",
"label": "Trigger",
"no_triggers": "Keine Trigger verfügbar"
},
"zone": { "zone": {
"entity": "Entität mit Standort", "entity": "Entität mit Standort",
"label": "Zone", "label": "Zone",
@ -1556,6 +1561,7 @@
"delete_confirm": "Möchtest du das wirklich löschen?", "delete_confirm": "Möchtest du das wirklich löschen?",
"duplicate": "Duplizieren", "duplicate": "Duplizieren",
"header": "Auslöser", "header": "Auslöser",
"id": "Trigger-ID (wird von der Triggerbedingung verwendet)",
"introduction": "Auslöser starten automatisierte Abläufe. Es ist möglich, mehrere Auslöser für dieselbe Abfolge zu definieren. Wenn ein Auslöser aktiviert wird, prüft Home Assistant die Bedingungen, sofern vorhanden, und führt die Aktion aus.", "introduction": "Auslöser starten automatisierte Abläufe. Es ist möglich, mehrere Auslöser für dieselbe Abfolge zu definieren. Wenn ein Auslöser aktiviert wird, prüft Home Assistant die Bedingungen, sofern vorhanden, und führt die Aktion aus.",
"learn_more": "Erfahre mehr über Auslöser", "learn_more": "Erfahre mehr über Auslöser",
"name": "Auslöser", "name": "Auslöser",
@ -2664,10 +2670,12 @@
}, },
"save_script": "Skript speichern", "save_script": "Skript speichern",
"sequence": "Sequenz", "sequence": "Sequenz",
"sequence_sentence": "Die Abfolge der Aktionen dieses Skripts." "sequence_sentence": "Die Abfolge der Aktionen dieses Skripts.",
"show_trace": "Trace anzeigen"
}, },
"picker": { "picker": {
"add_script": "Neues Skript erstellen", "add_script": "Neues Skript erstellen",
"dev_script": "Debug-Skript",
"duplicate": "Duplizieren", "duplicate": "Duplizieren",
"duplicate_script": "Skript duplizieren", "duplicate_script": "Skript duplizieren",
"edit_script": "Skript bearbeiten", "edit_script": "Skript bearbeiten",

View File

@ -1513,6 +1513,11 @@
"wed": "Wednesday" "wed": "Wednesday"
} }
}, },
"trigger": {
"id": "Trigger Id",
"label": "Trigger",
"no_triggers": "No triggers available"
},
"zone": { "zone": {
"entity": "Entity with location", "entity": "Entity with location",
"label": "Zone", "label": "Zone",
@ -1556,6 +1561,7 @@
"delete_confirm": "Are you sure you want to delete this?", "delete_confirm": "Are you sure you want to delete this?",
"duplicate": "Duplicate", "duplicate": "Duplicate",
"header": "Triggers", "header": "Triggers",
"id": "Trigger ID (used by the trigger condition)",
"introduction": "Triggers are what starts the processing of an automation rule. It is possible to specify multiple triggers for the same rule. Once a trigger starts, Home Assistant will validate the conditions, if any, and call the action.", "introduction": "Triggers are what starts the processing of an automation rule. It is possible to specify multiple triggers for the same rule. Once a trigger starts, Home Assistant will validate the conditions, if any, and call the action.",
"learn_more": "Learn more about triggers", "learn_more": "Learn more about triggers",
"name": "Trigger", "name": "Trigger",
@ -2664,10 +2670,12 @@
}, },
"save_script": "Save script", "save_script": "Save script",
"sequence": "Sequence", "sequence": "Sequence",
"sequence_sentence": "The sequence of actions of this script." "sequence_sentence": "The sequence of actions of this script.",
"show_trace": "Show trace"
}, },
"picker": { "picker": {
"add_script": "Add script", "add_script": "Add script",
"dev_script": "Debug script",
"duplicate": "Duplicate", "duplicate": "Duplicate",
"duplicate_script": "Duplicate script", "duplicate_script": "Duplicate script",
"edit_script": "Edit script", "edit_script": "Edit script",

View File

@ -1513,6 +1513,11 @@
"wed": "Kolmapäev" "wed": "Kolmapäev"
} }
}, },
"trigger": {
"id": "Päästiku ID",
"label": "Päästik",
"no_triggers": "Päästikuid pole saadaval"
},
"zone": { "zone": {
"entity": "Asukohaga olem", "entity": "Asukohaga olem",
"label": "Tsoon", "label": "Tsoon",
@ -1556,6 +1561,7 @@
"delete_confirm": "Oled kindel, et soovid kustutada?", "delete_confirm": "Oled kindel, et soovid kustutada?",
"duplicate": "Paljunda", "duplicate": "Paljunda",
"header": "Päästikud", "header": "Päästikud",
"id": "Päästiku ID (kasutab päästiku tingimusi)",
"introduction": "Päästikud on need, millest algab automatiseeringu töö. Ühe automatiseeringu jaoks on võimalik määrata mitu päästikut. Kui päästik vallandub, kontrollib Home Assistant võimalike tingimuste täidetust ja käivitab tegevuse.", "introduction": "Päästikud on need, millest algab automatiseeringu töö. Ühe automatiseeringu jaoks on võimalik määrata mitu päästikut. Kui päästik vallandub, kontrollib Home Assistant võimalike tingimuste täidetust ja käivitab tegevuse.",
"learn_more": "Lisateave päästikute kohta", "learn_more": "Lisateave päästikute kohta",
"name": "Päästik", "name": "Päästik",
@ -2664,10 +2670,12 @@
}, },
"save_script": "Salvesta skript", "save_script": "Salvesta skript",
"sequence": "Jada", "sequence": "Jada",
"sequence_sentence": "Selle skripti toimingute jada." "sequence_sentence": "Selle skripti toimingute jada.",
"show_trace": "Kuva täitmise samme"
}, },
"picker": { "picker": {
"add_script": "Lisa uus skript", "add_script": "Lisa uus skript",
"dev_script": "Skriptide silumine",
"duplicate": "Klooni", "duplicate": "Klooni",
"duplicate_script": "Klooni skript", "duplicate_script": "Klooni skript",
"edit_script": "Muuda skripti", "edit_script": "Muuda skripti",

View File

@ -1147,7 +1147,7 @@
"filesize": "ישויות בגודל הקובץ", "filesize": "ישויות בגודל הקובץ",
"filter": "סינון ישויות", "filter": "סינון ישויות",
"generic": "ישויות כלליות של מצלמת IP", "generic": "ישויות כלליות של מצלמת IP",
"generic_thermostat": "ישויות כלליות של תרמוסטט", "generic_thermostat": "ישויות כלליות של וסת חום",
"group": "קבוצות, ישויות קבוצתיות ושירותי הודעה", "group": "קבוצות, ישויות קבוצתיות ושירותי הודעה",
"history_stats": "היסטוריית מצב ישויות", "history_stats": "היסטוריית מצב ישויות",
"homekit": "HomeKit", "homekit": "HomeKit",
@ -1513,6 +1513,11 @@
"wed": "יום רביעי" "wed": "יום רביעי"
} }
}, },
"trigger": {
"id": "מזהה טריגר",
"label": "טריגר",
"no_triggers": "אין טריגרים זמינים"
},
"zone": { "zone": {
"entity": "ישות עם מיקום", "entity": "ישות עם מיקום",
"label": "אזור", "label": "אזור",
@ -1556,6 +1561,7 @@
"delete_confirm": "האם בוודאות ברצונך למחוק זאת?", "delete_confirm": "האם בוודאות ברצונך למחוק זאת?",
"duplicate": "שיכפול", "duplicate": "שיכפול",
"header": "טריגרים", "header": "טריגרים",
"id": "מזהה טריגר (בשימוש על ידי תנאי טריגר)",
"introduction": "טריגרים הם מה שמתחיל כל אוטומציה. ניתן לציין מספר טריגרים עבור אותו כלל. לאחר הפעלת טריגר, Home Assistant יאמת את התנאים, אם ישנם, ויפעיל את הפעולה.", "introduction": "טריגרים הם מה שמתחיל כל אוטומציה. ניתן לציין מספר טריגרים עבור אותו כלל. לאחר הפעלת טריגר, Home Assistant יאמת את התנאים, אם ישנם, ויפעיל את הפעולה.",
"learn_more": "למד עוד על טריגרים", "learn_more": "למד עוד על טריגרים",
"name": "טריגר", "name": "טריגר",
@ -2664,10 +2670,12 @@
}, },
"save_script": "שמור סקריפט", "save_script": "שמור סקריפט",
"sequence": "סדר פעולות", "sequence": "סדר פעולות",
"sequence_sentence": "רצף הפעולות של סקריפט זה." "sequence_sentence": "רצף הפעולות של סקריפט זה.",
"show_trace": "הצג מעקב"
}, },
"picker": { "picker": {
"add_script": "הוסף סקריפט", "add_script": "הוסף סקריפט",
"dev_script": "ניפוי באגים סקריפט",
"duplicate": "שכפל", "duplicate": "שכפל",
"duplicate_script": "שכפול סקריפט", "duplicate_script": "שכפול סקריפט",
"edit_script": "ערוך סקריפט", "edit_script": "ערוך סקריפט",
@ -2693,7 +2701,7 @@
"filesize": "ישויות בגודל הקובץ", "filesize": "ישויות בגודל הקובץ",
"filter": "סינון ישויות", "filter": "סינון ישויות",
"generic": "ישויות כלליות של מצלמת IP", "generic": "ישויות כלליות של מצלמת IP",
"generic_thermostat": "ישויות כלליות של תרמוסטט", "generic_thermostat": "ישויות כלליות של וסת חום",
"group": "קבוצות, ישויות קבוצתיות ושירותי הודעה", "group": "קבוצות, ישויות קבוצתיות ושירותי הודעה",
"heading": "טעינה מחדש של תצורת YAML", "heading": "טעינה מחדש של תצורת YAML",
"history_stats": "היסטוריית מצב ישויות", "history_stats": "היסטוריית מצב ישויות",
@ -3530,7 +3538,7 @@
"name": "רשימת קניות" "name": "רשימת קניות"
}, },
"thermostat": { "thermostat": {
"description": "כרטיס התרמוסטט נותן שליטה על ישות האקלים שלך. מאפשר לך לשנות את הטמפרטורה ואת המצב של הישות.", "description": "כרטיס וסת החום נותן שליטה על ישות האקלים שלך. מאפשר לך לשנות את הטמפרטורה ואת המצב של הישות.",
"name": "וסת חום" "name": "וסת חום"
}, },
"vertical-stack": { "vertical-stack": {

View File

@ -1513,6 +1513,11 @@
"wed": "woensdag" "wed": "woensdag"
} }
}, },
"trigger": {
"id": "Trigger Id",
"label": "Trigger",
"no_triggers": "Geen triggers beschikbaar"
},
"zone": { "zone": {
"entity": "Entiteit met locatie", "entity": "Entiteit met locatie",
"label": "Zone", "label": "Zone",
@ -1556,6 +1561,7 @@
"delete_confirm": "Weet je zeker dat je dit item wilt verwijderen?", "delete_confirm": "Weet je zeker dat je dit item wilt verwijderen?",
"duplicate": "Dupliceren", "duplicate": "Dupliceren",
"header": "", "header": "",
"id": "Trigger-ID (gebruikt door de triggervoorwaarde)",
"introduction": "Triggers starten de verwerking van een automatiseringsregel. Het is mogelijk om meerdere triggers voor dezelfde regel op te geven. Zodra een trigger start, valideert Home Assistant de eventuele voorwaarden en roept hij de actie aan.", "introduction": "Triggers starten de verwerking van een automatiseringsregel. Het is mogelijk om meerdere triggers voor dezelfde regel op te geven. Zodra een trigger start, valideert Home Assistant de eventuele voorwaarden en roept hij de actie aan.",
"learn_more": "Meer informatie over triggers", "learn_more": "Meer informatie over triggers",
"name": "Trigger", "name": "Trigger",
@ -2664,10 +2670,12 @@
}, },
"save_script": "Script opslaan", "save_script": "Script opslaan",
"sequence": "Reeks", "sequence": "Reeks",
"sequence_sentence": "De reeks van acties in dit script." "sequence_sentence": "De reeks van acties in dit script.",
"show_trace": "Tracering weergeven"
}, },
"picker": { "picker": {
"add_script": "Voeg script toe", "add_script": "Voeg script toe",
"dev_script": "Debug script",
"duplicate": "Dupliceer", "duplicate": "Dupliceer",
"duplicate_script": "Script dupliceren", "duplicate_script": "Script dupliceren",
"edit_script": "Bewerk script", "edit_script": "Bewerk script",

View File

@ -1513,6 +1513,11 @@
"wed": "Среда" "wed": "Среда"
} }
}, },
"trigger": {
"id": "ID триггера",
"label": "Триггер",
"no_triggers": "Триггеры отсутствуют"
},
"zone": { "zone": {
"entity": "Объект с местоположением", "entity": "Объект с местоположением",
"label": "Зона", "label": "Зона",
@ -1556,6 +1561,7 @@
"delete_confirm": "Вы уверены, что хотите удалить?", "delete_confirm": "Вы уверены, что хотите удалить?",
"duplicate": "Дублировать", "duplicate": "Дублировать",
"header": "Триггеры", "header": "Триггеры",
"id": "ID триггера (используется в условиях)",
"introduction": "Триггеры — это то, что запускает процесс автоматизации. Можно указать несколько триггеров на одно и то же правило. Когда триггер сработает, Home Assistant будет проверять условия (если таковые имеются), и выполнять действия.", "introduction": "Триггеры — это то, что запускает процесс автоматизации. Можно указать несколько триггеров на одно и то же правило. Когда триггер сработает, Home Assistant будет проверять условия (если таковые имеются), и выполнять действия.",
"learn_more": "Узнайте больше о триггерах", "learn_more": "Узнайте больше о триггерах",
"name": "Триггер", "name": "Триггер",
@ -2664,10 +2670,12 @@
}, },
"save_script": "Сохранить скрипт", "save_script": "Сохранить скрипт",
"sequence": "Последовательность", "sequence": "Последовательность",
"sequence_sentence": "Последовательность действий этого скрипта." "sequence_sentence": "Последовательность действий этого скрипта.",
"show_trace": "Показать трассировку"
}, },
"picker": { "picker": {
"add_script": "Добавить скрипт", "add_script": "Добавить скрипт",
"dev_script": "Отладка скрипта",
"duplicate": "Дублировать", "duplicate": "Дублировать",
"duplicate_script": "Дублировать", "duplicate_script": "Дублировать",
"edit_script": "Редактировать скрипт", "edit_script": "Редактировать скрипт",

View File

@ -1513,6 +1513,11 @@
"wed": "星期三" "wed": "星期三"
} }
}, },
"trigger": {
"id": "觸發器 ID",
"label": "觸發器",
"no_triggers": "無觸發器可使用"
},
"zone": { "zone": {
"entity": "區域實體", "entity": "區域實體",
"label": "區域", "label": "區域",
@ -1556,6 +1561,7 @@
"delete_confirm": "確定要刪除嗎?", "delete_confirm": "確定要刪除嗎?",
"duplicate": "複製", "duplicate": "複製",
"header": "觸發", "header": "觸發",
"id": "觸發器 ID用於觸發條件",
"introduction": "「觸發條件」為可使設定好的自動化開始運作。可以針對一個自動化設定多個觸發條件。一旦觸發後Home Assistant 會檢查觸發判斷式,並開始執行動作。", "introduction": "「觸發條件」為可使設定好的自動化開始運作。可以針對一個自動化設定多個觸發條件。一旦觸發後Home Assistant 會檢查觸發判斷式,並開始執行動作。",
"learn_more": "詳細了解觸發條件", "learn_more": "詳細了解觸發條件",
"name": "觸發自動化", "name": "觸發自動化",
@ -2664,10 +2670,12 @@
}, },
"save_script": "儲存腳本", "save_script": "儲存腳本",
"sequence": "連續", "sequence": "連續",
"sequence_sentence": "此腳本所含的操作動作。" "sequence_sentence": "此腳本所含的操作動作。",
"show_trace": "顯示紀錄"
}, },
"picker": { "picker": {
"add_script": "新增腳本", "add_script": "新增腳本",
"dev_script": "除錯腳本",
"duplicate": "複製", "duplicate": "複製",
"duplicate_script": "複製腳本", "duplicate_script": "複製腳本",
"edit_script": "編輯腳本", "edit_script": "編輯腳本",