Logger: ${item.name}
@@ -148,6 +168,25 @@ class DialogSystemLogDetail extends LitElement {
}
}
+ private _copyLog(): void {
+ const copyElement = this.shadowRoot?.querySelector(
+ "paper-dialog-scrollable"
+ ) as HTMLElement;
+
+ const selection = window.getSelection()!;
+ const range = document.createRange();
+
+ range.selectNodeContents(copyElement);
+ selection.removeAllRanges();
+ selection.addRange(range);
+
+ document.execCommand("copy");
+ window.getSelection()!.removeAllRanges();
+
+ this._toolTip!.show();
+ setTimeout(() => this._toolTip?.hide(), 3000);
+ }
+
static get styles(): CSSResult[] {
return [
haStyleDialog,
@@ -164,6 +203,15 @@ class DialogSystemLogDetail extends LitElement {
pre {
margin-bottom: 0;
}
+ .heading {
+ display: flex;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ }
+ .heading ha-svg-icon {
+ cursor: pointer;
+ }
`,
];
}
diff --git a/src/translations/en.json b/src/translations/en.json
index 8eadb910a9..f4dee440c1 100755
--- a/src/translations/en.json
+++ b/src/translations/en.json
@@ -278,7 +278,8 @@
"successfully_saved": "Successfully saved",
"successfully_deleted": "Successfully deleted",
"back": "Back",
- "error_required": "Required"
+ "error_required": "Required",
+ "copied": "Copied"
},
"components": {
"logbook": {
From ff081dd0f123d3c4ef36868f0014e41178c8b0f0 Mon Sep 17 00:00:00 2001
From: HomeAssistant Azure
Date: Mon, 14 Sep 2020 00:32:37 +0000
Subject: [PATCH 05/31] [ci skip] Translation update
---
translations/frontend/ca.json | 22 +++
translations/frontend/cs.json | 33 ++++
translations/frontend/en.json | 1 +
translations/frontend/es-419.json | 282 ++++++++++++++++++++++++++---
translations/frontend/es.json | 9 +
translations/frontend/nb.json | 30 +++
translations/frontend/nl.json | 32 ++++
translations/frontend/pl.json | 62 ++++++-
translations/frontend/ru.json | 21 +++
translations/frontend/zh-Hans.json | 33 ++++
translations/frontend/zh-Hant.json | 22 +++
11 files changed, 514 insertions(+), 33 deletions(-)
diff --git a/translations/frontend/ca.json b/translations/frontend/ca.json
index 9e89a2f943..c7ae05df35 100644
--- a/translations/frontend/ca.json
+++ b/translations/frontend/ca.json
@@ -574,6 +574,28 @@
"audio_not_supported": "El teu navegador no és compatible amb l'element d'àudio.",
"choose_player": "Tria el reproductor",
"choose-source": "Tria la font",
+ "class": {
+ "album": "Àlbum",
+ "app": "Aplicació",
+ "artist": "Artista",
+ "channel": "Canal",
+ "composer": "Compositor",
+ "contributing_artist": "Artista col·laborador",
+ "directory": "Biblioteca",
+ "episode": "Episodi",
+ "game": "Joc",
+ "genre": "Gènere",
+ "image": "Imatge",
+ "movie": "Pel·lícula",
+ "music": "Música",
+ "playlist": "Llista de reproducció",
+ "podcast": "Podcast",
+ "season": "Temporada",
+ "track": "Pista",
+ "tv_show": "Programa de TV",
+ "url": "URL",
+ "video": "Vídeo"
+ },
"content-type": {
"album": "Àlbum",
"artist": "Artista",
diff --git a/translations/frontend/cs.json b/translations/frontend/cs.json
index 8107413439..2bf3b4226f 100644
--- a/translations/frontend/cs.json
+++ b/translations/frontend/cs.json
@@ -574,6 +574,28 @@
"audio_not_supported": "Váš prohlížeč nepodporuje element \"audio\".",
"choose_player": "Vyberte přehrávač",
"choose-source": "Zvolte zdroj",
+ "class": {
+ "album": "Album",
+ "app": "Aplikace",
+ "artist": "Umělec",
+ "channel": "Kanál",
+ "composer": "Skladatel",
+ "contributing_artist": "Přispívající umělec",
+ "directory": "Knihovna",
+ "episode": "Epizoda",
+ "game": "Hra",
+ "genre": "Žánr",
+ "image": "Obrázek",
+ "movie": "Film",
+ "music": "Hudba",
+ "playlist": "Seznam skladeb",
+ "podcast": "Podcast",
+ "season": "Sezóna",
+ "track": "Stopa",
+ "tv_show": "Televizní pořad",
+ "url": "Url adresa",
+ "video": "Video"
+ },
"content-type": {
"album": "Album",
"artist": "Umělec",
@@ -2352,9 +2374,14 @@
"title": "Stavy"
},
"templates": {
+ "all_listeners": "Tato šablona naslouchá všem změnám stavu.",
"description": "Šablony jsou vykreslovány pomocí Jinja2 šablonového enginu s některými specifickými rozšířeními pro Home Assistant.",
+ "domain": "Doména",
"editor": "Editor šablon",
+ "entity": "Entita",
"jinja_documentation": "Dokumentace šablony Jinja2",
+ "listeners": "Tato šablona naslouchá následujícím změnám stavu:",
+ "no_listeners": "Tato šablona neposlouchá žádné změny stavu a nebude se automaticky aktualizovat.",
"reset": "Obnovit ukázkovou šablonu",
"template_extensions": "Rozšíření šablony Home Assistant",
"title": "Šablony",
@@ -2941,6 +2968,11 @@
"submit": "Odeslat"
},
"current_user": "Nyní jste přihlášeni jako {fullName}.",
+ "customize_sidebar": {
+ "button": "Upravit",
+ "description": "Režim úprav můžete aktivovat také stisknutím a podržením záhlaví postranního panelu.",
+ "header": "Změna pořadí a skrytí položek postranního panelu"
+ },
"dashboard": {
"description": "Vyberte výchozí dashboard pro toto zařízení.",
"dropdown_label": "Dashboard",
@@ -3038,6 +3070,7 @@
}
},
"sidebar": {
+ "done": "Hotovo",
"external_app_configuration": "Konfigurace aplikace",
"sidebar_toggle": "Přepínač postranního panelu"
}
diff --git a/translations/frontend/en.json b/translations/frontend/en.json
index 2074324131..c4308bd7a5 100644
--- a/translations/frontend/en.json
+++ b/translations/frontend/en.json
@@ -507,6 +507,7 @@
"cancel": "Cancel",
"close": "Close",
"continue": "Continue",
+ "copied": "Copied",
"delete": "Delete",
"error_required": "Required",
"loading": "Loading",
diff --git a/translations/frontend/es-419.json b/translations/frontend/es-419.json
index ced016f2a1..9f6f2ba0a4 100644
--- a/translations/frontend/es-419.json
+++ b/translations/frontend/es-419.json
@@ -19,6 +19,7 @@
"logbook": "",
"mailbox": "",
"map": "",
+ "media_browser": "Navegador de medios",
"profile": "Perfil",
"shopping_list": "Lista de compras",
"states": ""
@@ -106,7 +107,7 @@
},
"automation": {
"off": "Desactivado",
- "on": "Encendido"
+ "on": "Activada"
},
"binary_sensor": {
"battery": {
@@ -205,7 +206,7 @@
"fan_only": "Sólo ventilador",
"heat": "Calentar",
"heat_cool": "Calentar/Enfriar",
- "off": "Desactivar"
+ "off": "Apagado"
},
"configurator": {
"configure": "Configurar",
@@ -237,7 +238,7 @@
"home": "En Casa",
"locked": "Cerrado",
"not_home": "Fuera de Casa",
- "off": "Desactivado",
+ "off": "Apagado",
"ok": "OK",
"on": "Encendido",
"open": "Abierto",
@@ -419,9 +420,16 @@
"unlock": "Desbloquear"
},
"media_player": {
+ "browse_media": "Explorar medios",
+ "media_next_track": "Siguiente",
+ "media_play": "Reproducir",
+ "media_play_pause": "Reproducir/pausa",
+ "media_previous_track": "Anterior",
"sound_mode": "Modo de sonido",
"source": "Fuente",
- "text_to_speak": "Texto a hablar"
+ "text_to_speak": "Texto a hablar",
+ "turn_off": "Apagar",
+ "turn_on": "Encender"
},
"persistent_notification": {
"dismiss": "Descartar"
@@ -498,6 +506,7 @@
"back": "Atrás",
"cancel": "Cancelar",
"close": "Cerrar",
+ "continue": "Continuar",
"delete": "Eliminar",
"error_required": "Requerido",
"loading": "Cargando",
@@ -544,6 +553,10 @@
"toggle": "Alternar"
},
"entity": {
+ "entity-attribute-picker": {
+ "attribute": "Atributo",
+ "show_attributes": "Mostrar atributos"
+ },
"entity-picker": {
"clear": "Limpiar",
"entity": "Entidad",
@@ -554,6 +567,58 @@
"loading_history": "Cargando historial de estado...",
"no_history_found": "No se encontró historial de estado."
},
+ "logbook": {
+ "entries_not_found": "No se encontraron entradas en el libro de registro."
+ },
+ "media-browser": {
+ "audio_not_supported": "Su navegador no soporta el elemento de audio.",
+ "choose_player": "Elige el reproductor",
+ "choose-source": "Elige la fuente",
+ "class": {
+ "album": "Álbum",
+ "app": "Aplicación",
+ "artist": "Artista",
+ "channel": "Canal",
+ "composer": "Compositor",
+ "contributing_artist": "Artista colaborador",
+ "directory": "Biblioteca",
+ "episode": "Episodio",
+ "game": "Juego",
+ "genre": "Género",
+ "image": "Imagen",
+ "movie": "Película",
+ "music": "Música",
+ "playlist": "Lista de reproducción",
+ "podcast": "Podcast",
+ "season": "Temporada",
+ "track": "Pista",
+ "tv_show": "Programa de TV",
+ "url": "URL",
+ "video": "Video"
+ },
+ "content-type": {
+ "album": "Álbum",
+ "artist": "Artista",
+ "library": "Biblioteca",
+ "playlist": "Lista de reproducción",
+ "server": "Servidor"
+ },
+ "media_browsing_error": "Error de navegación de medios",
+ "media_not_supported": "El Reproductor multimedia no es compatible con este tipo de medios",
+ "media_player": "Reproductor multimedia",
+ "media-player-browser": "Navegador del reproductor multimedia",
+ "no_items": "No hay elementos",
+ "pick": "Elegir",
+ "pick-media": "Elija medios",
+ "play": "Reproducir",
+ "play-media": "Reproducir medios",
+ "video_not_supported": "Su navegador no soporta el elemento de vídeo.",
+ "web-browser": "Navegador web"
+ },
+ "picture-upload": {
+ "label": "Imagen",
+ "unsupported_format": "Formato no admitido, elija una imagen JPEG, PNG o GIF."
+ },
"related-items": {
"area": "Área",
"automation": "Parte de las siguientes automatizaciones",
@@ -574,6 +639,7 @@
"week": "{count} {count, plural,\n one {semana}\n other {semanas}\n}"
},
"future": "en {time}",
+ "just_now": "Ahora mismo",
"never": "Nunca",
"past": "Hace {time}"
},
@@ -652,13 +718,19 @@
"pattern": "Patrón de expresiones regulares para la validación del lado del cliente",
"text": "Texto"
},
- "platform_not_loaded": "La integración {platform} no está cargada. Agregue su configuración agregando 'default_config:' o ''{platform}:''.",
+ "platform_not_loaded": "La integración {platform} no está cargada. Añádela a su archivo de configuración agregando 'default_config:' o ''{platform}:''.",
"required_error_msg": "Este campo es requerido",
"yaml_not_editable": "La configuración de esta entidad no se puede editar desde la interfaz de usuario. Solo las entidades configuradas desde la interfaz de usuario se pueden configurar desde la interfaz de usuario."
},
+ "image_cropper": {
+ "crop": "Cortar"
+ },
"more_info_control": {
+ "controls": "Controles",
+ "details": "Detalles",
"dismiss": "Descartar diálogo",
"edit": "Editar entidad",
+ "history": "Historial",
"person": {
"create_zone": "Crear zona desde ubicación actual"
},
@@ -724,11 +796,11 @@
},
"zha_device_info": {
"buttons": {
- "add": "Agregar dispositivos",
+ "add": "Agregar dispositivos usando este dispositivo",
"clusters": "Administrar clústeres",
"reconfigure": "Reconfigurar dispositivo",
"remove": "Eliminar dispositivo",
- "zigbee_information": "Información de Zigbee"
+ "zigbee_information": "Firma del dispositivo Zigbee"
},
"confirmations": {
"remove": "¿Está seguro de que desea eliminar el dispositivo?"
@@ -748,7 +820,7 @@
"unknown": "Desconocido",
"zha_device_card": {
"area_picker_label": "Área",
- "device_name_placeholder": "Nombre de usuario",
+ "device_name_placeholder": "Cambiar el nombre del dispositivo",
"update_name_button": "Actualizar Nombre"
}
}
@@ -798,7 +870,7 @@
"confirmation_text": "Todos los dispositivos en esta área quedarán sin asignar.",
"confirmation_title": "¿Está seguro de que desea eliminar esta área?"
},
- "description": "Visión general de todas las áreas de su casa.",
+ "description": "Gestione las áreas de su casa.",
"editor": {
"area_id": "Identificador del área",
"create": "Crear",
@@ -859,13 +931,19 @@
"label": "Llamar servico",
"service_data": "Datos"
},
+ "wait_for_trigger": {
+ "continue_timeout": "Continuar cuando el tiempo venza",
+ "label": "Esperar por un desencadenador",
+ "timeout": "Tiempo limite (opcional)"
+ },
"wait_template": {
+ "continue_timeout": "Continuar cuando el tiempo venza",
"label": "Esperar",
"timeout": "Tiempo de espera (opcional)",
"wait_template": "Plantilla de espera"
}
},
- "unsupported_action": "Acción no soportada: {action}"
+ "unsupported_action": "No hay soporte en la interfaz de usuario para la acción: {action}"
},
"alias": "Nombre",
"conditions": {
@@ -923,7 +1001,9 @@
"time": {
"after": "Después de",
"before": "Antes de",
- "label": "Hora"
+ "label": "Hora",
+ "type_input": "Valor de un auxiliar de tipo fecha/tiempo",
+ "type_value": "Tiempo corregido"
},
"zone": {
"entity": "Entidad con ubicación",
@@ -931,7 +1011,7 @@
"zone": "Zona"
}
},
- "unsupported_condition": "Condición no soportada: {condition}"
+ "unsupported_condition": "No hay soporte en la interfaz de usuario para la condición: {condition}"
},
"default_name": "Nueva Automatización",
"description": {
@@ -1000,7 +1080,7 @@
"start": "Inicio"
},
"mqtt": {
- "label": "",
+ "label": "MQTT",
"payload": "Payload (opcional)",
"topic": "Topic"
},
@@ -1011,6 +1091,7 @@
"value_template": "Plantilla de valor (opcional)"
},
"state": {
+ "attribute": "Atributo (opcional)",
"for": "Por",
"from": "De",
"label": "Estado",
@@ -1023,6 +1104,9 @@
"sunrise": "Salida del sol",
"sunset": "Puesta de sol"
},
+ "tag": {
+ "label": "Etiqueta"
+ },
"template": {
"label": "Plantilla",
"value_template": "Plantilla de valor"
@@ -1034,8 +1118,10 @@
"seconds": "Segundos"
},
"time": {
- "at": "A",
- "label": "Hora"
+ "at": "A las",
+ "label": "Hora",
+ "type_input": "Valor de un auxiliar de tipo fecha/tiempo",
+ "type_value": "Tiempo corregido"
},
"webhook": {
"label": "Webhook",
@@ -1050,7 +1136,7 @@
"zone": "Zona"
}
},
- "unsupported_platform": "Plataforma no soportada: {platform}"
+ "unsupported_platform": "No hay soporte en la interfaz de usuario para la plataforma: {platform}"
},
"unsaved_confirm": "Tiene cambios sin guardar. ¿Estás seguro que quieres salir?"
},
@@ -1058,6 +1144,8 @@
"add_automation": "Agregar automatización",
"delete_automation": "Eliminar automatización",
"delete_confirm": "¿Está seguro de que desea eliminar esta automatización?",
+ "duplicate": "Duplicar",
+ "duplicate_automation": "Duplicar automatización",
"edit_automation": "Editar automatización",
"header": "Editor de automatizaciones",
"headers": {
@@ -1139,8 +1227,13 @@
},
"alexa": {
"banner": "La edición de las entidades expuestas a través de esta interfaz de usuario está deshabilitada porque ha configurado filtros de entidad en configuration.yaml.",
+ "dont_expose_entity": "No exponer la entidad",
"expose": "Exponer a Alexa",
+ "expose_entity": "Exponer la entidad",
+ "exposed": "{selected} expuesto",
"exposed_entities": "Entidades expuestas",
+ "follow_domain": "Seguir dominio",
+ "not_exposed": "{selected} no expuesto",
"not_exposed_entities": "Entidades no expuestas",
"title": "Alexa"
},
@@ -1178,8 +1271,14 @@
"google": {
"banner": "La edición de las entidades expuestas a través de esta interfaz de usuario está deshabilitada porque ha configurado filtros de entidad en configuration.yaml.",
"disable_2FA": "Deshabilitar la autenticación de dos factores",
+ "dont_expose_entity": "No exponer la entidad",
"expose": "Exponer al Asistente de Google",
+ "expose_entity": "Exponer la entidad",
+ "exposed": "{selected} expuesto",
"exposed_entities": "Entidades expuestas",
+ "follow_domain": "Seguir dominio",
+ "manage_domains": "Gestionar dominios",
+ "not_exposed": "{selected} no expuesto",
"not_exposed_entities": "Entidades no expuestas",
"sync_to_google": "Sincronizar los cambios con Google.",
"title": "Asistente de Google"
@@ -1281,6 +1380,7 @@
}
},
"devices": {
+ "add_prompt": "Aún no se ha agregado ningún {name} con este dispositivo. Puede agregar uno haciendo clic en el botón + de arriba.",
"automation": {
"actions": {
"caption": "Cuando algo se desencadena..."
@@ -1300,6 +1400,7 @@
"caption": "Dispositivos",
"confirm_delete": "¿Está seguro de que desea eliminar este dispositivo?",
"confirm_rename_entity_ids": "¿También desea cambiar el nombre de la identificación de la entidad de sus entidades?",
+ "confirm_rename_entity_ids_warning": "Esto no cambiará ninguna configuración (como automatizaciones, scripts, escenas, Lovelace) que esté usando actualmente estas entidades, tendrás que actualizarlas tú mismo.",
"data_table": {
"area": "Área",
"battery": "Batería",
@@ -1341,7 +1442,7 @@
},
"entities": {
"caption": "Entidades",
- "description": "Visión general de todas las entidades conocidas.",
+ "description": "Gestione todas las entidades conocidas.",
"picker": {
"disable_selected": {
"button": "Deshabilitar selección",
@@ -1393,7 +1494,7 @@
"header": "Configurar Home Assistant",
"helpers": {
"caption": "Auxiliares",
- "description": "Elementos que pueden ayudar a construir automatizaciones.",
+ "description": "Gestionar elementos ayudan a construir automatizaciones",
"dialog": {
"add_helper": "Agregar auxiliar",
"add_platform": "Añadir {platform}",
@@ -1444,6 +1545,7 @@
},
"integrations": {
"add_integration": "Agregar integración",
+ "attention": "Atención requerida",
"caption": "Integraciones",
"config_entry": {
"area": "En {area}",
@@ -1464,6 +1566,7 @@
"options": "Opciones",
"rename": "Renombrar",
"restart_confirm": "Reinicie Home Assistant para terminar de eliminar esta integración.",
+ "services": "{count} {count, plural,\n one {service}\n other {services}\n}",
"settings_button": "Editar configuración para {integration}",
"system_options": "Opciones de Sistema",
"system_options_button": "Opciones del sistema para {integration}",
@@ -1486,7 +1589,7 @@
},
"configure": "Configurar",
"configured": "Configurado",
- "description": "Administrar y configurar integraciones",
+ "description": "Gestione las integraciones",
"details": "Detalles de integración",
"discovered": "Descubierto",
"home_assistant_website": "Sitio web de Home Assistant",
@@ -1510,6 +1613,7 @@
"none_found_detail": "Ajuste sus criterios de búsqueda",
"note_about_integrations": "No todas las integraciones se pueden configurar a través de la interfaz de usuario.",
"note_about_website_reference": "Hay más disponibles en ",
+ "reconfigure": "Reconfigurar",
"rename_dialog": "Editar el nombre de esta entrada de configuración",
"rename_input_label": "Ingresar Nombre",
"search": "Buscar integraciones"
@@ -1619,13 +1723,84 @@
"title": "",
"topic": "tema"
},
+ "ozw": {
+ "button": "Configurar",
+ "common": {
+ "controller": "Controlador",
+ "instance": "Instancia",
+ "network": "Red"
+ },
+ "navigation": {
+ "network": "Red",
+ "nodes": "Nodos",
+ "select_instance": "Seleccione la instancia"
+ },
+ "network_status": {
+ "details": {
+ "driverallnodesqueried": "Todos los nodos han sido consultados",
+ "driverallnodesqueriedsomedead": "Todos los nodos han sido consultados. Algunos nodos fueron encontrados inactivos.",
+ "driverawakenodesqueries": "Se han consultado todos los nodos activos",
+ "driverfailed": "No se pudo conectar al controlador Z-Wave",
+ "driverready": "Iniciando el controlador de Z-Wave",
+ "driverremoved": "El controlador ha sido eliminado",
+ "driverreset": "El controlador se ha reiniciado",
+ "offline": "OZWDaemon fuera de línea",
+ "ready": "Listo para conectar",
+ "started": "Conectado a MQTT",
+ "starting": "Conectando con MQTT",
+ "stopped": "OpenZWave se detuvo"
+ },
+ "offline": "Fuera de línea",
+ "online": "En línea",
+ "starting": "Comenzando",
+ "unknown": "Desconocido"
+ },
+ "network": {
+ "header": "Gestión de red",
+ "introduction": "Gestione las funciones de toda la red."
+ },
+ "node_query_stages": {
+ "complete": "El proceso de consulta está completo",
+ "configuration": "Obteniendo los valores de configuración del nodo",
+ "dynamic": "Obteniendo los valores que cambian con frecuencia del nodo"
+ },
+ "node": {
+ "button": "Detalles del nodo",
+ "not_found": "Nodo no encontrado"
+ },
+ "nodes_table": {
+ "failed": "Fallido",
+ "id": "ID",
+ "manufacturer": "Fabricante",
+ "model": "Modelo",
+ "query_stage": "Etapa de consulta",
+ "zwave_plus": "Z-Wave Plus"
+ },
+ "refresh_node": {
+ "battery_note": "Si el nodo funciona con batería, asegúrese de activarlo antes de continuar.",
+ "button": "Actualizar nodo",
+ "complete": "Actualización de nodo completa",
+ "description": "Esto le indicará a OpenZWave que vuelva a consultar un nodo y actualice las clases de comando, las capacidades y los valores del nodo.",
+ "node_status": "Estado del nodo",
+ "refreshing_description": "Actualizando la información del nodo ...",
+ "start_refresh_button": "Iniciar actualización",
+ "step": "Paso",
+ "title": "Actualizar la información del nodos",
+ "wakeup_header": "Instrucciones de activación para",
+ "wakeup_instructions_source": "Las instrucciones de activación se obtienen de la base de datos de dispositivos de la comunidad OpenZWave."
+ },
+ "select_instance": {
+ "header": "Seleccione una instancia OpenZWave",
+ "introduction": "Tiene más de una instancia de OpenZWave en ejecución. ¿Qué instancia te gustaría gestionar?"
+ }
+ },
"person": {
"add_person": "Agregar persona",
"caption": "Personas",
"confirm_delete": "¿Está seguro de que desea eliminar a esta persona?",
"confirm_delete2": "Todos los dispositivos que pertenecen a esta persona quedarán sin asignar.",
"create_person": "Crear persona",
- "description": "Gestiona las personas que rastrea Home Assistant.",
+ "description": "Gestione las personas que rastrea Home Assistant.",
"detail": {
"create": "Crear",
"delete": "Eliminar",
@@ -1648,7 +1823,7 @@
"scene": {
"activated": "Escena activada {name}.",
"caption": "Escenas",
- "description": "Crear y editar escenas",
+ "description": "Gestionar escenas",
"editor": {
"default_name": "Nueva escena",
"devices": {
@@ -1743,7 +1918,7 @@
"reloading": {
"automation": "Recargar automatizaciones",
"core": "Recargar ubicación y personalizaciones",
- "group": "Recargar grupos",
+ "group": "Recargar grupos, entidades grupales, y servicios de notificación",
"heading": "Recarga de configuración YAML",
"input_boolean": "Recargar controles booleanos",
"input_datetime": "Recargar controles de fechas",
@@ -1751,9 +1926,16 @@
"input_select": "Recargar controles de selección",
"input_text": "Recargar controles de texto",
"introduction": "Algunas partes de Home Assistant pueden recargarse sin requerir un reinicio. Al presionar recargar se descargará su configuración YAML actual y se cargará la nueva.",
+ "mqtt": "Recargar entidades MQTT",
"person": "Recargar personas",
+ "reload": "Recargar {domain}",
+ "rest": "Recargar entidades \"rest\" y servicios de notificación.",
+ "rpi_gpio": "Recargue las entidades GPIO de la Raspberry Pi",
"scene": "Recargar escenas",
"script": "Recargar scripts",
+ "smtp": "Recargar servicios de notificación smtp",
+ "telegram": "Recargar servicios de notificación de telegram",
+ "template": "Recargar las entidades de la plantilla",
"zone": "Recargar zonas"
},
"server_management": {
@@ -1773,6 +1955,32 @@
}
}
},
+ "tags": {
+ "add_tag": "Añadir etiqueta",
+ "automation_title": "La etiqueta {name} ha sido escaneada",
+ "caption": "Etiquetas",
+ "create_automation": "Crea automatización con etiqueta",
+ "description": "Gestionar etiquetas",
+ "detail": {
+ "create": "Crear",
+ "create_and_write": "Crear y escribir",
+ "delete": "Eliminar",
+ "description": "Descripción",
+ "name": "Nombre",
+ "new_tag": "Nueva etiqueta",
+ "tag_id": "ID de etiqueta",
+ "tag_id_placeholder": "Autogenerado cuando se deja vacío",
+ "update": "Actualizar"
+ },
+ "edit": "Editar",
+ "headers": {
+ "last_scanned": "Último escaneado",
+ "name": "Nombre"
+ },
+ "never_scanned": "Nunca escaneado",
+ "no_tags": "Sin etiquetas",
+ "write": "Escribir"
+ },
"users": {
"add_user": {
"caption": "Agregar usuario",
@@ -1809,7 +2017,7 @@
"system": "Sistema"
}
},
- "users_privileges_note": "El grupo de usuarios es un trabajo en progreso. El usuario no podrá administrar la instancia a través de la interfaz de usuario. Todavía estamos auditando todos los puntos finales de la API de administración para garantizar que limiten correctamente el acceso a los administradores."
+ "users_privileges_note": "El grupo de usuarios es un trabajo en progreso. El usuario no podrá administrar la instancia a través de la interfaz de usuario. Todavía estamos auditando todos los puntos finales de la API de administración para garantizar que limiten correctamente el acceso solo a los administradores."
},
"zha": {
"add_device_page": {
@@ -1847,7 +2055,7 @@
"clusters": {
"header": "Clústeres",
"help_cluster_dropdown": "Seleccione un clúster para ver atributos y comandos.",
- "introduction": "Los clústeres son los bloques de construcción para la funcionalidad de Zigbee. Separa la funcionalidad en unidades lógicas. Hay tipos de clientes y servidores que se componen de atributos y comandos."
+ "introduction": "Los clústeres son los bloques de construcción para la funcionalidad de Zigbee. Ellos separan la funcionalidad en unidades lógicas. Hay tipos de clientes y servidores que se componen de atributos y comandos."
},
"common": {
"add_devices": "Agregar dispositivos",
@@ -1879,7 +2087,7 @@
"create_group": "Zigbee Home Automation - Crear grupo",
"create_group_details": "Ingrese los detalles requeridos para crear un nuevo grupo zigbee",
"creating_group": "Creando grupo",
- "description": "Crear y modificar grupos Zigbee",
+ "description": "Gestione los grupos Zigbee",
"group_details": "Aquí están todos los detalles para el grupo Zigbee seleccionado.",
"group_id": "Identificación del grupo",
"group_info": "Información del grupo",
@@ -2091,9 +2299,14 @@
"title": "Estados"
},
"templates": {
+ "all_listeners": "Esta plantilla escucha todos los eventos de cambio de estado.",
"description": "Las plantillas se representan utilizando el motor de plantillas Jinja2 con algunas extensiones específicas de Home Assistant.",
+ "domain": "Dominio",
"editor": "Editor de plantillas",
+ "entity": "Entidad",
"jinja_documentation": "Documentación de plantillas Jinja2",
+ "listeners": "Esta plantilla escucha los eventos de los siguientes cambios de estado:",
+ "no_listeners": "Esta plantilla no escucha ningún evento de cambio de estado y no se actualizará automáticamente.",
"template_extensions": "Extensiones de plantilla de Home Assistant",
"title": "Plantilla",
"unknown_error_template": "Error desconocido al mostrar la plantilla"
@@ -2335,7 +2548,11 @@
}
},
"cardpicker": {
+ "by_card": "Por Tarjeta",
+ "by_entity": "Por Entidad",
"custom_card": "Personalizado",
+ "domain": "Dominio",
+ "entity": "Entidad",
"no_description": "No hay descripción disponible."
},
"edit_card": {
@@ -2349,10 +2566,11 @@
"options": "Mas opciones",
"pick_card": "¿Qué tarjeta desea agregar?",
"pick_card_view_title": "¿Qué tarjeta le gustaría agregar a su vista de {name} ?",
+ "search_cards": "Buscar tarjetas",
"show_code_editor": "Mostrar editor de código",
"show_visual_editor": "Mostrar el editor visual",
"toggle_editor": "Cambiar editor",
- "typed_header": "{tipo} Configuración de la tarjeta",
+ "typed_header": "{type} Configuración de la tarjeta",
"unsaved_changes": "Tiene cambios no guardados"
},
"edit_lovelace": {
@@ -2429,7 +2647,7 @@
},
"menu": {
"close": "Cerrar",
- "configure_ui": "Configurar interfaz de usuario",
+ "configure_ui": "Editar interfaz de usuario",
"exit_edit_mode": "Salir del modo de edición de la interfaz de usuario",
"help": "Ayuda",
"refresh": "Refrescar",
@@ -2661,6 +2879,11 @@
"submit": "Enviar"
},
"current_user": "Actualmente estás conectado como {fullName} .",
+ "customize_sidebar": {
+ "button": "Editar",
+ "description": "También puede mantener pulsado el encabezado de la barra lateral para activar el modo de edición.",
+ "header": "Cambiar el orden y ocultar elementos de la barra lateral"
+ },
"dashboard": {
"description": "Elija un tablero predeterminado para este dispositivo.",
"dropdown_label": "Tablero",
@@ -2683,6 +2906,7 @@
"confirm_delete": "¿Está seguro de que desea eliminar el token de acceso para {name}?",
"create": "Crear Token",
"create_failed": "No se pudo crear el token de acceso.",
+ "created": "Creado {date}",
"created_at": "Creado en {date}",
"delete_failed": "No se pudo eliminar el token de acceso.",
"description": "Cree tokens de acceso de larga duración para permitir que sus secuencias de comandos interactúen con la instancia de su Home Assistant. Cada token tendrá una validez de 10 años a partir de su creación. Los siguientes tokens de acceso de larga duración están activos actualmente.",
@@ -2690,9 +2914,10 @@
"header": "Tokens de acceso de larga duración",
"last_used": "Utilizado por última vez en {date} desde {location}.",
"learn_auth_requests": "Aprenda a realizar solicitudes autenticadas.",
+ "name": "Nombre",
"not_used": "Nunca se ha utilizado",
"prompt_copy_token": "Copia tu token de acceso. No se volverá a mostrar",
- "prompt_name": "¿Nombre?"
+ "prompt_name": "Dale un nombre al token"
},
"mfa_setup": {
"close": "Cerrar",
@@ -2748,6 +2973,7 @@
}
},
"sidebar": {
+ "done": "Hecho",
"external_app_configuration": "Configuración de la aplicación",
"sidebar_toggle": "Alternar barra lateral"
}
diff --git a/translations/frontend/es.json b/translations/frontend/es.json
index 93eaa86477..10b6151b0d 100644
--- a/translations/frontend/es.json
+++ b/translations/frontend/es.json
@@ -571,6 +571,15 @@
"audio_not_supported": "Tu navegador no es compatible con el elemento de audio.",
"choose_player": "Elige reproductor",
"choose-source": "Elige la fuente",
+ "class": {
+ "playlist": "Lista de reproducción",
+ "podcast": "Podcast",
+ "season": "Temporada",
+ "track": "Pista",
+ "tv_show": "Programa de TV",
+ "url": "Url",
+ "video": "Vídeo"
+ },
"content-type": {
"album": "Álbum",
"artist": "Artista",
diff --git a/translations/frontend/nb.json b/translations/frontend/nb.json
index ab4abc249b..f835f9e909 100644
--- a/translations/frontend/nb.json
+++ b/translations/frontend/nb.json
@@ -574,6 +574,28 @@
"audio_not_supported": "Nettleseren din støtter ikke lydelementet.",
"choose_player": "Velg spiller",
"choose-source": "Velg kilde",
+ "class": {
+ "album": "Album",
+ "app": "App",
+ "artist": "Artist",
+ "channel": "Kanal",
+ "composer": "Komponist",
+ "contributing_artist": "Medvirkende artist",
+ "directory": "Bibliotek",
+ "episode": "Episode",
+ "game": "Spill",
+ "genre": "Sjanger",
+ "image": "Bilde",
+ "movie": "Film",
+ "music": "Musikk",
+ "playlist": "Spilleliste",
+ "podcast": "Podcast",
+ "season": "Sesong",
+ "track": "Spor",
+ "tv_show": "TV Serie",
+ "url": "Url",
+ "video": "Video"
+ },
"content-type": {
"album": "Album",
"artist": "Artist",
@@ -2353,7 +2375,9 @@
},
"templates": {
"description": "Maler blir rendret ved hjelp av Jinja2-malmotoren med noen spesifikke utvidelser for Home Assistant.",
+ "domain": "Domene",
"editor": "Maleditor",
+ "entity": "Entitet",
"jinja_documentation": "Jinja2 mal dokumentasjon",
"reset": "Tilbakestill til demomal",
"template_extensions": "Mal utvidelser for Home Assistant",
@@ -2941,6 +2965,9 @@
"submit": "Send inn"
},
"current_user": "Du er logget inn som {fullName}.",
+ "customize_sidebar": {
+ "header": "Endre rekkefølgen og skjul elementer fra sidepanelet"
+ },
"dashboard": {
"description": "Velg et standard instrumentbord for denne enheten.",
"dropdown_label": "",
@@ -2963,6 +2990,7 @@
"confirm_delete": "Er du sikker på at du vil slette tilgangstoken for {name}?",
"create": "Opprett Token",
"create_failed": "Kunne ikke opprette tilgangstoken.",
+ "created": "Opprettet {date}",
"created_at": "Opprettet den {date}",
"delete_failed": "Kan ikke slette tilgangstokenet.",
"description": "Opprett langvarige tilgangstokener slik at skriptene dine kan samhandle med din Home Assistant instans. Hver token vil være gyldig i 10 år fra opprettelsen. Følgende langvarige tilgangstokener er for tiden aktive.",
@@ -2970,6 +2998,7 @@
"header": "Langvarige tilgangstokener",
"last_used": "Sist brukt den {date} fra {location}",
"learn_auth_requests": "Lær hvordan du lager godkjente forespørsler.",
+ "name": "Navn",
"not_used": "Har aldri blitt brukt",
"prompt_copy_token": "Kopier tilgangstoken. Det blir ikke vist igjen.",
"prompt_name": "Navn?"
@@ -3036,6 +3065,7 @@
}
},
"sidebar": {
+ "done": "Ferdig",
"external_app_configuration": "Appkonfigurasjon",
"sidebar_toggle": "Vis/Skjul sidepanel"
}
diff --git a/translations/frontend/nl.json b/translations/frontend/nl.json
index 7e36879dae..b4f6f2fbce 100644
--- a/translations/frontend/nl.json
+++ b/translations/frontend/nl.json
@@ -574,6 +574,28 @@
"audio_not_supported": "Uw browser ondersteunt het audio-element niet.",
"choose_player": "Kies speler",
"choose-source": "Kies bron",
+ "class": {
+ "album": "Album",
+ "app": "App",
+ "artist": "Artiest",
+ "channel": "Kanaal",
+ "composer": "Componist",
+ "contributing_artist": "Bijdragende artiest",
+ "directory": "Bibliotheek",
+ "episode": "Aflevering",
+ "game": "Spel",
+ "genre": "Genre",
+ "image": "Afbeelding",
+ "movie": "Film",
+ "music": "Muziek",
+ "playlist": "Afspeellijst",
+ "podcast": "Podcast",
+ "season": "Seizoen",
+ "track": "Nummer",
+ "tv_show": "TV-programma",
+ "url": "Url",
+ "video": "Video"
+ },
"content-type": {
"album": "Album",
"artist": "Artiest",
@@ -2353,7 +2375,9 @@
},
"templates": {
"description": "Sjablonen worden weergegeven met de Jinja2-sjabloonediter samen met enkele extensies van Home Assistant.",
+ "domain": "Domein",
"editor": "Sjabloonediter",
+ "entity": "Entiteit",
"jinja_documentation": "Jinja2-sjabloondocumentatie",
"reset": "Resetten naar demosjabloon",
"template_extensions": "Home Assistant sjabloon extensiesHome Assistant",
@@ -2941,6 +2965,11 @@
"submit": "Verzenden"
},
"current_user": "Je bent momenteel ingelogd als {fullName}.",
+ "customize_sidebar": {
+ "button": "Bewerken",
+ "description": "U kunt ook de koptekst van de zijbalk ingedrukt houden om de bewerkingsmodus te activeren.",
+ "header": "Wijzig de volgorde en verberg items van de zijbalk"
+ },
"dashboard": {
"description": "Kies een standaard dashboard voor dit apparaat.",
"dropdown_label": "Dashboard",
@@ -2963,6 +2992,7 @@
"confirm_delete": "Weet je zeker dat je de toegangstoken voor {name} wilt verwijderen?",
"create": "Token aanmaken",
"create_failed": "De toegangstoken kon niet worden aangemaakt.",
+ "created": "Gemaakt op {date}",
"created_at": "Gemaakt op {date}",
"delete_failed": "Verwijderen van de toegangstoken is mislukt.",
"description": "Maak toegangstokens met een lange levensduur zodat je scripts kunnen communiceren met je Home Assistant-instantie. Elk token is tien jaar geldig vanaf de aanmaakdatum. De volgende langlevende toegangstokens zijn momenteel actief.",
@@ -2970,6 +3000,7 @@
"header": "Toegangtokens met lange levensduur",
"last_used": "Laatst gebruikt op {date} vanaf {location}",
"learn_auth_requests": "Kom te weten hoe je geverifieerde verzoeken kunt maken",
+ "name": "Naam",
"not_used": "Is nog nooit gebruikt",
"prompt_copy_token": "Kopieer je toegangstoken. Het wordt niet meer getoond.",
"prompt_name": "Naam?"
@@ -3036,6 +3067,7 @@
}
},
"sidebar": {
+ "done": "Gedaan",
"external_app_configuration": "App configuratie",
"sidebar_toggle": "Zijbalk in- en uitschakelen"
}
diff --git a/translations/frontend/pl.json b/translations/frontend/pl.json
index 68d09fa8ae..ffee82cabd 100644
--- a/translations/frontend/pl.json
+++ b/translations/frontend/pl.json
@@ -19,6 +19,7 @@
"logbook": "Dziennik",
"mailbox": "Poczta",
"map": "Mapa",
+ "media_browser": "Odtwarzacz mediów",
"profile": "Profil",
"shopping_list": "Lista zakupów",
"states": "Przegląd"
@@ -553,6 +554,7 @@
},
"entity": {
"entity-attribute-picker": {
+ "attribute": "Atrybut",
"show_attributes": "Pokaż atrybuty"
},
"entity-picker": {
@@ -565,10 +567,35 @@
"loading_history": "Ładowanie historii...",
"no_history_found": "Nie znaleziono historii."
},
+ "logbook": {
+ "entries_not_found": "Nie znaleziono wpisów w dzienniku."
+ },
"media-browser": {
"audio_not_supported": "Twoja przeglądarka nie obsługuje elementu audio.",
"choose_player": "Wybierz odtwarzacz",
"choose-source": "Wybierz źródło",
+ "class": {
+ "album": "Album",
+ "app": "Aplikacja",
+ "artist": "Artysta",
+ "channel": "Kanał",
+ "composer": "Kompozytor",
+ "contributing_artist": "Artysta współpracujący",
+ "directory": "Biblioteka",
+ "episode": "Odcinek",
+ "game": "Gra",
+ "genre": "Gatunek",
+ "image": "Obraz",
+ "movie": "Film",
+ "music": "Muzyka",
+ "playlist": "Playlista",
+ "podcast": "Podcast",
+ "season": "Sezon",
+ "track": "Ścieżka",
+ "tv_show": "Program telewizyjny",
+ "url": "URL",
+ "video": "Wideo"
+ },
"content-type": {
"album": "Album",
"artist": "Artysta",
@@ -576,6 +603,7 @@
"playlist": "Lista odtwarzania",
"server": "Serwer"
},
+ "media_browsing_error": "Błąd przeglądania multimediów",
"media_not_supported": "Przeglądarka odtwarzacza mediów nie obsługuje tego typu mediów",
"media_player": "Odtwarzacz mediów",
"media-player-browser": "Przeglądarka odtwarzacza mediów",
@@ -931,7 +959,13 @@
"label": "Wywołanie usługi",
"service_data": "Dane usługi"
},
+ "wait_for_trigger": {
+ "continue_timeout": "Kontynuuj po przekroczeniu limitu czasu",
+ "label": "Czekaj na wyzwalacz",
+ "timeout": "Limit czasu (opcjonalnie)"
+ },
"wait_template": {
+ "continue_timeout": "Kontynuuj po przekroczeniu limitu czasu",
"label": "Oczekiwanie",
"timeout": "Limit czasu (opcjonalnie)",
"wait_template": "Szablon czekania"
@@ -995,7 +1029,9 @@
"time": {
"after": "Po",
"before": "Przed",
- "label": "Czas"
+ "label": "Czas",
+ "type_input": "Wartość pomocnika typu data/czas",
+ "type_value": "Ustalony czas"
},
"zone": {
"entity": "Encja z lokalizacją",
@@ -1083,6 +1119,7 @@
"value_template": "Szablon wartości (opcjonalnie)"
},
"state": {
+ "attribute": "Atrybut (opcjonalnie)",
"for": "Przez",
"from": "Z",
"label": "Stan",
@@ -1110,7 +1147,9 @@
},
"time": {
"at": "O",
- "label": "Czas"
+ "label": "Czas",
+ "type_input": "Wartość pomocnika typu data/czas",
+ "type_value": "Ustalony czas"
},
"webhook": {
"label": "Webhook",
@@ -1134,7 +1173,7 @@
"delete_automation": "Usuń automatyzację",
"delete_confirm": "Czy na pewno chcesz usunąć tę automatyzację?",
"duplicate": "Duplikuj",
- "duplicate_automation": "Duplikat automatyzację",
+ "duplicate_automation": "Duplikuj automatyzację",
"edit_automation": "Edytuj automatyzację",
"header": "Edytor automatyzacji",
"headers": {
@@ -1502,7 +1541,7 @@
},
"types": {
"input_boolean": "Przełącznik",
- "input_datetime": "Data i/lub godzina",
+ "input_datetime": "Data i/lub czas",
"input_number": "Numer",
"input_select": "Pole wyboru",
"input_text": "Tekst"
@@ -1535,6 +1574,7 @@
},
"integrations": {
"add_integration": "Dodaj integrację",
+ "attention": "Wymaga uwagi",
"caption": "Integracje",
"config_entry": {
"area": "obszar: {area}",
@@ -1937,7 +1977,7 @@
"reloading": {
"automation": "Automatyzacje",
"command_line": "Encje komponentu linia komend",
- "core": "Lokalizacja i dostosowywanie",
+ "core": "Lokalizację i dostosowywanie",
"filesize": "Encje komponentu wielkość pliku",
"filter": "Encje komponentu filtr",
"generic": "Encje komponentu kamera IP generic",
@@ -2334,9 +2374,14 @@
"title": "Stany"
},
"templates": {
+ "all_listeners": "Ten szablon nasłuchuje wszystkich zdarzeń zmiany stanu.",
"description": "Szablony są renderowane przy użyciu silnika szablonów Jinja2 z kilkoma specyficznymi rozszerzeniami Home Assistanta.",
+ "domain": "Domena",
"editor": "Edytor szablonów",
+ "entity": "Encja",
"jinja_documentation": "Dokumentacja szablonów Jinja2",
+ "listeners": "Ten szablon nasłuchuje następujących zdarzeń zmiany stanu:",
+ "no_listeners": "Ten szablon nie nasłuchuje żadnych zdarzeń zmiany stanu i nie zostanie zaktualizowany automatycznie.",
"reset": "Zresetuj do szablonu demonstracyjnego",
"template_extensions": "Rozszerzenia szablonów Home Assistanta",
"title": "Szablon",
@@ -2923,6 +2968,11 @@
"submit": "Zatwierdź"
},
"current_user": "Jesteś obecnie zalogowany jako {fullName}.",
+ "customize_sidebar": {
+ "button": "Edytuj",
+ "description": "Możesz także nacisnąć i przytrzymać nagłówek paska bocznego, aby aktywować tryb edycji.",
+ "header": "Zmień kolejność i ukryj elementy na pasku bocznym"
+ },
"dashboard": {
"description": "Wybierz domyślny dashboard dla tego urządzenia.",
"dropdown_label": "Dashboard",
@@ -2945,6 +2995,7 @@
"confirm_delete": "Czy na pewno chcesz usunąć token dla {name}?",
"create": "Utwórz token",
"create_failed": "Nie udało się utworzyć tokena.",
+ "created": "Utworzony {date}",
"created_at": "Utworzony {date}",
"delete_failed": "Nie udało się usunąć tokena.",
"description": "Długoterminowe tokeny dostępu umożliwiają skryptom interakcję z Home Assistantem. Każdy token będzie ważny przez 10 lat od utworzenia. Następujące tokeny są obecnie aktywne.",
@@ -3019,6 +3070,7 @@
}
},
"sidebar": {
+ "done": "Gotowe",
"external_app_configuration": "Konfiguracja aplikacji",
"sidebar_toggle": "Przełącz pasek boczny"
}
diff --git a/translations/frontend/ru.json b/translations/frontend/ru.json
index 30a5044abe..476f5bdb03 100644
--- a/translations/frontend/ru.json
+++ b/translations/frontend/ru.json
@@ -574,6 +574,27 @@
"audio_not_supported": "Ваш браузер не поддерживает аудио.",
"choose_player": "Выберите медиаплеер",
"choose-source": "Выбрать источник",
+ "class": {
+ "album": "Альбом",
+ "app": "Приложение",
+ "artist": "Исполнитель",
+ "channel": "Канал",
+ "composer": "Композитор",
+ "directory": "Библиотека",
+ "episode": "Эпизод",
+ "game": "Игра",
+ "genre": "Жанр",
+ "image": "Изображение",
+ "movie": "Фильм",
+ "music": "Музыка",
+ "playlist": "Плейлист",
+ "podcast": "Подкаст",
+ "season": "Сезон",
+ "track": "Трек",
+ "tv_show": "Сериалы",
+ "url": "URL-адрес",
+ "video": "Видео"
+ },
"content-type": {
"album": "Альбом",
"artist": "Исполнитель",
diff --git a/translations/frontend/zh-Hans.json b/translations/frontend/zh-Hans.json
index 611909f0cf..d8bc96cb89 100644
--- a/translations/frontend/zh-Hans.json
+++ b/translations/frontend/zh-Hans.json
@@ -574,6 +574,28 @@
"audio_not_supported": "您的浏览器不支持音频元素。",
"choose_player": "选择播放器",
"choose-source": "选择媒体源",
+ "class": {
+ "album": "专辑",
+ "app": "应用",
+ "artist": "艺术家",
+ "channel": "频道",
+ "composer": "作曲家",
+ "contributing_artist": "参与创作者",
+ "directory": "媒体库",
+ "episode": "分集",
+ "game": "游戏",
+ "genre": "体裁",
+ "image": "图片",
+ "movie": "电影",
+ "music": "音乐",
+ "playlist": "播放列表",
+ "podcast": "播客",
+ "season": "播出季",
+ "track": "音轨",
+ "tv_show": "电视节目",
+ "url": "网址",
+ "video": "视频"
+ },
"content-type": {
"album": "专辑",
"artist": "艺术家",
@@ -2352,9 +2374,14 @@
"title": "状态"
},
"templates": {
+ "all_listeners": "此模板监听所有的状态改变事件。",
"description": "模板使用 jinja2 模板引擎和一些 Home Assistant 特定的插件进行渲染。",
+ "domain": "域",
"editor": "模板编辑器",
+ "entity": "实体",
"jinja_documentation": "Jinja2 模板文档",
+ "listeners": "此模板监听以下状态改变事件:",
+ "no_listeners": "此模板不监听任何状态改变事件,并且不会自动更新。",
"reset": "重置为演示模板",
"template_extensions": "Home Assistant 模板插件",
"title": "模板",
@@ -2941,6 +2968,11 @@
"submit": "提交"
},
"current_user": "您目前以 {fullName} 的身份登录。",
+ "customize_sidebar": {
+ "button": "编辑",
+ "description": "您也可以长按侧边栏标题来进入编辑模式。",
+ "header": "排序和隐藏侧边栏中的项目"
+ },
"dashboard": {
"description": "选择此设备的默认仪表盘。",
"dropdown_label": "仪表盘",
@@ -3038,6 +3070,7 @@
}
},
"sidebar": {
+ "done": "完成",
"external_app_configuration": "应用配置",
"sidebar_toggle": "侧边栏切换"
}
diff --git a/translations/frontend/zh-Hant.json b/translations/frontend/zh-Hant.json
index 5273e7c538..5343241299 100644
--- a/translations/frontend/zh-Hant.json
+++ b/translations/frontend/zh-Hant.json
@@ -574,6 +574,28 @@
"audio_not_supported": "瀏覽器不支援音效元件。",
"choose_player": "選擇播放器",
"choose-source": "選擇來源",
+ "class": {
+ "album": "專輯",
+ "app": "App",
+ "artist": "演唱者",
+ "channel": "頻道",
+ "composer": "作曲者",
+ "contributing_artist": "參與藝術家",
+ "directory": "媒體庫",
+ "episode": "集",
+ "game": "遊戲",
+ "genre": "類型",
+ "image": "圖像",
+ "movie": "電影",
+ "music": "音樂",
+ "playlist": "播放列表",
+ "podcast": "Podcast",
+ "season": "季",
+ "track": "音軌",
+ "tv_show": "電視節目",
+ "url": "網址",
+ "video": "影片"
+ },
"content-type": {
"album": "專輯",
"artist": "演唱者",
From fab6cebf0d4b055e5be1abe46a9fd97198de7082 Mon Sep 17 00:00:00 2001
From: Zack Barett
Date: Mon, 14 Sep 2020 02:33:23 -0500
Subject: [PATCH 06/31] fix hard to read text (#6980)
---
src/panels/media-browser/ha-panel-media-browser.ts | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/src/panels/media-browser/ha-panel-media-browser.ts b/src/panels/media-browser/ha-panel-media-browser.ts
index 63c71d2e92..8fa84cba67 100644
--- a/src/panels/media-browser/ha-panel-media-browser.ts
+++ b/src/panels/media-browser/ha-panel-media-browser.ts
@@ -64,7 +64,7 @@ class PanelMediaBrowser extends LitElement {
"ui.components.media-browser.media-player-browser"
)}
- ${title || ""}
+ ${title || ""}
${this.hass.localize("ui.components.media-browser.choose_player")}
@@ -146,8 +146,7 @@ class PanelMediaBrowser extends LitElement {
overflow: hidden;
white-space: nowrap;
}
- .heading .secondary {
- color: var(--secondary-text-color);
+ .heading .secondary-text {
font-size: 14px;
overflow: hidden;
text-overflow: ellipsis;
From 426f93998298b520d17e72aa70c1068f99710865 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20Lov=C3=A9n?=
Date: Mon, 14 Sep 2020 09:34:59 +0200
Subject: [PATCH 07/31] Add Execute button to script editor (#6957)
---
src/panels/config/script/ha-script-editor.ts | 30 ++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/src/panels/config/script/ha-script-editor.ts b/src/panels/config/script/ha-script-editor.ts
index b3195e0cf7..9e4ce3cc07 100644
--- a/src/panels/config/script/ha-script-editor.ts
+++ b/src/panels/config/script/ha-script-editor.ts
@@ -18,12 +18,14 @@ import { navigate } from "../../../common/navigate";
import { computeRTL } from "../../../common/util/compute_rtl";
import "../../../components/ha-card";
import "../../../components/ha-icon-input";
+import { showToast } from "../../../util/toast";
import "@material/mwc-fab";
import {
Action,
deleteScript,
getScriptEditorInitData,
ScriptConfig,
+ triggerScript,
MODES,
MODES_MAX,
} from "../../../data/script";
@@ -193,6 +195,22 @@ export class HaScriptEditor extends LitElement {
`
: html``}
+ ${this.scriptEntityId
+ ? html`
+
+
+
+ ${this.hass.localize("ui.card.script.execute")}
+
+
+ `
+ : ``}
@@ -301,6 +319,18 @@ export class HaScriptEditor extends LitElement {
}
}
+ private async _runScript(ev) {
+ ev.stopPropagation();
+ await triggerScript(this.hass, this.scriptEntityId);
+ showToast(this, {
+ message: this.hass.localize(
+ "ui.notification_toast.triggered",
+ "name",
+ this._config!.alias
+ ),
+ });
+ }
+
private _modeChanged(ev: CustomEvent) {
const mode = ((ev.target as PaperListboxElement)?.selectedItem as any)
?.mode;
From f6eb31bf9daf249842a53035d16c39d44a181f36 Mon Sep 17 00:00:00 2001
From: Kendell R
Date: Mon, 14 Sep 2020 00:37:59 -0700
Subject: [PATCH 08/31] Use --error-color instead of a fixed color (#6961)
Co-authored-by: Zack Barett
---
src/panels/lovelace/cards/hui-error-card.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/panels/lovelace/cards/hui-error-card.ts b/src/panels/lovelace/cards/hui-error-card.ts
index 9da8f631b7..b995c6c04d 100644
--- a/src/panels/lovelace/cards/hui-error-card.ts
+++ b/src/panels/lovelace/cards/hui-error-card.ts
@@ -43,8 +43,8 @@ export class HuiErrorCard extends LitElement implements LovelaceCard {
return css`
:host {
display: block;
- background-color: #ef5350;
- color: white;
+ background-color: var(--error-color);
+ color: var(--color-on-error, white);
padding: 8px;
font-weight: 500;
user-select: text;
From e465ec88354a0c4e293ef9f827fdf0852f3202f9 Mon Sep 17 00:00:00 2001
From: Kendell R
Date: Mon, 14 Sep 2020 00:39:47 -0700
Subject: [PATCH 09/31] Make code editor font family follow theme (#6958)
---
src/components/ha-code-editor.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/components/ha-code-editor.ts b/src/components/ha-code-editor.ts
index 452e75dffd..dbbc9b616f 100644
--- a/src/components/ha-code-editor.ts
+++ b/src/components/ha-code-editor.ts
@@ -97,6 +97,7 @@ export class HaCodeEditor extends UpdatingElement {
.CodeMirror {
height: var(--code-mirror-height, auto);
direction: var(--code-mirror-direction, ltr);
+ font-family: var(--code-font-family, monospace);
}
.CodeMirror-scroll {
max-height: var(--code-mirror-max-height, --code-mirror-height);
From 709112c498464985be9b22bfe2f610a72ba3ce70 Mon Sep 17 00:00:00 2001
From: Kendell R
Date: Mon, 14 Sep 2020 00:40:35 -0700
Subject: [PATCH 10/31] Do safety check before detecting hex value and handle
YAML numbers better (#6956)
Co-authored-by: Bram Kragten
---
src/common/dom/apply_themes_on_element.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/common/dom/apply_themes_on_element.ts b/src/common/dom/apply_themes_on_element.ts
index f994f0d99d..0ac552abdd 100644
--- a/src/common/dom/apply_themes_on_element.ts
+++ b/src/common/dom/apply_themes_on_element.ts
@@ -105,12 +105,12 @@ const processTheme = (
const keys = {};
for (const key of Object.keys(combinedTheme)) {
const prefixedKey = `--${key}`;
- const value = combinedTheme[key]!;
+ const value = String(combinedTheme[key]!);
styles[prefixedKey] = value;
keys[prefixedKey] = "";
// Try to create a rgb value for this key if it is not a var
- if (!value.startsWith("#")) {
+ if (value.startsWith("#")) {
// Can't convert non hex value
continue;
}
From 5b94a4de9ae0dc6d608f148d528e6d8e7f23cb84 Mon Sep 17 00:00:00 2001
From: Bram Kragten
Date: Mon, 14 Sep 2020 11:14:32 +0200
Subject: [PATCH 11/31] Fix muted on video
---
src/components/ha-hls-player.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/ha-hls-player.ts b/src/components/ha-hls-player.ts
index 8f47b08870..912bcab7b6 100644
--- a/src/components/ha-hls-player.ts
+++ b/src/components/ha-hls-player.ts
@@ -61,7 +61,7 @@ class HaHLSPlayer extends LitElement {
return html`
`
: ""}
- ${this.hostInfo.features.includes("network") &&
- atLeastVersion(this.hass.config.version, 0, 115)
+ ${this.hostInfo.features.includes("network")
? html`
IP address
From 239e817779e2ed71036cd3ee0ddd56be82b1c2ea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joakim=20S=C3=B8rensen?=
Date: Tue, 15 Sep 2020 11:15:58 +0200
Subject: [PATCH 24/31] Rename upgrade -> update (#7013)
---
hassio/src/dashboard/hassio-update.ts | 2 +-
hassio/src/system/hassio-supervisor-info.ts | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/hassio/src/dashboard/hassio-update.ts b/hassio/src/dashboard/hassio-update.ts
index eec4097e54..a95eafbd76 100644
--- a/hassio/src/dashboard/hassio-update.ts
+++ b/hassio/src/dashboard/hassio-update.ts
@@ -153,7 +153,7 @@ export class HassioUpdate extends LitElement {
item.progress = true;
const confirmed = await showConfirmationDialog(this, {
title: `Update ${item.name}`,
- text: `Are you sure you want to upgrade ${item.name} to version ${item.version}?`,
+ text: `Are you sure you want to update ${item.name} to version ${item.version}?`,
confirmText: "update",
dismissText: "cancel",
});
diff --git a/hassio/src/system/hassio-supervisor-info.ts b/hassio/src/system/hassio-supervisor-info.ts
index 12af46d091..fcec51d607 100644
--- a/hassio/src/system/hassio-supervisor-info.ts
+++ b/hassio/src/system/hassio-supervisor-info.ts
@@ -213,7 +213,7 @@ class HassioSupervisorInfo extends LitElement {
const confirmed = await showConfirmationDialog(this, {
title: "Update supervisor",
- text: `Are you sure you want to upgrade supervisor to version ${this.supervisorInfo.version_latest}?`,
+ text: `Are you sure you want to update supervisor to version ${this.supervisorInfo.version_latest}?`,
confirmText: "update",
dismissText: "cancel",
});
From d5cd288fe84ca4866e597ce017ef825f06cf7f2b Mon Sep 17 00:00:00 2001
From: uvjustin <46082645+uvjustin@users.noreply.github.com>
Date: Tue, 15 Sep 2020 19:18:11 +0800
Subject: [PATCH 25/31] Temporarily remove exoplayer (#7015)
---
src/components/ha-hls-player.ts | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/src/components/ha-hls-player.ts b/src/components/ha-hls-player.ts
index b513413d23..b613a5ad05 100644
--- a/src/components/ha-hls-player.ts
+++ b/src/components/ha-hls-player.ts
@@ -12,7 +12,6 @@ import {
} from "lit-element";
import { fireEvent } from "../common/dom/fire_event";
import { nextRender } from "../common/util/render-status";
-import { getExternalConfig } from "../external_app/external_config";
import type { HomeAssistant } from "../types";
type HLSModule = typeof import("hls.js");
@@ -94,11 +93,7 @@ class HaHLSPlayer extends LitElement {
}
private async _getUseExoPlayer(): Promise {
- if (!this.hass!.auth.external || !this.allowExoPlayer) {
- return false;
- }
- const externalConfig = await getExternalConfig(this.hass!.auth.external);
- return externalConfig && externalConfig.hasExoPlayer;
+ return false;
}
private async _startHls(): Promise {
@@ -140,7 +135,10 @@ class HaHLSPlayer extends LitElement {
this._videoEl.style.visibility = "hidden";
await this.hass!.auth.external!.sendMessage({
type: "exoplayer/play_hls",
- payload: new URL(url, window.location.href).toString(),
+ payload: {
+ url: new URL(url, window.location.href).toString(),
+ muted: this.muted,
+ },
});
}
From 9c80776d8c7c39ceebc1ef18a0fca80a83c629a8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joakim=20S=C3=B8rensen?=
Date: Tue, 15 Sep 2020 13:20:17 +0200
Subject: [PATCH 26/31] Refresh snapshots on first update (#7014)
---
hassio/src/snapshots/hassio-snapshots.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hassio/src/snapshots/hassio-snapshots.ts b/hassio/src/snapshots/hassio-snapshots.ts
index 1f594a125a..18f2b1d0ed 100644
--- a/hassio/src/snapshots/hassio-snapshots.ts
+++ b/hassio/src/snapshots/hassio-snapshots.ts
@@ -242,7 +242,7 @@ class HassioSnapshots extends LitElement {
protected firstUpdated(changedProps: PropertyValues) {
super.firstUpdated(changedProps);
- this._updateSnapshots();
+ this.refreshData();
}
protected updated(changedProps: PropertyValues) {
From 7d862d6f2ac0c47d057e4d5fb3ccdf3a4be41a3c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joakim=20S=C3=B8rensen?=
Date: Tue, 15 Sep 2020 13:20:43 +0200
Subject: [PATCH 27/31] Use helper to generate documentation URL (#7012)
---
.../media-player/ha-media-player-browse.ts | 8 ++-
.../config-flow/step-flow-pick-handler.ts | 3 +-
.../config/automation/ha-automation-editor.ts | 21 ++++++--
.../dialog-manage-cloudhook.ts | 8 ++-
.../config/cloud/register/cloud-register.js | 13 ++++-
.../config/customize/ha-form-customize.js | 16 ++++--
src/panels/config/info/ha-config-info.ts | 5 +-
.../integration-panels/zwave/zwave-network.ts | 12 +++--
.../config/person/dialog-person-detail.ts | 14 +++--
src/panels/config/scene/ha-scene-dashboard.ts | 3 +-
src/panels/config/script/ha-script-editor.ts | 54 ++++++++++---------
src/panels/config/script/ha-script-picker.ts | 3 +-
.../event/developer-tools-event.js | 7 ++-
.../template/developer-tools-template.ts | 6 ++-
.../card-editor/hui-dialog-edit-card.ts | 5 +-
.../editor/get-card-documentation-url.ts | 13 +++--
.../lovelace/editor/hui-dialog-save-config.ts | 25 +++++----
src/panels/lovelace/hui-root.ts | 5 +-
src/panels/profile/ha-pick-theme-row.ts | 26 +++++----
.../profile/ha-push-notifications-row.js | 7 ++-
src/util/documentation-url.ts | 7 +++
.../util/generate-documentation-url.spec.ts | 19 +++++++
22 files changed, 193 insertions(+), 87 deletions(-)
create mode 100644 src/util/documentation-url.ts
create mode 100644 test-mocha/util/generate-documentation-url.spec.ts
diff --git a/src/components/media-player/ha-media-player-browse.ts b/src/components/media-player/ha-media-player-browse.ts
index 0b14444536..f63f3592e4 100644
--- a/src/components/media-player/ha-media-player-browse.ts
+++ b/src/components/media-player/ha-media-player-browse.ts
@@ -22,6 +22,7 @@ import { styleMap } from "lit-html/directives/style-map";
import { fireEvent } from "../../common/dom/fire_event";
import { computeRTLDirection } from "../../common/util/compute_rtl";
import { debounce } from "../../common/util/debounce";
+import type { MediaPlayerItem } from "../../data/media-player";
import {
browseLocalMediaPlayer,
browseMediaPlayer,
@@ -30,11 +31,11 @@ import {
MediaPickedEvent,
MediaPlayerBrowseAction,
} from "../../data/media-player";
-import type { MediaPlayerItem } from "../../data/media-player";
import { showAlertDialog } from "../../dialogs/generic/show-dialog-box";
import { installResizeObserver } from "../../panels/lovelace/common/install-resize-observer";
import { haStyle } from "../../resources/styles";
import type { HomeAssistant } from "../../types";
+import { documentationUrl } from "../../util/documentation-url";
import "../entity/ha-entity-picker";
import "../ha-button-menu";
import "../ha-card";
@@ -511,7 +512,10 @@ export class HaMediaPlayerBrowse extends LitElement {
Check the
documentation${this.hass.localize(
diff --git a/src/panels/config/automation/ha-automation-editor.ts b/src/panels/config/automation/ha-automation-editor.ts
index f76f44ac67..5a39e7eac8 100644
--- a/src/panels/config/automation/ha-automation-editor.ts
+++ b/src/panels/config/automation/ha-automation-editor.ts
@@ -39,6 +39,7 @@ import "../../../layouts/ha-app-layout";
import "../../../layouts/hass-tabs-subpage";
import { haStyle } from "../../../resources/styles";
import { HomeAssistant, Route } from "../../../types";
+import { documentationUrl } from "../../../util/documentation-url";
import "../ha-config-section";
import { configSections } from "../ha-panel-config";
import "./action/ha-automation-action";
@@ -159,7 +160,10 @@ export class HaAutomationEditor extends LitElement {
"ui.panel.config.automation.editor.modes.description",
"documentation_link",
html`${this.hass.localize(
@@ -247,7 +251,10 @@ export class HaAutomationEditor extends LitElement {
)}
@@ -276,7 +283,10 @@ export class HaAutomationEditor extends LitElement {
)}
@@ -305,7 +315,10 @@ export class HaAutomationEditor extends LitElement {
)}