Merge pull request #6282 from home-assistant/dev

This commit is contained in:
Paulus Schoutsen 2020-06-29 15:20:23 -07:00 committed by GitHub
commit 7d9bae16cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
77 changed files with 837 additions and 310 deletions

View File

@ -178,7 +178,6 @@ module.exports.config = {
publicPath: publicPath(latestBuild, paths.hassio_publicPath),
isProdBuild,
latestBuild,
dontHash: new Set(["entrypoint"]),
};
},

View File

@ -90,8 +90,6 @@ gulp.task("gen-pages-prod", (done) => {
});
gulp.task("gen-index-app-dev", (done) => {
// In dev mode we don't mangle names, so we hardcode urls. That way we can
// run webpack as last in watch mode, which blocks output.
const content = renderTemplate("index", {
latestAppJS: "/frontend_latest/app.js",
latestCoreJS: "/frontend_latest/core.js",
@ -201,8 +199,6 @@ gulp.task("gen-index-cast-prod", (done) => {
});
gulp.task("gen-index-demo-dev", (done) => {
// In dev mode we don't mangle names, so we hardcode urls. That way we can
// run webpack as last in watch mode, which blocks output.
const content = renderDemoTemplate("index", {
latestDemoJS: "/frontend_latest/main.js",
@ -240,8 +236,6 @@ gulp.task("gen-index-demo-prod", (done) => {
});
gulp.task("gen-index-gallery-dev", (done) => {
// In dev mode we don't mangle names, so we hardcode urls. That way we can
// run webpack as last in watch mode, which blocks output.
const content = renderGalleryTemplate("index", {
latestGalleryJS: "./frontend_latest/entrypoint.js",
});
@ -269,3 +263,39 @@ gulp.task("gen-index-gallery-prod", (done) => {
);
done();
});
gulp.task("gen-index-hassio-dev", async () => {
writeHassioEntrypoint("entrypoint.js", "entrypoints.js");
});
gulp.task("gen-index-hassio-prod", async () => {
const latestManifest = require(path.resolve(
paths.hassio_output_latest,
"manifest.json"
));
const es5Manifest = require(path.resolve(
paths.hassio_output_es5,
"manifest.json"
));
writeHassioEntrypoint(
latestManifest["entrypoint.js"],
es5Manifest["entrypoint.js"]
);
});
function writeHassioEntrypoint(latestEntrypoint, es5Entrypoint) {
fs.mkdirSync(paths.hassio_output_root, { recursive: true });
fs.writeFileSync(
path.resolve(paths.hassio_output_root, "entrypoint.js"),
`
try {
new Function("import('${paths.hassio_publicPath}/frontend_latest/${latestEntrypoint}')")();
} catch (err) {
var el = document.createElement('script');
el.src = '${paths.hassio_publicPath}/frontend_es5/${es5Entrypoint}';
document.body.appendChild(el);
}
`,
{ encoding: "utf-8" }
);
}

View File

@ -11,24 +11,6 @@ require("./webpack.js");
require("./compress.js");
require("./rollup.js");
async function writeEntrypointJS() {
// We ship two builds and we need to do feature detection on what version to load.
fs.mkdirSync(paths.hassio_output_root, { recursive: true });
fs.writeFileSync(
path.resolve(paths.hassio_output_root, "entrypoint.js"),
`
try {
new Function("import('${paths.hassio_publicPath}/frontend_latest/entrypoint.js')")();
} catch (err) {
var el = document.createElement('script');
el.src = '${paths.hassio_publicPath}/frontend_es5/entrypoint.js';
document.body.appendChild(el);
}
`,
{ encoding: "utf-8" }
);
}
gulp.task(
"develop-hassio",
gulp.series(
@ -37,7 +19,7 @@ gulp.task(
},
"clean-hassio",
"gen-icons-json",
writeEntrypointJS,
"gen-index-hassio-dev",
env.useRollup() ? "rollup-watch-hassio" : "webpack-watch-hassio"
)
);
@ -51,7 +33,7 @@ gulp.task(
"clean-hassio",
"gen-icons-json",
env.useRollup() ? "rollup-prod-hassio" : "webpack-prod-hassio",
writeEntrypointJS,
"gen-index-hassio-prod",
...// Don't compress running tests
(env.isTest() ? [] : ["compress-hassio"])
)

View File

@ -34,6 +34,11 @@ module.exports = {
hassio_dir: path.resolve(__dirname, "../hassio"),
hassio_output_root: path.resolve(__dirname, "../hassio/build"),
hassio_output_latest: path.resolve(
__dirname,
"../hassio/build/frontend_latest"
),
hassio_output_es5: path.resolve(__dirname, "../hassio/build/frontend_es5"),
hassio_publicPath: "/api/hassio/app",
translations_src: path.resolve(__dirname, "../src/translations"),

View File

@ -26,9 +26,9 @@ export const demoThemeJimpower = () => ({
"switch-checked-color": "var(--accent-color)",
"paper-dialog-background-color": "#434954",
"secondary-text-color": "#5294E2",
"google-red-500": "#E45E65",
"error-color": "#E45E65",
"divider-color": "rgba(0, 0, 0, .12)",
"google-green-500": "#39E949",
"success-color": "#39E949",
"switch-unchecked-button-color": "var(--disabled-text-color)",
"label-badge-border-color": "green",
"paper-listbox-color": "var(--primary-color)",

View File

@ -27,9 +27,9 @@ export const demoThemeKernehed = () => ({
"switch-checked-color": "var(--accent-color)",
"paper-dialog-background-color": "#292929",
"secondary-text-color": "#b58e31",
"google-red-500": "#b58e31",
"error-color": "#b58e31",
"divider-color": "rgba(0, 0, 0, .12)",
"google-green-500": "#2980b9",
"success-color": "#2980b9",
"switch-unchecked-button-color": "var(--disabled-text-color)",
"label-badge-border-color": "green",
"paper-listbox-color": "#777777",

View File

@ -107,7 +107,7 @@ class HassioAddonAudio extends LitElement {
display: block;
}
.errors {
color: var(--google-red-500);
color: var(--error-color);
margin-bottom: 16px;
}
paper-item {

View File

@ -84,7 +84,7 @@ class HassioAddonConfig extends LitElement {
justify-content: space-between;
}
.errors {
color: var(--google-red-500);
color: var(--error-color);
margin-top: 16px;
}
iron-autogrow-textarea {
@ -92,7 +92,7 @@ class HassioAddonConfig extends LitElement {
font-family: monospace;
}
.syntaxerror {
color: var(--google-red-500);
color: var(--error-color);
}
`,
];

View File

@ -105,7 +105,7 @@ class HassioAddonNetwork extends LitElement {
display: block;
}
.errors {
color: var(--google-red-500);
color: var(--error-color);
margin-bottom: 16px;
}
.card-actions {

View File

@ -560,7 +560,7 @@ class HassioAddonInfo extends LitElement {
margin-bottom: 16px;
}
ha-card.warning {
background-color: var(--google-red-500);
background-color: var(--error-color);
color: white;
}
ha-card.warning .card-header {
@ -573,8 +573,8 @@ class HassioAddonInfo extends LitElement {
--mdc-theme-primary: white !important;
}
.warning {
color: var(--google-red-500);
--mdc-theme-primary: var(--google-red-500);
color: var(--error-color);
--mdc-theme-primary: var(--error-color);
}
.light-color {
color: var(--secondary-text-color);
@ -590,7 +590,7 @@ class HassioAddonInfo extends LitElement {
vertical-align: middle;
}
.errors {
color: var(--google-red-500);
color: var(--error-color);
margin-bottom: 16px;
}
.description {

View File

@ -62,7 +62,7 @@ class HassioAddonLogs extends LitElement {
display: block;
}
.errors {
color: var(--google-red-500);
color: var(--error-color);
margin-bottom: 16px;
}
`,

View File

@ -98,7 +98,7 @@ class HassioCardContent extends LitElement {
color: var(--paper-item-icon-color);
}
ha-svg-icon.not_available {
color: var(--google-red-500);
color: var(--error-color);
}
.title {
color: var(--primary-text-color);

View File

@ -180,7 +180,7 @@ export class HassioUpdate extends LitElement {
text-align: right;
}
.errors {
color: var(--google-red-500);
color: var(--error-color);
padding: 16px;
}
a {

View File

@ -224,7 +224,7 @@ class HassioSnapshotDialog extends LitElement {
}
.warning,
.error {
color: var(--google-red-500);
color: var(--error-color);
}
.buttons {
display: flex;

View File

@ -146,7 +146,7 @@ class HassioHostInfo extends LitElement {
text-align: right;
}
.errors {
color: var(--google-red-500);
color: var(--error-color);
margin-top: 16px;
}
mwc-button.info {
@ -156,7 +156,7 @@ class HassioHostInfo extends LitElement {
margin-bottom: 10px;
}
.warning {
--mdc-theme-primary: var(--google-red-500);
--mdc-theme-primary: var(--error-color);
}
`,
];

View File

@ -117,7 +117,7 @@ class HassioSupervisorInfo extends LitElement {
text-align: right;
}
.errors {
color: var(--google-red-500);
color: var(--error-color);
margin-top: 16px;
}
`,

View File

@ -123,7 +123,7 @@ class HassioSupervisorLog extends LitElement {
width: 96%;
}
.errors {
color: var(--google-red-500);
color: var(--error-color);
margin-bottom: 16px;
}
.card-content {

View File

@ -86,7 +86,7 @@
"fecha": "^4.2.0",
"fuse.js": "^6.0.0",
"google-timezones-json": "^1.0.2",
"hls.js": "^0.12.4",
"hls.js": "^0.13.2",
"home-assistant-js-websocket": "^5.4.1",
"idb-keyval": "^3.2.0",
"intl-messageformat": "^8.3.9",

View File

@ -2,7 +2,7 @@ from setuptools import setup, find_packages
setup(
name="home-assistant-frontend",
version="20200626.1",
version="20200629.0",
description="The Home Assistant frontend",
url="https://github.com/home-assistant/home-assistant-polymer",
author="The Home Assistant Authors",

View File

@ -0,0 +1,8 @@
export const deepActiveElement = (
root: DocumentOrShadowRoot = document
): Element | null => {
if (root.activeElement?.shadowRoot?.activeElement) {
return deepActiveElement(root.activeElement.shadowRoot);
}
return root.activeElement;
};

View File

@ -8,6 +8,7 @@ import { DEFAULT_DOMAIN_ICON } from "../const";
const fixedIcons = {
alert: "hass:alert",
alexa: "hass:amazon-alexa",
air_quality: "hass:air-filter",
automation: "hass:robot",
calendar: "hass:calendar",
camera: "hass:video",

View File

@ -22,13 +22,13 @@ class HaProgressButton extends PolymerElement {
.success mwc-button {
--mdc-theme-primary: white;
background-color: var(--google-green-500);
background-color: var(--success-color);
transition: none;
}
.error mwc-button {
--mdc-theme-primary: white;
background-color: var(--google-red-500);
background-color: var(--error-color);
transition: none;
}

View File

@ -178,6 +178,9 @@ class HaCameraStream extends LitElement {
) {
const hls = new Hls({
liveBackBufferLength: 60,
fragLoadingTimeOut: 30000,
manifestLoadingTimeOut: 30000,
levelLoadingTimeOut: 30000,
});
this._hlsPolyfillInstance = hls;
hls.attachMedia(videoEl);

View File

@ -20,7 +20,7 @@ class HaClimateControl extends EventsMixin(PolymerElement) {
@apply --layout-justified;
}
.in-flux#target_temperature {
color: var(--google-red-500);
color: var(--error-color);
}
#target_temperature {
@apply --layout-self-center;

View File

@ -20,7 +20,7 @@ class HaWaterHeaterControl extends EventsMixin(PolymerElement) {
@apply --layout-justified;
}
.in-flux#target_temperature {
color: var(--google-red-500);
color: var(--error-color);
}
#target_temperature {
@apply --layout-self-center;

View File

@ -180,7 +180,7 @@ class DialogConfigEntrySystemOptions extends LitElement {
}
.error {
color: var(--google-red-500);
color: var(--error-color);
}
`,
];

View File

@ -132,7 +132,7 @@ class DialogDeviceRegistryDetail extends LitElement {
margin-right: auto;
}
.error {
color: var(--google-red-500);
color: var(--error-color);
}
`,
];

View File

@ -34,7 +34,7 @@ class MoreInfoAlarmControlPanel extends LocalizeMixin(PolymerElement) {
max-width: 200px;
}
mwc-button.disarm {
color: var(--google-red-500);
color: var(--error-color);
}
</style>

View File

@ -64,7 +64,7 @@ class MoreInfoControls extends LocalizeMixin(EventsMixin(PolymerElement)) {
}
mwc-button.warning {
--mdc-theme-primary: var(--google-red-500);
--mdc-theme-primary: var(--error-color);
}
:host([domain="camera"]) paper-dialog-scrollable {

View File

@ -446,7 +446,7 @@ export class HaVoiceCommandDialog extends LitElement {
}
.message.error {
background-color: var(--google-red-500);
background-color: var(--error-color);
color: var(--text-primary-color);
}

View File

@ -76,11 +76,15 @@ export class HomeAssistantAppEl extends HassElement {
// @ts-ignore
this._loadHassTranslations(this.hass!.language, "state");
this.addEventListener("unsuspend-app", () => this._onVisible(), false);
document.addEventListener(
"visibilitychange",
() => this._handleVisibilityChange(),
() => this._checkVisibility(),
false
);
document.addEventListener("freeze", () => this._suspendApp());
document.addEventListener("resume", () => this._checkVisibility());
}
protected hassReconnected() {
@ -148,30 +152,53 @@ export class HomeAssistantAppEl extends HassElement {
: route.path.substr(1, dividerPos - 1);
}
protected _handleVisibilityChange() {
protected _checkVisibility() {
if (document.hidden) {
// If the document is hidden, we will prevent reconnects until we are visible again
this.hass!.connection.suspendReconnectUntil(
new Promise((resolve) => {
this._visiblePromiseResolve = resolve;
})
);
// We close the connection to Home Assistant after being hidden for 5 minutes
this._hiddenTimeout = window.setTimeout(() => {
this._hiddenTimeout = undefined;
this.hass!.connection.suspend();
}, 300000);
this._onHidden();
} else {
// Clear timer to close the connection
if (this._hiddenTimeout) {
clearTimeout(this._hiddenTimeout);
this._hiddenTimeout = undefined;
}
// Unsuspend the reconnect
if (this._visiblePromiseResolve) {
this._visiblePromiseResolve();
this._visiblePromiseResolve = undefined;
this._onVisible();
}
}
private _onHidden() {
if (this._visiblePromiseResolve) {
return;
}
this.hass!.connection.suspendReconnectUntil(
new Promise((resolve) => {
this._visiblePromiseResolve = resolve;
})
);
// We close the connection to Home Assistant after being hidden for 5 minutes
this._hiddenTimeout = window.setTimeout(() => {
this._hiddenTimeout = undefined;
// setTimeout can be delayed in the background and only fire
// when we switch to the tab or app again (Hey Android!)
if (!document.hidden) {
this._suspendApp();
}
}, 300000);
window.addEventListener("focus", () => this._onVisible(), { once: true });
}
private _suspendApp() {
if (!this.hass!.connection.connected) {
return;
}
this.hass!.connection.suspend();
}
private _onVisible() {
// Clear timer to close the connection
if (this._hiddenTimeout) {
clearTimeout(this._hiddenTimeout);
this._hiddenTimeout = undefined;
}
// Unsuspend the reconnect
if (this._visiblePromiseResolve) {
this._visiblePromiseResolve();
this._visiblePromiseResolve = undefined;
}
}
}

View File

@ -14,6 +14,7 @@ import {
STATE_RUNNING,
} from "home-assistant-js-websocket";
import { CustomPanelInfo } from "../data/panel_custom";
import { deepActiveElement } from "../common/dom/deep-active-element";
const CACHE_URL_PATHS = ["lovelace", "developer-tools"];
const COMPONENTS = {
@ -92,18 +93,22 @@ class PartialPanelResolver extends HassRouterPage {
private _waitForStart = false;
private _disconnectedPanel?: ChildNode;
private _disconnectedPanel?: HTMLElement;
private _disconnectedActiveElement?: HTMLElement;
private _hiddenTimeout?: number;
protected firstUpdated(changedProps: PropertyValues) {
super.firstUpdated(changedProps);
// Attach listeners for visibility
document.addEventListener(
"visibilitychange",
() => this._handleVisibilityChange(),
() => this._checkVisibility(),
false
);
document.addEventListener("resume", () => this._checkVisibility());
}
protected updated(changedProps: PropertyValues) {
@ -156,34 +161,58 @@ class PartialPanelResolver extends HassRouterPage {
}
}
private _handleVisibilityChange() {
private _checkVisibility() {
if (document.hidden) {
this._hiddenTimeout = window.setTimeout(() => {
this._hiddenTimeout = undefined;
const curPanel = this.hass.panels[this._currentPage];
if (
this.lastChild &&
// iFrames will lose their state when disconnected
// Do not disconnect any iframe panel
curPanel.component_name !== "iframe" &&
// Do not disconnect any custom panel that embeds into iframe (ie hassio)
(curPanel.component_name !== "custom" ||
!(curPanel.config as CustomPanelInfo).config._panel_custom
.embed_iframe)
) {
this._disconnectedPanel = this.lastChild;
this.removeChild(this.lastChild);
}
}, 300000);
this._onHidden();
} else {
if (this._hiddenTimeout) {
clearTimeout(this._hiddenTimeout);
this._hiddenTimeout = undefined;
this._onVisible();
}
}
private _onHidden() {
this._hiddenTimeout = window.setTimeout(() => {
this._hiddenTimeout = undefined;
// setTimeout can be delayed in the background and only fire
// when we switch to the tab or app again (Hey Android!)
if (!document.hidden) {
return;
}
if (this._disconnectedPanel) {
this.appendChild(this._disconnectedPanel);
this._disconnectedPanel = undefined;
const curPanel = this.hass.panels[this._currentPage];
if (
this.lastChild &&
// iFrames will lose their state when disconnected
// Do not disconnect any iframe panel
curPanel.component_name !== "iframe" &&
// Do not disconnect any custom panel that embeds into iframe (ie hassio)
(curPanel.component_name !== "custom" ||
!(curPanel.config as CustomPanelInfo).config._panel_custom
.embed_iframe)
) {
this._disconnectedPanel = this.lastChild as HTMLElement;
const activeEl = deepActiveElement(
this._disconnectedPanel.shadowRoot || undefined
);
if (activeEl instanceof HTMLElement) {
this._disconnectedActiveElement = activeEl;
}
this.removeChild(this.lastChild);
}
}, 300000);
window.addEventListener("focus", () => this._onVisible(), { once: true });
}
private _onVisible() {
if (this._hiddenTimeout) {
clearTimeout(this._hiddenTimeout);
this._hiddenTimeout = undefined;
}
if (this._disconnectedPanel) {
this.appendChild(this._disconnectedPanel);
this._disconnectedPanel = undefined;
}
if (this._disconnectedActiveElement) {
this._disconnectedActiveElement.focus();
this._disconnectedActiveElement = undefined;
}
}

View File

@ -157,7 +157,7 @@ class DialogAreaDetail extends LitElement {
margin-right: auto;
}
.error {
color: var(--google-red-500);
color: var(--error-color);
}
`,
];

View File

@ -445,7 +445,7 @@ export class HaAutomationEditor extends LitElement {
.errors {
padding: 20px;
font-weight: bold;
color: var(--google-red-500);
color: var(--error-color);
}
.content {
padding-bottom: 20px;

View File

@ -257,7 +257,7 @@ class DialogThingtalk extends LitElement {
display: block;
}
.error {
color: var(--google-red-500);
color: var(--error-color);
}
.attribution {
color: var(--secondary-text-color);

View File

@ -480,7 +480,7 @@ export class ThingTalkPlaceholders extends SubscribeMixin(LitElement) {
font-weight: 500;
}
.error {
color: var(--google-red-500);
color: var(--error-color);
}
`,
];

View File

@ -32,7 +32,7 @@ class CloudForgotPassword extends LocalizeMixin(EventsMixin(PolymerElement)) {
margin: 0;
}
.error {
color: var(--google-red-500);
color: var(--error-color);
}
.card-actions {
display: flex;

View File

@ -52,7 +52,7 @@ class CloudLogin extends LocalizeMixin(
margin: 0;
}
.error {
color: var(--google-red-500);
color: var(--error-color);
}
.card-actions {
display: flex;

View File

@ -39,7 +39,7 @@ class CloudRegister extends LocalizeMixin(EventsMixin(PolymerElement)) {
margin: 0;
}
.error {
color: var(--google-red-500);
color: var(--error-color);
}
.card-actions {
display: flex;

View File

@ -27,7 +27,7 @@ class HaConfigSectionCore extends LocalizeMixin(PolymerElement) {
}
.validate-result {
color: var(--google-green-500);
color: var(--success-color);
font-weight: 500;
margin-bottom: 1em;
}
@ -37,7 +37,7 @@ class HaConfigSectionCore extends LocalizeMixin(PolymerElement) {
}
.config-invalid .text {
color: var(--google-red-500);
color: var(--error-color);
font-weight: 500;
}

View File

@ -292,7 +292,7 @@ export class DialogEntityEditor extends LitElement {
}
mwc-button.warning {
--mdc-theme-primary: var(--google-red-500);
--mdc-theme-primary: var(--error-color);
}
:host([rtl]) app-toolbar {

View File

@ -241,10 +241,10 @@ export class EntityRegistrySettingsHelper extends LitElement {
margin-bottom: -20px;
}
mwc-button.warning {
--mdc-theme-primary: var(--google-red-500);
--mdc-theme-primary: var(--error-color);
}
.error {
color: var(--google-red-500);
color: var(--error-color);
}
.row {
margin-top: 8px;

View File

@ -180,7 +180,7 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) {
>
<ha-icon
style=${styleMap({
color: entity.unavailable ? "var(--google-red-500)" : "",
color: entity.unavailable ? "var(--error-color)" : "",
})}
.icon=${entity.restored
? "hass:restore-alert"

View File

@ -227,7 +227,7 @@ class ZHAAddDevicesPage extends LitElement {
justify-content: center;
}
.error {
color: var(--google-red-500);
color: var(--error-color);
}
ha-circular-progress {
padding: 20px;

View File

@ -187,7 +187,7 @@ export class ZHAAddGroupPage extends LitElement {
padding: 8px;
}
.paper-dialog-buttons .warning {
--mdc-theme-primary: var(--google-red-500);
--mdc-theme-primary: var(--error-color);
}
`,
];

View File

@ -290,7 +290,7 @@ export class ZHAClusterAttributes extends LitElement {
}
.card-actions.warning ha-call-service-button {
color: var(--google-red-500);
color: var(--error-color);
}
.attribute-picker {

View File

@ -222,7 +222,7 @@ export class ZHAClusterCommands extends LitElement {
}
.card-actions.warning ha-call-service-button {
color: var(--google-red-500);
color: var(--error-color);
}
.command-picker {

View File

@ -166,7 +166,7 @@ export class ZHADeviceBindingControl extends LitElement {
}
.card-actions.warning ha-call-service-button {
color: var(--google-red-500);
color: var(--error-color);
}
.command-picker {

View File

@ -270,7 +270,7 @@ export class ZHAGroupBindingControl extends LitElement {
}
.card-actions.warning ha-call-service-button {
color: var(--google-red-500);
color: var(--error-color);
}
.command-picker {

View File

@ -325,7 +325,7 @@ export class ZHAGroupPage extends LitElement {
padding: 8px;
}
.paper-dialog-buttons .warning {
--mdc-theme-primary: var(--google-red-500);
--mdc-theme-primary: var(--error-color);
}
`,
];

View File

@ -273,7 +273,7 @@ export class ZwaveNetwork extends LitElement {
}
.card-actions.warning ha-call-service-button {
color: var(--google-red-500);
color: var(--error-color);
}
.toggle-help-icon {

View File

@ -14,7 +14,7 @@ class ZwaveNodeProtection extends PolymerElement {
return html`
<style include="iron-flex ha-style">
.card-actions.warning ha-call-api-button {
color: var(--google-red-500);
color: var(--error-color);
}
.content {
margin-top: 24px;

View File

@ -683,7 +683,7 @@ export class HaSceneEditor extends SubscribeMixin(LitElement) {
.errors {
padding: 20px;
font-weight: bold;
color: var(--google-red-500);
color: var(--error-color);
}
.content {
padding-bottom: 20px;

View File

@ -295,7 +295,7 @@ export class HaScriptEditor extends LitElement {
.errors {
padding: 20px;
font-weight: bold;
color: var(--google-red-500);
color: var(--error-color);
}
.content {
padding-bottom: 20px;

View File

@ -245,7 +245,7 @@ export class HaConfigServerControl extends LitElement {
}
.validate-result {
color: var(--google-green-500);
color: var(--success-color);
font-weight: 500;
margin-bottom: 1em;
}
@ -255,7 +255,7 @@ export class HaConfigServerControl extends LitElement {
}
.config-invalid .text {
color: var(--google-red-500);
color: var(--error-color);
font-weight: 500;
}

View File

@ -81,7 +81,7 @@ class HaPanelDevService extends LocalizeMixin(PolymerElement) {
}
.error {
color: var(--google-red-500);
color: var(--error-color);
}
</style>

View File

@ -362,7 +362,7 @@ class HuiAlarmPanelCard extends LitElement implements LovelaceCard {
}
mwc-button#disarm {
color: var(--google-red-500);
color: var(--error-color);
}
`;
}

View File

@ -229,7 +229,7 @@ class HuiPlantStatusCard extends LitElement implements LovelaceCard {
}
.problem {
color: var(--google-red-500);
color: var(--error-color);
font-weight: bold;
}

View File

@ -8,6 +8,7 @@ import {
LitElement,
property,
TemplateResult,
query,
} from "lit-element";
import { fireEvent } from "../../../../common/dom/fire_event";
import { computeRTL } from "../../../../common/util/compute_rtl";
@ -22,6 +23,7 @@ import { getCardElementClass } from "../../create-element/create-card-element";
import type { EntityConfig } from "../../entity-rows/types";
import type { LovelaceCardEditor } from "../../types";
import type { GUIModeChangedEvent } from "../types";
import "../../../../components/ha-circular-progress";
export interface ConfigChangedEvent {
config: LovelaceCardConfig;
@ -69,6 +71,8 @@ export class HuiCardEditor extends LitElement {
@property() private _loading = false;
@query("ha-code-editor") _yamlEditor?: HaCodeEditor;
public get yaml(): string {
return this._yaml || "";
}
@ -119,17 +123,18 @@ export class HuiCardEditor extends LitElement {
});
}
private get _yamlEditor(): HaCodeEditor {
return this.shadowRoot!.querySelector("ha-code-editor")! as HaCodeEditor;
}
public toggleMode() {
this.GUImode = !this.GUImode;
}
public connectedCallback() {
super.connectedCallback();
this._refreshYamlEditor();
public refreshYamlEditor(focus = false) {
if (!this._yamlEditor?.codemirror) {
return;
}
this._yamlEditor.codemirror.refresh();
if (focus) {
this._yamlEditor.codemirror.focus();
}
}
protected render(): TemplateResult {
@ -155,7 +160,7 @@ export class HuiCardEditor extends LitElement {
mode="yaml"
autofocus
.value=${this.yaml}
.error=${this._error}
.error=${Boolean(this._error)}
.rtl=${computeRTL(this.hass)}
@value-changed=${this._handleYAMLChanged}
@keydown=${this._ignoreKeydown}
@ -182,14 +187,6 @@ export class HuiCardEditor extends LitElement {
protected updated(changedProperties) {
super.updated(changedProperties);
if (changedProperties.has("_GUImode")) {
if (this.GUImode === false) {
// Refresh code editor when switching to yaml mode
this._refreshYamlEditor(true);
}
}
if (this._configElement && changedProperties.has("hass")) {
this._configElement.hass = this.hass;
}
@ -198,18 +195,6 @@ export class HuiCardEditor extends LitElement {
}
}
private _refreshYamlEditor(focus = false) {
// wait on render
setTimeout(() => {
if (this._yamlEditor && this._yamlEditor.codemirror) {
this._yamlEditor.codemirror.refresh();
if (focus) {
this._yamlEditor.codemirror.focus();
}
}
}, 1);
}
private _handleUIConfigChanged(ev: UIConfigChangedEvent) {
ev.stopPropagation();
const config = ev.detail.config;
@ -298,10 +283,10 @@ export class HuiCardEditor extends LitElement {
padding: 8px 0px;
}
.error {
color: #ef5350;
color: var(--error-color);
}
.warning {
color: #ffa726;
color: var(--warning-color);
}
ha-circular-progress {
display: block;

View File

@ -33,6 +33,7 @@ import { getCardStubConfig } from "../get-card-stub-config";
import { CardPickTarget, Card } from "../types";
import { coreCards } from "../lovelace-cards";
import { styleMap } from "lit-html/directives/style-map";
import "../../../../components/ha-circular-progress";
interface CardElement {
card: Card;
@ -49,35 +50,35 @@ export class HuiCardPicker extends LitElement {
public cardPicked?: (cardConf: LovelaceCardConfig) => void;
private _filter?: string;
@property() private _filter = "";
private _unusedEntities?: string[];
private _usedEntities?: string[];
private _width?: number;
@property() private _width?: number;
private _height?: number;
@property() private _height?: number;
private _filterCards = memoizeOne(
(cardElements: CardElement[], filter?: string): CardElement[] => {
if (filter) {
let cards = cardElements.map(
(cardElement: CardElement) => cardElement.card
);
const options: Fuse.IFuseOptions<Card> = {
keys: ["type", "name", "description"],
isCaseSensitive: false,
minMatchCharLength: 2,
threshold: 0.2,
};
const fuse = new Fuse(cards, options);
cards = fuse.search(filter).map((result) => result.item);
cardElements = cardElements.filter((cardElement: CardElement) =>
cards.includes(cardElement.card)
);
if (!filter) {
return cardElements;
}
return cardElements;
let cards = cardElements.map(
(cardElement: CardElement) => cardElement.card
);
const options: Fuse.IFuseOptions<Card> = {
keys: ["type", "name", "description"],
isCaseSensitive: false,
minMatchCharLength: 2,
threshold: 0.2,
};
const fuse = new Fuse(cards, options);
cards = fuse.search(filter).map((result) => result.item);
return cardElements.filter((cardElement: CardElement) =>
cards.includes(cardElement.card)
);
}
);
@ -98,9 +99,10 @@ export class HuiCardPicker extends LitElement {
@value-changed=${this._handleSearchChange}
></search-input>
<div
id="content"
style=${styleMap({
width: `${this._width}px`,
height: `${this._height}px`,
width: this._width ? `${this._width}px` : "auto",
height: this._height ? `${this._height}px` : "auto",
})}
>
<div class="cards-container">
@ -165,24 +167,6 @@ export class HuiCardPicker extends LitElement {
this._loadCards();
}
protected updated(changedProps) {
super.updated(changedProps);
// Store the width and height so that when we search, box doesn't jump
const div = this.shadowRoot!.querySelector("div")!;
if (!this._width) {
const width = div.clientWidth;
if (width) {
this._width = width;
}
}
if (!this._height) {
const height = div.clientHeight;
if (height) {
this._height = height;
}
}
}
private _loadCards() {
let cards: Card[] = coreCards.map((card: Card) => ({
name: this.hass!.localize(
@ -218,8 +202,30 @@ export class HuiCardPicker extends LitElement {
}
private _handleSearchChange(ev: CustomEvent) {
this._filter = ev.detail.value;
this.requestUpdate();
const value = ev.detail.value;
if (!value) {
// Reset when we no longer filter
this._width = undefined;
this._height = undefined;
} else if (!this._width || !this._height) {
// Save height and width so the dialog doesn't jump while searching
const div = this.shadowRoot!.getElementById("content");
if (div && !this._width) {
const width = div.clientWidth;
if (width) {
this._width = width;
}
}
if (div && !this._height) {
const height = div.clientHeight;
if (height) {
this._height = height;
}
}
}
this._filter = value;
}
static get styles(): CSSResult[] {

View File

@ -122,6 +122,7 @@ export class HuiDialogEditCard extends LitElement {
scrimClickAction
@keydown=${this._ignoreKeydown}
@closed=${this._close}
@opened=${this._opened}
.heading=${html`${heading}
${this._documentationURL !== undefined
? html`
@ -360,6 +361,10 @@ export class HuiDialogEditCard extends LitElement {
this._cardEditorEl?.toggleMode();
}
private _opened() {
this._cardEditorEl?.refreshYamlEditor();
}
private _close(): void {
this._params = undefined;
this._cardConfig = undefined;

View File

@ -104,7 +104,7 @@ export class HuiShoppingListEditor extends LitElement
static get styles(): CSSResult {
return css`
.error {
color: var(--google-red-500);
color: var(--error-color);
}
`;
}

View File

@ -698,7 +698,7 @@ class HUIRoot extends LitElement {
color: var(--text-primary-color, white);
}
mwc-button.warning:not([disabled]) {
color: var(--google-red-500);
color: var(--error-color);
}
#view {
min-height: calc(100vh - 112px);

View File

@ -34,6 +34,9 @@ documentContainer.innerHTML = `<custom-style>
--scrollbar-thumb-color: rgb(194, 194, 194);
--error-color: #db4437;
--warning-color: #f4b400;
--success-color: #0f9d58;
--info-color: #4285f4;
/* states and badges */
--state-icon-color: #44739e;

View File

@ -105,15 +105,15 @@ export const haStyle = css`
}
.error {
color: var(--google-red-500);
color: var(--error-color);
}
.warning {
color: var(--google-red-500);
color: var(--error-color);
}
mwc-button.warning {
--mdc-theme-primary: var(--google-red-500);
--mdc-theme-primary: var(--error-color);
}
button.link {
@ -132,7 +132,7 @@ export const haStyle = css`
}
.card-actions .warning {
--mdc-theme-primary: var(--google-red-500);
--mdc-theme-primary: var(--error-color);
}
.layout.horizontal,
@ -247,9 +247,9 @@ export const haStyleDialog = css`
}
}
mwc-button.warning {
--mdc-theme-primary: var(--google-red-500);
--mdc-theme-primary: var(--error-color);
}
.error {
color: var(--google-red-500);
color: var(--error-color);
}
`;

View File

@ -409,7 +409,7 @@
}
},
"helper_settings": {
"platform_not_loaded": "The {platform} integration is not loaded. Please add it your configuration either by adding 'default_config:' or ''{platform}:''.",
"platform_not_loaded": "The {platform} integration is not loaded. Please add it to your configuration either by adding 'default_config:' or ''{platform}:''.",
"yaml_not_editable": "The settings of this entity cannot be edited from the UI. Only entities set up from the UI are configurable from the UI.",
"required_error_msg": "This field is required",
"generic": {

View File

@ -48,6 +48,19 @@
"none": "Žádná",
"sleep": "Spánek"
}
},
"humidifier": {
"mode": {
"auto": "Automatika",
"away": "Pryč",
"baby": "Dítě",
"boost": "Boost",
"comfort": "Komfort",
"eco": "Ekonomický mód",
"home": "Doma",
"normal": "Běžný",
"sleep": "Spánek"
}
}
},
"state_badge": {
@ -388,6 +401,12 @@
"reverse": "Vzad",
"speed": "Rychlost"
},
"humidifier": {
"humidity": "Cílová vlhkost",
"mode": "Režim",
"on_entity": "{name} zapnuto",
"target_humidity_entity": "{name} cílová vlhkost"
},
"light": {
"brightness": "Jas",
"color_temperature": "Teplota barvy",
@ -560,7 +579,7 @@
"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_label": "Povolit nově přidané entity.",
"title": "Systémové možnosti pro {integration}",
"title": "Upravit nastavení pro {integration}",
"update": "Aktualizovat"
},
"domain_toggler": {
@ -1425,7 +1444,7 @@
"restart_confirm": "Restartujte Home Assistant pro odstranění této integrace",
"settings_button": "Upravit nastavení pro {integration}",
"system_options": "Více možností",
"system_options_button": "Systémové možnosti pro {integration}",
"system_options_button": "Upravit nastavení pro {integration}",
"unnamed_entry": "Nepojmenovaný záznam"
},
"config_flow": {
@ -2198,6 +2217,10 @@
"description": "Karta Horizontální Stack umožňuje seskupovat více karet tak, že jsou vždy zobrazeny vedle sebe v prostoru šířky jednoho sloupce.",
"name": "Horizontální uskupení"
},
"humidifier": {
"description": "Karta zvlhčovače poskytuje kontrolu nad vaší entitou zvlhčovače. Umožní vám změnit vlhkost a režim entity.",
"name": "Zvlhčovač"
},
"iframe": {
"description": "Karta Webová stránka umožňuje vložit oblíbenou webovou stránku přímo do Home Assistanta.",
"name": "iFrame"

View File

@ -1738,8 +1738,8 @@
"discovered_text": "Geräte werden hier angezeigt sobald sie erkannt worden sind.",
"discovery_text": "Erkannte Geräte werden hier angezeigt. Befolgen Sie die Anweisungen für Ihr Gerät und versetzen Sie das Gerät in den Pairing-Modus.",
"header": "Zigbee Home Automation - Geräte hinzufügen",
"no_devices_found": "Es wurde keine Geräte erkannt, stelle sicher das sie sich im Pairing Modus befinden und halte sie Aktiv solange die Erkennung läuft,",
"pairing_mode": "Stellen Sie sicher, dass sich Ihre Geräte im Pairing-Modus befinden. Überprüfen Sie dazu die Anweisungen Ihres Geräts.",
"no_devices_found": "Es wurden keine Geräte erkannt. Stelle sicher, dass sie sich im Pairing-Modus befinden und halte sie aktiv, solange die Erkennung läuft,",
"pairing_mode": "Stelle sicher, dass sich deine Geräte im Pairing-Modus befinden. Überprüfe dazu die Anweisungen deines Geräts.",
"search_again": "Erneut suchen",
"spinner": "Suche nach ZHA Zigbee Geräten..."
},

View File

@ -51,8 +51,15 @@
},
"humidifier": {
"mode": {
"auto": "אוטומטי",
"away": "לא בבית",
"home": "בבית"
"baby": "תִינוֹק",
"boost": "גבוה",
"comfort": "נוחות",
"eco": "חסכוני",
"home": "בבית",
"normal": "רגיל",
"sleep": "שינה"
}
}
},
@ -394,6 +401,12 @@
"reverse": "אחורה",
"speed": "מהירות"
},
"humidifier": {
"humidity": "יעד לחות",
"mode": "מצב",
"on_entity": "{name} דולק",
"target_humidity_entity": "{שם} לחות יעד"
},
"light": {
"brightness": "בהירות",
"color_temperature": "טמפרטורת הצבע",
@ -419,6 +432,9 @@
"script": {
"execute": "הפעל"
},
"service": {
"run": "הפעל"
},
"timer": {
"actions": {
"cancel": "ביטול",
@ -479,6 +495,7 @@
"and": "וגם",
"back": "חזור",
"cancel": "ביטול",
"close": "סגור",
"delete": "מחיקה",
"error_required": "חובה",
"loading": "טוען",
@ -495,11 +512,30 @@
"yes": "כן"
},
"components": {
"area-picker": {
"add_dialog": {
"add": "הוסף",
"failed_create_area": "יצירת אזור נכשלה.",
"name": "שם",
"text": "הזן את שם האזור החדש.",
"title": "הוסף אזור חדש"
},
"add_new": "הוסף אזור חדש...",
"area": "אזור",
"clear": "נקה",
"show_areas": "הצג אזורים"
},
"date-range-picker": {
"end_date": "תאריך סיום",
"select": "בחר",
"start_date": "תאריך התחלה"
},
"device-picker": {
"clear": "נקה",
"device": "התקן",
"device": "מכשיר",
"no_area": "אין אזור",
"show_devices": "הצג התקנים"
"show_devices": "הצג התקנים",
"toggle": "החלף מצב"
},
"entity": {
"entity-picker": {
@ -512,6 +548,17 @@
"loading_history": "טוען היסטוריה...",
"no_history_found": "לא נמצאה היסטוריה"
},
"related-items": {
"area": "אֵזוֹר",
"automation": "חלק מהאוטומציות הבאות",
"device": "מכשיר",
"entity": "ישויות קשורות",
"group": "חלק מהקבוצות הבאות",
"integration": "אינטגרציה",
"no_related_found": "לא נמצאו פריטים קשורים.",
"scene": "חלק מהסצינות הבאות",
"script": "חלק מהסקריפטים הבאים"
},
"relative_time": {
"duration": {
"day": "{count} {count, plural,\n one {יום}\n other {ימים}\n}",
@ -532,13 +579,38 @@
"config_entry_system_options": {
"enable_new_entities_description": "אם הם מושבתים, ישויות שהתגלו לאחרונה עבור {integration} לא יתווספו אוטומטית ל Home Assistant.",
"enable_new_entities_label": "הפוך ישויות חדשות שנוספו לזמינות.",
"title": "אפשרויות מערכת"
"title": "אפשרויות מערכת",
"update": "עדכון"
},
"domain_toggler": {
"title": "החלף דומיינים"
},
"entity_registry": {
"control": "בקרה",
"dismiss": "בטל",
"editor": {
"confirm_delete": "האם אתה בטוח שברצונך למחוק רשומה זו?",
"delete": "מחק",
"enabled_cause": "מושבת עקב {סיבה}.",
"enabled_description": "ישויות מושבתות לא יתווספו ל Home Assistant.",
"enabled_label": "הפוך ישות לזמינה",
"entity_id": "מזהה ישות",
"icon": "סמל חלופי",
"icon_error": "סמלים צריכים להיות בפורמט: prefix:iconname, למשל: mdi:home",
"name": "שם חלופי",
"note": "הערה: יתכן וזה עדיין לא עובד עם כל האינטגרציות.",
"unavailable": "ישות זו אינה זמינה כרגע.",
"update": "עדכון"
},
"no_unique_id": "לישות זו אין מזהה ייחודי, ולכן לא ניתן לנהל את ההגדרות שלה ממשק המשתמש.",
"related": "קשורים",
"settings": "הגדרות"
},
"generic": {
"close": "סגור"
"cancel": "ביטול",
"close": "סגור",
"default_confirmation_title": "האם אתה בטוח?",
"ok": "אישור"
},
"helper_settings": {
"generic": {
@ -548,6 +620,7 @@
"input_datetime": {
"date": "תאריך",
"datetime": "תאריך ושעה",
"mode": "מה ברצונך להזין?",
"time": "זמן"
},
"input_number": {
@ -573,12 +646,26 @@
"pattern": "דפוס Regex לצורך אימות בצד הלקוח",
"text": "טקסט"
},
"required_error_msg": "שדה זה הוא חובה"
"platform_not_loaded": "האינטגרציה {platform} אינה טעונה. אנא הוסף אותה לקונפיגורציה שלך על ידי הוספת 'default_config:' או '' {platform} : ''.",
"required_error_msg": "שדה זה הוא חובה",
"yaml_not_editable": "אין אפשרות לערוך את ההגדרות של ישות זו מממשק המשתמש. רק ישויות שהוגדרו מממשק המשתמש ניתנות להגדרה מתוך ממשק המשתמש."
},
"more_info_control": {
"dismiss": "סגור",
"edit": "ערוך יישות",
"person": {
"create_zone": "צור אזור מהמיקום הנוכחי"
},
"restored": {
"confirm_remove_text": "האם אתה בטוח שברצונך להסיר ישות זו?",
"confirm_remove_title": "להסיר את הישות?",
"not_provided": "ישות זו אינה זמינה כרגע והיא בת לאינטגרציה או מכשיר שהוסרו, השתנו או לא מתפקדים.",
"remove_action": "הסר יישות",
"remove_intro": "אם הישות כבר אינה בשימוש, תוכלו לנקות אותה על ידי הסרתה."
},
"script": {
"last_action": "פעולה אחרונה"
"last_action": "פעולה אחרונה",
"last_triggered": "הופעל לאחרונה"
},
"settings": "הגדרות ישות",
"sun": {
@ -588,9 +675,22 @@
},
"updater": {
"title": "הוראות עדכון"
},
"vacuum": {
"clean_spot": "נקה נקודה",
"commands": "פקודות שואב אבק:",
"fan_speed": "מהירות מאוורר",
"locate": "איתור",
"pause": "השהיה",
"return_home": "חזור הביתה",
"start": "התחל",
"start_pause": "התחל/השהה",
"status": "סטטוס",
"stop": "עצור"
}
},
"mqtt_device_debug_info": {
"deserialize": "נסה לנתח הודעות MQTT כ- JSON",
"entities": "ישויות",
"no_entities": "אין ישויות",
"no_triggers": "אין טריגרים",
@ -619,19 +719,25 @@
"zha_device_info": {
"buttons": {
"add": "הוסף מכשירים",
"clusters": "ניהול אשכולות",
"reconfigure": "הגדר מחדש את המכשיר",
"remove": "הסר מכשיר",
"zigbee_information": "מידע על Zigbee"
},
"confirmations": {
"remove": "האם אתה בטוח שברצונך למחוק מכשיר זה?"
},
"device_signature": "חתימת מכשיר Zigbee",
"last_seen": "נראה לאחרונה",
"manuf": "לפי {manufacturer}",
"no_area": "ללא אזור",
"power_source": "מקור כוח",
"quirk": "מוזרות",
"services": {
"reconfigure": "הגדר מחדש את התקן ה- ZHA (ריפוי מכשיר). השתמש בזה אם אתה נתקל בבעיות במכשיר. אם המכשיר המדובר הוא התקן המונע על ידי סוללה, אנא וודא שהוא דלוק ומקבל פקודות בעת השימוש בשירות זה.",
"reconfigure": "הגדר מחדש את המכשיר ה- ZHA (ריפוי מכשיר). השתמש בזה אם אתה נתקל בבעיות במכשיר. אם המכשיר המדובר הוא מכשיר המונע על ידי סוללה, אנא וודא שהוא דלוק ומקבל פקודות בעת השימוש בשירות זה.",
"remove": "הסר מכשיר מרשת ה-Zigbee",
"updateDeviceName": "הגדר שם מותאם אישית עבור התקן זה במאגר ההתקנים."
"updateDeviceName": "הגדר שם מותאם אישית עבור מכשיר זה במאגר ההתקנים.",
"zigbee_information": "הצגת מידע Zigbee עבור המכשיר."
},
"unknown": "לא ידוע",
"zha_device_card": {
@ -690,6 +796,7 @@
"editor": {
"area_id": "מזהה אזור",
"create": "צור",
"default_name": "אזור חדש",
"delete": "מחק",
"name": "שם",
"name_required": "שם הוא חובה",
@ -697,10 +804,12 @@
"update": "עדכון"
},
"picker": {
"create_area": "צור אזור",
"header": "מאגר האזורים",
"integrations_page": "דף אינטגרציות",
"introduction": "אזורים משמשים לארגון המיקום של ההתקנים. Home Assistant יעשה שימוש במידע זה בכדי לסייע לך בארגון הממשק, ההרשאות והאינטגרציות שלך עם מערכות אחרות.",
"introduction2": "כדי למקם התקנים באזור זה, השתמש בקישור הבא כדי לנווט אל דף האינטגרציות ולאחר מכן לחץ על אינטגרציה מוגדרת כדי להגיע לכרטיסי המכשיר."
"introduction2": "כדי למקם התקנים באזור זה, השתמש בקישור הבא כדי לנווט אל דף האינטגרציות ולאחר מכן לחץ על אינטגרציה מוגדרת כדי להגיע לכרטיסי המכשיר.",
"no_areas": "נראה שאין לך אזורים עדיין!"
}
},
"automation": {
@ -730,7 +839,7 @@
"extra_fields": {
"code": "קוד"
},
"label": "התקן"
"label": "מכשיר"
},
"event": {
"event": "ארוע",
@ -774,7 +883,7 @@
"below": "מתחת",
"for": "משך הזמן"
},
"label": "התקן"
"label": "מכשיר"
},
"not": {
"label": "לא"
@ -825,6 +934,7 @@
},
"edit_ui": "ערוך באמצעות ממשק המשתמש",
"edit_yaml": "ערוך כ- YAML",
"enable_disable": "הפעל / השבת אוטומציה",
"introduction": "השתמש/י באוטומציות להפיח חיים בביתך.",
"load_error_not_editable": "רק אוטומציה ב automations.yaml ניתנים לעריכה.",
"load_error_unknown": "שגיאה בטעינת האוטומציה ( {err_no} ).",
@ -848,7 +958,7 @@
"below": "מתחת",
"for": "משך"
},
"label": "התקן",
"label": "מכשיר",
"trigger": "טריגר"
},
"event": {
@ -946,8 +1056,8 @@
"account": {
"alexa": {
"config_documentation": "הגדרת תיעוד",
"disable": "השבת",
"enable": "אפשר",
"disable": "השבתה",
"enable": "אפשור",
"enable_ha_skill": "הפעל את מיומנות Home Assistant עבור אלקסה",
"enable_state_reporting": "הפוך דיווח מצב לזמין",
"info": "עם שילוב אלקסה עבור ענן Home Assistant תוכל לשלוט בכל המכשירים של Home Assistant באמצעות כל מכשיר המקושר לאלקסה.",
@ -969,11 +1079,12 @@
"enter_pin_error": "אין אפשרות לאחסן את הקוד ה PIN:",
"enter_pin_hint": "הזן קוד PIN לשימוש בהתקני אבטחה",
"enter_pin_info": "נא הזן קוד PIN כדי לעבוד עם מכשירי אבטחה. מכשירי אבטחה הם דלתות, דלתות מוסך ומנעולים. תתבקש לומר/להזין את קוד ה PIN כאשר אתה מקיים אינטראקציה עם התקנים אלה באמצעות המסייע של Google.",
"info": "עם שילוב מסייע Google עבור ענן Home Assistant תוכל לשלוט בכל מכשירי Home Assistant שלך באמצעות כל התקן המקושר למסייע של Google.",
"info": "עם שילוב מסייע Google עבור ענן Home Assistant תוכל לשלוט בכל מכשירי Home Assistant שלך באמצעות כל מכשיר המקושר למסייע של Google.",
"info_state_reporting": "אם תפעיל דיווח מצב, Home Assistant ישלח את כל שינויי המצבים של ישויות חשופות ל-Google. זה מאפשר לך תמיד לראות את המצבים האחרונים באפליקציה של גוגל.",
"manage_entities": "נהל ישויות",
"security_devices": "התקני אבטחה",
"sync_entities": "סנכרן ישויות לגוגל",
"sync_entities_404_message": "כישלון בסינכרון היישויות שלך ל-Google, בקש מ Google 'Hey Google, sync my devices' כדי לסנכרן את הישויות שלך.",
"title": "Google Assistant"
},
"integrations": "אינטגרציות",
@ -1028,11 +1139,11 @@
"dialog_cloudhook": {
"available_at": "ה-webhook זמין בכתובת הבאה:",
"close": "סגור",
"confirm_disable": "אתה בטוח שאתה רוצה לבטל את ה webhook?",
"confirm_disable": "אתה בטוח שאתה רוצה להשבית את ה webhook?",
"copied_to_clipboard": "הועתק ללוח",
"info_disable_webhook": "אם אינך מעוניין עוד להשתמש ב-webhook זה, באפשרותך",
"link_disable_webhook": "לנטרל אותו",
"managed_by_integration": "webhook זה מנוהל על ידי אינטגרציה ואי אפשר לנטרל אותו.",
"link_disable_webhook": "השבת אותו",
"managed_by_integration": "webhook זה מנוהל על ידי אינטגרציה ואי אפשר להשבית אותו.",
"view_documentation": "הצג תיעוד",
"webhook_for": "Webhook עבור {name}"
},
@ -1108,7 +1219,7 @@
"section": {
"core": {
"core_config": {
"edit_requires_storage": "עורך מושבת משום שתצורה מאוחסנת ב- configuration.yaml.",
"edit_requires_storage": "העורך מושבת משום שהתצורה מאוחסנת ב- configuration.yaml.",
"elevation": "גובה",
"elevation_meters": "מטר",
"external_url": "כתובת URL חיצונית",
@ -1155,20 +1266,25 @@
"actions": {
"caption": "כשמשהו מופעל..."
},
"automations": "אוטומציות",
"conditions": {
"caption": "בצע משהו רק אם..."
},
"create": "צור אוטומציה עם המכשיר",
"no_automations": "אין אוטומציות",
"no_device_automations": "אין אוטומציות זמינות עבור מכשיר זה.",
"triggers": {
"caption": "עשה משהו כש ..."
}
},
"cant_edit": "באפשרותך לערוך פריטים שנוצרו בממשק המשתמש בלבד.",
"caption": "התקנים",
"confirm_delete": "האם אתה בטוח שברצונך למחוק התקן זו?",
"confirm_delete": "האם אתה בטוח שברצונך למחוק מכשיר זה?",
"confirm_rename_entity_ids": "האם אתה רוצה גם לשנות את המזהים של הישויות שלך?",
"data_table": {
"area": "אזור",
"battery": "סוללה",
"device": "התקן",
"device": "מכשיר",
"integration": "אינטגרציה",
"manufacturer": "יצרן",
"model": "מודל",
@ -1177,32 +1293,76 @@
},
"delete": "מחיקה",
"description": "ניהול התקנים מחוברים",
"device_info": "פרטי התקן",
"device_not_found": התקן לא נמצא.",
"device_info": "פרטי מכשיר",
"device_not_found": מכשיר לא נמצא.",
"entities": {
"disabled_entities": "+{count} {count, plural,\n one {disabled entity}\n other {disabled entities}\n}"
"add_entities_lovelace": "הוסף לממשק Lovelace",
"disabled_entities": "+{count} {count, plural,\n one {disabled entity}\n other {disabled entities}\n}",
"entities": "ישויות",
"hide_disabled": "הסתר מושבתים",
"none": "למכשיר זה אין ישויות"
},
"name": "שם",
"no_devices": "אין התקנים",
"scene": {
"create": "צור סצינה עם המכשיר",
"no_scenes": "אין סצינות",
"scenes": "סצינות"
},
"scenes": "סצינות",
"script": {
"create": "צור סקריפט עם המכשיר",
"no_scripts": "אין סקריפטים",
"scripts": "סקריפטים"
},
"scripts": "סקריפטים",
"unknown_error": "שגיאה לא ידועה",
"unnamed_device": "התקן ללא שם"
"unnamed_device": "מכשיר ללא שם",
"update": "עדכון"
},
"entities": {
"caption": "מאגר הישויות",
"description": "סקירה של כל הישויות המוכרות",
"picker": {
"disable_selected": {
"button": "השבת מסומנים",
"confirm_text": "ישויות מושבתות לא יתווספו ל Home Assistant.",
"confirm_title": "האם אתה רוצה להשבית {number} ישויות?"
},
"enable_selected": {
"button": "אפשר מסומנים",
"confirm_text": "זה יהפוך אותם לזמינים ב Home Assistant שוב אם הם מושבתים כעת.",
"confirm_title": "האם אתה רוצה לאפשר {number} ישויות?"
},
"filter": {
"filter": "סנן",
"show_disabled": "הצג ישויות מושבתות",
"show_readonly": "הצג ישויות לקריאה בלבד",
"show_unavailable": "הצג ישויות לא זמינות"
},
"header": "מאגר הישויות",
"headers": {
"entity_id": "מזהה ישות",
"integration": "אינטגרציה",
"name": "שם"
"name": "שם",
"status": "סטטוס"
},
"introduction": "Home Assistant מנהל רישום של כל ישות שנראתה אי פעם ואשר ניתנת לזיהוי ייחודי. לכל אחד מישויות אלו יהיה מזהה ישות שהוקצה ואשר יהה שמור רק עבור ישות זו.",
"introduction2": "השתמש במאגר הישויות בכדי לשנות את השם, מזהה הישות או להסיר את הערך מ- Home Assistant. שים לב, הסרת הישות ממאגר זה לא תסיר את הישות. לשם כך, פעל לפי הקישור שלהלן והסר אותו מדף האינטגרציות.",
"remove_selected": {
"confirm_partly_title": "ניתן להסיר רק {number} ישויות שנבחרו."
"button": "הסר את המסומנים",
"confirm_partly_text": "אתה יכול להסיר רק את {removable} מהישויות שנבחרו {selected}. ניתן להסיר ישויות רק כאשר האינטגרציה כבר לא מספקת את הישויות. לפעמים אתה צריך להפעיל מחדש את עוזר הבית לפני שתוכל להסיר את הישויות של אינטגרציה שהוסרה. האם אתה בטוח שברצונך להסיר את הישויות הניתנות להסרה?",
"confirm_partly_title": "ניתן להסיר רק {number} ישויות שנבחרו.",
"confirm_text": "עליך להסיר אותם מתצורת ה- Lovelace ומהאוטומציות שלך אם הם מכילים ישויות אלה.",
"confirm_title": "האם ברצונך להסיר {מספר} ישויות?"
},
"selected": "{number} נבחרו",
"status": {
"restored": "שוחזר"
"disabled": "מושבת",
"ok": "אישור",
"readonly": "קריאה בלבד",
"restored": "שוחזר",
"unavailable": "לא זמין"
}
}
},
@ -1215,6 +1375,7 @@
"caption": "עוזרים",
"description": "רכיבים שיכולים לסייע בבניית אוטומציות.",
"dialog": {
"add_helper": "הוסף עוזר",
"add_platform": "הוסף {platform}",
"create": "צור"
},
@ -1268,7 +1429,9 @@
"delete": "מחק",
"delete_button": "מחק {integration}",
"delete_confirm": "האם אתה בטוח שברצונך למחוק אינטגרציה זו?",
"device_unavailable": "התקן אינו זמין",
"device_unavailable": "מכשיר אינו זמין",
"devices": "{count} {count, plural,\n one {device}\n other {devices}\n}",
"entities": "{count} {count, plural,\n one {entity}\n other {entities}\n}",
"entity_unavailable": "ישות לא זמינה",
"firmware": "קושחה: {version}",
"hub": "מחובר באמצעות",
@ -1281,12 +1444,14 @@
"restart_confirm": "הפעל מחדש את Home Assistant כדי להשלים את הסרת האינטגרציה",
"settings_button": "ערוך הגדרות עבור {integration}",
"system_options": "אפשרויות מערכת",
"system_options_button": "אפשרויות מערכת עבור {integration}"
"system_options_button": "אפשרויות מערכת עבור {integration}",
"unnamed_entry": "ערך ללא שם"
},
"config_flow": {
"aborted": "הופסק",
"close": "סגור",
"created_config": "נוצרה תצורה עבור {name}.",
"dismiss": "ביטול תיבת דו-שיח",
"error_saving_area": "שגיאה בשמירת האזור: {error}",
"external_step": {
"description": "שלב זה מחייב אותך לבקר באתר אינטרנט חיצוני להשלמת הפעולה.",
@ -1303,6 +1468,17 @@
"details": "פרטי האינטגרציה",
"discovered": "זוהו",
"home_assistant_website": "אתר Home Assistant",
"ignore": {
"confirm_delete_ignore": "פעולה זו תגרום לאינטגרציה להופיע באינטגרציות שהתגלו שוב כאשר היא תתגלה. ייתכן שתידרש הפעלה מחדש או להמתין כדי שזה יקרה.",
"confirm_delete_ignore_title": "הפסק להתעלם מ- {name} ?",
"confirm_ignore": "האם אתה בטוח שאתה לא רוצה להגדיר אינטגרציה זו? אתה יכול לבטל את זה על ידי לחיצה על 'הצג אינטגרציות שמתעלמים מהן' בתפריט שמשמאל למעלה.",
"confirm_ignore_title": "התעלם מגילוי {name}?",
"hide_ignored": "הסתר אינטגרציות שמתעלמים מהן",
"ignore": "התעלם",
"ignored": "מתעלם",
"show_ignored": "הצג אינטגרציות שמתעלמים מהן",
"stop_ignore": "הפסק להתעלם"
},
"integration": "אינטגרציה",
"integration_not_found": "האינטגרציה לא נמצאה.",
"new": "הגדר אינטגרציה",
@ -1330,7 +1506,10 @@
"title": "יומנים"
},
"lovelace": {
"caption": "לוחות מחוונים של Lovelace",
"dashboards": {
"cant_edit_default": "לא ניתן לערוך את לוח המחוונים של לאבלייס מממשק המשתמש. באפשרותך להסתירו על-ידי הגדרת לוח מחוונים אחר כברירת מחדל.",
"cant_edit_yaml": "לא ניתן לערוך שלוחות מחוונים המוגדרים ב- YAML מממשק המשתמש. שנה אותם ב- configuration.yaml.",
"caption": "לוחות בקרה",
"conf_mode": {
"storage": "ממשק המשתמש נשלט",
@ -1345,18 +1524,20 @@
"edit_dashboard": "ערוך לוח בקרה",
"icon": "סמל",
"new_dashboard": "הוסף לוח בקרה חדש",
"remove_default": "הסר כברירת מחדל בהתקן זה",
"remove_default": "הסר כברירת מחדל במכשיר זה",
"require_admin": "מנהל בלבד",
"set_default": "הגדר כברירת מחדל בהתקן זה",
"set_default": "הגדר כברירת מחדל במכשיר זה",
"show_sidebar": "הצג בסרגל הצד",
"title": "כותרת",
"title_required": "הכותרת נדרשת.",
"update": "עדכן",
"url": "URL"
"url": "URL",
"url_error_msg": "כתובת האתר צריכה להכיל - ולא יכולה להכיל רווחים או תווים מיוחדים, למעט _ ו- -"
},
"picker": {
"add_dashboard": "הוסף לוח בקרה חדש",
"headers": {
"conf_mode": "שיטת קביעת קונפיגרציה",
"default": "ברירת מחדל",
"filename": "שם קובץ",
"require_admin": "מנהל בלבד",
@ -1366,18 +1547,22 @@
"open": "פתוח"
}
},
"description": "הגדרת לוחות המחוונים של Lovelace",
"resources": {
"cant_edit_yaml": "אתה משתמש ב- Lovelace במצב YAML, לכן אינך יכול לנהל את המשאבים שלך דרך ממשק המשתמש. נהל אותם ב- configuration.yaml.",
"caption": "משאבים",
"confirm_delete": "האם אתה בטוח שברצונך למחוק את המשאב הזה?",
"detail": {
"create": "צור",
"delete": "מחק",
"dismiss": "סגור",
"new_resource": "הוסף משאב חדש",
"type": "סוג המשאב",
"update": "עדכן",
"url": "URL",
"url_error_msg": "כתובת URL היא שדה נדרש",
"warning_header": "היה זהיר!"
"warning_header": "היה זהיר!",
"warning_text": "הוספת משאבים יכולה להיות מסוכנת, וודא שאתה יודע את מקור המשאב וסומך עליו. משאבים רעים עלולים לפגוע קשות במערכת שלך."
},
"picker": {
"add_resource": "הוסף משאב",
@ -1387,6 +1572,7 @@
},
"no_resources": "אין משאבים"
},
"refresh_body": "אתה צריך לרענן את הדף כדי להשלים את ההסרה, האם אתה רוצה לרענן עכשיו?",
"refresh_header": "האם אתה רוצה לרענן?",
"types": {
"css": "סגנון עיצוב",
@ -1397,6 +1583,7 @@
}
},
"mqtt": {
"button": "הגדר",
"description_listen": "האזנה לנושא",
"description_publish": "פרסם חבילה",
"listening_to": "האזנה ל",
@ -1428,7 +1615,7 @@
"name": "שם",
"name_error_msg": "שם נדרש",
"new_person": "אדם חדש",
"no_device_tracker_available_intro": "כאשר יש לך התקנים המציינים את נוכחותו של אדם, כאן תוכל להקצותם לאדם זה. באפשרותך להוסיף את ההתקן הראשון על-ידי הוספת אינטגרציה של זיהוי נוכחות מעמוד האינטגרציות.",
"no_device_tracker_available_intro": "כאשר יש לך התקנים המציינים את נוכחותו של אדם, כאן תוכל להקצותם לאדם זה. באפשרותך להוסיף את המכשיר הראשון על-ידי הוספת אינטגרציה של זיהוי נוכחות מעמוד האינטגרציות.",
"update": "עדכון"
},
"introduction": "כאן תוכלו להגדיר כל אדם ב Home Assistant.",
@ -1442,18 +1629,18 @@
"editor": {
"default_name": "סצינה חדשה",
"devices": {
"add": "הוסף התקן",
"delete": "מחיקת התקן",
"add": "הוסף מכשיר",
"delete": "מחיקת מכשיר",
"header": "התקנים",
"introduction": "הוסף את ההתקנים שברצונך שייכללו בסצינה. הגדר את כל ההתקנים למצב הרצוי עבור סצינה זו."
},
"entities": {
"add": "הוסף ישות",
"delete": "מחק ישות",
"device_entities": "אם תוסיף ישות השייכת להתקן, ההתקן יתווסף.",
"device_entities": "אם תוסיף ישות השייכת למכשיר, המכשיר יתווסף.",
"header": "ישויות",
"introduction": "ניתן להגדיר כאן ישויות שאינן שייכות להתקנים.",
"without_device": "ישויות ללא התקן"
"without_device": "ישויות ללא מכשיר"
},
"introduction": "השתמש בסצינות כדי להחיות את הבית שלך.",
"load_error_not_editable": "רק סצינות ב scenes.yaml ניתנות לעריכה.",
@ -1483,6 +1670,7 @@
"caption": "סקריפט",
"description": "צור וערוך סקריפטים",
"editor": {
"alias": "שם",
"default_name": "סקריפט חדש",
"delete_confirm": "האם אתה בטוח שברצונך למחוק את הסקריפט הזה?",
"delete_script": "מחק סקריפט",
@ -1522,8 +1710,10 @@
"input_select": "טען מחדש input selects",
"input_text": "טען מחדש input text",
"introduction": "חלקים מסוימים של Home Assistant יכולים להטען מחדש ללא צורך בהפעלה מחדש.\nטעינה מחדש תשנה את הקונפיגורציה הנוכחית ותטען קונפיגורציה חדשה.",
"person": "טען מחדש אנשים",
"scene": "טען מחדש סצנות",
"script": "טען מחדש סקריפטים"
"script": "טען מחדש סקריפטים",
"zone": "טען מחדש אזורים"
},
"server_management": {
"confirm_restart": "האם אתה בטוח שברצונך להפעיל מחדש את Home Assistant?",
@ -1590,6 +1780,10 @@
"search_again": "חפש שוב",
"spinner": "מחפש מכשירי ZHA Zigbee..."
},
"add": {
"caption": "הוסף התקנים",
"description": "הוספת התקנים לרשת Zigbee"
},
"button": "הגדר",
"caption": "ZHA",
"cluster_attributes": {
@ -1610,7 +1804,9 @@
"issue_zigbee_command": "שלח פקודת Zigbee"
},
"clusters": {
"help_cluster_dropdown": "בחר אשכול כדי להציג תכונות ופקודות."
"header": "אשכולות",
"help_cluster_dropdown": "בחר אשכול כדי להציג תכונות ופקודות.",
"introduction": "אשכולות הם אבני הבניין עבור פונקציונליות Zigbee. הן מפרידות את הפונקציונליות ליחידות לוגיות. קיימים סוגים של לקוחות ושרתים הכוללים תכונות ופקודות."
},
"common": {
"add_devices": "הוסף התקנים",
@ -1620,6 +1816,49 @@
"value": "ערך"
},
"description": "ניהול רשת Zigbee לאוטומציה ביתית",
"devices": {
"header": "אוטומציה ביתית של Zigbee - מכשיר"
},
"group_binding": {
"bind_button_help": "קשר את הקבוצה שנבחרה לאשכול המכשירים שנבחר.",
"bind_button_label": "קשר קבוצה",
"cluster_selection_help": "בחר אשכולות לקישור לקבוצה שנבחרה.",
"group_picker_help": "בחר קבוצה להפעלת פקודת קישור.",
"group_picker_label": "קבוצות הניתנות לקישור",
"header": "קישור הקבוצה",
"introduction": "קישור וניתוק קבוצות.",
"unbind_button_help": "נתק את הקבוצה שנבחרה מאשכולות המכשירים שנבחרו.",
"unbind_button_label": "ביטול קישור של קבוצה"
},
"groups": {
"add_members": "הוסף חברים",
"adding_members": "מוסיף חברים",
"caption": "קבוצות",
"create": "צור קבוצה",
"create_group": "אוטומציה ביתית של Zigbee - צור קבוצה",
"create_group_details": "הזן את הפרטים הדרושים כדי ליצור קבוצת zigbee חדשה",
"creating_group": "יוצר קבוצה",
"description": "יצירה ושינוי של קבוצות Zigbee",
"group_details": "להלן כל הפרטים עבור קבוצת Zigbee שנבחרה.",
"group_id": "מזהה קבוצה",
"group_info": "פרטי קבוצה",
"group_name_placeholder": "שם קבוצה",
"group_not_found": "הקבוצה לא נמצאה!",
"group-header": "אוטומציה ביתית של Zigbee - פרטי קבוצה",
"groups": "קבוצות",
"groups-header": "אוטומציה ביתית של Zigbee - ניהול קבוצות",
"header": "אוטומציה ביתית של Zigbee - ניהול קבוצות",
"introduction": "יצירה ושינוי של קבוצות Zigbee",
"manage_groups": "ניהול קבוצות Zigbee",
"members": "חברים",
"remove_groups": "הסר קבוצות",
"remove_members": "הסר חברים",
"removing_groups": "מסיר קבוצות",
"removing_members": "מסיר חברים",
"zha_zigbee_groups": "קבוצות Zigbee ZHA"
},
"header": "הגדר אוטומציה ביתית של Zigbee",
"introduction": "כאן ניתן לקבוע את התצורה של רכיב ה- ZHA. עדיין לא ניתן להגדיר הכל ממשק המשתמש, אך אנו עובדים על זה.",
"network_management": {
"header": "ניהול רשת",
"introduction": "פקודות שמשפיעות על הרשת כולה"
@ -1628,12 +1867,42 @@
"caption": "רשת"
},
"node_management": {
"header": "ניהול התקן",
"help_node_dropdown": "בחר התקן להצגת האפשרויות.",
"header": "ניהול מכשירים",
"help_node_dropdown": "בחר מכשיר להצגת האפשרויות.",
"hint_battery_devices": "הערה: מכשירים מנומנמים (מופעלים על סוללות) צריכים להיות ערים בעת ביצוע פקודות מולם. בדרך כלל ניתן להעיר מכשיר מנומנם על ידי ביצוע פקודה מולם.",
"hint_wakeup": "מכשירים מסוימים, כגון חיישני Xiaomi, כוללים כפתור להתעוררות עליו ניתן ללחוץ במרווח של ~5 שניות על מנת להשאיר אותם ערים בזמן שמתקשרים איתם.",
"introduction": "הפעל פקודות ZHA המשפיעות על מכשיר בודד. בחר מכשיר כדי לראות את רשימת הפקודות הזמינות."
}
},
"title": "אוטומציה ביתית של Zigbee"
},
"zone": {
"add_zone": "הוסף אזור",
"caption": "אזורים",
"configured_in_yaml": "לא ניתן לערוך אזורים המוגדרים באמצעות configuration.yaml באמצעות ממשק המשתמש.",
"confirm_delete": "האם אתה בטוח שברצונך למחוק אזור זה?",
"create_zone": "צור אזור",
"description": "נהל את האזורים שבהם ברצונך לעקוב אחר אנשים.",
"detail": {
"create": "צור",
"delete": "מחק",
"icon": "סמל",
"icon_error_msg": "הסמל צריך להיות בפורמט: prefix:iconname, למשל: mdi:home",
"latitude": "קו רוחב",
"longitude": "קו אורך",
"name": "שם",
"new_zone": "אזור חדש",
"passive": "פסיבי",
"passive_note": "אזורים פסיביים מוסתרים בממשק המשתמש ולא משמשים כמיקום עבור עוקבי מכשירים. זה שימושי אם אתה רק רוצה להשתמש בו לאוטומציות.",
"radius": "רדיוס",
"required_error_msg": "שדה זה הוא חובה",
"update": "עדכן"
},
"edit_home_zone": "עדיין לא ניתן לערוך את רדיוס אזור הבית מממשק המשתמש. גרור את הסמן על המפה כדי להזיז את אזור הבית.",
"edit_home_zone_narrow": "הרדיוס של אזור הבית שלך ניתן לעריכה מדף הקונפיגורציה הכללי. עדיין לא ניתן לערוך את רדיוס אזור הבית מממשק המשתמש. האם ברצונך לעבור לקונפיגורציה הכללית?",
"go_to_core_config": "לעבור לקונפיגורציה הכללית?",
"home_zone_core_config": "המיקום של אזור הבית שלך ניתן לעריכה מדף הקונפיגורציה הכללי. עדיין לא ניתן לערוך את מיקום אזור הבית מממשק המשתמש. האם ברצונך לעבור לקונפיגורציה הכללית?",
"introduction": "אזורים מאפשרים לך לציין אזורים מסוימים בכדור הארץ. כאשר אדם נמצא באזור, הסטטוס יקח את השם מהאזור. אזורים יכולים לשמש גם כטריגר או תנאי בתוך הגדרות אוטומציה.",
"no_zones_created_yet": "נראה שעדיין לא יצרת אזורים."
},
"zwave": {
"button": "הגדר",
@ -1677,34 +1946,45 @@
"group": "קְבוּצָה",
"header": "ניהול יחידות Z-Wave",
"introduction": "הפעל פקודות Z-Wave המשפיעות על יחידה בודדת. בחר יחידה כדי לראות רשימה של פקודות זמינות.",
"max_associations": "כמות קישורים מקסימלי:",
"node_group_associations": "קישורי קבוצת היחידה",
"node_protection": "הגנת יחידה",
"node_to_control": "יחידה לניהול",
"nodes": "יחידות",
"nodes_hint": "בחר יחידה כדי להציג אפשרויות ליחידה",
"nodes_in_group": "יחידות אחרות בקבוצה זו:",
"pooling_intensity": "עוצמת דגימה",
"protection": "הגנה",
"remove_broadcast": "הסר שידור רחב",
"remove_from_group": "הסר מהקבוצה",
"set_protection": "הגדרת הגנה"
},
"ozw_log": {
"header": "יומן OZW",
"introduction": "צפה ביומן. 0 הוא המינימום (טוען יומן שלם) ו -1000 הוא המקסימום. הטעינה תציג יומן סטטי והסוף יתעדכן אוטומטית במספר האחרון שצוין של שורות היומן.",
"load": "לִטעוֹן"
"last_log_lines": "מספר שורות יומן אחרונות",
"load": "לִטעוֹן",
"tail": "סוף"
},
"services": {
"add_node": "הוסף רכיב",
"add_node_secure": "הוסף רכיב מאובטח",
"cancel_command": "ביטול פקודה",
"heal_network": "ריפוי רשת",
"heal_node": "תיקון יחידה",
"node_info": "מידע על היחידה",
"print_node": "הדפסת יחידה",
"refresh_entity": "רענן ישות",
"refresh_node": "רענן יחידה",
"remove_failed_node": "הסר יחידה תקולה",
"remove_node": "הסר רכיב",
"replace_failed_node": "החלף יחידה תקולה",
"save_config": "שמור קונפיגורציה",
"soft_reset": "איפוס רך",
"start_network": "הפעל רשת",
"stop_network": "עצור רשת",
"test_network": "בדיקת רשת"
"test_network": "בדיקת רשת",
"test_node": "בדיקת יחידה"
},
"values": {
"header": "ערכים"
@ -1756,7 +2036,7 @@
"alert_entity_field": "ישות היא שדה חובה",
"attributes": "תכונות",
"current_entities": "ישויות נוכחיות",
"description1": "הגדר את הייצוג של ההתקן בתוך Home Assistant.",
"description1": "הגדר את הייצוג של המכשיר בתוך Home Assistant.",
"description2": "זה לא יתקשר עם המכשיר עצמו.",
"entity": "ישות",
"filter_attributes": "סנן תכונות",
@ -1781,6 +2061,12 @@
},
"history": {
"period": "תקופה",
"ranges": {
"last_week": "שבוע שעבר",
"this_week": "השבוע",
"today": "היום",
"yesterday": "אתמול"
},
"showing_entries": "מציג רשומות עבור"
},
"logbook": {
@ -1795,6 +2081,11 @@
"showing_entries": "מציג רשומות עבור"
},
"lovelace": {
"add_entities": {
"generated_unsupported": "אתה יכול להשתמש בפונקציה זו רק לאחר שהשתלטת על ממשק המשתמש של Lovelace.",
"saving_failed": "שמירת תצורת ממשק המשתמש של Lovelace נכשלה.",
"yaml_unsupported": "אינך יכול להשתמש בפונקציה זו כשמשתמשים בממשק המשתמש של Lovelace במצב YAML."
},
"cards": {
"confirm_delete": "האם אתה בטוח שברצונך למחוק את הכרטיס הזה?",
"empty_state": {
@ -1802,6 +2093,9 @@
"no_devices": "דף זה מאפשר לך לשלוט במכשירים שלך, אך נראה שעדיין לא הוגדרו מכשירים. עבור אל דף האינטגרציות כדי להתחיל.",
"title": "ברוך הבא הביתה"
},
"entities": {
"never_triggered": "מעולם לא הופעל"
},
"picture-elements": {
"call_service": "קריאה לשירות {name}",
"hold": "החזק:",
@ -1811,6 +2105,10 @@
"toggle": "החלף מצב {name}",
"url": "פתח חלון ל- {url_path}"
},
"safe-mode": {
"description": "Home Assistant נתקל בבעיות בעת טעינת התצורה שלך וכעת הוא פועל במצב בטוח. עיין ביומן השגיאות כדי לראות מה השתבש.",
"header": "מצב בטוח מופעל"
},
"shopping-list": {
"add_item": "הוסף פריט",
"checked_items": "פריטים מסומנים",
@ -1829,10 +2127,12 @@
"card": {
"alarm-panel": {
"available_states": "מצבים זמינים",
"description": "הכרטיס של לוח האזעקה מאפשר לך לדרוך ולנטרל את שילובי לוח הבקרה של האזעקה.",
"name": "לוח אזעקה"
},
"button": {
"description": "כרטיס ה־Button מאפשר להוסיף כפתורים לביצוע משימות."
"description": "כרטיס ה־Button מאפשר להוסיף כפתורים לביצוע משימות.",
"name": "כפתור"
},
"conditional": {
"card": "כרטיס",
@ -1917,6 +2217,10 @@
"description": "כרטיס הערימה האופקית מאפשר לכם לערום יחד מספר כרטיסים, כך שהם תמיד יושבים אחד ליד השני במרחב של טור אחד.",
"name": "עימוד אופקי"
},
"humidifier": {
"description": "כרטיס מכשיר אדים מעניק שליטה על ישות מכשיר האדים שלך ומאפשר לך לשנות את הלחות והמצב של הישות.",
"name": "מכשיר אדים"
},
"iframe": {
"description": "כרטיס דף האינטרנט מאפשר לך להטביע את דף האינטרנט המועדף עליך ישירות לתוך Home Assistant.",
"name": "iFrame"
@ -1971,6 +2275,7 @@
},
"shopping-list": {
"description": "כרטיס רשימת הקניות מאפשר לך להוסיף, לערוך, לבצע הוצאה ולנקות פריטים מרשימת הקניות שלך.",
"integration_not_loaded": "כרטיס זה דורש את הגדרת האינטגרציה 'shopping_list'.",
"name": "רשימת קניות"
},
"thermostat": {
@ -2018,6 +2323,9 @@
"header_name": "{name} הצג את תצורת",
"move_left": "הזז את התצוגה שמאלה",
"move_right": "הזז את התצוגה ימינה",
"tab_badges": "תגים",
"tab_settings": "הגדרות",
"tab_visibility": "ניראות",
"visibility": {
"select_users": "בחר אילו משתמשים צריכים לראות תצוגה זו בתפריט"
}
@ -2034,12 +2342,16 @@
"para_no_id": "האלמנט הנוכחי לא מכיל מזהה יחודיי. בבקשה הוסף מזהה יחודי לאלמט זה בקובץ 'ui-lovelace.yaml'."
},
"raw_editor": {
"confirm_remove_config_text": "אנו ניצור אוטומטית את תצוגות ממשק המשתמש של Lovelace עם האזורים והמכשירים שלך אם תסיר את קונפיגורציית ממשק המשתמש שלך ב- Lovelace.",
"confirm_remove_config_title": "האם אתה בטוח שברצונך להסיר את תצורת ממשק המשתמש של Lovelace? אנו נייצר אוטומטית את תצוגות ממשק המשתמש שלך ב- Lovelace עם האזורים והמכשירים שלך.",
"confirm_unsaved_changes": "יש לך שינויים שלא נשמרו, אתה בטוח שברצונך לצאת?",
"confirm_unsaved_comments": "התצורה שלך מכילה הערות, אלה לא יישמרו. האם אתה רוצה להמשיך?",
"error_invalid_config": "התצורה שלך אינה תקפה: {error}",
"error_parse_yaml": "לא ניתן לנתח את YAML: {error}",
"error_remove": "לא ניתן להסיר את הקונפיגורציה: {error}",
"error_save_yaml": "אין אפשרות לשמור את YAML: {error}",
"header": "עריכת קונפיגורציה",
"resources_moved": "אין להוסיף עוד משאבים לתצורת Lovelace אך ניתן להוסיף אותם בלוח התצורה של Lovelace.",
"save": "שמור",
"saved": "נשמר",
"unsaved_changes": "שינויים שלא נשמרו"
@ -2051,7 +2363,15 @@
"header": "קח שליטה על Lovelace ממשק המשתמש שלך",
"para": "כברירת מחדל Home Assistant יתחזק את ממשק המשתמש שלך , יעדכן אותו כאשר קומפוננטות או ישויות חדשות יהפכו לזמינות. אם תקח שליטה אנו לא נוכל לבצע שינויים בצורה אוטומטית בשבילך.",
"para_sure": "האם אתה בטוח שאתה רוצה לקחת שליטה על ממשק המשתמש?",
"save": "קח שליטה"
"save": "קח שליטה",
"yaml_config": "כדי לעזור לך להתחיל הנה התצורה הנוכחית של לוח מחוונים זה:",
"yaml_control": "כדי לקבל שליטה במצב YAML, צור קובץ YAML עם השם שציינת ב-config עבור לוח מחוונים זה, או ברירת המחדל 'ui-lovelace.yaml'.",
"yaml_mode": "אתה משתמש במצב YAML עבור לוח מחוונים זה ולכן אין באפשרותך לשנות את קונפיגורצית Lovelace מממשק המשתמש. אם ברצונך לנהל לוח מחוונים זה מממשק המשתמש, הסר 'mode: yaml' מתצורת Loverlace ב 'configuration.yaml.'."
},
"suggest_card": {
"add": "הוסף לממשק המשתמש של Lovelace",
"create_own": "בחר כרטיס אחר",
"header": "יצרנו הצעה עבורך"
},
"view": {
"panel_mode": {
@ -2086,6 +2406,7 @@
"views": {
"confirm_delete": "האם אתה בטוח שברצונך למחוק תצוגה זו?",
"confirm_delete_existing_cards": "מחיקת תצוגה זו תסיר גם את הכרטיסים",
"confirm_delete_existing_cards_text": "האם אתה בטוח שברצונך למחוק את התצוגה '' {name} '' שלך? התצוגה כוללת {number} כרטיסים שיימחקו. לא ניתן לבטל פעולה זו.",
"confirm_delete_text": "האם אתה בטוח שברצונך למחוק את התצוגה \"{name}\"?"
},
"warning": {
@ -2279,6 +2600,7 @@
"profile": {
"advanced_mode": {
"description": "Home Assistant מסתיר תכונות ואפשרויות מתקדמות כברירת מחדל. ביכולתך לחשוף אותן ע\"י בחירת תיבת הסימון זו. הגדרה זו היא עבור המשתמש הנוכחי ולא תשפיע על משתמשים אחרים ב Home Assistant.",
"link_promo": "למד עוד",
"title": "מצב מתקדם"
},
"change_password": {
@ -2306,6 +2628,8 @@
"link_promo": "עזור לתרגם"
},
"logout": "התנתק",
"logout_text": "האם אתה בטוח שברצונך להתנתק?",
"logout_title": "להתנתק?",
"long_lived_access_tokens": {
"confirm_delete": "האם אתה בטוח שברצונך למחוק את אסימון הגישה עבור {name} ?",
"create": "צור אסימון",
@ -2329,8 +2653,8 @@
"title_success": "הצליח!"
},
"mfa": {
"confirm_disable": "האם אתה בטוח שברצונך להשבית {name}",
"disable": "בטל",
"confirm_disable": "האם אתה בטוח שברצונך להשבית {name}?",
"disable": "השבת",
"enable": "הפעל",
"header": "מודלי אימות מרובה גורמים"
},
@ -2360,7 +2684,7 @@
"link_promo": "למד אודות ערכות נושא"
},
"vibrate": {
"description": "הפעל או בטל את הרטט בהתקן זה בעת שליטה בהתקנים.",
"description": "הפעל או בטל את הרטט במכשיר זה בעת שליטה בהתקנים.",
"header": "רטט"
}
},

View File

@ -48,6 +48,19 @@
"none": "Nessuna",
"sleep": "Dormire"
}
},
"humidifier": {
"mode": {
"auto": "Automatico",
"away": "Fuori casa",
"baby": "Bambino",
"boost": "Boost",
"comfort": "Comfort",
"eco": "Eco",
"home": "In casa",
"normal": "Normale",
"sleep": "Sonno"
}
}
},
"state_badge": {
@ -388,6 +401,12 @@
"reverse": "Indietro",
"speed": "Velocità"
},
"humidifier": {
"humidity": "Target umidità",
"mode": "Modalità",
"on_entity": "{name} acceso",
"target_humidity_entity": "{name} target umidità"
},
"light": {
"brightness": "Luminosità",
"color_temperature": "Temperatura colore",

View File

@ -48,6 +48,19 @@
"none": "없음",
"sleep": "취침"
}
},
"humidifier": {
"mode": {
"auto": "자동",
"away": "외출",
"baby": "아기",
"boost": "쾌속",
"comfort": "쾌적",
"eco": "에코",
"home": "재실",
"normal": "일반",
"sleep": "취침"
}
}
},
"state_badge": {
@ -388,6 +401,12 @@
"reverse": "뒤로",
"speed": "속도"
},
"humidifier": {
"humidity": "희망 습도",
"mode": "모드",
"on_entity": "{name} 작동",
"target_humidity_entity": "{name} 희망 습도"
},
"light": {
"brightness": "밝기",
"color_temperature": "색온도",
@ -507,9 +526,9 @@
"show_areas": "영역 표시"
},
"date-range-picker": {
"end_date": "종료",
"end_date": "종료 날짜",
"select": "선택",
"start_date": "시작"
"start_date": "시작 날짜"
},
"device-picker": {
"clear": "지우기",
@ -2043,8 +2062,8 @@
"history": {
"period": "기간",
"ranges": {
"last_week": "지난주",
"this_week": "이번주",
"last_week": "지난 주",
"this_week": "이번 주",
"today": "오늘",
"yesterday": "어제"
},
@ -2054,8 +2073,8 @@
"entries_not_found": "로그북 구성요소를 찾을 수 없습니다.",
"period": "기간",
"ranges": {
"last_week": "지난주",
"this_week": "이번주",
"last_week": "지난 주",
"this_week": "이번 주",
"today": "오늘",
"yesterday": "어제"
},
@ -2198,6 +2217,10 @@
"description": "수평 모아보기 카드를 사용하면 여러 카드를 함께 묶을 수 있으며 항상 한 열의 공간에서 옆으로 나열합니다.",
"name": "수평 모아보기"
},
"humidifier": {
"description": "가습기 카드는 가습 기기를 제어합니다. 구성요소의 가습 모드를 변경할 수 있습니다.",
"name": "가습기"
},
"iframe": {
"description": "웹 페이지 카드를 사용하면 즐겨 찾는 웹 페이지를 Home Assistant 에 삽입할 수 있습니다.",
"name": "웹 페이지"

View File

@ -48,6 +48,19 @@
"none": "Ingen",
"sleep": "Sove"
}
},
"humidifier": {
"mode": {
"auto": "Auto",
"away": "Borte",
"baby": "Baby",
"boost": "Øke",
"comfort": "Komfort",
"eco": "Øko",
"home": "Hjem",
"normal": "Normal",
"sleep": "Sove"
}
}
},
"state_badge": {
@ -388,6 +401,12 @@
"reverse": "Omvendt",
"speed": "Hastighet"
},
"humidifier": {
"humidity": "Målfuktighet",
"mode": "Modus",
"on_entity": "{name} på",
"target_humidity_entity": "{name} målfuktighet"
},
"light": {
"brightness": "Lysstyrke",
"color_temperature": "Fargetemperatur",
@ -2198,6 +2217,10 @@
"description": "Horizontal Stack-kortet lar deg stable sammen flere kort, slik at de alltid sitter ved siden av hverandre i løpet av en kolonne.",
"name": "Horisontal Stack"
},
"humidifier": {
"description": "Luftfukterkortet gir kontroll over luftfukterenheten din. Lar deg endre fuktigheten og modusen til enheten.",
"name": "Luftfukter"
},
"iframe": {
"description": "Websidekortet lar deg legge inn favorittwebsiden din direkte i Home Assistant.",
"name": "Webside"

View File

@ -48,6 +48,14 @@
"none": "Nenhum",
"sleep": "Dormir"
}
},
"humidifier": {
"mode": {
"auto": "Auto",
"comfort": "Conforto",
"eco": "Eco",
"normal": "Normal"
}
}
},
"state_badge": {
@ -388,6 +396,12 @@
"reverse": "Reverter",
"speed": "Velocidade"
},
"humidifier": {
"humidity": "Humidade pretendida",
"mode": "Modo",
"on_entity": "{name} ligado",
"target_humidity_entity": "{name} humidade pretendida"
},
"light": {
"brightness": "Brilho",
"color_temperature": "Temperatura de cor",
@ -1543,6 +1557,7 @@
}
},
"mqtt": {
"button": "Configurar",
"description_listen": "Ouvir um tópico",
"description_publish": "Publicar um pacote",
"listening_to": "A escutar",
@ -1981,11 +1996,23 @@
},
"history": {
"period": "Período",
"ranges": {
"last_week": "Semana passada",
"this_week": "Esta semana",
"today": "Hoje",
"yesterday": "Ontem"
},
"showing_entries": "Mostrar valores para"
},
"logbook": {
"entries_not_found": "Sem registos no diário de bordo",
"period": "Período",
"ranges": {
"last_week": "Semana passada",
"this_week": "Esta semana",
"today": "Hoje",
"yesterday": "Ontem"
},
"showing_entries": "Mostrar valores para"
},
"lovelace": {
@ -2123,6 +2150,9 @@
"description": "O cartão Agrupamento Vertical permite agrupar vários cartões para que estes fiquem sempre na mesma coluna.",
"name": "Agrupamento Horizontal"
},
"humidifier": {
"name": "Humidificador"
},
"iframe": {
"description": "O cartão de página da Web, permite incorporar a sua página da Web favorita diretamente no Home Assistant.",
"name": "Página Web"

View File

@ -16,7 +16,7 @@
"config": "Настройки",
"developer_tools": "Панель разработчика",
"history": "История",
"logbook": "Журнал",
"logbook": "Журнал событий",
"mailbox": "Почта",
"map": "Карта",
"profile": "Профиль",
@ -620,7 +620,7 @@
"input_datetime": {
"date": "Дата",
"datetime": "Дата и время",
"mode": "Что вы хотите ввести?",
"mode": "Режим отображения",
"time": "Время"
},
"input_number": {
@ -646,7 +646,7 @@
"pattern": "Шаблон регулярного выражения для проверки на стороне клиента",
"text": "Текст"
},
"platform_not_loaded": "Интеграция \"{platform}\" не загружена. Добавьте в YAML-конфигурацию 'default_config:' или ''{platform}:''.",
"platform_not_loaded": "Интеграция '{platform}' не загружена. Добавьте в YAML-конфигурацию 'default_config:' или '{platform}:'.",
"required_error_msg": "Обязательное поле",
"yaml_not_editable": "Настройки этого объекта нельзя изменить из пользовательского интерфейса. Настраиваться из пользовательского интерфейса могут только те объекты, которые были созданы в нём."
},
@ -792,7 +792,7 @@
"confirmation_text": "Связанные устройства потеряют привязку к помещению.",
"confirmation_title": "Вы уверены, что хотите удалить это помещение?"
},
"description": "Управляйте помещениями в Вашем доме",
"description": "Управление помещениями в Вашем доме",
"editor": {
"area_id": "ID помещения",
"create": "Добавить",
@ -814,7 +814,7 @@
},
"automation": {
"caption": "Автоматизация",
"description": "Создавайте и редактируйте правила автоматизации",
"description": "Создание и редактирование правил автоматизации",
"editor": {
"actions": {
"add": "Добавить действие",
@ -934,7 +934,7 @@
},
"edit_ui": "Форма ввода",
"edit_yaml": "Текстовый редактор",
"enable_disable": "Включить / выключить автоматизацию",
"enable_disable": "Включить / выключить правило автоматизации",
"introduction": "Используйте автоматизацию, чтобы оживить Ваш дом.",
"load_error_not_editable": "Доступны для редактирования только автоматизации из automations.yaml.",
"load_error_unknown": "Ошибка загрузки автоматизации ({err_no}).",
@ -1126,7 +1126,7 @@
"title": "Alexa"
},
"caption": "Home Assistant Cloud",
"description_features": "Управление вдали от дома, интеграция с Alexa и Google Assistant",
"description_features": "Управление сервером вдали от дома, интеграция с Alexa и Google Assistant",
"description_login": "{email}",
"description_not_login": "Вход не выполнен",
"dialog_certificate": {
@ -1215,7 +1215,7 @@
},
"core": {
"caption": "Общие",
"description": "Управляйте основными настройками Home Assistant",
"description": "Основные настройки Home Assistant",
"section": {
"core": {
"core_config": {
@ -1247,7 +1247,7 @@
"attributes_override": "Вы можете переназначить их.",
"attributes_set": "Следующие атрибуты были назначены программно.",
"caption": "Кастомизация",
"description": "Настраивайте атрибуты объектов",
"description": "Настройка атрибутов объектов",
"different_include": "Возможно через домен, glob или include.",
"pick_attribute": "Выберите атрибут",
"picker": {
@ -1292,7 +1292,7 @@
"no_devices": "Нет устройств"
},
"delete": "Удалить",
"description": "Управляйте подключенными устройствами",
"description": "Управление подключенными устройствами",
"device_info": "Устройство",
"device_not_found": "Устройство не найдено",
"entities": {
@ -1322,7 +1322,7 @@
},
"entities": {
"caption": "Объекты",
"description": "Управляйте доступными объектами",
"description": "Управление доступными объектами",
"picker": {
"disable_selected": {
"button": "Скрыть выбранные",
@ -1373,7 +1373,7 @@
"header": "Настройка Home Assistant",
"helpers": {
"caption": "Вспомогательное",
"description": "Элементы, которые могут помочь в создании автоматизации.",
"description": "Элементы, которые могут помочь в автоматизации",
"dialog": {
"add_helper": "Создание вспомогательного элемента",
"add_platform": "Добавить \"{platform}\"",
@ -1464,7 +1464,7 @@
},
"configure": "Настроить",
"configured": "Настроено",
"description": "Добавляйте и настраивайте интеграции",
"description": "Добавление и настройка интеграций",
"details": "Детали интеграции",
"discovered": "Обнаружено",
"home_assistant_website": "сайте Home Assistant",
@ -1493,7 +1493,7 @@
},
"introduction": "Здесь можно настроить Home Assistant. Пока что не все настройки доступны из интерфейса, но мы работаем над этим.",
"logs": {
"caption": "Журнал работы сервера",
"caption": "Журнал сервера",
"clear": "Очистить",
"description": "Просмотр журналов работы сервера Home Assistant",
"details": "Уровень: {level}",
@ -1547,7 +1547,7 @@
"open": "Открыть"
}
},
"description": "Настройка панелей пользовательского интерфейса Lovelace.",
"description": "Настройка панелей пользовательского интерфейса Lovelace",
"resources": {
"cant_edit_yaml": "Вы используете Lovelace в режиме YAML, поэтому невозможно управление ресурсами через пользовательский интерфейс. В данном режиме управление осуществляется через файл configuration.yaml.",
"caption": "Ресурсы",
@ -1583,7 +1583,7 @@
}
},
"mqtt": {
"button": "Настроить",
"button": "Настройка",
"description_listen": "Подписаться на топик",
"description_publish": "Опубликовать данные",
"listening_to": "Подписано на",
@ -1602,7 +1602,7 @@
"confirm_delete": "Вы уверены, что хотите удалить эту персону?",
"confirm_delete2": "Все устройства, связанные с этой персоной, станут не назначенными.",
"create_person": "Добавить персону",
"description": "Определяйте людей, которых может отслеживать Home Assistant",
"description": "Люди, которых может отслеживать Home Assistant",
"detail": {
"create": "Создать",
"delete": "Удалить",
@ -1625,7 +1625,7 @@
"scene": {
"activated": "Активирована сцена {name}.",
"caption": "Сцены",
"description": "Создавайте и редактируйте сцены",
"description": "Создание и редактирование сцен",
"editor": {
"default_name": "Новая сцена",
"devices": {
@ -1668,7 +1668,7 @@
},
"script": {
"caption": "Сценарии",
"description": "Создавайте и редактируйте сценарии",
"description": "Создание и редактирование сценариев",
"editor": {
"alias": "Название",
"default_name": "Новый сценарий",
@ -1697,7 +1697,7 @@
},
"server_control": {
"caption": "Сервер",
"description": "Управляйте сервером Home Assistant",
"description": "Управление сервером Home Assistant",
"section": {
"reloading": {
"automation": "Перезагрузить автоматизации",
@ -1741,7 +1741,7 @@
"username": "Логин"
},
"caption": "Пользователи",
"description": "Управляйте учётными записями пользователей",
"description": "Управление учётными записями пользователей",
"editor": {
"activate_user": "Активировать",
"active": "Активен",
@ -1815,7 +1815,7 @@
"manufacturer_code_override": "Переназначить код производителя",
"value": "Значение"
},
"description": "Управляйте сетью Zigbee Home Automation",
"description": "Управление сетью Zigbee Home Automation",
"devices": {
"header": "Zigbee Home Automation - Устройство"
},
@ -1881,7 +1881,7 @@
"configured_in_yaml": "Зоны, настроенные с помощью configuration.yaml, нельзя редактировать с помощью пользовательского интерфейса.",
"confirm_delete": "Вы уверены, что хотите удалить эту зону?",
"create_zone": "Создать зону",
"description": "Управляйте зонами, в которых Вы хотите отслеживать людей.",
"description": "Управление зонами, в которых Вы хотите отслеживать людей",
"detail": {
"create": "Создать",
"delete": "Удалить",
@ -1914,7 +1914,7 @@
"value": "Значение",
"wakeup_interval": "Интервал пробуждения"
},
"description": "Управляйте Вашей сетью Z-Wave",
"description": "Управление сетью Z-Wave",
"learn_more": "Узнайте больше о Z-Wave",
"network_management": {
"header": "Управление сетью Z-Wave",
@ -2050,7 +2050,7 @@
"title": "Состояния"
},
"templates": {
"description": "Здесь Вы можете протестировать поведение шаблонов. Шаблоны используют шаблонизатор Jinja2 с некоторыми специальными расширениями Home Assistant.",
"description": "Здесь Вы можете протестировать поведение шаблонов. В Home Assistant используется шаблонизатор Jinja2 с некоторыми специальными расширениями.",
"editor": "Редактор шаблонов",
"jinja_documentation": "Узнайте больше о шаблонизаторе Jinja2",
"template_extensions": "Узнайте больше о шаблонах Home Assistant",
@ -2106,7 +2106,7 @@
"url": "Открыть окно {url_path}"
},
"safe-mode": {
"description": "Home Assistant столкнулся с проблемой при загрузке Вашей конфигурации и теперь работает в безопасном режиме. Ознакомьтесь с журналом ошибок, чтобы увидеть, что пошло не так.",
"description": "Home Assistant столкнулся с проблемой при загрузке Вашей конфигурации и теперь работает в безопасном режиме. Ознакомьтесь с журналом работы сервера, чтобы увидеть что пошло не так.",
"header": "Безопасный режим"
},
"shopping-list": {

View File

@ -403,7 +403,9 @@
},
"humidifier": {
"humidity": "设定湿度",
"mode": "模式"
"mode": "模式",
"on_entity": "{name} 已打开",
"target_humidity_entity": "{name} 的设定湿度"
},
"light": {
"brightness": "亮度",
@ -644,7 +646,7 @@
"pattern": "用于客户端验证的正则表达式模式",
"text": "文本"
},
"platform_not_loaded": "{platform} 组件尚未加载。请 'default_config:' 或 ''{platform}:'' 中选择一种方式,将其写入配置中。",
"platform_not_loaded": "{platform} 组件尚未加载。请 'default_config:' 或 ''{platform}:'' 中选择一种方式,将其写入配置中。",
"required_error_msg": "此字段为必填字段",
"yaml_not_editable": "无法从 UI 编辑此实体的设置。只有通过 UI 设置的实体可以从 UI 配置。"
},

View File

@ -646,7 +646,7 @@
"pattern": "客戶端驗證模式",
"text": "文字"
},
"platform_not_loaded": "{platform} 元件未載入。請於設定檔進行添加、新增 'default_config:' 或 ''{platform}:''。",
"platform_not_loaded": "{platform} 整合未載入。請於設定檔進行添加、新增 'default_config:' 或 ''{platform}:''。",
"required_error_msg": "必填欄位",
"yaml_not_editable": "此物件的設定無法藉由 UI 編輯、僅有透過 UI 設定的物件可於 UI 進行設定。"
},

View File

@ -6666,10 +6666,10 @@ he@1.2.0, he@^1.2.0:
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
hls.js@^0.12.4:
version "0.12.4"
resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.12.4.tgz#c155b7b2825a11117c111b781973c0ffa759006b"
integrity sha512-e8OPxQ60dBVsdkv4atdxR21KzC1mgwspM41qpozpj3Uv1Fz4CaeQy3FWoaV2O+QKKbNRvV5hW+/LipCWdrwnMQ==
hls.js@^0.13.2:
version "0.13.2"
resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.13.2.tgz#3e7dd28e3787c69c6aba42b64b11eb2c3c8c29f1"
integrity sha512-sIg2t4uGpWQLzuK1Iid9614WOKqxj4OYg+EbFbhhTDCsxpENBN+Du3yBFnoi+a83DuOOHdiQd1ydnti9loSGXw==
dependencies:
eventemitter3 "3.1.0"
url-toolkit "^2.1.6"