mirror of
https://github.com/home-assistant/frontend.git
synced 2025-08-02 14:07:55 +00:00
Merge pull request #7019 from home-assistant/dev
This commit is contained in:
commit
7d5a27ec0f
@ -153,7 +153,7 @@ export class HassioUpdate extends LitElement {
|
|||||||
item.progress = true;
|
item.progress = true;
|
||||||
const confirmed = await showConfirmationDialog(this, {
|
const confirmed = await showConfirmationDialog(this, {
|
||||||
title: `Update ${item.name}`,
|
title: `Update ${item.name}`,
|
||||||
text: `Are you sure you want to upgrade ${item.name} to version ${item.version}?`,
|
text: `Are you sure you want to update ${item.name} to version ${item.version}?`,
|
||||||
confirmText: "update",
|
confirmText: "update",
|
||||||
dismissText: "cancel",
|
dismissText: "cancel",
|
||||||
});
|
});
|
||||||
|
@ -79,6 +79,7 @@ class HassioSnapshots extends LitElement {
|
|||||||
},
|
},
|
||||||
{ slug: "ssl", name: "SSL", checked: true },
|
{ slug: "ssl", name: "SSL", checked: true },
|
||||||
{ slug: "share", name: "Share", checked: true },
|
{ slug: "share", name: "Share", checked: true },
|
||||||
|
{ slug: "media", name: "Media", checked: true },
|
||||||
{ slug: "addons/local", name: "Local add-ons", checked: true },
|
{ slug: "addons/local", name: "Local add-ons", checked: true },
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -241,7 +242,7 @@ class HassioSnapshots extends LitElement {
|
|||||||
|
|
||||||
protected firstUpdated(changedProps: PropertyValues) {
|
protected firstUpdated(changedProps: PropertyValues) {
|
||||||
super.firstUpdated(changedProps);
|
super.firstUpdated(changedProps);
|
||||||
this._updateSnapshots();
|
this.refreshData();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected updated(changedProps: PropertyValues) {
|
protected updated(changedProps: PropertyValues) {
|
||||||
|
@ -14,7 +14,6 @@ import {
|
|||||||
TemplateResult,
|
TemplateResult,
|
||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import memoizeOne from "memoize-one";
|
import memoizeOne from "memoize-one";
|
||||||
import { atLeastVersion } from "../../../src/common/config/version";
|
|
||||||
import "../../../src/components/buttons/ha-progress-button";
|
import "../../../src/components/buttons/ha-progress-button";
|
||||||
import "../../../src/components/ha-button-menu";
|
import "../../../src/components/ha-button-menu";
|
||||||
import "../../../src/components/ha-card";
|
import "../../../src/components/ha-card";
|
||||||
@ -85,8 +84,7 @@ class HassioHostInfo extends LitElement {
|
|||||||
</mwc-button>
|
</mwc-button>
|
||||||
</ha-settings-row>`
|
</ha-settings-row>`
|
||||||
: ""}
|
: ""}
|
||||||
${this.hostInfo.features.includes("network") &&
|
${this.hostInfo.features.includes("network")
|
||||||
atLeastVersion(this.hass.config.version, 0, 115)
|
|
||||||
? html` <ha-settings-row>
|
? html` <ha-settings-row>
|
||||||
<span slot="heading">
|
<span slot="heading">
|
||||||
IP address
|
IP address
|
||||||
|
@ -213,7 +213,7 @@ class HassioSupervisorInfo extends LitElement {
|
|||||||
|
|
||||||
const confirmed = await showConfirmationDialog(this, {
|
const confirmed = await showConfirmationDialog(this, {
|
||||||
title: "Update supervisor",
|
title: "Update supervisor",
|
||||||
text: `Are you sure you want to upgrade supervisor to version ${this.supervisorInfo.version_latest}?`,
|
text: `Are you sure you want to update supervisor to version ${this.supervisorInfo.version_latest}?`,
|
||||||
confirmText: "update",
|
confirmText: "update",
|
||||||
dismissText: "cancel",
|
dismissText: "cancel",
|
||||||
});
|
});
|
||||||
|
2
setup.py
2
setup.py
@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="home-assistant-frontend",
|
name="home-assistant-frontend",
|
||||||
version="20200912.0",
|
version="20200915.0",
|
||||||
description="The Home Assistant frontend",
|
description="The Home Assistant frontend",
|
||||||
url="https://github.com/home-assistant/home-assistant-polymer",
|
url="https://github.com/home-assistant/home-assistant-polymer",
|
||||||
author="The Home Assistant Authors",
|
author="The Home Assistant Authors",
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
import { derivedStyles, darkStyles } from "../../resources/styles";
|
import { darkStyles, derivedStyles } from "../../resources/styles";
|
||||||
import { HomeAssistant, Theme } from "../../types";
|
import { HomeAssistant, Theme } from "../../types";
|
||||||
import {
|
import {
|
||||||
hex2rgb,
|
hex2rgb,
|
||||||
|
lab2hex,
|
||||||
|
lab2rgb,
|
||||||
rgb2hex,
|
rgb2hex,
|
||||||
rgb2lab,
|
rgb2lab,
|
||||||
lab2rgb,
|
|
||||||
lab2hex,
|
|
||||||
} from "../color/convert-color";
|
} from "../color/convert-color";
|
||||||
|
import { labBrighten, labDarken } from "../color/lab";
|
||||||
import { rgbContrast } from "../color/rgb";
|
import { rgbContrast } from "../color/rgb";
|
||||||
import { labDarken, labBrighten } from "../color/lab";
|
|
||||||
|
|
||||||
interface ProcessedTheme {
|
interface ProcessedTheme {
|
||||||
keys: { [key: string]: "" };
|
keys: { [key: string]: "" };
|
||||||
@ -105,7 +105,7 @@ const processTheme = (
|
|||||||
const keys = {};
|
const keys = {};
|
||||||
for (const key of Object.keys(combinedTheme)) {
|
for (const key of Object.keys(combinedTheme)) {
|
||||||
const prefixedKey = `--${key}`;
|
const prefixedKey = `--${key}`;
|
||||||
const value = combinedTheme[key]!;
|
const value = String(combinedTheme[key]);
|
||||||
styles[prefixedKey] = value;
|
styles[prefixedKey] = value;
|
||||||
keys[prefixedKey] = "";
|
keys[prefixedKey] = "";
|
||||||
|
|
||||||
|
@ -1,17 +1,16 @@
|
|||||||
import {
|
|
||||||
customElement,
|
|
||||||
html,
|
|
||||||
TemplateResult,
|
|
||||||
LitElement,
|
|
||||||
CSSResult,
|
|
||||||
css,
|
|
||||||
query,
|
|
||||||
property,
|
|
||||||
} from "lit-element";
|
|
||||||
import "@material/mwc-button";
|
import "@material/mwc-button";
|
||||||
import "@material/mwc-menu";
|
import "@material/mwc-menu";
|
||||||
import type { Menu, Corner } from "@material/mwc-menu";
|
import type { Corner, Menu } from "@material/mwc-menu";
|
||||||
|
import {
|
||||||
|
css,
|
||||||
|
CSSResult,
|
||||||
|
customElement,
|
||||||
|
html,
|
||||||
|
LitElement,
|
||||||
|
property,
|
||||||
|
query,
|
||||||
|
TemplateResult,
|
||||||
|
} from "lit-element";
|
||||||
import "./ha-icon-button";
|
import "./ha-icon-button";
|
||||||
|
|
||||||
@customElement("ha-button-menu")
|
@customElement("ha-button-menu")
|
||||||
@ -22,6 +21,8 @@ export class HaButtonMenu extends LitElement {
|
|||||||
|
|
||||||
@property({ type: Boolean }) public activatable = false;
|
@property({ type: Boolean }) public activatable = false;
|
||||||
|
|
||||||
|
@property({ type: Boolean }) public disabled = false;
|
||||||
|
|
||||||
@query("mwc-menu") private _menu?: Menu;
|
@query("mwc-menu") private _menu?: Menu;
|
||||||
|
|
||||||
public get items() {
|
public get items() {
|
||||||
@ -48,6 +49,9 @@ export class HaButtonMenu extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private _handleClick(): void {
|
private _handleClick(): void {
|
||||||
|
if (this.disabled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
this._menu!.anchor = this;
|
this._menu!.anchor = this;
|
||||||
this._menu!.show();
|
this._menu!.show();
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,9 @@ class HaCameraStream extends LitElement {
|
|||||||
@property({ type: Boolean, attribute: "muted" })
|
@property({ type: Boolean, attribute: "muted" })
|
||||||
public muted = false;
|
public muted = false;
|
||||||
|
|
||||||
|
@property({ type: Boolean, attribute: "allow-exoplayer" })
|
||||||
|
public allowExoPlayer = false;
|
||||||
|
|
||||||
// We keep track if we should force MJPEG with a string
|
// We keep track if we should force MJPEG with a string
|
||||||
// that way it automatically resets if we change entity.
|
// that way it automatically resets if we change entity.
|
||||||
@internalProperty() private _forceMJPEG?: string;
|
@internalProperty() private _forceMJPEG?: string;
|
||||||
@ -61,6 +64,7 @@ class HaCameraStream extends LitElement {
|
|||||||
<ha-hls-player
|
<ha-hls-player
|
||||||
autoplay
|
autoplay
|
||||||
playsinline
|
playsinline
|
||||||
|
.allowExoPlayer=${this.allowExoPlayer}
|
||||||
.muted=${this.muted}
|
.muted=${this.muted}
|
||||||
.controls=${this.controls}
|
.controls=${this.controls}
|
||||||
.hass=${this.hass}
|
.hass=${this.hass}
|
||||||
|
@ -97,6 +97,7 @@ export class HaCodeEditor extends UpdatingElement {
|
|||||||
.CodeMirror {
|
.CodeMirror {
|
||||||
height: var(--code-mirror-height, auto);
|
height: var(--code-mirror-height, auto);
|
||||||
direction: var(--code-mirror-direction, ltr);
|
direction: var(--code-mirror-direction, ltr);
|
||||||
|
font-family: var(--code-font-family, monospace);
|
||||||
}
|
}
|
||||||
.CodeMirror-scroll {
|
.CodeMirror-scroll {
|
||||||
max-height: var(--code-mirror-max-height, --code-mirror-height);
|
max-height: var(--code-mirror-max-height, --code-mirror-height);
|
||||||
|
@ -12,7 +12,6 @@ import {
|
|||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import { fireEvent } from "../common/dom/fire_event";
|
import { fireEvent } from "../common/dom/fire_event";
|
||||||
import { nextRender } from "../common/util/render-status";
|
import { nextRender } from "../common/util/render-status";
|
||||||
import { getExternalConfig } from "../external_app/external_config";
|
|
||||||
import type { HomeAssistant } from "../types";
|
import type { HomeAssistant } from "../types";
|
||||||
|
|
||||||
type HLSModule = typeof import("hls.js");
|
type HLSModule = typeof import("hls.js");
|
||||||
@ -35,6 +34,9 @@ class HaHLSPlayer extends LitElement {
|
|||||||
@property({ type: Boolean, attribute: "playsinline" })
|
@property({ type: Boolean, attribute: "playsinline" })
|
||||||
public playsInline = false;
|
public playsInline = false;
|
||||||
|
|
||||||
|
@property({ type: Boolean, attribute: "allow-exoplayer" })
|
||||||
|
public allowExoPlayer = false;
|
||||||
|
|
||||||
@query("video") private _videoEl!: HTMLVideoElement;
|
@query("video") private _videoEl!: HTMLVideoElement;
|
||||||
|
|
||||||
@internalProperty() private _attached = false;
|
@internalProperty() private _attached = false;
|
||||||
@ -61,7 +63,7 @@ class HaHLSPlayer extends LitElement {
|
|||||||
return html`
|
return html`
|
||||||
<video
|
<video
|
||||||
?autoplay=${this.autoPlay}
|
?autoplay=${this.autoPlay}
|
||||||
?muted=${this.muted}
|
.muted=${this.muted}
|
||||||
?playsinline=${this.playsInline}
|
?playsinline=${this.playsInline}
|
||||||
?controls=${this.controls}
|
?controls=${this.controls}
|
||||||
@loadeddata=${this._elementResized}
|
@loadeddata=${this._elementResized}
|
||||||
@ -91,11 +93,7 @@ class HaHLSPlayer extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async _getUseExoPlayer(): Promise<boolean> {
|
private async _getUseExoPlayer(): Promise<boolean> {
|
||||||
if (!this.hass!.auth.external) {
|
return false;
|
||||||
return false;
|
|
||||||
}
|
|
||||||
const externalConfig = await getExternalConfig(this.hass!.auth.external);
|
|
||||||
return externalConfig && externalConfig.hasExoPlayer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async _startHls(): Promise<void> {
|
private async _startHls(): Promise<void> {
|
||||||
@ -137,7 +135,10 @@ class HaHLSPlayer extends LitElement {
|
|||||||
this._videoEl.style.visibility = "hidden";
|
this._videoEl.style.visibility = "hidden";
|
||||||
await this.hass!.auth.external!.sendMessage({
|
await this.hass!.auth.external!.sendMessage({
|
||||||
type: "exoplayer/play_hls",
|
type: "exoplayer/play_hls",
|
||||||
payload: new URL(url, window.location.href).toString(),
|
payload: {
|
||||||
|
url: new URL(url, window.location.href).toString(),
|
||||||
|
muted: this.muted,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,8 +159,6 @@ const computePanels = memoizeOne(
|
|||||||
|
|
||||||
let Sortable;
|
let Sortable;
|
||||||
|
|
||||||
let sortStyles: CSSResult;
|
|
||||||
|
|
||||||
@customElement("ha-sidebar")
|
@customElement("ha-sidebar")
|
||||||
class HaSidebar extends LitElement {
|
class HaSidebar extends LitElement {
|
||||||
@property({ attribute: false }) public hass!: HomeAssistant;
|
@property({ attribute: false }) public hass!: HomeAssistant;
|
||||||
@ -171,12 +169,12 @@ class HaSidebar extends LitElement {
|
|||||||
|
|
||||||
@property({ type: Boolean, reflect: true }) public expanded = false;
|
@property({ type: Boolean, reflect: true }) public expanded = false;
|
||||||
|
|
||||||
|
@property({ type: Boolean }) public editMode = false;
|
||||||
|
|
||||||
@internalProperty() private _externalConfig?: ExternalConfig;
|
@internalProperty() private _externalConfig?: ExternalConfig;
|
||||||
|
|
||||||
@internalProperty() private _notifications?: PersistentNotification[];
|
@internalProperty() private _notifications?: PersistentNotification[];
|
||||||
|
|
||||||
@internalProperty() private _editMode = false;
|
|
||||||
|
|
||||||
// property used only in css
|
// property used only in css
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
@property({ type: Boolean, reflect: true }) public rtl = false;
|
@property({ type: Boolean, reflect: true }) public rtl = false;
|
||||||
@ -227,19 +225,12 @@ class HaSidebar extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return html`
|
return html`
|
||||||
${this._editMode
|
|
||||||
? html`
|
|
||||||
<style>
|
|
||||||
${sortStyles?.cssText}
|
|
||||||
</style>
|
|
||||||
`
|
|
||||||
: ""}
|
|
||||||
<div
|
<div
|
||||||
class="menu"
|
class="menu"
|
||||||
@action=${this._handleAction}
|
@action=${this._handleAction}
|
||||||
.actionHandler=${actionHandler({
|
.actionHandler=${actionHandler({
|
||||||
hasHold: !this._editMode,
|
hasHold: !this.editMode,
|
||||||
disabled: this._editMode,
|
disabled: this.editMode,
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
${!this.narrow
|
${!this.narrow
|
||||||
@ -257,7 +248,7 @@ class HaSidebar extends LitElement {
|
|||||||
`
|
`
|
||||||
: ""}
|
: ""}
|
||||||
<div class="title">
|
<div class="title">
|
||||||
${this._editMode
|
${this.editMode
|
||||||
? html`<mwc-button outlined @click=${this._closeEditMode}>
|
? html`<mwc-button outlined @click=${this._closeEditMode}>
|
||||||
${hass.localize("ui.sidebar.done")}
|
${hass.localize("ui.sidebar.done")}
|
||||||
</mwc-button>`
|
</mwc-button>`
|
||||||
@ -273,7 +264,7 @@ class HaSidebar extends LitElement {
|
|||||||
@scroll=${this._listboxScroll}
|
@scroll=${this._listboxScroll}
|
||||||
@keydown=${this._listboxKeydown}
|
@keydown=${this._listboxKeydown}
|
||||||
>
|
>
|
||||||
${this._editMode
|
${this.editMode
|
||||||
? html`<div id="sortable">
|
? html`<div id="sortable">
|
||||||
${guard([this._hiddenPanels, this._renderEmptySortable], () =>
|
${guard([this._hiddenPanels, this._renderEmptySortable], () =>
|
||||||
this._renderEmptySortable
|
this._renderEmptySortable
|
||||||
@ -283,7 +274,7 @@ class HaSidebar extends LitElement {
|
|||||||
</div>`
|
</div>`
|
||||||
: this._renderPanels(beforeSpacer)}
|
: this._renderPanels(beforeSpacer)}
|
||||||
<div class="spacer" disabled></div>
|
<div class="spacer" disabled></div>
|
||||||
${this._editMode && this._hiddenPanels.length
|
${this.editMode && this._hiddenPanels.length
|
||||||
? html`
|
? html`
|
||||||
${this._hiddenPanels.map((url) => {
|
${this._hiddenPanels.map((url) => {
|
||||||
const panel = this.hass.panels[url];
|
const panel = this.hass.panels[url];
|
||||||
@ -307,7 +298,7 @@ class HaSidebar extends LitElement {
|
|||||||
: hass.localize(`panel.${panel.title}`) ||
|
: hass.localize(`panel.${panel.title}`) ||
|
||||||
panel.title}</span
|
panel.title}</span
|
||||||
>
|
>
|
||||||
<mwc-icon-button class="hide-panel">
|
<mwc-icon-button class="show-panel">
|
||||||
<ha-svg-icon .path=${mdiPlus}></ha-svg-icon>
|
<ha-svg-icon .path=${mdiPlus}></ha-svg-icon>
|
||||||
</mwc-icon-button>
|
</mwc-icon-button>
|
||||||
</paper-icon-item>`;
|
</paper-icon-item>`;
|
||||||
@ -412,10 +403,10 @@ class HaSidebar extends LitElement {
|
|||||||
changedProps.has("alwaysExpand") ||
|
changedProps.has("alwaysExpand") ||
|
||||||
changedProps.has("_externalConfig") ||
|
changedProps.has("_externalConfig") ||
|
||||||
changedProps.has("_notifications") ||
|
changedProps.has("_notifications") ||
|
||||||
changedProps.has("_editMode") ||
|
changedProps.has("editMode") ||
|
||||||
changedProps.has("_renderEmptySortable") ||
|
changedProps.has("_renderEmptySortable") ||
|
||||||
changedProps.has("_hiddenPanels") ||
|
changedProps.has("_hiddenPanels") ||
|
||||||
(changedProps.has("_panelOrder") && !this._editMode)
|
(changedProps.has("_panelOrder") && !this.editMode)
|
||||||
) {
|
) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -449,9 +440,6 @@ class HaSidebar extends LitElement {
|
|||||||
subscribeNotifications(this.hass.connection, (notifications) => {
|
subscribeNotifications(this.hass.connection, (notifications) => {
|
||||||
this._notifications = notifications;
|
this._notifications = notifications;
|
||||||
});
|
});
|
||||||
window.addEventListener("hass-edit-sidebar", () =>
|
|
||||||
this._activateEditMode()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected updated(changedProps) {
|
protected updated(changedProps) {
|
||||||
@ -459,6 +447,13 @@ class HaSidebar extends LitElement {
|
|||||||
if (changedProps.has("alwaysExpand")) {
|
if (changedProps.has("alwaysExpand")) {
|
||||||
this.expanded = this.alwaysExpand;
|
this.expanded = this.alwaysExpand;
|
||||||
}
|
}
|
||||||
|
if (changedProps.has("editMode")) {
|
||||||
|
if (this.editMode) {
|
||||||
|
this._activateEditMode();
|
||||||
|
} else {
|
||||||
|
this._deactivateEditMode();
|
||||||
|
}
|
||||||
|
}
|
||||||
if (!changedProps.has("hass")) {
|
if (!changedProps.has("hass")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -489,7 +484,7 @@ class HaSidebar extends LitElement {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._activateEditMode();
|
fireEvent(this, "hass-edit-sidebar", { editMode: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
private async _activateEditMode() {
|
private async _activateEditMode() {
|
||||||
@ -499,15 +494,14 @@ class HaSidebar extends LitElement {
|
|||||||
import("../resources/ha-sortable-style"),
|
import("../resources/ha-sortable-style"),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
sortStyles = sortStylesImport.sortableStyles;
|
const style = document.createElement("style");
|
||||||
|
style.innerHTML = sortStylesImport.sortableStyles.cssText;
|
||||||
|
this.shadowRoot!.appendChild(style);
|
||||||
|
|
||||||
Sortable = sortableImport.Sortable;
|
Sortable = sortableImport.Sortable;
|
||||||
Sortable.mount(sortableImport.OnSpill);
|
Sortable.mount(sortableImport.OnSpill);
|
||||||
Sortable.mount(sortableImport.AutoScroll());
|
Sortable.mount(sortableImport.AutoScroll());
|
||||||
}
|
}
|
||||||
this._editMode = true;
|
|
||||||
|
|
||||||
fireEvent(this, "hass-open-menu");
|
|
||||||
|
|
||||||
await this.updateComplete;
|
await this.updateComplete;
|
||||||
|
|
||||||
@ -519,16 +513,20 @@ class HaSidebar extends LitElement {
|
|||||||
animation: 150,
|
animation: 150,
|
||||||
fallbackClass: "sortable-fallback",
|
fallbackClass: "sortable-fallback",
|
||||||
dataIdAttr: "data-panel",
|
dataIdAttr: "data-panel",
|
||||||
|
handle: "paper-icon-item",
|
||||||
onSort: async () => {
|
onSort: async () => {
|
||||||
this._panelOrder = this._sortable.toArray();
|
this._panelOrder = this._sortable.toArray();
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private _closeEditMode() {
|
private _deactivateEditMode() {
|
||||||
this._sortable?.destroy();
|
this._sortable?.destroy();
|
||||||
this._sortable = undefined;
|
this._sortable = undefined;
|
||||||
this._editMode = false;
|
}
|
||||||
|
|
||||||
|
private _closeEditMode() {
|
||||||
|
fireEvent(this, "hass-edit-sidebar", { editMode: false });
|
||||||
}
|
}
|
||||||
|
|
||||||
private async _hidePanel(ev: Event) {
|
private async _hidePanel(ev: Event) {
|
||||||
@ -692,16 +690,16 @@ class HaSidebar extends LitElement {
|
|||||||
></ha-svg-icon>`
|
></ha-svg-icon>`
|
||||||
: html`<ha-icon slot="item-icon" .icon=${icon}></ha-icon>`}
|
: html`<ha-icon slot="item-icon" .icon=${icon}></ha-icon>`}
|
||||||
<span class="item-text">${title}</span>
|
<span class="item-text">${title}</span>
|
||||||
${this._editMode
|
|
||||||
? html`<mwc-icon-button
|
|
||||||
class="hide-panel"
|
|
||||||
.panel=${urlPath}
|
|
||||||
@click=${this._hidePanel}
|
|
||||||
>
|
|
||||||
<ha-svg-icon .path=${mdiClose}></ha-svg-icon>
|
|
||||||
</mwc-icon-button>`
|
|
||||||
: ""}
|
|
||||||
</paper-icon-item>
|
</paper-icon-item>
|
||||||
|
${this.editMode
|
||||||
|
? html`<mwc-icon-button
|
||||||
|
class="hide-panel"
|
||||||
|
.panel=${urlPath}
|
||||||
|
@click=${this._hidePanel}
|
||||||
|
>
|
||||||
|
<ha-svg-icon .path=${mdiClose}></ha-svg-icon>
|
||||||
|
</mwc-icon-button>`
|
||||||
|
: ""}
|
||||||
</a>
|
</a>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
@ -778,6 +776,11 @@ class HaSidebar extends LitElement {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#sortable,
|
||||||
|
.hidden-panel {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
paper-listbox {
|
paper-listbox {
|
||||||
padding: 4px 0;
|
padding: 4px 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -25,7 +25,7 @@ import { debounce } from "../../common/util/debounce";
|
|||||||
import {
|
import {
|
||||||
browseLocalMediaPlayer,
|
browseLocalMediaPlayer,
|
||||||
browseMediaPlayer,
|
browseMediaPlayer,
|
||||||
BROWSER_SOURCE,
|
BROWSER_PLAYER,
|
||||||
MediaClassBrowserSettings,
|
MediaClassBrowserSettings,
|
||||||
MediaPickedEvent,
|
MediaPickedEvent,
|
||||||
MediaPlayerBrowseAction,
|
MediaPlayerBrowseAction,
|
||||||
@ -35,6 +35,7 @@ import { showAlertDialog } from "../../dialogs/generic/show-dialog-box";
|
|||||||
import { installResizeObserver } from "../../panels/lovelace/common/install-resize-observer";
|
import { installResizeObserver } from "../../panels/lovelace/common/install-resize-observer";
|
||||||
import { haStyle } from "../../resources/styles";
|
import { haStyle } from "../../resources/styles";
|
||||||
import type { HomeAssistant } from "../../types";
|
import type { HomeAssistant } from "../../types";
|
||||||
|
import { documentationUrl } from "../../util/documentation-url";
|
||||||
import "../entity/ha-entity-picker";
|
import "../entity/ha-entity-picker";
|
||||||
import "../ha-button-menu";
|
import "../ha-button-menu";
|
||||||
import "../ha-card";
|
import "../ha-card";
|
||||||
@ -108,9 +109,11 @@ export class HaMediaPlayerBrowse extends LitElement {
|
|||||||
text: this._renderError(this._error),
|
text: this._renderError(this._error),
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
return html`<div class="container">
|
return html`
|
||||||
${this._renderError(this._error)}
|
<div class="container">
|
||||||
</div>`;
|
${this._renderError(this._error)}
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -235,7 +238,7 @@ export class HaMediaPlayerBrowse extends LitElement {
|
|||||||
</div>
|
</div>
|
||||||
${this._error
|
${this._error
|
||||||
? html`
|
? html`
|
||||||
<div class="container error">
|
<div class="container">
|
||||||
${this._renderError(this._error)}
|
${this._renderError(this._error)}
|
||||||
</div>
|
</div>
|
||||||
`
|
`
|
||||||
@ -354,7 +357,31 @@ export class HaMediaPlayerBrowse extends LitElement {
|
|||||||
`
|
`
|
||||||
: html`
|
: html`
|
||||||
<div class="container">
|
<div class="container">
|
||||||
${this.hass.localize("ui.components.media-browser.no_items")}
|
${this.hass.localize("ui.components.media-browser.no_items")}<br />
|
||||||
|
|
||||||
|
${currentItem.media_content_id.startsWith(
|
||||||
|
"media-source://media_source/local_source"
|
||||||
|
)
|
||||||
|
? html`${this.hass.localize(
|
||||||
|
"ui.components.media-browser.learn_adding_local_media",
|
||||||
|
"documentation",
|
||||||
|
html`<a
|
||||||
|
href="${documentationUrl(
|
||||||
|
this.hass,
|
||||||
|
"/more-info/local-media/add-media"
|
||||||
|
)}"
|
||||||
|
target="_blank"
|
||||||
|
rel="noreferrer"
|
||||||
|
>${this.hass.localize(
|
||||||
|
"ui.components.media-browser.documentation"
|
||||||
|
)}</a
|
||||||
|
>`
|
||||||
|
)}
|
||||||
|
<br />
|
||||||
|
${this.hass.localize(
|
||||||
|
"ui.components.media-browser.local_media_files"
|
||||||
|
)}.`
|
||||||
|
: ""}
|
||||||
</div>
|
</div>
|
||||||
`}
|
`}
|
||||||
`;
|
`;
|
||||||
@ -456,7 +483,7 @@ export class HaMediaPlayerBrowse extends LitElement {
|
|||||||
mediaContentType?: string
|
mediaContentType?: string
|
||||||
): Promise<MediaPlayerItem> {
|
): Promise<MediaPlayerItem> {
|
||||||
const itemData =
|
const itemData =
|
||||||
this.entityId !== BROWSER_SOURCE
|
this.entityId !== BROWSER_PLAYER
|
||||||
? await browseMediaPlayer(
|
? await browseMediaPlayer(
|
||||||
this.hass,
|
this.hass,
|
||||||
this.entityId,
|
this.entityId,
|
||||||
@ -498,29 +525,35 @@ export class HaMediaPlayerBrowse extends LitElement {
|
|||||||
private _renderError(err: { message: string; code: string }) {
|
private _renderError(err: { message: string; code: string }) {
|
||||||
if (err.message === "Media directory does not exist.") {
|
if (err.message === "Media directory does not exist.") {
|
||||||
return html`
|
return html`
|
||||||
<h2>No local media found.</h2>
|
<h2>
|
||||||
|
${this.hass.localize(
|
||||||
|
"ui.components.media-browser.no_local_media_found"
|
||||||
|
)}
|
||||||
|
</h2>
|
||||||
<p>
|
<p>
|
||||||
It looks like you have not yet created a media directory.
|
${this.hass.localize("ui.components.media-browser.no_media_folder")}
|
||||||
<br />Create a directory with the name <b>"media"</b> in the
|
<br />
|
||||||
configuration directory of Home Assistant
|
${this.hass.localize(
|
||||||
(${this.hass.config.config_dir}). <br />Place your video, audio and
|
"ui.components.media-browser.setup_local_help",
|
||||||
image files in this directory to be able to browse and play them in
|
"documentation",
|
||||||
the browser or on supported media players.
|
html`<a
|
||||||
</p>
|
href="${documentationUrl(
|
||||||
|
this.hass,
|
||||||
<p>
|
"/more-info/local-media/setup-media"
|
||||||
Check the
|
)}"
|
||||||
<a
|
target="_blank"
|
||||||
href="https://www.home-assistant.io/integrations/media_source/#local-media"
|
rel="noreferrer"
|
||||||
target="_blank"
|
>${this.hass.localize(
|
||||||
rel="noreferrer"
|
"ui.components.media-browser.documentation"
|
||||||
>documentation</a
|
)}</a
|
||||||
>
|
>`
|
||||||
for more info
|
)}
|
||||||
|
<br />
|
||||||
|
${this.hass.localize("ui.components.media-browser.local_media_files")}
|
||||||
</p>
|
</p>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
return html`<span class="error">err.message</span>`;
|
return html`<span class="error">${err.message}</span>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
static get styles(): CSSResultArray {
|
static get styles(): CSSResultArray {
|
||||||
|
@ -1,23 +1,23 @@
|
|||||||
|
import {
|
||||||
|
mdiAccountMusic,
|
||||||
|
mdiAccountMusicOutline,
|
||||||
|
mdiAlbum,
|
||||||
|
mdiApplication,
|
||||||
|
mdiDramaMasks,
|
||||||
|
mdiFileMusic,
|
||||||
|
mdiFolder,
|
||||||
|
mdiGamepadVariant,
|
||||||
|
mdiImage,
|
||||||
|
mdiMovie,
|
||||||
|
mdiMusic,
|
||||||
|
mdiPlaylistMusic,
|
||||||
|
mdiPodcast,
|
||||||
|
mdiTelevisionClassic,
|
||||||
|
mdiVideo,
|
||||||
|
mdiWeb,
|
||||||
|
} from "@mdi/js";
|
||||||
import type { HassEntity } from "home-assistant-js-websocket";
|
import type { HassEntity } from "home-assistant-js-websocket";
|
||||||
import type { HomeAssistant } from "../types";
|
import type { HomeAssistant } from "../types";
|
||||||
import {
|
|
||||||
mdiFolder,
|
|
||||||
mdiPlaylistMusic,
|
|
||||||
mdiFileMusic,
|
|
||||||
mdiAlbum,
|
|
||||||
mdiMusic,
|
|
||||||
mdiTelevisionClassic,
|
|
||||||
mdiMovie,
|
|
||||||
mdiVideo,
|
|
||||||
mdiImage,
|
|
||||||
mdiWeb,
|
|
||||||
mdiGamepadVariant,
|
|
||||||
mdiAccountMusic,
|
|
||||||
mdiPodcast,
|
|
||||||
mdiApplication,
|
|
||||||
mdiAccountMusicOutline,
|
|
||||||
mdiDramaMasks,
|
|
||||||
} from "@mdi/js";
|
|
||||||
|
|
||||||
export const SUPPORT_PAUSE = 1;
|
export const SUPPORT_PAUSE = 1;
|
||||||
export const SUPPORT_SEEK = 2;
|
export const SUPPORT_SEEK = 2;
|
||||||
@ -38,7 +38,7 @@ export const CONTRAST_RATIO = 4.5;
|
|||||||
|
|
||||||
export type MediaPlayerBrowseAction = "pick" | "play";
|
export type MediaPlayerBrowseAction = "pick" | "play";
|
||||||
|
|
||||||
export const BROWSER_SOURCE = "browser";
|
export const BROWSER_PLAYER = "browser";
|
||||||
|
|
||||||
export type MediaClassBrowserSetting = {
|
export type MediaClassBrowserSetting = {
|
||||||
icon: string;
|
icon: string;
|
||||||
|
@ -200,7 +200,7 @@ export const weatherSVGStyles = css`
|
|||||||
fill: var(--weather-icon-sun-color, #fdd93c);
|
fill: var(--weather-icon-sun-color, #fdd93c);
|
||||||
}
|
}
|
||||||
.moon {
|
.moon {
|
||||||
fill: var(--weather-icon-moon-color, #fdf9cc);
|
fill: var(--weather-icon-moon-color, #fcf497);
|
||||||
}
|
}
|
||||||
.cloud-back {
|
.cloud-back {
|
||||||
fill: var(--weather-icon-cloud-back-color, #d4d4d4);
|
fill: var(--weather-icon-cloud-back-color, #d4d4d4);
|
||||||
|
@ -20,6 +20,7 @@ import { LocalizeFunc } from "../../common/translations/localize";
|
|||||||
import "../../components/ha-icon-next";
|
import "../../components/ha-icon-next";
|
||||||
import { domainToName } from "../../data/integration";
|
import { domainToName } from "../../data/integration";
|
||||||
import { HomeAssistant } from "../../types";
|
import { HomeAssistant } from "../../types";
|
||||||
|
import { documentationUrl } from "../../util/documentation-url";
|
||||||
import { FlowConfig } from "./show-dialog-data-entry-flow";
|
import { FlowConfig } from "./show-dialog-data-entry-flow";
|
||||||
import { configFlowContentStyles } from "./styles";
|
import { configFlowContentStyles } from "./styles";
|
||||||
|
|
||||||
@ -122,7 +123,7 @@ class StepFlowPickHandler extends LitElement {
|
|||||||
${this.hass.localize(
|
${this.hass.localize(
|
||||||
"ui.panel.config.integrations.note_about_website_reference"
|
"ui.panel.config.integrations.note_about_website_reference"
|
||||||
)}<a
|
)}<a
|
||||||
href="https://www.home-assistant.io/integrations/"
|
href="${documentationUrl(this.hass, "/integrations/")}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>${this.hass.localize(
|
>${this.hass.localize(
|
||||||
|
@ -48,6 +48,7 @@ class MoreInfoCamera extends LitElement {
|
|||||||
<ha-camera-stream
|
<ha-camera-stream
|
||||||
.hass=${this.hass}
|
.hass=${this.hass}
|
||||||
.stateObj=${this.stateObj}
|
.stateObj=${this.stateObj}
|
||||||
|
allow-exoplayer
|
||||||
controls
|
controls
|
||||||
></ha-camera-stream>
|
></ha-camera-stream>
|
||||||
${this._cameraPrefs
|
${this._cameraPrefs
|
||||||
|
@ -32,7 +32,7 @@ class MoreInfoPerson extends LitElement {
|
|||||||
return html`
|
return html`
|
||||||
<ha-attributes
|
<ha-attributes
|
||||||
.stateObj=${this.stateObj}
|
.stateObj=${this.stateObj}
|
||||||
extraFilters="id,user_id,editable"
|
extra-filters="id,user_id,editable"
|
||||||
></ha-attributes>
|
></ha-attributes>
|
||||||
${this.stateObj.attributes.latitude && this.stateObj.attributes.longitude
|
${this.stateObj.attributes.latitude && this.stateObj.attributes.longitude
|
||||||
? html`
|
? html`
|
||||||
@ -78,6 +78,9 @@ class MoreInfoPerson extends LitElement {
|
|||||||
margin: 36px 0 8px 0;
|
margin: 36px 0 8px 0;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
ha-map {
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,10 +26,8 @@ import { navigate } from "../../common/navigate";
|
|||||||
import "../../components/ha-dialog";
|
import "../../components/ha-dialog";
|
||||||
import "../../components/ha-header-bar";
|
import "../../components/ha-header-bar";
|
||||||
import "../../components/ha-svg-icon";
|
import "../../components/ha-svg-icon";
|
||||||
import "../../components/state-history-charts";
|
|
||||||
import { removeEntityRegistryEntry } from "../../data/entity_registry";
|
import { removeEntityRegistryEntry } from "../../data/entity_registry";
|
||||||
import { showEntityEditorDialog } from "../../panels/config/entities/show-dialog-entity-editor";
|
import { showEntityEditorDialog } from "../../panels/config/entities/show-dialog-entity-editor";
|
||||||
import "../../panels/logbook/ha-logbook";
|
|
||||||
import { haStyleDialog } from "../../resources/styles";
|
import { haStyleDialog } from "../../resources/styles";
|
||||||
import "../../state-summary/state-card-content";
|
import "../../state-summary/state-card-content";
|
||||||
import { HomeAssistant } from "../../types";
|
import { HomeAssistant } from "../../types";
|
||||||
@ -394,7 +392,9 @@ export class MoreInfoDialog extends LitElement {
|
|||||||
--dialog-content-padding: 0;
|
--dialog-content-padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
state-card-content {
|
state-card-content,
|
||||||
|
ha-more-info-history,
|
||||||
|
ha-more-info-logbook:not(:last-child) {
|
||||||
display: block;
|
display: block;
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import {
|
import {
|
||||||
css,
|
|
||||||
customElement,
|
customElement,
|
||||||
html,
|
html,
|
||||||
internalProperty,
|
internalProperty,
|
||||||
@ -13,7 +12,6 @@ import { throttle } from "../../common/util/throttle";
|
|||||||
import "../../components/state-history-charts";
|
import "../../components/state-history-charts";
|
||||||
import { getRecentWithCache } from "../../data/cached-history";
|
import { getRecentWithCache } from "../../data/cached-history";
|
||||||
import { HistoryResult } from "../../data/history";
|
import { HistoryResult } from "../../data/history";
|
||||||
import { haStyle } from "../../resources/styles";
|
|
||||||
import { HomeAssistant } from "../../types";
|
import { HomeAssistant } from "../../types";
|
||||||
|
|
||||||
@customElement("ha-more-info-history")
|
@customElement("ha-more-info-history")
|
||||||
@ -88,18 +86,6 @@ export class MoreInfoHistory extends LitElement {
|
|||||||
this.hass!.language
|
this.hass!.language
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
static get styles() {
|
|
||||||
return [
|
|
||||||
haStyle,
|
|
||||||
css`
|
|
||||||
state-history-charts {
|
|
||||||
display: block;
|
|
||||||
margin-bottom: 16px;
|
|
||||||
}
|
|
||||||
`,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
|
@ -152,8 +152,6 @@ export class MoreInfoLogbook extends LitElement {
|
|||||||
ha-logbook {
|
ha-logbook {
|
||||||
max-height: 250px;
|
max-height: 250px;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
display: block;
|
|
||||||
margin-top: 16px;
|
|
||||||
}
|
}
|
||||||
ha-circular-progress {
|
ha-circular-progress {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -7,12 +7,13 @@ import {
|
|||||||
CSSResult,
|
CSSResult,
|
||||||
customElement,
|
customElement,
|
||||||
html,
|
html,
|
||||||
|
internalProperty,
|
||||||
LitElement,
|
LitElement,
|
||||||
property,
|
property,
|
||||||
PropertyValues,
|
PropertyValues,
|
||||||
TemplateResult,
|
TemplateResult,
|
||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import { fireEvent } from "../common/dom/fire_event";
|
import { fireEvent, HASSDomEvent } from "../common/dom/fire_event";
|
||||||
import { listenMediaQuery } from "../common/dom/media_query";
|
import { listenMediaQuery } from "../common/dom/media_query";
|
||||||
import { toggleAttribute } from "../common/dom/toggle_attribute";
|
import { toggleAttribute } from "../common/dom/toggle_attribute";
|
||||||
import { showNotificationDrawer } from "../dialogs/notifications/show-notification-drawer";
|
import { showNotificationDrawer } from "../dialogs/notifications/show-notification-drawer";
|
||||||
@ -24,10 +25,17 @@ const NON_SWIPABLE_PANELS = ["map"];
|
|||||||
declare global {
|
declare global {
|
||||||
// for fire event
|
// for fire event
|
||||||
interface HASSDomEvents {
|
interface HASSDomEvents {
|
||||||
"hass-open-menu": undefined;
|
|
||||||
"hass-toggle-menu": undefined;
|
"hass-toggle-menu": undefined;
|
||||||
|
"hass-edit-sidebar": EditSideBarEvent;
|
||||||
"hass-show-notifications": undefined;
|
"hass-show-notifications": undefined;
|
||||||
}
|
}
|
||||||
|
interface HTMLElementEventMap {
|
||||||
|
"hass-edit-sidebar": HASSDomEvent<EditSideBarEvent>;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
interface EditSideBarEvent {
|
||||||
|
editMode: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
@customElement("home-assistant-main")
|
@customElement("home-assistant-main")
|
||||||
@ -36,7 +44,9 @@ class HomeAssistantMain extends LitElement {
|
|||||||
|
|
||||||
@property() public route?: Route;
|
@property() public route?: Route;
|
||||||
|
|
||||||
@property({ type: Boolean }) private narrow?: boolean;
|
@property({ type: Boolean }) public narrow?: boolean;
|
||||||
|
|
||||||
|
@internalProperty() private _sidebarEditMode = false;
|
||||||
|
|
||||||
protected render(): TemplateResult {
|
protected render(): TemplateResult {
|
||||||
const hass = this.hass;
|
const hass = this.hass;
|
||||||
@ -48,7 +58,9 @@ class HomeAssistantMain extends LitElement {
|
|||||||
const sidebarNarrow = this._sidebarNarrow;
|
const sidebarNarrow = this._sidebarNarrow;
|
||||||
|
|
||||||
const disableSwipe =
|
const disableSwipe =
|
||||||
!sidebarNarrow || NON_SWIPABLE_PANELS.indexOf(hass.panelUrl) !== -1;
|
this._sidebarEditMode ||
|
||||||
|
!sidebarNarrow ||
|
||||||
|
NON_SWIPABLE_PANELS.indexOf(hass.panelUrl) !== -1;
|
||||||
|
|
||||||
// Style block in render because of the mixin that is not supported
|
// Style block in render because of the mixin that is not supported
|
||||||
return html`
|
return html`
|
||||||
@ -76,6 +88,7 @@ class HomeAssistantMain extends LitElement {
|
|||||||
<ha-sidebar
|
<ha-sidebar
|
||||||
.hass=${hass}
|
.hass=${hass}
|
||||||
.narrow=${sidebarNarrow}
|
.narrow=${sidebarNarrow}
|
||||||
|
.editMode=${this._sidebarEditMode}
|
||||||
.alwaysExpand=${sidebarNarrow ||
|
.alwaysExpand=${sidebarNarrow ||
|
||||||
this.hass.dockedSidebar === "docked"}
|
this.hass.dockedSidebar === "docked"}
|
||||||
></ha-sidebar>
|
></ha-sidebar>
|
||||||
@ -93,18 +106,28 @@ class HomeAssistantMain extends LitElement {
|
|||||||
protected firstUpdated() {
|
protected firstUpdated() {
|
||||||
import(/* webpackChunkName: "ha-sidebar" */ "../components/ha-sidebar");
|
import(/* webpackChunkName: "ha-sidebar" */ "../components/ha-sidebar");
|
||||||
|
|
||||||
this.addEventListener("hass-open-menu", () => {
|
this.addEventListener(
|
||||||
if (this._sidebarNarrow) {
|
"hass-edit-sidebar",
|
||||||
this.drawer.open();
|
(ev: HASSDomEvent<EditSideBarEvent>) => {
|
||||||
} else {
|
this._sidebarEditMode = ev.detail.editMode;
|
||||||
fireEvent(this, "hass-dock-sidebar", {
|
|
||||||
dock: "docked",
|
if (this._sidebarEditMode) {
|
||||||
});
|
if (this._sidebarNarrow) {
|
||||||
setTimeout(() => this.appLayout.resetLayout());
|
this.drawer.open();
|
||||||
|
} else {
|
||||||
|
fireEvent(this, "hass-dock-sidebar", {
|
||||||
|
dock: "docked",
|
||||||
|
});
|
||||||
|
setTimeout(() => this.appLayout.resetLayout());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
);
|
||||||
|
|
||||||
this.addEventListener("hass-toggle-menu", () => {
|
this.addEventListener("hass-toggle-menu", () => {
|
||||||
|
if (this._sidebarEditMode) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (this._sidebarNarrow) {
|
if (this._sidebarNarrow) {
|
||||||
if (this.drawer.opened) {
|
if (this.drawer.opened) {
|
||||||
this.drawer.close();
|
this.drawer.close();
|
||||||
|
@ -39,6 +39,7 @@ import "../../../layouts/ha-app-layout";
|
|||||||
import "../../../layouts/hass-tabs-subpage";
|
import "../../../layouts/hass-tabs-subpage";
|
||||||
import { haStyle } from "../../../resources/styles";
|
import { haStyle } from "../../../resources/styles";
|
||||||
import { HomeAssistant, Route } from "../../../types";
|
import { HomeAssistant, Route } from "../../../types";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
import "../ha-config-section";
|
import "../ha-config-section";
|
||||||
import { configSections } from "../ha-panel-config";
|
import { configSections } from "../ha-panel-config";
|
||||||
import "./action/ha-automation-action";
|
import "./action/ha-automation-action";
|
||||||
@ -159,7 +160,10 @@ export class HaAutomationEditor extends LitElement {
|
|||||||
"ui.panel.config.automation.editor.modes.description",
|
"ui.panel.config.automation.editor.modes.description",
|
||||||
"documentation_link",
|
"documentation_link",
|
||||||
html`<a
|
html`<a
|
||||||
href="https://www.home-assistant.io/integrations/automation/#automation-modes"
|
href="${documentationUrl(
|
||||||
|
this.hass,
|
||||||
|
"/integrations/automation/#automation-modes"
|
||||||
|
)}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>${this.hass.localize(
|
>${this.hass.localize(
|
||||||
@ -247,7 +251,10 @@ export class HaAutomationEditor extends LitElement {
|
|||||||
)}
|
)}
|
||||||
</p>
|
</p>
|
||||||
<a
|
<a
|
||||||
href="https://home-assistant.io/docs/automation/trigger/"
|
href="${documentationUrl(
|
||||||
|
this.hass,
|
||||||
|
"/docs/automation/trigger/"
|
||||||
|
)}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
@ -276,7 +283,10 @@ export class HaAutomationEditor extends LitElement {
|
|||||||
)}
|
)}
|
||||||
</p>
|
</p>
|
||||||
<a
|
<a
|
||||||
href="https://home-assistant.io/docs/scripts/conditions/"
|
href="${documentationUrl(
|
||||||
|
this.hass,
|
||||||
|
"/docs/scripts/conditions/"
|
||||||
|
)}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
@ -305,7 +315,10 @@ export class HaAutomationEditor extends LitElement {
|
|||||||
)}
|
)}
|
||||||
</p>
|
</p>
|
||||||
<a
|
<a
|
||||||
href="https://home-assistant.io/docs/automation/action/"
|
href="${documentationUrl(
|
||||||
|
this.hass,
|
||||||
|
"/docs/automation/action/"
|
||||||
|
)}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
|
@ -124,6 +124,26 @@ class CloudAlexa extends LitElement {
|
|||||||
? exposedCards
|
? exposedCards
|
||||||
: notExposedCards;
|
: notExposedCards;
|
||||||
|
|
||||||
|
const iconButton = html`<mwc-icon-button
|
||||||
|
slot="trigger"
|
||||||
|
class=${classMap({
|
||||||
|
exposed: isExposed!,
|
||||||
|
"not-exposed": !isExposed,
|
||||||
|
})}
|
||||||
|
.disabled=${!emptyFilter}
|
||||||
|
.title=${this.hass!.localize("ui.panel.config.cloud.google.expose")}
|
||||||
|
>
|
||||||
|
<ha-svg-icon
|
||||||
|
.path=${config.should_expose !== null
|
||||||
|
? isExposed
|
||||||
|
? mdiCheckboxMarked
|
||||||
|
: mdiCloseBox
|
||||||
|
: isDomainExposed
|
||||||
|
? mdiCheckboxMultipleMarked
|
||||||
|
: mdiCloseBoxMultiple}
|
||||||
|
></ha-svg-icon>
|
||||||
|
</mwc-icon-button>`;
|
||||||
|
|
||||||
target.push(html`
|
target.push(html`
|
||||||
<ha-card>
|
<ha-card>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
@ -139,67 +159,50 @@ class CloudAlexa extends LitElement {
|
|||||||
.map((ifc) => ifc.replace(/(Alexa.|Controller)/g, ""))
|
.map((ifc) => ifc.replace(/(Alexa.|Controller)/g, ""))
|
||||||
.join(", ")}
|
.join(", ")}
|
||||||
</state-info>
|
</state-info>
|
||||||
<ha-button-menu
|
${!emptyFilter
|
||||||
corner="BOTTOM_START"
|
? html`${iconButton}`
|
||||||
.entityId=${stateObj.entity_id}
|
: html`<ha-button-menu
|
||||||
@action=${this._exposeChanged}
|
corner="BOTTOM_START"
|
||||||
>
|
.entityId=${stateObj.entity_id}
|
||||||
<mwc-icon-button
|
@action=${this._exposeChanged}
|
||||||
slot="trigger"
|
>
|
||||||
class=${classMap({
|
${iconButton}
|
||||||
exposed: isExposed!,
|
<mwc-list-item hasMeta>
|
||||||
"not-exposed": !isExposed,
|
${this.hass!.localize(
|
||||||
})}
|
"ui.panel.config.cloud.google.expose_entity"
|
||||||
.title=${this.hass!.localize(
|
)}
|
||||||
"ui.panel.config.cloud.alexa.expose"
|
<ha-svg-icon
|
||||||
)}
|
class="exposed"
|
||||||
>
|
slot="meta"
|
||||||
<ha-svg-icon
|
.path=${mdiCheckboxMarked}
|
||||||
.path=${config.should_expose !== null
|
></ha-svg-icon>
|
||||||
? isExposed
|
</mwc-list-item>
|
||||||
? mdiCheckboxMarked
|
<mwc-list-item hasMeta>
|
||||||
: mdiCloseBox
|
${this.hass!.localize(
|
||||||
: isDomainExposed
|
"ui.panel.config.cloud.google.dont_expose_entity"
|
||||||
? mdiCheckboxMultipleMarked
|
)}
|
||||||
: mdiCloseBoxMultiple}
|
<ha-svg-icon
|
||||||
></ha-svg-icon>
|
class="not-exposed"
|
||||||
</mwc-icon-button>
|
slot="meta"
|
||||||
<mwc-list-item hasMeta>
|
.path=${mdiCloseBox}
|
||||||
${this.hass!.localize(
|
></ha-svg-icon>
|
||||||
"ui.panel.config.cloud.alexa.expose_entity"
|
</mwc-list-item>
|
||||||
)}
|
<mwc-list-item hasMeta>
|
||||||
<ha-svg-icon
|
${this.hass!.localize(
|
||||||
class="exposed"
|
"ui.panel.config.cloud.google.follow_domain"
|
||||||
slot="meta"
|
)}
|
||||||
.path=${mdiCheckboxMarked}
|
<ha-svg-icon
|
||||||
></ha-svg-icon>
|
class=${classMap({
|
||||||
</mwc-list-item>
|
exposed: isDomainExposed,
|
||||||
<mwc-list-item hasMeta>
|
"not-exposed": !isDomainExposed,
|
||||||
${this.hass!.localize(
|
})}
|
||||||
"ui.panel.config.cloud.alexa.dont_expose_entity"
|
slot="meta"
|
||||||
)}
|
.path=${isDomainExposed
|
||||||
<ha-svg-icon
|
? mdiCheckboxMultipleMarked
|
||||||
class="not-exposed"
|
: mdiCloseBoxMultiple}
|
||||||
slot="meta"
|
></ha-svg-icon>
|
||||||
.path=${mdiCloseBox}
|
</mwc-list-item>
|
||||||
></ha-svg-icon>
|
</ha-button-menu>`}
|
||||||
</mwc-list-item>
|
|
||||||
<mwc-list-item hasMeta>
|
|
||||||
${this.hass!.localize(
|
|
||||||
"ui.panel.config.cloud.alexa.follow_domain"
|
|
||||||
)}
|
|
||||||
<ha-svg-icon
|
|
||||||
class=${classMap({
|
|
||||||
exposed: isDomainExposed,
|
|
||||||
"not-exposed": !isDomainExposed,
|
|
||||||
})}
|
|
||||||
slot="meta"
|
|
||||||
.path=${isDomainExposed
|
|
||||||
? mdiCheckboxMultipleMarked
|
|
||||||
: mdiCloseBoxMultiple}
|
|
||||||
></ha-svg-icon>
|
|
||||||
</mwc-list-item>
|
|
||||||
</ha-button-menu>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ha-card>
|
</ha-card>
|
||||||
|
@ -14,6 +14,7 @@ import type { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialo
|
|||||||
import { showConfirmationDialog } from "../../../../dialogs/generic/show-dialog-box";
|
import { showConfirmationDialog } from "../../../../dialogs/generic/show-dialog-box";
|
||||||
import { haStyle } from "../../../../resources/styles";
|
import { haStyle } from "../../../../resources/styles";
|
||||||
import { HomeAssistant } from "../../../../types";
|
import { HomeAssistant } from "../../../../types";
|
||||||
|
import { documentationUrl } from "../../../../util/documentation-url";
|
||||||
import { WebhookDialogParams } from "./show-dialog-manage-cloudhook";
|
import { WebhookDialogParams } from "./show-dialog-manage-cloudhook";
|
||||||
|
|
||||||
const inputLabel = "Public URL – Click to copy to clipboard";
|
const inputLabel = "Public URL – Click to copy to clipboard";
|
||||||
@ -37,8 +38,11 @@ export class DialogManageCloudhook extends LitElement {
|
|||||||
const { webhook, cloudhook } = this._params;
|
const { webhook, cloudhook } = this._params;
|
||||||
const docsUrl =
|
const docsUrl =
|
||||||
webhook.domain === "automation"
|
webhook.domain === "automation"
|
||||||
? "https://www.home-assistant.io/docs/automation/trigger/#webhook-trigger"
|
? documentationUrl(
|
||||||
: `https://www.home-assistant.io/integrations/${webhook.domain}/`;
|
this.hass!,
|
||||||
|
"/docs/automation/trigger/#webhook-trigger"
|
||||||
|
)
|
||||||
|
: documentationUrl(this.hass!, `/integrations/${webhook.domain}/`);
|
||||||
return html`
|
return html`
|
||||||
<ha-paper-dialog with-backdrop>
|
<ha-paper-dialog with-backdrop>
|
||||||
<h2>
|
<h2>
|
||||||
|
@ -130,6 +130,26 @@ class CloudGoogleAssistant extends LitElement {
|
|||||||
? exposedCards
|
? exposedCards
|
||||||
: notExposedCards;
|
: notExposedCards;
|
||||||
|
|
||||||
|
const iconButton = html`<mwc-icon-button
|
||||||
|
slot="trigger"
|
||||||
|
class=${classMap({
|
||||||
|
exposed: isExposed!,
|
||||||
|
"not-exposed": !isExposed,
|
||||||
|
})}
|
||||||
|
.disabled=${!emptyFilter}
|
||||||
|
.title=${this.hass!.localize("ui.panel.config.cloud.google.expose")}
|
||||||
|
>
|
||||||
|
<ha-svg-icon
|
||||||
|
.path=${config.should_expose !== null
|
||||||
|
? isExposed
|
||||||
|
? mdiCheckboxMarked
|
||||||
|
: mdiCloseBox
|
||||||
|
: isDomainExposed
|
||||||
|
? mdiCheckboxMultipleMarked
|
||||||
|
: mdiCloseBoxMultiple}
|
||||||
|
></ha-svg-icon>
|
||||||
|
</mwc-icon-button>`;
|
||||||
|
|
||||||
target.push(html`
|
target.push(html`
|
||||||
<ha-card>
|
<ha-card>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
@ -144,67 +164,50 @@ class CloudGoogleAssistant extends LitElement {
|
|||||||
.map((trait) => trait.substr(trait.lastIndexOf(".") + 1))
|
.map((trait) => trait.substr(trait.lastIndexOf(".") + 1))
|
||||||
.join(", ")}
|
.join(", ")}
|
||||||
</state-info>
|
</state-info>
|
||||||
<ha-button-menu
|
${!emptyFilter
|
||||||
corner="BOTTOM_START"
|
? html`${iconButton}`
|
||||||
.entityId=${stateObj.entity_id}
|
: html`<ha-button-menu
|
||||||
@action=${this._exposeChanged}
|
corner="BOTTOM_START"
|
||||||
>
|
.entityId=${stateObj.entity_id}
|
||||||
<mwc-icon-button
|
@action=${this._exposeChanged}
|
||||||
slot="trigger"
|
>
|
||||||
class=${classMap({
|
${iconButton}
|
||||||
exposed: isExposed!,
|
<mwc-list-item hasMeta>
|
||||||
"not-exposed": !isExposed,
|
${this.hass!.localize(
|
||||||
})}
|
"ui.panel.config.cloud.google.expose_entity"
|
||||||
.title=${this.hass!.localize(
|
)}
|
||||||
"ui.panel.config.cloud.google.expose"
|
<ha-svg-icon
|
||||||
)}
|
class="exposed"
|
||||||
>
|
slot="meta"
|
||||||
<ha-svg-icon
|
.path=${mdiCheckboxMarked}
|
||||||
.path=${config.should_expose !== null
|
></ha-svg-icon>
|
||||||
? isExposed
|
</mwc-list-item>
|
||||||
? mdiCheckboxMarked
|
<mwc-list-item hasMeta>
|
||||||
: mdiCloseBox
|
${this.hass!.localize(
|
||||||
: isDomainExposed
|
"ui.panel.config.cloud.google.dont_expose_entity"
|
||||||
? mdiCheckboxMultipleMarked
|
)}
|
||||||
: mdiCloseBoxMultiple}
|
<ha-svg-icon
|
||||||
></ha-svg-icon>
|
class="not-exposed"
|
||||||
</mwc-icon-button>
|
slot="meta"
|
||||||
<mwc-list-item hasMeta>
|
.path=${mdiCloseBox}
|
||||||
${this.hass!.localize(
|
></ha-svg-icon>
|
||||||
"ui.panel.config.cloud.google.expose_entity"
|
</mwc-list-item>
|
||||||
)}
|
<mwc-list-item hasMeta>
|
||||||
<ha-svg-icon
|
${this.hass!.localize(
|
||||||
class="exposed"
|
"ui.panel.config.cloud.google.follow_domain"
|
||||||
slot="meta"
|
)}
|
||||||
.path=${mdiCheckboxMarked}
|
<ha-svg-icon
|
||||||
></ha-svg-icon>
|
class=${classMap({
|
||||||
</mwc-list-item>
|
exposed: isDomainExposed,
|
||||||
<mwc-list-item hasMeta>
|
"not-exposed": !isDomainExposed,
|
||||||
${this.hass!.localize(
|
})}
|
||||||
"ui.panel.config.cloud.google.dont_expose_entity"
|
slot="meta"
|
||||||
)}
|
.path=${isDomainExposed
|
||||||
<ha-svg-icon
|
? mdiCheckboxMultipleMarked
|
||||||
class="not-exposed"
|
: mdiCloseBoxMultiple}
|
||||||
slot="meta"
|
></ha-svg-icon>
|
||||||
.path=${mdiCloseBox}
|
</mwc-list-item>
|
||||||
></ha-svg-icon>
|
</ha-button-menu>`}
|
||||||
</mwc-list-item>
|
|
||||||
<mwc-list-item hasMeta>
|
|
||||||
${this.hass!.localize(
|
|
||||||
"ui.panel.config.cloud.google.follow_domain"
|
|
||||||
)}
|
|
||||||
<ha-svg-icon
|
|
||||||
class=${classMap({
|
|
||||||
exposed: isDomainExposed,
|
|
||||||
"not-exposed": !isDomainExposed,
|
|
||||||
})}
|
|
||||||
slot="meta"
|
|
||||||
.path=${isDomainExposed
|
|
||||||
? mdiCheckboxMultipleMarked
|
|
||||||
: mdiCloseBoxMultiple}
|
|
||||||
></ha-svg-icon>
|
|
||||||
</mwc-list-item>
|
|
||||||
</ha-button-menu>
|
|
||||||
</div>
|
</div>
|
||||||
${entity.might_2fa
|
${entity.might_2fa
|
||||||
? html`
|
? html`
|
||||||
|
@ -8,6 +8,7 @@ import "../../../../layouts/hass-subpage";
|
|||||||
import { EventsMixin } from "../../../../mixins/events-mixin";
|
import { EventsMixin } from "../../../../mixins/events-mixin";
|
||||||
import LocalizeMixin from "../../../../mixins/localize-mixin";
|
import LocalizeMixin from "../../../../mixins/localize-mixin";
|
||||||
import "../../../../styles/polymer-ha-style";
|
import "../../../../styles/polymer-ha-style";
|
||||||
|
import { documentationUrl } from "../../../../util/documentation-url";
|
||||||
import "../../ha-config-section";
|
import "../../ha-config-section";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -70,8 +71,8 @@ class CloudRegister extends LocalizeMixin(EventsMixin(PolymerElement)) {
|
|||||||
<p>
|
<p>
|
||||||
[[localize('ui.panel.config.cloud.register.information4')]]
|
[[localize('ui.panel.config.cloud.register.information4')]]
|
||||||
</p><ul>
|
</p><ul>
|
||||||
<li><a href="https://home-assistant.io/tos/" target="_blank" rel="noreferrer">[[localize('ui.panel.config.cloud.register.link_terms_conditions')]]</a></li>
|
<li><a href="[[_computeDocumentationUrlTos(hass)]]" target="_blank" rel="noreferrer">[[localize('ui.panel.config.cloud.register.link_terms_conditions')]]</a></li>
|
||||||
<li><a href="https://home-assistant.io/privacy/" target="_blank" rel="noreferrer">[[localize('ui.panel.config.cloud.register.link_privacy_policy')]]</a></li>
|
<li><a href="[[_computeDocumentationUrlPrivacy(hass)]]" target="_blank" rel="noreferrer">[[localize('ui.panel.config.cloud.register.link_privacy_policy')]]</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -137,6 +138,14 @@ class CloudRegister extends LocalizeMixin(EventsMixin(PolymerElement)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_computeDocumentationUrlTos(hass) {
|
||||||
|
return documentationUrl(hass, "/tos/");
|
||||||
|
}
|
||||||
|
|
||||||
|
_computeDocumentationUrlPrivacy(hass) {
|
||||||
|
return documentationUrl(hass, "/privacy/");
|
||||||
|
}
|
||||||
|
|
||||||
_handleRegister() {
|
_handleRegister() {
|
||||||
let invalid = false;
|
let invalid = false;
|
||||||
|
|
||||||
|
@ -6,10 +6,11 @@ import { html } from "@polymer/polymer/lib/utils/html-tag";
|
|||||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||||
import { computeStateDomain } from "../../../common/entity/compute_state_domain";
|
import { computeStateDomain } from "../../../common/entity/compute_state_domain";
|
||||||
import LocalizeMixin from "../../../mixins/localize-mixin";
|
import LocalizeMixin from "../../../mixins/localize-mixin";
|
||||||
import hassAttributeUtil from "../../../util/hass-attributes-util";
|
|
||||||
import "./ha-form-customize-attributes";
|
|
||||||
import "../ha-form-style";
|
|
||||||
import "../../../styles/polymer-ha-style";
|
import "../../../styles/polymer-ha-style";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
|
import hassAttributeUtil from "../../../util/hass-attributes-util";
|
||||||
|
import "../ha-form-style";
|
||||||
|
import "./ha-form-customize-attributes";
|
||||||
|
|
||||||
class HaFormCustomize extends LocalizeMixin(PolymerElement) {
|
class HaFormCustomize extends LocalizeMixin(PolymerElement) {
|
||||||
static get template() {
|
static get template() {
|
||||||
@ -30,7 +31,7 @@ class HaFormCustomize extends LocalizeMixin(PolymerElement) {
|
|||||||
<div class="warning">
|
<div class="warning">
|
||||||
[[localize('ui.panel.config.customize.warning.include_sentence')]]
|
[[localize('ui.panel.config.customize.warning.include_sentence')]]
|
||||||
<a
|
<a
|
||||||
href="https://www.home-assistant.io/docs/configuration/customizing-devices/#customization-using-the-ui"
|
href="[[_computeDocumentationUrl(hass)]]"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>[[localize('ui.panel.config.customize.warning.include_link')]]</a
|
>[[localize('ui.panel.config.customize.warning.include_link')]]</a
|
||||||
@ -210,6 +211,13 @@ class HaFormCustomize extends LocalizeMixin(PolymerElement) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_computeDocumentationUrl(hass) {
|
||||||
|
return documentationUrl(
|
||||||
|
hass,
|
||||||
|
"/docs/configuration/customizing-devices/#customization-using-the-ui"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
computeLocalAttributes(localConfig) {
|
computeLocalAttributes(localConfig) {
|
||||||
if (!localConfig) return [];
|
if (!localConfig) return [];
|
||||||
const localKeys = Object.keys(localConfig);
|
const localKeys = Object.keys(localConfig);
|
||||||
|
@ -6,9 +6,9 @@ import {
|
|||||||
CSSResult,
|
CSSResult,
|
||||||
customElement,
|
customElement,
|
||||||
html,
|
html,
|
||||||
|
internalProperty,
|
||||||
LitElement,
|
LitElement,
|
||||||
property,
|
property,
|
||||||
internalProperty,
|
|
||||||
TemplateResult,
|
TemplateResult,
|
||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import { fireEvent } from "../../../../common/dom/fire_event";
|
import { fireEvent } from "../../../../common/dom/fire_event";
|
||||||
@ -48,12 +48,12 @@ class HaInputNumberForm extends LitElement {
|
|||||||
this._max = item.max ?? 100;
|
this._max = item.max ?? 100;
|
||||||
this._min = item.min ?? 0;
|
this._min = item.min ?? 0;
|
||||||
this._mode = item.mode || "slider";
|
this._mode = item.mode || "slider";
|
||||||
this._step = item.step || 1;
|
this._step = item.step ?? 1;
|
||||||
this._unit_of_measurement = item.unit_of_measurement;
|
this._unit_of_measurement = item.unit_of_measurement;
|
||||||
} else {
|
} else {
|
||||||
this._item = {
|
this._item = {
|
||||||
min: 0,
|
min: 0,
|
||||||
max: 0,
|
max: 100,
|
||||||
};
|
};
|
||||||
this._name = "";
|
this._name = "";
|
||||||
this._icon = "";
|
this._icon = "";
|
||||||
@ -176,8 +176,10 @@ class HaInputNumberForm extends LitElement {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ev.stopPropagation();
|
ev.stopPropagation();
|
||||||
const configValue = (ev.target as any).configValue;
|
const target = ev.target as any;
|
||||||
const value = ev.detail.value;
|
const configValue = target.configValue;
|
||||||
|
const value =
|
||||||
|
target.type === "number" ? Number(ev.detail.value) : ev.detail.value;
|
||||||
if (this[`_${configValue}`] === value) {
|
if (this[`_${configValue}`] === value) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ import "./integrations-card";
|
|||||||
import "./system-health-card";
|
import "./system-health-card";
|
||||||
import { configSections } from "../ha-panel-config";
|
import { configSections } from "../ha-panel-config";
|
||||||
import "../../../layouts/hass-tabs-subpage";
|
import "../../../layouts/hass-tabs-subpage";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
|
|
||||||
const JS_TYPE = __BUILD__;
|
const JS_TYPE = __BUILD__;
|
||||||
const JS_VERSION = __VERSION__;
|
const JS_VERSION = __VERSION__;
|
||||||
@ -42,7 +43,7 @@ class HaConfigInfo extends LitElement {
|
|||||||
>
|
>
|
||||||
<div class="about">
|
<div class="about">
|
||||||
<a
|
<a
|
||||||
href="https://www.home-assistant.io"
|
href="${documentationUrl(this.hass, "")}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
><img
|
><img
|
||||||
@ -63,7 +64,7 @@ class HaConfigInfo extends LitElement {
|
|||||||
</p>
|
</p>
|
||||||
<p class="develop">
|
<p class="develop">
|
||||||
<a
|
<a
|
||||||
href="https://www.home-assistant.io/developers/credits/"
|
href="${documentationUrl(this.hass, "/developers/credits/")}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
|
@ -159,11 +159,13 @@ class OZWNetworkDashboard extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private _generateServiceButton(service: string) {
|
private _generateServiceButton(service: string) {
|
||||||
|
const serviceData = { instance_id: this.ozwInstance };
|
||||||
return html`
|
return html`
|
||||||
<ha-call-service-button
|
<ha-call-service-button
|
||||||
.hass=${this.hass}
|
.hass=${this.hass}
|
||||||
domain="ozw"
|
domain="ozw"
|
||||||
.service=${service}
|
.service=${service}
|
||||||
|
.serviceData=${serviceData}
|
||||||
>
|
>
|
||||||
${this.hass!.localize(`ui.panel.config.ozw.services.${service}`)}
|
${this.hass!.localize(`ui.panel.config.ozw.services.${service}`)}
|
||||||
</ha-call-service-button>
|
</ha-call-service-button>
|
||||||
|
@ -1,20 +1,20 @@
|
|||||||
import "../../../../../components/ha-icon-button";
|
|
||||||
import "../../../../../components/ha-circular-progress";
|
|
||||||
import { UnsubscribeFunc } from "home-assistant-js-websocket";
|
import { UnsubscribeFunc } from "home-assistant-js-websocket";
|
||||||
import {
|
import {
|
||||||
css,
|
css,
|
||||||
CSSResult,
|
CSSResult,
|
||||||
customElement,
|
customElement,
|
||||||
html,
|
html,
|
||||||
|
internalProperty,
|
||||||
LitElement,
|
LitElement,
|
||||||
property,
|
property,
|
||||||
internalProperty,
|
|
||||||
TemplateResult,
|
TemplateResult,
|
||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import "../../../../../components/buttons/ha-call-api-button";
|
import "../../../../../components/buttons/ha-call-api-button";
|
||||||
import "../../../../../components/buttons/ha-call-service-button";
|
import "../../../../../components/buttons/ha-call-service-button";
|
||||||
import "../../../../../components/ha-card";
|
import "../../../../../components/ha-card";
|
||||||
|
import "../../../../../components/ha-circular-progress";
|
||||||
import "../../../../../components/ha-icon";
|
import "../../../../../components/ha-icon";
|
||||||
|
import "../../../../../components/ha-icon-button";
|
||||||
import "../../../../../components/ha-service-description";
|
import "../../../../../components/ha-service-description";
|
||||||
import {
|
import {
|
||||||
fetchNetworkStatus,
|
fetchNetworkStatus,
|
||||||
@ -26,6 +26,7 @@ import {
|
|||||||
} from "../../../../../data/zwave";
|
} from "../../../../../data/zwave";
|
||||||
import { haStyle } from "../../../../../resources/styles";
|
import { haStyle } from "../../../../../resources/styles";
|
||||||
import { HomeAssistant } from "../../../../../types";
|
import { HomeAssistant } from "../../../../../types";
|
||||||
|
import { documentationUrl } from "../../../../../util/documentation-url";
|
||||||
import "../../../ha-config-section";
|
import "../../../ha-config-section";
|
||||||
|
|
||||||
@customElement("zwave-network")
|
@customElement("zwave-network")
|
||||||
@ -71,7 +72,10 @@ export class ZwaveNetwork extends LitElement {
|
|||||||
)}
|
)}
|
||||||
<p>
|
<p>
|
||||||
<a
|
<a
|
||||||
href="https://www.home-assistant.io/docs/z-wave/control-panel/"
|
href="${documentationUrl(
|
||||||
|
this.hass,
|
||||||
|
"/docs/z-wave/control-panel/"
|
||||||
|
)}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
|
@ -1,14 +1,21 @@
|
|||||||
|
import "@material/mwc-icon-button/mwc-icon-button";
|
||||||
|
import { mdiContentCopy } from "@mdi/js";
|
||||||
import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable";
|
import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable";
|
||||||
|
import "@polymer/paper-tooltip/paper-tooltip";
|
||||||
|
import type { PaperTooltipElement } from "@polymer/paper-tooltip/paper-tooltip";
|
||||||
import {
|
import {
|
||||||
css,
|
css,
|
||||||
CSSResult,
|
CSSResult,
|
||||||
html,
|
html,
|
||||||
|
internalProperty,
|
||||||
LitElement,
|
LitElement,
|
||||||
property,
|
property,
|
||||||
internalProperty,
|
query,
|
||||||
TemplateResult,
|
TemplateResult,
|
||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
|
import { fireEvent } from "../../../common/dom/fire_event";
|
||||||
import "../../../components/dialog/ha-paper-dialog";
|
import "../../../components/dialog/ha-paper-dialog";
|
||||||
|
import "../../../components/ha-svg-icon";
|
||||||
import {
|
import {
|
||||||
domainToName,
|
domainToName,
|
||||||
fetchIntegrationManifest,
|
fetchIntegrationManifest,
|
||||||
@ -16,12 +23,11 @@ import {
|
|||||||
IntegrationManifest,
|
IntegrationManifest,
|
||||||
} from "../../../data/integration";
|
} from "../../../data/integration";
|
||||||
import { getLoggedErrorIntegration } from "../../../data/system_log";
|
import { getLoggedErrorIntegration } from "../../../data/system_log";
|
||||||
import { PolymerChangedEvent } from "../../../polymer-types";
|
import type { PolymerChangedEvent } from "../../../polymer-types";
|
||||||
import { haStyleDialog } from "../../../resources/styles";
|
import { haStyleDialog } from "../../../resources/styles";
|
||||||
import { HomeAssistant } from "../../../types";
|
import type { HomeAssistant } from "../../../types";
|
||||||
import { SystemLogDetailDialogParams } from "./show-dialog-system-log-detail";
|
import type { SystemLogDetailDialogParams } from "./show-dialog-system-log-detail";
|
||||||
import { formatSystemLogTime } from "./util";
|
import { formatSystemLogTime } from "./util";
|
||||||
import { fireEvent } from "../../../common/dom/fire_event";
|
|
||||||
|
|
||||||
class DialogSystemLogDetail extends LitElement {
|
class DialogSystemLogDetail extends LitElement {
|
||||||
@property({ attribute: false }) public hass!: HomeAssistant;
|
@property({ attribute: false }) public hass!: HomeAssistant;
|
||||||
@ -30,6 +36,8 @@ class DialogSystemLogDetail extends LitElement {
|
|||||||
|
|
||||||
@internalProperty() private _manifest?: IntegrationManifest;
|
@internalProperty() private _manifest?: IntegrationManifest;
|
||||||
|
|
||||||
|
@query("paper-tooltip") private _toolTip?: PaperTooltipElement;
|
||||||
|
|
||||||
public async showDialog(params: SystemLogDetailDialogParams): Promise<void> {
|
public async showDialog(params: SystemLogDetailDialogParams): Promise<void> {
|
||||||
this._params = params;
|
this._params = params;
|
||||||
this._manifest = undefined;
|
this._manifest = undefined;
|
||||||
@ -66,13 +74,25 @@ class DialogSystemLogDetail extends LitElement {
|
|||||||
opened
|
opened
|
||||||
@opened-changed="${this._openedChanged}"
|
@opened-changed="${this._openedChanged}"
|
||||||
>
|
>
|
||||||
<h2>
|
<div class="heading">
|
||||||
${this.hass.localize(
|
<h2>
|
||||||
"ui.panel.config.logs.details",
|
${this.hass.localize(
|
||||||
"level",
|
"ui.panel.config.logs.details",
|
||||||
item.level
|
"level",
|
||||||
)}
|
item.level
|
||||||
</h2>
|
)}
|
||||||
|
</h2>
|
||||||
|
<mwc-icon-button id="copy" @click=${this._copyLog}>
|
||||||
|
<ha-svg-icon .path=${mdiContentCopy}></ha-svg-icon>
|
||||||
|
</mwc-icon-button>
|
||||||
|
<paper-tooltip
|
||||||
|
manual-mode
|
||||||
|
for="copy"
|
||||||
|
position="top"
|
||||||
|
animation-delay="0"
|
||||||
|
>${this.hass.localize("ui.common.copied")}</paper-tooltip
|
||||||
|
>
|
||||||
|
</div>
|
||||||
<paper-dialog-scrollable>
|
<paper-dialog-scrollable>
|
||||||
<p>
|
<p>
|
||||||
Logger: ${item.name}<br />
|
Logger: ${item.name}<br />
|
||||||
@ -148,6 +168,25 @@ class DialogSystemLogDetail extends LitElement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private _copyLog(): void {
|
||||||
|
const copyElement = this.shadowRoot?.querySelector(
|
||||||
|
"paper-dialog-scrollable"
|
||||||
|
) as HTMLElement;
|
||||||
|
|
||||||
|
const selection = window.getSelection()!;
|
||||||
|
const range = document.createRange();
|
||||||
|
|
||||||
|
range.selectNodeContents(copyElement);
|
||||||
|
selection.removeAllRanges();
|
||||||
|
selection.addRange(range);
|
||||||
|
|
||||||
|
document.execCommand("copy");
|
||||||
|
window.getSelection()!.removeAllRanges();
|
||||||
|
|
||||||
|
this._toolTip!.show();
|
||||||
|
setTimeout(() => this._toolTip?.hide(), 3000);
|
||||||
|
}
|
||||||
|
|
||||||
static get styles(): CSSResult[] {
|
static get styles(): CSSResult[] {
|
||||||
return [
|
return [
|
||||||
haStyleDialog,
|
haStyleDialog,
|
||||||
@ -164,6 +203,15 @@ class DialogSystemLogDetail extends LitElement {
|
|||||||
pre {
|
pre {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
.heading {
|
||||||
|
display: flex;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
.heading ha-svg-icon {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
`,
|
`,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -4,23 +4,24 @@ import {
|
|||||||
css,
|
css,
|
||||||
CSSResult,
|
CSSResult,
|
||||||
html,
|
html,
|
||||||
|
internalProperty,
|
||||||
LitElement,
|
LitElement,
|
||||||
property,
|
property,
|
||||||
internalProperty,
|
|
||||||
TemplateResult,
|
TemplateResult,
|
||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import memoizeOne from "memoize-one";
|
import memoizeOne from "memoize-one";
|
||||||
import "../../../components/ha-picture-upload";
|
|
||||||
import type { HaPictureUpload } from "../../../components/ha-picture-upload";
|
|
||||||
import "../../../components/entity/ha-entities-picker";
|
import "../../../components/entity/ha-entities-picker";
|
||||||
import { createCloseHeading } from "../../../components/ha-dialog";
|
import { createCloseHeading } from "../../../components/ha-dialog";
|
||||||
|
import "../../../components/ha-picture-upload";
|
||||||
|
import type { HaPictureUpload } from "../../../components/ha-picture-upload";
|
||||||
import "../../../components/user/ha-user-picker";
|
import "../../../components/user/ha-user-picker";
|
||||||
import { PersonMutableParams } from "../../../data/person";
|
import { PersonMutableParams } from "../../../data/person";
|
||||||
|
import { CropOptions } from "../../../dialogs/image-cropper-dialog/show-image-cropper-dialog";
|
||||||
import { PolymerChangedEvent } from "../../../polymer-types";
|
import { PolymerChangedEvent } from "../../../polymer-types";
|
||||||
import { haStyleDialog } from "../../../resources/styles";
|
import { haStyleDialog } from "../../../resources/styles";
|
||||||
import { HomeAssistant } from "../../../types";
|
import { HomeAssistant } from "../../../types";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
import { PersonDetailDialogParams } from "./show-dialog-person-detail";
|
import { PersonDetailDialogParams } from "./show-dialog-person-detail";
|
||||||
import { CropOptions } from "../../../dialogs/image-cropper-dialog/show-image-cropper-dialog";
|
|
||||||
|
|
||||||
const includeDomains = ["device_tracker"];
|
const includeDomains = ["device_tracker"];
|
||||||
|
|
||||||
@ -153,7 +154,10 @@ class DialogPersonDetail extends LitElement {
|
|||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<a
|
<a
|
||||||
href="https://www.home-assistant.io/integrations/#presence-detection"
|
href="${documentationUrl(
|
||||||
|
this.hass,
|
||||||
|
"/integrations/#presence-detection"
|
||||||
|
)}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>${this.hass!.localize(
|
>${this.hass!.localize(
|
||||||
|
@ -25,6 +25,7 @@ import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box";
|
|||||||
import "../../../layouts/hass-tabs-subpage-data-table";
|
import "../../../layouts/hass-tabs-subpage-data-table";
|
||||||
import { haStyle } from "../../../resources/styles";
|
import { haStyle } from "../../../resources/styles";
|
||||||
import { HomeAssistant, Route } from "../../../types";
|
import { HomeAssistant, Route } from "../../../types";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
import { showToast } from "../../../util/toast";
|
import { showToast } from "../../../util/toast";
|
||||||
import { configSections } from "../ha-panel-config";
|
import { configSections } from "../ha-panel-config";
|
||||||
|
|
||||||
@ -191,7 +192,7 @@ class HaSceneDashboard extends LitElement {
|
|||||||
${this.hass.localize("ui.panel.config.scene.picker.introduction")}
|
${this.hass.localize("ui.panel.config.scene.picker.introduction")}
|
||||||
<p>
|
<p>
|
||||||
<a
|
<a
|
||||||
href="https://home-assistant.io/docs/scene/editor/"
|
href="${documentationUrl(this.hass, "/docs/scene/editor/")}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
|
@ -1,44 +1,47 @@
|
|||||||
|
import "@material/mwc-fab";
|
||||||
|
import { mdiContentSave } from "@mdi/js";
|
||||||
import "@polymer/app-layout/app-header/app-header";
|
import "@polymer/app-layout/app-header/app-header";
|
||||||
import "@polymer/paper-dropdown-menu/paper-dropdown-menu-light";
|
|
||||||
import "@polymer/app-layout/app-toolbar/app-toolbar";
|
import "@polymer/app-layout/app-toolbar/app-toolbar";
|
||||||
import "../../../components/ha-icon-button";
|
import "@polymer/paper-dropdown-menu/paper-dropdown-menu-light";
|
||||||
|
import { PaperListboxElement } from "@polymer/paper-listbox";
|
||||||
import {
|
import {
|
||||||
css,
|
css,
|
||||||
CSSResult,
|
CSSResult,
|
||||||
html,
|
html,
|
||||||
|
internalProperty,
|
||||||
LitElement,
|
LitElement,
|
||||||
property,
|
property,
|
||||||
internalProperty,
|
|
||||||
PropertyValues,
|
PropertyValues,
|
||||||
TemplateResult,
|
TemplateResult,
|
||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import { classMap } from "lit-html/directives/class-map";
|
import { classMap } from "lit-html/directives/class-map";
|
||||||
import { computeObjectId } from "../../../common/entity/compute_object_id";
|
import { computeObjectId } from "../../../common/entity/compute_object_id";
|
||||||
import { navigate } from "../../../common/navigate";
|
import { navigate } from "../../../common/navigate";
|
||||||
|
import { slugify } from "../../../common/string/slugify";
|
||||||
import { computeRTL } from "../../../common/util/compute_rtl";
|
import { computeRTL } from "../../../common/util/compute_rtl";
|
||||||
import "../../../components/ha-card";
|
import "../../../components/ha-card";
|
||||||
|
import "../../../components/ha-icon-button";
|
||||||
import "../../../components/ha-icon-input";
|
import "../../../components/ha-icon-input";
|
||||||
import "@material/mwc-fab";
|
import "../../../components/ha-svg-icon";
|
||||||
import {
|
import {
|
||||||
Action,
|
Action,
|
||||||
deleteScript,
|
deleteScript,
|
||||||
getScriptEditorInitData,
|
getScriptEditorInitData,
|
||||||
ScriptConfig,
|
|
||||||
MODES,
|
MODES,
|
||||||
MODES_MAX,
|
MODES_MAX,
|
||||||
|
ScriptConfig,
|
||||||
|
triggerScript,
|
||||||
} from "../../../data/script";
|
} from "../../../data/script";
|
||||||
import { showConfirmationDialog } from "../../../dialogs/generic/show-dialog-box";
|
import { showConfirmationDialog } from "../../../dialogs/generic/show-dialog-box";
|
||||||
import "../../../layouts/ha-app-layout";
|
import "../../../layouts/ha-app-layout";
|
||||||
import { haStyle } from "../../../resources/styles";
|
import { haStyle } from "../../../resources/styles";
|
||||||
import { HomeAssistant, Route } from "../../../types";
|
import { HomeAssistant, Route } from "../../../types";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
|
import { showToast } from "../../../util/toast";
|
||||||
import "../automation/action/ha-automation-action";
|
import "../automation/action/ha-automation-action";
|
||||||
import { HaDeviceAction } from "../automation/action/types/ha-automation-action-device_id";
|
import { HaDeviceAction } from "../automation/action/types/ha-automation-action-device_id";
|
||||||
import "../ha-config-section";
|
import "../ha-config-section";
|
||||||
import { configSections } from "../ha-panel-config";
|
import { configSections } from "../ha-panel-config";
|
||||||
import "../../../components/ha-svg-icon";
|
|
||||||
import { mdiContentSave } from "@mdi/js";
|
|
||||||
import { PaperListboxElement } from "@polymer/paper-listbox";
|
|
||||||
import { slugify } from "../../../common/string/slugify";
|
|
||||||
|
|
||||||
export class HaScriptEditor extends LitElement {
|
export class HaScriptEditor extends LitElement {
|
||||||
@property({ attribute: false }) public hass!: HomeAssistant;
|
@property({ attribute: false }) public hass!: HomeAssistant;
|
||||||
@ -146,7 +149,10 @@ export class HaScriptEditor extends LitElement {
|
|||||||
"ui.panel.config.script.editor.modes.description",
|
"ui.panel.config.script.editor.modes.description",
|
||||||
"documentation_link",
|
"documentation_link",
|
||||||
html`<a
|
html`<a
|
||||||
href="https://www.home-assistant.io/integrations/script/#script-modes"
|
href="${documentationUrl(
|
||||||
|
this.hass,
|
||||||
|
"/integrations/script/#script-modes"
|
||||||
|
)}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>${this.hass.localize(
|
>${this.hass.localize(
|
||||||
@ -193,6 +199,24 @@ export class HaScriptEditor extends LitElement {
|
|||||||
</paper-input>`
|
</paper-input>`
|
||||||
: html``}
|
: html``}
|
||||||
</div>
|
</div>
|
||||||
|
${this.scriptEntityId
|
||||||
|
? html`
|
||||||
|
<div
|
||||||
|
class="card-actions layout horizontal justified center"
|
||||||
|
>
|
||||||
|
<span></span>
|
||||||
|
<mwc-button
|
||||||
|
@click=${this._runScript}
|
||||||
|
title="${this.hass.localize(
|
||||||
|
"ui.panel.config.script.picker.activate_script"
|
||||||
|
)}"
|
||||||
|
?disabled=${this._dirty}
|
||||||
|
>
|
||||||
|
${this.hass.localize("ui.card.script.execute")}
|
||||||
|
</mwc-button>
|
||||||
|
</div>
|
||||||
|
`
|
||||||
|
: ``}
|
||||||
</ha-card>
|
</ha-card>
|
||||||
</ha-config-section>
|
</ha-config-section>
|
||||||
|
|
||||||
@ -209,7 +233,7 @@ export class HaScriptEditor extends LitElement {
|
|||||||
)}
|
)}
|
||||||
</p>
|
</p>
|
||||||
<a
|
<a
|
||||||
href="https://home-assistant.io/docs/scripts/"
|
href="${documentationUrl(this.hass, "/docs/scripts/")}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
@ -301,6 +325,18 @@ export class HaScriptEditor extends LitElement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async _runScript(ev) {
|
||||||
|
ev.stopPropagation();
|
||||||
|
await triggerScript(this.hass, this.scriptEntityId);
|
||||||
|
showToast(this, {
|
||||||
|
message: this.hass.localize(
|
||||||
|
"ui.notification_toast.triggered",
|
||||||
|
"name",
|
||||||
|
this._config!.alias
|
||||||
|
),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private _modeChanged(ev: CustomEvent) {
|
private _modeChanged(ev: CustomEvent) {
|
||||||
const mode = ((ev.target as PaperListboxElement)?.selectedItem as any)
|
const mode = ((ev.target as PaperListboxElement)?.selectedItem as any)
|
||||||
?.mode;
|
?.mode;
|
||||||
|
@ -25,6 +25,7 @@ import { configSections } from "../ha-panel-config";
|
|||||||
import "../../../components/ha-svg-icon";
|
import "../../../components/ha-svg-icon";
|
||||||
import { mdiPlus } from "@mdi/js";
|
import { mdiPlus } from "@mdi/js";
|
||||||
import { stateIcon } from "../../../common/entity/state_icon";
|
import { stateIcon } from "../../../common/entity/state_icon";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
|
|
||||||
@customElement("ha-script-picker")
|
@customElement("ha-script-picker")
|
||||||
class HaScriptPicker extends LitElement {
|
class HaScriptPicker extends LitElement {
|
||||||
@ -187,7 +188,7 @@ class HaScriptPicker extends LitElement {
|
|||||||
${this.hass.localize("ui.panel.config.script.picker.introduction")}
|
${this.hass.localize("ui.panel.config.script.picker.introduction")}
|
||||||
<p>
|
<p>
|
||||||
<a
|
<a
|
||||||
href="https://home-assistant.io/docs/scripts/editor/"
|
href="${documentationUrl(this.hass, "/docs/scripts/editor/")}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
|
@ -9,6 +9,7 @@ import "../../../components/ha-code-editor";
|
|||||||
import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box";
|
import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box";
|
||||||
import { EventsMixin } from "../../../mixins/events-mixin";
|
import { EventsMixin } from "../../../mixins/events-mixin";
|
||||||
import LocalizeMixin from "../../../mixins/localize-mixin";
|
import LocalizeMixin from "../../../mixins/localize-mixin";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
import "../../../styles/polymer-ha-style";
|
import "../../../styles/polymer-ha-style";
|
||||||
import "./event-subscribe-card";
|
import "./event-subscribe-card";
|
||||||
import "./events-list";
|
import "./events-list";
|
||||||
@ -61,7 +62,7 @@ class HaPanelDevEvent extends EventsMixin(LocalizeMixin(PolymerElement)) {
|
|||||||
<p>
|
<p>
|
||||||
[[localize( 'ui.panel.developer-tools.tabs.events.description' )]]
|
[[localize( 'ui.panel.developer-tools.tabs.events.description' )]]
|
||||||
<a
|
<a
|
||||||
href="https://www.home-assistant.io/docs/configuration/events/"
|
href="[[_computeDocumentationUrl(hass)]]"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
@ -149,6 +150,10 @@ class HaPanelDevEvent extends EventsMixin(LocalizeMixin(PolymerElement)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_computeDocumentationUrl(hass) {
|
||||||
|
return documentationUrl(hass, "/docs/configuration/events/");
|
||||||
|
}
|
||||||
|
|
||||||
_computeValidJSON(parsedJSON) {
|
_computeValidJSON(parsedJSON) {
|
||||||
return parsedJSON !== ERROR_SENTINEL;
|
return parsedJSON !== ERROR_SENTINEL;
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ import {
|
|||||||
} from "../../../data/ws-templates";
|
} from "../../../data/ws-templates";
|
||||||
import { haStyle } from "../../../resources/styles";
|
import { haStyle } from "../../../resources/styles";
|
||||||
import { HomeAssistant } from "../../../types";
|
import { HomeAssistant } from "../../../types";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
|
|
||||||
const DEMO_TEMPLATE = `{## Imitate available variables: ##}
|
const DEMO_TEMPLATE = `{## Imitate available variables: ##}
|
||||||
{% set my_test_json = {
|
{% set my_test_json = {
|
||||||
@ -107,7 +108,10 @@ class HaPanelDevTemplate extends LitElement {
|
|||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a
|
<a
|
||||||
href="https://home-assistant.io/docs/configuration/templating/"
|
href="${documentationUrl(
|
||||||
|
this.hass,
|
||||||
|
"/docs/configuration/templating/"
|
||||||
|
)}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
|
@ -285,7 +285,7 @@ class HaLogbook extends LitElement {
|
|||||||
.narrow .entry {
|
.narrow .entry {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
padding: 8px;
|
padding: 8px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.narrow .icon-message ha-icon {
|
.narrow .icon-message ha-icon {
|
||||||
|
@ -63,6 +63,9 @@ export class HuiButtonCard extends LitElement implements LovelaceCard {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
type: "button",
|
type: "button",
|
||||||
|
tap_action: {
|
||||||
|
action: "toggle",
|
||||||
|
},
|
||||||
entity: foundEntities[0] || "",
|
entity: foundEntities[0] || "",
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ class HuiEntitiesCard extends LitElement implements LovelaceCard {
|
|||||||
["light", "switch", "sensor"]
|
["light", "switch", "sensor"]
|
||||||
);
|
);
|
||||||
|
|
||||||
return { type: "entities", title: "My Title", entities: foundEntities };
|
return { type: "entities", entities: foundEntities };
|
||||||
}
|
}
|
||||||
|
|
||||||
@internalProperty() private _config?: EntitiesCardConfig;
|
@internalProperty() private _config?: EntitiesCardConfig;
|
||||||
|
@ -43,8 +43,8 @@ export class HuiErrorCard extends LitElement implements LovelaceCard {
|
|||||||
return css`
|
return css`
|
||||||
:host {
|
:host {
|
||||||
display: block;
|
display: block;
|
||||||
background-color: #ef5350;
|
background-color: var(--error-color);
|
||||||
color: white;
|
color: var(--color-on-error, white);
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
user-select: text;
|
user-select: text;
|
||||||
|
@ -115,7 +115,10 @@ export class HuiDialogEditCard extends LitElement implements HassDialog {
|
|||||||
const oldConfig = changedProps.get("_cardConfig") as LovelaceCardConfig;
|
const oldConfig = changedProps.get("_cardConfig") as LovelaceCardConfig;
|
||||||
|
|
||||||
if (oldConfig?.type !== this._cardConfig!.type) {
|
if (oldConfig?.type !== this._cardConfig!.type) {
|
||||||
this._documentationURL = getCardDocumentationURL(this._cardConfig!.type);
|
this._documentationURL = getCardDocumentationURL(
|
||||||
|
this.hass,
|
||||||
|
this._cardConfig!.type
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,14 +1,17 @@
|
|||||||
import {
|
import {
|
||||||
getCustomCardEntry,
|
|
||||||
CUSTOM_TYPE_PREFIX,
|
CUSTOM_TYPE_PREFIX,
|
||||||
|
getCustomCardEntry,
|
||||||
} from "../../../data/lovelace_custom_cards";
|
} from "../../../data/lovelace_custom_cards";
|
||||||
|
import { HomeAssistant } from "../../../types";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
|
|
||||||
const coreDocumentationURLBase = "https://www.home-assistant.io/lovelace/";
|
export const getCardDocumentationURL = (
|
||||||
|
hass: HomeAssistant,
|
||||||
export const getCardDocumentationURL = (type: string): string | undefined => {
|
type: string
|
||||||
|
): string | undefined => {
|
||||||
if (type.startsWith(CUSTOM_TYPE_PREFIX)) {
|
if (type.startsWith(CUSTOM_TYPE_PREFIX)) {
|
||||||
return getCustomCardEntry(type)?.documentationURL;
|
return getCustomCardEntry(type)?.documentationURL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return `${coreDocumentationURLBase}${type}`;
|
return `${documentationUrl(hass, "/lovelace/")}${type}`;
|
||||||
};
|
};
|
||||||
|
@ -1,33 +1,32 @@
|
|||||||
import "@material/mwc-button";
|
import "@material/mwc-button";
|
||||||
import "@material/mwc-icon-button/mwc-icon-button";
|
import "@material/mwc-icon-button/mwc-icon-button";
|
||||||
|
import { mdiHelpCircle } from "@mdi/js";
|
||||||
import {
|
import {
|
||||||
css,
|
css,
|
||||||
CSSResult,
|
CSSResult,
|
||||||
customElement,
|
customElement,
|
||||||
html,
|
html,
|
||||||
|
internalProperty,
|
||||||
LitElement,
|
LitElement,
|
||||||
property,
|
property,
|
||||||
internalProperty,
|
|
||||||
TemplateResult,
|
TemplateResult,
|
||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import { mdiHelpCircle } from "@mdi/js";
|
|
||||||
import { fireEvent } from "../../../common/dom/fire_event";
|
import { fireEvent } from "../../../common/dom/fire_event";
|
||||||
|
import { computeRTLDirection } from "../../../common/util/compute_rtl";
|
||||||
|
import "../../../components/ha-circular-progress";
|
||||||
|
import "../../../components/ha-dialog";
|
||||||
|
import "../../../components/ha-formfield";
|
||||||
|
import "../../../components/ha-svg-icon";
|
||||||
|
import "../../../components/ha-switch";
|
||||||
|
import "../../../components/ha-yaml-editor";
|
||||||
|
import type { HassDialog } from "../../../dialogs/make-dialog-manager";
|
||||||
import { haStyleDialog } from "../../../resources/styles";
|
import { haStyleDialog } from "../../../resources/styles";
|
||||||
import type { HomeAssistant } from "../../../types";
|
import type { HomeAssistant } from "../../../types";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
import type { SaveDialogParams } from "./show-save-config-dialog";
|
import type { SaveDialogParams } from "./show-save-config-dialog";
|
||||||
import { computeRTLDirection } from "../../../common/util/compute_rtl";
|
|
||||||
import type { HassDialog } from "../../../dialogs/make-dialog-manager";
|
|
||||||
import "../../../components/ha-switch";
|
|
||||||
import "../../../components/ha-formfield";
|
|
||||||
import "../../../components/ha-yaml-editor";
|
|
||||||
import "../../../components/ha-svg-icon";
|
|
||||||
import "../../../components/ha-dialog";
|
|
||||||
import "../../../components/ha-circular-progress";
|
|
||||||
|
|
||||||
const EMPTY_CONFIG = { views: [] };
|
const EMPTY_CONFIG = { views: [] };
|
||||||
|
|
||||||
const coreDocumentationURLBase = "https://www.home-assistant.io/lovelace/";
|
|
||||||
|
|
||||||
@customElement("hui-dialog-save-config")
|
@customElement("hui-dialog-save-config")
|
||||||
export class HuiSaveConfig extends LitElement implements HassDialog {
|
export class HuiSaveConfig extends LitElement implements HassDialog {
|
||||||
@property({ attribute: false }) public hass?: HomeAssistant;
|
@property({ attribute: false }) public hass?: HomeAssistant;
|
||||||
@ -68,7 +67,7 @@ export class HuiSaveConfig extends LitElement implements HassDialog {
|
|||||||
"ui.panel.lovelace.editor.save_config.header"
|
"ui.panel.lovelace.editor.save_config.header"
|
||||||
)}<a
|
)}<a
|
||||||
class="header_button"
|
class="header_button"
|
||||||
href=${coreDocumentationURLBase}
|
href=${documentationUrl(this.hass!, "/lovelace/")}
|
||||||
title=${this.hass!.localize("ui.panel.lovelace.menu.help")}
|
title=${this.hass!.localize("ui.panel.lovelace.menu.help")}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
|
@ -53,6 +53,7 @@ import { showVoiceCommandDialog } from "../../dialogs/voice-command-dialog/show-
|
|||||||
import "../../layouts/ha-app-layout";
|
import "../../layouts/ha-app-layout";
|
||||||
import { haStyle } from "../../resources/styles";
|
import { haStyle } from "../../resources/styles";
|
||||||
import type { HomeAssistant } from "../../types";
|
import type { HomeAssistant } from "../../types";
|
||||||
|
import { documentationUrl } from "../../util/documentation-url";
|
||||||
import { swapView } from "./editor/config-util";
|
import { swapView } from "./editor/config-util";
|
||||||
import { showEditLovelaceDialog } from "./editor/lovelace-editor/show-edit-lovelace-dialog";
|
import { showEditLovelaceDialog } from "./editor/lovelace-editor/show-edit-lovelace-dialog";
|
||||||
import { showEditViewDialog } from "./editor/view-editor/show-edit-view-dialog";
|
import { showEditViewDialog } from "./editor/view-editor/show-edit-view-dialog";
|
||||||
@ -136,7 +137,7 @@ class HUIRoot extends LitElement {
|
|||||||
</mwc-icon-button>
|
</mwc-icon-button>
|
||||||
</div>
|
</div>
|
||||||
<a
|
<a
|
||||||
href="https://www.home-assistant.io/lovelace/"
|
href="${documentationUrl(this.hass, "/lovelace/")}"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
class="menu-link"
|
class="menu-link"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
@ -266,7 +267,7 @@ class HUIRoot extends LitElement {
|
|||||||
`
|
`
|
||||||
: ""}
|
: ""}
|
||||||
<a
|
<a
|
||||||
href="https://www.home-assistant.io/lovelace/"
|
href="${documentationUrl(this.hass, "/lovelace/")}"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
class="menu-link"
|
class="menu-link"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
|
@ -17,7 +17,7 @@ import { supportsFeature } from "../../common/entity/supports-feature";
|
|||||||
import "../../components/ha-menu-button";
|
import "../../components/ha-menu-button";
|
||||||
import "../../components/media-player/ha-media-player-browse";
|
import "../../components/media-player/ha-media-player-browse";
|
||||||
import {
|
import {
|
||||||
BROWSER_SOURCE,
|
BROWSER_PLAYER,
|
||||||
MediaPickedEvent,
|
MediaPickedEvent,
|
||||||
SUPPORT_BROWSE_MEDIA,
|
SUPPORT_BROWSE_MEDIA,
|
||||||
} from "../../data/media-player";
|
} from "../../data/media-player";
|
||||||
@ -36,7 +36,7 @@ class PanelMediaBrowser extends LitElement {
|
|||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
@LocalStorage("mediaBrowseEntityId", true)
|
@LocalStorage("mediaBrowseEntityId", true)
|
||||||
private _entityId = BROWSER_SOURCE;
|
private _entityId = BROWSER_PLAYER;
|
||||||
|
|
||||||
protected render(): TemplateResult {
|
protected render(): TemplateResult {
|
||||||
const stateObj = this._entityId
|
const stateObj = this._entityId
|
||||||
@ -44,7 +44,7 @@ class PanelMediaBrowser extends LitElement {
|
|||||||
: undefined;
|
: undefined;
|
||||||
|
|
||||||
const title =
|
const title =
|
||||||
this._entityId === BROWSER_SOURCE
|
this._entityId === BROWSER_PLAYER
|
||||||
? `${this.hass.localize("ui.components.media-browser.web-browser")}`
|
? `${this.hass.localize("ui.components.media-browser.web-browser")}`
|
||||||
: stateObj?.attributes.friendly_name
|
: stateObj?.attributes.friendly_name
|
||||||
? `${stateObj?.attributes.friendly_name}`
|
? `${stateObj?.attributes.friendly_name}`
|
||||||
@ -64,7 +64,7 @@ class PanelMediaBrowser extends LitElement {
|
|||||||
"ui.components.media-browser.media-player-browser"
|
"ui.components.media-browser.media-player-browser"
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
<div class="secondary">${title || ""}</div>
|
<div class="secondary-text">${title || ""}</div>
|
||||||
</div>
|
</div>
|
||||||
<mwc-button @click=${this._showSelectMediaPlayerDialog}>
|
<mwc-button @click=${this._showSelectMediaPlayerDialog}>
|
||||||
${this.hass.localize("ui.components.media-browser.choose_player")}
|
${this.hass.localize("ui.components.media-browser.choose_player")}
|
||||||
@ -95,7 +95,7 @@ class PanelMediaBrowser extends LitElement {
|
|||||||
ev: HASSDomEvent<MediaPickedEvent>
|
ev: HASSDomEvent<MediaPickedEvent>
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
const item = ev.detail.item;
|
const item = ev.detail.item;
|
||||||
if (this._entityId === BROWSER_SOURCE) {
|
if (this._entityId === BROWSER_PLAYER) {
|
||||||
const resolvedUrl: any = await this.hass.callWS({
|
const resolvedUrl: any = await this.hass.callWS({
|
||||||
type: "media_source/resolve_media",
|
type: "media_source/resolve_media",
|
||||||
media_content_id: item.media_content_id,
|
media_content_id: item.media_content_id,
|
||||||
@ -146,8 +146,7 @@ class PanelMediaBrowser extends LitElement {
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
.heading .secondary {
|
.heading .secondary-text {
|
||||||
color: var(--secondary-text-color);
|
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
import "@material/mwc-list/mwc-list";
|
||||||
|
import "@material/mwc-list/mwc-list-item";
|
||||||
import "@polymer/paper-item/paper-item";
|
import "@polymer/paper-item/paper-item";
|
||||||
import "@polymer/paper-listbox/paper-listbox";
|
import "@polymer/paper-listbox/paper-listbox";
|
||||||
import {
|
import {
|
||||||
@ -13,7 +15,8 @@ import { fireEvent } from "../../common/dom/fire_event";
|
|||||||
import { computeStateName } from "../../common/entity/compute_state_name";
|
import { computeStateName } from "../../common/entity/compute_state_name";
|
||||||
import { compare } from "../../common/string/compare";
|
import { compare } from "../../common/string/compare";
|
||||||
import { createCloseHeading } from "../../components/ha-dialog";
|
import { createCloseHeading } from "../../components/ha-dialog";
|
||||||
import { BROWSER_SOURCE } from "../../data/media-player";
|
import { UNAVAILABLE_STATES } from "../../data/entity";
|
||||||
|
import { BROWSER_PLAYER } from "../../data/media-player";
|
||||||
import { haStyleDialog } from "../../resources/styles";
|
import { haStyleDialog } from "../../resources/styles";
|
||||||
import type { HomeAssistant } from "../../types";
|
import type { HomeAssistant } from "../../types";
|
||||||
import type { SelectMediaPlayerDialogParams } from "./show-select-media-source-dialog";
|
import type { SelectMediaPlayerDialogParams } from "./show-select-media-source-dialog";
|
||||||
@ -49,30 +52,31 @@ export class HuiDialogSelectMediaPlayer extends LitElement {
|
|||||||
)}
|
)}
|
||||||
@closed=${this.closeDialog}
|
@closed=${this.closeDialog}
|
||||||
>
|
>
|
||||||
<paper-listbox
|
<mwc-list>
|
||||||
attr-for-selected="itemName"
|
<mwc-list-item .player=${BROWSER_PLAYER} @click=${this._selectPlayer}
|
||||||
@iron-select=${this._selectSource}
|
|
||||||
><paper-item .itemName=${BROWSER_SOURCE}
|
|
||||||
>${this.hass.localize(
|
>${this.hass.localize(
|
||||||
"ui.components.media-browser.web-browser"
|
"ui.components.media-browser.web-browser"
|
||||||
)}</paper-item
|
)}</mwc-list-item
|
||||||
>
|
>
|
||||||
${this._params.mediaSources
|
${this._params.mediaSources
|
||||||
.sort((a, b) => compare(computeStateName(a), computeStateName(b)))
|
.sort((a, b) => compare(computeStateName(a), computeStateName(b)))
|
||||||
.map(
|
.map(
|
||||||
(source) => html`
|
(source) => html`
|
||||||
<paper-item .itemName=${source.entity_id}
|
<mwc-list-item
|
||||||
>${computeStateName(source)}</paper-item
|
.disabled=${UNAVAILABLE_STATES.includes(source.state)}
|
||||||
|
.player=${source.entity_id}
|
||||||
|
@click=${this._selectPlayer}
|
||||||
|
>${computeStateName(source)}</mwc-list-item
|
||||||
>
|
>
|
||||||
`
|
`
|
||||||
)}
|
)}
|
||||||
</paper-listbox>
|
</mwc-list>
|
||||||
</ha-dialog>
|
</ha-dialog>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
private _selectSource(ev: CustomEvent): void {
|
private _selectPlayer(ev: CustomEvent): void {
|
||||||
const entityId = ev.detail.item.itemName;
|
const entityId = (ev.currentTarget as any).player;
|
||||||
this._params!.sourceSelectedCallback(entityId);
|
this._params!.sourceSelectedCallback(entityId);
|
||||||
this.closeDialog();
|
this.closeDialog();
|
||||||
}
|
}
|
||||||
@ -84,8 +88,8 @@ export class HuiDialogSelectMediaPlayer extends LitElement {
|
|||||||
ha-dialog {
|
ha-dialog {
|
||||||
--dialog-content-padding: 0 24px 20px;
|
--dialog-content-padding: 0 24px 20px;
|
||||||
}
|
}
|
||||||
paper-item {
|
mwc-list-item[disabled] {
|
||||||
cursor: pointer;
|
--mdc-theme-text-primary-on-background: var(--disabled-text-color);
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
];
|
];
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import "@material/mwc-button/mwc-button";
|
import "@material/mwc-button/mwc-button";
|
||||||
|
import "@material/mwc-icon-button/mwc-icon-button";
|
||||||
import { mdiDelete } from "@mdi/js";
|
import { mdiDelete } from "@mdi/js";
|
||||||
import {
|
import {
|
||||||
css,
|
css,
|
||||||
@ -80,14 +81,14 @@ class HaLongLivedTokens extends LitElement {
|
|||||||
)
|
)
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
<mwc-button
|
<mwc-icon-button
|
||||||
.token=${token}
|
.token=${token}
|
||||||
.disabled=${token.is_current}
|
.disabled=${token.is_current}
|
||||||
.title=${this.hass.localize(`ui.common.delete`)}
|
.title=${this.hass.localize(`ui.common.delete`)}
|
||||||
@click=${this._deleteToken}
|
@click=${this._deleteToken}
|
||||||
>
|
>
|
||||||
<ha-svg-icon .path=${mdiDelete}></ha-svg-icon>
|
<ha-svg-icon .path=${mdiDelete}></ha-svg-icon>
|
||||||
</mwc-button>
|
</mwc-icon-button>
|
||||||
</ha-settings-row>`
|
</ha-settings-row>`
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
@ -185,6 +186,9 @@ class HaLongLivedTokens extends LitElement {
|
|||||||
mwc-button {
|
mwc-button {
|
||||||
--mdc-theme-primary: var(--primary-color);
|
--mdc-theme-primary: var(--primary-color);
|
||||||
}
|
}
|
||||||
|
mwc-icon-button {
|
||||||
|
color: var(--primary-text-color);
|
||||||
|
}
|
||||||
`,
|
`,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -201,7 +201,7 @@ class HaPanelProfile extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private _customizeSidebar() {
|
private _customizeSidebar() {
|
||||||
fireEvent(this, "hass-edit-sidebar");
|
fireEvent(this, "hass-edit-sidebar", { editMode: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
private async _refreshRefreshTokens() {
|
private async _refreshRefreshTokens() {
|
||||||
|
@ -1,24 +1,25 @@
|
|||||||
|
import "@material/mwc-button/mwc-button";
|
||||||
|
import "@polymer/paper-input/paper-input";
|
||||||
import "@polymer/paper-item/paper-item";
|
import "@polymer/paper-item/paper-item";
|
||||||
import "@polymer/paper-listbox/paper-listbox";
|
import "@polymer/paper-listbox/paper-listbox";
|
||||||
import "../../components/ha-paper-dropdown-menu";
|
|
||||||
import { TemplateResult, html } from "lit-html";
|
|
||||||
import {
|
import {
|
||||||
property,
|
css,
|
||||||
|
CSSResult,
|
||||||
|
customElement,
|
||||||
internalProperty,
|
internalProperty,
|
||||||
LitElement,
|
LitElement,
|
||||||
customElement,
|
property,
|
||||||
PropertyValues,
|
PropertyValues,
|
||||||
CSSResult,
|
|
||||||
css,
|
|
||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import { HomeAssistant } from "../../types";
|
import { html, TemplateResult } from "lit-html";
|
||||||
import "../../components/ha-settings-row";
|
|
||||||
import { fireEvent } from "../../common/dom/fire_event";
|
import { fireEvent } from "../../common/dom/fire_event";
|
||||||
import "../../components/ha-formfield";
|
import "../../components/ha-formfield";
|
||||||
|
import "../../components/ha-paper-dropdown-menu";
|
||||||
import "../../components/ha-radio";
|
import "../../components/ha-radio";
|
||||||
import "@polymer/paper-input/paper-input";
|
|
||||||
import type { HaRadio } from "../../components/ha-radio";
|
import type { HaRadio } from "../../components/ha-radio";
|
||||||
import "@material/mwc-button/mwc-button";
|
import "../../components/ha-settings-row";
|
||||||
|
import { HomeAssistant } from "../../types";
|
||||||
|
import { documentationUrl } from "../../util/documentation-url";
|
||||||
|
|
||||||
@customElement("ha-pick-theme-row")
|
@customElement("ha-pick-theme-row")
|
||||||
export class HaPickThemeRow extends LitElement {
|
export class HaPickThemeRow extends LitElement {
|
||||||
@ -45,7 +46,10 @@ export class HaPickThemeRow extends LitElement {
|
|||||||
? this.hass.localize("ui.panel.profile.themes.error_no_theme")
|
? this.hass.localize("ui.panel.profile.themes.error_no_theme")
|
||||||
: ""}
|
: ""}
|
||||||
<a
|
<a
|
||||||
href="https://www.home-assistant.io/integrations/frontend/#defining-themes"
|
href="${documentationUrl(
|
||||||
|
this.hass!,
|
||||||
|
"/integrations/frontend/#defining-themes"
|
||||||
|
)}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
|
@ -7,6 +7,7 @@ import { isComponentLoaded } from "../../common/config/is_component_loaded";
|
|||||||
import { pushSupported } from "../../components/ha-push-notifications-toggle";
|
import { pushSupported } from "../../components/ha-push-notifications-toggle";
|
||||||
import LocalizeMixin from "../../mixins/localize-mixin";
|
import LocalizeMixin from "../../mixins/localize-mixin";
|
||||||
import "../../components/ha-settings-row";
|
import "../../components/ha-settings-row";
|
||||||
|
import { documentationUrl } from "../../util/documentation-url";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @appliesMixin LocalizeMixin
|
* @appliesMixin LocalizeMixin
|
||||||
@ -26,7 +27,7 @@ class HaPushNotificationsRow extends LocalizeMixin(PolymerElement) {
|
|||||||
<span slot="description">
|
<span slot="description">
|
||||||
[[_description(_platformLoaded, _pushSupported)]]
|
[[_description(_platformLoaded, _pushSupported)]]
|
||||||
<a
|
<a
|
||||||
href="https://www.home-assistant.io/integrations/html5"
|
href="[[_computeDocumentationUrl(hass)]]"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>[[localize('ui.panel.profile.push_notifications.link_promo')]]</a
|
>[[localize('ui.panel.profile.push_notifications.link_promo')]]</a
|
||||||
@ -59,6 +60,10 @@ class HaPushNotificationsRow extends LocalizeMixin(PolymerElement) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_computeDocumentationUrl(hass) {
|
||||||
|
return documentationUrl(hass, "/integrations/html5");
|
||||||
|
}
|
||||||
|
|
||||||
_compPlatformLoaded(hass) {
|
_compPlatformLoaded(hass) {
|
||||||
return isComponentLoaded(hass, "notify.html5");
|
return isComponentLoaded(hass, "notify.html5");
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import "@material/mwc-button/mwc-button";
|
import "@material/mwc-icon-button/mwc-icon-button";
|
||||||
import { mdiDelete } from "@mdi/js";
|
import { mdiDelete } from "@mdi/js";
|
||||||
import "@polymer/paper-tooltip/paper-tooltip";
|
import "@polymer/paper-tooltip/paper-tooltip";
|
||||||
import {
|
import {
|
||||||
@ -83,14 +83,14 @@ class HaRefreshTokens extends LitElement {
|
|||||||
)}
|
)}
|
||||||
</paper-tooltip>`
|
</paper-tooltip>`
|
||||||
: ""}
|
: ""}
|
||||||
<mwc-button
|
<mwc-icon-button
|
||||||
.token=${token}
|
.token=${token}
|
||||||
.disabled=${token.is_current}
|
.disabled=${token.is_current}
|
||||||
.title=${this.hass.localize(`ui.common.delete`)}
|
.title=${this.hass.localize(`ui.common.delete`)}
|
||||||
@click=${this._deleteToken}
|
@click=${this._deleteToken}
|
||||||
>
|
>
|
||||||
<ha-svg-icon .path=${mdiDelete}></ha-svg-icon>
|
<ha-svg-icon .path=${mdiDelete}></ha-svg-icon>
|
||||||
</mwc-button>
|
</mwc-icon-button>
|
||||||
</div>
|
</div>
|
||||||
</ha-settings-row>`
|
</ha-settings-row>`
|
||||||
)
|
)
|
||||||
@ -135,8 +135,8 @@ class HaRefreshTokens extends LitElement {
|
|||||||
ha-settings-row {
|
ha-settings-row {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
mwc-button {
|
mwc-icon-button {
|
||||||
--mdc-theme-primary: var(--primary-color);
|
color: var(--primary-text-color);
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
];
|
];
|
||||||
|
@ -18,8 +18,22 @@ export const sortableStyles = css`
|
|||||||
animation-duration: 0.33s;
|
animation-duration: 0.33s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#sortable a {
|
||||||
|
height: 48px;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
#sortable {
|
#sortable {
|
||||||
outline: none;
|
outline: none;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden-panel {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sortable-fallback {
|
||||||
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sortable-ghost {
|
.sortable-ghost {
|
||||||
@ -54,13 +68,25 @@ export const sortableStyles = css`
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.show-panel,
|
||||||
.hide-panel {
|
.hide-panel {
|
||||||
display: none;
|
display: none;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
|
--mdc-icon-button-size: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hide-panel {
|
||||||
|
top: 4px;
|
||||||
|
right: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
:host([expanded]) .hide-panel {
|
:host([expanded]) .hide-panel {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
:host([expanded]) .show-panel {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,13 +16,11 @@ declare global {
|
|||||||
interface HASSDomEvents {
|
interface HASSDomEvents {
|
||||||
"hass-dock-sidebar": DockSidebarParams;
|
"hass-dock-sidebar": DockSidebarParams;
|
||||||
"hass-default-panel": DefaultPanelParams;
|
"hass-default-panel": DefaultPanelParams;
|
||||||
"hass-edit-sidebar": undefined;
|
|
||||||
}
|
}
|
||||||
// for add event listener
|
// for add event listener
|
||||||
interface HTMLElementEventMap {
|
interface HTMLElementEventMap {
|
||||||
"hass-dock-sidebar": HASSDomEvent<DockSidebarParams>;
|
"hass-dock-sidebar": HASSDomEvent<DockSidebarParams>;
|
||||||
"hass-default-panel": HASSDomEvent<DefaultPanelParams>;
|
"hass-default-panel": HASSDomEvent<DefaultPanelParams>;
|
||||||
"hass-edit-sidebar": undefined;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -278,7 +278,8 @@
|
|||||||
"successfully_saved": "Successfully saved",
|
"successfully_saved": "Successfully saved",
|
||||||
"successfully_deleted": "Successfully deleted",
|
"successfully_deleted": "Successfully deleted",
|
||||||
"back": "Back",
|
"back": "Back",
|
||||||
"error_required": "Required"
|
"error_required": "Required",
|
||||||
|
"copied": "Copied"
|
||||||
},
|
},
|
||||||
"components": {
|
"components": {
|
||||||
"logbook": {
|
"logbook": {
|
||||||
@ -373,6 +374,12 @@
|
|||||||
"video_not_supported": "Your browser does not support the video element.",
|
"video_not_supported": "Your browser does not support the video element.",
|
||||||
"media_not_supported": "The Browser Media Player does not support this type of media",
|
"media_not_supported": "The Browser Media Player does not support this type of media",
|
||||||
"media_browsing_error": "Media Browsing Error",
|
"media_browsing_error": "Media Browsing Error",
|
||||||
|
"learn_adding_local_media": "Learn more about adding media in the {documentation}.",
|
||||||
|
"local_media_files": "Place your video, audio and image files in the media directory to be able to browse and play them in the browser or on supported media players.",
|
||||||
|
"documentation": "documentation",
|
||||||
|
"no_local_media_found": "No local media found",
|
||||||
|
"no_media_folder": "It looks like you have not yet created a media directory.",
|
||||||
|
"setup_local_help": "Check the {documentation} on how to setup local media.",
|
||||||
"class": {
|
"class": {
|
||||||
"album": "Album",
|
"album": "Album",
|
||||||
"app": "App",
|
"app": "App",
|
||||||
@ -2149,7 +2156,7 @@
|
|||||||
"save": "Save",
|
"save": "Save",
|
||||||
"unsaved_changes": "Unsaved changes",
|
"unsaved_changes": "Unsaved changes",
|
||||||
"saved": "Saved",
|
"saved": "Saved",
|
||||||
"confirm_remove_config_title": "Are you sure you want to remove your Lovelace UI configuration? We will automatically generate your Lovelace UI views with your areas and devices.",
|
"confirm_remove_config_title": "Are you sure you want to remove your Lovelace UI configuration?",
|
||||||
"confirm_remove_config_text": "We will automatically generate your Lovelace UI views with your areas and devices if you remove your Lovelace UI configuration.",
|
"confirm_remove_config_text": "We will automatically generate your Lovelace UI views with your areas and devices if you remove your Lovelace UI configuration.",
|
||||||
"confirm_unsaved_changes": "You have unsaved changes, are you sure you want to exit?",
|
"confirm_unsaved_changes": "You have unsaved changes, are you sure you want to exit?",
|
||||||
"confirm_unsaved_comments": "Your configuration contains comment(s), these will not be saved. Do you want to continue?",
|
"confirm_unsaved_comments": "Your configuration contains comment(s), these will not be saved. Do you want to continue?",
|
||||||
|
11
src/util/documentation-url.ts
Normal file
11
src/util/documentation-url.ts
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import { HomeAssistant } from "../types";
|
||||||
|
|
||||||
|
export const documentationUrl = (hass: HomeAssistant, path: string) => {
|
||||||
|
return `https://${
|
||||||
|
hass.config.version.includes("b")
|
||||||
|
? "rc"
|
||||||
|
: hass.config.version.includes("dev")
|
||||||
|
? "next"
|
||||||
|
: "www"
|
||||||
|
}.home-assistant.io${path}`;
|
||||||
|
};
|
19
test-mocha/util/generate-documentation-url.spec.ts
Normal file
19
test-mocha/util/generate-documentation-url.spec.ts
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import * as assert from "assert";
|
||||||
|
import { documentationUrl } from "../../src/util/documentation-url";
|
||||||
|
|
||||||
|
describe("Generate documentation URL", function () {
|
||||||
|
it("Generate documentation url for stable", function () {
|
||||||
|
assert.strictEqual(
|
||||||
|
// @ts-ignore
|
||||||
|
documentationUrl({ config: { version: "1.0.0" } }, "/blog"),
|
||||||
|
"https://www.home-assistant.io/blog"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
it("Generate documentation url for rc", function () {
|
||||||
|
assert.strictEqual(
|
||||||
|
// @ts-ignore
|
||||||
|
documentationUrl({ config: { version: "1.0.0b0" } }, "/blog"),
|
||||||
|
"https://rc.home-assistant.io/blog"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
@ -19,6 +19,7 @@
|
|||||||
"logbook": "Дневник",
|
"logbook": "Дневник",
|
||||||
"mailbox": "Пощенска кутия",
|
"mailbox": "Пощенска кутия",
|
||||||
"map": "Карта",
|
"map": "Карта",
|
||||||
|
"media_browser": "Медиен браузър",
|
||||||
"profile": "Профил",
|
"profile": "Профил",
|
||||||
"shopping_list": "Списък за пазаруване",
|
"shopping_list": "Списък за пазаруване",
|
||||||
"states": "Състояние"
|
"states": "Състояние"
|
||||||
@ -455,6 +456,7 @@
|
|||||||
},
|
},
|
||||||
"common": {
|
"common": {
|
||||||
"cancel": "Отмени",
|
"cancel": "Отмени",
|
||||||
|
"continue": "Продължи",
|
||||||
"delete": "Изтриване",
|
"delete": "Изтриване",
|
||||||
"loading": "Зареждане",
|
"loading": "Зареждане",
|
||||||
"save": "Запазване",
|
"save": "Запазване",
|
||||||
@ -466,6 +468,10 @@
|
|||||||
"device": "Устройство"
|
"device": "Устройство"
|
||||||
},
|
},
|
||||||
"entity": {
|
"entity": {
|
||||||
|
"entity-attribute-picker": {
|
||||||
|
"attribute": "Атрибут",
|
||||||
|
"show_attributes": "Показване на атрибутите"
|
||||||
|
},
|
||||||
"entity-picker": {
|
"entity-picker": {
|
||||||
"entity": "Обект"
|
"entity": "Обект"
|
||||||
}
|
}
|
||||||
@ -474,6 +480,18 @@
|
|||||||
"loading_history": "Зареждане на история за състоянието...",
|
"loading_history": "Зареждане на история за състоянието...",
|
||||||
"no_history_found": "Не е намерена история за състоянието"
|
"no_history_found": "Не е намерена история за състоянието"
|
||||||
},
|
},
|
||||||
|
"logbook": {
|
||||||
|
"entries_not_found": "Липсват логове в дневника"
|
||||||
|
},
|
||||||
|
"media-browser": {
|
||||||
|
"audio_not_supported": "Браузърът не поддържа този аудио елемент.",
|
||||||
|
"choose_player": "Изберете плейър",
|
||||||
|
"media_browsing_error": "Грешка в медийния браузър",
|
||||||
|
"media_not_supported": "Плейърът на медийния браузър не поддържа този тип медия",
|
||||||
|
"media_player": "Медиен плейър",
|
||||||
|
"video_not_supported": "Браузърът не поддържа този видео елемент.",
|
||||||
|
"web-browser": "Уеб браузър"
|
||||||
|
},
|
||||||
"relative_time": {
|
"relative_time": {
|
||||||
"duration": {
|
"duration": {
|
||||||
"day": "{count}{count, plural,\n one {ден}\n other {дни}\n}",
|
"day": "{count}{count, plural,\n one {ден}\n other {дни}\n}",
|
||||||
@ -496,6 +514,9 @@
|
|||||||
"enable_new_entities_label": "Активирай новодобавените устройства.",
|
"enable_new_entities_label": "Активирай новодобавените устройства.",
|
||||||
"title": "Системни опции за {integration}"
|
"title": "Системни опции за {integration}"
|
||||||
},
|
},
|
||||||
|
"domain_toggler": {
|
||||||
|
"reset_entities": "Нулиране на обекти"
|
||||||
|
},
|
||||||
"entity_registry": {
|
"entity_registry": {
|
||||||
"editor": {
|
"editor": {
|
||||||
"delete": "Изтриване",
|
"delete": "Изтриване",
|
||||||
@ -515,6 +536,9 @@
|
|||||||
"yaml_not_editable": "Настройките на този обект не могат да бъдат редактирани. Могат да се конфигурират само обектите, създадени от потребителския интерфейс."
|
"yaml_not_editable": "Настройките на този обект не могат да бъдат редактирани. Могат да се конфигурират само обектите, създадени от потребителския интерфейс."
|
||||||
},
|
},
|
||||||
"more_info_control": {
|
"more_info_control": {
|
||||||
|
"controls": "Контроли",
|
||||||
|
"details": "Детайли",
|
||||||
|
"history": "История",
|
||||||
"script": {
|
"script": {
|
||||||
"last_action": "Последно задействане"
|
"last_action": "Последно задействане"
|
||||||
},
|
},
|
||||||
@ -644,7 +668,13 @@
|
|||||||
"label": "Извикване на услуга",
|
"label": "Извикване на услуга",
|
||||||
"service_data": "Данни за услугата"
|
"service_data": "Данни за услугата"
|
||||||
},
|
},
|
||||||
|
"wait_for_trigger": {
|
||||||
|
"continue_timeout": "Продължи след изчакване",
|
||||||
|
"label": "Изчакайте спусък/тригър",
|
||||||
|
"timeout": "Време на изчакване (опция)"
|
||||||
|
},
|
||||||
"wait_template": {
|
"wait_template": {
|
||||||
|
"continue_timeout": "Продължи след изчакване",
|
||||||
"label": "Изчакване",
|
"label": "Изчакване",
|
||||||
"timeout": "Изчакване (по избор)",
|
"timeout": "Изчакване (по избор)",
|
||||||
"wait_template": "Шаблон за изчакване"
|
"wait_template": "Шаблон за изчакване"
|
||||||
@ -692,7 +722,9 @@
|
|||||||
"time": {
|
"time": {
|
||||||
"after": "След",
|
"after": "След",
|
||||||
"before": "Преди",
|
"before": "Преди",
|
||||||
"label": "Време"
|
"label": "Време",
|
||||||
|
"type_input": "Стойност на помощника за дата/час",
|
||||||
|
"type_value": "Фиксирано време"
|
||||||
},
|
},
|
||||||
"zone": {
|
"zone": {
|
||||||
"entity": "Обект с местоположение",
|
"entity": "Обект с местоположение",
|
||||||
@ -751,6 +783,7 @@
|
|||||||
"value_template": "Шаблон за стойност (незадължително)"
|
"value_template": "Шаблон за стойност (незадължително)"
|
||||||
},
|
},
|
||||||
"state": {
|
"state": {
|
||||||
|
"attribute": "Атрибут (опция)",
|
||||||
"for": "За период от",
|
"for": "За период от",
|
||||||
"from": "От",
|
"from": "От",
|
||||||
"label": "Състояние",
|
"label": "Състояние",
|
||||||
@ -775,7 +808,9 @@
|
|||||||
},
|
},
|
||||||
"time": {
|
"time": {
|
||||||
"at": "В",
|
"at": "В",
|
||||||
"label": "Време"
|
"label": "Време",
|
||||||
|
"type_input": "Стойност на помощника за дата/час",
|
||||||
|
"type_value": "Фиксирано време"
|
||||||
},
|
},
|
||||||
"webhook": {
|
"webhook": {
|
||||||
"label": "Webhook",
|
"label": "Webhook",
|
||||||
@ -796,6 +831,8 @@
|
|||||||
},
|
},
|
||||||
"picker": {
|
"picker": {
|
||||||
"add_automation": "Добавяне на автоматизация",
|
"add_automation": "Добавяне на автоматизация",
|
||||||
|
"duplicate": "Дублиране",
|
||||||
|
"duplicate_automation": "Дублиране на автоматизация",
|
||||||
"header": "Редактор на автоматизации",
|
"header": "Редактор на автоматизации",
|
||||||
"headers": {
|
"headers": {
|
||||||
"name": "Име"
|
"name": "Име"
|
||||||
@ -815,10 +852,26 @@
|
|||||||
"config_documentation": "Документация за конфигурацията"
|
"config_documentation": "Документация за конфигурацията"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"alexa": {
|
||||||
|
"dont_expose_entity": "Не излагай обекта",
|
||||||
|
"expose_entity": "Изложи обекта",
|
||||||
|
"exposed": "{избран} изложен",
|
||||||
|
"follow_domain": "следван домейн",
|
||||||
|
"manage_domains": "Управление на домейни",
|
||||||
|
"not_exposed": "{избран} неизложен"
|
||||||
|
},
|
||||||
"caption": "Home Assistant Cloud",
|
"caption": "Home Assistant Cloud",
|
||||||
"description_features": "Контролирайте дома си, и когато не сте вкъщи, активирайте интегрирациите с Alexa и Google Assistant.",
|
"description_features": "Контролирайте дома си, и когато не сте вкъщи, активирайте интегрирациите с Alexa и Google Assistant.",
|
||||||
"description_login": "Влезли сте като {email}",
|
"description_login": "Влезли сте като {email}",
|
||||||
"description_not_login": "Не сте влезли"
|
"description_not_login": "Не сте влезли",
|
||||||
|
"google": {
|
||||||
|
"dont_expose_entity": "Не излагай обекта",
|
||||||
|
"expose_entity": "Изложи обекта",
|
||||||
|
"exposed": "{избран} изложен",
|
||||||
|
"follow_domain": "следван домейн",
|
||||||
|
"manage_domains": "Управление на домейни",
|
||||||
|
"not_exposed": "{избран} неизложен"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"core": {
|
"core": {
|
||||||
"caption": "Общи",
|
"caption": "Общи",
|
||||||
@ -882,6 +935,7 @@
|
|||||||
},
|
},
|
||||||
"integrations": {
|
"integrations": {
|
||||||
"add_integration": "Добавяне на интеграция",
|
"add_integration": "Добавяне на интеграция",
|
||||||
|
"attention": "Задълителна проверка",
|
||||||
"caption": "Интеграции",
|
"caption": "Интеграции",
|
||||||
"config_entry": {
|
"config_entry": {
|
||||||
"delete": "Изтриване",
|
"delete": "Изтриване",
|
||||||
@ -897,6 +951,7 @@
|
|||||||
"options": "Настройки",
|
"options": "Настройки",
|
||||||
"rename": "Преименуване",
|
"rename": "Преименуване",
|
||||||
"restart_confirm": "Рестартирайте Home Assistant за да завършите премахването на интеграцията",
|
"restart_confirm": "Рестартирайте Home Assistant за да завършите премахването на интеграцията",
|
||||||
|
"services": "{брой} {число, множествено число,\n една {услуга}\n други {услуги}\n}",
|
||||||
"system_options": "Системни настройки"
|
"system_options": "Системни настройки"
|
||||||
},
|
},
|
||||||
"config_flow": {
|
"config_flow": {
|
||||||
@ -915,6 +970,7 @@
|
|||||||
"none": "Нищо не е конфигурирано към момента",
|
"none": "Нищо не е конфигурирано към момента",
|
||||||
"none_found": "Не са намерени интеграции",
|
"none_found": "Не са намерени интеграции",
|
||||||
"none_found_detail": "Коригирайте критериите си за търсене.",
|
"none_found_detail": "Коригирайте критериите си за търсене.",
|
||||||
|
"reconfigure": "Преконфигурирай",
|
||||||
"rename_dialog": "Редактирайте името на този запис в конфигурацията"
|
"rename_dialog": "Редактирайте името на този запис в конфигурацията"
|
||||||
},
|
},
|
||||||
"introduction": "Тук е възможно да конфигурирате Вашите компоненти и Home Assistant. Не всичко е възможно да се конфигурира от Интерфейса, но работим по върпоса.",
|
"introduction": "Тук е възможно да конфигурирате Вашите компоненти и Home Assistant. Не всичко е възможно да се конфигурира от Интерфейса, но работим по върпоса.",
|
||||||
@ -942,6 +998,23 @@
|
|||||||
"mqtt": {
|
"mqtt": {
|
||||||
"title": "MQTT"
|
"title": "MQTT"
|
||||||
},
|
},
|
||||||
|
"ozw": {
|
||||||
|
"node": {
|
||||||
|
"button": "Детайли за възела",
|
||||||
|
"not_found": "Възел не е намерен"
|
||||||
|
},
|
||||||
|
"nodes_table": {
|
||||||
|
"failed": "Неуспешно",
|
||||||
|
"id": "ID",
|
||||||
|
"manufacturer": "Производител",
|
||||||
|
"model": "Модел",
|
||||||
|
"query_stage": "Етап на заявка",
|
||||||
|
"zwave_plus": "Z-Wave плюс"
|
||||||
|
},
|
||||||
|
"refresh_node": {
|
||||||
|
"button": "Обнови възела"
|
||||||
|
}
|
||||||
|
},
|
||||||
"person": {
|
"person": {
|
||||||
"caption": "Хора",
|
"caption": "Хора",
|
||||||
"description": "Управлявайте хората, които следите от Home Assistant.",
|
"description": "Управлявайте хората, които следите от Home Assistant.",
|
||||||
@ -979,8 +1052,13 @@
|
|||||||
"group": "Презареждане на гурпите",
|
"group": "Презареждане на гурпите",
|
||||||
"heading": "Презареждане на YAML конфигурацията",
|
"heading": "Презареждане на YAML конфигурацията",
|
||||||
"introduction": "Някои части от Home Assistant могат да се презаредят без да е необходимо рестартиране. Натискането на Презареди ще отхвърли настоящата конфигурация и ще зареди новата конфигурация.",
|
"introduction": "Някои части от Home Assistant могат да се презаредят без да е необходимо рестартиране. Натискането на Презареди ще отхвърли настоящата конфигурация и ще зареди новата конфигурация.",
|
||||||
|
"mqtt": "Презареди mqtt обектите",
|
||||||
|
"reload": "Презарежди {домейн}",
|
||||||
|
"rpi_gpio": "Презареди GPIO обектите на Raspberry Pi ",
|
||||||
"scene": "Презареди сцените",
|
"scene": "Презареди сцените",
|
||||||
"script": "Презареждане на скриптовете"
|
"script": "Презареждане на скриптовете",
|
||||||
|
"smtp": "Презареди smtp услугите за уведомяване",
|
||||||
|
"telegram": "Презареди telegram услугите за уведомяване"
|
||||||
},
|
},
|
||||||
"server_management": {
|
"server_management": {
|
||||||
"confirm_restart": "Сигурни ли сте, че искате да рестартирате Home Assistant?",
|
"confirm_restart": "Сигурни ли сте, че искате да рестартирате Home Assistant?",
|
||||||
@ -1005,6 +1083,8 @@
|
|||||||
"create": "Създаване",
|
"create": "Създаване",
|
||||||
"name": "Име",
|
"name": "Име",
|
||||||
"password": "Парола",
|
"password": "Парола",
|
||||||
|
"password_confirm": "Потвърди парола",
|
||||||
|
"password_not_match": "Паролите не съвпадат",
|
||||||
"username": "Потребителско име"
|
"username": "Потребителско име"
|
||||||
},
|
},
|
||||||
"caption": "Потребители",
|
"caption": "Потребители",
|
||||||
@ -1017,6 +1097,8 @@
|
|||||||
"deactivate_user": "Деактивиране на потребителя",
|
"deactivate_user": "Деактивиране на потребителя",
|
||||||
"delete_user": "Изтриване на потребител",
|
"delete_user": "Изтриване на потребител",
|
||||||
"name": "Име",
|
"name": "Име",
|
||||||
|
"new_password": "Нова парола",
|
||||||
|
"password_changed": "Паролата е променена!",
|
||||||
"system_generated_users_not_editable": "Неуспешно обновяване на системно генерираните потребители"
|
"system_generated_users_not_editable": "Неуспешно обновяване на системно генерираните потребители"
|
||||||
},
|
},
|
||||||
"picker": {
|
"picker": {
|
||||||
@ -1102,6 +1184,11 @@
|
|||||||
"title": "Състояния"
|
"title": "Състояния"
|
||||||
},
|
},
|
||||||
"templates": {
|
"templates": {
|
||||||
|
"all_listeners": "Този шаблон следи за всички събития на промяна на състояние.",
|
||||||
|
"domain": "Домейн",
|
||||||
|
"entity": "Обект",
|
||||||
|
"listeners": "Този шаблон следи за събития със следните промени на състояния:",
|
||||||
|
"no_listeners": "Този шаблон не следи за събития на промяна на състояние и не се актуализира автоматично.",
|
||||||
"title": "Шаблон"
|
"title": "Шаблон"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1144,6 +1231,9 @@
|
|||||||
"entities": {
|
"entities": {
|
||||||
"toggle": "Превключване на обекти."
|
"toggle": "Превключване на обекти."
|
||||||
},
|
},
|
||||||
|
"generic": {
|
||||||
|
"state_color": "Да се оцветят ли иконите спрямо състоянието?"
|
||||||
|
},
|
||||||
"iframe": {
|
"iframe": {
|
||||||
"name": "Уеб страница"
|
"name": "Уеб страница"
|
||||||
},
|
},
|
||||||
@ -1155,6 +1245,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cardpicker": {
|
"cardpicker": {
|
||||||
|
"by_card": "По карта",
|
||||||
|
"by_entity": "По обект",
|
||||||
|
"domain": "Домейн",
|
||||||
|
"entity": "Обект",
|
||||||
"no_description": "Няма налично описание."
|
"no_description": "Няма налично описание."
|
||||||
},
|
},
|
||||||
"edit_card": {
|
"edit_card": {
|
||||||
@ -1166,6 +1260,7 @@
|
|||||||
"move": "Преместване",
|
"move": "Преместване",
|
||||||
"options": "Още опции",
|
"options": "Още опции",
|
||||||
"pick_card": "Изберете картата, която искате да добавите.",
|
"pick_card": "Изберете картата, която искате да добавите.",
|
||||||
|
"search_cards": "Търсене на карти",
|
||||||
"toggle_editor": "Превключете редактора"
|
"toggle_editor": "Превключете редактора"
|
||||||
},
|
},
|
||||||
"edit_lovelace": {
|
"edit_lovelace": {
|
||||||
@ -1419,6 +1514,11 @@
|
|||||||
"submit": "Промяна"
|
"submit": "Промяна"
|
||||||
},
|
},
|
||||||
"current_user": "В момента сте влезли като {fullName}.",
|
"current_user": "В момента сте влезли като {fullName}.",
|
||||||
|
"customize_sidebar": {
|
||||||
|
"button": "Редактиране",
|
||||||
|
"description": "Може също да се задържи водача на страничната лента, за да се активира режим за редактиране.",
|
||||||
|
"header": "Промяна на реда и скриване на елементи от страничната лента"
|
||||||
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"dropdown_label": "Табло",
|
"dropdown_label": "Табло",
|
||||||
"header": "Табло"
|
"header": "Табло"
|
||||||
@ -1438,6 +1538,7 @@
|
|||||||
"confirm_delete": "Сигурни ли сте, че искате да изтриете кода за достъп за {name}?",
|
"confirm_delete": "Сигурни ли сте, че искате да изтриете кода за достъп за {name}?",
|
||||||
"create": "Създай код",
|
"create": "Създай код",
|
||||||
"create_failed": "Възникна грешка при създаването на код за достъп.",
|
"create_failed": "Възникна грешка при създаването на код за достъп.",
|
||||||
|
"created": "Създаване {дата}",
|
||||||
"created_at": "Създаден на {date}",
|
"created_at": "Създаден на {date}",
|
||||||
"delete_failed": "Възникна грешка при изтриването на кода за достъп.",
|
"delete_failed": "Възникна грешка при изтриването на кода за достъп.",
|
||||||
"description": "Създайте дългосрочни кодове за достъп за да могат скриптовете Ви да взаимодействат с Home Assistant. Всеки код е валиден за 10 години от създаването си. Следните дългосрочни кодове са активни в момента.",
|
"description": "Създайте дългосрочни кодове за достъп за да могат скриптовете Ви да взаимодействат с Home Assistant. Всеки код е валиден за 10 години от създаването си. Следните дългосрочни кодове са активни в момента.",
|
||||||
@ -1445,6 +1546,7 @@
|
|||||||
"header": "Дългосрочни кодове за достъп",
|
"header": "Дългосрочни кодове за достъп",
|
||||||
"last_used": "Последно използван на {date} от {location}",
|
"last_used": "Последно използван на {date} от {location}",
|
||||||
"learn_auth_requests": "Научете се как да правите оторизирани заявки.",
|
"learn_auth_requests": "Научете се как да правите оторизирани заявки.",
|
||||||
|
"name": "Име",
|
||||||
"not_used": "Никога не е бил използван",
|
"not_used": "Никога не е бил използван",
|
||||||
"prompt_copy_token": "Копирайте кода си за достъп. Той няма да бъде показан отново.",
|
"prompt_copy_token": "Копирайте кода си за достъп. Той няма да бъде показан отново.",
|
||||||
"prompt_name": "Име?"
|
"prompt_name": "Име?"
|
||||||
@ -1495,6 +1597,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
|
"done": "Готово",
|
||||||
"external_app_configuration": "Конфигурация на приложение"
|
"external_app_configuration": "Конфигурация на приложение"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -507,6 +507,7 @@
|
|||||||
"cancel": "Cancel·la",
|
"cancel": "Cancel·la",
|
||||||
"close": "Tanca",
|
"close": "Tanca",
|
||||||
"continue": "Continua",
|
"continue": "Continua",
|
||||||
|
"copied": "Copiat",
|
||||||
"delete": "Elimina",
|
"delete": "Elimina",
|
||||||
"error_required": "Obligatori",
|
"error_required": "Obligatori",
|
||||||
"loading": "Carregant",
|
"loading": "Carregant",
|
||||||
@ -574,6 +575,28 @@
|
|||||||
"audio_not_supported": "El teu navegador no és compatible amb l'element d'àudio.",
|
"audio_not_supported": "El teu navegador no és compatible amb l'element d'àudio.",
|
||||||
"choose_player": "Tria el reproductor",
|
"choose_player": "Tria el reproductor",
|
||||||
"choose-source": "Tria la font",
|
"choose-source": "Tria la font",
|
||||||
|
"class": {
|
||||||
|
"album": "Àlbum",
|
||||||
|
"app": "Aplicació",
|
||||||
|
"artist": "Artista",
|
||||||
|
"channel": "Canal",
|
||||||
|
"composer": "Compositor",
|
||||||
|
"contributing_artist": "Artista col·laborador",
|
||||||
|
"directory": "Biblioteca",
|
||||||
|
"episode": "Episodi",
|
||||||
|
"game": "Joc",
|
||||||
|
"genre": "Gènere",
|
||||||
|
"image": "Imatge",
|
||||||
|
"movie": "Pel·lícula",
|
||||||
|
"music": "Música",
|
||||||
|
"playlist": "Llista de reproducció",
|
||||||
|
"podcast": "Podcast",
|
||||||
|
"season": "Temporada",
|
||||||
|
"track": "Pista",
|
||||||
|
"tv_show": "Programa de TV",
|
||||||
|
"url": "URL",
|
||||||
|
"video": "Vídeo"
|
||||||
|
},
|
||||||
"content-type": {
|
"content-type": {
|
||||||
"album": "Àlbum",
|
"album": "Àlbum",
|
||||||
"artist": "Artista",
|
"artist": "Artista",
|
||||||
@ -1943,7 +1966,7 @@
|
|||||||
},
|
},
|
||||||
"introduction": "L'editor de scripts et permet crear i editar scripts. Vés a l'enllaç de sota per veure'n les instruccions i assegurar-te que has configurat Home Assistant correctament.",
|
"introduction": "L'editor de scripts et permet crear i editar scripts. Vés a l'enllaç de sota per veure'n les instruccions i assegurar-te que has configurat Home Assistant correctament.",
|
||||||
"learn_more": "Més informació sobre els scripts",
|
"learn_more": "Més informació sobre els scripts",
|
||||||
"no_scripts": "No hem trobat cap script editable",
|
"no_scripts": "No s'ha pogut trobar cap script editable",
|
||||||
"show_info": "Mostra informació sobre l'script",
|
"show_info": "Mostra informació sobre l'script",
|
||||||
"trigger_script": "Dispara l'script"
|
"trigger_script": "Dispara l'script"
|
||||||
}
|
}
|
||||||
@ -2352,9 +2375,14 @@
|
|||||||
"title": "Estats"
|
"title": "Estats"
|
||||||
},
|
},
|
||||||
"templates": {
|
"templates": {
|
||||||
|
"all_listeners": "Aquesta plantilla escolta a tots els esdeveniments de canvi d'estat.",
|
||||||
"description": "Les plantilles es renderitzen mitjançant el motor Jinja2 amb algunes extensions específiques de Home Assistant.",
|
"description": "Les plantilles es renderitzen mitjançant el motor Jinja2 amb algunes extensions específiques de Home Assistant.",
|
||||||
|
"domain": "Domini",
|
||||||
"editor": "Editor de plantilles",
|
"editor": "Editor de plantilles",
|
||||||
|
"entity": "Entitat",
|
||||||
"jinja_documentation": "Documentació sobre plantilles amb Jinja2",
|
"jinja_documentation": "Documentació sobre plantilles amb Jinja2",
|
||||||
|
"listeners": "Aquesta plantilla escolta als següents esdeveniments de canvi d'estat:",
|
||||||
|
"no_listeners": "Aquesta plantilla no escolta cap esdeveniment de canvi d'estat i no s'actualitza automàticament.",
|
||||||
"reset": "Restableix a la plantilla de demostració",
|
"reset": "Restableix a la plantilla de demostració",
|
||||||
"template_extensions": "Extensions de plantilla de Home Assistant",
|
"template_extensions": "Extensions de plantilla de Home Assistant",
|
||||||
"title": "Plantilla",
|
"title": "Plantilla",
|
||||||
@ -2501,7 +2529,7 @@
|
|||||||
"no_theme": "Sense tema",
|
"no_theme": "Sense tema",
|
||||||
"refresh_interval": "Interval d'actualització",
|
"refresh_interval": "Interval d'actualització",
|
||||||
"search": "Cerca",
|
"search": "Cerca",
|
||||||
"secondary_info_attribute": "Atribut d’informació secundària",
|
"secondary_info_attribute": "Atribut d'informació secundària",
|
||||||
"show_icon": "Mostra icona?",
|
"show_icon": "Mostra icona?",
|
||||||
"show_name": "Mostra nom?",
|
"show_name": "Mostra nom?",
|
||||||
"show_state": "Mostra estat?",
|
"show_state": "Mostra estat?",
|
||||||
@ -2941,6 +2969,11 @@
|
|||||||
"submit": "Envia"
|
"submit": "Envia"
|
||||||
},
|
},
|
||||||
"current_user": "Has iniciat la sessió com a {fullName}.",
|
"current_user": "Has iniciat la sessió com a {fullName}.",
|
||||||
|
"customize_sidebar": {
|
||||||
|
"button": "Edita",
|
||||||
|
"description": "També pots mantenir premuda la capçalera de la barra lateral per activar el mode d'edició.",
|
||||||
|
"header": "Canvia l'ordre i/o amaga elements de la barra lateral"
|
||||||
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"description": "Tria un panell per defecte per a aquest dispositiu.",
|
"description": "Tria un panell per defecte per a aquest dispositiu.",
|
||||||
"dropdown_label": "Panell",
|
"dropdown_label": "Panell",
|
||||||
@ -3038,6 +3071,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
|
"done": "Fet",
|
||||||
"external_app_configuration": "Configuració de l'aplicació",
|
"external_app_configuration": "Configuració de l'aplicació",
|
||||||
"sidebar_toggle": "Commutació de la barra lateral"
|
"sidebar_toggle": "Commutació de la barra lateral"
|
||||||
}
|
}
|
||||||
|
@ -507,6 +507,7 @@
|
|||||||
"cancel": "Zrušit",
|
"cancel": "Zrušit",
|
||||||
"close": "Zavřít",
|
"close": "Zavřít",
|
||||||
"continue": "Pokračovat",
|
"continue": "Pokračovat",
|
||||||
|
"copied": "Zkopírováno",
|
||||||
"delete": "Smazat",
|
"delete": "Smazat",
|
||||||
"error_required": "Povinné",
|
"error_required": "Povinné",
|
||||||
"loading": "Načítání",
|
"loading": "Načítání",
|
||||||
@ -574,6 +575,28 @@
|
|||||||
"audio_not_supported": "Váš prohlížeč nepodporuje element \"audio\".",
|
"audio_not_supported": "Váš prohlížeč nepodporuje element \"audio\".",
|
||||||
"choose_player": "Vyberte přehrávač",
|
"choose_player": "Vyberte přehrávač",
|
||||||
"choose-source": "Zvolte zdroj",
|
"choose-source": "Zvolte zdroj",
|
||||||
|
"class": {
|
||||||
|
"album": "Album",
|
||||||
|
"app": "Aplikace",
|
||||||
|
"artist": "Umělec",
|
||||||
|
"channel": "Kanál",
|
||||||
|
"composer": "Skladatel",
|
||||||
|
"contributing_artist": "Přispívající umělec",
|
||||||
|
"directory": "Knihovna",
|
||||||
|
"episode": "Epizoda",
|
||||||
|
"game": "Hra",
|
||||||
|
"genre": "Žánr",
|
||||||
|
"image": "Obrázek",
|
||||||
|
"movie": "Film",
|
||||||
|
"music": "Hudba",
|
||||||
|
"playlist": "Seznam skladeb",
|
||||||
|
"podcast": "Podcast",
|
||||||
|
"season": "Sezóna",
|
||||||
|
"track": "Stopa",
|
||||||
|
"tv_show": "Televizní pořad",
|
||||||
|
"url": "Url adresa",
|
||||||
|
"video": "Video"
|
||||||
|
},
|
||||||
"content-type": {
|
"content-type": {
|
||||||
"album": "Album",
|
"album": "Album",
|
||||||
"artist": "Umělec",
|
"artist": "Umělec",
|
||||||
@ -2352,9 +2375,14 @@
|
|||||||
"title": "Stavy"
|
"title": "Stavy"
|
||||||
},
|
},
|
||||||
"templates": {
|
"templates": {
|
||||||
|
"all_listeners": "Tato šablona naslouchá všem změnám stavu.",
|
||||||
"description": "Šablony jsou vykreslovány pomocí Jinja2 šablonového enginu s některými specifickými rozšířeními pro Home Assistant.",
|
"description": "Šablony jsou vykreslovány pomocí Jinja2 šablonového enginu s některými specifickými rozšířeními pro Home Assistant.",
|
||||||
|
"domain": "Doména",
|
||||||
"editor": "Editor šablon",
|
"editor": "Editor šablon",
|
||||||
|
"entity": "Entita",
|
||||||
"jinja_documentation": "Dokumentace šablony Jinja2",
|
"jinja_documentation": "Dokumentace šablony Jinja2",
|
||||||
|
"listeners": "Tato šablona naslouchá následujícím změnám stavu:",
|
||||||
|
"no_listeners": "Tato šablona neposlouchá žádné změny stavu a nebude se automaticky aktualizovat.",
|
||||||
"reset": "Obnovit ukázkovou šablonu",
|
"reset": "Obnovit ukázkovou šablonu",
|
||||||
"template_extensions": "Rozšíření šablony Home Assistant",
|
"template_extensions": "Rozšíření šablony Home Assistant",
|
||||||
"title": "Šablony",
|
"title": "Šablony",
|
||||||
@ -2941,6 +2969,11 @@
|
|||||||
"submit": "Odeslat"
|
"submit": "Odeslat"
|
||||||
},
|
},
|
||||||
"current_user": "Nyní jste přihlášeni jako {fullName}.",
|
"current_user": "Nyní jste přihlášeni jako {fullName}.",
|
||||||
|
"customize_sidebar": {
|
||||||
|
"button": "Upravit",
|
||||||
|
"description": "Režim úprav můžete aktivovat také stisknutím a podržením záhlaví postranního panelu.",
|
||||||
|
"header": "Změna pořadí a skrytí položek postranního panelu"
|
||||||
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"description": "Vyberte výchozí dashboard pro toto zařízení.",
|
"description": "Vyberte výchozí dashboard pro toto zařízení.",
|
||||||
"dropdown_label": "Dashboard",
|
"dropdown_label": "Dashboard",
|
||||||
@ -3038,6 +3071,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
|
"done": "Hotovo",
|
||||||
"external_app_configuration": "Konfigurace aplikace",
|
"external_app_configuration": "Konfigurace aplikace",
|
||||||
"sidebar_toggle": "Přepínač postranního panelu"
|
"sidebar_toggle": "Přepínač postranního panelu"
|
||||||
}
|
}
|
||||||
|
@ -419,6 +419,7 @@
|
|||||||
"unlock": "Entriegeln"
|
"unlock": "Entriegeln"
|
||||||
},
|
},
|
||||||
"media_player": {
|
"media_player": {
|
||||||
|
"media_next_track": "Weiter",
|
||||||
"media_play": "Abspielen",
|
"media_play": "Abspielen",
|
||||||
"sound_mode": "Sound-Modus",
|
"sound_mode": "Sound-Modus",
|
||||||
"source": "Quelle",
|
"source": "Quelle",
|
||||||
@ -501,6 +502,8 @@
|
|||||||
"back": "Zurück",
|
"back": "Zurück",
|
||||||
"cancel": "Abbrechen",
|
"cancel": "Abbrechen",
|
||||||
"close": "Schließen",
|
"close": "Schließen",
|
||||||
|
"continue": "Weiter",
|
||||||
|
"copied": "Kopiert",
|
||||||
"delete": "Löschen",
|
"delete": "Löschen",
|
||||||
"error_required": "Benötigt",
|
"error_required": "Benötigt",
|
||||||
"loading": "Laden",
|
"loading": "Laden",
|
||||||
@ -557,8 +560,24 @@
|
|||||||
"loading_history": "Lade Zustandsverlauf...",
|
"loading_history": "Lade Zustandsverlauf...",
|
||||||
"no_history_found": "Kein Zustandsverlauf gefunden."
|
"no_history_found": "Kein Zustandsverlauf gefunden."
|
||||||
},
|
},
|
||||||
|
"logbook": {
|
||||||
|
"entries_not_found": "Keine Logbucheinträge gefunden."
|
||||||
|
},
|
||||||
"media-browser": {
|
"media-browser": {
|
||||||
|
"audio_not_supported": "Ihr Browser unterstützt das Audioelement nicht.",
|
||||||
"choose-source": "Quelle wählen",
|
"choose-source": "Quelle wählen",
|
||||||
|
"class": {
|
||||||
|
"album": "Album",
|
||||||
|
"app": "App",
|
||||||
|
"directory": "Bibliothek",
|
||||||
|
"episode": "Episode",
|
||||||
|
"game": "Spiel",
|
||||||
|
"movie": "Film",
|
||||||
|
"music": "Musik",
|
||||||
|
"season": "Episode",
|
||||||
|
"url": "URL",
|
||||||
|
"video": "Video"
|
||||||
|
},
|
||||||
"content-type": {
|
"content-type": {
|
||||||
"album": "Album",
|
"album": "Album",
|
||||||
"artist": "Künstler",
|
"artist": "Künstler",
|
||||||
@ -566,7 +585,13 @@
|
|||||||
"playlist": "Playlist",
|
"playlist": "Playlist",
|
||||||
"server": "Server"
|
"server": "Server"
|
||||||
},
|
},
|
||||||
"play": "Abspielen"
|
"no_items": "Keine Einträge",
|
||||||
|
"play": "Abspielen",
|
||||||
|
"video_not_supported": "Ihr Browser unterstützt das Videoelement nicht."
|
||||||
|
},
|
||||||
|
"picture-upload": {
|
||||||
|
"label": "Bild",
|
||||||
|
"unsupported_format": "Nicht unterstütztes Format, bitte wähle ein JPEG-, PNG- oder GIF-Bild."
|
||||||
},
|
},
|
||||||
"related-items": {
|
"related-items": {
|
||||||
"area": "Bereich",
|
"area": "Bereich",
|
||||||
@ -672,8 +697,10 @@
|
|||||||
"yaml_not_editable": "Die Einstellungen dieser Entität können nicht über die Benutzeroberfläche bearbeitet werden. Nur über die Benutzeroberfläche eingerichtete Entitäten können über die Benutzeroberfläche konfiguriert werden."
|
"yaml_not_editable": "Die Einstellungen dieser Entität können nicht über die Benutzeroberfläche bearbeitet werden. Nur über die Benutzeroberfläche eingerichtete Entitäten können über die Benutzeroberfläche konfiguriert werden."
|
||||||
},
|
},
|
||||||
"more_info_control": {
|
"more_info_control": {
|
||||||
|
"details": "Details",
|
||||||
"dismiss": "Dialog ausblenden",
|
"dismiss": "Dialog ausblenden",
|
||||||
"edit": "Entität bearbeiten",
|
"edit": "Entität bearbeiten",
|
||||||
|
"history": "Verlauf",
|
||||||
"person": {
|
"person": {
|
||||||
"create_zone": "Zone vom aktuellen Standort erstellen"
|
"create_zone": "Zone vom aktuellen Standort erstellen"
|
||||||
},
|
},
|
||||||
@ -849,7 +876,13 @@
|
|||||||
"type_select": "Aktionstyp",
|
"type_select": "Aktionstyp",
|
||||||
"type": {
|
"type": {
|
||||||
"choose": {
|
"choose": {
|
||||||
"label": "Auswählen"
|
"add_option": "Option hinzufügen",
|
||||||
|
"conditions": "Bedingungen",
|
||||||
|
"default": "Standard-Aktionen",
|
||||||
|
"label": "Auswählen",
|
||||||
|
"option": "Option {number}",
|
||||||
|
"remove_option": "Option entfernen",
|
||||||
|
"sequence": "Aktionen"
|
||||||
},
|
},
|
||||||
"condition": {
|
"condition": {
|
||||||
"label": "Bedingung"
|
"label": "Bedingung"
|
||||||
@ -872,6 +905,7 @@
|
|||||||
},
|
},
|
||||||
"repeat": {
|
"repeat": {
|
||||||
"label": "Wiederholen",
|
"label": "Wiederholen",
|
||||||
|
"sequence": "Aktionen",
|
||||||
"type_select": "Wiederholungstyp",
|
"type_select": "Wiederholungstyp",
|
||||||
"type": {
|
"type": {
|
||||||
"count": {
|
"count": {
|
||||||
@ -1044,6 +1078,7 @@
|
|||||||
"value_template": "Wert-Template (optional)"
|
"value_template": "Wert-Template (optional)"
|
||||||
},
|
},
|
||||||
"state": {
|
"state": {
|
||||||
|
"attribute": "Attribut (Optional)",
|
||||||
"for": "Für",
|
"for": "Für",
|
||||||
"from": "Von",
|
"from": "Von",
|
||||||
"label": "Zustand",
|
"label": "Zustand",
|
||||||
@ -1068,7 +1103,8 @@
|
|||||||
},
|
},
|
||||||
"time": {
|
"time": {
|
||||||
"at": "Um",
|
"at": "Um",
|
||||||
"label": "Zeit"
|
"label": "Zeit",
|
||||||
|
"type_value": "Feste Zeit"
|
||||||
},
|
},
|
||||||
"webhook": {
|
"webhook": {
|
||||||
"label": "Webhook",
|
"label": "Webhook",
|
||||||
@ -1091,6 +1127,8 @@
|
|||||||
"add_automation": "Automatisierung hinzufügen",
|
"add_automation": "Automatisierung hinzufügen",
|
||||||
"delete_automation": "Automatisierung löschen",
|
"delete_automation": "Automatisierung löschen",
|
||||||
"delete_confirm": "Bist du sicher, dass du diese Automatisierung löschen möchtest?",
|
"delete_confirm": "Bist du sicher, dass du diese Automatisierung löschen möchtest?",
|
||||||
|
"duplicate": "Duplizieren",
|
||||||
|
"duplicate_automation": "Automatisierung kopieren",
|
||||||
"edit_automation": "Automatisierung bearbeiten",
|
"edit_automation": "Automatisierung bearbeiten",
|
||||||
"header": "Automatisierungseditor",
|
"header": "Automatisierungseditor",
|
||||||
"headers": {
|
"headers": {
|
||||||
@ -1314,6 +1352,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"devices": {
|
"devices": {
|
||||||
|
"add_prompt": "Mit diesem Gerät wurden noch keine {name} hinzugefügt. Du kannst eins hinzufügen, indem du auf den + Knopf drückst.",
|
||||||
"automation": {
|
"automation": {
|
||||||
"actions": {
|
"actions": {
|
||||||
"caption": "Wenn etwas ausgelöst wird ..."
|
"caption": "Wenn etwas ausgelöst wird ..."
|
||||||
@ -1477,6 +1516,7 @@
|
|||||||
},
|
},
|
||||||
"integrations": {
|
"integrations": {
|
||||||
"add_integration": "Integration hinzufügen",
|
"add_integration": "Integration hinzufügen",
|
||||||
|
"attention": "Aufmerksamkeit erforderlich",
|
||||||
"caption": "Integrationen",
|
"caption": "Integrationen",
|
||||||
"config_entry": {
|
"config_entry": {
|
||||||
"area": "In {area}",
|
"area": "In {area}",
|
||||||
@ -1495,6 +1535,8 @@
|
|||||||
"no_device": "Entitäten ohne Geräte",
|
"no_device": "Entitäten ohne Geräte",
|
||||||
"no_devices": "Diese Integration hat keine Geräte.",
|
"no_devices": "Diese Integration hat keine Geräte.",
|
||||||
"options": "Optionen",
|
"options": "Optionen",
|
||||||
|
"reload": "Neu laden",
|
||||||
|
"reload_confirm": "Die Integration wurde neu geladen",
|
||||||
"rename": "Umbenennen",
|
"rename": "Umbenennen",
|
||||||
"restart_confirm": "Starte Home Assistant neu, um das Entfernen dieser Integration abzuschließen",
|
"restart_confirm": "Starte Home Assistant neu, um das Entfernen dieser Integration abzuschließen",
|
||||||
"settings_button": "Einstellungen für {integration} bearbeiten",
|
"settings_button": "Einstellungen für {integration} bearbeiten",
|
||||||
@ -1543,6 +1585,7 @@
|
|||||||
"none_found_detail": "Passe deine Suchkriterien an.",
|
"none_found_detail": "Passe deine Suchkriterien an.",
|
||||||
"note_about_integrations": "Nicht alle Integrationen können über die Benutzeroberfläche konfiguriert werden.",
|
"note_about_integrations": "Nicht alle Integrationen können über die Benutzeroberfläche konfiguriert werden.",
|
||||||
"note_about_website_reference": "Weitere Informationen findest du auf der ",
|
"note_about_website_reference": "Weitere Informationen findest du auf der ",
|
||||||
|
"reconfigure": "Neu konfigurieren",
|
||||||
"rename_dialog": "Bearbeite den Namen dieses Konfigurationseintrags",
|
"rename_dialog": "Bearbeite den Namen dieses Konfigurationseintrags",
|
||||||
"rename_input_label": "Eintragsname",
|
"rename_input_label": "Eintragsname",
|
||||||
"search": "Such-Integrationen"
|
"search": "Such-Integrationen"
|
||||||
@ -1653,8 +1696,11 @@
|
|||||||
"topic": "Topic"
|
"topic": "Topic"
|
||||||
},
|
},
|
||||||
"ozw": {
|
"ozw": {
|
||||||
|
"button": "Konfigurieren",
|
||||||
"common": {
|
"common": {
|
||||||
"instance": "Instanz"
|
"instance": "Instanz",
|
||||||
|
"network": "Netzwerk",
|
||||||
|
"zwave": "Z-Wave"
|
||||||
},
|
},
|
||||||
"device_info": {
|
"device_info": {
|
||||||
"zwave_info": "Z-Wave Infos"
|
"zwave_info": "Z-Wave Infos"
|
||||||
@ -1664,12 +1710,27 @@
|
|||||||
"select_instance": "Instanz auswählen"
|
"select_instance": "Instanz auswählen"
|
||||||
},
|
},
|
||||||
"network_status": {
|
"network_status": {
|
||||||
|
"details": {
|
||||||
|
"driverremoved": "Der Treiber wurde entfernt",
|
||||||
|
"driverreset": "Der Treiber wurde zurückgesetzt",
|
||||||
|
"ready": "Bereit zum Verbinden",
|
||||||
|
"started": "Verbindung mit MQTT hergestellt",
|
||||||
|
"starting": "Verbinde zu MQTT"
|
||||||
|
},
|
||||||
"offline": "Offline",
|
"offline": "Offline",
|
||||||
"online": "Online",
|
"online": "Online",
|
||||||
|
"starting": "Startet",
|
||||||
"unknown": "Unbekannt"
|
"unknown": "Unbekannt"
|
||||||
},
|
},
|
||||||
"network": {
|
"network": {
|
||||||
"header": "Netzwerkverwaltung"
|
"header": "Netzwerkverwaltung"
|
||||||
|
},
|
||||||
|
"nodes_table": {
|
||||||
|
"failed": "Fehlgeschlagen",
|
||||||
|
"manufacturer": "Hersteller"
|
||||||
|
},
|
||||||
|
"refresh_node": {
|
||||||
|
"start_refresh_button": "Aktualisierung starten"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"person": {
|
"person": {
|
||||||
@ -1798,6 +1859,7 @@
|
|||||||
"core": "Ort & Anpassungen neu laden",
|
"core": "Ort & Anpassungen neu laden",
|
||||||
"group": "Gruppen neu laden",
|
"group": "Gruppen neu laden",
|
||||||
"heading": "Neuladen der YAML-Konfiguration",
|
"heading": "Neuladen der YAML-Konfiguration",
|
||||||
|
"homekit": "HomeKit neu laden",
|
||||||
"input_boolean": "Eingabe-Booleans neu laden",
|
"input_boolean": "Eingabe-Booleans neu laden",
|
||||||
"input_datetime": "Eingabe-Datums- und Zeitfelder neu laden",
|
"input_datetime": "Eingabe-Datums- und Zeitfelder neu laden",
|
||||||
"input_number": "Eingabenummern neu laden",
|
"input_number": "Eingabenummern neu laden",
|
||||||
@ -1807,6 +1869,7 @@
|
|||||||
"person": "Personen neu laden",
|
"person": "Personen neu laden",
|
||||||
"scene": "Szenen neu laden",
|
"scene": "Szenen neu laden",
|
||||||
"script": "Skripte neu laden",
|
"script": "Skripte neu laden",
|
||||||
|
"telegram": "Telegram-Benachrichtigungsdienste neu laden",
|
||||||
"zone": "Zonen neu laden"
|
"zone": "Zonen neu laden"
|
||||||
},
|
},
|
||||||
"server_management": {
|
"server_management": {
|
||||||
@ -1828,12 +1891,18 @@
|
|||||||
},
|
},
|
||||||
"tags": {
|
"tags": {
|
||||||
"detail": {
|
"detail": {
|
||||||
"name": "Name"
|
"delete": "Löschen",
|
||||||
|
"description": "Beschreibung",
|
||||||
|
"name": "Name",
|
||||||
|
"update": "Aktualisieren"
|
||||||
},
|
},
|
||||||
|
"edit": "Bearbeiten",
|
||||||
"headers": {
|
"headers": {
|
||||||
|
"last_scanned": "Zuletzt gescannt",
|
||||||
"name": "Name"
|
"name": "Name"
|
||||||
},
|
},
|
||||||
"never_scanned": "Nie gescannt"
|
"never_scanned": "Nie gescannt",
|
||||||
|
"write": "Schreiben"
|
||||||
},
|
},
|
||||||
"users": {
|
"users": {
|
||||||
"add_user": {
|
"add_user": {
|
||||||
@ -1841,6 +1910,7 @@
|
|||||||
"create": "Benutzerkonto anlegen",
|
"create": "Benutzerkonto anlegen",
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
"password": "Passwort",
|
"password": "Passwort",
|
||||||
|
"password_confirm": "Passwort bestätigen",
|
||||||
"username": "Benutzername"
|
"username": "Benutzername"
|
||||||
},
|
},
|
||||||
"caption": "Benutzer",
|
"caption": "Benutzer",
|
||||||
@ -1857,7 +1927,9 @@
|
|||||||
"group": "Gruppe",
|
"group": "Gruppe",
|
||||||
"id": "ID",
|
"id": "ID",
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
|
"new_password": "Neues Passwort",
|
||||||
"owner": "Besitzer",
|
"owner": "Besitzer",
|
||||||
|
"password_changed": "Das Passwort wurde geändert!",
|
||||||
"system_generated": "System generiert",
|
"system_generated": "System generiert",
|
||||||
"system_generated_users_not_editable": "Systemgenerierte Benutzer können nicht aktualisiert werden.",
|
"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.",
|
"system_generated_users_not_removable": "Vom System generierte Benutzer können nicht entfernt werden.",
|
||||||
@ -2728,6 +2800,9 @@
|
|||||||
"submit": "Absenden"
|
"submit": "Absenden"
|
||||||
},
|
},
|
||||||
"current_user": "Sie sind derzeit als {fullName} angemeldet.",
|
"current_user": "Sie sind derzeit als {fullName} angemeldet.",
|
||||||
|
"customize_sidebar": {
|
||||||
|
"button": "Bearbeiten"
|
||||||
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"description": "Wähle ein Standard-Dashboard für dieses Gerät.",
|
"description": "Wähle ein Standard-Dashboard für dieses Gerät.",
|
||||||
"dropdown_label": "Dashboard",
|
"dropdown_label": "Dashboard",
|
||||||
@ -2750,6 +2825,7 @@
|
|||||||
"confirm_delete": "Möchten Sie den Zugriffs-Token für {name} wirklich löschen?",
|
"confirm_delete": "Möchten Sie den Zugriffs-Token für {name} wirklich löschen?",
|
||||||
"create": "Token erstellen",
|
"create": "Token erstellen",
|
||||||
"create_failed": "Das Zugriffs-Token konnte nicht erstellt werden.",
|
"create_failed": "Das Zugriffs-Token konnte nicht erstellt werden.",
|
||||||
|
"created": "Erstellt am {date}",
|
||||||
"created_at": "Erstellt am {date}",
|
"created_at": "Erstellt am {date}",
|
||||||
"delete_failed": "Fehler beim Löschen des Zugriffs-Tokens.",
|
"delete_failed": "Fehler beim Löschen des Zugriffs-Tokens.",
|
||||||
"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.",
|
"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.",
|
||||||
@ -2757,6 +2833,7 @@
|
|||||||
"header": "Langlebige Zugangs-Token",
|
"header": "Langlebige Zugangs-Token",
|
||||||
"last_used": "Zuletzt verwendet am {date} in {location}",
|
"last_used": "Zuletzt verwendet am {date} in {location}",
|
||||||
"learn_auth_requests": "Erfahre, wie du authentifizierte Anfragen stellen kannst.",
|
"learn_auth_requests": "Erfahre, wie du authentifizierte Anfragen stellen kannst.",
|
||||||
|
"name": "Name",
|
||||||
"not_used": "Wurde noch nie benutzt",
|
"not_used": "Wurde noch nie benutzt",
|
||||||
"prompt_copy_token": "Kopiere deinen Zugangs-Token. Er wird nicht wieder angezeigt werden.",
|
"prompt_copy_token": "Kopiere deinen Zugangs-Token. Er wird nicht wieder angezeigt werden.",
|
||||||
"prompt_name": "Name?"
|
"prompt_name": "Name?"
|
||||||
@ -2808,7 +2885,8 @@
|
|||||||
"error_no_theme": "Keine Themen verfügbar.",
|
"error_no_theme": "Keine Themen verfügbar.",
|
||||||
"header": "Thema",
|
"header": "Thema",
|
||||||
"link_promo": "Erfahre mehr über Themen",
|
"link_promo": "Erfahre mehr über Themen",
|
||||||
"primary_color": "Primärfarbe"
|
"primary_color": "Primärfarbe",
|
||||||
|
"reset": "zurücksetzen"
|
||||||
},
|
},
|
||||||
"vibrate": {
|
"vibrate": {
|
||||||
"description": "Aktiviere oder deaktiviere die Vibration an diesem Gerät, wenn du Geräte steuerst.",
|
"description": "Aktiviere oder deaktiviere die Vibration an diesem Gerät, wenn du Geräte steuerst.",
|
||||||
@ -2822,6 +2900,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
|
"done": "fertig",
|
||||||
"external_app_configuration": "App-Konfiguration",
|
"external_app_configuration": "App-Konfiguration",
|
||||||
"sidebar_toggle": "Seitenleiste umschalten"
|
"sidebar_toggle": "Seitenleiste umschalten"
|
||||||
}
|
}
|
||||||
|
@ -507,6 +507,7 @@
|
|||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
"close": "Close",
|
"close": "Close",
|
||||||
"continue": "Continue",
|
"continue": "Continue",
|
||||||
|
"copied": "Copied",
|
||||||
"delete": "Delete",
|
"delete": "Delete",
|
||||||
"error_required": "Required",
|
"error_required": "Required",
|
||||||
"loading": "Loading",
|
"loading": "Loading",
|
||||||
@ -574,6 +575,28 @@
|
|||||||
"audio_not_supported": "Your browser does not support the audio element.",
|
"audio_not_supported": "Your browser does not support the audio element.",
|
||||||
"choose_player": "Choose Player",
|
"choose_player": "Choose Player",
|
||||||
"choose-source": "Choose Source",
|
"choose-source": "Choose Source",
|
||||||
|
"class": {
|
||||||
|
"album": "Album",
|
||||||
|
"app": "App",
|
||||||
|
"artist": "Artist",
|
||||||
|
"channel": "Channel",
|
||||||
|
"composer": "Composer",
|
||||||
|
"contributing_artist": "Contributing Artist",
|
||||||
|
"directory": "Library",
|
||||||
|
"episode": "Episode",
|
||||||
|
"game": "Game",
|
||||||
|
"genre": "Genre",
|
||||||
|
"image": "Image",
|
||||||
|
"movie": "Movie",
|
||||||
|
"music": "Music",
|
||||||
|
"playlist": "Playlist",
|
||||||
|
"podcast": "Podcast",
|
||||||
|
"season": "Season",
|
||||||
|
"track": "Track",
|
||||||
|
"tv_show": "TV Show",
|
||||||
|
"url": "Url",
|
||||||
|
"video": "Video"
|
||||||
|
},
|
||||||
"content-type": {
|
"content-type": {
|
||||||
"album": "Album",
|
"album": "Album",
|
||||||
"artist": "Artist",
|
"artist": "Artist",
|
||||||
@ -2669,7 +2692,7 @@
|
|||||||
},
|
},
|
||||||
"raw_editor": {
|
"raw_editor": {
|
||||||
"confirm_remove_config_text": "We will automatically generate your Lovelace UI views with your areas and devices if you remove your Lovelace UI configuration.",
|
"confirm_remove_config_text": "We will automatically generate your Lovelace UI views with your areas and devices if you remove your Lovelace UI configuration.",
|
||||||
"confirm_remove_config_title": "Are you sure you want to remove your Lovelace UI configuration? We will automatically generate your Lovelace UI views with your areas and devices.",
|
"confirm_remove_config_title": "Are you sure you want to remove your Lovelace UI configuration?",
|
||||||
"confirm_unsaved_changes": "You have unsaved changes, are you sure you want to exit?",
|
"confirm_unsaved_changes": "You have unsaved changes, are you sure you want to exit?",
|
||||||
"confirm_unsaved_comments": "Your configuration contains comment(s), these will not be saved. Do you want to continue?",
|
"confirm_unsaved_comments": "Your configuration contains comment(s), these will not be saved. Do you want to continue?",
|
||||||
"error_invalid_config": "Your configuration is not valid: {error}",
|
"error_invalid_config": "Your configuration is not valid: {error}",
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
"logbook": "",
|
"logbook": "",
|
||||||
"mailbox": "",
|
"mailbox": "",
|
||||||
"map": "",
|
"map": "",
|
||||||
|
"media_browser": "Navegador de medios",
|
||||||
"profile": "Perfil",
|
"profile": "Perfil",
|
||||||
"shopping_list": "Lista de compras",
|
"shopping_list": "Lista de compras",
|
||||||
"states": ""
|
"states": ""
|
||||||
@ -106,7 +107,7 @@
|
|||||||
},
|
},
|
||||||
"automation": {
|
"automation": {
|
||||||
"off": "Desactivado",
|
"off": "Desactivado",
|
||||||
"on": "Encendido"
|
"on": "Activada"
|
||||||
},
|
},
|
||||||
"binary_sensor": {
|
"binary_sensor": {
|
||||||
"battery": {
|
"battery": {
|
||||||
@ -205,7 +206,7 @@
|
|||||||
"fan_only": "Sólo ventilador",
|
"fan_only": "Sólo ventilador",
|
||||||
"heat": "Calentar",
|
"heat": "Calentar",
|
||||||
"heat_cool": "Calentar/Enfriar",
|
"heat_cool": "Calentar/Enfriar",
|
||||||
"off": "Desactivar"
|
"off": "Apagado"
|
||||||
},
|
},
|
||||||
"configurator": {
|
"configurator": {
|
||||||
"configure": "Configurar",
|
"configure": "Configurar",
|
||||||
@ -237,7 +238,7 @@
|
|||||||
"home": "En Casa",
|
"home": "En Casa",
|
||||||
"locked": "Cerrado",
|
"locked": "Cerrado",
|
||||||
"not_home": "Fuera de Casa",
|
"not_home": "Fuera de Casa",
|
||||||
"off": "Desactivado",
|
"off": "Apagado",
|
||||||
"ok": "OK",
|
"ok": "OK",
|
||||||
"on": "Encendido",
|
"on": "Encendido",
|
||||||
"open": "Abierto",
|
"open": "Abierto",
|
||||||
@ -419,9 +420,16 @@
|
|||||||
"unlock": "Desbloquear"
|
"unlock": "Desbloquear"
|
||||||
},
|
},
|
||||||
"media_player": {
|
"media_player": {
|
||||||
|
"browse_media": "Explorar medios",
|
||||||
|
"media_next_track": "Siguiente",
|
||||||
|
"media_play": "Reproducir",
|
||||||
|
"media_play_pause": "Reproducir/pausa",
|
||||||
|
"media_previous_track": "Anterior",
|
||||||
"sound_mode": "Modo de sonido",
|
"sound_mode": "Modo de sonido",
|
||||||
"source": "Fuente",
|
"source": "Fuente",
|
||||||
"text_to_speak": "Texto a hablar"
|
"text_to_speak": "Texto a hablar",
|
||||||
|
"turn_off": "Apagar",
|
||||||
|
"turn_on": "Encender"
|
||||||
},
|
},
|
||||||
"persistent_notification": {
|
"persistent_notification": {
|
||||||
"dismiss": "Descartar"
|
"dismiss": "Descartar"
|
||||||
@ -498,6 +506,7 @@
|
|||||||
"back": "Atrás",
|
"back": "Atrás",
|
||||||
"cancel": "Cancelar",
|
"cancel": "Cancelar",
|
||||||
"close": "Cerrar",
|
"close": "Cerrar",
|
||||||
|
"continue": "Continuar",
|
||||||
"delete": "Eliminar",
|
"delete": "Eliminar",
|
||||||
"error_required": "Requerido",
|
"error_required": "Requerido",
|
||||||
"loading": "Cargando",
|
"loading": "Cargando",
|
||||||
@ -544,6 +553,10 @@
|
|||||||
"toggle": "Alternar"
|
"toggle": "Alternar"
|
||||||
},
|
},
|
||||||
"entity": {
|
"entity": {
|
||||||
|
"entity-attribute-picker": {
|
||||||
|
"attribute": "Atributo",
|
||||||
|
"show_attributes": "Mostrar atributos"
|
||||||
|
},
|
||||||
"entity-picker": {
|
"entity-picker": {
|
||||||
"clear": "Limpiar",
|
"clear": "Limpiar",
|
||||||
"entity": "Entidad",
|
"entity": "Entidad",
|
||||||
@ -554,6 +567,58 @@
|
|||||||
"loading_history": "Cargando historial de estado...",
|
"loading_history": "Cargando historial de estado...",
|
||||||
"no_history_found": "No se encontró historial de estado."
|
"no_history_found": "No se encontró historial de estado."
|
||||||
},
|
},
|
||||||
|
"logbook": {
|
||||||
|
"entries_not_found": "No se encontraron entradas en el libro de registro."
|
||||||
|
},
|
||||||
|
"media-browser": {
|
||||||
|
"audio_not_supported": "Su navegador no soporta el elemento de audio.",
|
||||||
|
"choose_player": "Elige el reproductor",
|
||||||
|
"choose-source": "Elige la fuente",
|
||||||
|
"class": {
|
||||||
|
"album": "Álbum",
|
||||||
|
"app": "Aplicación",
|
||||||
|
"artist": "Artista",
|
||||||
|
"channel": "Canal",
|
||||||
|
"composer": "Compositor",
|
||||||
|
"contributing_artist": "Artista colaborador",
|
||||||
|
"directory": "Biblioteca",
|
||||||
|
"episode": "Episodio",
|
||||||
|
"game": "Juego",
|
||||||
|
"genre": "Género",
|
||||||
|
"image": "Imagen",
|
||||||
|
"movie": "Película",
|
||||||
|
"music": "Música",
|
||||||
|
"playlist": "Lista de reproducción",
|
||||||
|
"podcast": "Podcast",
|
||||||
|
"season": "Temporada",
|
||||||
|
"track": "Pista",
|
||||||
|
"tv_show": "Programa de TV",
|
||||||
|
"url": "URL",
|
||||||
|
"video": "Video"
|
||||||
|
},
|
||||||
|
"content-type": {
|
||||||
|
"album": "Álbum",
|
||||||
|
"artist": "Artista",
|
||||||
|
"library": "Biblioteca",
|
||||||
|
"playlist": "Lista de reproducción",
|
||||||
|
"server": "Servidor"
|
||||||
|
},
|
||||||
|
"media_browsing_error": "Error de navegación de medios",
|
||||||
|
"media_not_supported": "El Reproductor multimedia no es compatible con este tipo de medios",
|
||||||
|
"media_player": "Reproductor multimedia",
|
||||||
|
"media-player-browser": "Navegador del reproductor multimedia",
|
||||||
|
"no_items": "No hay elementos",
|
||||||
|
"pick": "Elegir",
|
||||||
|
"pick-media": "Elija medios",
|
||||||
|
"play": "Reproducir",
|
||||||
|
"play-media": "Reproducir medios",
|
||||||
|
"video_not_supported": "Su navegador no soporta el elemento de vídeo.",
|
||||||
|
"web-browser": "Navegador web"
|
||||||
|
},
|
||||||
|
"picture-upload": {
|
||||||
|
"label": "Imagen",
|
||||||
|
"unsupported_format": "Formato no admitido, elija una imagen JPEG, PNG o GIF."
|
||||||
|
},
|
||||||
"related-items": {
|
"related-items": {
|
||||||
"area": "Área",
|
"area": "Área",
|
||||||
"automation": "Parte de las siguientes automatizaciones",
|
"automation": "Parte de las siguientes automatizaciones",
|
||||||
@ -574,6 +639,7 @@
|
|||||||
"week": "{count} {count, plural,\n one {semana}\n other {semanas}\n}"
|
"week": "{count} {count, plural,\n one {semana}\n other {semanas}\n}"
|
||||||
},
|
},
|
||||||
"future": "en {time}",
|
"future": "en {time}",
|
||||||
|
"just_now": "Ahora mismo",
|
||||||
"never": "Nunca",
|
"never": "Nunca",
|
||||||
"past": "Hace {time}"
|
"past": "Hace {time}"
|
||||||
},
|
},
|
||||||
@ -652,13 +718,19 @@
|
|||||||
"pattern": "Patrón de expresiones regulares para la validación del lado del cliente",
|
"pattern": "Patrón de expresiones regulares para la validación del lado del cliente",
|
||||||
"text": "Texto"
|
"text": "Texto"
|
||||||
},
|
},
|
||||||
"platform_not_loaded": "La integración {platform} no está cargada. Agregue su configuración agregando 'default_config:' o ''{platform}:''.",
|
"platform_not_loaded": "La integración {platform} no está cargada. Añádela a su archivo de configuración agregando 'default_config:' o ''{platform}:''.",
|
||||||
"required_error_msg": "Este campo es requerido",
|
"required_error_msg": "Este campo es requerido",
|
||||||
"yaml_not_editable": "La configuración de esta entidad no se puede editar desde la interfaz de usuario. Solo las entidades configuradas desde la interfaz de usuario se pueden configurar desde la interfaz de usuario."
|
"yaml_not_editable": "La configuración de esta entidad no se puede editar desde la interfaz de usuario. Solo las entidades configuradas desde la interfaz de usuario se pueden configurar desde la interfaz de usuario."
|
||||||
},
|
},
|
||||||
|
"image_cropper": {
|
||||||
|
"crop": "Cortar"
|
||||||
|
},
|
||||||
"more_info_control": {
|
"more_info_control": {
|
||||||
|
"controls": "Controles",
|
||||||
|
"details": "Detalles",
|
||||||
"dismiss": "Descartar diálogo",
|
"dismiss": "Descartar diálogo",
|
||||||
"edit": "Editar entidad",
|
"edit": "Editar entidad",
|
||||||
|
"history": "Historial",
|
||||||
"person": {
|
"person": {
|
||||||
"create_zone": "Crear zona desde ubicación actual"
|
"create_zone": "Crear zona desde ubicación actual"
|
||||||
},
|
},
|
||||||
@ -724,11 +796,11 @@
|
|||||||
},
|
},
|
||||||
"zha_device_info": {
|
"zha_device_info": {
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"add": "Agregar dispositivos",
|
"add": "Agregar dispositivos usando este dispositivo",
|
||||||
"clusters": "Administrar clústeres",
|
"clusters": "Administrar clústeres",
|
||||||
"reconfigure": "Reconfigurar dispositivo",
|
"reconfigure": "Reconfigurar dispositivo",
|
||||||
"remove": "Eliminar dispositivo",
|
"remove": "Eliminar dispositivo",
|
||||||
"zigbee_information": "Información de Zigbee"
|
"zigbee_information": "Firma del dispositivo Zigbee"
|
||||||
},
|
},
|
||||||
"confirmations": {
|
"confirmations": {
|
||||||
"remove": "¿Está seguro de que desea eliminar el dispositivo?"
|
"remove": "¿Está seguro de que desea eliminar el dispositivo?"
|
||||||
@ -748,7 +820,7 @@
|
|||||||
"unknown": "Desconocido",
|
"unknown": "Desconocido",
|
||||||
"zha_device_card": {
|
"zha_device_card": {
|
||||||
"area_picker_label": "Área",
|
"area_picker_label": "Área",
|
||||||
"device_name_placeholder": "Nombre de usuario",
|
"device_name_placeholder": "Cambiar el nombre del dispositivo",
|
||||||
"update_name_button": "Actualizar Nombre"
|
"update_name_button": "Actualizar Nombre"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -798,7 +870,7 @@
|
|||||||
"confirmation_text": "Todos los dispositivos en esta área quedarán sin asignar.",
|
"confirmation_text": "Todos los dispositivos en esta área quedarán sin asignar.",
|
||||||
"confirmation_title": "¿Está seguro de que desea eliminar esta área?"
|
"confirmation_title": "¿Está seguro de que desea eliminar esta área?"
|
||||||
},
|
},
|
||||||
"description": "Visión general de todas las áreas de su casa.",
|
"description": "Gestione las áreas de su casa.",
|
||||||
"editor": {
|
"editor": {
|
||||||
"area_id": "Identificador del área",
|
"area_id": "Identificador del área",
|
||||||
"create": "Crear",
|
"create": "Crear",
|
||||||
@ -859,13 +931,19 @@
|
|||||||
"label": "Llamar servico",
|
"label": "Llamar servico",
|
||||||
"service_data": "Datos"
|
"service_data": "Datos"
|
||||||
},
|
},
|
||||||
|
"wait_for_trigger": {
|
||||||
|
"continue_timeout": "Continuar cuando el tiempo venza",
|
||||||
|
"label": "Esperar por un desencadenador",
|
||||||
|
"timeout": "Tiempo limite (opcional)"
|
||||||
|
},
|
||||||
"wait_template": {
|
"wait_template": {
|
||||||
|
"continue_timeout": "Continuar cuando el tiempo venza",
|
||||||
"label": "Esperar",
|
"label": "Esperar",
|
||||||
"timeout": "Tiempo de espera (opcional)",
|
"timeout": "Tiempo de espera (opcional)",
|
||||||
"wait_template": "Plantilla de espera"
|
"wait_template": "Plantilla de espera"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"unsupported_action": "Acción no soportada: {action}"
|
"unsupported_action": "No hay soporte en la interfaz de usuario para la acción: {action}"
|
||||||
},
|
},
|
||||||
"alias": "Nombre",
|
"alias": "Nombre",
|
||||||
"conditions": {
|
"conditions": {
|
||||||
@ -923,7 +1001,9 @@
|
|||||||
"time": {
|
"time": {
|
||||||
"after": "Después de",
|
"after": "Después de",
|
||||||
"before": "Antes de",
|
"before": "Antes de",
|
||||||
"label": "Hora"
|
"label": "Hora",
|
||||||
|
"type_input": "Valor de un auxiliar de tipo fecha/tiempo",
|
||||||
|
"type_value": "Tiempo corregido"
|
||||||
},
|
},
|
||||||
"zone": {
|
"zone": {
|
||||||
"entity": "Entidad con ubicación",
|
"entity": "Entidad con ubicación",
|
||||||
@ -931,7 +1011,7 @@
|
|||||||
"zone": "Zona"
|
"zone": "Zona"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"unsupported_condition": "Condición no soportada: {condition}"
|
"unsupported_condition": "No hay soporte en la interfaz de usuario para la condición: {condition}"
|
||||||
},
|
},
|
||||||
"default_name": "Nueva Automatización",
|
"default_name": "Nueva Automatización",
|
||||||
"description": {
|
"description": {
|
||||||
@ -1000,7 +1080,7 @@
|
|||||||
"start": "Inicio"
|
"start": "Inicio"
|
||||||
},
|
},
|
||||||
"mqtt": {
|
"mqtt": {
|
||||||
"label": "",
|
"label": "MQTT",
|
||||||
"payload": "Payload (opcional)",
|
"payload": "Payload (opcional)",
|
||||||
"topic": "Topic"
|
"topic": "Topic"
|
||||||
},
|
},
|
||||||
@ -1011,6 +1091,7 @@
|
|||||||
"value_template": "Plantilla de valor (opcional)"
|
"value_template": "Plantilla de valor (opcional)"
|
||||||
},
|
},
|
||||||
"state": {
|
"state": {
|
||||||
|
"attribute": "Atributo (opcional)",
|
||||||
"for": "Por",
|
"for": "Por",
|
||||||
"from": "De",
|
"from": "De",
|
||||||
"label": "Estado",
|
"label": "Estado",
|
||||||
@ -1023,6 +1104,9 @@
|
|||||||
"sunrise": "Salida del sol",
|
"sunrise": "Salida del sol",
|
||||||
"sunset": "Puesta de sol"
|
"sunset": "Puesta de sol"
|
||||||
},
|
},
|
||||||
|
"tag": {
|
||||||
|
"label": "Etiqueta"
|
||||||
|
},
|
||||||
"template": {
|
"template": {
|
||||||
"label": "Plantilla",
|
"label": "Plantilla",
|
||||||
"value_template": "Plantilla de valor"
|
"value_template": "Plantilla de valor"
|
||||||
@ -1034,8 +1118,10 @@
|
|||||||
"seconds": "Segundos"
|
"seconds": "Segundos"
|
||||||
},
|
},
|
||||||
"time": {
|
"time": {
|
||||||
"at": "A",
|
"at": "A las",
|
||||||
"label": "Hora"
|
"label": "Hora",
|
||||||
|
"type_input": "Valor de un auxiliar de tipo fecha/tiempo",
|
||||||
|
"type_value": "Tiempo corregido"
|
||||||
},
|
},
|
||||||
"webhook": {
|
"webhook": {
|
||||||
"label": "Webhook",
|
"label": "Webhook",
|
||||||
@ -1050,7 +1136,7 @@
|
|||||||
"zone": "Zona"
|
"zone": "Zona"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"unsupported_platform": "Plataforma no soportada: {platform}"
|
"unsupported_platform": "No hay soporte en la interfaz de usuario para la plataforma: {platform}"
|
||||||
},
|
},
|
||||||
"unsaved_confirm": "Tiene cambios sin guardar. ¿Estás seguro que quieres salir?"
|
"unsaved_confirm": "Tiene cambios sin guardar. ¿Estás seguro que quieres salir?"
|
||||||
},
|
},
|
||||||
@ -1058,6 +1144,8 @@
|
|||||||
"add_automation": "Agregar automatización",
|
"add_automation": "Agregar automatización",
|
||||||
"delete_automation": "Eliminar automatización",
|
"delete_automation": "Eliminar automatización",
|
||||||
"delete_confirm": "¿Está seguro de que desea eliminar esta automatización?",
|
"delete_confirm": "¿Está seguro de que desea eliminar esta automatización?",
|
||||||
|
"duplicate": "Duplicar",
|
||||||
|
"duplicate_automation": "Duplicar automatización",
|
||||||
"edit_automation": "Editar automatización",
|
"edit_automation": "Editar automatización",
|
||||||
"header": "Editor de automatizaciones",
|
"header": "Editor de automatizaciones",
|
||||||
"headers": {
|
"headers": {
|
||||||
@ -1139,8 +1227,13 @@
|
|||||||
},
|
},
|
||||||
"alexa": {
|
"alexa": {
|
||||||
"banner": "La edición de las entidades expuestas a través de esta interfaz de usuario está deshabilitada porque ha configurado filtros de entidad en configuration.yaml.",
|
"banner": "La edición de las entidades expuestas a través de esta interfaz de usuario está deshabilitada porque ha configurado filtros de entidad en configuration.yaml.",
|
||||||
|
"dont_expose_entity": "No exponer la entidad",
|
||||||
"expose": "Exponer a Alexa",
|
"expose": "Exponer a Alexa",
|
||||||
|
"expose_entity": "Exponer la entidad",
|
||||||
|
"exposed": "{selected} expuesto",
|
||||||
"exposed_entities": "Entidades expuestas",
|
"exposed_entities": "Entidades expuestas",
|
||||||
|
"follow_domain": "Seguir dominio",
|
||||||
|
"not_exposed": "{selected} no expuesto",
|
||||||
"not_exposed_entities": "Entidades no expuestas",
|
"not_exposed_entities": "Entidades no expuestas",
|
||||||
"title": "Alexa"
|
"title": "Alexa"
|
||||||
},
|
},
|
||||||
@ -1178,8 +1271,14 @@
|
|||||||
"google": {
|
"google": {
|
||||||
"banner": "La edición de las entidades expuestas a través de esta interfaz de usuario está deshabilitada porque ha configurado filtros de entidad en configuration.yaml.",
|
"banner": "La edición de las entidades expuestas a través de esta interfaz de usuario está deshabilitada porque ha configurado filtros de entidad en configuration.yaml.",
|
||||||
"disable_2FA": "Deshabilitar la autenticación de dos factores",
|
"disable_2FA": "Deshabilitar la autenticación de dos factores",
|
||||||
|
"dont_expose_entity": "No exponer la entidad",
|
||||||
"expose": "Exponer al Asistente de Google",
|
"expose": "Exponer al Asistente de Google",
|
||||||
|
"expose_entity": "Exponer la entidad",
|
||||||
|
"exposed": "{selected} expuesto",
|
||||||
"exposed_entities": "Entidades expuestas",
|
"exposed_entities": "Entidades expuestas",
|
||||||
|
"follow_domain": "Seguir dominio",
|
||||||
|
"manage_domains": "Gestionar dominios",
|
||||||
|
"not_exposed": "{selected} no expuesto",
|
||||||
"not_exposed_entities": "Entidades no expuestas",
|
"not_exposed_entities": "Entidades no expuestas",
|
||||||
"sync_to_google": "Sincronizar los cambios con Google.",
|
"sync_to_google": "Sincronizar los cambios con Google.",
|
||||||
"title": "Asistente de Google"
|
"title": "Asistente de Google"
|
||||||
@ -1281,6 +1380,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"devices": {
|
"devices": {
|
||||||
|
"add_prompt": "Aún no se ha agregado ningún {name} con este dispositivo. Puede agregar uno haciendo clic en el botón + de arriba.",
|
||||||
"automation": {
|
"automation": {
|
||||||
"actions": {
|
"actions": {
|
||||||
"caption": "Cuando algo se desencadena..."
|
"caption": "Cuando algo se desencadena..."
|
||||||
@ -1300,6 +1400,7 @@
|
|||||||
"caption": "Dispositivos",
|
"caption": "Dispositivos",
|
||||||
"confirm_delete": "¿Está seguro de que desea eliminar este dispositivo?",
|
"confirm_delete": "¿Está seguro de que desea eliminar este dispositivo?",
|
||||||
"confirm_rename_entity_ids": "¿También desea cambiar el nombre de la identificación de la entidad de sus entidades?",
|
"confirm_rename_entity_ids": "¿También desea cambiar el nombre de la identificación de la entidad de sus entidades?",
|
||||||
|
"confirm_rename_entity_ids_warning": "Esto no cambiará ninguna configuración (como automatizaciones, scripts, escenas, Lovelace) que esté usando actualmente estas entidades, tendrás que actualizarlas tú mismo.",
|
||||||
"data_table": {
|
"data_table": {
|
||||||
"area": "Área",
|
"area": "Área",
|
||||||
"battery": "Batería",
|
"battery": "Batería",
|
||||||
@ -1341,7 +1442,7 @@
|
|||||||
},
|
},
|
||||||
"entities": {
|
"entities": {
|
||||||
"caption": "Entidades",
|
"caption": "Entidades",
|
||||||
"description": "Visión general de todas las entidades conocidas.",
|
"description": "Gestione todas las entidades conocidas.",
|
||||||
"picker": {
|
"picker": {
|
||||||
"disable_selected": {
|
"disable_selected": {
|
||||||
"button": "Deshabilitar selección",
|
"button": "Deshabilitar selección",
|
||||||
@ -1393,7 +1494,7 @@
|
|||||||
"header": "Configurar Home Assistant",
|
"header": "Configurar Home Assistant",
|
||||||
"helpers": {
|
"helpers": {
|
||||||
"caption": "Auxiliares",
|
"caption": "Auxiliares",
|
||||||
"description": "Elementos que pueden ayudar a construir automatizaciones.",
|
"description": "Gestionar elementos ayudan a construir automatizaciones",
|
||||||
"dialog": {
|
"dialog": {
|
||||||
"add_helper": "Agregar auxiliar",
|
"add_helper": "Agregar auxiliar",
|
||||||
"add_platform": "Añadir {platform}",
|
"add_platform": "Añadir {platform}",
|
||||||
@ -1444,6 +1545,7 @@
|
|||||||
},
|
},
|
||||||
"integrations": {
|
"integrations": {
|
||||||
"add_integration": "Agregar integración",
|
"add_integration": "Agregar integración",
|
||||||
|
"attention": "Atención requerida",
|
||||||
"caption": "Integraciones",
|
"caption": "Integraciones",
|
||||||
"config_entry": {
|
"config_entry": {
|
||||||
"area": "En {area}",
|
"area": "En {area}",
|
||||||
@ -1464,6 +1566,7 @@
|
|||||||
"options": "Opciones",
|
"options": "Opciones",
|
||||||
"rename": "Renombrar",
|
"rename": "Renombrar",
|
||||||
"restart_confirm": "Reinicie Home Assistant para terminar de eliminar esta integración.",
|
"restart_confirm": "Reinicie Home Assistant para terminar de eliminar esta integración.",
|
||||||
|
"services": "{count} {count, plural,\n one {service}\n other {services}\n}",
|
||||||
"settings_button": "Editar configuración para {integration}",
|
"settings_button": "Editar configuración para {integration}",
|
||||||
"system_options": "Opciones de Sistema",
|
"system_options": "Opciones de Sistema",
|
||||||
"system_options_button": "Opciones del sistema para {integration}",
|
"system_options_button": "Opciones del sistema para {integration}",
|
||||||
@ -1486,7 +1589,7 @@
|
|||||||
},
|
},
|
||||||
"configure": "Configurar",
|
"configure": "Configurar",
|
||||||
"configured": "Configurado",
|
"configured": "Configurado",
|
||||||
"description": "Administrar y configurar integraciones",
|
"description": "Gestione las integraciones",
|
||||||
"details": "Detalles de integración",
|
"details": "Detalles de integración",
|
||||||
"discovered": "Descubierto",
|
"discovered": "Descubierto",
|
||||||
"home_assistant_website": "Sitio web de Home Assistant",
|
"home_assistant_website": "Sitio web de Home Assistant",
|
||||||
@ -1510,6 +1613,7 @@
|
|||||||
"none_found_detail": "Ajuste sus criterios de búsqueda",
|
"none_found_detail": "Ajuste sus criterios de búsqueda",
|
||||||
"note_about_integrations": "No todas las integraciones se pueden configurar a través de la interfaz de usuario.",
|
"note_about_integrations": "No todas las integraciones se pueden configurar a través de la interfaz de usuario.",
|
||||||
"note_about_website_reference": "Hay más disponibles en ",
|
"note_about_website_reference": "Hay más disponibles en ",
|
||||||
|
"reconfigure": "Reconfigurar",
|
||||||
"rename_dialog": "Editar el nombre de esta entrada de configuración",
|
"rename_dialog": "Editar el nombre de esta entrada de configuración",
|
||||||
"rename_input_label": "Ingresar Nombre",
|
"rename_input_label": "Ingresar Nombre",
|
||||||
"search": "Buscar integraciones"
|
"search": "Buscar integraciones"
|
||||||
@ -1619,13 +1723,84 @@
|
|||||||
"title": "",
|
"title": "",
|
||||||
"topic": "tema"
|
"topic": "tema"
|
||||||
},
|
},
|
||||||
|
"ozw": {
|
||||||
|
"button": "Configurar",
|
||||||
|
"common": {
|
||||||
|
"controller": "Controlador",
|
||||||
|
"instance": "Instancia",
|
||||||
|
"network": "Red"
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"network": "Red",
|
||||||
|
"nodes": "Nodos",
|
||||||
|
"select_instance": "Seleccione la instancia"
|
||||||
|
},
|
||||||
|
"network_status": {
|
||||||
|
"details": {
|
||||||
|
"driverallnodesqueried": "Todos los nodos han sido consultados",
|
||||||
|
"driverallnodesqueriedsomedead": "Todos los nodos han sido consultados. Algunos nodos fueron encontrados inactivos.",
|
||||||
|
"driverawakenodesqueries": "Se han consultado todos los nodos activos",
|
||||||
|
"driverfailed": "No se pudo conectar al controlador Z-Wave",
|
||||||
|
"driverready": "Iniciando el controlador de Z-Wave",
|
||||||
|
"driverremoved": "El controlador ha sido eliminado",
|
||||||
|
"driverreset": "El controlador se ha reiniciado",
|
||||||
|
"offline": "OZWDaemon fuera de línea",
|
||||||
|
"ready": "Listo para conectar",
|
||||||
|
"started": "Conectado a MQTT",
|
||||||
|
"starting": "Conectando con MQTT",
|
||||||
|
"stopped": "OpenZWave se detuvo"
|
||||||
|
},
|
||||||
|
"offline": "Fuera de línea",
|
||||||
|
"online": "En línea",
|
||||||
|
"starting": "Comenzando",
|
||||||
|
"unknown": "Desconocido"
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"header": "Gestión de red",
|
||||||
|
"introduction": "Gestione las funciones de toda la red."
|
||||||
|
},
|
||||||
|
"node_query_stages": {
|
||||||
|
"complete": "El proceso de consulta está completo",
|
||||||
|
"configuration": "Obteniendo los valores de configuración del nodo",
|
||||||
|
"dynamic": "Obteniendo los valores que cambian con frecuencia del nodo"
|
||||||
|
},
|
||||||
|
"node": {
|
||||||
|
"button": "Detalles del nodo",
|
||||||
|
"not_found": "Nodo no encontrado"
|
||||||
|
},
|
||||||
|
"nodes_table": {
|
||||||
|
"failed": "Fallido",
|
||||||
|
"id": "ID",
|
||||||
|
"manufacturer": "Fabricante",
|
||||||
|
"model": "Modelo",
|
||||||
|
"query_stage": "Etapa de consulta",
|
||||||
|
"zwave_plus": "Z-Wave Plus"
|
||||||
|
},
|
||||||
|
"refresh_node": {
|
||||||
|
"battery_note": "Si el nodo funciona con batería, asegúrese de activarlo antes de continuar.",
|
||||||
|
"button": "Actualizar nodo",
|
||||||
|
"complete": "Actualización de nodo completa",
|
||||||
|
"description": "Esto le indicará a OpenZWave que vuelva a consultar un nodo y actualice las clases de comando, las capacidades y los valores del nodo.",
|
||||||
|
"node_status": "Estado del nodo",
|
||||||
|
"refreshing_description": "Actualizando la información del nodo ...",
|
||||||
|
"start_refresh_button": "Iniciar actualización",
|
||||||
|
"step": "Paso",
|
||||||
|
"title": "Actualizar la información del nodos",
|
||||||
|
"wakeup_header": "Instrucciones de activación para",
|
||||||
|
"wakeup_instructions_source": "Las instrucciones de activación se obtienen de la base de datos de dispositivos de la comunidad OpenZWave."
|
||||||
|
},
|
||||||
|
"select_instance": {
|
||||||
|
"header": "Seleccione una instancia OpenZWave",
|
||||||
|
"introduction": "Tiene más de una instancia de OpenZWave en ejecución. ¿Qué instancia te gustaría gestionar?"
|
||||||
|
}
|
||||||
|
},
|
||||||
"person": {
|
"person": {
|
||||||
"add_person": "Agregar persona",
|
"add_person": "Agregar persona",
|
||||||
"caption": "Personas",
|
"caption": "Personas",
|
||||||
"confirm_delete": "¿Está seguro de que desea eliminar a esta persona?",
|
"confirm_delete": "¿Está seguro de que desea eliminar a esta persona?",
|
||||||
"confirm_delete2": "Todos los dispositivos que pertenecen a esta persona quedarán sin asignar.",
|
"confirm_delete2": "Todos los dispositivos que pertenecen a esta persona quedarán sin asignar.",
|
||||||
"create_person": "Crear persona",
|
"create_person": "Crear persona",
|
||||||
"description": "Gestiona las personas que rastrea Home Assistant.",
|
"description": "Gestione las personas que rastrea Home Assistant.",
|
||||||
"detail": {
|
"detail": {
|
||||||
"create": "Crear",
|
"create": "Crear",
|
||||||
"delete": "Eliminar",
|
"delete": "Eliminar",
|
||||||
@ -1648,7 +1823,7 @@
|
|||||||
"scene": {
|
"scene": {
|
||||||
"activated": "Escena activada {name}.",
|
"activated": "Escena activada {name}.",
|
||||||
"caption": "Escenas",
|
"caption": "Escenas",
|
||||||
"description": "Crear y editar escenas",
|
"description": "Gestionar escenas",
|
||||||
"editor": {
|
"editor": {
|
||||||
"default_name": "Nueva escena",
|
"default_name": "Nueva escena",
|
||||||
"devices": {
|
"devices": {
|
||||||
@ -1743,7 +1918,7 @@
|
|||||||
"reloading": {
|
"reloading": {
|
||||||
"automation": "Recargar automatizaciones",
|
"automation": "Recargar automatizaciones",
|
||||||
"core": "Recargar ubicación y personalizaciones",
|
"core": "Recargar ubicación y personalizaciones",
|
||||||
"group": "Recargar grupos",
|
"group": "Recargar grupos, entidades grupales, y servicios de notificación",
|
||||||
"heading": "Recarga de configuración YAML",
|
"heading": "Recarga de configuración YAML",
|
||||||
"input_boolean": "Recargar controles booleanos",
|
"input_boolean": "Recargar controles booleanos",
|
||||||
"input_datetime": "Recargar controles de fechas",
|
"input_datetime": "Recargar controles de fechas",
|
||||||
@ -1751,9 +1926,16 @@
|
|||||||
"input_select": "Recargar controles de selección",
|
"input_select": "Recargar controles de selección",
|
||||||
"input_text": "Recargar controles de texto",
|
"input_text": "Recargar controles de texto",
|
||||||
"introduction": "Algunas partes de Home Assistant pueden recargarse sin requerir un reinicio. Al presionar recargar se descargará su configuración YAML actual y se cargará la nueva.",
|
"introduction": "Algunas partes de Home Assistant pueden recargarse sin requerir un reinicio. Al presionar recargar se descargará su configuración YAML actual y se cargará la nueva.",
|
||||||
|
"mqtt": "Recargar entidades MQTT",
|
||||||
"person": "Recargar personas",
|
"person": "Recargar personas",
|
||||||
|
"reload": "Recargar {domain}",
|
||||||
|
"rest": "Recargar entidades \"rest\" y servicios de notificación.",
|
||||||
|
"rpi_gpio": "Recargue las entidades GPIO de la Raspberry Pi",
|
||||||
"scene": "Recargar escenas",
|
"scene": "Recargar escenas",
|
||||||
"script": "Recargar scripts",
|
"script": "Recargar scripts",
|
||||||
|
"smtp": "Recargar servicios de notificación smtp",
|
||||||
|
"telegram": "Recargar servicios de notificación de telegram",
|
||||||
|
"template": "Recargar las entidades de la plantilla",
|
||||||
"zone": "Recargar zonas"
|
"zone": "Recargar zonas"
|
||||||
},
|
},
|
||||||
"server_management": {
|
"server_management": {
|
||||||
@ -1773,6 +1955,32 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"tags": {
|
||||||
|
"add_tag": "Añadir etiqueta",
|
||||||
|
"automation_title": "La etiqueta {name} ha sido escaneada",
|
||||||
|
"caption": "Etiquetas",
|
||||||
|
"create_automation": "Crea automatización con etiqueta",
|
||||||
|
"description": "Gestionar etiquetas",
|
||||||
|
"detail": {
|
||||||
|
"create": "Crear",
|
||||||
|
"create_and_write": "Crear y escribir",
|
||||||
|
"delete": "Eliminar",
|
||||||
|
"description": "Descripción",
|
||||||
|
"name": "Nombre",
|
||||||
|
"new_tag": "Nueva etiqueta",
|
||||||
|
"tag_id": "ID de etiqueta",
|
||||||
|
"tag_id_placeholder": "Autogenerado cuando se deja vacío",
|
||||||
|
"update": "Actualizar"
|
||||||
|
},
|
||||||
|
"edit": "Editar",
|
||||||
|
"headers": {
|
||||||
|
"last_scanned": "Último escaneado",
|
||||||
|
"name": "Nombre"
|
||||||
|
},
|
||||||
|
"never_scanned": "Nunca escaneado",
|
||||||
|
"no_tags": "Sin etiquetas",
|
||||||
|
"write": "Escribir"
|
||||||
|
},
|
||||||
"users": {
|
"users": {
|
||||||
"add_user": {
|
"add_user": {
|
||||||
"caption": "Agregar usuario",
|
"caption": "Agregar usuario",
|
||||||
@ -1809,7 +2017,7 @@
|
|||||||
"system": "Sistema"
|
"system": "Sistema"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"users_privileges_note": "El grupo de usuarios es un trabajo en progreso. El usuario no podrá administrar la instancia a través de la interfaz de usuario. Todavía estamos auditando todos los puntos finales de la API de administración para garantizar que limiten correctamente el acceso a los administradores."
|
"users_privileges_note": "El grupo de usuarios es un trabajo en progreso. El usuario no podrá administrar la instancia a través de la interfaz de usuario. Todavía estamos auditando todos los puntos finales de la API de administración para garantizar que limiten correctamente el acceso solo a los administradores."
|
||||||
},
|
},
|
||||||
"zha": {
|
"zha": {
|
||||||
"add_device_page": {
|
"add_device_page": {
|
||||||
@ -1847,7 +2055,7 @@
|
|||||||
"clusters": {
|
"clusters": {
|
||||||
"header": "Clústeres",
|
"header": "Clústeres",
|
||||||
"help_cluster_dropdown": "Seleccione un clúster para ver atributos y comandos.",
|
"help_cluster_dropdown": "Seleccione un clúster para ver atributos y comandos.",
|
||||||
"introduction": "Los clústeres son los bloques de construcción para la funcionalidad de Zigbee. Separa la funcionalidad en unidades lógicas. Hay tipos de clientes y servidores que se componen de atributos y comandos."
|
"introduction": "Los clústeres son los bloques de construcción para la funcionalidad de Zigbee. Ellos separan la funcionalidad en unidades lógicas. Hay tipos de clientes y servidores que se componen de atributos y comandos."
|
||||||
},
|
},
|
||||||
"common": {
|
"common": {
|
||||||
"add_devices": "Agregar dispositivos",
|
"add_devices": "Agregar dispositivos",
|
||||||
@ -1879,7 +2087,7 @@
|
|||||||
"create_group": "Zigbee Home Automation - Crear grupo",
|
"create_group": "Zigbee Home Automation - Crear grupo",
|
||||||
"create_group_details": "Ingrese los detalles requeridos para crear un nuevo grupo zigbee",
|
"create_group_details": "Ingrese los detalles requeridos para crear un nuevo grupo zigbee",
|
||||||
"creating_group": "Creando grupo",
|
"creating_group": "Creando grupo",
|
||||||
"description": "Crear y modificar grupos Zigbee",
|
"description": "Gestione los grupos Zigbee",
|
||||||
"group_details": "Aquí están todos los detalles para el grupo Zigbee seleccionado.",
|
"group_details": "Aquí están todos los detalles para el grupo Zigbee seleccionado.",
|
||||||
"group_id": "Identificación del grupo",
|
"group_id": "Identificación del grupo",
|
||||||
"group_info": "Información del grupo",
|
"group_info": "Información del grupo",
|
||||||
@ -2091,9 +2299,14 @@
|
|||||||
"title": "Estados"
|
"title": "Estados"
|
||||||
},
|
},
|
||||||
"templates": {
|
"templates": {
|
||||||
|
"all_listeners": "Esta plantilla escucha todos los eventos de cambio de estado.",
|
||||||
"description": "Las plantillas se representan utilizando el motor de plantillas Jinja2 con algunas extensiones específicas de Home Assistant.",
|
"description": "Las plantillas se representan utilizando el motor de plantillas Jinja2 con algunas extensiones específicas de Home Assistant.",
|
||||||
|
"domain": "Dominio",
|
||||||
"editor": "Editor de plantillas",
|
"editor": "Editor de plantillas",
|
||||||
|
"entity": "Entidad",
|
||||||
"jinja_documentation": "Documentación de plantillas Jinja2",
|
"jinja_documentation": "Documentación de plantillas Jinja2",
|
||||||
|
"listeners": "Esta plantilla escucha los eventos de los siguientes cambios de estado:",
|
||||||
|
"no_listeners": "Esta plantilla no escucha ningún evento de cambio de estado y no se actualizará automáticamente.",
|
||||||
"template_extensions": "Extensiones de plantilla de Home Assistant",
|
"template_extensions": "Extensiones de plantilla de Home Assistant",
|
||||||
"title": "Plantilla",
|
"title": "Plantilla",
|
||||||
"unknown_error_template": "Error desconocido al mostrar la plantilla"
|
"unknown_error_template": "Error desconocido al mostrar la plantilla"
|
||||||
@ -2335,7 +2548,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cardpicker": {
|
"cardpicker": {
|
||||||
|
"by_card": "Por Tarjeta",
|
||||||
|
"by_entity": "Por Entidad",
|
||||||
"custom_card": "Personalizado",
|
"custom_card": "Personalizado",
|
||||||
|
"domain": "Dominio",
|
||||||
|
"entity": "Entidad",
|
||||||
"no_description": "No hay descripción disponible."
|
"no_description": "No hay descripción disponible."
|
||||||
},
|
},
|
||||||
"edit_card": {
|
"edit_card": {
|
||||||
@ -2349,10 +2566,11 @@
|
|||||||
"options": "Mas opciones",
|
"options": "Mas opciones",
|
||||||
"pick_card": "¿Qué tarjeta desea agregar?",
|
"pick_card": "¿Qué tarjeta desea agregar?",
|
||||||
"pick_card_view_title": "¿Qué tarjeta le gustaría agregar a su vista de {name} ?",
|
"pick_card_view_title": "¿Qué tarjeta le gustaría agregar a su vista de {name} ?",
|
||||||
|
"search_cards": "Buscar tarjetas",
|
||||||
"show_code_editor": "Mostrar editor de código",
|
"show_code_editor": "Mostrar editor de código",
|
||||||
"show_visual_editor": "Mostrar el editor visual",
|
"show_visual_editor": "Mostrar el editor visual",
|
||||||
"toggle_editor": "Cambiar editor",
|
"toggle_editor": "Cambiar editor",
|
||||||
"typed_header": "{tipo} Configuración de la tarjeta",
|
"typed_header": "{type} Configuración de la tarjeta",
|
||||||
"unsaved_changes": "Tiene cambios no guardados"
|
"unsaved_changes": "Tiene cambios no guardados"
|
||||||
},
|
},
|
||||||
"edit_lovelace": {
|
"edit_lovelace": {
|
||||||
@ -2429,7 +2647,7 @@
|
|||||||
},
|
},
|
||||||
"menu": {
|
"menu": {
|
||||||
"close": "Cerrar",
|
"close": "Cerrar",
|
||||||
"configure_ui": "Configurar interfaz de usuario",
|
"configure_ui": "Editar interfaz de usuario",
|
||||||
"exit_edit_mode": "Salir del modo de edición de la interfaz de usuario",
|
"exit_edit_mode": "Salir del modo de edición de la interfaz de usuario",
|
||||||
"help": "Ayuda",
|
"help": "Ayuda",
|
||||||
"refresh": "Refrescar",
|
"refresh": "Refrescar",
|
||||||
@ -2661,6 +2879,11 @@
|
|||||||
"submit": "Enviar"
|
"submit": "Enviar"
|
||||||
},
|
},
|
||||||
"current_user": "Actualmente estás conectado como {fullName} .",
|
"current_user": "Actualmente estás conectado como {fullName} .",
|
||||||
|
"customize_sidebar": {
|
||||||
|
"button": "Editar",
|
||||||
|
"description": "También puede mantener pulsado el encabezado de la barra lateral para activar el modo de edición.",
|
||||||
|
"header": "Cambiar el orden y ocultar elementos de la barra lateral"
|
||||||
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"description": "Elija un tablero predeterminado para este dispositivo.",
|
"description": "Elija un tablero predeterminado para este dispositivo.",
|
||||||
"dropdown_label": "Tablero",
|
"dropdown_label": "Tablero",
|
||||||
@ -2683,6 +2906,7 @@
|
|||||||
"confirm_delete": "¿Está seguro de que desea eliminar el token de acceso para {name}?",
|
"confirm_delete": "¿Está seguro de que desea eliminar el token de acceso para {name}?",
|
||||||
"create": "Crear Token",
|
"create": "Crear Token",
|
||||||
"create_failed": "No se pudo crear el token de acceso.",
|
"create_failed": "No se pudo crear el token de acceso.",
|
||||||
|
"created": "Creado {date}",
|
||||||
"created_at": "Creado en {date}",
|
"created_at": "Creado en {date}",
|
||||||
"delete_failed": "No se pudo eliminar el token de acceso.",
|
"delete_failed": "No se pudo eliminar el token de acceso.",
|
||||||
"description": "Cree tokens de acceso de larga duración para permitir que sus secuencias de comandos interactúen con la instancia de su Home Assistant. Cada token tendrá una validez de 10 años a partir de su creación. Los siguientes tokens de acceso de larga duración están activos actualmente.",
|
"description": "Cree tokens de acceso de larga duración para permitir que sus secuencias de comandos interactúen con la instancia de su Home Assistant. Cada token tendrá una validez de 10 años a partir de su creación. Los siguientes tokens de acceso de larga duración están activos actualmente.",
|
||||||
@ -2690,9 +2914,10 @@
|
|||||||
"header": "Tokens de acceso de larga duración",
|
"header": "Tokens de acceso de larga duración",
|
||||||
"last_used": "Utilizado por última vez en {date} desde {location}.",
|
"last_used": "Utilizado por última vez en {date} desde {location}.",
|
||||||
"learn_auth_requests": "Aprenda a realizar solicitudes autenticadas.",
|
"learn_auth_requests": "Aprenda a realizar solicitudes autenticadas.",
|
||||||
|
"name": "Nombre",
|
||||||
"not_used": "Nunca se ha utilizado",
|
"not_used": "Nunca se ha utilizado",
|
||||||
"prompt_copy_token": "Copia tu token de acceso. No se volverá a mostrar",
|
"prompt_copy_token": "Copia tu token de acceso. No se volverá a mostrar",
|
||||||
"prompt_name": "¿Nombre?"
|
"prompt_name": "Dale un nombre al token"
|
||||||
},
|
},
|
||||||
"mfa_setup": {
|
"mfa_setup": {
|
||||||
"close": "Cerrar",
|
"close": "Cerrar",
|
||||||
@ -2748,6 +2973,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
|
"done": "Hecho",
|
||||||
"external_app_configuration": "Configuración de la aplicación",
|
"external_app_configuration": "Configuración de la aplicación",
|
||||||
"sidebar_toggle": "Alternar barra lateral"
|
"sidebar_toggle": "Alternar barra lateral"
|
||||||
}
|
}
|
||||||
|
@ -507,6 +507,7 @@
|
|||||||
"cancel": "Cancelar",
|
"cancel": "Cancelar",
|
||||||
"close": "Cerrar",
|
"close": "Cerrar",
|
||||||
"continue": "Continuar",
|
"continue": "Continuar",
|
||||||
|
"copied": "Copiado",
|
||||||
"delete": "Eliminar",
|
"delete": "Eliminar",
|
||||||
"error_required": "Obligatorio",
|
"error_required": "Obligatorio",
|
||||||
"loading": "Cargando",
|
"loading": "Cargando",
|
||||||
@ -567,10 +568,35 @@
|
|||||||
"loading_history": "Cargando historial de estado...",
|
"loading_history": "Cargando historial de estado...",
|
||||||
"no_history_found": "No se encontró historial de estado."
|
"no_history_found": "No se encontró historial de estado."
|
||||||
},
|
},
|
||||||
|
"logbook": {
|
||||||
|
"entries_not_found": "No se han encontrado entradas en el registro."
|
||||||
|
},
|
||||||
"media-browser": {
|
"media-browser": {
|
||||||
"audio_not_supported": "Tu navegador no es compatible con el elemento de audio.",
|
"audio_not_supported": "Tu navegador no es compatible con el elemento de audio.",
|
||||||
"choose_player": "Elige reproductor",
|
"choose_player": "Elige reproductor",
|
||||||
"choose-source": "Elige la fuente",
|
"choose-source": "Elige la fuente",
|
||||||
|
"class": {
|
||||||
|
"album": "Álbum",
|
||||||
|
"app": "Aplicación",
|
||||||
|
"artist": "Artista",
|
||||||
|
"channel": "Canal",
|
||||||
|
"composer": "Compositor",
|
||||||
|
"contributing_artist": "Artista colaborador",
|
||||||
|
"directory": "Biblioteca",
|
||||||
|
"episode": "Episodio",
|
||||||
|
"game": "Juego",
|
||||||
|
"genre": "Género",
|
||||||
|
"image": "Imagen",
|
||||||
|
"movie": "Película",
|
||||||
|
"music": "Música",
|
||||||
|
"playlist": "Lista de reproducción",
|
||||||
|
"podcast": "Podcast",
|
||||||
|
"season": "Temporada",
|
||||||
|
"track": "Pista",
|
||||||
|
"tv_show": "Programa de TV",
|
||||||
|
"url": "Url",
|
||||||
|
"video": "Vídeo"
|
||||||
|
},
|
||||||
"content-type": {
|
"content-type": {
|
||||||
"album": "Álbum",
|
"album": "Álbum",
|
||||||
"artist": "Artista",
|
"artist": "Artista",
|
||||||
@ -703,6 +729,7 @@
|
|||||||
},
|
},
|
||||||
"more_info_control": {
|
"more_info_control": {
|
||||||
"controls": "Controles",
|
"controls": "Controles",
|
||||||
|
"details": "Detalles",
|
||||||
"dismiss": "Descartar diálogo",
|
"dismiss": "Descartar diálogo",
|
||||||
"edit": "Editar entidad",
|
"edit": "Editar entidad",
|
||||||
"history": "Historial",
|
"history": "Historial",
|
||||||
@ -2348,9 +2375,14 @@
|
|||||||
"title": "Estados"
|
"title": "Estados"
|
||||||
},
|
},
|
||||||
"templates": {
|
"templates": {
|
||||||
|
"all_listeners": "Esta plantilla escucha todos los eventos de cambio de estado.",
|
||||||
"description": "Las plantillas se muestran utilizando el motor de plantillas Jinja2 con algunas extensiones específicas de Home Assistant.",
|
"description": "Las plantillas se muestran utilizando el motor de plantillas Jinja2 con algunas extensiones específicas de Home Assistant.",
|
||||||
|
"domain": "Dominio",
|
||||||
"editor": "Editor de plantillas",
|
"editor": "Editor de plantillas",
|
||||||
|
"entity": "Entidad",
|
||||||
"jinja_documentation": "Documentación de plantilla Jinja2",
|
"jinja_documentation": "Documentación de plantilla Jinja2",
|
||||||
|
"listeners": "Esta plantilla escucha los siguientes eventos de cambio de estado:",
|
||||||
|
"no_listeners": "Esta plantilla no escucha ningún evento de cambio de estado y no se actualizará automáticamente.",
|
||||||
"reset": "Reiniciar a la plantilla de demostración",
|
"reset": "Reiniciar a la plantilla de demostración",
|
||||||
"template_extensions": "Extensiones de plantilla de Home Assistant",
|
"template_extensions": "Extensiones de plantilla de Home Assistant",
|
||||||
"title": "Plantillas",
|
"title": "Plantillas",
|
||||||
@ -2937,6 +2969,11 @@
|
|||||||
"submit": "Enviar"
|
"submit": "Enviar"
|
||||||
},
|
},
|
||||||
"current_user": "Has iniciado sesión como {fullName}.",
|
"current_user": "Has iniciado sesión como {fullName}.",
|
||||||
|
"customize_sidebar": {
|
||||||
|
"button": "Editar",
|
||||||
|
"description": "También puedes mantener pulsada la cabecera de la barra lateral para activar el modo de edición.",
|
||||||
|
"header": "Cambiar el orden y ocultar elementos de la barra lateral"
|
||||||
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"description": "Selecciona un panel de control predeterminado para este dispositivo.",
|
"description": "Selecciona un panel de control predeterminado para este dispositivo.",
|
||||||
"dropdown_label": "Panel de control",
|
"dropdown_label": "Panel de control",
|
||||||
@ -2959,6 +2996,7 @@
|
|||||||
"confirm_delete": "¿Estás seguro de que quieres eliminar el token de acceso para {name}?",
|
"confirm_delete": "¿Estás seguro de que quieres eliminar el token de acceso para {name}?",
|
||||||
"create": "Crear Token",
|
"create": "Crear Token",
|
||||||
"create_failed": "No se ha podido crear el token de acceso.",
|
"create_failed": "No se ha podido crear el token de acceso.",
|
||||||
|
"created": "Creado en {date}",
|
||||||
"created_at": "Creado el {date}",
|
"created_at": "Creado el {date}",
|
||||||
"delete_failed": "Error al eliminar el token de acceso.",
|
"delete_failed": "Error al eliminar el token de acceso.",
|
||||||
"description": "Crea tokens de acceso de larga duración para permitir que tus scripts interactúen con tu instancia de Home Assistant. Cada token será válido por 10 años desde la creación. Los siguientes tokens de acceso de larga duración están actualmente activos.",
|
"description": "Crea tokens de acceso de larga duración para permitir que tus scripts interactúen con tu instancia de Home Assistant. Cada token será válido por 10 años desde la creación. Los siguientes tokens de acceso de larga duración están actualmente activos.",
|
||||||
@ -2966,9 +3004,10 @@
|
|||||||
"header": "Tokens de acceso de larga duración",
|
"header": "Tokens de acceso de larga duración",
|
||||||
"last_used": "Último uso el {date} desde {location}",
|
"last_used": "Último uso el {date} desde {location}",
|
||||||
"learn_auth_requests": "Aprende cómo realizar solicitudes autenticadas.",
|
"learn_auth_requests": "Aprende cómo realizar solicitudes autenticadas.",
|
||||||
|
"name": "Nombre",
|
||||||
"not_used": "Nunca ha sido usado",
|
"not_used": "Nunca ha sido usado",
|
||||||
"prompt_copy_token": "Copia tu token de acceso. No se mostrará de nuevo.",
|
"prompt_copy_token": "Copia tu token de acceso. No se mostrará de nuevo.",
|
||||||
"prompt_name": "¿Nombre?"
|
"prompt_name": "Dale un nombre al token"
|
||||||
},
|
},
|
||||||
"mfa_setup": {
|
"mfa_setup": {
|
||||||
"close": "Cerrar",
|
"close": "Cerrar",
|
||||||
@ -3032,6 +3071,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
|
"done": "Hecho",
|
||||||
"external_app_configuration": "Configuración de la aplicación",
|
"external_app_configuration": "Configuración de la aplicación",
|
||||||
"sidebar_toggle": "Alternar barra lateral"
|
"sidebar_toggle": "Alternar barra lateral"
|
||||||
}
|
}
|
||||||
|
@ -507,6 +507,7 @@
|
|||||||
"cancel": "Annuler",
|
"cancel": "Annuler",
|
||||||
"close": "Fermer",
|
"close": "Fermer",
|
||||||
"continue": "Continuer",
|
"continue": "Continuer",
|
||||||
|
"copied": "Copié",
|
||||||
"delete": "Supprimer",
|
"delete": "Supprimer",
|
||||||
"error_required": "Obligatoire",
|
"error_required": "Obligatoire",
|
||||||
"loading": "Chargement",
|
"loading": "Chargement",
|
||||||
@ -567,10 +568,35 @@
|
|||||||
"loading_history": "Chargement de l'historique des valeurs ...",
|
"loading_history": "Chargement de l'historique des valeurs ...",
|
||||||
"no_history_found": "Aucun historique des valeurs trouvé."
|
"no_history_found": "Aucun historique des valeurs trouvé."
|
||||||
},
|
},
|
||||||
|
"logbook": {
|
||||||
|
"entries_not_found": "Aucune entrée trouvée dans le journal."
|
||||||
|
},
|
||||||
"media-browser": {
|
"media-browser": {
|
||||||
"audio_not_supported": "Votre navigateur ne prend pas en charge l'élément audio.",
|
"audio_not_supported": "Votre navigateur ne prend pas en charge l'élément audio.",
|
||||||
"choose_player": "Choisissez le lecteur",
|
"choose_player": "Choisissez le lecteur",
|
||||||
"choose-source": "Choisissez la source",
|
"choose-source": "Choisissez la source",
|
||||||
|
"class": {
|
||||||
|
"album": "Album",
|
||||||
|
"app": "App",
|
||||||
|
"artist": "Artiste",
|
||||||
|
"channel": "Canal",
|
||||||
|
"composer": "Compositeur",
|
||||||
|
"contributing_artist": "Artiste collaborateur",
|
||||||
|
"directory": "Bibliothèque",
|
||||||
|
"episode": "Épisode",
|
||||||
|
"game": "Jeu",
|
||||||
|
"genre": "Genre",
|
||||||
|
"image": "Image",
|
||||||
|
"movie": "Film",
|
||||||
|
"music": "Musique",
|
||||||
|
"playlist": "Liste de lecture",
|
||||||
|
"podcast": "Podcast",
|
||||||
|
"season": "Saison",
|
||||||
|
"track": "Piste",
|
||||||
|
"tv_show": "Émission de télévision",
|
||||||
|
"url": "Url",
|
||||||
|
"video": "Vidéo"
|
||||||
|
},
|
||||||
"content-type": {
|
"content-type": {
|
||||||
"album": "Album",
|
"album": "Album",
|
||||||
"artist": "Artiste",
|
"artist": "Artiste",
|
||||||
@ -703,6 +729,7 @@
|
|||||||
},
|
},
|
||||||
"more_info_control": {
|
"more_info_control": {
|
||||||
"controls": "Contrôles",
|
"controls": "Contrôles",
|
||||||
|
"details": "Détails",
|
||||||
"dismiss": "Fermer la fenêtre de dialogue",
|
"dismiss": "Fermer la fenêtre de dialogue",
|
||||||
"edit": "Modifier l'entité",
|
"edit": "Modifier l'entité",
|
||||||
"history": "Historique",
|
"history": "Historique",
|
||||||
@ -934,9 +961,12 @@
|
|||||||
"service_data": "Données du service"
|
"service_data": "Données du service"
|
||||||
},
|
},
|
||||||
"wait_for_trigger": {
|
"wait_for_trigger": {
|
||||||
"label": "Attendre le déclencheur"
|
"continue_timeout": "Continuer à l'expiration du délai",
|
||||||
|
"label": "Attendre le déclencheur",
|
||||||
|
"timeout": "Délai d'expiration (optionnel)"
|
||||||
},
|
},
|
||||||
"wait_template": {
|
"wait_template": {
|
||||||
|
"continue_timeout": "Continuer à l'expiration du délai",
|
||||||
"label": "Attendre",
|
"label": "Attendre",
|
||||||
"timeout": "Délai d'expiration (optionnel)",
|
"timeout": "Délai d'expiration (optionnel)",
|
||||||
"wait_template": "Template d'attente"
|
"wait_template": "Template d'attente"
|
||||||
@ -1000,7 +1030,9 @@
|
|||||||
"time": {
|
"time": {
|
||||||
"after": "Après",
|
"after": "Après",
|
||||||
"before": "Avant",
|
"before": "Avant",
|
||||||
"label": "Heure"
|
"label": "Heure",
|
||||||
|
"type_input": "Valeur d'une aide de date/heure",
|
||||||
|
"type_value": "Temps fixe"
|
||||||
},
|
},
|
||||||
"zone": {
|
"zone": {
|
||||||
"entity": "Entité avec localisation",
|
"entity": "Entité avec localisation",
|
||||||
@ -1567,6 +1599,7 @@
|
|||||||
"reload_restart_confirm": "Redémarrer Home Assistant pour finaliser le rechargement de cette intégration",
|
"reload_restart_confirm": "Redémarrer Home Assistant pour finaliser le rechargement de cette intégration",
|
||||||
"rename": "Renommer",
|
"rename": "Renommer",
|
||||||
"restart_confirm": "Redémarrer Home Assistant pour terminer la suppression de cette intégration",
|
"restart_confirm": "Redémarrer Home Assistant pour terminer la suppression de cette intégration",
|
||||||
|
"services": "{count} {count, plural,\n one {service}\n other {services}\n}",
|
||||||
"settings_button": "Modifier les paramètres pour {integration}",
|
"settings_button": "Modifier les paramètres pour {integration}",
|
||||||
"system_options": "Options système",
|
"system_options": "Options système",
|
||||||
"system_options_button": "Options système pour {integration}",
|
"system_options_button": "Options système pour {integration}",
|
||||||
@ -2342,9 +2375,14 @@
|
|||||||
"title": "États"
|
"title": "États"
|
||||||
},
|
},
|
||||||
"templates": {
|
"templates": {
|
||||||
|
"all_listeners": "Ce modèle écoute tous les événements de changement d'état.",
|
||||||
"description": "Les modèles sont rendus à l'aide du moteur de modèles Jinja2 avec certaines extensions spécifiques de Home Assistant.",
|
"description": "Les modèles sont rendus à l'aide du moteur de modèles Jinja2 avec certaines extensions spécifiques de Home Assistant.",
|
||||||
|
"domain": "Domaine",
|
||||||
"editor": "Éditeur de modèles",
|
"editor": "Éditeur de modèles",
|
||||||
|
"entity": "Entité",
|
||||||
"jinja_documentation": "Documentation de modèle Jinja2",
|
"jinja_documentation": "Documentation de modèle Jinja2",
|
||||||
|
"listeners": "Ce modèle écoute les événements de changement d'état suivants:",
|
||||||
|
"no_listeners": "Ce modèle n'écoute aucun événement de changement d'état et ne sera pas mis à jour automatiquement.",
|
||||||
"reset": "Réinitialiser au modèle de démonstration",
|
"reset": "Réinitialiser au modèle de démonstration",
|
||||||
"template_extensions": "Extensions de modèles de Home Assistant",
|
"template_extensions": "Extensions de modèles de Home Assistant",
|
||||||
"title": "Modèle",
|
"title": "Modèle",
|
||||||
@ -2931,6 +2969,11 @@
|
|||||||
"submit": "Envoyer"
|
"submit": "Envoyer"
|
||||||
},
|
},
|
||||||
"current_user": "Vous êtes actuellement connecté en tant que {fullName}.",
|
"current_user": "Vous êtes actuellement connecté en tant que {fullName}.",
|
||||||
|
"customize_sidebar": {
|
||||||
|
"button": "Modifier",
|
||||||
|
"description": "Vous pouvez également appuyer et maintenir l'en-tête de la barre latérale pour activer le mode d'édition.",
|
||||||
|
"header": "Modifier l'ordre et masquer les éléments de la barre latérale"
|
||||||
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"description": "Choisissez un tableau de bord par défaut pour cet appareil.",
|
"description": "Choisissez un tableau de bord par défaut pour cet appareil.",
|
||||||
"dropdown_label": "Tableau de bord",
|
"dropdown_label": "Tableau de bord",
|
||||||
@ -2953,6 +2996,7 @@
|
|||||||
"confirm_delete": "Êtes-vous sûr de vouloir supprimer le jeton d'accès de {name} ?",
|
"confirm_delete": "Êtes-vous sûr de vouloir supprimer le jeton d'accès de {name} ?",
|
||||||
"create": "Créer un jeton",
|
"create": "Créer un jeton",
|
||||||
"create_failed": "Impossible de créer le jeton d'accès.",
|
"create_failed": "Impossible de créer le jeton d'accès.",
|
||||||
|
"created": "Créé le {date}",
|
||||||
"created_at": "Créé le {date}",
|
"created_at": "Créé le {date}",
|
||||||
"delete_failed": "Impossible de supprimer le jeton d'accès.",
|
"delete_failed": "Impossible de supprimer le jeton d'accès.",
|
||||||
"description": "Créez des jetons d'accès de longue durée pour permettre à vos scripts d'interagir avec votre instance de Home Assistant. Chaque jeton sera valable 10 ans à compter de sa création. Les jetons d'accès longue durée suivants sont actuellement actifs.",
|
"description": "Créez des jetons d'accès de longue durée pour permettre à vos scripts d'interagir avec votre instance de Home Assistant. Chaque jeton sera valable 10 ans à compter de sa création. Les jetons d'accès longue durée suivants sont actuellement actifs.",
|
||||||
@ -2960,6 +3004,7 @@
|
|||||||
"header": "Jetons d'accès de longue durée",
|
"header": "Jetons d'accès de longue durée",
|
||||||
"last_used": "Dernière utilisation le {date} à partir de {location}",
|
"last_used": "Dernière utilisation le {date} à partir de {location}",
|
||||||
"learn_auth_requests": "Apprenez comment faire des demandes authentifiées.",
|
"learn_auth_requests": "Apprenez comment faire des demandes authentifiées.",
|
||||||
|
"name": "Nom",
|
||||||
"not_used": "N'a jamais été utilisé",
|
"not_used": "N'a jamais été utilisé",
|
||||||
"prompt_copy_token": "Copiez votre jeton d'accès. Il ne sera plus affiché à nouveau.",
|
"prompt_copy_token": "Copiez votre jeton d'accès. Il ne sera plus affiché à nouveau.",
|
||||||
"prompt_name": "Nom ?"
|
"prompt_name": "Nom ?"
|
||||||
@ -3026,6 +3071,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
|
"done": "Terminé",
|
||||||
"external_app_configuration": "Configuration de l'application",
|
"external_app_configuration": "Configuration de l'application",
|
||||||
"sidebar_toggle": "Activer la barre latérale"
|
"sidebar_toggle": "Activer la barre latérale"
|
||||||
}
|
}
|
||||||
|
@ -507,6 +507,7 @@
|
|||||||
"cancel": "Avbryt",
|
"cancel": "Avbryt",
|
||||||
"close": "Lukk",
|
"close": "Lukk",
|
||||||
"continue": "Fortsette",
|
"continue": "Fortsette",
|
||||||
|
"copied": "Kopiert",
|
||||||
"delete": "Slett",
|
"delete": "Slett",
|
||||||
"error_required": "Nødvendig",
|
"error_required": "Nødvendig",
|
||||||
"loading": "Laster",
|
"loading": "Laster",
|
||||||
@ -574,6 +575,28 @@
|
|||||||
"audio_not_supported": "Nettleseren din støtter ikke lydelementet.",
|
"audio_not_supported": "Nettleseren din støtter ikke lydelementet.",
|
||||||
"choose_player": "Velg spiller",
|
"choose_player": "Velg spiller",
|
||||||
"choose-source": "Velg kilde",
|
"choose-source": "Velg kilde",
|
||||||
|
"class": {
|
||||||
|
"album": "Album",
|
||||||
|
"app": "App",
|
||||||
|
"artist": "Artist",
|
||||||
|
"channel": "Kanal",
|
||||||
|
"composer": "Komponist",
|
||||||
|
"contributing_artist": "Medvirkende artist",
|
||||||
|
"directory": "Bibliotek",
|
||||||
|
"episode": "Episode",
|
||||||
|
"game": "Spill",
|
||||||
|
"genre": "Sjanger",
|
||||||
|
"image": "Bilde",
|
||||||
|
"movie": "Film",
|
||||||
|
"music": "Musikk",
|
||||||
|
"playlist": "Spilleliste",
|
||||||
|
"podcast": "Podcast",
|
||||||
|
"season": "Sesong",
|
||||||
|
"track": "Spor",
|
||||||
|
"tv_show": "TV Serie",
|
||||||
|
"url": "Url",
|
||||||
|
"video": "Video"
|
||||||
|
},
|
||||||
"content-type": {
|
"content-type": {
|
||||||
"album": "Album",
|
"album": "Album",
|
||||||
"artist": "Artist",
|
"artist": "Artist",
|
||||||
@ -2352,9 +2375,14 @@
|
|||||||
"title": "Tilstander"
|
"title": "Tilstander"
|
||||||
},
|
},
|
||||||
"templates": {
|
"templates": {
|
||||||
|
"all_listeners": "Denne malen lytter etter alle tilstandsfornede hendelser.",
|
||||||
"description": "Maler blir rendret ved hjelp av Jinja2-malmotoren med noen spesifikke utvidelser for Home Assistant.",
|
"description": "Maler blir rendret ved hjelp av Jinja2-malmotoren med noen spesifikke utvidelser for Home Assistant.",
|
||||||
|
"domain": "Domene",
|
||||||
"editor": "Maleditor",
|
"editor": "Maleditor",
|
||||||
|
"entity": "Entitet",
|
||||||
"jinja_documentation": "Jinja2 mal dokumentasjon",
|
"jinja_documentation": "Jinja2 mal dokumentasjon",
|
||||||
|
"listeners": "Denne malen lytter etter følgende tilstandsfor endrede hendelser:",
|
||||||
|
"no_listeners": "Denne malen lytter ikke etter eventuelle tilstandsfornedne hendelser og oppdateres ikke automatisk.",
|
||||||
"reset": "Tilbakestill til demomal",
|
"reset": "Tilbakestill til demomal",
|
||||||
"template_extensions": "Mal utvidelser for Home Assistant",
|
"template_extensions": "Mal utvidelser for Home Assistant",
|
||||||
"title": "Mal",
|
"title": "Mal",
|
||||||
@ -2941,6 +2969,11 @@
|
|||||||
"submit": "Send inn"
|
"submit": "Send inn"
|
||||||
},
|
},
|
||||||
"current_user": "Du er logget inn som {fullName}.",
|
"current_user": "Du er logget inn som {fullName}.",
|
||||||
|
"customize_sidebar": {
|
||||||
|
"button": "Redigere",
|
||||||
|
"description": "Du kan også trykke på og holde nede overskriften på sidefeltet for å aktivere redigeringsmodus.",
|
||||||
|
"header": "Endre rekkefølgen og skjul elementer fra sidepanelet"
|
||||||
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"description": "Velg et standard instrumentbord for denne enheten.",
|
"description": "Velg et standard instrumentbord for denne enheten.",
|
||||||
"dropdown_label": "",
|
"dropdown_label": "",
|
||||||
@ -2963,6 +2996,7 @@
|
|||||||
"confirm_delete": "Er du sikker på at du vil slette tilgangstoken for {name}?",
|
"confirm_delete": "Er du sikker på at du vil slette tilgangstoken for {name}?",
|
||||||
"create": "Opprett Token",
|
"create": "Opprett Token",
|
||||||
"create_failed": "Kunne ikke opprette tilgangstoken.",
|
"create_failed": "Kunne ikke opprette tilgangstoken.",
|
||||||
|
"created": "Opprettet {date}",
|
||||||
"created_at": "Opprettet den {date}",
|
"created_at": "Opprettet den {date}",
|
||||||
"delete_failed": "Kan ikke slette tilgangstokenet.",
|
"delete_failed": "Kan ikke slette tilgangstokenet.",
|
||||||
"description": "Opprett langvarige tilgangstokener slik at skriptene dine kan samhandle med din Home Assistant instans. Hver token vil være gyldig i 10 år fra opprettelsen. Følgende langvarige tilgangstokener er for tiden aktive.",
|
"description": "Opprett langvarige tilgangstokener slik at skriptene dine kan samhandle med din Home Assistant instans. Hver token vil være gyldig i 10 år fra opprettelsen. Følgende langvarige tilgangstokener er for tiden aktive.",
|
||||||
@ -2970,9 +3004,10 @@
|
|||||||
"header": "Langvarige tilgangstokener",
|
"header": "Langvarige tilgangstokener",
|
||||||
"last_used": "Sist brukt den {date} fra {location}",
|
"last_used": "Sist brukt den {date} fra {location}",
|
||||||
"learn_auth_requests": "Lær hvordan du lager godkjente forespørsler.",
|
"learn_auth_requests": "Lær hvordan du lager godkjente forespørsler.",
|
||||||
|
"name": "Navn",
|
||||||
"not_used": "Har aldri blitt brukt",
|
"not_used": "Har aldri blitt brukt",
|
||||||
"prompt_copy_token": "Kopier tilgangstoken. Det blir ikke vist igjen.",
|
"prompt_copy_token": "Kopier tilgangstoken. Det blir ikke vist igjen.",
|
||||||
"prompt_name": "Navn?"
|
"prompt_name": "Gi tokenet et navn"
|
||||||
},
|
},
|
||||||
"mfa_setup": {
|
"mfa_setup": {
|
||||||
"close": "Lukk",
|
"close": "Lukk",
|
||||||
@ -3036,6 +3071,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
|
"done": "Ferdig",
|
||||||
"external_app_configuration": "Appkonfigurasjon",
|
"external_app_configuration": "Appkonfigurasjon",
|
||||||
"sidebar_toggle": "Vis/Skjul sidepanel"
|
"sidebar_toggle": "Vis/Skjul sidepanel"
|
||||||
}
|
}
|
||||||
|
@ -507,6 +507,7 @@
|
|||||||
"cancel": "Annuleren",
|
"cancel": "Annuleren",
|
||||||
"close": "Sluiten",
|
"close": "Sluiten",
|
||||||
"continue": "Ga verder",
|
"continue": "Ga verder",
|
||||||
|
"copied": "Gekopieerd",
|
||||||
"delete": "Verwijderen",
|
"delete": "Verwijderen",
|
||||||
"error_required": "Verplicht",
|
"error_required": "Verplicht",
|
||||||
"loading": "Bezig met laden",
|
"loading": "Bezig met laden",
|
||||||
@ -574,6 +575,28 @@
|
|||||||
"audio_not_supported": "Uw browser ondersteunt het audio-element niet.",
|
"audio_not_supported": "Uw browser ondersteunt het audio-element niet.",
|
||||||
"choose_player": "Kies speler",
|
"choose_player": "Kies speler",
|
||||||
"choose-source": "Kies bron",
|
"choose-source": "Kies bron",
|
||||||
|
"class": {
|
||||||
|
"album": "Album",
|
||||||
|
"app": "App",
|
||||||
|
"artist": "Artiest",
|
||||||
|
"channel": "Kanaal",
|
||||||
|
"composer": "Componist",
|
||||||
|
"contributing_artist": "Bijdragende artiest",
|
||||||
|
"directory": "Bibliotheek",
|
||||||
|
"episode": "Aflevering",
|
||||||
|
"game": "Spel",
|
||||||
|
"genre": "Genre",
|
||||||
|
"image": "Afbeelding",
|
||||||
|
"movie": "Film",
|
||||||
|
"music": "Muziek",
|
||||||
|
"playlist": "Afspeellijst",
|
||||||
|
"podcast": "Podcast",
|
||||||
|
"season": "Seizoen",
|
||||||
|
"track": "Nummer",
|
||||||
|
"tv_show": "TV-programma",
|
||||||
|
"url": "Url",
|
||||||
|
"video": "Video"
|
||||||
|
},
|
||||||
"content-type": {
|
"content-type": {
|
||||||
"album": "Album",
|
"album": "Album",
|
||||||
"artist": "Artiest",
|
"artist": "Artiest",
|
||||||
@ -2352,9 +2375,14 @@
|
|||||||
"title": "Toestanden"
|
"title": "Toestanden"
|
||||||
},
|
},
|
||||||
"templates": {
|
"templates": {
|
||||||
|
"all_listeners": "Deze template luistert naar alle gebeurtenissen met gewijzigde status.",
|
||||||
"description": "Sjablonen worden weergegeven met de Jinja2-sjabloonediter samen met enkele extensies van Home Assistant.",
|
"description": "Sjablonen worden weergegeven met de Jinja2-sjabloonediter samen met enkele extensies van Home Assistant.",
|
||||||
|
"domain": "Domein",
|
||||||
"editor": "Sjabloonediter",
|
"editor": "Sjabloonediter",
|
||||||
|
"entity": "Entiteit",
|
||||||
"jinja_documentation": "Jinja2-sjabloondocumentatie",
|
"jinja_documentation": "Jinja2-sjabloondocumentatie",
|
||||||
|
"listeners": "Deze template luistert naar de volgende gebeurtenissen met gewijzigde status:",
|
||||||
|
"no_listeners": "Deze template luistert niet naar gebeurtenissen met statuswijziging en wordt niet automatisch bijgewerkt.",
|
||||||
"reset": "Resetten naar demosjabloon",
|
"reset": "Resetten naar demosjabloon",
|
||||||
"template_extensions": "Home Assistant sjabloon extensiesHome Assistant",
|
"template_extensions": "Home Assistant sjabloon extensiesHome Assistant",
|
||||||
"title": "Sjablonen",
|
"title": "Sjablonen",
|
||||||
@ -2941,6 +2969,11 @@
|
|||||||
"submit": "Verzenden"
|
"submit": "Verzenden"
|
||||||
},
|
},
|
||||||
"current_user": "Je bent momenteel ingelogd als {fullName}.",
|
"current_user": "Je bent momenteel ingelogd als {fullName}.",
|
||||||
|
"customize_sidebar": {
|
||||||
|
"button": "Bewerken",
|
||||||
|
"description": "U kunt ook de koptekst van de zijbalk ingedrukt houden om de bewerkingsmodus te activeren.",
|
||||||
|
"header": "Wijzig de volgorde en verberg items van de zijbalk"
|
||||||
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"description": "Kies een standaard dashboard voor dit apparaat.",
|
"description": "Kies een standaard dashboard voor dit apparaat.",
|
||||||
"dropdown_label": "Dashboard",
|
"dropdown_label": "Dashboard",
|
||||||
@ -2963,6 +2996,7 @@
|
|||||||
"confirm_delete": "Weet je zeker dat je de toegangstoken voor {name} wilt verwijderen?",
|
"confirm_delete": "Weet je zeker dat je de toegangstoken voor {name} wilt verwijderen?",
|
||||||
"create": "Token aanmaken",
|
"create": "Token aanmaken",
|
||||||
"create_failed": "De toegangstoken kon niet worden aangemaakt.",
|
"create_failed": "De toegangstoken kon niet worden aangemaakt.",
|
||||||
|
"created": "Gemaakt op {date}",
|
||||||
"created_at": "Gemaakt op {date}",
|
"created_at": "Gemaakt op {date}",
|
||||||
"delete_failed": "Verwijderen van de toegangstoken is mislukt.",
|
"delete_failed": "Verwijderen van de toegangstoken is mislukt.",
|
||||||
"description": "Maak toegangstokens met een lange levensduur zodat je scripts kunnen communiceren met je Home Assistant-instantie. Elk token is tien jaar geldig vanaf de aanmaakdatum. De volgende langlevende toegangstokens zijn momenteel actief.",
|
"description": "Maak toegangstokens met een lange levensduur zodat je scripts kunnen communiceren met je Home Assistant-instantie. Elk token is tien jaar geldig vanaf de aanmaakdatum. De volgende langlevende toegangstokens zijn momenteel actief.",
|
||||||
@ -2970,9 +3004,10 @@
|
|||||||
"header": "Toegangtokens met lange levensduur",
|
"header": "Toegangtokens met lange levensduur",
|
||||||
"last_used": "Laatst gebruikt op {date} vanaf {location}",
|
"last_used": "Laatst gebruikt op {date} vanaf {location}",
|
||||||
"learn_auth_requests": "Kom te weten hoe je geverifieerde verzoeken kunt maken",
|
"learn_auth_requests": "Kom te weten hoe je geverifieerde verzoeken kunt maken",
|
||||||
|
"name": "Naam",
|
||||||
"not_used": "Is nog nooit gebruikt",
|
"not_used": "Is nog nooit gebruikt",
|
||||||
"prompt_copy_token": "Kopieer je toegangstoken. Het wordt niet meer getoond.",
|
"prompt_copy_token": "Kopieer je toegangstoken. Het wordt niet meer getoond.",
|
||||||
"prompt_name": "Naam?"
|
"prompt_name": "Geef het token een naam"
|
||||||
},
|
},
|
||||||
"mfa_setup": {
|
"mfa_setup": {
|
||||||
"close": "Sluiten",
|
"close": "Sluiten",
|
||||||
@ -3036,6 +3071,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
|
"done": "Gedaan",
|
||||||
"external_app_configuration": "App configuratie",
|
"external_app_configuration": "App configuratie",
|
||||||
"sidebar_toggle": "Zijbalk in- en uitschakelen"
|
"sidebar_toggle": "Zijbalk in- en uitschakelen"
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
"logbook": "Dziennik",
|
"logbook": "Dziennik",
|
||||||
"mailbox": "Poczta",
|
"mailbox": "Poczta",
|
||||||
"map": "Mapa",
|
"map": "Mapa",
|
||||||
|
"media_browser": "Odtwarzacz mediów",
|
||||||
"profile": "Profil",
|
"profile": "Profil",
|
||||||
"shopping_list": "Lista zakupów",
|
"shopping_list": "Lista zakupów",
|
||||||
"states": "Przegląd"
|
"states": "Przegląd"
|
||||||
@ -506,6 +507,7 @@
|
|||||||
"cancel": "Anuluj",
|
"cancel": "Anuluj",
|
||||||
"close": "Zamknij",
|
"close": "Zamknij",
|
||||||
"continue": "Kontynuuj",
|
"continue": "Kontynuuj",
|
||||||
|
"copied": "Skopiowano",
|
||||||
"delete": "Usuń",
|
"delete": "Usuń",
|
||||||
"error_required": "To pole jest wymagane",
|
"error_required": "To pole jest wymagane",
|
||||||
"loading": "Ładowanie",
|
"loading": "Ładowanie",
|
||||||
@ -553,6 +555,7 @@
|
|||||||
},
|
},
|
||||||
"entity": {
|
"entity": {
|
||||||
"entity-attribute-picker": {
|
"entity-attribute-picker": {
|
||||||
|
"attribute": "Atrybut",
|
||||||
"show_attributes": "Pokaż atrybuty"
|
"show_attributes": "Pokaż atrybuty"
|
||||||
},
|
},
|
||||||
"entity-picker": {
|
"entity-picker": {
|
||||||
@ -565,10 +568,35 @@
|
|||||||
"loading_history": "Ładowanie historii...",
|
"loading_history": "Ładowanie historii...",
|
||||||
"no_history_found": "Nie znaleziono historii."
|
"no_history_found": "Nie znaleziono historii."
|
||||||
},
|
},
|
||||||
|
"logbook": {
|
||||||
|
"entries_not_found": "Nie znaleziono wpisów w dzienniku."
|
||||||
|
},
|
||||||
"media-browser": {
|
"media-browser": {
|
||||||
"audio_not_supported": "Twoja przeglądarka nie obsługuje elementu audio.",
|
"audio_not_supported": "Twoja przeglądarka nie obsługuje elementu audio.",
|
||||||
"choose_player": "Wybierz odtwarzacz",
|
"choose_player": "Wybierz odtwarzacz",
|
||||||
"choose-source": "Wybierz źródło",
|
"choose-source": "Wybierz źródło",
|
||||||
|
"class": {
|
||||||
|
"album": "Album",
|
||||||
|
"app": "Aplikacja",
|
||||||
|
"artist": "Artysta",
|
||||||
|
"channel": "Kanał",
|
||||||
|
"composer": "Kompozytor",
|
||||||
|
"contributing_artist": "Artysta współpracujący",
|
||||||
|
"directory": "Biblioteka",
|
||||||
|
"episode": "Odcinek",
|
||||||
|
"game": "Gra",
|
||||||
|
"genre": "Gatunek",
|
||||||
|
"image": "Obraz",
|
||||||
|
"movie": "Film",
|
||||||
|
"music": "Muzyka",
|
||||||
|
"playlist": "Playlista",
|
||||||
|
"podcast": "Podcast",
|
||||||
|
"season": "Sezon",
|
||||||
|
"track": "Ścieżka",
|
||||||
|
"tv_show": "Program telewizyjny",
|
||||||
|
"url": "URL",
|
||||||
|
"video": "Wideo"
|
||||||
|
},
|
||||||
"content-type": {
|
"content-type": {
|
||||||
"album": "Album",
|
"album": "Album",
|
||||||
"artist": "Artysta",
|
"artist": "Artysta",
|
||||||
@ -576,6 +604,7 @@
|
|||||||
"playlist": "Lista odtwarzania",
|
"playlist": "Lista odtwarzania",
|
||||||
"server": "Serwer"
|
"server": "Serwer"
|
||||||
},
|
},
|
||||||
|
"media_browsing_error": "Błąd przeglądania multimediów",
|
||||||
"media_not_supported": "Przeglądarka odtwarzacza mediów nie obsługuje tego typu mediów",
|
"media_not_supported": "Przeglądarka odtwarzacza mediów nie obsługuje tego typu mediów",
|
||||||
"media_player": "Odtwarzacz mediów",
|
"media_player": "Odtwarzacz mediów",
|
||||||
"media-player-browser": "Przeglądarka odtwarzacza mediów",
|
"media-player-browser": "Przeglądarka odtwarzacza mediów",
|
||||||
@ -931,7 +960,13 @@
|
|||||||
"label": "Wywołanie usługi",
|
"label": "Wywołanie usługi",
|
||||||
"service_data": "Dane usługi"
|
"service_data": "Dane usługi"
|
||||||
},
|
},
|
||||||
|
"wait_for_trigger": {
|
||||||
|
"continue_timeout": "Kontynuuj po przekroczeniu limitu czasu",
|
||||||
|
"label": "Czekaj na wyzwalacz",
|
||||||
|
"timeout": "Limit czasu (opcjonalnie)"
|
||||||
|
},
|
||||||
"wait_template": {
|
"wait_template": {
|
||||||
|
"continue_timeout": "Kontynuuj po przekroczeniu limitu czasu",
|
||||||
"label": "Oczekiwanie",
|
"label": "Oczekiwanie",
|
||||||
"timeout": "Limit czasu (opcjonalnie)",
|
"timeout": "Limit czasu (opcjonalnie)",
|
||||||
"wait_template": "Szablon czekania"
|
"wait_template": "Szablon czekania"
|
||||||
@ -995,7 +1030,9 @@
|
|||||||
"time": {
|
"time": {
|
||||||
"after": "Po",
|
"after": "Po",
|
||||||
"before": "Przed",
|
"before": "Przed",
|
||||||
"label": "Czas"
|
"label": "Czas",
|
||||||
|
"type_input": "Wartość pomocnika typu data/czas",
|
||||||
|
"type_value": "Ustalony czas"
|
||||||
},
|
},
|
||||||
"zone": {
|
"zone": {
|
||||||
"entity": "Encja z lokalizacją",
|
"entity": "Encja z lokalizacją",
|
||||||
@ -1083,6 +1120,7 @@
|
|||||||
"value_template": "Szablon wartości (opcjonalnie)"
|
"value_template": "Szablon wartości (opcjonalnie)"
|
||||||
},
|
},
|
||||||
"state": {
|
"state": {
|
||||||
|
"attribute": "Atrybut (opcjonalnie)",
|
||||||
"for": "Przez",
|
"for": "Przez",
|
||||||
"from": "Z",
|
"from": "Z",
|
||||||
"label": "Stan",
|
"label": "Stan",
|
||||||
@ -1110,7 +1148,9 @@
|
|||||||
},
|
},
|
||||||
"time": {
|
"time": {
|
||||||
"at": "O",
|
"at": "O",
|
||||||
"label": "Czas"
|
"label": "Czas",
|
||||||
|
"type_input": "Wartość pomocnika typu data/czas",
|
||||||
|
"type_value": "Ustalony czas"
|
||||||
},
|
},
|
||||||
"webhook": {
|
"webhook": {
|
||||||
"label": "Webhook",
|
"label": "Webhook",
|
||||||
@ -1134,7 +1174,7 @@
|
|||||||
"delete_automation": "Usuń automatyzację",
|
"delete_automation": "Usuń automatyzację",
|
||||||
"delete_confirm": "Czy na pewno chcesz usunąć tę automatyzację?",
|
"delete_confirm": "Czy na pewno chcesz usunąć tę automatyzację?",
|
||||||
"duplicate": "Duplikuj",
|
"duplicate": "Duplikuj",
|
||||||
"duplicate_automation": "Duplikat automatyzację",
|
"duplicate_automation": "Duplikuj automatyzację",
|
||||||
"edit_automation": "Edytuj automatyzację",
|
"edit_automation": "Edytuj automatyzację",
|
||||||
"header": "Edytor automatyzacji",
|
"header": "Edytor automatyzacji",
|
||||||
"headers": {
|
"headers": {
|
||||||
@ -1502,7 +1542,7 @@
|
|||||||
},
|
},
|
||||||
"types": {
|
"types": {
|
||||||
"input_boolean": "Przełącznik",
|
"input_boolean": "Przełącznik",
|
||||||
"input_datetime": "Data i/lub godzina",
|
"input_datetime": "Data i/lub czas",
|
||||||
"input_number": "Numer",
|
"input_number": "Numer",
|
||||||
"input_select": "Pole wyboru",
|
"input_select": "Pole wyboru",
|
||||||
"input_text": "Tekst"
|
"input_text": "Tekst"
|
||||||
@ -1535,6 +1575,7 @@
|
|||||||
},
|
},
|
||||||
"integrations": {
|
"integrations": {
|
||||||
"add_integration": "Dodaj integrację",
|
"add_integration": "Dodaj integrację",
|
||||||
|
"attention": "Wymaga uwagi",
|
||||||
"caption": "Integracje",
|
"caption": "Integracje",
|
||||||
"config_entry": {
|
"config_entry": {
|
||||||
"area": "obszar: {area}",
|
"area": "obszar: {area}",
|
||||||
@ -1937,7 +1978,7 @@
|
|||||||
"reloading": {
|
"reloading": {
|
||||||
"automation": "Automatyzacje",
|
"automation": "Automatyzacje",
|
||||||
"command_line": "Encje komponentu linia komend",
|
"command_line": "Encje komponentu linia komend",
|
||||||
"core": "Lokalizacja i dostosowywanie",
|
"core": "Lokalizację i dostosowywanie",
|
||||||
"filesize": "Encje komponentu wielkość pliku",
|
"filesize": "Encje komponentu wielkość pliku",
|
||||||
"filter": "Encje komponentu filtr",
|
"filter": "Encje komponentu filtr",
|
||||||
"generic": "Encje komponentu kamera IP generic",
|
"generic": "Encje komponentu kamera IP generic",
|
||||||
@ -2334,9 +2375,14 @@
|
|||||||
"title": "Stany"
|
"title": "Stany"
|
||||||
},
|
},
|
||||||
"templates": {
|
"templates": {
|
||||||
|
"all_listeners": "Ten szablon nasłuchuje wszystkich zdarzeń zmiany stanu.",
|
||||||
"description": "Szablony są renderowane przy użyciu silnika szablonów Jinja2 z kilkoma specyficznymi rozszerzeniami Home Assistanta.",
|
"description": "Szablony są renderowane przy użyciu silnika szablonów Jinja2 z kilkoma specyficznymi rozszerzeniami Home Assistanta.",
|
||||||
|
"domain": "Domena",
|
||||||
"editor": "Edytor szablonów",
|
"editor": "Edytor szablonów",
|
||||||
|
"entity": "Encja",
|
||||||
"jinja_documentation": "Dokumentacja szablonów Jinja2",
|
"jinja_documentation": "Dokumentacja szablonów Jinja2",
|
||||||
|
"listeners": "Ten szablon nasłuchuje następujących zdarzeń zmiany stanu:",
|
||||||
|
"no_listeners": "Ten szablon nie nasłuchuje żadnych zdarzeń zmiany stanu i nie zostanie zaktualizowany automatycznie.",
|
||||||
"reset": "Zresetuj do szablonu demonstracyjnego",
|
"reset": "Zresetuj do szablonu demonstracyjnego",
|
||||||
"template_extensions": "Rozszerzenia szablonów Home Assistanta",
|
"template_extensions": "Rozszerzenia szablonów Home Assistanta",
|
||||||
"title": "Szablon",
|
"title": "Szablon",
|
||||||
@ -2923,6 +2969,11 @@
|
|||||||
"submit": "Zatwierdź"
|
"submit": "Zatwierdź"
|
||||||
},
|
},
|
||||||
"current_user": "Jesteś obecnie zalogowany jako {fullName}.",
|
"current_user": "Jesteś obecnie zalogowany jako {fullName}.",
|
||||||
|
"customize_sidebar": {
|
||||||
|
"button": "Edytuj",
|
||||||
|
"description": "Możesz także nacisnąć i przytrzymać nagłówek paska bocznego, aby aktywować tryb edycji.",
|
||||||
|
"header": "Zmień kolejność i ukryj elementy na pasku bocznym"
|
||||||
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"description": "Wybierz domyślny dashboard dla tego urządzenia.",
|
"description": "Wybierz domyślny dashboard dla tego urządzenia.",
|
||||||
"dropdown_label": "Dashboard",
|
"dropdown_label": "Dashboard",
|
||||||
@ -2945,6 +2996,7 @@
|
|||||||
"confirm_delete": "Czy na pewno chcesz usunąć token dla {name}?",
|
"confirm_delete": "Czy na pewno chcesz usunąć token dla {name}?",
|
||||||
"create": "Utwórz token",
|
"create": "Utwórz token",
|
||||||
"create_failed": "Nie udało się utworzyć tokena.",
|
"create_failed": "Nie udało się utworzyć tokena.",
|
||||||
|
"created": "Utworzony {date}",
|
||||||
"created_at": "Utworzony {date}",
|
"created_at": "Utworzony {date}",
|
||||||
"delete_failed": "Nie udało się usunąć tokena.",
|
"delete_failed": "Nie udało się usunąć tokena.",
|
||||||
"description": "Długoterminowe tokeny dostępu umożliwiają skryptom interakcję z Home Assistantem. Każdy token będzie ważny przez 10 lat od utworzenia. Następujące tokeny są obecnie aktywne.",
|
"description": "Długoterminowe tokeny dostępu umożliwiają skryptom interakcję z Home Assistantem. Każdy token będzie ważny przez 10 lat od utworzenia. Następujące tokeny są obecnie aktywne.",
|
||||||
@ -3019,6 +3071,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
|
"done": "Gotowe",
|
||||||
"external_app_configuration": "Konfiguracja aplikacji",
|
"external_app_configuration": "Konfiguracja aplikacji",
|
||||||
"sidebar_toggle": "Przełącz pasek boczny"
|
"sidebar_toggle": "Przełącz pasek boczny"
|
||||||
}
|
}
|
||||||
|
@ -489,6 +489,7 @@
|
|||||||
"back": "Înapoi",
|
"back": "Înapoi",
|
||||||
"cancel": "Revocare",
|
"cancel": "Revocare",
|
||||||
"close": "Închide",
|
"close": "Închide",
|
||||||
|
"copied": "Copiat",
|
||||||
"delete": "Șterge",
|
"delete": "Șterge",
|
||||||
"error_required": "Necesar",
|
"error_required": "Necesar",
|
||||||
"loading": "Se încarcă",
|
"loading": "Se încarcă",
|
||||||
@ -544,6 +545,32 @@
|
|||||||
"loading_history": "Încărcarea istoricului de stare ...",
|
"loading_history": "Încărcarea istoricului de stare ...",
|
||||||
"no_history_found": "Nici un istoric de stare nu a fost găsit."
|
"no_history_found": "Nici un istoric de stare nu a fost găsit."
|
||||||
},
|
},
|
||||||
|
"logbook": {
|
||||||
|
"entries_not_found": "Nu s-au găsit intrări în jurnal."
|
||||||
|
},
|
||||||
|
"media-browser": {
|
||||||
|
"class": {
|
||||||
|
"album": "Album",
|
||||||
|
"app": "Aplicație",
|
||||||
|
"artist": "Artist",
|
||||||
|
"channel": "Canal",
|
||||||
|
"composer": "Compozitor",
|
||||||
|
"contributing_artist": "Artist contribuitor",
|
||||||
|
"directory": "Bibliotecă",
|
||||||
|
"episode": "Episod",
|
||||||
|
"game": "Joc",
|
||||||
|
"genre": "Gen",
|
||||||
|
"image": "Imagine",
|
||||||
|
"movie": "Film",
|
||||||
|
"music": "Muzică",
|
||||||
|
"playlist": "Playlist",
|
||||||
|
"podcast": "Podcast",
|
||||||
|
"season": "Sezon",
|
||||||
|
"tv_show": "Emisiune TV",
|
||||||
|
"url": "Url",
|
||||||
|
"video": "Video"
|
||||||
|
}
|
||||||
|
},
|
||||||
"related-items": {
|
"related-items": {
|
||||||
"area": "Zonă",
|
"area": "Zonă",
|
||||||
"automation": "Parte din următoarele automatizări",
|
"automation": "Parte din următoarele automatizări",
|
||||||
@ -647,6 +674,7 @@
|
|||||||
"yaml_not_editable": "Setările acestei entități nu se pot edita din interfața grafica. Numai entitățile configurate in interfața grafica sunt configurabile din interfața grafica."
|
"yaml_not_editable": "Setările acestei entități nu se pot edita din interfața grafica. Numai entitățile configurate in interfața grafica sunt configurabile din interfața grafica."
|
||||||
},
|
},
|
||||||
"more_info_control": {
|
"more_info_control": {
|
||||||
|
"details": "Detalii",
|
||||||
"dismiss": "Se respinge dialogul",
|
"dismiss": "Se respinge dialogul",
|
||||||
"edit": "Editează entitatea",
|
"edit": "Editează entitatea",
|
||||||
"person": {
|
"person": {
|
||||||
@ -850,7 +878,13 @@
|
|||||||
"label": "Cheama serviciu",
|
"label": "Cheama serviciu",
|
||||||
"service_data": "Date serviciu"
|
"service_data": "Date serviciu"
|
||||||
},
|
},
|
||||||
|
"wait_for_trigger": {
|
||||||
|
"continue_timeout": "Continua la timeout",
|
||||||
|
"label": "Așteptați declanșatorul",
|
||||||
|
"timeout": "Timeout (optional)"
|
||||||
|
},
|
||||||
"wait_template": {
|
"wait_template": {
|
||||||
|
"continue_timeout": "Continuați la expirare",
|
||||||
"label": "Asteptare",
|
"label": "Asteptare",
|
||||||
"timeout": "Timeout (opțional)",
|
"timeout": "Timeout (opțional)",
|
||||||
"wait_template": "Sablon Asteptare"
|
"wait_template": "Sablon Asteptare"
|
||||||
@ -1260,6 +1294,7 @@
|
|||||||
},
|
},
|
||||||
"integrations": {
|
"integrations": {
|
||||||
"add_integration": "Adăugați integrare",
|
"add_integration": "Adăugați integrare",
|
||||||
|
"attention": "Atenție necesară",
|
||||||
"caption": "Integrări",
|
"caption": "Integrări",
|
||||||
"config_entry": {
|
"config_entry": {
|
||||||
"delete": "Șterge",
|
"delete": "Șterge",
|
||||||
@ -1317,6 +1352,7 @@
|
|||||||
"none": "Nimic nu a fost configurat încă",
|
"none": "Nimic nu a fost configurat încă",
|
||||||
"none_found": "Nu s-au găsit integrări",
|
"none_found": "Nu s-au găsit integrări",
|
||||||
"none_found_detail": "Ajustați criteriile de căutare.",
|
"none_found_detail": "Ajustați criteriile de căutare.",
|
||||||
|
"reconfigure": "Reconfigurați",
|
||||||
"rename_dialog": "Editați numele acestei intrări de configurare",
|
"rename_dialog": "Editați numele acestei intrări de configurare",
|
||||||
"rename_input_label": "Introdu nume",
|
"rename_input_label": "Introdu nume",
|
||||||
"search": "Căutare integrari"
|
"search": "Căutare integrari"
|
||||||
@ -1848,9 +1884,14 @@
|
|||||||
"title": "Status"
|
"title": "Status"
|
||||||
},
|
},
|
||||||
"templates": {
|
"templates": {
|
||||||
|
"all_listeners": "Acest șablon ascultă următoarele evenimente modificate de stare:",
|
||||||
"description": "Șabloanele sunt redate utilizând motorul de șablon Jinja2 cu unele extensii specifice Home Assistant.",
|
"description": "Șabloanele sunt redate utilizând motorul de șablon Jinja2 cu unele extensii specifice Home Assistant.",
|
||||||
|
"domain": "Domeniu",
|
||||||
"editor": "Editor șabloane",
|
"editor": "Editor șabloane",
|
||||||
|
"entity": "Entitate",
|
||||||
"jinja_documentation": "Șablon documentație Jinja2",
|
"jinja_documentation": "Șablon documentație Jinja2",
|
||||||
|
"listeners": "Acest șablon ascultă următoarele evenimente modificate de stare:",
|
||||||
|
"no_listeners": "Acest șablon ascultă următoarele evenimente modificate de stare:",
|
||||||
"template_extensions": "Șabloane de extensie pentru Home Assistant",
|
"template_extensions": "Șabloane de extensie pentru Home Assistant",
|
||||||
"title": "Sabloane",
|
"title": "Sabloane",
|
||||||
"unknown_error_template": "Sa produs o eroare de randare necunoscută."
|
"unknown_error_template": "Sa produs o eroare de randare necunoscută."
|
||||||
@ -2353,6 +2394,11 @@
|
|||||||
"submit": "Trimite"
|
"submit": "Trimite"
|
||||||
},
|
},
|
||||||
"current_user": "În prezent sunteți conectat ca {fullName}.",
|
"current_user": "În prezent sunteți conectat ca {fullName}.",
|
||||||
|
"customize_sidebar": {
|
||||||
|
"button": "Editeaza",
|
||||||
|
"description": "De asemenea, puteți apăsa și ține apăsat antetul barei laterale pentru a activa modul de editare.",
|
||||||
|
"header": "Schimbați ordinea și ascundeți elementele din bara laterală"
|
||||||
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"description": "Alegeți un tablou de bord implicit pentru acest dispozitiv.",
|
"description": "Alegeți un tablou de bord implicit pentru acest dispozitiv.",
|
||||||
"dropdown_label": "Tablou de bord",
|
"dropdown_label": "Tablou de bord",
|
||||||
@ -2375,6 +2421,7 @@
|
|||||||
"confirm_delete": "Sigur doriti sa stergeti tokenul de acces pentru {name}?",
|
"confirm_delete": "Sigur doriti sa stergeti tokenul de acces pentru {name}?",
|
||||||
"create": "Creaza un Token",
|
"create": "Creaza un Token",
|
||||||
"create_failed": "Crearea tokenului de acces eşuată",
|
"create_failed": "Crearea tokenului de acces eşuată",
|
||||||
|
"created": "Creat in {data}",
|
||||||
"created_at": "Creat in {date}",
|
"created_at": "Creat in {date}",
|
||||||
"delete_failed": "Ştergerea tokenului de acces eşuată",
|
"delete_failed": "Ştergerea tokenului de acces eşuată",
|
||||||
"description": "Creați tokenuri de acces cu durată lungă de viață pentru a permite script-urilor dvs. să interacționeze cu instanța dvs. Home Assistant. Fiecare token va fi valabil timp de 10 ani de la creatie. Următoarele tokenuri de acces de lungă durată sunt active la ora actuala.",
|
"description": "Creați tokenuri de acces cu durată lungă de viață pentru a permite script-urilor dvs. să interacționeze cu instanța dvs. Home Assistant. Fiecare token va fi valabil timp de 10 ani de la creatie. Următoarele tokenuri de acces de lungă durată sunt active la ora actuala.",
|
||||||
@ -2382,6 +2429,7 @@
|
|||||||
"header": "Tokenuri de acces de lunga durata",
|
"header": "Tokenuri de acces de lunga durata",
|
||||||
"last_used": "Ultima utilizare la {date} din {location}",
|
"last_used": "Ultima utilizare la {date} din {location}",
|
||||||
"learn_auth_requests": "Aflați cum să faceți cereri autentificate.",
|
"learn_auth_requests": "Aflați cum să faceți cereri autentificate.",
|
||||||
|
"name": "Nume",
|
||||||
"not_used": "Nu a fost utilizat niciodata",
|
"not_used": "Nu a fost utilizat niciodata",
|
||||||
"prompt_copy_token": "Copia token-ul de acces. Acesta nu va fi afișat din nou.",
|
"prompt_copy_token": "Copia token-ul de acces. Acesta nu va fi afișat din nou.",
|
||||||
"prompt_name": "Nume?"
|
"prompt_name": "Nume?"
|
||||||
@ -2443,6 +2491,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
|
"done": "Terminat",
|
||||||
"external_app_configuration": "Configurație aplicație",
|
"external_app_configuration": "Configurație aplicație",
|
||||||
"sidebar_toggle": "Schimbati bara laterală"
|
"sidebar_toggle": "Schimbati bara laterală"
|
||||||
}
|
}
|
||||||
|
@ -507,6 +507,7 @@
|
|||||||
"cancel": "Отменить",
|
"cancel": "Отменить",
|
||||||
"close": "Закрыть",
|
"close": "Закрыть",
|
||||||
"continue": "Продолжить",
|
"continue": "Продолжить",
|
||||||
|
"copied": "Скопировано",
|
||||||
"delete": "Удалить",
|
"delete": "Удалить",
|
||||||
"error_required": "Обязательное поле",
|
"error_required": "Обязательное поле",
|
||||||
"loading": "Загрузка",
|
"loading": "Загрузка",
|
||||||
@ -574,6 +575,28 @@
|
|||||||
"audio_not_supported": "Ваш браузер не поддерживает аудио.",
|
"audio_not_supported": "Ваш браузер не поддерживает аудио.",
|
||||||
"choose_player": "Выберите медиаплеер",
|
"choose_player": "Выберите медиаплеер",
|
||||||
"choose-source": "Выбрать источник",
|
"choose-source": "Выбрать источник",
|
||||||
|
"class": {
|
||||||
|
"album": "Альбом",
|
||||||
|
"app": "Приложение",
|
||||||
|
"artist": "Исполнитель",
|
||||||
|
"channel": "Канал",
|
||||||
|
"composer": "Композитор",
|
||||||
|
"contributing_artist": "Соисполнитель",
|
||||||
|
"directory": "Библиотека",
|
||||||
|
"episode": "Эпизод",
|
||||||
|
"game": "Игра",
|
||||||
|
"genre": "Жанр",
|
||||||
|
"image": "Изображение",
|
||||||
|
"movie": "Фильм",
|
||||||
|
"music": "Музыка",
|
||||||
|
"playlist": "Плейлист",
|
||||||
|
"podcast": "Подкаст",
|
||||||
|
"season": "Сезон",
|
||||||
|
"track": "Трек",
|
||||||
|
"tv_show": "Сериалы",
|
||||||
|
"url": "URL-адрес",
|
||||||
|
"video": "Видео"
|
||||||
|
},
|
||||||
"content-type": {
|
"content-type": {
|
||||||
"album": "Альбом",
|
"album": "Альбом",
|
||||||
"artist": "Исполнитель",
|
"artist": "Исполнитель",
|
||||||
@ -2352,9 +2375,14 @@
|
|||||||
"title": "Состояния"
|
"title": "Состояния"
|
||||||
},
|
},
|
||||||
"templates": {
|
"templates": {
|
||||||
|
"all_listeners": "Этот шаблон отслеживает все события изменения состояния.",
|
||||||
"description": "Здесь Вы можете протестировать поведение шаблонов. В Home Assistant используется шаблонизатор Jinja2 с некоторыми специальными расширениями.",
|
"description": "Здесь Вы можете протестировать поведение шаблонов. В Home Assistant используется шаблонизатор Jinja2 с некоторыми специальными расширениями.",
|
||||||
|
"domain": "Домен",
|
||||||
"editor": "Редактор шаблонов",
|
"editor": "Редактор шаблонов",
|
||||||
|
"entity": "Объект",
|
||||||
"jinja_documentation": "Узнайте больше о шаблонизаторе Jinja2",
|
"jinja_documentation": "Узнайте больше о шаблонизаторе Jinja2",
|
||||||
|
"listeners": "Этот шаблон отслеживает следующие события изменения состояния:",
|
||||||
|
"no_listeners": "Этот шаблон не отслеживает события изменения состояния и не обновляется автоматически.",
|
||||||
"reset": "Вернуться к демонстрационному шаблону",
|
"reset": "Вернуться к демонстрационному шаблону",
|
||||||
"template_extensions": "Узнайте больше о шаблонах Home Assistant",
|
"template_extensions": "Узнайте больше о шаблонах Home Assistant",
|
||||||
"title": "Шаблоны",
|
"title": "Шаблоны",
|
||||||
@ -2941,6 +2969,11 @@
|
|||||||
"submit": "Подтвердить"
|
"submit": "Подтвердить"
|
||||||
},
|
},
|
||||||
"current_user": "Добро пожаловать, {fullName}! Вы вошли в систему.",
|
"current_user": "Добро пожаловать, {fullName}! Вы вошли в систему.",
|
||||||
|
"customize_sidebar": {
|
||||||
|
"button": "Изменить",
|
||||||
|
"description": "Режим редактирования можно включить, нажав и удерживая заголовок боковой панели",
|
||||||
|
"header": "Изменить элементы боковой панели"
|
||||||
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"description": "Панель, используемая по умолчанию для этого устройства",
|
"description": "Панель, используемая по умолчанию для этого устройства",
|
||||||
"dropdown_label": "Панель",
|
"dropdown_label": "Панель",
|
||||||
@ -3038,6 +3071,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
|
"done": "Готово",
|
||||||
"external_app_configuration": "Настройки приложения",
|
"external_app_configuration": "Настройки приложения",
|
||||||
"sidebar_toggle": "Переключатель в боковой панели"
|
"sidebar_toggle": "Переключатель в боковой панели"
|
||||||
}
|
}
|
||||||
|
@ -574,6 +574,28 @@
|
|||||||
"audio_not_supported": "您的浏览器不支持音频元素。",
|
"audio_not_supported": "您的浏览器不支持音频元素。",
|
||||||
"choose_player": "选择播放器",
|
"choose_player": "选择播放器",
|
||||||
"choose-source": "选择媒体源",
|
"choose-source": "选择媒体源",
|
||||||
|
"class": {
|
||||||
|
"album": "专辑",
|
||||||
|
"app": "应用",
|
||||||
|
"artist": "艺术家",
|
||||||
|
"channel": "频道",
|
||||||
|
"composer": "作曲家",
|
||||||
|
"contributing_artist": "参与创作者",
|
||||||
|
"directory": "媒体库",
|
||||||
|
"episode": "分集",
|
||||||
|
"game": "游戏",
|
||||||
|
"genre": "体裁",
|
||||||
|
"image": "图片",
|
||||||
|
"movie": "电影",
|
||||||
|
"music": "音乐",
|
||||||
|
"playlist": "播放列表",
|
||||||
|
"podcast": "播客",
|
||||||
|
"season": "播出季",
|
||||||
|
"track": "音轨",
|
||||||
|
"tv_show": "电视节目",
|
||||||
|
"url": "网址",
|
||||||
|
"video": "视频"
|
||||||
|
},
|
||||||
"content-type": {
|
"content-type": {
|
||||||
"album": "专辑",
|
"album": "专辑",
|
||||||
"artist": "艺术家",
|
"artist": "艺术家",
|
||||||
@ -2352,9 +2374,14 @@
|
|||||||
"title": "状态"
|
"title": "状态"
|
||||||
},
|
},
|
||||||
"templates": {
|
"templates": {
|
||||||
|
"all_listeners": "此模板监听所有的状态改变事件。",
|
||||||
"description": "模板使用 jinja2 模板引擎和一些 Home Assistant 特定的插件进行渲染。",
|
"description": "模板使用 jinja2 模板引擎和一些 Home Assistant 特定的插件进行渲染。",
|
||||||
|
"domain": "域",
|
||||||
"editor": "模板编辑器",
|
"editor": "模板编辑器",
|
||||||
|
"entity": "实体",
|
||||||
"jinja_documentation": "Jinja2 模板文档",
|
"jinja_documentation": "Jinja2 模板文档",
|
||||||
|
"listeners": "此模板监听以下状态改变事件:",
|
||||||
|
"no_listeners": "此模板不监听任何状态改变事件,并且不会自动更新。",
|
||||||
"reset": "重置为演示模板",
|
"reset": "重置为演示模板",
|
||||||
"template_extensions": "Home Assistant 模板插件",
|
"template_extensions": "Home Assistant 模板插件",
|
||||||
"title": "模板",
|
"title": "模板",
|
||||||
@ -2941,6 +2968,11 @@
|
|||||||
"submit": "提交"
|
"submit": "提交"
|
||||||
},
|
},
|
||||||
"current_user": "您目前以 {fullName} 的身份登录。",
|
"current_user": "您目前以 {fullName} 的身份登录。",
|
||||||
|
"customize_sidebar": {
|
||||||
|
"button": "编辑",
|
||||||
|
"description": "您也可以长按侧边栏标题来进入编辑模式。",
|
||||||
|
"header": "排序和隐藏侧边栏中的项目"
|
||||||
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"description": "选择此设备的默认仪表盘。",
|
"description": "选择此设备的默认仪表盘。",
|
||||||
"dropdown_label": "仪表盘",
|
"dropdown_label": "仪表盘",
|
||||||
@ -3038,6 +3070,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
|
"done": "完成",
|
||||||
"external_app_configuration": "应用配置",
|
"external_app_configuration": "应用配置",
|
||||||
"sidebar_toggle": "侧边栏切换"
|
"sidebar_toggle": "侧边栏切换"
|
||||||
}
|
}
|
||||||
|
@ -507,6 +507,7 @@
|
|||||||
"cancel": "取消",
|
"cancel": "取消",
|
||||||
"close": "關閉",
|
"close": "關閉",
|
||||||
"continue": "繼續",
|
"continue": "繼續",
|
||||||
|
"copied": "已複製",
|
||||||
"delete": "刪除",
|
"delete": "刪除",
|
||||||
"error_required": "必填",
|
"error_required": "必填",
|
||||||
"loading": "讀取中",
|
"loading": "讀取中",
|
||||||
@ -574,6 +575,28 @@
|
|||||||
"audio_not_supported": "瀏覽器不支援音效元件。",
|
"audio_not_supported": "瀏覽器不支援音效元件。",
|
||||||
"choose_player": "選擇播放器",
|
"choose_player": "選擇播放器",
|
||||||
"choose-source": "選擇來源",
|
"choose-source": "選擇來源",
|
||||||
|
"class": {
|
||||||
|
"album": "專輯",
|
||||||
|
"app": "App",
|
||||||
|
"artist": "演唱者",
|
||||||
|
"channel": "頻道",
|
||||||
|
"composer": "作曲者",
|
||||||
|
"contributing_artist": "參與藝術家",
|
||||||
|
"directory": "媒體庫",
|
||||||
|
"episode": "集",
|
||||||
|
"game": "遊戲",
|
||||||
|
"genre": "類型",
|
||||||
|
"image": "圖像",
|
||||||
|
"movie": "電影",
|
||||||
|
"music": "音樂",
|
||||||
|
"playlist": "播放列表",
|
||||||
|
"podcast": "Podcast",
|
||||||
|
"season": "季",
|
||||||
|
"track": "音軌",
|
||||||
|
"tv_show": "電視節目",
|
||||||
|
"url": "網址",
|
||||||
|
"video": "影片"
|
||||||
|
},
|
||||||
"content-type": {
|
"content-type": {
|
||||||
"album": "專輯",
|
"album": "專輯",
|
||||||
"artist": "演唱者",
|
"artist": "演唱者",
|
||||||
@ -1982,7 +2005,7 @@
|
|||||||
"smtp": "重新載入 SMTP 通知服務",
|
"smtp": "重新載入 SMTP 通知服務",
|
||||||
"statistics": "重新載入統計資訊實體",
|
"statistics": "重新載入統計資訊實體",
|
||||||
"telegram": "重新載入 Telegram 通知服務",
|
"telegram": "重新載入 Telegram 通知服務",
|
||||||
"template": "重新載入範例實體",
|
"template": "重新載入模板實體",
|
||||||
"trend": "重新載入趨勢實體",
|
"trend": "重新載入趨勢實體",
|
||||||
"universal": "重新載入通用媒體播放器實體",
|
"universal": "重新載入通用媒體播放器實體",
|
||||||
"zone": "重新載入區域"
|
"zone": "重新載入區域"
|
||||||
@ -2352,9 +2375,14 @@
|
|||||||
"title": "狀態"
|
"title": "狀態"
|
||||||
},
|
},
|
||||||
"templates": {
|
"templates": {
|
||||||
|
"all_listeners": "此模板監聽所有狀態變更事件。",
|
||||||
"description": "模版使用 Jinja2 模板引擎及 Home Assistant 特殊擴充進行模板渲染。",
|
"description": "模版使用 Jinja2 模板引擎及 Home Assistant 特殊擴充進行模板渲染。",
|
||||||
|
"domain": "區域",
|
||||||
"editor": "模板編輯器",
|
"editor": "模板編輯器",
|
||||||
|
"entity": "實體",
|
||||||
"jinja_documentation": "Jinja2 模版文件",
|
"jinja_documentation": "Jinja2 模版文件",
|
||||||
|
"listeners": "此模板監聽以下狀態變更事件:",
|
||||||
|
"no_listeners": "此模板不監聽任何狀態變更事件,將不會自動更新。",
|
||||||
"reset": "重置示範範模板",
|
"reset": "重置示範範模板",
|
||||||
"template_extensions": "Home Assistant 模板擴充",
|
"template_extensions": "Home Assistant 模板擴充",
|
||||||
"title": "模板",
|
"title": "模板",
|
||||||
@ -2941,6 +2969,11 @@
|
|||||||
"submit": "傳送"
|
"submit": "傳送"
|
||||||
},
|
},
|
||||||
"current_user": "目前登入身份:{fullName}。",
|
"current_user": "目前登入身份:{fullName}。",
|
||||||
|
"customize_sidebar": {
|
||||||
|
"button": "編輯",
|
||||||
|
"description": "同時也能長按側邊列的標題以啟動編輯模式。",
|
||||||
|
"header": "自側邊列中變更順序或隱藏項目"
|
||||||
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"description": "選擇此設備的預設主面板。",
|
"description": "選擇此設備的預設主面板。",
|
||||||
"dropdown_label": "主面板",
|
"dropdown_label": "主面板",
|
||||||
@ -2963,6 +2996,7 @@
|
|||||||
"confirm_delete": "確定要刪除{name}存取密鑰嗎?",
|
"confirm_delete": "確定要刪除{name}存取密鑰嗎?",
|
||||||
"create": "創建密鑰",
|
"create": "創建密鑰",
|
||||||
"create_failed": "創建存取密鑰失敗。",
|
"create_failed": "創建存取密鑰失敗。",
|
||||||
|
"created": "新增日期:{date}",
|
||||||
"created_at": "於{date}創建",
|
"created_at": "於{date}創建",
|
||||||
"delete_failed": "刪除存取密鑰失敗。",
|
"delete_failed": "刪除存取密鑰失敗。",
|
||||||
"description": "創建長效存取密鑰,可供運用腳本與 Home Assistant 實體進行互動。每個密鑰於創建後,有效期為十年。目前已啟用之永久有效密鑰如下。",
|
"description": "創建長效存取密鑰,可供運用腳本與 Home Assistant 實體進行互動。每個密鑰於創建後,有效期為十年。目前已啟用之永久有效密鑰如下。",
|
||||||
@ -2970,9 +3004,10 @@
|
|||||||
"header": "永久有效存取密鑰",
|
"header": "永久有效存取密鑰",
|
||||||
"last_used": "上次使用:於{date}、位置{location}",
|
"last_used": "上次使用:於{date}、位置{location}",
|
||||||
"learn_auth_requests": "學習如何進行驗證請求。",
|
"learn_auth_requests": "學習如何進行驗證請求。",
|
||||||
|
"name": "名稱",
|
||||||
"not_used": "從未使用過",
|
"not_used": "從未使用過",
|
||||||
"prompt_copy_token": "複製存取密鑰,將不會再次顯示。",
|
"prompt_copy_token": "複製存取密鑰,將不會再次顯示。",
|
||||||
"prompt_name": "名稱?"
|
"prompt_name": "為密鑰命名"
|
||||||
},
|
},
|
||||||
"mfa_setup": {
|
"mfa_setup": {
|
||||||
"close": "關閉",
|
"close": "關閉",
|
||||||
@ -3036,6 +3071,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
|
"done": "完成",
|
||||||
"external_app_configuration": "App 設定",
|
"external_app_configuration": "App 設定",
|
||||||
"sidebar_toggle": "側邊欄開關"
|
"sidebar_toggle": "側邊欄開關"
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user