mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-18 06:46:35 +00:00
Merge pull request #9285 from home-assistant/dev
This commit is contained in:
commit
cf03f103ab
@ -4,6 +4,7 @@ import { mdiDotsVertical } from "@mdi/js";
|
|||||||
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
|
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
|
||||||
import { customElement, property, query, state } from "lit/decorators";
|
import { customElement, property, query, state } from "lit/decorators";
|
||||||
import { fireEvent } from "../../../../src/common/dom/fire_event";
|
import { fireEvent } from "../../../../src/common/dom/fire_event";
|
||||||
|
import { slugify } from "../../../../src/common/string/slugify";
|
||||||
import "../../../../src/components/buttons/ha-progress-button";
|
import "../../../../src/components/buttons/ha-progress-button";
|
||||||
import "../../../../src/components/ha-button-menu";
|
import "../../../../src/components/ha-button-menu";
|
||||||
import { createCloseHeading } from "../../../../src/components/ha-dialog";
|
import { createCloseHeading } from "../../../../src/components/ha-dialog";
|
||||||
@ -287,10 +288,9 @@ class HassioSnapshotDialog
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const name = this._computeName.replace(/[^a-z0-9]+/gi, "_");
|
|
||||||
const a = document.createElement("a");
|
const a = document.createElement("a");
|
||||||
a.href = signedPath.path;
|
a.href = signedPath.path;
|
||||||
a.download = `Hass_io_${name}.tar`;
|
a.download = `home_assistant_snapshot_${slugify(this._computeName)}.tar`;
|
||||||
this.shadowRoot!.appendChild(a);
|
this.shadowRoot!.appendChild(a);
|
||||||
a.click();
|
a.click();
|
||||||
this.shadowRoot!.removeChild(a);
|
this.shadowRoot!.removeChild(a);
|
||||||
|
@ -103,27 +103,25 @@ export class HassioMain extends SupervisorBaseElement {
|
|||||||
|
|
||||||
private _applyTheme() {
|
private _applyTheme() {
|
||||||
let themeName: string;
|
let themeName: string;
|
||||||
let themeSettings:
|
let themeSettings: Partial<HomeAssistant["selectedTheme"]> | undefined;
|
||||||
| Partial<HomeAssistant["selectedThemeSettings"]>
|
|
||||||
| undefined;
|
|
||||||
|
|
||||||
if (atLeastVersion(this.hass.config.version, 0, 114)) {
|
if (atLeastVersion(this.hass.config.version, 0, 114)) {
|
||||||
themeName =
|
themeName =
|
||||||
this.hass.selectedThemeSettings?.theme ||
|
this.hass.selectedTheme?.theme ||
|
||||||
(this.hass.themes.darkMode && this.hass.themes.default_dark_theme
|
(this.hass.themes.darkMode && this.hass.themes.default_dark_theme
|
||||||
? this.hass.themes.default_dark_theme!
|
? this.hass.themes.default_dark_theme!
|
||||||
: this.hass.themes.default_theme);
|
: this.hass.themes.default_theme);
|
||||||
|
|
||||||
themeSettings = this.hass.selectedThemeSettings;
|
themeSettings = this.hass.selectedTheme;
|
||||||
if (themeSettings?.dark === undefined) {
|
if (themeSettings?.dark === undefined) {
|
||||||
themeSettings = {
|
themeSettings = {
|
||||||
...this.hass.selectedThemeSettings,
|
...this.hass.selectedTheme,
|
||||||
dark: this.hass.themes.darkMode,
|
dark: this.hass.themes.darkMode,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
themeName =
|
themeName =
|
||||||
((this.hass.selectedThemeSettings as unknown) as string) ||
|
((this.hass.selectedTheme as unknown) as string) ||
|
||||||
this.hass.themes.default_theme;
|
this.hass.themes.default_theme;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
setup.py
2
setup.py
@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="home-assistant-frontend",
|
name="home-assistant-frontend",
|
||||||
version="20210526.0",
|
version="20210528.0",
|
||||||
description="The Home Assistant frontend",
|
description="The Home Assistant frontend",
|
||||||
url="https://github.com/home-assistant/home-assistant-polymer",
|
url="https://github.com/home-assistant/home-assistant-polymer",
|
||||||
author="The Home Assistant Authors",
|
author="The Home Assistant Authors",
|
||||||
|
@ -31,7 +31,7 @@ export const applyThemesOnElement = (
|
|||||||
element,
|
element,
|
||||||
themes: HomeAssistant["themes"],
|
themes: HomeAssistant["themes"],
|
||||||
selectedTheme?: string,
|
selectedTheme?: string,
|
||||||
themeSettings?: Partial<HomeAssistant["selectedThemeSettings"]>
|
themeSettings?: Partial<HomeAssistant["selectedTheme"]>
|
||||||
) => {
|
) => {
|
||||||
let cacheKey = selectedTheme;
|
let cacheKey = selectedTheme;
|
||||||
let themeRules: Partial<ThemeVars> = {};
|
let themeRules: Partial<ThemeVars> = {};
|
||||||
|
10
src/common/util/promise-timeout.ts
Normal file
10
src/common/util/promise-timeout.ts
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
export const promiseTimeout = (ms: number, promise: Promise<any>) => {
|
||||||
|
const timeout = new Promise((_resolve, reject) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
reject(`Timed out in ${ms} ms.`);
|
||||||
|
}, ms);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Returns a race between our timeout and the passed in promise
|
||||||
|
return Promise.race([promise, timeout]);
|
||||||
|
};
|
@ -125,6 +125,7 @@ export class HaIcon extends LitElement {
|
|||||||
databaseIcon = await getIcon(iconName);
|
databaseIcon = await getIcon(iconName);
|
||||||
} catch (_err) {
|
} catch (_err) {
|
||||||
// Firefox in private mode doesn't support IDB
|
// Firefox in private mode doesn't support IDB
|
||||||
|
// iOS Safari sometimes doesn't open the DB
|
||||||
databaseIcon = undefined;
|
databaseIcon = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -377,6 +377,7 @@ class StateHistoryChartLine extends LocalizeMixin(PolymerElement) {
|
|||||||
major: {
|
major: {
|
||||||
fontStyle: "bold",
|
fontStyle: "bold",
|
||||||
},
|
},
|
||||||
|
autoSkipPadding: 20,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -236,10 +236,13 @@ class StateHistoryChartTimeline extends LocalizeMixin(PolymerElement) {
|
|||||||
major: {
|
major: {
|
||||||
fontStyle: "bold",
|
fontStyle: "bold",
|
||||||
},
|
},
|
||||||
|
autoSkipPadding: 50,
|
||||||
},
|
},
|
||||||
categoryPercentage: undefined,
|
categoryPercentage: undefined,
|
||||||
barPercentage: undefined,
|
barPercentage: undefined,
|
||||||
time: { format: undefined },
|
time: {
|
||||||
|
format: undefined,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
yAxes: [
|
yAxes: [
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { clear, get, set, createStore } from "idb-keyval";
|
import { clear, get, set, createStore, promisifyRequest } from "idb-keyval";
|
||||||
|
import { promiseTimeout } from "../common/util/promise-timeout";
|
||||||
import { iconMetadata } from "../resources/icon-metadata";
|
import { iconMetadata } from "../resources/icon-metadata";
|
||||||
import { IconMeta } from "../types";
|
import { IconMeta } from "../types";
|
||||||
|
|
||||||
@ -14,33 +15,34 @@ export const iconStore = createStore("hass-icon-db", "mdi-icon-store");
|
|||||||
|
|
||||||
export const MDI_PREFIXES = ["mdi", "hass", "hassio", "hademo"];
|
export const MDI_PREFIXES = ["mdi", "hass", "hassio", "hademo"];
|
||||||
|
|
||||||
let toRead: Array<[string, (iconPath: string) => void, () => void]> = [];
|
let toRead: Array<
|
||||||
|
[string, (iconPath: string | undefined) => void, (e: any) => void]
|
||||||
|
> = [];
|
||||||
|
|
||||||
// Queue up as many icon fetches in 1 transaction
|
// Queue up as many icon fetches in 1 transaction
|
||||||
export const getIcon = (iconName: string) =>
|
export const getIcon = (iconName: string) =>
|
||||||
new Promise<string>((resolve, reject) => {
|
new Promise<string | undefined>((resolve, reject) => {
|
||||||
toRead.push([iconName, resolve, reject]);
|
toRead.push([iconName, resolve, reject]);
|
||||||
|
|
||||||
if (toRead.length > 1) {
|
if (toRead.length > 1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const results: Array<[(iconPath: string) => void, IDBRequest]> = [];
|
promiseTimeout(
|
||||||
|
1000,
|
||||||
iconStore("readonly", (store) => {
|
iconStore("readonly", (store) => {
|
||||||
for (const [iconName_, resolve_] of toRead) {
|
for (const [iconName_, resolve_, reject_] of toRead) {
|
||||||
results.push([resolve_, store.get(iconName_)]);
|
promisifyRequest<string | undefined>(store.get(iconName_))
|
||||||
|
.then((icon) => resolve_(icon))
|
||||||
|
.catch((e) => reject_(e));
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.then(() => {
|
)
|
||||||
for (const [resolve_, request] of results) {
|
.catch((e) => {
|
||||||
resolve_(request.result);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(() => {
|
|
||||||
// Firefox in private mode doesn't support IDB
|
// Firefox in private mode doesn't support IDB
|
||||||
|
// Safari sometime doesn't open the DB so we time out
|
||||||
for (const [, , reject_] of toRead) {
|
for (const [, , reject_] of toRead) {
|
||||||
reject_();
|
reject_(e);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
|
@ -277,7 +277,7 @@ export const provideHass = (
|
|||||||
mockTheme(theme) {
|
mockTheme(theme) {
|
||||||
invalidateThemeCache();
|
invalidateThemeCache();
|
||||||
hass().updateHass({
|
hass().updateHass({
|
||||||
selectedThemeSettings: { theme: theme ? "mock" : "default" },
|
selectedTheme: { theme: theme ? "mock" : "default" },
|
||||||
themes: {
|
themes: {
|
||||||
...hass().themes,
|
...hass().themes,
|
||||||
themes: {
|
themes: {
|
||||||
@ -285,11 +285,11 @@ export const provideHass = (
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const { themes, selectedThemeSettings } = hass();
|
const { themes, selectedTheme } = hass();
|
||||||
applyThemesOnElement(
|
applyThemesOnElement(
|
||||||
document.documentElement,
|
document.documentElement,
|
||||||
themes,
|
themes,
|
||||||
selectedThemeSettings!.theme
|
selectedTheme!.theme
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -81,27 +81,25 @@ class SupervisorErrorScreen extends LitElement {
|
|||||||
|
|
||||||
private _applyTheme() {
|
private _applyTheme() {
|
||||||
let themeName: string;
|
let themeName: string;
|
||||||
let themeSettings:
|
let themeSettings: Partial<HomeAssistant["selectedTheme"]> | undefined;
|
||||||
| Partial<HomeAssistant["selectedThemeSettings"]>
|
|
||||||
| undefined;
|
|
||||||
|
|
||||||
if (atLeastVersion(this.hass.config.version, 0, 114)) {
|
if (atLeastVersion(this.hass.config.version, 0, 114)) {
|
||||||
themeName =
|
themeName =
|
||||||
this.hass.selectedThemeSettings?.theme ||
|
this.hass.selectedTheme?.theme ||
|
||||||
(this.hass.themes.darkMode && this.hass.themes.default_dark_theme
|
(this.hass.themes.darkMode && this.hass.themes.default_dark_theme
|
||||||
? this.hass.themes.default_dark_theme!
|
? this.hass.themes.default_dark_theme!
|
||||||
: this.hass.themes.default_theme);
|
: this.hass.themes.default_theme);
|
||||||
|
|
||||||
themeSettings = this.hass.selectedThemeSettings;
|
themeSettings = this.hass.selectedTheme;
|
||||||
if (themeName === "default" && themeSettings?.dark === undefined) {
|
if (themeName === "default" && themeSettings?.dark === undefined) {
|
||||||
themeSettings = {
|
themeSettings = {
|
||||||
...this.hass.selectedThemeSettings,
|
...this.hass.selectedTheme,
|
||||||
dark: this.hass.themes.darkMode,
|
dark: this.hass.themes.darkMode,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
themeName =
|
themeName =
|
||||||
((this.hass.selectedThemeSettings as unknown) as string) ||
|
((this.hass.selectedTheme as unknown) as string) ||
|
||||||
this.hass.themes.default_theme;
|
this.hass.themes.default_theme;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ export class HUIView extends ReactiveElement {
|
|||||||
changedProperties.has("hass") &&
|
changedProperties.has("hass") &&
|
||||||
(!oldHass ||
|
(!oldHass ||
|
||||||
this.hass.themes !== oldHass.themes ||
|
this.hass.themes !== oldHass.themes ||
|
||||||
this.hass.selectedThemeSettings !== oldHass.selectedThemeSettings)
|
this.hass.selectedTheme !== oldHass.selectedTheme)
|
||||||
) {
|
) {
|
||||||
applyThemesOnElement(this, this.hass.themes, this._viewConfigTheme);
|
applyThemesOnElement(this, this.hass.themes, this._viewConfigTheme);
|
||||||
}
|
}
|
||||||
|
@ -41,9 +41,9 @@ export class HaPickThemeRow extends LitElement {
|
|||||||
const hasThemes =
|
const hasThemes =
|
||||||
this.hass.themes.themes && Object.keys(this.hass.themes.themes).length;
|
this.hass.themes.themes && Object.keys(this.hass.themes.themes).length;
|
||||||
const curTheme =
|
const curTheme =
|
||||||
this.hass.selectedThemeSettings?.theme || this.hass.themes.default_theme;
|
this.hass.selectedTheme?.theme || this.hass.themes.default_theme;
|
||||||
|
|
||||||
const themeSettings = this.hass.selectedThemeSettings;
|
const themeSettings = this.hass.selectedTheme;
|
||||||
|
|
||||||
return html`
|
return html`
|
||||||
<ha-settings-row .narrow=${this.narrow}>
|
<ha-settings-row .narrow=${this.narrow}>
|
||||||
@ -162,8 +162,7 @@ export class HaPickThemeRow extends LitElement {
|
|||||||
(!oldHass || oldHass.themes.themes !== this.hass.themes.themes);
|
(!oldHass || oldHass.themes.themes !== this.hass.themes.themes);
|
||||||
const selectedThemeChanged =
|
const selectedThemeChanged =
|
||||||
changedProperties.has("hass") &&
|
changedProperties.has("hass") &&
|
||||||
(!oldHass ||
|
(!oldHass || oldHass.selectedTheme !== this.hass.selectedTheme);
|
||||||
oldHass.selectedThemeSettings !== this.hass.selectedThemeSettings);
|
|
||||||
|
|
||||||
if (themesChanged) {
|
if (themesChanged) {
|
||||||
this._themeNames = ["Backend-selected", "default"].concat(
|
this._themeNames = ["Backend-selected", "default"].concat(
|
||||||
@ -173,16 +172,16 @@ export class HaPickThemeRow extends LitElement {
|
|||||||
|
|
||||||
if (selectedThemeChanged) {
|
if (selectedThemeChanged) {
|
||||||
if (
|
if (
|
||||||
this.hass.selectedThemeSettings &&
|
this.hass.selectedTheme &&
|
||||||
this._themeNames.indexOf(this.hass.selectedThemeSettings.theme) > 0
|
this._themeNames.indexOf(this.hass.selectedTheme.theme) > 0
|
||||||
) {
|
) {
|
||||||
this._selectedThemeIndex = this._themeNames.indexOf(
|
this._selectedThemeIndex = this._themeNames.indexOf(
|
||||||
this.hass.selectedThemeSettings.theme
|
this.hass.selectedTheme.theme
|
||||||
);
|
);
|
||||||
this._selectedTheme = this.hass.themes.themes[
|
this._selectedTheme = this.hass.themes.themes[
|
||||||
this.hass.selectedThemeSettings.theme
|
this.hass.selectedTheme.theme
|
||||||
];
|
];
|
||||||
} else if (!this.hass.selectedThemeSettings) {
|
} else if (!this.hass.selectedTheme) {
|
||||||
this._selectedThemeIndex = 0;
|
this._selectedThemeIndex = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -220,7 +219,7 @@ export class HaPickThemeRow extends LitElement {
|
|||||||
private _handleThemeSelection(ev: CustomEvent) {
|
private _handleThemeSelection(ev: CustomEvent) {
|
||||||
const theme = ev.detail.item.theme;
|
const theme = ev.detail.item.theme;
|
||||||
if (theme === "Backend-selected") {
|
if (theme === "Backend-selected") {
|
||||||
if (this.hass.selectedThemeSettings?.theme) {
|
if (this.hass.selectedTheme?.theme) {
|
||||||
fireEvent(this, "settheme", {
|
fireEvent(this, "settheme", {
|
||||||
theme: "",
|
theme: "",
|
||||||
primaryColor: undefined,
|
primaryColor: undefined,
|
||||||
|
@ -39,7 +39,7 @@ export const connectionMixin = <T extends Constructor<HassBaseEl>>(
|
|||||||
states: null as any,
|
states: null as any,
|
||||||
config: null as any,
|
config: null as any,
|
||||||
themes: null as any,
|
themes: null as any,
|
||||||
selectedThemeSettings: null,
|
selectedTheme: null,
|
||||||
panels: null as any,
|
panels: null as any,
|
||||||
services: null as any,
|
services: null as any,
|
||||||
user: null as any,
|
user: null as any,
|
||||||
|
@ -11,10 +11,10 @@ import { HassBaseEl } from "./hass-base-mixin";
|
|||||||
declare global {
|
declare global {
|
||||||
// for add event listener
|
// for add event listener
|
||||||
interface HTMLElementEventMap {
|
interface HTMLElementEventMap {
|
||||||
settheme: HASSDomEvent<Partial<HomeAssistant["selectedThemeSettings"]>>;
|
settheme: HASSDomEvent<Partial<HomeAssistant["selectedTheme"]>>;
|
||||||
}
|
}
|
||||||
interface HASSDomEvents {
|
interface HASSDomEvents {
|
||||||
settheme: Partial<HomeAssistant["selectedThemeSettings"]>;
|
settheme: Partial<HomeAssistant["selectedTheme"]>;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -28,8 +28,8 @@ export default <T extends Constructor<HassBaseEl>>(superClass: T) =>
|
|||||||
super.firstUpdated(changedProps);
|
super.firstUpdated(changedProps);
|
||||||
this.addEventListener("settheme", (ev) => {
|
this.addEventListener("settheme", (ev) => {
|
||||||
this._updateHass({
|
this._updateHass({
|
||||||
selectedThemeSettings: {
|
selectedTheme: {
|
||||||
...this.hass!.selectedThemeSettings!,
|
...this.hass!.selectedTheme!,
|
||||||
...ev.detail,
|
...ev.detail,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@ -68,8 +68,8 @@ export default <T extends Constructor<HassBaseEl>>(superClass: T) =>
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let themeSettings: Partial<HomeAssistant["selectedThemeSettings"]> = this
|
let themeSettings: Partial<HomeAssistant["selectedTheme"]> = this.hass!
|
||||||
.hass!.selectedThemeSettings;
|
.selectedTheme;
|
||||||
|
|
||||||
const themeName =
|
const themeName =
|
||||||
themeSettings?.theme ||
|
themeSettings?.theme ||
|
||||||
@ -89,7 +89,7 @@ export default <T extends Constructor<HassBaseEl>>(superClass: T) =>
|
|||||||
darkMode = false;
|
darkMode = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
themeSettings = { ...this.hass.selectedThemeSettings, dark: darkMode };
|
themeSettings = { ...this.hass.selectedTheme, dark: darkMode };
|
||||||
|
|
||||||
applyThemesOnElement(
|
applyThemesOnElement(
|
||||||
document.documentElement,
|
document.documentElement,
|
||||||
|
@ -194,7 +194,7 @@ export interface HomeAssistant {
|
|||||||
services: HassServices;
|
services: HassServices;
|
||||||
config: HassConfig;
|
config: HassConfig;
|
||||||
themes: Themes;
|
themes: Themes;
|
||||||
selectedThemeSettings: ThemeSettings | null;
|
selectedTheme: ThemeSettings | null;
|
||||||
panels: Panels;
|
panels: Panels;
|
||||||
panelUrl: string;
|
panelUrl: string;
|
||||||
// i18n
|
// i18n
|
||||||
|
@ -2,16 +2,13 @@ import { HomeAssistant } from "../types";
|
|||||||
|
|
||||||
const STORED_STATE = [
|
const STORED_STATE = [
|
||||||
"dockedSidebar",
|
"dockedSidebar",
|
||||||
"selectedThemeSettings",
|
"selectedTheme",
|
||||||
"selectedLanguage",
|
"selectedLanguage",
|
||||||
"vibrate",
|
"vibrate",
|
||||||
"suspendWhenHidden",
|
"suspendWhenHidden",
|
||||||
"enableShortcuts",
|
"enableShortcuts",
|
||||||
"defaultPanel",
|
"defaultPanel",
|
||||||
];
|
];
|
||||||
// Deprecated states will be loaded once so that the values can be migrated to other states if required,
|
|
||||||
// but during the next state storing, the deprecated keys will be removed.
|
|
||||||
const STORED_STATE_DEPRECATED = ["selectedTheme"];
|
|
||||||
const STORAGE = window.localStorage || {};
|
const STORAGE = window.localStorage || {};
|
||||||
|
|
||||||
export function storeState(hass: HomeAssistant) {
|
export function storeState(hass: HomeAssistant) {
|
||||||
@ -20,9 +17,6 @@ export function storeState(hass: HomeAssistant) {
|
|||||||
const value = hass[key];
|
const value = hass[key];
|
||||||
STORAGE[key] = JSON.stringify(value === undefined ? null : value);
|
STORAGE[key] = JSON.stringify(value === undefined ? null : value);
|
||||||
});
|
});
|
||||||
STORED_STATE_DEPRECATED.forEach((key) => {
|
|
||||||
if (key in STORAGE) delete STORAGE[key];
|
|
||||||
});
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
// Safari throws exception in private mode
|
// Safari throws exception in private mode
|
||||||
}
|
}
|
||||||
@ -31,17 +25,13 @@ export function storeState(hass: HomeAssistant) {
|
|||||||
export function getState() {
|
export function getState() {
|
||||||
const state = {};
|
const state = {};
|
||||||
|
|
||||||
STORED_STATE.concat(STORED_STATE_DEPRECATED).forEach((key) => {
|
STORED_STATE.forEach((key) => {
|
||||||
if (key in STORAGE) {
|
if (key in STORAGE) {
|
||||||
let value = JSON.parse(STORAGE[key]);
|
let value = JSON.parse(STORAGE[key]);
|
||||||
// selectedTheme went from string to object on 20200718
|
// selectedTheme went from string to object on 20200718
|
||||||
if (key === "selectedTheme" && typeof value === "string") {
|
if (key === "selectedTheme" && typeof value === "string") {
|
||||||
value = { theme: value };
|
value = { theme: value };
|
||||||
}
|
}
|
||||||
// selectedTheme was renamed to selectedThemeSettings on 20210207
|
|
||||||
if (key === "selectedTheme") {
|
|
||||||
key = "selectedThemeSettings";
|
|
||||||
}
|
|
||||||
// dockedSidebar went from boolean to enum on 20190720
|
// dockedSidebar went from boolean to enum on 20190720
|
||||||
if (key === "dockedSidebar" && typeof value === "boolean") {
|
if (key === "dockedSidebar" && typeof value === "boolean") {
|
||||||
value = value ? "docked" : "auto";
|
value = value ? "docked" : "auto";
|
||||||
|
@ -101,6 +101,7 @@ hassAttributeUtil.LOGIC_STATE_ATTRIBUTES = {
|
|||||||
supported_features: undefined,
|
supported_features: undefined,
|
||||||
attribution: undefined,
|
attribution: undefined,
|
||||||
restored: undefined,
|
restored: undefined,
|
||||||
|
editable: undefined,
|
||||||
custom_ui_more_info: { type: "string" },
|
custom_ui_more_info: { type: "string" },
|
||||||
custom_ui_state_card: { type: "string" },
|
custom_ui_state_card: { type: "string" },
|
||||||
device_class: {
|
device_class: {
|
||||||
@ -109,6 +110,13 @@ hassAttributeUtil.LOGIC_STATE_ATTRIBUTES = {
|
|||||||
description: "Device class",
|
description: "Device class",
|
||||||
domains: ["binary_sensor", "cover", "humidifier", "sensor", "switch"],
|
domains: ["binary_sensor", "cover", "humidifier", "sensor", "switch"],
|
||||||
},
|
},
|
||||||
|
state_class: {
|
||||||
|
type: "array",
|
||||||
|
options: { sensor: ["measurement"] },
|
||||||
|
description: "State class",
|
||||||
|
domains: ["sensor"],
|
||||||
|
},
|
||||||
|
last_reset: undefined,
|
||||||
assumed_state: {
|
assumed_state: {
|
||||||
type: "boolean",
|
type: "boolean",
|
||||||
domains: [
|
domains: [
|
||||||
|
@ -292,7 +292,7 @@
|
|||||||
"save": "Desa",
|
"save": "Desa",
|
||||||
"show_more": "Mostra més informació al respecte",
|
"show_more": "Mostra més informació al respecte",
|
||||||
"update": "Actualitza",
|
"update": "Actualitza",
|
||||||
"update_available": "{count, plural,\n one {Actualització pendent}\n other {{count} Actualitzacions pendents}\n}",
|
"update_available": "{count, plural,\n one {Actualització pendent}\n other {{count} actualitzacions pendents}\n}",
|
||||||
"version": "Versió",
|
"version": "Versió",
|
||||||
"yes": "Sí"
|
"yes": "Sí"
|
||||||
},
|
},
|
||||||
@ -314,7 +314,7 @@
|
|||||||
"addon_new_version": "Nova versió disponible",
|
"addon_new_version": "Nova versió disponible",
|
||||||
"addon_running": "El complement s'està executant",
|
"addon_running": "El complement s'està executant",
|
||||||
"addon_stopped": "El complement està aturat",
|
"addon_stopped": "El complement està aturat",
|
||||||
"addons": "Complements",
|
"addons": "Complements instal·lats",
|
||||||
"no_addons": "Encara no tens cap complement instal·lat. Vés al directori de complements per començar!"
|
"no_addons": "Encara no tens cap complement instal·lat. Vés al directori de complements per començar!"
|
||||||
},
|
},
|
||||||
"dialog": {
|
"dialog": {
|
||||||
@ -396,14 +396,15 @@
|
|||||||
},
|
},
|
||||||
"folders": "Carpetes",
|
"folders": "Carpetes",
|
||||||
"full_snapshot": "Instantània completa",
|
"full_snapshot": "Instantània completa",
|
||||||
"name": "Nom",
|
"name": "Nom de la instantània",
|
||||||
"no_snapshots": "Encara no tens instantànies.",
|
"no_snapshots": "Encara no tens instantànies.",
|
||||||
"partial_snapshot": "Instantània parcial",
|
"partial_snapshot": "Instantània parcial",
|
||||||
"password": "Contrasenya",
|
"password": "Contrasenya de la instantània",
|
||||||
"password_protected": "protegit amb contrasenya",
|
"password_protected": "protegit amb contrasenya",
|
||||||
"password_protection": "Protecció amb contrasenya",
|
"password_protection": "Protecció amb contrasenya",
|
||||||
"security": "Seguretat",
|
"security": "Seguretat",
|
||||||
"type": "Tipus",
|
"select_type": "Selecciona què vols restaurar",
|
||||||
|
"type": "Tipus d'instantània",
|
||||||
"upload_snapshot": "Puja instantània"
|
"upload_snapshot": "Puja instantània"
|
||||||
},
|
},
|
||||||
"store": {
|
"store": {
|
||||||
@ -720,6 +721,9 @@
|
|||||||
"no_match": "No s'han trobat àrees coincidents",
|
"no_match": "No s'han trobat àrees coincidents",
|
||||||
"show_areas": "Mostra àrees"
|
"show_areas": "Mostra àrees"
|
||||||
},
|
},
|
||||||
|
"attributes": {
|
||||||
|
"expansion_header": "Atributs"
|
||||||
|
},
|
||||||
"blueprint-picker": {
|
"blueprint-picker": {
|
||||||
"add_user": "Afegeix usuari",
|
"add_user": "Afegeix usuari",
|
||||||
"remove_user": "Elimina usuari",
|
"remove_user": "Elimina usuari",
|
||||||
@ -1719,6 +1723,7 @@
|
|||||||
"title": "Alexa"
|
"title": "Alexa"
|
||||||
},
|
},
|
||||||
"connected": "Connectat",
|
"connected": "Connectat",
|
||||||
|
"connecting": "Connectant...",
|
||||||
"connection_status": "Estat de connexió amb Cloud",
|
"connection_status": "Estat de connexió amb Cloud",
|
||||||
"fetching_subscription": "Obtenint subscripció...",
|
"fetching_subscription": "Obtenint subscripció...",
|
||||||
"google": {
|
"google": {
|
||||||
@ -2959,6 +2964,7 @@
|
|||||||
},
|
},
|
||||||
"logs": {
|
"logs": {
|
||||||
"log_level": "Nivell dels registres",
|
"log_level": "Nivell dels registres",
|
||||||
|
"log_level_changed": "Nivell de registre canviat a: {level}",
|
||||||
"subscribed_to_logs": "Subscrit a missatges de registre Z-Wave JS...",
|
"subscribed_to_logs": "Subscrit a missatges de registre Z-Wave JS...",
|
||||||
"title": "Registres de Z-Wave JS"
|
"title": "Registres de Z-Wave JS"
|
||||||
},
|
},
|
||||||
|
@ -292,7 +292,7 @@
|
|||||||
"save": "Uložit",
|
"save": "Uložit",
|
||||||
"show_more": "Zobrazit o tom více informací",
|
"show_more": "Zobrazit o tom více informací",
|
||||||
"update": "Aktualizovat",
|
"update": "Aktualizovat",
|
||||||
"update_available": "{count, plural,\n one {Aktualizace}\n few {{count} aktualizace}\n other {{count} aktualizací}\n}",
|
"update_available": "{count, plural,\n one {Čekající aktualizace}\n few {{count} čekající aktualizace}\n other {{count} čekajících aktualizací}\n}",
|
||||||
"version": "Verze",
|
"version": "Verze",
|
||||||
"yes": "Ano"
|
"yes": "Ano"
|
||||||
},
|
},
|
||||||
@ -314,7 +314,7 @@
|
|||||||
"addon_new_version": "K dispozici je nová verze",
|
"addon_new_version": "K dispozici je nová verze",
|
||||||
"addon_running": "Doplněk je spuštěn",
|
"addon_running": "Doplněk je spuštěn",
|
||||||
"addon_stopped": "Doplněk je zastaven",
|
"addon_stopped": "Doplněk je zastaven",
|
||||||
"addons": "Doplňky",
|
"addons": "Nainstalované doplňky",
|
||||||
"no_addons": "Zatím nemáte nainstalované žádné doplňky. Chcete-li začít, přejděte do obchodu s doplňky."
|
"no_addons": "Zatím nemáte nainstalované žádné doplňky. Chcete-li začít, přejděte do obchodu s doplňky."
|
||||||
},
|
},
|
||||||
"dialog": {
|
"dialog": {
|
||||||
@ -396,14 +396,15 @@
|
|||||||
},
|
},
|
||||||
"folders": "Složky",
|
"folders": "Složky",
|
||||||
"full_snapshot": "Úplná záloha",
|
"full_snapshot": "Úplná záloha",
|
||||||
"name": "Název",
|
"name": "Název zálohy",
|
||||||
"no_snapshots": "Zatím nemáte žádné zálohy.",
|
"no_snapshots": "Zatím nemáte žádné zálohy.",
|
||||||
"partial_snapshot": "Částečná záloha",
|
"partial_snapshot": "Částečná záloha",
|
||||||
"password": "Heslo",
|
"password": "Heslo zálohy",
|
||||||
"password_protected": "chráněno heslem",
|
"password_protected": "chráněno heslem",
|
||||||
"password_protection": "Ochrana heslem",
|
"password_protection": "Ochrana heslem",
|
||||||
"security": "Zabezpečení",
|
"security": "Zabezpečení",
|
||||||
"type": "Typ",
|
"select_type": "Vyberte, co chcete obnovit",
|
||||||
|
"type": "Typ zálohy",
|
||||||
"upload_snapshot": "Nahrát zálohu"
|
"upload_snapshot": "Nahrát zálohu"
|
||||||
},
|
},
|
||||||
"store": {
|
"store": {
|
||||||
@ -720,6 +721,9 @@
|
|||||||
"no_match": "Nebyly nalezeny žádné odpovídající oblasti",
|
"no_match": "Nebyly nalezeny žádné odpovídající oblasti",
|
||||||
"show_areas": "Zobrazit oblasti"
|
"show_areas": "Zobrazit oblasti"
|
||||||
},
|
},
|
||||||
|
"attributes": {
|
||||||
|
"expansion_header": "Atributy"
|
||||||
|
},
|
||||||
"blueprint-picker": {
|
"blueprint-picker": {
|
||||||
"add_user": "Přidat uživatele",
|
"add_user": "Přidat uživatele",
|
||||||
"remove_user": "Odebrat uživatele",
|
"remove_user": "Odebrat uživatele",
|
||||||
@ -1719,6 +1723,7 @@
|
|||||||
"title": "Alexa"
|
"title": "Alexa"
|
||||||
},
|
},
|
||||||
"connected": "Připojeno",
|
"connected": "Připojeno",
|
||||||
|
"connecting": "Připojování...",
|
||||||
"connection_status": "Stav cloudového připojení",
|
"connection_status": "Stav cloudového připojení",
|
||||||
"fetching_subscription": "Načítání předplatného ...",
|
"fetching_subscription": "Načítání předplatného ...",
|
||||||
"google": {
|
"google": {
|
||||||
@ -2956,6 +2961,7 @@
|
|||||||
},
|
},
|
||||||
"logs": {
|
"logs": {
|
||||||
"log_level": "Úroveň protokolu",
|
"log_level": "Úroveň protokolu",
|
||||||
|
"log_level_changed": "Úroveň protokolu změněna na: {level}",
|
||||||
"title": "Z-Wave JS protokoly"
|
"title": "Z-Wave JS protokoly"
|
||||||
},
|
},
|
||||||
"navigation": {
|
"navigation": {
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
"away": "بیرون",
|
"away": "بیرون",
|
||||||
"boost": "افزایش",
|
"boost": "افزایش",
|
||||||
"comfort": "آسایش",
|
"comfort": "آسایش",
|
||||||
|
"eco": "اکو",
|
||||||
"home": "خانه",
|
"home": "خانه",
|
||||||
"none": "هیچ کدام",
|
"none": "هیچ کدام",
|
||||||
"sleep": "خواب"
|
"sleep": "خواب"
|
||||||
@ -100,6 +101,27 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"supervisor": {
|
"supervisor": {
|
||||||
|
"addon": {
|
||||||
|
"configuration": {
|
||||||
|
"audio": {
|
||||||
|
"default": "پیش فرض",
|
||||||
|
"header": "صوتی",
|
||||||
|
"input": "ورودی",
|
||||||
|
"output": "خروجی"
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"disabled": "غیر فعال",
|
||||||
|
"header": "شبکه",
|
||||||
|
"host": "میزبان"
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"edit_in_ui": "ویرایش در رابط کاربری",
|
||||||
|
"edit_in_yaml": "ویرایش در YAML",
|
||||||
|
"header": "تنظیمات",
|
||||||
|
"show_unused_optional": "گزینه های پیکربندی اختیاری استفاده نشده را نشان دهید"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"common": {
|
"common": {
|
||||||
"close": "بستن"
|
"close": "بستن"
|
||||||
}
|
}
|
||||||
|
@ -403,6 +403,7 @@
|
|||||||
"password_protected": "비밀번호로 보호됨",
|
"password_protected": "비밀번호로 보호됨",
|
||||||
"password_protection": "비밀번호 보호",
|
"password_protection": "비밀번호 보호",
|
||||||
"security": "보안",
|
"security": "보안",
|
||||||
|
"select_type": "복원 할 항목 선택",
|
||||||
"type": "유형",
|
"type": "유형",
|
||||||
"upload_snapshot": "스냅숏 올리기"
|
"upload_snapshot": "스냅숏 올리기"
|
||||||
},
|
},
|
||||||
@ -720,6 +721,9 @@
|
|||||||
"no_match": "일치하는 영역을 찾을 수 없습니다",
|
"no_match": "일치하는 영역을 찾을 수 없습니다",
|
||||||
"show_areas": "영역 표시하기"
|
"show_areas": "영역 표시하기"
|
||||||
},
|
},
|
||||||
|
"attributes": {
|
||||||
|
"expansion_header": "속성"
|
||||||
|
},
|
||||||
"blueprint-picker": {
|
"blueprint-picker": {
|
||||||
"add_user": "사용자 추가하기",
|
"add_user": "사용자 추가하기",
|
||||||
"remove_user": "사용자 제거하기",
|
"remove_user": "사용자 제거하기",
|
||||||
@ -1719,6 +1723,7 @@
|
|||||||
"title": "Alexa"
|
"title": "Alexa"
|
||||||
},
|
},
|
||||||
"connected": "연결됨",
|
"connected": "연결됨",
|
||||||
|
"connecting": "연결 중 ...",
|
||||||
"connection_status": "클라우드 연결 상태",
|
"connection_status": "클라우드 연결 상태",
|
||||||
"fetching_subscription": "구독 정보를 가져오는 중…",
|
"fetching_subscription": "구독 정보를 가져오는 중…",
|
||||||
"google": {
|
"google": {
|
||||||
@ -2959,6 +2964,7 @@
|
|||||||
},
|
},
|
||||||
"logs": {
|
"logs": {
|
||||||
"log_level": "로그 레벨",
|
"log_level": "로그 레벨",
|
||||||
|
"log_level_changed": "로그 레벨이 변경되었습니다: {level}",
|
||||||
"subscribed_to_logs": "Z-Wave JS 로그 메시지 수신 ...",
|
"subscribed_to_logs": "Z-Wave JS 로그 메시지 수신 ...",
|
||||||
"title": "Z-Wave JS 로그"
|
"title": "Z-Wave JS 로그"
|
||||||
},
|
},
|
||||||
|
@ -314,7 +314,7 @@
|
|||||||
"addon_new_version": "Nieuwe versie beschikbaar",
|
"addon_new_version": "Nieuwe versie beschikbaar",
|
||||||
"addon_running": "Add-on wordt uitgevoerd",
|
"addon_running": "Add-on wordt uitgevoerd",
|
||||||
"addon_stopped": "Add-on is gestopt",
|
"addon_stopped": "Add-on is gestopt",
|
||||||
"addons": "Add-ons",
|
"addons": "Geïnstalleerde add-ons",
|
||||||
"no_addons": "Je hebt nog geen add-ons geïnstalleerd. Ga naar de add-on store om te beginnen!"
|
"no_addons": "Je hebt nog geen add-ons geïnstalleerd. Ga naar de add-on store om te beginnen!"
|
||||||
},
|
},
|
||||||
"dialog": {
|
"dialog": {
|
||||||
@ -396,14 +396,15 @@
|
|||||||
},
|
},
|
||||||
"folders": "Mappen",
|
"folders": "Mappen",
|
||||||
"full_snapshot": "Volledige snapshot",
|
"full_snapshot": "Volledige snapshot",
|
||||||
"name": "Naam",
|
"name": "Snapshot naam",
|
||||||
"no_snapshots": "Je hebt nog geen snapshots.",
|
"no_snapshots": "Je hebt nog geen snapshots.",
|
||||||
"partial_snapshot": "Gedeeltelijke snapshot",
|
"partial_snapshot": "Gedeeltelijke snapshot",
|
||||||
"password": "Wachtwoord",
|
"password": "Snapshot wachtwoord",
|
||||||
"password_protected": "beveiligd met wachtwoord",
|
"password_protected": "beveiligd met wachtwoord",
|
||||||
"password_protection": "Wachtwoord bescherming",
|
"password_protection": "Wachtwoord bescherming",
|
||||||
"security": "Beveiliging",
|
"security": "Beveiliging",
|
||||||
"type": "Type",
|
"select_type": "Selecteer wat u wilt herstellen",
|
||||||
|
"type": "Snapshot type",
|
||||||
"upload_snapshot": "Upload snapshot"
|
"upload_snapshot": "Upload snapshot"
|
||||||
},
|
},
|
||||||
"store": {
|
"store": {
|
||||||
@ -720,6 +721,9 @@
|
|||||||
"no_match": "Geen overeenkomende gebieden gevonden",
|
"no_match": "Geen overeenkomende gebieden gevonden",
|
||||||
"show_areas": "Toon gebieden"
|
"show_areas": "Toon gebieden"
|
||||||
},
|
},
|
||||||
|
"attributes": {
|
||||||
|
"expansion_header": "Attributen"
|
||||||
|
},
|
||||||
"blueprint-picker": {
|
"blueprint-picker": {
|
||||||
"add_user": "Gebruiker toevoegen",
|
"add_user": "Gebruiker toevoegen",
|
||||||
"remove_user": "Gebruiker verwijderen",
|
"remove_user": "Gebruiker verwijderen",
|
||||||
@ -1719,6 +1723,7 @@
|
|||||||
"title": "Alexa"
|
"title": "Alexa"
|
||||||
},
|
},
|
||||||
"connected": "Verbonden",
|
"connected": "Verbonden",
|
||||||
|
"connecting": "Verbinden...",
|
||||||
"connection_status": "Cloud verbindingsstatus",
|
"connection_status": "Cloud verbindingsstatus",
|
||||||
"fetching_subscription": "Abonnement ophalen...",
|
"fetching_subscription": "Abonnement ophalen...",
|
||||||
"google": {
|
"google": {
|
||||||
@ -2959,6 +2964,7 @@
|
|||||||
},
|
},
|
||||||
"logs": {
|
"logs": {
|
||||||
"log_level": "Log niveau",
|
"log_level": "Log niveau",
|
||||||
|
"log_level_changed": "Logboekniveau gewijzigd in: {level}",
|
||||||
"subscribed_to_logs": "Geabonneerd op Z-Wave JS log berichten ...",
|
"subscribed_to_logs": "Geabonneerd op Z-Wave JS log berichten ...",
|
||||||
"title": "Z-Wave JS Logs"
|
"title": "Z-Wave JS Logs"
|
||||||
},
|
},
|
||||||
|
@ -396,14 +396,15 @@
|
|||||||
},
|
},
|
||||||
"folders": "Foldery",
|
"folders": "Foldery",
|
||||||
"full_snapshot": "Pełny snapshot",
|
"full_snapshot": "Pełny snapshot",
|
||||||
"name": "Nazwa",
|
"name": "Nazwa snapshota",
|
||||||
"no_snapshots": "Nie masz jeszcze żadnych snapshotów.",
|
"no_snapshots": "Nie masz jeszcze żadnych snapshotów.",
|
||||||
"partial_snapshot": "Częściowy snapshot",
|
"partial_snapshot": "Częściowy snapshot",
|
||||||
"password": "Hasło",
|
"password": "Hasło snapshota",
|
||||||
"password_protected": "chroniony hasłem",
|
"password_protected": "chroniony hasłem",
|
||||||
"password_protection": "Ochrona hasłem",
|
"password_protection": "Ochrona hasłem",
|
||||||
"security": "Bezpieczeństwo",
|
"security": "Bezpieczeństwo",
|
||||||
"type": "Typ",
|
"select_type": "Wybierz, co przywrócić",
|
||||||
|
"type": "Typ snapshota",
|
||||||
"upload_snapshot": "Prześlij snapshota"
|
"upload_snapshot": "Prześlij snapshota"
|
||||||
},
|
},
|
||||||
"store": {
|
"store": {
|
||||||
@ -1722,6 +1723,7 @@
|
|||||||
"title": "Alexa"
|
"title": "Alexa"
|
||||||
},
|
},
|
||||||
"connected": "połączono",
|
"connected": "połączono",
|
||||||
|
"connecting": "Łączenie...",
|
||||||
"connection_status": "Status połączenia z chmurą",
|
"connection_status": "Status połączenia z chmurą",
|
||||||
"fetching_subscription": "Pobieranie subskrypcji…",
|
"fetching_subscription": "Pobieranie subskrypcji…",
|
||||||
"google": {
|
"google": {
|
||||||
@ -2962,6 +2964,7 @@
|
|||||||
},
|
},
|
||||||
"logs": {
|
"logs": {
|
||||||
"log_level": "Poziom loga",
|
"log_level": "Poziom loga",
|
||||||
|
"log_level_changed": "Poziom dziennika zmieniony na: {level}",
|
||||||
"subscribed_to_logs": "Zasubskrybowano komunikaty dziennika Z-Wave JS...",
|
"subscribed_to_logs": "Zasubskrybowano komunikaty dziennika Z-Wave JS...",
|
||||||
"title": "Logi Z-Wave JS"
|
"title": "Logi Z-Wave JS"
|
||||||
},
|
},
|
||||||
|
@ -112,8 +112,10 @@
|
|||||||
"output": "Saída"
|
"output": "Saída"
|
||||||
},
|
},
|
||||||
"network": {
|
"network": {
|
||||||
|
"container": "Container",
|
||||||
"disabled": "Desativado",
|
"disabled": "Desativado",
|
||||||
"header": "Rede"
|
"header": "Rede",
|
||||||
|
"host": "Servidor"
|
||||||
},
|
},
|
||||||
"options": {
|
"options": {
|
||||||
"edit_in_ui": "Editar em UI",
|
"edit_in_ui": "Editar em UI",
|
||||||
@ -148,7 +150,14 @@
|
|||||||
"title": "Acesso completo ao hardware"
|
"title": "Acesso completo ao hardware"
|
||||||
},
|
},
|
||||||
"hassio_api": {
|
"hassio_api": {
|
||||||
"description": "O suplemento tem acesso à API do Supervisor, a pedido do autor do complemento. Por defeito, o complemento pode aceder à informação da versão do seu sistema. Quando o complemento solicita acesso de nível 'gestor' ou 'administrador' à API, obterá acesso para controlar múltiplas partes do seu sistema Home Assistant. Esta permissão é indicada por este crachá e terá um impacto negativo na pontuação de segurança do complemento."
|
"description": "O suplemento tem acesso à API do Supervisor, a pedido do autor do complemento. Por defeito, o complemento pode aceder à informação da versão do seu sistema. Quando o complemento solicita acesso de nível 'gestor' ou 'administrador' à API, obterá acesso para controlar múltiplas partes do seu sistema Home Assistant. Esta permissão é indicada por este crachá e terá um impacto negativo na pontuação de segurança do complemento.",
|
||||||
|
"title": "Acesso à API supervisor"
|
||||||
|
},
|
||||||
|
"homeassistant_api": {
|
||||||
|
"title": "Acesso à API do Home Assistant"
|
||||||
|
},
|
||||||
|
"host_network": {
|
||||||
|
"title": "Rede do Servidor"
|
||||||
},
|
},
|
||||||
"ingress": {
|
"ingress": {
|
||||||
"title": "Ingress"
|
"title": "Ingress"
|
||||||
@ -179,8 +188,10 @@
|
|||||||
},
|
},
|
||||||
"changelog": "Changelog",
|
"changelog": "Changelog",
|
||||||
"cpu_usage": "Utilização de CPU do add-on",
|
"cpu_usage": "Utilização de CPU do add-on",
|
||||||
|
"hostname": "Nome do servidor",
|
||||||
"install": "Instalar",
|
"install": "Instalar",
|
||||||
"new_update_available": "{name} {version} está disponível",
|
"new_update_available": "{name} {version} está disponível",
|
||||||
|
"not_available_arch": "Este add-on não é compatível com o processador ou sistema operativo do seu dispositivo.",
|
||||||
"not_available_version": "Está a executar o Home Assistant {core_version_installed}, para actualizar esta versão do add-on necessita pelo menos da versão {core_version_needed} do Home Assistant",
|
"not_available_version": "Está a executar o Home Assistant {core_version_installed}, para actualizar esta versão do add-on necessita pelo menos da versão {core_version_needed} do Home Assistant",
|
||||||
"open_web_ui": "Abrir o interface web",
|
"open_web_ui": "Abrir o interface web",
|
||||||
"option": {
|
"option": {
|
||||||
@ -210,6 +221,7 @@
|
|||||||
"title": "Aviso: o modo de proteção está desativado!"
|
"title": "Aviso: o modo de proteção está desativado!"
|
||||||
},
|
},
|
||||||
"ram_usage": "Utilização de RAM do add-on",
|
"ram_usage": "Utilização de RAM do add-on",
|
||||||
|
"rebuild": "reconstruir",
|
||||||
"restart": "Reiniciar",
|
"restart": "Reiniciar",
|
||||||
"start": "Iniciar",
|
"start": "Iniciar",
|
||||||
"stop": "Parar",
|
"stop": "Parar",
|
||||||
@ -334,6 +346,7 @@
|
|||||||
},
|
},
|
||||||
"my": {
|
"my": {
|
||||||
"error": "Ocorreu um erro desconhecido",
|
"error": "Ocorreu um erro desconhecido",
|
||||||
|
"error_addon_no_ingress": "O add-on solicitado não suporta Ingress",
|
||||||
"error_addon_not_found": "Add-on não encontrado",
|
"error_addon_not_found": "Add-on não encontrado",
|
||||||
"not_supported": "Este redirecionamento não é suportado pela sua instância Início Assistant. Verifique o {link} para os redirecionamentos suportados e a versão em que foram introduzidos."
|
"not_supported": "Este redirecionamento não é suportado pela sua instância Início Assistant. Verifique o {link} para os redirecionamentos suportados e a versão em que foram introduzidos."
|
||||||
},
|
},
|
||||||
@ -369,6 +382,7 @@
|
|||||||
"password_protected": "Protegido por Palavra-passe",
|
"password_protected": "Protegido por Palavra-passe",
|
||||||
"password_protection": "Proteção por palavra-passe",
|
"password_protection": "Proteção por palavra-passe",
|
||||||
"security": "Segurança",
|
"security": "Segurança",
|
||||||
|
"select_type": "Selecione o que restaurar",
|
||||||
"type": "Tipo",
|
"type": "Tipo",
|
||||||
"upload_snapshot": "Upload snapshot"
|
"upload_snapshot": "Upload snapshot"
|
||||||
},
|
},
|
||||||
@ -529,8 +543,11 @@
|
|||||||
},
|
},
|
||||||
"light": {
|
"light": {
|
||||||
"brightness": "Brilho",
|
"brightness": "Brilho",
|
||||||
|
"cold_white_value": "Brilho branco frio",
|
||||||
|
"color_brightness": "Brilho",
|
||||||
"color_temperature": "Temperatura de cor",
|
"color_temperature": "Temperatura de cor",
|
||||||
"effect": "Efeito",
|
"effect": "Efeito",
|
||||||
|
"warm_white_value": "Brilho branco quente",
|
||||||
"white_value": "Brilho"
|
"white_value": "Brilho"
|
||||||
},
|
},
|
||||||
"lock": {
|
"lock": {
|
||||||
@ -657,6 +674,10 @@
|
|||||||
"addon-picker": {
|
"addon-picker": {
|
||||||
"addon": "Add-on",
|
"addon": "Add-on",
|
||||||
"error": {
|
"error": {
|
||||||
|
"fetch_addons": {
|
||||||
|
"description": "A busca de add-ons retornou um erro.",
|
||||||
|
"title": "Erro ao obter add-ons."
|
||||||
|
},
|
||||||
"no_supervisor": {
|
"no_supervisor": {
|
||||||
"title": "Sem Supervisor"
|
"title": "Sem Supervisor"
|
||||||
}
|
}
|
||||||
@ -677,6 +698,9 @@
|
|||||||
"no_match": "Nenhuma área correspondente encontrada",
|
"no_match": "Nenhuma área correspondente encontrada",
|
||||||
"show_areas": "Mostrar áreas"
|
"show_areas": "Mostrar áreas"
|
||||||
},
|
},
|
||||||
|
"attributes": {
|
||||||
|
"expansion_header": "Atributos"
|
||||||
|
},
|
||||||
"blueprint-picker": {
|
"blueprint-picker": {
|
||||||
"add_user": "Adicionar um utilizador",
|
"add_user": "Adicionar um utilizador",
|
||||||
"remove_user": "Remover utilizador",
|
"remove_user": "Remover utilizador",
|
||||||
@ -803,6 +827,13 @@
|
|||||||
"label": "Imagem",
|
"label": "Imagem",
|
||||||
"unsupported_format": "Formato não suportado, por favor escolha uma imagem JPEG, PNG ou GIF."
|
"unsupported_format": "Formato não suportado, por favor escolha uma imagem JPEG, PNG ou GIF."
|
||||||
},
|
},
|
||||||
|
"related-filter-menu": {
|
||||||
|
"filter_by_area": "Filtrar por área",
|
||||||
|
"filter_by_device": "Filtrar por dispositivo",
|
||||||
|
"filter_by_entity": "Filtrar por entidade",
|
||||||
|
"filtered_by_area": "área: {area_name}",
|
||||||
|
"filtered_by_device": "dispositivo: {device_name}"
|
||||||
|
},
|
||||||
"related-items": {
|
"related-items": {
|
||||||
"area": "Área",
|
"area": "Área",
|
||||||
"automation": "Parte das seguintes automações",
|
"automation": "Parte das seguintes automações",
|
||||||
@ -840,6 +871,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"service-control": {
|
"service-control": {
|
||||||
|
"integration_doc": "Documentação da integração",
|
||||||
"required": "Este campo é obrigatório",
|
"required": "Este campo é obrigatório",
|
||||||
"service_data": "Dados do serviço",
|
"service_data": "Dados do serviço",
|
||||||
"target": "Alvos",
|
"target": "Alvos",
|
||||||
@ -1150,8 +1182,11 @@
|
|||||||
"bind_header": "Associação",
|
"bind_header": "Associação",
|
||||||
"button_hide": "Ocultar detalhes",
|
"button_hide": "Ocultar detalhes",
|
||||||
"button_show": "Mostrar Detalhes",
|
"button_show": "Mostrar Detalhes",
|
||||||
|
"cluster_header": "Grupo",
|
||||||
|
"configuration_complete": "Reconfiguração do dispositivo concluída.",
|
||||||
"configuring_alt": "A configurar",
|
"configuring_alt": "A configurar",
|
||||||
"min_max_change": "min/max/alterar",
|
"min_max_change": "min/max/alterar",
|
||||||
|
"reporting_header": "Relatórios",
|
||||||
"start_reconfiguration": "Iniciar reconfiguração"
|
"start_reconfiguration": "Iniciar reconfiguração"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1643,6 +1678,7 @@
|
|||||||
"title": "Alexa"
|
"title": "Alexa"
|
||||||
},
|
},
|
||||||
"connected": "Ligado",
|
"connected": "Ligado",
|
||||||
|
"connecting": "A conectar...",
|
||||||
"connection_status": "Estado da ligação na cloud",
|
"connection_status": "Estado da ligação na cloud",
|
||||||
"fetching_subscription": "A buscar assinatura...",
|
"fetching_subscription": "A buscar assinatura...",
|
||||||
"google": {
|
"google": {
|
||||||
@ -2009,6 +2045,9 @@
|
|||||||
"filtering_by": "A filtrar por",
|
"filtering_by": "A filtrar por",
|
||||||
"show": "Mostrar"
|
"show": "Mostrar"
|
||||||
},
|
},
|
||||||
|
"hassio": {
|
||||||
|
"button": "Configurar"
|
||||||
|
},
|
||||||
"header": "Configurar o Home Assistant",
|
"header": "Configurar o Home Assistant",
|
||||||
"helpers": {
|
"helpers": {
|
||||||
"caption": "Auxiliares",
|
"caption": "Auxiliares",
|
||||||
@ -2099,10 +2138,12 @@
|
|||||||
"entity_unavailable": "Entidade indisponível",
|
"entity_unavailable": "Entidade indisponível",
|
||||||
"firmware": "Firmware: {version}",
|
"firmware": "Firmware: {version}",
|
||||||
"hub": "Conectado via",
|
"hub": "Conectado via",
|
||||||
|
"logs": "Logs",
|
||||||
"manuf": "por {manufacturer}",
|
"manuf": "por {manufacturer}",
|
||||||
"no_area": "Nenhuma Área",
|
"no_area": "Nenhuma Área",
|
||||||
"not_loaded": "Não carregado",
|
"not_loaded": "Não carregado",
|
||||||
"options": "Opções",
|
"options": "Opções",
|
||||||
|
"provided_by_custom_integration": "Fornecido por uma integração personalizada",
|
||||||
"reload": "Recarregar",
|
"reload": "Recarregar",
|
||||||
"reload_confirm": "A integração foi recarregada",
|
"reload_confirm": "A integração foi recarregada",
|
||||||
"reload_restart_confirm": "Reinicie o Home Assistant para terminar de carregar esta integração",
|
"reload_restart_confirm": "Reinicie o Home Assistant para terminar de carregar esta integração",
|
||||||
@ -2113,7 +2154,8 @@
|
|||||||
"loaded": "Carregado",
|
"loaded": "Carregado",
|
||||||
"migration_error": "Erro de migração",
|
"migration_error": "Erro de migração",
|
||||||
"not_loaded": "Não carregado",
|
"not_loaded": "Não carregado",
|
||||||
"setup_error": "Erro ao inicializar"
|
"setup_error": "Erro ao inicializar",
|
||||||
|
"setup_retry": "A repetir a configuração"
|
||||||
},
|
},
|
||||||
"system_options": "Opções do sistema",
|
"system_options": "Opções do sistema",
|
||||||
"unnamed_entry": "Entrada sem nome"
|
"unnamed_entry": "Entrada sem nome"
|
||||||
@ -2134,6 +2176,9 @@
|
|||||||
"loading_first_time": "Por favor, aguarde enquanto a integração está a ser instalada",
|
"loading_first_time": "Por favor, aguarde enquanto a integração está a ser instalada",
|
||||||
"next": "Próximo",
|
"next": "Próximo",
|
||||||
"not_all_required_fields": "Nem todos os campos obrigatórios estão preenchidos.",
|
"not_all_required_fields": "Nem todos os campos obrigatórios estão preenchidos.",
|
||||||
|
"pick_flow_step": {
|
||||||
|
"title": "Descobrimos estes, quer configurá-los?"
|
||||||
|
},
|
||||||
"submit": "Enviar"
|
"submit": "Enviar"
|
||||||
},
|
},
|
||||||
"configure": "Configurar",
|
"configure": "Configurar",
|
||||||
@ -2180,6 +2225,13 @@
|
|||||||
"clear": "Limpar",
|
"clear": "Limpar",
|
||||||
"description": "Ver os registos do Home Assistant",
|
"description": "Ver os registos do Home Assistant",
|
||||||
"details": "Detalhes do log ( {level} )",
|
"details": "Detalhes do log ( {level} )",
|
||||||
|
"level": {
|
||||||
|
"critical": "CRÍTICO",
|
||||||
|
"debug": "DEPURAR",
|
||||||
|
"error": "ERRO",
|
||||||
|
"info": "INFO",
|
||||||
|
"warning": "AVISO"
|
||||||
|
},
|
||||||
"load_full_log": "Carregar log completo do Home Assistant",
|
"load_full_log": "Carregar log completo do Home Assistant",
|
||||||
"loading_log": "A carregar o log de erros...",
|
"loading_log": "A carregar o log de erros...",
|
||||||
"multiple_messages": "mensagem ocorreu primeiro em {time} e repetiu-se {counter} vezes",
|
"multiple_messages": "mensagem ocorreu primeiro em {time} e repetiu-se {counter} vezes",
|
||||||
@ -2691,6 +2743,12 @@
|
|||||||
"manufacturer_code_override": "Substituição do código do fabricante",
|
"manufacturer_code_override": "Substituição do código do fabricante",
|
||||||
"value": "Valor"
|
"value": "Valor"
|
||||||
},
|
},
|
||||||
|
"configuration_page": {
|
||||||
|
"shortcuts_title": "Atalhos",
|
||||||
|
"zha_options": {
|
||||||
|
"title": "Opções Globais"
|
||||||
|
}
|
||||||
|
},
|
||||||
"device_pairing_card": {
|
"device_pairing_card": {
|
||||||
"CONFIGURED": "Configuração Completa",
|
"CONFIGURED": "Configuração Completa",
|
||||||
"CONFIGURED_status_text": "A inicializar",
|
"CONFIGURED_status_text": "A inicializar",
|
||||||
@ -2778,6 +2836,7 @@
|
|||||||
"follow_device_instructions": "Siga as instruções do seu dispositivo para ativar o modo de emparelhamento",
|
"follow_device_instructions": "Siga as instruções do seu dispositivo para ativar o modo de emparelhamento",
|
||||||
"inclusion_failed": "Não foi possível adicionar o nó. Por favor verifique os logs para mais informações.",
|
"inclusion_failed": "Não foi possível adicionar o nó. Por favor verifique os logs para mais informações.",
|
||||||
"inclusion_finished": "O nó foi adicionado. Poderá demorar alguns minutos para que todas as entidades fiquem disponiveis, enquanto terminamos a configuração do nó em segundo plano.",
|
"inclusion_finished": "O nó foi adicionado. Poderá demorar alguns minutos para que todas as entidades fiquem disponiveis, enquanto terminamos a configuração do nó em segundo plano.",
|
||||||
|
"interview_failed": "A consulta do dispositivo falhou. Informações adicionais podem estar disponíveis nos logs.",
|
||||||
"introduction": "Este assistente irá guiá-lo para adicionar um nó à sua rede Z-Wave.",
|
"introduction": "Este assistente irá guiá-lo para adicionar um nó à sua rede Z-Wave.",
|
||||||
"secure_inclusion_warning": "Dispositivos seguros requerem mais largura de banda; demasiados dispositivos seguros podem diminuir a performance da rede Z-Wave. Recomendamos que apenas sejam adicionados dispositivos seguros estritamente necessários, como fechaduras e aberturas de garagem.",
|
"secure_inclusion_warning": "Dispositivos seguros requerem mais largura de banda; demasiados dispositivos seguros podem diminuir a performance da rede Z-Wave. Recomendamos que apenas sejam adicionados dispositivos seguros estritamente necessários, como fechaduras e aberturas de garagem.",
|
||||||
"start_inclusion": "Iniciar Inclusão",
|
"start_inclusion": "Iniciar Inclusão",
|
||||||
@ -2814,6 +2873,8 @@
|
|||||||
},
|
},
|
||||||
"logs": {
|
"logs": {
|
||||||
"log_level": "Nível de log",
|
"log_level": "Nível de log",
|
||||||
|
"log_level_changed": "Nível de log alterado para: {level}",
|
||||||
|
"subscribed_to_logs": "Inscrito em mensagens de log do Z-Wave JS...",
|
||||||
"title": "Z-Wave JS Logs"
|
"title": "Z-Wave JS Logs"
|
||||||
},
|
},
|
||||||
"navigation": {
|
"navigation": {
|
||||||
@ -2827,7 +2888,10 @@
|
|||||||
},
|
},
|
||||||
"node_config": {
|
"node_config": {
|
||||||
"error_device_not_found": "Dispositivo não encontrado",
|
"error_device_not_found": "Dispositivo não encontrado",
|
||||||
"parameter_is_read_only": "Este parâmetro é apenas de leitura."
|
"parameter_is_read_only": "Este parâmetro é apenas de leitura.",
|
||||||
|
"set_param_accepted": "O parâmetro foi atualizado.",
|
||||||
|
"set_param_error": "Ocorreu um erro.",
|
||||||
|
"set_param_queued": "A alteração do parâmetro foi colocada na fila e será atualizada quando o dispositivo for ativado."
|
||||||
},
|
},
|
||||||
"node_status": {
|
"node_status": {
|
||||||
"alive": "Ativo",
|
"alive": "Ativo",
|
||||||
@ -2836,6 +2900,12 @@
|
|||||||
"dead": "Inativo",
|
"dead": "Inativo",
|
||||||
"unknown": "Desconhecido"
|
"unknown": "Desconhecido"
|
||||||
},
|
},
|
||||||
|
"reinterview_node": {
|
||||||
|
"in_progress": "A consultar dispositivo. Isto pode demorar algum tempo.",
|
||||||
|
"interview_complete": "Consulta do dispositivo concluída.",
|
||||||
|
"interview_failed": "A consulta do dispositivo falhou. Informações adicionais podem estar disponíveis nos logs.",
|
||||||
|
"start_reinterview": "Iniciar nova consulta"
|
||||||
|
},
|
||||||
"remove_node": {
|
"remove_node": {
|
||||||
"cancel_exclusion": "Cancelar Exclusão",
|
"cancel_exclusion": "Cancelar Exclusão",
|
||||||
"controller_in_exclusion_mode": "O seu controlador Z-Wave está agora em modo de exclusão.",
|
"controller_in_exclusion_mode": "O seu controlador Z-Wave está agora em modo de exclusão.",
|
||||||
@ -3666,6 +3736,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"page-onboarding": {
|
"page-onboarding": {
|
||||||
|
"analytics": {
|
||||||
|
"finish": "Próximo"
|
||||||
|
},
|
||||||
"core-config": {
|
"core-config": {
|
||||||
"button_detect": "Detetar",
|
"button_detect": "Detetar",
|
||||||
"finish": "Próxima",
|
"finish": "Próxima",
|
||||||
@ -3675,12 +3748,14 @@
|
|||||||
"location_name": "Nome da instalação do Home Assistant",
|
"location_name": "Nome da instalação do Home Assistant",
|
||||||
"location_name_default": "Início"
|
"location_name_default": "Início"
|
||||||
},
|
},
|
||||||
|
"finish": "Terminar",
|
||||||
"integration": {
|
"integration": {
|
||||||
"finish": "Terminar",
|
"finish": "Terminar",
|
||||||
"intro": "Dispositivos e serviços são representados no Home Assistant como integrações. Pode configurá-los agora ou fazê-lo mais tarde no ecrã de configuração.",
|
"intro": "Dispositivos e serviços são representados no Home Assistant como integrações. Pode configurá-los agora ou fazê-lo mais tarde no ecrã de configuração.",
|
||||||
"more_integrations": "Mais"
|
"more_integrations": "Mais"
|
||||||
},
|
},
|
||||||
"intro": "Está pronto para despertar a sua casa, reclamar a sua privacidade e juntar-se a uma comunidade mundial de tecnólogos?",
|
"intro": "Está pronto para despertar a sua casa, reclamar a sua privacidade e juntar-se a uma comunidade mundial de tecnólogos?",
|
||||||
|
"next": "Próximo",
|
||||||
"restore": {
|
"restore": {
|
||||||
"description": "Em alternativa, pode restaurar a partir de um snapshot anterior.",
|
"description": "Em alternativa, pode restaurar a partir de um snapshot anterior.",
|
||||||
"hide_log": "Ocultar log completo",
|
"hide_log": "Ocultar log completo",
|
||||||
@ -3825,6 +3900,17 @@
|
|||||||
"primary_color": "Cor primária",
|
"primary_color": "Cor primária",
|
||||||
"reset": "Redefinir"
|
"reset": "Redefinir"
|
||||||
},
|
},
|
||||||
|
"time_format": {
|
||||||
|
"description": "Escolha como os horários são formatados.",
|
||||||
|
"dropdown_label": "Formato de hora",
|
||||||
|
"formats": {
|
||||||
|
"12": "12 horas (AM/PM)",
|
||||||
|
"24": "24 horas",
|
||||||
|
"language": "Auto (usar configuração de idioma)",
|
||||||
|
"system": "Utilizar o formato do sistema"
|
||||||
|
},
|
||||||
|
"header": "Formato de hora"
|
||||||
|
},
|
||||||
"vibrate": {
|
"vibrate": {
|
||||||
"description": "Ative ou desative a vibração neste dispositivo ao controlar dispositivos.",
|
"description": "Ative ou desative a vibração neste dispositivo ao controlar dispositivos.",
|
||||||
"header": "Vibrar"
|
"header": "Vibrar"
|
||||||
|
@ -383,7 +383,7 @@
|
|||||||
"could_not_create": "Не удалось создать снимок",
|
"could_not_create": "Не удалось создать снимок",
|
||||||
"create": "Создать",
|
"create": "Создать",
|
||||||
"create_blocked_not_running": "Создание снимка сейчас невозможно, потому что система находится в состоянии {state}.",
|
"create_blocked_not_running": "Создание снимка сейчас невозможно, потому что система находится в состоянии {state}.",
|
||||||
"create_snapshot": "Снимки файловой системы",
|
"create_snapshot": "Создать снимок",
|
||||||
"created": "Создан",
|
"created": "Создан",
|
||||||
"description": "Снимок файловой системы (snapshot) позволяет легко создавать и восстанавливать резервную копию всех данных Вашего Home Assistant.",
|
"description": "Снимок файловой системы (snapshot) позволяет легко создавать и восстанавливать резервную копию всех данных Вашего Home Assistant.",
|
||||||
"enter_password": "Пожалуйста, введите пароль.",
|
"enter_password": "Пожалуйста, введите пароль.",
|
||||||
|
@ -396,14 +396,15 @@
|
|||||||
},
|
},
|
||||||
"folders": "資料夾",
|
"folders": "資料夾",
|
||||||
"full_snapshot": "全系統備份",
|
"full_snapshot": "全系統備份",
|
||||||
"name": "名稱",
|
"name": "系統備份名稱",
|
||||||
"no_snapshots": "目前沒有任何系統備份",
|
"no_snapshots": "目前沒有任何系統備份",
|
||||||
"partial_snapshot": "部分系統備份",
|
"partial_snapshot": "部分系統備份",
|
||||||
"password": "密碼",
|
"password": "系統備份密碼",
|
||||||
"password_protected": "密碼保護未顯示",
|
"password_protected": "密碼保護未顯示",
|
||||||
"password_protection": "密碼保護",
|
"password_protection": "密碼保護",
|
||||||
"security": "加密",
|
"security": "加密",
|
||||||
"type": "類型",
|
"select_type": "選擇所要回復內容",
|
||||||
|
"type": "系統備份類型",
|
||||||
"upload_snapshot": "上傳系統備份"
|
"upload_snapshot": "上傳系統備份"
|
||||||
},
|
},
|
||||||
"store": {
|
"store": {
|
||||||
@ -720,6 +721,9 @@
|
|||||||
"no_match": "找不到相符分區",
|
"no_match": "找不到相符分區",
|
||||||
"show_areas": "顯示分區"
|
"show_areas": "顯示分區"
|
||||||
},
|
},
|
||||||
|
"attributes": {
|
||||||
|
"expansion_header": "屬性"
|
||||||
|
},
|
||||||
"blueprint-picker": {
|
"blueprint-picker": {
|
||||||
"add_user": "新增使用者",
|
"add_user": "新增使用者",
|
||||||
"remove_user": "移除使用者",
|
"remove_user": "移除使用者",
|
||||||
@ -1719,6 +1723,7 @@
|
|||||||
"title": "Alexa"
|
"title": "Alexa"
|
||||||
},
|
},
|
||||||
"connected": "已連接",
|
"connected": "已連接",
|
||||||
|
"connecting": "連線中...",
|
||||||
"connection_status": "雲服務連線狀態",
|
"connection_status": "雲服務連線狀態",
|
||||||
"fetching_subscription": "取得訂閱狀態中...",
|
"fetching_subscription": "取得訂閱狀態中...",
|
||||||
"google": {
|
"google": {
|
||||||
@ -2959,6 +2964,7 @@
|
|||||||
},
|
},
|
||||||
"logs": {
|
"logs": {
|
||||||
"log_level": "日誌記錄等級",
|
"log_level": "日誌記錄等級",
|
||||||
|
"log_level_changed": "日誌等級變更為:{level}",
|
||||||
"subscribed_to_logs": "訂閱 Z-Wave JS 日誌訊息...",
|
"subscribed_to_logs": "訂閱 Z-Wave JS 日誌訊息...",
|
||||||
"title": "Z-Wave JS 日誌"
|
"title": "Z-Wave JS 日誌"
|
||||||
},
|
},
|
||||||
|
@ -5676,9 +5676,9 @@ dns-equal@^1.0.0:
|
|||||||
integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0=
|
integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0=
|
||||||
|
|
||||||
dns-packet@^1.3.1:
|
dns-packet@^1.3.1:
|
||||||
version "1.3.1"
|
version "1.3.4"
|
||||||
resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a"
|
resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f"
|
||||||
integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==
|
integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==
|
||||||
dependencies:
|
dependencies:
|
||||||
ip "^1.1.0"
|
ip "^1.1.0"
|
||||||
safe-buffer "^5.0.1"
|
safe-buffer "^5.0.1"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user