mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-20 15:56:35 +00:00
commit
cf1b9e5067
@ -1,20 +1,27 @@
|
||||
const del = require("del");
|
||||
const path = require("path");
|
||||
const gulp = require("gulp");
|
||||
const foreach = require("gulp-foreach");
|
||||
const hash = require("gulp-hash");
|
||||
const hashFilename = require("gulp-hash-filename");
|
||||
const merge = require("gulp-merge-json");
|
||||
const minify = require("gulp-jsonminify");
|
||||
const rename = require("gulp-rename");
|
||||
const transform = require("gulp-json-transform");
|
||||
|
||||
const isDemo = process.env.DEMO === "1";
|
||||
|
||||
const inDir = "translations";
|
||||
const workDir = "build-translations";
|
||||
const fullDir = workDir + "/full";
|
||||
const coreDir = workDir + "/core";
|
||||
const outDir = workDir + "/output";
|
||||
|
||||
String.prototype.rsplit = function(sep, maxsplit) {
|
||||
var split = this.split(sep);
|
||||
return maxsplit
|
||||
? [split.slice(0, -maxsplit).join(sep)].concat(split.slice(-maxsplit))
|
||||
: split;
|
||||
};
|
||||
|
||||
// Panel translations which should be split from the core translations. These
|
||||
// should mirror the fragment definitions in polymer.json, so that we load
|
||||
// additional resources at equivalent points.
|
||||
@ -95,6 +102,12 @@ function lokalise_transform(data, original) {
|
||||
return output;
|
||||
}
|
||||
|
||||
let taskName = "clean-translations";
|
||||
gulp.task(taskName, function() {
|
||||
return del([`${outDir}/**/*.json`]);
|
||||
});
|
||||
tasks.push(taskName);
|
||||
|
||||
/**
|
||||
* This task will build a master translation file, to be used as the base for
|
||||
* all languages. This starts with src/translations/en.json, and replaces all
|
||||
@ -104,8 +117,8 @@ function lokalise_transform(data, original) {
|
||||
* project is buildable immediately after merging new translation keys, since
|
||||
* the Lokalise update to translations/en.json will not happen immediately.
|
||||
*/
|
||||
let taskName = "build-master-translation";
|
||||
gulp.task(taskName, function() {
|
||||
taskName = "build-master-translation";
|
||||
gulp.task(taskName, ["clean-translations"], function() {
|
||||
return gulp
|
||||
.src("src/translations/en.json")
|
||||
.pipe(
|
||||
@ -207,6 +220,7 @@ gulp.task(taskName, splitTasks, function() {
|
||||
})
|
||||
)
|
||||
.pipe(minify())
|
||||
.pipe(hashFilename())
|
||||
.pipe(
|
||||
rename((filePath) => {
|
||||
if (filePath.dirname === "core") {
|
||||
@ -231,7 +245,7 @@ gulp.task(taskName, ["build-flattened-translations"], function() {
|
||||
hash({
|
||||
algorithm: "md5",
|
||||
hashLength: 32,
|
||||
template: isDemo ? "<%= name %>.json" : "<%= name %>-<%= hash %>.json",
|
||||
template: "<%= name %>.json",
|
||||
})
|
||||
)
|
||||
.pipe(hash.manifest("translationFingerprints.json"))
|
||||
@ -241,8 +255,10 @@ gulp.task(taskName, ["build-flattened-translations"], function() {
|
||||
// all translation fragment fingerprints under the translation name key
|
||||
const newData = {};
|
||||
Object.entries(data).forEach(([key, value]) => {
|
||||
const parts = key.split("/");
|
||||
let translation = key;
|
||||
const [path, _md5] = key.rsplit("-", 1);
|
||||
// let translation = key;
|
||||
let translation = path;
|
||||
const parts = translation.split("/");
|
||||
if (parts.length === 2) {
|
||||
translation = parts[1];
|
||||
}
|
||||
@ -251,7 +267,7 @@ gulp.task(taskName, ["build-flattened-translations"], function() {
|
||||
fingerprints: {},
|
||||
};
|
||||
}
|
||||
newData[translation].fingerprints[key] = value;
|
||||
newData[translation].fingerprints[path] = value;
|
||||
});
|
||||
return newData;
|
||||
})
|
||||
|
@ -73,6 +73,7 @@
|
||||
"es6-object-assign": "^1.1.0",
|
||||
"eslint-import-resolver-webpack": "^0.10.1",
|
||||
"fecha": "^3.0.0",
|
||||
"gulp-hash-filename": "^2.0.1",
|
||||
"home-assistant-js-websocket": "^3.2.4",
|
||||
"intl-messageformat": "^2.2.0",
|
||||
"jquery": "^3.3.1",
|
||||
|
2
setup.py
2
setup.py
@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
||||
|
||||
setup(
|
||||
name="home-assistant-frontend",
|
||||
version="20190201.0",
|
||||
version="20190202.0",
|
||||
description="The Home Assistant frontend",
|
||||
url="https://github.com/home-assistant/home-assistant-polymer",
|
||||
author="The Home Assistant Authors",
|
||||
|
@ -5,6 +5,7 @@ import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import EventsMixin from "../mixins/events-mixin";
|
||||
|
||||
import isComponentLoaded from "../common/config/is_component_loaded";
|
||||
import { fireEvent } from "../common/dom/fire_event";
|
||||
|
||||
/*
|
||||
* @appliesMixin EventsMixin
|
||||
@ -43,7 +44,11 @@ class HaStartVoiceButton extends EventsMixin(PolymerElement) {
|
||||
}
|
||||
|
||||
handleListenClick() {
|
||||
this.fire("hass-start-voice");
|
||||
fireEvent(this, "show-dialog", {
|
||||
dialogImport: () =>
|
||||
import(/* webpackChunkName: "voice-command-dialog" */ "../dialogs/ha-voice-command-dialog"),
|
||||
dialogTag: "ha-voice-command-dialog",
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,20 +1,14 @@
|
||||
import {
|
||||
createCollection,
|
||||
getUser,
|
||||
Connection,
|
||||
getCollection,
|
||||
} from "home-assistant-js-websocket";
|
||||
import { User } from "../types";
|
||||
|
||||
export const userCollection = (conn: Connection) =>
|
||||
getCollection(conn, "_usr", () => getUser(conn) as Promise<User>, undefined);
|
||||
|
||||
export const subscribeUser = (
|
||||
conn: Connection,
|
||||
onChange: (user: User) => void
|
||||
) =>
|
||||
createCollection<User>(
|
||||
"_usr",
|
||||
// the getUser command is mistyped in current verrsion of HAWS.
|
||||
// Fixed in 3.2.5
|
||||
() => (getUser(conn) as unknown) as Promise<User>,
|
||||
undefined,
|
||||
conn,
|
||||
onChange
|
||||
);
|
||||
) => userCollection(conn).subscribe(onChange);
|
||||
|
@ -159,6 +159,10 @@ class HaVoiceCommandDialog extends DialogMixin(PolymerElement) {
|
||||
return ["dialogOpenChanged(opened)"];
|
||||
}
|
||||
|
||||
showDialog() {
|
||||
this.opened = true;
|
||||
}
|
||||
|
||||
initRecognition() {
|
||||
/* eslint-disable new-cap */
|
||||
this.recognition = new webkitSpeechRecognition();
|
||||
|
@ -1,9 +1,6 @@
|
||||
// Load polyfill first so HTML imports start resolving
|
||||
/* eslint-disable import/first */
|
||||
import "../resources/html-import/polyfill";
|
||||
import "@polymer/app-route/app-location";
|
||||
import "@polymer/app-route/app-route";
|
||||
import "@polymer/iron-flex-layout/iron-flex-layout-classes";
|
||||
import "@polymer/paper-styles/typography";
|
||||
import { setPassiveTouchGestures } from "@polymer/polymer/lib/utils/settings";
|
||||
|
||||
@ -16,13 +13,6 @@ import "../components/ha-iconset-svg";
|
||||
|
||||
import "../layouts/app/home-assistant";
|
||||
|
||||
/* polyfill for paper-dropdown */
|
||||
setTimeout(
|
||||
() =>
|
||||
import(/* webpackChunkName: "polyfill-web-animations-next" */ "web-animations-js/web-animations-next-lite.min"),
|
||||
2000
|
||||
);
|
||||
|
||||
setPassiveTouchGestures(true);
|
||||
/* LastPass createElement workaround. See #428 */
|
||||
document.createElement = Document.prototype.createElement;
|
||||
|
@ -1,44 +0,0 @@
|
||||
import { afterNextRender } from "@polymer/polymer/lib/utils/render-status";
|
||||
import { getUser } from "home-assistant-js-websocket";
|
||||
import { clearState } from "../../util/ha-pref-storage";
|
||||
import { askWrite } from "../../common/auth/token_storage";
|
||||
import { subscribeUser } from "../../data/ws-user";
|
||||
|
||||
export default (superClass) =>
|
||||
class extends superClass {
|
||||
firstUpdated(changedProps) {
|
||||
super.firstUpdated(changedProps);
|
||||
this.addEventListener("hass-logout", () => this._handleLogout());
|
||||
// HACK :( We don't have a way yet to trigger an update of `subscribeUser`
|
||||
this.addEventListener("hass-refresh-current-user", () =>
|
||||
getUser(this.hass.connection).then((user) => this._updateHass({ user }))
|
||||
);
|
||||
}
|
||||
|
||||
hassConnected() {
|
||||
super.hassConnected();
|
||||
subscribeUser(this.hass.connection, (user) => this._updateHass({ user }));
|
||||
|
||||
afterNextRender(null, () => {
|
||||
if (askWrite()) {
|
||||
const el = document.createElement("ha-store-auth-card");
|
||||
this.shadowRoot.appendChild(el);
|
||||
this.provideHass(el);
|
||||
import(/* webpackChunkName: "ha-store-auth-card" */ "../../dialogs/ha-store-auth-card");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
async _handleLogout() {
|
||||
try {
|
||||
await this.hass.auth.revoke();
|
||||
this.hass.connection.close();
|
||||
clearState();
|
||||
document.location.href = "/";
|
||||
} catch (err) {
|
||||
// eslint-disable-next-line
|
||||
console.error(err);
|
||||
alert("Log out failed");
|
||||
}
|
||||
}
|
||||
};
|
55
src/layouts/app/auth-mixin.ts
Normal file
55
src/layouts/app/auth-mixin.ts
Normal file
@ -0,0 +1,55 @@
|
||||
import { clearState } from "../../util/ha-pref-storage";
|
||||
import { askWrite } from "../../common/auth/token_storage";
|
||||
import { subscribeUser, userCollection } from "../../data/ws-user";
|
||||
import { Constructor, LitElement } from "lit-element";
|
||||
import { HassBaseEl } from "./hass-base-mixin";
|
||||
|
||||
declare global {
|
||||
// for fire event
|
||||
interface HASSDomEvents {
|
||||
"hass-refresh-current-user": undefined;
|
||||
}
|
||||
}
|
||||
|
||||
export default (superClass: Constructor<LitElement & HassBaseEl>) =>
|
||||
class extends superClass {
|
||||
protected firstUpdated(changedProps) {
|
||||
super.firstUpdated(changedProps);
|
||||
this.addEventListener("hass-logout", () => this._handleLogout());
|
||||
this.addEventListener("hass-refresh-current-user", () => {
|
||||
userCollection(this.hass!.connection).refresh();
|
||||
});
|
||||
}
|
||||
|
||||
protected hassConnected() {
|
||||
super.hassConnected();
|
||||
subscribeUser(this.hass!.connection, (user) =>
|
||||
this._updateHass({ user })
|
||||
);
|
||||
|
||||
if (askWrite()) {
|
||||
this.updateComplete
|
||||
.then(() =>
|
||||
import(/* webpackChunkName: "ha-store-auth-card" */ "../../dialogs/ha-store-auth-card")
|
||||
)
|
||||
.then(() => {
|
||||
const el = document.createElement("ha-store-auth-card");
|
||||
this.shadowRoot!.appendChild(el);
|
||||
this.provideHass(el);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private async _handleLogout() {
|
||||
try {
|
||||
await this.hass!.auth.revoke();
|
||||
this.hass!.connection.close();
|
||||
clearState();
|
||||
document.location.href = "/";
|
||||
} catch (err) {
|
||||
// tslint:disable-next-line
|
||||
console.error(err);
|
||||
alert("Log out failed");
|
||||
}
|
||||
}
|
||||
};
|
@ -1,10 +1,10 @@
|
||||
import "@polymer/app-route/app-location";
|
||||
import "@polymer/iron-flex-layout/iron-flex-layout-classes";
|
||||
import {
|
||||
html,
|
||||
LitElement,
|
||||
PropertyDeclarations,
|
||||
PropertyValues,
|
||||
css,
|
||||
} from "lit-element";
|
||||
|
||||
import "../home-assistant-main";
|
||||
@ -27,6 +27,7 @@ import { Route, HomeAssistant } from "../../types";
|
||||
import { navigate } from "../../common/navigate";
|
||||
|
||||
(LitElement.prototype as any).html = html;
|
||||
(LitElement.prototype as any).css = css;
|
||||
|
||||
const ext = <T>(baseClass: T, mixins): T =>
|
||||
mixins.reduceRight((base, mixin) => mixin(base), baseClass);
|
||||
@ -82,6 +83,8 @@ export class HomeAssistantAppEl extends ext(HassBaseMixin(LitElement), [
|
||||
protected firstUpdated(changedProps) {
|
||||
super.firstUpdated(changedProps);
|
||||
setTimeout(registerServiceWorker, 1000);
|
||||
/* polyfill for paper-dropdown */
|
||||
import(/* webpackChunkName: "polyfill-web-animations-next" */ "web-animations-js/web-animations-next-lite.min");
|
||||
}
|
||||
|
||||
protected updated(changedProps: PropertyValues): void {
|
||||
|
@ -1,23 +0,0 @@
|
||||
import { afterNextRender } from "@polymer/polymer/lib/utils/render-status";
|
||||
|
||||
export default (superClass) =>
|
||||
class extends superClass {
|
||||
firstUpdated(changedProps) {
|
||||
super.firstUpdated(changedProps);
|
||||
this.addEventListener("hass-more-info", (e) => this._handleMoreInfo(e));
|
||||
|
||||
// Load it once we are having the initial rendering done.
|
||||
afterNextRender(null, () =>
|
||||
import(/* webpackChunkName: "more-info-dialog" */ "../../dialogs/ha-more-info-dialog")
|
||||
);
|
||||
}
|
||||
|
||||
async _handleMoreInfo(ev) {
|
||||
if (!this.__moreInfoEl) {
|
||||
this.__moreInfoEl = document.createElement("ha-more-info-dialog");
|
||||
this.shadowRoot.appendChild(this.__moreInfoEl);
|
||||
this.provideHass(this.__moreInfoEl);
|
||||
}
|
||||
this._updateHass({ moreInfoEntityId: ev.detail.entityId });
|
||||
}
|
||||
};
|
34
src/layouts/app/more-info-mixin.ts
Normal file
34
src/layouts/app/more-info-mixin.ts
Normal file
@ -0,0 +1,34 @@
|
||||
import { Constructor, LitElement } from "lit-element";
|
||||
|
||||
import { HassBaseEl } from "./hass-base-mixin";
|
||||
|
||||
declare global {
|
||||
// for fire event
|
||||
interface HASSDomEvents {
|
||||
"hass-more-info": {
|
||||
entityId: string;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export default (superClass: Constructor<LitElement & HassBaseEl>) =>
|
||||
class extends superClass {
|
||||
private _moreInfoEl?: any;
|
||||
|
||||
protected firstUpdated(changedProps) {
|
||||
super.firstUpdated(changedProps);
|
||||
this.addEventListener("hass-more-info", (e) => this._handleMoreInfo(e));
|
||||
|
||||
// Load it once we are having the initial rendering done.
|
||||
import(/* webpackChunkName: "more-info-dialog" */ "../../dialogs/ha-more-info-dialog");
|
||||
}
|
||||
|
||||
private async _handleMoreInfo(ev) {
|
||||
if (!this._moreInfoEl) {
|
||||
this._moreInfoEl = document.createElement("ha-more-info-dialog");
|
||||
this.shadowRoot!.appendChild(this._moreInfoEl);
|
||||
this.provideHass(this._moreInfoEl);
|
||||
}
|
||||
this._updateHass({ moreInfoEntityId: ev.detail.entityId });
|
||||
}
|
||||
};
|
@ -22,9 +22,6 @@ import { HomeAssistant, Route } from "../types";
|
||||
import { fireEvent } from "../common/dom/fire_event";
|
||||
import { PolymerChangedEvent } from "../polymer-types";
|
||||
|
||||
import(/* webpackChunkName: "ha-sidebar" */ "../components/ha-sidebar");
|
||||
import(/* webpackChunkName: "voice-command-dialog" */ "../dialogs/ha-voice-command-dialog");
|
||||
|
||||
const NON_SWIPABLE_PANELS = ["kiosk", "map"];
|
||||
|
||||
class HomeAssistantMain extends LitElement {
|
||||
@ -51,7 +48,6 @@ class HomeAssistantMain extends LitElement {
|
||||
|
||||
return html`
|
||||
<ha-url-sync .hass=${hass}></ha-url-sync>
|
||||
<ha-voice-command-dialog .hass=${hass}></ha-voice-command-dialog>
|
||||
<iron-media-query
|
||||
query="(max-width: 870px)"
|
||||
query-matches-changed=${this._narrowChanged}
|
||||
@ -84,6 +80,8 @@ class HomeAssistantMain extends LitElement {
|
||||
}
|
||||
|
||||
protected firstUpdated() {
|
||||
import(/* webpackChunkName: "ha-sidebar" */ "../components/ha-sidebar");
|
||||
|
||||
this.addEventListener("hass-open-menu", () => {
|
||||
if (this._narrow) {
|
||||
this.drawer.open();
|
||||
@ -97,9 +95,6 @@ class HomeAssistantMain extends LitElement {
|
||||
fireEvent(this, "hass-dock-sidebar", { dock: false });
|
||||
}
|
||||
});
|
||||
this.addEventListener("hass-start-voice", () => {
|
||||
(this.voiceDialog as any).opened = true;
|
||||
});
|
||||
}
|
||||
|
||||
protected updated(changedProps: PropertyValues) {
|
||||
@ -125,10 +120,6 @@ class HomeAssistantMain extends LitElement {
|
||||
return this.shadowRoot!.querySelector("app-drawer")!;
|
||||
}
|
||||
|
||||
private get voiceDialog() {
|
||||
return this.shadowRoot!.querySelector("ha-voice-command-dialog")!;
|
||||
}
|
||||
|
||||
static get styles(): CSSResult {
|
||||
return css`
|
||||
:host {
|
||||
|
@ -18,6 +18,7 @@ import "../../resources/ha-style";
|
||||
|
||||
import formatDate from "../../common/datetime/format_date";
|
||||
import LocalizeMixin from "../../mixins/localize-mixin";
|
||||
import { computeRTL } from "../../common/util/compute_rtl";
|
||||
|
||||
/*
|
||||
* @appliesMixin LocalizeMixin
|
||||
@ -37,6 +38,15 @@ class HaPanelHistory extends LocalizeMixin(PolymerElement) {
|
||||
|
||||
paper-dropdown-menu {
|
||||
max-width: 100px;
|
||||
margin-top: 13px;
|
||||
margin-right: 16px;
|
||||
--paper-input-container-label-floating: {
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
:host([rtl]) paper-dropdown-menu {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
paper-item {
|
||||
@ -158,6 +168,12 @@ class HaPanelHistory extends LocalizeMixin(PolymerElement) {
|
||||
type: String,
|
||||
value: "date",
|
||||
},
|
||||
|
||||
rtl: {
|
||||
type: Boolean,
|
||||
reflectToAttribute: true,
|
||||
computed: "_computeRTL(hass)",
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@ -198,6 +214,10 @@ class HaPanelHistory extends LocalizeMixin(PolymerElement) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
_computeRTL(hass) {
|
||||
return computeRTL(hass);
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define("ha-panel-history", HaPanelHistory);
|
||||
|
@ -18,6 +18,7 @@ import "./ha-logbook";
|
||||
|
||||
import formatDate from "../../common/datetime/format_date";
|
||||
import LocalizeMixin from "../../mixins/localize-mixin";
|
||||
import { computeRTL } from "../../common/util/compute_rtl";
|
||||
|
||||
/*
|
||||
* @appliesMixin LocalizeMixin
|
||||
@ -52,6 +53,13 @@ class HaPanelLogbook extends LocalizeMixin(PolymerElement) {
|
||||
paper-dropdown-menu {
|
||||
max-width: 100px;
|
||||
margin-right: 16px;
|
||||
--paper-input-container-label-floating: {
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
:host([rtl]) paper-dropdown-menu {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
paper-item {
|
||||
@ -205,6 +213,12 @@ class HaPanelLogbook extends LocalizeMixin(PolymerElement) {
|
||||
datePicker: {
|
||||
type: Object,
|
||||
},
|
||||
|
||||
rtl: {
|
||||
type: Boolean,
|
||||
reflectToAttribute: true,
|
||||
computed: "_computeRTL(hass)",
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@ -242,6 +256,10 @@ class HaPanelLogbook extends LocalizeMixin(PolymerElement) {
|
||||
refreshLogbook() {
|
||||
this.shadowRoot.querySelector("ha-logbook-data").refreshLogbook();
|
||||
}
|
||||
|
||||
_computeRTL(hass) {
|
||||
return computeRTL(hass);
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define("ha-panel-logbook", HaPanelLogbook);
|
||||
|
@ -453,8 +453,7 @@ export class HuiEditCard extends LitElement {
|
||||
flex: auto;
|
||||
}
|
||||
.content hui-card-preview {
|
||||
margin-top: 0;
|
||||
margin-left: 24px;
|
||||
margin: 0 24px;
|
||||
flex: 490px;
|
||||
max-width: 490px;
|
||||
}
|
||||
|
@ -168,7 +168,9 @@ class HUIRoot extends LitElement {
|
||||
slot="dropdown-content"
|
||||
>
|
||||
<paper-item @click="${this.lovelace!.enableFullEditMode}"
|
||||
>Raw config editor</paper-item
|
||||
>${this.hass!.localize(
|
||||
"ui.panel.lovelace.editor.menu.raw_editor"
|
||||
)}</paper-item
|
||||
>
|
||||
</paper-listbox>
|
||||
</paper-menu-button>
|
||||
@ -206,19 +208,27 @@ class HUIRoot extends LitElement {
|
||||
${this._yamlMode
|
||||
? html`
|
||||
<paper-item @click="${this._handleRefresh}"
|
||||
>Refresh</paper-item
|
||||
>${this.hass!.localize(
|
||||
"ui.panel.lovelace.menu.refresh"
|
||||
)}</paper-item
|
||||
>
|
||||
`
|
||||
: ""}
|
||||
<paper-item @click="${this._handleUnusedEntities}"
|
||||
>Unused entities</paper-item
|
||||
>${this.hass!.localize(
|
||||
"ui.panel.lovelace.menu.unused_entities"
|
||||
)}</paper-item
|
||||
>
|
||||
<paper-item @click="${this._editModeEnable}"
|
||||
>${this.hass!.localize(
|
||||
"ui.panel.lovelace.editor.configure_ui"
|
||||
"ui.panel.lovelace.menu.configure_ui"
|
||||
)}</paper-item
|
||||
>
|
||||
<paper-item @click="${this._handleHelp}"
|
||||
>${this.hass!.localize(
|
||||
"ui.panel.lovelace.menu.help"
|
||||
)}</paper-item
|
||||
>
|
||||
<paper-item @click="${this._handleHelp}">Help</paper-item>
|
||||
</paper-listbox>
|
||||
</paper-menu-button>
|
||||
</app-toolbar>
|
||||
|
@ -808,7 +808,8 @@
|
||||
"period": "Period"
|
||||
},
|
||||
"logbook": {
|
||||
"showing_entries": "[%key:ui::panel::history::showing_entries%]"
|
||||
"showing_entries": "[%key:ui::panel::history::showing_entries%]",
|
||||
"period": "Period"
|
||||
},
|
||||
"lovelace": {
|
||||
"cards": {
|
||||
@ -823,9 +824,17 @@
|
||||
"add_item": "Add item"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Configure UI",
|
||||
"unused_entities": "Unused entities",
|
||||
"help": "Help",
|
||||
"refresh": "Refresh"
|
||||
},
|
||||
"editor": {
|
||||
"header": "Edit UI",
|
||||
"configure_ui": "Configure UI",
|
||||
"menu": {
|
||||
"raw_editor": "Raw config editor"
|
||||
},
|
||||
"edit_view": {
|
||||
"header": "View Configuration",
|
||||
"add": "Add view",
|
||||
|
@ -1,6 +1,7 @@
|
||||
{
|
||||
"ar": {
|
||||
"nativeName": "العربية"
|
||||
"nativeName": "العربية",
|
||||
"isRTL": true
|
||||
},
|
||||
"bg": {
|
||||
"nativeName": "Български"
|
||||
|
@ -753,7 +753,6 @@
|
||||
"migrate": "Мигриране на конфигурация"
|
||||
},
|
||||
"header": "Редактиране на потребителския интерфейс",
|
||||
"configure_ui": "Конфигуриране на потребителския интерфейс",
|
||||
"edit_view": {
|
||||
"header": "Конфигурация на изглед",
|
||||
"add": "Добавяне на изглед",
|
||||
@ -767,6 +766,9 @@
|
||||
"cancel": "Няма значение",
|
||||
"save": "Поемете контрола"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Конфигуриране на потребителския интерфейс"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -433,6 +433,14 @@
|
||||
"hours": "Hores",
|
||||
"minutes": "Minuts",
|
||||
"seconds": "Segons"
|
||||
},
|
||||
"geo_location": {
|
||||
"label": "Geolocalització",
|
||||
"source": "Font",
|
||||
"zone": "Zona",
|
||||
"event": "Esdeveniment:",
|
||||
"enter": "Entrar",
|
||||
"leave": "Sortir"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -565,7 +573,18 @@
|
||||
},
|
||||
"zha": {
|
||||
"caption": "ZHA",
|
||||
"description": "Gestiona la xarxa domòtica ZIgbee"
|
||||
"description": "Gestiona la xarxa domòtica ZIgbee",
|
||||
"services": {
|
||||
"reconfigure": "Reconfigura el dispositiu ZHA (dispositiu curatiu). Utilitza-ho si tens problemes amb el dispositiu. Si el dispositiu en qüestió està alimentat per bateria, assegura't que estigui despert i accepti ordres quan utilitzis aquest servei."
|
||||
}
|
||||
},
|
||||
"area_registry": {
|
||||
"caption": "Registre d'àrees",
|
||||
"description": "Visió general de totes les àrees de la casa."
|
||||
},
|
||||
"entity_registry": {
|
||||
"caption": "Registre d'entitats",
|
||||
"description": "Visió general de totes les entitats conegudes."
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
@ -734,6 +753,11 @@
|
||||
"checked_items": "Articles seleccionats",
|
||||
"clear_items": "Esborrar els articles seleccionats",
|
||||
"add_item": "Afegir element"
|
||||
},
|
||||
"empty_state": {
|
||||
"title": "Benvingut\/da a casa",
|
||||
"no_devices": "Aquesta pàgina et permet controlar els teus dispositius, però sembla que encara no en tens cap configurat. Vés a la pàgina d'integracions per començar.",
|
||||
"go_to_integrations_page": "Vés a la pàgina d'integracions."
|
||||
}
|
||||
},
|
||||
"editor": {
|
||||
@ -753,7 +777,6 @@
|
||||
"migrate": "Migrar la configuració"
|
||||
},
|
||||
"header": "Editar la interfície d'usuari (UI)",
|
||||
"configure_ui": "Configurar la interfície d'usuari",
|
||||
"edit_view": {
|
||||
"header": "Configuració de la visualització",
|
||||
"add": "Afegeix visualització",
|
||||
@ -767,6 +790,9 @@
|
||||
"cancel": "M'ho he repensat",
|
||||
"save": "Prendre el control"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Configurar la interfície d'usuari"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -999,7 +1025,10 @@
|
||||
"weblink": "Enllaços web",
|
||||
"zwave": "Z-Wave",
|
||||
"vacuum": "Aspiradora",
|
||||
"zha": "ZHA"
|
||||
"zha": "ZHA",
|
||||
"hassio": "Hass.io",
|
||||
"homeassistant": "Home Assistant",
|
||||
"lovelace": "Lovelace"
|
||||
},
|
||||
"attribute": {
|
||||
"weather": {
|
||||
|
@ -743,7 +743,6 @@
|
||||
"migrate": "Migrovat konfiguraci"
|
||||
},
|
||||
"header": "Upravit UI",
|
||||
"configure_ui": "Konfigurovat UI",
|
||||
"edit_view": {
|
||||
"header": "Zobrazit konfiguraci",
|
||||
"add": "Přidat pohled",
|
||||
@ -757,6 +756,9 @@
|
||||
"cancel": "Zahodit změnu",
|
||||
"save": "Převzít kontrolu"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Konfigurovat UI"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -743,7 +743,6 @@
|
||||
"migrate": "Migrer opsætning"
|
||||
},
|
||||
"header": "Rediger UI",
|
||||
"configure_ui": "Konfigurer UI",
|
||||
"edit_view": {
|
||||
"header": "Vis konfiguration",
|
||||
"add": "Tilføje visning",
|
||||
@ -757,6 +756,9 @@
|
||||
"cancel": "Glem det",
|
||||
"save": "tag kontrol"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Konfigurer UI"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -753,7 +753,6 @@
|
||||
"migrate": "Konfiguration migrieren"
|
||||
},
|
||||
"header": "Benutzeroberfläche bearbeiten",
|
||||
"configure_ui": "Benutzeroberfläche konfigurieren",
|
||||
"edit_view": {
|
||||
"header": "Konfiguration anzeigen",
|
||||
"add": "Ansicht hinzufügen",
|
||||
@ -767,6 +766,9 @@
|
||||
"cancel": "Abbrechen",
|
||||
"save": "Kontrolle übernehmen"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Benutzeroberfläche konfigurieren"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -753,7 +753,6 @@
|
||||
"migrate": "Ρυθμίσεις μετεγκατάστασης"
|
||||
},
|
||||
"header": "Επεξεργασία περιβάλλοντος χρήστη",
|
||||
"configure_ui": "Διαμορφώστε το περιβάλλον χρήστη",
|
||||
"edit_view": {
|
||||
"header": "Ρυθμίσεις",
|
||||
"add": "Προσθήκη προβολής",
|
||||
@ -767,6 +766,9 @@
|
||||
"cancel": "Δεν πειράζει",
|
||||
"save": "Πάρτε τον έλεγχο"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Διαμορφώστε το περιβάλλον χρήστη"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -777,7 +777,6 @@
|
||||
"migrate": "Migrate config"
|
||||
},
|
||||
"header": "Edit UI",
|
||||
"configure_ui": "Configure UI",
|
||||
"edit_view": {
|
||||
"header": "View Configuration",
|
||||
"add": "Add view",
|
||||
@ -791,6 +790,9 @@
|
||||
"cancel": "Never mind",
|
||||
"save": "Take control"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Configure UI"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1026,7 +1028,8 @@
|
||||
"zha": "ZHA",
|
||||
"hassio": "Hass.io",
|
||||
"homeassistant": "Home Assistant",
|
||||
"lovelace": "Lovelace"
|
||||
"lovelace": "Lovelace",
|
||||
"system_health": "System Health"
|
||||
},
|
||||
"attribute": {
|
||||
"weather": {
|
||||
|
@ -753,7 +753,6 @@
|
||||
"migrate": "Migrar configuración"
|
||||
},
|
||||
"header": "Editar la interfaz de usuario",
|
||||
"configure_ui": "Configurar la interfaz de usuario",
|
||||
"edit_view": {
|
||||
"header": "Ver configuración",
|
||||
"add": "Añadir vista",
|
||||
@ -767,6 +766,9 @@
|
||||
"cancel": "No importa",
|
||||
"save": "Tomar el control"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Configurar la interfaz de usuario"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -737,13 +737,15 @@
|
||||
"delete": "Kustuta"
|
||||
},
|
||||
"header": "Muuda kasutajaliidest",
|
||||
"configure_ui": "Seadista kasutajaliidest",
|
||||
"edit_view": {
|
||||
"header": "Vaata seadeid",
|
||||
"add": "Lisa vaade",
|
||||
"edit": "Muuda vaadet",
|
||||
"delete": "Kustuta vaade"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Seadista kasutajaliidest"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -741,7 +741,6 @@
|
||||
"migrate": "Tuo vanhat asetukset"
|
||||
},
|
||||
"header": "Muokkaa käyttöliittymää",
|
||||
"configure_ui": "Määrittele käyttöliittymä",
|
||||
"edit_view": {
|
||||
"header": "Näytä asetukset",
|
||||
"add": "Lisää näkymä",
|
||||
@ -755,6 +754,9 @@
|
||||
"cancel": "Antaa olla",
|
||||
"save": "Ota hallintaan"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Määrittele käyttöliittymä"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -749,7 +749,6 @@
|
||||
"migrate": "Migrer la configuration"
|
||||
},
|
||||
"header": "Modifier l'interface utilisateur",
|
||||
"configure_ui": "Configurer l'interface utilisateur",
|
||||
"edit_view": {
|
||||
"header": "Voir la configuration",
|
||||
"add": "Ajouter la vue",
|
||||
@ -763,6 +762,9 @@
|
||||
"cancel": "Oublie ce que j'ai dit, c'est pas grave.",
|
||||
"save": "Prenez le contrôle"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Configurer l'interface utilisateur"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -427,6 +427,20 @@
|
||||
"webhook": {
|
||||
"label": "Webhook",
|
||||
"webhook_id": "Webhook ID"
|
||||
},
|
||||
"time_pattern": {
|
||||
"label": "תבנית זמן",
|
||||
"hours": "שעות",
|
||||
"minutes": "דקות",
|
||||
"seconds": "שניות"
|
||||
},
|
||||
"geo_location": {
|
||||
"label": "מיקום גיאוגרפי",
|
||||
"source": "מקור",
|
||||
"zone": "אזור",
|
||||
"event": "אירוע:",
|
||||
"enter": "כניסה",
|
||||
"leave": "יציאה"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -556,6 +570,20 @@
|
||||
"device_unavailable": "התקן אינו זמין",
|
||||
"entity_unavailable": "ישות לא זמינה"
|
||||
}
|
||||
},
|
||||
"zha": {
|
||||
"description": "ניהול רשת Zigbee לאוטומציה ביתית",
|
||||
"services": {
|
||||
"reconfigure": "התקן מחדש את התקן ה ZHA. השתמש באפשרות זו אם אתה נתקל בבעיות בהתקן. אם ההתקן המדובר הוא התקן המופעל באמצעות סוללות, ודא שהוא ער ויכול לקבל פקודות בעת שימוש בשירות זה."
|
||||
}
|
||||
},
|
||||
"area_registry": {
|
||||
"caption": "מאגר האזורים",
|
||||
"description": "סקירה של כל האזורים בביתך."
|
||||
},
|
||||
"entity_registry": {
|
||||
"caption": "מאגר הישויות",
|
||||
"description": "סקירה של כל הישויות המוכרות"
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
@ -724,6 +752,11 @@
|
||||
"checked_items": "פריטים מסומנים",
|
||||
"clear_items": "נקה פריטים מסומנים",
|
||||
"add_item": "הוסף פריט"
|
||||
},
|
||||
"empty_state": {
|
||||
"title": "ברוך הבא הביתה",
|
||||
"no_devices": "דף זה מאפשר לך לשלוט במכשירים שלך, אך נראה שעדיין לא הוגדרו מכשירים. עבור אל דף האינטגרציות כדי להתחיל.",
|
||||
"go_to_integrations_page": "עבור אל דף האינטגרציות."
|
||||
}
|
||||
},
|
||||
"editor": {
|
||||
@ -743,7 +776,6 @@
|
||||
"migrate": "הגר הגדרה"
|
||||
},
|
||||
"header": "ערוך UI",
|
||||
"configure_ui": "הגדר UI",
|
||||
"edit_view": {
|
||||
"header": "הצג הגדרות",
|
||||
"add": "הוסף תצוגה",
|
||||
@ -757,6 +789,9 @@
|
||||
"cancel": "לא משנה",
|
||||
"save": "קח שליטה"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "הגדר UI"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -926,6 +961,19 @@
|
||||
"save": "שמור",
|
||||
"name": "שם",
|
||||
"entity_id": "מזהה ישות"
|
||||
},
|
||||
"more_info_control": {
|
||||
"script": {
|
||||
"last_action": "פעולה אחרונה"
|
||||
},
|
||||
"sun": {
|
||||
"elevation": "גובה",
|
||||
"rising": "זורחת",
|
||||
"setting": "שוקעת"
|
||||
},
|
||||
"updater": {
|
||||
"title": "הוראות עדכון"
|
||||
}
|
||||
}
|
||||
},
|
||||
"auth_store": {
|
||||
|
@ -725,7 +725,6 @@
|
||||
"migrate": "Migriraj konfiguraciju"
|
||||
},
|
||||
"header": "Uredi UI",
|
||||
"configure_ui": "Konfiguriraj UI",
|
||||
"edit_view": {
|
||||
"header": "Pogledaj konfiguraciju",
|
||||
"add": "Dodaj prikaz",
|
||||
@ -739,6 +738,9 @@
|
||||
"cancel": "Nema veze",
|
||||
"save": "Preuzmi kontrolu"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Konfiguriraj UI"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -753,7 +753,6 @@
|
||||
"migrate": "Konfiguráció áttelepítése"
|
||||
},
|
||||
"header": "Felhasználói felület szerkesztése",
|
||||
"configure_ui": "Felhasználói felület konfigurálása",
|
||||
"edit_view": {
|
||||
"header": "Nézet konfigurálása",
|
||||
"add": "Nézet hozzáadása",
|
||||
@ -767,6 +766,9 @@
|
||||
"cancel": "Mégsem",
|
||||
"save": "Irányítás átvétele"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Felhasználói felület konfigurálása"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -753,7 +753,6 @@
|
||||
"migrate": "Esporta configurazione"
|
||||
},
|
||||
"header": "Modifica dell'interfaccia utente",
|
||||
"configure_ui": "Configurare l'interfaccia utente",
|
||||
"edit_view": {
|
||||
"header": "Visualizza configurazione",
|
||||
"add": "Aggiungi vista",
|
||||
@ -767,6 +766,9 @@
|
||||
"cancel": "Rinuncia",
|
||||
"save": "Prendere il controllo"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Configurare l'interfaccia utente"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -753,7 +753,6 @@
|
||||
"migrate": "설정 마이그레이션"
|
||||
},
|
||||
"header": "UI 편집",
|
||||
"configure_ui": "UI 구성",
|
||||
"edit_view": {
|
||||
"header": "구성 보기",
|
||||
"add": "뷰 추가",
|
||||
@ -767,6 +766,9 @@
|
||||
"cancel": "아닙니다",
|
||||
"save": "직접 관리할게요"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "UI 구성"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -777,7 +777,6 @@
|
||||
"migrate": "Konfiguratioun migréieren"
|
||||
},
|
||||
"header": "UI änneren",
|
||||
"configure_ui": "UI konfiguréieren",
|
||||
"edit_view": {
|
||||
"header": "Konfiguratioun kucken",
|
||||
"add": "Vue dobäisetzen",
|
||||
@ -791,6 +790,9 @@
|
||||
"cancel": "Vergiess et",
|
||||
"save": "Kontroll iwwerhuelen"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "UI konfiguréieren"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -753,7 +753,6 @@
|
||||
"migrate": "Pārvietot konfigurāciju"
|
||||
},
|
||||
"header": "Rediģēt lietotāja interfeisu",
|
||||
"configure_ui": "Konfigurēt lietotāja interfeisu",
|
||||
"edit_view": {
|
||||
"header": "Skatīt konfigurāciju",
|
||||
"add": "Pievienot skatu",
|
||||
@ -767,6 +766,9 @@
|
||||
"cancel": "Nekas",
|
||||
"save": "Pārņemt kontroli"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Konfigurēt lietotāja interfeisu"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -753,7 +753,6 @@
|
||||
"migrate": "Overfør konfigurasjon"
|
||||
},
|
||||
"header": "Rediger brukergrensesnitt",
|
||||
"configure_ui": "Konfigurer brukergrensesnitt",
|
||||
"edit_view": {
|
||||
"header": "Vis konfigurasjon",
|
||||
"add": "Legg til visning",
|
||||
@ -767,6 +766,9 @@
|
||||
"cancel": "Glem det",
|
||||
"save": "Ta kontroll"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Konfigurer brukergrensesnitt"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -753,7 +753,6 @@
|
||||
"migrate": "Configuratie migreren"
|
||||
},
|
||||
"header": "Bewerk UI",
|
||||
"configure_ui": "Configureer UI",
|
||||
"edit_view": {
|
||||
"header": "Bekijk de configuratie",
|
||||
"add": "Weergave toevoegen",
|
||||
@ -767,6 +766,9 @@
|
||||
"cancel": "Laat maar",
|
||||
"save": "Neem over"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Configureer UI"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -743,7 +743,6 @@
|
||||
"migrate": "Overfør konfigurasjon"
|
||||
},
|
||||
"header": "Rediger brukargrensesnitt",
|
||||
"configure_ui": "Konfigurer brukargrensesnitt",
|
||||
"edit_view": {
|
||||
"header": "Vis konfigurasjon",
|
||||
"add": "Legg til side",
|
||||
@ -757,6 +756,9 @@
|
||||
"cancel": "Gløym det",
|
||||
"save": "Ta kontroll"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Konfigurer brukargrensesnitt"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -777,7 +777,6 @@
|
||||
"migrate": "Migracja konfiguracji"
|
||||
},
|
||||
"header": "Edycja interfejsu użytkownika",
|
||||
"configure_ui": "Konfiguracja interfejsu użytkownika",
|
||||
"edit_view": {
|
||||
"header": "Konfiguracja widoku",
|
||||
"add": "Dodaj widok",
|
||||
@ -791,6 +790,9 @@
|
||||
"cancel": "Nieważne",
|
||||
"save": "Przejmuję kontrolę"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Konfiguracja interfejsu użytkownika"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -743,7 +743,6 @@
|
||||
"migrate": "Migrar configuração"
|
||||
},
|
||||
"header": "Editar “interface” do usuário",
|
||||
"configure_ui": "Configurar “interface” do usuário",
|
||||
"edit_view": {
|
||||
"header": "Configurações",
|
||||
"add": "Editar visualização",
|
||||
@ -757,6 +756,9 @@
|
||||
"cancel": "Nunca",
|
||||
"save": "Assuma o controle"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Configurar “interface” do usuário"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -743,7 +743,6 @@
|
||||
"migrate": "Migrar configuração"
|
||||
},
|
||||
"header": "Editar UI",
|
||||
"configure_ui": "Configurar UI",
|
||||
"edit_view": {
|
||||
"header": "Ver configuração",
|
||||
"add": "Acrescentar vista",
|
||||
@ -757,6 +756,9 @@
|
||||
"cancel": "Cancelar",
|
||||
"save": "Assumir o controle"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Configurar UI"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -927,7 +927,8 @@
|
||||
"updater": "Updater",
|
||||
"weblink": "Legătură web",
|
||||
"zwave": "Z-Wave",
|
||||
"vacuum": "Aspirator"
|
||||
"vacuum": "Aspirator",
|
||||
"system_health": "Stare Sistem"
|
||||
},
|
||||
"attribute": {
|
||||
"weather": {
|
||||
|
@ -777,7 +777,6 @@
|
||||
"migrate": "Перенести настройки"
|
||||
},
|
||||
"header": "Редактирование интерфейса",
|
||||
"configure_ui": "Настройка интерфейса",
|
||||
"edit_view": {
|
||||
"header": "Настройки вкладки",
|
||||
"add": "Добавить вкладку",
|
||||
@ -791,6 +790,9 @@
|
||||
"cancel": "Оставить как есть",
|
||||
"save": "Получить контроль"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Настройка интерфейса"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -753,7 +753,6 @@
|
||||
"migrate": "Migrovať konfiguráciu"
|
||||
},
|
||||
"header": "Upraviť používateľské rozhranie",
|
||||
"configure_ui": "Konfigurovať používateľské rozhranie",
|
||||
"edit_view": {
|
||||
"header": "Konfigurácia zobrazenia",
|
||||
"add": "Pridať zobrazenie",
|
||||
@ -767,6 +766,9 @@
|
||||
"cancel": "Nevadí",
|
||||
"save": "Prevziať kontrolu"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Konfigurovať používateľské rozhranie"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -753,7 +753,6 @@
|
||||
"migrate": "Migriraj nastavitve"
|
||||
},
|
||||
"header": "Uredi UI",
|
||||
"configure_ui": "Konfiguriraj UI",
|
||||
"edit_view": {
|
||||
"header": "Prikaži konfiguracijo",
|
||||
"add": "Dodaj pogled",
|
||||
@ -767,6 +766,9 @@
|
||||
"cancel": "Pozabi",
|
||||
"save": "Prevzemite nadzor"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Konfiguriraj UI"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -345,7 +345,7 @@
|
||||
},
|
||||
"customize": {
|
||||
"caption": "Anpassning",
|
||||
"description": "Anpassa dina enheter"
|
||||
"description": "Anpassa dina entiteter"
|
||||
},
|
||||
"automation": {
|
||||
"caption": "Automationer",
|
||||
@ -418,7 +418,7 @@
|
||||
},
|
||||
"zone": {
|
||||
"label": "Zon",
|
||||
"entity": "Enhet med position",
|
||||
"entity": "Entitet med position",
|
||||
"zone": "Zon",
|
||||
"event": "Händelse",
|
||||
"enter": "Ankommer",
|
||||
@ -433,6 +433,14 @@
|
||||
"hours": "Timmar",
|
||||
"minutes": "Minuter",
|
||||
"seconds": "Sekunder"
|
||||
},
|
||||
"geo_location": {
|
||||
"label": "Geolocation",
|
||||
"source": "Källa",
|
||||
"zone": "Zon",
|
||||
"event": "Händelse:",
|
||||
"enter": "Ankomma",
|
||||
"leave": "Lämna"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -476,7 +484,7 @@
|
||||
},
|
||||
"zone": {
|
||||
"label": "Zon",
|
||||
"entity": "Enhet med position",
|
||||
"entity": "Entitet med position",
|
||||
"zone": "Zon"
|
||||
}
|
||||
}
|
||||
@ -565,7 +573,18 @@
|
||||
},
|
||||
"zha": {
|
||||
"caption": "ZHA",
|
||||
"description": "Zigbee Home Automation nätverkhantering"
|
||||
"description": "Zigbee Home Automation nätverkhantering",
|
||||
"services": {
|
||||
"reconfigure": "Återkonfigurera ZHA-enheten (läka enheten). Använd det här om du har problem med enheten. Om den aktuella enheten är en batteridriven enhet, se till att den är vaken och accepterar kommandon när du använder den här tjänsten."
|
||||
}
|
||||
},
|
||||
"area_registry": {
|
||||
"caption": "Områdesregister",
|
||||
"description": "Oversikt över alla områden i ditt hem"
|
||||
},
|
||||
"entity_registry": {
|
||||
"caption": "Entitetsregister",
|
||||
"description": "Översikt över alla kända entiteter"
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
@ -734,6 +753,11 @@
|
||||
"checked_items": "Markerade objekt",
|
||||
"clear_items": "Rensa avbockade objekt",
|
||||
"add_item": "Lägg till objekt"
|
||||
},
|
||||
"empty_state": {
|
||||
"title": "Välkommen hem",
|
||||
"no_devices": "På den här sidan kan du styra dina enheter, men det ser ut som om du inte har några enheter ännu. Gå till integrationssidan för att komma igång.",
|
||||
"go_to_integrations_page": "Gå till integrationssidan."
|
||||
}
|
||||
},
|
||||
"editor": {
|
||||
@ -753,7 +777,6 @@
|
||||
"migrate": "Migrera konfigurationen"
|
||||
},
|
||||
"header": "Ändra användargränssnittet",
|
||||
"configure_ui": "Konfigurera användargränssnittet",
|
||||
"edit_view": {
|
||||
"header": "Visa konfiguration",
|
||||
"add": "Lägg till vy",
|
||||
@ -767,6 +790,9 @@
|
||||
"cancel": "Glöm det",
|
||||
"save": "Ta kontroll"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Konfigurera användargränssnittet"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -901,7 +927,7 @@
|
||||
"components": {
|
||||
"entity": {
|
||||
"entity-picker": {
|
||||
"entity": "Enhet"
|
||||
"entity": "Entitet"
|
||||
}
|
||||
},
|
||||
"service-picker": {
|
||||
@ -935,7 +961,7 @@
|
||||
"more_info_settings": {
|
||||
"save": "Spara",
|
||||
"name": "Namn",
|
||||
"entity_id": "Enhets-ID"
|
||||
"entity_id": "Entitets-ID"
|
||||
},
|
||||
"more_info_control": {
|
||||
"script": {
|
||||
@ -999,7 +1025,11 @@
|
||||
"weblink": "Webblänk",
|
||||
"zwave": "Z-Wave",
|
||||
"vacuum": "Dammsugare",
|
||||
"zha": "ZHA"
|
||||
"zha": "ZHA",
|
||||
"hassio": "Hass.io",
|
||||
"homeassistant": "Home Assistant",
|
||||
"lovelace": "Lovelace",
|
||||
"system_health": "Systemhälsa"
|
||||
},
|
||||
"attribute": {
|
||||
"weather": {
|
||||
|
@ -655,7 +655,6 @@
|
||||
"migrate": "Ayarları aktar"
|
||||
},
|
||||
"header": "Kullanıcı arayüzünü düzenle",
|
||||
"configure_ui": "Kullanıcı arayüzünü ayarla",
|
||||
"edit_view": {
|
||||
"header": "Ayarları görüntüle",
|
||||
"add": "Görünüm ekle",
|
||||
@ -669,6 +668,9 @@
|
||||
"cancel": "Boşver",
|
||||
"save": "Kontrol altına al"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Kullanıcı arayüzünü ayarla"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -671,7 +671,6 @@
|
||||
"migrate": "Перенесення конфігурації"
|
||||
},
|
||||
"header": "Редагування інтерфейсу",
|
||||
"configure_ui": "Налаштувати інтерфейс користувача",
|
||||
"edit_view": {
|
||||
"header": "Перегляд Конфігурації",
|
||||
"add": "Додати вигляд",
|
||||
@ -685,6 +684,9 @@
|
||||
"cancel": "Неважливо",
|
||||
"save": "Взяти під контроль"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "Налаштувати інтерфейс користувача"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -751,7 +751,6 @@
|
||||
"migrate": "迁移配置"
|
||||
},
|
||||
"header": "编辑 UI",
|
||||
"configure_ui": "配置 UI",
|
||||
"edit_view": {
|
||||
"header": "查看配置",
|
||||
"add": "添加视图",
|
||||
@ -765,6 +764,9 @@
|
||||
"cancel": "没关系",
|
||||
"save": "自行编辑"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "配置 UI"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -777,7 +777,6 @@
|
||||
"migrate": "遷移設定"
|
||||
},
|
||||
"header": "編輯 UI",
|
||||
"configure_ui": "設定 UI",
|
||||
"edit_view": {
|
||||
"header": "檢視設定",
|
||||
"add": "新增視圖",
|
||||
@ -791,6 +790,9 @@
|
||||
"cancel": "我再想想",
|
||||
"save": "自行編輯"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"configure_ui": "設定 UI"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -7019,6 +7019,11 @@ gulp-foreach@^0.1.0:
|
||||
gulp-util "~2.2.14"
|
||||
through2 "~0.6.3"
|
||||
|
||||
gulp-hash-filename@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/gulp-hash-filename/-/gulp-hash-filename-2.0.1.tgz#c30656261a9b622d636766e48b8297125b4ddde8"
|
||||
integrity sha512-pMg5owb8Dt0wqjgPx/TFbU3c5ckD16rrgo0BTm9PQ3pVC1Zsgw7AYx1+DP2t31JoUTeN1/dPuXNWnCNvN/wj7A==
|
||||
|
||||
gulp-hash@^4.2.2:
|
||||
version "4.2.2"
|
||||
resolved "https://registry.yarnpkg.com/gulp-hash/-/gulp-hash-4.2.2.tgz#2cf4ad081ef7a65393a51e3df58f514f388f4523"
|
||||
|
Loading…
x
Reference in New Issue
Block a user