mirror of
https://github.com/home-assistant/frontend.git
synced 2025-09-28 14:29:38 +00:00
Compare commits
72 Commits
20201212.0
...
multiple-a
Author | SHA1 | Date | |
---|---|---|---|
![]() |
e87accdfb4 | ||
![]() |
4dcfe3031d | ||
![]() |
1538fbb102 | ||
![]() |
b9259b87eb | ||
![]() |
30997dbc88 | ||
![]() |
607eb6d130 | ||
![]() |
f2e9b3577d | ||
![]() |
cb2c6d8560 | ||
![]() |
bfe8346ced | ||
![]() |
88da9bb91b | ||
![]() |
5e2ee1a16c | ||
![]() |
2fdc746392 | ||
![]() |
1667973a66 | ||
![]() |
42f0101440 | ||
![]() |
13b69bff1b | ||
![]() |
2c2226dfd6 | ||
![]() |
a3fdfe0e15 | ||
![]() |
a0de209a55 | ||
![]() |
0208b50ac7 | ||
![]() |
4a61779aba | ||
![]() |
05057ade05 | ||
![]() |
6fb206853c | ||
![]() |
fab68055bf | ||
![]() |
d5a77ef3cd | ||
![]() |
dcb2605de4 | ||
![]() |
e6d38f4539 | ||
![]() |
293b56cfa6 | ||
![]() |
775e93d54b | ||
![]() |
7f840e75df | ||
![]() |
2113ea675e | ||
![]() |
916a5c1a6b | ||
![]() |
f684531315 | ||
![]() |
fe8dda8996 | ||
![]() |
4cd4b328c8 | ||
![]() |
d844c89b94 | ||
![]() |
177ea2b85a | ||
![]() |
50c5c15f49 | ||
![]() |
1810760dc7 | ||
![]() |
4635b92e3f | ||
![]() |
1c652626eb | ||
![]() |
2000cfb1db | ||
![]() |
f4d07828e7 | ||
![]() |
95b552671c | ||
![]() |
ef3bc3efe1 | ||
![]() |
371ad899f5 | ||
![]() |
2c54158d84 | ||
![]() |
5d9e30bbdc | ||
![]() |
e477fd567d | ||
![]() |
6a6c2937fe | ||
![]() |
09e17c4da8 | ||
![]() |
fd00469d11 | ||
![]() |
cbbeb795f3 | ||
![]() |
bba40e0da8 | ||
![]() |
d23165d06a | ||
![]() |
405fef6f03 | ||
![]() |
588f217826 | ||
![]() |
3d8b7cf80e | ||
![]() |
c0ef923ad3 | ||
![]() |
3df44fc71e | ||
![]() |
c1965492d9 | ||
![]() |
1f56ffde80 | ||
![]() |
f335fdc002 | ||
![]() |
0c914b5ec8 | ||
![]() |
d767b06858 | ||
![]() |
d4e49f3944 | ||
![]() |
7dfc5b3faf | ||
![]() |
8a88033ab9 | ||
![]() |
7b06b38c94 | ||
![]() |
909f3a3005 | ||
![]() |
4930532c7b | ||
![]() |
8a42e65c6a | ||
![]() |
5d4121a9b4 |
10
.github/ISSUE_TEMPLATE/BUG_REPORT.md
vendored
10
.github/ISSUE_TEMPLATE/BUG_REPORT.md
vendored
@@ -74,12 +74,12 @@ DO NOT DELETE ANY TEXT from this template! Otherwise, your issue may be closed w
|
||||
|
||||
```
|
||||
|
||||
## Problem-relevant configuration
|
||||
## Problem-relevant frontend configuration
|
||||
|
||||
<!--
|
||||
An example configuration that caused the problem for you. Fill this out even
|
||||
if it seems unimportant to you. Please be sure to remove personal information
|
||||
like passwords, private URLs and other credentials.
|
||||
An example configuration that caused the problem for you, e.g. the YAML configuration
|
||||
of the used cards. Fill this out even if it seems unimportant to you. Please be sure
|
||||
to remove personal information like passwords, private URLs and other credentials.
|
||||
-->
|
||||
|
||||
```yaml
|
||||
@@ -89,7 +89,7 @@ DO NOT DELETE ANY TEXT from this template! Otherwise, your issue may be closed w
|
||||
## Javascript errors shown in your browser console/inspector
|
||||
|
||||
<!--
|
||||
If you come across any javascript or other error logs, e.g., in your browser
|
||||
If you come across any Javascript or other error logs, e.g. in your browser
|
||||
console/inspector please provide them.
|
||||
-->
|
||||
|
||||
|
@@ -14,7 +14,7 @@ This is the repository for the official [Home Assistant](https://home-assistant.
|
||||
- Development: [Instructions](https://developers.home-assistant.io/docs/frontend/development/)
|
||||
- Production build: `script/build_frontend`
|
||||
- Gallery: `cd gallery && script/develop_gallery`
|
||||
- Hass.io: [Instructions](https://developers.home-assistant.io/docs/en/hassio_hass.html)
|
||||
- Supervisor: [Instructions](https://developers.home-assistant.io/docs/supervisor/developing)
|
||||
|
||||
## Frontend development
|
||||
|
||||
|
@@ -36,6 +36,7 @@ const createWebpackConfig = ({
|
||||
const ignorePackages = bundle.ignorePackages({ latestBuild });
|
||||
return {
|
||||
mode: isProdBuild ? "production" : "development",
|
||||
target: ["web", latestBuild ? "es2017" : "es5"],
|
||||
devtool: isProdBuild
|
||||
? "cheap-module-source-map"
|
||||
: "eval-cheap-module-source-map",
|
||||
@@ -131,22 +132,6 @@ const createWebpackConfig = ({
|
||||
}
|
||||
return `${chunk.name}.${chunk.hash.substr(0, 8)}.js`;
|
||||
},
|
||||
environment: {
|
||||
// The environment supports arrow functions ('() => { ... }').
|
||||
arrowFunction: latestBuild,
|
||||
// The environment supports BigInt as literal (123n).
|
||||
bigIntLiteral: false,
|
||||
// The environment supports const and let for variable declarations.
|
||||
const: latestBuild,
|
||||
// The environment supports destructuring ('{ a, b } = obj').
|
||||
destructuring: latestBuild,
|
||||
// The environment supports an async import() function to import EcmaScript modules.
|
||||
dynamicImport: latestBuild,
|
||||
// The environment supports 'for of' iteration ('for (const x of array) { ... }').
|
||||
forOf: latestBuild,
|
||||
// The environment supports ECMAScript Module syntax to import ECMAScript modules (import ... from '...').
|
||||
module: latestBuild,
|
||||
},
|
||||
chunkFilename:
|
||||
isProdBuild && !isStatsBuild
|
||||
? "chunk.[chunkhash].js"
|
||||
|
@@ -9,30 +9,29 @@ class DemoMoreInfo extends PolymerElement {
|
||||
static get template() {
|
||||
return html`
|
||||
<style>
|
||||
:host {
|
||||
.root {
|
||||
display: flex;
|
||||
align-items: start;
|
||||
}
|
||||
|
||||
#card {
|
||||
max-width: 400px;
|
||||
width: 100vw;
|
||||
}
|
||||
ha-card {
|
||||
width: 333px;
|
||||
width: 352px;
|
||||
padding: 20px 24px;
|
||||
}
|
||||
|
||||
state-card-content {
|
||||
display: block;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
pre {
|
||||
width: 400px;
|
||||
margin: 0 16px;
|
||||
overflow: auto;
|
||||
color: var(--primary-text-color);
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 800px) {
|
||||
:host {
|
||||
.root {
|
||||
flex-direction: column;
|
||||
}
|
||||
pre {
|
||||
@@ -40,21 +39,25 @@ class DemoMoreInfo extends PolymerElement {
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<ha-card>
|
||||
<state-card-content
|
||||
state-obj="[[_stateObj]]"
|
||||
hass="[[hass]]"
|
||||
in-dialog
|
||||
></state-card-content>
|
||||
<div class="root">
|
||||
<div id="card">
|
||||
<ha-card>
|
||||
<state-card-content
|
||||
state-obj="[[_stateObj]]"
|
||||
hass="[[hass]]"
|
||||
in-dialog
|
||||
></state-card-content>
|
||||
|
||||
<more-info-content
|
||||
hass="[[hass]]"
|
||||
state-obj="[[_stateObj]]"
|
||||
></more-info-content>
|
||||
</ha-card>
|
||||
<template is="dom-if" if="[[showConfig]]">
|
||||
<pre>[[_jsonEntity(_stateObj)]]</pre>
|
||||
</template>
|
||||
<more-info-content
|
||||
hass="[[hass]]"
|
||||
state-obj="[[_stateObj]]"
|
||||
></more-info-content>
|
||||
</ha-card>
|
||||
</div>
|
||||
<template is="dom-if" if="[[showConfig]]">
|
||||
<pre>[[_jsonEntity(_stateObj)]]</pre>
|
||||
</template>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
|
@@ -3,12 +3,18 @@ import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import "../../../src/components/ha-switch";
|
||||
import "../../../src/components/ha-formfield";
|
||||
import "./demo-more-info";
|
||||
import { applyThemesOnElement } from "../../../src/common/dom/apply_themes_on_element";
|
||||
|
||||
class DemoMoreInfos extends PolymerElement {
|
||||
static get template() {
|
||||
return html`
|
||||
<style>
|
||||
#container {
|
||||
min-height: calc(100vh - 128px);
|
||||
background: var(--primary-background-color);
|
||||
}
|
||||
.cards {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
@@ -23,20 +29,31 @@ class DemoMoreInfos extends PolymerElement {
|
||||
.filters {
|
||||
margin-left: 60px;
|
||||
}
|
||||
ha-formfield {
|
||||
margin-right: 16px;
|
||||
}
|
||||
</style>
|
||||
<app-toolbar>
|
||||
<div class="filters">
|
||||
<ha-switch checked="{{_showConfig}}">Show entity</ha-switch>
|
||||
<ha-formfield label="Show entities">
|
||||
<ha-switch checked="[[_showConfig]]" on-change="_showConfigToggled">
|
||||
</ha-switch>
|
||||
</ha-formfield>
|
||||
<ha-formfield label="Dark theme">
|
||||
<ha-switch on-change="_darkThemeToggled"> </ha-switch>
|
||||
</ha-formfield>
|
||||
</div>
|
||||
</app-toolbar>
|
||||
<div class="cards">
|
||||
<template is="dom-repeat" items="[[entities]]">
|
||||
<demo-more-info
|
||||
entity-id="[[item]]"
|
||||
show-config="[[_showConfig]]"
|
||||
hass="[[hass]]"
|
||||
></demo-more-info>
|
||||
</template>
|
||||
<div id="container">
|
||||
<div class="cards">
|
||||
<template is="dom-repeat" items="[[entities]]">
|
||||
<demo-more-info
|
||||
entity-id="[[item]]"
|
||||
show-config="[[_showConfig]]"
|
||||
hass="[[hass]]"
|
||||
></demo-more-info>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
@@ -51,6 +68,16 @@ class DemoMoreInfos extends PolymerElement {
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
_showConfigToggled(ev) {
|
||||
this._showConfig = ev.target.checked;
|
||||
}
|
||||
|
||||
_darkThemeToggled(ev) {
|
||||
applyThemesOnElement(this.$.container, { themes: {} }, "default", {
|
||||
dark: ev.target.checked,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define("demo-more-infos", DemoMoreInfos);
|
||||
|
72
gallery/src/data/plants.ts
Normal file
72
gallery/src/data/plants.ts
Normal file
@@ -0,0 +1,72 @@
|
||||
import { getEntity } from "../../../src/fake_data/entity";
|
||||
|
||||
export const createPlantEntities = () => [
|
||||
getEntity("plant", "lemon_tree", "ok", {
|
||||
problem: "none",
|
||||
sensors: {
|
||||
moisture: "sensor.lemon_tree_moisture",
|
||||
battery: "sensor.lemon_tree_battery",
|
||||
temperature: "sensor.lemon_tree_temperature",
|
||||
conductivity: "sensor.lemon_tree_conductivity",
|
||||
brightness: "sensor.lemon_tree_brightness",
|
||||
},
|
||||
unit_of_measurement_dict: {
|
||||
temperature: "°C",
|
||||
moisture: "%",
|
||||
brightness: "lx",
|
||||
battery: "%",
|
||||
conductivity: "μS/cm",
|
||||
},
|
||||
moisture: 54,
|
||||
battery: 95,
|
||||
temperature: 15.6,
|
||||
conductivity: 1,
|
||||
brightness: 12,
|
||||
max_brightness: 20,
|
||||
friendly_name: "Lemon Tree",
|
||||
}),
|
||||
getEntity("plant", "apple_tree", "ok", {
|
||||
problem: "brightness",
|
||||
sensors: {
|
||||
moisture: "sensor.apple_tree_moisture",
|
||||
battery: "sensor.apple_tree_battery",
|
||||
temperature: "sensor.apple_tree_temperature",
|
||||
conductivity: "sensor.apple_tree_conductivity",
|
||||
brightness: "sensor.apple_tree_brightness",
|
||||
},
|
||||
unit_of_measurement_dict: {
|
||||
temperature: "°C",
|
||||
moisture: "%",
|
||||
brightness: "lx",
|
||||
battery: "%",
|
||||
conductivity: "μS/cm",
|
||||
},
|
||||
moisture: 54,
|
||||
battery: 2,
|
||||
temperature: 15.6,
|
||||
conductivity: 1,
|
||||
brightness: 25,
|
||||
max_brightness: 20,
|
||||
friendly_name: "Apple Tree",
|
||||
}),
|
||||
getEntity("plant", "sunflowers", "ok", {
|
||||
problem: "moisture, temperature, conductivity",
|
||||
sensors: {
|
||||
moisture: "sensor.sunflowers_moisture",
|
||||
temperature: "sensor.sunflowers_temperature",
|
||||
conductivity: "sensor.sunflowers_conductivity",
|
||||
brightness: "sensor.sunflowers_brightness",
|
||||
},
|
||||
unit_of_measurement_dict: {
|
||||
temperature: "°C",
|
||||
moisture: "%",
|
||||
brightness: "lx",
|
||||
conductivity: "μS/cm",
|
||||
},
|
||||
moisture: 54,
|
||||
temperature: 15.6,
|
||||
conductivity: 1,
|
||||
brightness: 25,
|
||||
entity_picture: "/images/sunflowers.jpg",
|
||||
}),
|
||||
];
|
@@ -1,6 +1,11 @@
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
customElement,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { getEntity } from "../../../src/fake_data/entity";
|
||||
import { provideHass } from "../../../src/fake_data/provide_hass";
|
||||
import "../components/demo-cards";
|
||||
@@ -71,28 +76,19 @@ const CONFIGS = [
|
||||
},
|
||||
];
|
||||
|
||||
class DemoAlarmPanelEntity extends PolymerElement {
|
||||
static get template() {
|
||||
return html` <demo-cards id="demos" configs="[[_configs]]"></demo-cards> `;
|
||||
@customElement("demo-hui-alarm-panel-card")
|
||||
class DemoAlarmPanelEntity extends LitElement {
|
||||
@query("#demos") private _demoRoot!: HTMLElement;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`<demo-cards id="demos" .configs=${CONFIGS}></demo-cards>`;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
_configs: {
|
||||
type: Object,
|
||||
value: CONFIGS,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public ready() {
|
||||
super.ready();
|
||||
this._setupDemo();
|
||||
}
|
||||
|
||||
private async _setupDemo() {
|
||||
const hass = provideHass(this.$.demos);
|
||||
await hass.updateTranslations(null, "en");
|
||||
protected firstUpdated(changedProperties: PropertyValues) {
|
||||
super.firstUpdated(changedProperties);
|
||||
const hass = provideHass(this._demoRoot);
|
||||
hass.updateTranslations(null, "en");
|
||||
hass.updateTranslations("lovelace", "en");
|
||||
hass.addEntities(ENTITIES);
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,11 @@
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
customElement,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { getEntity } from "../../../src/fake_data/entity";
|
||||
import { provideHass } from "../../../src/fake_data/provide_hass";
|
||||
import "../components/demo-cards";
|
||||
@@ -53,24 +58,19 @@ const CONFIGS = [
|
||||
},
|
||||
];
|
||||
|
||||
class DemoConditional extends PolymerElement {
|
||||
static get template() {
|
||||
return html` <demo-cards id="demos" configs="[[_configs]]"></demo-cards> `;
|
||||
@customElement("demo-hui-conditional-card")
|
||||
class DemoConditional extends LitElement {
|
||||
@query("#demos") private _demoRoot!: HTMLElement;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`<demo-cards id="demos" .configs=${CONFIGS}></demo-cards>`;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
_configs: {
|
||||
type: Object,
|
||||
value: CONFIGS,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public ready() {
|
||||
super.ready();
|
||||
const hass = provideHass(this.$.demos);
|
||||
protected firstUpdated(changedProperties: PropertyValues) {
|
||||
super.firstUpdated(changedProperties);
|
||||
const hass = provideHass(this._demoRoot);
|
||||
hass.updateTranslations(null, "en");
|
||||
hass.updateTranslations("lovelace", "en");
|
||||
hass.addEntities(ENTITIES);
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,11 @@
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
customElement,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { getEntity } from "../../../src/fake_data/entity";
|
||||
import { provideHass } from "../../../src/fake_data/provide_hass";
|
||||
import "../components/demo-cards";
|
||||
@@ -217,24 +222,19 @@ const CONFIGS = [
|
||||
},
|
||||
];
|
||||
|
||||
class DemoEntities extends PolymerElement {
|
||||
static get template() {
|
||||
return html` <demo-cards id="demos" configs="[[_configs]]"></demo-cards> `;
|
||||
@customElement("demo-hui-entities-card")
|
||||
class DemoEntities extends LitElement {
|
||||
@query("#demos") private _demoRoot!: HTMLElement;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`<demo-cards id="demos" .configs=${CONFIGS}></demo-cards>`;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
_configs: {
|
||||
type: Object,
|
||||
value: CONFIGS,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public ready() {
|
||||
super.ready();
|
||||
const hass = provideHass(this.$.demos);
|
||||
protected firstUpdated(changedProperties: PropertyValues) {
|
||||
super.firstUpdated(changedProperties);
|
||||
const hass = provideHass(this._demoRoot);
|
||||
hass.updateTranslations(null, "en");
|
||||
hass.updateTranslations("lovelace", "en");
|
||||
hass.addEntities(ENTITIES);
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,11 @@
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
customElement,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { getEntity } from "../../../src/fake_data/entity";
|
||||
import { provideHass } from "../../../src/fake_data/provide_hass";
|
||||
import "../components/demo-cards";
|
||||
@@ -69,24 +74,19 @@ const CONFIGS = [
|
||||
},
|
||||
];
|
||||
|
||||
class DemoButtonEntity extends PolymerElement {
|
||||
static get template() {
|
||||
return html` <demo-cards id="demos" configs="[[_configs]]"></demo-cards> `;
|
||||
@customElement("demo-hui-entity-button-card")
|
||||
class DemoButtonEntity extends LitElement {
|
||||
@query("#demos") private _demoRoot!: HTMLElement;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`<demo-cards id="demos" .configs=${CONFIGS}></demo-cards>`;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
_configs: {
|
||||
type: Object,
|
||||
value: CONFIGS,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public ready() {
|
||||
super.ready();
|
||||
const hass = provideHass(this.$.demos);
|
||||
protected firstUpdated(changedProperties: PropertyValues) {
|
||||
super.firstUpdated(changedProperties);
|
||||
const hass = provideHass(this._demoRoot);
|
||||
hass.updateTranslations(null, "en");
|
||||
hass.updateTranslations("lovelace", "en");
|
||||
hass.addEntities(ENTITIES);
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,11 @@
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
customElement,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { getEntity } from "../../../src/fake_data/entity";
|
||||
import { provideHass } from "../../../src/fake_data/provide_hass";
|
||||
import "../components/demo-cards";
|
||||
@@ -89,26 +94,21 @@ const CONFIGS = [
|
||||
},
|
||||
];
|
||||
|
||||
class DemoFilter extends PolymerElement {
|
||||
static get template() {
|
||||
return html` <demo-cards id="demos" configs="[[_configs]]"></demo-cards> `;
|
||||
@customElement("demo-hui-entity-filter-card")
|
||||
class DemoEntityFilter extends LitElement {
|
||||
@query("#demos") private _demoRoot!: HTMLElement;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`<demo-cards id="demos" .configs=${CONFIGS}></demo-cards>`;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
_configs: {
|
||||
type: Object,
|
||||
value: CONFIGS,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public ready() {
|
||||
super.ready();
|
||||
const hass = provideHass(this.$.demos);
|
||||
protected firstUpdated(changedProperties: PropertyValues) {
|
||||
super.firstUpdated(changedProperties);
|
||||
const hass = provideHass(this._demoRoot);
|
||||
hass.updateTranslations(null, "en");
|
||||
hass.updateTranslations("lovelace", "en");
|
||||
hass.addEntities(ENTITIES);
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define("demo-hui-entity-filter-card", DemoFilter);
|
||||
customElements.define("demo-hui-entity-filter-card", DemoEntityFilter);
|
||||
|
@@ -1,6 +1,11 @@
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
customElement,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { getEntity } from "../../../src/fake_data/entity";
|
||||
import { provideHass } from "../../../src/fake_data/provide_hass";
|
||||
import "../components/demo-cards";
|
||||
@@ -107,24 +112,19 @@ const CONFIGS = [
|
||||
},
|
||||
];
|
||||
|
||||
class DemoGaugeEntity extends PolymerElement {
|
||||
static get template() {
|
||||
return html` <demo-cards id="demos" configs="[[_configs]]"></demo-cards> `;
|
||||
@customElement("demo-hui-gauge-card")
|
||||
class DemoGaugeEntity extends LitElement {
|
||||
@query("#demos") private _demoRoot!: HTMLElement;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`<demo-cards id="demos" .configs=${CONFIGS}></demo-cards>`;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
_configs: {
|
||||
type: Object,
|
||||
value: CONFIGS,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public ready() {
|
||||
super.ready();
|
||||
const hass = provideHass(this.$.demos);
|
||||
protected firstUpdated(changedProperties: PropertyValues) {
|
||||
super.firstUpdated(changedProperties);
|
||||
const hass = provideHass(this._demoRoot);
|
||||
hass.updateTranslations(null, "en");
|
||||
hass.updateTranslations("lovelace", "en");
|
||||
hass.addEntities(ENTITIES);
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,11 @@
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
customElement,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { getEntity } from "../../../src/fake_data/entity";
|
||||
import { provideHass } from "../../../src/fake_data/provide_hass";
|
||||
import "../components/demo-cards";
|
||||
@@ -218,26 +223,21 @@ const CONFIGS = [
|
||||
},
|
||||
];
|
||||
|
||||
class DemoPicEntity extends PolymerElement {
|
||||
static get template() {
|
||||
return html` <demo-cards id="demos" configs="[[_configs]]"></demo-cards> `;
|
||||
@customElement("demo-hui-glance-card")
|
||||
class DemoGlanceEntity extends LitElement {
|
||||
@query("#demos") private _demoRoot!: HTMLElement;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`<demo-cards id="demos" .configs=${CONFIGS}></demo-cards>`;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
_configs: {
|
||||
type: Object,
|
||||
value: CONFIGS,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public ready() {
|
||||
super.ready();
|
||||
const hass = provideHass(this.$.demos);
|
||||
protected firstUpdated(changedProperties: PropertyValues) {
|
||||
super.firstUpdated(changedProperties);
|
||||
const hass = provideHass(this._demoRoot);
|
||||
hass.updateTranslations(null, "en");
|
||||
hass.updateTranslations("lovelace", "en");
|
||||
hass.addEntities(ENTITIES);
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define("demo-hui-glance-card", DemoPicEntity);
|
||||
customElements.define("demo-hui-glance-card", DemoGlanceEntity);
|
||||
|
@@ -1,6 +1,4 @@
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import { html, LitElement, customElement, TemplateResult } from "lit-element";
|
||||
import "../components/demo-cards";
|
||||
|
||||
const CONFIGS = [
|
||||
@@ -37,18 +35,10 @@ const CONFIGS = [
|
||||
},
|
||||
];
|
||||
|
||||
class DemoIframe extends PolymerElement {
|
||||
static get template() {
|
||||
return html` <demo-cards configs="[[_configs]]"></demo-cards> `;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
_configs: {
|
||||
type: Object,
|
||||
value: CONFIGS,
|
||||
},
|
||||
};
|
||||
@customElement("demo-hui-iframe-card")
|
||||
class DemoIframe extends LitElement {
|
||||
protected render(): TemplateResult {
|
||||
return html`<demo-cards id="demos" .configs=${CONFIGS}></demo-cards>`;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1,6 +1,11 @@
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
customElement,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { getEntity } from "../../../src/fake_data/entity";
|
||||
import { provideHass } from "../../../src/fake_data/provide_hass";
|
||||
import "../components/demo-cards";
|
||||
@@ -63,24 +68,19 @@ const CONFIGS = [
|
||||
},
|
||||
];
|
||||
|
||||
class DemoLightEntity extends PolymerElement {
|
||||
static get template() {
|
||||
return html` <demo-cards id="demos" configs="[[_configs]]"></demo-cards> `;
|
||||
@customElement("demo-hui-light-card")
|
||||
class DemoLightEntity extends LitElement {
|
||||
@query("#demos") private _demoRoot!: HTMLElement;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`<demo-cards id="demos" .configs=${CONFIGS}></demo-cards>`;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
_configs: {
|
||||
type: Object,
|
||||
value: CONFIGS,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public ready() {
|
||||
super.ready();
|
||||
const hass = provideHass(this.$.demos);
|
||||
protected firstUpdated(changedProperties: PropertyValues) {
|
||||
super.firstUpdated(changedProperties);
|
||||
const hass = provideHass(this._demoRoot);
|
||||
hass.updateTranslations(null, "en");
|
||||
hass.updateTranslations("lovelace", "en");
|
||||
hass.addEntities(ENTITIES);
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,11 @@
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
customElement,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { getEntity } from "../../../src/fake_data/entity";
|
||||
import { provideHass } from "../../../src/fake_data/provide_hass";
|
||||
import "../components/demo-cards";
|
||||
@@ -161,24 +166,19 @@ const CONFIGS = [
|
||||
},
|
||||
];
|
||||
|
||||
class DemoMap extends PolymerElement {
|
||||
static get template() {
|
||||
return html` <demo-cards id="demos" configs="[[_configs]]"></demo-cards> `;
|
||||
@customElement("demo-hui-map-card")
|
||||
class DemoMap extends LitElement {
|
||||
@query("#demos") private _demoRoot!: HTMLElement;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`<demo-cards id="demos" .configs=${CONFIGS}></demo-cards>`;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
_configs: {
|
||||
type: Object,
|
||||
value: CONFIGS,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public ready() {
|
||||
super.ready();
|
||||
const hass = provideHass(this.$.demos);
|
||||
protected firstUpdated(changedProperties: PropertyValues) {
|
||||
super.firstUpdated(changedProperties);
|
||||
const hass = provideHass(this._demoRoot);
|
||||
hass.updateTranslations(null, "en");
|
||||
hass.updateTranslations("lovelace", "en");
|
||||
hass.addEntities(ENTITIES);
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,11 @@
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
customElement,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { mockTemplate } from "../../../demo/src/stubs/template";
|
||||
import { provideHass } from "../../../src/fake_data/provide_hass";
|
||||
import "../components/demo-cards";
|
||||
@@ -254,23 +259,19 @@ const CONFIGS = [
|
||||
},
|
||||
];
|
||||
|
||||
class DemoMarkdown extends PolymerElement {
|
||||
static get template() {
|
||||
return html` <demo-cards id="demos" configs="[[_configs]]"></demo-cards> `;
|
||||
@customElement("demo-hui-markdown-card")
|
||||
class DemoMarkdown extends LitElement {
|
||||
@query("#demos") private _demoRoot!: HTMLElement;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`<demo-cards id="demos" .configs=${CONFIGS}></demo-cards>`;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
_configs: {
|
||||
type: Object,
|
||||
value: CONFIGS,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public ready() {
|
||||
super.ready();
|
||||
const hass = provideHass(this.$.demos);
|
||||
protected firstUpdated(changedProperties: PropertyValues) {
|
||||
super.firstUpdated(changedProperties);
|
||||
const hass = provideHass(this._demoRoot);
|
||||
hass.updateTranslations(null, "en");
|
||||
hass.updateTranslations("lovelace", "en");
|
||||
mockTemplate(hass);
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,11 @@
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
customElement,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { provideHass } from "../../../src/fake_data/provide_hass";
|
||||
import "../components/demo-cards";
|
||||
import { createMediaPlayerEntities } from "../data/media_players";
|
||||
@@ -158,26 +163,21 @@ const CONFIGS = [
|
||||
},
|
||||
];
|
||||
|
||||
class DemoHuiMediControlCard extends PolymerElement {
|
||||
static get template() {
|
||||
return html` <demo-cards id="demos" configs="[[_configs]]"></demo-cards> `;
|
||||
@customElement("demo-hui-media-control-card")
|
||||
class DemoHuiMediaControlCard extends LitElement {
|
||||
@query("#demos") private _demoRoot!: HTMLElement;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`<demo-cards id="demos" .configs=${CONFIGS}></demo-cards>`;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
_configs: {
|
||||
type: Object,
|
||||
value: CONFIGS,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public ready() {
|
||||
super.ready();
|
||||
const hass = provideHass(this.$.demos);
|
||||
protected firstUpdated(changedProperties: PropertyValues) {
|
||||
super.firstUpdated(changedProperties);
|
||||
const hass = provideHass(this._demoRoot);
|
||||
hass.updateTranslations(null, "en");
|
||||
hass.updateTranslations("lovelace", "en");
|
||||
hass.addEntities(createMediaPlayerEntities());
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define("demo-hui-media-control-card", DemoHuiMediControlCard);
|
||||
customElements.define("demo-hui-media-control-card", DemoHuiMediaControlCard);
|
||||
|
@@ -1,6 +1,11 @@
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
customElement,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { provideHass } from "../../../src/fake_data/provide_hass";
|
||||
import "../components/demo-cards";
|
||||
import { createMediaPlayerEntities } from "../data/media_players";
|
||||
@@ -55,26 +60,21 @@ const CONFIGS = [
|
||||
},
|
||||
];
|
||||
|
||||
class DemoHuiMediaPlayerRows extends PolymerElement {
|
||||
static get template() {
|
||||
return html` <demo-cards id="demos" configs="[[_configs]]"></demo-cards> `;
|
||||
@customElement("demo-hui-media-player-row")
|
||||
class DemoHuiMediaPlayerRow extends LitElement {
|
||||
@query("#demos") private _demoRoot!: HTMLElement;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`<demo-cards id="demos" .configs=${CONFIGS}></demo-cards>`;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
_configs: {
|
||||
type: Object,
|
||||
value: CONFIGS,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public ready() {
|
||||
super.ready();
|
||||
const hass = provideHass(this.$.demos);
|
||||
protected firstUpdated(changedProperties: PropertyValues) {
|
||||
super.firstUpdated(changedProperties);
|
||||
const hass = provideHass(this._demoRoot);
|
||||
hass.updateTranslations(null, "en");
|
||||
hass.updateTranslations("lovelace", "en");
|
||||
hass.addEntities(createMediaPlayerEntities());
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define("demo-hui-media-player-rows", DemoHuiMediaPlayerRows);
|
||||
customElements.define("demo-hui-media-player-row", DemoHuiMediaPlayerRow);
|
||||
|
@@ -1,6 +1,11 @@
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
customElement,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { getEntity } from "../../../src/fake_data/entity";
|
||||
import { provideHass } from "../../../src/fake_data/provide_hass";
|
||||
import "../components/demo-cards";
|
||||
@@ -125,26 +130,21 @@ const CONFIGS = [
|
||||
},
|
||||
];
|
||||
|
||||
class DemoPicElements extends PolymerElement {
|
||||
static get template() {
|
||||
return html` <demo-cards id="demos" configs="[[_configs]]"></demo-cards> `;
|
||||
@customElement("demo-hui-picture-elements-card")
|
||||
class DemoPictureElements extends LitElement {
|
||||
@query("#demos") private _demoRoot!: HTMLElement;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`<demo-cards id="demos" .configs=${CONFIGS}></demo-cards>`;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
_configs: {
|
||||
type: Object,
|
||||
value: CONFIGS,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public ready() {
|
||||
super.ready();
|
||||
const hass = provideHass(this.$.demos);
|
||||
protected firstUpdated(changedProperties: PropertyValues) {
|
||||
super.firstUpdated(changedProperties);
|
||||
const hass = provideHass(this._demoRoot);
|
||||
hass.updateTranslations(null, "en");
|
||||
hass.updateTranslations("lovelace", "en");
|
||||
hass.addEntities(ENTITIES);
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define("demo-hui-picture-elements-card", DemoPicElements);
|
||||
customElements.define("demo-hui-picture-elements-card", DemoPictureElements);
|
||||
|
@@ -1,6 +1,11 @@
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
customElement,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { getEntity } from "../../../src/fake_data/entity";
|
||||
import { provideHass } from "../../../src/fake_data/provide_hass";
|
||||
import "../components/demo-cards";
|
||||
@@ -80,26 +85,21 @@ const CONFIGS = [
|
||||
},
|
||||
];
|
||||
|
||||
class DemoPicEntity extends PolymerElement {
|
||||
static get template() {
|
||||
return html` <demo-cards id="demos" configs="[[_configs]]"></demo-cards> `;
|
||||
@customElement("demo-hui-picture-entity-card")
|
||||
class DemoPictureEntity extends LitElement {
|
||||
@query("#demos") private _demoRoot!: HTMLElement;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`<demo-cards id="demos" .configs=${CONFIGS}></demo-cards>`;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
_configs: {
|
||||
type: Object,
|
||||
value: CONFIGS,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public ready() {
|
||||
super.ready();
|
||||
const hass = provideHass(this.$.demos);
|
||||
protected firstUpdated(changedProperties: PropertyValues) {
|
||||
super.firstUpdated(changedProperties);
|
||||
const hass = provideHass(this._demoRoot);
|
||||
hass.updateTranslations(null, "en");
|
||||
hass.updateTranslations("lovelace", "en");
|
||||
hass.addEntities(ENTITIES);
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define("demo-hui-picture-entity-card", DemoPicEntity);
|
||||
customElements.define("demo-hui-picture-entity-card", DemoPictureEntity);
|
||||
|
@@ -1,6 +1,11 @@
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
customElement,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { getEntity } from "../../../src/fake_data/entity";
|
||||
import { provideHass } from "../../../src/fake_data/provide_hass";
|
||||
import "../components/demo-cards";
|
||||
@@ -121,26 +126,21 @@ const CONFIGS = [
|
||||
},
|
||||
];
|
||||
|
||||
class DemoPicGlance extends PolymerElement {
|
||||
static get template() {
|
||||
return html` <demo-cards id="demos" configs="[[_configs]]"></demo-cards> `;
|
||||
@customElement("demo-hui-picture-glance-card")
|
||||
class DemoPictureGlance extends LitElement {
|
||||
@query("#demos") private _demoRoot!: HTMLElement;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`<demo-cards id="demos" .configs=${CONFIGS}></demo-cards>`;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
_configs: {
|
||||
type: Object,
|
||||
value: CONFIGS,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public ready() {
|
||||
super.ready();
|
||||
const hass = provideHass(this.$.demos);
|
||||
protected firstUpdated(changedProperties: PropertyValues) {
|
||||
super.firstUpdated(changedProperties);
|
||||
const hass = provideHass(this._demoRoot);
|
||||
hass.updateTranslations(null, "en");
|
||||
hass.updateTranslations("lovelace", "en");
|
||||
hass.addEntities(ENTITIES);
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define("demo-hui-picture-glance-card", DemoPicGlance);
|
||||
customElements.define("demo-hui-picture-glance-card", DemoPictureGlance);
|
||||
|
55
gallery/src/demos/demo-hui-plant-card.ts
Normal file
55
gallery/src/demos/demo-hui-plant-card.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
customElement,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { provideHass } from "../../../src/fake_data/provide_hass";
|
||||
import "../components/demo-cards";
|
||||
import { createPlantEntities } from "../data/plants";
|
||||
|
||||
const CONFIGS = [
|
||||
{
|
||||
heading: "Basic example",
|
||||
config: `
|
||||
- type: plant-status
|
||||
entity: plant.lemon_tree
|
||||
`,
|
||||
},
|
||||
{
|
||||
heading: "Problem (too bright) + low battery",
|
||||
config: `
|
||||
- type: plant-status
|
||||
entity: plant.apple_tree
|
||||
`,
|
||||
},
|
||||
{
|
||||
heading: "With picture + multiple problems",
|
||||
config: `
|
||||
- type: plant-status
|
||||
entity: plant.sunflowers
|
||||
name: Sunflowers Name Overwrite
|
||||
`,
|
||||
},
|
||||
];
|
||||
|
||||
@customElement("demo-hui-plant-card")
|
||||
export class DemoPlantEntity extends LitElement {
|
||||
@query("#demos") private _demoRoot!: HTMLElement;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`<demo-cards id="demos" .configs=${CONFIGS}></demo-cards>`;
|
||||
}
|
||||
|
||||
protected firstUpdated(changedProperties: PropertyValues) {
|
||||
super.firstUpdated(changedProperties);
|
||||
const hass = provideHass(this._demoRoot);
|
||||
hass.updateTranslations(null, "en");
|
||||
hass.updateTranslations("lovelace", "en");
|
||||
hass.addEntities(createPlantEntities());
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define("demo-hui-plant-card", DemoPlantEntity);
|
@@ -1,6 +1,11 @@
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
customElement,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { provideHass } from "../../../src/fake_data/provide_hass";
|
||||
import "../components/demo-cards";
|
||||
|
||||
@@ -20,24 +25,19 @@ const CONFIGS = [
|
||||
},
|
||||
];
|
||||
|
||||
class DemoShoppingListEntity extends PolymerElement {
|
||||
static get template() {
|
||||
return html` <demo-cards id="demos" configs="[[_configs]]"></demo-cards> `;
|
||||
@customElement("demo-hui-shopping-list-card")
|
||||
class DemoShoppingListEntity extends LitElement {
|
||||
@query("#demos") private _demoRoot!: HTMLElement;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`<demo-cards id="demos" .configs=${CONFIGS}></demo-cards>`;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
_configs: {
|
||||
type: Object,
|
||||
value: CONFIGS,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public ready() {
|
||||
super.ready();
|
||||
const hass = provideHass(this.$.demos);
|
||||
protected firstUpdated(changedProperties: PropertyValues) {
|
||||
super.firstUpdated(changedProperties);
|
||||
const hass = provideHass(this._demoRoot);
|
||||
hass.updateTranslations(null, "en");
|
||||
hass.updateTranslations("lovelace", "en");
|
||||
|
||||
hass.mockAPI("shopping_list", () => [
|
||||
{ name: "list", id: 1, complete: false },
|
||||
|
@@ -1,6 +1,11 @@
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
customElement,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { mockHistory } from "../../../demo/src/stubs/history";
|
||||
import { getEntity } from "../../../src/fake_data/entity";
|
||||
import { provideHass } from "../../../src/fake_data/provide_hass";
|
||||
@@ -132,24 +137,19 @@ const CONFIGS = [
|
||||
},
|
||||
];
|
||||
|
||||
class DemoStack extends PolymerElement {
|
||||
static get template() {
|
||||
return html` <demo-cards id="demos" configs="[[_configs]]"></demo-cards> `;
|
||||
@customElement("demo-hui-stack-card")
|
||||
class DemoStack extends LitElement {
|
||||
@query("#demos") private _demoRoot!: HTMLElement;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`<demo-cards id="demos" .configs=${CONFIGS}></demo-cards>`;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
_configs: {
|
||||
type: Object,
|
||||
value: CONFIGS,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public ready() {
|
||||
super.ready();
|
||||
const hass = provideHass(this.$.demos);
|
||||
protected firstUpdated(changedProperties: PropertyValues) {
|
||||
super.firstUpdated(changedProperties);
|
||||
const hass = provideHass(this._demoRoot);
|
||||
hass.updateTranslations(null, "en");
|
||||
hass.updateTranslations("lovelace", "en");
|
||||
hass.addEntities(ENTITIES);
|
||||
mockHistory(hass);
|
||||
}
|
||||
|
@@ -1,6 +1,11 @@
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
customElement,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { getEntity } from "../../../src/fake_data/entity";
|
||||
import { provideHass } from "../../../src/fake_data/provide_hass";
|
||||
import "../components/demo-cards";
|
||||
@@ -74,24 +79,19 @@ const CONFIGS = [
|
||||
},
|
||||
];
|
||||
|
||||
class DemoThermostatEntity extends PolymerElement {
|
||||
static get template() {
|
||||
return html` <demo-cards id="demos" configs="[[_configs]]"></demo-cards> `;
|
||||
@customElement("demo-hui-thermostat-card")
|
||||
class DemoThermostatEntity extends LitElement {
|
||||
@query("#demos") private _demoRoot!: HTMLElement;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`<demo-cards id="demos" .configs=${CONFIGS}></demo-cards>`;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
_configs: {
|
||||
type: Object,
|
||||
value: CONFIGS,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public ready() {
|
||||
super.ready();
|
||||
const hass = provideHass(this.$.demos);
|
||||
protected firstUpdated(changedProperties: PropertyValues) {
|
||||
super.firstUpdated(changedProperties);
|
||||
const hass = provideHass(this._demoRoot);
|
||||
hass.updateTranslations(null, "en");
|
||||
hass.updateTranslations("lovelace", "en");
|
||||
hass.addEntities(ENTITIES);
|
||||
}
|
||||
}
|
||||
|
@@ -1,10 +1,27 @@
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
customElement,
|
||||
property,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import "../../../src/components/ha-card";
|
||||
import { SUPPORT_BRIGHTNESS } from "../../../src/data/light";
|
||||
import {
|
||||
SUPPORT_BRIGHTNESS,
|
||||
SUPPORT_COLOR_TEMP,
|
||||
SUPPORT_EFFECT,
|
||||
SUPPORT_FLASH,
|
||||
SUPPORT_COLOR,
|
||||
SUPPORT_TRANSITION,
|
||||
SUPPORT_WHITE_VALUE,
|
||||
} from "../../../src/data/light";
|
||||
import { getEntity } from "../../../src/fake_data/entity";
|
||||
import { provideHass } from "../../../src/fake_data/provide_hass";
|
||||
import {
|
||||
provideHass,
|
||||
MockHomeAssistant,
|
||||
} from "../../../src/fake_data/provide_hass";
|
||||
import "../components/demo-more-infos";
|
||||
import "../../../src/dialogs/more-info/more-info-content";
|
||||
|
||||
@@ -14,38 +31,52 @@ const ENTITIES = [
|
||||
}),
|
||||
getEntity("light", "kitchen_light", "on", {
|
||||
friendly_name: "Brightness Light",
|
||||
brightness: 80,
|
||||
brightness: 200,
|
||||
supported_features: SUPPORT_BRIGHTNESS,
|
||||
}),
|
||||
getEntity("light", "color_temperature_light", "on", {
|
||||
friendly_name: "White Color Temperature Light",
|
||||
brightness: 128,
|
||||
color_temp: 75,
|
||||
min_mireds: 30,
|
||||
max_mireds: 150,
|
||||
supported_features: SUPPORT_BRIGHTNESS + SUPPORT_COLOR_TEMP,
|
||||
}),
|
||||
getEntity("light", "color_effectslight", "on", {
|
||||
friendly_name: "Color Effets Light",
|
||||
brightness: 255,
|
||||
hs_color: [30, 100],
|
||||
white_value: 36,
|
||||
supported_features:
|
||||
SUPPORT_BRIGHTNESS +
|
||||
SUPPORT_EFFECT +
|
||||
SUPPORT_FLASH +
|
||||
SUPPORT_COLOR +
|
||||
SUPPORT_TRANSITION +
|
||||
SUPPORT_WHITE_VALUE,
|
||||
effect_list: ["random", "colorloop"],
|
||||
}),
|
||||
];
|
||||
|
||||
class DemoMoreInfoLight extends PolymerElement {
|
||||
static get template() {
|
||||
@customElement("demo-more-info-light")
|
||||
class DemoMoreInfoLight extends LitElement {
|
||||
@property() public hass!: MockHomeAssistant;
|
||||
|
||||
@query("demo-more-infos") private _demoRoot!: HTMLElement;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`
|
||||
<demo-more-infos
|
||||
hass="[[hass]]"
|
||||
entities="[[_entities]]"
|
||||
.hass=${this.hass}
|
||||
.entities=${ENTITIES.map((ent) => ent.entityId)}
|
||||
></demo-more-infos>
|
||||
`;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
_entities: {
|
||||
type: Array,
|
||||
value: ENTITIES.map((ent) => ent.entityId),
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public ready() {
|
||||
super.ready();
|
||||
this._setupDemo();
|
||||
}
|
||||
|
||||
private async _setupDemo() {
|
||||
const hass = provideHass(this);
|
||||
await hass.updateTranslations(null, "en");
|
||||
protected firstUpdated(changedProperties: PropertyValues) {
|
||||
super.firstUpdated(changedProperties);
|
||||
const hass = provideHass(this._demoRoot);
|
||||
hass.updateTranslations(null, "en");
|
||||
hass.addEntities(ENTITIES);
|
||||
}
|
||||
}
|
||||
|
@@ -1,9 +1,10 @@
|
||||
import "@material/mwc-button";
|
||||
import { html, LitElement, TemplateResult } from "lit-element";
|
||||
import { customElement, html, LitElement, TemplateResult } from "lit-element";
|
||||
import "../../../src/components/ha-card";
|
||||
import { ActionHandlerEvent } from "../../../src/data/lovelace";
|
||||
import { actionHandler } from "../../../src/panels/lovelace/common/directives/action-handler-directive";
|
||||
|
||||
@customElement("demo-util-long-press")
|
||||
export class DemoUtilLongPress extends LitElement {
|
||||
protected render(): TemplateResult {
|
||||
return html`
|
||||
@@ -20,7 +21,7 @@ export class DemoUtilLongPress extends LitElement {
|
||||
|
||||
<textarea></textarea>
|
||||
|
||||
<div>(try pressing and scrolling too!)</div>
|
||||
<div>Try pressing and scrolling too!</div>
|
||||
</ha-card>
|
||||
`
|
||||
)}
|
||||
@@ -62,5 +63,3 @@ export class DemoUtilLongPress extends LitElement {
|
||||
`;
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define("demo-util-long-press", DemoUtilLongPress);
|
||||
|
@@ -14,8 +14,6 @@ import "../../src/styles/polymer-ha-style";
|
||||
// eslint-disable-next-line import/extensions
|
||||
import { DEMOS } from "../build/import-demos";
|
||||
|
||||
const fixPath = (path) => path.substr(2, path.length - 5);
|
||||
|
||||
class HaGallery extends PolymerElement {
|
||||
static get template() {
|
||||
return html`
|
||||
|
@@ -69,7 +69,7 @@ const STAGE_ICON = {
|
||||
const PERMIS_DESC = {
|
||||
stage: {
|
||||
title: "Add-on Stage",
|
||||
description: `Add-ons can have one of three stages:\n\n<ha-svg-icon .path='${STAGE_ICON.stable}'></ha-svg-icon> **Stable**: These are add-ons ready to be used in production.\n\n<ha-svg-icon .path='${STAGE_ICON.experimental}'></ha-svg-icon> **Experimental**: These may contain bugs, and may be unfinished.\n\n<ha-svg-icon .path='${STAGE_ICON.deprecated}'></ha-svg-icon> **Deprecated**: These add-ons will no longer receive any updates.`,
|
||||
description: `Add-ons can have one of three stages:\n\n<ha-svg-icon path="${STAGE_ICON.stable}"></ha-svg-icon> **Stable**: These are add-ons ready to be used in production.\n\n<ha-svg-icon path="${STAGE_ICON.experimental}"></ha-svg-icon> **Experimental**: These may contain bugs, and may be unfinished.\n\n<ha-svg-icon path="${STAGE_ICON.deprecated}"></ha-svg-icon> **Deprecated**: These add-ons will no longer receive any updates.`,
|
||||
},
|
||||
rating: {
|
||||
title: "Add-on Security Rating",
|
||||
|
@@ -178,7 +178,7 @@ class HassioSupervisorInfo extends LitElement {
|
||||
</div>`}
|
||||
${!this.supervisor.supervisor.healthy
|
||||
? html`<div class="error">
|
||||
Your installtion is running in an unhealthy state.
|
||||
Your installation is running in an unhealthy state.
|
||||
<button
|
||||
class="link"
|
||||
title="Learn more about why your system is marked as unhealthy"
|
||||
|
32
package.json
32
package.json
@@ -29,22 +29,22 @@
|
||||
"@fullcalendar/daygrid": "5.1.0",
|
||||
"@fullcalendar/interaction": "5.1.0",
|
||||
"@fullcalendar/list": "5.1.0",
|
||||
"@material/chips": "=8.0.0-canary.774dcfc8e.0",
|
||||
"@material/mwc-button": "^0.19.0",
|
||||
"@material/mwc-checkbox": "^0.19.0",
|
||||
"@material/mwc-circular-progress": "^0.19.0",
|
||||
"@material/mwc-dialog": "^0.19.0",
|
||||
"@material/mwc-fab": "^0.19.0",
|
||||
"@material/mwc-formfield": "^0.19.0",
|
||||
"@material/mwc-icon-button": "^0.19.0",
|
||||
"@material/mwc-list": "^0.19.0",
|
||||
"@material/mwc-menu": "^0.19.0",
|
||||
"@material/mwc-radio": "^0.19.0",
|
||||
"@material/mwc-ripple": "^0.19.0",
|
||||
"@material/mwc-switch": "^0.19.0",
|
||||
"@material/mwc-tab": "^0.19.0",
|
||||
"@material/mwc-tab-bar": "^0.19.0",
|
||||
"@material/top-app-bar": "=8.0.0-canary.774dcfc8e.0",
|
||||
"@material/chips": "=9.0.0-canary.1c156d69d.0",
|
||||
"@material/mwc-button": "^0.20.0",
|
||||
"@material/mwc-checkbox": "^0.20.0",
|
||||
"@material/mwc-circular-progress": "^0.20.0",
|
||||
"@material/mwc-dialog": "^0.20.0",
|
||||
"@material/mwc-fab": "^0.20.0",
|
||||
"@material/mwc-formfield": "^0.20.0",
|
||||
"@material/mwc-icon-button": "^0.20.0",
|
||||
"@material/mwc-list": "^0.20.0",
|
||||
"@material/mwc-menu": "^0.20.0",
|
||||
"@material/mwc-radio": "^0.20.0",
|
||||
"@material/mwc-ripple": "^0.20.0",
|
||||
"@material/mwc-switch": "^0.20.0",
|
||||
"@material/mwc-tab": "^0.20.0",
|
||||
"@material/mwc-tab-bar": "^0.20.0",
|
||||
"@material/top-app-bar": "=9.0.0-canary.1c156d69d.0",
|
||||
"@mdi/js": "5.6.55",
|
||||
"@mdi/svg": "5.6.55",
|
||||
"@polymer/app-layout": "^3.0.2",
|
||||
|
2
setup.py
2
setup.py
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
||||
|
||||
setup(
|
||||
name="home-assistant-frontend",
|
||||
version="20201212.0",
|
||||
version="20201229.0",
|
||||
description="The Home Assistant frontend",
|
||||
url="https://github.com/home-assistant/home-assistant-polymer",
|
||||
author="The Home Assistant Authors",
|
||||
|
@@ -1,12 +1,17 @@
|
||||
export const copyToClipboard = (str) => {
|
||||
export const copyToClipboard = async (str) => {
|
||||
if (navigator.clipboard) {
|
||||
navigator.clipboard.writeText(str);
|
||||
} else {
|
||||
const el = document.createElement("textarea");
|
||||
el.value = str;
|
||||
document.body.appendChild(el);
|
||||
el.select();
|
||||
document.execCommand("copy");
|
||||
document.body.removeChild(el);
|
||||
try {
|
||||
await navigator.clipboard.writeText(str);
|
||||
return;
|
||||
} catch {
|
||||
// just continue with the fallback coding below
|
||||
}
|
||||
}
|
||||
|
||||
const el = document.createElement("textarea");
|
||||
el.value = str;
|
||||
document.body.appendChild(el);
|
||||
el.select();
|
||||
document.execCommand("copy");
|
||||
document.body.removeChild(el);
|
||||
};
|
||||
|
@@ -99,7 +99,7 @@ export class HaDataTable extends LitElement {
|
||||
@property({ type: Boolean }) public hasFab = false;
|
||||
|
||||
/**
|
||||
* Add an extra rows at the bottom of the datatabel
|
||||
* Add an extra row at the bottom of the data table
|
||||
* @type {TemplateResult}
|
||||
*/
|
||||
@property({ attribute: false }) public appendRow?;
|
||||
|
@@ -58,6 +58,14 @@ const sortData = (
|
||||
valB = valB.toUpperCase();
|
||||
}
|
||||
|
||||
// Ensure "undefined" is always sorted to the bottom
|
||||
if (valA === undefined && valB !== undefined) {
|
||||
return 1;
|
||||
}
|
||||
if (valB === undefined && valA !== undefined) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (valA < valB) {
|
||||
return sort * -1;
|
||||
}
|
||||
|
@@ -63,7 +63,7 @@ class HaAttributes extends LitElement {
|
||||
justify-content: space-between;
|
||||
}
|
||||
.data-entry .value {
|
||||
max-width: 50%;
|
||||
max-width: 60%;
|
||||
overflow-wrap: break-word;
|
||||
text-align: right;
|
||||
}
|
||||
@@ -77,6 +77,9 @@ class HaAttributes extends LitElement {
|
||||
pre {
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
margin: 0px;
|
||||
overflow-wrap: break-word;
|
||||
white-space: pre-line;
|
||||
}
|
||||
`;
|
||||
}
|
||||
|
@@ -10,7 +10,6 @@ class HaLabeledSlider extends PolymerElement {
|
||||
<style>
|
||||
:host {
|
||||
display: block;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.title {
|
||||
@@ -30,6 +29,7 @@ class HaLabeledSlider extends PolymerElement {
|
||||
ha-slider {
|
||||
flex-grow: 1;
|
||||
background-image: var(--ha-slider-background);
|
||||
border-radius: 4px;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
@@ -124,13 +124,17 @@ export const getLogbookMessage = (
|
||||
switch (domain) {
|
||||
case "device_tracker":
|
||||
case "person":
|
||||
return state === "not_home"
|
||||
? hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_away`)
|
||||
: hass.localize(
|
||||
`${LOGBOOK_LOCALIZE_PATH}.was_at_state`,
|
||||
"state",
|
||||
state
|
||||
);
|
||||
if (state === "not_home") {
|
||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_away`);
|
||||
}
|
||||
if (state === "home") {
|
||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_at_home`);
|
||||
}
|
||||
return hass.localize(
|
||||
`${LOGBOOK_LOCALIZE_PATH}.was_at_state`,
|
||||
"state",
|
||||
state
|
||||
);
|
||||
|
||||
case "sun":
|
||||
return state === "above_horizon"
|
||||
|
@@ -148,6 +148,11 @@ export interface CustomActionConfig extends BaseActionConfig {
|
||||
action: "fire-dom-event";
|
||||
}
|
||||
|
||||
export interface MultipleActionConfig extends BaseActionConfig {
|
||||
action: "multiple";
|
||||
actions: ActionConfig[];
|
||||
}
|
||||
|
||||
export interface BaseActionConfig {
|
||||
confirmation?: ConfirmationRestrictionConfig;
|
||||
}
|
||||
@@ -168,7 +173,8 @@ export type ActionConfig =
|
||||
| UrlActionConfig
|
||||
| MoreInfoActionConfig
|
||||
| NoActionConfig
|
||||
| CustomActionConfig;
|
||||
| CustomActionConfig
|
||||
| MultipleActionConfig;
|
||||
|
||||
type LovelaceUpdatedEvent = HassEventBase & {
|
||||
event_type: "lovelace_updated";
|
||||
|
@@ -38,3 +38,12 @@ export const addItem = (
|
||||
type: "shopping_list/items/add",
|
||||
name,
|
||||
});
|
||||
|
||||
export const reorderItems = (
|
||||
hass: HomeAssistant,
|
||||
itemIds: [string]
|
||||
): Promise<ShoppingListItem> =>
|
||||
hass.callWS({
|
||||
type: "shopping_list/items/reorder",
|
||||
item_ids: itemIds,
|
||||
});
|
||||
|
@@ -10,6 +10,7 @@ import {
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { UNAVAILABLE_STATES } from "../../../data/entity";
|
||||
|
||||
@customElement("more-info-counter")
|
||||
class MoreInfoCounter extends LitElement {
|
||||
@@ -22,21 +23,29 @@ class MoreInfoCounter extends LitElement {
|
||||
return html``;
|
||||
}
|
||||
|
||||
const disabled = UNAVAILABLE_STATES.includes(this.stateObj!.state);
|
||||
|
||||
return html`
|
||||
<div class="actions">
|
||||
<mwc-button
|
||||
.action="${"increment"}"
|
||||
@click="${this._handleActionClick}"
|
||||
@click=${this._handleActionClick}
|
||||
.disabled=${disabled}
|
||||
>
|
||||
${this.hass!.localize("ui.card.counter.actions.increment")}
|
||||
</mwc-button>
|
||||
<mwc-button
|
||||
.action="${"decrement"}"
|
||||
@click="${this._handleActionClick}"
|
||||
@click=${this._handleActionClick}
|
||||
.disabled=${disabled}
|
||||
>
|
||||
${this.hass!.localize("ui.card.counter.actions.decrement")}
|
||||
</mwc-button>
|
||||
<mwc-button .action="${"reset"}" @click="${this._handleActionClick}">
|
||||
<mwc-button
|
||||
.action="${"reset"}"
|
||||
@click=${this._handleActionClick}
|
||||
.disabled=${disabled}
|
||||
>
|
||||
${this.hass!.localize("ui.card.counter.actions.reset")}
|
||||
</mwc-button>
|
||||
</div>
|
||||
@@ -53,8 +62,7 @@ class MoreInfoCounter extends LitElement {
|
||||
static get styles(): CSSResult {
|
||||
return css`
|
||||
.actions {
|
||||
margin: 0;
|
||||
padding-top: 20px;
|
||||
margin: 8px 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
|
@@ -75,7 +75,7 @@ class MoreInfoPerson extends LitElement {
|
||||
justify-content: space-between;
|
||||
}
|
||||
.actions {
|
||||
margin: 36px 0 8px 0;
|
||||
margin: 8px 0;
|
||||
text-align: right;
|
||||
}
|
||||
ha-map {
|
||||
|
@@ -80,6 +80,7 @@ class MoreInfoSun extends LitElement {
|
||||
}
|
||||
ha-relative-time {
|
||||
display: inline-block;
|
||||
white-space: nowrap;
|
||||
}
|
||||
ha-relative-time::first-letter {
|
||||
text-transform: lowercase;
|
||||
|
@@ -76,8 +76,7 @@ class MoreInfoTimer extends LitElement {
|
||||
static get styles(): CSSResult {
|
||||
return css`
|
||||
.actions {
|
||||
margin: 0;
|
||||
padding-top: 20px;
|
||||
margin: 8px 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
|
@@ -61,7 +61,7 @@ export class HaTabsSubpageDataTable extends LitElement {
|
||||
@property({ type: Boolean }) public hasFab = false;
|
||||
|
||||
/**
|
||||
* Add an extra rows at the bottom of the datatabel
|
||||
* Add an extra row at the bottom of the data table
|
||||
* @type {TemplateResult}
|
||||
*/
|
||||
@property({ attribute: false }) public appendRow?;
|
||||
|
@@ -15,12 +15,14 @@ import {
|
||||
LitElement,
|
||||
property,
|
||||
PropertyValues,
|
||||
query,
|
||||
} from "lit-element";
|
||||
import { dynamicElement } from "../../../../common/dom/dynamic-element-directive";
|
||||
import { fireEvent } from "../../../../common/dom/fire_event";
|
||||
import "../../../../components/ha-button-menu";
|
||||
import "../../../../components/ha-card";
|
||||
import "../../../../components/ha-svg-icon";
|
||||
import type { HaYamlEditor } from "../../../../components/ha-yaml-editor";
|
||||
import type { Action } from "../../../../data/script";
|
||||
import { showConfirmationDialog } from "../../../../dialogs/generic/show-dialog-box";
|
||||
import { haStyle } from "../../../../resources/styles";
|
||||
@@ -103,6 +105,8 @@ export default class HaAutomationActionRow extends LitElement {
|
||||
|
||||
@internalProperty() private _yamlMode = false;
|
||||
|
||||
@query("ha-yaml-editor") private _yamlEditor?: HaYamlEditor;
|
||||
|
||||
protected updated(changedProperties: PropertyValues) {
|
||||
if (!changedProperties.has("action")) {
|
||||
return;
|
||||
@@ -111,6 +115,10 @@ export default class HaAutomationActionRow extends LitElement {
|
||||
if (!this._uiModeAvailable && !this._yamlMode) {
|
||||
this._yamlMode = true;
|
||||
}
|
||||
|
||||
if (this._yamlMode && this._yamlEditor) {
|
||||
this._yamlEditor.setValue(this.action);
|
||||
}
|
||||
}
|
||||
|
||||
protected render() {
|
||||
@@ -187,7 +195,7 @@ export default class HaAutomationActionRow extends LitElement {
|
||||
<ul>
|
||||
${this._warnings.map((warning) => html`<li>${warning}</li>`)}
|
||||
</ul>
|
||||
You can still edit your config in yaml.
|
||||
You can still edit your config in YAML.
|
||||
</div>`
|
||||
: ""}
|
||||
${yamlMode
|
||||
|
@@ -19,12 +19,12 @@ import type { HaYamlEditor } from "../../../../../components/ha-yaml-editor";
|
||||
import { ServiceAction } from "../../../../../data/script";
|
||||
import type { PolymerChangedEvent } from "../../../../../polymer-types";
|
||||
import type { HomeAssistant } from "../../../../../types";
|
||||
import { EntityId } from "../../../../lovelace/common/structs/is-entity-id";
|
||||
import { EntityIdOrAll } from "../../../../lovelace/common/structs/is-entity-id";
|
||||
import { ActionElement, handleChangeEvent } from "../ha-automation-action-row";
|
||||
|
||||
const actionStruct = object({
|
||||
service: optional(string()),
|
||||
entity_id: optional(EntityId),
|
||||
entity_id: optional(EntityIdOrAll),
|
||||
data: optional(any()),
|
||||
});
|
||||
|
||||
|
@@ -165,7 +165,7 @@ export class HaBlueprintAutomationEditor extends LitElement {
|
||||
.selector=${value.selector}
|
||||
.key=${key}
|
||||
.value=${(this.config.use_blueprint.input &&
|
||||
this.config.use_blueprint.input[key]) ||
|
||||
this.config.use_blueprint.input[key]) ??
|
||||
value?.default}
|
||||
@value-changed=${this._inputChanged}
|
||||
></ha-selector>`
|
||||
|
@@ -395,9 +395,12 @@ export class HaAutomationEditor extends KeyboardShortcutMixin(LitElement) {
|
||||
return cleanConfig;
|
||||
}
|
||||
|
||||
private async _copyYaml() {
|
||||
private async _copyYaml(): Promise<void> {
|
||||
if (this._editor?.yaml) {
|
||||
copyToClipboard(this._editor.yaml);
|
||||
await copyToClipboard(this._editor.yaml);
|
||||
showToast(this, {
|
||||
message: this.hass.localize("ui.common.copied_clipboard"),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -92,7 +92,7 @@ class HaConfigCustomize extends LocalizeMixin(PolymerElement) {
|
||||
}
|
||||
|
||||
_computeTabs() {
|
||||
return configSections.general;
|
||||
return configSections.advanced;
|
||||
}
|
||||
|
||||
computeEntities(hass) {
|
||||
|
@@ -189,9 +189,7 @@ export class HaConfigDeviceDashboard extends LitElement {
|
||||
),
|
||||
model: device.model || "<unknown>",
|
||||
manufacturer: device.manufacturer || "<unknown>",
|
||||
area: device.area_id
|
||||
? areaLookup[device.area_id].name
|
||||
: this.hass.localize("ui.panel.config.devices.data_table.no_area"),
|
||||
area: device.area_id ? areaLookup[device.area_id].name : undefined,
|
||||
integration: device.config_entries.length
|
||||
? device.config_entries
|
||||
.filter((entId) => entId in entryLookup)
|
||||
|
@@ -197,7 +197,7 @@ class SystemHealthCard extends LitElement {
|
||||
});
|
||||
}
|
||||
|
||||
private _copyInfo(ev: CustomEvent<ActionDetail>): void {
|
||||
private async _copyInfo(ev: CustomEvent<ActionDetail>): Promise<void> {
|
||||
const github = ev.detail.index === 1;
|
||||
let haContent: string | undefined;
|
||||
const domainParts: string[] = [];
|
||||
@@ -250,13 +250,15 @@ class SystemHealthCard extends LitElement {
|
||||
}
|
||||
}
|
||||
|
||||
copyToClipboard(
|
||||
await copyToClipboard(
|
||||
`${github ? "## " : ""}System Health\n${haContent}\n\n${domainParts.join(
|
||||
"\n\n"
|
||||
)}`
|
||||
);
|
||||
|
||||
showToast(this, { message: this.hass.localize("ui.common.copied") });
|
||||
showToast(this, {
|
||||
message: this.hass.localize("ui.common.copied_clipboard"),
|
||||
});
|
||||
}
|
||||
|
||||
static get styles(): CSSResult {
|
||||
|
@@ -141,11 +141,15 @@ class OZWNodeDashboard extends LitElement {
|
||||
${this._metadata.metadata.ResetHelp}
|
||||
</div>
|
||||
</ha-card>
|
||||
<ha-card class="content" header="WakeUp">
|
||||
<div class="card-content">
|
||||
${this._metadata.metadata.WakeupHelp}
|
||||
</div>
|
||||
</ha-card>
|
||||
${this._metadata.metadata.WakeupHelp
|
||||
? html`
|
||||
<ha-card class="content" header="WakeUp">
|
||||
<div class="card-content">
|
||||
${this._metadata.metadata.WakeupHelp}
|
||||
</div>
|
||||
</ha-card>
|
||||
`
|
||||
: ``}
|
||||
`
|
||||
: ``}
|
||||
`
|
||||
@@ -199,6 +203,10 @@ class OZWNodeDashboard extends LitElement {
|
||||
margin-top: 24px;
|
||||
}
|
||||
|
||||
.content:last-child {
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.sectionHeader {
|
||||
position: relative;
|
||||
padding-right: 40px;
|
||||
|
@@ -49,19 +49,17 @@ class ZHADevicePairingStatusCard extends LitElement {
|
||||
class="discovered ${classMap({
|
||||
initialized: this.device.pairing_status === INITIALIZED,
|
||||
})}"
|
||||
><div
|
||||
class="header"
|
||||
>
|
||||
<h1>
|
||||
><div class="header">
|
||||
<h4>
|
||||
${this.hass!.localize(
|
||||
`ui.panel.config.zha.device_pairing_card.${this.device.pairing_status}`
|
||||
)}
|
||||
</h1>
|
||||
<h4>
|
||||
</h4>
|
||||
<h1>
|
||||
${this.hass!.localize(
|
||||
`ui.panel.config.zha.device_pairing_card.${this.device.pairing_status}_status_text`
|
||||
)}
|
||||
</h4>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
${[INTERVIEW_COMPLETE, CONFIGURED].includes(
|
||||
|
@@ -15,6 +15,12 @@ import { fetchDevices, ZHADevice } from "../../../../../data/zha";
|
||||
import "../../../../../layouts/hass-subpage";
|
||||
import type { HomeAssistant } from "../../../../../types";
|
||||
import { Network, Edge, Node, EdgeOptions } from "vis-network";
|
||||
import "../../../../../common/search/search-input";
|
||||
import "../../../../../components/ha-button-menu";
|
||||
import "../../../../../components/device/ha-device-picker";
|
||||
import "../../../../../components/ha-svg-icon";
|
||||
import { formatAsPaddedHex } from "./functions";
|
||||
import { PolymerChangedEvent } from "../../../../../polymer-types";
|
||||
|
||||
@customElement("zha-network-visualization-page")
|
||||
export class ZHANetworkVisualizationPage extends LitElement {
|
||||
@@ -28,9 +34,21 @@ export class ZHANetworkVisualizationPage extends LitElement {
|
||||
@internalProperty()
|
||||
private _devices: Map<string, ZHADevice> = new Map();
|
||||
|
||||
@internalProperty()
|
||||
private _devicesByDeviceId: Map<string, ZHADevice> = new Map();
|
||||
|
||||
@internalProperty()
|
||||
private _nodes: Node[] = [];
|
||||
|
||||
@internalProperty()
|
||||
private _network?: Network;
|
||||
|
||||
@internalProperty()
|
||||
private _filter?: string;
|
||||
|
||||
@internalProperty()
|
||||
private _zoomedDeviceId?: string;
|
||||
|
||||
protected firstUpdated(changedProperties: PropertyValues): void {
|
||||
super.firstUpdated(changedProperties);
|
||||
if (this.hass) {
|
||||
@@ -91,6 +109,27 @@ export class ZHANetworkVisualizationPage extends LitElement {
|
||||
"ui.panel.config.zha.visualization.header"
|
||||
)}
|
||||
>
|
||||
<div class="table-header">
|
||||
<search-input
|
||||
no-label-float
|
||||
no-underline
|
||||
@value-changed=${this._handleSearchChange}
|
||||
.filter=${this._filter}
|
||||
.label=${this.hass.localize(
|
||||
"ui.panel.config.zha.visualization.highlight_label"
|
||||
)}
|
||||
>
|
||||
</search-input>
|
||||
<ha-device-picker
|
||||
.hass=${this.hass}
|
||||
.value=${this._zoomedDeviceId}
|
||||
.label=${this.hass.localize(
|
||||
"ui.panel.config.zha.visualization.zoom_label"
|
||||
)}
|
||||
.includeDomains="['zha']"
|
||||
@value-changed=${this._zoomToDevice}
|
||||
></ha-device-picker>
|
||||
</div>
|
||||
<div id="visualization"></div>
|
||||
</hass-subpage>
|
||||
`;
|
||||
@@ -101,15 +140,18 @@ export class ZHANetworkVisualizationPage extends LitElement {
|
||||
this._devices = new Map(
|
||||
devices.map((device: ZHADevice) => [device.ieee, device])
|
||||
);
|
||||
this._devicesByDeviceId = new Map(
|
||||
devices.map((device: ZHADevice) => [device.device_reg_id, device])
|
||||
);
|
||||
this._updateDevices(devices);
|
||||
}
|
||||
|
||||
private _updateDevices(devices: ZHADevice[]) {
|
||||
const nodes: Node[] = [];
|
||||
this._nodes = [];
|
||||
const edges: Edge[] = [];
|
||||
|
||||
devices.forEach((device) => {
|
||||
nodes.push({
|
||||
this._nodes.push({
|
||||
id: device.ieee,
|
||||
label: this._buildLabel(device),
|
||||
shape: this._getShape(device),
|
||||
@@ -137,7 +179,7 @@ export class ZHANetworkVisualizationPage extends LitElement {
|
||||
}
|
||||
});
|
||||
|
||||
this._network?.setData({ nodes: nodes, edges: edges });
|
||||
this._network?.setData({ nodes: this._nodes, edges: edges });
|
||||
}
|
||||
|
||||
private _getLQI(lqi: number): EdgeOptions["color"] {
|
||||
@@ -181,7 +223,7 @@ export class ZHANetworkVisualizationPage extends LitElement {
|
||||
label += `<b>IEEE: </b>${device.ieee}`;
|
||||
label += `\n<b>Device Type: </b>${device.device_type.replace("_", " ")}`;
|
||||
if (device.nwk != null) {
|
||||
label += `\n<b>NWK: </b>${device.nwk}`;
|
||||
label += `\n<b>NWK: </b>${formatAsPaddedHex(device.nwk)}`;
|
||||
}
|
||||
if (device.manufacturer != null && device.model != null) {
|
||||
label += `\n<b>Device: </b>${device.manufacturer} ${device.model}`;
|
||||
@@ -194,6 +236,56 @@ export class ZHANetworkVisualizationPage extends LitElement {
|
||||
return label;
|
||||
}
|
||||
|
||||
private _handleSearchChange(ev: CustomEvent) {
|
||||
this._filter = ev.detail.value;
|
||||
const filterText = this._filter!.toLowerCase();
|
||||
if (!this._network) {
|
||||
return;
|
||||
}
|
||||
if (this._filter) {
|
||||
const filteredNodeIds: (string | number)[] = [];
|
||||
this._nodes.forEach((node) => {
|
||||
if (node.label && node.label.toLowerCase().includes(filterText)) {
|
||||
filteredNodeIds.push(node.id!);
|
||||
}
|
||||
});
|
||||
this._zoomedDeviceId = "";
|
||||
this._zoomOut();
|
||||
this._network.selectNodes(filteredNodeIds, true);
|
||||
} else {
|
||||
this._network.unselectAll();
|
||||
}
|
||||
}
|
||||
|
||||
private _zoomToDevice(event: PolymerChangedEvent<string>) {
|
||||
event.stopPropagation();
|
||||
this._zoomedDeviceId = event.detail.value;
|
||||
if (!this._network) {
|
||||
return;
|
||||
}
|
||||
this._filter = "";
|
||||
if (!this._zoomedDeviceId) {
|
||||
this._zoomOut();
|
||||
} else {
|
||||
const device: ZHADevice | undefined = this._devicesByDeviceId.get(
|
||||
this._zoomedDeviceId
|
||||
);
|
||||
if (device) {
|
||||
this._network.fit({
|
||||
nodes: [device.ieee],
|
||||
animation: { duration: 500, easingFunction: "easeInQuad" },
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private _zoomOut() {
|
||||
this._network!.fit({
|
||||
nodes: [],
|
||||
animation: { duration: 500, easingFunction: "easeOutQuad" },
|
||||
});
|
||||
}
|
||||
|
||||
static get styles(): CSSResult[] {
|
||||
return [
|
||||
css`
|
||||
@@ -208,6 +300,30 @@ export class ZHANetworkVisualizationPage extends LitElement {
|
||||
line-height: var(--paper-font-display1_-_line-height);
|
||||
opacity: var(--dark-primary-opacity);
|
||||
}
|
||||
.table-header {
|
||||
border-bottom: 1px solid --divider-color;
|
||||
padding: 0 16px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: var(--header-height);
|
||||
}
|
||||
.search-toolbar {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
color: var(--secondary-text-color);
|
||||
padding: 0 16px;
|
||||
}
|
||||
search-input {
|
||||
position: relative;
|
||||
top: 2px;
|
||||
flex: 1;
|
||||
}
|
||||
search-input.header {
|
||||
left: -8px;
|
||||
}
|
||||
ha-device-picker {
|
||||
flex: 1;
|
||||
}
|
||||
`,
|
||||
];
|
||||
}
|
||||
|
@@ -2,7 +2,6 @@ import "../../../components/ha-header-bar";
|
||||
import "@material/mwc-icon-button/mwc-icon-button";
|
||||
import { mdiContentCopy, mdiClose } from "@mdi/js";
|
||||
import "@polymer/paper-tooltip/paper-tooltip";
|
||||
import type { PaperTooltipElement } from "@polymer/paper-tooltip/paper-tooltip";
|
||||
import {
|
||||
css,
|
||||
CSSResult,
|
||||
@@ -10,10 +9,10 @@ import {
|
||||
internalProperty,
|
||||
LitElement,
|
||||
property,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { fireEvent } from "../../../common/dom/fire_event";
|
||||
import { copyToClipboard } from "../../../common/util/copy-clipboard";
|
||||
import "../../../components/ha-dialog";
|
||||
import "../../../components/ha-svg-icon";
|
||||
import {
|
||||
@@ -27,6 +26,7 @@ import { haStyleDialog } from "../../../resources/styles";
|
||||
import type { HomeAssistant } from "../../../types";
|
||||
import type { SystemLogDetailDialogParams } from "./show-dialog-system-log-detail";
|
||||
import { formatSystemLogTime } from "./util";
|
||||
import { showToast } from "../../../util/toast";
|
||||
|
||||
class DialogSystemLogDetail extends LitElement {
|
||||
@property({ attribute: false }) public hass!: HomeAssistant;
|
||||
@@ -35,8 +35,6 @@ class DialogSystemLogDetail extends LitElement {
|
||||
|
||||
@internalProperty() private _manifest?: IntegrationManifest;
|
||||
|
||||
@query("paper-tooltip") private _toolTip?: PaperTooltipElement;
|
||||
|
||||
public async showDialog(params: SystemLogDetailDialogParams): Promise<void> {
|
||||
this._params = params;
|
||||
this._manifest = undefined;
|
||||
@@ -83,15 +81,6 @@ class DialogSystemLogDetail extends LitElement {
|
||||
<mwc-icon-button id="copy" @click=${this._copyLog} slot="actionItems">
|
||||
<ha-svg-icon .path=${mdiContentCopy}></ha-svg-icon>
|
||||
</mwc-icon-button>
|
||||
<paper-tooltip
|
||||
slot="actionItems"
|
||||
manual-mode
|
||||
for="copy"
|
||||
position="left"
|
||||
animation-delay="0"
|
||||
offset="4"
|
||||
>${this.hass.localize("ui.common.copied")}</paper-tooltip
|
||||
>
|
||||
</ha-header-bar>
|
||||
<div class="contents">
|
||||
<p>
|
||||
@@ -162,23 +151,15 @@ class DialogSystemLogDetail extends LitElement {
|
||||
}
|
||||
}
|
||||
|
||||
private _copyLog(): void {
|
||||
private async _copyLog(): Promise<void> {
|
||||
const copyElement = this.shadowRoot?.querySelector(
|
||||
".contents"
|
||||
) 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);
|
||||
await copyToClipboard(copyElement.innerText);
|
||||
showToast(this, {
|
||||
message: this.hass.localize("ui.common.copied_clipboard"),
|
||||
});
|
||||
}
|
||||
|
||||
static get styles(): CSSResult[] {
|
||||
|
@@ -544,9 +544,12 @@ export class HaScriptEditor extends KeyboardShortcutMixin(LitElement) {
|
||||
return this._config;
|
||||
}
|
||||
|
||||
private async _copyYaml() {
|
||||
private async _copyYaml(): Promise<void> {
|
||||
if (this._editor?.yaml) {
|
||||
copyToClipboard(this._editor.yaml);
|
||||
await copyToClipboard(this._editor.yaml);
|
||||
showToast(this, {
|
||||
message: this.hass.localize("ui.common.copied_clipboard"),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -119,27 +119,21 @@ class HaPanelHistory extends LitElement {
|
||||
todayEnd.setDate(todayEnd.getDate() + 1);
|
||||
todayEnd.setMilliseconds(todayEnd.getMilliseconds() - 1);
|
||||
|
||||
const todayCopy = new Date(today);
|
||||
|
||||
const yesterday = new Date(todayCopy.setDate(today.getDate() - 1));
|
||||
const yesterdayEnd = new Date(yesterday);
|
||||
yesterdayEnd.setDate(yesterdayEnd.getDate() + 1);
|
||||
const yesterday = new Date(today);
|
||||
yesterday.setDate(today.getDate() - 1);
|
||||
const yesterdayEnd = new Date(today);
|
||||
yesterdayEnd.setMilliseconds(yesterdayEnd.getMilliseconds() - 1);
|
||||
|
||||
const thisWeekStart = new Date(
|
||||
todayCopy.setDate(today.getDate() - today.getDay())
|
||||
);
|
||||
const thisWeekEnd = new Date(
|
||||
todayCopy.setDate(thisWeekStart.getDate() + 7)
|
||||
);
|
||||
const thisWeekStart = new Date(today);
|
||||
thisWeekStart.setDate(today.getDate() - today.getDay());
|
||||
const thisWeekEnd = new Date(thisWeekStart);
|
||||
thisWeekEnd.setDate(thisWeekStart.getDate() + 7);
|
||||
thisWeekEnd.setMilliseconds(thisWeekEnd.getMilliseconds() - 1);
|
||||
|
||||
const lastWeekStart = new Date(
|
||||
todayCopy.setDate(today.getDate() - today.getDay() - 7)
|
||||
);
|
||||
const lastWeekEnd = new Date(
|
||||
todayCopy.setDate(lastWeekStart.getDate() + 7)
|
||||
);
|
||||
const lastWeekStart = new Date(today);
|
||||
lastWeekStart.setDate(today.getDate() - today.getDay() - 7);
|
||||
const lastWeekEnd = new Date(lastWeekStart);
|
||||
lastWeekEnd.setDate(lastWeekStart.getDate() + 7);
|
||||
lastWeekEnd.setMilliseconds(lastWeekEnd.getMilliseconds() - 1);
|
||||
|
||||
this._ranges = {
|
||||
|
@@ -24,7 +24,7 @@ class HaPanelIframe extends PolymerElement {
|
||||
|
||||
<iframe
|
||||
src="[[panel.config.url]]"
|
||||
sandbox="allow-forms allow-popups allow-pointer-lock allow-same-origin allow-scripts"
|
||||
sandbox="allow-forms allow-popups allow-pointer-lock allow-same-origin allow-scripts allow-modals"
|
||||
allowfullscreen="true"
|
||||
webkitallowfullscreen="true"
|
||||
mozallowfullscreen="true"
|
||||
|
@@ -147,27 +147,21 @@ export class HaPanelLogbook extends LitElement {
|
||||
todayEnd.setDate(todayEnd.getDate() + 1);
|
||||
todayEnd.setMilliseconds(todayEnd.getMilliseconds() - 1);
|
||||
|
||||
const todayCopy = new Date(today);
|
||||
|
||||
const yesterday = new Date(todayCopy.setDate(today.getDate() - 1));
|
||||
const yesterdayEnd = new Date(yesterday);
|
||||
yesterdayEnd.setDate(yesterdayEnd.getDate() + 1);
|
||||
const yesterday = new Date(today);
|
||||
yesterday.setDate(today.getDate() - 1);
|
||||
const yesterdayEnd = new Date(today);
|
||||
yesterdayEnd.setMilliseconds(yesterdayEnd.getMilliseconds() - 1);
|
||||
|
||||
const thisWeekStart = new Date(
|
||||
todayCopy.setDate(today.getDate() - today.getDay())
|
||||
);
|
||||
const thisWeekEnd = new Date(
|
||||
todayCopy.setDate(thisWeekStart.getDate() + 7)
|
||||
);
|
||||
const thisWeekStart = new Date(today);
|
||||
thisWeekStart.setDate(today.getDate() - today.getDay());
|
||||
const thisWeekEnd = new Date(thisWeekStart);
|
||||
thisWeekEnd.setDate(thisWeekStart.getDate() + 7);
|
||||
thisWeekEnd.setMilliseconds(thisWeekEnd.getMilliseconds() - 1);
|
||||
|
||||
const lastWeekStart = new Date(
|
||||
todayCopy.setDate(today.getDate() - today.getDay() - 7)
|
||||
);
|
||||
const lastWeekEnd = new Date(
|
||||
todayCopy.setDate(lastWeekStart.getDate() + 7)
|
||||
);
|
||||
const lastWeekStart = new Date(today);
|
||||
lastWeekStart.setDate(today.getDate() - today.getDay() - 7);
|
||||
const lastWeekEnd = new Date(lastWeekStart);
|
||||
lastWeekEnd.setDate(lastWeekStart.getDate() + 7);
|
||||
lastWeekEnd.setMilliseconds(lastWeekEnd.getMilliseconds() - 1);
|
||||
|
||||
this._ranges = {
|
||||
|
@@ -122,12 +122,14 @@ class HuiGaugeCard extends LitElement implements LovelaceCard {
|
||||
`;
|
||||
}
|
||||
|
||||
// Use `stateObj.state` as value to keep formatting (e.g trailing zeros)
|
||||
// for consistent value display across gauge, entity, entity-row, etc.
|
||||
return html`
|
||||
<ha-card @click=${this._handleClick} tabindex="0">
|
||||
<ha-gauge
|
||||
.min=${this._config.min!}
|
||||
.max=${this._config.max!}
|
||||
.value=${state}
|
||||
.value=${stateObj.state}
|
||||
.language=${this.hass!.language}
|
||||
.label=${this._config!.unit ||
|
||||
this.hass?.states[this._config!.entity].attributes
|
||||
|
@@ -11,9 +11,12 @@ import {
|
||||
property,
|
||||
PropertyValues,
|
||||
TemplateResult,
|
||||
query,
|
||||
} from "lit-element";
|
||||
import { classMap } from "lit-html/directives/class-map";
|
||||
import { repeat } from "lit-html/directives/repeat";
|
||||
import { guard } from "lit-html/directives/guard";
|
||||
import { mdiDrag, mdiSort, mdiPlus, mdiNotificationClearAll } from "@mdi/js";
|
||||
import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element";
|
||||
import "../../../components/ha-card";
|
||||
import "../../../components/ha-icon";
|
||||
@@ -23,12 +26,15 @@ import {
|
||||
fetchItems,
|
||||
ShoppingListItem,
|
||||
updateItem,
|
||||
reorderItems,
|
||||
} from "../../../data/shopping-list";
|
||||
import { SubscribeMixin } from "../../../mixins/subscribe-mixin";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { LovelaceCard, LovelaceCardEditor } from "../types";
|
||||
import { SensorCardConfig, ShoppingListCardConfig } from "./types";
|
||||
|
||||
let Sortable;
|
||||
|
||||
@customElement("hui-shopping-list-card")
|
||||
class HuiShoppingListCard extends SubscribeMixin(LitElement)
|
||||
implements LovelaceCard {
|
||||
@@ -49,6 +55,14 @@ class HuiShoppingListCard extends SubscribeMixin(LitElement)
|
||||
|
||||
@internalProperty() private _checkedItems?: ShoppingListItem[];
|
||||
|
||||
@internalProperty() private _reordering = false;
|
||||
|
||||
@internalProperty() private _renderEmptySortable = false;
|
||||
|
||||
private _sortable?;
|
||||
|
||||
@query("#sortable") private _sortableEl?: HTMLElement;
|
||||
|
||||
public getCardSize(): number {
|
||||
return (this._config ? (this._config.title ? 2 : 0) : 0) + 3;
|
||||
}
|
||||
@@ -101,15 +115,15 @@ class HuiShoppingListCard extends SubscribeMixin(LitElement)
|
||||
})}
|
||||
>
|
||||
<div class="addRow">
|
||||
<ha-icon
|
||||
<ha-svg-icon
|
||||
class="addButton"
|
||||
icon="hass:plus"
|
||||
.path=${mdiPlus}
|
||||
.title=${this.hass!.localize(
|
||||
"ui.panel.lovelace.cards.shopping-list.add_item"
|
||||
)}
|
||||
@click=${this._addItem}
|
||||
>
|
||||
</ha-icon>
|
||||
</ha-svg-icon>
|
||||
<paper-input
|
||||
no-label-float
|
||||
class="addBox"
|
||||
@@ -118,28 +132,27 @@ class HuiShoppingListCard extends SubscribeMixin(LitElement)
|
||||
)}
|
||||
@keydown=${this._addKeyPress}
|
||||
></paper-input>
|
||||
<ha-svg-icon
|
||||
class="reorderButton"
|
||||
.path=${mdiSort}
|
||||
.title=${this.hass!.localize(
|
||||
"ui.panel.lovelace.cards.shopping-list.reorder_items"
|
||||
)}
|
||||
@click=${this._toggleReorder}
|
||||
>
|
||||
</ha-svg-icon>
|
||||
</div>
|
||||
${repeat(
|
||||
this._uncheckedItems!,
|
||||
(item) => item.id,
|
||||
(item) =>
|
||||
html`
|
||||
<div class="editRow">
|
||||
<paper-checkbox
|
||||
tabindex="0"
|
||||
?checked=${item.complete}
|
||||
.itemId=${item.id}
|
||||
@click=${this._completeItem}
|
||||
></paper-checkbox>
|
||||
<paper-input
|
||||
no-label-float
|
||||
.value=${item.name}
|
||||
.itemId=${item.id}
|
||||
@change=${this._saveEdit}
|
||||
></paper-input>
|
||||
${this._reordering
|
||||
? html`
|
||||
<div id="sortable">
|
||||
${guard([this._uncheckedItems, this._renderEmptySortable], () =>
|
||||
this._renderEmptySortable
|
||||
? ""
|
||||
: this._renderItems(this._uncheckedItems!)
|
||||
)}
|
||||
</div>
|
||||
`
|
||||
)}
|
||||
: this._renderItems(this._uncheckedItems!)}
|
||||
${this._checkedItems!.length > 0
|
||||
? html`
|
||||
<div class="divider"></div>
|
||||
@@ -149,16 +162,16 @@ class HuiShoppingListCard extends SubscribeMixin(LitElement)
|
||||
"ui.panel.lovelace.cards.shopping-list.checked_items"
|
||||
)}
|
||||
</span>
|
||||
<ha-icon
|
||||
<ha-svg-icon
|
||||
class="clearall"
|
||||
tabindex="0"
|
||||
icon="hass:notification-clear-all"
|
||||
.path=${mdiNotificationClearAll}
|
||||
.title=${this.hass!.localize(
|
||||
"ui.panel.lovelace.cards.shopping-list.clear_items"
|
||||
)}
|
||||
@click=${this._clearItems}
|
||||
>
|
||||
</ha-icon>
|
||||
</ha-svg-icon>
|
||||
</div>
|
||||
${repeat(
|
||||
this._checkedItems!,
|
||||
@@ -187,6 +200,44 @@ class HuiShoppingListCard extends SubscribeMixin(LitElement)
|
||||
`;
|
||||
}
|
||||
|
||||
private _renderItems(items: ShoppingListItem[]) {
|
||||
return html`
|
||||
${repeat(
|
||||
items,
|
||||
(item) => item.id,
|
||||
(item) =>
|
||||
html`
|
||||
<div class="editRow" item-id=${item.id}>
|
||||
<paper-checkbox
|
||||
tabindex="0"
|
||||
?checked=${item.complete}
|
||||
.itemId=${item.id}
|
||||
@click=${this._completeItem}
|
||||
></paper-checkbox>
|
||||
<paper-input
|
||||
no-label-float
|
||||
.value=${item.name}
|
||||
.itemId=${item.id}
|
||||
@change=${this._saveEdit}
|
||||
></paper-input>
|
||||
${this._reordering
|
||||
? html`
|
||||
<ha-svg-icon
|
||||
.title=${this.hass!.localize(
|
||||
"ui.panel.lovelace.cards.shopping-list.drag_and_drop"
|
||||
)}
|
||||
class="reorderButton"
|
||||
.path=${mdiDrag}
|
||||
>
|
||||
</ha-svg-icon>
|
||||
`
|
||||
: ""}
|
||||
</div>
|
||||
`
|
||||
)}
|
||||
`;
|
||||
}
|
||||
|
||||
private async _fetchData(): Promise<void> {
|
||||
if (!this.hass) {
|
||||
return;
|
||||
@@ -248,6 +299,54 @@ class HuiShoppingListCard extends SubscribeMixin(LitElement)
|
||||
}
|
||||
}
|
||||
|
||||
private async _toggleReorder() {
|
||||
if (!Sortable) {
|
||||
const sortableImport = await import(
|
||||
"sortablejs/modular/sortable.core.esm"
|
||||
);
|
||||
Sortable = sortableImport.Sortable;
|
||||
}
|
||||
this._reordering = !this._reordering;
|
||||
await this.updateComplete;
|
||||
if (this._reordering) {
|
||||
this._createSortable();
|
||||
} else {
|
||||
this._sortable?.destroy();
|
||||
this._sortable = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
private _createSortable() {
|
||||
const sortableEl = this._sortableEl;
|
||||
this._sortable = new Sortable(sortableEl, {
|
||||
animation: 150,
|
||||
fallbackClass: "sortable-fallback",
|
||||
dataIdAttr: "item-id",
|
||||
handle: "ha-svg-icon",
|
||||
onEnd: async (evt) => {
|
||||
// Since this is `onEnd` event, it's possible that
|
||||
// an item wa dragged away and was put back to its original position.
|
||||
if (evt.oldIndex !== evt.newIndex) {
|
||||
reorderItems(this.hass!, this._sortable.toArray()).catch(() =>
|
||||
this._fetchData()
|
||||
);
|
||||
// Move the shopping list item in memory.
|
||||
this._uncheckedItems!.splice(
|
||||
evt.newIndex,
|
||||
0,
|
||||
this._uncheckedItems!.splice(evt.oldIndex, 1)[0]
|
||||
);
|
||||
}
|
||||
this._renderEmptySortable = true;
|
||||
await this.updateComplete;
|
||||
while (sortableEl?.lastElementChild) {
|
||||
sortableEl.removeChild(sortableEl.lastElementChild);
|
||||
}
|
||||
this._renderEmptySortable = false;
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
static get styles(): CSSResult {
|
||||
return css`
|
||||
ha-card {
|
||||
@@ -278,6 +377,11 @@ class HuiShoppingListCard extends SubscribeMixin(LitElement)
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.reorderButton {
|
||||
padding-left: 16px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
paper-checkbox {
|
||||
padding-left: 4px;
|
||||
padding-right: 20px;
|
||||
|
@@ -4,6 +4,7 @@ import { forwardHaptic } from "../../../data/haptics";
|
||||
import { ActionConfig } from "../../../data/lovelace";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { toggleEntity } from "./entity/toggle-entity";
|
||||
import { showConfirmationDialog } from "../../../dialogs/generic/show-dialog-box";
|
||||
|
||||
declare global {
|
||||
interface HASSDomEvents {
|
||||
@@ -11,7 +12,7 @@ declare global {
|
||||
}
|
||||
}
|
||||
|
||||
export const handleAction = (
|
||||
export const handleAction = async (
|
||||
node: HTMLElement,
|
||||
hass: HomeAssistant,
|
||||
config: {
|
||||
@@ -22,7 +23,7 @@ export const handleAction = (
|
||||
double_tap_action?: ActionConfig;
|
||||
},
|
||||
action: string
|
||||
): void => {
|
||||
): Promise<void> => {
|
||||
let actionConfig: ActionConfig | undefined;
|
||||
|
||||
if (action === "double_tap" && config.double_tap_action) {
|
||||
@@ -39,64 +40,78 @@ export const handleAction = (
|
||||
};
|
||||
}
|
||||
|
||||
if (
|
||||
actionConfig.confirmation &&
|
||||
(!actionConfig.confirmation.exemptions ||
|
||||
!actionConfig.confirmation.exemptions.some(
|
||||
(e) => e.user === hass!.user!.id
|
||||
))
|
||||
) {
|
||||
forwardHaptic("warning");
|
||||
const actionConfigs =
|
||||
actionConfig.action === "multiple"
|
||||
? Array.isArray(actionConfig.actions)
|
||||
? actionConfig.actions
|
||||
: [actionConfig.actions]
|
||||
: [actionConfig];
|
||||
|
||||
for await (actionConfig of actionConfigs) {
|
||||
if (
|
||||
!confirm(
|
||||
actionConfig.confirmation.text ||
|
||||
`Are you sure you want to ${actionConfig.action}?`
|
||||
)
|
||||
actionConfig.confirmation &&
|
||||
(!actionConfig.confirmation.exemptions ||
|
||||
!actionConfig.confirmation.exemptions.some(
|
||||
(e) => e.user === hass!.user!.id
|
||||
))
|
||||
) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
forwardHaptic("warning");
|
||||
|
||||
switch (actionConfig.action) {
|
||||
case "more-info": {
|
||||
if (config.entity || config.camera_image) {
|
||||
fireEvent(node, "hass-more-info", {
|
||||
entityId: config.entity ? config.entity : config.camera_image!,
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "navigate":
|
||||
if (actionConfig.navigation_path) {
|
||||
navigate(node, actionConfig.navigation_path);
|
||||
}
|
||||
break;
|
||||
case "url": {
|
||||
if (actionConfig.url_path) {
|
||||
window.open(actionConfig.url_path);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "toggle": {
|
||||
if (config.entity) {
|
||||
toggleEntity(hass, config.entity!);
|
||||
forwardHaptic("light");
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "call-service": {
|
||||
if (!actionConfig.service) {
|
||||
forwardHaptic("failure");
|
||||
if (
|
||||
!(await showConfirmationDialog(node, {
|
||||
text:
|
||||
actionConfig.confirmation.text ||
|
||||
hass.localize(
|
||||
"ui.panel.lovelace.cards.action_confirmation",
|
||||
"action",
|
||||
actionConfig.action
|
||||
),
|
||||
}))
|
||||
) {
|
||||
return;
|
||||
}
|
||||
const [domain, service] = actionConfig.service.split(".", 2);
|
||||
hass.callService(domain, service, actionConfig.service_data);
|
||||
forwardHaptic("light");
|
||||
break;
|
||||
}
|
||||
case "fire-dom-event": {
|
||||
fireEvent(node, "ll-custom", actionConfig);
|
||||
|
||||
switch (actionConfig.action) {
|
||||
case "more-info": {
|
||||
if (config.entity || config.camera_image) {
|
||||
fireEvent(node, "hass-more-info", {
|
||||
entityId: config.entity ? config.entity : config.camera_image!,
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "navigate":
|
||||
if (actionConfig.navigation_path) {
|
||||
navigate(node, actionConfig.navigation_path);
|
||||
}
|
||||
break;
|
||||
case "url": {
|
||||
if (actionConfig.url_path) {
|
||||
window.open(actionConfig.url_path);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "toggle": {
|
||||
if (config.entity) {
|
||||
toggleEntity(hass, config.entity!);
|
||||
forwardHaptic("light");
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "call-service": {
|
||||
if (!actionConfig.service) {
|
||||
forwardHaptic("failure");
|
||||
return;
|
||||
}
|
||||
const [domain, service] = actionConfig.service.split(".", 2);
|
||||
hass.callService(domain, service, actionConfig.service_data);
|
||||
forwardHaptic("light");
|
||||
break;
|
||||
}
|
||||
case "fire-dom-event": {
|
||||
fireEvent(node, "ll-custom", actionConfig);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@@ -8,7 +8,7 @@ export const handleStructError = (err: Error): string[] => {
|
||||
for (const failure of err.failures()) {
|
||||
if (failure.type === "never") {
|
||||
errors.push(
|
||||
`Key "${failure.path[0]}" is not supported by the UI editor.`
|
||||
`Key "${failure.path.join(".")}" is not supported by the UI editor.`
|
||||
);
|
||||
} else {
|
||||
errors.push(
|
||||
|
@@ -7,7 +7,7 @@ const isEntityId = (value: unknown, context: StructContext): StructResult => {
|
||||
if (!value.includes(".")) {
|
||||
return [
|
||||
context.fail({
|
||||
type: "entity id should be in the format 'domain.entity'",
|
||||
type: "Entity ID should be in the format 'domain.entity'",
|
||||
}),
|
||||
];
|
||||
}
|
||||
@@ -15,3 +15,16 @@ const isEntityId = (value: unknown, context: StructContext): StructResult => {
|
||||
};
|
||||
|
||||
export const EntityId = struct("entity-id", isEntityId);
|
||||
|
||||
const isEntityIdOrAll = (
|
||||
value: unknown,
|
||||
context: StructContext
|
||||
): StructResult => {
|
||||
if (typeof value === "string" && value === "all") {
|
||||
return true;
|
||||
}
|
||||
|
||||
return isEntityId(value, context);
|
||||
};
|
||||
|
||||
export const EntityIdOrAll = struct("entity-id-all", isEntityIdOrAll);
|
||||
|
@@ -130,6 +130,15 @@ export class HuiActionEditor extends LitElement {
|
||||
</b>
|
||||
`
|
||||
: ""}
|
||||
${this.config?.action === "multiple"
|
||||
? html`
|
||||
<b>
|
||||
${this.hass!.localize(
|
||||
"ui.panel.lovelace.editor.action-editor.editor_multiple_actions"
|
||||
)}
|
||||
</b>
|
||||
`
|
||||
: ""}
|
||||
`;
|
||||
}
|
||||
|
||||
|
@@ -164,7 +164,8 @@ class HuiGenericEntityRow extends LitElement {
|
||||
}
|
||||
.info {
|
||||
margin-left: 16px;
|
||||
flex: 1 0 60px;
|
||||
margin-right: 8px;
|
||||
flex: 1 0 30%;
|
||||
}
|
||||
.info,
|
||||
.info > * {
|
||||
@@ -181,7 +182,6 @@ class HuiGenericEntityRow extends LitElement {
|
||||
}
|
||||
.secondary,
|
||||
ha-relative-time {
|
||||
display: block;
|
||||
color: var(--secondary-text-color);
|
||||
}
|
||||
state-badge {
|
||||
|
@@ -57,7 +57,9 @@ class HuiTimestampDisplay extends LitElement {
|
||||
}
|
||||
|
||||
if (isNaN(this.ts.getTime())) {
|
||||
return html` Invalid date `;
|
||||
return html`${this.hass.localize(
|
||||
"ui.panel.lovelace.components.timestamp-display.invalid"
|
||||
)}`;
|
||||
}
|
||||
|
||||
const format = this._format;
|
||||
@@ -68,7 +70,9 @@ class HuiTimestampDisplay extends LitElement {
|
||||
if (format in FORMATS) {
|
||||
return html` ${FORMATS[format](this.ts, this.hass.language)} `;
|
||||
}
|
||||
return html` Invalid format `;
|
||||
return html`${this.hass.localize(
|
||||
"ui.panel.lovelace.components.timestamp-display.invalid_format"
|
||||
)}`;
|
||||
}
|
||||
|
||||
protected updated(changedProperties: PropertyValues): void {
|
||||
|
@@ -71,7 +71,7 @@ const DOMAIN_TO_ELEMENT_TYPE = {
|
||||
switch: "toggle",
|
||||
vacuum: "toggle",
|
||||
// Temporary. Once climate is rewritten,
|
||||
// water heater should get it's own row.
|
||||
// water heater should get its own row.
|
||||
water_heater: "climate",
|
||||
input_datetime: "input-datetime",
|
||||
weather: "weather",
|
||||
|
@@ -46,6 +46,7 @@ const actions = [
|
||||
"url",
|
||||
"call-service",
|
||||
"none",
|
||||
"multiple",
|
||||
];
|
||||
|
||||
@customElement("hui-button-card-editor")
|
||||
@@ -115,7 +116,7 @@ export class HuiButtonCardEditor extends LitElement
|
||||
.label="${this.hass.localize(
|
||||
"ui.panel.lovelace.editor.card.generic.entity"
|
||||
)} (${this.hass.localize(
|
||||
"ui.panel.lovelace.editor.card.config.required"
|
||||
"ui.panel.lovelace.editor.card.config.optional"
|
||||
)})"
|
||||
.hass=${this.hass}
|
||||
.value=${this._entity}
|
||||
|
@@ -82,6 +82,7 @@ export class HuiLightCardEditor extends LitElement
|
||||
"url",
|
||||
"call-service",
|
||||
"none",
|
||||
"multiple",
|
||||
];
|
||||
|
||||
return html`
|
||||
|
@@ -60,7 +60,7 @@ export class HuiPictureCardEditor extends LitElement
|
||||
return html``;
|
||||
}
|
||||
|
||||
const actions = ["navigate", "url", "call-service", "none"];
|
||||
const actions = ["navigate", "url", "call-service", "none", "multiple"];
|
||||
|
||||
return html`
|
||||
<div class="card-config">
|
||||
|
@@ -104,7 +104,14 @@ export class HuiPictureEntityCardEditor extends LitElement
|
||||
return html``;
|
||||
}
|
||||
|
||||
const actions = ["more-info", "toggle", "navigate", "call-service", "none"];
|
||||
const actions = [
|
||||
"more-info",
|
||||
"toggle",
|
||||
"navigate",
|
||||
"call-service",
|
||||
"none",
|
||||
"multiple",
|
||||
];
|
||||
const views = ["auto", "live"];
|
||||
const dir = computeRTLDirection(this.hass!);
|
||||
|
||||
|
@@ -108,7 +108,14 @@ export class HuiPictureGlanceCardEditor extends LitElement
|
||||
return html``;
|
||||
}
|
||||
|
||||
const actions = ["more-info", "toggle", "navigate", "call-service", "none"];
|
||||
const actions = [
|
||||
"more-info",
|
||||
"toggle",
|
||||
"navigate",
|
||||
"call-service",
|
||||
"none",
|
||||
"multiple",
|
||||
];
|
||||
const views = ["auto", "live"];
|
||||
|
||||
return html`
|
||||
|
@@ -98,6 +98,7 @@ export const actionConfigStruct = object({
|
||||
url_path: optional(string()),
|
||||
service: optional(string()),
|
||||
service_data: optional(object()),
|
||||
actions: optional(array()),
|
||||
});
|
||||
|
||||
const buttonEntitiesRowConfigStruct = object({
|
||||
|
@@ -48,9 +48,9 @@ export class HuiServiceButtonElement extends LitElement
|
||||
return html`
|
||||
<ha-call-service-button
|
||||
.hass=${this.hass}
|
||||
.domain="${this._domain}"
|
||||
.service="${this._service}"
|
||||
.serviceData="${this._config.service_data}"
|
||||
.domain=${this._domain}
|
||||
.service=${this._service}
|
||||
.serviceData=${this._config.service_data}
|
||||
>${this._config.title}</ha-call-service-button
|
||||
>
|
||||
`;
|
||||
|
@@ -25,7 +25,7 @@ import { handleAction } from "../common/handle-action";
|
||||
import { UNAVAILABLE_STATES } from "../../../data/entity";
|
||||
|
||||
interface SensorEntityConfig extends EntitiesCardEntityConfig {
|
||||
format?: "relative" | "date" | "time" | "datetime";
|
||||
format?: "relative" | "total" | "date" | "time" | "datetime";
|
||||
}
|
||||
|
||||
@customElement("hui-sensor-entity-row")
|
||||
|
@@ -173,8 +173,8 @@ class LovelaceFullConfigEditor extends LitElement {
|
||||
text: this.hass.localize(
|
||||
"ui.panel.lovelace.editor.raw_editor.confirm_unsaved_changes"
|
||||
),
|
||||
dismissText: this.hass!.localize("ui.common.leave"),
|
||||
confirmText: this.hass!.localize("ui.common.stay"),
|
||||
dismissText: this.hass!.localize("ui.common.stay"),
|
||||
confirmText: this.hass!.localize("ui.common.leave"),
|
||||
}))
|
||||
) {
|
||||
return;
|
||||
|
@@ -33,7 +33,8 @@ export default <T extends Constructor<HassBaseEl>>(superClass: T) =>
|
||||
duration: 0,
|
||||
dismissable: false,
|
||||
action: {
|
||||
text: this.hass!.localize("ui.notification_toast.dismiss"),
|
||||
text:
|
||||
this.hass!.localize("ui.notification_toast.dismiss") || "Dismiss",
|
||||
action: () => {},
|
||||
},
|
||||
});
|
||||
|
@@ -291,7 +291,8 @@
|
||||
"successfully_saved": "Successfully saved",
|
||||
"successfully_deleted": "Successfully deleted",
|
||||
"error_required": "Required",
|
||||
"copied": "Copied"
|
||||
"copied": "Copied",
|
||||
"copied_clipboard": "Copied to clipboard"
|
||||
},
|
||||
"components": {
|
||||
"logbook": {
|
||||
@@ -854,7 +855,7 @@
|
||||
"new_tag": "New tag",
|
||||
"name": "Name",
|
||||
"description": "Description",
|
||||
"tag_id": "Tag id",
|
||||
"tag_id": "Tag ID",
|
||||
"tag_id_placeholder": "Autogenerated when left empty",
|
||||
"delete": "Delete",
|
||||
"update": "Update",
|
||||
@@ -1049,7 +1050,7 @@
|
||||
"introduction": "Some parts of Home Assistant can reload without requiring a restart. Hitting reload will unload their current YAML configuration and load the new one.",
|
||||
"reload": "Reload {domain}",
|
||||
"core": "Reload location & customizations",
|
||||
"group": "Reload groups, group entities, and notify services",
|
||||
"group": "Reload groups, group entities, and group notify services",
|
||||
"automation": "Reload automations",
|
||||
"script": "Reload scripts",
|
||||
"scene": "Reload scenes",
|
||||
@@ -1062,7 +1063,7 @@
|
||||
"input_select": "Reload input selects",
|
||||
"template": "Reload template entities",
|
||||
"universal": "Reload universal media player entities",
|
||||
"rest": "Reload rest entities and notify services",
|
||||
"rest": "Reload rest entities, and rest notify services",
|
||||
"command_line": "Reload command line entities",
|
||||
"filter": "Reload filter entities",
|
||||
"statistics": "Reload statistics entities",
|
||||
@@ -1148,7 +1149,7 @@
|
||||
},
|
||||
"editor": {
|
||||
"enable_disable": "Enable/Disable automation",
|
||||
"introduction": "Use automations to bring your home to live.",
|
||||
"introduction": "Use automations to bring your home to life.",
|
||||
"default_name": "New Automation",
|
||||
"load_error_not_editable": "Only automations in automations.yaml are editable.",
|
||||
"load_error_unknown": "Error loading automation ({err_no}).",
|
||||
@@ -1473,7 +1474,7 @@
|
||||
"add_blueprint": "Import blueprint",
|
||||
"use_blueprint": "Create automation",
|
||||
"delete_blueprint": "Delete blueprint",
|
||||
"discover_more": "Discover more Blueprints"
|
||||
"discover_more": "Discover more blueprints"
|
||||
},
|
||||
"add": {
|
||||
"header": "Import a blueprint",
|
||||
@@ -1562,7 +1563,7 @@
|
||||
}
|
||||
},
|
||||
"editor": {
|
||||
"introduction": "Use scenes to bring your home to live.",
|
||||
"introduction": "Use scenes to bring your home to life.",
|
||||
"default_name": "New Scene",
|
||||
"load_error_not_editable": "Only scenes in scenes.yaml are editable.",
|
||||
"load_error_unknown": "Error loading scene ({err_no}).",
|
||||
@@ -1827,8 +1828,7 @@
|
||||
"area": "Area",
|
||||
"integration": "Integration",
|
||||
"battery": "Battery",
|
||||
"no_devices": "No devices",
|
||||
"no_area": "No area"
|
||||
"no_devices": "No devices"
|
||||
},
|
||||
"delete": "Delete",
|
||||
"confirm_delete": "Are you sure you want to delete this device?",
|
||||
@@ -2271,7 +2271,9 @@
|
||||
},
|
||||
"visualization": {
|
||||
"header": "Network Visualization",
|
||||
"caption": "Visualization"
|
||||
"caption": "Visualization",
|
||||
"highlight_label": "Highlight Devices",
|
||||
"zoom_label": "Zoom To Device"
|
||||
},
|
||||
"group_binding": {
|
||||
"header": "Group Binding",
|
||||
@@ -2390,6 +2392,7 @@
|
||||
"lovelace": {
|
||||
"cards": {
|
||||
"confirm_delete": "Are you sure you want to delete this card?",
|
||||
"action_confirmation": "Are you sure you want to exectue action \"{action}\"?",
|
||||
"empty_state": {
|
||||
"title": "Welcome Home",
|
||||
"no_devices": "This page allows you to control your devices, however it looks like you have no devices set up yet. Head to the integrations page to get started.",
|
||||
@@ -2401,7 +2404,9 @@
|
||||
"shopping-list": {
|
||||
"checked_items": "Checked items",
|
||||
"clear_items": "Clear checked items",
|
||||
"add_item": "Add item"
|
||||
"add_item": "Add item",
|
||||
"reorder_items": "Reorder items",
|
||||
"drag_and_drop": "Drag and drop"
|
||||
},
|
||||
"picture-elements": {
|
||||
"hold": "Hold:",
|
||||
@@ -2559,6 +2564,7 @@
|
||||
"action-editor": {
|
||||
"navigation_path": "Navigation Path",
|
||||
"url_path": "URL Path",
|
||||
"editor_multiple_actions": "Multiple actions can only be entered in the code editor",
|
||||
"editor_service_data": "Service data can only be entered in the code editor",
|
||||
"actions": {
|
||||
"default_action": "Default Action",
|
||||
@@ -2567,7 +2573,8 @@
|
||||
"toggle": "Toggle",
|
||||
"navigate": "Navigate",
|
||||
"url": "URL",
|
||||
"none": "No Action"
|
||||
"none": "No Action",
|
||||
"multiple": "Multiple actions"
|
||||
}
|
||||
},
|
||||
"card": {
|
||||
@@ -2834,6 +2841,12 @@
|
||||
"changed_toast": {
|
||||
"message": "The Lovelace UI configuration for this dashboard was updated. Refresh to see changes?"
|
||||
},
|
||||
"components": {
|
||||
"timestamp-display": {
|
||||
"invalid": "Invalid timestamp",
|
||||
"invalid_format": "Invalid display format"
|
||||
}
|
||||
},
|
||||
"reload_lovelace": "Reload UI"
|
||||
},
|
||||
"mailbox": {
|
||||
|
@@ -9,6 +9,9 @@
|
||||
"bg": {
|
||||
"nativeName": "Български"
|
||||
},
|
||||
"bn": {
|
||||
"nativeName": "বাংলা"
|
||||
},
|
||||
"bs": {
|
||||
"nativeName": "Bosanski"
|
||||
},
|
||||
|
@@ -437,6 +437,7 @@
|
||||
"add_new": "إضافة منطقة جديدة ...",
|
||||
"area": "المنطقة",
|
||||
"clear": "مسح",
|
||||
"no_match": "لم يتم العثور على مناطق مطابقة",
|
||||
"show_areas": "إظهار المناطق"
|
||||
},
|
||||
"data-table": {
|
||||
@@ -449,6 +450,7 @@
|
||||
},
|
||||
"device-picker": {
|
||||
"no_area": "لا مجال",
|
||||
"no_match": "لم يتم العثور على أجهزة مطابقة",
|
||||
"toggle": "تبديل"
|
||||
},
|
||||
"entity": {
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -554,7 +554,7 @@
|
||||
"blueprint-picker": {
|
||||
"add_user": "Afegeix usuari",
|
||||
"remove_user": "Elimina usuari",
|
||||
"select_blueprint": "Selecciona un plànol"
|
||||
"select_blueprint": "Selecciona un blueprint"
|
||||
},
|
||||
"data-table": {
|
||||
"no-data": "No hi ha dades",
|
||||
@@ -901,7 +901,7 @@
|
||||
"navigation": {
|
||||
"areas": "Àrees",
|
||||
"automation": "Automatització",
|
||||
"blueprint": "Plànols",
|
||||
"blueprint": "Blueprints",
|
||||
"core": "General",
|
||||
"customize": "Personalització",
|
||||
"devices": "Dispositius",
|
||||
@@ -1073,7 +1073,7 @@
|
||||
"description": "Crea regles de comportament personalitzades per a casa teva",
|
||||
"dialog_new": {
|
||||
"blueprint": {
|
||||
"use_blueprint": "Utilitza un plànol"
|
||||
"use_blueprint": "Utilitza un blueprint"
|
||||
},
|
||||
"header": "Creació d'una nova automatització",
|
||||
"how": "Com vols crear la nova automatització?",
|
||||
@@ -1166,12 +1166,12 @@
|
||||
},
|
||||
"alias": "Nom",
|
||||
"blueprint": {
|
||||
"blueprint_to_use": "Plànol a utilitzar",
|
||||
"header": "Plànol",
|
||||
"blueprint_to_use": "Blueprint a utilitzar",
|
||||
"header": "Blueprint",
|
||||
"inputs": "Entrades",
|
||||
"manage_blueprints": "Gestiona els plànols",
|
||||
"no_blueprints": "No tens plànols",
|
||||
"no_inputs": "Aquest plànol no té entrades."
|
||||
"manage_blueprints": "Gestiona els blueprints",
|
||||
"no_blueprints": "No tens blueprints",
|
||||
"no_inputs": "Aquest blueprint no té entrades."
|
||||
},
|
||||
"conditions": {
|
||||
"add": "Afegir condició",
|
||||
@@ -1258,7 +1258,7 @@
|
||||
"edit_ui": "Edita a través d'interfície",
|
||||
"edit_yaml": "Edita com a YAML",
|
||||
"enable_disable": "Activa/desactiva automatització",
|
||||
"introduction": "Utilitza les automatitzacions per donar més vida a la teva casa.",
|
||||
"introduction": "Utilitza les automatitzacions per donar vida a casa teva.",
|
||||
"load_error_not_editable": "Només es poden editar les automatitzacions de l'arxiu automations.yaml.",
|
||||
"load_error_unknown": "Error en carregar l'automatització ({err_no}).",
|
||||
"max": {
|
||||
@@ -1417,34 +1417,37 @@
|
||||
},
|
||||
"blueprint": {
|
||||
"add": {
|
||||
"error_no_url": "Introdueix l'URL del plànol.",
|
||||
"file_name": "Directori del plànol",
|
||||
"header": "Importa un plànol nou",
|
||||
"import_btn": "Vista prèvia del plànol",
|
||||
"import_header": "Plànol \"{name}\"",
|
||||
"import_introduction": "Pots importar plànols d'altres usuaris des de Github i els fòrums de la comunitat. Introdueix, a sota, l'URL del plànol.",
|
||||
"importing": "Carregant plànol...",
|
||||
"raw_blueprint": "Contingut del plànol",
|
||||
"save_btn": "Importa plànol",
|
||||
"saving": "Important plànol...",
|
||||
"unsupported_blueprint": "Aquest plànols no és compatible",
|
||||
"url": "URL del plànol"
|
||||
"community_forums": "fòrums de la comunitat",
|
||||
"error_no_url": "Introdueix l'URL del blueprint.",
|
||||
"file_name": "Directori del blueprint",
|
||||
"header": "Importa un blueprint nou",
|
||||
"import_btn": "Vista prèvia del blueprint",
|
||||
"import_header": "Blueprint \"{name}\"",
|
||||
"import_introduction": "Pots importar blueprints d'altres usuaris des de Github i els fòrums de la comunitat. Introdueix, a sota, l'URL del blueprint.",
|
||||
"import_introduction_link": "Pots importar blueprints d'altres usuaris des de Github i des dels {community_link}. Introdueix, a sota, l'URL del blueprint.",
|
||||
"importing": "Carregant blueprint...",
|
||||
"raw_blueprint": "Contingut del blueprint",
|
||||
"save_btn": "Importa blueprint",
|
||||
"saving": "Important blueprint...",
|
||||
"unsupported_blueprint": "Aquest blueprint no és compatible",
|
||||
"url": "URL del blueprint"
|
||||
},
|
||||
"caption": "Plànols",
|
||||
"description": "Gestiona els plànols",
|
||||
"caption": "Blueprints",
|
||||
"description": "Gestiona els blueprints",
|
||||
"overview": {
|
||||
"add_blueprint": "Importa plànol",
|
||||
"confirm_delete_header": "Eliminar aquest plànol?",
|
||||
"confirm_delete_text": "Segur que vols eliminar aquest plànol?",
|
||||
"delete_blueprint": "Elimina plànol",
|
||||
"header": "Editor de plànols",
|
||||
"add_blueprint": "Importa blueprint",
|
||||
"confirm_delete_header": "Eliminar aquest blueprint?",
|
||||
"confirm_delete_text": "Segur que vols eliminar aquest blueprint?",
|
||||
"delete_blueprint": "Elimina blueprint",
|
||||
"discover_more": "Descobreix més blueprints",
|
||||
"header": "Editor de blueprints",
|
||||
"headers": {
|
||||
"domain": "Domini",
|
||||
"file_name": "Nom de l'arxiu",
|
||||
"name": "Nom"
|
||||
},
|
||||
"introduction": "La configuració de plànols et permet importar-ne i gestionar-los.",
|
||||
"learn_more": "Més informació sobre l'ús dels plànols",
|
||||
"introduction": "La configuració dels blueprints et permet importar-ne i gestionar-los.",
|
||||
"learn_more": "Més informació sobre l'ús dels blueprints",
|
||||
"use_blueprint": "Crea automatització"
|
||||
}
|
||||
},
|
||||
|
@@ -1077,7 +1077,7 @@
|
||||
},
|
||||
"header": "Vytvoření automatizace",
|
||||
"how": "Jak chcete vytvořit svou novou automatizaci?",
|
||||
"start_empty": "Začněte s prázdnou automatizací",
|
||||
"start_empty": "Začít s prázdnou automatizací",
|
||||
"thingtalk": {
|
||||
"create": "Vytvořit",
|
||||
"header": "Popište automatizaci, kterou chcete vytvořit",
|
||||
@@ -1110,8 +1110,8 @@
|
||||
"label": "Stav"
|
||||
},
|
||||
"delay": {
|
||||
"delay": "Zpoždění",
|
||||
"label": "Zpoždění"
|
||||
"delay": "Pozdržení",
|
||||
"label": "Pozdržení"
|
||||
},
|
||||
"device_id": {
|
||||
"action": "Akce",
|
||||
@@ -1417,12 +1417,14 @@
|
||||
},
|
||||
"blueprint": {
|
||||
"add": {
|
||||
"community_forums": "komunitních fór",
|
||||
"error_no_url": "Zadejte adresu URL adresu šablony",
|
||||
"file_name": "Cesta k šabloně",
|
||||
"header": "Import šablony",
|
||||
"import_btn": "Náhled šablony",
|
||||
"import_header": "Šablona \"{name}\"",
|
||||
"import_introduction": "Můžete importovat šablony od ostatních uživatelů z GitHubu a komunitních fór. Níže zadejte URL adresu šablony.",
|
||||
"import_introduction_link": "Můžete importovat šablony od ostatních uživatelů z GitHubu a {community_link}. Níže zadejte URL adresu šablony.",
|
||||
"importing": "Načítám šablonu...",
|
||||
"raw_blueprint": "Obsah šablony",
|
||||
"save_btn": "Importovat šablonu",
|
||||
@@ -1437,6 +1439,7 @@
|
||||
"confirm_delete_header": "Odstranit tuto šablonu?",
|
||||
"confirm_delete_text": "Opravdu chcete smazat tuto šablonu?",
|
||||
"delete_blueprint": "Smazat šablonu",
|
||||
"discover_more": "Objevte další šablony",
|
||||
"header": "Editor šablon",
|
||||
"headers": {
|
||||
"domain": "Doména",
|
||||
@@ -1834,7 +1837,7 @@
|
||||
},
|
||||
"types": {
|
||||
"counter": "Počítadlo",
|
||||
"input_boolean": "Přepnout",
|
||||
"input_boolean": "Přepínač",
|
||||
"input_datetime": "Datum a/nebo čas",
|
||||
"input_number": "Číslo",
|
||||
"input_select": "Výběr",
|
||||
@@ -2343,7 +2346,7 @@
|
||||
"generic": "Nově načíst entity integrace Generic IP camera",
|
||||
"generic_thermostat": "Nově načíst entity integrace Generic thermostat",
|
||||
"group": "Nově načíst skupiny, skupiny entit a notifikační služby",
|
||||
"heading": "Nastavení z YAML se načítá",
|
||||
"heading": "Nové načtení YAML konfigurace",
|
||||
"history_stats": "Nově načíst entity integrace History stats",
|
||||
"homekit": "Nově načíst entity integrace HomeKit",
|
||||
"input_boolean": "Nově načíst pomocníky - přepínače",
|
||||
|
@@ -2,11 +2,13 @@
|
||||
"config_entry": {
|
||||
"disabled_by": {
|
||||
"config_entry": "Konfigurationstilstand",
|
||||
"device": "Enhed",
|
||||
"integration": "Integration",
|
||||
"user": "Bruger"
|
||||
}
|
||||
},
|
||||
"groups": {
|
||||
"owner": "Ejer",
|
||||
"system-admin": "Administratorer",
|
||||
"system-read-only": "Skrivebeskyttede brugere",
|
||||
"system-users": "Brugere"
|
||||
@@ -501,6 +503,8 @@
|
||||
"continue": "Fortsæt",
|
||||
"copied": "Kopieret",
|
||||
"delete": "Slet",
|
||||
"disable": "Deaktiver",
|
||||
"enable": "Aktiver",
|
||||
"error_required": "Påkrævet",
|
||||
"loading": "Indlæser",
|
||||
"menu": "Menu",
|
||||
@@ -509,6 +513,8 @@
|
||||
"overflow_menu": "Overløbsmenu",
|
||||
"previous": "Forrige",
|
||||
"refresh": "Opdater",
|
||||
"remove": "Fjern",
|
||||
"rename": "Omdøb",
|
||||
"save": "Gem",
|
||||
"successfully_deleted": "Slettet",
|
||||
"successfully_saved": "Gemt",
|
||||
@@ -527,8 +533,14 @@
|
||||
"add_new": "Tilføj nyt område...",
|
||||
"area": "Område",
|
||||
"clear": "Ryd",
|
||||
"no_areas": "Du har ikke nogen områder",
|
||||
"no_match": "Ingen matchende områder fundet",
|
||||
"show_areas": "Vis områder"
|
||||
},
|
||||
"blueprint-picker": {
|
||||
"add_user": "Tilføj bruger",
|
||||
"remove_user": "Fjern bruger"
|
||||
},
|
||||
"data-table": {
|
||||
"no-data": "Ingen data",
|
||||
"search": "Søg"
|
||||
@@ -542,6 +554,8 @@
|
||||
"clear": "Ryd",
|
||||
"device": "Enhed",
|
||||
"no_area": "Intet område",
|
||||
"no_devices": "Du har ingen enheder",
|
||||
"no_match": "Ingen matchende enheder fundet",
|
||||
"show_devices": "Vis enheder",
|
||||
"toggle": "Til/fra"
|
||||
},
|
||||
@@ -552,6 +566,7 @@
|
||||
"entity-picker": {
|
||||
"clear": "Ryd",
|
||||
"entity": "Entitet",
|
||||
"no_match": "Ingen matchende entiteter fundet",
|
||||
"show_entities": "Vis entiteter"
|
||||
}
|
||||
},
|
||||
@@ -618,6 +633,13 @@
|
||||
"service-picker": {
|
||||
"service": "Tjeneste"
|
||||
},
|
||||
"target-picker": {
|
||||
"add_device_id": "Vælg enhed",
|
||||
"add_entity_id": "Vælg entitet",
|
||||
"remove_area_id": "Fjern område",
|
||||
"remove_device_id": "Fjern enhed",
|
||||
"remove_entity_id": "Fjern entitet"
|
||||
},
|
||||
"user-picker": {
|
||||
"add_user": "Tilføj bruger",
|
||||
"no_user": "Ingen bruger",
|
||||
@@ -640,6 +662,7 @@
|
||||
"editor": {
|
||||
"confirm_delete": "Er du sikker på, at du vil slette denne post?",
|
||||
"delete": "Slet",
|
||||
"device_disabled": "Denne entitets enheden er deaktiveret.",
|
||||
"enabled_cause": "Deaktiveret af {cause}.",
|
||||
"enabled_description": "Deaktiverede entiteter tilføjes ikke til Home Assistant.",
|
||||
"enabled_label": "Aktivér entitet",
|
||||
@@ -648,6 +671,7 @@
|
||||
"icon_error": "Ikoner skal være i formatet 'præfiks:ikonnavn', fx. 'mdi:home'",
|
||||
"name": "Brugerdefineret navn",
|
||||
"note": "Bemærk: Dette virker muligvis ikke med alle integrationer endnu.",
|
||||
"open_device_settings": "Åbn enhedsindstillinger",
|
||||
"unavailable": "Denne entitet er ikke tilgængelig i øjeblikket.",
|
||||
"update": "Opdater"
|
||||
},
|
||||
@@ -700,6 +724,10 @@
|
||||
"yaml_not_editable": "Indstillingerne for denne entitet kan ikke redigeres fra brugerfladen. Det er kun entiteter, der er konfigureret fra brugerfladen, der kan konfigureres herfra."
|
||||
},
|
||||
"more_info_control": {
|
||||
"cover": {
|
||||
"close_cover": "Luk cover",
|
||||
"open_cover": "Åbn cover"
|
||||
},
|
||||
"details": "Detaljer",
|
||||
"dismiss": "Afvis dialog",
|
||||
"edit": "Rediger entitet",
|
||||
@@ -759,6 +787,25 @@
|
||||
"description": "Indstillingerne blev gemt."
|
||||
}
|
||||
},
|
||||
"quick-bar": {
|
||||
"commands": {
|
||||
"navigation": {
|
||||
"blueprint": "Tegninger",
|
||||
"core": "Generelt",
|
||||
"customize": "Tilpasninger",
|
||||
"entities": "Entiteter",
|
||||
"info": "Information",
|
||||
"server_control": "Serverstyring",
|
||||
"users": "Brugere",
|
||||
"zone": "Zoner"
|
||||
},
|
||||
"server_control": {
|
||||
"perform_action": "{action} server",
|
||||
"restart": "Genstart",
|
||||
"stop": "Stop"
|
||||
}
|
||||
}
|
||||
},
|
||||
"voice_command": {
|
||||
"did_not_hear": "Home Assistant hørte ikke noget",
|
||||
"error": "Ups, der er opstået en fejl",
|
||||
@@ -867,6 +914,20 @@
|
||||
"automation": {
|
||||
"caption": "Automatiseringer",
|
||||
"description": "Administrer automatiseringer",
|
||||
"dialog_new": {
|
||||
"blueprint": {
|
||||
"use_blueprint": "Brug en tegning"
|
||||
},
|
||||
"header": "Opret en ny automatisering",
|
||||
"how": "Hvordan vil du oprette din nye automatisering?",
|
||||
"start_empty": "Start med en tom automatisering",
|
||||
"thingtalk": {
|
||||
"create": "Opret",
|
||||
"header": "Beskriv automationen du vil lave",
|
||||
"input_label": "Hvad skal denne automation gøre?",
|
||||
"intro": "Og vi vil forsøge at skabe den for dig. For eksempel: Sluk lyset, når jeg forlader hjemmet."
|
||||
}
|
||||
},
|
||||
"editor": {
|
||||
"actions": {
|
||||
"add": "Tilføj handling",
|
||||
@@ -941,6 +1002,13 @@
|
||||
"unsupported_action": "Ikke-understøttet handling: {action}"
|
||||
},
|
||||
"alias": "Navn",
|
||||
"blueprint": {
|
||||
"blueprint_to_use": "Tegninger klar til brug",
|
||||
"header": "Tegninger",
|
||||
"inputs": "Indgange",
|
||||
"manage_blueprints": "Administrer tegninger",
|
||||
"no_blueprints": "Du har ingen tegninger"
|
||||
},
|
||||
"conditions": {
|
||||
"add": "Tilføj betingelse",
|
||||
"delete": "Slet",
|
||||
@@ -1006,6 +1074,7 @@
|
||||
},
|
||||
"unsupported_condition": "Ikke-understøttet betingelse: {condition}"
|
||||
},
|
||||
"copy_to_clipboard": "Kopier til udklipsholder",
|
||||
"default_name": "Ny automatisering",
|
||||
"description": {
|
||||
"label": "Beskrivelse",
|
||||
@@ -1146,6 +1215,33 @@
|
||||
"only_editable": "Kun automatiseringer, der er defineret i 'automations.yaml', er redigerbare.",
|
||||
"pick_automation": "Vælg automatisering for at redigere",
|
||||
"show_info_automation": "Vis info om automatisering"
|
||||
},
|
||||
"thingtalk": {
|
||||
"create": "Opret automation",
|
||||
"task_selection": {
|
||||
"header": "Opret en ny automation",
|
||||
"introduction": "Skriv nedenfor, hvad denne automation skal gøre, og vi vil forsøge at konvertere den til en Home Assistant automation."
|
||||
}
|
||||
}
|
||||
},
|
||||
"blueprint": {
|
||||
"add": {
|
||||
"community_forums": "Fællesskabsfora",
|
||||
"file_name": "Tegningssti",
|
||||
"import_introduction": "Du kan importere skabeloner af andre brugere fra Github og {community_link} . Indtast URL'en til skabelonen nedenfor.",
|
||||
"import_introduction_link": "Du kan importere tegninger af andre brugere fra Github og {community_link} . Indtast webadressen til tegningen nedenfor.",
|
||||
"raw_blueprint": "Tegningsindhold",
|
||||
"unsupported_blueprint": "Denne tegning understøttes ikke"
|
||||
},
|
||||
"overview": {
|
||||
"add_blueprint": "Importer tegning",
|
||||
"delete_blueprint": "Slet tegning",
|
||||
"discover_more": "Find flere tegninger",
|
||||
"headers": {
|
||||
"domain": "Domæne",
|
||||
"file_name": "Filnavn"
|
||||
},
|
||||
"use_blueprint": "Opret automation"
|
||||
}
|
||||
},
|
||||
"cloud": {
|
||||
@@ -1360,13 +1456,16 @@
|
||||
"devices": {
|
||||
"automation": {
|
||||
"actions": {
|
||||
"caption": "Når noget udløses..."
|
||||
"caption": "Når noget udløses...",
|
||||
"no_actions": "Ingen handlinger",
|
||||
"unknown_action": "Ukendt handling"
|
||||
},
|
||||
"automations": "Automatiseringer",
|
||||
"conditions": {
|
||||
"caption": "Gør kun noget, hvis..."
|
||||
},
|
||||
"create": "Opret automatisering med enhed",
|
||||
"create_disable": "Kan ikke oprette automation med deaktiveret enhed",
|
||||
"no_automations": "Ingen automatiseringer",
|
||||
"no_device_automations": "Der er ingen automatiseringer til rådighed for denne enhed.",
|
||||
"triggers": {
|
||||
@@ -1391,6 +1490,15 @@
|
||||
"description": "Administrer tilsluttede enheder",
|
||||
"device_info": "Enhedsoplysninger",
|
||||
"device_not_found": "Enhed blev ikke fundet.",
|
||||
"disabled": "Deaktiveret",
|
||||
"disabled_by": {
|
||||
"config_entry": "Konfigurationsparameter",
|
||||
"integration": "Integration",
|
||||
"user": "Bruger"
|
||||
},
|
||||
"enabled_cause": "Enheden er deaktiveret pga. {cause} .",
|
||||
"enabled_description": "Deaktiverede enheder vises ikke, og entiteter, der hører til enheden, deaktiveres og tilføjes ikke til Home Assistant.",
|
||||
"enabled_label": "Aktiver enhed",
|
||||
"entities": {
|
||||
"add_entities_lovelace": "Tilføj til Lovelace",
|
||||
"disabled_entities": "+{count} {count, plural,\n one {deaktiveret entitet}\n other {deaktiverede entiteter}\n}",
|
||||
@@ -1400,14 +1508,24 @@
|
||||
},
|
||||
"name": "Navn",
|
||||
"no_devices": "Ingen enheder",
|
||||
"picker": {
|
||||
"filter": {
|
||||
"filter": "Filtrer",
|
||||
"show_all": "Vis alle",
|
||||
"show_disabled": "Vis deaktiverede enheder"
|
||||
},
|
||||
"search": "Søg efter enheder"
|
||||
},
|
||||
"scene": {
|
||||
"create": "Opret scene med enhed",
|
||||
"create_disable": "Kan ikke oprette scene med deaktiveret enhed",
|
||||
"no_scenes": "Ingen scener",
|
||||
"scenes": "Scener"
|
||||
},
|
||||
"scenes": "Scener",
|
||||
"script": {
|
||||
"create": "Opret script med enhed",
|
||||
"create_disable": "Kan ikke oprette script med deaktiveret enhed",
|
||||
"no_scripts": "Ingen scripts",
|
||||
"scripts": "Scripts"
|
||||
},
|
||||
@@ -1432,12 +1550,14 @@
|
||||
},
|
||||
"filter": {
|
||||
"filter": "Filtrer",
|
||||
"show_all": "Vis alle",
|
||||
"show_disabled": "Vis deaktiverede entiteter",
|
||||
"show_readonly": "Vis skrivebeskyttede entiteter",
|
||||
"show_unavailable": "Vis utilgængelige entiteter"
|
||||
},
|
||||
"header": "Entiteter",
|
||||
"headers": {
|
||||
"area": "Område",
|
||||
"entity_id": "Entitets-id",
|
||||
"integration": "Integration",
|
||||
"name": "Navn",
|
||||
@@ -1497,6 +1617,8 @@
|
||||
"info": {
|
||||
"built_using": "Bygget ved hjælp af",
|
||||
"caption": "Oplysninger",
|
||||
"copy_github": "Til GitHub",
|
||||
"copy_raw": "Rå tekst",
|
||||
"custom_uis": "Tilpassede brugergrænseflader:",
|
||||
"description": "Se oplysninger om din Home Assistant-installation",
|
||||
"developed_by": "Udviklet af en masse fantastiske mennesker.",
|
||||
@@ -1512,6 +1634,21 @@
|
||||
"server": "server",
|
||||
"source": "Kilde:",
|
||||
"system_health_error": "System Health-komponenten er ikke indlæst. Føj 'system_health:' til 'config.yaml'",
|
||||
"system_health": {
|
||||
"checks": {
|
||||
"homeassistant": {
|
||||
"dev": "Udvikling",
|
||||
"docker": "Docker",
|
||||
"hassio": "HassOS",
|
||||
"installation_type": "Installationstype",
|
||||
"os_version": "Styresystem version",
|
||||
"python_version": "Python version",
|
||||
"timezone": "Tidszone",
|
||||
"version": "Version"
|
||||
}
|
||||
},
|
||||
"manage": "Administrer"
|
||||
},
|
||||
"title": "Info"
|
||||
},
|
||||
"integration_panel_move": {
|
||||
@@ -1898,6 +2035,7 @@
|
||||
"editor": {
|
||||
"activate_user": "Aktivér bruger",
|
||||
"active": "Aktiv",
|
||||
"active_tooltip": "Kontrollerer, om brugeren kan logge ind",
|
||||
"admin": "Administrator",
|
||||
"caption": "Vis bruger",
|
||||
"change_password": "Skift adgangskode",
|
||||
@@ -1914,18 +2052,24 @@
|
||||
"system_generated_users_not_editable": "Systemoprettede brugere kan ikke opdateres.",
|
||||
"system_generated_users_not_removable": "Kan ikke fjerne systemgenererede brugere.",
|
||||
"unnamed_user": "Unavngiven bruger",
|
||||
"update_user": "Opdater"
|
||||
"update_user": "Opdater",
|
||||
"username": "Brugernavn"
|
||||
},
|
||||
"picker": {
|
||||
"add_user": "Tilføj bruger",
|
||||
"headers": {
|
||||
"group": "Gruppe",
|
||||
"is_active": "Aktiv",
|
||||
"is_owner": "Ejer",
|
||||
"name": "Navn",
|
||||
"system": "System"
|
||||
"system": "System",
|
||||
"username": "Brugernavn"
|
||||
}
|
||||
},
|
||||
"users_privileges_note": "Bruger-gruppen stadig under udvikling. Brugeren vil ikke være i stand til at administrere instansen via brugerfladen. Vi kigger stadig alle administrations-API-slutpunkter igennem for at sikre, at de korrekt begrænser adgangen til administratorer."
|
||||
},
|
||||
"zha": {
|
||||
"add_device": "Tilføj enhed",
|
||||
"add_device_page": {
|
||||
"discovered_text": "Enheder vil dukke op her, når de er fundet.",
|
||||
"discovery_text": "Fundne enheder vil dukke op her. Følg instruktionerne for din enhed(er) og sæt enhed(erne) i parringstilstand.",
|
||||
@@ -1971,6 +2115,16 @@
|
||||
"value": "Værdi"
|
||||
},
|
||||
"description": "Zigbee Home Automation-opsætning",
|
||||
"device_pairing_card": {
|
||||
"CONFIGURED": "Konfiguration fuldført",
|
||||
"CONFIGURED_status_text": "Initialiserer",
|
||||
"INITIALIZED": "Initialiseringen er fuldført",
|
||||
"INITIALIZED_status_text": "Enheden er klar til brug",
|
||||
"INTERVIEW_COMPLETE": "Interview fuldført",
|
||||
"INTERVIEW_COMPLETE_status_text": "Konfigurerer",
|
||||
"PAIRED": "Enhed fundet",
|
||||
"PAIRED_status_text": "Starter Interview"
|
||||
},
|
||||
"devices": {
|
||||
"header": "Zigbee Home Automation - Enhed"
|
||||
},
|
||||
@@ -1986,6 +2140,7 @@
|
||||
"unbind_button_label": "Fjern sammenføjning af gruppe"
|
||||
},
|
||||
"groups": {
|
||||
"add_group": "Tilføj gruppe",
|
||||
"add_members": "Tilføj medlemmer",
|
||||
"adding_members": "Tilføjer medlemmer",
|
||||
"caption": "Grupper",
|
||||
@@ -2028,7 +2183,11 @@
|
||||
"hint_wakeup": "Nogle enheder som Xiaomi-sensorer har en vækkeknap, som du kan trykke på med ~5 sekunders intervaller, der holder enheder vågne, mens du interagerer med dem.",
|
||||
"introduction": "Kør ZHA-kommandoer, der påvirker en enkelt enhed. Vælg en enhed for at se en liste over tilgængelige kommandoer."
|
||||
},
|
||||
"title": "Zigbee Home Automation"
|
||||
"title": "Zigbee Home Automation",
|
||||
"visualization": {
|
||||
"caption": "Visualisering",
|
||||
"header": "Netværksvisualisering"
|
||||
}
|
||||
},
|
||||
"zone": {
|
||||
"add_zone": "Tilføj zone",
|
||||
@@ -2197,6 +2356,8 @@
|
||||
"filter_attributes": "Filtrer egenskaber",
|
||||
"filter_entities": "Filtrer entiteter",
|
||||
"filter_states": "Filtrer tilstande",
|
||||
"last_changed": "Senest ændret",
|
||||
"last_updated": "Senest opdateret",
|
||||
"more_info": "Mere information",
|
||||
"no_entities": "Ingen entiteter",
|
||||
"set_state": "Sæt tilstand",
|
||||
@@ -2393,6 +2554,9 @@
|
||||
"description": "Lys-kortet giver dig mulighed for at ændre lysets lysstyrke.",
|
||||
"name": "Lys"
|
||||
},
|
||||
"logbook": {
|
||||
"name": "Logbog"
|
||||
},
|
||||
"map": {
|
||||
"dark_mode": "Mørk tilstand?",
|
||||
"default_zoom": "Standard-zoom",
|
||||
@@ -2421,7 +2585,8 @@
|
||||
},
|
||||
"picture-glance": {
|
||||
"description": "Billedblik-kortet viser et billede og den tilsvarende entitetstilstand som et ikon. Entiteterne på højre side tillader at skifte handlinger, andre viser dialogboksen for mere information.",
|
||||
"name": "Billedblik"
|
||||
"name": "Billedblik",
|
||||
"state_entity": "Entitet status"
|
||||
},
|
||||
"picture": {
|
||||
"description": "Billedkortet giver dig mulighed for at indstille et billede, der skal bruges til navigation til forskellige stier i brugerfladen eller til at kalde en tjeneste.",
|
||||
@@ -2785,10 +2950,13 @@
|
||||
"change_password": {
|
||||
"confirm_new_password": "Bekræft ny adgangskode",
|
||||
"current_password": "Nuværende adgangskode",
|
||||
"error_new_is_old": "Ny adgangskode skal være forskellig fra den aktuelle adgangskode",
|
||||
"error_new_mismatch": "Indtastede nye adgangskoder er ikke ens",
|
||||
"error_required": "Påkrævet",
|
||||
"header": "Skift adgangskode",
|
||||
"new_password": "Ny adgangskode",
|
||||
"submit": "Indsend"
|
||||
"submit": "Indsend",
|
||||
"success": "Adgangskoden blev ændret"
|
||||
},
|
||||
"current_user": "Du er logget ind som {fullName}.",
|
||||
"customize_sidebar": {
|
||||
|
@@ -2,6 +2,7 @@
|
||||
"config_entry": {
|
||||
"disabled_by": {
|
||||
"config_entry": "Konfigurationseintrag",
|
||||
"device": "Gerät",
|
||||
"integration": "Integration",
|
||||
"user": "Benutzer"
|
||||
}
|
||||
@@ -531,7 +532,7 @@
|
||||
"stay": "Bleiben",
|
||||
"successfully_deleted": "Erfolgreich gelöscht",
|
||||
"successfully_saved": "Erfolgreich gespeichert",
|
||||
"undo": "Rückgängig machen",
|
||||
"undo": "Rückgängig",
|
||||
"yes": "Ja"
|
||||
},
|
||||
"components": {
|
||||
@@ -546,12 +547,14 @@
|
||||
"add_new": "Neuen Bereich hinzufügen...",
|
||||
"area": "Bereich",
|
||||
"clear": "Löschen",
|
||||
"no_areas": "Du hast keine Bereiche",
|
||||
"no_match": "Keine übereinstimmende Bereiche gefunden",
|
||||
"show_areas": "Bereiche anzeigen"
|
||||
},
|
||||
"blueprint-picker": {
|
||||
"add_user": "Benutzer hinzufügen",
|
||||
"remove_user": "Benutzer entfernen",
|
||||
"select_blueprint": "Wähle einen Bauplan aus"
|
||||
"select_blueprint": "Wähle eine Vorlage aus"
|
||||
},
|
||||
"data-table": {
|
||||
"no-data": "Keine Daten",
|
||||
@@ -566,6 +569,8 @@
|
||||
"clear": "Löschen",
|
||||
"device": "Gerät",
|
||||
"no_area": "Kein Bereich",
|
||||
"no_devices": "Du hast keine Geräte",
|
||||
"no_match": "Keine übereinstimmende Geräte gefunden",
|
||||
"show_devices": "Geräte anzeigen",
|
||||
"toggle": "Umschalten"
|
||||
},
|
||||
@@ -577,6 +582,7 @@
|
||||
"entity-picker": {
|
||||
"clear": "Löschen",
|
||||
"entity": "Entität",
|
||||
"no_match": "Keine übereinstimmende Entitäten gefunden",
|
||||
"show_entities": "Entitäten anzeigen"
|
||||
}
|
||||
},
|
||||
@@ -593,7 +599,7 @@
|
||||
"changed_to_state": "wechselte zu {state}",
|
||||
"cleared_device_class": "gelöscht (keine {device_class} erkannt)",
|
||||
"detected_device_class": "erkannt {device_class}",
|
||||
"rose": "gestiegen",
|
||||
"rose": "aufgegangen",
|
||||
"set": "einstellen",
|
||||
"turned_off": "ausgeschaltet",
|
||||
"turned_on": "eingeschaltet",
|
||||
@@ -656,7 +662,7 @@
|
||||
"media-player-browser": "Medien-Browser",
|
||||
"no_items": "Keine Einträge",
|
||||
"no_local_media_found": "Keine lokalen Medien gefunden",
|
||||
"no_media_folder": "Es sieht so aus, als hätten Sie noch kein Medienverzeichnis erstellt.",
|
||||
"no_media_folder": "Es sieht so aus, als hättest du noch kein Medienverzeichnis erstellt.",
|
||||
"pick": "Auswählen",
|
||||
"pick-media": "Medien auswählen",
|
||||
"play": "Abspielen",
|
||||
@@ -700,18 +706,25 @@
|
||||
"never": "Noch nie",
|
||||
"past": "Vor {time}",
|
||||
"past_duration": {
|
||||
"day": "vor {count} {count, plural,\n one {Tag}\n other {Tagen}\n}",
|
||||
"hour": "vor {count} {count, plural,\n one {Stunde}\n other {Stunden}\n}",
|
||||
"minute": "vor {count} {count, plural,\n one {Minute}\n other {Minuten}\n}",
|
||||
"second": "vor {count} {count, plural,\n one {Sekunde}\n other {Sekunden}\n}",
|
||||
"week": "vor {count} {count, plural,\n one {Woche}\n other {Wochen}\n}"
|
||||
"day": "Vor {count} {count, plural,\n one {Tag}\n other {Tagen}\n}",
|
||||
"hour": "Vor {count} {count, plural,\n one {Stunde}\n other {Stunden}\n}",
|
||||
"minute": "Vor {count} {count, plural,\n one {Minute}\n other {Minuten}\n}",
|
||||
"second": "Vor {count} {count, plural,\n one {Sekunde}\n other {Sekunden}\n}",
|
||||
"week": "Vor {count} {count, plural,\n one {Woche}\n other {Wochen}\n}"
|
||||
}
|
||||
},
|
||||
"service-picker": {
|
||||
"service": "Dienst"
|
||||
},
|
||||
"target-picker": {
|
||||
"remove_area_id": "Bereich entfernen"
|
||||
"add_area_id": "Bereich auswählen",
|
||||
"add_device_id": "Gerät auswählen",
|
||||
"add_entity_id": "Entität auswählen",
|
||||
"expand_area_id": "Erweitere diesen Bereich in einzelne Geräte und Entitäten. Nach der Erweiterung werden die Geräte und Entitäten nicht aktualisiert, wenn sich der Bereich ändert.",
|
||||
"expand_device_id": "Erweitern Sie dieses Gerät in separate Entitäten. Nach dem Erweitern werden die Entitäten nicht aktualisiert, wenn sich das Gerät ändert.",
|
||||
"remove_area_id": "Bereich entfernen",
|
||||
"remove_device_id": "Gerät entfernen",
|
||||
"remove_entity_id": "Entität entfernen"
|
||||
},
|
||||
"user-picker": {
|
||||
"add_user": "Benutzer hinzufügen",
|
||||
@@ -736,6 +749,7 @@
|
||||
"editor": {
|
||||
"confirm_delete": "Möchtest du diesen Eintrag wirklich löschen?",
|
||||
"delete": "Löschen",
|
||||
"device_disabled": "Das Gerät dieser Entität ist deaktiviert.",
|
||||
"enabled_cause": "Deaktiviert durch {cause}.",
|
||||
"enabled_delay_confirm": "Die aktivierten Entitäten werden in {delay} Sekunden zu Home Assistant hinzugefügt",
|
||||
"enabled_description": "Deaktivierte Entitäten werden nicht zu Home Assistant hinzugefügt.",
|
||||
@@ -746,6 +760,7 @@
|
||||
"icon_error": "Symbole sollten das Format 'Präfix:iconname' haben, z. B. 'mdi:home'",
|
||||
"name": "Namen",
|
||||
"note": "Hinweis: Dies funktioniert möglicherweise noch nicht bei allen Integrationen.",
|
||||
"open_device_settings": "Geräteeinstellungen öffnen",
|
||||
"unavailable": "Diese Entität ist derzeit nicht verfügbar.",
|
||||
"update": "Aktualisieren"
|
||||
},
|
||||
@@ -801,7 +816,7 @@
|
||||
"pattern": "Regex-Muster für die clientseitige Validierung",
|
||||
"text": "Text"
|
||||
},
|
||||
"platform_not_loaded": "Die {platform} -Komponente ist nicht geladen. Füge sie bitte deiner Konfiguration hinzu. Entweder durch Hinzufügen von 'default_config:' oder ''{platform}:''.",
|
||||
"platform_not_loaded": "Die {platform}-Integration ist nicht geladen. Bitte füge sie deiner Konfiguration hinzu, indem du entweder 'default_config:' oder ''{platform}:'' einfügst.",
|
||||
"required_error_msg": "Dieses Feld ist erforderlich",
|
||||
"timer": {
|
||||
"duration": "Dauer"
|
||||
@@ -825,7 +840,7 @@
|
||||
"edit": "Entität bearbeiten",
|
||||
"history": "Verlauf",
|
||||
"last_changed": "Zuletzt geändert",
|
||||
"last_updated": "Letztes Update",
|
||||
"last_updated": "Zuletzt aktualisiert",
|
||||
"person": {
|
||||
"create_zone": "Zone vom aktuellen Standort erstellen"
|
||||
},
|
||||
@@ -886,7 +901,7 @@
|
||||
"navigation": {
|
||||
"areas": "Bereiche",
|
||||
"automation": "Automatisierungen",
|
||||
"blueprint": "Baupläne",
|
||||
"blueprint": "Vorlagen",
|
||||
"core": "Allgemein",
|
||||
"customize": "Anpassungen",
|
||||
"devices": "Geräte",
|
||||
@@ -908,13 +923,13 @@
|
||||
},
|
||||
"reload": {
|
||||
"automation": "Automationen neu laden",
|
||||
"command_line": "Komandozeilen Entätien neu laden",
|
||||
"core": "Positionsdaten & Anpassungen neu laden",
|
||||
"command_line": "Komandozeilenentätien neu laden",
|
||||
"core": "Positionsdaten und Anpassungen neu laden",
|
||||
"filesize": "Dateigröße-Entitäten neu laden",
|
||||
"filter": "Filter Entitäten neu laden",
|
||||
"generic": "Allgemeine IP Kamera Entitäten neu laden",
|
||||
"generic_thermostat": "Allgemeine Thermostat Entitäte neu laden",
|
||||
"group": "Gruppen, Gruppen Entitäten und Benachrichtigungsservices neu laden",
|
||||
"filter": "Filterentitäten neu laden",
|
||||
"generic": "Allgemeine IP-Kamera-Entitäten neu laden",
|
||||
"generic_thermostat": "Allgemeine Thermostat-Entitäten neu laden",
|
||||
"group": "Gruppen, Gruppenentitäten und Benachrichtigungsservices neu laden",
|
||||
"history_stats": "Verlaufsstatistiken neu laden",
|
||||
"homekit": "HomeKit neu laden",
|
||||
"input_boolean": "Input-Booleans neu laden",
|
||||
@@ -927,16 +942,16 @@
|
||||
"person": "Personen neu laden",
|
||||
"ping": "Binäre-Ping-Entitäten neu laden",
|
||||
"reload": "{domain} neu laden",
|
||||
"rest": "Rest Entitäten und Benachrichtigunsdienste neu laden",
|
||||
"rest": "REST-Entitäten und Benachrichtigunsdienste neu laden",
|
||||
"rpi_gpio": "Raspberry Pi GPIO Entitäten neu laden",
|
||||
"scene": "Szenen neu laden",
|
||||
"script": "Skripte neu laden",
|
||||
"smtp": "SMTP-Benachrichtigungsdienst neu laden",
|
||||
"statistics": "Statistik Entitäten neu laden",
|
||||
"statistics": "Statistikentitäten neu laden",
|
||||
"telegram": "Telegram-Benachrichtigungsdienst neu laden",
|
||||
"template": "Templates neu laden",
|
||||
"trend": "Trend Entitäten neu laden",
|
||||
"universal": "Universelle Medien Player Entitäten neu laden",
|
||||
"trend": "Trend-Entitäten neu laden",
|
||||
"universal": "Universelle Medien-Player-Entitäten neu laden",
|
||||
"zone": "Zonen neu laden"
|
||||
},
|
||||
"server_control": {
|
||||
@@ -1024,16 +1039,16 @@
|
||||
"link_profile_page": "deine Profilseite"
|
||||
},
|
||||
"areas": {
|
||||
"caption": "Bereichsregister",
|
||||
"caption": "Bereiche",
|
||||
"data_table": {
|
||||
"area": "Bereich",
|
||||
"devices": "Geräte"
|
||||
},
|
||||
"delete": {
|
||||
"confirmation_text": "Alle Geräte in diesem Bereich werden nicht mehr zugewiesen sein.",
|
||||
"confirmation_text": "Die Zuordnung aller Geräte zu diesem Bereich wird aufgelöst.",
|
||||
"confirmation_title": "Möchtest du diesen Bereich wirklich löschen?"
|
||||
},
|
||||
"description": "Bereiche in deinem Zuhause verwalten",
|
||||
"description": "Geräte und Entitäten in Bereiche gruppieren",
|
||||
"editor": {
|
||||
"area_id": "Bereich-ID",
|
||||
"create": "Erstellen",
|
||||
@@ -1050,15 +1065,15 @@
|
||||
"integrations_page": "Integrationsseite",
|
||||
"introduction": "In Bereichen wird festgelegt, wo sich Geräte befinden. Diese Informationen werden in Home Assistant verwendet, um Sie bei der Organisation Ihrer Benutzeroberfläche, Berechtigungen und Integrationen mit anderen Systemen zu unterstützen.",
|
||||
"introduction2": "Um Geräte in einem Bereich zu platzieren, navigiere mit dem Link unten zur Integrationsseite und klicke dann auf eine konfigurierte Integration, um zu den Gerätekarten zu gelangen.",
|
||||
"no_areas": "Sieht aus, als hätten Sie noch keine Bereiche!"
|
||||
"no_areas": "Sieht aus als hättest du noch keine Bereiche!"
|
||||
}
|
||||
},
|
||||
"automation": {
|
||||
"caption": "Automatisierung",
|
||||
"description": "Automatisierungen verwalten",
|
||||
"caption": "Automatisierungen",
|
||||
"description": "Individuelle Regeln für dein Zuhause erstellen",
|
||||
"dialog_new": {
|
||||
"blueprint": {
|
||||
"use_blueprint": "Einen Bauplan benutzen"
|
||||
"use_blueprint": "Eine Vorlage verwenden"
|
||||
},
|
||||
"header": "Erstelle eine neue Automatisierung",
|
||||
"how": "Wie möchtest du deine neue Automatisierung erstellen?",
|
||||
@@ -1067,7 +1082,7 @@
|
||||
"create": "Erstellen",
|
||||
"header": "Beschreibe die Automatisierung, die du erstellen möchtest",
|
||||
"input_label": "Was soll diese Automatisierung tun?",
|
||||
"intro": "Und wir werden versuchen, es für dich zu erstellen. Zum Beispiel: Schalten das Licht aus, wenn ich gehe."
|
||||
"intro": "Und wir werden versuchen, sie für dich zu erstellen. Zum Beispiel: Schalte das Licht aus, wenn ich gehe."
|
||||
}
|
||||
},
|
||||
"editor": {
|
||||
@@ -1119,11 +1134,11 @@
|
||||
"label": "Anzahl"
|
||||
},
|
||||
"until": {
|
||||
"conditions": "Bis Bedingungen",
|
||||
"conditions": "Bis-Bedingungen",
|
||||
"label": "Bis"
|
||||
},
|
||||
"while": {
|
||||
"conditions": "Während Bedingungen",
|
||||
"conditions": "Während-Bedingungen",
|
||||
"label": "Während"
|
||||
}
|
||||
}
|
||||
@@ -1151,12 +1166,12 @@
|
||||
},
|
||||
"alias": "Name",
|
||||
"blueprint": {
|
||||
"blueprint_to_use": "Zu verwendender Bauplan",
|
||||
"header": "Bauplan",
|
||||
"blueprint_to_use": "Zu verwendende Vorlage",
|
||||
"header": "Vorlage",
|
||||
"inputs": "Eingänge",
|
||||
"manage_blueprints": "Baupläne verwalten",
|
||||
"no_blueprints": "Du hast keine Baupläne",
|
||||
"no_inputs": "Dieser Bauplan hat keine Eingänge."
|
||||
"manage_blueprints": "Vorlagen verwalten",
|
||||
"no_blueprints": "Du hast keine Vorlagen",
|
||||
"no_inputs": "Diese Vorlage hat keine Eingänge."
|
||||
},
|
||||
"conditions": {
|
||||
"add": "Bedingung hinzufügen",
|
||||
@@ -1251,7 +1266,7 @@
|
||||
"queued": "Länge der Warteschlange"
|
||||
},
|
||||
"modes": {
|
||||
"description": "Der Modus steuert, was passiert, wenn ein Skript aufgerufen wird, während es noch von einem oder mehreren vorherigen Aufrufen ausgeführt wird. Überprüfen Sie den {documentation_link} für weitere Informationen.",
|
||||
"description": "Der Modus steuert, was passiert, wenn ein Skript aufgerufen wird, während es noch von einem oder mehreren vorherigen Aufrufen ausgeführt wird. Lies {documentation_link} für weitere Informationen.",
|
||||
"documentation": "Automatisierungs-Dokumentation",
|
||||
"label": "Modus",
|
||||
"parallel": "Parallel",
|
||||
@@ -1345,7 +1360,7 @@
|
||||
"time": {
|
||||
"at": "Um",
|
||||
"label": "Zeit",
|
||||
"type_input": "Wert eines Datum/Zeit-Helfers",
|
||||
"type_input": "Wert eines Datums-/Zeit-Helfers",
|
||||
"type_value": "Feste Zeit"
|
||||
},
|
||||
"webhook": {
|
||||
@@ -1402,31 +1417,37 @@
|
||||
},
|
||||
"blueprint": {
|
||||
"add": {
|
||||
"error_no_url": "Bitte gebe die URL des Bauplans ein.",
|
||||
"header": "Neuen Bauplan hinzufügen",
|
||||
"import_btn": "Bauplan importieren",
|
||||
"import_header": "{name}({domain}) importieren",
|
||||
"import_introduction": "Du kannst Baupläne anderer Benutzer aus GitHub und den Community-Foren importieren. Gib die URL des Bauplans unten ein.",
|
||||
"importing": "Bauplan wird importiert...",
|
||||
"save_btn": "Bauplan speichern",
|
||||
"saving": "Bauplan wir gespeichert...",
|
||||
"unsupported_blueprint": "Dieser Bauplan wird nicht unterstützt",
|
||||
"url": "URL des Bauplans"
|
||||
"community_forums": "Community-Foren",
|
||||
"error_no_url": "Bitte gebe die URL der Vorlage ein.",
|
||||
"file_name": "Vorlagenpfad",
|
||||
"header": "Vorlage importieren",
|
||||
"import_btn": "Vorschau Vorlage",
|
||||
"import_header": "Vorlage \"{name}\"",
|
||||
"import_introduction": "Du kannst Vorlagen anderer Benutzer aus GitHub und den Community-Foren importieren. Gib die URL der Vorlage unten ein.",
|
||||
"import_introduction_link": "Du kannst Vorlagen anderer Benutzer aus GitHub und den {community_link} importieren. Gib unten die URL der Vorlage ein.",
|
||||
"importing": "Vorlage wird geladen...",
|
||||
"raw_blueprint": "Inhalt der Vorlage",
|
||||
"save_btn": "Vorlage importieren",
|
||||
"saving": "Vorlage wird importiert...",
|
||||
"unsupported_blueprint": "Diese Vorlage wird nicht unterstützt",
|
||||
"url": "URL der Vorlage"
|
||||
},
|
||||
"caption": "Baupläne",
|
||||
"description": "Baupläne verwalten",
|
||||
"caption": "Vorlagen",
|
||||
"description": "Vorlagen verwalten",
|
||||
"overview": {
|
||||
"add_blueprint": "Bauplan hinzufügen",
|
||||
"confirm_delete_header": "Diesen Bauplan löschen?",
|
||||
"confirm_delete_text": "Bist du sicher, dass du diesen Bauplan löschen möchtest?",
|
||||
"header": "Bauplan-Editor",
|
||||
"add_blueprint": "Vorlage hinzufügen",
|
||||
"confirm_delete_header": "Diese Vorlage löschen?",
|
||||
"confirm_delete_text": "Bist du sicher, dass du diese Vorlage löschen möchtest?",
|
||||
"delete_blueprint": "Vorlage löschen",
|
||||
"discover_more": "Entdecke weitere Vorlagen",
|
||||
"header": "Vorlagen-Editor",
|
||||
"headers": {
|
||||
"domain": "Domain",
|
||||
"file_name": "Dateiname",
|
||||
"name": "Name"
|
||||
},
|
||||
"introduction": "Mit dem Bauplan-Editor kannst du Baupläne erstellen und bearbeiten.",
|
||||
"learn_more": "Erfahre mehr über Baupläne",
|
||||
"introduction": "Mit der Vorlagenkonfiguration kannst du deine Vorlagen importieren und verwalten.",
|
||||
"learn_more": "Erfahre mehr über die Benutzung von Vorlagen",
|
||||
"use_blueprint": "Automatisierung erstellen"
|
||||
}
|
||||
},
|
||||
@@ -1510,7 +1531,7 @@
|
||||
"title": "Alexa"
|
||||
},
|
||||
"caption": "Home Assistant Cloud",
|
||||
"description_features": "Fernsteuerung und Integration mit Alexa und Google Assistant.",
|
||||
"description_features": "Fernsteuerung und Integration mit Alexa und Google Assistant",
|
||||
"description_login": "Angemeldet als {email}",
|
||||
"description_not_login": "Nicht angemeldet",
|
||||
"dialog_certificate": {
|
||||
@@ -1605,7 +1626,7 @@
|
||||
},
|
||||
"core": {
|
||||
"caption": "Allgemein",
|
||||
"description": "Bearbeite die allgemeine Konfiguration von Home Assistant",
|
||||
"description": "Mengeneinheiten, Standort, Zeitzone & andere allgemeine Parameter",
|
||||
"section": {
|
||||
"core": {
|
||||
"core_config": {
|
||||
@@ -1637,7 +1658,7 @@
|
||||
"attributes_override": "Du kannst sie überschreiben, wenn du möchtest.",
|
||||
"attributes_set": "Die folgenden Attribute der Entität sind programmatisch festgelegt.",
|
||||
"caption": "Anpassung",
|
||||
"description": "Elemente anpassen",
|
||||
"description": "Entitäten individuell anpassen",
|
||||
"different_include": "Möglich über eine Domain, einen Glob oder einen anderen Include.",
|
||||
"pick_attribute": "Wähle ein Attribut zum Überschreiben aus.",
|
||||
"picker": {
|
||||
@@ -1667,6 +1688,7 @@
|
||||
"unknown_condition": "Unbekannte Bedingung"
|
||||
},
|
||||
"create": "Automatisierung mit Gerät erstellen",
|
||||
"create_disable": "Kann keine Automatisierung mit deaktiviertem Gerät erstellen",
|
||||
"no_automations": "Keine Automatisierungen",
|
||||
"no_device_automations": "Für dieses Gerät sind keine Automatisierungen verfügbar.",
|
||||
"triggers": {
|
||||
@@ -1680,7 +1702,7 @@
|
||||
"caption": "Geräte",
|
||||
"confirm_delete": "Möchtest du dieses Gerät wirklich löschen?",
|
||||
"confirm_rename_entity_ids": "Möchten Sie auch die Entitäts-IDs Ihrer Entitäten umbenennen?",
|
||||
"confirm_rename_entity_ids_warning": "Dies ändert keine Konfiguration (wie Automatisierungen, Skripte, Szenen, Dashboards), die derzeit diese Entitäten verwendet! Sie müssen sie selbst aktualisieren, um die neuen Entitäts-IDs zu verwenden!",
|
||||
"confirm_rename_entity_ids_warning": "Dies ändert keine Konfiguration (wie Automatisierungen, Skripte, Szenen, Dashboards), die derzeit diese Entitäten verwendet! Du musst sie selbst aktualisieren, um die neuen Entitäts-IDs zu verwenden!",
|
||||
"data_table": {
|
||||
"area": "Bereich",
|
||||
"battery": "Batterie",
|
||||
@@ -1697,14 +1719,18 @@
|
||||
"device_not_found": "Gerät nicht gefunden.",
|
||||
"disabled": "Deaktiviert",
|
||||
"disabled_by": {
|
||||
"config_entry": "Konfigurationseintrag",
|
||||
"integration": "Integration",
|
||||
"user": "Benutzer"
|
||||
},
|
||||
"enabled_cause": "Das Gerät ist durch {cause} deaktiviert.",
|
||||
"enabled_description": "Deaktivierte Geräte werden nicht angezeigt und zum Gerät gehörende Entitäten werden deaktiviert und nicht zum Home Assistant hinzugefügt.",
|
||||
"enabled_label": "Gerät aktivieren",
|
||||
"entities": {
|
||||
"add_entities_lovelace": "Zu Lovelace hinzufügen",
|
||||
"disabled_entities": "+{count} {count, plural,\n one {deaktivierte Entität}\n other {deaktivierte Entitäten}\n}",
|
||||
"entities": "Entitäten",
|
||||
"hide_disabled": "Ausblenden deaktiviert",
|
||||
"hide_disabled": "Deaktivierte ausblenden",
|
||||
"none": "Dieses Gerät hat keine Entitäten"
|
||||
},
|
||||
"name": "Name",
|
||||
@@ -1712,18 +1738,22 @@
|
||||
"picker": {
|
||||
"filter": {
|
||||
"filter": "Filter",
|
||||
"show_all": "Alle anzeigen"
|
||||
"hidden_devices": "{number} {number, plural,\n one {verstecktes Gerät}\n other {versteckte Geräte}\n}",
|
||||
"show_all": "Alle anzeigen",
|
||||
"show_disabled": "Deaktivierte Geräte anzeigen"
|
||||
},
|
||||
"search": "Geräte suchen"
|
||||
},
|
||||
"scene": {
|
||||
"create": "Szene mit Gerät erstellen",
|
||||
"create_disable": "Kann keine Szene mit deaktiviertem Gerät erstellen",
|
||||
"no_scenes": "Keine Szenen",
|
||||
"scenes": "Szenen"
|
||||
},
|
||||
"scenes": "Szenen",
|
||||
"script": {
|
||||
"create": "Szene mit Gerät erstellen",
|
||||
"create_disable": "Kann kein Skript mit deaktiviertem Gerät erstellen",
|
||||
"no_scripts": "Keine Skripte",
|
||||
"scripts": "Skripte"
|
||||
},
|
||||
@@ -1789,7 +1819,7 @@
|
||||
"header": "Home Assistant konfigurieren",
|
||||
"helpers": {
|
||||
"caption": "Helfer",
|
||||
"description": "Elemente verwalten, die beim Aufbau von Automatisierungen helfen können.",
|
||||
"description": "Elemente verwalten, die beim Aufbau von Automatisierungen helfen",
|
||||
"dialog": {
|
||||
"add_helper": "Helfer hinzufügen",
|
||||
"add_platform": "{platform} hinzufügen",
|
||||
@@ -1821,7 +1851,7 @@
|
||||
"copy_github": "Für GitHub",
|
||||
"copy_raw": "Roher Text",
|
||||
"custom_uis": "Benutzerdefinierte UIs:",
|
||||
"description": "Informationen über deine Home Assistant Installation",
|
||||
"description": "Version, Systemzustand und Links zur Dokumentation",
|
||||
"developed_by": "Entwickelt von einem Haufen toller Leute.",
|
||||
"documentation": "Dokumentation",
|
||||
"frontend": "Frontend-UI",
|
||||
@@ -1901,7 +1931,7 @@
|
||||
"options": "Optionen",
|
||||
"reload": "Neu laden",
|
||||
"reload_confirm": "Die Integration wurde neu geladen",
|
||||
"reload_restart_confirm": "Home Assistant neustarten, um das Neuladen dieser Integration abzuschließen",
|
||||
"reload_restart_confirm": "Home Assistant neu starten, um das Neuladen dieser Integration abzuschließen",
|
||||
"rename": "Umbenennen",
|
||||
"restart_confirm": "Starte Home Assistant neu, um das Entfernen dieser Integration abzuschließen",
|
||||
"services": "{count} {count, plural,\n one {Dienst}\n other {Dienste}\n}",
|
||||
@@ -1927,7 +1957,7 @@
|
||||
},
|
||||
"configure": "Konfigurieren",
|
||||
"configured": "Konfiguriert",
|
||||
"description": "Verbundene Integrationen verwalten",
|
||||
"description": "Integrationen zu Diensten, Geräten, usw. verwalten",
|
||||
"details": "Details zur Integration",
|
||||
"discovered": "Entdeckt",
|
||||
"home_assistant_website": "Home Assistant Website",
|
||||
@@ -1945,7 +1975,7 @@
|
||||
"integration": "Integration",
|
||||
"integration_not_found": "Integration nicht gefunden.",
|
||||
"new": "Richte eine neue Integration ein",
|
||||
"no_integrations": "Du hast anscheinend noch keine Integrationen konfiguriert. Klicke auf die Schaltfläche unten, um Deine erste Integration hinzuzufügen!",
|
||||
"no_integrations": "Du hast anscheinend noch keine Integrationen konfiguriert. Klicke auf die Schaltfläche unten, um eine erste Integration hinzuzufügen!",
|
||||
"none": "Noch nichts konfiguriert",
|
||||
"none_found": "Keine Integrationen gefunden",
|
||||
"none_found_detail": "Passe deine Suchkriterien an.",
|
||||
@@ -1960,7 +1990,7 @@
|
||||
"logs": {
|
||||
"caption": "Logs",
|
||||
"clear": "Leeren",
|
||||
"description": "Die Home Assistant Logs anschauen",
|
||||
"description": "Home Assistant Logs einsehen",
|
||||
"details": "Protokolldetails ( {level} )",
|
||||
"load_full_log": "Vollständiges Home Assistant-Protokoll laden",
|
||||
"loading_log": "Fehlerprotokoll wird geladen...",
|
||||
@@ -1977,7 +2007,7 @@
|
||||
"cant_edit_yaml": "In YAML definierte Dashboards können nicht über die Benutzeroberfläche bearbeitet werden. Du kannst sie aber in der configuration.yaml ändern.",
|
||||
"caption": "Dashboards",
|
||||
"conf_mode": {
|
||||
"storage": "UI gesteuert",
|
||||
"storage": "Grafischer Editor",
|
||||
"yaml": "YAML-Datei"
|
||||
},
|
||||
"confirm_delete": "Bist du sicher, dass du dieses Dashboard löschen möchtest?",
|
||||
@@ -2005,14 +2035,14 @@
|
||||
"conf_mode": "Konfigurationsmethode",
|
||||
"default": "Standard",
|
||||
"filename": "Dateiname",
|
||||
"require_admin": "Nur für Administratoren",
|
||||
"require_admin": "Nur Admin",
|
||||
"sidebar": "In der Seitenleiste anzeigen",
|
||||
"title": "Titel"
|
||||
},
|
||||
"open": "Öffnen"
|
||||
}
|
||||
},
|
||||
"description": "Konfiguriere deine Lovelace-Dashboards",
|
||||
"description": "Erstelle individuelle Oberflächen, um dein Zuhause zu steuern",
|
||||
"resources": {
|
||||
"cant_edit_yaml": "Du verwendest Lovelace im YAML-Modus. Daher kannst du deine Ressourcen nicht über die Benutzeroberfläche verwalten. Verwalte sie in der configuration.yaml.",
|
||||
"caption": "Ressourcen",
|
||||
@@ -2027,7 +2057,7 @@
|
||||
"url": "URL",
|
||||
"url_error_msg": "URL ist ein Pflichtfeld",
|
||||
"warning_header": "Sei vorsichtig!",
|
||||
"warning_text": "Das Hinzufügen von Ressourcen kann gefährlich sein. Stelle sicher, dass du die Quelle der Ressource kennst und ihr vertraust. Schlechte Ressourcen können dein System ernsthaft beschädigen."
|
||||
"warning_text": "Das Hinzufügen von Ressourcen kann gefährlich sein. Stelle sicher, dass du die Quelle der Ressource kennst und ihr vertraust. Ressourcen aus bösartigen Quellen können dein System ernsthaft beschädigen."
|
||||
},
|
||||
"picker": {
|
||||
"add_resource": "Ressource hinzufügen",
|
||||
@@ -2070,7 +2100,7 @@
|
||||
"node_id": "Knoten-ID",
|
||||
"ozw_instance": "OpenZWave-Instanz",
|
||||
"query_stage": "Abfragephase",
|
||||
"wakeup_instructions": "Weckanleitung",
|
||||
"wakeup_instructions": "Aufweckanleitung",
|
||||
"zwave": "Z-Wave"
|
||||
},
|
||||
"device_info": {
|
||||
@@ -2109,12 +2139,12 @@
|
||||
},
|
||||
"network": {
|
||||
"header": "Netzwerkverwaltung",
|
||||
"introduction": "Verwalten Sie netzwerkweite Funktionen.",
|
||||
"introduction": "Verwalten der Netzwerk-Funktionen.",
|
||||
"node_count": "{count} Knoten"
|
||||
},
|
||||
"node_config": {
|
||||
"header": "Knotenkonfiguration",
|
||||
"help_source": "Konfigurationsparameterbeschreibungen und Hilfetexte werden vom OpenZWave-Projekt bereitgestellt.",
|
||||
"help_source": "Hilfetexte und Beschreibungen der Konfigurationsparameter stellt das OpenZWave-Projekt zur Verfügung.",
|
||||
"introduction": "Verwalten Sie die verschiedenen Konfigurationsparameter für einen Z-Wave Knoten.",
|
||||
"wakeup_help": "Batteriebetriebene Knoten müssen wach sein, um ihre Konfiguration zu ändern. Wenn der Knoten nicht aktiv ist, versucht OpenZWave beim nächsten Aufwachen, die Konfiguration des Knotens zu aktualisieren. Dies kann mehrere Stunden (oder Tage) später sein. Führen Sie die folgenden Schritte aus, um Ihr Gerät zu aktivieren:"
|
||||
},
|
||||
@@ -2167,8 +2197,8 @@
|
||||
},
|
||||
"select_instance": {
|
||||
"header": "OpenZWave Instanz auswählen",
|
||||
"introduction": "Sie haben mehr als eine OpenZWave-Instanz ausgeführt. Welche Instanz möchten Sie verwalten?",
|
||||
"none_found": "Wir haben keine OpenZWave-Instanz gefunden. Wenn Sie der Meinung sind, dass dies nicht korrekt ist, überprüfen Sie Ihre OpenZWave- und MQTT-Setups und stellen Sie sicher, dass der Home Assistant mit Ihrem MQTT-Broker kommunizieren kann."
|
||||
"introduction": "Du hast mehr als eine aktive OpenZWave-Instanz. Welche möchtest du verwalten?",
|
||||
"none_found": "Wir haben keine OpenZWave-Instanz gefunden. Wenn du der Meinung bist, dass dies nicht korrekt ist, überprüfe deine OpenZWave- und MQTT-Setups und stelle sicher, dass der Home Assistant mit dem MQTT-Broker kommunizieren kann."
|
||||
},
|
||||
"services": {
|
||||
"add_node": "Knoten hinzufügen",
|
||||
@@ -2182,11 +2212,11 @@
|
||||
"confirm_delete": "Möchtest du diese Person wirklich löschen?",
|
||||
"confirm_delete2": "Alle Geräte, die zu dieser Person gehören, werden nicht mehr zugeordnet.",
|
||||
"create_person": "Person erstellen",
|
||||
"description": "Personen verwalten, denen Home Assistant folgt.",
|
||||
"description": "Personen verwalten, denen Home Assistant folgt",
|
||||
"detail": {
|
||||
"admin": "Administrator",
|
||||
"allow_login": "Erlauben Sie dieser Person, sich einzuloggen.",
|
||||
"confirm_delete_user": "Bist Du sicher, dass Du das Benutzerkonto von {name} löschen möchtest? Du kannst der Person immer noch folgen, aber sie kann sich nicht mehr anmelden.",
|
||||
"allow_login": "Erlaube dieser Person, sich einzuloggen.",
|
||||
"confirm_delete_user": "Bist Du sicher, dass Du das Benutzerkonto für {name} löschen möchtest? Du kannst der Person immer noch folgen, aber sie kann sich nicht mehr anmelden.",
|
||||
"create": "Erstellen",
|
||||
"delete": "Löschen",
|
||||
"device_tracker_intro": "Wähle die Geräte, die dieser Person gehören.",
|
||||
@@ -2211,7 +2241,7 @@
|
||||
"scene": {
|
||||
"activated": "Aktivierte Szene {name}.",
|
||||
"caption": "Szenen",
|
||||
"description": "Szenen verwalten",
|
||||
"description": "Gerätezustände erfassen und später einfach wieder abrufen",
|
||||
"editor": {
|
||||
"default_name": "Neue Szene",
|
||||
"devices": {
|
||||
@@ -2229,7 +2259,7 @@
|
||||
"without_device": "Entitäten ohne Gerät"
|
||||
},
|
||||
"icon": "Symbol",
|
||||
"introduction": "Benutze Szenen um deinem Zuhause Leben einzuhauchen.",
|
||||
"introduction": "Benutze Szenen, um deinem Zuhause Leben einzuhauchen.",
|
||||
"load_error_not_editable": "Nur Szenen in der scenes.yaml sind editierbar.",
|
||||
"load_error_unknown": "Fehler beim Laden der Szene ({err_no}).",
|
||||
"name": "Name",
|
||||
@@ -2254,8 +2284,8 @@
|
||||
}
|
||||
},
|
||||
"script": {
|
||||
"caption": "Skript",
|
||||
"description": "Skripte verwalten",
|
||||
"caption": "Skripte",
|
||||
"description": "Eine Sequenz aus Aktionen ausführen",
|
||||
"editor": {
|
||||
"alias": "Name",
|
||||
"default_name": "Neues Skript",
|
||||
@@ -2274,7 +2304,7 @@
|
||||
"queued": "Länge der Warteschlange"
|
||||
},
|
||||
"modes": {
|
||||
"description": "Der Modus steuert, was passiert, wenn ein Skript aufgerufen wird, während es noch von einem oder mehreren vorherigen Aufrufen ausgeführt wird. Überprüfen Sie den {documentation_link} für weitere Informationen.",
|
||||
"description": "Der Modus steuert, was passiert, wenn ein Skript aufgerufen wird, während es noch von einem oder mehreren vorherigen Aufrufen ausgeführt wird. Lies {documentation_link} für weitere Informationen.",
|
||||
"documentation": "Skript-Dokumentation",
|
||||
"label": "Modus",
|
||||
"parallel": "Parallel",
|
||||
@@ -2330,7 +2360,7 @@
|
||||
"person": "Personen neu laden",
|
||||
"ping": "Binäre Ping-Sensorentitäten neu laden",
|
||||
"reload": "{domain} neu laden",
|
||||
"rest": "Rest Entitäten und Benachrichtigungsdienste neu laden",
|
||||
"rest": "Rest-Entitäten und Benachrichtigungsdienste neu laden",
|
||||
"rpi_gpio": "Raspberry Pi GPIO Entitäten neu laden",
|
||||
"scene": "Szenen neu laden",
|
||||
"script": "Skripte neu laden",
|
||||
@@ -2338,7 +2368,7 @@
|
||||
"statistics": "Statistik-Entitäten neu laden",
|
||||
"telegram": "Telegram-Benachrichtigungsdienste neu laden",
|
||||
"template": "Vorlagenentitäten neu laden",
|
||||
"trend": "Trendentitäten neu laden",
|
||||
"trend": "Trend-Entitäten neu laden",
|
||||
"universal": "Universelle Media Player-Entitäten neu laden",
|
||||
"zone": "Zonen neu laden"
|
||||
},
|
||||
@@ -2354,7 +2384,7 @@
|
||||
"check_config": "Konfiguration prüfen",
|
||||
"heading": "Konfiguration überprüfen",
|
||||
"introduction": "Überprüfen Sie Ihre Konfiguration, wenn Sie kürzlich Änderungen vorgenommen haben und sicherstellen möchten, dass alle Änderungen gültig sind",
|
||||
"invalid": "Konfiguration ungültig",
|
||||
"invalid": "Konfiguration fehlerhaft",
|
||||
"valid": "Konfiguration in Ordnung"
|
||||
}
|
||||
}
|
||||
@@ -2366,7 +2396,7 @@
|
||||
"confirm_remove": "Möchtest du den Tag {tag} wirklich entfernen?",
|
||||
"confirm_remove_title": "Tag entfernen?",
|
||||
"create_automation": "Automatisierung mit NFC Tag erstellen",
|
||||
"description": "NFC Tags verwalten",
|
||||
"description": "Automatisierungen auslösen wenn NFC Tag, QR Code, usw. gescannt wird",
|
||||
"detail": {
|
||||
"companion_apps": "Mobile Apps",
|
||||
"create": "Erstellen",
|
||||
@@ -2378,7 +2408,7 @@
|
||||
"tag_id": "NFC Tag ID",
|
||||
"tag_id_placeholder": "Automatisch generiert, wenn leer gelassen",
|
||||
"update": "Aktualisieren",
|
||||
"usage": "Ein Tag kann eine Automatisierung auslösen, wenn er gescannt wird. Sie können NFC-Tags, QR-Codes oder jede andere Art von Tags verwenden. Verwenden Sie unsere {companion_link}, um diesen Tag in ein programmierbares NFC-Tag zu schreiben oder einen QR-Code zu erstellen."
|
||||
"usage": "Ein Tag kann eine Automatisierung auslösen, wenn er gescannt wird. Du kannst NFC-Tags, QR-Codes oder jede andere Art von Tags verwenden. Verwende unsere {companion_link}, um diesen Tag in ein programmierbares NFC-Tag zu schreiben oder einen QR-Code zu erstellen."
|
||||
},
|
||||
"edit": "Bearbeiten",
|
||||
"headers": {
|
||||
@@ -2401,10 +2431,11 @@
|
||||
"username": "Benutzername"
|
||||
},
|
||||
"caption": "Benutzer",
|
||||
"description": "Benutzer verwalten",
|
||||
"description": "Home Assistant-Benutzerkonten verwalten",
|
||||
"editor": {
|
||||
"activate_user": "Benutzer aktivieren",
|
||||
"active": "Aktiv",
|
||||
"active_tooltip": "Steuert, ob sich der Benutzer anmelden kann",
|
||||
"admin": "Administrator",
|
||||
"caption": "Benutzer anzeigen",
|
||||
"change_password": "Passwort ändern",
|
||||
@@ -2413,14 +2444,14 @@
|
||||
"delete_user": "Benutzer löschen",
|
||||
"group": "Gruppe",
|
||||
"id": "ID",
|
||||
"name": "Name",
|
||||
"name": "Anzeigename",
|
||||
"new_password": "Neues Passwort",
|
||||
"owner": "Besitzer",
|
||||
"password_changed": "Das Passwort wurde erfolgreich geändert",
|
||||
"system_generated": "System generiert",
|
||||
"system_generated": "Systemgeneriert",
|
||||
"system_generated_users_not_editable": "Systemgenerierte Benutzer können nicht aktualisiert werden.",
|
||||
"system_generated_users_not_removable": "Vom System generierte Benutzer können nicht entfernt werden.",
|
||||
"unnamed_user": "Unbenannter Benutzer",
|
||||
"system_generated_users_not_removable": "Systemgenerierte Benutzer können nicht entfernt werden.",
|
||||
"unnamed_user": "Namenloser Benutzer",
|
||||
"update_user": "Aktualisieren",
|
||||
"username": "Benutzername"
|
||||
},
|
||||
@@ -2430,12 +2461,12 @@
|
||||
"group": "Gruppe",
|
||||
"is_active": "Aktiv",
|
||||
"is_owner": "Besitzer",
|
||||
"name": "Name",
|
||||
"system": "System",
|
||||
"name": "Anzeigename",
|
||||
"system": "System generiert",
|
||||
"username": "Benutzername"
|
||||
}
|
||||
},
|
||||
"users_privileges_note": "Benutzergruppen sind derzeit noch in Entwicklung. Der Benutzer wird nicht in der Lage sein, Änderungen an der Instanz über das UI vorzunehmen. Derzeit überprüfen wir noch alle API Endpunkte um sicherzustellen dass diese nur von Administratoren genutzt werden können."
|
||||
"users_privileges_note": "Benutzergruppen befinden sich derzeit noch in Entwicklung. Der Benutzer wird nicht in der Lage sein, Änderungen an der Instanz über die Benutzeroberfläche vorzunehmen. Derzeit überprüfen wir noch alle API Endpunkte und stellen sicher, dass diese nur von Administratoren genutzt werden können."
|
||||
},
|
||||
"zha": {
|
||||
"add_device": "Gerät hinzufügen",
|
||||
@@ -2491,7 +2522,8 @@
|
||||
"INITIALIZED_status_text": "Das Gerät ist einsatzbereit",
|
||||
"INTERVIEW_COMPLETE": "Interview abgeschlossen",
|
||||
"INTERVIEW_COMPLETE_status_text": "Konfigurieren",
|
||||
"PAIRED": "Gerät gefunden"
|
||||
"PAIRED": "Gerät gefunden",
|
||||
"PAIRED_status_text": "Interview starten"
|
||||
},
|
||||
"devices": {
|
||||
"header": "Zigbee Home Automation - Gerät"
|
||||
@@ -2563,7 +2595,7 @@
|
||||
"configured_in_yaml": "Zonen, die über configuration.yaml konfiguriert wurden, können nicht über die Benutzeroberfläche bearbeitet werden.",
|
||||
"confirm_delete": "Möchtest du diesen Bereich wirklich löschen?",
|
||||
"create_zone": "Zone erstellen",
|
||||
"description": "Verwalte die Zonen, in denen du Personen folgen möchtest.",
|
||||
"description": "Verwalte die Zonen, in denen du Personen folgen möchtest",
|
||||
"detail": {
|
||||
"create": "Erstellen",
|
||||
"delete": "Löschen",
|
||||
@@ -2624,12 +2656,12 @@
|
||||
"add_to_group": "Zur Gruppe hinzufügen",
|
||||
"entities": "Entitäten dieses Knotens",
|
||||
"entity_info": "Entitätsinformationen",
|
||||
"exclude_entity": "Schließe diese Entität vom Home Assistant aus",
|
||||
"exclude_entity": "Entität von Home Assistant ausschließen",
|
||||
"group": "Gruppe",
|
||||
"header": "Z-Wave-Knotenverwaltung",
|
||||
"introduction": "Führe Z-Wave-Befehle aus, die einen einzelnen Knoten betreffen. Wähle einen Knoten aus, um eine Liste der verfügbaren Befehle anzuzeigen.",
|
||||
"max_associations": "Max Assoziationen:",
|
||||
"node_group_associations": "Knotengruppenzuordnungen",
|
||||
"max_associations": "Maximale Zuordnungen:",
|
||||
"node_group_associations": "Zuordnungen zu Kontengruppen",
|
||||
"node_protection": "Knotenschutz",
|
||||
"node_to_control": "Zu steuernder Knoten",
|
||||
"nodes": "Knoten",
|
||||
@@ -2724,8 +2756,8 @@
|
||||
"filter_attributes": "Attribute filtern",
|
||||
"filter_entities": "Entitäten filtern",
|
||||
"filter_states": "Zustände filtern",
|
||||
"last_changed": "Letzte Änderung",
|
||||
"last_updated": "Letzte Aktualisierung",
|
||||
"last_changed": "Zuletzt geändert",
|
||||
"last_updated": "Zuletzt aktualisiert",
|
||||
"more_info": "Mehr Info",
|
||||
"no_entities": "Keine Entitäten",
|
||||
"set_state": "Status setzen",
|
||||
@@ -2818,7 +2850,7 @@
|
||||
"editor": {
|
||||
"action-editor": {
|
||||
"actions": {
|
||||
"call-service": "Dienst ausführen",
|
||||
"call-service": "Dienst aufrufen",
|
||||
"default_action": "Standardaktion",
|
||||
"more-info": "Mehr Info",
|
||||
"navigate": "Navigieren",
|
||||
@@ -2833,11 +2865,11 @@
|
||||
"card": {
|
||||
"alarm-panel": {
|
||||
"available_states": "Verfügbare Zustände",
|
||||
"description": "Mit der Alarmzentralen-Karte kannst du die Integrationen Ihrer Alarmzentrale aktivieren und deaktivieren.",
|
||||
"description": "Mit der Alarmzentralen-Karte kannst du integrierte Alarmzentralen scharfschalten oder deaktivieren.",
|
||||
"name": "Alarmpanel"
|
||||
},
|
||||
"button": {
|
||||
"default_action_help": "Die Standardaktion hängt von den Funktionen der Entität ab, sie wird entweder umgeschaltet oder die weiteren Informationen werden angezeigt.",
|
||||
"default_action_help": "Die Standardaktion hängt von den Funktionen der Entität ab: sie wird entweder umgeschaltet oder die weiteren Informationen werden angezeigt.",
|
||||
"description": "Mit der Schaltflächen-Karte kannst du Schaltflächen hinzufügen, um Aufgaben auszuführen.",
|
||||
"name": "Schaltfläche"
|
||||
},
|
||||
@@ -2889,9 +2921,9 @@
|
||||
"last-changed": "Zuletzt geändert",
|
||||
"last-triggered": "Zuletzt ausgelöst",
|
||||
"last-updated": "Zuletzt aktualisiert",
|
||||
"none": "Keine Sekundärinformatrionen",
|
||||
"none": "Keine Sekundärinformation",
|
||||
"position": "Position",
|
||||
"tilt-position": "Neigungsposition"
|
||||
"tilt-position": "Neigung"
|
||||
},
|
||||
"show_header_toggle": "Schalter anzeigen?",
|
||||
"special_row": "spezielle Reihe",
|
||||
@@ -2902,7 +2934,7 @@
|
||||
"name": "Entität Filter"
|
||||
},
|
||||
"entity": {
|
||||
"description": "Mit der Entitätskarte erhältst du einen schnellen Überblick über den Status Ihrer Entität.",
|
||||
"description": "Mit der Entitätskarte erhältst du einen schnellen Überblick über den Status einer Entität.",
|
||||
"name": "Entität"
|
||||
},
|
||||
"gauge": {
|
||||
@@ -2984,7 +3016,7 @@
|
||||
"map": {
|
||||
"dark_mode": "Dunkler Modus?",
|
||||
"default_zoom": "Standard-Zoom",
|
||||
"description": "Mit der Map-Karte kannst du Objekte auf einer Karte anzeigen lassen.",
|
||||
"description": "Mit der Map-Karte kannst du Objekte auf einer Landkarte anzeigen lassen.",
|
||||
"geo_location_sources": "Geolocation-Quellen",
|
||||
"hours_to_show": "Zu zeigende Stunden",
|
||||
"name": "Karte",
|
||||
@@ -3000,7 +3032,7 @@
|
||||
"name": "Mediensteuerung"
|
||||
},
|
||||
"picture-elements": {
|
||||
"description": "Die Bilder-Karte ist eine der vielseitigsten Arten von Karten. Mit den Karten kannst du Symbole, Text und sogar Dienste positionieren! Auf einem Bild basierend auf Koordinaten.",
|
||||
"description": "Die Bilder-Karte ist eine der vielseitigsten Karten. Hier kannst du Symbole, Texte und sogar Dienste basierend auf Bildkoordinaten positionieren.",
|
||||
"name": "Picture Elements"
|
||||
},
|
||||
"picture-entity": {
|
||||
@@ -3098,7 +3130,7 @@
|
||||
"header_name": "{name} Konfiguration anzeigen",
|
||||
"move_left": "Ansicht nach links verschieben",
|
||||
"move_right": "Ansicht nach rechts verschieben",
|
||||
"tab_badges": "Abzeichen",
|
||||
"tab_badges": "Plaketten",
|
||||
"tab_settings": "Einstellungen",
|
||||
"tab_visibility": "Sichtbarkeit",
|
||||
"visibility": {
|
||||
@@ -3159,8 +3191,8 @@
|
||||
"para_sure": "Bist du dir sicher, dass du die Benutzeroberfläche selbst verwalten möchtest?",
|
||||
"save": "Kontrolle übernehmen",
|
||||
"yaml_config": "Um dir den Einstieg zu erleichtern, findest du hier die aktuelle Konfiguration dieses Dashboards:",
|
||||
"yaml_control": "Um die Kontrolle im YAML-Modus zu übernehmen, erstelle eine YAML-Datei mit dem Namen, den du in Deiner Konfiguration für dieses Dashboard angegeben hast, oder mit der Standardeinstellung 'ui-lovelace.yaml'.",
|
||||
"yaml_mode": "Du verwendest den YAML-Modus für dieses Dashboard. Dies bedeutet, dass Du Deine Lovelace-Konfiguration nicht über die Benutzeroberfläche ändern kannst. Wenn du dieses Dashboard über die Benutzeroberfläche verwalten möchtest, entferne \"mode: yaml\" aus Deiner Lovelace-Konfiguration in \"configuration.yaml\"."
|
||||
"yaml_control": "Um die Kontrolle im YAML-Modus zu übernehmen, erstelle eine YAML-Datei mit dem Namen, den du in deiner Konfiguration für dieses Dashboard angegeben hast, oder mit der Standardeinstellung 'ui-lovelace.yaml'.",
|
||||
"yaml_mode": "Du verwendest den YAML-Modus für dieses Dashboard. Dies bedeutet, dass du deine Lovelace-Konfiguration nicht über die Benutzeroberfläche ändern kannst. Wenn du dieses Dashboard über die Benutzeroberfläche verwalten möchtest, entferne \"mode: yaml\" aus Deiner Lovelace-Konfiguration in \"configuration.yaml\"."
|
||||
},
|
||||
"select_view": {
|
||||
"dashboard_label": "Dashboard",
|
||||
@@ -3180,7 +3212,7 @@
|
||||
},
|
||||
"view": {
|
||||
"panel_mode": {
|
||||
"description": "Dadurch wird die erste Karte in voller Breite angezeigt. Andere Karten und Marker in dieser Ansicht werden nicht angezeigt.",
|
||||
"description": "Hiermit wird die erste Karte in voller Breite angezeigt. Andere Karten und Marker in dieser Ansicht werden nicht angezeigt.",
|
||||
"title": "Panel-Modus?",
|
||||
"warning_multiple_cards": "Diese Ansicht enthält mehr als eine Karte, in einer Bedienfeldansicht kann jedoch nur eine Karte angezeigt werden."
|
||||
}
|
||||
@@ -3393,8 +3425,8 @@
|
||||
"intro": "Sind Sie bereit, dein Zuhause zu wecken, Ihre Privatsphäre zurückzugewinnen und einer weltweiten Gemeinschaft von Tüftlern beizutreten?",
|
||||
"restore": {
|
||||
"description": "Alternativ kannst du von einem vorherigen Snapshot wiederherstellen.",
|
||||
"hide_log": "Vollständiges Log verstecken",
|
||||
"in_progress": "Wiederherstellung im Prozess",
|
||||
"hide_log": "Vollständiges Protokoll ausblenden",
|
||||
"in_progress": "Wiederherstellung im Gange",
|
||||
"show_log": "Vollständiges Protokoll anzeigen"
|
||||
},
|
||||
"user": {
|
||||
@@ -3415,19 +3447,20 @@
|
||||
},
|
||||
"profile": {
|
||||
"advanced_mode": {
|
||||
"description": "Home Assistent verbirgt standardmäßig erweiterte Funktionen und Optionen. Mache diese Funktionen zugänglich, indem diese Option aktiviert wird. Dies ist eine benutzerspezifische Einstellung, die sich nicht auf andere Benutzer auswirkt, die Home Assistant verwenden.",
|
||||
"description": "Home Assistant verbirgt standardmäßig erweiterte Funktionen und Optionen. Mache diese Funktionen zugänglich, indem diese Option aktiviert wird. Dies ist eine benutzerspezifische Einstellung, die sich nicht auf andere Benutzer auswirkt, die Home Assistant verwenden.",
|
||||
"link_promo": "Mehr erfahren",
|
||||
"title": "Erweiterter Modus"
|
||||
},
|
||||
"change_password": {
|
||||
"confirm_new_password": "Neues Passwort Bestätigen",
|
||||
"current_password": "Aktuelles Passwort",
|
||||
"error_new_is_old": "Das neue Kennwort muss sich von dem aktuellen Kennwort unterscheiden.",
|
||||
"error_new_is_old": "Das neue Passwort muss sich von dem aktuellen Passwort unterscheiden.",
|
||||
"error_new_mismatch": "Eingegebene neue Passwörter stimmen nicht überein",
|
||||
"error_required": "Erforderlich",
|
||||
"header": "Passwort ändern",
|
||||
"new_password": "Neues Passwort",
|
||||
"submit": "Absenden",
|
||||
"success": "Das Passwort wurde erfolgreich geändert"
|
||||
"success": "Passwort wurde erfolgreich geändert"
|
||||
},
|
||||
"current_user": "Du bist derzeit als {fullName} angemeldet.",
|
||||
"customize_sidebar": {
|
||||
@@ -3467,7 +3500,7 @@
|
||||
"description": "Erstelle langlebige Zugriffstoken, damit deine Skripte mit deiner Home Assistant-Instanz interagieren können. Jedes Token ist ab der Erstellung für 10 Jahre gültig. Die folgenden langlebigen Zugriffstoken sind derzeit aktiv.",
|
||||
"empty_state": "Sie haben noch keine langlebigen Zugangs-Token.",
|
||||
"header": "Langlebige Zugangs-Token",
|
||||
"last_used": "Zuletzt verwendet am {date} in {location}",
|
||||
"last_used": "Zuletzt verwendet {date} von {location}",
|
||||
"learn_auth_requests": "Erfahre, wie du authentifizierte Anfragen stellen kannst.",
|
||||
"name": "Name",
|
||||
"not_used": "Wurde noch nie benutzt",
|
||||
@@ -3490,7 +3523,7 @@
|
||||
"push_notifications": {
|
||||
"add_device_prompt": {
|
||||
"input_label": "Gerätename",
|
||||
"title": "Wie sollte dieses Gerät genannt werden?"
|
||||
"title": "Wie soll dieses Gerät genannt werden?"
|
||||
},
|
||||
"description": "Sende Benachrichtigungen an dieses Gerät.",
|
||||
"error_load_platform": "Konfiguriere notify.html5.",
|
||||
@@ -3506,7 +3539,7 @@
|
||||
"delete_failed": "Fehler beim Löschen das Aktualisierungs-Token.",
|
||||
"description": "Jedes Aktualisierungs-Token stellt eine Anmeldesitzung dar. Aktualisierungs-Token werden automatisch entfernt, wenn Sie Abmelden klicken. Die folgenden Aktualisierungs-Token sind derzeit für Ihr Konto aktiv.",
|
||||
"header": "Aktualisierungs-Tokens",
|
||||
"last_used": "Zuletzt verwendet am {date} in {location}",
|
||||
"last_used": "Zuletzt verwendet {date} von {location}",
|
||||
"not_used": "Wurde noch nie benutzt",
|
||||
"token_title": "Aktualisierungs-Token für {clientId}"
|
||||
},
|
||||
|
@@ -2,11 +2,13 @@
|
||||
"config_entry": {
|
||||
"disabled_by": {
|
||||
"config_entry": "Παράμετρος διαμόρφωσης",
|
||||
"device": "Συσκευή",
|
||||
"integration": "Ενσωμάτωση",
|
||||
"user": "Χρήστης"
|
||||
}
|
||||
},
|
||||
"groups": {
|
||||
"owner": "Ιδιοκτήτης",
|
||||
"system-admin": "Διαχειριστές",
|
||||
"system-read-only": "Χρήστες μόνο για ανάγνωση",
|
||||
"system-users": "Χρήστες"
|
||||
@@ -545,8 +547,15 @@
|
||||
"add_new": "Προσθήκη νέας περιοχής...",
|
||||
"area": "Περιοχή",
|
||||
"clear": "Εκκαθάριση",
|
||||
"no_areas": "Δεν έχετε περιοχές",
|
||||
"no_match": "Δεν βρέθηκαν περιοχές που να ταιριάζουν",
|
||||
"show_areas": "Εμφάνιση περιοχών"
|
||||
},
|
||||
"blueprint-picker": {
|
||||
"add_user": "Προσθήκη χρήστη",
|
||||
"remove_user": "Κατάργηση χρήστη",
|
||||
"select_blueprint": "Επιλέξτε ένα σχεδιάγραμμα"
|
||||
},
|
||||
"data-table": {
|
||||
"no-data": "Δεν υπάρχουν δεδομένα",
|
||||
"search": "Αναζήτηση"
|
||||
@@ -560,6 +569,8 @@
|
||||
"clear": "Καθαρός",
|
||||
"device": "Συσκευή",
|
||||
"no_area": "Καμία περιοχή",
|
||||
"no_devices": "Δεν έχετε συσκευές",
|
||||
"no_match": "Δεν βρέθηκαν συσκευές που να ταιριάζουν",
|
||||
"show_devices": "Εμφάνιση συσκευών",
|
||||
"toggle": "Εναλλαγή"
|
||||
},
|
||||
@@ -571,6 +582,7 @@
|
||||
"entity-picker": {
|
||||
"clear": "Καθαρισμός",
|
||||
"entity": "Οντότητα",
|
||||
"no_match": "Δεν βρέθηκαν οντότητες που να ταιριάζουν",
|
||||
"show_entities": "Εμφάνιση οντοτήτων"
|
||||
}
|
||||
},
|
||||
@@ -587,8 +599,8 @@
|
||||
"changed_to_state": "άλλαξε σε {state}",
|
||||
"cleared_device_class": "παραγράφηκε (δεν εντοπίστηκε {device_class} )",
|
||||
"detected_device_class": "εντόπισε {device_class}",
|
||||
"rose": "αυξήθηκε",
|
||||
"set": "ορίστηκε",
|
||||
"rose": "ανέτειλε",
|
||||
"set": "έδυσε",
|
||||
"turned_off": "απενεργοποιήθηκε",
|
||||
"turned_on": "ενεργοποιήθηκε",
|
||||
"was_at_home": "ήταν στο σπίτι",
|
||||
@@ -704,6 +716,16 @@
|
||||
"service-picker": {
|
||||
"service": "Υπηρεσία"
|
||||
},
|
||||
"target-picker": {
|
||||
"add_area_id": "Επιλέξτε περιοχή",
|
||||
"add_device_id": "Επιλέξτε συσκευή",
|
||||
"add_entity_id": "Διαλέξτε οντότητα",
|
||||
"expand_area_id": "Αναπτύξτε αυτήν την περιοχή στις ξεχωριστές συσκευές και οντότητες που περιέχει. Μετά την επέκταση δεν θα ενημερώσει τις συσκευές και τις οντότητες όταν αλλάζει η περιοχή.",
|
||||
"expand_device_id": "Αναπτύξτε αυτήν τη συσκευή σε ξεχωριστές οντότητες. Μετά την επέκταση, δεν θα ενημερώσει τις οντότητες όταν αλλάξει η συσκευή.",
|
||||
"remove_area_id": "Κατάργηση περιοχής",
|
||||
"remove_device_id": "Αφαίρεση συσκευής",
|
||||
"remove_entity_id": "Αφαίρεση οντότητας"
|
||||
},
|
||||
"user-picker": {
|
||||
"add_user": "Προσθήκη χρήστη",
|
||||
"no_user": "Κανένας χρήστης",
|
||||
@@ -727,6 +749,7 @@
|
||||
"editor": {
|
||||
"confirm_delete": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την καταχώριση;",
|
||||
"delete": "Διαγραφή",
|
||||
"device_disabled": "Η συσκευή αυτής της οντότητας είναι απενεργοποιημένη.",
|
||||
"enabled_cause": "Απενεργοποιήθηκε από {cause}.",
|
||||
"enabled_delay_confirm": "Τα ενεργοποιημένα στοιχεία θα προστεθούν στο Home Assistant σε {delay} δευτερόλεπτα",
|
||||
"enabled_description": "Οι απενεργοποιημένες οντότητες δεν θα προστεθούν στον Home Assistant.",
|
||||
@@ -737,6 +760,7 @@
|
||||
"icon_error": "Το εικονίδιο πρέπει να είναι στη μορφή 'πρόθεμα:όνομα_εικόνας', για παράδειγμα: 'mdi:home'",
|
||||
"name": "Όνομα",
|
||||
"note": "Σημείωση: Αυτό μπορεί να μην λειτουργεί ακόμη με όλες τις ενσωματώσεις.",
|
||||
"open_device_settings": "Άνοιγμα ρυθμίσεων συσκευής",
|
||||
"unavailable": "Αυτή η οντότητα δεν είναι προς το παρόν διαθέσιμη.",
|
||||
"update": "Ενημέρωση"
|
||||
},
|
||||
@@ -877,6 +901,7 @@
|
||||
"navigation": {
|
||||
"areas": "Περιοχές",
|
||||
"automation": "Αυτοματισμοί",
|
||||
"blueprint": "Σχεδιαγράμματα",
|
||||
"core": "Γενικά",
|
||||
"customize": "Μορφοποιήσεις",
|
||||
"devices": "Συσκευές",
|
||||
@@ -1046,6 +1071,20 @@
|
||||
"automation": {
|
||||
"caption": "Αυτοματισμοί",
|
||||
"description": "Διαχείριση αυτοματισμών",
|
||||
"dialog_new": {
|
||||
"blueprint": {
|
||||
"use_blueprint": "Χρησιμοποιήστε ένα σχεδιάγραμμα"
|
||||
},
|
||||
"header": "Δημιουργία νέου αυτοματισμού",
|
||||
"how": "Πώς θέλετε να δημιουργήσετε τον νέο σας αυτοματισμό;",
|
||||
"start_empty": "Ξεκινήστε με έναν κενό αυτοματισμό",
|
||||
"thingtalk": {
|
||||
"create": "Δημιουργία",
|
||||
"header": "Περιγράψτε τον αυτοματισμό που θέλετε να δημιουργήσετε",
|
||||
"input_label": "Τι πρέπει να κάνει αυτός ο αυτοματισμός;",
|
||||
"intro": "Και θα προσπαθήσουμε να το δημιουργήσουμε για εσάς. Για παράδειγμα: Σβήσε τα φώτα όταν φεύγω."
|
||||
}
|
||||
},
|
||||
"editor": {
|
||||
"actions": {
|
||||
"add": "Προσθήκη ενέργειας",
|
||||
@@ -1126,6 +1165,14 @@
|
||||
"unsupported_action": "Χωρίς υποστήριξη διεπαφής χρήστη για ενέργεια: {action}"
|
||||
},
|
||||
"alias": "Όνομα",
|
||||
"blueprint": {
|
||||
"blueprint_to_use": "Σχεδιάγραμμα για χρήση",
|
||||
"header": "Σχεδιάγραμμα",
|
||||
"inputs": "Είσοδοι",
|
||||
"manage_blueprints": "Διαχείριση σχεδιαγραμμάτων",
|
||||
"no_blueprints": "Δεν έχετε σχεδιαγράμματα",
|
||||
"no_inputs": "Αυτό το σχεδιάγραμμα δεν έχει καμία εισαγωγή."
|
||||
},
|
||||
"conditions": {
|
||||
"add": "Προσθήκη όρου",
|
||||
"delete": "Διαγραφή",
|
||||
@@ -1368,6 +1415,42 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"blueprint": {
|
||||
"add": {
|
||||
"community_forums": "κοινοτικά φόρουμ",
|
||||
"error_no_url": "Εισαγάγετε τη διεύθυνση URL του σχεδιαγράμματος.",
|
||||
"file_name": "Διαδρομή σχεδιαγράμματος",
|
||||
"header": "Εισαγωγή σχεδιαγράμματος",
|
||||
"import_btn": "Προεπισκόπηση σχεδιαγράμματος",
|
||||
"import_header": "Σχεδιάγραμμα \"{name}\"",
|
||||
"import_introduction": "Μπορείτε να εισαγάγετε σχεδιαγράμματα άλλων χρηστών από το Github και τα φόρουμ της κοινότητας. Εισαγάγετε τη διεύθυνση URL του σχεδιαγράμματος παρακάτω.",
|
||||
"import_introduction_link": "Μπορείτε να εισαγάγετε σχεδιαγράμματα άλλων χρηστών από το Github και το {community_link} . Εισαγάγετε τη διεύθυνση URL του σχεδιαγράμματος παρακάτω.",
|
||||
"importing": "Φόρτωση σχεδιαγράμματος...",
|
||||
"raw_blueprint": "Περιεχόμενο σχεδιαγράμματος",
|
||||
"save_btn": "Εισαγωγή σχεδιαγράμματος",
|
||||
"saving": "Εισαγωγή σχεδιαγράμματος...",
|
||||
"unsupported_blueprint": "Αυτό το σχεδιάγραμμα δεν υποστηρίζεται",
|
||||
"url": "Διεύθυνση URL του σχεδιαγράμματος"
|
||||
},
|
||||
"caption": "Σχεδιαγράμματα",
|
||||
"description": "Διαχείριση σχεδιαγραμμάτων",
|
||||
"overview": {
|
||||
"add_blueprint": "Εισαγωγή σχεδιαγράμματος",
|
||||
"confirm_delete_header": "Διαγραφή αυτού του σχεδιαγράμματος;",
|
||||
"confirm_delete_text": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το σχεδιάγραμμα;",
|
||||
"delete_blueprint": "Διαγραφή σχεδιαγράμματος",
|
||||
"discover_more": "Ανακαλύψτε περισσότερα σχεδιαγράμματα",
|
||||
"header": "Πρόγραμμα επεξεργασίας σχεδιαγραμμάτων",
|
||||
"headers": {
|
||||
"domain": "Τομέας",
|
||||
"file_name": "Ονομα αρχείου",
|
||||
"name": "Όνομα"
|
||||
},
|
||||
"introduction": "Η διαμόρφωση του σχεδιαγράμματος σας επιτρέπει να εισάγετε και να διαχειρίζεστε τα σχεδιαγράμματά σας.",
|
||||
"learn_more": "Μάθετε περισσότερα σχετικά με τη χρήση σχεδιαγραμμάτων",
|
||||
"use_blueprint": "Δημιουργία αυτοματισμού"
|
||||
}
|
||||
},
|
||||
"cloud": {
|
||||
"account": {
|
||||
"alexa": {
|
||||
@@ -1605,6 +1688,7 @@
|
||||
"unknown_condition": "Άγνωστη κατάσταση"
|
||||
},
|
||||
"create": "Δημιουργία αυτοματισμού με τη συσκευή",
|
||||
"create_disable": "Δεν είναι δυνατή η δημιουργία αυτοματισμού με απενεργοποιημένη συσκευή",
|
||||
"no_automations": "Δεν υπάρχουν αυτοματισμοί",
|
||||
"no_device_automations": "Δεν υπάρχουν διαθέσιμοι αυτοματισμοί για αυτήν τη συσκευή.",
|
||||
"triggers": {
|
||||
@@ -1633,6 +1717,15 @@
|
||||
"description": "Διαχείριση συνδεδεμένων συσκευών",
|
||||
"device_info": "Πληροφορίες συσκευής",
|
||||
"device_not_found": "Η συσκευή δε βρέθηκε.",
|
||||
"disabled": "Απενεργοποιημένο",
|
||||
"disabled_by": {
|
||||
"config_entry": "Παράμετρος διαμόρφωσης",
|
||||
"integration": "Ενσωμάτωση",
|
||||
"user": "Χρήστης"
|
||||
},
|
||||
"enabled_cause": "Η συσκευή απενεργοποιείται από το {cause}.",
|
||||
"enabled_description": "Οι απενεργοποιημένες συσκευές δεν θα εμφανίζονται και οι οντότητες που ανήκουν στη συσκευή θα απενεργοποιούνται και δεν θα προστίθενται στο Home Assistant.",
|
||||
"enabled_label": "Ενεργοποίηση συσκευής",
|
||||
"entities": {
|
||||
"add_entities_lovelace": "Προσθήκη στο Lovelace",
|
||||
"disabled_entities": "+{count} {count, plural,\n one {απενεργοποιημένη οντότηταy}\n other {απενεργοποιημένες οντότητες}\n}",
|
||||
@@ -1642,14 +1735,25 @@
|
||||
},
|
||||
"name": "Όνομα",
|
||||
"no_devices": "Δεν υπάρχουν συσκευές",
|
||||
"picker": {
|
||||
"filter": {
|
||||
"filter": "Φίλτρο",
|
||||
"hidden_devices": "{number} κρυφή {number, plural,\n one {συσκευή}\n other {συσκευές}\n}",
|
||||
"show_all": "Εμφάνιση όλων",
|
||||
"show_disabled": "Εμφάνιση απενεργοποιημένων συσκευών"
|
||||
},
|
||||
"search": "Αναζήτηση συσκευών"
|
||||
},
|
||||
"scene": {
|
||||
"create": "Δημιουργία σκηνής με τη συσκευή",
|
||||
"create_disable": "Δεν είναι δυνατή η δημιουργία σκηνής με απενεργοποιημένη συσκευή",
|
||||
"no_scenes": "Καμία σκηνή",
|
||||
"scenes": "Σκηνές"
|
||||
},
|
||||
"scenes": "Σκηνές",
|
||||
"script": {
|
||||
"create": "Δημιουργία σεναρίου με συσκευή",
|
||||
"create_disable": "Δεν είναι δυνατή η δημιουργία σεναρίου με απενεργοποιημένη συσκευή",
|
||||
"no_scripts": "Χωρίς δέσμες ενεργειών",
|
||||
"scripts": "Δέσμες ενεργειών"
|
||||
},
|
||||
@@ -1682,6 +1786,7 @@
|
||||
},
|
||||
"header": "Μητρώο οντοτήτων",
|
||||
"headers": {
|
||||
"area": "Περιοχή",
|
||||
"entity_id": "Αναγνωριστικό οντότητας",
|
||||
"integration": "Ενσωμάτωση",
|
||||
"name": "Όνομα",
|
||||
@@ -2330,6 +2435,7 @@
|
||||
"editor": {
|
||||
"activate_user": "Ενεργοποίηση χρήστη",
|
||||
"active": "Ενεργό",
|
||||
"active_tooltip": "Ελέγχει εάν ο χρήστης μπορεί να συνδεθεί",
|
||||
"admin": "Διαχειριστής",
|
||||
"caption": "Προβολή χρήστη",
|
||||
"change_password": "Αλλαγή Κωδικού",
|
||||
@@ -2346,19 +2452,24 @@
|
||||
"system_generated_users_not_editable": "Δεν είναι δυνατή η ενημέρωση των χρηστών που δημιουργούνται από το σύστημα.",
|
||||
"system_generated_users_not_removable": "Δεν είναι δυνατή η διαγραφή χρηστών που δημιουργήθηκαν από το σύστημα",
|
||||
"unnamed_user": "Χρήστης χωρίς όνομα",
|
||||
"update_user": "Ενημέρωση"
|
||||
"update_user": "Ενημέρωση",
|
||||
"username": "Όνομα χρήστη"
|
||||
},
|
||||
"picker": {
|
||||
"add_user": "Προσθήκη χρήστη",
|
||||
"headers": {
|
||||
"group": "Ομάδα",
|
||||
"is_active": "Ενεργό",
|
||||
"is_owner": "Ιδιοκτήτης",
|
||||
"name": "Ονομασία",
|
||||
"system": "Σύστημα"
|
||||
"system": "Σύστημα",
|
||||
"username": "Όνομα χρήστη"
|
||||
}
|
||||
},
|
||||
"users_privileges_note": "Η ομάδα χρηστών είναι ένα έργο σε εξέλιξη. Ο χρήστης δεν θα μπορεί να διαχειριστεί την παρουσία μέσω της διεπαφής χρήστη. Εξακολουθούμε να ελέγχουμε όλα τα τελικά σημεία API διαχείρισης για να διασφαλίσουμε ότι περιορίζουν σωστά την πρόσβαση στους διαχειριστές."
|
||||
},
|
||||
"zha": {
|
||||
"add_device": "Προσθήκη συσκευής",
|
||||
"add_device_page": {
|
||||
"discovered_text": "Οι συσκευές θα εμφανιστούν εδώ μόλις ανακαλυφθούν.",
|
||||
"discovery_text": "Οι ανακαλυφθείσες συσκευές θα εμφανιστούν εδώ. Ακολουθήστε τις οδηγίες για τις συσκευές σας και τοποθετήστε τις συσκευές στη λειτουργία αντιστοίχισης.",
|
||||
@@ -2404,6 +2515,16 @@
|
||||
"value": "Τιμή"
|
||||
},
|
||||
"description": "Διαχείριση του δικτύου Zigbee Home Automation",
|
||||
"device_pairing_card": {
|
||||
"CONFIGURED": "Η διαμόρφωση ολοκληρώθηκε",
|
||||
"CONFIGURED_status_text": "Αρχικοποίηση",
|
||||
"INITIALIZED": "Η προετοιμασία ολοκληρώθηκε",
|
||||
"INITIALIZED_status_text": "Η συσκευή είναι έτοιμη για χρήση",
|
||||
"INTERVIEW_COMPLETE": "Η συνέντευξη ολοκληρώθηκε",
|
||||
"INTERVIEW_COMPLETE_status_text": "Διαμόρφωση",
|
||||
"PAIRED": "Βρέθηκε συσκευή",
|
||||
"PAIRED_status_text": "Έναρξη συνέντευξης"
|
||||
},
|
||||
"devices": {
|
||||
"header": "Zigbee Home Automation - Συσκευή"
|
||||
},
|
||||
@@ -2419,6 +2540,7 @@
|
||||
"unbind_button_label": "Αποσύνδεση ομάδας"
|
||||
},
|
||||
"groups": {
|
||||
"add_group": "Προσθήκη ομάδας",
|
||||
"add_members": "Προσθήκη Μελών",
|
||||
"adding_members": "Προσθήκη Μελών",
|
||||
"caption": "Ομάδες",
|
||||
@@ -2461,7 +2583,11 @@
|
||||
"hint_wakeup": "Μερικές συσκευές όπως οι αισθητήρες Xiaomi έχουν ένα κουμπί αφύπνισης το οποίο μπορείτε να πιέσετε για διαστήματα των ~5 δευτερολέπτων ώστε να κρατήσετε τις συσκευές αφυπνισμένες ενώ αλληλεπιδράτε μαζί τους.",
|
||||
"introduction": "Εκτελέστε εντολές ZHA που επηρεάζουν μια μόνο συσκευή. Επιλέξτε μια συσκευή για να δείτε μια λίστα διαθέσιμων εντολών."
|
||||
},
|
||||
"title": "Οικιακός Αυτοματισμός Zigbee"
|
||||
"title": "Οικιακός Αυτοματισμός Zigbee",
|
||||
"visualization": {
|
||||
"caption": "Απεικόνιση",
|
||||
"header": "Απεικόνιση δικτύου"
|
||||
}
|
||||
},
|
||||
"zone": {
|
||||
"add_zone": "Προσθήκη ζώνης",
|
||||
@@ -2915,7 +3041,8 @@
|
||||
},
|
||||
"picture-glance": {
|
||||
"description": "Η κάρτα \"Ματιά εικόνας\" εμφανίζει μια εικόνα και τις αντίστοιχες καταστάσεις οντότητας ως εικονίδιο. Οι οντότητες στη δεξιά πλευρά επιτρέπουν ενέργειες εναλλαγής, ενώ άλλες εμφανίζουν το παράθυρο διαλόγου περισσότερων πληροφοριών.",
|
||||
"name": "Στιγμιότυπο εικόνας"
|
||||
"name": "Στιγμιότυπο εικόνας",
|
||||
"state_entity": "Κρατική οντότητα"
|
||||
},
|
||||
"picture": {
|
||||
"description": "Η κάρτα Εικόνας σάς επιτρέπει να ορίσετε μια εικόνα που θα χρησιμοποιείται για πλοήγηση σε διάφορες διαδρομές στη διεπαφή σας ή να καλείτε μια υπηρεσία.",
|
||||
@@ -3327,10 +3454,13 @@
|
||||
"change_password": {
|
||||
"confirm_new_password": "Επιβεβαιώστε τον καινούριο κωδικό",
|
||||
"current_password": "Τρέχων κωδικός",
|
||||
"error_new_is_old": "Ο νέος κωδικός πρόσβασης πρέπει να είναι διαφορετικός από τον τρέχοντα κωδικό πρόσβασης",
|
||||
"error_new_mismatch": "Οι νέες τιμές κωδικού πρόσβασης που έχουν εισαχθεί δεν ταιριάζουν",
|
||||
"error_required": "Απαιτείται",
|
||||
"header": "Αλλαγή Κωδικού",
|
||||
"new_password": "Νέος κωδικός",
|
||||
"submit": "Υποβολή"
|
||||
"submit": "Υποβολή",
|
||||
"success": "Ο κωδικός άλλαξε επιτυχώς"
|
||||
},
|
||||
"current_user": "Αυτήν τη στιγμή είστε συνδεδεμένος ως {fullName}.",
|
||||
"customize_sidebar": {
|
||||
|
@@ -929,7 +929,7 @@
|
||||
"filter": "Reload filter entities",
|
||||
"generic": "Reload generic IP camera entities",
|
||||
"generic_thermostat": "Reload generic thermostat entities",
|
||||
"group": "Reload groups, group entities, and notify services",
|
||||
"group": "Reload groups, group entities, and group notify services",
|
||||
"history_stats": "Reload history stats entities",
|
||||
"homekit": "Reload HomeKit",
|
||||
"input_boolean": "Reload input booleans",
|
||||
@@ -942,7 +942,7 @@
|
||||
"person": "Reload people",
|
||||
"ping": "Reload ping binary sensor entities",
|
||||
"reload": "Reload {domain}",
|
||||
"rest": "Reload rest entities and notify services",
|
||||
"rest": "Reload rest entities, and rest notify services",
|
||||
"rpi_gpio": "Reload Raspberry Pi GPIO entities",
|
||||
"scene": "Reload scenes",
|
||||
"script": "Reload scripts",
|
||||
@@ -1258,7 +1258,7 @@
|
||||
"edit_ui": "Edit with UI",
|
||||
"edit_yaml": "Edit as YAML",
|
||||
"enable_disable": "Enable/Disable automation",
|
||||
"introduction": "Use automations to bring your home to live.",
|
||||
"introduction": "Use automations to bring your home to life.",
|
||||
"load_error_not_editable": "Only automations in automations.yaml are editable.",
|
||||
"load_error_unknown": "Error loading automation ({err_no}).",
|
||||
"max": {
|
||||
@@ -1417,12 +1417,14 @@
|
||||
},
|
||||
"blueprint": {
|
||||
"add": {
|
||||
"community_forums": "community forums",
|
||||
"error_no_url": "Please enter the URL of the blueprint.",
|
||||
"file_name": "Blueprint Path",
|
||||
"header": "Import a blueprint",
|
||||
"import_btn": "Preview blueprint",
|
||||
"import_header": "Blueprint \"{name}\"",
|
||||
"import_introduction": "You can import blueprints of other users from Github and the community forums. Enter the URL of the blueprint below.",
|
||||
"import_introduction_link": "You can import blueprints of other users from Github and the {community_link}. Enter the URL of the blueprint below.",
|
||||
"importing": "Loading blueprint...",
|
||||
"raw_blueprint": "Blueprint content",
|
||||
"save_btn": "Import blueprint",
|
||||
@@ -1437,6 +1439,7 @@
|
||||
"confirm_delete_header": "Delete this blueprint?",
|
||||
"confirm_delete_text": "Are you sure you want to delete this blueprint?",
|
||||
"delete_blueprint": "Delete blueprint",
|
||||
"discover_more": "Discover more blueprints",
|
||||
"header": "Blueprint Editor",
|
||||
"headers": {
|
||||
"domain": "Domain",
|
||||
@@ -2256,7 +2259,7 @@
|
||||
"without_device": "Entities without device"
|
||||
},
|
||||
"icon": "Icon",
|
||||
"introduction": "Use scenes to bring your home to live.",
|
||||
"introduction": "Use scenes to bring your home to life.",
|
||||
"load_error_not_editable": "Only scenes in scenes.yaml are editable.",
|
||||
"load_error_unknown": "Error loading scene ({err_no}).",
|
||||
"name": "Name",
|
||||
@@ -2342,7 +2345,7 @@
|
||||
"filter": "Reload filter entities",
|
||||
"generic": "Reload generic IP camera entities",
|
||||
"generic_thermostat": "Reload generic thermostat entities",
|
||||
"group": "Reload groups, group entities, and notify services",
|
||||
"group": "Reload groups, group entities, and group notify services",
|
||||
"heading": "YAML configuration reloading",
|
||||
"history_stats": "Reload history stats entities",
|
||||
"homekit": "Reload HomeKit",
|
||||
@@ -2357,7 +2360,7 @@
|
||||
"person": "Reload people",
|
||||
"ping": "Reload ping binary sensor entities",
|
||||
"reload": "Reload {domain}",
|
||||
"rest": "Reload rest entities and notify services",
|
||||
"rest": "Reload rest entities, and rest notify services",
|
||||
"rpi_gpio": "Reload Raspberry Pi GPIO entities",
|
||||
"scene": "Reload scenes",
|
||||
"script": "Reload scripts",
|
||||
@@ -2402,7 +2405,7 @@
|
||||
"description": "Description",
|
||||
"name": "Name",
|
||||
"new_tag": "New tag",
|
||||
"tag_id": "Tag id",
|
||||
"tag_id": "Tag ID",
|
||||
"tag_id_placeholder": "Autogenerated when left empty",
|
||||
"update": "Update",
|
||||
"usage": "A tag can trigger an automation when scanned, you can use NFC tags, QR codes or any other kind of tag. Use our {companion_link} to write this tag to a programmable NFC tag or create a QR code below."
|
||||
|
@@ -706,10 +706,10 @@
|
||||
"never": "Nunca",
|
||||
"past": "Hace {time}",
|
||||
"past_duration": {
|
||||
"day": "hace {count} {count, plural,\none {día}\nother {días}\n}",
|
||||
"hour": "hace {count} {count, plural,\none {hora}\nother {horas}\n}",
|
||||
"minute": "hace {count} {count, plural,\none {minuto}\nother {minutos}\n}",
|
||||
"second": "hace {count} {count, plural,\none {segundo}\nother {segundos}\n}",
|
||||
"day": "Hace {count} {count, plural,\none {día}\nother {días}\n}",
|
||||
"hour": "Hace {count} {count, plural,\none {hora}\nother {horas}\n}",
|
||||
"minute": "Hace {count} {count, plural,\none {minuto}\nother {minutos}\n}",
|
||||
"second": "Hace {count} {count, plural,\none {segundo}\nother {segundos}\n}",
|
||||
"week": "hace {count} {count, plural,\none {semana}\nother {semanas}\n}"
|
||||
}
|
||||
},
|
||||
@@ -1169,7 +1169,7 @@
|
||||
"blueprint_to_use": "Plano a usar",
|
||||
"header": "Plano",
|
||||
"inputs": "Entradas",
|
||||
"manage_blueprints": "Administrar planos",
|
||||
"manage_blueprints": "Administra los planos",
|
||||
"no_blueprints": "No tienes ningún plano",
|
||||
"no_inputs": "Este plano no tiene ninguna entrada."
|
||||
},
|
||||
@@ -1417,12 +1417,14 @@
|
||||
},
|
||||
"blueprint": {
|
||||
"add": {
|
||||
"community_forums": "foros de la comunidad",
|
||||
"error_no_url": "Por favor, introduce la URL del plano.",
|
||||
"file_name": "Ruta del plano",
|
||||
"header": "Importar un plano",
|
||||
"import_btn": "Vista previa del plano",
|
||||
"import_header": "Plano \"{name}\"",
|
||||
"import_introduction": "Puedes importar planos de otros usuarios desde Github y los foros de la comunidad. Introduce la URL del plano a continuación.",
|
||||
"import_introduction_link": "Puedes importar planos de otros usuarios desde Github y {community_link}. Introduce la URL del plano a continuación.",
|
||||
"importing": "Cargando plano...",
|
||||
"raw_blueprint": "Contenido del plano",
|
||||
"save_btn": "Importar plano",
|
||||
@@ -1431,12 +1433,13 @@
|
||||
"url": "URL del plano"
|
||||
},
|
||||
"caption": "Planos",
|
||||
"description": "Administrar planos",
|
||||
"description": "Administra los planos",
|
||||
"overview": {
|
||||
"add_blueprint": "Importar plano",
|
||||
"confirm_delete_header": "¿Eliminar este plano?",
|
||||
"confirm_delete_text": "¿Estás seguro de que quieres borrar este plano?",
|
||||
"delete_blueprint": "Eliminar plano",
|
||||
"discover_more": "Descubre más planos",
|
||||
"header": "Editor de planos",
|
||||
"headers": {
|
||||
"domain": "Dominio",
|
||||
@@ -1987,7 +1990,7 @@
|
||||
"logs": {
|
||||
"caption": "Registros",
|
||||
"clear": "Limpiar",
|
||||
"description": "Ver los registros de Home Assistant",
|
||||
"description": "Ve los registros de Home Assistant",
|
||||
"details": "Detalles de registro ({level})",
|
||||
"load_full_log": "Cargar registro completo de Home Assistant",
|
||||
"loading_log": "Cargando registro de errores...",
|
||||
|
@@ -1258,7 +1258,7 @@
|
||||
"edit_ui": "Redigeeri kasutajaliidese abil",
|
||||
"edit_yaml": "Redigeeri YAML-ina",
|
||||
"enable_disable": "Luba/Keela automatiseering",
|
||||
"introduction": "Kasuta oma kodule elu sisse puhumiseks automatiseeringuid.",
|
||||
"introduction": "Kasuta automatiseeringuid oma kodule elu sisse puhumiseks.",
|
||||
"load_error_not_editable": "Ainult automations.yaml failis asuvad automatiseeringud on muudetavad.",
|
||||
"load_error_unknown": "Viga automatiseeringu laadimisel ({err_no}).",
|
||||
"max": {
|
||||
@@ -1417,12 +1417,14 @@
|
||||
},
|
||||
"blueprint": {
|
||||
"add": {
|
||||
"community_forums": "kogukonna foorumid",
|
||||
"error_no_url": "Sisesta kavandi URL.",
|
||||
"file_name": "Kohaliku kavandifaili asukoht",
|
||||
"header": "Impordi kavand",
|
||||
"import_btn": "Kavandi eelvaade",
|
||||
"import_header": "Kavand \"{name}\"",
|
||||
"import_introduction": "Teiste kasutajate kavandeid saad importida Githubist ja kogukonna foorumitest. Sisesta allpool kavandi URL.",
|
||||
"import_introduction_link": "Teiste kasutajate kavandeid saad importida Githubist ja lehelt {community_link}. Sisesta allpool kavandi URL.",
|
||||
"importing": "Kavandi laadimine...",
|
||||
"raw_blueprint": "Kavandi sisu",
|
||||
"save_btn": "Impordi kavand",
|
||||
@@ -1437,6 +1439,7 @@
|
||||
"confirm_delete_header": "Kas kustutada see kavand?",
|
||||
"confirm_delete_text": "Kas soovid kindlasti selle kavandi kustutada?",
|
||||
"delete_blueprint": "Kustuta kavand",
|
||||
"discover_more": "Leia rohkem kavandeid",
|
||||
"header": "Kavandi redaktor",
|
||||
"headers": {
|
||||
"domain": "Domeen",
|
||||
@@ -1892,7 +1895,7 @@
|
||||
"lovelace": {
|
||||
"dashboards": "Vaated",
|
||||
"mode": "Režiim",
|
||||
"resources": "Ressursid"
|
||||
"resources": "Ressursse"
|
||||
}
|
||||
},
|
||||
"manage": "Halda",
|
||||
@@ -2256,7 +2259,7 @@
|
||||
"without_device": "Olemid ilma seadmeta"
|
||||
},
|
||||
"icon": "Ikoon",
|
||||
"introduction": "Kasutage stseene, et oma kodu mõnusamaks muuta.",
|
||||
"introduction": "Kasutage stseene, et oma kodu nutikamaks muuta.",
|
||||
"load_error_not_editable": "Ainult scenes.yaml failis asuvad stseenid on muudetavad.",
|
||||
"load_error_unknown": "Viga stseeni laadimisel ({err_no}).",
|
||||
"name": "Nimi",
|
||||
@@ -2342,7 +2345,7 @@
|
||||
"filter": "TAASLAE FILTREERITUD OLEMID",
|
||||
"generic": "TAASLAE IP KAAMERAD",
|
||||
"generic_thermostat": "TAASLAE TERMOSTAADID",
|
||||
"group": "Taaslae grupid",
|
||||
"group": "Taaslae grupid, grupi olemid ja teavitusteenused",
|
||||
"heading": "YAML konfiguratsiooni taaslaadimine",
|
||||
"history_stats": "TAASLAE OLEMITE AJALUGU",
|
||||
"homekit": "Taaslae HomeKit andmed",
|
||||
|
@@ -553,7 +553,8 @@
|
||||
},
|
||||
"blueprint-picker": {
|
||||
"add_user": "Lisää käyttäjä",
|
||||
"remove_user": "Poista käyttäjä"
|
||||
"remove_user": "Poista käyttäjä",
|
||||
"select_blueprint": "Valitse pohjapiirros"
|
||||
},
|
||||
"data-table": {
|
||||
"no-data": "Ei dataa",
|
||||
@@ -694,9 +695,23 @@
|
||||
"week": "{count} {count, plural,\n one {viikko}\n other {viikkoa}\n}"
|
||||
},
|
||||
"future": "{time} kuluttua",
|
||||
"future_duration": {
|
||||
"day": "{count} {count, plural,\n one {päivän}\n other {päivän}\n} kuluessa",
|
||||
"hour": "{count} {count, plural,\none {tunnin\nother {tunnin}\n} kuluessa",
|
||||
"minute": "{count} {count, plural,\none {minuutin}\nother {minuutin}\n} kuluessa",
|
||||
"second": "{count} {count, plural,\none {sekunnin}\nother {sekunnin}\n} kuluessa",
|
||||
"week": "{count} {count, plural,\n one {viikon}\n other {viikon}\n} kuluessa"
|
||||
},
|
||||
"just_now": "Juuri nyt",
|
||||
"never": "Ei koskaan",
|
||||
"past": "{time} sitten"
|
||||
"past": "{time} sitten",
|
||||
"past_duration": {
|
||||
"day": "{count} {count, plural,\n one {päivä}\n other {päivää}\n} sitten",
|
||||
"hour": "{count} {count, plural,\none {tunti}\nother {tuntia}\n} sitten",
|
||||
"minute": "{count} {count, plural,\none {minuutti}\nother {minuuttia}\n} sitten",
|
||||
"second": "{count} {count, plural,\none {sekunti}\nother {sekuntia}\n} sitten",
|
||||
"week": "{count} {count, plural,\n one {viikkoa}\n other {viikkoa}\n} sitten"
|
||||
}
|
||||
},
|
||||
"service-picker": {
|
||||
"service": "Palvelu"
|
||||
@@ -814,6 +829,7 @@
|
||||
"dismiss": "Sulje ikkuna",
|
||||
"edit": "Muokkaa kohdetta",
|
||||
"history": "Historia",
|
||||
"last_changed": "Viimeksi muutettu",
|
||||
"last_updated": "Viimeksi päivitetty",
|
||||
"person": {
|
||||
"create_zone": "Luo vyöhyke nykyisestä sijainnista"
|
||||
@@ -875,6 +891,7 @@
|
||||
"navigation": {
|
||||
"areas": "Alueet",
|
||||
"automation": "Automaatiot",
|
||||
"blueprint": "Pohjapiirrokset",
|
||||
"core": "Yleinen",
|
||||
"customize": "Kustomointi",
|
||||
"devices": "Laitteet",
|
||||
@@ -894,6 +911,7 @@
|
||||
"zone": "Alueet"
|
||||
},
|
||||
"reload": {
|
||||
"filesize": "Päivitä tiedostojen koot",
|
||||
"homekit": "Lataa HomeKit uudelleen",
|
||||
"input_boolean": "Lataa booleanit uudelleen",
|
||||
"input_datetime": "Lataa syöttöpäivämäärät uudelleen",
|
||||
@@ -903,7 +921,14 @@
|
||||
"rpi_gpio": "Lataa Raspberry Pi GPIO entiteetit uudelleen",
|
||||
"scene": "Lataa tilanteet uudelleen",
|
||||
"script": "Lataa scriptit uudelleen",
|
||||
"smtp": "Päivitä SMTP-ilmoituspalvelut",
|
||||
"telegram": "Päivitä Telegram-ilmoituspalvelut",
|
||||
"zone": "Lataa alueet uudelleen"
|
||||
},
|
||||
"server_control": {
|
||||
"perform_action": "{action} Palvelin",
|
||||
"restart": "Käynnistä uudelleen",
|
||||
"stop": "Pysäytä"
|
||||
}
|
||||
},
|
||||
"filter_placeholder": "Entiteetin suodatin"
|
||||
@@ -1018,8 +1043,15 @@
|
||||
"caption": "Automaatiot",
|
||||
"description": "Luo ja muokkaa automaatioita",
|
||||
"dialog_new": {
|
||||
"blueprint": {
|
||||
"use_blueprint": "Käytä pohjapiirrosta"
|
||||
},
|
||||
"header": "Luo uusi automaatio",
|
||||
"how": "Miten haluat luoda uuden automaation?"
|
||||
"how": "Miten haluat luoda uuden automaation?",
|
||||
"thingtalk": {
|
||||
"header": "Kuvaile automaatiota, jonka haluat luoda",
|
||||
"intro": "Ja yritämme luoda sen sinulle. Esimerkiksi: Sammuta valot, kun lähden."
|
||||
}
|
||||
},
|
||||
"editor": {
|
||||
"actions": {
|
||||
@@ -1101,6 +1133,9 @@
|
||||
"unsupported_action": "Toimintoa {action} ei tueta"
|
||||
},
|
||||
"alias": "Nimi",
|
||||
"blueprint": {
|
||||
"inputs": "Tulot"
|
||||
},
|
||||
"conditions": {
|
||||
"add": "Lisää ehto",
|
||||
"delete": "Poista",
|
||||
@@ -1344,9 +1379,15 @@
|
||||
},
|
||||
"blueprint": {
|
||||
"add": {
|
||||
"file_name": "Blueprint polku"
|
||||
"community_forums": "yhteisön keskustelualueet",
|
||||
"file_name": "Blueprint polku",
|
||||
"import_introduction_link": "Voit tuoda muiden käyttäjien piirustuksia Githubista ja {community_link}. Kirjoita piirustuksen URL-osoite alle.",
|
||||
"raw_blueprint": "Piirustuksen sisältö",
|
||||
"save_btn": "Tuo pohjapiirros"
|
||||
},
|
||||
"overview": {
|
||||
"delete_blueprint": "Poista pohjapiirros",
|
||||
"discover_more": "Löydä lisää piirustuksia",
|
||||
"headers": {
|
||||
"domain": "Toimialue",
|
||||
"file_name": "Tiedoston nimi",
|
||||
@@ -1627,6 +1668,7 @@
|
||||
"integration": "Integraatio",
|
||||
"user": "Käyttäjä"
|
||||
},
|
||||
"enabled_cause": "Laite on poistettu käytöstä. Syy: {cause} .",
|
||||
"enabled_description": "Poistettuja laitteita ei näytetä, ja laitteeseen kuuluvat kohteet poistetaan käytöstä, eikä niitä lisätä Home Assistantiin.",
|
||||
"enabled_label": "Ota laite käyttöön",
|
||||
"entities": {
|
||||
@@ -1835,6 +1877,7 @@
|
||||
"reload_restart_confirm": "Viimeistele tämän integroinnin uudelleenlataaminen käynnistämällä Home Assistant uudelleen",
|
||||
"rename": "Nimeä uudelleen",
|
||||
"restart_confirm": "Käynnistä Home Assistant uudellen viimeistelläksesi tämän integraation poistamisen",
|
||||
"services": "{count} {count, plural,\n one {palvelut}\n other {palvelua}\n}",
|
||||
"settings_button": "Muokkaa {integration}-asetuksia",
|
||||
"system_options": "Järjestelmäasetukset",
|
||||
"system_options_button": "{integration}-järjestelmän asetukset",
|
||||
@@ -2052,6 +2095,7 @@
|
||||
"product_manual": "Tuotteen käyttöopas"
|
||||
},
|
||||
"node_query_stages": {
|
||||
"associations": "Päivitetään yhdistysryhmiä ja jäsenyyksiä",
|
||||
"cacheload": "Ladataan tietoja OpenZWave-välimuistitiedostosta. Akkukäyttöiset solmut pysyvät tässä vaiheessa, kunnes solmu herää.",
|
||||
"complete": "Haastatteluprosessi on valmis",
|
||||
"configuration": "Noudetaan solmun määritysarvot",
|
||||
@@ -3368,6 +3412,7 @@
|
||||
"header": "Kojelauta"
|
||||
},
|
||||
"enable_shortcuts": {
|
||||
"description": "Ota käyttöön tai poista käytöstä pikanäppäimet eri toimintojen suorittamiseksi käyttöliittymässä.",
|
||||
"header": "Pikanäppäimet"
|
||||
},
|
||||
"force_narrow": {
|
||||
@@ -3414,6 +3459,10 @@
|
||||
"header": "Monivaiheisen tunnistautumisen moduulit"
|
||||
},
|
||||
"push_notifications": {
|
||||
"add_device_prompt": {
|
||||
"input_label": "Laitteen nimi",
|
||||
"title": "Miksi tätä laitetta tulisi kutsua?"
|
||||
},
|
||||
"description": "Lähetä ilmoitukset tälle laitteelle.",
|
||||
"error_load_platform": "Määritä notify.html5-komponentti",
|
||||
"error_use_https": "Vaatii SSL suojauksen",
|
||||
|
@@ -554,7 +554,7 @@
|
||||
"blueprint-picker": {
|
||||
"add_user": "Ajouter un utilisateur",
|
||||
"remove_user": "Supprimer l'utilisateur",
|
||||
"select_blueprint": "Sélectionnez un plan"
|
||||
"select_blueprint": "Sélectionnez un Blueprint"
|
||||
},
|
||||
"data-table": {
|
||||
"no-data": "Pas de données",
|
||||
@@ -901,7 +901,7 @@
|
||||
"navigation": {
|
||||
"areas": "Zones",
|
||||
"automation": "Automatisations",
|
||||
"blueprint": "Plans",
|
||||
"blueprint": "Blueprints",
|
||||
"core": "Général",
|
||||
"customize": "Customisations",
|
||||
"devices": "Appareils",
|
||||
@@ -1073,7 +1073,7 @@
|
||||
"description": "Créez des règles de comportement personnalisées pour votre maison",
|
||||
"dialog_new": {
|
||||
"blueprint": {
|
||||
"use_blueprint": "Utiliser un plan"
|
||||
"use_blueprint": "Utiliser un Blueprint"
|
||||
},
|
||||
"header": "Créer une nouvelle automatisation",
|
||||
"how": "Comment souhaitez-vous créer votre nouvelle automatisation?",
|
||||
@@ -1166,12 +1166,12 @@
|
||||
},
|
||||
"alias": "Nom",
|
||||
"blueprint": {
|
||||
"blueprint_to_use": "Plan à utiliser",
|
||||
"header": "Plan",
|
||||
"blueprint_to_use": "Blueprint à utiliser",
|
||||
"header": "Blueprint",
|
||||
"inputs": "Entrées",
|
||||
"manage_blueprints": "Gérer les plans",
|
||||
"no_blueprints": "Vous n'avez pas de plans",
|
||||
"no_inputs": "Ce plan n'a aucune entrée."
|
||||
"manage_blueprints": "Gérer les Blueprints",
|
||||
"no_blueprints": "Vous n'avez pas de Blueprint",
|
||||
"no_inputs": "Ce Blueprint n'a aucune entrée."
|
||||
},
|
||||
"conditions": {
|
||||
"add": "Ajouter une condition",
|
||||
@@ -1417,34 +1417,37 @@
|
||||
},
|
||||
"blueprint": {
|
||||
"add": {
|
||||
"error_no_url": "Veuillez entrer l'URL du plan",
|
||||
"file_name": "Chemin du fichier de plan local",
|
||||
"header": "Importer un plan",
|
||||
"import_btn": "Aperçu du plan",
|
||||
"import_header": "Importer \" {name} \" (type: {domain} )",
|
||||
"import_introduction": "Vous pouvez importer les plans d'autres utilisateurs de Github et des forums de la communauté. Entrez l'URL du plan ci-dessous.",
|
||||
"importing": "Chargement du plan ...",
|
||||
"raw_blueprint": "Contenu du plan",
|
||||
"save_btn": "Importer un plan",
|
||||
"saving": "Importation du plan ...",
|
||||
"unsupported_blueprint": "Ce plan n'est pas pris en charge",
|
||||
"url": "URL du plan"
|
||||
"community_forums": "Forum de la communauté",
|
||||
"error_no_url": "Veuillez entrer l'URL du Blueprint",
|
||||
"file_name": "Chemin du Blueprint",
|
||||
"header": "Importer un Blueprint",
|
||||
"import_btn": "Aperçu du Blueprint",
|
||||
"import_header": "Blueprint \"{name}\"",
|
||||
"import_introduction": "Vous pouvez importer les Blueprints d'autres utilisateurs à partir de GitHub et du forum de la communauté. Entrez l'URL du Blueprint ci-dessous.",
|
||||
"import_introduction_link": "Vous pouvez importer les Blueprints d'autres utilisateurs à partir de GitHub et du {community_link}. Entrez l'URL du Blueprint ci-dessous.",
|
||||
"importing": "Chargement du Blueprint ...",
|
||||
"raw_blueprint": "Contenu du Blueprint",
|
||||
"save_btn": "Importer un Blueprint",
|
||||
"saving": "Importation du Blueprint ...",
|
||||
"unsupported_blueprint": "Ce Blueprint n'est pas pris en charge",
|
||||
"url": "URL du Blueprint"
|
||||
},
|
||||
"caption": "Plans",
|
||||
"description": "Gérer les plans",
|
||||
"caption": "Blueprints",
|
||||
"description": "Créez des automatisations facilement à l'aide de modèles configurables",
|
||||
"overview": {
|
||||
"add_blueprint": "Importer un plan",
|
||||
"confirm_delete_header": "Supprimer ce plan ?",
|
||||
"confirm_delete_text": "Êtes-vous sûr de vouloir supprimer ce plan ?",
|
||||
"delete_blueprint": "Supprimer le plan",
|
||||
"header": "Éditeur de plans",
|
||||
"add_blueprint": "Importer un Blueprint",
|
||||
"confirm_delete_header": "Supprimer ce Blueprint ?",
|
||||
"confirm_delete_text": "Êtes-vous sûr de vouloir supprimer ce Blueprint ?",
|
||||
"delete_blueprint": "Supprimer le Blueprint",
|
||||
"discover_more": "Découvrez plus de Blueprints",
|
||||
"header": "Éditeur de Blueprints",
|
||||
"headers": {
|
||||
"domain": "Domaine",
|
||||
"file_name": "Nom de fichier",
|
||||
"name": "Nom"
|
||||
},
|
||||
"introduction": "L’éditeur de plans vous permet de créer et de modifier des plans.",
|
||||
"learn_more": "En savoir plus sur les plans",
|
||||
"introduction": "L’éditeur de Blueprint vous permet de créer et de modifier les Blueprints qui permettent de créer des automatisations facilement à l'aide de modèles configurables.",
|
||||
"learn_more": "En savoir plus sur les Blueprints",
|
||||
"use_blueprint": "Créer une automatisation"
|
||||
}
|
||||
},
|
||||
@@ -1735,6 +1738,7 @@
|
||||
"picker": {
|
||||
"filter": {
|
||||
"filter": "Filtre",
|
||||
"hidden_devices": "{number} caché {number, plural,\n one {entité}\n other {entités}\n}",
|
||||
"show_all": "Tout afficher",
|
||||
"show_disabled": "Afficher les appareils désactivés"
|
||||
},
|
||||
@@ -1844,7 +1848,7 @@
|
||||
"info": {
|
||||
"built_using": "Construit en utilisant",
|
||||
"caption": "Info",
|
||||
"copy_github": "Pour Github",
|
||||
"copy_github": "Pour GitHub",
|
||||
"copy_raw": "Texte brut",
|
||||
"custom_uis": "Interfaces utilisateur personnalisées :",
|
||||
"description": "Version, état du système et liens vers la documentation",
|
||||
@@ -2851,7 +2855,7 @@
|
||||
"more-info": "Plus d’infos",
|
||||
"navigate": "Naviguer",
|
||||
"none": "Pas d'action",
|
||||
"toggle": "Interrupteur",
|
||||
"toggle": "Permuter",
|
||||
"url": "URL"
|
||||
},
|
||||
"editor_service_data": "Les informations sur les services ne peuvent être saisies que dans l'éditeur de code",
|
||||
|
@@ -501,7 +501,8 @@
|
||||
},
|
||||
"blueprint-picker": {
|
||||
"add_user": "Bæta við notanda",
|
||||
"remove_user": "Fjarlægja notanda"
|
||||
"remove_user": "Fjarlægja notanda",
|
||||
"select_blueprint": "Velja uppdrátt"
|
||||
},
|
||||
"data-table": {
|
||||
"search": "Leita"
|
||||
@@ -515,12 +516,15 @@
|
||||
"clear": "Hreinsa",
|
||||
"device": "Tæki",
|
||||
"no_area": "Ekkert svæði",
|
||||
"no_devices": "Þú ert ekki með nein tæki",
|
||||
"no_match": "Engin samsvarandi tæki fundust",
|
||||
"show_devices": "Sýna tæki"
|
||||
},
|
||||
"entity": {
|
||||
"entity-picker": {
|
||||
"clear": "Hreinsa",
|
||||
"entity": "Eining"
|
||||
"entity": "Eining",
|
||||
"no_match": "Engar samsvarandi einingar fundust"
|
||||
}
|
||||
},
|
||||
"history_charts": {
|
||||
@@ -561,6 +565,12 @@
|
||||
},
|
||||
"service-picker": {
|
||||
"service": "Þjónusta"
|
||||
},
|
||||
"target-picker": {
|
||||
"add_area_id": "Veldu svæði",
|
||||
"add_device_id": "Velja tæki",
|
||||
"remove_device_id": "Fjarlægja tæki",
|
||||
"remove_entity_id": "Fjarlægja einingu"
|
||||
}
|
||||
},
|
||||
"dialogs": {
|
||||
@@ -768,6 +778,9 @@
|
||||
"caption": "Sjálfvirkni",
|
||||
"description": "Stofna og breyta sjálfvirkni",
|
||||
"dialog_new": {
|
||||
"blueprint": {
|
||||
"use_blueprint": "Nota uppdrátt"
|
||||
},
|
||||
"how": "Hvernig viltu búa til nýju sjálfvirknina?",
|
||||
"thingtalk": {
|
||||
"create": "Stofna",
|
||||
@@ -822,6 +835,9 @@
|
||||
"unsupported_action": "Óstudd aðgerð: {action}"
|
||||
},
|
||||
"alias": "Nafn",
|
||||
"blueprint": {
|
||||
"header": "Uppdráttur"
|
||||
},
|
||||
"conditions": {
|
||||
"add": "Bæta við skilyrði",
|
||||
"delete": "Eyða",
|
||||
@@ -1027,11 +1043,25 @@
|
||||
}
|
||||
},
|
||||
"blueprint": {
|
||||
"add": {
|
||||
"file_name": "Slóð uppdráttar",
|
||||
"header": "Flytja inn uppdrátt",
|
||||
"import_btn": "Forskoða uppdrátt",
|
||||
"importing": "Hleð inn uppdrátt...",
|
||||
"raw_blueprint": "Innihald uppdráttar",
|
||||
"save_btn": "Flytja inn uppdrátt",
|
||||
"saving": "Flyt inn uppdrátt..."
|
||||
},
|
||||
"caption": "Uppdrættir",
|
||||
"overview": {
|
||||
"add_blueprint": "Flytja inn uppdrátt",
|
||||
"delete_blueprint": "Eyða uppdrátt",
|
||||
"discover_more": "Uppgötva fleiri uppdrætti",
|
||||
"headers": {
|
||||
"file_name": "Skráarnafn",
|
||||
"name": "Nafn"
|
||||
}
|
||||
},
|
||||
"learn_more": "Læra meira um hvernig nota á uppdrætti"
|
||||
}
|
||||
},
|
||||
"cloud": {
|
||||
@@ -1188,6 +1218,13 @@
|
||||
"description": "Stjórna tengdum tækjum",
|
||||
"device_info": "Upplýsingar um tæki",
|
||||
"device_not_found": "Tæki fannst ekki.",
|
||||
"disabled": "Afvirkjað",
|
||||
"disabled_by": {
|
||||
"integration": "Samþætting",
|
||||
"user": "Notandi"
|
||||
},
|
||||
"enabled_cause": "Afvirkjað vegna {cause}.",
|
||||
"enabled_label": "Virkja einingu",
|
||||
"entities": {
|
||||
"add_entities_lovelace": "Bæta við í Lovelace",
|
||||
"disabled_entities": "+{count} {count, plural,\n one {óvirk eining}\n other {óvirkar einingar}\n}",
|
||||
@@ -1195,6 +1232,15 @@
|
||||
},
|
||||
"name": "Nafn",
|
||||
"no_devices": "Engin tæki",
|
||||
"picker": {
|
||||
"filter": {
|
||||
"filter": "Sía",
|
||||
"hidden_devices": "{number} hidden {number, plural,\n one {device}\n other {devices}\n}",
|
||||
"show_all": "Sýna allt",
|
||||
"show_disabled": "Sýna óvirk tæki"
|
||||
},
|
||||
"search": "Leit að tækjum"
|
||||
},
|
||||
"scene": {
|
||||
"no_scenes": "Engar senur",
|
||||
"scenes": "Senur"
|
||||
@@ -2184,10 +2230,12 @@
|
||||
"change_password": {
|
||||
"confirm_new_password": "Staðfesta nýtt lykilorð",
|
||||
"current_password": "Núverandi lykilorð",
|
||||
"error_new_is_old": "Nýja lykilorðið verður að vera annað en núverandi lykilorð",
|
||||
"error_required": "Skilyrt",
|
||||
"header": "Breyta lykilorði",
|
||||
"new_password": "Nýtt lykilorð",
|
||||
"submit": "Senda"
|
||||
"submit": "Senda",
|
||||
"success": "Lykilorðið breytt"
|
||||
},
|
||||
"current_user": "Þú ert skráð(ur) inn sem {fullName}.",
|
||||
"customize_sidebar": {
|
||||
|
@@ -418,8 +418,8 @@
|
||||
},
|
||||
"lock": {
|
||||
"code": "Codice",
|
||||
"lock": "Blocco",
|
||||
"unlock": "Sbloccato"
|
||||
"lock": "Blocca",
|
||||
"unlock": "Sblocca"
|
||||
},
|
||||
"media_player": {
|
||||
"browse_media": "Sfoglia i file multimediali",
|
||||
@@ -529,7 +529,7 @@
|
||||
"rename": "Rinomina",
|
||||
"save": "Salva",
|
||||
"skip": "Salta",
|
||||
"stay": "Rimanere",
|
||||
"stay": "Rimani",
|
||||
"successfully_deleted": "Cancellato con successo",
|
||||
"successfully_saved": "Salvataggio riuscito",
|
||||
"undo": "Annulla",
|
||||
@@ -609,13 +609,13 @@
|
||||
"was_closed": "era chiuso",
|
||||
"was_connected": "era connesso",
|
||||
"was_disconnected": "era disconnesso",
|
||||
"was_locked": "era bloccato",
|
||||
"was_locked": "è stato bloccato",
|
||||
"was_low": "era basso",
|
||||
"was_normal": "era normale",
|
||||
"was_opened": "era aperto",
|
||||
"was_plugged_in": "è stato collegato",
|
||||
"was_safe": "era sicuro",
|
||||
"was_unlocked": "era sbloccato",
|
||||
"was_unlocked": "è stato sbloccato",
|
||||
"was_unplugged": "è stato scollegato",
|
||||
"was_unsafe": "non era sicuro"
|
||||
}
|
||||
@@ -1258,7 +1258,7 @@
|
||||
"edit_ui": "Modifica con l'Interfaccia Utente",
|
||||
"edit_yaml": "Modifica come YAML",
|
||||
"enable_disable": "Abilitare/Disabilitare l'automazione",
|
||||
"introduction": "Usa le automazioni per far vivere la tua casa.",
|
||||
"introduction": "Usa le automazioni per dare vita alla tua casa.",
|
||||
"load_error_not_editable": "Solo le Automazioni in automations.yaml sono modificabili.",
|
||||
"load_error_unknown": "Errore durante il caricamento dell'Automazione ({err_no}).",
|
||||
"max": {
|
||||
@@ -1266,7 +1266,7 @@
|
||||
"queued": "Lunghezza della coda"
|
||||
},
|
||||
"modes": {
|
||||
"description": "La modalità controlla cosa succede quando l'automazione viene attivata mentre le azioni sono ancora in esecuzione da una attivazione precedente. Controllare {documentation_link} per maggiori informazioni.",
|
||||
"description": "La Modalità controlla cosa succede quando l'automazione viene attivata mentre le azioni sono ancora in esecuzione da una attivazione precedente. Controllare la {documentation_link} per maggiori informazioni.",
|
||||
"documentation": "documentazione di automazione",
|
||||
"label": "Modalità",
|
||||
"parallel": "Parallelo",
|
||||
@@ -1417,12 +1417,14 @@
|
||||
},
|
||||
"blueprint": {
|
||||
"add": {
|
||||
"community_forums": "forum della comunità",
|
||||
"error_no_url": "Inserisci l'URL del progetto.",
|
||||
"file_name": "Percorso del progetto",
|
||||
"header": "Importa un progetto",
|
||||
"import_btn": "Anteprima del progetto",
|
||||
"import_header": "Progetto \"{name}\"",
|
||||
"import_introduction": "Puoi importare progetti di altri utenti da Github e dai forum della comunità. Immettere l'URL del progetto di seguito.",
|
||||
"import_introduction_link": "Puoi importare progetti di altri utenti da Github e {community_link} . Immettere l'URL del progetto di seguito.",
|
||||
"importing": "Caricamento progetto ...",
|
||||
"raw_blueprint": "Contenuto del progetto",
|
||||
"save_btn": "Importa progetto",
|
||||
@@ -1437,6 +1439,7 @@
|
||||
"confirm_delete_header": "Eliminare questo progetto?",
|
||||
"confirm_delete_text": "Sei sicuro di voler eliminare questo progetto?",
|
||||
"delete_blueprint": "Elimina progetto",
|
||||
"discover_more": "Scopri altri Progetti",
|
||||
"header": "Editor del progetto",
|
||||
"headers": {
|
||||
"domain": "Dominio",
|
||||
@@ -1737,9 +1740,9 @@
|
||||
"filter": "Filtro",
|
||||
"hidden_devices": "nascosto/i {number} {number, plural,\n one {dispositivo}\n other {dispositivi}\n}",
|
||||
"show_all": "Mostra tutto",
|
||||
"show_disabled": "Mostra dispositivi disabilitati"
|
||||
"show_disabled": "Mostra i dispositivi disabilitati"
|
||||
},
|
||||
"search": "Cerca dispositivi"
|
||||
"search": "Cerca i dispositivi"
|
||||
},
|
||||
"scene": {
|
||||
"create": "Crea una Scena con il dispositivo",
|
||||
@@ -1865,10 +1868,10 @@
|
||||
"system_health": {
|
||||
"checks": {
|
||||
"cloud": {
|
||||
"alexa_enabled": "Alexa abilitato",
|
||||
"can_reach_cert_server": "Raggiungi il server dei certificati",
|
||||
"can_reach_cloud": "Raggiungi Home Assistant Cloud",
|
||||
"can_reach_cloud_auth": "Raggiungi il server di autenticazione",
|
||||
"alexa_enabled": "Alexa abilitata",
|
||||
"can_reach_cert_server": "Server dei Certificati raggiungibile",
|
||||
"can_reach_cloud": "Home Assistant Cloud raggiungibile",
|
||||
"can_reach_cloud_auth": "Server di Autenticazione raggiungibile",
|
||||
"google_enabled": "Google abilitato",
|
||||
"logged_in": "Accesso effettuato",
|
||||
"relayer_connected": "Relayer connesso",
|
||||
@@ -2293,7 +2296,7 @@
|
||||
"id": "ID Entità",
|
||||
"id_already_exists": "Questo ID esiste già",
|
||||
"id_already_exists_save_error": "Non è possibile salvare questo script perché l'ID non è univoco, scegliere un altro ID o lasciarlo vuoto per generarne automaticamente uno.",
|
||||
"introduction": "Utilizzare gli script per eseguire una sequenza di azioni.",
|
||||
"introduction": "Utilizza gli Script per eseguire una sequenza di azioni.",
|
||||
"link_available_actions": "Ulteriori informazioni sulle azioni disponibili.",
|
||||
"load_error_not_editable": "Solo gli script all'interno di scripts.yaml sono modificabili.",
|
||||
"max": {
|
||||
@@ -2301,8 +2304,8 @@
|
||||
"queued": "Lunghezza della coda"
|
||||
},
|
||||
"modes": {
|
||||
"description": "La modalità controlla cosa succede quando lo script viene invocato mentre è ancora in esecuzione da una o più invocazioni precedenti. Controllare il {documentation_link} per maggiori informazioni.",
|
||||
"documentation": "documentazione dello script",
|
||||
"description": "La Modalità controlla cosa succede quando lo script viene invocato mentre è ancora in esecuzione una o più invocazioni precedenti. Controllare la {documentation_link} per maggiori informazioni.",
|
||||
"documentation": "documentazione degli script",
|
||||
"label": "Modalità",
|
||||
"parallel": "Parallelo",
|
||||
"queued": "In coda",
|
||||
@@ -2311,7 +2314,7 @@
|
||||
},
|
||||
"save_script": "Salva script",
|
||||
"sequence": "Sequenza",
|
||||
"sequence_sentence": "Sequenza di azioni di questo script."
|
||||
"sequence_sentence": "Sequenza delle azioni di questo Script."
|
||||
},
|
||||
"picker": {
|
||||
"add_script": "Aggiungi script",
|
||||
@@ -2402,7 +2405,7 @@
|
||||
"description": "Descrizione",
|
||||
"name": "Nome",
|
||||
"new_tag": "Nuova etichetta",
|
||||
"tag_id": "Id etichetta",
|
||||
"tag_id": "ID etichetta",
|
||||
"tag_id_placeholder": "Autogenerato quando lasciato vuoto",
|
||||
"update": "Aggiorna",
|
||||
"usage": "Una etichetta può attivare un'automazione quando viene scansionata, puoi utilizzare etichette NFC, codici QR o qualsiasi altro tipo di tag. Utilizza il nostro {companion_link} per scrivere questa etichetta su un tag NFC programmabile o crea un codice QR di seguito."
|
||||
@@ -2592,7 +2595,7 @@
|
||||
"configured_in_yaml": "Le zone configurate tramite configuration.yaml non possono essere modificate tramite l'interfaccia utente.",
|
||||
"confirm_delete": "Sei sicuro di voler cancellare questa zona?",
|
||||
"create_zone": "Crea zona",
|
||||
"description": "Gestire le zone in cui si desidera tenere traccia delle persone",
|
||||
"description": "Gestisci le zone in cui si desidera tenere traccia delle persone",
|
||||
"detail": {
|
||||
"create": "Crea",
|
||||
"delete": "Elimina",
|
||||
|
@@ -1403,12 +1403,14 @@
|
||||
},
|
||||
"blueprint": {
|
||||
"add": {
|
||||
"community_forums": "コミュニティフォーラム",
|
||||
"error_no_url": "設計図のURLを入力してください。",
|
||||
"file_name": "設計図のパス",
|
||||
"header": "新しい設計図を追加する",
|
||||
"import_btn": "設計図をインポートする",
|
||||
"import_header": "インポート{name} ( {domain} )",
|
||||
"import_introduction": "Github やコミュニティフォーラムから他のユーザーの設計図をインポートできます。以下に、設計図の URL を入力します。",
|
||||
"import_introduction_link": "他のユーザーの設計図をGithubと{community_link}からインポートできます。以下に設計図のURLを入力します。",
|
||||
"importing": "設計図をインポートしています...",
|
||||
"raw_blueprint": "設計図コンテンツ",
|
||||
"save_btn": "設計図の保存",
|
||||
@@ -1423,6 +1425,7 @@
|
||||
"confirm_delete_header": "この設計図を削除しますか?",
|
||||
"confirm_delete_text": "この設計図を削除してもよ思いますか?",
|
||||
"delete_blueprint": "設計図を削除",
|
||||
"discover_more": "より多くの設計図を見る",
|
||||
"header": "設計図エディタ",
|
||||
"headers": {
|
||||
"domain": "ドメイン",
|
||||
@@ -3343,7 +3346,7 @@
|
||||
"working": "お待ちください"
|
||||
},
|
||||
"initializing": "初期化中",
|
||||
"logging_in_with": "** {authProviderName} **でログインしています。",
|
||||
"logging_in_with": "**{authProviderName}**でログインします。",
|
||||
"pick_auth_provider": "またはログイン"
|
||||
},
|
||||
"page-demo": {
|
||||
|
@@ -547,6 +547,8 @@
|
||||
"add_new": "Neien Beräich dobäisetzen...",
|
||||
"area": "Beräich",
|
||||
"clear": "Läschen",
|
||||
"no_areas": "Du hues keng Beräicher",
|
||||
"no_match": "Keng passend Beräicher fonnt",
|
||||
"show_areas": "Beräicher uweisen"
|
||||
},
|
||||
"blueprint-picker": {
|
||||
@@ -567,6 +569,8 @@
|
||||
"clear": "Läschen",
|
||||
"device": "Apparat",
|
||||
"no_area": "Kee Beräich",
|
||||
"no_devices": "Du hues keng Apparater.",
|
||||
"no_match": "Keng passend Apparater fonnt",
|
||||
"show_devices": "Apparater uweisen",
|
||||
"toggle": "Ëmschalten"
|
||||
},
|
||||
@@ -578,6 +582,7 @@
|
||||
"entity-picker": {
|
||||
"clear": "Läschen",
|
||||
"entity": "Entitéit",
|
||||
"no_match": "Keng passend Entitéite fonnt",
|
||||
"show_entities": "Entitéite uweisen"
|
||||
}
|
||||
},
|
||||
@@ -638,7 +643,7 @@
|
||||
"season": "Saison",
|
||||
"track": "Piste",
|
||||
"tv_show": "TV Sendung",
|
||||
"url": "Url",
|
||||
"url": "URL",
|
||||
"video": "Video"
|
||||
},
|
||||
"content-type": {
|
||||
@@ -701,6 +706,8 @@
|
||||
"add_area_id": "Beräich auswielen",
|
||||
"add_device_id": "Apparat auswielen",
|
||||
"add_entity_id": "Entitéit auswielen",
|
||||
"expand_area_id": "Erweider dëse Beräich an de getrennten Apparater an Entitéiten déi et enthält. Nom Ausbau ginn d'Apparater an d'Entitéiten net aktualiséiert wann de Beräich ännert.",
|
||||
"expand_device_id": "Erweider dësen Apparat a getrennten Entitéiten. Nom Ausbau gëtt net d'Entitéite aktualiséiert wann den Apparat ännert.",
|
||||
"remove_area_id": "Beräich läschen",
|
||||
"remove_device_id": "Apparat läschen",
|
||||
"remove_entity_id": "Entitéit läschen"
|
||||
@@ -730,6 +737,7 @@
|
||||
"delete": "Läschen",
|
||||
"device_disabled": "Den Apparat vun dëser Entitéit ass déaktivéiert.",
|
||||
"enabled_cause": "Desaktivéiert duerch {cause}.",
|
||||
"enabled_delay_confirm": "Déi aktivéiert Entitéite ginn am Home Assistant an {Delay} Sekonnen dobäigesat",
|
||||
"enabled_description": "Deaktivéiert Entitéiten ginn net am Home Assistant bäigesat.",
|
||||
"enabled_label": "Entitéit aktivéieren",
|
||||
"enabled_restart_confirm": "Start Home Assistant nei fir dës Entitéiten z'aktivéieren",
|
||||
@@ -743,7 +751,7 @@
|
||||
"update": "Aktualiséieren"
|
||||
},
|
||||
"faq": "Dokumentatioun",
|
||||
"no_unique_id": "Dës Entitéit huet keng eenzegaarteg ID, dofir kënnen hir Astellungen net am Benotzer Interface geréiert ginn. Kuck {faq_link} fir méi Detailer.",
|
||||
"no_unique_id": "Dës Entitéit (\"{entity_id}\") huet keng eenzegaarteg ID, dofir kënnen hir Astellungen net am Benotzer Interface geréiert ginn. Kuck {faq_link} fir méi Detailer.",
|
||||
"related": "Relatioun",
|
||||
"settings": "Astellungen"
|
||||
},
|
||||
@@ -1016,7 +1024,6 @@
|
||||
"confirmation_text": "All Apparater an dësem Beräich ginn néirens zougewisen.",
|
||||
"confirmation_title": "Sécher fir dëse Beräich ze läsche?"
|
||||
},
|
||||
"description": "Beräicher am Haus verwalten",
|
||||
"editor": {
|
||||
"area_id": "Area ID",
|
||||
"create": "Erstellen",
|
||||
@@ -1038,7 +1045,7 @@
|
||||
},
|
||||
"automation": {
|
||||
"caption": "Automatismen",
|
||||
"description": "Automatismen verwalten",
|
||||
"description": "Erstell eegen Verhaalensregele fir däin Heem",
|
||||
"dialog_new": {
|
||||
"blueprint": {
|
||||
"use_blueprint": "Plang benotzen"
|
||||
@@ -1226,7 +1233,7 @@
|
||||
"edit_ui": "Mam Benotzer Inteface änneren",
|
||||
"edit_yaml": "Als YAML änneren",
|
||||
"enable_disable": "Automatismen aktivéieren/deaktivieren",
|
||||
"introduction": "Benotzt Automatismen fir däin Haus zum Liewen ze bréngen",
|
||||
"introduction": "Benotzt Automatismen fir däin Heem zum Liewen ze bréngen",
|
||||
"load_error_not_editable": "Nëmmen Automatiounen am automations.yaml kënnen editéiert ginn.",
|
||||
"load_error_unknown": "Feeler beim luede vun der Automatioun ({err_no}).",
|
||||
"max": {
|
||||
@@ -1385,16 +1392,18 @@
|
||||
},
|
||||
"blueprint": {
|
||||
"add": {
|
||||
"community_forums": "Gemeinschaftsforen",
|
||||
"error_no_url": "Gëff d'URL vum Plang un.",
|
||||
"file_name": "Lokal Plang Datei Numm",
|
||||
"header": "Neie Plang erstellen",
|
||||
"import_btn": "Plang importéieren",
|
||||
"import_header": "Import \"{name}\" (typ: {domain})",
|
||||
"file_name": "Pad zum Plang",
|
||||
"header": "Plang importéieren",
|
||||
"import_btn": "Virschau vum Plang",
|
||||
"import_header": "Plang: \"{name}\"",
|
||||
"import_introduction": "Du kanns Pl¨ng vun aaner Github Benotzer an Community Forumer importéieren. Gëff d'URL vum Plang an.",
|
||||
"importing": "Plang gëtt importéiert...",
|
||||
"import_introduction_link": "Du kanns Pläng vun anere Github Benotzer an {community_link} importéieren. Gëff d'URL vum Plang ënnen un.",
|
||||
"importing": "Plang gëtt gelueden...",
|
||||
"raw_blueprint": "Plang Inhalt",
|
||||
"save_btn": "Plang späicheren",
|
||||
"saving": "Plang gëtt gespäichert...",
|
||||
"save_btn": "Plang importéieren",
|
||||
"saving": "Plang gëtt importéiert...",
|
||||
"unsupported_blueprint": "Dëse Plang gëtt net ënnerstëtzt",
|
||||
"url": "URL vum Plang"
|
||||
},
|
||||
@@ -1405,14 +1414,15 @@
|
||||
"confirm_delete_header": "Dëse Plang läschen?",
|
||||
"confirm_delete_text": "Sécher fir dëse Plang ze läsche?",
|
||||
"delete_blueprint": "Plang läschen",
|
||||
"discover_more": "Méi Pläng entdecken",
|
||||
"header": "Plang Editeur",
|
||||
"headers": {
|
||||
"domain": "Domain",
|
||||
"file_name": "Datei Numm",
|
||||
"name": "Numm"
|
||||
},
|
||||
"introduction": "De Plang Editeur erlabt et Pläng z'erstellen an ze veränneren.",
|
||||
"learn_more": "Méi iwwert Plèang léieren",
|
||||
"introduction": "Plang Konfiguratioun erlabt et Pläng z'importéieren an deng Pläng ze verwalten.",
|
||||
"learn_more": "Méi iwwert Pläng léieren",
|
||||
"use_blueprint": "Automatisme erstellen"
|
||||
}
|
||||
},
|
||||
@@ -1496,7 +1506,7 @@
|
||||
"title": "Alexa"
|
||||
},
|
||||
"caption": "Home Assistant Cloud",
|
||||
"description_features": "Steiert vun ënnerwee aus, integréiert mam Alexa an Google Assistant.",
|
||||
"description_features": "Steier vun ënnerwee aus an integréier mam Alexa an Google Assistant.",
|
||||
"description_login": "Ageloggt als {email}",
|
||||
"description_not_login": "Net ageloggt",
|
||||
"dialog_certificate": {
|
||||
@@ -1507,7 +1517,7 @@
|
||||
"will_be_auto_renewed": "Gëtt automatesch verlängert"
|
||||
},
|
||||
"dialog_cloudhook": {
|
||||
"available_at": "De Webhook ass disponibel op der folgender url:",
|
||||
"available_at": "De Webhook ass disponibel op der folgender URL:",
|
||||
"close": "Zoumaachen",
|
||||
"confirm_disable": "Sécher fir dëse Webhook ze desaktivéieren?",
|
||||
"copied_to_clipboard": "An de Tëschespäicher kopéiert",
|
||||
@@ -1591,7 +1601,7 @@
|
||||
},
|
||||
"core": {
|
||||
"caption": "Generell",
|
||||
"description": "Ännert är generell Home Assistant Konfiguratioun",
|
||||
"description": "Eenheetesystem, Standuert, Zäitzone & aner allgemeng Parameteren",
|
||||
"section": {
|
||||
"core": {
|
||||
"core_config": {
|
||||
@@ -1679,15 +1689,17 @@
|
||||
"no_devices": "Keng Apparater"
|
||||
},
|
||||
"delete": "Läschen",
|
||||
"description": "Verwalt verbonnen Apparater",
|
||||
"description": "Verwalt konfiguréiert Apparater",
|
||||
"device_info": "Informatioune vum Apparat",
|
||||
"device_not_found": "Apparat net fonnt.",
|
||||
"disabled": "Deaktivéiert",
|
||||
"disabled_by": {
|
||||
"config_entry": "Konfiguratioun's Entrée",
|
||||
"integration": "Integratioun",
|
||||
"user": "Benotzer"
|
||||
},
|
||||
"enabled_cause": "Dësen Apparat ass duerch {cause} déaktivéiert.",
|
||||
"enabled_description": "Deaktivéiert Apparater gi net ugewisen an Entitéiten déi zum Apparat gehéieren, ginn och deaktivéiert an net zum Home Assistant dobäigesat.",
|
||||
"enabled_label": "Apparat aktivéieren",
|
||||
"entities": {
|
||||
"add_entities_lovelace": "Zu Lovelace bäisetzen",
|
||||
@@ -1730,13 +1742,11 @@
|
||||
"picker": {
|
||||
"disable_selected": {
|
||||
"button": "Ausgewielte deaktivéieren",
|
||||
"confirm_text": "Deaktivéiert Entitéiten ginn net am Home Assistant bäigesat.",
|
||||
"confirm_title": "Wëllt dir {number} Entitéite deaktivéieren?"
|
||||
"confirm_text": "Deaktivéiert Entitéiten ginn net am Home Assistant bäigesat."
|
||||
},
|
||||
"enable_selected": {
|
||||
"button": "Ausgewielten aktivéieren",
|
||||
"confirm_text": "Dës mecht sie rëm am Home Assistant siichtbar wann sie fir de Moment deaktivéiert sinn.",
|
||||
"confirm_title": "Wëllt dir {number} Entitéite aktivéieren?"
|
||||
"confirm_text": "Dës mecht sie rëm am Home Assistant siichtbar wann sie fir de Moment deaktivéiert sinn."
|
||||
},
|
||||
"filter": {
|
||||
"filter": "Filter",
|
||||
@@ -1758,9 +1768,7 @@
|
||||
"remove_selected": {
|
||||
"button": "Ausgewielte läschen",
|
||||
"confirm_partly_text": "Nëmmen {removable} vun den ausgewielten {selected} Entitéite kënne geläscht ginn. Entitéiten kënne nëmmen geläscht ginn wann eng Integratioun déi Entitéiten net méi zur Verfügung stellt. Heiansdo muss Home Assistant frësch gestart ginn fir Entitéiten vun enger geläschten Integratioun ze läschen. Sécher fir déi läschbar Entitéiten ze läschen?",
|
||||
"confirm_partly_title": "Nëmmen {number} ausgewielten Entitéiten kënne geläscht ginn.",
|
||||
"confirm_text": "Du solls déi vun der Lovelace Konfiguratioun an Automatisme läschen falls se dës Entitéiten enthalen.",
|
||||
"confirm_title": "Wëllt dir {number} Entitéite läschen?"
|
||||
"confirm_text": "Du solls déi vun der Lovelace Konfiguratioun an Automatisme läschen falls se dës Entitéiten enthalen."
|
||||
},
|
||||
"search": "Entitéite sichen",
|
||||
"selected": "{number} ausgewielt",
|
||||
@@ -1780,7 +1788,7 @@
|
||||
"header": "Home Assistant astellen",
|
||||
"helpers": {
|
||||
"caption": "Helper",
|
||||
"description": "Elementer déi et erlaaben Automatismen z'erstellen verwalten",
|
||||
"description": "Elementer déi et erlaaben Automatismen z'erstellen",
|
||||
"dialog": {
|
||||
"add_helper": "Helper bäifügen",
|
||||
"add_platform": "{platform} bäifügen",
|
||||
@@ -1812,7 +1820,7 @@
|
||||
"copy_github": "Fir Github",
|
||||
"copy_raw": "Rengen Text",
|
||||
"custom_uis": "Personaliséierte Benotzer Interface:",
|
||||
"description": "Informatioune zu denger Home Assistant Installation uweisen",
|
||||
"description": "Versioun, System Zoustand an Linke zur Dokumentatioun",
|
||||
"developed_by": "Entwéckelt vun enger ganzer Rei fantastesche Leit.",
|
||||
"documentation": "Dokumentatioun",
|
||||
"frontend": "frontend-ui",
|
||||
@@ -1917,7 +1925,7 @@
|
||||
},
|
||||
"configure": "Astellen",
|
||||
"configured": "Konfiguréiert",
|
||||
"description": "Integratioune verwalten",
|
||||
"description": "Integratioune mat Servicer, Apparater, ... verwalten",
|
||||
"details": "Detailer vun der Integratioun",
|
||||
"discovered": "Entdeckt",
|
||||
"home_assistant_website": "Home Assistant Websäit",
|
||||
@@ -1986,7 +1994,7 @@
|
||||
"title": "Titel",
|
||||
"title_required": "Titel ass erfuerderlech.",
|
||||
"update": "Aktualiséieren",
|
||||
"url": "Url",
|
||||
"url": "URL",
|
||||
"url_error_msg": "D'Url ka keen Espace oder speziell Charakteren, ausser _ an - , enthalen."
|
||||
},
|
||||
"picker": {
|
||||
@@ -2002,7 +2010,7 @@
|
||||
"open": "Opmaachen"
|
||||
}
|
||||
},
|
||||
"description": "Deng Lovelace Tableau de Bord verwalten",
|
||||
"description": "Personaliséierte Set vu Kaarten erstellen fir däin Heem ze stéieren",
|
||||
"resources": {
|
||||
"cant_edit_yaml": "Du benotz Lovelace am YAML Modus, dofir kanns du Dir deng Ressourcen net duerch de Benotzer Interface verwalten. Verwalt se an der Konfiguratioun.yaml.",
|
||||
"caption": "Ressourcen",
|
||||
@@ -2014,8 +2022,8 @@
|
||||
"new_resource": "Nei Ressource dobäisetzen",
|
||||
"type": "Typ vun Ressource",
|
||||
"update": "Aktualiséieren",
|
||||
"url": "Url",
|
||||
"url_error_msg": "Url ass een erfuerderlecht Feld",
|
||||
"url": "URL",
|
||||
"url_error_msg": "URL ass een erfuerderlecht Feld",
|
||||
"warning_header": "Opgepasst!",
|
||||
"warning_text": "Ressourcen dobäisetzen ka geféierlech sinn, stell sécher dass d'Quell vun der Ressource bekannt a vertraut ass. Schlecht Ressourcen kënnen dem System seriö schueden."
|
||||
},
|
||||
@@ -2023,7 +2031,7 @@
|
||||
"add_resource": "Ressource dobäisetzen",
|
||||
"headers": {
|
||||
"type": "Typ",
|
||||
"url": "Url"
|
||||
"url": "URL"
|
||||
},
|
||||
"no_resources": "Keng Ressourcen"
|
||||
},
|
||||
@@ -2197,7 +2205,6 @@
|
||||
"scene": {
|
||||
"activated": "Zeen {name} aktivéiert.",
|
||||
"caption": "Zeene",
|
||||
"description": "Zeenen verwalten",
|
||||
"editor": {
|
||||
"default_name": "Nei Zeen",
|
||||
"devices": {
|
||||
@@ -2215,7 +2222,7 @@
|
||||
"without_device": "Entitéiten ouni Apparater"
|
||||
},
|
||||
"icon": "Ikon",
|
||||
"introduction": "Benotzt Zeene fir äert Haus zum Liewen ze bréngen",
|
||||
"introduction": "Benotz Zeene fir däin Heem zum Liewen ze bréngen",
|
||||
"load_error_not_editable": "Nëmme Zeene am scenes.yaml kënnen editéiert ginn.",
|
||||
"load_error_unknown": "Feeler beim luede vun der Zeen ({err_no}).",
|
||||
"name": "Numm",
|
||||
@@ -2241,7 +2248,7 @@
|
||||
},
|
||||
"script": {
|
||||
"caption": "Skripten",
|
||||
"description": "Skript verwalten",
|
||||
"description": "Eng Sequenz vun Aktiounen ausféieren",
|
||||
"editor": {
|
||||
"alias": "Numm",
|
||||
"default_name": "Neie Skript",
|
||||
@@ -2320,7 +2327,7 @@
|
||||
"rpi_gpio": "Raspberry Pi GPIO entitéite frësch lueden",
|
||||
"scene": "Szeene néi lueden",
|
||||
"script": "Skripte nei lueden",
|
||||
"smtp": "SMTP Notifikatioun's Servicer frësh lueden",
|
||||
"smtp": "SMTP Notifikatioun's Servicer frësch lueden",
|
||||
"statistics": "Statiskik Entitéite frësch lueden",
|
||||
"telegram": "Telegram Notifikatioun's Servicer frësch lueden",
|
||||
"template": "Modell Entitéite frësch lueden",
|
||||
@@ -2352,7 +2359,7 @@
|
||||
"confirm_remove": "Sécher fir den Tag {tag} ze läsche?",
|
||||
"confirm_remove_title": "Tag läschen?",
|
||||
"create_automation": "Erstell Automatisme mam Tag",
|
||||
"description": "Tags verwalten",
|
||||
"description": "Automatisme ausléisen wan ee NFC tag, QR code, etc. gescannt gëtt",
|
||||
"detail": {
|
||||
"companion_apps": "Begleeder Apps",
|
||||
"create": "Erstellen",
|
||||
@@ -2387,7 +2394,7 @@
|
||||
"username": "Benotzernumm"
|
||||
},
|
||||
"caption": "Benotzer",
|
||||
"description": "Benotzer verwalten",
|
||||
"description": "Home Assistant Benotzer Konte verwalten",
|
||||
"editor": {
|
||||
"activate_user": "Benotzer aktivéieren",
|
||||
"active": "Aktiv",
|
||||
@@ -2400,7 +2407,7 @@
|
||||
"delete_user": "Benotzer läschen",
|
||||
"group": "Gruppe",
|
||||
"id": "ID",
|
||||
"name": "Numm",
|
||||
"name": "Affichéierte Numm",
|
||||
"new_password": "Neit Passwuert",
|
||||
"owner": "Proprietär",
|
||||
"password_changed": "Passwuert erfollegräich geännert",
|
||||
@@ -2417,8 +2424,8 @@
|
||||
"group": "Grupp",
|
||||
"is_active": "Aktiv",
|
||||
"is_owner": "Besëtzer",
|
||||
"name": "Numm",
|
||||
"system": "System",
|
||||
"name": "Affichéierte Numm",
|
||||
"system": "System erstallt",
|
||||
"username": "Benotzernumm"
|
||||
}
|
||||
},
|
||||
@@ -2800,7 +2807,7 @@
|
||||
}
|
||||
},
|
||||
"changed_toast": {
|
||||
"message": "Lovelace Konfiguratioun gouf geännert, soll frësch geluede ginn fir d'Ânnerunge siichtbar ze machen?",
|
||||
"message": "Lovelace Konfiguratioun gouf geännert, soll frësch geluede ginn fir d'Ännerunge siichtbar ze machen?",
|
||||
"refresh": "Frësch lueden"
|
||||
},
|
||||
"editor": {
|
||||
@@ -2812,7 +2819,7 @@
|
||||
"navigate": "Navigéieren",
|
||||
"none": "Keng Aktioun",
|
||||
"toggle": "Ëmschalten",
|
||||
"url": "Url"
|
||||
"url": "URL"
|
||||
},
|
||||
"editor_service_data": "Service Data kann ee nëmmen am Code Editor aginn",
|
||||
"navigation_path": "Nagiatioun's Pad",
|
||||
@@ -2934,7 +2941,7 @@
|
||||
"theme": "Thema",
|
||||
"title": "Titel",
|
||||
"unit": "Eenheet",
|
||||
"url": "Url"
|
||||
"url": "URL"
|
||||
},
|
||||
"glance": {
|
||||
"columns": "Kolonnen",
|
||||
@@ -3208,7 +3215,7 @@
|
||||
"attribute_not_found": "Attribut {attribute} net disponibel an: {entity}",
|
||||
"entity_non_numeric": "Entitéit ass net numerescher Natur: {entity}",
|
||||
"entity_not_found": "Entitéit net erreechbar: {entity}",
|
||||
"entity_unavailable": "{entity} ass fir de Moment net erreechbar",
|
||||
"entity_unavailable": "Entitéit ass fir de Moment net erreechbar: {entity}",
|
||||
"starting": "Home Assistant start, et wäert nach net alles prett sinn"
|
||||
}
|
||||
},
|
||||
|
@@ -516,7 +516,7 @@
|
||||
"disable": "Deaktiver",
|
||||
"enable": "Aktivér",
|
||||
"error_required": "Nødvendig",
|
||||
"leave": "Forlater",
|
||||
"leave": "Forlate",
|
||||
"loading": "Laster",
|
||||
"menu": "Meny",
|
||||
"next": "Neste",
|
||||
@@ -554,7 +554,7 @@
|
||||
"blueprint-picker": {
|
||||
"add_user": "Legg til bruker",
|
||||
"remove_user": "Fjern bruker",
|
||||
"select_blueprint": "Velg et Blueprint"
|
||||
"select_blueprint": "Velg en Blueprint"
|
||||
},
|
||||
"data-table": {
|
||||
"no-data": "Ingen data",
|
||||
@@ -901,7 +901,7 @@
|
||||
"navigation": {
|
||||
"areas": "Områder",
|
||||
"automation": "Automasjoner",
|
||||
"blueprint": "Blueprints",
|
||||
"blueprint": "Blueprinter",
|
||||
"core": "Generelt",
|
||||
"customize": "Tilpasninger",
|
||||
"devices": "Enheter",
|
||||
@@ -1169,9 +1169,9 @@
|
||||
"blueprint_to_use": "Blueprint å bruke",
|
||||
"header": "Blueprint",
|
||||
"inputs": "Innganger",
|
||||
"manage_blueprints": "Administrer Blueprints",
|
||||
"no_blueprints": "Du har ingen blueprints",
|
||||
"no_inputs": "Denne blueprint har ingen innganger."
|
||||
"manage_blueprints": "Administrer Blueprinter",
|
||||
"no_blueprints": "Du har ingen Blueprinter",
|
||||
"no_inputs": "Denne Blueprinten har ingen innganger"
|
||||
},
|
||||
"conditions": {
|
||||
"add": "Legg til betingelse",
|
||||
@@ -1249,7 +1249,7 @@
|
||||
},
|
||||
"unsupported_condition": "Ingen brukergrensesnitt for bruk: {condition}"
|
||||
},
|
||||
"copy_to_clipboard": "Kopiere til utklippstavle",
|
||||
"copy_to_clipboard": "Kopier til utklippstavle",
|
||||
"default_name": "Ny automasjon",
|
||||
"description": {
|
||||
"label": "Beskrivelse",
|
||||
@@ -1309,7 +1309,7 @@
|
||||
"enter": "Ankommer",
|
||||
"event": "Hendelse:",
|
||||
"label": "Geolokasjon",
|
||||
"leave": "Forlater",
|
||||
"leave": "Forlate",
|
||||
"source": "Kilde",
|
||||
"zone": "Sone"
|
||||
},
|
||||
@@ -1372,7 +1372,7 @@
|
||||
"entity": "Entitet med posisjon",
|
||||
"event": "Hendelse:",
|
||||
"label": "Sone",
|
||||
"leave": "Forlater",
|
||||
"leave": "Forlate",
|
||||
"zone": "Sone"
|
||||
}
|
||||
},
|
||||
@@ -1417,34 +1417,37 @@
|
||||
},
|
||||
"blueprint": {
|
||||
"add": {
|
||||
"error_no_url": "Vennligst skriv inn URL-en til blueprint",
|
||||
"file_name": "Blueprint Bane",
|
||||
"header": "Importer en blueprint",
|
||||
"import_btn": "Forhåndsvisning av blueprint",
|
||||
"community_forums": "fellesskapsforum",
|
||||
"error_no_url": "Vennligst skriv inn URL-en til Blueprinten",
|
||||
"file_name": "Blueprint bane",
|
||||
"header": "Importer en Blueprint",
|
||||
"import_btn": "Forhåndsvisning av Blueprint",
|
||||
"import_header": "Blueprint \"{name}\"",
|
||||
"import_introduction": "Du kan importere blueprints av andre brukere fra Github og fellesskapsforumet. Skriv inn URL-en til blueprint nedenfor.",
|
||||
"importing": "Laster blueprint...",
|
||||
"import_introduction": "Du kan importere Blueprinter av andre brukere fra GitHub og fellesskapsforumet. Skriv inn URL-en til blueprinten nedenfor.",
|
||||
"import_introduction_link": "Du kan importere Blueprinter av andre brukere fra GitHub og {community_link}. Skriv inn URL-en til blueprinten nedenfor.",
|
||||
"importing": "Laster Blueprint...",
|
||||
"raw_blueprint": "Blueprint innhold",
|
||||
"save_btn": "Importer blueprint",
|
||||
"saving": "Importerer blueprint...",
|
||||
"unsupported_blueprint": "Denne blueprinten støttes ikke",
|
||||
"url": "URL til blueprint"
|
||||
"save_btn": "Importer Blueprint",
|
||||
"saving": "Importerer Blueprint...",
|
||||
"unsupported_blueprint": "Denne Blueprinten støttes ikke",
|
||||
"url": "URL til Blueprinten"
|
||||
},
|
||||
"caption": "Blueprints",
|
||||
"description": "Administrer blueprints",
|
||||
"caption": "Blueprinter",
|
||||
"description": "Administrer Blueprinter",
|
||||
"overview": {
|
||||
"add_blueprint": "Importer blueprint",
|
||||
"confirm_delete_header": "Slette denne blueprint'en?",
|
||||
"confirm_delete_text": "Er du sikker på at du vil slette denne blueprint",
|
||||
"delete_blueprint": "Slett blueprint",
|
||||
"header": "Blueprint Editor",
|
||||
"add_blueprint": "Importer Blueprint",
|
||||
"confirm_delete_header": "Slette denne Blueprinten?",
|
||||
"confirm_delete_text": "Er du sikker på at du vil slette denne Blueprinten",
|
||||
"delete_blueprint": "Slett Blueprint",
|
||||
"discover_more": "Oppdag flere Blueprinter",
|
||||
"header": "Blueprint-redigering",
|
||||
"headers": {
|
||||
"domain": "Domene",
|
||||
"file_name": "Filnavn",
|
||||
"name": "Navn"
|
||||
},
|
||||
"introduction": "Med blueprint-konfigurasjonen kan du importere og administrere dine blueprints.",
|
||||
"learn_more": "Finn ut mer om hvordan du bruker blueprints",
|
||||
"introduction": "Med Blueprint-konfigurasjonen kan du importere og behandle dine Blueprinter",
|
||||
"learn_more": "Finn ut mer om hvordan du bruker Blueprinter",
|
||||
"use_blueprint": "Opprett automasjon"
|
||||
}
|
||||
},
|
||||
@@ -2126,7 +2129,7 @@
|
||||
"offline": "OZWDaemon frakoblet",
|
||||
"ready": "Klar til å koble til",
|
||||
"started": "Koblet til MQTT",
|
||||
"starting": "Koble til MQTT",
|
||||
"starting": "Kobler til MQTT",
|
||||
"stopped": "OpenZWave stoppet"
|
||||
},
|
||||
"offline": "Frakoblet",
|
||||
@@ -2149,23 +2152,23 @@
|
||||
"product_manual": "Produkthåndbok"
|
||||
},
|
||||
"node_query_stages": {
|
||||
"associations": "Oppdatere tilknytningsgrupper og medlemskap",
|
||||
"cacheload": "Laste inn informasjon fra Cachefilen for OpenZWave. Batterinoder vil bli på dette stadiet til noden våkner.",
|
||||
"associations": "Oppdaterer tilknytningsgrupper og medlemskap",
|
||||
"cacheload": "Laster inn informasjon fra Cachefilen for OpenZWave. Batterinoder vil bli på dette stadiet til noden våkner.",
|
||||
"complete": "Intervjuprosessen er fullført",
|
||||
"configuration": "Innhenting av konfigurasjonsverdier fra noden",
|
||||
"dynamic": "Få ofte endrede verdier fra noden",
|
||||
"instances": "Innhenting av detaljer om hvilke forekomster eller kanaler en enhet støtter",
|
||||
"manufacturerspecific1": "Hente produsent- og produkt-ID-koder fra noden",
|
||||
"manufacturerspecific2": "Hente flere produsent- og produkt-ID-koder fra noden",
|
||||
"neighbors": "Få en liste over nodens naboer",
|
||||
"nodeinfo": "Innhenting av støttede kommandoklasser fra noden",
|
||||
"nodeplusinfo": "Innhenting av Z-Wave + informasjon fra noden",
|
||||
"probe": "Kontrollere om noden er våken/levende",
|
||||
"protocolinfo": "Få grunnleggende Z-Wave-funksjoner i denne noden fra kontrolleren",
|
||||
"configuration": "Henter konfigurasjonsverdier fra noden",
|
||||
"dynamic": "Henter ofte endrede verdier fra noden",
|
||||
"instances": "Henter detaljer om hvilke forekomster eller kanaler en enhet støtter",
|
||||
"manufacturerspecific1": "Henter produsent- og produkt-ID-koder fra noden",
|
||||
"manufacturerspecific2": "Henter flere produsent- og produkt-ID-koder fra noden",
|
||||
"neighbors": "Henter liste over nodens naboer",
|
||||
"nodeinfo": "Henter støttede kommandoklasser fra noden",
|
||||
"nodeplusinfo": "Henter Z-Wave + informasjon fra noden",
|
||||
"probe": "Kontrollerer om noden er våken/levende",
|
||||
"protocolinfo": "Henter grunnleggende Z-Wave-funksjoner i denne noden fra kontrolleren",
|
||||
"session": "Henter verdier fra noden som sjeldent oppdateres",
|
||||
"static": "Innhenting av statiske verdier fra enheten",
|
||||
"versions": "Hente informasjon om fastvare- og kommandoklasseversjoner",
|
||||
"wakeup": "Sette opp støtte for vekkingskøer og meldinger"
|
||||
"static": "Henter statiske verdier fra enheten",
|
||||
"versions": "Henter informasjon om fastvare- og kommandoklasseversjoner",
|
||||
"wakeup": "Setter opp støtte for vekkingskøer og meldinger"
|
||||
},
|
||||
"node": {
|
||||
"button": "Node detaljer",
|
||||
@@ -2176,14 +2179,14 @@
|
||||
"id": "ID",
|
||||
"manufacturer": "Produsent",
|
||||
"model": "Modell",
|
||||
"query_stage": "Spørringsstadiet",
|
||||
"query_stage": "Spørringsstadie",
|
||||
"zwave_plus": "Z-Wave Plus"
|
||||
},
|
||||
"refresh_node": {
|
||||
"battery_note": "Hvis noden er batteridrevet, må du passe på å vekke den før du fortsetter",
|
||||
"button": "Oppdater node",
|
||||
"complete": "Node oppdatering fullført",
|
||||
"description": "Dette vil fortelle OpenZWave å re-intervjue en node og oppdatere nodens kommandoklasser, evner og verdier.",
|
||||
"complete": "Oppdatering av node fullført",
|
||||
"description": "Dette vil fortelle OpenZWave å re-intervjue en node og oppdatere nodens kommandoklasser, kapabiliteter og verdier.",
|
||||
"node_status": "Node-status",
|
||||
"refreshing_description": "Oppdaterer nodeinformasjon...",
|
||||
"start_refresh_button": "Start oppdatering",
|
||||
@@ -2380,7 +2383,7 @@
|
||||
"validation": {
|
||||
"check_config": "Sjekk konfigurasjonen",
|
||||
"heading": "Validering av konfigurasjon",
|
||||
"introduction": "Valider konfigurasjonen hvis du nylig har gjort endringer i konfigurasjonen og vil forsikre deg om at det hele er gyldig",
|
||||
"introduction": "Valider konfigurasjonen hvis du nylig har gjort endringer i konfigurasjonen og vil forsikre deg om at den er gyldig",
|
||||
"invalid": "Ugyldig konfigurasjon",
|
||||
"valid": "Gyldig konfigurasjon"
|
||||
}
|
||||
@@ -2508,7 +2511,7 @@
|
||||
"add_devices": "Legg til enheter",
|
||||
"clusters": "Klynger",
|
||||
"devices": "Enheter",
|
||||
"manufacturer_code_override": "Overstyring av produsent kode",
|
||||
"manufacturer_code_override": "Overstyring av produsentkode",
|
||||
"value": "Verdi"
|
||||
},
|
||||
"description": "ZigBee Hjemmeautomasjon nettverksadministrasjon",
|
||||
@@ -2672,10 +2675,10 @@
|
||||
},
|
||||
"ozw_log": {
|
||||
"header": "OZW-logg",
|
||||
"introduction": "Vis loggen. 0 er minimum (laster hele loggen) og 1000 er maksimum. Load vil vise en statisk logg og halen vil automatisk oppdatere med det siste spesifiserte antall linjer av loggen.",
|
||||
"introduction": "Vis loggen. 0 er minimum (laster hele loggen) og 1000 er maksimum. Hent vil vise en statisk logg og Følg vil automatisk oppdatere med det siste spesifiserte antall linjer av loggen.",
|
||||
"last_log_lines": "Antall siste logglinjer",
|
||||
"load": "Laste",
|
||||
"tail": "Tail"
|
||||
"load": "Hent",
|
||||
"tail": "Følg"
|
||||
},
|
||||
"services": {
|
||||
"add_node": "Legg til node",
|
||||
@@ -2984,7 +2987,7 @@
|
||||
},
|
||||
"grid": {
|
||||
"description": "Med Rutenett-kortet kan du vise flere kort i et rutenett",
|
||||
"name": "Rutenettet"
|
||||
"name": "Rutenett"
|
||||
},
|
||||
"history-graph": {
|
||||
"description": "Med Historikkgraf-kortet kan du vise en graf for hver av enhetene som er oppført.",
|
||||
|
@@ -1258,7 +1258,7 @@
|
||||
"edit_ui": "Bewerken met UI",
|
||||
"edit_yaml": "Bewerken als YAML",
|
||||
"enable_disable": "Schakel automatisering in/uit",
|
||||
"introduction": "Gebruik automatiseringen om je huis tot leven te brengen.",
|
||||
"introduction": "Gebruik automatiseringen om uw huis tot leven te brengen.",
|
||||
"load_error_not_editable": "Alleen automatiseringen in automations.yaml kunnen worden bewerkt.",
|
||||
"load_error_unknown": "Fout bij laden van automatisering ({err_no}).",
|
||||
"max": {
|
||||
@@ -1417,12 +1417,14 @@
|
||||
},
|
||||
"blueprint": {
|
||||
"add": {
|
||||
"community_forums": "communityforums",
|
||||
"error_no_url": "Voer de URL van de Blueprint in.",
|
||||
"file_name": "Blueprint pad",
|
||||
"header": "Voeg een nieuwe Blueprint toe",
|
||||
"import_btn": "Bekijk een Blueprint",
|
||||
"import_header": "Blueprint \"{name}\"",
|
||||
"import_introduction": "U kunt Blueprints van andere gebruikers importeren vanuit Github en de communityforums. Voer de URL van de Blueprint hieronder in.",
|
||||
"import_introduction_link": "U kunt Blueprints van andere gebruikers importeren vanuit Github en de {community_link} . Voer de URL van de Blueprint hieronder in.",
|
||||
"importing": "Blueprint importeren ...",
|
||||
"raw_blueprint": "Blueprint inhoud",
|
||||
"save_btn": "Blueprint importeren",
|
||||
@@ -1437,6 +1439,7 @@
|
||||
"confirm_delete_header": "Deze Blueprint verwijderen?",
|
||||
"confirm_delete_text": "Weet je zeker dat je deze blauwdruk wilt verwijderen?",
|
||||
"delete_blueprint": "Verwijder Blueprint",
|
||||
"discover_more": "Ontdek meer Blueprints",
|
||||
"header": "Blueprinteditor",
|
||||
"headers": {
|
||||
"domain": "Domein",
|
||||
@@ -1816,7 +1819,7 @@
|
||||
"header": "Configureer Home Assistant",
|
||||
"helpers": {
|
||||
"caption": "Helpers",
|
||||
"description": "Elementen die kunnen helpen bij het maken van automatiseringen.",
|
||||
"description": "Elementen die kunnen helpen bij het maken van automatiseringen",
|
||||
"dialog": {
|
||||
"add_helper": "Helper toevoegen",
|
||||
"add_platform": "{platform} toevoegen",
|
||||
@@ -2209,7 +2212,7 @@
|
||||
"confirm_delete": "Weet je zeker dat je deze persoon wilt verwijderen?",
|
||||
"confirm_delete2": "Alle apparaten die behoren tot deze persoon zullen worden ontkoppeld.",
|
||||
"create_person": "Persoon aanmaken",
|
||||
"description": "Beheer de personen die Home Assistant volgt.",
|
||||
"description": "Beheer de personen die Home Assistant volgt",
|
||||
"detail": {
|
||||
"admin": "Administrator",
|
||||
"allow_login": "Persoon toestaan om in te loggen",
|
||||
@@ -2592,7 +2595,7 @@
|
||||
"configured_in_yaml": "Zones die via configuration.yaml zijn geconfigureerd kunnen niet worden bewerkt in de gebruikers",
|
||||
"confirm_delete": "Weet je zeker dat je deze zone wilt verwijderen?",
|
||||
"create_zone": "Creëer Zone",
|
||||
"description": "Beheer de zones waarin je personen wilt volgen.",
|
||||
"description": "Beheer de zones waarin je personen wilt volgen",
|
||||
"detail": {
|
||||
"create": "Aanmaken",
|
||||
"delete": "Verwijder",
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user