Merge pull request #2926 from home-assistant/dev

20190313.0
This commit is contained in:
Paulus Schoutsen 2019-03-13 12:47:50 -07:00 committed by GitHub
commit 6015eff8a2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 496 additions and 61 deletions

View File

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

View File

@ -6,6 +6,7 @@ import { html } from "@polymer/polymer/lib/utils/html-tag";
import { PolymerElement } from "@polymer/polymer/polymer-element"; import { PolymerElement } from "@polymer/polymer/polymer-element";
import HassMediaPlayerEntity from "../util/hass-media-player-model"; import HassMediaPlayerEntity from "../util/hass-media-player-model";
import { fetchMediaPlayerThumbnailWithCache } from "../data/media-player";
import computeStateName from "../common/entity/compute_state_name"; import computeStateName from "../common/entity/compute_state_name";
import EventsMixin from "../mixins/events-mixin"; import EventsMixin from "../mixins/events-mixin";
@ -271,10 +272,13 @@ class HaMediaPlayerCard extends LocalizeMixin(EventsMixin(PolymerElement)) {
// We have a new picture url // We have a new picture url
try { try {
const { content_type: contentType, content } = await this.hass.callWS({ const {
type: "media_player_thumbnail", content_type: contentType,
entity_id: playerObj.stateObj.entity_id, content,
}); } = await fetchMediaPlayerThumbnailWithCache(
this.hass,
playerObj.stateObj.entity_id
);
this._coverShowing = true; this._coverShowing = true;
this._coverLoadError = false; this._coverLoadError = false;
this.$.cover.style.backgroundImage = `url(data:${contentType};base64,${content})`; this.$.cover.style.backgroundImage = `url(data:${contentType};base64,${content})`;

View File

@ -0,0 +1,47 @@
import { HomeAssistant } from "../../types";
interface ResultCache<T> {
[entityId: string]: Promise<T> | undefined;
}
export const timeCachePromiseFunc = async <T>(
cacheKey: string,
cacheTime: number,
func: (
hass: HomeAssistant,
entityId: string,
...args: Array<unknown>
) => Promise<T>,
hass: HomeAssistant,
entityId: string,
...args: Array<unknown>
): Promise<T> => {
let cache: ResultCache<T> | undefined = (hass as any)[cacheKey];
if (!cache) {
cache = hass[cacheKey] = {};
}
const lastResult = cache[entityId];
if (lastResult) {
return lastResult;
}
const result = func(hass, entityId, ...args);
cache[entityId] = result;
result.then(
// When successful, set timer to clear cache
() =>
setTimeout(() => {
cache![entityId] = undefined;
}, cacheTime),
// On failure, clear cache right away
() => {
cache![entityId] = undefined;
}
);
return result;
};

View File

@ -1,4 +1,5 @@
import { HomeAssistant, CameraEntity } from "../types"; import { HomeAssistant, CameraEntity } from "../types";
import { timeCachePromiseFunc } from "../common/util/time-cache-function-promise";
export interface CameraThumbnail { export interface CameraThumbnail {
content_type: string; content_type: string;
@ -14,6 +15,11 @@ export const computeMJPEGStreamUrl = (entity: CameraEntity) =>
entity.attributes.access_token entity.attributes.access_token
}`; }`;
export const fetchThumbnailWithCache = (
hass: HomeAssistant,
entityId: string
) => timeCachePromiseFunc("_cameraTmb", 9000, fetchThumbnail, hass, entityId);
export const fetchThumbnail = (hass: HomeAssistant, entityId: string) => export const fetchThumbnail = (hass: HomeAssistant, entityId: string) =>
hass.callWS<CameraThumbnail>({ hass.callWS<CameraThumbnail>({
type: "camera_thumbnail", type: "camera_thumbnail",

View File

@ -1,4 +1,35 @@
import { HomeAssistant } from "../types";
import { timeCachePromiseFunc } from "../common/util/time-cache-function-promise";
export const SUPPORT_PAUSE = 1; export const SUPPORT_PAUSE = 1;
export const SUPPORT_NEXT_TRACK = 32; export const SUPPORT_NEXT_TRACK = 32;
export const SUPPORTS_PLAY = 16384; export const SUPPORTS_PLAY = 16384;
export const OFF_STATES = ["off", "idle"]; export const OFF_STATES = ["off", "idle"];
export interface MediaPlayerThumbnail {
content_type: string;
content: string;
}
export const fetchMediaPlayerThumbnailWithCache = (
hass: HomeAssistant,
entityId: string
) =>
timeCachePromiseFunc(
"_media_playerTmb",
9000,
fetchMediaPlayerThumbnail,
hass,
entityId
);
export const fetchMediaPlayerThumbnail = (
hass: HomeAssistant,
entityId: string
) => {
return hass.callWS<MediaPlayerThumbnail>({
type: "media_player_thumbnail",
entity_id: entityId,
});
};

View File

@ -10,6 +10,7 @@ type HLSModule = typeof import("hls.js");
class MoreInfoCamera extends UpdatingElement { class MoreInfoCamera extends UpdatingElement {
@property() public hass?: HomeAssistant; @property() public hass?: HomeAssistant;
@property() public stateObj?: CameraEntity; @property() public stateObj?: CameraEntity;
private _hlsPolyfillInstance?: Hls;
public disconnectedCallback() { public disconnectedCallback() {
super.disconnectedCallback(); super.disconnectedCallback();
@ -100,6 +101,7 @@ class MoreInfoCamera extends UpdatingElement {
url: string url: string
) { ) {
const hls = new Hls(); const hls = new Hls();
this._hlsPolyfillInstance = hls;
await new Promise((resolve) => { await new Promise((resolve) => {
hls.on(Hls.Events.MEDIA_ATTACHED, resolve); hls.on(Hls.Events.MEDIA_ATTACHED, resolve);
hls.attachMedia(videoEl); hls.attachMedia(videoEl);
@ -123,9 +125,14 @@ class MoreInfoCamera extends UpdatingElement {
} }
private _teardownPlayback(): any { private _teardownPlayback(): any {
if (this._hlsPolyfillInstance) {
this._hlsPolyfillInstance.destroy();
this._hlsPolyfillInstance = undefined;
}
while (this.lastChild) { while (this.lastChild) {
this.removeChild(this.lastChild); this.removeChild(this.lastChild);
} }
this.stateObj = undefined;
} }
} }

View File

@ -47,6 +47,16 @@ export class CloudRemotePref extends LitElement {
remote_certificate, remote_certificate,
} = this.cloudStatus; } = this.cloudStatus;
if (!remote_certificate) {
return html`
<paper-card heading="Remote Control">
<div class="preparing">
Remote access is being prepared. We will notify you when it's ready.
</div>
</paper-card>
`;
}
return html` return html`
<paper-card heading="Remote Control"> <paper-card heading="Remote Control">
<paper-toggle-button <paper-toggle-button
@ -111,6 +121,12 @@ export class CloudRemotePref extends LitElement {
static get styles(): CSSResult { static get styles(): CSSResult {
return css` return css`
paper-card {
display: block;
}
.preparing {
padding: 0 16px 16px;
}
.data-row { .data-row {
display: flex; display: flex;
} }

View File

@ -18,7 +18,7 @@ import { HomeAssistant } from "../../../types";
import { styleMap } from "lit-html/directives/style-map"; import { styleMap } from "lit-html/directives/style-map";
import { classMap } from "lit-html/directives/class-map"; import { classMap } from "lit-html/directives/class-map";
import { b64toBlob } from "../../../common/file/b64-to-blob"; import { b64toBlob } from "../../../common/file/b64-to-blob";
import { fetchThumbnail } from "../../../data/camera"; import { fetchThumbnailWithCache } from "../../../data/camera";
const UPDATE_INTERVAL = 10000; const UPDATE_INTERVAL = 10000;
const DEFAULT_FILTER = "grayscale(100%)"; const DEFAULT_FILTER = "grayscale(100%)";
@ -179,10 +179,10 @@ class HuiImage extends LitElement {
return; return;
} }
try { try {
const { content_type: contentType, content } = await fetchThumbnail( const {
this.hass, content_type: contentType,
this.cameraImage content,
); } = await fetchThumbnailWithCache(this.hass, this.cameraImage);
if (this._cameraImageSrc) { if (this._cameraImageSrc) {
URL.revokeObjectURL(this._cameraImageSrc); URL.revokeObjectURL(this._cameraImageSrc);
} }

View File

@ -1,4 +1,7 @@
{ {
"af": {
"nativeName": "Afrikaans"
},
"ar": { "ar": {
"nativeName": "العربية", "nativeName": "العربية",
"isRTL": true "isRTL": true
@ -39,6 +42,9 @@
"et": { "et": {
"nativeName": "Eesti" "nativeName": "Eesti"
}, },
"eu": {
"nativeName": "Euskara"
},
"fa": { "fa": {
"nativeName": "فارسی" "nativeName": "فارسی"
}, },

237
translations/af.json Normal file
View File

@ -0,0 +1,237 @@
{
"panel": {
"config": "Konfigurasie",
"states": "Oorsig",
"map": "Kaart",
"logbook": "Logboek",
"history": "Geskiedenis",
"mailbox": "Posbus",
"shopping_list": "Inkopielys",
"dev-services": "Services",
"dev-states": "States",
"dev-events": "Events",
"dev-templates": "Templates",
"dev-mqtt": "MQTT",
"dev-info": "Info"
},
"state": {
"default": {
"off": "Af",
"on": "Op",
"unknown": "Onbekende",
"unavailable": "Nie beskikbaar nie"
},
"alarm_control_panel": {
"armed": "Gewapen",
"disarmed": "Ontwapen",
"armed_home": "Gewapende huis",
"armed_away": "Gewapen weg",
"armed_night": "Gewapende nag",
"pending": "Hangende",
"arming": "Bewapen",
"disarming": "Ontwapen",
"triggered": "Veroorsaak",
"armed_custom_bypass": "Gewapende pasgemaakte omseil"
},
"automation": {
"off": "Af",
"on": "Op"
},
"binary_sensor": {
"default": {
"off": "Af",
"on": "Op"
},
"moisture": {
"off": "Droë",
"on": "Nat"
},
"gas": {
"off": "Duidelike",
"on": "Opgespoor"
},
"motion": {
"off": "Duidelike",
"on": "Opgespoor"
},
"occupancy": {
"off": "Duidelike",
"on": "Opgespoor"
},
"smoke": {
"off": "Duidelike",
"on": "Opgespoor"
},
"sound": {
"off": "Duidelike",
"on": "Opgespoor"
},
"vibration": {
"off": "Duidelike",
"on": "Opgespoor"
},
"opening": {
"off": "Gesluit",
"on": "Oop"
},
"safety": {
"off": "Veilige",
"on": "Onveilige"
},
"presence": {
"off": "Weg",
"on": "Huis"
},
"battery": {
"off": "Normale",
"on": "Lae"
}
},
"calendar": {
"off": "Af",
"on": "Op"
},
"camera": {
"recording": "Opname",
"streaming": "Stroming",
"idle": "Ledig"
},
"climate": {
"off": "Af",
"on": "Op",
"heat": "Hitte",
"cool": "Afkoel",
"idle": "Ledig",
"auto": "Outo",
"dry": "Droë",
"fan_only": "Slegs fan",
"eco": "Eko",
"electric": "Elektriese",
"performance": "Prestasie",
"high_demand": "Hoë aanvraag",
"heat_pump": "Hitte pomp",
"gas": "Gas"
},
"configurator": {
"configure": "Konfigureer",
"configured": "Gekonfigureer"
},
"cover": {
"open": "Oop",
"opening": "Opening",
"closed": "Gesluit",
"closing": "Sluit",
"stopped": "Gestop"
},
"device_tracker": {
"home": "Huis",
"not_home": "Weg"
},
"fan": {
"off": "Af",
"on": "Op"
},
"group": {
"off": "Af",
"on": "Op",
"home": "Huis",
"not_home": "Weg",
"open": "Oop",
"opening": "Opening",
"closed": "Gesluit",
"closing": "Sluit",
"stopped": "Gestop",
"locked": "Gesluit",
"unlocked": "Ontsluit"
},
"input_boolean": {
"off": "Af",
"on": "Op"
},
"light": {
"off": "Af",
"on": "Op"
},
"lock": {
"locked": "Gesluit",
"unlocked": "Ontsluit"
},
"media_player": {
"off": "Af",
"on": "Op",
"playing": "Speel",
"paused": "Onderbreek",
"idle": "Ledig",
"standby": "Gereedheid"
},
"remote": {
"off": "Af",
"on": "Op"
},
"scene": {
"scening": "Scening"
},
"script": {
"off": "Af",
"on": "Op"
},
"sensor": {
"off": "Af",
"on": "Op"
},
"sun": {
"above_horizon": "Bo horison",
"below_horizon": "Onder horison"
},
"switch": {
"off": "Af",
"on": "Op"
},
"zwave": {
"default": {
"initializing": "Inisialiseer",
"dead": "Dood",
"sleeping": "Slaap",
"ready": "Gereed"
},
"query_stage": {
"initializing": "Inisialiseer ({query_stage})",
"dead": "Dood ({query_stage})"
}
}
},
"state_badge": {
"default": {
"unknown": "Unk",
"unavailable": "Unavai"
},
"alarm_control_panel": {
"armed": "Armed",
"disarmed": "Disarm",
"armed_home": "Armed",
"armed_away": "Armed",
"armed_night": "Armed",
"pending": "Pend",
"arming": "Arming",
"disarming": "Disarm",
"triggered": "Trig",
"armed_custom_bypass": "Armed"
},
"device_tracker": {
"home": "Huis",
"not_home": "Weg"
}
},
"ui": {
"panel": {
"shopping-list": {
"clear_completed": "Duidelik voltooide",
"add_item": "Voeg item"
}
},
"sidebar": {
"log_out": "Teken",
"developer_tools": "Ontwikkelaar gereedskap"
}
}
}

View File

@ -133,8 +133,8 @@
"climate": { "climate": {
"off": "Apagat", "off": "Apagat",
"on": "Encès", "on": "Encès",
"heat": "Calent", "heat": "Escalfar",
"cool": "Fred", "cool": "Refredar",
"idle": "Inactiu", "idle": "Inactiu",
"auto": "Automàtic", "auto": "Automàtic",
"dry": "Assecar", "dry": "Assecar",
@ -606,7 +606,8 @@
"caption": "ZHA", "caption": "ZHA",
"description": "Gestiona la xarxa domòtica ZIgbee", "description": "Gestiona la xarxa domòtica ZIgbee",
"services": { "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." "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.",
"updateDeviceName": "Estableix un nom personalitzat pel dispositiu al registre de dispositius."
} }
}, },
"area_registry": { "area_registry": {
@ -616,9 +617,11 @@
"header": "Registre d'àrees", "header": "Registre d'àrees",
"introduction": "Les àrees s'utilitzen per organitzar la situació dels dispositius. Aquesta informació serà utilitzada per Home Assistant per ajudar-te a organitzar millor la teva interfície, els permisos i les integracions amb d'altres sistemes.", "introduction": "Les àrees s'utilitzen per organitzar la situació dels dispositius. Aquesta informació serà utilitzada per Home Assistant per ajudar-te a organitzar millor la teva interfície, els permisos i les integracions amb d'altres sistemes.",
"introduction2": "Per col·locar dispositius en una àrea, utilitza l'enllaç de sota per anar a la pàgina d'integracions i, a continuació, fes clic a una integració configurada per accedir a les targetes del dispositiu.", "introduction2": "Per col·locar dispositius en una àrea, utilitza l'enllaç de sota per anar a la pàgina d'integracions i, a continuació, fes clic a una integració configurada per accedir a les targetes del dispositiu.",
"integrations_page": "Pàgina d'integracions" "integrations_page": "Pàgina d'integracions",
"no_areas": "Sembla que encara no tens cap àrea!",
"create_area": "CREAR ÀREA"
}, },
"no_areas": "Sembla que encara no tens cap àrea, encara.", "no_areas": "Sembla que encara no tens cap àrea!.",
"create_area": "CREA ÀREA", "create_area": "CREA ÀREA",
"editor": { "editor": {
"default_name": "Àrea nova", "default_name": "Àrea nova",
@ -830,11 +833,13 @@
"data": { "data": {
"name": "Nom", "name": "Nom",
"username": "Nom d'usuari", "username": "Nom d'usuari",
"password": "Contrasenya" "password": "Contrasenya",
"password_confirm": "Confirma la contrasenya"
}, },
"create_account": "Crear un compte", "create_account": "Crear un compte",
"error": { "error": {
"required_fields": "Omple tots els camps obligatoris" "required_fields": "Omple tots els camps obligatoris",
"password_not_match": "Les contrasenyes no coincideixen"
} }
} }
}, },
@ -1008,7 +1013,7 @@
"operation": "Funcionament", "operation": "Funcionament",
"fan_mode": "Mode ventilació", "fan_mode": "Mode ventilació",
"swing_mode": "Mode oscil·lació", "swing_mode": "Mode oscil·lació",
"away_mode": "Mode fora", "away_mode": "Mode absent",
"aux_heat": "Calefactor auxiliar" "aux_heat": "Calefactor auxiliar"
}, },
"lock": { "lock": {
@ -1156,5 +1161,10 @@
"auto": "Automàtic" "auto": "Automàtic"
} }
} }
},
"groups": {
"system-admin": "Administradors",
"system-users": "Usuaris",
"system-read-only": "Usuaris de només lectura"
} }
} }

View File

@ -606,7 +606,8 @@
"caption": "ZHA", "caption": "ZHA",
"description": "Zigbee Home Automation Netzwerkmanagement", "description": "Zigbee Home Automation Netzwerkmanagement",
"services": { "services": {
"reconfigure": "Rekonfiguriere ZHA-Gerät (Gerät heilen). Benutze dies, wenn du Probleme mit dem Gerät hast. Wenn es sich bei dem betroffenden Gerät um ein batteriebetriebenes Gerät handelt, stelle sicher dass es wach ist und Kommandos akzeptiert wenn du diesen Dienst benutzt." "reconfigure": "Rekonfiguriere ZHA-Gerät (Gerät heilen). Benutze dies, wenn du Probleme mit dem Gerät hast. Wenn es sich bei dem betroffenden Gerät um ein batteriebetriebenes Gerät handelt, stelle sicher dass es wach ist und Kommandos akzeptiert wenn du diesen Dienst benutzt.",
"updateDeviceName": "Lege einen benutzerdefinierten Namen für dieses Gerät in der Geräteregistrierung fest."
} }
}, },
"area_registry": { "area_registry": {
@ -616,7 +617,9 @@
"header": "Bereichsregister", "header": "Bereichsregister",
"introduction": "In Bereichen wird festgelegt, wo sich Geräte befinden. Diese Informationen werden in Home Assistant verwendet, um dich bei der Organisation deiner Benutzeroberfläche, Berechtigungen und Integrationen mit anderen Systemen zu unterstützen.", "introduction": "In Bereichen wird festgelegt, wo sich Geräte befinden. Diese Informationen werden in Home Assistant verwendet, um dich bei der Organisation deiner Benutzeroberfläche, Berechtigungen und Integrationen mit anderen Systemen zu unterstützen.",
"introduction2": "Um Geräte in einem Bereich zu platzieren, navigieren Sie mit dem Link unten zur Integrationsseite und klicken Sie dann auf eine konfigurierte Integration, um zu den Gerätekarten zu gelangen.", "introduction2": "Um Geräte in einem Bereich zu platzieren, navigieren Sie mit dem Link unten zur Integrationsseite und klicken Sie dann auf eine konfigurierte Integration, um zu den Gerätekarten zu gelangen.",
"integrations_page": "Integrationsseite" "integrations_page": "Integrationsseite",
"no_areas": "Sieht aus, als hättest du noch keine Bereiche!",
"create_area": "BEREICH ERSTELLEN"
}, },
"no_areas": "Sieht aus, als hättest du noch keine Bereiche!", "no_areas": "Sieht aus, als hättest du noch keine Bereiche!",
"create_area": "BEREICH ERSTELLEN", "create_area": "BEREICH ERSTELLEN",
@ -830,11 +833,13 @@
"data": { "data": {
"name": "Name", "name": "Name",
"username": "Benutzername", "username": "Benutzername",
"password": "Passwort" "password": "Passwort",
"password_confirm": "Passwort bestätigen"
}, },
"create_account": "Benutzerkonto anlegen", "create_account": "Benutzerkonto anlegen",
"error": { "error": {
"required_fields": "Fülle alle Pflichtfelder aus." "required_fields": "Fülle alle Pflichtfelder aus.",
"password_not_match": "Passwörter stimmen nicht überein"
} }
} }
}, },
@ -1156,5 +1161,10 @@
"auto": "Auto" "auto": "Auto"
} }
} }
},
"groups": {
"system-admin": "Administratoren",
"system-users": "Benutzer",
"system-read-only": "Nur-Lesen Benutzer"
} }
} }

View File

@ -780,7 +780,7 @@
}, },
"abort": { "abort": {
"no_api_password_set": "Δεν έχετε διαμορφώσει έναν κωδικό πρόσβασης API.", "no_api_password_set": "Δεν έχετε διαμορφώσει έναν κωδικό πρόσβασης API.",
"login_expired": "Έληξε η περίοδος σύνδεσης, παρακαλώ ξανα συνδεθείτε." "login_expired": "Έληξε η περίοδος σύνδεσης, παρακαλώ ξανά συνδεθείτε."
} }
}, },
"trusted_networks": { "trusted_networks": {

View File

@ -606,7 +606,8 @@
"caption": "ZHA", "caption": "ZHA",
"description": "Zigbee Home Automation network management", "description": "Zigbee Home Automation network management",
"services": { "services": {
"reconfigure": "Reconfigure ZHA device (heal device). Use this if you are having issues with the device. If the device in question is a battery powered device please ensure it is awake and accepting commands when you use this service." "reconfigure": "Reconfigure ZHA device (heal device). Use this if you are having issues with the device. If the device in question is a battery powered device please ensure it is awake and accepting commands when you use this service.",
"updateDeviceName": "Set a custom name for this device in the device registry."
} }
}, },
"area_registry": { "area_registry": {
@ -616,7 +617,9 @@
"header": "Area Registry", "header": "Area Registry",
"introduction": "Areas are used to organize where devices are. This information will be used throughout Home Assistant to help you in organizing your interface, permissions and integrations with other systems.", "introduction": "Areas are used to organize where devices are. This information will be used throughout Home Assistant to help you in organizing your interface, permissions and integrations with other systems.",
"introduction2": "To place devices in an area, use the link below to navigate to the integrations page and then click on a configured integration to get to the device cards.", "introduction2": "To place devices in an area, use the link below to navigate to the integrations page and then click on a configured integration to get to the device cards.",
"integrations_page": "Integrations page" "integrations_page": "Integrations page",
"no_areas": "Looks like you have no areas yet!",
"create_area": "CREATE AREA"
}, },
"no_areas": "Looks like you have no areas yet!", "no_areas": "Looks like you have no areas yet!",
"create_area": "CREATE AREA", "create_area": "CREATE AREA",
@ -830,11 +833,13 @@
"data": { "data": {
"name": "Name", "name": "Name",
"username": "Username", "username": "Username",
"password": "Password" "password": "Password",
"password_confirm": "Confirm Password"
}, },
"create_account": "Create Account", "create_account": "Create Account",
"error": { "error": {
"required_fields": "Fill in all required fields" "required_fields": "Fill in all required fields",
"password_not_match": "Passwords don't match"
} }
} }
}, },
@ -1156,5 +1161,10 @@
"auto": "Auto" "auto": "Auto"
} }
} }
},
"groups": {
"system-admin": "Administrators",
"system-users": "Users",
"system-read-only": "Read-Only Users"
} }
} }

View File

@ -606,7 +606,8 @@
"caption": "ZHA", "caption": "ZHA",
"description": "Gestión de red de Zigbee Home Automation", "description": "Gestión de red de Zigbee Home Automation",
"services": { "services": {
"reconfigure": "Reconfigura el dispositivo ZHA (curar dispositivo). Usa esto si tienes problemas con el dispositivo. Si el dispositivo en cuestión es un dispositivo alimentado por batería, asegurate de que está activo y aceptando comandos cuando uses este servicio." "reconfigure": "Reconfigura el dispositivo ZHA (curar dispositivo). Usa esto si tienes problemas con el dispositivo. Si el dispositivo en cuestión es un dispositivo alimentado por batería, asegurate de que está activo y aceptando comandos cuando uses este servicio.",
"updateDeviceName": "Establezca un nombre personalizado para este dispositivo en el registro de dispositivos."
} }
}, },
"area_registry": { "area_registry": {
@ -616,7 +617,9 @@
"header": "Registro de Área", "header": "Registro de Área",
"introduction": "Las áreas se utilizan para organizar dónde están los dispositivos. Esta información se utilizará en Home Assistant para ayudarle a organizar su interfaz, permisos e integraciones con otros sistemas.", "introduction": "Las áreas se utilizan para organizar dónde están los dispositivos. Esta información se utilizará en Home Assistant para ayudarle a organizar su interfaz, permisos e integraciones con otros sistemas.",
"introduction2": "Para colocar dispositivos en un área, utilice el siguiente enlace para navegar a la página de integraciones y luego haga clic en una integración configurada para llegar a las tarjetas de dispositivos.", "introduction2": "Para colocar dispositivos en un área, utilice el siguiente enlace para navegar a la página de integraciones y luego haga clic en una integración configurada para llegar a las tarjetas de dispositivos.",
"integrations_page": "Integraciones" "integrations_page": "Integraciones",
"no_areas": "¡Parece que aún no tienes áreas!",
"create_area": "CREAR ÁREA"
}, },
"no_areas": "¡Parece que no tienes áreas!", "no_areas": "¡Parece que no tienes áreas!",
"create_area": "CREAR ÁREA", "create_area": "CREAR ÁREA",
@ -830,11 +833,13 @@
"data": { "data": {
"name": "Nombre", "name": "Nombre",
"username": "Nombre de usuario", "username": "Nombre de usuario",
"password": "Contraseña" "password": "Contraseña",
"password_confirm": "Confirmar Contraseña"
}, },
"create_account": "Crear una cuenta", "create_account": "Crear una cuenta",
"error": { "error": {
"required_fields": "Complete todos los campos requeridos" "required_fields": "Complete todos los campos requeridos",
"password_not_match": "Las contraseñas no coinciden"
} }
} }
}, },
@ -1156,5 +1161,10 @@
"auto": "Automático" "auto": "Automático"
} }
} }
},
"groups": {
"system-admin": "Administradores",
"system-users": "Usuarios",
"system-read-only": "Usuarios de solo lectura"
} }
} }

11
translations/eu.json Normal file
View File

@ -0,0 +1,11 @@
{
"panel": {
"config": "Konfigurazioa",
"states": "Orokorra",
"map": "Mapa",
"logbook": "Logbook",
"history": "Historia",
"mailbox": "Postontzia",
"shopping_list": "Erosketa zerrenda"
}
}

View File

@ -370,7 +370,7 @@
"description": "צור וערוך אוטומציות", "description": "צור וערוך אוטומציות",
"picker": { "picker": {
"header": "עורך אוטומציה", "header": "עורך אוטומציה",
"introduction": "עורך אוטומציה מאפשר לך ליצור ולערוך אוטומציות. אנא קרא את [ההוראות](https:\/\/home-assistant.io\/docs\/automation\/editor\/) כדי לוודא שהגדרת את ה - Home Assistant כהלכה.", "introduction": "עורך אוטומציה מאפשר לך ליצור ולערוך אוטומציות. אנא עקוב אחר הקישור למטה וקרא את ההוראות כדי לוודא שהגדרת את ה - Home Assistant כהלכה.",
"pick_automation": "בחר אוטומציה לעריכה", "pick_automation": "בחר אוטומציה לעריכה",
"no_automations": "לא הצלחנו למצוא שום אוטומציה הניתנת לעריכה", "no_automations": "לא הצלחנו למצוא שום אוטומציה הניתנת לעריכה",
"add_automation": "הוסף אוטומציה", "add_automation": "הוסף אוטומציה",
@ -384,7 +384,7 @@
"alias": "שם", "alias": "שם",
"triggers": { "triggers": {
"header": "טריגרים", "header": "טריגרים",
"introduction": "טריגרים הם מה שמתחיל כל אוטומציה. ניתן לציין מספר טריגרים עבור אותו כלל. לאחר הפעלת טריגר, Home Assistant יאמת את התנאים, אם ישנם, ויפעיל את הפעולה. \n\n[למד עוד על טריגרים](https:\/\/home-assistant.io\/docs\/automation\/trigger\/)", "introduction": "טריגרים הם מה שמתחיל כל אוטומציה. ניתן לציין מספר טריגרים עבור אותו כלל. לאחר הפעלת טריגר, Home Assistant יאמת את התנאים, אם ישנם, ויפעיל את הפעולה.",
"add": "הוספת טריגר", "add": "הוספת טריגר",
"duplicate": "שכפל", "duplicate": "שכפל",
"delete": "מחק", "delete": "מחק",
@ -466,7 +466,7 @@
}, },
"conditions": { "conditions": {
"header": "תנאים", "header": "תנאים",
"introduction": "התנאים הם חלק אופציונלי של כלל אוטומציה, וניתן להשתמש בהם כדי למנוע פעולה כלשהי בעת הפעלתה. התנאים נראים דומים מאוד לטריגרים אך הם שונים מאוד. הטריגר יסתכל על האירועים המתרחשים במערכת בעוד תנאי רק מסתכל על איך המערכת נראית עכשיו. הטריגר יכול לדעת כשמתג נדלק. תנאי יכול לראות רק אם מתג מופעל או כבוי. \n\n[למידע נוסף על תנאים](Https:\/\/home-assistant.io\/docs\/scripts\/conditions\/)", "introduction": "התנאים הם חלק אופציונלי של כלל אוטומציה, וניתן להשתמש בהם כדי למנוע פעולה כלשהי בעת הפעלתה. התנאים נראים דומים מאוד לטריגרים אך הם שונים מאוד. הטריגר יסתכל על האירועים המתרחשים במערכת בעוד תנאי רק מסתכל על איך המערכת נראית עכשיו. הטריגר יכול לדעת כשמתג נדלק. תנאי יכול לראות רק אם מתג מופעל או כבוי.",
"add": "הוסף תנאי", "add": "הוסף תנאי",
"duplicate": "שכפל", "duplicate": "שכפל",
"delete": "מחק", "delete": "מחק",
@ -512,7 +512,7 @@
}, },
"actions": { "actions": {
"header": "פעולות", "header": "פעולות",
"introduction": "הפעולות הן מה שHome Assistant יעשה כאשר אוטומציה מופעלת. \n\n[למידע נוסף על פעולות](https:\/\/home-assistant.io\/docs\/automation\/action\/)", "introduction": "הפעולות הן מה שHome Assistant יעשה כאשר אוטומציה מופעלת.",
"add": "הוסף פעולה", "add": "הוסף פעולה",
"duplicate": "שכפל", "duplicate": "שכפל",
"delete": "מחק", "delete": "מחק",

View File

@ -606,7 +606,8 @@
"caption": "ZHA", "caption": "ZHA",
"description": "Gestioun vum Zigbee Home Automation Reseau", "description": "Gestioun vum Zigbee Home Automation Reseau",
"services": { "services": {
"reconfigure": "ZHA Apparat rekonfiguréieren (Apparat heelen). Benotzt dëst am Fall vu Problemer mam Apparat. Falls den Apparat duerch eng Batterie gespeist gëtt stellt sécher dass en un ass a Befeeler entgéint kann huelen" "reconfigure": "ZHA Apparat rekonfiguréieren (Apparat heelen). Benotzt dëst am Fall vu Problemer mam Apparat. Falls den Apparat duerch eng Batterie gespeist gëtt stellt sécher dass en un ass a Befeeler entgéint kann huelen",
"updateDeviceName": "Personaliséiert den Numm fir dësen Apparat an der Iwwersiicht vun den Apparaten."
} }
}, },
"area_registry": { "area_registry": {
@ -616,7 +617,9 @@
"header": "Lëscht vun de Beräicher", "header": "Lëscht vun de Beräicher",
"introduction": "Beräicher gi benotzt fir d'Organisatioun vum Standuert vun den Apparater. Dës Informatioun gëtt vum Home Assistant benotzt fir iech ze hëllefe fir den Interface, Berechtegungen an Integratioune mat aner Systemer ze geréieren.", "introduction": "Beräicher gi benotzt fir d'Organisatioun vum Standuert vun den Apparater. Dës Informatioun gëtt vum Home Assistant benotzt fir iech ze hëllefe fir den Interface, Berechtegungen an Integratioune mat aner Systemer ze geréieren.",
"introduction2": "Fir Apparater an e Beräich ze setzen, benotzt de Link ënne fir op d'Integratiouns Säit ze kommen a klickt do op eng konfiguréiert Integratioun fir d'Kaart vum Apparat unzeweisen.", "introduction2": "Fir Apparater an e Beräich ze setzen, benotzt de Link ënne fir op d'Integratiouns Säit ze kommen a klickt do op eng konfiguréiert Integratioun fir d'Kaart vum Apparat unzeweisen.",
"integrations_page": "Integratiouns Säit" "integrations_page": "Integratiouns Säit",
"no_areas": "Et sinn nach keng Beräicher do!",
"create_area": "Beräich erstellen"
}, },
"no_areas": "Et sinn nach keng Beräicher do!", "no_areas": "Et sinn nach keng Beräicher do!",
"create_area": "Beräich erstellen", "create_area": "Beräich erstellen",
@ -830,11 +833,13 @@
"data": { "data": {
"name": "Numm", "name": "Numm",
"username": "Benotzernumm", "username": "Benotzernumm",
"password": "Passwuert" "password": "Passwuert",
"password_confirm": "Passwuert bestätegen"
}, },
"create_account": "Kont erstellen", "create_account": "Kont erstellen",
"error": { "error": {
"required_fields": "Fëllt all néideg Felder aus" "required_fields": "Fëllt all néideg Felder aus",
"password_not_match": "Passwierder stëmmen net iwwereneen"
} }
} }
}, },
@ -1156,5 +1161,10 @@
"auto": "Autmatesch" "auto": "Autmatesch"
} }
} }
},
"groups": {
"system-admin": "Administrateuren",
"system-users": "Benotzer",
"system-read-only": "Benotzer mat nëmmen Lies Rechter"
} }
} }

View File

@ -606,7 +606,8 @@
"caption": "ZHA", "caption": "ZHA",
"description": "ZigBee Home Automation nettverksadministrasjon", "description": "ZigBee Home Automation nettverksadministrasjon",
"services": { "services": {
"reconfigure": "Rekonfigurer ZHA-enhet (heal enhet). Bruk dette hvis du har problemer med enheten. Hvis den aktuelle enheten er en batteridrevet enhet, sørg for at den er våken og aksepterer kommandoer når du bruker denne tjenesten." "reconfigure": "Rekonfigurer ZHA-enhet (heal enhet). Bruk dette hvis du har problemer med enheten. Hvis den aktuelle enheten er en batteridrevet enhet, sørg for at den er våken og aksepterer kommandoer når du bruker denne tjenesten.",
"updateDeviceName": "Angi et egendefinert navn for denne enheten i enhetsregisteret."
} }
}, },
"area_registry": { "area_registry": {
@ -616,7 +617,9 @@
"header": "Områderegister", "header": "Områderegister",
"introduction": "Områder brukes til å organisere hvor enheter er. Denne informasjonen vil bli brukt gjennomgående i Home Assistant for å hjelpe deg med å organisere grensesnittet, tillatelser og integrasjoner med andre systemer.", "introduction": "Områder brukes til å organisere hvor enheter er. Denne informasjonen vil bli brukt gjennomgående i Home Assistant for å hjelpe deg med å organisere grensesnittet, tillatelser og integrasjoner med andre systemer.",
"introduction2": "For å plassere enheter i et område, bruk linken under for å navigere til integrasjonssiden og klikk deretter på en konfigurert integrasjon for å komme til enhetskortene.", "introduction2": "For å plassere enheter i et område, bruk linken under for å navigere til integrasjonssiden og klikk deretter på en konfigurert integrasjon for å komme til enhetskortene.",
"integrations_page": "Integrasjonsside" "integrations_page": "Integrasjonsside",
"no_areas": "Det ser ikke ut som om du har noen områder enda!",
"create_area": "Opprett område"
}, },
"no_areas": "Det ser ikke ut som om du har noen områder ennå!", "no_areas": "Det ser ikke ut som om du har noen områder ennå!",
"create_area": "OPPRETT OMRÅDE", "create_area": "OPPRETT OMRÅDE",
@ -830,11 +833,13 @@
"data": { "data": {
"name": "Navn", "name": "Navn",
"username": "Brukernavn", "username": "Brukernavn",
"password": "Passord" "password": "Passord",
"password_confirm": "Bekreft passord"
}, },
"create_account": "Opprett konto", "create_account": "Opprett konto",
"error": { "error": {
"required_fields": "Fyll ut alle nødvendige felt" "required_fields": "Fyll ut alle nødvendige felt",
"password_not_match": "Passordene er ikke like"
} }
} }
}, },
@ -1156,5 +1161,10 @@
"auto": "Auto" "auto": "Auto"
} }
} }
},
"groups": {
"system-admin": "Administratorer",
"system-users": "Brukere",
"system-read-only": "Lesetilgang brukere"
} }
} }

View File

@ -384,7 +384,7 @@
"alias": "Nazwa", "alias": "Nazwa",
"triggers": { "triggers": {
"header": "Wyzwalacze", "header": "Wyzwalacze",
"introduction": "Wyzwalacze uruchamiają przetwarzanie reguły automatyzacji. Możliwe jest określenie wielu wyzwalaczy dla tej samej reguły. Po uruchomieniu wyzwalacza Home Assistant potwierdzi ewentualne warunki i wywoła akcję. \n\n[Dowiedz się więcej o wyzwalaczach.](Https:\/\/home-assistant.io\/docs\/automation\/trigger\/)", "introduction": "Wyzwalacze uruchamiają przetwarzanie reguły automatyzacji. Możliwe jest stworzenie wielu wyzwalaczy dla tej samej reguły. Po uruchomieniu wyzwalacza Home Assistant sprawdzi ewentualne warunki i wywoła akcje.",
"add": "Dodaj wyzwalacz", "add": "Dodaj wyzwalacz",
"duplicate": "Duplikuj", "duplicate": "Duplikuj",
"delete": "Usuń", "delete": "Usuń",
@ -399,8 +399,8 @@
}, },
"state": { "state": {
"label": "Stan", "label": "Stan",
"from": "Od", "from": "Z",
"to": "Do", "to": "Na",
"for": "Przez" "for": "Przez"
}, },
"homeassistant": { "homeassistant": {
@ -466,7 +466,7 @@
}, },
"conditions": { "conditions": {
"header": "Warunki", "header": "Warunki",
"introduction": "Warunki są opcjonalną częścią reguły automatyzacji i można ich użyć, aby zapobiec działaniom po uruchomieniu. Warunki wyglądają bardzo podobnie do wyzwalaczy, ale są bardzo różne. Wyzwalacz będzie analizował zdarzenia zachodzące w systemie, a warunek będzie dotyczył tylko tego, jak wygląda teraz system. Wyzwalacz może zaobserwować, że przełącznik jest włączony. Warunek może tylko sprawdzić, czy przełącznik jest aktualnie włączony lub wyłączony. \n\n[Dowiedz się więcej o warunkach.](Https:\/\/home-assistant.io\/docs\/scripts\/conditions\/)", "introduction": "Warunki są opcjonalną częścią reguły automatyzacji i można ich użyć, aby zapobiec działaniom po uruchomieniu. Warunki wyglądają bardzo podobnie do wyzwalaczy, ale są bardzo różne. Wyzwalacz będzie analizował zdarzenia zachodzące w systemie, a warunek będzie dotyczył tylko tego, jak wygląda teraz system. Wyzwalacz może zaobserwować, że przełącznik jest przełączany. Warunek może tylko sprawdzić, czy przełącznik jest aktualnie włączony lub wyłączony. ",
"add": "Dodaj warunek", "add": "Dodaj warunek",
"duplicate": "Duplikuj", "duplicate": "Duplikuj",
"delete": "Usuń", "delete": "Usuń",
@ -512,7 +512,7 @@
}, },
"actions": { "actions": {
"header": "Akcje", "header": "Akcje",
"introduction": "Akcje są wykonywane przez Home Assistant'a po uruchomieniu automatyki. \n\n[Dowiedz się więcej o akcjach.](Https:\/\/home-assistant.io\/docs\/automation\/action\/)", "introduction": "Akcje są wykonywane przez Home Assistant'a po uruchomieniu reguły automatyzacji.",
"add": "Dodaj akcję", "add": "Dodaj akcję",
"duplicate": "Duplikuj", "duplicate": "Duplikuj",
"delete": "Usuń", "delete": "Usuń",
@ -599,29 +599,32 @@
"firmware": "Oprogramowanie: {version}", "firmware": "Oprogramowanie: {version}",
"device_unavailable": "urządzenie niedostępne", "device_unavailable": "urządzenie niedostępne",
"entity_unavailable": "encja niedostępna", "entity_unavailable": "encja niedostępna",
"no_area": "Brak lokalizacji" "no_area": "Brak obszaru"
} }
}, },
"zha": { "zha": {
"caption": "ZHA", "caption": "ZHA",
"description": "Zarządzanie siecią automatyki domowej ZigBee", "description": "Zarządzanie siecią automatyki domowej ZigBee",
"services": { "services": {
"reconfigure": "Ponowna konfiguracja urządzenia ZHA (uzdrawianie urządzenia). Użyj tej usługi, jeśli masz problemy z urządzeniem. Jeśli urządzenie jest zasilane bateryjnie, upewnij się, że nie jest uśpione i przyjmie polecenie rekonfiguracji." "reconfigure": "Ponowna konfiguracja urządzenia ZHA (uzdrawianie urządzenia). Użyj tej usługi, jeśli masz problemy z urządzeniem. Jeśli urządzenie jest zasilane bateryjnie, upewnij się, że nie jest uśpione i przyjmie polecenie rekonfiguracji.",
"updateDeviceName": "Ustaw niestandardową nazwę tego urządzenia w rejestrze urządzeń."
} }
}, },
"area_registry": { "area_registry": {
"caption": "Rejestr lokalizacji", "caption": "Rejestr obszarów",
"description": "Przegląd wszystkich lokalizacji w twoim domu.", "description": "Przegląd wszystkich obszarów w twoim domu.",
"picker": { "picker": {
"header": "Rejestr lokalizacji", "header": "Rejestr obszarów",
"introduction": "Obszary służą do organizacji urządzeń. Informacje te będą używane w Home Assistant, aby pomóc w organizacji interfejsu, uprawnień i integracji z innymi systemami.", "introduction": "Obszary służą do organizacji urządzeń. Informacje te będą używane w Home Assistant, aby pomóc w organizacji interfejsu, uprawnień i integracji z innymi systemami.",
"introduction2": "Aby umieścić urządzenia w danym obszarze, użyj poniższego linku, aby przejść do strony integracji, a następnie kliknij na skonfigurowaną integrację, aby dostać się do kart urządzeń.", "introduction2": "Aby umieścić urządzenia w danym obszarze, użyj poniższego linku, aby przejść do strony integracji, a następnie kliknij skonfigurowaną integrację, aby dostać się do kart urządzeń.",
"integrations_page": "Strona integracji" "integrations_page": "Strona integracji",
"no_areas": "Wygląda na to, że nie masz jeszcze lokalizacji!",
"create_area": "UTWÓRZ OBSZAR"
}, },
"no_areas": "Wygląda na to, że jeszcze nie masz zdefiniowanych lokalizacji!", "no_areas": "Wygląda na to, że jeszcze nie masz zdefiniowanych obszarów!",
"create_area": "STWÓRZ LOKALIZACJĘ", "create_area": "STWÓRZ OBSZAR",
"editor": { "editor": {
"default_name": "Nowa lokalizacja", "default_name": "Nowy obszar",
"delete": "USUŃ", "delete": "USUŃ",
"update": "UAKTUALNIJ", "update": "UAKTUALNIJ",
"create": "STWÓRZ" "create": "STWÓRZ"
@ -639,7 +642,7 @@
}, },
"editor": { "editor": {
"unavailable": "Ta encja nie jest obecnie dostępna.", "unavailable": "Ta encja nie jest obecnie dostępna.",
"default_name": "Nowa lokalizacja", "default_name": "Nowy obszar",
"delete": "USUŃ", "delete": "USUŃ",
"update": "UAKTUALNIJ" "update": "UAKTUALNIJ"
} }
@ -830,11 +833,13 @@
"data": { "data": {
"name": "Imię", "name": "Imię",
"username": "Nazwa użytkownika", "username": "Nazwa użytkownika",
"password": "Hasło" "password": "Hasło",
"password_confirm": "Potwierdź hasło"
}, },
"create_account": "Utwórz konto", "create_account": "Utwórz konto",
"error": { "error": {
"required_fields": "Wypełnij wszystkie wymagane pola" "required_fields": "Wypełnij wszystkie wymagane pola",
"password_not_match": "Hasła nie są takie same"
} }
} }
}, },
@ -1156,5 +1161,10 @@
"auto": "Auto" "auto": "Auto"
} }
} }
},
"groups": {
"system-admin": "Administratorzy",
"system-users": "Użytkownicy",
"system-read-only": "Użytkownicy (tylko odczyt)"
} }
} }