Merge branch 'dev' of github.com:home-assistant/frontend into restore-addon

This commit is contained in:
Ludeeus 2021-06-07 08:22:40 +00:00
commit 31c66fed6e
43 changed files with 1590 additions and 491 deletions

View File

@ -52,6 +52,7 @@ module.exports.terserOptions = (latestBuild) => ({
module.exports.babelOptions = ({ latestBuild }) => ({ module.exports.babelOptions = ({ latestBuild }) => ({
babelrc: false, babelrc: false,
compact: false,
presets: [ presets: [
!latestBuild && [ !latestBuild && [
"@babel/preset-env", "@babel/preset-env",
@ -79,12 +80,6 @@ module.exports.babelOptions = ({ latestBuild }) => ({
].filter(Boolean), ].filter(Boolean),
}); });
// Are already ES5, cause warnings when babelified.
module.exports.babelExclude = () => [
require.resolve("@mdi/js/mdi.js"),
require.resolve("hls.js"),
];
const outputPath = (outputRoot, latestBuild) => const outputPath = (outputRoot, latestBuild) =>
path.resolve(outputRoot, latestBuild ? "frontend_latest" : "frontend_es5"); path.resolve(outputRoot, latestBuild ? "frontend_latest" : "frontend_es5");

View File

@ -57,7 +57,6 @@ const createRollupConfig = ({
babel({ babel({
...bundle.babelOptions({ latestBuild }), ...bundle.babelOptions({ latestBuild }),
extensions, extensions,
exclude: bundle.babelExclude(),
babelHelpers: isWDS ? "inline" : "bundled", babelHelpers: isWDS ? "inline" : "bundled",
}), }),
string({ string({

View File

@ -47,7 +47,6 @@ const createWebpackConfig = ({
rules: [ rules: [
{ {
test: /\.m?js$|\.ts$/, test: /\.m?js$|\.ts$/,
exclude: bundle.babelExclude(),
use: { use: {
loader: "babel-loader", loader: "babel-loader",
options: bundle.babelOptions({ latestBuild }), options: bundle.babelOptions({ latestBuild }),

View File

@ -0,0 +1,194 @@
import { mdiClose } from "@mdi/js";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators";
import memoizeOne from "memoize-one";
import { fireEvent } from "../../../../src/common/dom/fire_event";
import "../../../../src/common/search/search-input";
import { compare } from "../../../../src/common/string/compare";
import "../../../../src/components/ha-dialog";
import "../../../../src/components/ha-expansion-panel";
import { HassioHardwareInfo } from "../../../../src/data/hassio/hardware";
import { dump } from "../../../../src/resources/js-yaml-dump";
import { haStyle, haStyleDialog } from "../../../../src/resources/styles";
import { HomeAssistant } from "../../../../src/types";
import { HassioHardwareDialogParams } from "./show-dialog-hassio-hardware";
const _filterDevices = memoizeOne(
(showAdvanced: boolean, hardware: HassioHardwareInfo, filter: string) =>
hardware.devices
.filter(
(device) =>
(showAdvanced ||
["tty", "gpio", "input"].includes(device.subsystem)) &&
(device.by_id?.toLowerCase().includes(filter) ||
device.name.toLowerCase().includes(filter) ||
device.dev_path.toLocaleLowerCase().includes(filter) ||
JSON.stringify(device.attributes)
.toLocaleLowerCase()
.includes(filter))
)
.sort((a, b) => compare(a.name, b.name))
);
@customElement("dialog-hassio-hardware")
class HassioHardwareDialog extends LitElement {
@property({ attribute: false }) public hass!: HomeAssistant;
@state() private _dialogParams?: HassioHardwareDialogParams;
@state() private _filter?: string;
public showDialog(params: HassioHardwareDialogParams) {
this._dialogParams = params;
}
public closeDialog() {
this._dialogParams = undefined;
fireEvent(this, "dialog-closed", { dialog: this.localName });
}
protected render(): TemplateResult {
if (!this._dialogParams) {
return html``;
}
const devices = _filterDevices(
this.hass.userData?.showAdvanced || false,
this._dialogParams.hardware,
(this._filter || "").toLowerCase()
);
return html`
<ha-dialog
open
scrimClickAction
hideActions
@closed=${this.closeDialog}
.heading=${true}
>
<div class="header" slot="heading">
<h2>
${this._dialogParams.supervisor.localize("dialog.hardware.title")}
</h2>
<mwc-icon-button dialogAction="close">
<ha-svg-icon .path=${mdiClose}></ha-svg-icon>
</mwc-icon-button>
<search-input
autofocus
no-label-float
.filter=${this._filter}
@value-changed=${this._handleSearchChange}
.label=${this._dialogParams.supervisor.localize(
"dialog.hardware.search"
)}
>
</search-input>
</div>
${devices.map(
(device) =>
html`<ha-expansion-panel
.header=${device.name}
.secondary=${device.by_id || undefined}
outlined
>
<div class="device-property">
<span>
${this._dialogParams!.supervisor.localize(
"dialog.hardware.subsystem"
)}:
</span>
<span>${device.subsystem}</span>
</div>
<div class="device-property">
<span>
${this._dialogParams!.supervisor.localize(
"dialog.hardware.device_path"
)}:
</span>
<code>${device.dev_path}</code>
</div>
${device.by_id
? html` <div class="device-property">
<span>
${this._dialogParams!.supervisor.localize(
"dialog.hardware.id"
)}:
</span>
<code>${device.by_id}</code>
</div>`
: ""}
<div class="attributes">
<span>
${this._dialogParams!.supervisor.localize(
"dialog.hardware.attributes"
)}:
</span>
<pre>${dump(device.attributes, { indent: 2 })}</pre>
</div>
</ha-expansion-panel>`
)}
</ha-dialog>
`;
}
private _handleSearchChange(ev: CustomEvent) {
this._filter = ev.detail.value;
}
static get styles(): CSSResultGroup {
return [
haStyle,
haStyleDialog,
css`
mwc-icon-button {
position: absolute;
right: 16px;
top: 10px;
text-decoration: none;
color: var(--primary-text-color);
}
h2 {
margin: 18px 42px 0 18px;
color: var(--primary-text-color);
}
ha-expansion-panel {
margin: 4px 0;
}
pre,
code {
background-color: var(--markdown-code-background-color, none);
border-radius: 3px;
}
pre {
padding: 16px;
overflow: auto;
line-height: 1.45;
font-family: var(--code-font-family, monospace);
}
code {
font-size: 85%;
padding: 0.2em 0.4em;
}
search-input {
margin: 0 16px;
display: block;
}
.device-property {
display: flex;
justify-content: space-between;
}
.attributes {
margin-top: 12px;
}
`,
];
}
}
declare global {
interface HTMLElementTagNameMap {
"dialog-hassio-hardware": HassioHardwareDialog;
}
}

View File

@ -0,0 +1,19 @@
import { fireEvent } from "../../../../src/common/dom/fire_event";
import { HassioHardwareInfo } from "../../../../src/data/hassio/hardware";
import { Supervisor } from "../../../../src/data/supervisor/supervisor";
export interface HassioHardwareDialogParams {
supervisor: Supervisor;
hardware: HassioHardwareInfo;
}
export const showHassioHardwareDialog = (
element: HTMLElement,
dialogParams: HassioHardwareDialogParams
): void => {
fireEvent(element, "show-dialog", {
dialogTag: "dialog-hassio-hardware",
dialogImport: () => import("./dialog-hassio-hardware"),
dialogParams,
});
};

View File

@ -22,6 +22,7 @@ import {
import { HassDialog } from "../../../../src/dialogs/make-dialog-manager"; import { HassDialog } from "../../../../src/dialogs/make-dialog-manager";
import { haStyle, haStyleDialog } from "../../../../src/resources/styles"; import { haStyle, haStyleDialog } from "../../../../src/resources/styles";
import { HomeAssistant } from "../../../../src/types"; import { HomeAssistant } from "../../../../src/types";
import { fileDownload } from "../../../../src/util/file_download";
import "../../components/supervisor-snapshot-content"; import "../../components/supervisor-snapshot-content";
import type { SupervisorSnapshotContent } from "../../components/supervisor-snapshot-content"; import type { SupervisorSnapshotContent } from "../../components/supervisor-snapshot-content";
import { HassioSnapshotDialogParams } from "./show-dialog-hassio-snapshot"; import { HassioSnapshotDialogParams } from "./show-dialog-hassio-snapshot";
@ -288,12 +289,11 @@ class HassioSnapshotDialog
} }
} }
const a = document.createElement("a"); fileDownload(
a.href = signedPath.path; this,
a.download = `home_assistant_snapshot_${slugify(this._computeName)}.tar`; signedPath.path,
this.shadowRoot!.appendChild(a); `home_assistant_snapshot_${slugify(this._computeName)}.tar`
a.click(); );
this.shadowRoot!.removeChild(a);
} }
private get _computeName() { private get _computeName() {

View File

@ -97,16 +97,23 @@ class HassioIngressView extends LitElement {
title: requestedAddon, title: requestedAddon,
}); });
await nextRender(); await nextRender();
history.back(); navigate("/hassio/store", { replace: true });
return; return;
} }
if (!addonInfo.ingress) { if (!addonInfo.version) {
await showAlertDialog(this, {
text: this.supervisor.localize("my.error_addon_not_installed"),
title: addonInfo.name,
});
await nextRender();
navigate(`/hassio/addon/${addonInfo.slug}/info`, { replace: true });
} else if (!addonInfo.ingress) {
await showAlertDialog(this, { await showAlertDialog(this, {
text: this.supervisor.localize("my.error_addon_no_ingress"), text: this.supervisor.localize("my.error_addon_no_ingress"),
title: addonInfo.name, title: addonInfo.name,
}); });
await nextRender(); await nextRender();
history.back(); navigate(`/hassio/addon/${addonInfo.slug}/info`, { replace: true });
} else { } else {
navigate(`/hassio/ingress/${addonInfo.slug}`, { replace: true }); navigate(`/hassio/ingress/${addonInfo.slug}`, { replace: true });
} }

View File

@ -2,7 +2,6 @@ import "@material/mwc-button";
import { ActionDetail } from "@material/mwc-list/mwc-list-foundation"; import { ActionDetail } from "@material/mwc-list/mwc-list-foundation";
import "@material/mwc-list/mwc-list-item"; import "@material/mwc-list/mwc-list-item";
import { mdiDotsVertical } from "@mdi/js"; import { mdiDotsVertical } from "@mdi/js";
import { dump } from "js-yaml";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property } from "lit/decorators"; import { customElement, property } from "lit/decorators";
import memoizeOne from "memoize-one"; import memoizeOne from "memoize-one";
@ -41,8 +40,8 @@ import {
roundWithOneDecimal, roundWithOneDecimal,
} from "../../../src/util/calculate"; } from "../../../src/util/calculate";
import "../components/supervisor-metric"; import "../components/supervisor-metric";
import { showHassioMarkdownDialog } from "../dialogs/markdown/show-dialog-hassio-markdown";
import { showNetworkDialog } from "../dialogs/network/show-dialog-network"; import { showNetworkDialog } from "../dialogs/network/show-dialog-network";
import { showHassioHardwareDialog } from "../dialogs/hardware/show-dialog-hassio-hardware";
import { hassioStyle } from "../resources/hassio-style"; import { hassioStyle } from "../resources/hassio-style";
@customElement("hassio-host-info") @customElement("hassio-host-info")
@ -229,20 +228,19 @@ class HassioHostInfo extends LitElement {
} }
private async _showHardware(): Promise<void> { private async _showHardware(): Promise<void> {
let hardware;
try { try {
const content = await fetchHassioHardwareInfo(this.hass); hardware = await fetchHassioHardwareInfo(this.hass);
showHassioMarkdownDialog(this, {
title: this.supervisor.localize("system.host.hardware"),
content: `<pre>${dump(content, { indent: 2 })}</pre>`,
});
} catch (err) { } catch (err) {
showAlertDialog(this, { await showAlertDialog(this, {
title: this.supervisor.localize( title: this.supervisor.localize(
"system.host.failed_to_get_hardware_list" "system.host.failed_to_get_hardware_list"
), ),
text: extractApiErrorMessage(err), text: extractApiErrorMessage(err),
}); });
return;
} }
showHassioHardwareDialog(this, { supervisor: this.supervisor, hardware });
} }
private async _hostReboot(ev: CustomEvent): Promise<void> { private async _hostReboot(ev: CustomEvent): Promise<void> {

View File

@ -1,5 +1,4 @@
module.exports = { module.exports = {
"*.ts": () => "tsc -p tsconfig.json",
"*.{js,ts}": "eslint --fix", "*.{js,ts}": "eslint --fix",
"!(/translations)*.{js,ts,json,css,md,html}": "prettier --write", "!(/translations)*.{js,ts,json,css,md,html}": "prettier --write",
}; };

View File

@ -2,7 +2,7 @@ from setuptools import setup, find_packages
setup( setup(
name="home-assistant-frontend", name="home-assistant-frontend",
version="20210601.1", version="20210603.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",

View File

@ -14,12 +14,17 @@ class HaExpansionPanel extends LitElement {
@property() header?: string; @property() header?: string;
@property() secondary?: string;
@query(".container") private _container!: HTMLDivElement; @query(".container") private _container!: HTMLDivElement;
protected render(): TemplateResult { protected render(): TemplateResult {
return html` return html`
<div class="summary" @click=${this._toggleContainer}> <div class="summary" @click=${this._toggleContainer}>
<slot name="header">${this.header}</slot> <slot class="header" name="header">
${this.header}
<slot class="secondary" name="secondary">${this.secondary}</slot>
</slot>
<ha-svg-icon <ha-svg-icon
.path=${mdiChevronDown} .path=${mdiChevronDown}
class="summary-icon ${classMap({ expanded: this.expanded })}" class="summary-icon ${classMap({ expanded: this.expanded })}"
@ -106,6 +111,16 @@ class HaExpansionPanel extends LitElement {
.container.expanded { .container.expanded {
height: auto; height: auto;
} }
.header {
display: block;
}
.secondary {
display: block;
color: var(--secondary-text-color);
font-size: 12px;
}
`; `;
} }
} }

View File

@ -7,14 +7,14 @@ import { afterNextRender } from "../common/util/render-status";
import { FrontendLocaleData } from "../data/translation"; import { FrontendLocaleData } from "../data/translation";
import { getValueInPercentage, normalize } from "../util/calculate"; import { getValueInPercentage, normalize } from "../util/calculate";
// Workaround for https://github.com/home-assistant/frontend/issues/6467
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
const getAngle = (value: number, min: number, max: number) => { const getAngle = (value: number, min: number, max: number) => {
const percentage = getValueInPercentage(normalize(value, min, max), min, max); const percentage = getValueInPercentage(normalize(value, min, max), min, max);
return (percentage * 180) / 100; return (percentage * 180) / 100;
}; };
// Workaround for https://github.com/home-assistant/frontend/issues/6467
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
@customElement("ha-gauge") @customElement("ha-gauge")
export class Gauge extends LitElement { export class Gauge extends LitElement {
@property({ type: Number }) public min = 0; @property({ type: Number }) public min = 0;

View File

@ -14,12 +14,17 @@ interface HassioHardwareAudioList {
}; };
} }
interface HardwareDevice {
attributes: Record<string, string>;
by_id: null | string;
dev_path: string;
name: string;
subsystem: string;
sysfs: string;
}
export interface HassioHardwareInfo { export interface HassioHardwareInfo {
serial: string[]; devices: HardwareDevice[];
input: string[];
disk: string[];
gpio: string[];
audio: Record<string, unknown>;
} }
export const fetchHassioHardwareAudio = async ( export const fetchHassioHardwareAudio = async (

View File

@ -23,11 +23,6 @@ class MoreInfoPerson extends LitElement {
} }
return html` return html`
<ha-attributes
.hass=${this.hass}
.stateObj=${this.stateObj}
extra-filters="id,user_id,editable"
></ha-attributes>
${this.stateObj.attributes.latitude && this.stateObj.attributes.longitude ${this.stateObj.attributes.latitude && this.stateObj.attributes.longitude
? html` ? html`
<ha-map <ha-map
@ -51,6 +46,11 @@ class MoreInfoPerson extends LitElement {
</div> </div>
` `
: ""} : ""}
<ha-attributes
.hass=${this.hass}
.stateObj=${this.stateObj}
extra-filters="id,user_id,editable"
></ha-attributes>
`; `;
} }

View File

@ -17,11 +17,6 @@ class MoreInfoTimer extends LitElement {
} }
return html` return html`
<ha-attributes
.hass=${this.hass}
.stateObj=${this.stateObj}
extra-filters="remaining"
></ha-attributes>
<div class="actions"> <div class="actions">
${this.stateObj.state === "idle" || this.stateObj.state === "paused" ${this.stateObj.state === "idle" || this.stateObj.state === "paused"
? html` ? html`
@ -57,6 +52,11 @@ class MoreInfoTimer extends LitElement {
` `
: ""} : ""}
</div> </div>
<ha-attributes
.hass=${this.hass}
.stateObj=${this.stateObj}
extra-filters="remaining"
></ha-attributes>
`; `;
} }

View File

@ -48,6 +48,9 @@
window.providersPromise = fetch("/auth/providers", { window.providersPromise = fetch("/auth/providers", {
credentials: "same-origin", credentials: "same-origin",
}); });
if (!window.globalThis) {
window.globalThis = window;
}
</script> </script>
<script> <script>

View File

@ -71,6 +71,9 @@
import("<%= latestAppJS %>"); import("<%= latestAppJS %>");
window.customPanelJS = "<%= latestCustomPanelJS %>"; window.customPanelJS = "<%= latestCustomPanelJS %>";
window.latestJS = true; window.latestJS = true;
if (!window.globalThis) {
window.globalThis = window;
}
</script> </script>
<script> <script>
{% for extra_module in extra_modules -%} {% for extra_module in extra_modules -%}

View File

@ -80,6 +80,9 @@
window.stepsPromise = fetch("/api/onboarding", { window.stepsPromise = fetch("/api/onboarding", {
credentials: "same-origin", credentials: "same-origin",
}); });
if (!window.globalThis) {
window.globalThis = window;
}
</script> </script>
<script> <script>

View File

@ -24,6 +24,7 @@ import {
import "../../../../../layouts/hass-tabs-subpage"; import "../../../../../layouts/hass-tabs-subpage";
import { haStyle } from "../../../../../resources/styles"; import { haStyle } from "../../../../../resources/styles";
import type { HomeAssistant, Route } from "../../../../../types"; import type { HomeAssistant, Route } from "../../../../../types";
import { fileDownload } from "../../../../../util/file_download";
import "../../../ha-config-section"; import "../../../ha-config-section";
import { showZWaveJSAddNodeDialog } from "./show-dialog-zwave_js-add-node"; import { showZWaveJSAddNodeDialog } from "./show-dialog-zwave_js-add-node";
import { showZWaveJSRemoveNodeDialog } from "./show-dialog-zwave_js-remove-node"; import { showZWaveJSRemoveNodeDialog } from "./show-dialog-zwave_js-remove-node";
@ -312,12 +313,7 @@ class ZWaveJSConfigDashboard extends LitElement {
return; return;
} }
const a = document.createElement("a"); fileDownload(this, signedPath.path, `zwave_js_dump.jsonl`);
a.href = signedPath.path;
a.download = `zwave_js_dump.jsonl`;
this.shadowRoot!.appendChild(a);
a.click();
this.shadowRoot!.removeChild(a);
} }
static get styles(): CSSResultGroup { static get styles(): CSSResultGroup {

View File

@ -36,7 +36,9 @@ export class HaPickThemeRow extends LitElement {
const hasThemes = const hasThemes =
this.hass.themes.themes && Object.keys(this.hass.themes.themes).length; this.hass.themes.themes && Object.keys(this.hass.themes.themes).length;
const curTheme = const curTheme =
this.hass.selectedTheme?.theme || this.hass.themes.default_theme; this.hass.selectedTheme?.theme || this.hass.themes.darkMode
? this.hass.themes.default_dark_theme || this.hass.themes.default_theme
: this.hass.themes.default_theme;
const themeSettings = this.hass.selectedTheme; const themeSettings = this.hass.selectedTheme;

View File

@ -1,10 +1,10 @@
// For localize // For localize
import "@formatjs/intl-getcanonicallocales/polyfill";
import "lit/polyfill-support";
import "core-js"; import "core-js";
import "regenerator-runtime/runtime";
import "lit/polyfill-support";
import "@formatjs/intl-getcanonicallocales/polyfill";
// To use comlink under ES5 // To use comlink under ES5
import "proxy-polyfill"; import "proxy-polyfill";
import "regenerator-runtime/runtime";
import "unfetch/polyfill"; import "unfetch/polyfill";
// Source: https://github.com/jserz/js_piece/blob/master/DOM/ParentNode/append()/append().md // Source: https://github.com/jserz/js_piece/blob/master/DOM/ParentNode/append()/append().md
@ -32,3 +32,16 @@ import "unfetch/polyfill";
}); });
}); });
})([Element.prototype, Document.prototype, DocumentFragment.prototype]); })([Element.prototype, Document.prototype, DocumentFragment.prototype]);
// Source: https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttributeNames
if (Element.prototype.getAttributeNames === undefined) {
Element.prototype.getAttributeNames = function () {
const attributes = this.attributes;
const length = attributes.length;
const result = new Array(length);
for (let i = 0; i < length; i++) {
result[i] = attributes[i].name;
}
return result;
};
}

View File

@ -2,6 +2,7 @@
const isSafari14 = /^((?!chrome|android).)*version\/14\.0\s.*safari/i.test( const isSafari14 = /^((?!chrome|android).)*version\/14\.0\s.*safari/i.test(
navigator.userAgent navigator.userAgent
); );
if (isSafari14) { if (isSafari14) {
const origAttachShadow = window.Element.prototype.attachShadow; const origAttachShadow = window.Element.prototype.attachShadow;
window.Element.prototype.attachShadow = function (init) { window.Element.prototype.attachShadow = function (init) {

View File

@ -1155,7 +1155,7 @@
"section": { "section": {
"validation": { "validation": {
"heading": "Configuration validation", "heading": "Configuration validation",
"introduction": "Validate your configuration if you recently made some changes to your configuration and want to make sure that it is all valid", "introduction": "Validate your configuration if you recently made some changes to your configuration and want to make sure that it is all valid.",
"check_config": "Check configuration", "check_config": "Check configuration",
"valid": "Configuration valid!", "valid": "Configuration valid!",
"invalid": "Configuration invalid" "invalid": "Configuration invalid"
@ -3814,6 +3814,8 @@
"faq_link": "[%key:ui::panel::my::faq_link%]", "faq_link": "[%key:ui::panel::my::faq_link%]",
"error": "[%key:ui::panel::my::error%]", "error": "[%key:ui::panel::my::error%]",
"error_addon_not_found": "Add-on not found", "error_addon_not_found": "Add-on not found",
"error_addon_not_started": "The requested add-on are not running. Please start it first",
"error_addon_not_installed": "The requested add-on is not installed. Please install it first",
"error_addon_no_ingress": "The requested add-on does not support ingress" "error_addon_no_ingress": "The requested add-on does not support ingress"
}, },
"system": { "system": {
@ -3989,6 +3991,14 @@
"password": "Password", "password": "Password",
"protected": "The snapshot is password protected, please provide the password for it.", "protected": "The snapshot is password protected, please provide the password for it.",
"restore_in_progress": "Restore in progress" "restore_in_progress": "Restore in progress"
},
"hardware": {
"title": "Hardware",
"search": "Search hardware",
"subsystem": "Subsystem",
"id": "ID",
"attributes": "Attributes",
"device_path": "Device path"
} }
} }
} }

14
src/util/file_download.ts Normal file
View File

@ -0,0 +1,14 @@
export const fileDownload = (
element: HTMLElement,
href: string,
filename: string
): void => {
const a = document.createElement("a");
a.target = "_blank";
a.href = href;
a.download = filename;
element.shadowRoot!.appendChild(a);
a.dispatchEvent(new MouseEvent("click"));
element.shadowRoot!.removeChild(a);
};

0
src/util/is_safari.ts Normal file
View File

View File

@ -351,6 +351,9 @@
"create_blocked_not_running": "Създаването на снапшот в момента не е възможно, тъй като системата е в състояние {state}.", "create_blocked_not_running": "Създаването на снапшот в момента не е възможно, тъй като системата е в състояние {state}.",
"create_snapshot": "Създаване на снапшот", "create_snapshot": "Създаване на снапшот",
"created": "Създаден", "created": "Създаден",
"delete_selected": "Изтриване на избраните снапшоти",
"delete_snapshot_confirm": "Изтрий",
"delete_snapshot_title": "Изтриване на снапшот",
"description": "Снапшотите ви позволяват лесно да архивирате и възстановявате всички данни от вашия екземпляр на Home Assistant.", "description": "Снапшотите ви позволяват лесно да архивирате и възстановявате всички данни от вашия екземпляр на Home Assistant.",
"enter_password": "Моля, въведете парола.", "enter_password": "Моля, въведете парола.",
"folder": { "folder": {
@ -369,6 +372,7 @@
"password_protected": "защитен с парола", "password_protected": "защитен с парола",
"password_protection": "Защита с парола", "password_protection": "Защита с парола",
"security": "Сигурност", "security": "Сигурност",
"selected": "{number} избрани",
"type": "Тип", "type": "Тип",
"upload_snapshot": "Качване на снапшот" "upload_snapshot": "Качване на снапшот"
}, },
@ -494,7 +498,7 @@
"heating": "{name} отопление", "heating": "{name} отопление",
"high": "високо", "high": "високо",
"low": "ниско", "low": "ниско",
"on_off": "Вкл. / Изкл", "on_off": "Вкл. / Изкл.",
"operation": "Режим", "operation": "Режим",
"preset_mode": "Предварително зададени настройки", "preset_mode": "Предварително зададени настройки",
"swing_mode": "Режим на люлеене", "swing_mode": "Режим на люлеене",
@ -874,6 +878,7 @@
"config_entry_system_options": { "config_entry_system_options": {
"enable_new_entities_description": "Ако е изключено, новооткритите обекти за {integration} няма да бъдат автоматично добавяни в Home Assistant", "enable_new_entities_description": "Ако е изключено, новооткритите обекти за {integration} няма да бъдат автоматично добавяни в Home Assistant",
"enable_new_entities_label": "Активирай новодобавените обекти.", "enable_new_entities_label": "Активирай новодобавените обекти.",
"restart_home_assistant": "Трябва да рестартирате Home Assistant, за да влязат в сила промените.",
"title": "Системни опции за {integration}", "title": "Системни опции за {integration}",
"update": "Актуализация" "update": "Актуализация"
}, },
@ -2093,7 +2098,7 @@
"confirm_delete_ignore_title": "Да се спре ли игнорирането на {name}?", "confirm_delete_ignore_title": "Да се спре ли игнорирането на {name}?",
"confirm_ignore": "Наистина ли не искате да настроите тази интеграция? Можете да отмените това, като кликнете върху „Показване на игнорирани интеграции“ в менюто горе вдясно.", "confirm_ignore": "Наистина ли не искате да настроите тази интеграция? Можете да отмените това, като кликнете върху „Показване на игнорирани интеграции“ в менюто горе вдясно.",
"hide_ignored": "Скриване на игнорираните интеграции", "hide_ignored": "Скриване на игнорираните интеграции",
"ignore": "Игнорирайте", "ignore": "Игнориране",
"ignored": "Игнорирана", "ignored": "Игнорирана",
"show_ignored": "Показване на игнорираните интеграции", "show_ignored": "Показване на игнорираните интеграции",
"stop_ignore": "Спрете да игнорирате" "stop_ignore": "Спрете да игнорирате"

View File

@ -284,7 +284,7 @@
"refresh": "Actualitza", "refresh": "Actualitza",
"release_notes": "Notes de la versió", "release_notes": "Notes de la versió",
"reload": "Torna a carregar", "reload": "Torna a carregar",
"reset_defaults": "Restableix als valors per defecte", "reset_defaults": "Restableix els valors per defecte",
"reset_options": "Opcions de reinici", "reset_options": "Opcions de reinici",
"restart": "Reinicia", "restart": "Reinicia",
"restart_name": "Reinicia {name}", "restart_name": "Reinicia {name}",
@ -368,6 +368,8 @@
"error": "S'ha produït un error desconegut", "error": "S'ha produït un error desconegut",
"error_addon_no_ingress": "El complement sol·licitat no admet ingress", "error_addon_no_ingress": "El complement sol·licitat no admet ingress",
"error_addon_not_found": "No s'ha trobat el complement", "error_addon_not_found": "No s'ha trobat el complement",
"error_addon_not_installed": "El complement sol·licitat no està instal·lat. Instal·la'l primer",
"error_addon_not_started": "El complement sol·licitat no s'està executant. Inicia'l primer",
"faq_link": "Preguntes freqüents de My Home Assistant", "faq_link": "Preguntes freqüents de My Home Assistant",
"not_supported": "La instància de Home Assistant no admet aquesta redirecció. Consulta {link} per veure les redireccions compatibles i en quina versió es van introduir." "not_supported": "La instància de Home Assistant no admet aquesta redirecció. Consulta {link} per veure les redireccions compatibles i en quina versió es van introduir."
}, },
@ -2719,7 +2721,7 @@
"validation": { "validation": {
"check_config": "Comprova la configuració", "check_config": "Comprova la configuració",
"heading": "Validació de la configuració", "heading": "Validació de la configuració",
"introduction": "Valida la configuració si recentment has fet algun canvi a la configuració i vols assegurar-te de que sigui vàlida.", "introduction": "Valida la configuració si recentment n'has fet algun canvi i vols assegurar-te de que sigui vàlida.",
"invalid": "Configuració invàlida", "invalid": "Configuració invàlida",
"valid": "Configuració vàlida!" "valid": "Configuració vàlida!"
} }
@ -3714,7 +3716,7 @@
}, },
"page-authorize": { "page-authorize": {
"abort_intro": "S'ha avortat l'inici de sessió", "abort_intro": "S'ha avortat l'inici de sessió",
"authorizing_client": "Esteu a punt de permetre l'accés a la vostra instància de Home Assistant al client {clientId}.", "authorizing_client": "Estàs a punt de concedir al client {clientId} l'accés a la teva instància de Home Assistant.",
"form": { "form": {
"error": "Error: {error}", "error": "Error: {error}",
"next": "Següent", "next": "Següent",
@ -3808,7 +3810,7 @@
"working": "Si us plau, espereu" "working": "Si us plau, espereu"
}, },
"initializing": "S'està inicialitzant", "initializing": "S'està inicialitzant",
"logging_in_to_with": "S'escriuen els registes amb **{authProviderName}** a **{locationName}**.", "logging_in_to_with": "Iniciant sessió a **{locationName}** amb **{authProviderName}**.",
"logging_in_with": "Iniciant sessió amb **{authProviderName}**.", "logging_in_with": "Iniciant sessió amb **{authProviderName}**.",
"pick_auth_provider": "O bé inicieu sessió amb" "pick_auth_provider": "O bé inicieu sessió amb"
}, },

View File

@ -368,6 +368,8 @@
"error": "Nastala neznámá chyba", "error": "Nastala neznámá chyba",
"error_addon_no_ingress": "Požadovaný doplněk nepodporuje ingress", "error_addon_no_ingress": "Požadovaný doplněk nepodporuje ingress",
"error_addon_not_found": "Doplněk nebyl nalezen", "error_addon_not_found": "Doplněk nebyl nalezen",
"error_addon_not_installed": "Požadovaný doplněk není nainstalován. Nejprve jej prosím nainstalujte",
"error_addon_not_started": "Požadovaný doplněk není spuštěn. Nejprve jej prosím spusťte",
"faq_link": "Časté dotazy týkající se My Home Assistant", "faq_link": "Časté dotazy týkající se My Home Assistant",
"not_supported": "Toto přesměrování není vaší instancí Home Assistant podporováno. Zkontrolujte {link} pro podporovaná přesměrování a verzi, ve které byla zavedena." "not_supported": "Toto přesměrování není vaší instancí Home Assistant podporováno. Zkontrolujte {link} pro podporovaná přesměrování a verzi, ve které byla zavedena."
}, },
@ -929,8 +931,11 @@
}, },
"dialogs": { "dialogs": {
"config_entry_system_options": { "config_entry_system_options": {
"enable_new_entities_description": "Pokud je zakázáno, nově objevené entity pro {integration} nebudou automaticky přidány do Home Assistant.", "enable_new_entities_description": "Pokud se mají automaticky přidat nově objevená zařízení integrace {integration}.",
"enable_new_entities_label": "Povolit nově přidané entity.", "enable_new_entities_label": "Povolit nově přidané entity.",
"enable_polling_description": "Má-li Home Assistant automaticky zjišťovat aktualizace entit integrace {integration}.",
"enable_polling_label": "Povolit dotazování na aktualizace.",
"restart_home_assistant": "Aby se změny projevily, je třeba restartovat Home Assistant.",
"title": "Upravit nastavení pro {integration}", "title": "Upravit nastavení pro {integration}",
"update": "Aktualizovat" "update": "Aktualizovat"
}, },
@ -1164,7 +1169,7 @@
}, },
"types": { "types": {
"navigation": "Navigovat", "navigation": "Navigovat",
"reload": "Znovu načíst", "reload": "Nově načíst",
"server_control": "Server" "server_control": "Server"
} }
}, },
@ -2073,7 +2078,8 @@
"scripts": "Skripty", "scripts": "Skripty",
"unknown_error": "Neznámá chyba", "unknown_error": "Neznámá chyba",
"unnamed_device": "Nepojmenované zařízení", "unnamed_device": "Nepojmenované zařízení",
"update": "Aktualizovat" "update": "Aktualizovat",
"update_device_error": "Aktualizace zařízení se nezdařila"
}, },
"entities": { "entities": {
"caption": "Entity", "caption": "Entity",
@ -2206,6 +2212,7 @@
"depends_on_cloud": "Závisí na cloudu", "depends_on_cloud": "Závisí na cloudu",
"device_unavailable": "Zařízení není dostupné", "device_unavailable": "Zařízení není dostupné",
"devices": "{count} {count, plural,\n one {zařízení}\n other {zařízení}\n}", "devices": "{count} {count, plural,\n one {zařízení}\n other {zařízení}\n}",
"disable_error": "Povolení nebo zakázání integrace se nezdařilo",
"disable_restart_confirm": "Restartujte Home Assistant pro dokončení odstranění této integrace", "disable_restart_confirm": "Restartujte Home Assistant pro dokončení odstranění této integrace",
"disable": { "disable": {
"disable_confirm": "Opravdu chcete zakázat tuto položku konfigurace? Její zařízení a entity budou zakázány.", "disable_confirm": "Opravdu chcete zakázat tuto položku konfigurace? Její zařízení a entity budou zakázány.",
@ -2217,6 +2224,7 @@
}, },
"disabled_cause": "Zakázáno {cause}" "disabled_cause": "Zakázáno {cause}"
}, },
"disabled_polling": "Automatické dotazování na aktualizovaná data je zakázáno",
"documentation": "Dokumentace", "documentation": "Dokumentace",
"enable_restart_confirm": "Restartujte Home Assistant pro dokončení přidání této integrace", "enable_restart_confirm": "Restartujte Home Assistant pro dokončení přidání této integrace",
"entities": "{count} {count, plural,\n one {entita}\n other {entit}\n}", "entities": "{count} {count, plural,\n one {entita}\n other {entit}\n}",
@ -2713,7 +2721,7 @@
"validation": { "validation": {
"check_config": "Zkontrolujte konfiguraci", "check_config": "Zkontrolujte konfiguraci",
"heading": "Ověření konfigurace", "heading": "Ověření konfigurace",
"introduction": "Pokud jste nedávno provedli změny konfigurace a chcete se ujistit, že je vše v pořádku, můžete zde konfiguraci ověřit", "introduction": "Pokud jste nedávno provedli nějaké změny v konfiguraci a chcete se ujistit, že jsou všechny platné, proveďte ověření konfigurace.",
"invalid": "Konfigurace není v pořádku!", "invalid": "Konfigurace není v pořádku!",
"valid": "Konfigurace je v pořádku!" "valid": "Konfigurace je v pořádku!"
} }
@ -2928,6 +2936,7 @@
"follow_device_instructions": "Podle pokynů dodaných se zařízením aktivujte párování na zařízení.", "follow_device_instructions": "Podle pokynů dodaných se zařízením aktivujte párování na zařízení.",
"inclusion_failed": "Uzel nelze přidat. Další informace najdete v protokolech.", "inclusion_failed": "Uzel nelze přidat. Další informace najdete v protokolech.",
"inclusion_finished": "Uzel byl přidán.", "inclusion_finished": "Uzel byl přidán.",
"interview_failed": "Komunikace se zařízením se nezdařila. V logách mohou být k dispozici další informace.",
"introduction": "Tento průvodce vás provede přidáním uzlu do vaší sítě Z-Wave.", "introduction": "Tento průvodce vás provede přidáním uzlu do vaší sítě Z-Wave.",
"secure_inclusion_warning": "Zabezpečená zařízení vyžadují větší šířku pásma; příliš mnoho zabezpečených zařízení může zpomalit vaši síť Z-Wave. Bezpečné začlenění doporučujeme používat pouze u zařízení, která to vyžadují, jako jsou zámky nebo otvírače garážových vrat.", "secure_inclusion_warning": "Zabezpečená zařízení vyžadují větší šířku pásma; příliš mnoho zabezpečených zařízení může zpomalit vaši síť Z-Wave. Bezpečné začlenění doporučujeme používat pouze u zařízení, která to vyžadují, jako jsou zámky nebo otvírače garážových vrat.",
"start_inclusion": "Zahájit začlenění", "start_inclusion": "Zahájit začlenění",
@ -3092,7 +3101,7 @@
"heal_node": "Uzdravit uzel", "heal_node": "Uzdravit uzel",
"node_info": "Informace o uzlu", "node_info": "Informace o uzlu",
"print_node": "Otisk uzlu", "print_node": "Otisk uzlu",
"refresh_entity": "Znovu načíst Entitu", "refresh_entity": "Nově načíst Entitu",
"refresh_node": "Obnovit uzel", "refresh_node": "Obnovit uzel",
"remove_failed_node": "Odebrat selhaný uzel", "remove_failed_node": "Odebrat selhaný uzel",
"remove_node": "Odebrat uzel", "remove_node": "Odebrat uzel",
@ -3157,6 +3166,7 @@
"copy_id": "Zkopírovat ID do schránky", "copy_id": "Zkopírovat ID do schránky",
"current_entities": "Současné entity", "current_entities": "Současné entity",
"description1": "Nastavte stav zařízení v Home Assistant.", "description1": "Nastavte stav zařízení v Home Assistant.",
"description2": "Pokud entita patří k zařízení, neprobíhá s tímto zařízením žádná skutečná komunikace.",
"entity": "Entita", "entity": "Entita",
"filter_attributes": "Filtrovat atributy", "filter_attributes": "Filtrovat atributy",
"filter_entities": "Filtrovat entity", "filter_entities": "Filtrovat entity",

View File

@ -368,6 +368,8 @@
"error": "Ein unbekannter Fehler ist aufgetreten.", "error": "Ein unbekannter Fehler ist aufgetreten.",
"error_addon_no_ingress": "Das angeforderte Add-on unterstützt keinen Ingress", "error_addon_no_ingress": "Das angeforderte Add-on unterstützt keinen Ingress",
"error_addon_not_found": "Add-on nicht gefunden", "error_addon_not_found": "Add-on nicht gefunden",
"error_addon_not_installed": "Das angeforderte Add-on ist nicht installiert. Bitte installiere es zuerst",
"error_addon_not_started": "Das angeforderte Add-on läuft nicht. Bitte starte es zuerst",
"faq_link": "Häufig gestellten Fragen zu Home Assistant", "faq_link": "Häufig gestellten Fragen zu Home Assistant",
"not_supported": "Diese Weiterleitung wird von deiner Home Assistant-Instanz nicht unterstützt. Überprüfe den {link} auf die unterstützten Weiterleitungen und die Version, in der sie eingeführt wurden." "not_supported": "Diese Weiterleitung wird von deiner Home Assistant-Instanz nicht unterstützt. Überprüfe den {link} auf die unterstützten Weiterleitungen und die Version, in der sie eingeführt wurden."
}, },
@ -385,8 +387,13 @@
"create_blocked_not_running": "Das Erstellen eines Snapshots ist derzeit nicht möglich, da sich das System im Zustand {state} befindet.", "create_blocked_not_running": "Das Erstellen eines Snapshots ist derzeit nicht möglich, da sich das System im Zustand {state} befindet.",
"create_snapshot": "Datensicherung erstellen", "create_snapshot": "Datensicherung erstellen",
"created": "Erstellt", "created": "Erstellt",
"delete_selected": "Ausgewählten Snapshot löschen",
"delete_snapshot_confirm": "löschen",
"delete_snapshot_text": "Möchtest du {number} {number, plural,\n one {den Snapshot}\n other {die Snapshots}\n} löschen?",
"delete_snapshot_title": "Snapshot löschen",
"description": "Datensicherungen ermöglichen dir das leichte Speichern und Wiederherstellen von allen Daten aus Home Assistant.", "description": "Datensicherungen ermöglichen dir das leichte Speichern und Wiederherstellen von allen Daten aus Home Assistant.",
"enter_password": "Bitte Passwort eingeben.", "enter_password": "Bitte Passwort eingeben.",
"failed_to_delete": "Löschen fehlgeschlagen",
"folder": { "folder": {
"addons/local": "Lokale Add-ons", "addons/local": "Lokale Add-ons",
"homeassistant": "Home Assistant-Konfiguration", "homeassistant": "Home Assistant-Konfiguration",
@ -403,6 +410,8 @@
"password_protected": "Passwort geschützt", "password_protected": "Passwort geschützt",
"password_protection": "Passwortschutz", "password_protection": "Passwortschutz",
"security": "Sicherheit", "security": "Sicherheit",
"select_type": "Wähle aus, was wiederhergestellt werden soll",
"selected": "{number} ausgewählt",
"type": "Typ", "type": "Typ",
"upload_snapshot": "Datensicherung hochladen" "upload_snapshot": "Datensicherung hochladen"
}, },
@ -720,6 +729,9 @@
"no_match": "Keine übereinstimmende Bereiche gefunden", "no_match": "Keine übereinstimmende Bereiche gefunden",
"show_areas": "Bereiche anzeigen" "show_areas": "Bereiche anzeigen"
}, },
"attributes": {
"expansion_header": "Attribute"
},
"blueprint-picker": { "blueprint-picker": {
"add_user": "Benutzer hinzufügen", "add_user": "Benutzer hinzufügen",
"remove_user": "Benutzer entfernen", "remove_user": "Benutzer entfernen",
@ -921,6 +933,9 @@
"config_entry_system_options": { "config_entry_system_options": {
"enable_new_entities_description": "Wenn deaktiviert werden neu erkannte Entitäten für {integration} nicht automatisch zu Home Assistant hinzugefügt.", "enable_new_entities_description": "Wenn deaktiviert werden neu erkannte Entitäten für {integration} nicht automatisch zu Home Assistant hinzugefügt.",
"enable_new_entities_label": "Neu hinzugefügte Entitäten aktivieren.", "enable_new_entities_label": "Neu hinzugefügte Entitäten aktivieren.",
"enable_polling_description": "Ob Home Assistant automatisch {integration} Entitäten nach Updates abfragen soll.",
"enable_polling_label": "Aktiviere Polling für Updates.",
"restart_home_assistant": "Du musst Home Assistant neu starten, damit deine Änderungen wirksam werden.",
"title": "Einstellungen für {integration}", "title": "Einstellungen für {integration}",
"update": "Aktualisieren" "update": "Aktualisieren"
}, },
@ -1719,6 +1734,7 @@
"title": "Alexa" "title": "Alexa"
}, },
"connected": "Verbunden", "connected": "Verbunden",
"connecting": "Verbinde...",
"connection_status": "Cloud-Verbindungsstatus", "connection_status": "Cloud-Verbindungsstatus",
"fetching_subscription": "Abo wird abgerufen ...", "fetching_subscription": "Abo wird abgerufen ...",
"google": { "google": {
@ -2062,7 +2078,8 @@
"scripts": "Skripte", "scripts": "Skripte",
"unknown_error": "Unbekannter Fehler", "unknown_error": "Unbekannter Fehler",
"unnamed_device": "Unbenanntes Gerät", "unnamed_device": "Unbenanntes Gerät",
"update": "Aktualisieren" "update": "Aktualisieren",
"update_device_error": "Aktualisieren des Geräts fehlgeschlagen"
}, },
"entities": { "entities": {
"caption": "Entitäten", "caption": "Entitäten",
@ -2195,6 +2212,7 @@
"depends_on_cloud": "Abhängig von der Cloud", "depends_on_cloud": "Abhängig von der Cloud",
"device_unavailable": "Gerät nicht verfügbar", "device_unavailable": "Gerät nicht verfügbar",
"devices": "{count} {count, plural,\n one {Gerät}\n other {Geräte}\n}", "devices": "{count} {count, plural,\n one {Gerät}\n other {Geräte}\n}",
"disable_error": "Aktivieren oder Deaktivieren der Integration fehlgeschlagen",
"disable_restart_confirm": "Home Assistant neu starten, um das Deaktivieren dieser Integration abzuschließen", "disable_restart_confirm": "Home Assistant neu starten, um das Deaktivieren dieser Integration abzuschließen",
"disable": { "disable": {
"disable_confirm": "Möchtest du diesen Konfigurationseintrag wirklich deaktivieren? Die Geräte und Entitäten werden deaktiviert.", "disable_confirm": "Möchtest du diesen Konfigurationseintrag wirklich deaktivieren? Die Geräte und Entitäten werden deaktiviert.",
@ -2206,6 +2224,7 @@
}, },
"disabled_cause": "Deaktiviert durch {cause}." "disabled_cause": "Deaktiviert durch {cause}."
}, },
"disabled_polling": "Automatisches Abfragen nach aktualisierten Daten deaktiviert",
"documentation": "Dokumentation", "documentation": "Dokumentation",
"enable_restart_confirm": "Home Assistant neu starten, um das Aktivieren dieser Integration abzuschließen", "enable_restart_confirm": "Home Assistant neu starten, um das Aktivieren dieser Integration abzuschließen",
"entities": "{count} {count, plural,\none {Entität}\nother {Entitäten}\n}", "entities": "{count} {count, plural,\none {Entität}\nother {Entitäten}\n}",
@ -2959,6 +2978,7 @@
}, },
"logs": { "logs": {
"log_level": "Protokollstufe", "log_level": "Protokollstufe",
"log_level_changed": "Log Level geändert auf: {level}",
"subscribed_to_logs": "Abonniert Z-Wave JS-Protokollnachrichten ...", "subscribed_to_logs": "Abonniert Z-Wave JS-Protokollnachrichten ...",
"title": "Z-Wave JS Protokolle" "title": "Z-Wave JS Protokolle"
}, },

View File

@ -368,6 +368,8 @@
"error": "An unknown error occurred", "error": "An unknown error occurred",
"error_addon_no_ingress": "The requested add-on does not support ingress", "error_addon_no_ingress": "The requested add-on does not support ingress",
"error_addon_not_found": "Add-on not found", "error_addon_not_found": "Add-on not found",
"error_addon_not_installed": "The requested add-on is not installed. Please install it first",
"error_addon_not_started": "The requested add-on are not running. Please start it first",
"faq_link": "My Home Assistant FAQ", "faq_link": "My Home Assistant FAQ",
"not_supported": "This redirect is not supported by your Home Assistant instance. Check the {link} for the supported redirects and the version they where introduced." "not_supported": "This redirect is not supported by your Home Assistant instance. Check the {link} for the supported redirects and the version they where introduced."
}, },
@ -2719,7 +2721,7 @@
"validation": { "validation": {
"check_config": "Check configuration", "check_config": "Check configuration",
"heading": "Configuration validation", "heading": "Configuration validation",
"introduction": "Validate your configuration if you recently made some changes to your configuration and want to make sure that it is all valid", "introduction": "Validate your configuration if you recently made some changes to your configuration and want to make sure that it is all valid.",
"invalid": "Configuration invalid", "invalid": "Configuration invalid",
"valid": "Configuration valid!" "valid": "Configuration valid!"
} }

View File

@ -367,6 +367,8 @@
"my": { "my": {
"error": "Ha ocurrido un error desconocido", "error": "Ha ocurrido un error desconocido",
"error_addon_not_found": "Complemento no encontrado", "error_addon_not_found": "Complemento no encontrado",
"error_addon_not_installed": "El complemento solicitado no está instalado. Por favor instálelo primero",
"error_addon_not_started": "El complemento solicitado no se están ejecutando. Por favor inícielo antes.",
"faq_link": "Mis preguntas frecuentes de Home Assistant", "faq_link": "Mis preguntas frecuentes de Home Assistant",
"not_supported": "Esta redirección no está soportada por su instancia de Home Assistant. Consulte las redirecciones soportadas y la versión en la que fueron introducidas en {link}." "not_supported": "Esta redirección no está soportada por su instancia de Home Assistant. Consulte las redirecciones soportadas y la versión en la que fueron introducidas en {link}."
}, },
@ -2031,7 +2033,8 @@
"scripts": "Scripts", "scripts": "Scripts",
"unknown_error": "Error desconocido", "unknown_error": "Error desconocido",
"unnamed_device": "Dispositivo sin nombre", "unnamed_device": "Dispositivo sin nombre",
"update": "Actualizar" "update": "Actualizar",
"update_device_error": "Error al actualizar el dispositivo"
}, },
"entities": { "entities": {
"caption": "Entidades", "caption": "Entidades",
@ -2163,6 +2166,7 @@
"depends_on_cloud": "Depende de la nube", "depends_on_cloud": "Depende de la nube",
"device_unavailable": "Dispositivo no disponible", "device_unavailable": "Dispositivo no disponible",
"devices": "{count} {count, plural,\n one {dispositivo}\n other {dispositivos}\n}", "devices": "{count} {count, plural,\n one {dispositivo}\n other {dispositivos}\n}",
"disable_error": "Ha fallado la habilitación o deshabilitación de la integración",
"disable_restart_confirm": "Reinicie Home Assistant para terminar de deshabilitar esta integración", "disable_restart_confirm": "Reinicie Home Assistant para terminar de deshabilitar esta integración",
"disable": { "disable": {
"disable_confirm": "¿Está seguro de que desea deshabilitar esta entrada de configuración? Sus dispositivos y entidades serán deshabilitados.", "disable_confirm": "¿Está seguro de que desea deshabilitar esta entrada de configuración? Sus dispositivos y entidades serán deshabilitados.",

View File

@ -368,6 +368,8 @@
"error": "Se ha producido un error desconocido", "error": "Se ha producido un error desconocido",
"error_addon_no_ingress": "El complemento solicitado no admite la entrada", "error_addon_no_ingress": "El complemento solicitado no admite la entrada",
"error_addon_not_found": "Complemento no encontrado", "error_addon_not_found": "Complemento no encontrado",
"error_addon_not_installed": "El complemento solicitado no está instalado. Por favor instálalo primero",
"error_addon_not_started": "El complemento solicitado no se está ejecutando. Por favor, inícialo primero",
"faq_link": "Preguntas frecuentes sobre mi Home Assistant", "faq_link": "Preguntas frecuentes sobre mi Home Assistant",
"not_supported": "Esta redirección no es compatible con tu instancia de Home Assistant. Consulta el {link} para conocer las redirecciones admitidas y la versión en la que se introdujeron." "not_supported": "Esta redirección no es compatible con tu instancia de Home Assistant. Consulta el {link} para conocer las redirecciones admitidas y la versión en la que se introdujeron."
}, },
@ -2719,7 +2721,7 @@
"validation": { "validation": {
"check_config": "Verificar configuración", "check_config": "Verificar configuración",
"heading": "Validación de la configuración", "heading": "Validación de la configuración",
"introduction": "Valida tu configuración si has realizado cambios recientemente y quieres asegurarte de que son correctos", "introduction": "Valida tu configuración si has realizado cambios recientemente en ella y quieres asegurarte de que son correctos",
"invalid": "Configuración no válida", "invalid": "Configuración no válida",
"valid": "¡Configuración valida!" "valid": "¡Configuración valida!"
} }

View File

@ -368,6 +368,8 @@
"error": "Viga", "error": "Viga",
"error_addon_no_ingress": "Valitud lisandmoodul ei toeta ingressi", "error_addon_no_ingress": "Valitud lisandmoodul ei toeta ingressi",
"error_addon_not_found": "Lisandmoodulit ei leitud", "error_addon_not_found": "Lisandmoodulit ei leitud",
"error_addon_not_installed": "Soovitud lisandmoodul pole pigaldatud. Alustamiseks paigalda see",
"error_addon_not_started": "Soovitud lisandmoodul ei tööta. Alustamiseks käivita see",
"faq_link": "KKK viide", "faq_link": "KKK viide",
"not_supported": "pole toetatud" "not_supported": "pole toetatud"
}, },
@ -929,7 +931,7 @@
}, },
"dialogs": { "dialogs": {
"config_entry_system_options": { "config_entry_system_options": {
"enable_new_entities_description": "Kas lisada äsja avastatud sidumise {integration} olemed automaatselt Home Assistant'i.", "enable_new_entities_description": "Kas lisada äsja avastatud sidumise {integration} olemeid automaatselt Home Assistant'i.",
"enable_new_entities_label": "Luba äsja lisatud olemid.", "enable_new_entities_label": "Luba äsja lisatud olemid.",
"enable_polling_description": "Kas Home Assistant peaks automaatselt küsitlema {integration} üksusi uuenduste saamiseks.", "enable_polling_description": "Kas Home Assistant peaks automaatselt küsitlema {integration} üksusi uuenduste saamiseks.",
"enable_polling_label": "Luba värskenduste jaoks küsitlus.", "enable_polling_label": "Luba värskenduste jaoks küsitlus.",
@ -2719,7 +2721,7 @@
"validation": { "validation": {
"check_config": "Kontrolli seadeid", "check_config": "Kontrolli seadeid",
"heading": "Seadete kontrollimine", "heading": "Seadete kontrollimine",
"introduction": "Kontrolli oma seadeid kui oled neis hiljuti muutusi teinud ja tahad veenduda, et kõik on korrektne", "introduction": "Kontrolli oma seadeid kui oled neis hiljuti muutusi teinud ja tahad veenduda, et kõik on korrektne.",
"invalid": "Konfiguratsioon on vigane", "invalid": "Konfiguratsioon on vigane",
"valid": "Konfiguratsioon on korrektne!" "valid": "Konfiguratsioon on korrektne!"
} }

File diff suppressed because it is too large Load Diff

View File

@ -368,6 +368,8 @@
"error": "Si è verificato un errore sconosciuto", "error": "Si è verificato un errore sconosciuto",
"error_addon_no_ingress": "Il componente aggiuntivo richiesto non supporta l'ingresso", "error_addon_no_ingress": "Il componente aggiuntivo richiesto non supporta l'ingresso",
"error_addon_not_found": "Componente aggiuntivo non trovato", "error_addon_not_found": "Componente aggiuntivo non trovato",
"error_addon_not_installed": "Il componente aggiuntivo richiesto non è installato. Si prega di installarlo prima di proseguire",
"error_addon_not_started": "Il componente aggiuntivo non è in esecuzione. Si prega di avviarlo prima di proseguire",
"faq_link": "My Home Assistant FAQ", "faq_link": "My Home Assistant FAQ",
"not_supported": "Questo reindirizzamento non è supportato dall'istanza di Home Assistant. Controlla il {link} per i reindirizzamenti supportati e la versione in cui sono stati introdotti." "not_supported": "Questo reindirizzamento non è supportato dall'istanza di Home Assistant. Controlla il {link} per i reindirizzamenti supportati e la versione in cui sono stati introdotti."
}, },
@ -411,7 +413,7 @@
"select_type": "Seleziona cosa ripristinare", "select_type": "Seleziona cosa ripristinare",
"selected": "{number} selezionato/i", "selected": "{number} selezionato/i",
"type": "Tipo di istantanea", "type": "Tipo di istantanea",
"upload_snapshot": "Invia istantanea" "upload_snapshot": "Aggiungi istantanea"
}, },
"store": { "store": {
"missing_addons": "Componenti aggiuntivi mancanti? Abilita la modalità avanzata nella pagina del tuo profilo utente", "missing_addons": "Componenti aggiuntivi mancanti? Abilita la modalità avanzata nella pagina del tuo profilo utente",
@ -2076,7 +2078,8 @@
"scripts": "Script", "scripts": "Script",
"unknown_error": "Errore sconosciuto", "unknown_error": "Errore sconosciuto",
"unnamed_device": "Dispositivo senza nome", "unnamed_device": "Dispositivo senza nome",
"update": "Aggiorna" "update": "Aggiorna",
"update_device_error": "Aggiornamento del dispositivo non riuscito"
}, },
"entities": { "entities": {
"caption": "Entità", "caption": "Entità",
@ -2209,6 +2212,7 @@
"depends_on_cloud": "Dipende dal cloud", "depends_on_cloud": "Dipende dal cloud",
"device_unavailable": "Dispositivo non disponibile", "device_unavailable": "Dispositivo non disponibile",
"devices": "{count} {count, plural, \none {dispositivo}\nother {dispositivi}\n}", "devices": "{count} {count, plural, \none {dispositivo}\nother {dispositivi}\n}",
"disable_error": "Abilitazione o disabilitazione dell'integrazione non riuscita",
"disable_restart_confirm": "Riavvia Home Assistant per terminare la disabilitazione di questa integrazione", "disable_restart_confirm": "Riavvia Home Assistant per terminare la disabilitazione di questa integrazione",
"disable": { "disable": {
"disable_confirm": "Sei sicuro di voler disabilitare questa voce di configurazione? I suoi dispositivi ed entità saranno disabilitati.", "disable_confirm": "Sei sicuro di voler disabilitare questa voce di configurazione? I suoi dispositivi ed entità saranno disabilitati.",

View File

@ -368,6 +368,8 @@
"error": "알 수 없는 오류가 발생했습니다", "error": "알 수 없는 오류가 발생했습니다",
"error_addon_no_ingress": "해당 애드온은 인그레스를 지원하지 않습니다.", "error_addon_no_ingress": "해당 애드온은 인그레스를 지원하지 않습니다.",
"error_addon_not_found": "애드온을 찾을 수 없습니다", "error_addon_not_found": "애드온을 찾을 수 없습니다",
"error_addon_not_installed": "해당 애드온은 설치되어있지 않습니다. 애드온을 설치해주세요.",
"error_addon_not_started": "해당 애드온은 실행중이지 않습니다. 애드온을 실행해주세요.",
"faq_link": "내 Home Assistant 자주 묻는 질문", "faq_link": "내 Home Assistant 자주 묻는 질문",
"not_supported": "이 리디렉션은 Home Assistant 인스턴스에서 지원되지 않습니다. {link}에서 지원되는 리디렉션과 리디렉션이 도입된 버전을 확인해주세요." "not_supported": "이 리디렉션은 Home Assistant 인스턴스에서 지원되지 않습니다. {link}에서 지원되는 리디렉션과 리디렉션이 도입된 버전을 확인해주세요."
}, },
@ -387,7 +389,7 @@
"created": "생성됨", "created": "생성됨",
"delete_selected": "선택한 스냅샷 삭제", "delete_selected": "선택한 스냅샷 삭제",
"delete_snapshot_confirm": "삭제", "delete_snapshot_confirm": "삭제",
"delete_snapshot_text": "{number} {number, plural,\n one{개의 스냅샷}\n other{개의 스냅샷}\n} 삭제하시겠습니까?", "delete_snapshot_text": "{number} {number, plural,\n one{개의 스냅샷}\n other{개의 스냅샷}\n} 삭제하시겠습니까?",
"delete_snapshot_title": "스냅샷 삭제", "delete_snapshot_title": "스냅샷 삭제",
"description": "스냅숏을 사용하면 Home Assistant 인스턴스의 모든 데이터를 쉽게 백업하고 복원할 수 있습니다.", "description": "스냅숏을 사용하면 Home Assistant 인스턴스의 모든 데이터를 쉽게 백업하고 복원할 수 있습니다.",
"enter_password": "비밀번호를 입력해주세요.", "enter_password": "비밀번호를 입력해주세요.",
@ -2076,7 +2078,8 @@
"scripts": "스크립트", "scripts": "스크립트",
"unknown_error": "알 수 없는 오류", "unknown_error": "알 수 없는 오류",
"unnamed_device": "이름이 없는 기기", "unnamed_device": "이름이 없는 기기",
"update": "업데이트" "update": "업데이트",
"update_device_error": "장치 업데이트 실패"
}, },
"entities": { "entities": {
"caption": "구성요소", "caption": "구성요소",
@ -2209,6 +2212,7 @@
"depends_on_cloud": "클라우드 서비스", "depends_on_cloud": "클라우드 서비스",
"device_unavailable": "기기 사용불가", "device_unavailable": "기기 사용불가",
"devices": "{count} {count, plural,\none{개의 기기}\nother{개의 기기}\n}", "devices": "{count} {count, plural,\none{개의 기기}\nother{개의 기기}\n}",
"disable_error": "통합구성요소 활성화 혹은 비활성화 실패",
"disable_restart_confirm": "이 통합 구성요소를 비활성화하려면 Home Assistant를 다시 시작해주세요", "disable_restart_confirm": "이 통합 구성요소를 비활성화하려면 Home Assistant를 다시 시작해주세요",
"disable": { "disable": {
"disable_confirm": "이 구성 항목을 비활성화하시겠습니까? 해당 기기 및 구성요소가 비활성화됩니다.", "disable_confirm": "이 구성 항목을 비활성화하시겠습니까? 해당 기기 및 구성요소가 비활성화됩니다.",

View File

@ -368,6 +368,8 @@
"error": "En ukjent feil har oppstått", "error": "En ukjent feil har oppstått",
"error_addon_no_ingress": "Det etterspurte tillegget støtter ikke inngang", "error_addon_no_ingress": "Det etterspurte tillegget støtter ikke inngang",
"error_addon_not_found": "Tillegget ble ikke funnet", "error_addon_not_found": "Tillegget ble ikke funnet",
"error_addon_not_installed": "Det forespurte tillegget er ikke installert. Vennligst installer den først",
"error_addon_not_started": "Det valgte tillegget kjører ikke. Vennligst start den først",
"faq_link": "Vanlige spørsmål om Min Home Assistant", "faq_link": "Vanlige spørsmål om Min Home Assistant",
"not_supported": "Denne viderekoblingen støttes ikke av Home Assistant-forekomsten. Se på {link} for viderekoblinger som støttes, og hvilken versjon de ble introdusert." "not_supported": "Denne viderekoblingen støttes ikke av Home Assistant-forekomsten. Se på {link} for viderekoblinger som støttes, og hvilken versjon de ble introdusert."
}, },
@ -2719,7 +2721,7 @@
"validation": { "validation": {
"check_config": "Sjekk konfigurasjonen", "check_config": "Sjekk konfigurasjonen",
"heading": "Validering av konfigurasjon", "heading": "Validering av konfigurasjon",
"introduction": "Valider konfigurasjonen hvis du nylig har gjort endringer i konfigurasjonen og vil forsikre deg om at den er gyldig", "introduction": "Bekreft konfigurasjonen hvis du nylig har gjort noen endringer i konfigurasjonen og vil være sikker på at den er gyldig.",
"invalid": "Ugyldig konfigurasjon", "invalid": "Ugyldig konfigurasjon",
"valid": "Gyldig konfigurasjon" "valid": "Gyldig konfigurasjon"
} }

View File

@ -368,6 +368,8 @@
"error": "Er is een onbekende fout opgetreden", "error": "Er is een onbekende fout opgetreden",
"error_addon_no_ingress": "De gevraagde add-on ondersteunt geen ingress", "error_addon_no_ingress": "De gevraagde add-on ondersteunt geen ingress",
"error_addon_not_found": "Invoegtoepassing niet gevonden", "error_addon_not_found": "Invoegtoepassing niet gevonden",
"error_addon_not_installed": "De gevraagde add-on is niet geïnstalleerd. Gelieve deze eerst te installeren",
"error_addon_not_started": "De gevraagde add-on is niet actief. Start deze a.u.b. eerst",
"faq_link": "My Home Assistant FAQ", "faq_link": "My Home Assistant FAQ",
"not_supported": "Deze redirect wordt niet ondersteund door uw Home Assistant instantie. Controleer de {link} voor de ondersteunde redirects en de versie waarin ze zijn geïntroduceerd." "not_supported": "Deze redirect wordt niet ondersteund door uw Home Assistant instantie. Controleer de {link} voor de ondersteunde redirects en de versie waarin ze zijn geïntroduceerd."
}, },
@ -2076,7 +2078,8 @@
"scripts": "Scripts", "scripts": "Scripts",
"unknown_error": "Onbekende fout", "unknown_error": "Onbekende fout",
"unnamed_device": "Naamloos apparaat", "unnamed_device": "Naamloos apparaat",
"update": "Bijwerken" "update": "Bijwerken",
"update_device_error": "Updaten van het apparaat mislukt"
}, },
"entities": { "entities": {
"caption": "Entiteiten", "caption": "Entiteiten",

View File

@ -368,6 +368,8 @@
"error": "Wystąpił nieznany błąd", "error": "Wystąpił nieznany błąd",
"error_addon_no_ingress": "Żądany dodatek nie obsługuje osadzania", "error_addon_no_ingress": "Żądany dodatek nie obsługuje osadzania",
"error_addon_not_found": "Nie znaleziono dodatku", "error_addon_not_found": "Nie znaleziono dodatku",
"error_addon_not_installed": "Żądany dodatek nie jest zainstalowany. Najpierw go zainstaluj.",
"error_addon_not_started": "Żądany dodatek nie jest uruchomiony. Proszę najpierw go uruchomić.",
"faq_link": "Mój Home Assistant - często zadawane pytania", "faq_link": "Mój Home Assistant - często zadawane pytania",
"not_supported": "To przekierowanie nie jest obsługiwane przez Twoją instancję Home Assistanta. Sprawdź {link} aby znaleźć obsługiwane przekierowania i wersję, w której zostały wprowadzone." "not_supported": "To przekierowanie nie jest obsługiwane przez Twoją instancję Home Assistanta. Sprawdź {link} aby znaleźć obsługiwane przekierowania i wersję, w której zostały wprowadzone."
}, },
@ -929,8 +931,11 @@
}, },
"dialogs": { "dialogs": {
"config_entry_system_options": { "config_entry_system_options": {
"enable_new_entities_description": "Jeśli wyłączone, nowo wykryte encje integracji {integration} nie będą automatycznie dodawane do Home Assistanta.", "enable_new_entities_description": "Jeśli nowo odkryte urządzenia dla integracji {integration} powinny zostać dodane automatycznie.",
"enable_new_entities_label": "Włącz dodawanie nowych encji.", "enable_new_entities_label": "Włącz dodawanie nowych encji.",
"enable_polling_description": "Czy Home Assistant powinien automatycznie odpytywać encje {integration} w poszukiwaniu aktualizacji.",
"enable_polling_label": "Włącz odpytywanie o aktualizacje.",
"restart_home_assistant": "Aby zmiany zostały wprowadzone, musisz ponownie uruchomić Home Assistanta.",
"title": "Opcje systemowe dla {integration}", "title": "Opcje systemowe dla {integration}",
"update": "Aktualizuj" "update": "Aktualizuj"
}, },
@ -2073,7 +2078,8 @@
"scripts": "Skrypty", "scripts": "Skrypty",
"unknown_error": "Nieznany błąd", "unknown_error": "Nieznany błąd",
"unnamed_device": "Nienazwane urządzenie", "unnamed_device": "Nienazwane urządzenie",
"update": "Aktualizuj" "update": "Aktualizuj",
"update_device_error": "Aktualizacja urządzenia nie powiodła się"
}, },
"entities": { "entities": {
"caption": "Rejestr encji", "caption": "Rejestr encji",
@ -2206,6 +2212,7 @@
"depends_on_cloud": "Zależny od chmury", "depends_on_cloud": "Zależny od chmury",
"device_unavailable": "Urządzenie niedostępne", "device_unavailable": "Urządzenie niedostępne",
"devices": "{count} {count, plural,\n one {urządzenie}\n few {urządzenia}\n many {urządzeń}\n other {urządzeń}\n}", "devices": "{count} {count, plural,\n one {urządzenie}\n few {urządzenia}\n many {urządzeń}\n other {urządzeń}\n}",
"disable_error": "Nie udało się włączyć lub wyłączyć integracji",
"disable_restart_confirm": "Zrestartuj Home Assistanta, aby zakończyć wyłączanie tej integracji", "disable_restart_confirm": "Zrestartuj Home Assistanta, aby zakończyć wyłączanie tej integracji",
"disable": { "disable": {
"disable_confirm": "Czy na pewno chcesz wyłączyć ten wpis w konfiguracji? Jego urządzenia i instancje zostaną wyłączone.", "disable_confirm": "Czy na pewno chcesz wyłączyć ten wpis w konfiguracji? Jego urządzenia i instancje zostaną wyłączone.",
@ -2217,6 +2224,7 @@
}, },
"disabled_cause": "Wyłączone przez {cause}." "disabled_cause": "Wyłączone przez {cause}."
}, },
"disabled_polling": "Automatyczne odpytywanie o zaktualizowane dane jest wyłączone",
"documentation": "Dokumentacja", "documentation": "Dokumentacja",
"enable_restart_confirm": "Uruchom ponownie Home Assistanta, aby dokończyć uruchamianie tej integracji", "enable_restart_confirm": "Uruchom ponownie Home Assistanta, aby dokończyć uruchamianie tej integracji",
"entities": "{count} {count, plural,\n one {encja}\n few {encje}\n many {encji}\n other {encji}\n}", "entities": "{count} {count, plural,\n one {encja}\n few {encje}\n many {encji}\n other {encji}\n}",

View File

@ -368,6 +368,8 @@
"error": "Произошла неизвестная ошибка", "error": "Произошла неизвестная ошибка",
"error_addon_no_ingress": "Дополнение не поддерживает ingress.", "error_addon_no_ingress": "Дополнение не поддерживает ingress.",
"error_addon_not_found": "Дополнение не найдено.", "error_addon_not_found": "Дополнение не найдено.",
"error_addon_not_installed": "Запрошенное дополнение не установлено. Сначала нужно установить его.",
"error_addon_not_started": "Запрашиваемое дополнение не запущено. Сначала нужно запустить его.",
"faq_link": "часто задаваемыми вопросами по My Home Assistant", "faq_link": "часто задаваемыми вопросами по My Home Assistant",
"not_supported": "Это перенаправление не поддерживается Вашим Home Assistant. Ознакомьтесь с {link}, чтобы узнать поддерживаемые перенаправления и версии, в которых они были добавлены." "not_supported": "Это перенаправление не поддерживается Вашим Home Assistant. Ознакомьтесь с {link}, чтобы узнать поддерживаемые перенаправления и версии, в которых они были добавлены."
}, },
@ -400,17 +402,17 @@
"ssl": "SSL" "ssl": "SSL"
}, },
"folders": "Папки", "folders": "Папки",
"full_snapshot": "Полный", "full_snapshot": "Все файлы",
"name": "Название", "name": "Название",
"no_snapshots": "Не найдено ни одного снимка", "no_snapshots": "Не найдено ни одного снимка",
"partial_snapshot": "Выборочный", "partial_snapshot": "Выбрать из списка",
"password": "Пароль", "password": "Пароль",
"password_protected": "защищено паролем", "password_protected": "защищено паролем",
"password_protection": "Защита паролем", "password_protection": "Защита паролем",
"security": "Безопасность", "security": "Безопасность",
"select_type": "Выберите что нужно восстановить", "select_type": "Выберите что нужно восстановить из этого снимка файловой системы",
"selected": "Выбрано: {number}", "selected": "Выбрано: {number}",
"type": "Тип снимка", "type": "Выберите что должен включать в себя снимок файловой системы",
"upload_snapshot": "Загрузить снимок на сервер" "upload_snapshot": "Загрузить снимок на сервер"
}, },
"store": { "store": {
@ -2719,7 +2721,7 @@
"validation": { "validation": {
"check_config": "Начать проверку", "check_config": "Начать проверку",
"heading": "Проверка конфигурации", "heading": "Проверка конфигурации",
"introduction": "Проверьте файлы конфигурации, если Вы внесли в них изменения.", "introduction": "Выполните проверку конфигурации, если в неё были внесены изменения и Вы хотите убедиться в её работоспособности.",
"invalid": "Ошибка в конфигурации", "invalid": "Ошибка в конфигурации",
"valid": "Конфигурация выполнена верно" "valid": "Конфигурация выполнена верно"
} }

View File

@ -368,6 +368,8 @@
"error": "发生未知错误", "error": "发生未知错误",
"error_addon_no_ingress": "请求的加载项不支持 ingress", "error_addon_no_ingress": "请求的加载项不支持 ingress",
"error_addon_not_found": "未找到加载项", "error_addon_not_found": "未找到加载项",
"error_addon_not_installed": "请求的加载项尚未安装,请先安装",
"error_addon_not_started": "请求的加载项未运行,请先运行",
"faq_link": "我的 Home Assistant 常见问题", "faq_link": "我的 Home Assistant 常见问题",
"not_supported": "您的 Home Assistant 不支持此重定向。请查阅{link}以获取受支持的重定向及其引入的版本。" "not_supported": "您的 Home Assistant 不支持此重定向。请查阅{link}以获取受支持的重定向及其引入的版本。"
}, },
@ -1806,7 +1808,7 @@
} }
}, },
"alexa": { "alexa": {
"banner": "由于您在 configuration.yaml 中配置了实体过滤器,无法通过此 UI 修改要开放的实体。", "banner": "无法通过此 UI 修改要开放的实体,因为您在 configuration.yaml 中配置了实体过滤器。",
"dont_expose_entity": "使实体不可发现", "dont_expose_entity": "使实体不可发现",
"expose": "向Alexa发送你的位置", "expose": "向Alexa发送你的位置",
"expose_entity": "使实体可发现", "expose_entity": "使实体可发现",
@ -2719,7 +2721,7 @@
"validation": { "validation": {
"check_config": "检查配置", "check_config": "检查配置",
"heading": "配置检查", "heading": "配置检查",
"introduction": "此处可以帮助您检验最新修改的配置文件有效性", "introduction": "此处可以帮助您检验最新修改的配置文件有效性",
"invalid": "配置无效", "invalid": "配置无效",
"valid": "配置有效!" "valid": "配置有效!"
} }

View File

@ -368,6 +368,8 @@
"error": "發生未知錯誤", "error": "發生未知錯誤",
"error_addon_no_ingress": "所要求的附加元件不支援 ingress", "error_addon_no_ingress": "所要求的附加元件不支援 ingress",
"error_addon_not_found": "找不到附加元件", "error_addon_not_found": "找不到附加元件",
"error_addon_not_installed": "所要求的附加元件未安裝,請先進行安裝。",
"error_addon_not_started": "所要求的附加元件未執行,請先進行啟動。",
"faq_link": "Home Assistant 常見問答集", "faq_link": "Home Assistant 常見問答集",
"not_supported": "Home Assistant 不支援此重新導向。點選 {link} 獲取支援之重新導向與版本。" "not_supported": "Home Assistant 不支援此重新導向。點選 {link} 獲取支援之重新導向與版本。"
}, },
@ -2719,7 +2721,7 @@
"validation": { "validation": {
"check_config": "檢查設定內容", "check_config": "檢查設定內容",
"heading": "設定驗證", "heading": "設定驗證",
"introduction": "如果您對設定進行了一些更改、並且想確保設定有無錯誤,可以選擇驗證設定內容。", "introduction": "如果您對設定進行了部分更改、並且想確保設定有無錯誤,可以選擇驗證設定內容。",
"invalid": "設定無效", "invalid": "設定無效",
"valid": "設定檔內容檢查正確" "valid": "設定檔內容檢查正確"
} }

View File

@ -4041,9 +4041,9 @@ async-each@^1.0.0, async-each@^1.0.1:
integrity sha512-6xrbvN0MOBKSJDdonmSSz2OwFSgxRaVtBDes26mj9KIGtDo+g9xosFRSC+i1gQh2oAN/tQ62AI/pGZGQjVOiRg== integrity sha512-6xrbvN0MOBKSJDdonmSSz2OwFSgxRaVtBDes26mj9KIGtDo+g9xosFRSC+i1gQh2oAN/tQ62AI/pGZGQjVOiRg==
async-limiter@~1.0.0: async-limiter@~1.0.0:
version "1.0.0" version "1.0.1"
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
async-settle@^1.0.0: async-settle@^1.0.0:
version "1.0.0" version "1.0.0"
@ -13503,9 +13503,9 @@ write@1.0.3:
mkdirp "^0.5.1" mkdirp "^0.5.1"
ws@^6.2.1: ws@^6.2.1:
version "6.2.1" version "6.2.2"
resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e"
integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==
dependencies: dependencies:
async-limiter "~1.0.0" async-limiter "~1.0.0"