mirror of
https://github.com/home-assistant/frontend.git
synced 2025-08-01 13:37:47 +00:00
Merge pull request #5900 from home-assistant/dev
This commit is contained in:
commit
007f8b50b9
@ -24,6 +24,7 @@
|
||||
"author": "Paulus Schoutsen <Paulus@PaulusSchoutsen.nl> (http://paulusschoutsen.nl)",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@formatjs/intl-pluralrules": "^1.5.8",
|
||||
"@fullcalendar/core": "^5.0.0-beta.2",
|
||||
"@fullcalendar/daygrid": "^5.0.0-beta.2",
|
||||
"@material/chips": "7.0.0-canary.d92d8c93e.0",
|
||||
|
2
setup.py
2
setup.py
@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
||||
|
||||
setup(
|
||||
name="home-assistant-frontend",
|
||||
version="20200514.1",
|
||||
version="20200515.0",
|
||||
description="The Home Assistant frontend",
|
||||
url="https://github.com/home-assistant/home-assistant-polymer",
|
||||
author="The Home Assistant Authors",
|
||||
|
@ -12,6 +12,10 @@ export interface FormatsType {
|
||||
time: FormatType;
|
||||
}
|
||||
|
||||
if (!Intl.PluralRules) {
|
||||
import("@formatjs/intl-pluralrules/polyfill-locales");
|
||||
}
|
||||
|
||||
/**
|
||||
* Adapted from Polymer app-localize-behavior.
|
||||
*
|
||||
|
@ -1,7 +1,6 @@
|
||||
import "@material/mwc-checkbox";
|
||||
import type { Checkbox } from "@material/mwc-checkbox";
|
||||
import { style } from "@material/mwc-checkbox/mwc-checkbox-css";
|
||||
import { css, CSSResult, customElement } from "lit-element";
|
||||
import { customElement } from "lit-element";
|
||||
import type { Constructor } from "../types";
|
||||
|
||||
const MwcCheckbox = customElements.get("mwc-checkbox") as Constructor<Checkbox>;
|
||||
@ -12,18 +11,6 @@ export class HaCheckbox extends MwcCheckbox {
|
||||
super.firstUpdated();
|
||||
this.style.setProperty("--mdc-theme-secondary", "var(--primary-color)");
|
||||
}
|
||||
|
||||
protected static get styles(): CSSResult[] {
|
||||
return [
|
||||
style,
|
||||
css`
|
||||
.mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate)
|
||||
~ .mdc-checkbox__background {
|
||||
border-color: rgba(var(--rgb-primary-text-color), 0.54);
|
||||
}
|
||||
`,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
declare global {
|
||||
|
@ -323,6 +323,14 @@ class HAFullCalendar extends LitElement {
|
||||
font-family: var(--material-font-family);
|
||||
content: "X";
|
||||
}
|
||||
|
||||
.fc-popover {
|
||||
background-color: var(--primary-background-color) !important;
|
||||
}
|
||||
|
||||
.fc-popover-header {
|
||||
background-color: var(--secondary-background-color) !important;
|
||||
}
|
||||
`,
|
||||
];
|
||||
}
|
||||
|
@ -43,7 +43,8 @@ export class HaPanelCustom extends UpdatingElement {
|
||||
this._cleanupPanel();
|
||||
}
|
||||
|
||||
protected updated(changedProps: PropertyValues) {
|
||||
protected update(changedProps: PropertyValues) {
|
||||
super.update(changedProps);
|
||||
if (changedProps.has("panel")) {
|
||||
// Clean up old things if we had a panel
|
||||
if (changedProps.get("panel")) {
|
||||
|
@ -131,6 +131,14 @@ class HuiGaugeCard extends LitElement implements LovelaceCard {
|
||||
|
||||
const sliderBarColor = this._computeSeverity(state);
|
||||
|
||||
let value: number | undefined;
|
||||
|
||||
if (this._config.max === null || isNaN(this._config.max!)) {
|
||||
value = undefined;
|
||||
} else {
|
||||
value = Math.min(this._config.max!, state);
|
||||
}
|
||||
|
||||
return html`
|
||||
<ha-card
|
||||
@click=${this._handleClick}
|
||||
@ -143,7 +151,7 @@ class HuiGaugeCard extends LitElement implements LovelaceCard {
|
||||
readonly
|
||||
arcLength="180"
|
||||
startAngle="180"
|
||||
.value=${state}
|
||||
.value=${value}
|
||||
.min=${this._config.min}
|
||||
.max=${this._config.max}
|
||||
></round-slider>
|
||||
@ -243,6 +251,10 @@ class HuiGaugeCard extends LitElement implements LovelaceCard {
|
||||
}
|
||||
|
||||
private _measureCard() {
|
||||
if (!this.isConnected) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.offsetWidth < 200) {
|
||||
this.setAttribute("narrow", "");
|
||||
} else {
|
||||
@ -257,6 +269,10 @@ class HuiGaugeCard extends LitElement implements LovelaceCard {
|
||||
|
||||
static get styles(): CSSResult {
|
||||
return css`
|
||||
:host {
|
||||
display: block;
|
||||
}
|
||||
|
||||
ha-card {
|
||||
cursor: pointer;
|
||||
height: 100%;
|
||||
|
@ -248,19 +248,12 @@ export class HuiThermostatCard extends LitElement implements LovelaceCard {
|
||||
}
|
||||
|
||||
protected shouldUpdate(changedProps: PropertyValues): boolean {
|
||||
if (changedProps.has("_setTemp")) {
|
||||
return true;
|
||||
}
|
||||
return hasConfigOrEntityChanged(this, changedProps);
|
||||
}
|
||||
|
||||
protected updated(changedProps: PropertyValues): void {
|
||||
super.updated(changedProps);
|
||||
|
||||
if (changedProps.has("_setTemp")) {
|
||||
this.rescale_svg();
|
||||
}
|
||||
|
||||
if (
|
||||
!this._config ||
|
||||
!this.hass ||
|
||||
@ -283,23 +276,18 @@ export class HuiThermostatCard extends LitElement implements LovelaceCard {
|
||||
applyThemesOnElement(this, this.hass.themes, this._config.theme);
|
||||
}
|
||||
|
||||
const stateObj = this.hass!.states[this._config!.entity];
|
||||
const stateObj = this.hass.states[this._config.entity];
|
||||
if (!stateObj) {
|
||||
return;
|
||||
}
|
||||
const newTemp = this._getSetTemp(stateObj);
|
||||
if (
|
||||
Array.isArray(this._setTemp) &&
|
||||
Array.isArray(newTemp) &&
|
||||
(this._setTemp[0] !== newTemp[0] || this._setTemp[1] !== newTemp[1])
|
||||
) {
|
||||
this._setTemp = newTemp;
|
||||
} else if (this._setTemp !== newTemp) {
|
||||
this._setTemp = newTemp;
|
||||
|
||||
if (!oldHass || oldHass.states[this._config.entity] !== stateObj) {
|
||||
this._setTemp = this._getSetTemp(stateObj);
|
||||
this._rescale_svg();
|
||||
}
|
||||
}
|
||||
|
||||
private rescale_svg() {
|
||||
private _rescale_svg() {
|
||||
// Set the viewbox of the SVG containing the set temperature to perfectly
|
||||
// fit the text
|
||||
// That way it will auto-scale correctly
|
||||
|
@ -1,4 +1,9 @@
|
||||
import { customElement, property, UpdatingElement } from "lit-element";
|
||||
import {
|
||||
customElement,
|
||||
property,
|
||||
UpdatingElement,
|
||||
PropertyValues,
|
||||
} from "lit-element";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { ConditionalCardConfig } from "../cards/types";
|
||||
import {
|
||||
@ -40,7 +45,8 @@ export class HuiConditionalBase extends UpdatingElement {
|
||||
this._config = config;
|
||||
}
|
||||
|
||||
protected update(): void {
|
||||
protected update(changed: PropertyValues): void {
|
||||
super.update(changed);
|
||||
if (!this._element || !this.hass || !this._config) {
|
||||
return;
|
||||
}
|
||||
|
@ -4,16 +4,16 @@ import { LovelaceCardConfig } from "../../../../data/lovelace";
|
||||
import { HomeAssistant } from "../../../../types";
|
||||
import { createCardElement } from "../../create-element/create-card-element";
|
||||
import { LovelaceCard } from "../../types";
|
||||
import { ConfigError } from "../types";
|
||||
import { createErrorCardConfig } from "../../create-element/create-element-base";
|
||||
import { property, PropertyValues, UpdatingElement } from "lit-element";
|
||||
|
||||
export class HuiCardPreview extends HTMLElement {
|
||||
private _hass?: HomeAssistant;
|
||||
export class HuiCardPreview extends UpdatingElement {
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() public config?: LovelaceCardConfig;
|
||||
|
||||
private _element?: LovelaceCard;
|
||||
|
||||
private _config?: LovelaceCardConfig;
|
||||
|
||||
private get _error() {
|
||||
return this._element?.tagName === "HUI-ERROR-CARD";
|
||||
}
|
||||
@ -22,59 +22,60 @@ export class HuiCardPreview extends HTMLElement {
|
||||
super();
|
||||
this.addEventListener("ll-rebuild", () => {
|
||||
this._cleanup();
|
||||
if (this._config) {
|
||||
this.config = this._config;
|
||||
if (this.config) {
|
||||
this._createCard(this.config);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
set hass(hass: HomeAssistant) {
|
||||
if (!this._hass || this._hass.language !== hass.language) {
|
||||
this.style.direction = computeRTL(hass) ? "rtl" : "ltr";
|
||||
}
|
||||
protected update(changedProperties: PropertyValues) {
|
||||
super.update(changedProperties);
|
||||
|
||||
this._hass = hass;
|
||||
if (this._element) {
|
||||
this._element.hass = hass;
|
||||
}
|
||||
}
|
||||
if (changedProperties.has("config")) {
|
||||
const oldConfig = changedProperties.get("config") as
|
||||
| undefined
|
||||
| LovelaceCardConfig;
|
||||
|
||||
set error(error: ConfigError) {
|
||||
this._createCard(
|
||||
createErrorCardConfig(`${error.type}: ${error.message}`, undefined)
|
||||
);
|
||||
}
|
||||
|
||||
set config(configValue: LovelaceCardConfig) {
|
||||
const curConfig = this._config;
|
||||
this._config = configValue;
|
||||
|
||||
if (!configValue) {
|
||||
this._cleanup();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!configValue.type) {
|
||||
this._createCard(
|
||||
createErrorCardConfig("No card type found", configValue)
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this._element) {
|
||||
this._createCard(configValue);
|
||||
return;
|
||||
}
|
||||
|
||||
// in case the element was an error element we always want to recreate it
|
||||
if (!this._error && curConfig && configValue.type === curConfig.type) {
|
||||
try {
|
||||
this._element.setConfig(configValue);
|
||||
} catch (err) {
|
||||
this._createCard(createErrorCardConfig(err.message, configValue));
|
||||
if (!this.config) {
|
||||
this._cleanup();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.config.type) {
|
||||
this._createCard(
|
||||
createErrorCardConfig("No card type found", this.config)
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this._element) {
|
||||
this._createCard(this.config);
|
||||
return;
|
||||
}
|
||||
|
||||
// in case the element was an error element we always want to recreate it
|
||||
if (!this._error && oldConfig && this.config.type === oldConfig.type) {
|
||||
try {
|
||||
this._element.setConfig(this.config);
|
||||
} catch (err) {
|
||||
this._createCard(createErrorCardConfig(err.message, this.config));
|
||||
}
|
||||
} else {
|
||||
this._createCard(this.config);
|
||||
}
|
||||
}
|
||||
|
||||
if (changedProperties.has("hass")) {
|
||||
const oldHass = changedProperties.get("hass") as
|
||||
| HomeAssistant
|
||||
| undefined;
|
||||
if (!oldHass || oldHass.language !== this.hass!.language) {
|
||||
this.style.direction = computeRTL(this.hass!) ? "rtl" : "ltr";
|
||||
}
|
||||
|
||||
if (this._element) {
|
||||
this._element.hass = this.hass;
|
||||
}
|
||||
} else {
|
||||
this._createCard(configValue);
|
||||
}
|
||||
}
|
||||
|
||||
@ -82,8 +83,8 @@ export class HuiCardPreview extends HTMLElement {
|
||||
this._cleanup();
|
||||
this._element = createCardElement(configValue);
|
||||
|
||||
if (this._hass) {
|
||||
this._element!.hass = this._hass;
|
||||
if (this.hass) {
|
||||
this._element!.hass = this.hass;
|
||||
}
|
||||
|
||||
this.appendChild(this._element!);
|
||||
|
@ -25,6 +25,7 @@ import type { ConfigChangedEvent, HuiCardEditor } from "./hui-card-editor";
|
||||
import "./hui-card-picker";
|
||||
import "./hui-card-preview";
|
||||
import type { EditCardDialogParams } from "./show-edit-card-dialog";
|
||||
import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable";
|
||||
|
||||
declare global {
|
||||
// for fire event
|
||||
|
@ -48,6 +48,8 @@ export const derivedStyles = {
|
||||
"material-body-text-color": "var(--primary-text-color)",
|
||||
"material-background-color": "var(--card-background-color)",
|
||||
"material-secondary-background-color": "var(--secondary-background-color)",
|
||||
"mdc-checkbox-unchecked-color": "rgba(var(--rgb-primary-text-color), 0.54)",
|
||||
"mdc-checkbox-disabled-color": "var(--disabled-text-color)",
|
||||
};
|
||||
|
||||
export const haStyle = css`
|
||||
|
@ -1374,7 +1374,8 @@
|
||||
"restart_confirm": "Reinicia el Home Assistant per acabar d'eliminar aquesta integració",
|
||||
"settings_button": "Edita la configuració de {integration}",
|
||||
"system_options": "Opcions de sistema",
|
||||
"system_options_button": "Opcions de sistema de {integration}"
|
||||
"system_options_button": "Opcions de sistema de {integration}",
|
||||
"unnamed_entry": "Entrada sense nom"
|
||||
},
|
||||
"config_flow": {
|
||||
"aborted": "Avortat",
|
||||
|
@ -617,7 +617,7 @@
|
||||
"pattern": "Regex pattern for client-side validation",
|
||||
"text": "Text"
|
||||
},
|
||||
"platform_not_loaded": "The {platform} integration is not loaded. Please add it your configuration either by adding 'default_config:' or '{platform}:'.",
|
||||
"platform_not_loaded": "The {platform} integration is not loaded. Please add it your configuration either by adding 'default_config:' or ''{platform}:''.",
|
||||
"required_error_msg": "This field is required",
|
||||
"yaml_not_editable": "The settings of this entity cannot be edited from the UI. Only entities set up from the UI are configurable from the UI."
|
||||
},
|
||||
@ -2285,8 +2285,8 @@
|
||||
"views": {
|
||||
"confirm_delete": "Delete view?",
|
||||
"confirm_delete_existing_cards": "Deleting this view will also remove the cards",
|
||||
"confirm_delete_existing_cards_text": "Are you sure you want to delete your '{name}' view? The view contains {number} cards that will be deleted. This action cannot be undone.",
|
||||
"confirm_delete_text": "Are you sure you want to delete your '{name}' view?"
|
||||
"confirm_delete_existing_cards_text": "Are you sure you want to delete your ''{name}'' view? The view contains {number} cards that will be deleted. This action cannot be undone.",
|
||||
"confirm_delete_text": "Are you sure you want to delete your ''{name}'' view?"
|
||||
},
|
||||
"warning": {
|
||||
"attribute_not_found": "Attribute {attribute} not available in: {entity}",
|
||||
|
@ -1374,7 +1374,8 @@
|
||||
"restart_confirm": "Reinicia Home Assistant para terminar de eliminar esta integración.",
|
||||
"settings_button": "Editar configuración para {integration}",
|
||||
"system_options": "Opciones del sistema",
|
||||
"system_options_button": "Opciones del sistema para {integration}"
|
||||
"system_options_button": "Opciones del sistema para {integration}",
|
||||
"unnamed_entry": "Entrada sin nombre"
|
||||
},
|
||||
"config_flow": {
|
||||
"aborted": "Abortado",
|
||||
|
@ -1374,7 +1374,8 @@
|
||||
"restart_confirm": "Redémarrer Home Assistant pour terminer la suppression de cette intégration",
|
||||
"settings_button": "Modifier les paramètres pour {integration}",
|
||||
"system_options": "Options système",
|
||||
"system_options_button": "Options système pour {integration}"
|
||||
"system_options_button": "Options système pour {integration}",
|
||||
"unnamed_entry": "Entrée sans nom"
|
||||
},
|
||||
"config_flow": {
|
||||
"aborted": "Abandonné",
|
||||
|
@ -862,7 +862,8 @@
|
||||
"rename": "名前を変更",
|
||||
"settings_button": "{integration} の設定を編集",
|
||||
"system_options": "システムオプション",
|
||||
"system_options_button": "{integration} のシステムオプション"
|
||||
"system_options_button": "{integration} のシステムオプション",
|
||||
"unnamed_entry": "名前のないエントリ"
|
||||
},
|
||||
"config_flow": {
|
||||
"aborted": "中止",
|
||||
@ -1058,7 +1059,8 @@
|
||||
},
|
||||
"validation": {
|
||||
"check_config": "設定を確認",
|
||||
"heading": "設定の検証"
|
||||
"heading": "設定の検証",
|
||||
"valid": "設定は有効です!"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1157,6 +1159,7 @@
|
||||
},
|
||||
"info": {
|
||||
"frontend_version": "フロントエンドバージョン: {version} - {type}",
|
||||
"issues": "問題",
|
||||
"path_configuration": "ディスク上に configuration.yaml へのパス: {path}",
|
||||
"server": "サーバー",
|
||||
"system_health_error": "「システムの正常性」コンポーネントが有効されていません、configuration.yaml に 'system_health:' を追加してください。",
|
||||
|
@ -1374,7 +1374,8 @@
|
||||
"restart_confirm": "통합 구성요소 제거 완료를 위해 Home Assistant 웹 페이지를 다시 불러옵니다",
|
||||
"settings_button": "{integration} 설정 편집",
|
||||
"system_options": "시스템 옵션",
|
||||
"system_options_button": "{integration} 시스템 옵션"
|
||||
"system_options_button": "{integration} 시스템 옵션",
|
||||
"unnamed_entry": "이름이 없는 항목"
|
||||
},
|
||||
"config_flow": {
|
||||
"aborted": "취소됨",
|
||||
|
@ -1411,7 +1411,7 @@
|
||||
"integration": "Integratioun",
|
||||
"integration_not_found": "Integratioun net fonnt.",
|
||||
"new": "Eng nei Integratioun ariichten",
|
||||
"no_integrations": "Et gesäit suu ass wéi wann nach keng Integratioun ageriicht ass. Klick de Knäppchen hei ënnen fir déi éischt Integratioun anzeriichten.",
|
||||
"no_integrations": "Et gesäit sou ass wéi wann nach keng Integratioun ageriicht ass. Klick de Knäppchen hei ënnen fir déi éischt Integratioun anzeriichten.",
|
||||
"none": "Nach näischt konfiguréiert",
|
||||
"none_found": "Keng Integratioune fonnt",
|
||||
"none_found_detail": "Siich Kriterien upassen.",
|
||||
|
@ -1374,7 +1374,8 @@
|
||||
"restart_confirm": "Start Home Assistant på nytt for å fullføre fjerningen av denne integrasjonen",
|
||||
"settings_button": "Rediger innstillinger for {integration}",
|
||||
"system_options": "Systemalternativer",
|
||||
"system_options_button": "Systemalternativer for {integration}"
|
||||
"system_options_button": "Systemalternativer for {integration}",
|
||||
"unnamed_entry": "Ikke navngitt oppføring"
|
||||
},
|
||||
"config_flow": {
|
||||
"aborted": "Avbrutt",
|
||||
|
@ -420,7 +420,7 @@
|
||||
"actions": {
|
||||
"cancel": "anuluj",
|
||||
"finish": "koniec",
|
||||
"pause": "pauza",
|
||||
"pause": "wstrzymaj",
|
||||
"start": "start"
|
||||
}
|
||||
},
|
||||
@ -652,10 +652,10 @@
|
||||
"commands": "Polecenia odkurzacza:",
|
||||
"fan_speed": "Prędkość wentylatora",
|
||||
"locate": "Zlokalizuj",
|
||||
"pause": "Pauza",
|
||||
"pause": "Wstrzymaj",
|
||||
"return_home": "Powrót do domu",
|
||||
"start": "Start",
|
||||
"start_pause": "Start/Pauza",
|
||||
"start_pause": "Start/Wstrzymaj",
|
||||
"status": "Status",
|
||||
"stop": "Zatrzymaj"
|
||||
}
|
||||
@ -1374,7 +1374,8 @@
|
||||
"restart_confirm": "Zrestartuj Home Assistant'a, aby zakończyć usuwanie tej integracji",
|
||||
"settings_button": "Edytuj ustawienia dla {integration}",
|
||||
"system_options": "Opcje systemowe",
|
||||
"system_options_button": "Opcje systemowe dla {integration}"
|
||||
"system_options_button": "Opcje systemowe dla {integration}",
|
||||
"unnamed_entry": "Nienazwany wpis"
|
||||
},
|
||||
"config_flow": {
|
||||
"aborted": "Przerwano",
|
||||
|
@ -652,6 +652,7 @@
|
||||
"fan_speed": "Velocidade do ventilador",
|
||||
"locate": "Localizar",
|
||||
"pause": "Pausa",
|
||||
"return_home": "Regresso à base",
|
||||
"start": "Iniciar",
|
||||
"start_pause": "Iniciar / Pausar",
|
||||
"status": "Estado",
|
||||
@ -1366,7 +1367,8 @@
|
||||
"restart_confirm": "Reinicie o Home Assistant para concluir a remoção desta integração",
|
||||
"settings_button": "Editar configurações para {integration}",
|
||||
"system_options": "Opções do sistema",
|
||||
"system_options_button": "Opções do sistema para {integration}"
|
||||
"system_options_button": "Opções do sistema para {integration}",
|
||||
"unnamed_entry": "Entrada sem nome"
|
||||
},
|
||||
"config_flow": {
|
||||
"aborted": "Abortado",
|
||||
@ -1706,6 +1708,11 @@
|
||||
"group_binding": {
|
||||
"bind_button_help": "Vincule o grupo selecionado aos clusters de dispositivos selecionados.",
|
||||
"bind_button_label": "Vincular grupo",
|
||||
"cluster_selection_help": "Selecione clusters para vincular ao grupo selecionado.",
|
||||
"group_picker_help": "Selecione um grupo para emitir um comando de vinculação.",
|
||||
"group_picker_label": "Grupos vinculáveis",
|
||||
"header": "Vinculação de Grupos",
|
||||
"introduction": "Vincule e desvincule grupos.",
|
||||
"unbind_button_help": "Desvincular o grupo selecionado dos clusters de dispositivos selecionados.",
|
||||
"unbind_button_label": "Desvincular grupo"
|
||||
},
|
||||
@ -1776,6 +1783,7 @@
|
||||
"edit_home_zone": "O raio da zona casa ainda não pode ser editado a partir do frontend. Arraste o marcador no mapa para mover a zona inicial.",
|
||||
"edit_home_zone_narrow": "O raio da zona casa ainda não pode ser editado a partir do frontend. A localização pode ser modificada a partir da configuração geral.",
|
||||
"go_to_core_config": "Ir para a configuração geral?",
|
||||
"home_zone_core_config": "A localização da sua zona \"casa\" é editável na página de configuração geral. O raio dessa zona ainda não pode ser editado a partir do frontend. Deseja ir para a configuração geral?",
|
||||
"introduction": "As zonas permitem especificar determinadas regiões da Terra. Quando uma pessoa está dentro de uma zona, o estado assume o nome da zona. As zonas também podem ser usadas como gatilho ou condição nas configurações de automação.",
|
||||
"no_zones_created_yet": "Parece que você ainda não criou nenhuma zona."
|
||||
},
|
||||
@ -1954,6 +1962,7 @@
|
||||
},
|
||||
"lovelace": {
|
||||
"add_entities": {
|
||||
"generated_unsupported": "Você só pode usar esta função quando tiver assumido o controlo do IU Lovelace.",
|
||||
"saving_failed": "Falha ao salvar a configuração da interface Lovelace.",
|
||||
"yaml_unsupported": "Você não pode usar esta função ao usar o Lovelace IU no modo YAML."
|
||||
},
|
||||
@ -2203,6 +2212,7 @@
|
||||
},
|
||||
"raw_editor": {
|
||||
"confirm_remove_config_text": "Iremos gerar automaticamente as suas vistas do Lovelace UI com as suas áreas e dispositivos se você remover a sua configuração do Lovelace UI.",
|
||||
"confirm_remove_config_title": "Tem a certeza que deseja remover a configuração do interface de utilizador do Lovelace? Iremos gerar automaticamente as suas vistas do IU Lovelace com as suas áreas e dispositivos.",
|
||||
"confirm_unsaved_changes": "Existem alterações não guardadas. De certeza de que quer sair?",
|
||||
"confirm_unsaved_comments": "A sua configuração contém comentário(s), eles não serão salvos. Deseja continuar?",
|
||||
"error_invalid_config": "A sua configuração não é válida: {error}",
|
||||
@ -2220,7 +2230,7 @@
|
||||
"close": "Fechar",
|
||||
"empty_config": "Começar com um painel de instrumentos vazio",
|
||||
"header": "Assumir controle sobre a interface do Lovelace",
|
||||
"para": "Por omissão o Home Assistant irá manter a sua interface de utilizador, atualizando-a sempre que uma nova entidade ou novos componentes Lovelace fiquem disponíveis. Se assumir o controlo, não faremos mais alterações automáticas por si.",
|
||||
"para": "Por omissão o Home Assistant irá manter a sua interface de utilizador, atualizando-a sempre que uma nova entidade ou novos componentes IU Lovelace fiquem disponíveis. Se assumir o controlo, não faremos mais alterações automáticas por si. Poderá sempre criar um novo dashboard na configuração para fazer testes.",
|
||||
"para_sure": "Tem certeza que deseja assumir o controlo sobre a interface de utilizador?",
|
||||
"save": "Assumir o controlo",
|
||||
"yaml_config": "Para o ajudar a começar, aqui está a actual configuração deste dashboard:",
|
||||
@ -2346,7 +2356,7 @@
|
||||
"data": {
|
||||
"password": "Palavra-passe para API"
|
||||
},
|
||||
"description": "Por favor, insira a palavra-passe da API na sua configuração http:"
|
||||
"description": "Por favor, insira a palavra-passe da API na sua configuração HTTP:"
|
||||
},
|
||||
"mfa": {
|
||||
"data": {
|
||||
|
@ -992,7 +992,9 @@
|
||||
"edit_requires_storage": "Editorul a fost dezactivat deoarece configurația a fost stocata în configuration.yaml.",
|
||||
"elevation": "Altitudine",
|
||||
"elevation_meters": "metri",
|
||||
"external_url": "URL extern",
|
||||
"imperial_example": "Fahrenheit, livre",
|
||||
"internal_url": "URL intern",
|
||||
"latitude": "Latitudine",
|
||||
"location_name": "Numele instalarii Home Assistant",
|
||||
"longitude": "Longitudine",
|
||||
@ -1058,6 +1060,7 @@
|
||||
},
|
||||
"delete": "Șterge",
|
||||
"description": "Gestionați dispozitivele conectate",
|
||||
"device_info": "Informații despre dispozitiv",
|
||||
"device_not_found": "Dispozitivul nu a fost găsit.",
|
||||
"entities": {
|
||||
"add_entities_lovelace": "Adăugați la Lovelace",
|
||||
@ -1170,7 +1173,8 @@
|
||||
"options": "Opțiuni",
|
||||
"rename": "Redenumire",
|
||||
"restart_confirm": "Reporniți Home Assistant pentru a termina eliminarea acestei integrări",
|
||||
"system_options": "Opțiuni de sistem"
|
||||
"system_options": "Opțiuni de sistem",
|
||||
"unnamed_entry": "Intrare anonimă"
|
||||
},
|
||||
"config_flow": {
|
||||
"aborted": "Anulat",
|
||||
@ -1574,6 +1578,7 @@
|
||||
"events": {
|
||||
"alert_event_type": "Tipul de eveniment este un câmp obligatoriu",
|
||||
"available_events": "Evenimente disponibile",
|
||||
"documentation": "Documentarea evenimentelor.",
|
||||
"fire_event": "Declansare eveniment",
|
||||
"listening_to": "Ascultand",
|
||||
"start_listening": "Incepe sa asculti",
|
||||
@ -1583,14 +1588,19 @@
|
||||
},
|
||||
"info": {
|
||||
"built_using": "Construit folosind",
|
||||
"documentation": "Documentație",
|
||||
"frontend": "front-end-ui",
|
||||
"icons_by": "Icoane ca",
|
||||
"integrations": "Integrări",
|
||||
"issues": "Probleme",
|
||||
"license": "Publicat sub licenta Apache 2.0",
|
||||
"server": "Server",
|
||||
"source": "Sursă:",
|
||||
"title": "Info"
|
||||
},
|
||||
"logs": {
|
||||
"clear": "Şterge",
|
||||
"refresh": "Reîmprospătare",
|
||||
"title": "Jurnale"
|
||||
},
|
||||
"mqtt": {
|
||||
@ -1726,6 +1736,7 @@
|
||||
"manual": "Manual",
|
||||
"manual_description": "Trebuie să adăugați un card personalizat sau doriți doar să scrieți manual yaml?",
|
||||
"no_theme": "Nicio temă",
|
||||
"secondary_info_attribute": "Atribut informații secundare",
|
||||
"state": "Stare"
|
||||
},
|
||||
"glance": {
|
||||
@ -1760,7 +1771,8 @@
|
||||
"description": "Cardul Vertical Stack vă permite să grupați mai multe carduri, astfel încât acestea să stea întotdeauna în aceeași coloană."
|
||||
},
|
||||
"weather-forecast": {
|
||||
"description": "Cardul Prognoza meteo afișează vremea. Foarte util pentru a include pe interfețele pe care oamenii le afișează pe perete."
|
||||
"description": "Cardul Prognoza meteo afișează vremea. Foarte util pentru a include pe interfețele pe care oamenii le afișează pe perete.",
|
||||
"show_forecast": "Afișați prognoza"
|
||||
}
|
||||
},
|
||||
"cardpicker": {
|
||||
|
@ -1374,7 +1374,8 @@
|
||||
"restart_confirm": "Перезапустите Home Assistant, чтобы завершить удаление этой интеграции",
|
||||
"settings_button": "Настройки интеграции {integration}",
|
||||
"system_options": "Настройки интеграции",
|
||||
"system_options_button": "Системные параметры интеграции {integration}"
|
||||
"system_options_button": "Системные параметры интеграции {integration}",
|
||||
"unnamed_entry": "Без названия"
|
||||
},
|
||||
"config_flow": {
|
||||
"aborted": "Отменено",
|
||||
|
@ -1374,7 +1374,8 @@
|
||||
"restart_confirm": "重啟 Home Assistant 以完成此整合移動",
|
||||
"settings_button": "編輯 {integration} 設定",
|
||||
"system_options": "系統選項",
|
||||
"system_options_button": "{integration} 系統選項"
|
||||
"system_options_button": "{integration} 系統選項",
|
||||
"unnamed_entry": "未命名物件"
|
||||
},
|
||||
"config_flow": {
|
||||
"aborted": "已中止",
|
||||
|
12
yarn.lock
12
yarn.lock
@ -1602,6 +1602,13 @@
|
||||
lodash "^4.17.13"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@formatjs/intl-pluralrules@^1.5.8":
|
||||
version "1.5.8"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-pluralrules/-/intl-pluralrules-1.5.8.tgz#ad8dd9ec669b8dac0e284d51772a65d92efa4ef9"
|
||||
integrity sha512-OtL/rgKSSGljpxk2lRUC92ZqmzZjabwXO5zbBh2Bj8OM+z4U3H1Q5iK+ZY4k7a6EAoY7hWCr3F4k7EL8tcnQow==
|
||||
dependencies:
|
||||
"@formatjs/intl-utils" "^2.2.5"
|
||||
|
||||
"@formatjs/intl-unified-numberformat@^3.3.5":
|
||||
version "3.3.5"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-unified-numberformat/-/intl-unified-numberformat-3.3.5.tgz#b150c25eb56c1b09a03bf24fb5d1e394b945a27c"
|
||||
@ -1614,6 +1621,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-utils/-/intl-utils-2.2.4.tgz#fe62a96799d1f7dbe621fd38a4bd2e5a6a16cb0e"
|
||||
integrity sha512-83fsJywew0o9wQsW3VuEp33HRiFd0qbQDyFFnwZCwk59eLZ33CtKyJ5ofKMrU2KK6hk1zaIdzisrZeoNfmI3Tw==
|
||||
|
||||
"@formatjs/intl-utils@^2.2.5":
|
||||
version "2.2.5"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-utils/-/intl-utils-2.2.5.tgz#eaafd94df3d102ee13e54e80f992a33868a6b1e8"
|
||||
integrity sha512-p7gcmazKROteL4IECCp03Qrs790fZ8tbemUAjQu0+K0AaAlK49rI1SIFFq3LzDUAqXIshV95JJhRe/yXxkal5g==
|
||||
|
||||
"@fullcalendar/core@^5.0.0-beta.2":
|
||||
version "5.0.0-beta.2"
|
||||
resolved "https://registry.yarnpkg.com/@fullcalendar/core/-/core-5.0.0-beta.2.tgz#30a9cbbbf2d6476568f53cfa1c0746d06daa9660"
|
||||
|
Loading…
x
Reference in New Issue
Block a user