mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-22 16:56:35 +00:00
commit
7baf6382ac
File diff suppressed because it is too large
Load Diff
@ -6,12 +6,9 @@ import {
|
|||||||
PropertyDeclarations,
|
PropertyDeclarations,
|
||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import { until } from "lit-html/directives/until";
|
import { until } from "lit-html/directives/until";
|
||||||
import "@polymer/paper-icon-button";
|
|
||||||
import "@material/mwc-button";
|
import "@material/mwc-button";
|
||||||
import "@polymer/paper-spinner/paper-spinner-lite";
|
import "@polymer/paper-spinner/paper-spinner-lite";
|
||||||
import "../../../src/components/ha-card";
|
import "../../../src/components/ha-card";
|
||||||
import "../../../src/components/ha-paper-icon-button-next";
|
|
||||||
import "../../../src/components/ha-paper-icon-button-prev";
|
|
||||||
import { LovelaceCard, Lovelace } from "../../../src/panels/lovelace/types";
|
import { LovelaceCard, Lovelace } from "../../../src/panels/lovelace/types";
|
||||||
import { LovelaceCardConfig } from "../../../src/data/lovelace";
|
import { LovelaceCardConfig } from "../../../src/data/lovelace";
|
||||||
import { MockHomeAssistant } from "../../../src/fake_data/provide_hass";
|
import { MockHomeAssistant } from "../../../src/fake_data/provide_hass";
|
||||||
@ -49,11 +46,7 @@ export class HADemoCard extends LitElement implements LovelaceCard {
|
|||||||
return html`
|
return html`
|
||||||
<ha-card>
|
<ha-card>
|
||||||
<div class="picker">
|
<div class="picker">
|
||||||
<ha-paper-icon-button-prev
|
<div class="label">
|
||||||
@click=${this._prevConfig}
|
|
||||||
.disabled=${this._switching}
|
|
||||||
></ha-paper-icon-button-prev>
|
|
||||||
<div>
|
|
||||||
${this._switching
|
${this._switching
|
||||||
? html`
|
? html`
|
||||||
<paper-spinner-lite active></paper-spinner-lite>
|
<paper-spinner-lite active></paper-spinner-lite>
|
||||||
@ -73,16 +66,15 @@ export class HADemoCard extends LitElement implements LovelaceCard {
|
|||||||
""
|
""
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
<ha-paper-icon-button-next
|
<mwc-button @click=${this._nextConfig} .disabled=${this._switching}>
|
||||||
@click=${this._nextConfig}
|
Next demo
|
||||||
.disabled=${this._switching}
|
</mwc-button>
|
||||||
></ha-paper-icon-button-next>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content small-hidden">
|
||||||
Welcome home! You've reached the Home Assistant demo where we showcase
|
Welcome home! You've reached the Home Assistant demo where we showcase
|
||||||
the best UIs created by our community.
|
the best UIs created by our community.
|
||||||
</div>
|
</div>
|
||||||
<div class="actions">
|
<div class="actions small-hidden">
|
||||||
<a href="https://www.home-assistant.io" target="_blank">
|
<a href="https://www.home-assistant.io" target="_blank">
|
||||||
<mwc-button>Learn more about Home Assistant</mwc-button>
|
<mwc-button>Learn more about Home Assistant</mwc-button>
|
||||||
</a>
|
</a>
|
||||||
@ -91,14 +83,6 @@ export class HADemoCard extends LitElement implements LovelaceCard {
|
|||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
private _prevConfig() {
|
|
||||||
this._updateConfig(
|
|
||||||
selectedDemoConfigIndex > 0
|
|
||||||
? selectedDemoConfigIndex - 1
|
|
||||||
: demoConfigs.length - 1
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private _nextConfig() {
|
private _nextConfig() {
|
||||||
this._updateConfig(
|
this._updateConfig(
|
||||||
selectedDemoConfigIndex < demoConfigs.length - 1
|
selectedDemoConfigIndex < demoConfigs.length - 1
|
||||||
@ -125,6 +109,10 @@ export class HADemoCard extends LitElement implements LovelaceCard {
|
|||||||
color: var(--primary-color);
|
color: var(--primary-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.actions a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
padding: 16px;
|
padding: 16px;
|
||||||
}
|
}
|
||||||
@ -136,17 +124,27 @@ export class HADemoCard extends LitElement implements LovelaceCard {
|
|||||||
height: 60px;
|
height: 60px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.picker div {
|
.picker mwc-button {
|
||||||
text-align: center;
|
margin-right: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.picker small {
|
.label {
|
||||||
|
padding-left: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.label small {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.actions {
|
.actions {
|
||||||
padding-left: 8px;
|
padding-left: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 500px) {
|
||||||
|
.small-hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
`,
|
`,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -87,7 +87,7 @@
|
|||||||
#ha-init-skeleton::before {
|
#ha-init-skeleton::before {
|
||||||
display: block;
|
display: block;
|
||||||
content: "";
|
content: "";
|
||||||
height: 112px;
|
height: 64px;
|
||||||
background-color: #03a9f4;
|
background-color: #03a9f4;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
2
setup.py
2
setup.py
@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="home-assistant-frontend",
|
name="home-assistant-frontend",
|
||||||
version="20190614.0",
|
version="20190618.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",
|
||||||
|
@ -4,7 +4,8 @@ import { Map } from "leaflet";
|
|||||||
export type LeafletModuleType = typeof import("leaflet");
|
export type LeafletModuleType = typeof import("leaflet");
|
||||||
|
|
||||||
export const setupLeafletMap = async (
|
export const setupLeafletMap = async (
|
||||||
mapElement: HTMLElement
|
mapElement: HTMLElement,
|
||||||
|
darkMode = false
|
||||||
): Promise<[Map, LeafletModuleType]> => {
|
): Promise<[Map, LeafletModuleType]> => {
|
||||||
if (!mapElement.parentNode) {
|
if (!mapElement.parentNode) {
|
||||||
throw new Error("Cannot setup Leaflet map on disconnected element");
|
throw new Error("Cannot setup Leaflet map on disconnected element");
|
||||||
@ -20,9 +21,9 @@ export const setupLeafletMap = async (
|
|||||||
mapElement.parentNode.appendChild(style);
|
mapElement.parentNode.appendChild(style);
|
||||||
map.setView([52.3731339, 4.8903147], 13);
|
map.setView([52.3731339, 4.8903147], 13);
|
||||||
Leaflet.tileLayer(
|
Leaflet.tileLayer(
|
||||||
`https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}${
|
`https://{s}.basemaps.cartocdn.com/${
|
||||||
Leaflet.Browser.retina ? "@2x.png" : ".png"
|
darkMode ? "dark_all" : "light_all"
|
||||||
}`,
|
}/{z}/{x}/{y}${Leaflet.Browser.retina ? "@2x.png" : ".png"}`,
|
||||||
{
|
{
|
||||||
attribution:
|
attribution:
|
||||||
'© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, © <a href="https://carto.com/attributions">CARTO</a>',
|
'© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, © <a href="https://carto.com/attributions">CARTO</a>',
|
||||||
|
@ -8,6 +8,7 @@ export interface ZHAEntityReference extends HassEntity {
|
|||||||
export interface ZHADevice {
|
export interface ZHADevice {
|
||||||
name: string;
|
name: string;
|
||||||
ieee: string;
|
ieee: string;
|
||||||
|
nwk: string;
|
||||||
manufacturer: string;
|
manufacturer: string;
|
||||||
model: string;
|
model: string;
|
||||||
quirk_applied: boolean;
|
quirk_applied: boolean;
|
||||||
|
@ -4,12 +4,10 @@ import "@polymer/paper-input/paper-input";
|
|||||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||||
|
|
||||||
import { EventsMixin } from "../../../mixins/events-mixin";
|
|
||||||
import LocalizeMixin from "../../../mixins/localize-mixin";
|
import LocalizeMixin from "../../../mixins/localize-mixin";
|
||||||
|
import { fireEvent } from "../../../common/dom/fire_event";
|
||||||
|
|
||||||
class MoreInfoAlarmControlPanel extends LocalizeMixin(
|
class MoreInfoAlarmControlPanel extends LocalizeMixin(PolymerElement) {
|
||||||
EventsMixin(PolymerElement)
|
|
||||||
) {
|
|
||||||
static get template() {
|
static get template() {
|
||||||
return html`
|
return html`
|
||||||
<style include="iron-flex"></style>
|
<style include="iron-flex"></style>
|
||||||
@ -187,7 +185,8 @@ class MoreInfoAlarmControlPanel extends LocalizeMixin(
|
|||||||
},
|
},
|
||||||
_codeValid: {
|
_codeValid: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
computed: "_validateCode(_enteredCode, _codeFormat)",
|
computed:
|
||||||
|
"_validateCode(_enteredCode, _codeFormat, _armVisible, _codeArmRequired)",
|
||||||
},
|
},
|
||||||
_disarmVisible: {
|
_disarmVisible: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
@ -220,6 +219,7 @@ class MoreInfoAlarmControlPanel extends LocalizeMixin(
|
|||||||
const props = {
|
const props = {
|
||||||
_codeFormat: newVal.attributes.code_format,
|
_codeFormat: newVal.attributes.code_format,
|
||||||
_armVisible: state === "disarmed",
|
_armVisible: state === "disarmed",
|
||||||
|
_codeArmRequired: newVal.attributes.code_arm_required,
|
||||||
_disarmVisible:
|
_disarmVisible:
|
||||||
this._armedStates.includes(state) ||
|
this._armedStates.includes(state) ||
|
||||||
state === "pending" ||
|
state === "pending" ||
|
||||||
@ -231,7 +231,7 @@ class MoreInfoAlarmControlPanel extends LocalizeMixin(
|
|||||||
}
|
}
|
||||||
if (oldVal) {
|
if (oldVal) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.fire("iron-resize");
|
fireEvent(this, "iron-resize");
|
||||||
}, 500);
|
}, 500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -240,8 +240,8 @@ class MoreInfoAlarmControlPanel extends LocalizeMixin(
|
|||||||
return format === "Number";
|
return format === "Number";
|
||||||
}
|
}
|
||||||
|
|
||||||
_validateCode(code, format) {
|
_validateCode(code, format, armVisible, codeArmRequired) {
|
||||||
return !format || code.length > 0;
|
return !format || code.length > 0 || (armVisible && !codeArmRequired);
|
||||||
}
|
}
|
||||||
|
|
||||||
_digitClicked(ev) {
|
_digitClicked(ev) {
|
||||||
|
@ -36,10 +36,10 @@ class ZHAAddDevicesPage extends LitElement {
|
|||||||
|
|
||||||
public connectedCallback(): void {
|
public connectedCallback(): void {
|
||||||
super.connectedCallback();
|
super.connectedCallback();
|
||||||
if (this.route && this.route.path && this.route.path !== "") {
|
this.route && this.route.path && this.route.path !== ""
|
||||||
this._ieeeAddress = this.route.path.substring(1);
|
? (this._ieeeAddress = this.route.path.substring(1))
|
||||||
}
|
: (this._ieeeAddress = undefined);
|
||||||
this._subscribe(this._ieeeAddress);
|
this._subscribe();
|
||||||
}
|
}
|
||||||
|
|
||||||
public disconnectedCallback(): void {
|
public disconnectedCallback(): void {
|
||||||
@ -156,10 +156,10 @@ class ZHAAddDevicesPage extends LitElement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private _subscribe(ieeeAddress: string | undefined): void {
|
private _subscribe(): void {
|
||||||
const data: any = { type: "zha/devices/permit" };
|
const data: any = { type: "zha/devices/permit" };
|
||||||
if (ieeeAddress) {
|
if (this._ieeeAddress) {
|
||||||
data.ieee = ieeeAddress;
|
data.ieee = this._ieeeAddress;
|
||||||
}
|
}
|
||||||
this._subscribed = this.hass!.connection.subscribeMessage(
|
this._subscribed = this.hass!.connection.subscribeMessage(
|
||||||
(message) => this._handleMessage(message),
|
(message) => this._handleMessage(message),
|
||||||
|
@ -36,6 +36,7 @@ import { HomeAssistant } from "../../../types";
|
|||||||
import { ItemSelectedEvent, NodeServiceData } from "./types";
|
import { ItemSelectedEvent, NodeServiceData } from "./types";
|
||||||
import { navigate } from "../../../common/navigate";
|
import { navigate } from "../../../common/navigate";
|
||||||
import { UnsubscribeFunc } from "home-assistant-js-websocket";
|
import { UnsubscribeFunc } from "home-assistant-js-websocket";
|
||||||
|
import { formatAsPaddedHex } from "./functions";
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
// for fire event
|
// for fire event
|
||||||
@ -132,6 +133,8 @@ class ZHADeviceCard extends LitElement {
|
|||||||
<dl>
|
<dl>
|
||||||
<dt>IEEE:</dt>
|
<dt>IEEE:</dt>
|
||||||
<dd class="zha-info">${this.device!.ieee}</dd>
|
<dd class="zha-info">${this.device!.ieee}</dd>
|
||||||
|
<dt>Nwk:</dt>
|
||||||
|
<dd class="zha-info">${formatAsPaddedHex(this.device!.nwk)}</dd>
|
||||||
${
|
${
|
||||||
this.device!.quirk_applied
|
this.device!.quirk_applied
|
||||||
? html`
|
? html`
|
||||||
|
@ -180,7 +180,10 @@ class HuiMapCard extends LitElement implements LovelaceCard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async loadMap(): Promise<void> {
|
private async loadMap(): Promise<void> {
|
||||||
[this._leafletMap, this.Leaflet] = await setupLeafletMap(this._mapEl);
|
[this._leafletMap, this.Leaflet] = await setupLeafletMap(
|
||||||
|
this._mapEl,
|
||||||
|
this._config !== undefined ? this._config.dark_mode !== false : false
|
||||||
|
);
|
||||||
this._drawEntities();
|
this._drawEntities();
|
||||||
this._leafletMap.invalidateSize();
|
this._leafletMap.invalidateSize();
|
||||||
this._fitMap();
|
this._fitMap();
|
||||||
|
@ -109,6 +109,7 @@ export interface MapCardConfig extends LovelaceCardConfig {
|
|||||||
default_zoom?: number;
|
default_zoom?: number;
|
||||||
entities?: Array<EntityConfig | string>;
|
entities?: Array<EntityConfig | string>;
|
||||||
geo_location_sources?: string[];
|
geo_location_sources?: string[];
|
||||||
|
dark_mode?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface MarkdownCardConfig extends LovelaceCardConfig {
|
export interface MarkdownCardConfig extends LovelaceCardConfig {
|
||||||
|
@ -37,6 +37,7 @@ const cardConfigStruct = struct({
|
|||||||
title: "string?",
|
title: "string?",
|
||||||
aspect_ratio: "string?",
|
aspect_ratio: "string?",
|
||||||
default_zoom: "number?",
|
default_zoom: "number?",
|
||||||
|
dark_mode: "boolean?",
|
||||||
entities: [entitiesConfigStruct],
|
entities: [entitiesConfigStruct],
|
||||||
geo_location_sources: "array?",
|
geo_location_sources: "array?",
|
||||||
});
|
});
|
||||||
@ -71,6 +72,10 @@ export class HuiMapCardEditor extends LitElement implements LovelaceCardEditor {
|
|||||||
return this._config!.geo_location_sources || [];
|
return this._config!.geo_location_sources || [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get _dark_mode(): boolean {
|
||||||
|
return this._config!.dark_mode || false;
|
||||||
|
}
|
||||||
|
|
||||||
protected render(): TemplateResult | void {
|
protected render(): TemplateResult | void {
|
||||||
if (!this.hass) {
|
if (!this.hass) {
|
||||||
return html``;
|
return html``;
|
||||||
@ -100,6 +105,12 @@ export class HuiMapCardEditor extends LitElement implements LovelaceCardEditor {
|
|||||||
@value-changed="${this._valueChanged}"
|
@value-changed="${this._valueChanged}"
|
||||||
></paper-input>
|
></paper-input>
|
||||||
</div>
|
</div>
|
||||||
|
<paper-toggle-button
|
||||||
|
?checked="${this._dark_mode !== false}"
|
||||||
|
.configValue="${"dark_mode"}"
|
||||||
|
@change="${this._valueChanged}"
|
||||||
|
>Dark Mode?</paper-toggle-button
|
||||||
|
>
|
||||||
<hui-entity-editor
|
<hui-entity-editor
|
||||||
.hass="${this.hass}"
|
.hass="${this.hass}"
|
||||||
.entities="${this._configEntities}"
|
.entities="${this._configEntities}"
|
||||||
@ -155,7 +166,8 @@ export class HuiMapCardEditor extends LitElement implements LovelaceCardEditor {
|
|||||||
}
|
}
|
||||||
this._config = {
|
this._config = {
|
||||||
...this._config,
|
...this._config,
|
||||||
[target.configValue!]: value,
|
[target.configValue]:
|
||||||
|
target.checked !== undefined ? target.checked : value,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -619,7 +619,8 @@
|
|||||||
"firmware": "Firmware: {version}",
|
"firmware": "Firmware: {version}",
|
||||||
"device_unavailable": "dispositiu no disponible",
|
"device_unavailable": "dispositiu no disponible",
|
||||||
"entity_unavailable": "entitat no disponible",
|
"entity_unavailable": "entitat no disponible",
|
||||||
"no_area": "Sense àrea"
|
"no_area": "Sense àrea",
|
||||||
|
"hub": "Connectat a través de"
|
||||||
},
|
},
|
||||||
"config_flow": {
|
"config_flow": {
|
||||||
"external_step": {
|
"external_step": {
|
||||||
|
@ -619,7 +619,8 @@
|
|||||||
"firmware": "Firmware: {version}",
|
"firmware": "Firmware: {version}",
|
||||||
"device_unavailable": "device unavailable",
|
"device_unavailable": "device unavailable",
|
||||||
"entity_unavailable": "entity unavailable",
|
"entity_unavailable": "entity unavailable",
|
||||||
"no_area": "No Area"
|
"no_area": "No Area",
|
||||||
|
"hub": "Connected via"
|
||||||
},
|
},
|
||||||
"config_flow": {
|
"config_flow": {
|
||||||
"external_step": {
|
"external_step": {
|
||||||
|
@ -113,7 +113,7 @@
|
|||||||
"on": "Caliente"
|
"on": "Caliente"
|
||||||
},
|
},
|
||||||
"window": {
|
"window": {
|
||||||
"off": "Cerrado",
|
"off": "Cerrada",
|
||||||
"on": "Abierta"
|
"on": "Abierta"
|
||||||
},
|
},
|
||||||
"lock": {
|
"lock": {
|
||||||
@ -361,7 +361,7 @@
|
|||||||
"location_name": "Nombre de tu instalación de Home Assistant",
|
"location_name": "Nombre de tu instalación de Home Assistant",
|
||||||
"latitude": "Latitud",
|
"latitude": "Latitud",
|
||||||
"longitude": "Longitud",
|
"longitude": "Longitud",
|
||||||
"elevation": "Elevación",
|
"elevation": "Altitud",
|
||||||
"elevation_meters": "metros",
|
"elevation_meters": "metros",
|
||||||
"time_zone": "Zona horaria",
|
"time_zone": "Zona horaria",
|
||||||
"unit_system": "Sistema de unidades",
|
"unit_system": "Sistema de unidades",
|
||||||
@ -619,7 +619,8 @@
|
|||||||
"firmware": "Firmware: {version}",
|
"firmware": "Firmware: {version}",
|
||||||
"device_unavailable": "dispositivo no disponible",
|
"device_unavailable": "dispositivo no disponible",
|
||||||
"entity_unavailable": "entidad no disponible",
|
"entity_unavailable": "entidad no disponible",
|
||||||
"no_area": "Ningún área"
|
"no_area": "Ningún área",
|
||||||
|
"hub": "Conectado a través de"
|
||||||
},
|
},
|
||||||
"config_flow": {
|
"config_flow": {
|
||||||
"external_step": {
|
"external_step": {
|
||||||
|
@ -619,7 +619,8 @@
|
|||||||
"firmware": "קושחה: {version}",
|
"firmware": "קושחה: {version}",
|
||||||
"device_unavailable": "התקן אינו זמין",
|
"device_unavailable": "התקן אינו זמין",
|
||||||
"entity_unavailable": "ישות לא זמינה",
|
"entity_unavailable": "ישות לא זמינה",
|
||||||
"no_area": "ללא אזור"
|
"no_area": "ללא אזור",
|
||||||
|
"hub": "מחובר באמצעות"
|
||||||
},
|
},
|
||||||
"config_flow": {
|
"config_flow": {
|
||||||
"external_step": {
|
"external_step": {
|
||||||
@ -1138,7 +1139,7 @@
|
|||||||
"dialogs": {
|
"dialogs": {
|
||||||
"more_info_settings": {
|
"more_info_settings": {
|
||||||
"save": "שמור",
|
"save": "שמור",
|
||||||
"name": "שם",
|
"name": "שם חלופי",
|
||||||
"entity_id": "מזהה ישות"
|
"entity_id": "מזהה ישות"
|
||||||
},
|
},
|
||||||
"more_info_control": {
|
"more_info_control": {
|
||||||
|
@ -619,7 +619,8 @@
|
|||||||
"firmware": "Firmware: {version}",
|
"firmware": "Firmware: {version}",
|
||||||
"device_unavailable": "eszköz nem érhető el",
|
"device_unavailable": "eszköz nem érhető el",
|
||||||
"entity_unavailable": "entitás nem érhető el",
|
"entity_unavailable": "entitás nem érhető el",
|
||||||
"no_area": "Nincs Terület"
|
"no_area": "Nincs Terület",
|
||||||
|
"hub": "Kapcsolódva"
|
||||||
},
|
},
|
||||||
"config_flow": {
|
"config_flow": {
|
||||||
"external_step": {
|
"external_step": {
|
||||||
|
@ -298,9 +298,11 @@
|
|||||||
"stop": "Stöðva"
|
"stop": "Stöðva"
|
||||||
},
|
},
|
||||||
"core_config": {
|
"core_config": {
|
||||||
|
"location_name": "Nafnið á Home Assistant uppsetningunni",
|
||||||
"latitude": "Breiddargráða",
|
"latitude": "Breiddargráða",
|
||||||
"longitude": "Lengdargráða",
|
"longitude": "Lengdargráða",
|
||||||
"elevation": "Hækkun",
|
"elevation": "Hækkun",
|
||||||
|
"elevation_meters": "metrar",
|
||||||
"time_zone": "Tímabelti",
|
"time_zone": "Tímabelti",
|
||||||
"save_button": "Vista"
|
"save_button": "Vista"
|
||||||
}
|
}
|
||||||
@ -521,7 +523,8 @@
|
|||||||
"firmware": "Fastbúnaðarútgáfa: {version}",
|
"firmware": "Fastbúnaðarútgáfa: {version}",
|
||||||
"device_unavailable": "Tæki ekki tiltækt",
|
"device_unavailable": "Tæki ekki tiltækt",
|
||||||
"entity_unavailable": "Eining ekki tiltæk",
|
"entity_unavailable": "Eining ekki tiltæk",
|
||||||
"no_area": "Ekkert svæði"
|
"no_area": "Ekkert svæði",
|
||||||
|
"hub": "Tengt gegnum"
|
||||||
},
|
},
|
||||||
"config_flow": {
|
"config_flow": {
|
||||||
"external_step": {
|
"external_step": {
|
||||||
@ -771,6 +774,10 @@
|
|||||||
"integration": {
|
"integration": {
|
||||||
"more_integrations": "Meira",
|
"more_integrations": "Meira",
|
||||||
"finish": "Ljúka"
|
"finish": "Ljúka"
|
||||||
|
},
|
||||||
|
"core-config": {
|
||||||
|
"location_name_default": "Heima",
|
||||||
|
"finish": "Næsta"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lovelace": {
|
"lovelace": {
|
||||||
@ -841,7 +848,11 @@
|
|||||||
},
|
},
|
||||||
"warning": {
|
"warning": {
|
||||||
"entity_not_found": "Eining ekki tiltæk: {entity}"
|
"entity_not_found": "Eining ekki tiltæk: {entity}"
|
||||||
}
|
},
|
||||||
|
"changed_toast": {
|
||||||
|
"refresh": "Endurnýja"
|
||||||
|
},
|
||||||
|
"reload_lovelace": "Endurhlaða Lovelace"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
@ -871,7 +882,7 @@
|
|||||||
"not_available": "Mynd ekki tiltæk"
|
"not_available": "Mynd ekki tiltæk"
|
||||||
},
|
},
|
||||||
"persistent_notification": {
|
"persistent_notification": {
|
||||||
"dismiss": "Hafna"
|
"dismiss": "Vísa frá"
|
||||||
},
|
},
|
||||||
"scene": {
|
"scene": {
|
||||||
"activate": "Virkja"
|
"activate": "Virkja"
|
||||||
|
@ -619,7 +619,8 @@
|
|||||||
"firmware": "펌웨어: {version}",
|
"firmware": "펌웨어: {version}",
|
||||||
"device_unavailable": "기기 사용불가",
|
"device_unavailable": "기기 사용불가",
|
||||||
"entity_unavailable": "구성요소 사용불가",
|
"entity_unavailable": "구성요소 사용불가",
|
||||||
"no_area": "영역 없음"
|
"no_area": "영역 없음",
|
||||||
|
"hub": "연결 경유 대상"
|
||||||
},
|
},
|
||||||
"config_flow": {
|
"config_flow": {
|
||||||
"external_step": {
|
"external_step": {
|
||||||
|
@ -619,7 +619,8 @@
|
|||||||
"firmware": "Firmware: {version}",
|
"firmware": "Firmware: {version}",
|
||||||
"device_unavailable": "Apparat net erreechbar",
|
"device_unavailable": "Apparat net erreechbar",
|
||||||
"entity_unavailable": "Entitéit net erreechbar",
|
"entity_unavailable": "Entitéit net erreechbar",
|
||||||
"no_area": "Kee Beräich"
|
"no_area": "Kee Beräich",
|
||||||
|
"hub": "Verbonnen via"
|
||||||
},
|
},
|
||||||
"config_flow": {
|
"config_flow": {
|
||||||
"external_step": {
|
"external_step": {
|
||||||
|
@ -619,7 +619,8 @@
|
|||||||
"firmware": "Fastvare: {version}",
|
"firmware": "Fastvare: {version}",
|
||||||
"device_unavailable": "enheten er utilgjengelig",
|
"device_unavailable": "enheten er utilgjengelig",
|
||||||
"entity_unavailable": "oppføringen er utilgjengelig",
|
"entity_unavailable": "oppføringen er utilgjengelig",
|
||||||
"no_area": "Intet område"
|
"no_area": "Intet område",
|
||||||
|
"hub": "Ligado atravez de"
|
||||||
},
|
},
|
||||||
"config_flow": {
|
"config_flow": {
|
||||||
"external_step": {
|
"external_step": {
|
||||||
|
@ -619,7 +619,8 @@
|
|||||||
"firmware": "Oprogramowanie: {version}",
|
"firmware": "Oprogramowanie: {version}",
|
||||||
"device_unavailable": "urządzenie niedostępne",
|
"device_unavailable": "urządzenie niedostępne",
|
||||||
"entity_unavailable": "encja niedostępna",
|
"entity_unavailable": "encja niedostępna",
|
||||||
"no_area": "brak"
|
"no_area": "brak",
|
||||||
|
"hub": "Połączony przez"
|
||||||
},
|
},
|
||||||
"config_flow": {
|
"config_flow": {
|
||||||
"external_step": {
|
"external_step": {
|
||||||
|
@ -619,7 +619,8 @@
|
|||||||
"firmware": "Прошивка: {version}",
|
"firmware": "Прошивка: {version}",
|
||||||
"device_unavailable": "устройство недоступно",
|
"device_unavailable": "устройство недоступно",
|
||||||
"entity_unavailable": "объект недоступен",
|
"entity_unavailable": "объект недоступен",
|
||||||
"no_area": "Не указано"
|
"no_area": "Не указано",
|
||||||
|
"hub": "Подключено через"
|
||||||
},
|
},
|
||||||
"config_flow": {
|
"config_flow": {
|
||||||
"external_step": {
|
"external_step": {
|
||||||
|
@ -619,7 +619,8 @@
|
|||||||
"firmware": "固件:{version}",
|
"firmware": "固件:{version}",
|
||||||
"device_unavailable": "设备不可用",
|
"device_unavailable": "设备不可用",
|
||||||
"entity_unavailable": "实体不可用",
|
"entity_unavailable": "实体不可用",
|
||||||
"no_area": "没有区域"
|
"no_area": "没有区域",
|
||||||
|
"hub": "连接于"
|
||||||
},
|
},
|
||||||
"config_flow": {
|
"config_flow": {
|
||||||
"external_step": {
|
"external_step": {
|
||||||
@ -888,7 +889,7 @@
|
|||||||
"intro": "{name},您好!欢迎来到 Home Assistant。您想怎样命名您的家呢?",
|
"intro": "{name},您好!欢迎来到 Home Assistant。您想怎样命名您的家呢?",
|
||||||
"intro_location": "我们想知道您住在哪里。这将用于显示资讯以及设置基于太阳的自动化。此数据永远不会在您的网络以外共享。",
|
"intro_location": "我们想知道您住在哪里。这将用于显示资讯以及设置基于太阳的自动化。此数据永远不会在您的网络以外共享。",
|
||||||
"intro_location_detect": "我们可以通过向外部服务发出一个一次性请求来帮助您填写此信息。",
|
"intro_location_detect": "我们可以通过向外部服务发出一个一次性请求来帮助您填写此信息。",
|
||||||
"location_name_default": "Home",
|
"location_name_default": "家",
|
||||||
"button_detect": "自动检测",
|
"button_detect": "自动检测",
|
||||||
"finish": "下一步"
|
"finish": "下一步"
|
||||||
}
|
}
|
||||||
|
@ -619,7 +619,8 @@
|
|||||||
"firmware": "韌體:{version}",
|
"firmware": "韌體:{version}",
|
||||||
"device_unavailable": "裝置不可用",
|
"device_unavailable": "裝置不可用",
|
||||||
"entity_unavailable": "物件不可用",
|
"entity_unavailable": "物件不可用",
|
||||||
"no_area": "無分區"
|
"no_area": "無分區",
|
||||||
|
"hub": "連線:"
|
||||||
},
|
},
|
||||||
"config_flow": {
|
"config_flow": {
|
||||||
"external_step": {
|
"external_step": {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user