Compare commits

..

4 Commits

Author SHA1 Message Date
Bram Kragten
e8254f9aae Merge pull request #6411 from home-assistant/dev 2020-07-16 18:38:27 +02:00
Bram Kragten
2e198af8c3 Merge pull request #6399 from home-assistant/dev 2020-07-15 20:19:11 +02:00
Bram Kragten
ec36d396d9 Merge pull request #6396 from home-assistant/dev 2020-07-15 16:23:49 +02:00
Bram Kragten
78914091b1 Merge pull request #6389 from home-assistant/dev 2020-07-14 23:53:51 +02:00
103 changed files with 924 additions and 3048 deletions

View File

@@ -52,6 +52,7 @@ class CastDemoRow extends LitElement implements LovelaceRow {
});
mgr.castContext.addEventListener(
// eslint-disable-next-line no-undef
// @ts-ignore
cast.framework.CastContextEventType.SESSION_STATE_CHANGED,
(ev) => {
// On Android, opening a new session always results in SESSION_RESUMED.

View File

@@ -25,7 +25,6 @@ import { HomeAssistant, Route } from "../../../src/types";
import { showRepositoriesDialog } from "../dialogs/repositories/show-dialog-repositories";
import { supervisorTabs } from "../hassio-tabs";
import "./hassio-addon-repository";
import { ActionDetail } from "@material/mwc-list/mwc-list-foundation";
const sortRepos = (a: HassioAddonRepository, b: HassioAddonRepository) => {
if (a.slug === "local") {
@@ -98,18 +97,14 @@ class HassioAddonStore extends LitElement {
.tabs=${supervisorTabs}
>
<span slot="header">Add-on store</span>
<ha-button-menu
corner="BOTTOM_START"
slot="toolbar-icon"
@action=${this._handleAction}
>
<ha-button-menu corner="BOTTOM_START" slot="toolbar-icon">
<mwc-icon-button slot="trigger" alt="menu">
<ha-svg-icon path=${mdiDotsVertical}></ha-svg-icon>
</mwc-icon-button>
<mwc-list-item>
<mwc-list-item @tap=${this._manageRepositories}>
Repositories
</mwc-list-item>
<mwc-list-item>
<mwc-list-item @tap=${this.refreshData}>
Reload
</mwc-list-item>
</ha-button-menu>
@@ -148,17 +143,6 @@ class HassioAddonStore extends LitElement {
this._loadData();
}
private _handleAction(ev: CustomEvent<ActionDetail>) {
switch (ev.detail.index) {
case 0:
this._manageRepositories();
break;
case 1:
this.refreshData();
break;
}
}
private apiCalled(ev) {
if (ev.detail.success) {
this._loadData();

View File

@@ -13,7 +13,7 @@
"lint:prettier": "prettier '**/src/**/*.{js,ts,json,css,md}' --check",
"format:prettier": "prettier '**/src/**/*.{js,ts,json,css,md}' --write",
"lint:types": "tsc",
"lint:lit": "lit-analyzer '**/src/**/*.ts' --format markdown --outFile result.md",
"lint:lit": "lit-analyzer '**/src/**/*.ts'",
"lint": "npm run lint:eslint && npm run lint:prettier && npm run lint:types",
"format": "npm run format:eslint && npm run format:prettier",
"mocha": "node_modules/.bin/ts-mocha -p test-mocha/tsconfig.test.json --opts test-mocha/mocha.opts",
@@ -74,7 +74,6 @@
"@polymer/paper-tooltip": "^3.0.1",
"@polymer/polymer": "3.1.0",
"@thomasloven/round-slider": "0.5.0",
"@types/chromecast-caf-sender": "^1.0.3",
"@vaadin/vaadin-combo-box": "^5.0.10",
"@vaadin/vaadin-date-picker": "^4.0.7",
"@vue/web-component-wrapper": "^1.2.0",
@@ -108,7 +107,7 @@
"regenerator-runtime": "^0.13.2",
"resize-observer-polyfill": "^1.5.1",
"roboto-fontface": "^0.10.0",
"superstruct": "^0.10.12",
"superstruct": "^0.6.1",
"unfetch": "^4.1.0",
"vue": "^2.6.11",
"vue2-daterange-picker": "^0.5.1",
@@ -171,7 +170,7 @@
"html-minifier": "^4.0.0",
"husky": "^1.3.1",
"lint-staged": "^8.1.5",
"lit-analyzer": "^1.2.0",
"lit-analyzer": "^1.1.10",
"lodash.template": "^4.5.0",
"magic-string": "^0.25.7",
"map-stream": "^0.0.7",
@@ -192,7 +191,7 @@
"source-map-url": "^0.4.0",
"systemjs": "^6.3.2",
"terser-webpack-plugin": "^3.0.6",
"ts-lit-plugin": "^1.2.0",
"ts-lit-plugin": "^1.1.10",
"ts-mocha": "^6.0.0",
"typescript": "^3.8.3",
"vinyl-buffer": "^1.0.1",

View File

@@ -1,8 +1,4 @@
/* eslint-disable no-undef, no-console */
import {
CastStateEventData,
SessionStateEventData,
} from "chromecast-caf-receiver/cast.framework";
import { Auth } from "home-assistant-js-websocket";
import { castApiAvailable } from "./cast_framework";
import { CAST_APP_ID, CAST_DEV, CAST_NS } from "./const";
@@ -44,13 +40,16 @@ export class CastManager {
const context = this.castContext;
context.setOptions({
receiverApplicationId: CAST_APP_ID,
// @ts-ignore
autoJoinPolicy: chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED,
});
context.addEventListener(
// @ts-ignore
cast.framework.CastContextEventType.SESSION_STATE_CHANGED,
(ev) => this._sessionStateChanged(ev)
);
context.addEventListener(
// @ts-ignore
cast.framework.CastContextEventType.CAST_STATE_CHANGED,
(ev) => this._castStateChanged(ev)
);
@@ -119,7 +118,7 @@ export class CastManager {
}
}
private _sessionStateChanged(ev: SessionStateEventData) {
private _sessionStateChanged(ev) {
if (__DEV__) {
console.log("Cast session state changed", ev.sessionState);
}
@@ -142,7 +141,7 @@ export class CastManager {
}
}
private _castStateChanged(ev: CastStateEventData) {
private _castStateChanged(ev) {
if (__DEV__) {
console.log("Cast state changed", ev.castState);
}

View File

@@ -1,10 +1,4 @@
export default function durationToSeconds(duration: string): number {
let days = 0;
if (duration.includes("day")) {
const position = duration.indexOf("day");
days = Number(duration.substr(0, position));
duration = duration.split(",")[1];
}
const parts = duration.split(":").map(Number);
return (days * 24 + parts[0]) * 3600 + parts[1] * 60 + parts[2];
return parts[0] * 3600 + parts[1] * 60 + parts[2];
}

View File

@@ -1,14 +0,0 @@
import {
RequestSelectedDetail,
ListItem,
} from "@material/mwc-list/mwc-list-item";
export const shouldHandleRequestSelectedEvent = (
ev: CustomEvent<RequestSelectedDetail>
): boolean => {
if (!ev.detail.selected && ev.detail.source !== "property") {
return false;
}
(ev.target as ListItem).selected = false;
return true;
};

View File

@@ -9,9 +9,5 @@ export function computeRTL(hass: HomeAssistant) {
}
export function computeRTLDirection(hass: HomeAssistant) {
return emitRTLDirection(computeRTL(hass));
}
export function emitRTLDirection(rtl: boolean) {
return rtl ? "rtl" : "ltr";
return computeRTL(hass) ? "rtl" : "ltr";
}

View File

@@ -98,8 +98,6 @@ export class HaDataTable extends LitElement {
@property({ type: String }) public noDataText?: string;
@property({ type: String }) public searchLabel?: string;
@property({ type: String }) public filter = "";
@internalProperty() private _filterable = false;
@@ -204,7 +202,6 @@ export class HaDataTable extends LitElement {
<div class="table-header">
<search-input
@value-changed=${this._handleSearchChange}
.label=${this.searchLabel}
></search-input>
</div>
`

View File

@@ -117,7 +117,11 @@ export abstract class HaDeviceAutomationPicker<
>
${this.NO_AUTOMATION_TEXT}
</paper-item>
<paper-item key=${UNKNOWN_AUTOMATION_KEY} hidden>
<paper-item
key=${UNKNOWN_AUTOMATION_KEY}
.automation=${this.value}
hidden
>
${this.UNKNOWN_AUTOMATION_TEXT}
</paper-item>
${this._automations.map(
@@ -171,17 +175,18 @@ export abstract class HaDeviceAutomationPicker<
}
private _automationChanged(ev) {
if (ev.detail.item.automation) {
this._setValue(ev.detail.item.automation);
}
this._setValue(ev.detail.item.automation);
}
private _setValue(automation: T) {
if (this.value && deviceAutomationsEqual(automation, this.value)) {
return;
}
fireEvent(this, "change");
fireEvent(this, "value-changed", { value: automation });
this.value = automation;
setTimeout(() => {
fireEvent(this, "change");
fireEvent(this, "value-changed", { value: automation });
}, 0);
}
static get styles(): CSSResult {

View File

@@ -10,6 +10,7 @@ import {
} from "lit-element";
import "@material/mwc-button";
import "@material/mwc-menu";
import "@material/mwc-list/mwc-list-item";
import type { Menu, Corner } from "@material/mwc-menu";
import "./ha-icon-button";
@@ -18,30 +19,14 @@ import "./ha-icon-button";
export class HaButtonMenu extends LitElement {
@property() public corner: Corner = "TOP_START";
@property({ type: Boolean }) public multi = false;
@property({ type: Boolean }) public activatable = false;
@query("mwc-menu") private _menu?: Menu;
public get items() {
return this._menu?.items;
}
public get selected() {
return this._menu?.selected;
}
protected render(): TemplateResult {
return html`
<div @click=${this._handleClick}>
<slot name="trigger"></slot>
</div>
<mwc-menu
.corner=${this.corner}
.multi=${this.multi}
.activatable=${this.activatable}
>
<mwc-menu .corner=${this.corner}>
<slot></slot>
</mwc-menu>
`;

View File

@@ -17,8 +17,6 @@ import "./ha-svg-icon";
import "@polymer/paper-input/paper-input";
import "@material/mwc-list/mwc-list";
import "./date-range-picker";
import { computeRTLDirection } from "../common/util/compute_rtl";
import { ActionDetail } from "@material/mwc-list/mwc-list-foundation";
export interface DateRangePickerRanges {
[key: string]: [Date, Date];
@@ -38,14 +36,11 @@ export class HaDateRangePicker extends LitElement {
@property({ type: Boolean }) private _hour24format = false;
@property({ type: String }) private _rtlDirection = "ltr";
protected updated(changedProps: PropertyValues) {
if (changedProps.has("hass")) {
const oldHass = changedProps.get("hass") as HomeAssistant | undefined;
if (!oldHass || oldHass.language !== this.hass.language) {
this._hour24format = this._compute24hourFormat();
this._rtlDirection = computeRTLDirection(this.hass);
}
}
}
@@ -81,14 +76,16 @@ export class HaDateRangePicker extends LitElement {
></paper-input>
</div>
${this.ranges
? html`<div
slot="ranges"
class="date-range-ranges"
.dir=${this._rtlDirection}
>
<mwc-list @action=${this._setDateRange} activatable>
${Object.keys(this.ranges).map(
(name) => html`<mwc-list-item>
? html`<div slot="ranges" class="date-range-ranges">
<mwc-list @click=${this._setDateRange}>
${Object.entries(this.ranges).map(
([name, dates]) => html`<mwc-list-item
.activated=${this.startDate.getTime() ===
dates[0].getTime() &&
this.endDate.getTime() === dates[1].getTime()}
.startDate=${dates[0]}
.endDate=${dates[1]}
>
${name}
</mwc-list-item>`
)}
@@ -119,10 +116,12 @@ export class HaDateRangePicker extends LitElement {
);
}
private _setDateRange(ev: CustomEvent<ActionDetail>) {
const dateRange = Object.values(this.ranges!)[ev.detail.index];
private _setDateRange(ev: Event) {
const target = ev.target as any;
const startDate = target.startDate;
const endDate = target.endDate;
const dateRangePicker = this._dateRangePicker;
dateRangePicker.clickRange(dateRange);
dateRangePicker.clickRange([startDate, endDate]);
dateRangePicker.clickedApply();
}

View File

@@ -5,7 +5,7 @@ import "./ha-icon-button";
import { css, CSSResult, customElement, html } from "lit-element";
import type { Constructor, HomeAssistant } from "../types";
import { mdiClose } from "@mdi/js";
import { computeRTLDirection } from "../common/util/compute_rtl";
import { computeRTL } from "../common/util/compute_rtl";
const MwcDialog = customElements.get("mwc-dialog") as Constructor<Dialog>;
@@ -14,8 +14,8 @@ export const createCloseHeading = (hass: HomeAssistant, title: string) => html`
<mwc-icon-button
aria-label=${hass.localize("ui.dialogs.generic.close")}
dialogAction="close"
?rtl=${computeRTL(hass)}
class="header_button"
dir=${computeRTLDirection(hass)}
>
<ha-svg-icon path=${mdiClose}></ha-svg-icon>
</mwc-icon-button>
@@ -61,7 +61,7 @@ export class HaDialog extends MwcDialog {
text-decoration: none;
color: inherit;
}
[dir="rtl"].header_button {
mwc-icon-button[rtl].header_button {
right: auto;
left: 16px;
}

View File

@@ -46,8 +46,8 @@ export interface MqttTrigger {
export interface GeoLocationTrigger {
platform: "geo_location";
source: string;
zone: string;
source: "string";
zone: "string";
event: "enter" | "leave";
}

View File

@@ -15,8 +15,7 @@ declare global {
}
}
export interface HassDialog<T = HASSDomEvents[ValidHassDomEvent]>
extends HTMLElement {
interface HassDialog<T = HASSDomEvents[ValidHassDomEvent]> extends HTMLElement {
showDialog(params: T);
closeDialog?: () => boolean | void;
}

View File

@@ -302,14 +302,12 @@ export class MoreInfoDialog extends LitElement {
}
}
ha-dialog[data-domain="camera"] {
--dialog-content-padding: 0;
state-history-charts {
margin-top: 16px 0;
}
state-card-content,
state-history-charts {
display: block;
margin-bottom: 16px;
ha-dialog[data-domain="camera"] {
--dialog-content-padding: 0;
}
`,
];

View File

@@ -29,9 +29,6 @@ import "./types/ha-automation-action-event";
import "./types/ha-automation-action-scene";
import "./types/ha-automation-action-service";
import "./types/ha-automation-action-wait_template";
import { handleStructError } from "../../../lovelace/common/structs/handle-errors";
import { ActionDetail } from "@material/mwc-list/mwc-list-foundation";
import { haStyle } from "../../../../resources/styles";
const OPTIONS = [
"condition",
@@ -90,16 +87,12 @@ export default class HaAutomationActionRow extends LitElement {
@property() public totalActions!: number;
@internalProperty() private _warnings?: string[];
@internalProperty() private _uiModeAvailable = true;
@internalProperty() private _yamlMode = false;
protected render() {
const type = getType(this.action);
const selected = type ? OPTIONS.indexOf(type) : -1;
const yamlMode = this._yamlMode;
const yamlMode = this._yamlMode || selected === -1;
return html`
<ha-card>
@@ -135,14 +128,17 @@ export default class HaAutomationActionRow extends LitElement {
</mwc-icon-button>
`
: ""}
<ha-button-menu corner="BOTTOM_START" @action=${this._handleAction}>
<ha-button-menu corner="BOTTOM_START">
<mwc-icon-button
slot="trigger"
.title=${this.hass.localize("ui.common.menu")}
.label=${this.hass.localize("ui.common.overflow_menu")}
><ha-svg-icon path=${mdiDotsVertical}></ha-svg-icon>
</mwc-icon-button>
<mwc-list-item .disabled=${!this._uiModeAvailable}>
<mwc-list-item
@tap=${this._switchYamlMode}
.disabled=${selected === -1}
>
${yamlMode
? this.hass.localize(
"ui.panel.config.automation.editor.edit_ui"
@@ -156,39 +152,30 @@ export default class HaAutomationActionRow extends LitElement {
"ui.panel.config.automation.editor.actions.duplicate"
)}
</mwc-list-item>
<mwc-list-item>
<mwc-list-item @tap=${this._onDelete}>
${this.hass.localize(
"ui.panel.config.automation.editor.actions.delete"
)}
</mwc-list-item>
</ha-button-menu>
</div>
${this._warnings
? html`<div class="warning">
UI editor is not supported for this config:
<br />
<ul>
${this._warnings.map((warning) => html`<li>${warning}</li>`)}
</ul>
You can still edit your config in yaml.
</div>`
: ""}
${yamlMode
? html`
${selected === -1
? html`
${this.hass.localize(
"ui.panel.config.automation.editor.actions.unsupported_action",
"action",
type
)}
`
: ""}
<h2>Edit in YAML</h2>
<ha-yaml-editor
.defaultValue=${this.action}
@value-changed=${this._onYamlChange}
></ha-yaml-editor>
<div style="margin-right: 24px;">
${selected === -1
? html`
${this.hass.localize(
"ui.panel.config.automation.editor.actions.unsupported_action",
"action",
type
)}
`
: ""}
<ha-yaml-editor
.defaultValue=${this.action}
@value-changed=${this._onYamlChange}
></ha-yaml-editor>
</div>
`
: html`
<paper-dropdown-menu-light
@@ -213,7 +200,7 @@ export default class HaAutomationActionRow extends LitElement {
)}
</paper-listbox>
</paper-dropdown-menu-light>
<div @ui-mode-not-available=${this._handleUiModeNotAvailable}>
<div>
${dynamicElement(`ha-automation-action-${type}`, {
hass: this.hass,
action: this.action,
@@ -225,13 +212,6 @@ export default class HaAutomationActionRow extends LitElement {
`;
}
private _handleUiModeNotAvailable(ev: CustomEvent) {
this._warnings = handleStructError(ev.detail);
if (!this._yamlMode) {
this._yamlMode = true;
}
}
private _moveUp() {
fireEvent(this, "move-action", { direction: "up" });
}
@@ -240,19 +220,6 @@ export default class HaAutomationActionRow extends LitElement {
fireEvent(this, "move-action", { direction: "down" });
}
private _handleAction(ev: CustomEvent<ActionDetail>) {
switch (ev.detail.index) {
case 0:
this._switchYamlMode();
break;
case 1:
break;
case 2:
this._onDelete();
break;
}
}
private _onDelete() {
showConfirmationDialog(this, {
text: this.hass.localize(
@@ -274,11 +241,6 @@ export default class HaAutomationActionRow extends LitElement {
return;
}
this._uiModeAvailable = OPTIONS.includes(type);
if (!this._uiModeAvailable && !this._yamlMode) {
this._yamlMode = false;
}
if (type !== getType(this.action)) {
const elClass = customElements.get(`ha-automation-action-${type}`);
@@ -302,30 +264,26 @@ export default class HaAutomationActionRow extends LitElement {
this._yamlMode = !this._yamlMode;
}
static get styles(): CSSResult[] {
return [
haStyle,
css`
.card-menu {
float: right;
z-index: 3;
--mdc-theme-text-primary-on-background: var(--primary-text-color);
}
.rtl .card-menu {
float: left;
}
mwc-list-item[disabled] {
--mdc-theme-text-primary-on-background: var(--disabled-text-color);
}
.warning {
color: var(--warning-color);
margin-bottom: 8px;
}
.warning ul {
margin: 4px 0;
}
`,
];
static get styles(): CSSResult {
return css`
.card-menu {
position: absolute;
top: 0;
right: 0;
z-index: 3;
--mdc-theme-text-primary-on-background: var(--primary-text-color);
}
.rtl .card-menu {
right: auto;
left: 0;
}
ha-button-menu {
margin: 8px;
}
mwc-list-item[disabled] {
--mdc-theme-text-primary-on-background: var(--disabled-text-color);
}
`;
}
}

View File

@@ -97,7 +97,6 @@ export class HaDeviceAction extends LitElement {
protected updated(changedPros) {
const prevAction = changedPros.get("action");
if (prevAction && !deviceAutomationsEqual(prevAction, this.action)) {
this._deviceId = undefined;
this._getCapabilities();
}
}

View File

@@ -19,20 +19,12 @@ import { ServiceAction } from "../../../../../data/script";
import type { PolymerChangedEvent } from "../../../../../polymer-types";
import type { HomeAssistant } from "../../../../../types";
import { ActionElement, handleChangeEvent } from "../ha-automation-action-row";
import { assert, optional, object, string } from "superstruct";
import { EntityId } from "../../../../lovelace/common/structs/is-entity-id";
const actionStruct = object({
service: optional(string()),
entity_id: optional(EntityId),
data: optional(object()),
});
@customElement("ha-automation-action-service")
export class HaServiceAction extends LitElement implements ActionElement {
@property({ attribute: false }) public hass!: HomeAssistant;
@property({ attribute: false }) public action!: ServiceAction;
@property() public action!: ServiceAction;
@query("ha-yaml-editor") private _yamlEditor?: HaYamlEditor;
@@ -68,11 +60,6 @@ export class HaServiceAction extends LitElement implements ActionElement {
if (!changedProperties.has("action")) {
return;
}
try {
assert(this.action, actionStruct);
} catch (error) {
fireEvent(this, "ui-mode-not-available", error);
}
if (this._actionData && this._actionData !== this.action.data) {
if (this._yamlEditor) {
this._yamlEditor.setValue(this.action.data);

View File

@@ -2,13 +2,7 @@ import "@polymer/paper-dropdown-menu/paper-dropdown-menu-light";
import "@polymer/paper-item/paper-item";
import "@polymer/paper-listbox/paper-listbox";
import type { PaperListboxElement } from "@polymer/paper-listbox/paper-listbox";
import {
customElement,
html,
LitElement,
property,
CSSResult,
} from "lit-element";
import { customElement, html, LitElement, property } from "lit-element";
import { dynamicElement } from "../../../../common/dom/dynamic-element-directive";
import { fireEvent } from "../../../../common/dom/fire_event";
import "../../../../components/ha-card";
@@ -25,7 +19,6 @@ import "./types/ha-automation-condition-sun";
import "./types/ha-automation-condition-template";
import "./types/ha-automation-condition-time";
import "./types/ha-automation-condition-zone";
import { haStyle } from "../../../../resources/styles";
const OPTIONS = [
"device",
@@ -54,20 +47,21 @@ export default class HaAutomationConditionEditor extends LitElement {
return html`
${yamlMode
? html`
${selected === -1
? html`
${this.hass.localize(
"ui.panel.config.automation.editor.conditions.unsupported_condition",
"condition",
this.condition.condition
)}
`
: ""}
<h2>Edit in YAML</h2>
<ha-yaml-editor
.defaultValue=${this.condition}
@value-changed=${this._onYamlChange}
></ha-yaml-editor>
<div style="margin-right: 24px;">
${selected === -1
? html`
${this.hass.localize(
"ui.panel.config.automation.editor.conditions.unsupported_condition",
"condition",
this.condition.condition
)}
`
: ""}
<ha-yaml-editor
.defaultValue=${this.condition}
@value-changed=${this._onYamlChange}
></ha-yaml-editor>
</div>
`
: html`
<paper-dropdown-menu-light
@@ -129,10 +123,6 @@ export default class HaAutomationConditionEditor extends LitElement {
}
fireEvent(this, "value-changed", { value: ev.detail.value });
}
static get styles(): CSSResult {
return haStyle;
}
}
declare global {

View File

@@ -18,7 +18,6 @@ import { Condition } from "../../../../data/automation";
import { showConfirmationDialog } from "../../../../dialogs/generic/show-dialog-box";
import { HomeAssistant } from "../../../../types";
import "./ha-automation-condition-editor";
import { ActionDetail } from "@material/mwc-list/mwc-list-foundation";
export interface ConditionElement extends LitElement {
condition: Condition;
@@ -65,14 +64,14 @@ export default class HaAutomationConditionRow extends LitElement {
<ha-card>
<div class="card-content">
<div class="card-menu">
<ha-button-menu corner="BOTTOM_START" @action=${this._handleAction}>
<ha-button-menu corner="BOTTOM_START">
<mwc-icon-button
.title=${this.hass.localize("ui.common.menu")}
.label=${this.hass.localize("ui.common.overflow_menu")}
slot="trigger"
><ha-svg-icon path=${mdiDotsVertical}></ha-svg-icon
></mwc-icon-button>
<mwc-list-item>
<mwc-list-item @tap=${this._switchYamlMode}>
${this._yamlMode
? this.hass.localize(
"ui.panel.config.automation.editor.edit_ui"
@@ -86,7 +85,7 @@ export default class HaAutomationConditionRow extends LitElement {
"ui.panel.config.automation.editor.actions.duplicate"
)}
</mwc-list-item>
<mwc-list-item>
<mwc-list-item @tap=${this._onDelete}>
${this.hass.localize(
"ui.panel.config.automation.editor.actions.delete"
)}
@@ -103,19 +102,6 @@ export default class HaAutomationConditionRow extends LitElement {
`;
}
private _handleAction(ev: CustomEvent<ActionDetail>) {
switch (ev.detail.index) {
case 0:
this._switchYamlMode();
break;
case 1:
break;
case 2:
this._onDelete();
break;
}
}
private _onDelete() {
showConfirmationDialog(this, {
text: this.hass.localize(
@@ -136,12 +122,18 @@ export default class HaAutomationConditionRow extends LitElement {
static get styles(): CSSResult {
return css`
.card-menu {
float: right;
position: absolute;
top: 0;
right: 0;
z-index: 3;
--mdc-theme-text-primary-on-background: var(--primary-text-color);
}
.rtl .card-menu {
float: left;
right: auto;
left: 0;
}
ha-button-menu {
margin: 8px;
}
mwc-list-item[disabled] {
--mdc-theme-text-primary-on-background: var(--disabled-text-color);

View File

@@ -50,13 +50,6 @@ import { PaperListboxElement } from "@polymer/paper-listbox";
const MODES = ["single", "restart", "queued", "parallel"];
const MODES_MAX = ["queued", "parallel"];
declare global {
// for fire event
interface HASSDomEvents {
"ui-mode-not-available": Error;
}
}
export class HaAutomationEditor extends LitElement {
@property({ attribute: false }) public hass!: HomeAssistant;
@@ -541,7 +534,7 @@ export class HaAutomationEditor extends LitElement {
position: fixed;
bottom: 16px;
right: 16px;
z-index: 3;
z-index: 1;
margin-bottom: -80px;
transition: margin-bottom 0.3s;
}

View File

@@ -34,8 +34,6 @@ import "./types/ha-automation-trigger-time";
import "./types/ha-automation-trigger-time_pattern";
import "./types/ha-automation-trigger-webhook";
import "./types/ha-automation-trigger-zone";
import { ActionDetail } from "@material/mwc-list/mwc-list-foundation";
import { haStyle } from "../../../../resources/styles";
const OPTIONS = [
"device",
@@ -95,14 +93,17 @@ export default class HaAutomationTriggerRow extends LitElement {
<ha-card>
<div class="card-content">
<div class="card-menu">
<ha-button-menu corner="BOTTOM_START" @action=${this._handleAction}>
<ha-button-menu corner="BOTTOM_START">
<mwc-icon-button
slot="trigger"
.title=${this.hass.localize("ui.common.menu")}
.label=${this.hass.localize("ui.common.overflow_menu")}
><ha-svg-icon path=${mdiDotsVertical}></ha-svg-icon
></mwc-icon-button>
<mwc-list-item .disabled=${selected === -1}>
<mwc-list-item
@tap=${this._switchYamlMode}
.disabled=${selected === -1}
>
${yamlMode
? this.hass.localize(
"ui.panel.config.automation.editor.edit_ui"
@@ -116,7 +117,7 @@ export default class HaAutomationTriggerRow extends LitElement {
"ui.panel.config.automation.editor.actions.duplicate"
)}
</mwc-list-item>
<mwc-list-item>
<mwc-list-item @tap=${this._onDelete}>
${this.hass.localize(
"ui.panel.config.automation.editor.actions.delete"
)}
@@ -125,20 +126,21 @@ export default class HaAutomationTriggerRow extends LitElement {
</div>
${yamlMode
? html`
${selected === -1
? html`
${this.hass.localize(
"ui.panel.config.automation.editor.triggers.unsupported_platform",
"platform",
this.trigger.platform
)}
`
: ""}
<h2>Edit in YAML</h2>
<ha-yaml-editor
.defaultValue=${this.trigger}
@value-changed=${this._onYamlChange}
></ha-yaml-editor>
<div style="margin-right: 24px;">
${selected === -1
? html`
${this.hass.localize(
"ui.panel.config.automation.editor.triggers.unsupported_platform",
"platform",
this.trigger.platform
)}
`
: ""}
<ha-yaml-editor
.defaultValue=${this.trigger}
@value-changed=${this._onYamlChange}
></ha-yaml-editor>
</div>
`
: html`
<paper-dropdown-menu-light
@@ -175,19 +177,6 @@ export default class HaAutomationTriggerRow extends LitElement {
`;
}
private _handleAction(ev: CustomEvent<ActionDetail>) {
switch (ev.detail.index) {
case 0:
this._switchYamlMode();
break;
case 1:
break;
case 2:
this._onDelete();
break;
}
}
private _onDelete() {
showConfirmationDialog(this, {
text: this.hass.localize(
@@ -233,23 +222,26 @@ export default class HaAutomationTriggerRow extends LitElement {
this._yamlMode = !this._yamlMode;
}
static get styles(): CSSResult[] {
return [
haStyle,
css`
.card-menu {
float: right;
z-index: 3;
--mdc-theme-text-primary-on-background: var(--primary-text-color);
}
.rtl .card-menu {
float: left;
}
mwc-list-item[disabled] {
--mdc-theme-text-primary-on-background: var(--disabled-text-color);
}
`,
];
static get styles(): CSSResult {
return css`
.card-menu {
position: absolute;
top: 0;
right: 0;
z-index: 3;
--mdc-theme-text-primary-on-background: var(--primary-text-color);
}
.rtl .card-menu {
right: auto;
left: 0;
}
ha-button-menu {
margin: 8px;
}
mwc-list-item[disabled] {
--mdc-theme-text-primary-on-background: var(--disabled-text-color);
}
`;
}
}

View File

@@ -57,7 +57,6 @@ import {
showEntityEditorDialog,
} from "./show-dialog-entity-editor";
import { mdiFilterVariant } from "@mdi/js";
import type { RequestSelectedDetail } from "@material/mwc-list/mwc-list-item";
export interface StateEntity extends EntityRegistryEntry {
readonly?: boolean;
@@ -450,7 +449,7 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) {
>
</div>`
: ""}
<ha-button-menu corner="BOTTOM_START" multi>
<ha-button-menu corner="BOTTOM_START">
<mwc-icon-button
slot="trigger"
.label=${this.hass!.localize(
@@ -463,9 +462,8 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) {
<ha-svg-icon path=${mdiFilterVariant}></ha-svg-icon>
</mwc-icon-button>
<mwc-list-item
@request-selected="${this._showDisabledChanged}"
@click="${this._showDisabledChanged}"
graphic="control"
.selected=${this._showDisabled}
>
<ha-checkbox
slot="graphic"
@@ -476,9 +474,8 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) {
)}
</mwc-list-item>
<mwc-list-item
@request-selected="${this._showRestoredChanged}"
@click="${this._showRestoredChanged}"
graphic="control"
.selected=${this._showUnavailable}
>
<ha-checkbox
slot="graphic"
@@ -489,9 +486,8 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) {
)}
</mwc-list-item>
<mwc-list-item
@request-selected="${this._showReadOnlyChanged}"
@click="${this._showReadOnlyChanged}"
graphic="control"
.selected=${this._showReadOnly}
>
<ha-checkbox
slot="graphic"
@@ -583,25 +579,16 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) {
}
}
private _showDisabledChanged(ev: CustomEvent<RequestSelectedDetail>) {
if (ev.detail.source !== "property") {
return;
}
this._showDisabled = ev.detail.selected;
private _showDisabledChanged() {
this._showDisabled = !this._showDisabled;
}
private _showRestoredChanged(ev: CustomEvent<RequestSelectedDetail>) {
if (ev.detail.source !== "property") {
return;
}
this._showUnavailable = ev.detail.selected;
private _showRestoredChanged() {
this._showUnavailable = !this._showUnavailable;
}
private _showReadOnlyChanged(ev: CustomEvent<RequestSelectedDetail>) {
if (ev.detail.source !== "property") {
return;
}
this._showReadOnly = ev.detail.selected;
private _showReadOnlyChanged() {
this._showReadOnly = !this._showReadOnly;
}
private _handleSearchChange(ev: CustomEvent) {

View File

@@ -276,11 +276,7 @@ class HaConfigIntegrations extends SubscribeMixin(LitElement) {
</div>
`
: ""}
<ha-button-menu
corner="BOTTOM_START"
slot="toolbar-icon"
@action=${this._toggleShowIgnored}
>
<ha-button-menu corner="BOTTOM_START" slot="toolbar-icon">
<mwc-icon-button
.title=${this.hass.localize("ui.common.menu")}
.label=${this.hass.localize("ui.common.overflow_menu")}
@@ -288,7 +284,7 @@ class HaConfigIntegrations extends SubscribeMixin(LitElement) {
>
<ha-svg-icon path=${mdiDotsVertical}></ha-svg-icon>
</mwc-icon-button>
<mwc-list-item>
<mwc-list-item @click=${this._toggleShowIgnored}>
${this.hass.localize(
this._showIgnored
? "ui.panel.config.integrations.ignore.hide_ignored"

View File

@@ -28,7 +28,6 @@ import { haStyle } from "../../../resources/styles";
import "../../../components/ha-icon-next";
import { fireEvent } from "../../../common/dom/fire_event";
import { mdiDotsVertical, mdiOpenInNew } from "@mdi/js";
import { ActionDetail } from "@material/mwc-list/mwc-list-foundation";
export interface ConfigEntryUpdatedEvent {
entry: ConfigEntry;
@@ -224,7 +223,7 @@ export class HaIntegrationCard extends LitElement {
`
: ""}
</div>
<ha-button-menu corner="BOTTOM_START" @action=${this._handleAction}>
<ha-button-menu corner="BOTTOM_START">
<mwc-icon-button
.title=${this.hass.localize("ui.common.menu")}
.label=${this.hass.localize("ui.common.overflow_menu")}
@@ -232,7 +231,7 @@ export class HaIntegrationCard extends LitElement {
>
<ha-svg-icon path=${mdiDotsVertical}></ha-svg-icon>
</mwc-icon-button>
<mwc-list-item>
<mwc-list-item @click=${this._showSystemOptions}>
${this.hass.localize(
"ui.panel.config.integrations.config_entry.system_options"
)}
@@ -241,6 +240,7 @@ export class HaIntegrationCard extends LitElement {
? ""
: html`
<a
class="documentation"
href=${this.manifest.documentation}
rel="noreferrer"
target="_blank"
@@ -255,7 +255,7 @@ export class HaIntegrationCard extends LitElement {
</mwc-list-item>
</a>
`}
<mwc-list-item class="warning">
<mwc-list-item class="warning" @click=${this._removeIntegration}>
${this.hass.localize(
"ui.panel.config.integrations.config_entry.delete"
)}
@@ -305,27 +305,32 @@ export class HaIntegrationCard extends LitElement {
showOptionsFlowDialog(this, ev.target.closest("ha-card").configEntry);
}
private _handleAction(ev: CustomEvent<ActionDetail>) {
const configEntry = ((ev.target as HTMLElement).closest("ha-card") as any)
.configEntry;
switch (ev.detail.index) {
case 0:
this._showSystemOptions(configEntry);
break;
case 1:
this._removeIntegration(configEntry);
break;
}
}
private _showSystemOptions(configEntry: ConfigEntry) {
private _showSystemOptions(ev) {
showConfigEntrySystemOptionsDialog(this, {
entry: configEntry,
entry: ev.target.closest("ha-card").configEntry,
});
}
private async _removeIntegration(configEntry: ConfigEntry) {
const entryId = configEntry.entry_id;
private async _editEntryName(ev) {
const configEntry = ev.target.closest("ha-card").configEntry;
const newName = await showPromptDialog(this, {
title: this.hass.localize("ui.panel.config.integrations.rename_dialog"),
defaultValue: configEntry.title,
inputLabel: this.hass.localize(
"ui.panel.config.integrations.rename_input_label"
),
});
if (newName === null) {
return;
}
const newEntry = await updateConfigEntry(this.hass, configEntry.entry_id, {
title: newName,
});
fireEvent(this, "entry-updated", { entry: newEntry });
}
private async _removeIntegration(ev) {
const entryId = ev.target.closest("ha-card").configEntry.entry_id;
const confirmed = await showConfirmationDialog(this, {
text: this.hass.localize(
@@ -349,24 +354,6 @@ export class HaIntegrationCard extends LitElement {
});
}
private async _editEntryName(ev) {
const configEntry = ev.target.closest("ha-card").configEntry;
const newName = await showPromptDialog(this, {
title: this.hass.localize("ui.panel.config.integrations.rename_dialog"),
defaultValue: configEntry.title,
inputLabel: this.hass.localize(
"ui.panel.config.integrations.rename_input_label"
),
});
if (newName === null) {
return;
}
const newEntry = await updateConfigEntry(this.hass, configEntry.entry_id, {
title: newName,
});
fireEvent(this, "entry-updated", { entry: newEntry });
}
static get styles(): CSSResult[] {
return [
haStyle,
@@ -399,6 +386,9 @@ export class HaIntegrationCard extends LitElement {
align-items: center;
padding-right: 5px;
}
.card-actions .documentation {
color: var(--primary-text-color);
}
.group-header {
display: flex;
align-items: center;

View File

@@ -93,8 +93,6 @@ export class ZHAClustersDataTable extends LitElement {
selectable
auto-height
.dir=${computeRTLDirection(this.hass)}
.searchLabel=${this.hass.localize("ui.components.data-table.search")}
.noDataText=${this.hass.localize("ui.components.data-table.no-data")}
></ha-data-table>
`;
}

View File

@@ -149,8 +149,6 @@ export class ZHADeviceEndpointDataTable extends LitElement {
.selectable=${this.selectable}
auto-height
.dir=${computeRTLDirection(this.hass)}
.searchLabel=${this.hass.localize("ui.components.data-table.search")}
.noDataText=${this.hass.localize("ui.components.data-table.no-data")}
></ha-data-table>
`;
}

View File

@@ -440,7 +440,7 @@ export class HaScriptEditor extends LitElement {
position: fixed;
bottom: 16px;
right: 16px;
z-index: 3;
z-index: 1;
margin-bottom: -80px;
transition: margin-bottom 0.3s;
}

View File

@@ -29,6 +29,7 @@ class HaPanelDevEvent extends EventsMixin(LocalizeMixin(PolymerElement)) {
-moz-user-select: initial;
@apply --paper-font-body1;
padding: 16px;
direction: ltr;
display: block;
}

View File

@@ -11,7 +11,6 @@ import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box";
import LocalizeMixin from "../../../mixins/localize-mixin";
import "../../../styles/polymer-ha-style";
import "../../../util/app-localstorage-document";
import { computeRTL } from "../../../common/util/compute_rtl";
const ERROR_SENTINEL = {};
/*
@@ -27,6 +26,7 @@ class HaPanelDevService extends LocalizeMixin(PolymerElement) {
-moz-user-select: initial;
display: block;
padding: 16px;
direction: ltr;
}
.ha-form {
@@ -51,13 +51,8 @@ class HaPanelDevService extends LocalizeMixin(PolymerElement) {
text-align: left;
}
:host([rtl]) .attributes th {
text-align: right;
}
.attributes tr {
vertical-align: top;
direction: ltr;
}
.attributes tr:nth-child(odd) {
@@ -88,14 +83,6 @@ class HaPanelDevService extends LocalizeMixin(PolymerElement) {
.error {
color: var(--error-color);
}
:host([rtl]) .desc-container {
text-align: right;
}
:host([rtl]) .desc-container h3 {
direction: ltr;
}
</style>
<app-localstorage-document
@@ -154,9 +141,7 @@ class HaPanelDevService extends LocalizeMixin(PolymerElement) {
</h1>
</template>
<template is="dom-if" if="[[_description]]">
<div class="desc-container">
<h3>[[_description]]</h3>
</div>
<h3>[[_description]]</h3>
<table class="attributes">
<tr>
@@ -242,10 +227,6 @@ class HaPanelDevService extends LocalizeMixin(PolymerElement) {
type: String,
computed: "_computeDescription(hass, _domain, _service)",
},
rtl: {
reflectToAttribute: true,
computed: "_computeRTL(hass)",
},
};
}
@@ -348,10 +329,6 @@ class HaPanelDevService extends LocalizeMixin(PolymerElement) {
_yamlChanged(ev) {
this.serviceData = ev.detail.value;
}
_computeRTL(hass) {
return computeRTL(hass);
}
}
customElements.define("developer-tools-service", HaPanelDevService);

View File

@@ -13,7 +13,6 @@ import { EventsMixin } from "../../../mixins/events-mixin";
import LocalizeMixin from "../../../mixins/localize-mixin";
import "../../../styles/polymer-ha-style";
import { mdiInformationOutline } from "@mdi/js";
import { computeRTL } from "../../../common/util/compute_rtl";
const ERROR_SENTINEL = {};
/*
@@ -30,6 +29,7 @@ class HaPanelDevState extends EventsMixin(LocalizeMixin(PolymerElement)) {
-moz-user-select: initial;
display: block;
padding: 16px;
direction: ltr;
}
.inputs {
@@ -44,13 +44,8 @@ class HaPanelDevState extends EventsMixin(LocalizeMixin(PolymerElement)) {
text-align: left;
}
:host([rtl]) .entities th {
text-align: right;
}
.entities tr {
vertical-align: top;
direction: ltr;
}
.entities tr:nth-child(odd) {
@@ -237,10 +232,6 @@ class HaPanelDevState extends EventsMixin(LocalizeMixin(PolymerElement)) {
computed:
"computeEntities(hass, _entityFilter, _stateFilter, _attributeFilter)",
},
rtl: {
reflectToAttribute: true,
computed: "_computeRTL(hass)",
},
};
}
@@ -405,10 +396,6 @@ class HaPanelDevState extends EventsMixin(LocalizeMixin(PolymerElement)) {
_yamlChanged(ev) {
this._stateAttributes = ev.detail.value;
}
_computeRTL(hass) {
return computeRTL(hass);
}
}
customElements.define("developer-tools-state", HaPanelDevState);

View File

@@ -14,7 +14,7 @@ import { formatTimeWithSeconds } from "../../common/datetime/format_time";
import { fireEvent } from "../../common/dom/fire_event";
import { domainIcon } from "../../common/entity/domain_icon";
import { stateIcon } from "../../common/entity/state_icon";
import { computeRTL, emitRTLDirection } from "../../common/util/compute_rtl";
import { computeRTL } from "../../common/util/compute_rtl";
import "../../components/ha-icon";
import { LogbookEntry } from "../../data/logbook";
import { HomeAssistant } from "../../types";
@@ -28,6 +28,7 @@ class HaLogbook extends LitElement {
@property() public entries: LogbookEntry[] = [];
@property({ attribute: "rtl", type: Boolean, reflect: true })
// @ts-ignore
private _rtl = false;
// @ts-ignore
@@ -37,22 +38,17 @@ class HaLogbook extends LitElement {
const oldHass = changedProps.get("hass") as HomeAssistant | undefined;
const languageChanged =
oldHass === undefined || oldHass.language !== this.hass.language;
return changedProps.has("entries") || languageChanged;
}
protected updated(_changedProps: PropertyValues) {
const oldHass = _changedProps.get("hass") as HomeAssistant | undefined;
if (oldHass === undefined || oldHass.language !== this.hass.language) {
this._rtl = computeRTL(this.hass);
}
this._rtl = computeRTL(this.hass);
}
protected render(): TemplateResult {
if (!this.entries?.length) {
return html`
<div class="container" .dir=${emitRTLDirection(this._rtl)}>
<div class="container">
${this.hass.localize("ui.panel.logbook.entries_not_found")}
</div>
`;
@@ -110,8 +106,9 @@ class HaLogbook extends LitElement {
@click=${this._entityClicked}
.entityId=${item.entity_id}
class="name"
>${item.name}</a
>
${item.name}
</a>
`}
<span
>${item.message}${item_username

View File

@@ -61,8 +61,6 @@ export class HuiHistoryGraphCard extends LitElement implements LovelaceCard {
private _interval?: number;
private _fetching = false;
public getCardSize(): number {
return 4;
}
@@ -140,7 +138,6 @@ export class HuiHistoryGraphCard extends LitElement implements LovelaceCard {
>
<state-history-charts
.hass=${this.hass}
.isLoadingData=${!this._stateHistory}
.historyData=${this._stateHistory}
.names=${this._names}
.upToNow=${true}
@@ -152,21 +149,13 @@ export class HuiHistoryGraphCard extends LitElement implements LovelaceCard {
}
private async _getStateHistory(): Promise<void> {
if (this._fetching) {
return;
}
this._fetching = true;
try {
this._stateHistory = await getRecentWithCache(
this.hass!,
this._cacheConfig!.cacheKey,
this._cacheConfig!,
this.hass!.localize,
this.hass!.language
);
} finally {
this._fetching = false;
}
this._stateHistory = await getRecentWithCache(
this.hass!,
this._cacheConfig!.cacheKey,
this._cacheConfig!,
this.hass!.localize,
this.hass!.language
);
}
private _clearInterval(): void {

View File

@@ -1,24 +0,0 @@
import { StructError } from "superstruct";
export const handleStructError = (err: Error): string[] => {
if (!(err instanceof StructError)) {
return [err.message];
}
const errors: string[] = [];
for (const failure of err.failures()) {
if (failure.type === "never") {
errors.push(
`Key "${failure.path[0]}" is not supported by the UI editor.`
);
} else {
errors.push(
`The value of "${failure.path.join(
"."
)}" is not supported by the UI editor, we support "${
failure.type
}" but received "${JSON.stringify(failure.value)}".`
);
}
}
return errors;
};

View File

@@ -1,17 +1,9 @@
import { StructResult, StructContext, struct } from "superstruct";
const isEntityId = (value: unknown, context: StructContext): StructResult => {
export function isEntityId(value: any): string | boolean {
if (typeof value !== "string") {
return [context.fail({ type: "string" })];
return "entity id should be a string";
}
if (!value.includes(".")) {
return [
context.fail({
type: "entity id should be in the format 'domain.entity'",
}),
];
return "entity id should be in the format 'domain.entity'";
}
return true;
};
export const EntityId = struct("entity-id", isEntityId);
}

View File

@@ -1,17 +1,9 @@
import { StructContext, StructResult, struct } from "superstruct";
const isIcon = (value: unknown, context: StructContext): StructResult => {
export function isIcon(value: any): string | boolean {
if (typeof value !== "string") {
return [context.fail({ type: "string" })];
return "icon should be a string";
}
if (!value.includes(":")) {
return [
context.fail({
type: "icon should be in the format 'mdi:icon'",
}),
];
return "icon should be in the format 'mdi:icon'";
}
return true;
};
export const Icon = struct("icon", isIcon);
}

View File

@@ -0,0 +1,10 @@
import { superstruct } from "superstruct";
import { isEntityId } from "./is-entity-id";
import { isIcon } from "./is-icon";
export const struct = superstruct({
types: {
"entity-id": isEntityId,
icon: isIcon,
},
});

View File

@@ -20,7 +20,6 @@ import { confDeleteCard } from "../editor/delete-card";
import { Lovelace, LovelaceCard } from "../types";
import { computeCardSize } from "../common/compute-card-size";
import { mdiDotsVertical, mdiArrowDown, mdiArrowUp } from "@mdi/js";
import { ActionDetail } from "@material/mwc-list/mwc-list-foundation";
@customElement("hui-card-options")
export class HuiCardOptions extends LitElement {
@@ -66,7 +65,7 @@ export class HuiCardOptions extends LitElement {
?disabled=${this.path![1] === 0}
><ha-svg-icon path=${mdiArrowUp}></ha-svg-icon
></mwc-icon-button>
<ha-button-menu corner="BOTTOM_START" @action=${this._handleAction}>
<ha-button-menu corner="BOTTOM_START">
<mwc-icon-button
slot="trigger"
aria-label=${this.hass!.localize(
@@ -79,17 +78,17 @@ export class HuiCardOptions extends LitElement {
<ha-svg-icon path=${mdiDotsVertical}></ha-svg-icon>
</mwc-icon-button>
<mwc-list-item>
<mwc-list-item @tap=${this._moveCard}>
${this.hass!.localize(
"ui.panel.lovelace.editor.edit_card.move"
)}</mwc-list-item
>
<mwc-list-item
<mwc-list-item @tap=${this._duplicateCard}
>${this.hass!.localize(
"ui.panel.lovelace.editor.edit_card.duplicate"
)}</mwc-list-item
>
<mwc-list-item class="delete-item">
<mwc-list-item class="delete-item" @tap=${this._deleteCard}>
${this.hass!.localize(
"ui.panel.lovelace.editor.edit_card.delete"
)}</mwc-list-item
@@ -148,20 +147,6 @@ export class HuiCardOptions extends LitElement {
`;
}
private _handleAction(ev: CustomEvent<ActionDetail>) {
switch (ev.detail.index) {
case 0:
this._moveCard();
break;
case 1:
this._duplicateCard();
break;
case 2:
this._deleteCard();
break;
}
}
private _duplicateCard(): void {
const path = this.path!;
const cardConfig = this.lovelace!.config.views[path[0]].cards![path[1]];

View File

@@ -26,8 +26,6 @@ import type { LovelaceCardEditor } from "../../types";
import type { GUIModeChangedEvent } from "../types";
import "../../../../components/ha-circular-progress";
import { deepEqual } from "../../../../common/util/deep-equal";
import { handleStructError } from "../../common/structs/handle-errors";
import { GUISupportError } from "../gui-support-error";
export interface ConfigChangedEvent {
config: LovelaceCardConfig;
@@ -71,7 +69,7 @@ export class HuiCardEditor extends LitElement {
@internalProperty() private _error?: string;
// Warning: GUI editor can't handle configuration - ok to save
@internalProperty() private _warnings?: string[];
@internalProperty() private _warning?: string;
@internalProperty() private _loading = false;
@@ -123,7 +121,7 @@ export class HuiCardEditor extends LitElement {
}
public get hasWarning(): boolean {
return this._warnings !== undefined;
return this._warning !== undefined;
}
public get hasError(): boolean {
@@ -196,15 +194,10 @@ export class HuiCardEditor extends LitElement {
</div>
`
: ""}
${this._warnings
${this._warning
? html`
<div class="warning">
UI editor is not supported for this config:
<br />
<ul>
${this._warnings.map((warning) => html`<li>${warning}</li>`)}
</ul>
You can still edit your config in yaml.
${this._warning}
</div>
`
: ""}
@@ -245,7 +238,7 @@ export class HuiCardEditor extends LitElement {
let configElement = this._configElement;
try {
this._error = undefined;
this._warnings = undefined;
this._warning = undefined;
if (this._configElType !== cardType) {
// If the card type has changed, we need to load a new GUI editor
@@ -261,9 +254,7 @@ export class HuiCardEditor extends LitElement {
configElement = await elClass.getConfigElement();
} else {
configElement = undefined;
throw new GUISupportError(
`No visual editor available for: ${cardType}`
);
throw Error(`WARNING: No visual editor available for: ${cardType}`);
}
this._configElement = configElement;
@@ -281,14 +272,11 @@ export class HuiCardEditor extends LitElement {
try {
this._configElement!.setConfig(this.value);
} catch (err) {
throw new GUISupportError(
"Config is not supported",
handleStructError(err)
);
throw Error(`WARNING: ${err.message}`);
}
} catch (err) {
if (err instanceof GUISupportError) {
this._warnings = err.warnings ?? [err.message];
if (err.message.startsWith("WARNING:")) {
this._warning = err.message.substr(8);
} else {
this._error = err;
}
@@ -314,19 +302,12 @@ export class HuiCardEditor extends LitElement {
.yaml-editor {
padding: 8px 0px;
}
.error,
.warning {
word-break: break-word;
}
.error {
color: var(--error-color);
}
.warning {
color: var(--warning-color);
}
.warning ul {
margin: 4px 0;
}
ha-circular-progress {
display: block;
margin: auto;

View File

@@ -11,7 +11,7 @@ import {
TemplateResult,
PropertyValues,
} from "lit-element";
import { HASSDomEvent, fireEvent } from "../../../../common/dom/fire_event";
import type { HASSDomEvent } from "../../../../common/dom/fire_event";
import "../../../../components/ha-dialog";
import type {
LovelaceCardConfig,
@@ -30,9 +30,6 @@ import "./hui-card-preview";
import type { EditCardDialogParams } from "./show-edit-card-dialog";
import { getCardDocumentationURL } from "../get-card-documentation-url";
import { mdiHelpCircle } from "@mdi/js";
import { computeRTLDirection } from "../../../../common/util/compute_rtl";
import { HassDialog } from "../../../../dialogs/make-dialog-manager";
import { showConfirmationDialog } from "../../../../dialogs/generic/show-dialog-box";
declare global {
// for fire event
@@ -46,7 +43,7 @@ declare global {
}
@customElement("hui-dialog-edit-card")
export class HuiDialogEditCard extends LitElement implements HassDialog {
export class HuiDialogEditCard extends LitElement {
@property() protected hass!: HomeAssistant;
@internalProperty() private _params?: EditCardDialogParams;
@@ -67,8 +64,6 @@ export class HuiDialogEditCard extends LitElement implements HassDialog {
@internalProperty() private _documentationURL?: string;
@internalProperty() private _dirty = false;
public async showDialog(params: EditCardDialogParams): Promise<void> {
this._params = params;
this._GUImode = true;
@@ -82,20 +77,6 @@ export class HuiDialogEditCard extends LitElement implements HassDialog {
}
}
public closeDialog(): boolean {
if (this._dirty) {
this._confirmCancel();
return false;
}
this._params = undefined;
this._cardConfig = undefined;
this._error = undefined;
this._documentationURL = undefined;
this._dirty = false;
fireEvent(this, "dialog-closed", { dialog: this.localName });
return true;
}
protected updated(changedProps: PropertyValues): void {
if (
!this._cardConfig ||
@@ -119,13 +100,9 @@ export class HuiDialogEditCard extends LitElement implements HassDialog {
let heading: string;
if (this._cardConfig && this._cardConfig.type) {
heading = this.hass!.localize(
"ui.panel.lovelace.editor.edit_card.typed_header",
"type",
this.hass!.localize(
`ui.panel.lovelace.editor.card.${this._cardConfig.type}.name`
)
);
heading = `${this.hass!.localize(
`ui.panel.lovelace.editor.card.${this._cardConfig.type}.name`
)} ${this.hass!.localize("ui.panel.lovelace.editor.edit_card.header")}`;
} else if (!this._cardConfig) {
heading = this._viewConfig.title
? this.hass!.localize(
@@ -145,7 +122,7 @@ export class HuiDialogEditCard extends LitElement implements HassDialog {
open
scrimClickAction
@keydown=${this._ignoreKeydown}
@closed=${this._cancel}
@closed=${this._close}
@opened=${this._opened}
.heading=${html`${heading}
${this._documentationURL !== undefined
@@ -156,7 +133,6 @@ export class HuiDialogEditCard extends LitElement implements HassDialog {
title=${this.hass!.localize("ui.panel.lovelace.menu.help")}
target="_blank"
rel="noreferrer"
dir=${computeRTLDirection(this.hass)}
>
<mwc-icon-button>
<ha-svg-icon path=${mdiHelpCircle}></ha-svg-icon>
@@ -221,7 +197,7 @@ export class HuiDialogEditCard extends LitElement implements HassDialog {
`
: ""}
<div slot="primaryAction" @click=${this._save}>
<mwc-button @click=${this._cancel}>
<mwc-button @click=${this._close}>
${this.hass!.localize("ui.common.cancel")}
</mwc-button>
${this._cardConfig !== undefined
@@ -238,9 +214,7 @@ export class HuiDialogEditCard extends LitElement implements HassDialog {
size="small"
></ha-circular-progress>
`
: this._dirty
? this.hass!.localize("ui.common.save")
: this.hass!.localize("ui.common.close")}
: this.hass!.localize("ui.common.save")}
</mwc-button>
`
: ``}
@@ -370,14 +344,12 @@ export class HuiDialogEditCard extends LitElement implements HassDialog {
}
this._cardConfig = deepFreeze(config);
this._error = ev.detail.error;
this._dirty = true;
}
private _handleConfigChanged(ev: HASSDomEvent<ConfigChangedEvent>) {
this._cardConfig = deepFreeze(ev.detail.config);
this._error = ev.detail.error;
this._guiModeAvailable = ev.detail.guiModeAvailable;
this._dirty = true;
}
private _handleGUIModeChanged(ev: HASSDomEvent<GUIModeChangedEvent>): void {
@@ -394,6 +366,13 @@ export class HuiDialogEditCard extends LitElement implements HassDialog {
this._cardEditorEl?.refreshYamlEditor();
}
private _close(): void {
this._params = undefined;
this._cardConfig = undefined;
this._error = undefined;
this._documentationURL = undefined;
}
private get _canSave(): boolean {
if (this._saving) {
return false;
@@ -407,38 +386,8 @@ export class HuiDialogEditCard extends LitElement implements HassDialog {
return true;
}
private async _confirmCancel() {
// Make sure the open state of this dialog is handled before the open state of confirm dialog
await new Promise((resolve) => setTimeout(resolve, 0));
const confirm = await showConfirmationDialog(this, {
title: this.hass!.localize(
"ui.panel.lovelace.editor.edit_card.unsaved_changes"
),
text: this.hass!.localize(
"ui.panel.lovelace.editor.edit_card.confirm_cancel"
),
dismissText: this.hass!.localize("ui.common.no"),
confirmText: this.hass!.localize("ui.common.yes"),
});
if (confirm) {
this._cancel();
}
}
private _cancel(ev?: Event) {
if (ev) {
ev.stopPropagation();
}
this._dirty = false;
this.closeDialog();
}
private async _save(): Promise<void> {
if (!this._canSave) {
return;
}
if (!this._dirty) {
this.closeDialog();
if (!this._canSave || this._saving) {
return;
}
this._saving = true;
@@ -456,9 +405,8 @@ export class HuiDialogEditCard extends LitElement implements HassDialog {
)
);
this._saving = false;
this._dirty = false;
showSaveSuccessToast(this, this.hass);
this.closeDialog();
this._close();
}
}

View File

@@ -16,18 +16,18 @@ import "../../../../components/entity/ha-entity-picker";
import "../../../../components/ha-icon";
import { HomeAssistant } from "../../../../types";
import { AlarmPanelCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types";
import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style";
import { assert, object, string, optional, array } from "superstruct";
const cardConfigStruct = object({
type: string(),
entity: optional(string()),
name: optional(string()),
states: optional(array()),
theme: optional(string()),
const cardConfigStruct = struct({
type: "string",
entity: "string?",
name: "string?",
states: "array?",
theme: "string?",
});
const includeDomains = ["alarm_control_panel"];
@@ -40,7 +40,7 @@ export class HuiAlarmPanelCardEditor extends LitElement
@internalProperty() private _config?: AlarmPanelCardConfig;
public setConfig(config: AlarmPanelCardConfig): void {
assert(config, cardConfigStruct);
config = cardConfigStruct(config);
this._config = config;
}
@@ -194,7 +194,6 @@ export class HuiAlarmPanelCardEditor extends LitElement
}
if (target.configValue) {
if (target.value === "") {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else {
this._config = {

View File

@@ -13,6 +13,7 @@ import "../../../../components/ha-icon-input";
import { ActionConfig } from "../../../../data/lovelace";
import { HomeAssistant } from "../../../../types";
import { ButtonCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import "../../components/hui-action-editor";
import "../../components/hui-entity-editor";
import "../../components/hui-theme-select-editor";
@@ -26,20 +27,19 @@ import "../../../../components/ha-switch";
import "../../../../components/ha-formfield";
import { configElementStyle } from "./config-elements-style";
import { computeRTLDirection } from "../../../../common/util/compute_rtl";
import { assert, object, string, optional, boolean } from "superstruct";
const cardConfigStruct = object({
type: string(),
entity: optional(string()),
name: optional(string()),
show_name: optional(boolean()),
icon: optional(string()),
show_icon: optional(boolean()),
icon_height: optional(string()),
tap_action: optional(actionConfigStruct),
hold_action: optional(actionConfigStruct),
theme: optional(string()),
show_state: optional(boolean()),
const cardConfigStruct = struct({
type: "string",
entity: "string?",
name: "string?",
show_name: "boolean?",
icon: "string?",
show_icon: "boolean?",
icon_height: "string?",
tap_action: struct.optional(actionConfigStruct),
hold_action: struct.optional(actionConfigStruct),
theme: "string?",
show_state: "boolean?",
});
@customElement("hui-button-card-editor")
@@ -50,7 +50,7 @@ export class HuiButtonCardEditor extends LitElement
@internalProperty() private _config?: ButtonCardConfig;
public setConfig(config: ButtonCardConfig): void {
assert(config, cardConfigStruct);
config = cardConfigStruct(config);
this._config = config;
}
@@ -258,7 +258,6 @@ export class HuiButtonCardEditor extends LitElement
}
if (target.configValue) {
if (target.value === "") {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else {
let newValue: string | undefined;

View File

@@ -16,6 +16,7 @@ import "../../../../components/entity/ha-entity-picker";
import { LovelaceConfig } from "../../../../data/lovelace";
import { HomeAssistant } from "../../../../types";
import { ConditionalCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import { LovelaceCardEditor } from "../../types";
import {
ConfigChangedEvent,
@@ -23,17 +24,16 @@ import {
} from "../card-editor/hui-card-editor";
import "../card-editor/hui-card-picker";
import { GUIModeChangedEvent } from "../types";
import { string, any, object, optional, array, assert } from "superstruct";
const conditionStruct = object({
entity: string(),
state: optional(string()),
state_not: optional(string()),
const conditionStruct = struct({
entity: "string",
state: "string?",
state_not: "string?",
});
const cardConfigStruct = object({
type: string(),
card: any(),
conditions: optional(array(conditionStruct)),
const cardConfigStruct = struct({
type: "string",
card: "any",
conditions: struct.optional([conditionStruct]),
});
@customElement("hui-conditional-card-editor")
@@ -54,8 +54,7 @@ export class HuiConditionalCardEditor extends LitElement
@query("hui-card-editor") private _cardEditorEl?: HuiCardEditor;
public setConfig(config: ConditionalCardConfig): void {
assert(config, cardConfigStruct);
this._config = config;
this._config = cardConfigStruct(config);
}
public refreshYamlEditor(focus) {
@@ -218,7 +217,7 @@ export class HuiConditionalCardEditor extends LitElement
}
this._setMode(true);
this._guiModeAvailable = true;
this._config = { ...this._config, card: ev.detail.config };
this._config.card = ev.detail.config;
fireEvent(this, "config-changed", { config: this._config });
}
@@ -227,7 +226,7 @@ export class HuiConditionalCardEditor extends LitElement
if (!this._config) {
return;
}
this._config = { ...this._config, card: ev.detail.config };
this._config.card = ev.detail.config;
this._guiModeAvailable = ev.detail.guiModeAvailable;
fireEvent(this, "config-changed", { config: this._config });
}
@@ -237,8 +236,7 @@ export class HuiConditionalCardEditor extends LitElement
return;
}
// @ts-ignore
this._config = { ...this._config, card: {} };
// @ts-ignore
this._config.card = {};
fireEvent(this, "config-changed", { config: this._config });
}
@@ -247,12 +245,10 @@ export class HuiConditionalCardEditor extends LitElement
if (target.value === "" || !this._config) {
return;
}
const conditions = [...this._config.conditions];
conditions.push({
this._config.conditions.push({
entity: target.value,
state: "",
});
this._config = { ...this._config, conditions };
target.value = "";
fireEvent(this, "config-changed", { config: this._config });
}
@@ -262,11 +258,10 @@ export class HuiConditionalCardEditor extends LitElement
if (!this._config || !target) {
return;
}
const conditions = [...this._config.conditions];
if (target.configValue === "entity" && target.value === "") {
conditions.splice(target.index, 1);
this._config.conditions.splice(target.index, 1);
} else {
const condition = { ...conditions[target.index] };
const condition = this._config.conditions[target.index];
if (target.configValue === "entity") {
condition.entity = target.value;
} else if (target.configValue === "state") {
@@ -286,9 +281,8 @@ export class HuiConditionalCardEditor extends LitElement
delete condition.state_not;
}
}
conditions[target.index] = condition;
this._config.conditions[target.index] = condition;
}
this._config = { ...this._config, conditions };
fireEvent(this, "config-changed", { config: this._config });
}

View File

@@ -20,6 +20,7 @@ import {
EntitiesCardConfig,
EntitiesCardEntityConfig,
} from "../../cards/types";
import { struct } from "../../common/structs/struct";
import "../../components/hui-entity-editor";
import "../../components/hui-theme-select-editor";
import { headerFooterConfigStructs } from "../../header-footer/types";
@@ -32,24 +33,15 @@ import {
} from "../types";
import { configElementStyle } from "./config-elements-style";
import { computeRTLDirection } from "../../../../common/util/compute_rtl";
import {
string,
optional,
object,
boolean,
array,
union,
assert,
} from "superstruct";
const cardConfigStruct = object({
type: string(),
title: optional(union([string(), boolean()])),
theme: optional(string()),
show_header_toggle: optional(boolean()),
entities: array(entitiesConfigStruct),
header: optional(headerFooterConfigStructs),
footer: optional(headerFooterConfigStructs),
const cardConfigStruct = struct({
type: "string",
title: "string|number?",
theme: "string?",
show_header_toggle: "boolean?",
entities: [entitiesConfigStruct],
header: struct.optional(headerFooterConfigStructs),
footer: struct.optional(headerFooterConfigStructs),
});
@customElement("hui-entities-card-editor")
@@ -62,7 +54,7 @@ export class HuiEntitiesCardEditor extends LitElement
@internalProperty() private _configEntities?: EntitiesCardEntityConfig[];
public setConfig(config: EntitiesCardConfig): void {
assert(config, cardConfigStruct);
config = cardConfigStruct(config);
this._config = config;
this._configEntities = processEditorEntities(config.entities);
}
@@ -135,12 +127,10 @@ export class HuiEntitiesCardEditor extends LitElement
}
if (ev.detail && ev.detail.entities) {
this._config = { ...this._config, entities: ev.detail.entities };
this._config.entities = ev.detail.entities;
this._configEntities = processEditorEntities(this._config.entities);
} else if (target.configValue) {
if (target.value === "") {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else {
this._config = {

View File

@@ -12,6 +12,7 @@ import { stateIcon } from "../../../../common/entity/state_icon";
import "../../../../components/ha-icon-input";
import { HomeAssistant } from "../../../../types";
import { EntityCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import "../../components/hui-action-editor";
import "../../components/hui-entity-editor";
import "../../components/hui-theme-select-editor";
@@ -19,17 +20,16 @@ import { headerFooterConfigStructs } from "../../header-footer/types";
import { LovelaceCardEditor } from "../../types";
import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style";
import { string, object, optional, assert } from "superstruct";
const cardConfigStruct = object({
type: string(),
entity: optional(string()),
name: optional(string()),
icon: optional(string()),
attribute: optional(string()),
unit: optional(string()),
theme: optional(string()),
footer: optional(headerFooterConfigStructs),
const cardConfigStruct = struct({
type: "string",
entity: "string?",
name: "string?",
icon: "string?",
attribute: "string?",
unit: "string?",
theme: "string?",
footer: struct.optional(headerFooterConfigStructs),
});
@customElement("hui-entity-card-editor")
@@ -40,7 +40,7 @@ export class HuiEntityCardEditor extends LitElement
@internalProperty() private _config?: EntityCardConfig;
public setConfig(config: EntityCardConfig): void {
assert(config, cardConfigStruct);
config = cardConfigStruct(config);
this._config = config;
}
@@ -158,7 +158,6 @@ export class HuiEntityCardEditor extends LitElement
}
if (target.configValue) {
if (target.value === "") {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else {
let newValue: string | undefined;

View File

@@ -14,23 +14,23 @@ import "../../../../components/ha-switch";
import "../../../../components/ha-formfield";
import { HomeAssistant } from "../../../../types";
import { GaugeCardConfig, SeverityConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import "../../components/hui-entity-editor";
import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types";
import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style";
import { computeRTLDirection } from "../../../../common/util/compute_rtl";
import { assert, object, string, optional, number } from "superstruct";
const cardConfigStruct = object({
type: string(),
name: optional(string()),
entity: optional(string()),
unit: optional(string()),
min: optional(number()),
max: optional(number()),
severity: optional(object()),
theme: optional(string()),
const cardConfigStruct = struct({
type: "string",
name: "string?",
entity: "string?",
unit: "string?",
min: "number?",
max: "number?",
severity: "object?",
theme: "string?",
});
const includeDomains = ["sensor"];
@@ -43,7 +43,7 @@ export class HuiGaugeCardEditor extends LitElement
@internalProperty() private _config?: GaugeCardConfig;
public setConfig(config: GaugeCardConfig): void {
assert(config, cardConfigStruct);
config = cardConfigStruct(config);
this._config = config;
}
@@ -260,7 +260,6 @@ export class HuiGaugeCardEditor extends LitElement
target.value === "" ||
(target.type === "number" && isNaN(Number(target.value)))
) {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else {
let value: any = target.value;

View File

@@ -17,6 +17,7 @@ import "../../../../components/ha-switch";
import "../../../../components/ha-formfield";
import { HomeAssistant } from "../../../../types";
import { ConfigEntity, GlanceCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import "../../components/hui-entity-editor";
import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types";
@@ -28,26 +29,16 @@ import {
} from "../types";
import { configElementStyle } from "./config-elements-style";
import { computeRTLDirection } from "../../../../common/util/compute_rtl";
import {
string,
union,
object,
optional,
number,
boolean,
assert,
array,
} from "superstruct";
const cardConfigStruct = object({
type: string(),
title: optional(union([string(), number()])),
theme: optional(string()),
columns: optional(number()),
show_name: optional(boolean()),
show_state: optional(boolean()),
show_icon: optional(boolean()),
entities: array(entitiesConfigStruct),
const cardConfigStruct = struct({
type: "string",
title: "string|number?",
theme: "string?",
columns: "number?",
show_name: "boolean?",
show_state: "boolean?",
show_icon: "boolean?",
entities: [entitiesConfigStruct],
});
@customElement("hui-glance-card-editor")
@@ -60,7 +51,7 @@ export class HuiGlanceCardEditor extends LitElement
@internalProperty() private _configEntities?: ConfigEntity[];
public setConfig(config: GlanceCardConfig): void {
assert(config, cardConfigStruct);
config = cardConfigStruct(config);
this._config = config;
this._configEntities = processEditorEntities(config.entities);
}
@@ -193,15 +184,13 @@ export class HuiGlanceCardEditor extends LitElement
return;
}
if (ev.detail && ev.detail.entities) {
this._config = { ...this._config, entities: ev.detail.entities };
this._config.entities = ev.detail.entities;
this._configEntities = processEditorEntities(this._config.entities);
} else if (target.configValue) {
if (
target.value === "" ||
(target.type === "number" && isNaN(Number(target.value)))
) {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else {
let value: any = target.value;

View File

@@ -10,37 +10,28 @@ import {
import { fireEvent } from "../../../../common/dom/fire_event";
import { HomeAssistant } from "../../../../types";
import { HistoryGraphCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import "../../components/hui-entity-editor";
import { EntityConfig } from "../../entity-rows/types";
import { LovelaceCardEditor } from "../../types";
import { processEditorEntities } from "../process-editor-entities";
import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style";
import {
assert,
union,
optional,
string,
object,
array,
number,
} from "superstruct";
import { EntityId } from "../../common/structs/is-entity-id";
const entitiesConfigStruct = union([
object({
entity: EntityId,
name: optional(string()),
}),
EntityId,
const entitiesConfigStruct = struct.union([
{
entity: "entity-id",
name: "string?",
},
"entity-id",
]);
const cardConfigStruct = object({
type: string(),
entities: array(entitiesConfigStruct),
title: optional(string()),
hours_to_show: optional(number()),
refresh_interval: optional(number()),
const cardConfigStruct = struct({
type: "string",
entities: [entitiesConfigStruct],
title: "string?",
hours_to_show: "number?",
refresh_interval: "number?",
});
@customElement("hui-history-graph-card-editor")
@@ -53,7 +44,7 @@ export class HuiHistoryGraphCardEditor extends LitElement
@internalProperty() private _configEntities?: EntityConfig[];
public setConfig(config: HistoryGraphCardConfig): void {
assert(config, cardConfigStruct);
config = cardConfigStruct(config);
this._config = config;
this._configEntities = processEditorEntities(config.entities);
}
@@ -136,11 +127,10 @@ export class HuiHistoryGraphCardEditor extends LitElement
}
if (ev.detail && ev.detail.entities) {
this._config = { ...this._config, entities: ev.detail.entities };
this._config.entities = ev.detail.entities;
this._configEntities = processEditorEntities(this._config.entities);
} else if (target.configValue) {
if (target.value === "") {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else {
let value: any = target.value;

View File

@@ -11,17 +11,17 @@ import { fireEvent } from "../../../../common/dom/fire_event";
import "../../../../components/entity/ha-entity-picker";
import { HomeAssistant } from "../../../../types";
import { HumidifierCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types";
import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style";
import { string, object, optional, assert } from "superstruct";
const cardConfigStruct = object({
type: string(),
entity: string(),
name: optional(string()),
theme: optional(string()),
const cardConfigStruct = struct({
type: "string",
entity: "string",
name: "string?",
theme: "string?",
});
const includeDomains = ["humidifier"];
@@ -34,7 +34,7 @@ export class HuiHumidifierCardEditor extends LitElement
@internalProperty() private _config?: HumidifierCardConfig;
public setConfig(config: HumidifierCardConfig): void {
assert(config, cardConfigStruct);
config = cardConfigStruct(config);
this._config = config;
}
@@ -102,7 +102,6 @@ export class HuiHumidifierCardEditor extends LitElement
}
if (target.configValue) {
if (target.value === "") {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else {
this._config = { ...this._config, [target.configValue!]: target.value };

View File

@@ -10,16 +10,16 @@ import {
import { fireEvent } from "../../../../common/dom/fire_event";
import { HomeAssistant } from "../../../../types";
import { IframeCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import { LovelaceCardEditor } from "../../types";
import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style";
import { string, assert, object, optional } from "superstruct";
const cardConfigStruct = object({
type: string(),
title: optional(string()),
url: optional(string()),
aspect_ratio: optional(string()),
const cardConfigStruct = struct({
type: "string",
title: "string?",
url: "string?",
aspect_ratio: "string?",
});
@customElement("hui-iframe-card-editor")
@@ -30,7 +30,7 @@ export class HuiIframeCardEditor extends LitElement
@internalProperty() private _config?: IframeCardConfig;
public setConfig(config: IframeCardConfig): void {
assert(config, cardConfigStruct);
config = cardConfigStruct(config);
this._config = config;
}
@@ -102,7 +102,6 @@ export class HuiIframeCardEditor extends LitElement
}
if (target.configValue) {
if (value === "") {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else {
this._config = { ...this._config, [target.configValue!]: value };

View File

@@ -13,6 +13,7 @@ import "../../../../components/ha-icon-input";
import { ActionConfig } from "../../../../data/lovelace";
import { HomeAssistant } from "../../../../types";
import { LightCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import "../../components/hui-action-editor";
import "../../components/hui-entity-editor";
import "../../components/hui-theme-select-editor";
@@ -23,16 +24,15 @@ import {
EntitiesEditorEvent,
} from "../types";
import { configElementStyle } from "./config-elements-style";
import { string, object, optional, assert } from "superstruct";
const cardConfigStruct = object({
type: string(),
name: optional(string()),
entity: optional(string()),
theme: optional(string()),
icon: optional(string()),
hold_action: optional(actionConfigStruct),
double_tap_action: optional(actionConfigStruct),
const cardConfigStruct = struct({
type: "string",
name: "string?",
entity: "string?",
theme: "string?",
icon: "string?",
hold_action: struct.optional(actionConfigStruct),
double_tap_action: struct.optional(actionConfigStruct),
});
const includeDomains = ["light"];
@@ -45,8 +45,7 @@ export class HuiLightCardEditor extends LitElement
@internalProperty() private _config?: LightCardConfig;
public setConfig(config: LightCardConfig): void {
assert(config, cardConfigStruct);
this._config = config;
this._config = cardConfigStruct(config);
}
get _name(): string {
@@ -178,7 +177,6 @@ export class HuiLightCardEditor extends LitElement
}
if (target.configValue) {
if (target.value === "") {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else {
this._config = {

View File

@@ -13,6 +13,7 @@ import { fireEvent } from "../../../../common/dom/fire_event";
import { PolymerChangedEvent } from "../../../../polymer-types";
import { HomeAssistant } from "../../../../types";
import { MapCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import "../../components/hui-entity-editor";
import "../../components/hui-input-list-editor";
import { EntityConfig } from "../../entity-rows/types";
@@ -27,25 +28,16 @@ import "../../../../components/ha-switch";
import "../../../../components/ha-formfield";
import { configElementStyle } from "./config-elements-style";
import { computeRTLDirection } from "../../../../common/util/compute_rtl";
import {
string,
optional,
object,
number,
boolean,
array,
assert,
} from "superstruct";
const cardConfigStruct = object({
type: string(),
title: optional(string()),
aspect_ratio: optional(string()),
default_zoom: optional(number()),
dark_mode: optional(boolean()),
entities: array(entitiesConfigStruct),
hours_to_show: optional(number()),
geo_location_sources: optional(array()),
const cardConfigStruct = struct({
type: "string",
title: "string?",
aspect_ratio: "string?",
default_zoom: "number?",
dark_mode: "boolean?",
entities: [entitiesConfigStruct],
hours_to_show: "number?",
geo_location_sources: "array?",
});
@customElement("hui-map-card-editor")
@@ -57,7 +49,7 @@ export class HuiMapCardEditor extends LitElement implements LovelaceCardEditor {
@internalProperty() private _configEntities?: EntityConfig[];
public setConfig(config: MapCardConfig): void {
assert(config, cardConfigStruct);
config = cardConfigStruct(config);
this._config = config;
this._configEntities = config.entities
? processEditorEntities(config.entities)
@@ -184,8 +176,7 @@ export class HuiMapCardEditor extends LitElement implements LovelaceCardEditor {
return;
}
if (ev.detail && ev.detail.entities) {
this._config = { ...this._config, entities: ev.detail.entities };
this._config.entities = ev.detail.entities;
this._configEntities = processEditorEntities(this._config.entities);
fireEvent(this, "config-changed", { config: this._config });
}
@@ -204,7 +195,6 @@ export class HuiMapCardEditor extends LitElement implements LovelaceCardEditor {
value = Number(value);
}
if (target.value === "" || (target.type === "number" && isNaN(value))) {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else if (target.configValue) {
this._config = {

View File

@@ -11,17 +11,17 @@ import {
import { fireEvent } from "../../../../common/dom/fire_event";
import { HomeAssistant } from "../../../../types";
import { MarkdownCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types";
import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style";
import { string, assert, object, optional } from "superstruct";
const cardConfigStruct = object({
type: string(),
title: optional(string()),
content: string(),
theme: optional(string()),
const cardConfigStruct = struct({
type: "string",
title: "string?",
content: "string",
theme: "string?",
});
@customElement("hui-markdown-card-editor")
@@ -32,7 +32,7 @@ export class HuiMarkdownCardEditor extends LitElement
@internalProperty() private _config?: MarkdownCardConfig;
public setConfig(config: MarkdownCardConfig): void {
assert(config, cardConfigStruct);
config = cardConfigStruct(config);
this._config = config;
}
@@ -100,7 +100,6 @@ export class HuiMarkdownCardEditor extends LitElement
}
if (target.configValue) {
if (target.value === "" && target.configValue !== "content") {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else {
this._config = {

View File

@@ -10,13 +10,13 @@ import { fireEvent } from "../../../../common/dom/fire_event";
import "../../../../components/entity/ha-entity-picker";
import { HomeAssistant } from "../../../../types";
import { MediaControlCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import { LovelaceCardEditor } from "../../types";
import { EditorTarget, EntitiesEditorEvent } from "../types";
import { assert, object, string, optional } from "superstruct";
const cardConfigStruct = object({
type: string(),
entity: optional(string()),
const cardConfigStruct = struct({
type: "string",
entity: "string?",
});
const includeDomains = ["media_player"];
@@ -29,7 +29,7 @@ export class HuiMediaControlCardEditor extends LitElement
@internalProperty() private _config?: MediaControlCardConfig;
public setConfig(config: MediaControlCardConfig): void {
assert(config, cardConfigStruct);
config = cardConfigStruct(config);
this._config = config;
}
@@ -71,7 +71,6 @@ export class HuiMediaControlCardEditor extends LitElement
}
if (target.configValue) {
if (target.value === "") {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else {
this._config = {

View File

@@ -11,6 +11,7 @@ import { fireEvent } from "../../../../common/dom/fire_event";
import { ActionConfig } from "../../../../data/lovelace";
import { HomeAssistant } from "../../../../types";
import { PictureCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import "../../components/hui-action-editor";
import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types";
@@ -20,14 +21,13 @@ import {
EntitiesEditorEvent,
} from "../types";
import { configElementStyle } from "./config-elements-style";
import { string, object, optional, assert } from "superstruct";
const cardConfigStruct = object({
type: string(),
image: optional(string()),
tap_action: optional(actionConfigStruct),
hold_action: optional(actionConfigStruct),
theme: optional(string()),
const cardConfigStruct = struct({
type: "string",
image: "string?",
tap_action: struct.optional(actionConfigStruct),
hold_action: struct.optional(actionConfigStruct),
theme: "string?",
});
@customElement("hui-picture-card-editor")
@@ -38,7 +38,7 @@ export class HuiPictureCardEditor extends LitElement
@internalProperty() private _config?: PictureCardConfig;
public setConfig(config: PictureCardConfig): void {
assert(config, cardConfigStruct);
config = cardConfigStruct(config);
this._config = config;
}
@@ -128,7 +128,6 @@ export class HuiPictureCardEditor extends LitElement
}
if (target.configValue) {
if (target.value === "") {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else {
this._config = {

View File

@@ -16,6 +16,7 @@ import "../../../../components/ha-formfield";
import { ActionConfig } from "../../../../data/lovelace";
import { HomeAssistant } from "../../../../types";
import { PictureEntityCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import "../../components/hui-action-editor";
import "../../components/hui-entity-editor";
import "../../components/hui-theme-select-editor";
@@ -27,21 +28,20 @@ import {
} from "../types";
import { configElementStyle } from "./config-elements-style";
import { computeRTLDirection } from "../../../../common/util/compute_rtl";
import { assert, object, string, optional, boolean } from "superstruct";
const cardConfigStruct = object({
type: string(),
entity: string(),
image: optional(string()),
name: optional(string()),
camera_image: optional(string()),
camera_view: optional(string()),
aspect_ratio: optional(string()),
tap_action: optional(actionConfigStruct),
hold_action: optional(actionConfigStruct),
show_name: optional(boolean()),
show_state: optional(boolean()),
theme: optional(string()),
const cardConfigStruct = struct({
type: "string",
entity: "string",
image: "string?",
name: "string?",
camera_image: "string?",
camera_view: "string?",
aspect_ratio: "string?",
tap_action: struct.optional(actionConfigStruct),
hold_action: struct.optional(actionConfigStruct),
show_name: "boolean?",
show_state: "boolean?",
theme: "string?",
});
const includeDomains = ["camera"];
@@ -54,7 +54,7 @@ export class HuiPictureEntityCardEditor extends LitElement
@internalProperty() private _config?: PictureEntityCardConfig;
public setConfig(config: PictureEntityCardConfig): void {
assert(config, cardConfigStruct);
config = cardConfigStruct(config);
this._config = config;
}
@@ -275,7 +275,6 @@ export class HuiPictureEntityCardEditor extends LitElement
}
if (target.configValue) {
if (value === "") {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else {
this._config = {

View File

@@ -15,6 +15,7 @@ import "../../../../components/entity/ha-entity-picker";
import { ActionConfig } from "../../../../data/lovelace";
import { HomeAssistant } from "../../../../types";
import { PictureGlanceCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import "../../components/hui-action-editor";
import "../../components/hui-entity-editor";
import "../../components/hui-theme-select-editor";
@@ -28,20 +29,19 @@ import {
EntitiesEditorEvent,
} from "../types";
import { configElementStyle } from "./config-elements-style";
import { assert, string, object, optional, array } from "superstruct";
const cardConfigStruct = object({
type: string(),
title: optional(string()),
entity: optional(string()),
image: optional(string()),
camera_image: optional(string()),
camera_view: optional(string()),
aspect_ratio: optional(string()),
tap_action: optional(actionConfigStruct),
hold_action: optional(actionConfigStruct),
entities: array(entitiesConfigStruct),
theme: optional(string()),
const cardConfigStruct = struct({
type: "string",
title: "string?",
entity: "string?",
image: "string?",
camera_image: "string?",
camera_view: "string?",
aspect_ratio: "string?",
tap_action: struct.optional(actionConfigStruct),
hold_action: struct.optional(actionConfigStruct),
entities: [entitiesConfigStruct],
theme: "string?",
});
const includeDomains = ["camera"];
@@ -56,7 +56,7 @@ export class HuiPictureGlanceCardEditor extends LitElement
@internalProperty() private _configEntities?: EntityConfig[];
public setConfig(config: PictureGlanceCardConfig): void {
assert(config, cardConfigStruct);
config = cardConfigStruct(config);
this._config = config;
this._configEntities = processEditorEntities(config.entities);
}
@@ -251,8 +251,7 @@ export class HuiPictureGlanceCardEditor extends LitElement
}
if (ev.detail && ev.detail.entities) {
this._config = { ...this._config, entities: ev.detail.entities };
this._config.entities = ev.detail.entities;
this._configEntities = processEditorEntities(this._config.entities);
} else if (target.configValue) {
if (
@@ -263,7 +262,6 @@ export class HuiPictureGlanceCardEditor extends LitElement
}
if (value === "") {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else {
this._config = {

View File

@@ -12,17 +12,17 @@ import "../../../../components/entity/ha-entity-picker";
import "../../../../components/ha-icon";
import { HomeAssistant } from "../../../../types";
import { PlantStatusCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types";
import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style";
import { assert, object, string, optional } from "superstruct";
const cardConfigStruct = object({
type: string(),
entity: string(),
name: optional(string()),
theme: optional(string()),
const cardConfigStruct = struct({
type: "string",
entity: "string",
name: "string?",
theme: "string?",
});
const includeDomains = ["plant"];
@@ -35,7 +35,7 @@ export class HuiPlantStatusCardEditor extends LitElement
@internalProperty() private _config?: PlantStatusCardConfig;
public setConfig(config: PlantStatusCardConfig): void {
assert(config, cardConfigStruct);
config = cardConfigStruct(config);
this._config = config;
}
@@ -102,7 +102,6 @@ export class HuiPlantStatusCardEditor extends LitElement
}
if (target.configValue) {
if (target.value === "") {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else {
this._config = {

View File

@@ -16,22 +16,22 @@ import "../../../../components/entity/ha-entity-picker";
import "../../../../components/ha-icon-input";
import { HomeAssistant } from "../../../../types";
import { SensorCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types";
import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style";
import { string, assert, object, optional, number } from "superstruct";
const cardConfigStruct = object({
type: string(),
entity: optional(string()),
name: optional(string()),
icon: optional(string()),
graph: optional(string()),
unit: optional(string()),
detail: optional(number()),
theme: optional(string()),
hours_to_show: optional(number()),
const cardConfigStruct = struct({
type: "string",
entity: "string?",
name: "string?",
icon: "string?",
graph: "string?",
unit: "string?",
detail: "number?",
theme: "string?",
hours_to_show: "number?",
});
const includeDomains = ["sensor"];
@@ -44,7 +44,7 @@ export class HuiSensorCardEditor extends LitElement
@internalProperty() private _config?: SensorCardConfig;
public setConfig(config: SensorCardConfig): void {
assert(config, cardConfigStruct);
config = cardConfigStruct(config);
this._config = config;
}
@@ -205,7 +205,6 @@ export class HuiSensorCardEditor extends LitElement
target.value === "" ||
(target.type === "number" && isNaN(Number(target.value)))
) {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else {
let value: any = target.value;

View File

@@ -13,15 +13,15 @@ import { isComponentLoaded } from "../../../../common/config/is_component_loaded
import { fireEvent } from "../../../../common/dom/fire_event";
import { HomeAssistant } from "../../../../types";
import { ShoppingListCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types";
import { EditorTarget, EntitiesEditorEvent } from "../types";
import { string, assert, object, optional } from "superstruct";
const cardConfigStruct = object({
type: string(),
title: optional(string()),
theme: optional(string()),
const cardConfigStruct = struct({
type: "string",
title: "string?",
theme: "string?",
});
@customElement("hui-shopping-list-card-editor")
@@ -32,7 +32,7 @@ export class HuiShoppingListEditor extends LitElement
@internalProperty() private _config?: ShoppingListCardConfig;
public setConfig(config: ShoppingListCardConfig): void {
assert(config, cardConfigStruct);
config = cardConfigStruct(config);
this._config = config;
}
@@ -91,7 +91,6 @@ export class HuiShoppingListEditor extends LitElement
}
if (target.configValue) {
if (target.value === "") {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else {
this._config = {

View File

@@ -16,6 +16,7 @@ import { fireEvent, HASSDomEvent } from "../../../../common/dom/fire_event";
import { LovelaceConfig } from "../../../../data/lovelace";
import { HomeAssistant } from "../../../../types";
import { StackCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import { LovelaceCardEditor } from "../../types";
import {
ConfigChangedEvent,
@@ -23,12 +24,11 @@ import {
} from "../card-editor/hui-card-editor";
import "../card-editor/hui-card-picker";
import { GUIModeChangedEvent } from "../types";
import { assert, object, string, array, any, optional } from "superstruct";
const cardConfigStruct = object({
type: string(),
cards: array(any()),
title: optional(string()),
const cardConfigStruct = struct({
type: "string",
cards: ["any"],
title: "string?",
});
@customElement("hui-stack-card-editor")
@@ -48,9 +48,8 @@ export class HuiStackCardEditor extends LitElement
@query("hui-card-editor") private _cardEditorEl?: HuiCardEditor;
public setConfig(config: Readonly<StackCardConfig>): void {
assert(config, cardConfigStruct);
this._config = config;
public setConfig(config: StackCardConfig): void {
this._config = cardConfigStruct(config);
}
public refreshYamlEditor(focus) {
@@ -163,9 +162,7 @@ export class HuiStackCardEditor extends LitElement
if (!this._config) {
return;
}
const cards = [...this._config.cards];
cards[this._selectedCard] = ev.detail.config;
this._config = { ...this._config, cards };
this._config.cards[this._selectedCard] = ev.detail.config;
this._guiModeAvailable = ev.detail.guiModeAvailable;
fireEvent(this, "config-changed", { config: this._config });
}
@@ -176,8 +173,7 @@ export class HuiStackCardEditor extends LitElement
return;
}
const config = ev.detail.config;
const cards = [...this._config.cards, config];
this._config = { ...this._config, cards };
this._config.cards.push(config);
fireEvent(this, "config-changed", { config: this._config });
}
@@ -185,9 +181,7 @@ export class HuiStackCardEditor extends LitElement
if (!this._config) {
return;
}
const cards = [...this._config.cards];
cards.splice(this._selectedCard, 1);
this._config = { ...this._config, cards };
this._config.cards.splice(this._selectedCard, 1);
this._selectedCard = Math.max(0, this._selectedCard - 1);
fireEvent(this, "config-changed", { config: this._config });
}
@@ -198,13 +192,8 @@ export class HuiStackCardEditor extends LitElement
}
const source = this._selectedCard;
const target = ev.target.id === "move-before" ? source - 1 : source + 1;
const cards = [...this._config.cards];
const card = cards.splice(this._selectedCard, 1)[0];
cards.splice(target, 0, card);
this._config = {
...this._config,
cards,
};
const card = this._config.cards.splice(this._selectedCard, 1)[0];
this._config.cards.splice(target, 0, card);
this._selectedCard = target;
fireEvent(this, "config-changed", { config: this._config });
}

View File

@@ -11,17 +11,17 @@ import { fireEvent } from "../../../../common/dom/fire_event";
import "../../../../components/entity/ha-entity-picker";
import { HomeAssistant } from "../../../../types";
import { ThermostatCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types";
import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style";
import { object, string, optional, assert } from "superstruct";
const cardConfigStruct = object({
type: string(),
entity: string(),
name: optional(string()),
theme: optional(string()),
const cardConfigStruct = struct({
type: "string",
entity: "string",
name: "string?",
theme: "string?",
});
const includeDomains = ["climate"];
@@ -34,7 +34,7 @@ export class HuiThermostatCardEditor extends LitElement
@internalProperty() private _config?: ThermostatCardConfig;
public setConfig(config: ThermostatCardConfig): void {
assert(config, cardConfigStruct);
config = cardConfigStruct(config);
this._config = config;
}
@@ -102,7 +102,6 @@ export class HuiThermostatCardEditor extends LitElement
}
if (target.configValue) {
if (target.value === "") {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else {
this._config = { ...this._config, [target.configValue!]: target.value };

View File

@@ -12,20 +12,20 @@ import "../../../../components/ha-switch";
import "../../../../components/ha-formfield";
import { HomeAssistant } from "../../../../types";
import { WeatherForecastCardConfig } from "../../cards/types";
import { struct } from "../../common/structs/struct";
import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types";
import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style";
import { computeRTLDirection } from "../../../../common/util/compute_rtl";
import { object, string, optional, boolean, assert } from "superstruct";
const cardConfigStruct = object({
type: string(),
entity: optional(string()),
name: optional(string()),
theme: optional(string()),
show_forecast: optional(boolean()),
secondary_info_attribute: optional(string()),
const cardConfigStruct = struct({
type: "string",
entity: "string?",
name: "string?",
theme: "string?",
show_forecast: "boolean?",
secondary_info_attribute: "string?",
});
const includeDomains = ["weather"];
@@ -38,7 +38,7 @@ export class HuiWeatherForecastCardEditor extends LitElement
@internalProperty() private _config?: WeatherForecastCardConfig;
public setConfig(config: WeatherForecastCardConfig): void {
assert(config, cardConfigStruct);
config = cardConfigStruct(config);
this._config = config;
}
@@ -139,7 +139,6 @@ export class HuiWeatherForecastCardEditor extends LitElement
}
if (target.configValue) {
if (target.value === "") {
this._config = { ...this._config };
delete this._config[target.configValue!];
} else {
this._config = {

View File

@@ -1,9 +0,0 @@
export class GUISupportError extends Error {
public warnings?: string[] = [];
constructor(message: string, warnings?: string[]) {
super(message);
this.name = "GUISupportError";
this.warnings = warnings;
}
}

View File

@@ -4,10 +4,8 @@ import {
LovelaceViewConfig,
ShowViewConfig,
} from "../../../data/lovelace";
import { struct } from "../common/structs/struct";
import { EntityConfig } from "../entity-rows/types";
import { optional, string, object, union } from "superstruct";
import { EntityId } from "../common/structs/is-entity-id";
import { Icon } from "../common/structs/is-icon";
export interface YamlChangedEvent extends Event {
detail: {
@@ -68,19 +66,19 @@ export interface CardPickTarget extends EventTarget {
config: LovelaceCardConfig;
}
export const actionConfigStruct = object({
action: string(),
navigation_path: optional(string()),
url_path: optional(string()),
service: optional(string()),
service_data: optional(object()),
export const actionConfigStruct = struct({
action: "string",
navigation_path: "string?",
url_path: "string?",
service: "string?",
service_data: "object?",
});
export const entitiesConfigStruct = union([
object({
entity: EntityId,
name: optional(string()),
icon: optional(Icon),
}),
EntityId,
export const entitiesConfigStruct = struct.union([
{
entity: "entity-id",
name: "string?",
icon: "icon?",
},
"entity-id",
]);

View File

@@ -176,12 +176,6 @@ export class HuiUnusedEntities extends LitElement {
selectable
@selection-changed=${this._handleSelectionChanged}
.dir=${computeRTLDirection(this.hass)}
.searchLabel=${this.hass.localize(
"ui.panel.lovelace.unused_entities.search"
)}
.noDataText=${this.hass.localize(
"ui.panel.lovelace.unused_entities.no_data"
)}
></ha-data-table>
${this._selectedEntities.length

View File

@@ -1,5 +1,5 @@
import { ActionConfig } from "../../../data/lovelace";
import { object, optional, union, string, number, array } from "superstruct";
import { struct } from "../common/structs/struct";
import { actionConfigStruct, entitiesConfigStruct } from "../editor/types";
import { EntityConfig } from "../entity-rows/types";
@@ -24,27 +24,27 @@ export interface PictureHeaderFooterConfig extends LovelaceHeaderFooterConfig {
double_tap_action?: ActionConfig;
}
export const pictureHeaderFooterConfigStruct = object({
type: string(),
image: string(),
tap_action: optional(actionConfigStruct),
hold_action: optional(actionConfigStruct),
double_tap_action: optional(actionConfigStruct),
export const pictureHeaderFooterConfigStruct = struct({
type: "string",
image: "string",
tap_action: struct.optional(actionConfigStruct),
hold_action: struct.optional(actionConfigStruct),
double_tap_action: struct.optional(actionConfigStruct),
});
export const buttonsHeaderFooterConfigStruct = object({
type: string(),
entities: array(entitiesConfigStruct),
export const buttonsHeaderFooterConfigStruct = struct({
type: "string",
entities: [entitiesConfigStruct],
});
export const graphHeaderFooterConfigStruct = object({
type: string(),
entity: string(),
detail: optional(string()),
hours_to_show: optional(number()),
export const graphHeaderFooterConfigStruct = struct({
type: "string",
entity: "string",
detail: "number?",
hours_to_show: "number?",
});
export const headerFooterConfigStructs = union([
export const headerFooterConfigStructs = struct.union([
pictureHeaderFooterConfigStruct,
buttonsHeaderFooterConfigStruct,
graphHeaderFooterConfigStruct,

View File

@@ -27,12 +27,12 @@ import {
} from "../../dialogs/generic/show-dialog-box";
import { haStyle } from "../../resources/styles";
import type { HomeAssistant } from "../../types";
import { struct } from "./common/structs/struct";
import type { Lovelace } from "./types";
import { optional, array, string, object, type, assert } from "superstruct";
const lovelaceStruct = type({
title: optional(string()),
views: array(object()),
const lovelaceStruct = struct.interface({
title: "string?",
views: ["object"],
});
@customElement("hui-editor")
@@ -251,7 +251,7 @@ class LovelaceFullConfigEditor extends LitElement {
return;
}
try {
assert(config, lovelaceStruct);
config = lovelaceStruct(config);
} catch (err) {
showAlertDialog(this, {
text: this.hass.localize(

View File

@@ -58,8 +58,6 @@ import type { Lovelace } from "./types";
import "./views/hui-panel-view";
import type { HUIPanelView } from "./views/hui-panel-view";
import { HUIView } from "./views/hui-view";
import type { RequestSelectedDetail } from "@material/mwc-list/mwc-list-item";
import { shouldHandleRequestSelectedEvent } from "../../common/mwc/handle-request-selected-event";
class HUIRoot extends LitElement {
@property({ attribute: false }) public hass!: HomeAssistant;
@@ -135,19 +133,14 @@ class HUIRoot extends LitElement {
<ha-svg-icon path=${mdiPencil}></ha-svg-icon>
</mwc-icon-button>
</div>
<a
href="https://www.home-assistant.io/lovelace/"
rel="noreferrer"
target="_blank"
<mwc-icon-button
title="${this.hass!.localize(
"ui.panel.lovelace.menu.help"
)}"
@click="${this._handleHelp}"
>
<mwc-icon-button
title="${this.hass!.localize(
"ui.panel.lovelace.menu.help"
)}"
>
<ha-svg-icon path=${mdiHelpCircle}></ha-svg-icon>
</mwc-icon-button>
</a>
<ha-svg-icon path=${mdiHelpCircle}></ha-svg-icon>
</mwc-icon-button>
<ha-button-menu corner="BOTTOM_START">
<mwc-icon-button
slot="trigger"
@@ -167,14 +160,14 @@ class HUIRoot extends LitElement {
aria-label=${this.hass!.localize(
"ui.panel.lovelace.unused_entities.title"
)}
@request-selected="${this._handleUnusedEntities}"
@tap="${this._handleUnusedEntities}"
>
${this.hass!.localize(
"ui.panel.lovelace.unused_entities.title"
)}
</mwc-list-item>
`}
<mwc-list-item @request-selected="${this._handleRawEditor}">
<mwc-list-item @tap="${this.lovelace!.enableFullEditMode}">
${this.hass!.localize(
"ui.panel.lovelace.editor.menu.raw_editor"
)}
@@ -217,7 +210,7 @@ class HUIRoot extends LitElement {
aria-label=${this.hass!.localize(
"ui.panel.lovelace.menu.refresh"
)}
@request-selected="${this._handleRefresh}"
@tap="${this._handleRefresh}"
>
${this.hass!.localize(
"ui.panel.lovelace.menu.refresh"
@@ -227,7 +220,7 @@ class HUIRoot extends LitElement {
aria-label=${this.hass!.localize(
"ui.panel.lovelace.unused_entities.title"
)}
@request-selected="${this._handleUnusedEntities}"
@tap="${this._handleUnusedEntities}"
>
${this.hass!.localize(
"ui.panel.lovelace.unused_entities.title"
@@ -242,7 +235,7 @@ class HUIRoot extends LitElement {
aria-label=${this.hass!.localize(
"ui.panel.lovelace.menu.reload_resources"
)}
@request-selected=${this._handleReloadResources}
@tap="${this._handleReloadResources}"
>
${this.hass!.localize(
"ui.panel.lovelace.menu.reload_resources"
@@ -256,7 +249,7 @@ class HUIRoot extends LitElement {
aria-label=${this.hass!.localize(
"ui.panel.lovelace.menu.configure_ui"
)}
@request-selected=${this._handleEnableEditMode}
@tap="${this._editModeEnable}"
>
${this.hass!.localize(
"ui.panel.lovelace.menu.configure_ui"
@@ -264,19 +257,14 @@ class HUIRoot extends LitElement {
</mwc-list-item>
`
: ""}
<a
href="https://www.home-assistant.io/lovelace/"
rel="noreferrer"
target="_blank"
<mwc-list-item
aria-label=${this.hass!.localize(
"ui.panel.lovelace.menu.help"
)}
@tap="${this._handleHelp}"
>
<mwc-list-item
aria-label=${this.hass!.localize(
"ui.panel.lovelace.menu.help"
)}
>
${this.hass!.localize("ui.panel.lovelace.menu.help")}
</mwc-list-item>
</a>
${this.hass!.localize("ui.panel.lovelace.menu.help")}
</mwc-list-item>
</ha-button-menu>
</app-toolbar>
`}
@@ -486,17 +474,11 @@ class HUIRoot extends LitElement {
return this.shadowRoot!.getElementById("view") as HTMLDivElement;
}
private _handleRefresh(ev: CustomEvent<RequestSelectedDetail>): void {
if (!shouldHandleRequestSelectedEvent(ev)) {
return;
}
private _handleRefresh(): void {
fireEvent(this, "config-refresh");
}
private _handleReloadResources(ev: CustomEvent<RequestSelectedDetail>): void {
if (!shouldHandleRequestSelectedEvent(ev)) {
return;
}
private _handleReloadResources(): void {
this.hass.callService("lovelace", "reload_resources");
showConfirmationDialog(this, {
title: this.hass!.localize(
@@ -509,17 +491,7 @@ class HUIRoot extends LitElement {
});
}
private _handleRawEditor(ev: CustomEvent<RequestSelectedDetail>): void {
if (!shouldHandleRequestSelectedEvent(ev)) {
return;
}
this.lovelace!.enableFullEditMode();
}
private _handleUnusedEntities(ev: CustomEvent<RequestSelectedDetail>): void {
if (!shouldHandleRequestSelectedEvent(ev)) {
return;
}
private _handleUnusedEntities(): void {
navigate(this, `${this.route?.prefix}/hass-unused-entities`);
}
@@ -527,20 +499,17 @@ class HUIRoot extends LitElement {
showVoiceCommandDialog(this);
}
private _handleEnableEditMode(ev: CustomEvent<RequestSelectedDetail>): void {
if (!shouldHandleRequestSelectedEvent(ev)) {
return;
}
private _handleHelp(): void {
window.open("https://www.home-assistant.io/lovelace/", "_blank");
}
private _editModeEnable(): void {
if (this._yamlMode) {
showAlertDialog(this, {
text: "The edit UI is not available when in YAML mode.",
});
return;
}
this._enableEditMode();
}
private _enableEditMode(): void {
this.lovelace!.setEditMode(true);
}
@@ -645,7 +614,7 @@ class HUIRoot extends LitElement {
const viewConfig = this.config.views[viewIndex];
if (!viewConfig) {
this._enableEditMode();
this._editModeEnable();
return;
}

View File

@@ -83,14 +83,14 @@ class HaPanelShoppingList extends LocalizeMixin(PolymerElement) {
icon="hass:microphone"
on-click="_showVoiceCommandDialog"
></ha-icon-button>
<ha-button-menu corner="BOTTOM_START" on-action="_clearCompleted">
<ha-button-menu corner="BOTTOM_START">
<ha-icon-button
icon="hass:dots-vertical"
label="Menu"
slot="trigger"
>
</ha-icon-button>
<mwc-list-item>
<mwc-list-item on-click="_clearCompleted">
[[localize('ui.panel.shopping-list.clear_completed')]]
</mwc-list-item>
</ha-button-menu>

View File

@@ -34,7 +34,7 @@ documentContainer.innerHTML = `<custom-style>
--scrollbar-thumb-color: rgb(194, 194, 194);
--error-color: #db4437;
--warning-color: #FF9800;
--warning-color: #f4b400;
--success-color: #0f9d58;
--info-color: #4285f4;

View File

@@ -335,8 +335,7 @@
"automation": "Part of the following automations"
},
"data-table": {
"search": "Search",
"no-data": "No data"
"search": "Search"
}
},
"dialogs": {
@@ -1602,7 +1601,7 @@
"spinner": "Searching for ZHA Zigbee devices...",
"pairing_mode": "Make sure your devices are in pairing mode. Check the instructions of your device on how to do this.",
"discovered_text": "Devices will show up here once discovered.",
"no_devices_found": "No devices were found, make sure they are in paring mode and keep them awake while discovering is running.",
"no_devices_found": "No devices where found, make sure they are in paring mode and keep them awake while discovering is running.",
"search_again": "Search Again"
},
"network_management": {
@@ -1830,9 +1829,7 @@
"entity": "Entity",
"entity_id": "Entity ID",
"domain": "Domain",
"last_changed": "Last Changed",
"search": "Search entities",
"no_data": "No unused entities found"
"last_changed": "Last Changed"
},
"add_entities": {
"yaml_unsupported": "You cannot use this function when using Lovelace UI in YAML mode.",
@@ -1901,12 +1898,9 @@
},
"edit_card": {
"header": "Card Configuration",
"typed_header": "{type} Card Configuration",
"pick_card": "Which card would you like to add?",
"pick_card_view_title": "Which card would you like to add to your {name} view?",
"toggle_editor": "Toggle Editor",
"unsaved_changes": "You have unsaved changes",
"confirm_cancel": "Are you sure you want to cancel?",
"show_visual_editor": "Show Visual Editor",
"show_code_editor": "Show Code Editor",
"add": "Add Card",

View File

@@ -1,9 +1,4 @@
{
"config_entry": {
"disabled_by": {
"integration": "تكامل"
}
},
"groups": {
"system-admin": "مسؤولين",
"system-read-only": "مستخدمين للعرض فقط",
@@ -27,19 +22,6 @@
"auto": "تلقائي",
"off": "إيقاف",
"on": "تشغيل"
},
"hvac_action": {
"drying": "تجفيف"
}
},
"humidifier": {
"mode": {
"auto": "تلقائي",
"baby": "الطفل",
"comfort": "الراحة",
"eco": "اقتصادي",
"home": "في المنزل",
"normal": "عادي"
}
}
},
@@ -186,7 +168,7 @@
},
"configurator": {
"configure": "إعداد",
"configured": "تم التكوين"
"configured": "تم الإعداد"
},
"cover": {
"closed": "مغلق",
@@ -255,7 +237,7 @@
"on": "قيد التشغيل"
},
"scene": {
"scening": "تشهيد"
"scening": "قبد البحث"
},
"script": {
"off": "إيقاف",
@@ -317,7 +299,7 @@
"ui": {
"auth_store": {
"ask": "هل تريد حفظ هذا الدخول؟",
"confirm": "نعم",
"confirm": "حفظ الدخول",
"decline": "لا شكرا"
},
"card": {
@@ -348,15 +330,10 @@
"direction": "Richting",
"speed": "Snelheid"
},
"humidifier": {
"humidity": "الرطوبة المستهدفة",
"mode": "الوضع",
"target_humidity_entity": "{name} الرطوبة المستهدفة"
},
"light": {
"brightness": "Helderheid",
"color_temperature": "Kleurtemperatuur",
"white_value": "قيمة البياض"
"white_value": "Witwaarde"
},
"lock": {
"lock": "قفل",
@@ -374,8 +351,6 @@
"activate": "تفعيل"
},
"script": {
"cancel": "إلغاء",
"cancel_multiple": "إلغاء {number}",
"execute": "نفذ"
},
"service": {
@@ -439,14 +414,6 @@
"clear": "مسح",
"show_areas": "إظهار المناطق"
},
"data-table": {
"no-data": "لايوجد بيانات",
"search": "بحث"
},
"date-range-picker": {
"end_date": "تاريخ الإنتهاء",
"start_date": "تاريخ البدء"
},
"device-picker": {
"no_area": "لا مجال",
"toggle": "تبديل"
@@ -460,14 +427,7 @@
"loading_history": "جارٍ تحميل سجل الحالات ...",
"no_history_found": "لم يتم العثور على سجل الحالات."
},
"related-items": {
"integration": "تكامل"
},
"relative_time": {
"duration": {
"minute": "{count} {count, plural,\n one {دقيقة}\n other {دقائق}\n}"
},
"future": "قبل {time}",
"never": "Nooit"
},
"service-picker": {
@@ -476,18 +436,14 @@
},
"dialogs": {
"config_entry_system_options": {
"enable_new_entities_description": "إذا تم تعطيله ، فلن تتم إضافة الكيانات المكتشفة حديثًا لـ {integration} تلقائيًا إلى Home Assistant.",
"title": "خيارات النظام لـ {integration}",
"update": "تحديث"
},
"entity_registry": {
"editor": {
"confirm_delete": "هل أنت متأكد أنك تريد حذف هذا الإدخال؟",
"delete": "حذف",
"note": "ملاحظة: قد لا يعمل مع كافة التكاملات بعد.",
"update": "تحديث"
},
"related": "ذات صلة"
}
},
"generic": {
"cancel": "إلغاء الأمر",
@@ -509,11 +465,8 @@
"add": "إضافة"
},
"input_text": {
"max": "الحد الأقصى للطول",
"min": "الحد الأدنى للطول",
"password": "كلمة المرور"
},
"platform_not_loaded": "لم يتم تحميل تكامل {platform} . يرجى إضافته إلى التكوين الخاص بك إما عن طريق إضافة ':default_config' أو \"{platform}\"."
}
},
"more_info_control": {
"sun": {
@@ -540,20 +493,13 @@
"title": "{device} معلومات تصحيح الأخطاء",
"triggers": "محفزات"
},
"voice_command": {
"did_not_hear": "Home Assistant لم يسمع أي شيء"
},
"zha_device_info": {
"buttons": {
"add": "أضف أجهزة عبر هذا الجهاز",
"zigbee_information": "معلومات Zigbee"
},
"device_signature": "توقيع جهاز Zigbee",
"services": {
"zigbee_information": "عرض معلومات Zigbee للجهاز."
},
"zha_device_card": {
"device_name_placeholder": "تغيير اسم الجهاز"
}
}
},
@@ -564,7 +510,7 @@
},
"login-form": {
"log_in": "تسجيل الدخول",
"password": "كلمة السر",
"password": "كلمه السر",
"remember": "تذكر"
},
"notification_drawer": {
@@ -597,15 +543,10 @@
"name": "اسم",
"name_required": "الاسم مطلوب",
"unknown_error": "خطأ غير معروف"
},
"picker": {
"integrations_page": "صفحة التكاملات",
"introduction": "يتم استخدام المناطق لتنظيم أمكنة الأجهزة. سيتم استخدام هذه المعلومات في جميع أنحاء Home Assistant لمساعدتك في تنظيم الواجهة والأذونات و التكاملات مع الأنظمة الأخرى.",
"introduction2": "لوضع الأجهزة في منطقة ما، إستخدم الرابط أدناه للإنتقال إلى صفحة التكاملات ثم انقر فوق تكامل مكوّن للوصول إلى بطاقات الجهاز."
}
},
"automation": {
"caption": "الأتمتة",
"caption": "التشغيل التلقائي",
"description": "إنشاء وتحرير التشغيل الألي",
"editor": {
"actions": {
@@ -682,7 +623,7 @@
"sunset": "غروب الشمس"
},
"template": {
"label": "نموذج",
"label": "النموذج",
"value_template": "نموذج القيمة"
},
"time": {
@@ -691,7 +632,7 @@
"label": "وقت"
},
"zone": {
"entity": "كيان مع موقع",
"entity": "الجهاز في المنطقة",
"label": "المنطقة",
"zone": "المنطقة"
}
@@ -701,17 +642,6 @@
"default_name": "متحكم آلي جديد",
"enable_disable": "تمكين/تعطيل التنفيذ التلقائي",
"introduction": "استخدم المتحكمات الآلية لتجعل منزلك ينبض بالحياة",
"max": {
"queued": "طول قائمة الإنتظار"
},
"modes": {
"documentation": "وثائق الأتمتة",
"label": "وضع",
"parallel": "موازي",
"queued": "في قائمة الإنتظار",
"restart": "إعادة تشغيل",
"single": "فردي (افتراضي)"
},
"move_down": "تحرك لأسفل",
"move_up": "تحريك لأعلى",
"save": "حفظ",
@@ -723,7 +653,6 @@
"header": "المشغلات",
"introduction": "المشغلات هي ما يبدأ تشغيل قاعدة المتحكم الآلي. من الممكن تحديد مشغلات متعددة لنفس القاعدة. بمجرد بدء المشغل ، سيقوم Home Assistant بالتحقق من الشروط ، إن وجدت ، واستدعاء الإجراء. \n\n [مزيد من المعلومات حول المشغلات.] (https://home-assistant.io/docs/automation/trigger/)",
"learn_more": "معرفة المزيد عن المشغلات",
"name": "المشغل",
"type_select": "نوع المشغل",
"type": {
"device": {
@@ -803,25 +732,13 @@
}
},
"cloud": {
"account": {
"integrations": "تكاملات",
"integrations_introduction2": "تحقق من الموقع ل",
"integrations_link_all_features": " جميع الميزات المتوفرة"
},
"caption": "سحابة Home Assistant",
"caption": "كلاود هوم اسيستينت",
"description_login": "تم تسجيل الدخول كـ {email}",
"description_not_login": "لم يتم تسجيل الدخول",
"dialog_cloudhook": {
"info_disable_webhook": "إذا كنت لم تعد ترغب في استخدام هذا الwebhook ، يمكنك"
},
"register": {
"feature_amazon_alexa": "التكامل مع Amazon Alexa",
"feature_google_home": "التكامل مع Google Assistant"
}
"description_not_login": "لم يتم تسجيل الدخول"
},
"core": {
"caption": "عام",
"description": "قم بتغيير التكوينات العامة لـ Home Assistant",
"description": "التحقق من صحة ملف الإعدادات والتحكم بالخادم",
"section": {
"core": {
"core_config": {
@@ -837,22 +754,18 @@
"caption": "التخصيص",
"description": "تخصيص الكيانات الخاصة بك",
"picker": {
"entity": "الكيان",
"introduction": "تعديل السمات لكل كيان. سيتم تفعيل التخصيصات المضافة / المعدلة على الفور. ستسري التخصيصات التي تمت إزالتها عندما يتم تحديث الكيان."
"entity": "الكيان"
}
},
"devices": {
"cant_edit": "يمكنك فقط تحرير العناصر التي تم إنشاؤها في واجهة المستخدم.",
"confirm_delete": "هل أنت متأكد أنك تريد حذف هذا الجهاز؟",
"data_table": {
"integration": "تكامل",
"no_area": "لا مجال",
"no_devices": "لا توجد أجهزة"
},
"delete": "حذف",
"device_info": "معلومات الجهاز",
"entities": {
"add_entities_lovelace": "أضف إلى Lovelace",
"disabled_entities": "{count} {count, plural,\n one {كيان}\n other {كيانات}\n}",
"hide_disabled": "إخفاء معطل"
},
@@ -860,14 +773,10 @@
},
"entities": {
"picker": {
"headers": {
"integration": "تكامل"
},
"remove_selected": {
"confirm_partly_text": "يمكنك فقط إزالة {removable} من الكيانات {selected} . لا يمكن إزالة الكيانات إلا عندما يتوقف التكامل عن توفير الكيانات. في بعض الأحيان ، يتعين عليك إعادة تشغيل Home Assistant قبل أن تتمكن من إزالة كيانات التكامل الذي تمت إزالته. هل أنت متأكد من أنك تريد إزالة الكيانات القابلة للإزالة؟",
"confirm_partly_title": "يمكن فقط إزالة {number} الكيانات المحددة."
},
"search": "إبحث عن الكيانات",
"status": {
"restored": "مستعاد"
}
@@ -877,7 +786,7 @@
"clear": "محو",
"filtering_by": "التصفية حسب"
},
"header": "تكوين Home Assistant",
"header": "برمجة نظام مساعد البيت",
"helpers": {
"dialog": {
"create": "إضافة"
@@ -891,7 +800,6 @@
}
},
"types": {
"input_boolean": "تبديل",
"input_number": "رقم",
"input_select": "القائمه المنسدله",
"input_text": "النص"
@@ -901,85 +809,54 @@
"caption": "معلومات",
"description": "معلومات حول تثبيت Home Assistant",
"documentation": "الوثائق",
"home_assistant_logo": "شعار Home Assistant",
"integrations": "تكاملات",
"issues": "الاعطال"
},
"integration_panel_move": {
"link_integration_page": "صفحة التكاملات",
"missing_zha": "هل فقدت لوحة تكوين ZHA؟ تم نقله إلى إدخال ZHA على {integrations_page} ."
},
"integrations": {
"add_integration": "أضف تكامل",
"caption": "التكاملات",
"add_integration": "أضف integration",
"caption": "تكاملات",
"config_entry": {
"area": "في {area}",
"delete": "حذف",
"delete_button": "حذف {integration}",
"delete_confirm": "هل تريد حقا حذف هذا التكامل؟",
"device_unavailable": "الجهاز غير متوفر",
"devices": "{count} {count, plural,\n one {جهاز}\n other {أجهزة}\n}",
"documentation": "الوثائق",
"entities": "{count} {count, plural,\n one {كيان}\n other {كيانات}\n}",
"entity_unavailable": "الكيان غير متوفر",
"entity_unavailable": "العنصر غير متوفر",
"firmware": "نظام التشغيل {version}",
"hub": "متصل عبر",
"manuf": "بواسطة {manufacturer}",
"no_area": "لا توجد منطقة",
"no_device": "كيانات بدون أجهزة",
"no_device": "عناصر بدون أجهزة",
"no_devices": "هذا التكامل لا يوجد لديه الأجهزة.",
"options": "خيارات",
"rename": "إعادة تسمية",
"restart_confirm": "أعد تشغيل Home Assistant لإنهاء حذف هذا التكامل",
"settings_button": "تحرير الإعدادات لـ {integration}",
"restart_confirm": "اعادة تشغيل هوم اسيستينت لإنهاء حذف هذه التكامل",
"system_options": "خيارات النظام",
"system_options_button": "خيارات النظام لـ {integration}",
"unnamed_entry": "إدخال بدون اسم"
},
"config_flow": {
"aborted": "تم الإلغاء",
"close": "إغلاق",
"created_config": "تم إنشاء تكوين لـ {name}.",
"error_saving_area": "خطأ في حفظ المنطقة: {error}",
"external_step": {
"description": "تتطلب هذه الخطوة زيارة موقع خارجي للإكمال.",
"open_site": "افتح الموقع"
},
"finish": "إنهاء",
"loading_first_time": "يرجى الانتظار بينما يتم تثبيت الـintegration",
"not_all_required_fields": "لم يتم تعبئة جميع الحقول المطلوبة."
"loading_first_time": "يرجى الانتظار بينما يتم تثبيت الـintegration"
},
"configure": "إعداد",
"configured": "تم التكوين",
"description": عداد وإدارة التكاملات",
"details": "تفاصيل التكامل",
"configured": "تم الإعداد",
"description": "إدارة الأجهزة والخدمات المتصلة",
"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": "أظهر التكاملات المتجاهلة",
"ignored": "تجاهل",
"show_ignored": "أظهر الدمج المتجاهل",
"stop_ignore": "توقف عن التجاهل"
},
"integration": "تكامل",
"integration_not_found": "لم يتم العثور على التكامل.",
"integration": "integration",
"new": "إعداد تكامل جديد",
"no_integrations": "يبدو أنه لم يتم تكوين أي تكاملات بعد. انقر على الزر أدناه لإضافة تكاملك الأول!",
"none": "لم يتم تكوين أي شيء حتى الآن",
"none_found": "لم يتم العثور على تكاملات",
"none_found_detail": "إضبط معايير بحثك.",
"note_about_integrations": "لا يمكن تكوين جميع التكاملات عبر واجهة المستخدم حتى الآن.",
"note_about_website_reference": "يتوفر المزيد على ",
"rename_dialog": "تحرير إسم إدخال هذا التكوين",
"rename_input_label": "الاسم",
"search": "إبحث عن التكاملات"
"no_integrations": "يبدوأن ليس هناك أي integations بعد. انقر على الزر أدناه لإضافة واحدة!",
"none": "لم يتم الإعداد بعد",
"none_found": "لم يتم العثور على عمليات تكامل",
"none_found_detail": "اضبط معايير البحث.",
"rename_dialog": "تعديل الاسم",
"rename_input_label": "الاسم"
},
"introduction": "يمكنك هنا برمجة المكونات الخاصة بك و إعداد نظام Home Assistant. ليس كل شيء متاح للبرمجة من خلال واجهة المستخدم حتى الآن، ولكننا نعمل على ذلك.",
"introduction": "يمكنك هنا برمجة المكونات الخاصة بك و إعداد نظام مساعد البيت. ليس كل شيء متاح للبرمجة من خلال واجهة المستخدم حتى الآن، ولكننا نعمل على ذلك.",
"logs": {
"caption": "السجلات",
"description": "عرض سجلات Home Assistant"
@@ -1044,26 +921,14 @@
}
},
"mqtt": {
"button": "كوِن",
"title": "MQTT"
},
"person": {
"caption": "الأشخاص",
"description": "إدارة الأشخاص الذين يتتبعهم Home Assistant.",
"detail": {
"device_tracker_pick": "اختر جهاز لتتبع",
"link_integrations_page": "صفحة التكاملات",
"link_presence_detection_integrations": "تكاملات الكشف عن التواجد",
"name_error_msg": "الاسم مطلوب",
"no_device_tracker_available_intro": "عندما يكون لديك أجهزة تشير إلى تواجد شخص ، ستتمكن من تعيينها إلى شخص هنا. يمكنك إضافة جهازك الأول عن طريق إضافة تكامل كشف التواجد من صفحة التكاملات."
},
"no_persons_created_yet": "يبدو أنك لم تقم بإنشاء أي شخص حتى الآن.",
"note_about_persons_configured_in_yaml": "ملاحظة: لا يمكن تعديل الأشخاص الذين تم تكوينهم عبر config.yaml عبر واجهة المستخدم."
"device_tracker_pick": "اختر جهاز لتتبع"
}
},
"scene": {
"editor": {
"icon": "أيقونة"
},
"picker": {
"headers": {
"name": "الاسم"
@@ -1074,20 +939,7 @@
"caption": "السكريبت",
"description": "إنشاء و تحرير السكريبت",
"editor": {
"alias": "الاسم",
"icon": "أيقونة",
"id": "معرف الكيان",
"id_already_exists": "هذا المعرف موجود بالفعل",
"max": {
"queued": "طول قائمة الإنتظار"
},
"modes": {
"label": "وضع",
"parallel": "موازي",
"queued": "في قائمة الإنتظار",
"restart": "إعادة تشغيل",
"single": "فردي (إفتراضي)"
}
"alias": "الاسم"
},
"picker": {
"headers": {
@@ -1099,22 +951,11 @@
"server_control": {
"section": {
"reloading": {
"automation": "إعادة تحميل الأتمتة",
"core": "إعادة تحميل الموقع والتخصيصات",
"input_boolean": "إعادة تحميل مدخلات منطقية",
"input_datetime": "إعادة تحميل أوقات تاريخ الإدخال",
"input_number": "إعادة تحميل أرقام الإدخال",
"input_select": "إعادة تحميل تحديدات الإدخال",
"input_text": "إعادة تحميل النصوص المدخلة",
"person": "إعادة تحميل الأشخاص",
"zone": "إعادة تحميل المناطق"
},
"server_management": {
"confirm_restart": "هل تريد بالتأكيد اعادة تشغيل Home Assistant؟",
"confirm_stop": "هل تريد بالتأكيد إيقاف Home Assistant؟"
},
"validation": {
"introduction": "تحقق من صلاحية التكوين الخاص بك إذا قمت مؤخرًا بإجراء بعض التغييرات وتريد التأكد من صلاحية جميعها"
"input_text": "إعادة تحميل النصوص المدخلة"
}
}
},
@@ -1148,52 +989,29 @@
},
"users_privileges_note": "مجموعة المستخدمين هي عمل قيد التقدم. لن يتمكن المستخدم من إدارة المثيل عبر واجهة المستخدم. ما زلنا نقوم بتدقيق جميع نقاط نهاية واجهة برمجة تطبيقات الإدارة للتأكد من أنها تحد من الوصول إلى المسؤولين بشكل صحيح."
},
"zha": {
"add_device_page": {
"discovered_text": "ستظهر الأجهزة هنا عند إكتشافها."
},
"button": "كوِن",
"groups": {
"zha_zigbee_groups": "مجموعات ZHA Zigbee"
},
"network": {
"caption": "الشبكة"
},
"node_management": {
"header": "إدارة الجهاز"
}
},
"zone": {
"add_zone": "إضافة المنطقة",
"caption": "المناطق",
"configured_in_yaml": "لا يمكن تحرير المناطق التي تم تكوينها بواسطة configuration.yaml عبر واجهة المستخدم.",
"description": "إدارة المناطق التي تريد تتبع الأشخاص فيها.",
"detail": {
"create": "إضافة",
"delete": "حذف",
"icon": "أيقونة",
"name": "الاسم",
"new_zone": "منطقة جديدة",
"required_error_msg": "هذا الحقل مطلوب",
"required_error_msg": "العنوان مطلوب.",
"update": "تحديث"
},
"introduction": "تسمح لك المناطق بتحديد مناطق معينة على وجه الأرض. عندما يكون الشخص داخل منطقة ما ، ستأخذ الحالة الاسم من المنطقة. يمكن أيضًا استخدام المناطق كمشغل أو حالة داخل إعدادات الأتمتة."
}
},
"zwave": {
"button": "كوِن",
"caption": "Z-Wave",
"description": "إدارة شبكة Z-Wave",
"node_config": {
"seconds": "ثواني",
"set_config_parameter": "تعيين معلمة التكوين"
},
"node_management": {
"add_to_group": "إضافة إلى المجموعة",
"entities": "كيانات هذه العقدة",
"entity_info": "معلومات الكيان",
"exclude_entity": "استبعد هذا الكيان من Home Assistant",
"exclude_entity": "تحكم بسيرفر Home Assistant ... من Home Assistant.",
"group": "مجموعة",
"header": "إدارة عقد Z-Wave",
"header": "إدارة العقدة Z-Wave",
"introduction": "قم بتشغيل أوامر Z-Wave التي تؤثر على عقدة واحدة. اختر عقدة لترى قائمة بالأوامر المتاحة.",
"max_associations": "اعلى رقم للجمعيات:",
"node_group_associations": "ارتباطات مجموعة العقدة",
@@ -1221,9 +1039,6 @@
"refresh_node": "تحديث العقدة",
"remove_failed_node": "إزالة العقدة الفاشلة",
"replace_failed_node": "استبدال العقدة الفاشلة",
"start_network": "بدء تشغيل الشبكة",
"stop_network": "إيقاف الشبكة",
"test_network": "اختبار الشبكة",
"test_node": "اختبار عقدة"
}
}
@@ -1237,7 +1052,6 @@
"title": "الخدمات"
},
"states": {
"description2": "لن يتواصل هذا مع الجهاز الفعلي.",
"title": "الحالات"
},
"templates": {
@@ -1247,35 +1061,16 @@
},
"history": {
"period": "المدة",
"ranges": {
"last_week": "الأسبوع الماضي",
"this_week": "هذا الأسبوع",
"today": "اليوم",
"yesterday": "أمس"
},
"showing_entries": "عرض الأحداث لـ"
},
"logbook": {
"ranges": {
"last_week": "الأسبوع الماضي",
"this_week": "هذا الأسبوع",
"today": "اليوم",
"yesterday": "أمس"
},
"showing_entries": "عرض الأحداث لـ"
},
"lovelace": {
"cards": {
"empty_state": {
"go_to_integrations_page": "انتقل إلى صفحة التكاملات.",
"no_devices": "تسمح لك هذه الصفحة بالتحكم في أجهزتك ، ولكن يبدو أنك لم تعد أي أجهزة حتى الآن. توجه إلى صفحة التكاملات للبدء."
},
"safe-mode": {
"description": "واجه Home Assistant مشكلة أثناء تحميل التكوينات الخاصة بك ويتم تشغيله الآن في الوضع الآمن. أنظر إلى سجل الأخطاء لمعرفة الخطأ."
},
"starting": {
"description": "Home Assistant يبدأ، يرجى الانتظار...",
"header": "Home Assistant يبدأ..."
"header": "يبدأ مساعد المنزل ..."
}
},
"editor": {
@@ -1312,14 +1107,11 @@
},
"generic": {
"attribute": "السمه",
"camera_view": "عرض الكاميرا",
"double_tap_action": "تأثير النقر المزدوج",
"manual": "يدويا",
"manual_description": "هل تريد إضافة بطاقة مخصصة أو ترغب فقط في كتابة yaml يدويًا؟",
"no_theme": "لا توجد تصاميم متاحة",
"search": "بحث",
"secondary_info_attribute": "سمة المعلومات الثانوية",
"show_name": "أظهر الاسم؟",
"state": "الحالة"
},
"glance": {
@@ -1331,10 +1123,6 @@
"horizontal-stack": {
"description": "تتيح لك بطاقة التكديس الأفقي تجميع عدة بطاقات معًا ، بحيث تكون دائمًا بجانب بعضها البعض في مساحة عمود واحد."
},
"humidifier": {
"description": "تتيح بطاقة المرطب التحكم في كيان المرطب. يسمح لك بتغيير الرطوبة ووضع الكيان.",
"name": "المرطب"
},
"iframe": {
"description": "تسمح لك بطاقة صفحة الويب بتضمين صفحة ويب مباشرةً في Home Assistant."
},
@@ -1388,20 +1176,12 @@
"no_description": "لا يوجد وصف متاح."
},
"edit_card": {
"confirm_cancel": "هل أنت متأكد من الإلغاء؟",
"delete": "حذف",
"duplicate": "بطاقة مكررة",
"edit": "تصحيح",
"move": "نقل",
"options": "المزيد من الخيارات",
"typed_header": "{type} تكوين البطاقة",
"unsaved_changes": "لديك تغييرات غير محفوظة"
},
"edit_lovelace": {
"title": "عنوان"
"move": "نقل"
},
"edit_view": {
"header_name": "{name} عرض التكوين",
"tab_visibility": "الرؤية",
"visibility": {
"select_users": "تحديد المستخدمين الذين يجب أن يروا طريقة العرض هذه في التنقل"
@@ -1417,7 +1197,6 @@
"cancel": "لا يهم",
"close": "إغلاق",
"empty_config": "ابدأ بلوحة معلومات فارغة",
"para_sure": "هل أنت متأكد أنك تريد التحكم في واجهة المستخدم الخاصة بك؟",
"yaml_mode": "أنت تستخدم وضع YAML للوحة البيانات هذه ، مما يعني أنه لا يمكنك تغيير تكوين Lovelace من واجهة المستخدم. إذا كنت تريد إدارة لوحة التحكم هذه من واجهة المستخدم ، فقم بإزالة \"الوضع: yaml\" من تكوين Lovelace في \"config.yaml.\"."
},
"view": {
@@ -1429,15 +1208,10 @@
"menu": {
"reload_resources": "إعادة تحميل الموارد"
},
"reload_lovelace": "إعادة تحميل واجهة المستخدم",
"reload_resources": {
"refresh_body": "يجب عليك تحديث الصفحة لإكمال إعادة التحميل ، هل تريد التحديث الآن؟",
"refresh_header": "هل تريد التحديث؟"
},
"unused_entities": {
"no_data": "لم يعثر على كيانات غير مستخدمة",
"search": "إبحث عن الكيانات"
},
"views": {
"confirm_delete_existing_cards": "سيؤدي حذف هذا العرض إلى إزالة البطاقات أيضًا",
"confirm_delete_existing_cards_text": "هل أنت متأكد من أنك تريد حذف طريقة عرض ''{name}''؟ تحتوي طريقة العرض على {number} بطاقات سيتم حذفها. لا يمكن التراجع عن هذا الإجراء.",
@@ -1447,7 +1221,7 @@
"attribute_not_found": "السمة {attribute} غير متاحة في: {entity}",
"entity_not_found": "الجهاز غير متوفر: {entity}",
"entity_unavailable": "العنصر غير متوفر",
"starting": "Home Assistant يبدأ، قد لا يكون كل شيء متاح حتى الآن"
"starting": "يبدأ مساعد المنزل ، قد لا يكون كل شيء متاح حتى الآن"
}
},
"mailbox": {
@@ -1471,16 +1245,6 @@
}
}
}
},
"trusted_networks": {
"abort": {
"not_allowed": "كمبيوترك غير مسموح به."
},
"step": {
"init": {
"description": "يرجى تحديد المستخدم الذي تريد تسجيل الدخول باسمه:"
}
}
}
},
"start_over": "البدء من جديد",
@@ -1488,22 +1252,7 @@
},
"initializing": "جار التهيئة"
},
"page-demo": {
"config": {
"arsaboo": {
"labels": {
"air": "هواء"
}
}
}
},
"page-onboarding": {
"integration": {
"finish": "إنهاء",
"intro": "يتم تمثيل الأجهزة والخدمات في Home Assistant كتكاملات. يمكنك إعدادها الآن ، أو القيام بذلك لاحقًا من شاشة التكوين.",
"more_integrations": "المزيد"
},
"intro": "هل أنت مستعد لإيقاظ منزلك واستعادة خصوصيتك والانضمام إلى مجتمع عالمي من اللاعبين؟",
"user": {
"data": {
"password": "كلمه السر",
@@ -1538,7 +1287,7 @@
"language": {
"dropdown_label": "اللغة",
"header": "اللغة",
"link_promo": "ساعد في الترجمة"
"link_promo": "المساعدة في ترجمة"
},
"long_lived_access_tokens": {
"last_used": "آخر استخدام بتاريخ {date} من {location}",
@@ -1568,10 +1317,6 @@
"last_used": "آخر استخدام بتاريخ {date} من {location}",
"not_used": "لم يتم استخدامها ابدأ"
},
"suspend": {
"description": "هل يغلق الاتصال بالخادم بعد إخفاؤه لمدة 5 دقائق؟",
"header": "إغلق الاتصال تلقائيًا"
},
"themes": {
"dropdown_label": "التصميم",
"error_no_theme": "لا توجد تصاميم متاحة.",

View File

@@ -1159,7 +1159,6 @@
},
"edit_card": {
"add": "Добавяне на карта",
"confirm_cancel": "Сигурни ли сте, че искате да отмените?",
"delete": "Изтриване на карта",
"edit": "Редактиране",
"header": "Конфигуриране на Карта",

View File

@@ -430,8 +430,6 @@
"activate": "Activar"
},
"script": {
"cancel": "Cancel·la",
"cancel_multiple": "Cancel·la {number}",
"execute": "Executar"
},
"service": {
@@ -528,7 +526,6 @@
"show_areas": "Mostra àrees"
},
"data-table": {
"no-data": "No hi ha dades",
"search": "Cerca"
},
"date-range-picker": {
@@ -952,10 +949,10 @@
"description": "El mode controla què passa quan es dispara l'automatització i encara hi ha accions executant-se d'un disparament anterior. Consulta {documentation_link} per a més informació.",
"documentation": "documentació d'automatització",
"label": "Mode",
"parallel": "Paral·lel",
"parallel": "Paral·lel (per defecte)",
"queued": "A la cua",
"restart": "Reinicia",
"single": "Individual (per defecte)"
"single": "Individual"
},
"move_down": "Mou avall",
"move_up": "Mou amunt",
@@ -1665,7 +1662,6 @@
"introduction": "Les entitats que no pertanyen a un dispositiu es poden configurar aquí.",
"without_device": "Entitats sense dispositiu"
},
"icon": "Icona",
"introduction": "Utilitza les escenes per donar més vida a la teva llar.",
"load_error_not_editable": "Només es poden editar les escenes de l'arxiu scenes.yaml.",
"load_error_unknown": "Error en carregar l'escena ({err_no}).",
@@ -1699,10 +1695,6 @@
"delete_confirm": "Estàs segur que vols eliminar aquest script?",
"delete_script": "Elimina l'script",
"header": "Script: {name}",
"icon": "Icona",
"id": "ID de l'entitat",
"id_already_exists": "Aquest ID ja existeix",
"id_already_exists_save_error": "No pots desar aquest script perquè l'ID no és únic, tria'n un altre o deixa-ho en blanc perquè se'n generi un automàticament.",
"introduction": "Utilitza els scripts per executar seqüències d'accions.",
"link_available_actions": "Més informació sobre les accions disponibles.",
"load_error_not_editable": "Només es poden editar els scripts dins de l'arxiu scripts.yaml.",
@@ -1816,7 +1808,7 @@
"discovered_text": "Els dispositius apareixeran aquí un cop descoberts.",
"discovery_text": "Els dispositius descoberts apareixeran aquí. Segueix les instruccions del/s teu/s dispositiu/s i posa el dispositiu/s en mode d'emparellament.",
"header": "Domòtica amb Zigbee - Afegir dispositius",
"no_devices_found": "No s'han trobat dispositius, assegura't que estiguin en mode vinculació i manten-los desperts mentre s'estiguin descoberint.",
"no_devices_found": "No s'han trobat dispositius, assegura't que estiguin en mode vinculació i manten-los desperts mentre estiguin intentant ser descoberts.",
"pairing_mode": "Assegura't que els dispositiu estiguin en mode vinculació. Consulta les instruccions del dispositiu per saber com fer-ho.",
"search_again": "Torna a cercar",
"spinner": "S'estan cercant dispositius ZHA Zigbee..."
@@ -2340,7 +2332,6 @@
},
"edit_card": {
"add": "Afegir targeta",
"confirm_cancel": "Segur que vols cancel·lar?",
"delete": "Elimina targeta",
"duplicate": "Duplica targeta",
"edit": "Editar",
@@ -2351,9 +2342,7 @@
"pick_card_view_title": "Quina targeta vols afegir a la visualització {name}?",
"show_code_editor": "Mostra l'editor de codi",
"show_visual_editor": "Mostra l'editor visual",
"toggle_editor": "Commutar l'editor",
"typed_header": "Configuració de la targeta {type}",
"unsaved_changes": "Hi ha canvis no desats"
"toggle_editor": "Commutar l'editor"
},
"edit_lovelace": {
"edit_title": "Edita el títol",
@@ -2446,8 +2435,6 @@
"entity": "Entitat",
"entity_id": "ID de l'entitat",
"last_changed": "Últim canvi",
"no_data": "No s'han trobat entitats sense utilitzar",
"search": "Cerca entitats",
"select_to_add": "Selecciona les entitats que vols afegir a una targeta i fés clic al botó d'afegir targeta.",
"title": "Entitats sense utilitzar"
},

View File

@@ -528,7 +528,6 @@
"show_areas": "Zobrazit oblasti"
},
"data-table": {
"no-data": "Žádná data",
"search": "Hledat"
},
"date-range-picker": {
@@ -952,10 +951,10 @@
"description": "Režim určuje, co se stane, když je automatizace spuštěna a zároveň stále ještě běží akce na základě předchozího spuštění. Další informace naleznete na {documentation_link}.",
"documentation": "Dokumentace automatizací",
"label": "Režim",
"parallel": "Paralelně",
"parallel": "Paralelní (výchozí)",
"queued": "Fronta",
"restart": "Restart",
"single": "Jediný (výchozí)"
"single": "Jediný"
},
"move_down": "Posunout dolů",
"move_up": "Posunout nahoru",
@@ -1410,10 +1409,10 @@
"no_helpers": "Vypadá to, že ještě nemáte žádné pomocníky!"
},
"types": {
"input_boolean": "Přepínač",
"input_boolean": "Přepnout",
"input_datetime": "Datum a/nebo čas",
"input_number": "Číslo",
"input_select": "Výběr",
"input_select": "Rozbalovací nabídka",
"input_text": "Text"
}
},
@@ -1714,7 +1713,7 @@
"description": "Režim určuje, co se stane, když je skript spuštěn a zároveň stále ještě běží na základě předchozího spuštění. Další informace naleznete na {documentation_link}.",
"documentation": "Dokumentace skriptů",
"label": "Režim",
"parallel": "Paralelně",
"parallel": "Paralelní (výchozí)",
"queued": "Fronta",
"restart": "Restart",
"single": "Jediný (výchozí)"
@@ -1731,7 +1730,7 @@
},
"introduction": "Editor skriptů umožňuje vytvářet a upravovat skripty. Postupujte podle níže uvedeného odkazu a přečtěte si pokyny, abyste se ujistili, že jste Home Assistant nakonfigurovali správně.",
"learn_more": "Další informace o skriptech",
"no_scripts": "Nemohli jsme najít žádné upravitelné skripty",
"no_scripts": "Nemohli jsme najít žádné editovatelné skripty",
"show_info": "Zobrazit informace o skriptu",
"trigger_script": "Spustit skript"
}
@@ -1745,11 +1744,11 @@
"core": "Znovu načíst umístění a přizpůsobení",
"group": "Znovu načíst skupiny",
"heading": "Konfigurace se načítá",
"input_boolean": "Znovu načíst pomocníky - čísla",
"input_datetime": "Znovu načíst pomocníky - data/časy",
"input_number": "Znovu načíst pomocníky - přepínače",
"input_select": "Znovu načíst pomocníky - výběry",
"input_text": "Znovu načíst pomocníky - texty",
"input_boolean": "Znovu načíst logické hodnoty",
"input_datetime": "Znovu načíst časy",
"input_number": "Znovu načíst vstupní čísla",
"input_select": "Znovu načíst výběr",
"input_text": "Znovu načíst text",
"introduction": "Některé části Home Assistant lze načíst bez nutnosti restartování. Volba načtení zahodí jejich aktuální konfiguraci a načte novou.",
"person": "Znovu načíst osoby",
"scene": "Znovu načíst scény",
@@ -1939,9 +1938,9 @@
"update": "Aktualizovat"
},
"edit_home_zone": "Poloměr domovské zóny zatím nelze upravit z frontendu. Z frontendu se dá změnit jen poloha domovské zóny.",
"edit_home_zone_narrow": "Poloměr domovské zóny zatím nelze upravit z rozhraní. Umístění lze změnit z obecné konfigurace.",
"edit_home_zone_narrow": "Poloměr domovské zóny zatím nelze upravit z frontendu. Umístění lze změnit z obecné konfigurace.",
"go_to_core_config": "Přejít na obecnou konfiguraci?",
"home_zone_core_config": "Umístění vaší domovské zóny lze upravit na stránce obecné konfigurace. Poloměr domovské zóny zatím nelze upravit z rozhraní. Chcete přejít na obecnou konfiguraci?",
"home_zone_core_config": "Umístění vaší domovské zóny lze upravit na stránce obecné konfigurace. Poloměr domovské zóny zatím nelze upravit z frontendu. Chcete přejít na obecnou konfiguraci?",
"introduction": "Zóny umožňují určit určité oblasti na zemi. Když je osoba v zóně, stav převezme název ze zóny. Zóny lze také použít jako aktivační událost nebo podmínku v nastavení automatizace.",
"no_zones_created_yet": "Vypadá to, že nejsou vytvořené žádné zóny."
},
@@ -2340,7 +2339,6 @@
},
"edit_card": {
"add": "Přidat kartu",
"confirm_cancel": "Opravdu chcete zahodit změny?",
"delete": "Odstranit",
"duplicate": "Duplikovat Kartu",
"edit": "Upravit",
@@ -2351,9 +2349,7 @@
"pick_card_view_title": "Kterou kartu byste chtěli přidat do svého {name} pohledu?",
"show_code_editor": "Zobrazit editor kódu",
"show_visual_editor": "Zobrazit vizuální editor",
"toggle_editor": "Přepnout Editor",
"typed_header": "{type} Konfigurace karty",
"unsaved_changes": "Změny nejsou uloženy"
"toggle_editor": "Přepnout Editor"
},
"edit_lovelace": {
"edit_title": "Upravit titulek",
@@ -2408,7 +2404,7 @@
"empty_config": "Začít s prázdným dashboardem",
"header": "Převzít kontrolu nad vaší Lovelace UI",
"para": "Ve výchozím nastavení bude Home Assistant spravovat vaše uživatelské rozhraní aktualizovat jej při přidání nové entity nebo Lovelace komponenty. Pokud převezmete kontrolu, nebudeme již provádět změny automaticky za vás.",
"para_sure": "Opravdu chcete převzít kontrolu nad uživalským rozhraním ?",
"para_sure": "Opravdu chcete převzít kontrolu nad uživalským rohraním ?",
"save": "Převzít kontrolu",
"yaml_config": "Abyste mohli snadněji začít, zde aktuální konfigurace tohoto dashboardu:",
"yaml_control": "Chcete-li převzít kontrolu v režimu YAML, vytvořte soubor YAML s názvem, který jste uvedli ve své konfiguraci pro tento dashboard nebo výchozí 'ui-lovelace.yaml'.",
@@ -2446,8 +2442,6 @@
"entity": "Entita",
"entity_id": "ID entity",
"last_changed": "Naposledy změněno",
"no_data": "Nebyly nalezeny žádné nepoužívané entity",
"search": "Hledat entitu",
"select_to_add": "Vyberte entity, které chcete přidat do karty, a poté klikněte na tlačítko přidat kartu.",
"title": "Nepoužité entity"
},

View File

@@ -77,7 +77,7 @@
"triggered": "Ausgel."
},
"default": {
"entity_not_found": "Entität nicht gefunden",
"entity_not_found": "Entität nicht gefunden!",
"error": "Fehler",
"unavailable": "N.v.",
"unknown": "Unbek."
@@ -430,8 +430,6 @@
"activate": "Aktivieren"
},
"script": {
"cancel": "Abbrechen",
"cancel_multiple": "Abbrechen {number}",
"execute": "Ausführen"
},
"service": {
@@ -528,7 +526,6 @@
"show_areas": "Bereiche anzeigen"
},
"data-table": {
"no-data": "Keine Daten",
"search": "Suche"
},
"date-range-picker": {
@@ -740,7 +737,7 @@
"power_source": "Energiequelle",
"quirk": "Eigenart",
"services": {
"reconfigure": "Konfiguriere das ZHA-Gerät neu (Gerät heilen). Verwende diese Option, wenn du Probleme mit dem Gerät hast. Wenn es sich bei dem fraglichen Gerät um ein batteriebetriebenes Gerät handelt, vergewissere dich, dass es wach ist und Befehle akzeptiert, wenn du diesen Dienst nutzt.",
"reconfigure": "Konfigurieren Sie das ZHA-Gerät neu (Gerät heilen). Verwenden Sie diese Option, wenn Sie Probleme mit dem Gerät haben. Wenn es sich bei dem fraglichen Gerät um ein batteriebetriebenes Gerät handelt, vergewissern Sie sich, dass es wach ist und Befehle akzeptiert, wenn Sie diesen Dienst nutzen.",
"remove": "Ein Gerät aus dem ZigBee-Netzwerk entfernen.",
"updateDeviceName": "Lege einen benutzerdefinierten Namen für dieses Gerät in der Geräteregistrierung fest.",
"zigbee_information": "Zeige die ZigBee-Informationen für das Gerät an."
@@ -766,7 +763,7 @@
"remember": "Merken"
},
"notification_drawer": {
"click_to_configure": "Klicke auf die Schaltfläche, um {entity} zu konfigurieren",
"click_to_configure": "Klicke auf die Schaltfläche, um {entity} zu konfigurieren.",
"close": "Schließen",
"empty": "Keine Benachrichtigungen",
"title": "Benachrichtigungen"
@@ -775,7 +772,7 @@
"connection_lost": "Verbindung getrennt. Verbinde erneut...",
"service_call_failed": "Fehler beim Aufrufen des Service {service}.",
"started": "Home Assistant wurde vollständig gestartet!",
"starting": "Home Assistant startet, währenddessen kann es sein, dass nicht alles verfügbar ist.",
"starting": "Home Assistant startet, währenddessen kann es sein das nicht alles verfügbar ist.",
"triggered": "{name} ausgelöst"
},
"panel": {
@@ -814,7 +811,7 @@
"header": "Bereiche",
"integrations_page": "Integrationsseite",
"introduction": "In Bereichen wird festgelegt, wo sich Geräte befinden. Diese Informationen werden in Home Assistant verwendet, um Sie bei der Organisation Ihrer Benutzeroberfläche, Berechtigungen und Integrationen mit anderen Systemen zu unterstützen.",
"introduction2": "Um Geräte in einem Bereich zu platzieren, navigiere mit dem Link unten zur Integrationsseite und klicke dann auf eine konfigurierte Integration, um zu den Gerätekarten zu gelangen.",
"introduction2": "Um Geräte in einem Bereich zu platzieren, navigieren Sie mit dem Link unten zur Integrationsseite und klicken Sie dann auf eine konfigurierte Integration, um zu den Gerätekarten zu gelangen.",
"no_areas": "Sieht aus, als hätten Sie noch keine Bereiche!"
}
},
@@ -944,19 +941,6 @@
"introduction": "Benutze Automatisierungen, um deinem Zuhause Leben einzuhauchen",
"load_error_not_editable": "Nur Automatisierungen in automations.yaml sind editierbar.",
"load_error_unknown": "Fehler beim Laden der Automatisierung ({err_no}).",
"max": {
"parallel": "Maximale Anzahl paralleler Läufe",
"queued": "Länge der Warteschlange"
},
"modes": {
"description": "Der Modus steuert, was passiert, wenn ein Skript aufgerufen wird, während es noch von einem oder mehreren vorherigen Aufrufen ausgeführt wird. Überprüfen Sie den {documentation_link} für weitere Informationen.",
"documentation": "Automatisierungs-Dokumentation",
"label": "Modus",
"parallel": "Parallel",
"queued": "In Warteschlange",
"restart": "Neu starten",
"single": "Einzeln (Standard)"
},
"move_down": "Runterschieben",
"move_up": "Hochschieben",
"save": "Speichern",
@@ -1158,7 +1142,7 @@
"dialog_cloudhook": {
"available_at": "Der Webhook ist unter der folgenden URL verfügbar:",
"close": "Schließen",
"confirm_disable": "Möchtest du diesen Webhook wirklich deaktivieren?",
"confirm_disable": "Möchten Sie diesen Webhook wirklich deaktivieren?",
"copied_to_clipboard": "In die Zwischenablage kopiert",
"info_disable_webhook": "Wenn du diesen Webhook nicht mehr nutzen willst, kannst du",
"link_disable_webhook": "deaktiviere es",
@@ -1407,7 +1391,7 @@
"name": "Name",
"type": "Typ"
},
"no_helpers": "Sieht so aus, als hättest du noch keine Helfer!"
"no_helpers": "Sieht so aus, als hätten Sie noch keine Helfer!"
},
"types": {
"input_boolean": "Umschalten",
@@ -1439,8 +1423,8 @@
},
"integration_panel_move": {
"link_integration_page": "Integrationsseite",
"missing_zha": "Vermisst du das ZHA-Konfigurationspanel? Es wurde in den ZHA-Eintrag auf der {integrations_page} verschoben.",
"missing_zwave": "Vermisst du das Z-Wave-Konfigurationspanel? Es wurde in den Z-Wave-Eintrag auf der {integrations_page} verschoben."
"missing_zha": "Vermissen Sie das ZHA-Konfigurationspanel? Es wurde in den ZHA-Eintrag auf der {integrations_page} verschoben.",
"missing_zwave": "Vermissen Sie das Z-Wave-Konfigurationspanel? Es wurde in den Z-Wave-Eintrag auf der {integrations_page} verschoben."
},
"integrations": {
"add_integration": "Integration hinzufügen",
@@ -1622,7 +1606,7 @@
"person": {
"add_person": "Person hinzufügen",
"caption": "Personen",
"confirm_delete": "Möchtest du diese Person wirklich löschen?",
"confirm_delete": "Möchten Sie diese Person wirklich löschen?",
"confirm_delete2": "Alle Geräte, die zu dieser Person gehören, werden nicht mehr zugeordnet.",
"create_person": "Person erstellen",
"description": "Verwalte die Personen, die Home Assistant verfolgt.",
@@ -1638,7 +1622,7 @@
"name": "Name",
"name_error_msg": "Name erforderlich",
"new_person": "Neue Person",
"no_device_tracker_available_intro": "Wenn du Geräte hast, die die Anwesenheit einer Person anzeigen, kannst du diese hier einer Person zuordnen. Du kannst dein erstes Gerät hinzufügen, indem du eine Integration zur Anwesenheitserkennung auf der Integrationsseite hinzufügst.",
"no_device_tracker_available_intro": "Wenn Sie Geräte haben, die die Anwesenheit einer Person anzeigen, können Sie diese hier einer Person zuordnen. Sie können Ihr erstes Gerät hinzufügen, indem Sie eine Integration zur Anwesenheitserkennung auf der Integrationsseite hinzufügen.",
"update": "Aktualisieren"
},
"introduction": "Hier können Sie jede Person von Interesse in Home Assistant definieren.",
@@ -1665,7 +1649,6 @@
"introduction": "Entitäten, die nicht zu einem Gerät gehören, können hier festgelegt werden.",
"without_device": "Entitäten ohne Gerät"
},
"icon": "Symbol",
"introduction": "Benutze Szenen um deinem Zuhause Leben einzuhauchen.",
"load_error_not_editable": "Nur Szenen in der scenes.yaml sind editierbar.",
"load_error_unknown": "Fehler beim Laden der Szene ({err_no}).",
@@ -1699,26 +1682,9 @@
"delete_confirm": "Möchtest du dieses Skript wirklich löschen?",
"delete_script": "Skript löschen",
"header": "Skript: {name}",
"icon": "Symbol",
"id": "Entitäts-ID",
"id_already_exists": "Diese ID existiert bereits",
"id_already_exists_save_error": "Du kannst dieses Skript nicht speichern, da die ID nicht eindeutig ist. Wähle eine andere ID aus oder lasse sie leer, um automatisch eine zu generieren.",
"introduction": "Verwende Skripte, um eine Abfolge von Aktionen auszuführen.",
"link_available_actions": "Erfahre mehr über verfügbare Aktionen.",
"load_error_not_editable": "Nur Skripte in scripts.yaml können bearbeitet werden.",
"max": {
"parallel": "Maximale Anzahl paralleler Läufe",
"queued": "Länge der Warteschlange"
},
"modes": {
"description": "Der Modus steuert, was passiert, wenn ein Skript aufgerufen wird, während es noch von einem oder mehreren vorherigen Aufrufen ausgeführt wird. Überprüfen Sie den {documentation_link} für weitere Informationen.",
"documentation": "Skript-Dokumentation",
"label": "Modus",
"parallel": "Parallel",
"queued": "In Warteschlange",
"restart": "Neu starten",
"single": "Einzeln (Standard)"
},
"sequence": "Sequenz",
"sequence_sentence": "Die Abfolge der Aktionen dieses Skripts."
},
@@ -1729,7 +1695,7 @@
"headers": {
"name": "Name"
},
"introduction": "Mit dem Skript-Editor können Skripte erstellt und bearbeitet werden. Bitte folge dem untenstehenden Link, um die Anleitung zu finden. Das stellt sicher, dass Home Assistant richtig konfiguriert ist.",
"introduction": "Mit dem Skript-Editor können Skripte erstellt und bearbeitet werden. Bitte folge Sie dem untenstehenden Link, um die Anleitung zu finden. Das stellt sicher, dass Home Assistant richtig konfiguriert ist.",
"learn_more": "Weitere Informationen zu Skripten",
"no_scripts": "Wir konnten keine bearbeitbaren Skripte finden",
"show_info": "Informationen zum Skript anzeigen",
@@ -1757,8 +1723,8 @@
"zone": "Zonen neu laden"
},
"server_management": {
"confirm_restart": "Möchtest du Home Assistant wirklich neu starten?",
"confirm_stop": "Möchtest du Home Assistant wirklich beenden?",
"confirm_restart": "Möchten Sie Home Assistant wirklich neu starten?",
"confirm_stop": "Möchten Sie Home Assistant wirklich beenden?",
"heading": "Serververwaltung",
"introduction": "Verwalte Home Assistant… von Home Assistant aus.",
"restart": "Neu starten",
@@ -1789,7 +1755,7 @@
"admin": "Administrator",
"caption": "Benutzer anzeigen",
"change_password": "Passwort ändern",
"confirm_user_deletion": "Möchtest du {name} wirklich löschen?",
"confirm_user_deletion": "Möchten Sie {name} wirklich löschen?",
"deactivate_user": "Benutzer deaktivieren",
"delete_user": "Benutzer löschen",
"group": "Gruppe",
@@ -1816,7 +1782,7 @@
"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 wurden keine Geräte erkannt. Stelle sicher, dass sie sich im Pairing-Modus befinden und halte sie aktiv, solange die Erkennung läuft.",
"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..."
@@ -1983,10 +1949,10 @@
"add_to_group": "Zur Gruppe hinzufügen",
"entities": "Entitäten dieses Knotens",
"entity_info": "Entitätsinformationen",
"exclude_entity": "Schließe diese Entität vom Home Assistant aus",
"exclude_entity": "Schließen Sie diese Entität vom Home Assistant aus",
"group": "Gruppe",
"header": "Z-Wave-Knotenverwaltung",
"introduction": "Führe Z-Wave-Befehle aus, die einen einzelnen Knoten betreffen. Wähle einen Knoten aus, um eine Liste der verfügbaren Befehle anzuzeigen.",
"introduction": "Führen Sie Z-Wave-Befehle aus, die einen einzelnen Knoten betreffen. Wählen Sie einen Knoten aus, um eine Liste der verfügbaren Befehle anzuzeigen.",
"max_associations": "Max Assoziationen:",
"node_group_associations": "Knotengruppenzuordnungen",
"node_protection": "Knotenschutz",
@@ -2156,7 +2122,7 @@
"clear_items": "Markierte Elemente löschen"
},
"starting": {
"description": "Home Assistant startet, bitte warten",
"description": "Home Assistant startet, bitte warten Sie..",
"header": "Home Assistant startet ..."
}
},
@@ -2340,7 +2306,6 @@
},
"edit_card": {
"add": "Karte hinzufügen",
"confirm_cancel": "Bist du sicher, dass du Abbrechen willst?",
"delete": "Löschen",
"duplicate": "Karte duplizieren",
"edit": "Bearbeiten",
@@ -2351,9 +2316,7 @@
"pick_card_view_title": "Welche Karte möchten Sie Ihrer {name} -Ansicht hinzufügen?",
"show_code_editor": "Code-Editor anzeigen",
"show_visual_editor": "Visuellen Editor anzeigen",
"toggle_editor": "Editor umschalten",
"typed_header": "{type} Kartenkonfiguration",
"unsaved_changes": "Nicht gespeicherte Änderungen"
"toggle_editor": "Editor umschalten"
},
"edit_lovelace": {
"edit_title": "Titel bearbeiten",
@@ -2407,7 +2370,7 @@
"close": "Schließen",
"empty_config": "Beginne mit einem leeren Dashboard",
"header": "Lovelace Userinterface selbst verwalten",
"para": "Dieses Dashboard wird derzeit von Home Assistant verwaltet. Es wird automatisch aktualisiert, wenn neue Entitäten oder Lovelace-UI-Komponenten verfügbar werden. Wenn du die Kontrolle übernimmst, wird dieses Dashboard nicht mehr automatisch aktualisiert. Du kannst jederzeit ein neues Dashboard in der Konfiguration erstellen, mit dem du herumspielen kannst.",
"para": "Dieses Dashboard wird derzeit von Home Assistant verwaltet. Es wird automatisch aktualisiert, wenn neue Entitäten oder Lovelace-UI-Komponenten verfügbar werden. Wenn Sie die Kontrolle übernehmen, wird dieses Dashboard nicht mehr automatisch aktualisiert. Sie können jederzeit ein neues Dashboard in der Konfiguration erstellen, mit dem Sie herumspielen können.",
"para_sure": "Bist du dir sicher, dass du die Benutzeroberfläche selbst verwalten möchtest?",
"save": "Kontrolle übernehmen",
"yaml_config": "Um dir den Einstieg zu erleichtern, findest du hier die aktuelle Konfiguration dieses Dashboards:",
@@ -2446,8 +2409,6 @@
"entity": "Entität",
"entity_id": "Entitäts-ID",
"last_changed": "Zuletzt geändert",
"no_data": "Keine ungenutzten Entitäten gefunden",
"search": "Entitäten durchsuchen",
"select_to_add": "Wähle die Entitäten aus, die du zur Karte hinzufügen möchtest und klicke auf den Karte hinzufügen-Button.",
"title": "Nicht verwendete Entitäten"
},
@@ -2527,7 +2488,7 @@
"legacy_api_password": {
"abort": {
"login_expired": "Sitzung abgelaufen, bitte erneut anmelden.",
"no_api_password_set": "Du hast kein API-Passwort konfiguriert."
"no_api_password_set": "Sie haben kein API-Passwort konfiguriert."
},
"error": {
"invalid_auth": "Ungültiges API-Passwort",
@@ -2550,7 +2511,6 @@
},
"trusted_networks": {
"abort": {
"not_allowed": "Dein Computer ist nicht auf der Whitelist.",
"not_whitelisted": "Dein Computer ist nicht auf der Whitelist."
},
"step": {
@@ -2689,7 +2649,7 @@
"empty_state": "Sie haben noch keine langlebigen Zugangs-Token.",
"header": "Langlebige Zugangs-Token",
"last_used": "Zuletzt verwendet am {date} in {location}",
"learn_auth_requests": "Erfahre, wie du authentifizierte Anfragen stellen kannst.",
"learn_auth_requests": "Erfahren Sie, wie Sie authentifizierte Anfragen stellen können.",
"not_used": "Wurde noch nie benutzt",
"prompt_copy_token": "Kopiere deinen Zugangs-Token. Er wird nicht wieder angezeigt werden.",
"prompt_name": "Name?"
@@ -2737,7 +2697,7 @@
"link_promo": "Erfahre mehr über Themen"
},
"vibrate": {
"description": "Aktiviere oder deaktiviere die Vibration an diesem Gerät, wenn du Geräte steuerst.",
"description": "Aktivieren oder deaktivieren Sie die Vibration an diesem Gerät, wenn Sie Geräte steuern.",
"header": "Vibrieren"
}
},

View File

@@ -48,19 +48,6 @@
"none": "Κανένας",
"sleep": "Ύπνος"
}
},
"humidifier": {
"mode": {
"auto": "Αυτόματο",
"away": "Εκτός",
"baby": "Μωρό",
"boost": "Ενίσχυση",
"comfort": "Άνεση",
"eco": "Eco",
"home": "Σπίτι",
"normal": "Κανονικός",
"sleep": "Ύπνος"
}
}
},
"state_badge": {
@@ -399,10 +386,6 @@
"reverse": "Αντιστροφή",
"speed": "Ταχύτητα"
},
"humidifier": {
"humidity": "Επιθυμητή υγρασία",
"mode": "Λειτουργία"
},
"light": {
"brightness": "Φωτεινότητα",
"color_temperature": "Θερμοκρασία χρώματος",
@@ -426,7 +409,6 @@
"activate": "Ενεργοποίηση"
},
"script": {
"cancel": "Ακύρωση",
"execute": "Εκτέλεση"
},
"service": {
@@ -460,7 +442,7 @@
"attributes": {
"air_pressure": "Πίεση αέρα",
"humidity": "Υγρασία",
"precipitation": "Υετός",
"precipitation": "Κατακρήμνιση",
"temperature": "Θερμοκρασία",
"visibility": "Ορατότητα",
"wind_speed": "Ταχύτητα ανέμου"
@@ -514,9 +496,6 @@
"clear": "Εκκαθάριση",
"show_areas": "Εμφάνιση περιοχών"
},
"data-table": {
"search": "Αναζήτηση"
},
"date-range-picker": {
"end_date": "Ημερομηνία λήξης",
"select": "Επιλογή",
@@ -826,13 +805,6 @@
"introduction": "Χρησιμοποιήστε αυτοματισμούς για να ζωντανέψουν το σπίτι σας",
"load_error_not_editable": "Μόνο οι αυτοματισμοί στο automations.yaml είναι επεξεργάσιμοι.",
"load_error_unknown": "Σφάλμα κατά τη φόρτωση αυτοματισμού ({err_no}).",
"max": {
"queued": "Μήκος ουράς"
},
"modes": {
"documentation": "τεκμηρίωση αυτοματισμού",
"restart": "Επανεκκίνηση"
},
"save": "Αποθήκευση",
"triggers": {
"add": "Προσθήκη εναύσματος",
@@ -1275,7 +1247,6 @@
"delete_button": "Διαγραφή {integration}",
"delete_confirm": "Είστε σίγουρος ότι θέλετε να διαγραφεί αυτή η ενοποίηση;",
"device_unavailable": "συσκευή μη διαθέσιμη",
"documentation": "Τεκμηρίωση",
"entity_unavailable": "οντότητα μη διαθέσιμη",
"firmware": "Υλικολογισμικό: {version}",
"hub": "Συνδεδεμένο μέσω",
@@ -1322,8 +1293,7 @@
"new": "Ρυθμίστε νέα ενοποίηση",
"none": "Δεν υπάρχει διαμόρφωση ακόμα",
"note_about_integrations": "Δεν μπορούν όλες οι ενσωματώσεις να διαμορφωθούν από το UI ακόμη.",
"note_about_website_reference": "Περισσότερα είναι διαθέσιμα στο",
"search": "Αναζήτηση ενσωματώσεων"
"note_about_website_reference": "Περισσότερα είναι διαθέσιμα στο"
},
"introduction": "Εδώ είναι δυνατή η διαμόρφωση του Home Assistant και των εξαρτημάτων. Δεν είναι δυνατή η διαμόρφωση όλων από την διεπαφή χρήστη (UI) αλλά εργαζόμαστε πάνω σε αυτό.",
"logs": {
@@ -1418,7 +1388,6 @@
"introduction": "Εδώ μπορείτε να ορίσετε οντότητες που δεν ανήκουν σε κάποια συσκευή.",
"without_device": "Οντότητες χωρίς συσκευές"
},
"icon": "Εικονίδιο",
"introduction": "Χρησιμοποιήστε σκηνές για να ζωντανέψουν το σπίτι σας",
"load_error_not_editable": "Μόνο σκηνές στο scenes.yaml είναι επεξεργάσιμες.",
"load_error_unknown": "Σφάλμα κατά τη φόρτωση της σκηνής ({err_no}).",
@@ -1452,20 +1421,9 @@
"delete_confirm": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτή τη δέσμη ενεργειών;",
"delete_script": "Διαγραφή δέσμης ενεργειών",
"header": "Δέσμη ενεργειών: {name}",
"icon": "Εικονίδιο",
"introduction": "Χρησιμοποιήστε δέσμες ενεργειών για να εκτελέσετε μια ακολουθία ενεργειών.",
"link_available_actions": "Μάθετε περισσότερα σχετικά με τις διαθέσιμες ενέργειες.",
"load_error_not_editable": "Μόνο οι δέσμες ενεργειών που βρίσκονται μέσα στο scripts.yaml είναι επεξεργάσιμες",
"max": {
"queued": "Μήκος ουράς"
},
"modes": {
"documentation": "τεκμηρίωση δέσμης ενεργειών",
"parallel": "Παράλληλα",
"queued": "Στην ουρά",
"restart": "Επανεκκίνηση",
"single": "Μονό (προεπιλογή)"
},
"sequence": "Ακολουθία",
"sequence_sentence": "Η ακολουθία των ενεργειών αυτής της δέσμης ενεργειών."
},
@@ -1550,7 +1508,6 @@
},
"zha": {
"add_device_page": {
"discovered_text": "Οι συσκευές θα εμφανιστούν εδώ μόλις ανακαλυφθούν.",
"discovery_text": "Οι ανακαλυφθείσες συσκευές θα εμφανιστούν εδώ. Ακολουθήστε τις οδηγίες για τις συσκευές σας και τοποθετήστε τις συσκευές στη λειτουργία αντιστοίχισης.",
"header": "Zigbee Home Automation - Προσθήκη Συσκευών",
"search_again": "Αναζήτηση ξανά",
@@ -1560,7 +1517,6 @@
"caption": "Προσθήκη Συσκευών",
"description": "Προσθήκη συσκετών στο δίκτυο Zigbee"
},
"button": "Διαμόρφωση",
"caption": "ZHA",
"cluster_attributes": {
"attributes_of_cluster": "Χαρακτηριστικά της επιλεγμένης συστοιχίας",
@@ -1808,10 +1764,6 @@
"add_item": "Προσθήκη στοιχείου",
"checked_items": "Επιλεγμένα στοιχεία",
"clear_items": "Εκκαθάριση επιλεγμένων στοιχείων"
},
"starting": {
"description": "Ο Home Assistant ξεκινά, περιμένετε ...",
"header": "Ο Home Assistant ξεκινά..."
}
},
"changed_toast": {
@@ -1875,7 +1827,6 @@
"name": "Όνομα",
"no_theme": "Χωρίς θέμα",
"refresh_interval": "Χρονικό διάστημα ανανέωσης",
"search": "Αναζήτηση",
"show_icon": "Εμφάνιση εικονιδίου;",
"show_name": "Εμφάνιση ονόματος;",
"show_state": "Εμφάνιση κατάστασης;",
@@ -1896,9 +1847,6 @@
"horizontal-stack": {
"name": "Οριζόντια διάταξη"
},
"humidifier": {
"name": "Υγραντήρας"
},
"iframe": {
"name": "Ιστοσελίδα"
},
@@ -1973,8 +1921,7 @@
"edit_lovelace": {
"edit_title": "Επεξεργασία τίτλου",
"explanation": "Αυτός ο τίτλος εμφανίζεται πάνω από όλες τις καρτέλες σας στο Lovelace.",
"header": "Τίτλος του περιβάλλοντος εργασίας σας Lovelace",
"title": "Τίτλος"
"header": "Τίτλος του περιβάλλοντος εργασίας σας Lovelace"
},
"edit_view": {
"add": "Προσθήκη προβολής",
@@ -2137,7 +2084,6 @@
},
"trusted_networks": {
"abort": {
"not_allowed": "Ο υπολογιστής σας δεν είναι αποδεκτός.",
"not_whitelisted": "Ο υπολογιστής σας δεν είναι στη λίστα επιτρεπόμενων."
},
"step": {
@@ -2310,9 +2256,6 @@
"not_used": "Δεν έχει χρησιμοποιηθεί ποτέ",
"token_title": "Ανανέωση διακριτικού για το {clientId}"
},
"suspend": {
"header": "Αυτόματο κλείσιμο σύνδεσης"
},
"themes": {
"dropdown_label": "Θέμα",
"error_no_theme": "Δεν υπάρχουν διαθέσιμα θέματα.",

View File

@@ -528,7 +528,6 @@
"show_areas": "Show areas"
},
"data-table": {
"no-data": "No data",
"search": "Search"
},
"date-range-picker": {
@@ -1816,7 +1815,7 @@
"discovered_text": "Devices will show up here once discovered.",
"discovery_text": "Discovered devices will show up here. Follow the instructions for your device(s) and place the device(s) in pairing mode.",
"header": "Zigbee Home Automation - Add Devices",
"no_devices_found": "No devices were found, make sure they are in paring mode and keep them awake while discovering is running.",
"no_devices_found": "No devices where found, make sure they are in paring mode and keep them awake while discovering is running.",
"pairing_mode": "Make sure your devices are in pairing mode. Check the instructions of your device on how to do this.",
"search_again": "Search Again",
"spinner": "Searching for ZHA Zigbee devices..."
@@ -2340,7 +2339,6 @@
},
"edit_card": {
"add": "Add Card",
"confirm_cancel": "Are you sure you want to cancel?",
"delete": "Delete Card",
"duplicate": "Duplicate Card",
"edit": "Edit",
@@ -2351,9 +2349,7 @@
"pick_card_view_title": "Which card would you like to add to your {name} view?",
"show_code_editor": "Show Code Editor",
"show_visual_editor": "Show Visual Editor",
"toggle_editor": "Toggle Editor",
"typed_header": "{type} Card Configuration",
"unsaved_changes": "You have unsaved changes"
"toggle_editor": "Toggle Editor"
},
"edit_lovelace": {
"edit_title": "Edit title",
@@ -2446,8 +2442,6 @@
"entity": "Entity",
"entity_id": "Entity ID",
"last_changed": "Last Changed",
"no_data": "No unused entities found",
"search": "Search entities",
"select_to_add": "Select the entities you want to add to a card and then click the add card button.",
"title": "Unused entities"
},

View File

@@ -528,7 +528,6 @@
"show_areas": "Mostrar áreas"
},
"data-table": {
"no-data": "Sin datos",
"search": "Buscar"
},
"date-range-picker": {
@@ -952,10 +951,10 @@
"description": "El modo controla lo que sucede cuando se activa la automatización mientras las acciones aún se ejecutan desde una activación anterior. Consulta la {documentation_link} para obtener más información.",
"documentation": "documentación de automatización",
"label": "Modo",
"parallel": "Paralelo",
"parallel": "Paralelo (predeterminado)",
"queued": "En cola",
"restart": "Reiniciar",
"single": "Único (predeterminado)"
"single": "Único"
},
"move_down": "Mover hacia abajo",
"move_up": "Mover hacia arriba",
@@ -2340,7 +2339,6 @@
},
"edit_card": {
"add": "Añadir tarjeta",
"confirm_cancel": "¿Estás seguro de que quieres cancelar?",
"delete": "Eliminar tarjeta",
"duplicate": "Duplicar tarjeta",
"edit": "Editar",
@@ -2351,9 +2349,7 @@
"pick_card_view_title": "¿Qué tarjeta te gustaría añadir a tu vista {name} ?",
"show_code_editor": "Mostrar editor de código",
"show_visual_editor": "Mostrar editor visual",
"toggle_editor": "Alternar editor",
"typed_header": "{type} Configuración de tarjeta",
"unsaved_changes": "Tienes cambios sin guardar"
"toggle_editor": "Alternar editor"
},
"edit_lovelace": {
"edit_title": "Editar título",
@@ -2446,8 +2442,6 @@
"entity": "Entidad",
"entity_id": "ID de entidad",
"last_changed": "Última modificación",
"no_data": "No se han encontrado entidades sin utilizar",
"search": "Buscar entidades",
"select_to_add": "Selecciona las entidades que quieres añadir a una tarjeta y, a continuación, haz clic en el botón Añadir tarjeta.",
"title": "Entidades no utilizadas"
},

View File

@@ -324,9 +324,6 @@
"save": "Gorde"
},
"components": {
"data-table": {
"no-data": "Daturik ez"
},
"relative_time": {
"duration": {
"day": "{count} {count, plural,\n one {egun}\n other {egun}\n}",
@@ -747,7 +744,6 @@
},
"trusted_networks": {
"abort": {
"not_allowed": "Zure ordenagailua ez dago baimenduta.",
"not_whitelisted": "Zure ordenagailua ez dago baimenduta."
},
"step": {

View File

@@ -430,8 +430,6 @@
"activate": "Aktivoi"
},
"script": {
"cancel": "Peruuta",
"cancel_multiple": "Peruuta {number}",
"execute": "Suorita"
},
"service": {
@@ -527,10 +525,6 @@
"clear": "Tyhjennä",
"show_areas": "Näytä alueet"
},
"data-table": {
"no-data": "Ei dataa",
"search": "Hae"
},
"date-range-picker": {
"end_date": "Päättymispäivä",
"select": "Valitse",
@@ -944,19 +938,6 @@
"introduction": "Käytä automaatioita herättääksesi kotisi eloon",
"load_error_not_editable": "Vain automaatiot tiedostossa automations.yaml ovat muokattavissa.",
"load_error_unknown": "Virhe ladatessa automaatiota ( {err_no} )",
"max": {
"parallel": "Rinnakkaisten ajojen enimmäismäärä",
"queued": "Jonon pituus"
},
"modes": {
"description": "Tila määrittää, mitä tapahtuu, kun automaatio käynnistyy, kun toiminnot ovat edelleen käynnissä edellisestä käynnistyksestä. Lisätietoja osoitteessa {documentation_link}.",
"documentation": "automaation dokumentaatio",
"label": "Tila",
"parallel": "Rinnakkain",
"queued": "Jonossa",
"restart": "Käynnistä uudelleen",
"single": "Yksittäinen (oletus)"
},
"move_down": "Siirrä alaspäin",
"move_up": "Siirrä ylöspäin",
"save": "Tallenna",
@@ -1375,7 +1356,6 @@
"confirm_text": "Sinun tulisi poistaa ne Lovelace-käyttöliittymästä ja automaatioista, jos ne sisältävät näitä kohteita.",
"confirm_title": "Haluatko poistaa {number} kohdetta?"
},
"search": "Hae kohteita",
"selected": "{number} valittuna",
"status": {
"disabled": "Poistettu käytöstä",
@@ -1406,8 +1386,7 @@
"entity_id": "Kohde ID",
"name": "Nimi",
"type": "Tyyppi"
},
"no_helpers": "Näyttää siltä, että sinulla ei ole vielä avustajia!"
}
},
"types": {
"input_boolean": "Kytkin",
@@ -1452,7 +1431,6 @@
"delete_confirm": "Haluatko varmasti poistaa tämän integraation?",
"device_unavailable": "laite ei saatavissa",
"devices": "{count} {count, plural,\n one {laite}\n other {laitteet}\n}",
"documentation": "Dokumentointi",
"entities": "{count} {count, plural,\n one {kohde}\n other {kohteet}\n}",
"entity_unavailable": "kohde ei saatavilla",
"firmware": "Laiteohjelmisto: {version}",
@@ -1511,8 +1489,7 @@
"note_about_integrations": "Kaikkia integraatioita ei voi vielä määrittää käyttöliittymän kautta.",
"note_about_website_reference": "Lisää saatavilla",
"rename_dialog": "Muokkaa tämän määritysmerkinnän nimeä",
"rename_input_label": "Merkinnän nimi",
"search": "Etsi integraatioita"
"rename_input_label": "Merkinnän nimi"
},
"introduction": "Täällä voit säätää Home Assistanttia ja sen komponentteja. Huomioithan, ettei kaikkea voi vielä säätää käyttöliittymän kautta, mutta teemme jatkuvasti töitä sen mahdollistamiseksi.",
"logs": {
@@ -1665,7 +1642,6 @@
"introduction": "Kohteet, jotka eivät kuulu laitteisiin, voidaan asettaa täällä.",
"without_device": "Kohteet ilman laitetta"
},
"icon": "Kuvake",
"introduction": "Käytä tilanteita herättääksesi kotisi eloon.",
"load_error_not_editable": "Vain tilanteet tiedostossa scenes.yaml ovat muokattavissa.",
"load_error_unknown": "Virhe ladattaessa tilannetta ({err_no}).",
@@ -1699,25 +1675,9 @@
"delete_confirm": "Haluatko varmasti poistaa tämän skriptin?",
"delete_script": "Poista skripti",
"header": "Skripti: {name}",
"icon": "Kuvake",
"id": "Kohde ID",
"id_already_exists": "Tämä tunnus on jo olemassa",
"id_already_exists_save_error": "Et voi tallentaa tätä skriptiä, koska tunnus ei ole yksilöivä. Valitse toinen tunnus tai jätä se tyhjäksi, jolloin se luodaan automaattisesti.",
"introduction": "Käytä scriptejä suorittaaksesi toimintasarjan.",
"link_available_actions": "Lisätietoja saatavilla olevista toiminnoista",
"load_error_not_editable": "Vain scripts.yaml-tiedostossa olevat skriptit ovat muokattavissa.",
"max": {
"parallel": "Rinnakkaisten ajojen enimmäismäärä",
"queued": "Jonon pituus"
},
"modes": {
"documentation": "skriptin dokumentaatio",
"label": "Tila",
"parallel": "Rinnakkain",
"queued": "Jonossa",
"restart": "Käynnistä uudelleen",
"single": "Yksittäinen (oletus)"
},
"sequence": "Järjestys",
"sequence_sentence": "Skriptin toimintojen järjestys."
},
@@ -2233,7 +2193,6 @@
"name": "Nimi",
"no_theme": "Ei teemaa",
"refresh_interval": "Päivitysväli",
"search": "Hae",
"secondary_info_attribute": "Toissijainen info-attribuutti",
"show_icon": "Näytä kuvake?",
"show_name": "Näytä nimi?",
@@ -2339,7 +2298,6 @@
},
"edit_card": {
"add": "Lisää kortti",
"confirm_cancel": "Haluatko varmasti peruuttaa?",
"delete": "Poista kortti",
"duplicate": "Kopioi kortti",
"edit": "Muokkaa",
@@ -2350,15 +2308,12 @@
"pick_card_view_title": "Minkä kortin haluat lisätä {name} -näkymääsi?",
"show_code_editor": "Näytä koodieditori",
"show_visual_editor": "Näytä visuaalinen editori",
"toggle_editor": "Vaihda editori",
"typed_header": "{type}-kortin kokoonpano",
"unsaved_changes": "Sinulla on tallentamattomia muutoksia"
"toggle_editor": "Vaihda editori"
},
"edit_lovelace": {
"edit_title": "Muokkaa otsikkoa",
"explanation": "Tämä otsikko on esillä näkymien yläpuolella Lovelace-käyttöliittymässä.",
"header": "Lovelace-käyttöliittymän otsikko",
"title": "Otsikko"
"header": "Lovelace-käyttöliittymän otsikko"
},
"edit_view": {
"add": "Lisää näkymä",
@@ -2445,8 +2400,6 @@
"entity": "Kohde",
"entity_id": "Kohde ID",
"last_changed": "Viimeksi muutettu",
"no_data": "Käyttämättömiä kohteita ei löytynyt",
"search": "Hae kohteita",
"select_to_add": "Valitse kohteet, jotka haluat lisätä korttiin, ja napsauta sitten Lisää kortti -painiketta.",
"title": "Käyttämättömät entiteetit"
},
@@ -2549,7 +2502,6 @@
},
"trusted_networks": {
"abort": {
"not_allowed": "Tietokone ei ole sallittu.",
"not_whitelisted": "Tietokonettasi ei ole sallittu."
},
"step": {
@@ -2725,10 +2677,6 @@
"not_used": "Ei ole koskaan käytetty",
"token_title": "Päivitä tunnus kohteelle {clientId}"
},
"suspend": {
"description": "Suljetaanko yhteys palvelimeen 5 minuuttia piilottamisen jälkeen?",
"header": "Sulje yhteys automaattisesti"
},
"themes": {
"dropdown_label": "Teema",
"error_no_theme": "Ei teemoja käytettävissä.",

View File

@@ -528,7 +528,6 @@
"show_areas": "Afficher les pièces"
},
"data-table": {
"no-data": "Pas de données",
"search": "Chercher"
},
"date-range-picker": {
@@ -941,7 +940,7 @@
"edit_ui": "Modifier avec l'interface utilisateur",
"edit_yaml": "Modifier en tant que YAML",
"enable_disable": "Activer/Désactiver l'automatisation",
"introduction": "Utiliser les automatisations pour donner vie à votre maison.",
"introduction": "Utilisez les automatisations pour donner vie à votre maison",
"load_error_not_editable": "Seules les automatisations dans automations.yaml sont modifiables.",
"load_error_unknown": "Erreur lors du chargement de l'automatisation ( {err_no} ).",
"max": {
@@ -952,10 +951,9 @@
"description": "Le mode contrôle ce qui se passe lorsque lautomatisation est déclenchée alors que les actions sont toujours en cours dexécution à partir dun déclencheur précédent. Consultez le {documentation_link} pour plus dinformations.",
"documentation": "documentation d'automatisation",
"label": "Mode",
"parallel": "Parallèle",
"parallel": "Parallèle (par défaut)",
"queued": "En attente",
"restart": "Redémarrer",
"single": "Unique (par défaut)"
"restart": "Redémarrer"
},
"move_down": "Déplacer vers le bas",
"move_up": "Déplacer vers le haut",
@@ -2340,7 +2338,6 @@
},
"edit_card": {
"add": "Ajouter une action",
"confirm_cancel": "Êtes-vous sûrs de vouloir annuler ?",
"delete": "Supprimer",
"duplicate": "Dupliquer la carte",
"edit": "Modifier",
@@ -2351,9 +2348,7 @@
"pick_card_view_title": "Quelle carte souhaitez-vous ajouter à votre vue {name} ?",
"show_code_editor": "Afficher l'éditeur de code",
"show_visual_editor": "Afficher l'éditeur visuel",
"toggle_editor": "Permuter léditeur",
"typed_header": "{type} Configuration de la carte",
"unsaved_changes": "Vous avez des changements non enregistrés"
"toggle_editor": "Permuter léditeur"
},
"edit_lovelace": {
"edit_title": "Éditer le titre",
@@ -2446,8 +2441,6 @@
"entity": "Entité",
"entity_id": "ID de l'entité",
"last_changed": "Dernière modification",
"no_data": "Aucune entité inutilisée trouvée",
"search": "Rechercher des entités",
"select_to_add": "Sélectionner les entités que vous souhaitez ajouter à une carte, puis cliquez sur le bouton Ajouter une carte.",
"title": "Entités inutilisées"
},

View File

@@ -430,8 +430,6 @@
"activate": "הפעל"
},
"script": {
"cancel": "בטל",
"cancel_multiple": "בטל {number}",
"execute": "הפעל"
},
"service": {
@@ -528,7 +526,6 @@
"show_areas": "הצג אזורים"
},
"data-table": {
"no-data": "אין נתונים",
"search": "חיפוש"
},
"date-range-picker": {
@@ -944,19 +941,6 @@
"introduction": "השתמש/י באוטומציות להפיח חיים בביתך.",
"load_error_not_editable": "רק אוטומציה ב automations.yaml ניתנים לעריכה.",
"load_error_unknown": "שגיאה בטעינת האוטומציה ( {err_no} ).",
"max": {
"parallel": "המספר המרבי של ריצות מקבילות",
"queued": "אורך התור"
},
"modes": {
"description": "המצב שולט במתרחש כאשר האוטומציה מופעלת בזמן שהפעולות עדיין פועלות מהטריגר הקודם. עיין ב {documentation_link} למידע נוסף.",
"documentation": "תיעוד אוטומציה",
"label": "מצב",
"parallel": "במקביל",
"queued": "בתור",
"restart": "אתחול",
"single": "יחיד (ברירת מחדל)"
},
"move_down": "הזז למטה",
"move_up": "הזז למעלה",
"save": "שמור",
@@ -1598,7 +1582,7 @@
"refresh_body": "אתה צריך לרענן את הדף כדי להשלים את ההסרה, האם אתה רוצה לרענן עכשיו?",
"refresh_header": "האם אתה רוצה לרענן?",
"types": {
"css": "Stylesheet",
"css": "סגנון עיצוב",
"html": "HTML (הוצא משימוש)",
"js": "קובץ JavaScript (הוצא משימוש)",
"module": "JavaScript Module"
@@ -1665,7 +1649,6 @@
"introduction": "ניתן להגדיר כאן ישויות שאינן שייכות להתקנים.",
"without_device": "ישויות ללא מכשיר"
},
"icon": "סמל",
"introduction": "השתמש בסצינות כדי להחיות את הבית שלך.",
"load_error_not_editable": "רק סצינות ב scenes.yaml ניתנות לעריכה.",
"load_error_unknown": "שגיאה בטעינת סצנה ({err_no}).",
@@ -1699,26 +1682,9 @@
"delete_confirm": "האם אתה בטוח שברצונך למחוק את הסקריפט הזה?",
"delete_script": "מחק סקריפט",
"header": "סקריפט: {name}",
"icon": "סמל",
"id": "מזהה ישות",
"id_already_exists": "מזהה זה כבר קיים",
"id_already_exists_save_error": "אינך יכול לשמור סקריפט זה מכיוון שהמזהה אינו ייחודי, בחר מזהה אחר או השאר אותו ריק כדי ליצור אוטומטית.",
"introduction": "השתמש בסקריפטים כדי לבצע רצף של פעולות.",
"link_available_actions": "למד עוד אודות פעולות זמינות.",
"load_error_not_editable": "רק סקריפטים בתוך קובץ scripts.yaml ניתנים לעריכה.",
"max": {
"parallel": "המספר המרבי של ריצות מקבילות",
"queued": "אורך התור"
},
"modes": {
"description": "המצב שולט במה שקורה כאשר מופעל סקריפט בזמן שהוא עדיין פועל מהפעלה קודמת אחת או יותר. עיין ב {documentation_link} למידע נוסף.",
"documentation": "תיעוד סקריפט",
"label": "מצב",
"parallel": "מַקְבִּיל",
"queued": "בתור",
"restart": "אתחול",
"single": "יחיד (ברירת מחדל)"
},
"sequence": "סדר פעולות",
"sequence_sentence": "רצף הפעולות של סקריפט זה."
},
@@ -2091,12 +2057,12 @@
"title": "מצבים"
},
"templates": {
"description": "Templates are rendered using the Jinja2 template engine with some Home Assistant specific extensions.",
"editor": "Template editor",
"jinja_documentation": "Jinja2 template documentation",
"template_extensions": "Home Assistant template extensions",
"description": "התבניות מוצגות באמצעות מנוע התבניות Jinja2 עם כמה תוספים ספציפיים של Home Assistant.",
"editor": "עורך התבניות",
"jinja_documentation": "תיעוד תבנית Jinja2",
"template_extensions": "הרחבות תבנית של Home Assistant",
"title": "תבניות",
"unknown_error_template": "Unknown error rendering template"
"unknown_error_template": "שגיאה לא ידועה בעיבוד התבנית"
}
}
},
@@ -2340,7 +2306,6 @@
},
"edit_card": {
"add": "הוסף כרטיסייה",
"confirm_cancel": "האם אתה בטוח שברצונך לבטל?",
"delete": "מחק",
"duplicate": "שכפול כרטיס",
"edit": "ערוך",
@@ -2351,9 +2316,7 @@
"pick_card_view_title": "איזה כרטיס ברצונך להוסיף לתצוגת {name}?",
"show_code_editor": "הצג עורך קוד",
"show_visual_editor": "הצג עורך ויזואלי",
"toggle_editor": "החלף מצב עורך",
"typed_header": "תצורת כרטיס {type}",
"unsaved_changes": "יש לך שינויים שלא נשמרו"
"toggle_editor": "החלף מצב עורך"
},
"edit_lovelace": {
"edit_title": "ערוך כותרת",
@@ -2446,8 +2409,6 @@
"entity": "ישות",
"entity_id": "מזהה ישות",
"last_changed": "שונה לאחרונה",
"no_data": "לא נמצאו ישויות שאינן בשימוש",
"search": "חיפוש ישויות",
"select_to_add": "בחר את הישויות שברצונך להוסיף לכרטיס ולחץ על כפתור הוסף כרטיס.",
"title": "ישויות שאינן בשימוש"
},
@@ -2550,7 +2511,6 @@
},
"trusted_networks": {
"abort": {
"not_allowed": "המחשב שלך אינו מורשה.",
"not_whitelisted": "המחשב שלך אינו רשום ברשימת ההיתרים."
},
"step": {

View File

@@ -48,19 +48,6 @@
"none": "Nincs",
"sleep": "Alvás"
}
},
"humidifier": {
"mode": {
"auto": "Automatikus",
"away": "Távol",
"baby": "Baba",
"boost": "Turbo",
"comfort": "Komfort",
"eco": "Takarékos",
"home": "Otthon",
"normal": "Normál",
"sleep": "Alvás"
}
}
},
"state_badge": {
@@ -401,12 +388,6 @@
"reverse": "Fordított",
"speed": "Sebesség"
},
"humidifier": {
"humidity": "Kívánt páratartalom",
"mode": "Mód",
"on_entity": "{name} be",
"target_humidity_entity": "{name} kívánt páratartalom"
},
"light": {
"brightness": "Fényerő",
"color_temperature": "Színhőmérséklet",
@@ -430,8 +411,6 @@
"activate": "Aktiválás"
},
"script": {
"cancel": "Mégse",
"cancel_multiple": "Mégse {number}",
"execute": "Futtatás"
},
"service": {
@@ -527,15 +506,6 @@
"clear": "Törlés",
"show_areas": "Területek megjelenítése"
},
"data-table": {
"no-data": "Nincs adat",
"search": "Keresés"
},
"date-range-picker": {
"end_date": "Befejezés dátuma",
"select": "Kiválasztás",
"start_date": "Kezdés dátuma"
},
"device-picker": {
"clear": "Törlés",
"device": "Eszköz",
@@ -724,11 +694,10 @@
},
"zha_device_info": {
"buttons": {
"add": "Eszközök hozzáadása ezen az eszközön keresztül",
"clusters": "Klaszterek Kezelése",
"add": "Eszközök hozzáadása",
"reconfigure": "Eszköz újrakonfigurálása",
"remove": "Eszköz eltávolítása",
"zigbee_information": "Zigbee eszköz aláírása"
"zigbee_information": "Zigbee Információk"
},
"confirmations": {
"remove": "Biztosan el akarod távolítani az eszközt?"
@@ -748,7 +717,7 @@
"unknown": "Ismeretlen",
"zha_device_card": {
"area_picker_label": "Terület",
"device_name_placeholder": "Eszköznév módosítása",
"device_name_placeholder": "Felhasználó által megadott név",
"update_name_button": "Név frissítése"
}
}
@@ -944,18 +913,6 @@
"introduction": "Használj automatizálásokat otthonod életre keltéséhez",
"load_error_not_editable": "Csak az automations.yaml fájlban megadott automatizálások szerkeszthetők.",
"load_error_unknown": "Hiba az automatizálás betöltésekor ({err_no}).",
"max": {
"parallel": "A párhuzamos futtatások maximális száma",
"queued": "Várólista hossza"
},
"modes": {
"documentation": "automatizálási dokumentáció",
"label": "Mód",
"parallel": "Párhuzamos",
"queued": "Várólistás",
"restart": "Újraindítás",
"single": "Egyszeri (alapértelmezett)"
},
"move_down": "Le",
"move_up": "Fel",
"save": "Mentés",
@@ -1374,7 +1331,6 @@
"confirm_text": "El kell távolítanod őket a Lovelace konfigurációból és az automatizálásokból, ha tartalmazzák ezeket az entitásokat.",
"confirm_title": "El szeretnél távolítani {number} entitást?"
},
"search": "Entitások keresése",
"selected": "{number} kiválasztva",
"status": {
"disabled": "Letiltott",
@@ -1405,8 +1361,7 @@
"entity_id": "Entitás ID",
"name": "Név",
"type": "Típus"
},
"no_helpers": "Úgy tűnik, még nincs egy segítőd sem!"
}
},
"types": {
"input_boolean": "Váltás",
@@ -1418,9 +1373,7 @@
},
"info": {
"built_using": "Buildelve:",
"caption": "Infó",
"custom_uis": "Egyéni felhasználói felületek:",
"description": "Információ a Home Assistant telepítésedről",
"developed_by": "Egy csomó fantasztikus ember által kifejlesztve.",
"documentation": "Dokumentáció",
"frontend": "frontend-ui",
@@ -1436,9 +1389,6 @@
"system_health_error": "A rendszerállapot összetevő nincs betöltve. Add hozzá a 'system_health:' sort a configuration.yaml fájlhoz.",
"title": "Infó"
},
"integration_panel_move": {
"link_integration_page": "integrációk oldal"
},
"integrations": {
"add_integration": "Integráció hozzáadása",
"caption": "Integrációk",
@@ -1449,7 +1399,6 @@
"delete_confirm": "Biztosan törölni szeretnéd ezt az integrációt?",
"device_unavailable": "eszköz nem érhető el",
"devices": "{count} {count, plural,\n one {eszköz}\n other {eszköz}\n}",
"documentation": "Dokumentáció",
"entities": "{count} {count, plural,\n one {entitás}\n other {entitás}\n}",
"entity_unavailable": "entitás nem érhető el",
"firmware": "Firmware: {version}",
@@ -1508,14 +1457,11 @@
"note_about_integrations": "Még nem minden integráció konfigurálható a felhasználói felületen keresztül.",
"note_about_website_reference": "Továbbiak érhetőek el itt: ",
"rename_dialog": "A konfigurációs bejegyzés nevének szerkesztése",
"rename_input_label": "Bejegyzés neve",
"search": "Integrációk keresése"
"rename_input_label": "Bejegyzés neve"
},
"introduction": "Itt a komponenseket és a Home Assistant szervert lehet beállítani. Még nem lehet mindent a felületről, de dolgozunk rajta.",
"logs": {
"caption": "Napló",
"clear": "Törlés",
"description": "A Home Assistant naplófájlok megtekintése",
"details": "Naplózás részletessége ({level})",
"load_full_log": "Teljes Home Assistant napló betöltése",
"loading_log": "Hibanapló betöltése...",
@@ -1603,7 +1549,6 @@
}
},
"mqtt": {
"button": "Beállítás",
"description_listen": "Téma figyelése",
"description_publish": "Csomag közzététele",
"listening_to": "Figyelés:",
@@ -1662,7 +1607,6 @@
"introduction": "Az eszköz nélküli entitások itt állíthatók be.",
"without_device": "Eszköz nélküli entitások"
},
"icon": "Ikon",
"introduction": "Használj jeleneteket otthonod életre keltéséhez.",
"load_error_not_editable": "Csak a scenes.yaml fájlban megadott jelenetek szerkeszthetők.",
"load_error_unknown": "Hiba a jelenet betöltésekor ({err_no}).",
@@ -1696,24 +1640,9 @@
"delete_confirm": "Biztosan törölni szeretnéd ezt a szkriptet?",
"delete_script": "Szkript törlése",
"header": "Szkript: {name}",
"icon": "Ikon",
"id": "Entitás ID",
"id_already_exists": "Ez az ID már létezik",
"introduction": "Használj szkripteket műveletsorozatok végrehajtásához.",
"link_available_actions": "Tudj meg többet az elérhető műveletekről.",
"load_error_not_editable": "Csak a scripts.yaml fájlban megadott szkriptek szerkeszthetők.",
"max": {
"parallel": "A párhuzamos futtatások maximális száma",
"queued": "Várólista hossza"
},
"modes": {
"documentation": "szkript dokumentáció",
"label": "Mód",
"parallel": "Párhuzamos",
"queued": "Várólistás",
"restart": "Újraindítás",
"single": "Egyszeri (alapértelmezett)"
},
"sequence": "Sorrend",
"sequence_sentence": "A szkript műveleti sorrendje."
},
@@ -1740,11 +1669,6 @@
"core": "Lokáció és testreszabások újratöltése",
"group": "Csoportok újratöltése",
"heading": "YAML konfiguráció újratöltése",
"input_boolean": "Bemeneti logikai változók újratöltése",
"input_datetime": "Időpont bemenetek újratöltése",
"input_number": "Szám bemenetek újratöltése",
"input_select": "Választási bemenetek újratöltése",
"input_text": "Bemeneti szövegek újratöltése",
"introduction": "A Home Assistant bizonyos részei újraindítás nélkül újratölthetőek. Újratöltéskor az aktuálisan betöltött YAML konfiguráció helyére betöltődik az új.",
"person": "Személyek újratöltése",
"scene": "Jelenetek újratöltése",
@@ -1807,7 +1731,6 @@
},
"zha": {
"add_device_page": {
"discovered_text": "Az eszközök itt fognak megjelenni, ha felfedezésre kerültek.",
"discovery_text": "A felfedezett eszközök itt fognak megjelenni. A készülékek használati utasításai alapján állítsd őket párosítási módba.",
"header": "Zigbee Home Automation - Eszközök hozzáadása",
"search_again": "Keresés Újra",
@@ -1817,7 +1740,6 @@
"caption": "Eszközök hozzáadása",
"description": "Eszközök hozzáadása a Zigbee hálózathoz"
},
"button": "Beállítás",
"caption": "ZHA",
"cluster_attributes": {
"attributes_of_cluster": "A kiválasztott klaszter attribútumai",
@@ -1896,9 +1818,6 @@
"header": "Hálózat menedzsment",
"introduction": "Parancsok, amik kihatnak az egész hálózatra"
},
"network": {
"caption": "Hálózat"
},
"node_management": {
"header": "Eszköz kezelés",
"help_node_dropdown": "Válassz egy eszközt az eszközönkénti beállítások megtekintéséhez.",
@@ -1938,7 +1857,6 @@
"no_zones_created_yet": "Úgy tűnik, még nem hoztál létre zónákat."
},
"zwave": {
"button": "Beállítás",
"caption": "Z-Wave",
"common": {
"index": "Index",
@@ -1972,7 +1890,6 @@
"true": "Igaz"
},
"node_management": {
"header": "Z-Wave csomópontkezelés",
"nodes": "Csomópontok"
},
"ozw_log": {
@@ -1984,16 +1901,15 @@
"add_node_secure": "Biztonságos csomópont hozzáadása",
"cancel_command": "Parancs megszakítása",
"heal_network": "Hálózati struktúra feltérképezése",
"node_info": "Csomópont információ",
"node_info": "Node információ",
"refresh_entity": "Entitás frissítése",
"refresh_node": "Csomópont frissítése",
"remove_node": "Csomópont eltávolítása",
"save_config": "Konfiguráció mentése",
"soft_reset": "Soft Reset",
"start_network": "Hálózat indítása",
"stop_network": "Hálózat leállítása",
"test_network": "Hálózat tesztelése",
"test_node": "Teszt csomópont"
"test_node": "Teszt Node"
},
"values": {
"header": "Csomópont értékek"
@@ -2070,23 +1986,11 @@
},
"history": {
"period": "Időtartam",
"ranges": {
"last_week": "Múlt hét",
"this_week": "Aktuális hét",
"today": "Ma",
"yesterday": "Tegnap"
},
"showing_entries": "Bejegyzések megjelenítése"
},
"logbook": {
"entries_not_found": "Nincsenek naplóbejegyzések.",
"period": "Időszak",
"ranges": {
"last_week": "Múlt hét",
"this_week": "Aktuális hét",
"today": "Ma",
"yesterday": "Tegnap"
},
"showing_entries": "Bejegyzések megjelenítése"
},
"lovelace": {
@@ -2124,7 +2028,7 @@
"clear_items": "Bejelölt tételek törlése"
},
"starting": {
"description": "A Home Assistant indítása folyamatban van, kérlek várj...",
"description": "A Home Assistant indítása folyamatban van, kérlek várj.",
"header": "A Home Assistant indítása folyamatban van..."
}
},
@@ -2202,7 +2106,6 @@
"name": "Név",
"no_theme": "Nincs téma",
"refresh_interval": "Frissítési időköz",
"search": "Keresés",
"secondary_info_attribute": "Másodlagos információ attribútum",
"show_icon": "Ikon megjelenítése?",
"show_name": "Név megjelenítése?",
@@ -2227,9 +2130,6 @@
"description": "A Vízszintes Készlet kártya lehetővé teszi több kártya egymás mellé rendezését egy oszlopon belül.",
"name": "Vízszintes Készlet"
},
"humidifier": {
"name": "Párásító"
},
"iframe": {
"description": "A Weblap kártya lehetővé teszi a kedvenc weboldalad beágyazását a Home Assistant-ba.",
"name": "Weboldal"
@@ -2307,7 +2207,6 @@
},
"edit_card": {
"add": "Kártya hozzáadása",
"confirm_cancel": "Biztosan meg szeretnéd szakítani?",
"delete": "Kártya törlése",
"duplicate": "Kártya duplikálása",
"edit": "Szerkesztés",
@@ -2318,15 +2217,12 @@
"pick_card_view_title": "Melyik kártyát szeretnéd hozzáadni a(z) {name} nézethez?",
"show_code_editor": "Kódszerkesztő megjelenítése",
"show_visual_editor": "Vizuális szerkesztő megjelenítése",
"toggle_editor": "Szerkesztő",
"typed_header": "{típusú} Kártya Konfiguráció",
"unsaved_changes": "Vannak nem mentett módosítások"
"toggle_editor": "Szerkesztő"
},
"edit_lovelace": {
"edit_title": "Cím szerkesztése",
"explanation": "Ez a cím jelenik meg minden nézet felett a Lovelace felhasználói felületen.",
"header": "Lovelace UI címe",
"title": "Cím"
"header": "Lovelace UI címe"
},
"edit_view": {
"add": "Nézet hozzáadása",
@@ -2413,8 +2309,6 @@
"entity": "Entitás",
"entity_id": "Entitás ID",
"last_changed": "Utoljára változott",
"no_data": "Nincsenek nem használt entitások",
"search": "Entitások keresése",
"select_to_add": "Válaszd ki azokat az entitásokat, amelyeket hozzá akarsz adni egy kártyához, majd kattints a kártya hozzáadása gombra.",
"title": "Nem használt entitások"
},
@@ -2517,7 +2411,6 @@
},
"trusted_networks": {
"abort": {
"not_allowed": "A számítógéped nem engedélyezett.",
"not_whitelisted": "A számítógéped nem engedélyezett."
},
"step": {
@@ -2693,10 +2586,6 @@
"not_used": "Sosem használt",
"token_title": "{clientId} frissítési tokenje"
},
"suspend": {
"description": "Lezárjuk a kapcsolatot a szerverrel, ha 5 percig rejtve van a felület?",
"header": "Kapcsolat automatikus bontása"
},
"themes": {
"dropdown_label": "Téma",
"error_no_theme": "Nincsenek elérhető témák.",

View File

@@ -205,7 +205,6 @@
"stopped": "Stöðvuð"
},
"default": {
"off": "Slökkt",
"on": "Á",
"unavailable": "Ekki tiltækt",
"unknown": "Óþekkt"
@@ -403,8 +402,6 @@
"activate": "Virkja"
},
"script": {
"cancel": "Hætta við",
"cancel_multiple": "Hætta við {number}",
"execute": "Framkvæma"
},
"service": {
@@ -492,9 +489,6 @@
"clear": "Hreinsa",
"show_areas": "Birta svæði"
},
"data-table": {
"search": "Leita"
},
"date-range-picker": {
"end_date": "Loka dagsetning",
"select": "Velja",
@@ -574,7 +568,6 @@
"time": "Tími"
},
"input_number": {
"box": "Innsláttarreitur",
"max": "Hámarksgildi",
"min": "Lágmarksgildi",
"mode": "Birtingarmáti",
@@ -614,7 +607,6 @@
"title": "Uppfærslu leiðbeiningar"
},
"vacuum": {
"locate": "Staðsetja",
"pause": "Hlé",
"start": "Byrja",
"status": "Staða",
@@ -653,7 +645,6 @@
"unknown": "Óþekkt",
"zha_device_card": {
"area_picker_label": "Svæði",
"device_name_placeholder": "Breyta nafni á tæki",
"update_name_button": "Uppfæra nafn"
}
}
@@ -695,7 +686,6 @@
"description": "Yfirlit yfir öll svæði á heimilinu þínu.",
"editor": {
"create": "STOFNA",
"default_name": "Nýtt svæði",
"delete": "EYÐA",
"name": "Nafn",
"name_required": "Nafn er skilyrt",
@@ -827,16 +817,10 @@
"label": "Lýsing",
"placeholder": "Valfrjáls lýsing"
},
"edit_ui": "Breyta í viðmóti",
"edit_yaml": "Breyta sem YAML",
"enable_disable": "Virkja/slökkva á sjálfvirkni",
"introduction": "Notaðu sjálfvirkni til að glæða húsið þitt lífi",
"load_error_not_editable": "Eingöngu er hægt að breyta sjálfvirkni í automations.yaml",
"load_error_unknown": "Villa kom upp við að hlaða inn sjálfvirkni ({err_no}).",
"modes": {
"label": "Hamur",
"restart": "Endurræsa"
},
"move_down": "Færa niður",
"move_up": "Færa upp",
"save": "Vista",
@@ -982,7 +966,6 @@
"description_login": "Innskráð(ur) sem {email}",
"description_not_login": "Ekki skráð(ur) inn",
"dialog_certificate": {
"certificate_information": "Upplýsingar um skilríki",
"close": "Loka",
"fingerprint": "Fingrafar skilríkis:"
},
@@ -1072,11 +1055,9 @@
"actions": {
"caption": "Þegar eitthvað er ræst af kveikju..."
},
"automations": "Sjálfvirkni",
"conditions": {
"caption": "Bara framkvæma eitthvað ef..."
},
"no_automations": "Engin sjálfvirkni",
"triggers": {
"caption": "Framkvæma eitthvað þegar..."
}
@@ -1089,7 +1070,6 @@
"device": "Tæki",
"integration": "Samþætting",
"manufacturer": "Framleiðandi",
"model": "Gerð",
"no_area": "Ekkert svæði",
"no_devices": "Engin tæki"
},
@@ -1141,7 +1121,6 @@
"button": "Fjarlægja val",
"confirm_title": "Viltu fjarlægja {number} einingar?"
},
"search": "Leita í einingum",
"selected": "{number} valin",
"status": {
"disabled": "Afvirkjað",
@@ -1176,7 +1155,6 @@
}
},
"info": {
"built_using": "Byggt með",
"caption": "Upplýsingar",
"documentation": "Skjölun",
"icons_by": "Smátákn eftir",
@@ -1236,9 +1214,7 @@
"integration_not_found": "Samþætting fannst ekki.",
"new": "Setja upp nýja samþættingu",
"none": "Ekkert skilgreint sem stendur",
"none_found": "Engar samþættingar fundust",
"note_about_integrations": "Það er ekki er hægt að stilla allar samþættingar í gegnum viðmótið ennþá.",
"search": "Leita í samþættingum"
"none_found": "Engar samþættingar fundust"
},
"introduction": "Hér er mögulegt að stilla af íhluti og Home Assistant. Því miður er ekki hægt að breyta öllu í gegnum viðmótið ennþá, en við erum að vinna í því.",
"logs": {
@@ -1343,10 +1319,8 @@
"entities": {
"add": "Bæta við einingu",
"delete": "Eyða einingu",
"header": "Einingar",
"without_device": "Einingar án tækja"
"header": "Einingar"
},
"icon": "Táknmynd",
"load_error_not_editable": "Það er eingöngu hægt að breyta senum í scenes.yaml.",
"name": "Nafn",
"save": "Vista"
@@ -1371,13 +1345,7 @@
"description": "Búa til og breyta skriftum",
"editor": {
"alias": "Nafn",
"icon": "Táknmynd",
"link_available_actions": "Læra meira um tiltækar aðgerðir.",
"modes": {
"label": "Hamur",
"restart": "Endurræsa"
},
"sequence": "Röð"
"link_available_actions": "Læra meira um tiltækar aðgerðir."
},
"picker": {
"headers": {
@@ -1540,12 +1508,10 @@
"node_management": {
"add_to_group": "Bæta í hóp",
"entity_info": "Upplýsingar um einingu",
"group": "Hópur",
"remove_from_group": "Fjarlægja úr hóp"
"group": "Hópur"
},
"ozw_log": {
"header": "OZW annáll",
"load": "Hlaða"
"header": "OZW annáll"
},
"services": {
"cancel_command": "Hætta við skipun",
@@ -1579,9 +1545,7 @@
},
"states": {
"current_entities": "Tiltækar einingar",
"entity": "Eining",
"more_info": "Frekari upplýsingar",
"no_entities": "Engar einingar",
"set_state": "Setja stöðu",
"state": "Staða",
"title": "Stöður"
@@ -1688,7 +1652,6 @@
"minimum": "Lágmark",
"name": "Nafn",
"no_theme": "Ekkert þema",
"search": "Leita",
"show_icon": "Birta táknmynd?",
"show_name": "Birta nafn?",
"show_state": "Birta stöðu?",
@@ -1730,7 +1693,6 @@
"name": "Mynd"
},
"plant-status": {
"description": "Staða plöntu kortið er fyrir alla grasafræðingana þarna úti.",
"name": "Staða plöntu"
},
"sensor": {
@@ -1756,7 +1718,6 @@
},
"edit_card": {
"add": "Bæta við spjaldi",
"confirm_cancel": "Ertu viss um að þú viljir hætta við?",
"delete": "Eyða",
"edit": "Breyta",
"header": "Stillingar spjalds",
@@ -1765,12 +1726,10 @@
"pick_card": "Veldu spjald sem þú vilt bæta við.",
"show_code_editor": "Birta kóða ritil",
"show_visual_editor": "Birta sjónrænan ritil",
"toggle_editor": "Víxla ritli",
"unsaved_changes": "Þú ert með óvistaðar breytingar"
"toggle_editor": "Víxla ritli"
},
"edit_lovelace": {
"edit_title": "Breyta titli",
"title": "Titill"
"edit_title": "Breyta titli"
},
"edit_view": {
"add": "Bæta við sýn",
@@ -1789,7 +1748,6 @@
"migrate": "Uppfæra stillingar"
},
"raw_editor": {
"error_save_yaml": "Ekki tókst að vista YAML: {error}",
"header": "Breyta stillingum",
"save": "Vista",
"saved": "Vistað",
@@ -1907,7 +1865,6 @@
},
"trusted_networks": {
"abort": {
"not_allowed": "Tölvan þín er ekki leyfð.",
"not_whitelisted": "Tölvan þín er ekki hvítlistuð."
},
"step": {

View File

@@ -430,8 +430,6 @@
"activate": "Attiva"
},
"script": {
"cancel": "Annulla",
"cancel_multiple": "Annulla {number}",
"execute": "Esegui"
},
"service": {
@@ -527,10 +525,6 @@
"clear": "Cancella",
"show_areas": "Mostra le aree"
},
"data-table": {
"no-data": "Nessun dato",
"search": "Ricerca"
},
"date-range-picker": {
"end_date": "Data di fine",
"select": "Selezionare",
@@ -944,19 +938,6 @@
"introduction": "Usa le automazioni per dare vita alla tua casa.",
"load_error_not_editable": "Solo le Automazioni in automations.yaml sono modificabili.",
"load_error_unknown": "Errore durante il caricamento dell'Automazione ({err_no}).",
"max": {
"parallel": "Numero massimo di esecuzioni parallele",
"queued": "Lunghezza della coda"
},
"modes": {
"description": "La modalità controlla cosa succede quando l'automazione viene attivata mentre le azioni sono ancora in esecuzione da una attivazione precedente. Controllare {documentation_link} per maggiori informazioni.",
"documentation": "documentazione di automazione",
"label": "Modalità",
"parallel": "Parallelo",
"queued": "In coda",
"restart": "Riavviare",
"single": "Singolo (predefinito)"
},
"move_down": "Sposta sotto",
"move_up": "Sposta sopra",
"save": "Salva",
@@ -1375,7 +1356,6 @@
"confirm_text": "Dovresti rimuoverli dalla configurazione di Lovelace e dalle automazioni se contengono queste entità.",
"confirm_title": "Vuoi rimuovere {number} entità?"
},
"search": "Cerca entità",
"selected": "{number} selezionato",
"status": {
"disabled": "Disabilitato",
@@ -1406,8 +1386,7 @@
"entity_id": "ID Entità",
"name": "Nome",
"type": "Tipo"
},
"no_helpers": "Sembra che tu non abbia ancora nessun aiutante!"
}
},
"types": {
"input_boolean": "Commutatore",
@@ -1511,8 +1490,7 @@
"note_about_integrations": "Non tutte le integrazioni possono ancora essere configurate tramite l'interfaccia utente.",
"note_about_website_reference": "Ulteriori informazioni sono disponibili su ",
"rename_dialog": "Modifica il nome di questa voce di configurazione",
"rename_input_label": "Nome della voce",
"search": "Cerca integrazioni"
"rename_input_label": "Nome della voce"
},
"introduction": "Qui è possibile configurare i componenti e Home Assistant. Non è ancora possibile configurare tutto dall'Interfaccia Utente, ma ci stiamo lavorando.",
"logs": {
@@ -1665,7 +1643,6 @@
"introduction": "Le entità che non appartengono a un dispositivo possono essere impostate qui.",
"without_device": "Entità senza dispositivo"
},
"icon": "Icona",
"introduction": "Usa le scene per dare vita alla tua casa.",
"load_error_not_editable": "Solo le scene in scene.yaml sono modificabili.",
"load_error_unknown": "Errore durante il caricamento della scena ({err_no}).",
@@ -1699,26 +1676,9 @@
"delete_confirm": "Sei sicuro di voler eliminare questo script?",
"delete_script": "Elimina script",
"header": "Script: {name}",
"icon": "Icona",
"id": "ID Entità",
"id_already_exists": "Questo ID esiste già",
"id_already_exists_save_error": "Non è possibile salvare questo script perché l'ID non è univoco, scegliere un altro ID o lasciarlo vuoto per generarne automaticamente uno.",
"introduction": "Utilizzare gli script per eseguire una sequenza di azioni.",
"link_available_actions": "Ulteriori informazioni sulle azioni disponibili.",
"load_error_not_editable": "Solo gli script all'interno di scripts.yaml sono modificabili.",
"max": {
"parallel": "Numero massimo di esecuzioni parallele",
"queued": "Lunghezza della coda"
},
"modes": {
"description": "La modalità controlla cosa succede quando lo script viene invocato mentre è ancora in esecuzione da una o più invocazioni precedenti. Controllare il {documentation_link} per maggiori informazioni.",
"documentation": "documentazione dello script",
"label": "Modalità",
"parallel": "Parallelo",
"queued": "In coda",
"restart": "Riavviare",
"single": "Singolo (predefinito)"
},
"sequence": "Sequenza",
"sequence_sentence": "Sequenza di azioni di questo script."
},
@@ -1816,7 +1776,7 @@
"discovered_text": "I dispositivi verranno visualizzati qui una volta scoperti.",
"discovery_text": "I dispositivi rilevati verranno visualizzati qui. Seguire le istruzioni per il / i dispositivo / i e posizionare il / i dispositivo / i in modalità accoppiamento.",
"header": "Zigbee Home Automation - Aggiungi dispositivi",
"no_devices_found": "Nessun dispositivo trovato, assicurati che siano in modalità di associazione e tienili attivi mentre la scansione è in esecuzione.",
"no_devices_found": "Nessun dispositivo trovato, assicurati che siano in modalità di associazione e tienili svegli mentre la scansione è in esecuzione.",
"pairing_mode": "Assicurati che i tuoi dispositivi siano in modalità di associazione. Controlla le istruzioni del tuo dispositivo su come eseguire questa operazione.",
"search_again": "Cerca di nuovo",
"spinner": "Ricerca di dispositivi ZHA Zigbee ..."
@@ -2234,7 +2194,6 @@
"name": "Nome",
"no_theme": "Nessun tema",
"refresh_interval": "Intervallo di aggiornamento",
"search": "Ricerca",
"secondary_info_attribute": "Attributo informazioni secondarie",
"show_icon": "Mostrare l'icona?",
"show_name": "Mostrare il nome?",
@@ -2340,7 +2299,6 @@
},
"edit_card": {
"add": "Aggiungi scheda",
"confirm_cancel": "Sei sicuro di voler annullare?",
"delete": "Elimina scheda",
"duplicate": "Duplica scheda",
"edit": "Modifica",
@@ -2351,15 +2309,12 @@
"pick_card_view_title": "Quale scheda vorresti aggiungere alla tua vista {name}?",
"show_code_editor": "Mostra Editor di Codice",
"show_visual_editor": "Mostra Editor Visivo",
"toggle_editor": "Attiva / disattiva l'editor",
"typed_header": "{type} Configurazione Scheda",
"unsaved_changes": "Sono state apportate modifiche non salvate"
"toggle_editor": "Attiva / disattiva l'editor"
},
"edit_lovelace": {
"edit_title": "Modifica titolo",
"explanation": "Questo titolo è mostrato sopra tutte le tue viste nell'Interfaccia Utente di Lovelace.",
"header": "Titolo della tua interfaccia utente di Lovelace",
"title": "Titolo"
"header": "Titolo della tua interfaccia utente di Lovelace"
},
"edit_view": {
"add": "Aggiungi vista",
@@ -2446,8 +2401,6 @@
"entity": "Entità",
"entity_id": "ID entità",
"last_changed": "Ultima modifica",
"no_data": "Trovate entità non utilizzate",
"search": "Cerca entità",
"select_to_add": "Selezionare le entità che si desidera aggiungere a una scheda, quindi fare clic sul pulsante Aggiungi scheda.",
"title": "Entità non utilizzate"
},
@@ -2550,7 +2503,6 @@
},
"trusted_networks": {
"abort": {
"not_allowed": "Il tuo computer non è consentito.",
"not_whitelisted": "Il tuo computer non è nella whitelist."
},
"step": {

View File

@@ -430,8 +430,6 @@
"activate": "활성화"
},
"script": {
"cancel": "취소",
"cancel_multiple": "{number} 개 취소",
"execute": "실행"
},
"service": {
@@ -528,7 +526,6 @@
"show_areas": "영역 표시"
},
"data-table": {
"no-data": "데이터가 없습니다",
"search": "검색"
},
"date-range-picker": {
@@ -944,19 +941,6 @@
"introduction": "자동화를 사용하여 집에 생기를 불어넣으세요",
"load_error_not_editable": "automations.yaml 의 자동화만 편집할 수 있습니다.",
"load_error_unknown": "자동화를 읽어오는 도중 오류가 발생했습니다 ({err_no}).",
"max": {
"parallel": "최대 병렬 실행 수",
"queued": "대기열 길이"
},
"modes": {
"description": "모드는 자동화가 이전 트리거에서 동작이 실행되는 동안 트리거될 때 실행되는 작업을 제어합니다. 자세한 내용은 {documentation_link} 을(를) 확인해주세요.",
"documentation": "자동화 문서",
"label": "모드",
"parallel": "병렬",
"queued": "대기",
"restart": "재시작",
"single": "단일 (기본값)"
},
"move_down": "아래로 이동",
"move_up": "위로 이동",
"save": "저장하기",
@@ -1665,7 +1649,6 @@
"introduction": "기기에 속하지 않은 구성요소는 여기에서 설정할 수 있습니다.",
"without_device": "기기가 없는 구성요소"
},
"icon": "아이콘",
"introduction": "씬을 사용하여 집에 생기를 불어넣으세요",
"load_error_not_editable": "scenes.yaml 의 씬 만 편집할 수 있습니다.",
"load_error_unknown": "씬 불러오기 오류: ({err_no}).",
@@ -1699,26 +1682,9 @@
"delete_confirm": "이 스크립트를 삭제하시겠습니까?",
"delete_script": "스크립트 삭제",
"header": "스크립트: {name}",
"icon": "아이콘",
"id": "구성요소 ID",
"id_already_exists": "ID 가 이미 존재합니다",
"id_already_exists_save_error": "고유한 ID 가 아니므로 이 스크립트를 저장할 수 없습니다. 다른 ID 를 선택하거나 자동생성하려면 비워두세요.",
"introduction": "스크립트를 사용하여 동작의 시퀀스를 실행합니다.",
"link_available_actions": "사용가능한 동작에 대해 더 알아보기.",
"load_error_not_editable": "scripts.yaml 의 스크립트만 편집할 수 있습니다.",
"max": {
"parallel": "최대 병렬 실행 수",
"queued": "대기열 길이"
},
"modes": {
"description": "모드는 스크립트가 하나 이상의 이전 호출에서 계속 실행되는 동안 스크립트가 호출될 때 실행되는 작업을 제어합니다. 자세한 내용은 {documentation_link} 을(를) 확인해주세요.",
"documentation": "스크립트 문서",
"label": "모드",
"parallel": "병렬",
"queued": "대기",
"restart": "재시작",
"single": "단일 (기본값)"
},
"sequence": "시퀀스",
"sequence_sentence": "이 스크립트의 동작 시퀀스."
},
@@ -2340,7 +2306,6 @@
},
"edit_card": {
"add": "카드 추가하기",
"confirm_cancel": "취소하시겠습니까?",
"delete": "카드 삭제",
"duplicate": "카드 복사",
"edit": "편집",
@@ -2351,9 +2316,7 @@
"pick_card_view_title": "{name} 뷰에 어떤 카드를 추가하시겠습니까?",
"show_code_editor": "코드 편집기 보기",
"show_visual_editor": "비주얼 편집기 보기",
"toggle_editor": "에디터 전환",
"typed_header": "{type} 카드 구성",
"unsaved_changes": "저장하지 않은 변경 사항이 있습니다"
"toggle_editor": "에디터 전환"
},
"edit_lovelace": {
"edit_title": "제목 편집",
@@ -2446,8 +2409,6 @@
"entity": "구성요소",
"entity_id": "구성요소 ID",
"last_changed": "최근 변경 됨",
"no_data": "미사용 구성요소가 없습니다",
"search": "구성요소 검색",
"select_to_add": "카드에 추가 할 구성요소를 선택한 다음, 카드 추가 버튼을 클릭해주세요.",
"title": "미사용 구성요소"
},
@@ -2550,7 +2511,6 @@
},
"trusted_networks": {
"abort": {
"not_allowed": "이 컴퓨터는 허용 목록에 등록되지 않았습니다.",
"not_whitelisted": "이 컴퓨터는 허용 목록에 등록되어 있지 않습니다."
},
"step": {

View File

@@ -430,8 +430,6 @@
"activate": "Aktivéieren"
},
"script": {
"cancel": "Ofbriechen",
"cancel_multiple": "{number} ofbriechen",
"execute": "Ausféieren"
},
"service": {
@@ -527,10 +525,6 @@
"clear": "Läschen",
"show_areas": "Beräicher uweisen"
},
"data-table": {
"no-data": "Keng Donnée",
"search": "Sichen"
},
"date-range-picker": {
"end_date": "End Datum",
"select": "Auswielen",
@@ -944,16 +938,6 @@
"introduction": "Benotzt Automatismen fir däin Haus zum Liewen ze bréngen",
"load_error_not_editable": "Nëmmen Automatiounen am automations.yaml kënnen editéiert ginn.",
"load_error_unknown": "Feeler beim luede vun der Automatioun ({err_no}).",
"max": {
"parallel": "Max. Unzuel vun parallelen Duerchleef."
},
"modes": {
"documentation": "Dokumentatioun vum Automatisme",
"label": "Modus",
"parallel": "Parrallel",
"restart": "Neistart",
"single": "Eenzel (Standard)"
},
"move_down": "No ënne réckelen",
"move_up": "No uewe réckelen",
"save": "Späicheren",
@@ -1372,7 +1356,6 @@
"confirm_text": "Du solls déi vun der Lovelace Konfiguratioun an Automatisme läschen falls se dës Entitéiten enthalen.",
"confirm_title": "Wëllt dir {number} Entitéite läschen?"
},
"search": "Entitéite sichen",
"selected": "{number} ausgewielt",
"status": {
"disabled": "Deaktivéiert",
@@ -1403,8 +1386,7 @@
"entity_id": "ID vun der Entitéit",
"name": "Numm",
"type": "Typ"
},
"no_helpers": "Et gesäit sou aus wéi wann nach keng Helpers erstallt goufen."
}
},
"types": {
"input_boolean": "Ëmschalten",
@@ -1449,7 +1431,6 @@
"delete_confirm": "Sécher fir dës Integratioun ze läsche?",
"device_unavailable": "Apparat net erreechbar",
"devices": "{count} {count, plural,\n one {Apparat}\n other {Apparaten}\n}",
"documentation": "Dokumentatioun",
"entities": "{count} {count, plural,\n one {Entitéit}\n other {Entitéiten}\n}",
"entity_unavailable": "Entitéit net erreechbar",
"firmware": "Firmware: {version}",
@@ -1508,8 +1489,7 @@
"note_about_integrations": "Net all Integratioune könne nach via den Benotzer Interface konfiguréiert ginn.",
"note_about_website_reference": "Méi sin der disponibel op der ",
"rename_dialog": "Numm vun dësem Objet läschen",
"rename_input_label": "Numm",
"search": "Integratioune sichen"
"rename_input_label": "Numm"
},
"introduction": "Hei ass et méiglech är Komponenten vum Home Assistant ze konfiguréieren. Net alles ass méiglech fir iwwert den Interface anzestellen, mee mir schaffen drun.",
"logs": {
@@ -1662,7 +1642,6 @@
"introduction": "Entitéiten déi zu kengem Apparat gehéiere kënnen hei definéiert ginn.",
"without_device": "Entitéiten ouni Apparater"
},
"icon": "Ikon",
"introduction": "Benotzt Zeene fir äert Haus zum Liewen ze bréngen",
"load_error_not_editable": "Nëmme Zeene am scenes.yaml kënnen editéiert ginn.",
"load_error_unknown": "Feeler beim luede vun der Zeen ({err_no}).",
@@ -1696,23 +1675,9 @@
"delete_confirm": "Sécher fir dësen Skript ze läsche?",
"delete_script": "Skript läschen",
"header": "Skript: {name}",
"icon": "Ikon",
"id": "ID vun der Entitéit",
"id_already_exists": "Dës ID gëtt et schonn",
"id_already_exists_save_error": "Du kanns dëse Skript net späicheren well d'ID net eenzegarteg ass. Wiel eng aaner ID aus oder loss se eidel fir automatesch eng z'erstellen.",
"introduction": "Benotzt Skripter fir eng Sequenz vun Aktiounen auszeféieren.",
"link_available_actions": "Méi iwwert verfügbar Aktioune liesen.",
"load_error_not_editable": "Nëmme Skripten am scripts.yaml kënnen editéiert ginn.",
"max": {
"parallel": "Max. Unzuel vun parallelen Duerchleef."
},
"modes": {
"documentation": "Dokumentatioun vum Skript",
"label": "Modus",
"parallel": "Parrallel",
"restart": "Neistart",
"single": "Eenzel (Standard)"
},
"sequence": "Sequenz",
"sequence_sentence": "D'Sequenz vun Aktiounen an dësem Skript."
},
@@ -2223,7 +2188,6 @@
"name": "Numm",
"no_theme": "Kee Thema",
"refresh_interval": "Aktualiséierungs Intervall",
"search": "Sichen",
"secondary_info_attribute": "Sekundär Informatiouns Attribut",
"show_icon": "Ikon uweisen?",
"show_name": "Numm uweisen?",
@@ -2329,7 +2293,6 @@
},
"edit_card": {
"add": "Kaart dobäisetzen",
"confirm_cancel": "Sécher fir ofzebriechen ?",
"delete": "Kaart läschen",
"duplicate": "Kaart Replikéieren",
"edit": "Änneren",
@@ -2340,15 +2303,12 @@
"pick_card_view_title": "Wéieng Kaart wëllt dir zu ärer {name}Usiicht dobäisetzen?",
"show_code_editor": "Code Editeur uweisen",
"show_visual_editor": "Visuellen Editeur uweisen",
"toggle_editor": "Editeur ëmschalten",
"typed_header": "{type} Kaart Konfiguratioun",
"unsaved_changes": "Du hues ongespäichert Ännerungen"
"toggle_editor": "Editeur ëmschalten"
},
"edit_lovelace": {
"edit_title": "Titel änneren",
"explanation": "Dësen Titel gëtt iwwert den Usiichte vu Lovelace ugewisen.",
"header": "Titel vun ärem Lovelace Benotzer Interface",
"title": "Titel"
"header": "Titel vun ärem Lovelace Benotzer Interface"
},
"edit_view": {
"add": "Vue dobäisetzen",
@@ -2435,8 +2395,6 @@
"entity": "Entitéit",
"entity_id": "ID vun der Entitéit",
"last_changed": "Läscht Ännerung",
"no_data": "Keng onbenotzten Entitéite fonnt",
"search": "Entitéite sichen",
"select_to_add": "Wielt d'Entitéite aus déi zu enger Kaart dobäigesaat solle ginn an klickt den Kaart dobäisetzen Knäppchen",
"title": "Onbenotzten Entitéiten"
},
@@ -2539,7 +2497,6 @@
},
"trusted_networks": {
"abort": {
"not_allowed": "Däi Computer ass net erlaabt.",
"not_whitelisted": "Äre Computer ass net fräigeschalt."
},
"step": {
@@ -2715,10 +2672,6 @@
"not_used": "Nach nie benotzt ginn",
"token_title": "Jeton erneiren fir {clientId}"
},
"suspend": {
"description": "Soll d'Verbindung automateschzougemaach gin nodeems se 5 Minutten verstoppt war?",
"header": "Verbindung autmatesch zoumaachen"
},
"themes": {
"dropdown_label": "Thema",
"error_no_theme": "Keen Thema disponibel",

View File

@@ -430,8 +430,6 @@
"activate": "Aktiver"
},
"script": {
"cancel": "Avbryt",
"cancel_multiple": "Avbryt {number}",
"execute": "Utfør"
},
"service": {
@@ -527,9 +525,6 @@
"clear": "Tøm",
"show_areas": "Vis områder"
},
"data-table": {
"search": "Søk"
},
"date-range-picker": {
"end_date": "Sluttdato",
"select": "Velg",
@@ -559,7 +554,7 @@
"device": "Enhet",
"entity": "Beslektede entiteter",
"group": "Del av følgende grupper",
"integration": "Integrasjon",
"integration": "Integrasjoner",
"no_related_found": "Ingen relaterte elementer funnet.",
"scene": "Del av følgende scener",
"script": "Del av følgende skript"
@@ -943,19 +938,6 @@
"introduction": "Bruk automasjon for å få liv i hjemmet ditt",
"load_error_not_editable": "Kun automasjoner i automations.yaml kan redigeres.",
"load_error_unknown": "Feil ved lasting av automasjon ({err_no}).",
"max": {
"parallel": "Maks antall parallelle kjøringer",
"queued": "Kølengde"
},
"modes": {
"description": "Modusen styrer hva som skjer når automatiseringen utløses mens handlingene fremdeles kjører fra en tidligere trigger. Sjekk {documentation_link} for mer info.",
"documentation": "automatisering dokumentasjon",
"label": "Modus",
"parallel": "Parallell",
"queued": "I kø",
"restart": "Omstart",
"single": "Enkel (standard)"
},
"move_down": "Flytt ned",
"move_up": "Flytt opp",
"save": "Lagre",
@@ -1374,7 +1356,6 @@
"confirm_text": "Du bør fjerne dem fra Lovelace-konfigurasjonen og automasjoner hvis de inneholder disse entitetene.",
"confirm_title": "Vil du fjerne {number} enheter?"
},
"search": "Søk entiteter",
"selected": "{number} valgte",
"status": {
"disabled": "Deaktivert",
@@ -1405,8 +1386,7 @@
"entity_id": "Entitets-ID",
"name": "Navn",
"type": ""
},
"no_helpers": "Det ser ut som om du ikke har noen hjelpere ennå!"
}
},
"types": {
"input_boolean": "Veksle",
@@ -1437,7 +1417,7 @@
"title": "Informasjon"
},
"integration_panel_move": {
"link_integration_page": "integrasjonssiden",
"link_integration_page": "integrasjonsside",
"missing_zha": "Mangler ZHA konfigurasjonspanelet? Det ble flyttet til ZHA oppføringen på {integrations_page}.",
"missing_zwave": "Mangler Z-Wave konfigurasjonspanelet? Det ble flyttet til Z-Wave oppføringen på {integrations_page}."
},
@@ -1510,8 +1490,7 @@
"note_about_integrations": "Ikke alle integrasjoner kan konfigureres via brukergrensesnittet ennå.",
"note_about_website_reference": "Flere er tilgjengelige på",
"rename_dialog": "Redigere navnet på denne config-oppføringen",
"rename_input_label": "Navn på oppføring",
"search": "Søk integrasjoner"
"rename_input_label": "Navn på oppføring"
},
"introduction": "Her er det mulig å konfigurere dine komponenter og Home Assistant. Ikke alt er mulig å konfigurere fra brukergrensesnittet enda, men vi jobber med det.",
"logs": {
@@ -1664,7 +1643,6 @@
"introduction": "Enheter som ikke tilhører en enhet kan angis her.",
"without_device": "Entiteter uten enhet"
},
"icon": "Ikon",
"introduction": "Bruk scener for å gjøre hjemmet ditt mer levende.",
"load_error_not_editable": "Bare scener i scener.yaml kan redigeres.",
"load_error_unknown": "Feil ved lasting av scene ({err_no}).",
@@ -1698,26 +1676,9 @@
"delete_confirm": "Er du sikker på at du vil slette dette skriptet?",
"delete_script": "Slett skript",
"header": "Skript: {name}",
"icon": "Ikon",
"id": "Entitets-ID",
"id_already_exists": "Denne IDen finnes allerede",
"id_already_exists_save_error": "Du kan ikke lagre dette skriptet fordi IDen ikke er unik, velg en annen ID eller la den stå tom for automatisk å generere en.",
"introduction": "Bruk skript til å utføre en sekvens med handlinger.",
"link_available_actions": "Finn ut mer om tilgjengelige handlinger.",
"load_error_not_editable": "Bare skript inne i skript.yaml kan redigeres.",
"max": {
"parallel": "Maks antall parallelle kjøringer",
"queued": "Kølengde"
},
"modes": {
"description": "Modusen styrer hva som skjer når skriptet utløses mens det fremdeles kjører fra en eller flere tidligere påkallinger. Sjekk {documentation_link} for mer info.",
"documentation": "skript dokumentasjon",
"label": "Modus",
"parallel": "Parallell",
"queued": "I kø",
"restart": "Omstart",
"single": "Enkel (standard)"
},
"sequence": "Sekvens",
"sequence_sentence": "Sekvensen av handlingene til dette skriptet."
},
@@ -2233,7 +2194,6 @@
"name": "Navn",
"no_theme": "Ingen tema",
"refresh_interval": "Oppdateringsintervall",
"search": "Søk",
"secondary_info_attribute": "Sekundær informasjonsattributt",
"show_icon": "Vis ikon?",
"show_name": "Vis navn?",
@@ -2339,7 +2299,6 @@
},
"edit_card": {
"add": "Legg til kort",
"confirm_cancel": "Er du sikker på at du vil avbryte?",
"delete": "Slett kort",
"duplicate": "Dupliser kort",
"edit": "Rediger",
@@ -2350,14 +2309,12 @@
"pick_card_view_title": "Hvilket kort vil du legge til i {name} visningen?",
"show_code_editor": "Vis koderedigering",
"show_visual_editor": "Vis visuell redigering",
"toggle_editor": "Bytt redigering",
"unsaved_changes": "Du har endringer som ikke er lagret"
"toggle_editor": "Bytt redigering"
},
"edit_lovelace": {
"edit_title": "Rediger tittel",
"explanation": "Denne tittelen vises over alle visningene dine i Lovelace brukergrensesnittet.",
"header": "Tittel på ditt Lovelace brukergrensesnitt",
"title": "Tittel"
"header": "Tittel på ditt Lovelace brukergrensesnitt"
},
"edit_view": {
"add": "Legg til visning",
@@ -2546,7 +2503,6 @@
},
"trusted_networks": {
"abort": {
"not_allowed": "Datamaskinen din er ikke tillatt.",
"not_whitelisted": "Datamaskinen din er ikke hvitelistet."
},
"step": {

View File

@@ -430,8 +430,6 @@
"activate": "Activeren"
},
"script": {
"cancel": "Annuleer",
"cancel_multiple": "Annuleer {number}",
"execute": "Uitvoeren"
},
"service": {
@@ -527,10 +525,6 @@
"clear": "Wis",
"show_areas": "Toon gebieden"
},
"data-table": {
"no-data": "Geen gegevens",
"search": "Zoek"
},
"date-range-picker": {
"end_date": "Einddatum",
"select": "Selecteer",
@@ -944,19 +938,6 @@
"introduction": "Gebruik automatiseringen om je huis tot leven te brengen.",
"load_error_not_editable": "Alleen automatiseringen in automations.yaml kunnen worden bewerkt.",
"load_error_unknown": "Fout bij laden van automatisering ({err_no}).",
"max": {
"parallel": "Maximale aantal parallelle runs",
"queued": "Lengte van de wachtrij"
},
"modes": {
"description": "De modus bepaalt wat er gebeurt wanneer de automatisering wordt geactiveerd terwijl de acties nog steeds worden uitgevoerd door een vorige trigger. Controleer de {documentation_link} voor meer informatie.",
"documentation": "Automatisering documentatie",
"label": "Modus",
"parallel": "Parallel",
"queued": "In de wachtrij geplaatst",
"restart": "Herstarten",
"single": "Enkelvoudig (standaard)"
},
"move_down": "Verplaats omlaag",
"move_up": "Verplaats omhoog",
"save": "Opslaan",
@@ -1375,7 +1356,6 @@
"confirm_text": "Je moet ze zelf nog verwijderen uit je Lovelace-configuratie en automatiseringen als ze deze entiteiten bevatten.",
"confirm_title": "Wilt je {number} entiteiten verwijderen?"
},
"search": "Zoek entiteiten",
"selected": "{number} geselecteerd",
"status": {
"disabled": "Uitgeschakeld",
@@ -1406,8 +1386,7 @@
"entity_id": "Entiteits-ID",
"name": "Naam",
"type": "Type"
},
"no_helpers": "Er zijn geen helpers gevonden!"
}
},
"types": {
"input_boolean": "Schakelaar",
@@ -1511,8 +1490,7 @@
"note_about_integrations": "Nog niet alle integraties kunnen via de UI worden geconfigureerd.",
"note_about_website_reference": "Meer zijn beschikbaar op de ",
"rename_dialog": "Bewerk de naam van dit configuratie item",
"rename_input_label": "Invoernaam",
"search": "Zoek integraties"
"rename_input_label": "Invoernaam"
},
"introduction": "Hier kun je je componenten en Home Assistant configureren. Het is nog niet mogelijk om alles te configureren vanuit de interface, maar we werken er aan.",
"logs": {
@@ -1610,7 +1588,7 @@
"description_listen": "Luisteren naar onderwerp",
"description_publish": "Publiceer een pakket",
"listening_to": "Luisteren naar",
"message_received": "Bericht {id} ontvangen op {topic} om {time}:",
"message_received": "Bericht {id} ontvangen op {topic} om {time} :",
"payload": "Payload (sjabloon toegestaan)",
"publish": "Publiceer",
"start_listening": "Begin te luisteren",
@@ -1665,7 +1643,6 @@
"introduction": "Entiteiten die niet bij apparaten horen kunnen hier ingesteld worden.",
"without_device": "Entiteiten zonder apparaat"
},
"icon": "Pictogram",
"introduction": "Gebruik scènes om je huis tot leven te brengen.",
"load_error_not_editable": "Alleen scènes die zijn gedefinieerd in scenes.yaml kunnen worden bewerkt.",
"load_error_unknown": "Fout bij het laden van de scène ({err_no}).",
@@ -1699,26 +1676,9 @@
"delete_confirm": "Weet je zeker dat je dit script wilt verwijderen?",
"delete_script": "Verwijder script",
"header": "Script: {name}",
"icon": "Pictogram",
"id": "Entiteits-ID",
"id_already_exists": "Deze ID bestaat al",
"id_already_exists_save_error": "U kunt dit script niet opslaan omdat de ID niet uniek is, kies een andere ID of laat deze leeg om er automatisch een te genereren.",
"introduction": "Gebruik scripts om een reeks acties uit te voeren.",
"link_available_actions": "Meer informatie over beschikbare acties.",
"load_error_not_editable": "Alleen scripts in scripts.yaml kunnen worden bewerkt.",
"max": {
"parallel": "Maximum aantal parallelle runs",
"queued": "Lengte van de wachtrij"
},
"modes": {
"description": "De modus bepaalt wat er gebeurt wanneer het script wordt aangeroepen terwijl het nog steeds wordt uitgevoerd vanuit een of meer eerdere aanroepen. Controleer de {documentation_link} voor meer informatie.",
"documentation": "Scriptdocumentatie",
"label": "Modus",
"parallel": "Parallel",
"queued": "In de wachtrij geplaatst",
"restart": "Herstarten",
"single": "Enkelvoudig (standaard)"
},
"sequence": "Reeks",
"sequence_sentence": "De reeks van acties in dit script."
},
@@ -1816,7 +1776,7 @@
"discovered_text": "Apparaten zullen hier verschijnen zodra ze zijn ontdekt.",
"discovery_text": "Gevonden apparaten worden hier weergegeven. Volg de instructies voor je apparaat of apparaten en plaats het apparaat of de apparaten in de koppelingsmodus.",
"header": "Zigbee Home Automation - Apparaten toevoegen",
"no_devices_found": "Geen apparaten gevonden, zorg ervoor dat ze in de koppelingsmodus staan en dat de apparaten activiteit blijven maken gedurende het koppelen.",
"no_devices_found": "Geen apparaten gevonden, zorg ervoor dat ze in de koppelingsmodus staan en dat gedurende het ontdekken ze actief zijn.",
"pairing_mode": "Zorg ervoor dat de apparaten in de koppelingsmodus staan. Kijk in de instructies van het apparaat hoe dit moet.",
"search_again": "Opnieuw zoeken",
"spinner": "Zoeken naar ZHA Zigbee-apparaten ..."
@@ -1987,21 +1947,15 @@
"group": "Groep",
"header": "Z-Wave Knooppunt-beheer",
"introduction": "Voer Z-Wave commando's uit die een enkel knooppunt beïnvloeden. Kies een knooppunt om een lijst met beschikbare commando's te zien.",
"node_protection": "Node beveiliging",
"node_to_control": "Node om te besturen",
"nodes": "Knooppunten",
"nodes_hint": "Selecteer knooppunt om de opties per knooppunt te bekijken",
"nodes_in_group": "Andere nodes in deze groep:",
"pooling_intensity": "Polling intensiteit",
"protection": "Bescherming",
"remove_broadcast": "Broadcast verwijderen",
"remove_from_group": "Verwijderen uit groep",
"set_protection": "Bescherming instellen"
},
"ozw_log": {
"header": "OZW-logboek",
"introduction": "Bekijk het logboek. 0 is het minimum (laadt het gehele logboek) en 1000 is het maximum. Laad toont een statisch logboek en staart wordt automatisch bijgewerkt met het laatst opgegeven aantal regels van het logboek.",
"last_log_lines": "Aantal laatste logboekregels",
"load": "Laden",
"tail": "Staart"
},
@@ -2232,7 +2186,6 @@
"name": "Naam",
"no_theme": "Geen thema",
"refresh_interval": "Vernieuwingsinterval",
"search": "Zoek",
"secondary_info_attribute": "Secundair Info attribuut",
"show_icon": "Pictogram Weergeven?",
"show_name": "Naam weergeven?",
@@ -2319,7 +2272,7 @@
"name": "Boodschappenlijst"
},
"thermostat": {
"description": "De Thermostaat-kaart geeft controle over uw klimaateenheid. Hiermee kunt u de temperatuur en modus van de entiteit wijzigen.",
"description": "De Thermostat-kaart geeft controle over uw klimaateenheid. Hiermee kunt u de temperatuur en modus van de entiteit wijzigen.",
"name": "Thermostaat"
},
"vertical-stack": {
@@ -2338,7 +2291,6 @@
},
"edit_card": {
"add": "Kaart toevoegen",
"confirm_cancel": "Weet u zeker dat u wilt afbreken?",
"delete": "Verwijder kaart",
"duplicate": "Dupliceer kaart",
"edit": "Bewerken",
@@ -2349,15 +2301,12 @@
"pick_card_view_title": "Welke kaart wil je toevoegen aan je {name} weergave?",
"show_code_editor": "Code-editor weergeven",
"show_visual_editor": "Visual Editor weergeven",
"toggle_editor": "Toggle Editor",
"typed_header": "{type} Kaartconfiguratie",
"unsaved_changes": "U heeft niet-opgelsagen wijzigingen"
"toggle_editor": "Toggle Editor"
},
"edit_lovelace": {
"edit_title": "Wijzig titel",
"explanation": "Deze titel wordt getoond in al je Lovelace weergaven.",
"header": "Titel van je Lovelace UI",
"title": "Titel"
"header": "Titel van je Lovelace UI"
},
"edit_view": {
"add": "Weergave toevoegen",
@@ -2444,8 +2393,6 @@
"entity": "Entiteit",
"entity_id": "Entiteits-ID",
"last_changed": "Laatst gewijzigd",
"no_data": "Geen ongebruikte entiteiten gevonden",
"search": "Zoek entiteiten",
"select_to_add": "Selecteer de entiteiten die je aan een kaart wilt toevoegen en klik vervolgens op de knop Kaart toevoegen.",
"title": "Ongebruikte entiteiten"
},
@@ -2548,7 +2495,6 @@
},
"trusted_networks": {
"abort": {
"not_allowed": "Uw computer is niet toegestaan.",
"not_whitelisted": "Je computer staat niet op de whitelist."
},
"step": {

View File

@@ -430,8 +430,6 @@
"activate": "Aktywuj"
},
"script": {
"cancel": "Anuluj",
"cancel_multiple": "Anuluj {number}",
"execute": "Uruchom"
},
"service": {
@@ -527,10 +525,6 @@
"clear": "Wyczyść",
"show_areas": "Pokaż obszary"
},
"data-table": {
"no-data": "Brak danych",
"search": "Szukaj"
},
"date-range-picker": {
"end_date": "Data końcowa",
"select": "Wybierz",
@@ -944,19 +938,6 @@
"introduction": "Użyj automatyzacji, aby ożywić swój dom",
"load_error_not_editable": "Tylko automatyzacje zdefiniowane w pliku automations.yaml są edytowalne.",
"load_error_unknown": "Wystąpił błąd podczas ładowania automatyzacji ({err_no}).",
"max": {
"parallel": "Maksymalna liczba równoległych uruchomień",
"queued": "Długość kolejki"
},
"modes": {
"description": "Tryb kontroluje, co się dzieje podczas uruchamiania automatyzacji, gdy jest ona nadal wykonywana z jednego lub kilku poprzednich uruchomień. Zapoznaj się z {documentation_link} aby uzyskać więcej informacji.",
"documentation": "dokumentacją automatyzacji",
"label": "Tryb",
"parallel": "Równolegle",
"queued": "Kolejkowanie",
"restart": "Restart",
"single": "Pojedynczy (domyślnie)"
},
"move_down": "Przesuń w dół",
"move_up": "Przesuń w górę",
"save": "Zapisz",
@@ -1375,7 +1356,6 @@
"confirm_text": "Powinieneś uprzednio usunąć integrację z automatyzacji i konfiguracji Lovelace, jeśli encje w niej występują.",
"confirm_title": "Czy chcesz usunąć encje: {number}?"
},
"search": "Szukaj encji",
"selected": "wybrano {number}",
"status": {
"disabled": "Wyłączone",
@@ -1406,8 +1386,7 @@
"entity_id": "Identyfikator encji",
"name": "Nazwa",
"type": "Typ"
},
"no_helpers": "Wygląda na to, że jeszcze nie masz pomocników!"
}
},
"types": {
"input_boolean": "Przełącznik",
@@ -1511,8 +1490,7 @@
"note_about_integrations": "Jeszcze nie wszystkie integracje można skonfigurować za pomocą interfejsu użytkownika.",
"note_about_website_reference": "Więcej jest dostępnych na stronie integracji ",
"rename_dialog": "Edytuj nazwę tego wpisu konfiguracji",
"rename_input_label": "Nazwa wpisu",
"search": "Szukaj integracji"
"rename_input_label": "Nazwa wpisu"
},
"introduction": "Tutaj możesz skonfigurować Home Assistanta i jego komponenty. Nie wszystkie opcje można konfigurować z interfejsu użytkownika, ale pracujemy nad tym.",
"logs": {
@@ -1665,7 +1643,6 @@
"introduction": "W tym miejscu można konfigurować encje, które nie należą do żadnego urządzenia.",
"without_device": "Encje bez urządzenia"
},
"icon": "Ikona",
"introduction": "Użyj scen, aby ożywić swój dom.",
"load_error_not_editable": "Tylko sceny zdefiniowane w pliku scenes.yaml są edytowalne.",
"load_error_unknown": "Błąd ładowania sceny ({err_no}).",
@@ -1699,26 +1676,9 @@
"delete_confirm": "Czy na pewno chcesz usunąć ten skrypt?",
"delete_script": "Usuń skrypt",
"header": "Skrypt: {name}",
"icon": "Ikona",
"id": "Identyfikator encji",
"id_already_exists": "Ten identyfikator już istnieje",
"id_already_exists_save_error": "Nie możesz zapisać tego skryptu, ponieważ identyfikator nie jest unikalny, wprowadź inny identyfikator lub pozostaw pole puste, aby wygenerować go automatycznie.",
"introduction": "Użyj skryptów, aby wykonać sekwencję akcji.",
"link_available_actions": "Dowiedz się więcej o dostępnych akcjach.",
"load_error_not_editable": "Tylko skrypty zdefiniowane w pliku scripts.yaml są edytowalne.",
"max": {
"parallel": "Maksymalna liczba równoległych uruchomień",
"queued": "Długość kolejki"
},
"modes": {
"description": "Tryb kontroluje, co się dzieje podczas uruchamiania skryptu, gdy jest on nadal wykonywany z jednego lub kilku poprzednich uruchomień. Zapoznaj się z {documentation_link} aby uzyskać więcej informacji.",
"documentation": "dokumentacją skryptów",
"label": "Tryb",
"parallel": "Równolegle",
"queued": "Kolejkowanie",
"restart": "Restart",
"single": "Pojedynczy (domyślnie)"
},
"sequence": "Sekwencja",
"sequence_sentence": "Sekwencja akcji tego skryptu."
},
@@ -2234,7 +2194,6 @@
"name": "Nazwa",
"no_theme": "Bez motywu",
"refresh_interval": "Częstotliwość odświeżania",
"search": "Szukaj",
"secondary_info_attribute": "Dodatkowy atrybut informacyjny",
"show_icon": "Wyświetlanie ikony",
"show_name": "Wyświetlanie nazwy",
@@ -2340,7 +2299,6 @@
},
"edit_card": {
"add": "Dodaj kartę",
"confirm_cancel": "Czy na pewno chcesz anulować?",
"delete": "Usuń kartę",
"duplicate": "Duplikuj kartę",
"edit": "Edytuj",
@@ -2351,15 +2309,12 @@
"pick_card_view_title": "Którą kartę chcesz dodać do widoku {name}?",
"show_code_editor": "Edytor kodu",
"show_visual_editor": "Edytor wizualny",
"toggle_editor": "Przełącz edytor",
"typed_header": "Konfiguracja karty {type}",
"unsaved_changes": "Masz niezapisane zmiany"
"toggle_editor": "Przełącz edytor"
},
"edit_lovelace": {
"edit_title": "Edytuj tytuł",
"explanation": "Tytuł jest wyświetlany ponad wszystkimi widokami interfejsu użytkownika Lovelace",
"header": "Tytuł interfejsu użytkownika Lovelace",
"title": "Tytuł"
"header": "Tytuł interfejsu użytkownika Lovelace"
},
"edit_view": {
"add": "Dodaj widok",
@@ -2446,8 +2401,6 @@
"entity": "Encja",
"entity_id": "Identyfikator encji",
"last_changed": "Ostatnia zmiana",
"no_data": "Brak nieużywanych encji",
"search": "Wyszukaj encje",
"select_to_add": "Wybierz encje, które chcesz dodać do karty, a następnie kliknij przycisk dodawania karty.",
"title": "Nieużywane encje"
},
@@ -2550,7 +2503,6 @@
},
"trusted_networks": {
"abort": {
"not_allowed": "Twój komputer nie ma zezwolenia.",
"not_whitelisted": "Twój komputer nie znajduje się na białej liście."
},
"step": {

View File

@@ -48,19 +48,6 @@
"none": "Nenhum",
"sleep": "Suspender"
}
},
"humidifier": {
"mode": {
"auto": "Automático",
"away": "Ausente",
"baby": "Bebê",
"boost": "Turbo",
"comfort": "Conforto",
"eco": "Econômico",
"home": "Casa",
"normal": "Normal",
"sleep": "Sono"
}
}
},
"state_badge": {
@@ -401,12 +388,6 @@
"reverse": "Reverter",
"speed": "Velocidade"
},
"humidifier": {
"humidity": "Umidade desejada",
"mode": "Modo",
"on_entity": "{name} ligado",
"target_humidity_entity": "umidade desejada em {name}"
},
"light": {
"brightness": "Brilho",
"color_temperature": "Temperatura de cor",
@@ -430,8 +411,6 @@
"activate": "Ativar"
},
"script": {
"cancel": "Cancelar",
"cancel_multiple": "Cancelar {number}",
"execute": "Executar"
},
"service": {
@@ -501,10 +480,8 @@
"delete": "Eliminar",
"error_required": "Obrigatório",
"loading": "Carregando",
"menu": "Menu",
"next": "Próximo",
"no": "Não",
"overflow_menu": "Menu expansível",
"previous": "Anterior",
"refresh": "Atualizar",
"save": "Salvar",
@@ -527,15 +504,6 @@
"clear": "Limpar",
"show_areas": "Mostrar áreas"
},
"data-table": {
"no-data": "Sem dados",
"search": "Procurar"
},
"date-range-picker": {
"end_date": "Data final",
"select": "Selecione",
"start_date": "Data de início"
},
"device-picker": {
"clear": "Limpar",
"device": "Dispositivo",
@@ -652,7 +620,7 @@
"pattern": "Padrão Regex para validação do lado do cliente",
"text": "Texto"
},
"platform_not_loaded": "A integração {plataforma} não está carregada. Por favor adicione-a em sua configuração adicionando 'default_config:' ou ''{platform}:''.",
"platform_not_loaded": "A integração {platform} não está carregada. Por favor, adicione sua configuração adicionando 'default_config:' ou ''{platform}:''.",
"required_error_msg": "Este campo é obrigatório",
"yaml_not_editable": "As configurações desta entidade não podem ser editadas a partir da interface do usuário. Somente entidades configuradas a partir da interface do usuário são configuráveis a partir da interface do usuário."
},
@@ -703,7 +671,7 @@
"payload_display": "Exibição de carga",
"recent_messages": "{n} mensagem(ns) recebida(s) mais recentemente",
"show_as_yaml": "Mostrar como YAML",
"title": "Informação de depuração de {device}",
"title": "Informação de depuração do {device}",
"triggers": "Gatilhos"
},
"options_flow": {
@@ -724,10 +692,10 @@
},
"zha_device_info": {
"buttons": {
"add": "Adicionar dispositivos através deste dispositivo",
"add": "Adicionar Dispositivos",
"reconfigure": "Reconfigurar O Dispositivo",
"remove": "Remover dispositivo",
"zigbee_information": "Assinatura de dispositivo Zigbee"
"zigbee_information": "Informações sobre o Zigbee"
},
"confirmations": {
"remove": "Tem a certeza que quer remover o dispositivo?"
@@ -747,7 +715,7 @@
"unknown": "Desconhecido",
"zha_device_card": {
"area_picker_label": "Área",
"device_name_placeholder": "Alterar o nome do dispositivo",
"device_name_placeholder": "Nome",
"update_name_button": "Atualizar Nome"
}
}
@@ -773,8 +741,8 @@
"notification_toast": {
"connection_lost": "Conexão perdida. Reconectando…",
"service_call_failed": "Falha ao chamar o serviço {service}.",
"started": "O Home Assistant foi iniciado!",
"starting": "O Home Assistant está iniciando, algumas funcionalidades podem estar indisponíveis até que esteja iniciado.",
"started": "Home Assistant foi iniciado!",
"starting": "Home Assistant está iniciando, algumas funcionalidades podem estar indisponíveis até que esteja iniciado.",
"triggered": "{name} disparado"
},
"panel": {
@@ -943,19 +911,6 @@
"introduction": "Use automações para trazer vida à sua casa",
"load_error_not_editable": "Somente automações em automations.yaml são editáveis.",
"load_error_unknown": "Erro ao carregar a automação ({err_no}).",
"max": {
"parallel": "Número máximo de execuções paralelas",
"queued": "Comprimento máximo da fila"
},
"modes": {
"description": "O modo controla o que acontece quando a automação é acionada enquanto as ações ainda estão rodando a partir de um acionamento anterior. Consulte o {documentation_link} para mais informações.",
"documentation": "documentação da automação",
"label": "Modo",
"parallel": "Paralelo",
"queued": "Enfileirado",
"restart": "Reiniciar",
"single": "Único (padrão)"
},
"move_down": "Mover para baixo",
"move_up": "Mover para cima",
"save": "Salvar",
@@ -999,7 +954,7 @@
"start": "Iniciar"
},
"mqtt": {
"label": "MQTT",
"label": "",
"payload": "Valor (opcional)",
"topic": "Tópico"
},
@@ -1315,7 +1270,7 @@
"device_not_found": "Dispositivo não encontrado.",
"entities": {
"add_entities_lovelace": "Adicionar ao Lovelace",
"disabled_entities": "+{count} {count, plural,\n one {entidade desabilitada}\n other {entidades desabilitadas}\n}",
"disabled_entities": "+{count} {count, plural,\n one {disabled entity}\n other {disabled entities}\n}",
"entities": "Entidades",
"hide_disabled": "Ocultar desativado(s)",
"none": "Este dispositivo não possui entidades"
@@ -1374,7 +1329,6 @@
"confirm_text": "Você deve removê-los de sua configuração Lovelace e automatizações se eles contiverem essas entidades.",
"confirm_title": "Deseja remover {number} entidades?"
},
"search": "Procurar entidades",
"selected": "{number} selecionado",
"status": {
"disabled": "Desativado",
@@ -1395,7 +1349,7 @@
"description": "Elementos que podem ajudar a construir automações.",
"dialog": {
"add_helper": "Adicionar ajudante",
"add_platform": "Adicionar {platform}",
"add_platform": "Adicionar {plataform}",
"create": "Criar"
},
"picker": {
@@ -1405,8 +1359,7 @@
"entity_id": "ID da entidade",
"name": "Nome",
"type": "Tipo"
},
"no_helpers": "Parece que você ainda não tem ajudantes!"
}
},
"types": {
"input_boolean": "Alternar",
@@ -1420,7 +1373,6 @@
"built_using": "Construído usando",
"caption": "Informações",
"custom_uis": "UIs personalizadas:",
"description": "Informações sobre a instalação do Home Assistant",
"developed_by": "Desenvolvido por um monte de pessoas incríveis.",
"documentation": "Documentação",
"frontend": "frontend-ui",
@@ -1437,9 +1389,7 @@
"title": "Info"
},
"integration_panel_move": {
"link_integration_page": "Página de integrações",
"missing_zha": "Procurando o painel de configuração do ZHA? Ele foi movido para a entrada ZHA em {integrations_page}.",
"missing_zwave": "Procurando o painel de configuração do Z-Wave? Ele foi movido para a entrada Z-Wave em {integrations_page}."
"link_integration_page": "Página de integrações"
},
"integrations": {
"add_integration": "Adicionar integração",
@@ -1451,7 +1401,6 @@
"delete_confirm": "Tem certeza de que deseja excluir essa integração?",
"device_unavailable": "dispositivo indisponível",
"devices": "{count} {count, plural,\none {dispositivo}\nother {dispositivos}\n}",
"documentation": "Documentação",
"entities": "{count} {count, plural,\none {entidade}\nother {entidades}\n}",
"entity_unavailable": "entidade indisponível",
"firmware": "Firmware: {version}",
@@ -1510,15 +1459,13 @@
"note_about_integrations": "Nem todas as integrações podem ser configuradas via interface do usuário ainda.",
"note_about_website_reference": "Existem mais disponíveis no ",
"rename_dialog": "Edite o nome desta entrada de configuração",
"rename_input_label": "Nome da entrada",
"search": "Procurar integrações"
"rename_input_label": "Nome da entrada"
},
"introduction": "Aqui é possível configurar seus componentes e Home Assistant. Nem tudo é possível configurar via UI, mas estamos trabalhando nisso.",
"logs": {
"caption": "Logs",
"clear": "Limpar",
"description": "Exibir os logs do Home Assistant",
"details": "Detalhes do log ({level})",
"details": "Detalhes do log ({Level})",
"load_full_log": "Carregar todos os logs do Home Assistant",
"loading_log": "Carregando log de erros…",
"multiple_messages": "a mensagem ocorreu pela primeira às {time} e apareceu {counter} vezes",
@@ -1605,7 +1552,6 @@
}
},
"mqtt": {
"button": "Configurar",
"description_listen": "Ouvir um tópico",
"description_publish": "Publicar um pacote",
"listening_to": "Ouvindo",
@@ -1664,7 +1610,6 @@
"introduction": "Entidades que não pertencem a um dispositivo podem ser definidas aqui.",
"without_device": "Entidades sem dispositivos"
},
"icon": "Ícone",
"introduction": "Use cenas para dar vida à sua casa.",
"load_error_not_editable": "Somente cenas em scenes.yaml são editáveis.",
"load_error_unknown": "Erro ao carregar a automação ({err_no}).",
@@ -1698,26 +1643,9 @@
"delete_confirm": "Tem certeza de que deseja excluir este script?",
"delete_script": "Excluir script",
"header": "Script: {name}",
"icon": "Ícone",
"id": "ID da entidade",
"id_already_exists": "Este ID já existe",
"id_already_exists_save_error": "Você não pode salvar este script porque o ID não é único, escolha outro ID ou deixe em branco para gerar um automaticamente.",
"introduction": "Use scripts para executar uma sequência de ações.",
"link_available_actions": "Saiba mais sobre as ações disponíveis.",
"load_error_not_editable": "Apenas scripts dentro scripts.yaml são editáveis.",
"max": {
"parallel": "Número máximo de execuções paralelas",
"queued": "Comprimento máximo da fila"
},
"modes": {
"description": "O modo controla o que acontece quando o script é chamado enquanto ainda está executando de uma ou mais chamadas anteriores. Consulte o {documentation_link} para mais informações.",
"documentation": "documentação do script",
"label": "Modo",
"parallel": "Paralelo",
"queued": "Enfileirado",
"restart": "Reiniciar",
"single": "Único (padrão)"
},
"sequence": "Seqüência",
"sequence_sentence": "A sequência de ações deste script."
},
@@ -1744,12 +1672,7 @@
"core": "Recarregar localização & customizações",
"group": "Recarregar os grupos",
"heading": "Recarregando a configuração YAML",
"input_boolean": "Recarregar entradas de booleano",
"input_datetime": "Recarregar entradas de data",
"input_number": "Recarregar entradas numéricas",
"input_select": "Recarregar entradas de seleção",
"input_text": "Recarregar entradas de texto",
"introduction": "Algumas partes do Home Assistant podem ser recarregadas sem precisar reiniciar. Pressionar recarregar descarregará sua configuração YAML atual e carregará a nova.",
"introduction": "Algumas partes do Home Assistant podem ser recarregadas sem a necessidade de reiniciar. Pressionar recarregar, descarregará sua configuração YAML atual e carregará a nova.",
"person": "Recarregar pessoas",
"scene": "Recarregar cenas",
"script": "Recarregar os scripts",
@@ -1766,7 +1689,7 @@
"validation": {
"check_config": "Verificar a configuração",
"heading": "Validação da configuração",
"introduction": "Valide sua configuração se você recentemente fez algumas mudanças na sua configuração e quer ter certeza de que tudo é valido",
"introduction": "Valide sua configuração se você recentemente fez algumas mudanças na sua configuração e quiser certificar-se de que tudo é válido.",
"invalid": "Configuração inválida",
"valid": "Configuração válida!"
}
@@ -1814,7 +1737,6 @@
"discovered_text": "Os dispositivos descobertos aparecerão aqui.",
"discovery_text": "Dispositivos descobertos serão exibidos aqui. Siga as instruções para o(s) seu(s) dispositivo(s) e coloque o(s) dispositivo(s) no modo de emparelhamento.",
"header": "Zigbee Home Automation - Adicionar dispositivos",
"no_devices_found": "Nenhum dispositivo encontrado, verifique se eles estão em modo de pareamento e os mantenha acordados enquanto a descoberta estiver ativa.",
"pairing_mode": "Certifique-se de que seus dispositivos estão em modo de pareamento. Verifique as instruções do seu dispositivo para saber como fazer isso.",
"search_again": "Pesquisar novamente",
"spinner": "Procurando por dispositivos ZHA Zigbee…"
@@ -1978,24 +1900,19 @@
"true": "Verdadeiro"
},
"node_management": {
"add_to_group": "Adicionar ao Grupo",
"entities": "Entidades deste nó",
"exclude_entity": "Excluir esta entidade do Home Assistant",
"add_to_group": "Adicionar ao grupo",
"group": "Grupo",
"header": "Gerenciamento de nó Z-Wave",
"node_group_associations": "Associações de grupos de nós",
"node_protection": "Proteção dos nós",
"nodes": "Nós",
"protection": "Proteção",
"remove_from_group": "Remover do Grupo",
"set_protection": "Definir proteção"
},
"ozw_log": {
"header": "OZW Log",
"introduction": "Veja o log. 0 é o mínimo (carrega o log inteiro) e 1000 é o máximo. A carga mostrará um log estático e tail será atualizada automaticamente com o último número especificado de linhas do log.",
"last_log_lines": "Número da última linhas de log",
"load": "Carregar",
"tail": "Ver últimas linhas"
"load": "Carregar"
},
"services": {
"add_node": "Adicionar Nó",
@@ -2006,8 +1923,6 @@
"node_info": "Informações do Nó",
"print_node": "Imprimir nó",
"refresh_entity": "Atualizar Entidade",
"refresh_node": "Atualizar Nó",
"remove_failed_node": "Remover Nó com Falha",
"remove_node": "Remover Nó",
"replace_failed_node": "Substituir Nó com Falha",
"save_config": "Salvar Configuração",
@@ -2092,23 +2007,11 @@
},
"history": {
"period": "Período",
"ranges": {
"last_week": "Semana Anterior",
"this_week": "Esta semana",
"today": "Hoje",
"yesterday": "Ontem"
},
"showing_entries": "Exibindo entradas para"
},
"logbook": {
"entries_not_found": "Não foram encontradas registros no diário de bordo.",
"period": "Período",
"ranges": {
"last_week": "Semana anterior",
"this_week": "Esta semana",
"today": "Hoje",
"yesterday": "Ontem"
},
"showing_entries": "Exibindo registros de"
},
"lovelace": {
@@ -2146,8 +2049,8 @@
"clear_items": "Limpar itens marcados"
},
"starting": {
"description": "O Home Assistant está iniciando, por favor aguarde...",
"header": "O Home Assistant está iniciando..."
"description": "Home Assistant está iniciando, por favor aguarde...",
"header": "Home Assistant está iniciando..."
}
},
"changed_toast": {
@@ -2224,7 +2127,6 @@
"name": "Nome",
"no_theme": "Nenhum tema",
"refresh_interval": "Intervalo de atualização",
"search": "Procurar",
"secondary_info_attribute": "Atributo de informação secundária",
"show_icon": "Mostrar Icone?",
"show_name": "Mostrar nome?",
@@ -2249,10 +2151,6 @@
"description": "O cartão Pilha Horizontal permite empilhar vários cartões, para que eles sempre fiquem próximos um do outro no espaço de uma coluna.",
"name": "Pilha horizontal"
},
"humidifier": {
"description": "O cartão Umidificador fornece controle da sua entidade de umidificador. Permite alterar a umidade e o modo da entidade.",
"name": "Umidificador"
},
"iframe": {
"description": "O cartão de Página Web permite incorporar sua página web favorita diretamente no Home Assistant.",
"name": "Página Web"
@@ -2330,7 +2228,6 @@
},
"edit_card": {
"add": "Adicionar Cartão",
"confirm_cancel": "Tem certeza de que deseja cancelar?",
"delete": "Excluir Cartão",
"duplicate": "Duplicar",
"edit": "Editar",
@@ -2341,22 +2238,19 @@
"pick_card_view_title": "Qual cartão você gostaria de adicionar à sua visualização {name} ?",
"show_code_editor": "Mostrar Editor de Código",
"show_visual_editor": "Mostrar Editor Visual",
"toggle_editor": "Alternar Editor",
"typed_header": "Configuração de cartão de {type}",
"unsaved_changes": "Você tem alterações não salvas"
"toggle_editor": "Alternar Editor"
},
"edit_lovelace": {
"edit_title": "Editar título",
"explanation": "Este título é mostrado acima de todas as suas visualizações no Lovelace.",
"header": "Título da sua interface do Lovelace",
"title": "Título"
"header": "Título da sua interface do Lovelace"
},
"edit_view": {
"add": "Editar visualização",
"delete": "Excluir visualização",
"edit": "Editar visualização",
"header": "Configurações",
"header_name": "Configuração da Visualização {name}",
"header_name": "Configuração da visualização {nome}",
"move_left": "Mover à esquerda",
"move_right": "Mover à direita",
"tab_badges": "Distintivos",
@@ -2436,8 +2330,6 @@
"entity": "Entidade",
"entity_id": "ID da entidade",
"last_changed": "Última alteração",
"no_data": "Nenhuma entidade não utilizada encontrada",
"search": "Procurar entidades",
"select_to_add": "Selecione as entidades que você deseja adicionar a um cartão e clique no botão Adicionar cartão.",
"title": "Entidades não utilizadas"
},
@@ -2452,7 +2344,7 @@
"entity_non_numeric": "Entidade não é numérica: {entity}",
"entity_not_found": "Entidade não disponível: {entity}",
"entity_unavailable": "{entity} não está disponível",
"starting": "O Home Assistant está iniciando, algumas funcionalidades podem estar temporariamente indisponíveis"
"starting": "Home Assistant está iniciando, algumas funcionalidades podem estar indisponíveis"
}
},
"mailbox": {
@@ -2540,7 +2432,6 @@
},
"trusted_networks": {
"abort": {
"not_allowed": "Seu computador não tem permissão.",
"not_whitelisted": "Seu computador não está na lista de permissões."
},
"step": {
@@ -2678,7 +2569,7 @@
"description": "Crie tokens de acesso de longa duração para permitir que seus scripts interajam com sua instância do Home Assistant. Cada token será válido por 10 anos a partir da criação. Os seguintes tokens de acesso de longa duração estão atualmente ativos.",
"empty_state": "Você ainda não tem tokens de acesso de longa duração.",
"header": "Tokens de acesso de longa duração",
"last_used": "Usado pela última vez em {date} de {location}",
"last_used": "Usado pela última vez em {date} em {location}",
"learn_auth_requests": "Aprenda como fazer solicitações autenticadas.",
"not_used": "Nunca foi usado",
"prompt_copy_token": "Copie seu token de acesso. Ele não será mostrado novamente.",
@@ -2711,14 +2602,10 @@
"current_token_tooltip": "Não é possível excluir o token de atualização atual",
"delete_failed": "Falha ao excluir o token de acesso.",
"description": "Cada token de atualização representa uma sessão de login. Os tokens de atualização serão removidos automaticamente quando você clicar em efetuar logout. Os tokens de atualização a seguir estão ativos na sua conta no momento.",
"header": "Tokens de atualização",
"last_used": "Usado pela última vez em {date} de {location}",
"header": "Atualizar tokens",
"last_used": "Usado pela última vez em {date} em {location}",
"not_used": "Nunca foi usado",
"token_title": "Token de atualização para {clientId}"
},
"suspend": {
"description": "Devemos fechar a conexão com o servidor depois de ficar oculto por 5 minutos?",
"header": "Fechar a conexão automaticamente"
"token_title": "Atualizar o token para {clientId}"
},
"themes": {
"dropdown_label": "Tema",

View File

@@ -430,8 +430,6 @@
"activate": "Ativar"
},
"script": {
"cancel": "Cancelar",
"cancel_multiple": "Cancelar {número}",
"execute": "Executar"
},
"service": {
@@ -527,9 +525,6 @@
"clear": "Limpar",
"show_areas": "Mostrar áreas"
},
"data-table": {
"search": "Procurar"
},
"date-range-picker": {
"end_date": "Data de fim",
"select": "Selecione",
@@ -943,13 +938,6 @@
"introduction": "Crie automações para dar vida à sua casa",
"load_error_not_editable": "Apenas as automações em automations.yaml são editáveis.",
"load_error_unknown": "Erro ao carregar a automação ({err_no}).",
"modes": {
"description": "Este modo controla apenas o que acontece quando o script é chamado quando ainda está a ser executado por uma ou mais chamadas anteriores. Ver documentação (link_para_documentação) para mais informações.",
"documentation": "Documentação de automaçōes",
"label": "Modo",
"queued": "Em lista de espera",
"restart": "Reiniciar"
},
"move_down": "Mover para baixo",
"move_up": "Mover para cima",
"save": "Guardar",
@@ -1368,7 +1356,6 @@
"confirm_text": "Deve remover da configuração do Lovelace e das automações se contêm estas entidades",
"confirm_title": "Deseja remover {number} entidades?"
},
"search": "Procurar entidades",
"selected": "Selecionou {number}",
"status": {
"disabled": "Desativado",
@@ -1389,7 +1376,7 @@
"description": "Elementos que podem ajudar a construir automações.",
"dialog": {
"add_helper": "Adicionar auxiliar",
"add_platform": "Adicionar {platform}",
"add_platform": "Adicione {platform}",
"create": "Criar"
},
"picker": {
@@ -1503,8 +1490,7 @@
"note_about_integrations": "De momento nem todas as integrações podem ser configuradas via UI.",
"note_about_website_reference": "Existem mais disponíveis no",
"rename_dialog": "Edite o nome desta entrada de configuração.",
"rename_input_label": "Nome da entrada",
"search": "Procurar integrações"
"rename_input_label": "Nome da entrada"
},
"introduction": "Aqui é possível configurar os seus componentes e o Home Assistant. Nem tudo é possível de ser configurado a partir da Interface Gráfica, mas estamos a trabalhar para isso.",
"logs": {
@@ -1657,7 +1643,6 @@
"introduction": "Entidades que não pertencem a um dispositivo podem ser definidas aqui.",
"without_device": "Entidades sem dispositivo"
},
"icon": "Ícone",
"introduction": "Crie cenários para dar vida à sua casa.",
"load_error_not_editable": "Apenas cenários em scenes.yaml são editáveis.",
"load_error_unknown": "Erro ao carregar cena ({err_no}).",
@@ -1691,21 +1676,9 @@
"delete_confirm": "Tem a certeza que quer apagar este script?",
"delete_script": "Apagar script",
"header": "Script: {name}",
"icon": "Ícone",
"id": "ID da entidade",
"id_already_exists": "Este ID já existe",
"id_already_exists_save_error": "Nāo pode gravar este script porque este ID não é único, escolha outro ID ou deixe em branco para ser gerado automaticamente.",
"introduction": "Use scripts para executar uma seqüência de ações.",
"link_available_actions": "Saiba mais sobre ações disponíveis.",
"load_error_not_editable": "Apenas os scripts em scripts.yaml são editáveis.",
"modes": {
"description": "Este modo controla apenas o que acontece quando o script é chamado quando ainda está a ser executado por uma ou mais chamadas anteriores. Ver documentação (link_para_documentação) para mais informações.",
"documentation": "Documentação de scripts",
"label": "Modo",
"parallel": "Paralelo",
"queued": "Lista de espera",
"restart": "Reiniciar"
},
"sequence": "Seqüência",
"sequence_sentence": "A seqüência de ações para este script."
},
@@ -2221,7 +2194,6 @@
"name": "Nome",
"no_theme": "Nenhum tema",
"refresh_interval": "Intervalo entre atualizações",
"search": "Procurar",
"secondary_info_attribute": "Atributo de informação secundária",
"show_icon": "Mostrar Ícone?",
"show_name": "Mostrar nome?",
@@ -2342,8 +2314,7 @@
"edit_lovelace": {
"edit_title": "Editar título",
"explanation": "Este título é mostrado acima de todas as suas vistas na interface Lovelace.",
"header": "Título da sua interface do Lovelace",
"title": "Título"
"header": "Título da sua interface do Lovelace"
},
"edit_view": {
"add": "Acrescentar vista",
@@ -2532,7 +2503,6 @@
},
"trusted_networks": {
"abort": {
"not_allowed": "O seu computador não está na lista de endereços permitidos.",
"not_whitelisted": "O seu computador não está na lista de endereços permitidos."
},
"step": {

View File

@@ -48,19 +48,6 @@
"none": "Nici unul",
"sleep": "Adormit"
}
},
"humidifier": {
"mode": {
"auto": "Auto",
"away": "Plecat",
"baby": "Bebelus",
"boost": "Boost",
"comfort": "Confort",
"eco": "Eco",
"home": "Acasa",
"normal": "Normal",
"sleep": "Somn"
}
}
},
"state_badge": {
@@ -393,11 +380,6 @@
"reverse": "Invers",
"speed": "Viteză"
},
"humidifier": {
"humidity": "Umiditatea țintă",
"mode": "mod",
"on_entity": "{nume} activat"
},
"light": {
"brightness": "Luminozitate",
"color_temperature": "Temperatura de culoare",
@@ -421,8 +403,6 @@
"activate": "Activati"
},
"script": {
"cancel": "Anulare",
"cancel_multiple": "Revocare {număr}",
"execute": "Executa"
},
"service": {
@@ -492,7 +472,6 @@
"delete": "Șterge",
"error_required": "Necesar",
"loading": "Se încarcă",
"menu": "Meniu",
"next": "Următorul",
"no": "Nu",
"previous": "Anterior",
@@ -517,15 +496,6 @@
"clear": "Şterge",
"show_areas": "Arată zonele"
},
"data-table": {
"no-data": "Fără date",
"search": "Căutare"
},
"date-range-picker": {
"end_date": "Data de încheiere",
"select": "Selectați",
"start_date": "Data de început"
},
"device-picker": {
"clear": "Şterge",
"device": "Dispozitiv",
@@ -905,20 +875,6 @@
"introduction": "Utilizați automatizări pentru a vă aduce casa în viață",
"load_error_not_editable": "Numai automatizările din automations.yaml pot fi editate.",
"load_error_unknown": "Eroare la încărcarea automatizării ({err_no}).",
"max": {
"parallel": "Numărul maxim de piste paralele",
"queued": "Lungimea cozii"
},
"modes": {
"documentation": "documentații de automatizare",
"label": "mod",
"parallel": "Paralel",
"queued": "În așteptare",
"restart": "Repornire",
"single": "Singur (default)"
},
"move_down": "Mută în jos",
"move_up": "Mută în sus",
"save": "Salvați",
"triggers": {
"add": "Adăugați acțiune",
@@ -1175,7 +1131,6 @@
"confirm_text": "Entitățile pot fi eliminate numai atunci când integrarea nu mai oferă entitățile.",
"confirm_title": "Doriți să eliminați {number} entități?"
},
"search": "Căutare entități",
"selected": "{number} selectate",
"status": {
"disabled": "Dezactivat",
@@ -1206,8 +1161,7 @@
"entity_id": "ID entitate",
"name": "Nume",
"type": "Tip"
},
"no_helpers": "Se pare că nu ai încă ajutoare!"
}
},
"types": {
"input_boolean": "Comutare",
@@ -1219,7 +1173,6 @@
},
"info": {
"built_using": "Construit folosind",
"caption": "Info",
"documentation": "Documentație",
"frontend": "front-end-ui",
"home_assistant_logo": "Logo-ul Home Assistant",
@@ -1231,9 +1184,6 @@
"source": "Sursă:",
"title": "Info"
},
"integration_panel_move": {
"link_integration_page": "Pagina de integrari"
},
"integrations": {
"add_integration": "Adăugați integrare",
"caption": "Integrări",
@@ -1241,7 +1191,6 @@
"delete": "Șterge",
"delete_confirm": "Sigur doriți să ștergeți această integrare?",
"device_unavailable": "dispozitiv indisponibil",
"documentation": "Documentație",
"entity_unavailable": "Entitatea nu este disponibilă",
"firmware": "Firmware: {version}",
"hub": "Conectat prin",
@@ -1294,12 +1243,10 @@
"none_found": "Nu s-au găsit integrări",
"none_found_detail": "Ajustați criteriile de căutare.",
"rename_dialog": "Editați numele acestei intrări de configurare",
"rename_input_label": "Introdu nume",
"search": "Căutare integrari"
"rename_input_label": "Introdu nume"
},
"introduction": "Aici este posibil să vă configurați componentele și Home Assistant. Nu este posibilă configurarea de la UI, dar lucrăm la asta.",
"logs": {
"caption": "Jurnale",
"clear": "Şterge",
"details": "Detalii jurnal ({level})",
"load_full_log": "Încărcare jurnal complet Home Assistant",
@@ -1385,7 +1332,6 @@
}
},
"mqtt": {
"button": "Configurare",
"description_listen": "Ascultă un subiect",
"description_publish": "Publică un pachet",
"listening_to": "Ascultand",
@@ -1428,7 +1374,6 @@
"introduction": "Entitățile care nu aparțin unui dispozitiv pot fi setate aici.",
"without_device": "Entități fără dispozitiv"
},
"icon": "Pictograma",
"introduction": "Utilizeaza scene pentru a aduce casa ta la viață.",
"load_error_not_editable": "Numai scenele din scene.yaml sunt editabile.",
"load_error_unknown": "Eroare la încărcarea scenei ({err_no}).",
@@ -1458,23 +1403,8 @@
"editor": {
"alias": "Nume",
"delete_script": "Ștergere script",
"icon": "Pictograma",
"id": "ID entitate",
"id_already_exists": "Acest ID există deja",
"introduction": "Folosiți scripturi pentru a executa o secvență de acțiuni.",
"link_available_actions": "Aflați mai multe despre acțiunile disponibile.",
"max": {
"parallel": "Numărul maxim de piste paralele",
"queued": "Lungimea cozii"
},
"modes": {
"documentation": "documentație script",
"label": "mod",
"parallel": "Paralel",
"queued": "În așteptare",
"restart": "Repornire",
"single": "Singur (default)"
},
"sequence": "Secvenţă",
"sequence_sentence": "Secvența acțiunilor acestui scenariu."
},
@@ -1551,7 +1481,6 @@
},
"zha": {
"add_device_page": {
"discovered_text": "Dispozitivele vor apărea aici odată descoperite.",
"discovery_text": "Dispozitivele descoperite vor apărea aici. Urmați instrucțiunile pentru dispozitiv (e) și așezați dispozitivul (ele) în modul de împerechere.",
"header": "Zigbee Home Automation - Adăugați dispozitive",
"search_again": "Caută din nou",
@@ -1561,7 +1490,6 @@
"caption": "Adaugă dispozitive",
"description": "Adaugă dispozitive la rețeaua Zigbee"
},
"button": "Configurează",
"caption": "ZHA",
"cluster_attributes": {
"attributes_of_cluster": "Atributele clusterului selectat",
@@ -1637,9 +1565,6 @@
"header": "Administrare rețea",
"introduction": "Comenzi care afectează întreaga rețea"
},
"network": {
"caption": "Reţea"
},
"node_management": {
"header": "Gestionare dispozitive"
},
@@ -1675,7 +1600,6 @@
"no_zones_created_yet": "Se pare că nu ai creat încă nici o zonă."
},
"zwave": {
"button": "Configurează",
"caption": "Z-Wave",
"common": {
"index": "Index",
@@ -1709,16 +1633,12 @@
},
"node_management": {
"add_to_group": "Adăugare la grup",
"entities": "Entități ale acestui nod",
"entity_info": "Informații Entitate",
"exclude_entity": "Excludeți această entitate din Home Assistant",
"group": "Grup",
"max_associations": "Asociații maxime:",
"node_group_associations": "Asociații de grupuri de noduri",
"node_protection": "Protecție nod",
"node_to_control": "Nod de controlat",
"nodes": "Noduri",
"nodes_hint": "Selectați nodul pentru a vizualiza opțiunile per nod",
"nodes_in_group": "Alte noduri din acest grup:",
"protection": "Protecţie",
"remove_broadcast": "Eliminare difuzare",
@@ -1823,23 +1743,11 @@
},
"history": {
"period": "Perioadă",
"ranges": {
"last_week": "Săptămâna trecută",
"this_week": "Săptămâna aceasta",
"today": "Astăzi",
"yesterday": "Ieri"
},
"showing_entries": "Se afișează intrările pentru"
},
"logbook": {
"entries_not_found": "Nu s-au găsit intrări în jurnal.",
"period": "Perioadă",
"ranges": {
"last_week": "Săptămâna trecută",
"this_week": "Săptămâna aceasta",
"today": "Astăzi",
"yesterday": "Ieri"
},
"showing_entries": "Arată intrări pentru"
},
"lovelace": {
@@ -1920,7 +1828,6 @@
"manual": "Manual",
"manual_description": "Trebuie să adăugați un card personalizat sau doriți doar să scrieți manual yaml?",
"no_theme": "Nicio temă",
"search": "Căutare",
"secondary_info_attribute": "Atribut informații secundare",
"state": "Stare"
},
@@ -1935,9 +1842,6 @@
"horizontal-stack": {
"name": "Stivă orizontală"
},
"humidifier": {
"name": "Umidificator"
},
"iframe": {
"name": "Pagină web"
},
@@ -1997,7 +1901,6 @@
},
"edit_card": {
"add": "Adăugare card",
"confirm_cancel": "Ești sigur că vrei să anulezi?",
"delete": "Ștergeți cardul",
"duplicate": "Duplicare card",
"edit": "Editeaza",
@@ -2005,15 +1908,12 @@
"move": "Mutați la Vizualizare",
"options": "Mai multe optiuni",
"pick_card": "Ce card doriți să adăugați?",
"toggle_editor": "Activeaza editor",
"typed_header": "{tip} Configurare card",
"unsaved_changes": "Aveți modificări nesalvate"
"toggle_editor": "Activeaza editor"
},
"edit_lovelace": {
"edit_title": "Editează titlul",
"explanation": "Acest titlu este arătat mai sus de toate punctele de vedere în Lovelace.",
"header": "Titlul interfeței dvs. Lovelace",
"title": "Titlu"
"header": "Titlul interfeței dvs. Lovelace"
},
"edit_view": {
"add": "Adăugați vizualizare",
@@ -2099,8 +1999,6 @@
"entity": "Entitate",
"entity_id": "ID-ul entității",
"last_changed": "Ultima modificare",
"no_data": "Nu s-au găsit entități neutilizate",
"search": "Căutare entități",
"select_to_add": "Selectați entitățile pe care doriți să le adăugați pe un card, apoi faceți clic pe butonul Adăugare card.",
"title": "Entități neutilizate"
},
@@ -2200,7 +2098,6 @@
},
"trusted_networks": {
"abort": {
"not_allowed": "Calculatorul dvs. nu este permis.",
"not_whitelisted": "Calculatorul dvs. nu este pe lista albă."
},
"step": {
@@ -2375,9 +2272,6 @@
"not_used": "Nu a fost utilizat niciodata",
"token_title": "înnoirea token pentru {clientId}"
},
"suspend": {
"header": "Închideți automat conexiunea"
},
"themes": {
"dropdown_label": "Temă",
"error_no_theme": "Nu există teme disponibile.",

View File

@@ -528,7 +528,6 @@
"show_areas": "Показать помещения"
},
"data-table": {
"no-data": "Нет данных",
"search": "Поиск"
},
"date-range-picker": {
@@ -944,18 +943,10 @@
"introduction": "Используйте автоматизацию, чтобы оживить Ваш дом.",
"load_error_not_editable": "Доступны для редактирования только автоматизации из automations.yaml.",
"load_error_unknown": "Ошибка загрузки автоматизации ({err_no}).",
"max": {
"parallel": "Максимальное количество параллельных запусков",
"queued": "Длина очереди"
},
"modes": {
"description": "Режим управляет тем, что происходит при срабатывании автоматизации, когда действия еще выполняются с предыдущего триггера. Ознакомьтесь с {documentation_link} для получения дополнительной информации.",
"documentation": "инструкциями",
"label": "Режим",
"parallel": "Параллельный",
"queued": "Очередь",
"restart": "Рестарт",
"single": "Одиночный (по умолчанию)"
"label": "Режим"
},
"move_down": "Переместить ниже",
"move_up": "Переместить выше",
@@ -1702,22 +1693,11 @@
"icon": "Значок",
"id": "ID объекта",
"id_already_exists": "Этот ID уже существует",
"id_already_exists_save_error": "ID объекта не уникален, укажите другой ID или оставьте поле пустым, чтобы автоматически сгенерировать его.",
"introduction": "Используйте сценарии для выполнения последовательности действий.",
"link_available_actions": "Узнайте больше о действиях",
"load_error_not_editable": "Доступны для редактирования только сценарии из scripts.yaml.",
"max": {
"parallel": "Максимальное количество параллельных запусков",
"queued": "Длина очереди"
},
"modes": {
"description": "Режим управляет тем, что происходит при выполнении сценария, когда он всё ещё выполняются с предыдущего вызова. Ознакомьтесь с {documentation_link} для получения дополнительной информации.",
"documentation": "инструкциями",
"label": "Режим",
"parallel": "Параллельный",
"queued": "Очередь",
"restart": "Рестарт",
"single": "Одиночный (по умолчанию)"
"label": "Режим"
},
"sequence": "Последовательность",
"sequence_sentence": "Последовательность действий этого сценария."
@@ -2340,7 +2320,6 @@
},
"edit_card": {
"add": "Добавить карточку",
"confirm_cancel": "Вы уверены, что хотите отменить?",
"delete": "Удалить",
"duplicate": "Копировать",
"edit": "Изменить",
@@ -2351,9 +2330,7 @@
"pick_card_view_title": "Какую карточку Вы хотели бы добавить на вкладку {name}?",
"show_code_editor": "Текстовый редактор",
"show_visual_editor": "Форма ввода",
"toggle_editor": "Переключить редактор",
"typed_header": "Настройка карточки {type}",
"unsaved_changes": "У вас есть несохраненные изменения"
"toggle_editor": "Переключить редактор"
},
"edit_lovelace": {
"edit_title": "Изменить заголовок",
@@ -2446,8 +2423,6 @@
"entity": "Объект",
"entity_id": "ID объекта",
"last_changed": "Последнее изменение",
"no_data": "Неиспользуемые объекты не найдены",
"search": "Поиск объектов",
"select_to_add": "Выберите объекты, которые Вы хотели бы использовать в интерфейсе, затем нажмите кнопку Добавить.",
"title": "Неиспользуемые объекты"
},

View File

@@ -48,19 +48,6 @@
"none": "Noben",
"sleep": "Spanje"
}
},
"humidifier": {
"mode": {
"auto": "Samodejno",
"away": "Odsoten",
"baby": "Otrok",
"boost": "Povečanje",
"comfort": "Udobje",
"eco": "Eko",
"home": "Doma",
"normal": "Normalno",
"sleep": "Spanje"
}
}
},
"state_badge": {
@@ -401,12 +388,6 @@
"reverse": "Obratno",
"speed": "Hitrost"
},
"humidifier": {
"humidity": "Ciljna vlažnost",
"mode": "Način",
"on_entity": "{name} vklopljeno",
"target_humidity_entity": "{name} ciljna vlažnost"
},
"light": {
"brightness": "Svetlost",
"color_temperature": "Temperatura barve",
@@ -430,8 +411,6 @@
"activate": "Aktiviraj"
},
"script": {
"cancel": "Prekliči",
"cancel_multiple": "Prekliči {number}",
"execute": "Izvedi"
},
"service": {
@@ -527,15 +506,6 @@
"clear": "Počisti",
"show_areas": "Pokaži cone"
},
"data-table": {
"no-data": "Ni podatkov",
"search": "Iskanje"
},
"date-range-picker": {
"end_date": "Končni datum",
"select": "Izberite",
"start_date": "Začetni datum"
},
"device-picker": {
"clear": "Počisti",
"device": "Naprava",
@@ -652,7 +622,7 @@
"pattern": "Vzorec Regex za validacijo na strani odjemalca",
"text": "Besedilo"
},
"platform_not_loaded": "Integracija {platform} ni naložena. Prosimo, dodajte ga v svojo konfiguracijo tako, da dodate 'default_config: 'ali' ' {platform} :' '.",
"platform_not_loaded": "Integracija {platform} ni naložena. Dodajte svojo konfiguracijo bodisi tako, da dodate 'default_config:' 'ali \"{platform} :\".",
"required_error_msg": "To polje je obvezno",
"yaml_not_editable": "Nastavitev te entitete ni mogoče urejati iz uporabniškega vmesnika. Od tam se lahko konfigurirajo samo entitete, nastavljene iz uporabniškega vmesnika."
},
@@ -725,7 +695,6 @@
"zha_device_info": {
"buttons": {
"add": "Dodajte naprave prek te naprave",
"clusters": "Upravljanje gruč",
"reconfigure": "Ponovno konfigurirajte napravo",
"remove": "Odstranite napravo",
"zigbee_information": "Podpis naprave Zigbee"
@@ -944,19 +913,6 @@
"introduction": "Uporabite avtomatizacije za oživitev vašega doma.",
"load_error_not_editable": "Urejati je mogoče le avtomatizacije v automations.yaml.",
"load_error_unknown": "Napaka pri nalaganju avtomatizacije ({err_no}).",
"max": {
"parallel": "Največje število vzporednih tokov",
"queued": "Dolžina čakalne vrste"
},
"modes": {
"description": "Način nadzoruje, kaj se zgodi, ko se avtomatizacija sproži, medtem, ko dejanja od prejšnjega sprožilca še vedno tečejo. Oglejte si {documentation_link} za več informacij.",
"documentation": "dokumentacija za avtomatizacijo",
"label": "Način",
"parallel": "Vzporedno",
"queued": "V čakalni vrsti",
"restart": "Ponovni zagon",
"single": "Enojno (privzeta nastavitev)"
},
"move_down": "Premakni navzdol",
"move_up": "Premakni navzgor",
"save": "Shrani",
@@ -1375,7 +1331,6 @@
"confirm_text": "Če vsebujejo te entitete, bi jih morali odstraniti iz vašega Lovelace config-a in avtomatizacije.",
"confirm_title": "Ali želite odstraniti {number} entiteto-i/e?"
},
"search": "Iskanje subjektov",
"selected": "{številka} izbrana/ih",
"status": {
"disabled": "Onemogočeno",
@@ -1406,8 +1361,7 @@
"entity_id": "ID subjekta",
"name": "Ime",
"type": "Vrsta"
},
"no_helpers": "Zdi se, da še nimate pomočnikov!"
}
},
"types": {
"input_boolean": "Preklopite",
@@ -1452,7 +1406,6 @@
"delete_confirm": "Ali ste prepričani, da želite izbrisati to integracijo?",
"device_unavailable": "naprava ni na voljo",
"devices": "{count} {count, plural,\n one {naprava}\n other {naprav}\n}",
"documentation": "Dokumentacija",
"entities": "{count} {count, plural,\n one {entiteta}\n other {entitet}\n}",
"entity_unavailable": "entiteta ni na voljo",
"firmware": "Firmware: {version}",
@@ -1511,8 +1464,7 @@
"note_about_integrations": "Vseh integracij še ni mogoče konfigurirati prek uporabniškega vmesnika.",
"note_about_website_reference": "Več jih je na voljo prek",
"rename_dialog": "Uredite ime tega vnosa konfiguracije",
"rename_input_label": "Ime vnosa",
"search": "Iskanje integracij"
"rename_input_label": "Ime vnosa"
},
"introduction": "Tukaj je mogoče konfigurirati vaše komponente in Home Assistanta. Vsega ni mogoče konfigurirati iz uporabniškega vmesnika (vendar delamo na tem).",
"logs": {
@@ -1606,7 +1558,6 @@
}
},
"mqtt": {
"button": "Konfiguriraj",
"description_listen": "Poslušajte temi",
"description_publish": "Objavi paket",
"listening_to": "Poslušanje",
@@ -1665,7 +1616,6 @@
"introduction": "Tu lahko nastavite subjekte, ki ne pripadajo napravi.",
"without_device": "Entitete brez naprave"
},
"icon": "Ikona",
"introduction": "Uporabite scene, da oživite svoj dom.",
"load_error_not_editable": "Urejajo se lahko samo scene v scene.yaml.",
"load_error_unknown": "Napaka pri nalaganju scene ({err_no}).",
@@ -1699,26 +1649,9 @@
"delete_confirm": "Ali ste prepričani, da želite izbrisati to skripto?",
"delete_script": "Izbriši skripto",
"header": "Skripta: {name}",
"icon": "Ikona",
"id": "ID subjekta",
"id_already_exists": "Ta ID že obstaja",
"id_already_exists_save_error": "Te skripte ne morete shraniti, ker ID ni edinstven, izberite drug ID ali ga pustite prazno, da ga samodejno ustvari.",
"introduction": "Uporabite skripte za izvajanje zaporedij dejanj.",
"link_available_actions": "Preberite več o razpoložljivih dejanjih.",
"load_error_not_editable": "Urejati je mogoče le skripte znotraj scripts.yaml.",
"max": {
"parallel": "Največje število vzporednih tokov",
"queued": "Dolžina čakalne vrste"
},
"modes": {
"description": "Način nadzoruje, kaj se zgodi, ko se prikliče skripta, medtem ko še vedno teče iz enega ali več prejšnjih klicev. Oglejte si {documentation_link} za več informacij.",
"documentation": "skripta dokumentacija",
"label": "Način",
"parallel": "Vzporedno",
"queued": "V čakalni vrsti",
"restart": "Ponovni zagon",
"single": "Enojno (privzeta nastavitev)"
},
"sequence": "Zaporedje",
"sequence_sentence": "Zaporedje dejanj te skripte."
},
@@ -1816,7 +1749,7 @@
"discovered_text": "Naprave se bodo prikazale tukaj, ko jih odkrijemo.",
"discovery_text": "Tukaj bodo prikazane odkrite naprave. Sledite navodilom za napravo in jo postavite v način seznanjanja.",
"header": "Zigbee Home Automation - Dodaj naprave",
"no_devices_found": "Nobene naprave ni bilo mogoče najti, preverite, ali so v stanju pripravljenosti, in bodite budni, medtem ko odkritje teče.",
"no_devices_found": "Najdene ni bilo nobene naprave, preverite, ali so v načinu združevanje ter jih držite budne medtem, ko je v odkrivanje v teku.",
"pairing_mode": "Prepričajte se, da so vaše naprave v načinu združevanja. Preverite navodila svoje naprave, kako to storiti.",
"search_again": "Ponovno iskanje",
"spinner": "Iskanje ZHA Zigbee naprav..."
@@ -2102,23 +2035,11 @@
},
"history": {
"period": "Obdobje",
"ranges": {
"last_week": "Prejšnji teden",
"this_week": "Ta teden",
"today": "Danes",
"yesterday": "Včeraj"
},
"showing_entries": "Prikaz vnosov za"
},
"logbook": {
"entries_not_found": "Ni vpisov v dnevnike.",
"period": "Obdobje",
"ranges": {
"last_week": "Prejšnji teden",
"this_week": "Ta teden",
"today": "Danes",
"yesterday": "Včeraj"
},
"showing_entries": "Prikaz vnosov za"
},
"lovelace": {
@@ -2234,7 +2155,6 @@
"name": "Ime",
"no_theme": "Brez teme",
"refresh_interval": "Interval osveževanja",
"search": "Iskanje",
"secondary_info_attribute": "Atributi sekundarnih informacij",
"show_icon": "Prikaži ikono?",
"show_name": "Prikaži ime?",
@@ -2259,10 +2179,6 @@
"description": "Kartica Horizontal stack vam omogoča, da skupaj zložite več kart, tako da vedno stojijo drug poleg drugega v razmaku enega stolpca.",
"name": "Vodoravna skladnica"
},
"humidifier": {
"description": "Kartica \"humidifier\" omogoča nadzor nad vašo vlažilno enoto. Omogoča vam, da spremenite vlažnost in način dela entitete.",
"name": "Vlažilec"
},
"iframe": {
"description": "Kartica webpage vam omogoča, da svojo najljubšo spletno stran vdelate Home Assistant.",
"name": "Spletna stran"
@@ -2340,7 +2256,6 @@
},
"edit_card": {
"add": "Dodaj kartico",
"confirm_cancel": "Ali ste prepričani, da želite preklicati?",
"delete": "Izbriši kartico",
"duplicate": "Podvoji kartico",
"edit": "Uredi",
@@ -2351,15 +2266,12 @@
"pick_card_view_title": "Katero kartico želite dodati v pogled {name}?",
"show_code_editor": "Pokaži urejevalnik kode",
"show_visual_editor": "Pokaži vizualni urejevalnik",
"toggle_editor": "Preklop na urejevalnik",
"typed_header": "{type} Konfiguracija kartice",
"unsaved_changes": "Imate neshranjene spremembe"
"toggle_editor": "Preklop na urejevalnik"
},
"edit_lovelace": {
"edit_title": "Uredi naslov",
"explanation": "Ta naslov je prikazan predvsem nad vašimi pogledi v uporabniškem vmesniku Lovelace.",
"header": "Naslov vašega uporabniškega vmesnika Lovelace",
"title": "Naslov"
"header": "Naslov vašega uporabniškega vmesnika Lovelace"
},
"edit_view": {
"add": "Dodaj pogled",
@@ -2446,8 +2358,6 @@
"entity": "Subjekt",
"entity_id": "ID subjekta",
"last_changed": "Zadnja sprememba",
"no_data": "Najdenih ni bilo neuporabljenih subjektov",
"search": "Iskanje subjektov",
"select_to_add": "Izberite entitete, ki jih želite dodati na kartico, in nato kliknite gumb Dodaj kartico.",
"title": "Neuporabljene entitete"
},
@@ -2550,7 +2460,6 @@
},
"trusted_networks": {
"abort": {
"not_allowed": "Vaš računalnik ni dovoljen.",
"not_whitelisted": "Vaš računalnik ni dodan med zaupanja vredne."
},
"step": {
@@ -2726,10 +2635,6 @@
"not_used": "Nikoli ni bil uporabljen",
"token_title": "Žeton za osveževanje za {clientId}"
},
"suspend": {
"description": "Ali bi morali zapreti povezavo s strežnikom, potem ko je skrita za 5 minut?",
"header": "Samodejno zapri povezavo"
},
"themes": {
"dropdown_label": "Tema",
"error_no_theme": "Teme niso na voljo.",

View File

@@ -48,19 +48,6 @@
"none": "Yok",
"sleep": "Uyku"
}
},
"humidifier": {
"mode": {
"auto": "Otomatik",
"away": "Dışarıda",
"baby": "Bebek",
"boost": "Artırmak",
"comfort": "Konfor",
"eco": "Eko",
"home": "Evde",
"normal": "Normal",
"sleep": "Uyku"
}
}
},
"state_badge": {
@@ -399,12 +386,6 @@
"reverse": "Ters",
"speed": "Hız"
},
"humidifier": {
"humidity": "Hedef nem oranı",
"mode": "Mod",
"on_entity": "{name} de",
"target_humidity_entity": "{name} hedef nem"
},
"light": {
"brightness": "Parlaklık",
"color_temperature": "Renk sıcaklığı",
@@ -428,8 +409,6 @@
"activate": "Etkinleştir"
},
"script": {
"cancel": "İptal",
"cancel_multiple": "{number} iptal et",
"execute": "Yürüt"
},
"service": {
@@ -497,12 +476,9 @@
"cancel": "İptal",
"close": "Kapat",
"delete": "Sil",
"error_required": "Gerekli",
"loading": "Yükleniyor",
"menu": "Menü",
"next": "Sonraki",
"no": "Hayır",
"overflow_menu": "Taşma menüsü",
"previous": "Önceki",
"refresh": "Yenile",
"save": "Kaydet",
@@ -525,15 +501,6 @@
"clear": "Temizle",
"show_areas": "Alanları göster"
},
"data-table": {
"no-data": "Veri yok",
"search": "Ara"
},
"date-range-picker": {
"end_date": "Bitiş tarihi",
"select": "Seç",
"start_date": "Başlangıç tarihi"
},
"device-picker": {
"clear": "Temiz",
"device": "Cihaz",
@@ -599,13 +566,11 @@
"enabled_label": "Varlığı etkinleştir",
"entity_id": "Varlık kimliği",
"icon": "Simge geçersiz kılma",
"icon_error": "Simgeler 'önek: simge adı' biçiminde olmalıdır, örneğin 'mdi: home'",
"name": "Ad Geçersiz Kılma",
"note": "Not: bu henüz tüm entegrasyonlarla çalışmayabilir.",
"unavailable": "Bu varlık şu anda kullanılamıyor.",
"update": "GÜNCELLE"
},
"no_unique_id": "Bu varlığın benzersiz bir kimliği yok, bu nedenle ayarları kullanıcı arayüzünden yönetilemiyor.",
"related": "İlgili",
"settings": "Ayarlar"
},
@@ -646,7 +611,6 @@
"min": "Minimum uzunluk",
"mode": "Görüntü modu",
"password": "Şifre",
"pattern": "İstemci tarafı doğrulaması için normal ifade kalıbı",
"text": "Metin"
},
"platform_not_loaded": "{platform} entegrasyonu yüklenmedi. Lütfen 'default_config:' veya ''{platform}:'' ekleyerek onu yapılandırmanıza dahil edin.",
@@ -695,7 +659,6 @@
"entities": "Varlıklar",
"no_entities": "Varlık yok",
"no_triggers": "Tetikleyici yok",
"recent_messages": "{n} , en son alınan mesaj (lar)",
"show_as_yaml": "YAML olarak göster",
"triggers": "Tetikleyiciler"
},
@@ -718,7 +681,6 @@
"zha_device_info": {
"buttons": {
"add": "Cihaz Ekle",
"clusters": "Kümeleri Yönet",
"reconfigure": "Cihazı Yeniden Yapılandır",
"remove": "Cihazı Kaldır",
"zigbee_information": "Zigbee Bilgileri"
@@ -764,8 +726,6 @@
"notification_toast": {
"connection_lost": "Bağlantı koptu. Yeniden bağlanıyor ...",
"service_call_failed": "{service} çağrı yapılamadı.",
"started": "Home Assistant başladı!",
"starting": "Home Assistant başlıyor, arayüzün yüklenmesi için bekleyiniz",
"triggered": "Tetiklendi {name}"
},
"panel": {
@@ -932,21 +892,6 @@
"introduction": "Evinizi canlandırmak için otomasyonları kullanın",
"load_error_not_editable": "Yalnızca automations.yaml içindeki otomasyonlar düzenlenebilir.",
"load_error_unknown": "Otomasyon yüklenirken hata oluştu ( {err_no} ).",
"max": {
"parallel": "Maksimum paralel çalışma sayısı",
"queued": "Kuyruk uzunluğu"
},
"modes": {
"description": "Mod, eylemler önceki bir tetikleyiciden çalışmaya devam ederken otomasyon tetiklendiğinde ne olacağını kontrol eder. Daha fazla bilgi için {documentation_link} bakın.",
"documentation": "otomasyon belgeleri",
"label": "Mod",
"parallel": "Paralel",
"queued": "Kuyrukta",
"restart": "Yeniden başlat",
"single": "Tek (varsayılan)"
},
"move_down": "Aşağı taşı",
"move_up": "Yukarı Taşı",
"save": "Kaydet",
"triggers": {
"add": "Tetikleyici ekle",
@@ -1210,7 +1155,6 @@
"core_config": {
"elevation": "Yükseklik",
"elevation_meters": "metre",
"external_url": "Harici bağlantı URL'si",
"imperial_example": "Fahrenheit, pound",
"internal_url": "Dahili bağlantı URL'si",
"latitude": "Enlem",
@@ -1235,7 +1179,6 @@
"description": "Varlıklarınızı kişiselleştirin",
"pick_attribute": "Geçersiz kılmak için bir özellik seçin",
"picker": {
"entity": "Varlık",
"header": "Özelleştirmeler"
},
"warning": {
@@ -1279,7 +1222,6 @@
"entities": {
"add_entities_lovelace": "Tüm cihaz varlıklarını Lovelace kullanıcı arayüzüne ekle",
"entities": "Varlıkları",
"hide_disabled": "Devre dışı olanları gizle",
"none": "Bu cihazın varlığı yok"
},
"name": "Ad",
@@ -1328,12 +1270,8 @@
},
"remove_selected": {
"button": "Seçilenleri kaldır",
"confirm_partly_text": "Yalnızca seçili {selected} varlıkları {removable} kaldırabilirsiniz. Varlıklar yalnızca entegrasyon özelliklerini sağlamadığında kaldırılabilir. Bazen, kaldırılan bir entegrasyondaki varlıkları kaldırabilmeniz için önce Home Assistant'ı yeniden başlatmanız gerekir. Çıkarılabilir varlıkları kaldırmak istediğinizden emin misiniz?",
"confirm_partly_title": "Yalnızca {number} seçilen varlık kaldırılabilir.",
"confirm_text": "Bu varlıkları içeriyorsa, bunları Lovelace yapılandırmanız ve otomasyonlarınızdan kaldırmalısınız.",
"confirm_title": "{number} varlığı kaldırmak istiyor musunuz?"
},
"search": "Varlıkları ara",
"selected": "{number} seçildi",
"status": {
"disabled": "Devre dışı",
@@ -1345,8 +1283,7 @@
}
},
"filtering": {
"clear": "Temizle",
"filtering_by": "Filtreleme ölçütü"
"clear": "Temizle"
},
"header": "Home Assistant'ı yapılandır",
"helpers": {
@@ -1364,8 +1301,7 @@
"entity_id": "Varlık kimliği",
"name": "Ad",
"type": "Tip"
},
"no_helpers": "Henüz hiç yardımcınız yok gibi görünüyor!"
}
},
"types": {
"input_boolean": "Geçiş",
@@ -1377,9 +1313,7 @@
},
"info": {
"built_using": "Kullanılan oluşturma",
"caption": "Bilgi",
"custom_uis": "Özel kullanıcı arayüzleri:",
"description": "Home Assistant kurulumunuz hakkında bilgi",
"developed_by": "Bir sürü harika insan tarafından geliştirildi.",
"documentation": "Belgeleri",
"frontend": "ön uç-ui",
@@ -1395,13 +1329,7 @@
"system_health_error": "Sistem Sağlığı bileşeni yüklü değil. configuration.yaml içine 'system_health:' ekleyin",
"title": "Bilgi"
},
"integration_panel_move": {
"link_integration_page": "entegrasyonlar sayfası",
"missing_zha": "ZHA yapılandırma paneli eksik mi? {integrations_page} üzerindeki ZHA girişine taşındı.",
"missing_zwave": "Z-Wave yapılandırma paneli eksik mi? {integrations_page} üzerindeki Z-Wave girişine taşındı."
},
"integrations": {
"add_integration": "Entegrasyon ekle",
"caption": "Entegrasyonlar",
"config_entry": {
"area": "{alan} içinde",
@@ -1409,7 +1337,6 @@
"delete_button": "{Entegrasyon} sil",
"delete_confirm": "Bu entegrasyonu silmek istediğinizden emin misiniz?",
"device_unavailable": "aygıt kullanılamıyor",
"documentation": "Dökümanlar",
"entity_unavailable": "varlık kullanılamıyor",
"firmware": "Aygıt yazılımı: {version}",
"hub": "Şununla bağlı:",
@@ -1454,24 +1381,18 @@
"show_ignored": "Yok sayılan entegrasyonları göster",
"stop_ignore": "Yoksaymayı bırak"
},
"integration": "Entegrasyon",
"integration_not_found": "Entegrasyon bulunamadı.",
"new": "Yeni bir entegrasyon kur",
"no_integrations": "Henüz yapılandırılmış hiçbir entegrasyonunuz yok gibi görünüyor. İlk entegrasyonunuzu eklemek için aşağıdaki düğmeyi tıklayın!",
"none": "Henüz hiçbir şey yapılandırılmamış",
"none_found": "Hiçbir entegrasyon bulunamadı",
"none_found_detail": "Arama ölçütlerinizi ayarlayın.",
"note_about_integrations": "Tüm entegrasyonlar henüz kullanıcı arayüzü üzerinden yapılandırılmiyor",
"note_about_website_reference": "Daha fazlası için",
"rename_dialog": "Bu yapılandırma girişinin adını düzenleyin",
"rename_input_label": "Varlık adı",
"search": "Entegrasyonları ara"
"rename_input_label": "Varlık adı"
},
"introduction": "Buradan bileşenlerinizi ve Home Assistant'ınızı yapılandırabilirsiniz. Herşeyi kullanıcı arayüzü ile ayarlamak henüz mümkün değil fakat üzerinde çalışıyoruz",
"logs": {
"caption": "Günlükler",
"clear": "Temizle",
"description": "Home Assistant günlüklerini görüntüle",
"details": "Günlük Ayrıntıları ( {level} )",
"load_full_log": "Tam Home Assistant Günlüğünü Yükle",
"loading_log": "Hata günlüğü yükleniyor ...",
@@ -1549,7 +1470,6 @@
},
"refresh_header": "Yenilemek istiyor musunuz?",
"types": {
"css": "Stil",
"html": "HTML (kullanımdan kaldırıldı)",
"js": "JavaScript Dosyası (kullanımdan kaldırıldı)",
"module": "JavaScript Modülü"
@@ -1557,7 +1477,6 @@
}
},
"mqtt": {
"button": "Yapılandır",
"description_listen": "Bir konuyu dinle",
"description_publish": "Bir paket yayınla",
"listening_to": "Dinliyorum",
@@ -1614,7 +1533,6 @@
"introduction": "Bir cihaza ait olmayan varlıklar buradan ayarlanabilir.",
"without_device": "Cihazı olmayan varlıklar"
},
"icon": "Simge",
"introduction": "Evinizi canlandırmak için sahneleri kullanın.",
"load_error_not_editable": "Sadece scenes.yaml içindeki sahneler düzenlenebilinir.",
"load_error_unknown": "Sahne yüklenirken hata oluştu ( {err_no} ).",
@@ -1645,25 +1563,8 @@
"editor": {
"alias": "Ad",
"delete_script": "Komut dosyasını sil",
"icon": "Simge",
"id": "Varlık kimliği",
"id_already_exists": "Bu ID zaten var",
"id_already_exists_save_error": "Kimlik benzersiz olmadığından bu komut dosyasını kaydedemezsiniz, başka bir kimlik seçin veya otomatik olarak bir tane oluşturmak için boş bırakın.",
"introduction": "Bir dizi eylemi yürütmek için komut dosyalarını kullanın.",
"link_available_actions": "Kullanılabilir aksiyonlar hakkında daha fazla bilgi edinin.",
"max": {
"parallel": "Maksimum paralel çalışma sayısı",
"queued": "Kuyruk uzunluğu"
},
"modes": {
"description": "Mod, komut dosyası çağrıldığı zaman ne olacağını denetler ve bir veya daha fazla önceki çağrılardan çalışmaya devam eder. Daha fazla bilgi için {documentation_link} kontrol edin.",
"documentation": "komut dosyası belgeleri",
"label": "Mod",
"parallel": "Paralel",
"queued": "Kuyrukta",
"restart": "Yeniden başlat",
"single": "Tek (varsayılan)"
},
"sequence": "Sıra"
},
"picker": {
@@ -1673,7 +1574,6 @@
"headers": {
"name": "Ad"
},
"show_info": "Komut dosyası hakkında bilgi göster",
"trigger_script": "Komut dosyası tetikle"
}
},
@@ -1686,10 +1586,6 @@
"core": "Konumu ve özelleştirmeleri yeniden yükle",
"group": "Grupları yeniden yükle",
"heading": "Yapılandırma yeniden yükleniyor",
"input_datetime": "Giriş tarih ve zamanı yeniden yükle",
"input_number": "Giriş numaralarını yeniden yükle",
"input_select": "Giriş seçimlerini yeniden yükle",
"input_text": "Giriş metinlerini yeniden yükle",
"introduction": "Bazı Home Assistant bileşenleri yeniden başlatmadan yenilenebilinir. Yeniden yükle tuşuna basarak güncel yapılandırmayı bırakarak yenisinin yüklenmesini sağlayabilirsiniz.",
"person": "Kişileri yeniden yükle",
"scene": "Sahneleri yeniden yükle",
@@ -1751,10 +1647,7 @@
},
"zha": {
"add_device_page": {
"discovered_text": "Cihazlar keşfedildikten sonra burada görünecektir.",
"header": "Zigbee Ev Otomasyonu - Cihaz Ekle",
"no_devices_found": "Hiçbir cihaz bulunamadı, eşleştirme modunda olduklarından emin olun ve keşfetme sırasında cihazıık tutun.",
"pairing_mode": "Cihazlarınızın eşleme modunda olduğundan emin olun. Bunun nasıl yapılacağı konusunda cihazınızın talimatlarını kontrol edin.",
"search_again": "Yeniden Ara",
"spinner": "ZHA Zigbee cihazları aranıyor ..."
},
@@ -1762,7 +1655,6 @@
"caption": "Cihaz Ekle",
"description": "Zigbee ağına cihaz ekleme"
},
"button": "Yapılandır",
"caption": "ZHA",
"cluster_attributes": {
"get_zigbee_attribute": "Zigbee Özelliğini al",
@@ -1772,8 +1664,7 @@
"header": "Küme Komutları"
},
"clusters": {
"header": "Kümeler",
"introduction": "Kümeler Zigbee işlevselliği için yapı taşlarıdır. İşlevselliği mantıksal birimlere ayırırlar. İstemci ve sunucu türleri vardır ve bunlar özniteliklerden ve komutlardan oluşur."
"header": "Kümeler"
},
"common": {
"add_devices": "Cihaz Ekle",
@@ -1793,7 +1684,6 @@
"group_picker_label": "Bağlanabilir Gruplar",
"header": "Grup Bağlama",
"introduction": "Grupları bağlama ve çözme.",
"unbind_button_help": "Seçilen grubu seçilen aygıt kümelerinden ayırın.",
"unbind_button_label": "Grubu Çöz"
},
"groups": {
@@ -1828,9 +1718,6 @@
"network_management": {
"header": "Ağ yönetimi"
},
"network": {
"caption": "Ağ"
},
"node_management": {
"header": "Cihaz yönetimi",
"hint_wakeup": "Xiaomi sensörleri gibi bazı cihazlarda, onlarla etkileşime girerken cihazları uyanık tutan ~ 5 saniyelik aralıklarla basabileceğiniz bir uyanma düğmesi bulunur."
@@ -1860,12 +1747,9 @@
},
"edit_home_zone": "Evinizin konumu genel konfigürasyonda değiştirilebilir.",
"go_to_core_config": "Genel yapılandırmaya gidilsin mi?",
"home_zone_core_config": "Ana bölgenizin konumu genel yapılandırma sayfasından düzenlenebilir. Ana bölgenin yarıçapı henüz arayüzden düzenlenemez. Genel yapılandırmaya gitmek ister misiniz?",
"introduction": "Bölgeler, dünyadaki belirli bölgeleri belirtmenize izin verir. Bir kişi bir bölge içindeyse, durumunu bölgenin isminden alır. Bölgeler, otomasyon kurulumlarında tetikleyici veya koşul olarak da kullanılabilir.",
"no_zones_created_yet": "Görünüşe göre henüz herhangi bir bölge oluşturmadınız."
},
"zwave": {
"button": "Yapılandır",
"caption": "Z-Wave",
"common": {
"index": "Indeks",
@@ -1896,48 +1780,19 @@
},
"node_management": {
"add_to_group": "Gruba ekle",
"entities": "Bu düğümün varlıkları",
"entity_info": "Varlık Bilgileri",
"exclude_entity": "Bu varlığı Home Assistant'dan hariç tut",
"group": "Grup",
"header": "Z-Wave Düğümü Yönetimi",
"introduction": "Tek bir düğümü etkileyen Z-Wave komutlarını çalıştırın. Kullanılabilir komutların listesini görmek için bir düğüm seçin.",
"max_associations": "Maksimum ilişkiler:",
"node_group_associations": "Düğüm grubu ilişkileri",
"node_protection": "Düğüm koruması",
"node_to_control": "Kontrol edilecek düğüm",
"nodes": "Düğümler",
"nodes_hint": "Düğüm başına seçenekleri görüntülemek için düğümü seçin",
"nodes_in_group": "Bu gruptaki diğer Düğümler:",
"pooling_intensity": "Yoklama yoğunluğu",
"protection": "Koruma",
"remove_broadcast": "Yayını Kaldır",
"remove_from_group": "Gruptan Kaldır",
"set_protection": "Korumayı Ayarla"
},
"ozw_log": {
"last_log_lines": "Son günlük satırı sayısı",
"load": "Yük",
"tail": "Kuyruk"
"protection": "Koruma"
},
"services": {
"add_node": "Düğüm Ekle",
"add_node_secure": "Güvenli Düğüm Ekle",
"cancel_command": "Komutu İptal Et",
"heal_network": "Ağı İyileştir",
"heal_node": "Düğümü İyileştir",
"node_info": "Düğüm Bilgileri",
"print_node": "Düğümü Yazdır",
"refresh_entity": "Varlığı Yenile",
"refresh_node": "Düğümü Yenile",
"remove_failed_node": "Başarısız Düğümü Kaldır",
"remove_node": "Düğümü Kaldır",
"replace_failed_node": "Başarısız Düğümü Değiştir",
"save_config": "Config'i Kaydet",
"start_network": "Ağı Başlat",
"stop_network": "Ağı Durdur",
"test_network": "Test Ağı",
"test_node": "Test Düğümü"
"test_network": "Test Ağı"
},
"values": {
"header": "Düğüm Değerleri"
@@ -2011,23 +1866,11 @@
},
"history": {
"period": "Dönem",
"ranges": {
"last_week": "Geçen hafta",
"this_week": "Bu hafta",
"today": "Bugün",
"yesterday": "Dün"
},
"showing_entries": "Gösterilen girişler"
},
"logbook": {
"entries_not_found": "Kayıt defteri girişi bulunamadı.",
"period": "Dönem",
"ranges": {
"last_week": "Geçen hafta",
"this_week": "Bu hafta",
"today": "Bugün",
"yesterday": "Dün"
},
"showing_entries": "Gösterilen girişler"
},
"lovelace": {
@@ -2053,17 +1896,12 @@
"toggle": "{name} ayarını aç / kapat"
},
"safe-mode": {
"description": "Home Assistant, yapılandırmanızı yüklerken sorun yaşadı ve şimdi güvenli modda çalışıyor. Neyin yanlış gittiğini görmek için hata günlüğüne bakın.",
"header": "Güvenli Mod Etkin"
},
"shopping-list": {
"add_item": "Öge Ekle",
"checked_items": "Seçili öğeler",
"clear_items": "Seçili ögeleri temizle"
},
"starting": {
"description": "Home Assistant başlıyor, lütfen bekleyin ...",
"header": "Home Assistant başlıyor ..."
}
},
"changed_toast": {
@@ -2084,7 +1922,6 @@
"conditional": {
"card": "Kart",
"change_type": "Türü değiştir",
"condition_explanation": "Aşağıdaki TÜM koşullar yerine getirildiğinde kart gösterilecektir.",
"conditions": "Koşullar",
"current_state": "şimdiki",
"description": "Koşullar kartı, varlık durumlarına göre başka bir kart görüntüler.",
@@ -2102,14 +1939,12 @@
"toggle": "Varlıklarageçiş."
},
"entity-filter": {
"description": "Varlık Filtresi kartı, yalnızca belirli bir durumda izlemek istediğiniz varlıkların bir listesini tanımlamanıza olanak tanır.",
"name": "Varlık Filtresi"
},
"entity": {
"name": "Varlık"
},
"gauge": {
"description": "Gösterge kartı, sensör verilerini görsel olarak görmenizi sağlayan temel bir karttır.",
"name": "Ölçü",
"severity": {
"green": "Yeşil",
@@ -2134,8 +1969,6 @@
"name": "Adı",
"no_theme": "Tema yok",
"refresh_interval": "Yenileme aralığı",
"search": "Ara",
"secondary_info_attribute": "İkincil Bilgi Özelliği",
"show_icon": "Simgeyi Göster?",
"show_name": "Adı göster?",
"show_state": "Durumu göster",
@@ -2148,20 +1981,11 @@
},
"glance": {
"columns": "Sütunlar",
"description": "Bakış kartı, birden fazla sensörü kompakt bir genel bakışta gruplamak için kullanışlıdır.",
"name": "Glance"
},
"history-graph": {
"description": "Geçmiş Grafiği kartı, listelenen varlıkların her biri için bir grafik görüntülemenizi sağlar.",
"name": "Geçmiş grafiği"
},
"horizontal-stack": {
"description": "Yatay Yığın kartı, birden fazla kartı bir araya getirmenize izin verir, böylece her zaman bir sütun boşluğunda yan yana otururlar."
},
"humidifier": {
"description": "Nemlendirici kartı, nemlendirici varlığınızın kontrolünü sağlar. Varlığın nemini ve modunu değiştirmenize izin verir.",
"name": "Nemlendirici"
},
"iframe": {
"description": "Web sayfası kartı, favori web sayfanızı Home Assistant'a yerleştirmenizi sağlar.",
"name": "iFrame"
@@ -2188,18 +2012,10 @@
"description": "Medya Denetimi kartı, medya oynatıcı varlıklarını kullanımı kolay denetimlere sahip bir arabirimde görüntülemek için kullanılır.",
"name": "Medya Kontrolü"
},
"picture-elements": {
"description": "Picture Elements kartı en çok yönlü kart türlerinden biridir. Kartlar simgeleri veya metinleri ve hatta hizmetleri konumlandırmanıza izin verir!"
},
"picture-entity": {
"description": "Resim Varlığı kartı bir objeyi görüntü şeklinde görüntüler. URL'deki resimler yerine kamera görüntülerini de gösterebilir.",
"name": "Varlık resim"
},
"picture-glance": {
"description": "Picture Glance kartı bir resmi ve karşılık gelen varlık durumlarını bir simge olarak gösterir. Sağ taraftaki varlıklar durum değiştirme işlemlerine izin verir, diğerleri daha fazla bilgi iletişim kutusunu gösterir."
},
"picture": {
"description": "Resim kartı, arabiriminizdeki çeşitli yollarda gezinmek veya bir servisi çağırmak için kullanılacak bir görüntü ayarlamanızı sağlar.",
"name": "Resim"
},
"plant-status": {
@@ -2213,7 +2029,6 @@
"name": "Sensör"
},
"shopping-list": {
"description": "Alışveriş Listesi kartı, alışveriş listenize öğe eklemenize, düzenlemenize, kontrol etmenize ve listeden çıkarmanıza olanak tanır.",
"integration_not_loaded": "Bu kart, 'shopping_list' tümleştirmesinin ayarlanmasını gerektirir.",
"name": "Alışveriş listesi"
},
@@ -2221,9 +2036,6 @@
"description": "Termostat kartı iklim varlığınızın kontrolünü sağlar. Varlığın sıcaklığını ve modunu değiştirmenizi sağlar.",
"name": "Termostat"
},
"vertical-stack": {
"description": "Dikey Yığın kartı, birden fazla kartı her zaman aynı sütunda oturacak şekilde gruplandırmanıza olanak tanır."
},
"weather-forecast": {
"description": "Hava Durumu kartı hava durumunu gösterir. Duvarda görüntülenen tablet arayüzlerinde kullanışlı olabilir.",
"name": "Hava Durumu tahmini",
@@ -2235,7 +2047,6 @@
},
"edit_card": {
"add": "Kart Ekle",
"confirm_cancel": "İptal etmek istediğinizden emin misiniz?",
"delete": "Sil",
"duplicate": "Çift kart",
"edit": "Düzenle",
@@ -2244,14 +2055,11 @@
"options": "Daha fazla seçenek",
"pick_card": "Eklemek istediğiniz kartı seçin.",
"show_code_editor": "Kod düzenleyiciyi göster",
"toggle_editor": "Düzenleyiciye Geçiş",
"typed_header": "{type} Kart Yapılandırması",
"unsaved_changes": "Kaydedilmemiş değişiklikleriniz mevcut"
"toggle_editor": "Düzenleyiciye Geçiş"
},
"edit_lovelace": {
"edit_title": "Başlığı düzenle",
"header": "Lovelace kullanıcı arayüzünüzün başlığı",
"title": "Başlık"
"header": "Lovelace kullanıcı arayüzünüzün başlığı"
},
"edit_view": {
"add": "Görünüm ekle",
@@ -2279,8 +2087,6 @@
"para_no_id": "Bu öğenin bir kimliği yok. Lütfen 'ui-lovelace.yaml' dosyasında bu elemente bir kimlik ekleyin."
},
"raw_editor": {
"confirm_remove_config_text": "Lovelace kullanıcı arayüzü yapılandırmanızı kaldırırsanız, Lovelace kullanıcı arayüzü, görünümleriniz alanlarınız ve cihazlarınız otomatik olarak oluşturulacatır.",
"confirm_remove_config_title": "Lovelace UI yapılandırmanızı kaldırmak istediğinizden emin misiniz? Lovelace kullanıcı arayüzü görünümlerinizi alanlarınız ve cihazlarınızla otomatik olarak oluşturacağız.",
"confirm_unsaved_changes": "Kaydedilmemiş değişiklikleriniz var, çıkmak istediğinize emin misiniz?",
"confirm_unsaved_comments": "Yapılandırmanız yorumlar içeriyor, bunlar kaydedilmeyecek. Devam etmek istiyor musun?",
"error_invalid_config": "Yapılandırmanız geçerli değil: {error}",
@@ -2288,7 +2094,6 @@
"error_remove": "Config kaldırılamıyor: {error}",
"error_save_yaml": "YAML kaydedilemiyor: {error}",
"header": "Yapılandırmayı Düzenle",
"resources_moved": "Kaynaklar artık Lovelace yapılandırmasına eklenemez, ancak Lovelace yapılandırma paneline eklenebilir.",
"save": "Kaydet",
"saved": "Kaydedildi",
"unsaved_changes": "Kaydedilmemiş değişiklikler"
@@ -2334,8 +2139,6 @@
"entity": "Varlık",
"entity_id": "Varlık kimliği",
"last_changed": "Son değiştirilen",
"no_data": "Kullanılmayan varlık bulunamadı",
"search": "Varlıkları ara",
"select_to_add": "Karta eklemek istediğiniz varlıkları seçin ve ardından kart ekle tuşuna basınız.",
"title": "Kullanılmayan varlıklar"
},
@@ -2349,8 +2152,7 @@
"attribute_not_found": "Nitelik {attribute} {entity} içinde mevcut değil",
"entity_non_numeric": "Varlık sayısal değil: {entity}",
"entity_not_found": "Varlık mevcut değil: {entity}",
"entity_unavailable": "{entity} şu anda kullanılamıyor",
"starting": "Home Assistant başlıyor, arayüzün yüklenmesi için bekleyiniz"
"entity_unavailable": "{entity} şu anda kullanılamıyor"
}
},
"mailbox": {
@@ -2435,7 +2237,6 @@
},
"trusted_networks": {
"abort": {
"not_allowed": "Bilgisayarınıza izin verilmiyor.",
"not_whitelisted": "Bilgisayarınız beyaz listeye eklenmemiş."
},
"step": {
@@ -2587,11 +2388,11 @@
},
"push_notifications": {
"description": "Bu cihaza bildirimler gönder",
"error_load_platform": "Notify.html5 'i yapılandırın.",
"error_load_platform": "Notify.html5'i yapılandırın.",
"error_use_https": "Önyüz için SSL'nin etkinleştirilmesini gerektirir.",
"header": "Bildirimler",
"header": "Bildirimleri",
"link_promo": "Daha fazla bilgi edinin",
"push_notifications": "Bildirimler"
"push_notifications": "Bildirimleri"
},
"refresh_tokens": {
"confirm_delete": "{name} için yenileme anahtarını silmek istediğinizden emin misiniz?",
@@ -2604,13 +2405,9 @@
"not_used": "Hiç kullanılmadı",
"token_title": "{clientId} için yenileme anahtarı"
},
"suspend": {
"description": "5 dakika boyunca gizlendikten sonra sunucu bağlantısı kapatılsın mı?",
"header": "Bağlantıyı otomatik olarak kapat"
},
"themes": {
"dropdown_label": "Tema",
"error_no_theme": "Kullanılabilir tema yok.",
"error_no_theme": "Tema yok.",
"header": "Tema",
"link_promo": "Temalar hakkında bilgi edinin"
},

View File

@@ -418,8 +418,6 @@
"activate": "Kích hoạt"
},
"script": {
"cancel": "Huỷ Bỏ",
"cancel_multiple": "Huỷ Bỏ {number}",
"execute": "Thi hành"
},
"service": {
@@ -506,10 +504,6 @@
"clear": "Xoá",
"show_areas": "Hiển thị các khu vực"
},
"data-table": {
"no-data": "Không có dữ liệu",
"search": "Tìm kiếm"
},
"date-range-picker": {
"end_date": "Ngày kết thúc",
"select": "Lựa chọn",
@@ -867,19 +861,6 @@
"introduction": "Sử dụng tự động hóa để mang sự sống cho nhà bạn",
"load_error_not_editable": "Chỉ tự động hóa trong automations.yaml là có thể chỉnh sửa.",
"load_error_unknown": "Lỗi tải tự động hóa ({err_no}).",
"max": {
"parallel": "Số lượng chạy song song tối đa",
"queued": "Độ dài hàng chờ"
},
"modes": {
"description": "Chế Độ kiểm soát điều gì xảy ra khi một tự động hoá được kích hoạt trong khi nó vẫn đang chạy từ một hoặc nhiều lần kích hoạt trước. Xem thêm tại {documentation_link}.",
"documentation": "tài liệu về tự động hoá",
"label": "Chế Độ",
"parallel": "Song song",
"queued": "Xếp hàng",
"restart": "Khởi động lại",
"single": "Đơn (mặc định)"
},
"move_down": "Chuyển xuống",
"move_up": "Chuyển lên",
"save": "Lưu",
@@ -969,7 +950,7 @@
},
"unsupported_platform": "Nền tảng không được hỗ trợ: {platform}"
},
"unsaved_confirm": "Bạn đang có thay đổi chưa được lưu. Bạn có chắc muốn huỷ bỏ?"
"unsaved_confirm": "Bạn có thay đổi chưa được lưu. Bạn có chắc anh muốn bỏ đi?"
},
"picker": {
"add_automation": "Thêm Tự động hóa",
@@ -1129,7 +1110,6 @@
"confirm_partly_title": "Chỉ {number} thực thể đã chọn có thể bị xoá.",
"confirm_title": "Bạn có muốn xoá bỏ {number} thực thể không?"
},
"search": "Tìm các thực thể",
"selected": "{number} đã chọn",
"status": {
"disabled": "Bị vô hiệu hoá",
@@ -1160,8 +1140,7 @@
"entity_id": "Mã Thực thể",
"name": "Tên",
"type": "Loại"
},
"no_helpers": "Hình như bạn chưa có người hỗ trợ nào!"
}
},
"types": {
"input_boolean": "Chuyển đổi",
@@ -1252,8 +1231,7 @@
"none_found": "Không tìm thấy tích hợp nào",
"none_found_detail": "Điều chỉnh tiêu chí tìm kiếm của bạn.",
"rename_dialog": "Chỉnh sửa tên của mục cấu hình này",
"rename_input_label": "Tên mục",
"search": "Tìm các bộ tích hợp"
"rename_input_label": "Tên mục"
},
"introduction": "Ở đây có thể định cấu hình các thành phần của bạn và Home Assistant. Không phải mọi thứ đều có thể được cấu hình từ giao diện người dùng, nhưng chúng tôi đang cải thiện việc đó.",
"logs": {
@@ -1389,7 +1367,6 @@
"introduction": "Các thực thể không thuộc về một thiết bị có thể được đặt ở đây.",
"without_device": "Các thực thể không thuộc một thiết bị"
},
"icon": "Biểu tượng",
"introduction": "Sử dụng các ngữ cảnh để mang lại sự sống cho nhà bạn.",
"load_error_not_editable": "Chỉ những ngữ cảnh nằm trong scenes.yaml là có thể chỉnh sửa.",
"load_error_unknown": "Lỗi khi tải ngữ cảnh ({err_no}).",
@@ -1420,24 +1397,7 @@
"editor": {
"alias": "Tên",
"delete_script": "Xóa kịch bản",
"icon": "Biểu tượng",
"id": "Mã định danh Thực thể",
"id_already_exists": "Định danh (ID) này đã tồn tại",
"id_already_exists_save_error": "Bạn không thể lưu kịch bản này vì mã định danh bị trùng, thay đổi ID bằng một mã khác hoặc để trống.",
"link_available_actions": "Tìm hiểu thêm về các hành động khả dụng.",
"max": {
"parallel": "Số lượng chạy song song tối đa",
"queued": "Độ dài hàng chờ"
},
"modes": {
"description": "Chế Độ kiểm soát điều gì xảy ra khi một kịch bản được gọi trong khi nó vẫn đang chạy từ một hoặc nhiều lần gọi trước. Xem thêm tại {documentation_link}.",
"documentation": "tài liệu về kịch bản",
"label": "Chế Độ",
"parallel": "Song song",
"queued": "Xếp hàng",
"restart": "Khởi động lại",
"single": "Đơn (mặc định)"
},
"sequence": "Trình tự",
"sequence_sentence": "Trình tự các hành động trong kịch bản này."
},
@@ -1781,9 +1741,7 @@
"editor": {
"card": {
"alarm-panel": {
"available_states": "Các Trạng thái Khả dụng",
"description": "Thẻ Bảng điều khiển An ninh cho phép bạn Kích hoạt và Vô hiệu hóa tích hợp bảng điều khiển an ninh.",
"name": "Bảng điều khiển Báo động"
"description": "Thẻ Bảng điều khiển An ninh cho phép bạn Kích hoạt và Vô hiệu hóa tích hợp bảng điều khiển an ninh."
},
"button": {
"description": "Thẻ Nút cho phép bạn thêm các nút để thực hiện các tác vụ.",
@@ -1796,7 +1754,6 @@
"conditions": "Điều kiện",
"current_state": "hiện tại",
"description": "Thẻ Điều kiện hiển thị một thẻ khác dựa trên trạng thái của các thực thể.",
"name": "Có Điều kiện",
"state_equal": "Trạng thái bằng với",
"state_not_equal": "Trạng thái không bằng với"
},
@@ -1814,8 +1771,7 @@
"name": "Thực thể"
},
"gauge": {
"description": "Thẻ Thước đo là một thẻ cơ bản cho phép bạn quan sát trực quan dữ liệu của cảm biến.",
"name": "Thang đo"
"description": "Thẻ Thước đo là một thẻ cơ bản cho phép bạn quan sát trực quan dữ liệu của cảm biến."
},
"generic": {
"attribute": "Thuộc tính",
@@ -1824,16 +1780,13 @@
"manual": "Thủ công",
"manual_description": "Cần thêm một thẻ tuỳ chỉnh hay chỉ muốn viết cấu hình yaml thủ công?",
"no_theme": "Không có theme.",
"search": "Tìm kiếm",
"state": "Trạng thái"
},
"glance": {
"description": "Thẻ Xem nhanh rất hữu ích để hiển thị nhiều cảm biến trong một không gian nhỏ gọn.",
"name": "Xem nhanh"
"description": "Thẻ Xem nhanh rất hữu ích để hiển thị nhiều cảm biến trong một không gian nhỏ gọn."
},
"history-graph": {
"description": "Thẻ Biểu đồ Lịch sử cho phép bạn hiển thị biểu đồ cho từng thực thể được liệt kê.",
"name": "Biểu đồ"
"description": "Thẻ Biểu đồ Lịch sử cho phép bạn hiển thị biểu đồ cho từng thực thể được liệt kê."
},
"horizontal-stack": {
"description": "Thẻ Xếp Ngang cho phép bạn nhóm nhiều thẻ để các thẻ này luôn nằm cạnh nhau trong cùng một hàng.",
@@ -1848,29 +1801,24 @@
"name": "Trang web"
},
"light": {
"description": "Thẻ Đèn cho phép bạn thay đổi độ sáng của đèn.",
"name": "Đèn"
"description": "Thẻ Đèn cho phép bạn thay đổi độ sáng của đèn."
},
"map": {
"description": "Thẻ Bản đồ cho phép bạn hiển thị các thực thể trên bản đồ.",
"hours_to_show": "Giờ hiển thị",
"name": "Bản đồ"
"hours_to_show": "Giờ hiển thị"
},
"markdown": {
"description": "Thẻ Markdown được sử dụng để hiển thị Markdown.",
"name": "Đánh dấu"
"description": "Thẻ Markdown được sử dụng để hiển thị Markdown."
},
"media-control": {
"description": "Thẻ Điều khiển Phương tiện được sử dụng để hiển thị các thực thể Media Player trên một giao diện với các điều khiển dễ sử dụng.",
"name": "Điều khiển Thiết bị đa phương tiện"
},
"picture-elements": {
"description": "Thẻ Các thành phần trong Ảnh là một trong những loại thẻ linh hoạt nhất. Các thẻ cho phép bạn định vị các biểu tượng hoặc văn bản và thậm chí cả các dịch vụ! Trên một hình ảnh dựa trên tọa độ.",
"name": "Các Thành phần Hình ảnh"
"description": "Thẻ Các thành phần trong Ảnh là một trong những loại thẻ linh hoạt nhất. Các thẻ cho phép bạn định vị các biểu tượng hoặc văn bản và thậm chí cả các dịch vụ! Trên một hình ảnh dựa trên tọa độ."
},
"picture-entity": {
"description": "Thẻ Thực thể Hình ảnh hiển thị một thực thể ở dạng hình ảnh. Thay vì sử dụng hình ảnh từ URL, nó cũng có thể hiển thị hình ảnh của các thực thể camera.",
"name": "Thực thể Hình ảnh"
"description": "Thẻ Thực thể Hình ảnh hiển thị một thực thể ở dạng hình ảnh. Thay vì sử dụng hình ảnh từ URL, nó cũng có thể hiển thị hình ảnh của các thực thể camera."
},
"picture-glance": {
"description": "Thẻ Hình ảnh Xem nhanh hiển thị hình ảnh và các thực thể tương ứng như một biểu tượng. Các thực thể ở bên phải cho phép các hành động chuyển đổi, những thực thể còn lại hiển thị hộp thoại thông tin bổ sung."
@@ -1880,8 +1828,7 @@
"name": "Hình ảnh"
},
"plant-status": {
"description": "Thẻ Tình trạng Cây cối dành cho tất cả các nhà thực vật học đáng yêu ngoài kia.",
"name": "Tình trạng Cây trồng"
"description": "Thẻ Tình trạng Cây cối dành cho tất cả các nhà thực vật học đáng yêu ngoài kia."
},
"sensor": {
"description": "Thẻ Cảm biến cung cấp cho bạn tổng quan nhanh về trạng thái cảm biến của bạn với một biểu đồ tùy chọn thể hiện sự thay đổi qua thời gian.",
@@ -1889,8 +1836,7 @@
},
"shopping-list": {
"description": "Thẻ Danh sách mua sắm cho phép bạn thêm, chỉnh sửa, kiểm tra và xóa các mục khỏi danh sách mua sắm của bạn.",
"integration_not_loaded": "Thẻ này yêu cầu thiết lập tích hợp 'shopping_list'.",
"name": "Danh sách Mua sắm"
"integration_not_loaded": "Thẻ này yêu cầu thiết lập tích hợp 'shopping_list'."
},
"thermostat": {
"description": "Thẻ Điều chỉnh nhiệt cho phép kiểm soát thực thể khí hậu của bạn. Cho phép bạn thay đổi nhiệt độ và chế độ của thực thể.",
@@ -1912,7 +1858,6 @@
},
"edit_card": {
"add": "Thêm Thẻ",
"confirm_cancel": "Bạn có chắc muốn huỷ bỏ không?",
"delete": "Xóa",
"duplicate": "Nhân bản thẻ",
"edit": "Chỉnh sửa",
@@ -1922,14 +1867,10 @@
"pick_card": "Chọn Thẻ bạn muốn thêm.",
"pick_card_view_title": "Loại thẻ nào bạn muốn thêm vào chế độ xem {name}?",
"show_code_editor": "Sửa mã nguồn",
"show_visual_editor": "Hiển thị Chỉnh sửa Trực quan",
"toggle_editor": "Đổi trình biên tập",
"typed_header": "{type} Cấu hình Thẻ",
"unsaved_changes": "Bạn có chỉnh sửa chưa được lưu"
"toggle_editor": "Đổi trình biên tập"
},
"edit_lovelace": {
"edit_title": "Chỉnh sửa tiêu đề",
"title": "Tiêu đề"
"edit_title": "Chỉnh sửa tiêu đề"
},
"edit_view": {
"add": "Thêm Tầm nhìn",
@@ -2015,8 +1956,6 @@
"entity": "Thực thể",
"entity_id": "Mã Thực thể",
"last_changed": "Thay đổi lần cuối",
"no_data": "Không tìm thấy thực thể chưa được sử dụng",
"search": "Tìm các thực thể",
"select_to_add": "Chọn thực thể bạn muốn thêm vào thẻ và sau đó nhấp vào nút Thêm thẻ.",
"title": "Thực thể chưa sử dụng"
},
@@ -2119,7 +2058,6 @@
},
"trusted_networks": {
"abort": {
"not_allowed": "Máy tính này không được phép.",
"not_whitelisted": "Máy tính của bạn không nằm trong danh sách trắng."
},
"step": {

View File

@@ -430,8 +430,6 @@
"activate": "激活"
},
"script": {
"cancel": "取消",
"cancel_multiple": "取消 {number} 个",
"execute": "执行"
},
"service": {
@@ -528,7 +526,6 @@
"show_areas": "显示区域"
},
"data-table": {
"no-data": "没有数据",
"search": "搜索"
},
"date-range-picker": {
@@ -944,19 +941,6 @@
"introduction": "使用自动化让你的家聪明起来",
"load_error_not_editable": "只能编辑 automations.yaml 中的自动化。",
"load_error_unknown": "加载自动化错误 ({err_no})。",
"max": {
"parallel": "最大并行数量",
"queued": "队列长度"
},
"modes": {
"description": "“模式”控制当该自动化上次被触发后的动作仍在执行时,再次被触发时要采取的操作。请参阅{documentation_link}以进一步了解。",
"documentation": "自动化文档",
"label": "模式",
"parallel": "并行",
"queued": "队列",
"restart": "重启",
"single": "单点 (默认)"
},
"move_down": "下移",
"move_up": "上移",
"save": "保存",
@@ -1665,7 +1649,6 @@
"introduction": "可在此处设置不属于设备的实体。",
"without_device": "无设备关联的实体"
},
"icon": "图标",
"introduction": "使用场景使您的家充满生机。",
"load_error_not_editable": "只能编辑 scenes.yaml 中的场景。",
"load_error_unknown": "加载场景错误 ({err_no})。",
@@ -1699,26 +1682,9 @@
"delete_confirm": "您确定要删除此脚本吗?",
"delete_script": "删除脚本",
"header": "脚本:{name}",
"icon": "图标",
"id": "实体 ID",
"id_already_exists": "此 ID 已存在",
"id_already_exists_save_error": "无法保存此脚本,因为 ID 不唯一。请选择其他 ID 或将其留空,以自动生成一个 ID。",
"introduction": "使用脚本执行一系列操作。",
"link_available_actions": "详细了解可用操作。",
"load_error_not_editable": "只能编辑 scripts.yaml 中的脚本。",
"max": {
"parallel": "最大并行数量",
"queued": "队列长度"
},
"modes": {
"description": "“模式”控制当该脚本仍在执行时,再次被调用时要采取的操作。请参阅{documentation_link}以进一步了解。",
"documentation": "脚本文档",
"label": "模式",
"parallel": "并行",
"queued": "队列",
"restart": "重启",
"single": "单点 (默认)"
},
"sequence": "顺序",
"sequence_sentence": "该脚本的操作顺序。"
},
@@ -2340,7 +2306,6 @@
},
"edit_card": {
"add": "添加卡片",
"confirm_cancel": "确实要取消吗?",
"delete": "删除",
"duplicate": "复制卡片",
"edit": "编辑",
@@ -2351,9 +2316,7 @@
"pick_card_view_title": "您想将哪张卡片添加到 {name} 视图?",
"show_code_editor": "显示代码编辑器",
"show_visual_editor": "显示可视化编辑器",
"toggle_editor": "切换编辑器",
"typed_header": "{type}卡片配置",
"unsaved_changes": "有更改尚未保存"
"toggle_editor": "切换编辑器"
},
"edit_lovelace": {
"edit_title": "编辑标题",
@@ -2446,8 +2409,6 @@
"entity": "实体",
"entity_id": "实体 ID",
"last_changed": "最后更改",
"no_data": "没有未使用的实体",
"search": "搜索实体",
"select_to_add": "选择要添加到卡片中的实体,然后单击添加卡片按钮。",
"title": "未使用的实体"
},
@@ -2550,7 +2511,6 @@
},
"trusted_networks": {
"abort": {
"not_allowed": "您的电脑不允许访问。",
"not_whitelisted": "您的电脑不在白名单内。"
},
"step": {

Some files were not shown because too many files have changed in this diff Show More