From e86fb3fc5cd4c3fa0acff466478b1317d358a067 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 1 Apr 2020 20:49:35 +0200 Subject: [PATCH 01/63] Bumped version to 0.108.0b0 --- homeassistant/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 2f1cc75e4a5..0408a891286 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -1,7 +1,7 @@ """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 MINOR_VERSION = 108 -PATCH_VERSION = "0.dev0" +PATCH_VERSION = "0b0" __short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__ = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER = (3, 7, 0) From ef5f4b2aca295fd8920d1dfdaab961a5844e7f1a Mon Sep 17 00:00:00 2001 From: Jonathan Keljo Date: Thu, 2 Apr 2020 07:33:54 -0700 Subject: [PATCH 02/63] Enable sisyphus to recover from bad DNS without restart (#32846) --- homeassistant/components/sisyphus/__init__.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/sisyphus/__init__.py b/homeassistant/components/sisyphus/__init__.py index 5ad59da5dee..841fbb68178 100644 --- a/homeassistant/components/sisyphus/__init__.py +++ b/homeassistant/components/sisyphus/__init__.py @@ -99,18 +99,23 @@ class TableHolder: async def get_table(self): """Return the Table held by this holder, connecting to it if needed.""" + if self._table: + return self._table + if not self._table_task: self._table_task = self._hass.async_create_task(self._connect_table()) return await self._table_task async def _connect_table(self): - - self._table = await Table.connect(self._host, self._session) - if self._name is None: - self._name = self._table.name - _LOGGER.debug("Connected to %s at %s", self._name, self._host) - return self._table + try: + self._table = await Table.connect(self._host, self._session) + if self._name is None: + self._name = self._table.name + _LOGGER.debug("Connected to %s at %s", self._name, self._host) + return self._table + finally: + self._table_task = None async def close(self): """Close the table held by this holder, if any.""" From 899e7bfb5a7cf441596cbd05b2aa81dbff37601a Mon Sep 17 00:00:00 2001 From: cgtobi Date: Thu, 2 Apr 2020 17:35:25 +0200 Subject: [PATCH 03/63] Fix netatmo device unavailable and services (#33509) * Handle unavailabe entities * Remove some logging * Set valve to lowest temp when turned off * Remove some logging * Address comments * Report entity as connected if update is successful * Fix stupidness * Fix --- homeassistant/components/netatmo/climate.py | 59 ++++++++++++++++----- 1 file changed, 45 insertions(+), 14 deletions(-) diff --git a/homeassistant/components/netatmo/climate.py b/homeassistant/components/netatmo/climate.py index 1f1b7088b29..fe6526a16eb 100644 --- a/homeassistant/components/netatmo/climate.py +++ b/homeassistant/components/netatmo/climate.py @@ -56,6 +56,7 @@ STATE_NETATMO_MAX = "max" STATE_NETATMO_AWAY = PRESET_AWAY STATE_NETATMO_OFF = STATE_OFF STATE_NETATMO_MANUAL = "manual" +STATE_NETATMO_HOME = "home" PRESET_MAP_NETATMO = { PRESET_FROST_GUARD: STATE_NETATMO_HG, @@ -173,8 +174,11 @@ class NetatmoThermostat(ClimateDevice): self._support_flags = SUPPORT_FLAGS self._hvac_mode = None self._battery_level = None + self._connected = None self.update_without_throttle = False - self._module_type = self._data.room_status.get(room_id, {}).get("module_type") + self._module_type = self._data.room_status.get(room_id, {}).get( + "module_type", NA_VALVE + ) if self._module_type == NA_THERM: self._operation_list.append(HVAC_MODE_OFF) @@ -252,25 +256,20 @@ class NetatmoThermostat(ClimateDevice): def set_hvac_mode(self, hvac_mode: str) -> None: """Set new target hvac mode.""" - mode = None - if hvac_mode == HVAC_MODE_OFF: - mode = STATE_NETATMO_OFF + self.turn_off() elif hvac_mode == HVAC_MODE_AUTO: - mode = PRESET_SCHEDULE + if self.hvac_mode == HVAC_MODE_OFF: + self.turn_on() + self.set_preset_mode(PRESET_SCHEDULE) elif hvac_mode == HVAC_MODE_HEAT: - mode = PRESET_BOOST - - self.set_preset_mode(mode) + self.set_preset_mode(PRESET_BOOST) def set_preset_mode(self, preset_mode: str) -> None: """Set new preset mode.""" if self.target_temperature == 0: self._data.homestatus.setroomThermpoint( - self._data.home_id, - self._room_id, - STATE_NETATMO_MANUAL, - DEFAULT_MIN_TEMP, + self._data.home_id, self._room_id, STATE_NETATMO_HOME, ) if ( @@ -283,7 +282,7 @@ class NetatmoThermostat(ClimateDevice): STATE_NETATMO_MANUAL, DEFAULT_MAX_TEMP, ) - elif preset_mode in [PRESET_BOOST, STATE_NETATMO_MAX, STATE_NETATMO_OFF]: + elif preset_mode in [PRESET_BOOST, STATE_NETATMO_MAX]: self._data.homestatus.setroomThermpoint( self._data.home_id, self._room_id, PRESET_MAP_NETATMO[preset_mode] ) @@ -293,6 +292,7 @@ class NetatmoThermostat(ClimateDevice): ) else: _LOGGER.error("Preset mode '%s' not available", preset_mode) + self.update_without_throttle = True self.schedule_update_ha_state() @@ -328,6 +328,35 @@ class NetatmoThermostat(ClimateDevice): return attr + def turn_off(self): + """Turn the entity off.""" + if self._module_type == NA_VALVE: + self._data.homestatus.setroomThermpoint( + self._data.home_id, + self._room_id, + STATE_NETATMO_MANUAL, + DEFAULT_MIN_TEMP, + ) + elif self.hvac_mode != HVAC_MODE_OFF: + self._data.homestatus.setroomThermpoint( + self._data.home_id, self._room_id, STATE_NETATMO_OFF + ) + self.update_without_throttle = True + self.schedule_update_ha_state() + + def turn_on(self): + """Turn the entity on.""" + self._data.homestatus.setroomThermpoint( + self._data.home_id, self._room_id, STATE_NETATMO_HOME + ) + self.update_without_throttle = True + self.schedule_update_ha_state() + + @property + def available(self) -> bool: + """If the device hasn't been able to connect, mark as unavailable.""" + return bool(self._connected) + def update(self): """Get the latest data from NetAtmo API and updates the states.""" try: @@ -355,12 +384,14 @@ class NetatmoThermostat(ClimateDevice): self._battery_level = self._data.room_status[self._room_id].get( "battery_level" ) + self._connected = True except KeyError as err: - _LOGGER.error( + _LOGGER.debug( "The thermostat in room %s seems to be out of reach. (%s)", self._room_name, err, ) + self._connected = False self._away = self._hvac_mode == HVAC_MAP_NETATMO[STATE_NETATMO_AWAY] From 9c224e051553a251682ce06fcd3d32317280bd93 Mon Sep 17 00:00:00 2001 From: AJ Schmidt Date: Thu, 2 Apr 2020 13:22:54 -0400 Subject: [PATCH 04/63] Remove extraneous parameter from AlarmDecoder services (#33516) --- homeassistant/components/alarmdecoder/services.yaml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/homeassistant/components/alarmdecoder/services.yaml b/homeassistant/components/alarmdecoder/services.yaml index 12268d48bb7..1193f90ff8e 100644 --- a/homeassistant/components/alarmdecoder/services.yaml +++ b/homeassistant/components/alarmdecoder/services.yaml @@ -1,9 +1,6 @@ alarm_keypress: description: Send custom keypresses to the alarm. fields: - entity_id: - description: Name of the alarm control panel to trigger. - example: 'alarm_control_panel.downstairs' keypress: description: 'String to send to the alarm panel.' example: '*71' @@ -11,9 +8,6 @@ alarm_keypress: alarm_toggle_chime: description: Send the alarm the toggle chime command. fields: - entity_id: - description: Name of the alarm control panel to trigger. - example: 'alarm_control_panel.downstairs' code: description: A required code to toggle the alarm control panel chime with. example: 1234 From 9b94d128ad32b2236169ed87f64dc3dea01d9347 Mon Sep 17 00:00:00 2001 From: Chris Talkington Date: Thu, 2 Apr 2020 03:09:59 -0500 Subject: [PATCH 05/63] Update to roku==4.1.0 (#33520) * Update manifest.json * Update requirements_test_all.txt * Update requirements_all.txt --- homeassistant/components/roku/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/roku/manifest.json b/homeassistant/components/roku/manifest.json index e9cdb897115..43ccb6b8ad3 100644 --- a/homeassistant/components/roku/manifest.json +++ b/homeassistant/components/roku/manifest.json @@ -2,7 +2,7 @@ "domain": "roku", "name": "Roku", "documentation": "https://www.home-assistant.io/integrations/roku", - "requirements": ["roku==4.0.0"], + "requirements": ["roku==4.1.0"], "dependencies": [], "ssdp": [ { diff --git a/requirements_all.txt b/requirements_all.txt index 0cbc59f76c4..70beb7ec314 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1807,7 +1807,7 @@ rjpl==0.3.5 rocketchat-API==0.6.1 # homeassistant.components.roku -roku==4.0.0 +roku==4.1.0 # homeassistant.components.roomba roombapy==1.4.3 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index a5d9daf91d9..0c0cbe43485 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -668,7 +668,7 @@ rflink==0.0.52 ring_doorbell==0.6.0 # homeassistant.components.roku -roku==4.0.0 +roku==4.1.0 # homeassistant.components.yamaha rxv==0.6.0 From c529bcca9b6155f43059a1a295108f2fa6c14602 Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Thu, 2 Apr 2020 13:52:03 +0200 Subject: [PATCH 06/63] Bump brother to 0.1.11 (#33526) --- homeassistant/components/brother/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- tests/fixtures/brother_printer_data.json | 3 ++- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/brother/manifest.json b/homeassistant/components/brother/manifest.json index 24150c513df..7f48c7ee22c 100644 --- a/homeassistant/components/brother/manifest.json +++ b/homeassistant/components/brother/manifest.json @@ -4,7 +4,7 @@ "documentation": "https://www.home-assistant.io/integrations/brother", "dependencies": [], "codeowners": ["@bieniu"], - "requirements": ["brother==0.1.9"], + "requirements": ["brother==0.1.11"], "zeroconf": ["_printer._tcp.local."], "config_flow": true, "quality_scale": "platinum" diff --git a/requirements_all.txt b/requirements_all.txt index 70beb7ec314..9f91ded48d0 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -358,7 +358,7 @@ bravia-tv==1.0.1 broadlink==0.13.0 # homeassistant.components.brother -brother==0.1.9 +brother==0.1.11 # homeassistant.components.brottsplatskartan brottsplatskartan==0.0.1 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 0c0cbe43485..159cb04885e 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -140,7 +140,7 @@ bomradarloop==0.1.4 broadlink==0.13.0 # homeassistant.components.brother -brother==0.1.9 +brother==0.1.11 # homeassistant.components.buienradar buienradar==1.0.4 diff --git a/tests/fixtures/brother_printer_data.json b/tests/fixtures/brother_printer_data.json index f4c36d988b1..a70d87673d0 100644 --- a/tests/fixtures/brother_printer_data.json +++ b/tests/fixtures/brother_printer_data.json @@ -71,5 +71,6 @@ "a60100a70100a0" ], "1.3.6.1.4.1.2435.2.3.9.4.2.1.5.5.1.0": "0123456789", - "1.3.6.1.4.1.2435.2.3.9.4.2.1.5.4.5.2.0": "WAITING " + "1.3.6.1.4.1.2435.2.3.9.4.2.1.5.4.5.2.0": "WAITING ", + "1.3.6.1.2.1.43.7.1.1.4.1.1": "2004" } \ No newline at end of file From 252c724602cd580b35da5263c27fe150449abd5b Mon Sep 17 00:00:00 2001 From: Martin Hjelmare Date: Thu, 2 Apr 2020 18:52:46 +0200 Subject: [PATCH 07/63] Clarify light reproduce state deprecation warning (#33531) --- homeassistant/components/light/reproduce_state.py | 10 +++++++--- tests/components/light/test_reproduce_state.py | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/light/reproduce_state.py b/homeassistant/components/light/reproduce_state.py index 59a4b0306d0..9a6b22b51a2 100644 --- a/homeassistant/components/light/reproduce_state.py +++ b/homeassistant/components/light/reproduce_state.py @@ -64,7 +64,10 @@ DEPRECATED_GROUP = [ ATTR_TRANSITION, ] -DEPRECATION_WARNING = "The use of other attributes than device state attributes is deprecated and will be removed in a future release. Read the logs for further details: https://www.home-assistant.io/integrations/scene/" +DEPRECATION_WARNING = ( + "The use of other attributes than device state attributes is deprecated and will be removed in a future release. " + "Invalid attributes are %s. Read the logs for further details: https://www.home-assistant.io/integrations/scene/" +) async def _async_reproduce_state( @@ -84,8 +87,9 @@ async def _async_reproduce_state( return # Warn if deprecated attributes are used - if any(attr in DEPRECATED_GROUP for attr in state.attributes): - _LOGGER.warning(DEPRECATION_WARNING) + deprecated_attrs = [attr for attr in state.attributes if attr in DEPRECATED_GROUP] + if deprecated_attrs: + _LOGGER.warning(DEPRECATION_WARNING, deprecated_attrs) # Return if we are already at the right state. if cur_state.state == state.state and all( diff --git a/tests/components/light/test_reproduce_state.py b/tests/components/light/test_reproduce_state.py index 250a0fe26a8..1c40f352ff0 100644 --- a/tests/components/light/test_reproduce_state.py +++ b/tests/components/light/test_reproduce_state.py @@ -166,4 +166,4 @@ async def test_deprecation_warning(hass, caplog): [State("light.entity_off", "on", {"brightness_pct": 80})], blocking=True ) assert len(turn_on_calls) == 1 - assert DEPRECATION_WARNING in caplog.text + assert DEPRECATION_WARNING % ["brightness_pct"] in caplog.text From 08b0c1178be1421ba6abea283622efee54a69871 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Thu, 2 Apr 2020 18:52:05 +0200 Subject: [PATCH 08/63] Fix MQTT cleanup regression from #32184. (#33532) --- homeassistant/components/mqtt/__init__.py | 21 +++++++++++++-------- tests/ignore_uncaught_exceptions.py | 4 ---- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/homeassistant/components/mqtt/__init__.py b/homeassistant/components/mqtt/__init__.py index bc59be0d1f3..734f67906ce 100644 --- a/homeassistant/components/mqtt/__init__.py +++ b/homeassistant/components/mqtt/__init__.py @@ -1162,7 +1162,7 @@ class MqttAvailability(Entity): async def cleanup_device_registry(hass, device_id): - """Remove device registry entry if there are no entities or triggers.""" + """Remove device registry entry if there are no remaining entities or triggers.""" # Local import to avoid circular dependencies from . import device_trigger @@ -1196,8 +1196,12 @@ class MqttDiscoveryUpdate(Entity): self._discovery_data[ATTR_DISCOVERY_HASH] if self._discovery_data else None ) - async def async_remove_from_registry(self) -> None: - """Remove entity from entity registry.""" + async def _async_remove_state_and_registry_entry(self) -> None: + """Remove entity's state and entity registry entry. + + Remove entity from entity registry if it is registered, this also removes the state. + If the entity is not in the entity registry, just remove the state. + """ entity_registry = ( await self.hass.helpers.entity_registry.async_get_registry() ) @@ -1205,6 +1209,8 @@ class MqttDiscoveryUpdate(Entity): entity_entry = entity_registry.async_get(self.entity_id) entity_registry.async_remove(self.entity_id) await cleanup_device_registry(self.hass, entity_entry.device_id) + else: + await self.async_remove() @callback async def discovery_callback(payload): @@ -1216,9 +1222,8 @@ class MqttDiscoveryUpdate(Entity): if not payload: # Empty payload: Remove component _LOGGER.info("Removing component: %s", self.entity_id) - self._cleanup_on_remove() - await async_remove_from_registry(self) - await self.async_remove() + self._cleanup_discovery_on_remove() + await _async_remove_state_and_registry_entry(self) elif self._discovery_update: # Non-empty payload: Notify component _LOGGER.info("Updating component: %s", self.entity_id) @@ -1246,9 +1251,9 @@ class MqttDiscoveryUpdate(Entity): async def async_will_remove_from_hass(self) -> None: """Stop listening to signal and cleanup discovery data..""" - self._cleanup_on_remove() + self._cleanup_discovery_on_remove() - def _cleanup_on_remove(self) -> None: + def _cleanup_discovery_on_remove(self) -> None: """Stop listening to signal and cleanup discovery data.""" if self._discovery_data and not self._removed_from_hass: debug_info.remove_entity_data(self.hass, self.entity_id) diff --git a/tests/ignore_uncaught_exceptions.py b/tests/ignore_uncaught_exceptions.py index 428de1a683c..df623a2fc20 100644 --- a/tests/ignore_uncaught_exceptions.py +++ b/tests/ignore_uncaught_exceptions.py @@ -68,10 +68,6 @@ IGNORE_UNCAUGHT_EXCEPTIONS = [ "tests.components.mqtt.test_init", "test_setup_with_tls_config_of_v1_under_python36_only_uses_v1", ), - ("tests.components.mqtt.test_light", "test_entity_device_info_remove"), - ("tests.components.mqtt.test_light_json", "test_entity_device_info_remove"), - ("tests.components.mqtt.test_light_template", "test_entity_device_info_remove"), - ("tests.components.mqtt.test_switch", "test_entity_device_info_remove"), ("tests.components.qwikswitch.test_init", "test_binary_sensor_device"), ("tests.components.qwikswitch.test_init", "test_sensor_device"), ("tests.components.rflink.test_init", "test_send_command_invalid_arguments"), From 96dc0319d89441ab4897003886c35285b017d99d Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 2 Apr 2020 11:46:10 -0500 Subject: [PATCH 09/63] Ensure harmony hub is ready before importing (#33537) If the harmony hub was not ready for connection or was busy when importing from yaml, the import validation would fail would not be retried. To mitigate this scenario we now do the validation in async_setup_platform which allows us to raise PlatformNotReady so we can retry later. --- .../components/harmony/config_flow.py | 58 +++++++------------ homeassistant/components/harmony/remote.py | 27 ++++++++- homeassistant/components/harmony/util.py | 44 +++++++++++++- tests/components/harmony/test_config_flow.py | 17 +++--- 4 files changed, 95 insertions(+), 51 deletions(-) diff --git a/homeassistant/components/harmony/config_flow.py b/homeassistant/components/harmony/config_flow.py index ff7b47d6010..9d9c9dfb8e9 100644 --- a/homeassistant/components/harmony/config_flow.py +++ b/homeassistant/components/harmony/config_flow.py @@ -2,11 +2,9 @@ import logging from urllib.parse import urlparse -import aioharmony.exceptions as harmony_exceptions -from aioharmony.harmonyapi import HarmonyAPI import voluptuous as vol -from homeassistant import config_entries, core, exceptions +from homeassistant import config_entries, exceptions from homeassistant.components import ssdp from homeassistant.components.remote import ( ATTR_ACTIVITY, @@ -17,7 +15,11 @@ from homeassistant.const import CONF_HOST, CONF_NAME from homeassistant.core import callback from .const import DOMAIN, UNIQUE_ID -from .util import find_unique_id_for_remote +from .util import ( + find_best_name_for_remote, + find_unique_id_for_remote, + get_harmony_client_if_available, +) _LOGGER = logging.getLogger(__name__) @@ -26,43 +28,19 @@ DATA_SCHEMA = vol.Schema( ) -async def get_harmony_client_if_available(hass: core.HomeAssistant, ip_address): - """Connect to a harmony hub and fetch info.""" - harmony = HarmonyAPI(ip_address=ip_address) - - try: - if not await harmony.connect(): - await harmony.close() - return None - except harmony_exceptions.TimeOut: - return None - - await harmony.close() - - return harmony - - -async def validate_input(hass: core.HomeAssistant, data): +async def validate_input(data): """Validate the user input allows us to connect. Data has the keys from DATA_SCHEMA with values provided by the user. """ - harmony = await get_harmony_client_if_available(hass, data[CONF_HOST]) + harmony = await get_harmony_client_if_available(data[CONF_HOST]) if not harmony: raise CannotConnect - unique_id = find_unique_id_for_remote(harmony) - - # As a last resort we get the name from the harmony client - # in the event a name was not provided. harmony.name is - # usually the ip address but it can be an empty string. - if CONF_NAME not in data or data[CONF_NAME] is None or data[CONF_NAME] == "": - data[CONF_NAME] = harmony.name - return { - CONF_NAME: data[CONF_NAME], + CONF_NAME: find_best_name_for_remote(data, harmony), CONF_HOST: data[CONF_HOST], - UNIQUE_ID: unique_id, + UNIQUE_ID: find_unique_id_for_remote(harmony), } @@ -82,7 +60,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): if user_input is not None: try: - validated = await validate_input(self.hass, user_input) + validated = await validate_input(user_input) except CannotConnect: errors["base"] = "cannot_connect" except Exception: # pylint: disable=broad-except @@ -116,9 +94,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): CONF_NAME: friendly_name, } - harmony = await get_harmony_client_if_available( - self.hass, self.harmony_config[CONF_HOST] - ) + harmony = await get_harmony_client_if_available(parsed_url.hostname) if harmony: unique_id = find_unique_id_for_remote(harmony) @@ -150,9 +126,15 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): }, ) - async def async_step_import(self, user_input): + async def async_step_import(self, validated_input): """Handle import.""" - return await self.async_step_user(user_input) + await self.async_set_unique_id(validated_input[UNIQUE_ID]) + self._abort_if_unique_id_configured() + # Everything was validated in remote async_setup_platform + # all we do now is create. + return await self._async_create_entry_from_valid_input( + validated_input, validated_input + ) @staticmethod @callback diff --git a/homeassistant/components/harmony/remote.py b/homeassistant/components/harmony/remote.py index 7d23e15a4e7..1d0ed66415c 100644 --- a/homeassistant/components/harmony/remote.py +++ b/homeassistant/components/harmony/remote.py @@ -24,6 +24,7 @@ from homeassistant.components.remote import ( from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry from homeassistant.const import ATTR_ENTITY_ID, CONF_HOST, CONF_NAME from homeassistant.core import HomeAssistant +from homeassistant.exceptions import PlatformNotReady import homeassistant.helpers.config_validation as cv from homeassistant.helpers.dispatcher import async_dispatcher_connect @@ -33,6 +34,13 @@ from .const import ( HARMONY_OPTIONS_UPDATE, SERVICE_CHANGE_CHANNEL, SERVICE_SYNC, + UNIQUE_ID, +) +from .util import ( + find_best_name_for_remote, + find_matching_config_entries_for_host, + find_unique_id_for_remote, + get_harmony_client_if_available, ) _LOGGER = logging.getLogger(__name__) @@ -51,6 +59,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( extra=vol.ALLOW_EXTRA, ) + HARMONY_SYNC_SCHEMA = vol.Schema({vol.Optional(ATTR_ENTITY_ID): cv.entity_ids}) HARMONY_CHANGE_CHANNEL_SCHEMA = vol.Schema( @@ -68,9 +77,25 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info= # Now handled by ssdp in the config flow return + if find_matching_config_entries_for_host(hass, config[CONF_HOST]): + return + + # We do the validation to verify we can connect + # so we can raise PlatformNotReady to force + # a retry so we can avoid a scenario where the config + # entry cannot be created via import because hub + # is not yet ready. + harmony = await get_harmony_client_if_available(config[CONF_HOST]) + if not harmony: + raise PlatformNotReady + + validated_config = config.copy() + validated_config[UNIQUE_ID] = find_unique_id_for_remote(harmony) + validated_config[CONF_NAME] = find_best_name_for_remote(config, harmony) + hass.async_create_task( hass.config_entries.flow.async_init( - DOMAIN, context={"source": SOURCE_IMPORT}, data=config + DOMAIN, context={"source": SOURCE_IMPORT}, data=validated_config ) ) diff --git a/homeassistant/components/harmony/util.py b/homeassistant/components/harmony/util.py index 5f7e46510f9..69ed44cb7da 100644 --- a/homeassistant/components/harmony/util.py +++ b/homeassistant/components/harmony/util.py @@ -1,8 +1,13 @@ """The Logitech Harmony Hub integration utils.""" -from aioharmony.harmonyapi import HarmonyAPI as HarmonyClient +import aioharmony.exceptions as harmony_exceptions +from aioharmony.harmonyapi import HarmonyAPI + +from homeassistant.const import CONF_HOST, CONF_NAME + +from .const import DOMAIN -def find_unique_id_for_remote(harmony: HarmonyClient): +def find_unique_id_for_remote(harmony: HarmonyAPI): """Find the unique id for both websocket and xmpp clients.""" websocket_unique_id = harmony.hub_config.info.get("activeRemoteId") if websocket_unique_id is not None: @@ -10,3 +15,38 @@ def find_unique_id_for_remote(harmony: HarmonyClient): # fallback to the xmpp unique id if websocket is not available return harmony.config["global"]["timeStampHash"].split(";")[-1] + + +def find_best_name_for_remote(data: dict, harmony: HarmonyAPI): + """Find the best name from config or fallback to the remote.""" + # As a last resort we get the name from the harmony client + # in the event a name was not provided. harmony.name is + # usually the ip address but it can be an empty string. + if CONF_NAME not in data or data[CONF_NAME] is None or data[CONF_NAME] == "": + return harmony.name + + return data[CONF_NAME] + + +async def get_harmony_client_if_available(ip_address: str): + """Connect to a harmony hub and fetch info.""" + harmony = HarmonyAPI(ip_address=ip_address) + + try: + if not await harmony.connect(): + await harmony.close() + return None + except harmony_exceptions.TimeOut: + return None + + await harmony.close() + + return harmony + + +def find_matching_config_entries_for_host(hass, host): + """Search existing config entries for one matching the host.""" + for entry in hass.config_entries.async_entries(DOMAIN): + if entry.data[CONF_HOST] == host: + return entry + return None diff --git a/tests/components/harmony/test_config_flow.py b/tests/components/harmony/test_config_flow.py index 18c0825b6a1..30421756d22 100644 --- a/tests/components/harmony/test_config_flow.py +++ b/tests/components/harmony/test_config_flow.py @@ -25,8 +25,7 @@ async def test_user_form(hass): harmonyapi = _get_mock_harmonyapi(connect=True) with patch( - "homeassistant.components.harmony.config_flow.HarmonyAPI", - return_value=harmonyapi, + "homeassistant.components.harmony.util.HarmonyAPI", return_value=harmonyapi, ), patch( "homeassistant.components.harmony.async_setup", return_value=True ) as mock_setup, patch( @@ -53,8 +52,7 @@ async def test_form_import(hass): harmonyapi = _get_mock_harmonyapi(connect=True) with patch( - "homeassistant.components.harmony.config_flow.HarmonyAPI", - return_value=harmonyapi, + "homeassistant.components.harmony.util.HarmonyAPI", return_value=harmonyapi, ), patch( "homeassistant.components.harmony.async_setup", return_value=True ) as mock_setup, patch( @@ -68,9 +66,11 @@ async def test_form_import(hass): "name": "friend", "activity": "Watch TV", "delay_secs": 0.9, + "unique_id": "555234534543", }, ) + assert result["result"].unique_id == "555234534543" assert result["type"] == "create_entry" assert result["title"] == "friend" assert result["data"] == { @@ -94,8 +94,7 @@ async def test_form_ssdp(hass): harmonyapi = _get_mock_harmonyapi(connect=True) with patch( - "homeassistant.components.harmony.config_flow.HarmonyAPI", - return_value=harmonyapi, + "homeassistant.components.harmony.util.HarmonyAPI", return_value=harmonyapi, ): result = await hass.config_entries.flow.async_init( DOMAIN, @@ -114,8 +113,7 @@ async def test_form_ssdp(hass): } with patch( - "homeassistant.components.harmony.config_flow.HarmonyAPI", - return_value=harmonyapi, + "homeassistant.components.harmony.util.HarmonyAPI", return_value=harmonyapi, ), patch( "homeassistant.components.harmony.async_setup", return_value=True ) as mock_setup, patch( @@ -141,8 +139,7 @@ async def test_form_cannot_connect(hass): ) with patch( - "homeassistant.components.harmony.config_flow.HarmonyAPI", - side_effect=CannotConnect, + "homeassistant.components.harmony.util.HarmonyAPI", side_effect=CannotConnect, ): result2 = await hass.config_entries.flow.async_configure( result["flow_id"], From 060c6c89e34789de4681179d552a7f4fa967e266 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 2 Apr 2020 16:09:35 -0500 Subject: [PATCH 10/63] Bump HAP-python to 2.8.0 (#33539) --- homeassistant/components/homekit/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/homekit/manifest.json b/homeassistant/components/homekit/manifest.json index bbbc6561a87..eb8d16d0c0a 100644 --- a/homeassistant/components/homekit/manifest.json +++ b/homeassistant/components/homekit/manifest.json @@ -2,7 +2,7 @@ "domain": "homekit", "name": "HomeKit", "documentation": "https://www.home-assistant.io/integrations/homekit", - "requirements": ["HAP-python==2.7.0"], + "requirements": ["HAP-python==2.8.0"], "dependencies": [], "codeowners": [] } diff --git a/requirements_all.txt b/requirements_all.txt index 9f91ded48d0..b13d21a1b9f 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -35,7 +35,7 @@ Adafruit-SHT31==1.0.2 # Adafruit_BBIO==1.1.1 # homeassistant.components.homekit -HAP-python==2.7.0 +HAP-python==2.8.0 # homeassistant.components.mastodon Mastodon.py==1.5.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 159cb04885e..1267dad50e7 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -4,7 +4,7 @@ -r requirements_test.txt # homeassistant.components.homekit -HAP-python==2.7.0 +HAP-python==2.8.0 # homeassistant.components.mobile_app # homeassistant.components.owntracks From 8f233b822fd5caa2fd401a1a1bc13cfef095c1df Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 2 Apr 2020 13:02:59 -0700 Subject: [PATCH 11/63] Mark new gate device class as 2FA (#33541) --- homeassistant/components/google_assistant/trait.py | 6 +++++- tests/components/google_assistant/test_trait.py | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/google_assistant/trait.py b/homeassistant/components/google_assistant/trait.py index 1c47be45651..2bc5f5040d4 100644 --- a/homeassistant/components/google_assistant/trait.py +++ b/homeassistant/components/google_assistant/trait.py @@ -1247,7 +1247,11 @@ class OpenCloseTrait(_Trait): """ # Cover device classes that require 2FA - COVER_2FA = (cover.DEVICE_CLASS_DOOR, cover.DEVICE_CLASS_GARAGE) + COVER_2FA = ( + cover.DEVICE_CLASS_DOOR, + cover.DEVICE_CLASS_GARAGE, + cover.DEVICE_CLASS_GATE, + ) name = TRAIT_OPENCLOSE commands = [COMMAND_OPENCLOSE] diff --git a/tests/components/google_assistant/test_trait.py b/tests/components/google_assistant/test_trait.py index ec1848bf1ed..d0ed9a9d33c 100644 --- a/tests/components/google_assistant/test_trait.py +++ b/tests/components/google_assistant/test_trait.py @@ -1532,7 +1532,8 @@ async def test_openclose_cover_no_position(hass): @pytest.mark.parametrize( - "device_class", (cover.DEVICE_CLASS_DOOR, cover.DEVICE_CLASS_GARAGE) + "device_class", + (cover.DEVICE_CLASS_DOOR, cover.DEVICE_CLASS_GARAGE, cover.DEVICE_CLASS_GATE), ) async def test_openclose_cover_secure(hass, device_class): """Test OpenClose trait support for cover domain.""" From a8da03912eb3238ff67afea5ffa613855e45839e Mon Sep 17 00:00:00 2001 From: jjlawren Date: Thu, 2 Apr 2020 18:47:58 -0500 Subject: [PATCH 12/63] Temporary Plex play_media workaround (#33542) * Temporary playMedia() workaround on plexapi 3.3.0 * Use constants for strings * Style cleanup --- homeassistant/components/plex/media_player.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/plex/media_player.py b/homeassistant/components/plex/media_player.py index 1be06876baf..5325544bf15 100644 --- a/homeassistant/components/plex/media_player.py +++ b/homeassistant/components/plex/media_player.py @@ -11,6 +11,7 @@ from homeassistant.components.media_player.const import ( MEDIA_TYPE_MOVIE, MEDIA_TYPE_MUSIC, MEDIA_TYPE_TVSHOW, + MEDIA_TYPE_VIDEO, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PLAY, @@ -575,9 +576,11 @@ class PlexMediaPlayer(MediaPlayerDevice): shuffle = src.get("shuffle", 0) media = None + command_media_type = MEDIA_TYPE_VIDEO if media_type == "MUSIC": media = self._get_music_media(library, src) + command_media_type = MEDIA_TYPE_MUSIC elif media_type == "EPISODE": media = self._get_tv_media(library, src) elif media_type == "PLAYLIST": @@ -591,7 +594,7 @@ class PlexMediaPlayer(MediaPlayerDevice): playqueue = self.plex_server.create_playqueue(media, shuffle=shuffle) try: - self.device.playMedia(playqueue) + self.device.playMedia(playqueue, type=command_media_type) except ParseError: # Temporary workaround for Plexamp / plexapi issue pass From d47cef4ba29628314c6fc28c228af126acff8cb0 Mon Sep 17 00:00:00 2001 From: Chris Talkington Date: Thu, 2 Apr 2020 15:46:31 -0500 Subject: [PATCH 13/63] Bump pyipp to 0.8.2 (#33544) --- homeassistant/components/ipp/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/ipp/manifest.json b/homeassistant/components/ipp/manifest.json index beb6679e308..2eae581bdc7 100644 --- a/homeassistant/components/ipp/manifest.json +++ b/homeassistant/components/ipp/manifest.json @@ -2,7 +2,7 @@ "domain": "ipp", "name": "Internet Printing Protocol (IPP)", "documentation": "https://www.home-assistant.io/integrations/ipp", - "requirements": ["pyipp==0.8.1"], + "requirements": ["pyipp==0.8.2"], "dependencies": [], "codeowners": ["@ctalkington"], "config_flow": true, diff --git a/requirements_all.txt b/requirements_all.txt index b13d21a1b9f..e9c6e902465 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1336,7 +1336,7 @@ pyintesishome==1.7.1 pyipma==2.0.5 # homeassistant.components.ipp -pyipp==0.8.1 +pyipp==0.8.2 # homeassistant.components.iqvia pyiqvia==0.2.1 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 1267dad50e7..4302a522eb5 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -519,7 +519,7 @@ pyicloud==0.9.6.1 pyipma==2.0.5 # homeassistant.components.ipp -pyipp==0.8.1 +pyipp==0.8.2 # homeassistant.components.iqvia pyiqvia==0.2.1 From 6f449cd383edbd4d3630297cb725f923732b2906 Mon Sep 17 00:00:00 2001 From: Chris Talkington Date: Thu, 2 Apr 2020 19:09:38 -0500 Subject: [PATCH 14/63] Update to pyipp==0.8.3 (#33554) * Update manifest.json * Update requirements_all.txt * Update requirements_test_all.txt --- homeassistant/components/ipp/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/ipp/manifest.json b/homeassistant/components/ipp/manifest.json index 2eae581bdc7..0cb788eeee7 100644 --- a/homeassistant/components/ipp/manifest.json +++ b/homeassistant/components/ipp/manifest.json @@ -2,7 +2,7 @@ "domain": "ipp", "name": "Internet Printing Protocol (IPP)", "documentation": "https://www.home-assistant.io/integrations/ipp", - "requirements": ["pyipp==0.8.2"], + "requirements": ["pyipp==0.8.3"], "dependencies": [], "codeowners": ["@ctalkington"], "config_flow": true, diff --git a/requirements_all.txt b/requirements_all.txt index e9c6e902465..fa917932fbe 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1336,7 +1336,7 @@ pyintesishome==1.7.1 pyipma==2.0.5 # homeassistant.components.ipp -pyipp==0.8.2 +pyipp==0.8.3 # homeassistant.components.iqvia pyiqvia==0.2.1 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 4302a522eb5..a4cf4e0176e 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -519,7 +519,7 @@ pyicloud==0.9.6.1 pyipma==2.0.5 # homeassistant.components.ipp -pyipp==0.8.2 +pyipp==0.8.3 # homeassistant.components.iqvia pyiqvia==0.2.1 From e27d5cd9fbd4efd53b4681f4260f1c8af189ed60 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 2 Apr 2020 17:12:52 -0700 Subject: [PATCH 15/63] Bumped version to 0.108.0b1 --- homeassistant/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 0408a891286..1bf7a4f6441 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -1,7 +1,7 @@ """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 MINOR_VERSION = 108 -PATCH_VERSION = "0b0" +PATCH_VERSION = "0b1" __short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__ = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER = (3, 7, 0) From e4e0c37a8c4a2b5735cce379568e4e7129b6d8f5 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 2 Apr 2020 20:06:13 -0500 Subject: [PATCH 16/63] Use homekit service callbacks for lights to resolve out of sync states (#32348) * Switch homekit lights to use service callbacks Service callbacks allow us to get the on/off, brightness, etc all in one call so we remove all the complexity that was previously needed to handle the out of sync states We now get the on event and brightness event at the same time which allows us to prevent lights from flashing up to 100% before the requested brightness. * Fix STATE_OFF -> STATE_ON,brightness:0 --- .../components/homekit/type_lights.py | 159 ++++----- tests/components/homekit/test_type_lights.py | 312 ++++++++++++++++-- 2 files changed, 343 insertions(+), 128 deletions(-) diff --git a/homeassistant/components/homekit/type_lights.py b/homeassistant/components/homekit/type_lights.py index 734568606b2..1720c2c58c8 100644 --- a/homeassistant/components/homekit/type_lights.py +++ b/homeassistant/components/homekit/type_lights.py @@ -25,7 +25,7 @@ from homeassistant.const import ( ) from . import TYPES -from .accessories import HomeAccessory, debounce +from .accessories import HomeAccessory from .const import ( CHAR_BRIGHTNESS, CHAR_COLOR_TEMPERATURE, @@ -52,15 +52,6 @@ class Light(HomeAccessory): def __init__(self, *args): """Initialize a new Light accessory object.""" super().__init__(*args, category=CATEGORY_LIGHTBULB) - self._flag = { - CHAR_ON: False, - CHAR_BRIGHTNESS: False, - CHAR_HUE: False, - CHAR_SATURATION: False, - CHAR_COLOR_TEMPERATURE: False, - RGB_COLOR: False, - } - self._state = 0 self.chars = [] self._features = self.hass.states.get(self.entity_id).attributes.get( @@ -82,17 +73,14 @@ class Light(HomeAccessory): self.chars.append(CHAR_COLOR_TEMPERATURE) serv_light = self.add_preload_service(SERV_LIGHTBULB, self.chars) - self.char_on = serv_light.configure_char( - CHAR_ON, value=self._state, setter_callback=self.set_state - ) + + self.char_on = serv_light.configure_char(CHAR_ON, value=0) if CHAR_BRIGHTNESS in self.chars: # Initial value is set to 100 because 0 is a special value (off). 100 is # an arbitrary non-zero value. It is updated immediately by update_state # to set to the correct initial value. - self.char_brightness = serv_light.configure_char( - CHAR_BRIGHTNESS, value=100, setter_callback=self.set_brightness - ) + self.char_brightness = serv_light.configure_char(CHAR_BRIGHTNESS, value=100) if CHAR_COLOR_TEMPERATURE in self.chars: min_mireds = self.hass.states.get(self.entity_id).attributes.get( @@ -105,133 +93,98 @@ class Light(HomeAccessory): CHAR_COLOR_TEMPERATURE, value=min_mireds, properties={PROP_MIN_VALUE: min_mireds, PROP_MAX_VALUE: max_mireds}, - setter_callback=self.set_color_temperature, ) if CHAR_HUE in self.chars: - self.char_hue = serv_light.configure_char( - CHAR_HUE, value=0, setter_callback=self.set_hue - ) + self.char_hue = serv_light.configure_char(CHAR_HUE, value=0) if CHAR_SATURATION in self.chars: - self.char_saturation = serv_light.configure_char( - CHAR_SATURATION, value=75, setter_callback=self.set_saturation - ) + self.char_saturation = serv_light.configure_char(CHAR_SATURATION, value=75) - def set_state(self, value): - """Set state if call came from HomeKit.""" - if self._state == value: - return + serv_light.setter_callback = self._set_chars - _LOGGER.debug("%s: Set state to %d", self.entity_id, value) - self._flag[CHAR_ON] = True + def _set_chars(self, char_values): + _LOGGER.debug("_set_chars: %s", char_values) + events = [] + service = SERVICE_TURN_ON params = {ATTR_ENTITY_ID: self.entity_id} - service = SERVICE_TURN_ON if value == 1 else SERVICE_TURN_OFF - self.call_service(DOMAIN, service, params) + if CHAR_ON in char_values: + if not char_values[CHAR_ON]: + service = SERVICE_TURN_OFF + events.append(f"Set state to {char_values[CHAR_ON]}") - @debounce - def set_brightness(self, value): - """Set brightness if call came from HomeKit.""" - _LOGGER.debug("%s: Set brightness to %d", self.entity_id, value) - self._flag[CHAR_BRIGHTNESS] = True - if value == 0: - self.set_state(0) # Turn off light - return - params = {ATTR_ENTITY_ID: self.entity_id, ATTR_BRIGHTNESS_PCT: value} - self.call_service(DOMAIN, SERVICE_TURN_ON, params, f"brightness at {value}%") + if CHAR_BRIGHTNESS in char_values: + if char_values[CHAR_BRIGHTNESS] == 0: + events[-1] = f"Set state to 0" + service = SERVICE_TURN_OFF + else: + params[ATTR_BRIGHTNESS_PCT] = char_values[CHAR_BRIGHTNESS] + events.append(f"brightness at {char_values[CHAR_BRIGHTNESS]}%") - def set_color_temperature(self, value): - """Set color temperature if call came from HomeKit.""" - _LOGGER.debug("%s: Set color temp to %s", self.entity_id, value) - self._flag[CHAR_COLOR_TEMPERATURE] = True - params = {ATTR_ENTITY_ID: self.entity_id, ATTR_COLOR_TEMP: value} - self.call_service( - DOMAIN, SERVICE_TURN_ON, params, f"color temperature at {value}" - ) + if CHAR_COLOR_TEMPERATURE in char_values: + params[ATTR_COLOR_TEMP] = char_values[CHAR_COLOR_TEMPERATURE] + events.append(f"color temperature at {char_values[CHAR_COLOR_TEMPERATURE]}") - def set_saturation(self, value): - """Set saturation if call came from HomeKit.""" - _LOGGER.debug("%s: Set saturation to %d", self.entity_id, value) - self._flag[CHAR_SATURATION] = True - self._saturation = value - self.set_color() - - def set_hue(self, value): - """Set hue if call came from HomeKit.""" - _LOGGER.debug("%s: Set hue to %d", self.entity_id, value) - self._flag[CHAR_HUE] = True - self._hue = value - self.set_color() - - def set_color(self): - """Set color if call came from HomeKit.""" if ( self._features & SUPPORT_COLOR - and self._flag[CHAR_HUE] - and self._flag[CHAR_SATURATION] + and CHAR_HUE in char_values + and CHAR_SATURATION in char_values ): - color = (self._hue, self._saturation) + color = (char_values[CHAR_HUE], char_values[CHAR_SATURATION]) _LOGGER.debug("%s: Set hs_color to %s", self.entity_id, color) - self._flag.update( - {CHAR_HUE: False, CHAR_SATURATION: False, RGB_COLOR: True} - ) - params = {ATTR_ENTITY_ID: self.entity_id, ATTR_HS_COLOR: color} - self.call_service(DOMAIN, SERVICE_TURN_ON, params, f"set color at {color}") + params[ATTR_HS_COLOR] = color + events.append(f"set color at {color}") + + self.call_service(DOMAIN, service, params, ", ".join(events)) def update_state(self, new_state): """Update light after state change.""" # Handle State state = new_state.state - if state in (STATE_ON, STATE_OFF): - self._state = 1 if state == STATE_ON else 0 - if not self._flag[CHAR_ON] and self.char_on.value != self._state: - self.char_on.set_value(self._state) - self._flag[CHAR_ON] = False + if state == STATE_ON and self.char_on.value != 1: + self.char_on.set_value(1) + elif state == STATE_OFF and self.char_on.value != 0: + self.char_on.set_value(0) # Handle Brightness if CHAR_BRIGHTNESS in self.chars: brightness = new_state.attributes.get(ATTR_BRIGHTNESS) - if not self._flag[CHAR_BRIGHTNESS] and isinstance(brightness, int): + if isinstance(brightness, int): brightness = round(brightness / 255 * 100, 0) + # The homeassistant component might report its brightness as 0 but is + # not off. But 0 is a special value in homekit. When you turn on a + # homekit accessory it will try to restore the last brightness state + # which will be the last value saved by char_brightness.set_value. + # But if it is set to 0, HomeKit will update the brightness to 100 as + # it thinks 0 is off. + # + # Therefore, if the the brightness is 0 and the device is still on, + # the brightness is mapped to 1 otherwise the update is ignored in + # order to avoid this incorrect behavior. + if brightness == 0 and state == STATE_ON: + brightness = 1 if self.char_brightness.value != brightness: - # The homeassistant component might report its brightness as 0 but is - # not off. But 0 is a special value in homekit. When you turn on a - # homekit accessory it will try to restore the last brightness state - # which will be the last value saved by char_brightness.set_value. - # But if it is set to 0, HomeKit will update the brightness to 100 as - # it thinks 0 is off. - # - # Therefore, if the the brightness is 0 and the device is still on, - # the brightness is mapped to 1 otherwise the update is ignored in - # order to avoid this incorrect behavior. - if brightness == 0: - if state == STATE_ON: - self.char_brightness.set_value(1) - else: - self.char_brightness.set_value(brightness) - self._flag[CHAR_BRIGHTNESS] = False + self.char_brightness.set_value(brightness) # Handle color temperature if CHAR_COLOR_TEMPERATURE in self.chars: color_temperature = new_state.attributes.get(ATTR_COLOR_TEMP) if ( - not self._flag[CHAR_COLOR_TEMPERATURE] - and isinstance(color_temperature, int) + isinstance(color_temperature, int) and self.char_color_temperature.value != color_temperature ): self.char_color_temperature.set_value(color_temperature) - self._flag[CHAR_COLOR_TEMPERATURE] = False # Handle Color if CHAR_SATURATION in self.chars and CHAR_HUE in self.chars: hue, saturation = new_state.attributes.get(ATTR_HS_COLOR, (None, None)) if ( - not self._flag[RGB_COLOR] - and (hue != self._hue or saturation != self._saturation) - and isinstance(hue, (int, float)) + isinstance(hue, (int, float)) and isinstance(saturation, (int, float)) + and ( + hue != self.char_hue.value + or saturation != self.char_saturation.value + ) ): self.char_hue.set_value(hue) self.char_saturation.set_value(saturation) - self._hue, self._saturation = (hue, saturation) - self._flag[RGB_COLOR] = False diff --git a/tests/components/homekit/test_type_lights.py b/tests/components/homekit/test_type_lights.py index 8834f730bce..888ad87a848 100644 --- a/tests/components/homekit/test_type_lights.py +++ b/tests/components/homekit/test_type_lights.py @@ -1,6 +1,9 @@ """Test different accessory types: Lights.""" from collections import namedtuple +from asynctest import patch +from pyhap.accessory_driver import AccessoryDriver +from pyhap.const import HAP_REPR_AID, HAP_REPR_CHARS, HAP_REPR_IID, HAP_REPR_VALUE import pytest from homeassistant.components.homekit.const import ATTR_VALUE @@ -30,6 +33,15 @@ from tests.common import async_mock_service from tests.components.homekit.common import patch_debounce +@pytest.fixture +def driver(): + """Patch AccessoryDriver without zeroconf or HAPServer.""" + with patch("pyhap.accessory_driver.HAPServer"), patch( + "pyhap.accessory_driver.Zeroconf" + ), patch("pyhap.accessory_driver.AccessoryDriver.persist"): + yield AccessoryDriver() + + @pytest.fixture(scope="module") def cls(): """Patch debounce decorator during import of type_lights.""" @@ -43,15 +55,16 @@ def cls(): patcher.stop() -async def test_light_basic(hass, hk_driver, cls, events): +async def test_light_basic(hass, hk_driver, cls, events, driver): """Test light with char state.""" entity_id = "light.demo" hass.states.async_set(entity_id, STATE_ON, {ATTR_SUPPORTED_FEATURES: 0}) await hass.async_block_till_done() - acc = cls.light(hass, hk_driver, "Light", entity_id, 2, None) + acc = cls.light(hass, hk_driver, "Light", entity_id, 1, None) + driver.add_accessory(acc) - assert acc.aid == 2 + assert acc.aid == 1 assert acc.category == 5 # Lightbulb assert acc.char_on.value == 0 @@ -75,25 +88,43 @@ async def test_light_basic(hass, hk_driver, cls, events): call_turn_on = async_mock_service(hass, DOMAIN, "turn_on") call_turn_off = async_mock_service(hass, DOMAIN, "turn_off") + char_on_iid = acc.char_on.to_HAP()[HAP_REPR_IID] + + driver.set_characteristics( + { + HAP_REPR_CHARS: [ + {HAP_REPR_AID: acc.aid, HAP_REPR_IID: char_on_iid, HAP_REPR_VALUE: 1} + ] + }, + "mock_addr", + ) + await hass.async_add_job(acc.char_on.client_update_value, 1) await hass.async_block_till_done() assert call_turn_on assert call_turn_on[0].data[ATTR_ENTITY_ID] == entity_id assert len(events) == 1 - assert events[-1].data[ATTR_VALUE] is None + assert events[-1].data[ATTR_VALUE] == "Set state to 1" hass.states.async_set(entity_id, STATE_ON) await hass.async_block_till_done() - await hass.async_add_job(acc.char_on.client_update_value, 0) + driver.set_characteristics( + { + HAP_REPR_CHARS: [ + {HAP_REPR_AID: acc.aid, HAP_REPR_IID: char_on_iid, HAP_REPR_VALUE: 0} + ] + }, + "mock_addr", + ) await hass.async_block_till_done() assert call_turn_off assert call_turn_off[0].data[ATTR_ENTITY_ID] == entity_id assert len(events) == 2 - assert events[-1].data[ATTR_VALUE] is None + assert events[-1].data[ATTR_VALUE] == "Set state to 0" -async def test_light_brightness(hass, hk_driver, cls, events): +async def test_light_brightness(hass, hk_driver, cls, events, driver): """Test light with brightness.""" entity_id = "light.demo" @@ -103,11 +134,14 @@ async def test_light_brightness(hass, hk_driver, cls, events): {ATTR_SUPPORTED_FEATURES: SUPPORT_BRIGHTNESS, ATTR_BRIGHTNESS: 255}, ) await hass.async_block_till_done() - acc = cls.light(hass, hk_driver, "Light", entity_id, 2, None) + acc = cls.light(hass, hk_driver, "Light", entity_id, 1, None) + driver.add_accessory(acc) # Initial value can be anything but 0. If it is 0, it might cause HomeKit to set the # brightness to 100 when turning on a light on a freshly booted up server. assert acc.char_brightness.value != 0 + char_on_iid = acc.char_on.to_HAP()[HAP_REPR_IID] + char_brightness_iid = acc.char_brightness.to_HAP()[HAP_REPR_IID] await hass.async_add_job(acc.run) await hass.async_block_till_done() @@ -121,34 +155,88 @@ async def test_light_brightness(hass, hk_driver, cls, events): call_turn_on = async_mock_service(hass, DOMAIN, "turn_on") call_turn_off = async_mock_service(hass, DOMAIN, "turn_off") - await hass.async_add_job(acc.char_brightness.client_update_value, 20) - await hass.async_add_job(acc.char_on.client_update_value, 1) + driver.set_characteristics( + { + HAP_REPR_CHARS: [ + {HAP_REPR_AID: acc.aid, HAP_REPR_IID: char_on_iid, HAP_REPR_VALUE: 1}, + { + HAP_REPR_AID: acc.aid, + HAP_REPR_IID: char_brightness_iid, + HAP_REPR_VALUE: 20, + }, + ] + }, + "mock_addr", + ) await hass.async_block_till_done() assert call_turn_on[0] assert call_turn_on[0].data[ATTR_ENTITY_ID] == entity_id assert call_turn_on[0].data[ATTR_BRIGHTNESS_PCT] == 20 assert len(events) == 1 - assert events[-1].data[ATTR_VALUE] == f"brightness at 20{UNIT_PERCENTAGE}" + assert ( + events[-1].data[ATTR_VALUE] + == f"Set state to 1, brightness at 20{UNIT_PERCENTAGE}" + ) - await hass.async_add_job(acc.char_on.client_update_value, 1) - await hass.async_add_job(acc.char_brightness.client_update_value, 40) + driver.set_characteristics( + { + HAP_REPR_CHARS: [ + {HAP_REPR_AID: acc.aid, HAP_REPR_IID: char_on_iid, HAP_REPR_VALUE: 1}, + { + HAP_REPR_AID: acc.aid, + HAP_REPR_IID: char_brightness_iid, + HAP_REPR_VALUE: 40, + }, + ] + }, + "mock_addr", + ) await hass.async_block_till_done() assert call_turn_on[1] assert call_turn_on[1].data[ATTR_ENTITY_ID] == entity_id assert call_turn_on[1].data[ATTR_BRIGHTNESS_PCT] == 40 assert len(events) == 2 - assert events[-1].data[ATTR_VALUE] == f"brightness at 40{UNIT_PERCENTAGE}" + assert ( + events[-1].data[ATTR_VALUE] + == f"Set state to 1, brightness at 40{UNIT_PERCENTAGE}" + ) - await hass.async_add_job(acc.char_on.client_update_value, 1) - await hass.async_add_job(acc.char_brightness.client_update_value, 0) + driver.set_characteristics( + { + HAP_REPR_CHARS: [ + {HAP_REPR_AID: acc.aid, HAP_REPR_IID: char_on_iid, HAP_REPR_VALUE: 1}, + { + HAP_REPR_AID: acc.aid, + HAP_REPR_IID: char_brightness_iid, + HAP_REPR_VALUE: 0, + }, + ] + }, + "mock_addr", + ) await hass.async_block_till_done() assert call_turn_off assert call_turn_off[0].data[ATTR_ENTITY_ID] == entity_id assert len(events) == 3 - assert events[-1].data[ATTR_VALUE] is None + assert ( + events[-1].data[ATTR_VALUE] + == f"Set state to 0, brightness at 0{UNIT_PERCENTAGE}" + ) + + # 0 is a special case for homekit, see "Handle Brightness" + # in update_state + hass.states.async_set(entity_id, STATE_ON, {ATTR_BRIGHTNESS: 0}) + await hass.async_block_till_done() + assert acc.char_brightness.value == 1 + hass.states.async_set(entity_id, STATE_ON, {ATTR_BRIGHTNESS: 255}) + await hass.async_block_till_done() + assert acc.char_brightness.value == 100 + hass.states.async_set(entity_id, STATE_ON, {ATTR_BRIGHTNESS: 0}) + await hass.async_block_till_done() + assert acc.char_brightness.value == 1 -async def test_light_color_temperature(hass, hk_driver, cls, events): +async def test_light_color_temperature(hass, hk_driver, cls, events, driver): """Test light with color temperature.""" entity_id = "light.demo" @@ -158,7 +246,8 @@ async def test_light_color_temperature(hass, hk_driver, cls, events): {ATTR_SUPPORTED_FEATURES: SUPPORT_COLOR_TEMP, ATTR_COLOR_TEMP: 190}, ) await hass.async_block_till_done() - acc = cls.light(hass, hk_driver, "Light", entity_id, 2, None) + acc = cls.light(hass, hk_driver, "Light", entity_id, 1, None) + driver.add_accessory(acc) assert acc.char_color_temperature.value == 153 @@ -169,6 +258,20 @@ async def test_light_color_temperature(hass, hk_driver, cls, events): # Set from HomeKit call_turn_on = async_mock_service(hass, DOMAIN, "turn_on") + char_color_temperature_iid = acc.char_color_temperature.to_HAP()[HAP_REPR_IID] + + driver.set_characteristics( + { + HAP_REPR_CHARS: [ + { + HAP_REPR_AID: acc.aid, + HAP_REPR_IID: char_color_temperature_iid, + HAP_REPR_VALUE: 250, + } + ] + }, + "mock_addr", + ) await hass.async_add_job(acc.char_color_temperature.client_update_value, 250) await hass.async_block_till_done() assert call_turn_on @@ -197,7 +300,7 @@ async def test_light_color_temperature_and_rgb_color(hass, hk_driver, cls, event assert not hasattr(acc, "char_color_temperature") -async def test_light_rgb_color(hass, hk_driver, cls, events): +async def test_light_rgb_color(hass, hk_driver, cls, events, driver): """Test light with rgb_color.""" entity_id = "light.demo" @@ -207,7 +310,8 @@ async def test_light_rgb_color(hass, hk_driver, cls, events): {ATTR_SUPPORTED_FEATURES: SUPPORT_COLOR, ATTR_HS_COLOR: (260, 90)}, ) await hass.async_block_till_done() - acc = cls.light(hass, hk_driver, "Light", entity_id, 2, None) + acc = cls.light(hass, hk_driver, "Light", entity_id, 1, None) + driver.add_accessory(acc) assert acc.char_hue.value == 0 assert acc.char_saturation.value == 75 @@ -220,8 +324,26 @@ async def test_light_rgb_color(hass, hk_driver, cls, events): # Set from HomeKit call_turn_on = async_mock_service(hass, DOMAIN, "turn_on") - await hass.async_add_job(acc.char_hue.client_update_value, 145) - await hass.async_add_job(acc.char_saturation.client_update_value, 75) + char_hue_iid = acc.char_hue.to_HAP()[HAP_REPR_IID] + char_saturation_iid = acc.char_saturation.to_HAP()[HAP_REPR_IID] + + driver.set_characteristics( + { + HAP_REPR_CHARS: [ + { + HAP_REPR_AID: acc.aid, + HAP_REPR_IID: char_hue_iid, + HAP_REPR_VALUE: 145, + }, + { + HAP_REPR_AID: acc.aid, + HAP_REPR_IID: char_saturation_iid, + HAP_REPR_VALUE: 75, + }, + ] + }, + "mock_addr", + ) await hass.async_block_till_done() assert call_turn_on assert call_turn_on[0].data[ATTR_ENTITY_ID] == entity_id @@ -230,7 +352,7 @@ async def test_light_rgb_color(hass, hk_driver, cls, events): assert events[-1].data[ATTR_VALUE] == "set color at (145, 75)" -async def test_light_restore(hass, hk_driver, cls, events): +async def test_light_restore(hass, hk_driver, cls, events, driver): """Test setting up an entity from state in the event registry.""" hass.state = CoreState.not_running @@ -250,7 +372,9 @@ async def test_light_restore(hass, hk_driver, cls, events): hass.bus.async_fire(EVENT_HOMEASSISTANT_START, {}) await hass.async_block_till_done() - acc = cls.light(hass, hk_driver, "Light", "light.simple", 2, None) + acc = cls.light(hass, hk_driver, "Light", "light.simple", 1, None) + driver.add_accessory(acc) + assert acc.category == 5 # Lightbulb assert acc.chars == [] assert acc.char_on.value == 0 @@ -259,3 +383,141 @@ async def test_light_restore(hass, hk_driver, cls, events): assert acc.category == 5 # Lightbulb assert acc.chars == ["Brightness"] assert acc.char_on.value == 0 + + +async def test_light_set_brightness_and_color(hass, hk_driver, cls, events, driver): + """Test light with all chars in one go.""" + entity_id = "light.demo" + + hass.states.async_set( + entity_id, + STATE_ON, + { + ATTR_SUPPORTED_FEATURES: SUPPORT_BRIGHTNESS | SUPPORT_COLOR, + ATTR_BRIGHTNESS: 255, + }, + ) + await hass.async_block_till_done() + acc = cls.light(hass, hk_driver, "Light", entity_id, 1, None) + driver.add_accessory(acc) + + # Initial value can be anything but 0. If it is 0, it might cause HomeKit to set the + # brightness to 100 when turning on a light on a freshly booted up server. + assert acc.char_brightness.value != 0 + char_on_iid = acc.char_on.to_HAP()[HAP_REPR_IID] + char_brightness_iid = acc.char_brightness.to_HAP()[HAP_REPR_IID] + char_hue_iid = acc.char_hue.to_HAP()[HAP_REPR_IID] + char_saturation_iid = acc.char_saturation.to_HAP()[HAP_REPR_IID] + + await hass.async_add_job(acc.run) + await hass.async_block_till_done() + assert acc.char_brightness.value == 100 + + hass.states.async_set(entity_id, STATE_ON, {ATTR_BRIGHTNESS: 102}) + await hass.async_block_till_done() + assert acc.char_brightness.value == 40 + + # Set from HomeKit + call_turn_on = async_mock_service(hass, DOMAIN, "turn_on") + + driver.set_characteristics( + { + HAP_REPR_CHARS: [ + {HAP_REPR_AID: acc.aid, HAP_REPR_IID: char_on_iid, HAP_REPR_VALUE: 1}, + { + HAP_REPR_AID: acc.aid, + HAP_REPR_IID: char_brightness_iid, + HAP_REPR_VALUE: 20, + }, + { + HAP_REPR_AID: acc.aid, + HAP_REPR_IID: char_hue_iid, + HAP_REPR_VALUE: 145, + }, + { + HAP_REPR_AID: acc.aid, + HAP_REPR_IID: char_saturation_iid, + HAP_REPR_VALUE: 75, + }, + ] + }, + "mock_addr", + ) + await hass.async_block_till_done() + assert call_turn_on[0] + assert call_turn_on[0].data[ATTR_ENTITY_ID] == entity_id + assert call_turn_on[0].data[ATTR_BRIGHTNESS_PCT] == 20 + assert call_turn_on[0].data[ATTR_HS_COLOR] == (145, 75) + + assert len(events) == 1 + assert ( + events[-1].data[ATTR_VALUE] + == f"Set state to 1, brightness at 20{UNIT_PERCENTAGE}, set color at (145, 75)" + ) + + +async def test_light_set_brightness_and_color_temp( + hass, hk_driver, cls, events, driver +): + """Test light with all chars in one go.""" + entity_id = "light.demo" + + hass.states.async_set( + entity_id, + STATE_ON, + { + ATTR_SUPPORTED_FEATURES: SUPPORT_BRIGHTNESS | SUPPORT_COLOR_TEMP, + ATTR_BRIGHTNESS: 255, + }, + ) + await hass.async_block_till_done() + acc = cls.light(hass, hk_driver, "Light", entity_id, 1, None) + driver.add_accessory(acc) + + # Initial value can be anything but 0. If it is 0, it might cause HomeKit to set the + # brightness to 100 when turning on a light on a freshly booted up server. + assert acc.char_brightness.value != 0 + char_on_iid = acc.char_on.to_HAP()[HAP_REPR_IID] + char_brightness_iid = acc.char_brightness.to_HAP()[HAP_REPR_IID] + char_color_temperature_iid = acc.char_color_temperature.to_HAP()[HAP_REPR_IID] + + await hass.async_add_job(acc.run) + await hass.async_block_till_done() + assert acc.char_brightness.value == 100 + + hass.states.async_set(entity_id, STATE_ON, {ATTR_BRIGHTNESS: 102}) + await hass.async_block_till_done() + assert acc.char_brightness.value == 40 + + # Set from HomeKit + call_turn_on = async_mock_service(hass, DOMAIN, "turn_on") + + driver.set_characteristics( + { + HAP_REPR_CHARS: [ + {HAP_REPR_AID: acc.aid, HAP_REPR_IID: char_on_iid, HAP_REPR_VALUE: 1}, + { + HAP_REPR_AID: acc.aid, + HAP_REPR_IID: char_brightness_iid, + HAP_REPR_VALUE: 20, + }, + { + HAP_REPR_AID: acc.aid, + HAP_REPR_IID: char_color_temperature_iid, + HAP_REPR_VALUE: 250, + }, + ] + }, + "mock_addr", + ) + await hass.async_block_till_done() + assert call_turn_on[0] + assert call_turn_on[0].data[ATTR_ENTITY_ID] == entity_id + assert call_turn_on[0].data[ATTR_BRIGHTNESS_PCT] == 20 + assert call_turn_on[0].data[ATTR_COLOR_TEMP] == 250 + + assert len(events) == 1 + assert ( + events[-1].data[ATTR_VALUE] + == f"Set state to 1, brightness at 20{UNIT_PERCENTAGE}, color temperature at 250" + ) From 254394ecab3411242c71a8d52b90ad8ad40dc03f Mon Sep 17 00:00:00 2001 From: ollo69 <60491700+ollo69@users.noreply.github.com> Date: Fri, 3 Apr 2020 15:02:48 +0200 Subject: [PATCH 17/63] Fix asuswrt network failure startup (#33485) * Fix network failure startup Fix for issue ##33284 - Asuswrt component fail at startup after power failure * Removed comment * Removed bare except * is_connected moved out try-catch * Removed pointless-string-statement * Raise PlatformNotReady on "not is_connected" * Removed unnecessary check * Revert "Removed unnecessary check" This reverts commit a2ccddab2c4b1ba441f1d7482d802d9774527a26. * Implemented custom retry mechanism * Fix new line missing * Fix formatting * Fix indent * Reviewed check * Recoded based on tibber implementation * Formatting review * Changes requested * Fix tests for setup retry * Updated missing test * Fixed check on Tests * Return false if not exception * Format correction --- homeassistant/components/asuswrt/__init__.py | 30 +++++++++++++++++-- .../components/asuswrt/test_device_tracker.py | 12 ++++++++ 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/asuswrt/__init__.py b/homeassistant/components/asuswrt/__init__.py index a0eee38c3f8..446fe898aaa 100644 --- a/homeassistant/components/asuswrt/__init__.py +++ b/homeassistant/components/asuswrt/__init__.py @@ -14,6 +14,7 @@ from homeassistant.const import ( ) from homeassistant.helpers import config_validation as cv from homeassistant.helpers.discovery import async_load_platform +from homeassistant.helpers.event import async_call_later _LOGGER = logging.getLogger(__name__) @@ -31,6 +32,9 @@ DEFAULT_SSH_PORT = 22 DEFAULT_INTERFACE = "eth0" DEFAULT_DNSMASQ = "/var/lib/misc" +FIRST_RETRY_TIME = 60 +MAX_RETRY_TIME = 900 + SECRET_GROUP = "Password or SSH Key" SENSOR_TYPES = ["upload_speed", "download_speed", "download", "upload"] @@ -59,7 +63,7 @@ CONFIG_SCHEMA = vol.Schema( ) -async def async_setup(hass, config): +async def async_setup(hass, config, retry_delay=FIRST_RETRY_TIME): """Set up the asuswrt component.""" conf = config[DOMAIN] @@ -77,9 +81,29 @@ async def async_setup(hass, config): dnsmasq=conf[CONF_DNSMASQ], ) - await api.connection.async_connect() + try: + await api.connection.async_connect() + except OSError as ex: + _LOGGER.warning( + "Error [%s] connecting %s to %s. Will retry in %s seconds...", + str(ex), + DOMAIN, + conf[CONF_HOST], + retry_delay, + ) + + async def retry_setup(now): + """Retry setup if a error happens on asuswrt API.""" + await async_setup( + hass, config, retry_delay=min(2 * retry_delay, MAX_RETRY_TIME) + ) + + async_call_later(hass, retry_delay, retry_setup) + + return True + if not api.is_connected: - _LOGGER.error("Unable to setup component") + _LOGGER.error("Error connecting %s to %s.", DOMAIN, conf[CONF_HOST]) return False hass.data[DATA_ASUSWRT] = api diff --git a/tests/components/asuswrt/test_device_tracker.py b/tests/components/asuswrt/test_device_tracker.py index b91b815d58e..62e5ed891ff 100644 --- a/tests/components/asuswrt/test_device_tracker.py +++ b/tests/components/asuswrt/test_device_tracker.py @@ -24,6 +24,18 @@ async def test_password_or_pub_key_required(hass): assert not result +async def test_network_unreachable(hass): + """Test creating an AsusWRT scanner without a pass or pubkey.""" + with patch("homeassistant.components.asuswrt.AsusWrt") as AsusWrt: + AsusWrt().connection.async_connect = mock_coro_func(exception=OSError) + AsusWrt().is_connected = False + result = await async_setup_component( + hass, DOMAIN, {DOMAIN: {CONF_HOST: "fake_host", CONF_USERNAME: "fake_user"}} + ) + assert result + assert hass.data.get(DATA_ASUSWRT, None) is None + + async def test_get_scanner_with_password_no_pubkey(hass): """Test creating an AsusWRT scanner with a password and no pubkey.""" with patch("homeassistant.components.asuswrt.AsusWrt") as AsusWrt: From cb5de0e090fb4610675e6aa39bfe4f20a5fe4abd Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 2 Apr 2020 09:55:34 -0700 Subject: [PATCH 18/63] Convert TTS tests to async (#33517) * Convert TTS tests to async * Address comments --- homeassistant/components/tts/__init__.py | 76 +- tests/common.py | 16 +- tests/components/tts/test_init.py | 941 +++++++++++------------ 3 files changed, 501 insertions(+), 532 deletions(-) diff --git a/homeassistant/components/tts/__init__.py b/homeassistant/components/tts/__init__.py index 3a456dec531..d9d513198ce 100644 --- a/homeassistant/components/tts/__init__.py +++ b/homeassistant/components/tts/__init__.py @@ -133,7 +133,7 @@ async def async_setup(hass, config): hass, p_config, discovery_info ) else: - provider = await hass.async_add_job( + provider = await hass.async_add_executor_job( platform.get_engine, hass, p_config, discovery_info ) @@ -226,41 +226,17 @@ class SpeechManager: self.time_memory = time_memory self.base_url = base_url - def init_tts_cache_dir(cache_dir): - """Init cache folder.""" - if not os.path.isabs(cache_dir): - cache_dir = self.hass.config.path(cache_dir) - if not os.path.isdir(cache_dir): - _LOGGER.info("Create cache dir %s.", cache_dir) - os.mkdir(cache_dir) - return cache_dir - try: - self.cache_dir = await self.hass.async_add_job( - init_tts_cache_dir, cache_dir + self.cache_dir = await self.hass.async_add_executor_job( + _init_tts_cache_dir, self.hass, cache_dir ) except OSError as err: raise HomeAssistantError(f"Can't init cache dir {err}") - def get_cache_files(): - """Return a dict of given engine files.""" - cache = {} - - folder_data = os.listdir(self.cache_dir) - for file_data in folder_data: - record = _RE_VOICE_FILE.match(file_data) - if record: - key = KEY_PATTERN.format( - record.group(1), - record.group(2), - record.group(3), - record.group(4), - ) - cache[key.lower()] = file_data.lower() - return cache - try: - cache_files = await self.hass.async_add_job(get_cache_files) + cache_files = await self.hass.async_add_executor_job( + _get_cache_files, self.cache_dir + ) except OSError as err: raise HomeAssistantError(f"Can't read cache dir {err}") @@ -273,13 +249,13 @@ class SpeechManager: def remove_files(): """Remove files from filesystem.""" - for _, filename in self.file_cache.items(): + for filename in self.file_cache.values(): try: os.remove(os.path.join(self.cache_dir, filename)) except OSError as err: _LOGGER.warning("Can't remove cache file '%s': %s", filename, err) - await self.hass.async_add_job(remove_files) + await self.hass.async_add_executor_job(remove_files) self.file_cache = {} @callback @@ -312,6 +288,7 @@ class SpeechManager: merged_options.update(options) options = merged_options options = options or provider.default_options + if options is not None: invalid_opts = [ opt_name @@ -378,10 +355,10 @@ class SpeechManager: speech.write(data) try: - await self.hass.async_add_job(save_speech) + await self.hass.async_add_executor_job(save_speech) self.file_cache[key] = filename - except OSError: - _LOGGER.error("Can't write %s", filename) + except OSError as err: + _LOGGER.error("Can't write %s: %s", filename, err) async def async_file_to_mem(self, key): """Load voice from file cache into memory. @@ -400,7 +377,7 @@ class SpeechManager: return speech.read() try: - data = await self.hass.async_add_job(load_speech) + data = await self.hass.async_add_executor_job(load_speech) except OSError: del self.file_cache[key] raise HomeAssistantError(f"Can't read {voice_file}") @@ -506,11 +483,36 @@ class Provider: Return a tuple of file extension and data as bytes. """ - return await self.hass.async_add_job( + return await self.hass.async_add_executor_job( ft.partial(self.get_tts_audio, message, language, options=options) ) +def _init_tts_cache_dir(hass, cache_dir): + """Init cache folder.""" + if not os.path.isabs(cache_dir): + cache_dir = hass.config.path(cache_dir) + if not os.path.isdir(cache_dir): + _LOGGER.info("Create cache dir %s", cache_dir) + os.mkdir(cache_dir) + return cache_dir + + +def _get_cache_files(cache_dir): + """Return a dict of given engine files.""" + cache = {} + + folder_data = os.listdir(cache_dir) + for file_data in folder_data: + record = _RE_VOICE_FILE.match(file_data) + if record: + key = KEY_PATTERN.format( + record.group(1), record.group(2), record.group(3), record.group(4), + ) + cache[key.lower()] = file_data.lower() + return cache + + class TextToSpeechUrlView(HomeAssistantView): """TTS view to get a url to a generated speech file.""" diff --git a/tests/common.py b/tests/common.py index 8fdcc9b8f86..9790a8a7131 100644 --- a/tests/common.py +++ b/tests/common.py @@ -14,6 +14,8 @@ import threading from unittest.mock import MagicMock, Mock, patch import uuid +from aiohttp.test_utils import unused_port as get_test_instance_port # noqa + from homeassistant import auth, config_entries, core as ha, loader from homeassistant.auth import ( auth_store, @@ -37,7 +39,6 @@ from homeassistant.const import ( EVENT_PLATFORM_DISCOVERED, EVENT_STATE_CHANGED, EVENT_TIME_CHANGED, - SERVER_PORT, STATE_OFF, STATE_ON, ) @@ -59,7 +60,6 @@ import homeassistant.util.dt as date_util from homeassistant.util.unit_system import METRIC_SYSTEM import homeassistant.util.yaml.loader as yaml_loader -_TEST_INSTANCE_PORT = SERVER_PORT _LOGGER = logging.getLogger(__name__) INSTANCES = [] CLIENT_ID = "https://example.com/app" @@ -217,18 +217,6 @@ async def async_test_home_assistant(loop): return hass -def get_test_instance_port(): - """Return unused port for running test instance. - - The socket that holds the default port does not get released when we stop - HA in a different test case. Until I have figured out what is going on, - let's run each test on a different port. - """ - global _TEST_INSTANCE_PORT - _TEST_INSTANCE_PORT += 1 - return _TEST_INSTANCE_PORT - - def async_mock_service(hass, domain, service, schema=None): """Set up a fake service & return a calls log list to this service.""" calls = [] diff --git a/tests/components/tts/test_init.py b/tests/components/tts/test_init.py index 62c4bc3a065..ab5d562ffc8 100644 --- a/tests/components/tts/test_init.py +++ b/tests/components/tts/test_init.py @@ -1,14 +1,12 @@ """The tests for the TTS component.""" import ctypes import os -import shutil from unittest.mock import PropertyMock, patch import pytest -import requests +import yarl from homeassistant.components.demo.tts import DemoProvider -import homeassistant.components.http as http from homeassistant.components.media_player.const import ( ATTR_MEDIA_CONTENT_ID, ATTR_MEDIA_CONTENT_TYPE, @@ -17,15 +15,52 @@ from homeassistant.components.media_player.const import ( SERVICE_PLAY_MEDIA, ) import homeassistant.components.tts as tts -from homeassistant.setup import async_setup_component, setup_component +from homeassistant.components.tts import _get_cache_files +from homeassistant.setup import async_setup_component -from tests.common import ( - assert_setup_component, - get_test_home_assistant, - get_test_instance_port, - mock_service, - mock_storage, -) +from tests.common import assert_setup_component, async_mock_service + + +def relative_url(url): + """Convert an absolute url to a relative one.""" + return str(yarl.URL(url).relative()) + + +@pytest.fixture +def demo_provider(): + """Demo TTS provider.""" + return DemoProvider("en") + + +@pytest.fixture(autouse=True) +def mock_get_cache_files(): + """Mock the list TTS cache function.""" + with patch( + "homeassistant.components.tts._get_cache_files", return_value={} + ) as mock_cache_files: + yield mock_cache_files + + +@pytest.fixture(autouse=True) +def mock_init_cache_dir(): + """Mock the TTS cache dir in memory.""" + with patch( + "homeassistant.components.tts._init_tts_cache_dir", + side_effect=lambda hass, cache_dir: hass.config.path(cache_dir), + ) as mock_cache_dir: + yield mock_cache_dir + + +@pytest.fixture +def empty_cache_dir(tmp_path, mock_init_cache_dir, mock_get_cache_files): + """Mock the TTS cache dir with empty dir.""" + mock_init_cache_dir.side_effect = None + mock_init_cache_dir.return_value = str(tmp_path) + + # Restore original get cache files behavior, we're working with a real dir. + mock_get_cache_files.side_effect = _get_cache_files + + return tmp_path @pytest.fixture(autouse=True) @@ -38,239 +73,209 @@ def mutagen_mock(): yield -class TestTTS: - """Test the Google speech component.""" +async def test_setup_component_demo(hass): + """Set up the demo platform with defaults.""" + config = {tts.DOMAIN: {"platform": "demo"}} - def setup_method(self): - """Set up things to be run when tests are started.""" - self.hass = get_test_home_assistant() - self.demo_provider = DemoProvider("en") - self.default_tts_cache = self.hass.config.path(tts.DEFAULT_CACHE_DIR) - self.mock_storage = mock_storage() - self.mock_storage.__enter__() + with assert_setup_component(1, tts.DOMAIN): + assert await async_setup_component(hass, tts.DOMAIN, config) - setup_component( - self.hass, - http.DOMAIN, - {http.DOMAIN: {http.CONF_SERVER_PORT: get_test_instance_port()}}, - ) + assert hass.services.has_service(tts.DOMAIN, "demo_say") + assert hass.services.has_service(tts.DOMAIN, "clear_cache") - def teardown_method(self): - """Stop everything that was started.""" - self.hass.stop() - self.mock_storage.__exit__(None, None, None) - if os.path.isdir(self.default_tts_cache): - shutil.rmtree(self.default_tts_cache) +async def test_setup_component_demo_no_access_cache_folder(hass, mock_init_cache_dir): + """Set up the demo platform with defaults.""" + config = {tts.DOMAIN: {"platform": "demo"}} - def test_setup_component_demo(self): - """Set up the demo platform with defaults.""" - config = {tts.DOMAIN: {"platform": "demo"}} + mock_init_cache_dir.side_effect = OSError(2, "No access") + assert not await async_setup_component(hass, tts.DOMAIN, config) - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) + assert not hass.services.has_service(tts.DOMAIN, "demo_say") + assert not hass.services.has_service(tts.DOMAIN, "clear_cache") - assert self.hass.services.has_service(tts.DOMAIN, "demo_say") - assert self.hass.services.has_service(tts.DOMAIN, "clear_cache") - @patch("os.mkdir", side_effect=OSError(2, "No access")) - def test_setup_component_demo_no_access_cache_folder(self, mock_mkdir): - """Set up the demo platform with defaults.""" - config = {tts.DOMAIN: {"platform": "demo"}} +async def test_setup_component_and_test_service(hass, empty_cache_dir): + """Set up the demo platform and call service.""" + calls = async_mock_service(hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - assert not setup_component(self.hass, tts.DOMAIN, config) + config = {tts.DOMAIN: {"platform": "demo"}} - assert not self.hass.services.has_service(tts.DOMAIN, "demo_say") - assert not self.hass.services.has_service(tts.DOMAIN, "clear_cache") + with assert_setup_component(1, tts.DOMAIN): + assert await async_setup_component(hass, tts.DOMAIN, config) - def test_setup_component_and_test_service(self): - """Set up the demo platform and call service.""" - calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + await hass.services.async_call( + tts.DOMAIN, + "demo_say", + { + "entity_id": "media_player.something", + tts.ATTR_MESSAGE: "There is someone at the door.", + }, + blocking=True, + ) - config = {tts.DOMAIN: {"platform": "demo"}} + assert len(calls) == 1 + assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC + assert calls[0].data[ + ATTR_MEDIA_CONTENT_ID + ] == "{}/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3".format( + hass.config.api.base_url + ) + assert ( + empty_cache_dir / "42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3" + ).is_file() - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) - self.hass.services.call( - tts.DOMAIN, - "demo_say", - { - "entity_id": "media_player.something", - tts.ATTR_MESSAGE: "There is someone at the door.", - }, - ) - self.hass.block_till_done() +async def test_setup_component_and_test_service_with_config_language( + hass, empty_cache_dir +): + """Set up the demo platform and call service.""" + calls = async_mock_service(hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - assert len(calls) == 1 - assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC - assert calls[0].data[ - ATTR_MEDIA_CONTENT_ID - ] == "{}/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3".format( - self.hass.config.api.base_url - ) - assert os.path.isfile( - os.path.join( - self.default_tts_cache, - "42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3", - ) - ) + config = {tts.DOMAIN: {"platform": "demo", "language": "de"}} - def test_setup_component_and_test_service_with_config_language(self): - """Set up the demo platform and call service.""" - calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + with assert_setup_component(1, tts.DOMAIN): + assert await async_setup_component(hass, tts.DOMAIN, config) - config = {tts.DOMAIN: {"platform": "demo", "language": "de"}} + await hass.services.async_call( + tts.DOMAIN, + "demo_say", + { + "entity_id": "media_player.something", + tts.ATTR_MESSAGE: "There is someone at the door.", + }, + blocking=True, + ) + assert len(calls) == 1 + assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC + assert calls[0].data[ + ATTR_MEDIA_CONTENT_ID + ] == "{}/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_de_-_demo.mp3".format( + hass.config.api.base_url + ) + assert ( + empty_cache_dir / "42f18378fd4393d18c8dd11d03fa9563c1e54491_de_-_demo.mp3" + ).is_file() - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) - self.hass.services.call( - tts.DOMAIN, - "demo_say", - { - "entity_id": "media_player.something", - tts.ATTR_MESSAGE: "There is someone at the door.", - }, - ) - self.hass.block_till_done() +async def test_setup_component_and_test_service_with_wrong_conf_language(hass): + """Set up the demo platform and call service with wrong config.""" + config = {tts.DOMAIN: {"platform": "demo", "language": "ru"}} - assert len(calls) == 1 - assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC - assert calls[0].data[ - ATTR_MEDIA_CONTENT_ID - ] == "{}/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_de_-_demo.mp3".format( - self.hass.config.api.base_url - ) - assert os.path.isfile( - os.path.join( - self.default_tts_cache, - "42f18378fd4393d18c8dd11d03fa9563c1e54491_de_-_demo.mp3", - ) - ) + with assert_setup_component(0, tts.DOMAIN): + assert await async_setup_component(hass, tts.DOMAIN, config) - def test_setup_component_and_test_service_with_wrong_conf_language(self): - """Set up the demo platform and call service with wrong config.""" - config = {tts.DOMAIN: {"platform": "demo", "language": "ru"}} - with assert_setup_component(0, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) +async def test_setup_component_and_test_service_with_service_language( + hass, empty_cache_dir +): + """Set up the demo platform and call service.""" + calls = async_mock_service(hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - def test_setup_component_and_test_service_with_service_language(self): - """Set up the demo platform and call service.""" - calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + config = {tts.DOMAIN: {"platform": "demo"}} - config = {tts.DOMAIN: {"platform": "demo"}} + with assert_setup_component(1, tts.DOMAIN): + assert await async_setup_component(hass, tts.DOMAIN, config) - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) + await hass.services.async_call( + tts.DOMAIN, + "demo_say", + { + "entity_id": "media_player.something", + tts.ATTR_MESSAGE: "There is someone at the door.", + tts.ATTR_LANGUAGE: "de", + }, + blocking=True, + ) + assert len(calls) == 1 + assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC + assert calls[0].data[ + ATTR_MEDIA_CONTENT_ID + ] == "{}/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_de_-_demo.mp3".format( + hass.config.api.base_url + ) + assert ( + empty_cache_dir / "42f18378fd4393d18c8dd11d03fa9563c1e54491_de_-_demo.mp3" + ).is_file() - self.hass.services.call( - tts.DOMAIN, - "demo_say", - { - "entity_id": "media_player.something", - tts.ATTR_MESSAGE: "There is someone at the door.", - tts.ATTR_LANGUAGE: "de", - }, - ) - self.hass.block_till_done() - assert len(calls) == 1 - assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC - assert calls[0].data[ - ATTR_MEDIA_CONTENT_ID - ] == "{}/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_de_-_demo.mp3".format( - self.hass.config.api.base_url - ) - assert os.path.isfile( - os.path.join( - self.default_tts_cache, - "42f18378fd4393d18c8dd11d03fa9563c1e54491_de_-_demo.mp3", - ) - ) +async def test_setup_component_test_service_with_wrong_service_language( + hass, empty_cache_dir +): + """Set up the demo platform and call service.""" + calls = async_mock_service(hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - def test_setup_component_test_service_with_wrong_service_language(self): - """Set up the demo platform and call service.""" - calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + config = {tts.DOMAIN: {"platform": "demo"}} - config = {tts.DOMAIN: {"platform": "demo"}} + with assert_setup_component(1, tts.DOMAIN): + assert await async_setup_component(hass, tts.DOMAIN, config) - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) + await hass.services.async_call( + tts.DOMAIN, + "demo_say", + { + "entity_id": "media_player.something", + tts.ATTR_MESSAGE: "There is someone at the door.", + tts.ATTR_LANGUAGE: "lang", + }, + blocking=True, + ) + assert len(calls) == 0 + assert not ( + empty_cache_dir / "42f18378fd4393d18c8dd11d03fa9563c1e54491_lang_-_demo.mp3" + ).is_file() - self.hass.services.call( - tts.DOMAIN, - "demo_say", - { - "entity_id": "media_player.something", - tts.ATTR_MESSAGE: "There is someone at the door.", - tts.ATTR_LANGUAGE: "lang", - }, - ) - self.hass.block_till_done() - assert len(calls) == 0 - assert not os.path.isfile( - os.path.join( - self.default_tts_cache, - "42f18378fd4393d18c8dd11d03fa9563c1e54491_lang_-_demo.mp3", - ) - ) +async def test_setup_component_and_test_service_with_service_options( + hass, empty_cache_dir +): + """Set up the demo platform and call service with options.""" + calls = async_mock_service(hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - def test_setup_component_and_test_service_with_service_options(self): - """Set up the demo platform and call service with options.""" - calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + config = {tts.DOMAIN: {"platform": "demo"}} - config = {tts.DOMAIN: {"platform": "demo"}} + with assert_setup_component(1, tts.DOMAIN): + assert await async_setup_component(hass, tts.DOMAIN, config) - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) + await hass.services.async_call( + tts.DOMAIN, + "demo_say", + { + "entity_id": "media_player.something", + tts.ATTR_MESSAGE: "There is someone at the door.", + tts.ATTR_LANGUAGE: "de", + tts.ATTR_OPTIONS: {"voice": "alex"}, + }, + blocking=True, + ) + opt_hash = ctypes.c_size_t(hash(frozenset({"voice": "alex"}))).value - self.hass.services.call( - tts.DOMAIN, - "demo_say", - { - "entity_id": "media_player.something", - tts.ATTR_MESSAGE: "There is someone at the door.", - tts.ATTR_LANGUAGE: "de", - tts.ATTR_OPTIONS: {"voice": "alex"}, - }, - ) - self.hass.block_till_done() + assert len(calls) == 1 + assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC + assert calls[0].data[ + ATTR_MEDIA_CONTENT_ID + ] == "{}/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_de_{}_demo.mp3".format( + hass.config.api.base_url, opt_hash + ) + assert ( + empty_cache_dir + / f"42f18378fd4393d18c8dd11d03fa9563c1e54491_de_{opt_hash}_demo.mp3" + ).is_file() - opt_hash = ctypes.c_size_t(hash(frozenset({"voice": "alex"}))).value - assert len(calls) == 1 - assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC - assert calls[0].data[ - ATTR_MEDIA_CONTENT_ID - ] == "{}/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_de_{}_demo.mp3".format( - self.hass.config.api.base_url, opt_hash - ) - assert os.path.isfile( - os.path.join( - self.default_tts_cache, - "42f18378fd4393d18c8dd11d03fa9563c1e54491_de_{0}_demo.mp3".format( - opt_hash - ), - ) - ) +async def test_setup_component_and_test_with_service_options_def(hass, empty_cache_dir): + """Set up the demo platform and call service with default options.""" + calls = async_mock_service(hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - @patch( + config = {tts.DOMAIN: {"platform": "demo"}} + + with assert_setup_component(1, tts.DOMAIN), patch( "homeassistant.components.demo.tts.DemoProvider.default_options", new_callable=PropertyMock(return_value={"voice": "alex"}), - ) - def test_setup_component_and_test_with_service_options_def(self, def_mock): - """Set up the demo platform and call service with default options.""" - calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + ): + assert await async_setup_component(hass, tts.DOMAIN, config) - config = {tts.DOMAIN: {"platform": "demo"}} - - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) - - self.hass.services.call( + await hass.services.async_call( tts.DOMAIN, "demo_say", { @@ -278,9 +283,8 @@ class TestTTS: tts.ATTR_MESSAGE: "There is someone at the door.", tts.ATTR_LANGUAGE: "de", }, + blocking=True, ) - self.hass.block_till_done() - opt_hash = ctypes.c_size_t(hash(frozenset({"voice": "alex"}))).value assert len(calls) == 1 @@ -288,362 +292,341 @@ class TestTTS: assert calls[0].data[ ATTR_MEDIA_CONTENT_ID ] == "{}/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_de_{}_demo.mp3".format( - self.hass.config.api.base_url, opt_hash + hass.config.api.base_url, opt_hash ) assert os.path.isfile( os.path.join( - self.default_tts_cache, + empty_cache_dir, "42f18378fd4393d18c8dd11d03fa9563c1e54491_de_{0}_demo.mp3".format( opt_hash ), ) ) - def test_setup_component_and_test_service_with_service_options_wrong(self): - """Set up the demo platform and call service with wrong options.""" - calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - config = {tts.DOMAIN: {"platform": "demo"}} +async def test_setup_component_and_test_service_with_service_options_wrong( + hass, empty_cache_dir +): + """Set up the demo platform and call service with wrong options.""" + calls = async_mock_service(hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) + config = {tts.DOMAIN: {"platform": "demo"}} - self.hass.services.call( - tts.DOMAIN, - "demo_say", - { - "entity_id": "media_player.something", - tts.ATTR_MESSAGE: "There is someone at the door.", - tts.ATTR_LANGUAGE: "de", - tts.ATTR_OPTIONS: {"speed": 1}, - }, - ) - self.hass.block_till_done() + with assert_setup_component(1, tts.DOMAIN): + assert await async_setup_component(hass, tts.DOMAIN, config) - opt_hash = ctypes.c_size_t(hash(frozenset({"speed": 1}))).value + await hass.services.async_call( + tts.DOMAIN, + "demo_say", + { + "entity_id": "media_player.something", + tts.ATTR_MESSAGE: "There is someone at the door.", + tts.ATTR_LANGUAGE: "de", + tts.ATTR_OPTIONS: {"speed": 1}, + }, + blocking=True, + ) + opt_hash = ctypes.c_size_t(hash(frozenset({"speed": 1}))).value - assert len(calls) == 0 - assert not os.path.isfile( - os.path.join( - self.default_tts_cache, - "42f18378fd4393d18c8dd11d03fa9563c1e54491_de_{0}_demo.mp3".format( - opt_hash - ), - ) - ) + assert len(calls) == 0 + assert not ( + empty_cache_dir + / f"42f18378fd4393d18c8dd11d03fa9563c1e54491_de_{opt_hash}_demo.mp3" + ).is_file() - def test_setup_component_and_test_service_with_base_url_set(self): - """Set up the demo platform with ``base_url`` set and call service.""" - calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - config = {tts.DOMAIN: {"platform": "demo", "base_url": "http://fnord"}} +async def test_setup_component_and_test_service_with_base_url_set(hass): + """Set up the demo platform with ``base_url`` set and call service.""" + calls = async_mock_service(hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) + config = {tts.DOMAIN: {"platform": "demo", "base_url": "http://fnord"}} - self.hass.services.call( - tts.DOMAIN, - "demo_say", - { - "entity_id": "media_player.something", - tts.ATTR_MESSAGE: "There is someone at the door.", - }, - ) - self.hass.block_till_done() + with assert_setup_component(1, tts.DOMAIN): + assert await async_setup_component(hass, tts.DOMAIN, config) - assert len(calls) == 1 - assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC - assert ( - calls[0].data[ATTR_MEDIA_CONTENT_ID] == "http://fnord" - "/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491" - "_en_-_demo.mp3" - ) + await hass.services.async_call( + tts.DOMAIN, + "demo_say", + { + "entity_id": "media_player.something", + tts.ATTR_MESSAGE: "There is someone at the door.", + }, + blocking=True, + ) + assert len(calls) == 1 + assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC + assert ( + calls[0].data[ATTR_MEDIA_CONTENT_ID] == "http://fnord" + "/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491" + "_en_-_demo.mp3" + ) - def test_setup_component_and_test_service_clear_cache(self): - """Set up the demo platform and call service clear cache.""" - calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - config = {tts.DOMAIN: {"platform": "demo"}} +async def test_setup_component_and_test_service_clear_cache(hass, empty_cache_dir): + """Set up the demo platform and call service clear cache.""" + calls = async_mock_service(hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) + config = {tts.DOMAIN: {"platform": "demo"}} - self.hass.services.call( - tts.DOMAIN, - "demo_say", - { - "entity_id": "media_player.something", - tts.ATTR_MESSAGE: "There is someone at the door.", - }, - ) - self.hass.block_till_done() + with assert_setup_component(1, tts.DOMAIN): + assert await async_setup_component(hass, tts.DOMAIN, config) - assert len(calls) == 1 - assert os.path.isfile( - os.path.join( - self.default_tts_cache, - "42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3", - ) - ) + await hass.services.async_call( + tts.DOMAIN, + "demo_say", + { + "entity_id": "media_player.something", + tts.ATTR_MESSAGE: "There is someone at the door.", + }, + blocking=True, + ) + # To make sure the file is persisted + await hass.async_block_till_done() + assert len(calls) == 1 + assert ( + empty_cache_dir / "42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3" + ).is_file() - self.hass.services.call(tts.DOMAIN, tts.SERVICE_CLEAR_CACHE, {}) - self.hass.block_till_done() + await hass.services.async_call( + tts.DOMAIN, tts.SERVICE_CLEAR_CACHE, {}, blocking=True + ) - assert not os.path.isfile( - os.path.join( - self.default_tts_cache, - "42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3", - ) - ) + assert not ( + empty_cache_dir / "42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3" + ).is_file() - def test_setup_component_and_test_service_with_receive_voice(self): - """Set up the demo platform and call service and receive voice.""" - calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - config = {tts.DOMAIN: {"platform": "demo"}} +async def test_setup_component_and_test_service_with_receive_voice( + hass, demo_provider, hass_client +): + """Set up the demo platform and call service and receive voice.""" + calls = async_mock_service(hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) + config = {tts.DOMAIN: {"platform": "demo"}} - self.hass.start() + with assert_setup_component(1, tts.DOMAIN): + assert await async_setup_component(hass, tts.DOMAIN, config) - self.hass.services.call( - tts.DOMAIN, - "demo_say", - { - "entity_id": "media_player.something", - tts.ATTR_MESSAGE: "There is someone at the door.", - }, - ) - self.hass.block_till_done() + client = await hass_client() - assert len(calls) == 1 - req = requests.get(calls[0].data[ATTR_MEDIA_CONTENT_ID]) - _, demo_data = self.demo_provider.get_tts_audio("bla", "en") - demo_data = tts.SpeechManager.write_tags( - "42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3", - demo_data, - self.demo_provider, - "AI person is in front of your door.", - "en", - None, - ) - assert req.status_code == 200 - assert req.content == demo_data + await hass.services.async_call( + tts.DOMAIN, + "demo_say", + { + "entity_id": "media_player.something", + tts.ATTR_MESSAGE: "There is someone at the door.", + }, + blocking=True, + ) + assert len(calls) == 1 - def test_setup_component_and_test_service_with_receive_voice_german(self): - """Set up the demo platform and call service and receive voice.""" - calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + req = await client.get(relative_url(calls[0].data[ATTR_MEDIA_CONTENT_ID])) + _, demo_data = demo_provider.get_tts_audio("bla", "en") + demo_data = tts.SpeechManager.write_tags( + "42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3", + demo_data, + demo_provider, + "AI person is in front of your door.", + "en", + None, + ) + assert req.status == 200 + assert await req.read() == demo_data - config = {tts.DOMAIN: {"platform": "demo", "language": "de"}} - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) +async def test_setup_component_and_test_service_with_receive_voice_german( + hass, demo_provider, hass_client +): + """Set up the demo platform and call service and receive voice.""" + calls = async_mock_service(hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - self.hass.start() + config = {tts.DOMAIN: {"platform": "demo", "language": "de"}} - self.hass.services.call( - tts.DOMAIN, - "demo_say", - { - "entity_id": "media_player.something", - tts.ATTR_MESSAGE: "There is someone at the door.", - }, - ) - self.hass.block_till_done() + with assert_setup_component(1, tts.DOMAIN): + assert await async_setup_component(hass, tts.DOMAIN, config) - assert len(calls) == 1 - req = requests.get(calls[0].data[ATTR_MEDIA_CONTENT_ID]) - _, demo_data = self.demo_provider.get_tts_audio("bla", "de") - demo_data = tts.SpeechManager.write_tags( - "42f18378fd4393d18c8dd11d03fa9563c1e54491_de_-_demo.mp3", - demo_data, - self.demo_provider, - "There is someone at the door.", - "de", - None, - ) - assert req.status_code == 200 - assert req.content == demo_data + client = await hass_client() - def test_setup_component_and_web_view_wrong_file(self): - """Set up the demo platform and receive wrong file from web.""" - config = {tts.DOMAIN: {"platform": "demo"}} + await hass.services.async_call( + tts.DOMAIN, + "demo_say", + { + "entity_id": "media_player.something", + tts.ATTR_MESSAGE: "There is someone at the door.", + }, + blocking=True, + ) + assert len(calls) == 1 + req = await client.get(relative_url(calls[0].data[ATTR_MEDIA_CONTENT_ID])) + _, demo_data = demo_provider.get_tts_audio("bla", "de") + demo_data = tts.SpeechManager.write_tags( + "42f18378fd4393d18c8dd11d03fa9563c1e54491_de_-_demo.mp3", + demo_data, + demo_provider, + "There is someone at the door.", + "de", + None, + ) + assert req.status == 200 + assert await req.read() == demo_data - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) - self.hass.start() +async def test_setup_component_and_web_view_wrong_file(hass, hass_client): + """Set up the demo platform and receive wrong file from web.""" + config = {tts.DOMAIN: {"platform": "demo"}} - url = ( - "{}/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3" - ).format(self.hass.config.api.base_url) + with assert_setup_component(1, tts.DOMAIN): + assert await async_setup_component(hass, tts.DOMAIN, config) - req = requests.get(url) - assert req.status_code == 404 + client = await hass_client() - def test_setup_component_and_web_view_wrong_filename(self): - """Set up the demo platform and receive wrong filename from web.""" - config = {tts.DOMAIN: {"platform": "demo"}} + url = "/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3" - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) + req = await client.get(url) + assert req.status == 404 - self.hass.start() - url = ( - "{}/api/tts_proxy/265944dsk32c1b2a621be5930510bb2cd_en_-_demo.mp3" - ).format(self.hass.config.api.base_url) +async def test_setup_component_and_web_view_wrong_filename(hass, hass_client): + """Set up the demo platform and receive wrong filename from web.""" + config = {tts.DOMAIN: {"platform": "demo"}} - req = requests.get(url) - assert req.status_code == 404 + with assert_setup_component(1, tts.DOMAIN): + assert await async_setup_component(hass, tts.DOMAIN, config) - def test_setup_component_test_without_cache(self): - """Set up demo platform without cache.""" - calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + client = await hass_client() - config = {tts.DOMAIN: {"platform": "demo", "cache": False}} + url = "/api/tts_proxy/265944dsk32c1b2a621be5930510bb2cd_en_-_demo.mp3" - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) + req = await client.get(url) + assert req.status == 404 - self.hass.services.call( - tts.DOMAIN, - "demo_say", - { - "entity_id": "media_player.something", - tts.ATTR_MESSAGE: "There is someone at the door.", - }, - ) - self.hass.block_till_done() - assert len(calls) == 1 - assert not os.path.isfile( - os.path.join( - self.default_tts_cache, - "42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3", - ) - ) +async def test_setup_component_test_without_cache(hass, empty_cache_dir): + """Set up demo platform without cache.""" + calls = async_mock_service(hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - def test_setup_component_test_with_cache_call_service_without_cache(self): - """Set up demo platform with cache and call service without cache.""" - calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + config = {tts.DOMAIN: {"platform": "demo", "cache": False}} - config = {tts.DOMAIN: {"platform": "demo", "cache": True}} + with assert_setup_component(1, tts.DOMAIN): + assert await async_setup_component(hass, tts.DOMAIN, config) - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) + await hass.services.async_call( + tts.DOMAIN, + "demo_say", + { + "entity_id": "media_player.something", + tts.ATTR_MESSAGE: "There is someone at the door.", + }, + blocking=True, + ) + assert len(calls) == 1 + assert not ( + empty_cache_dir / "42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3" + ).is_file() - self.hass.services.call( - tts.DOMAIN, - "demo_say", - { - "entity_id": "media_player.something", - tts.ATTR_MESSAGE: "There is someone at the door.", - tts.ATTR_CACHE: False, - }, - ) - self.hass.block_till_done() - assert len(calls) == 1 - assert not os.path.isfile( - os.path.join( - self.default_tts_cache, - "42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3", - ) - ) +async def test_setup_component_test_with_cache_call_service_without_cache( + hass, empty_cache_dir +): + """Set up demo platform with cache and call service without cache.""" + calls = async_mock_service(hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - def test_setup_component_test_with_cache_dir(self): - """Set up demo platform with cache and call service without cache.""" - calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + config = {tts.DOMAIN: {"platform": "demo", "cache": True}} - _, demo_data = self.demo_provider.get_tts_audio("bla", "en") - cache_file = os.path.join( - self.default_tts_cache, - "42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3", - ) + with assert_setup_component(1, tts.DOMAIN): + assert await async_setup_component(hass, tts.DOMAIN, config) - os.mkdir(self.default_tts_cache) - with open(cache_file, "wb") as voice_file: - voice_file.write(demo_data) + await hass.services.async_call( + tts.DOMAIN, + "demo_say", + { + "entity_id": "media_player.something", + tts.ATTR_MESSAGE: "There is someone at the door.", + tts.ATTR_CACHE: False, + }, + blocking=True, + ) + assert len(calls) == 1 + assert not ( + empty_cache_dir / "42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3" + ).is_file() - config = {tts.DOMAIN: {"platform": "demo", "cache": True}} - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) +async def test_setup_component_test_with_cache_dir( + hass, empty_cache_dir, demo_provider +): + """Set up demo platform with cache and call service without cache.""" + calls = async_mock_service(hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - with patch( - "homeassistant.components.demo.tts.DemoProvider.get_tts_audio", - return_value=(None, None), - ): - self.hass.services.call( - tts.DOMAIN, - "demo_say", - { - "entity_id": "media_player.something", - tts.ATTR_MESSAGE: "There is someone at the door.", - }, - ) - self.hass.block_till_done() + _, demo_data = demo_provider.get_tts_audio("bla", "en") + cache_file = ( + empty_cache_dir / "42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3" + ) - assert len(calls) == 1 - assert calls[0].data[ - ATTR_MEDIA_CONTENT_ID - ] == "{}/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3".format( - self.hass.config.api.base_url - ) + with open(cache_file, "wb") as voice_file: + voice_file.write(demo_data) - @patch( + config = {tts.DOMAIN: {"platform": "demo", "cache": True}} + + with assert_setup_component(1, tts.DOMAIN): + assert await async_setup_component(hass, tts.DOMAIN, config) + + with patch( "homeassistant.components.demo.tts.DemoProvider.get_tts_audio", return_value=(None, None), - ) - def test_setup_component_test_with_error_on_get_tts(self, tts_mock): - """Set up demo platform with wrong get_tts_audio.""" - calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - - config = {tts.DOMAIN: {"platform": "demo"}} - - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) - - self.hass.services.call( + ): + await hass.services.async_call( tts.DOMAIN, "demo_say", { "entity_id": "media_player.something", tts.ATTR_MESSAGE: "There is someone at the door.", }, + blocking=True, ) - self.hass.block_till_done() + assert len(calls) == 1 + assert calls[0].data[ + ATTR_MEDIA_CONTENT_ID + ] == "{}/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3".format( + hass.config.api.base_url + ) - assert len(calls) == 0 - def test_setup_component_load_cache_retrieve_without_mem_cache(self): - """Set up component and load cache and get without mem cache.""" - _, demo_data = self.demo_provider.get_tts_audio("bla", "en") - cache_file = os.path.join( - self.default_tts_cache, - "42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3", - ) +async def test_setup_component_test_with_error_on_get_tts(hass): + """Set up demo platform with wrong get_tts_audio.""" + config = {tts.DOMAIN: {"platform": "demo"}} - os.mkdir(self.default_tts_cache) - with open(cache_file, "wb") as voice_file: - voice_file.write(demo_data) + with assert_setup_component(1, tts.DOMAIN), patch( + "homeassistant.components.demo.tts.DemoProvider.get_tts_audio", + return_value=(None, None), + ): + assert await async_setup_component(hass, tts.DOMAIN, config) - config = {tts.DOMAIN: {"platform": "demo", "cache": True}} - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) +async def test_setup_component_load_cache_retrieve_without_mem_cache( + hass, demo_provider, empty_cache_dir, hass_client +): + """Set up component and load cache and get without mem cache.""" + _, demo_data = demo_provider.get_tts_audio("bla", "en") + cache_file = ( + empty_cache_dir / "42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3" + ) - self.hass.start() + with open(cache_file, "wb") as voice_file: + voice_file.write(demo_data) - url = ( - "{}/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3" - ).format(self.hass.config.api.base_url) + config = {tts.DOMAIN: {"platform": "demo", "cache": True}} - req = requests.get(url) - assert req.status_code == 200 - assert req.content == demo_data + with assert_setup_component(1, tts.DOMAIN): + assert await async_setup_component(hass, tts.DOMAIN, config) + + client = await hass_client() + + url = "/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3" + + req = await client.get(url) + assert req.status == 200 + assert await req.read() == demo_data async def test_setup_component_and_web_get_url(hass, hass_client): @@ -666,10 +649,6 @@ async def test_setup_component_and_web_get_url(hass, hass_client): ) ) - tts_cache = hass.config.path(tts.DEFAULT_CACHE_DIR) - if os.path.isdir(tts_cache): - shutil.rmtree(tts_cache) - async def test_setup_component_and_web_get_url_bad_config(hass, hass_client): """Set up the demo platform and receive wrong file from web.""" From 4eafd8adf73e61373c1410e326efcb0193ba8784 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 2 Apr 2020 23:02:50 -0500 Subject: [PATCH 19/63] Add missing flow_title to doorbird (#33557) When placeholders are in use, flow_title needs to be set in the json to prevent an empty name in the integrations dashboard. This affected doorbirds that were found via ssdp. --- homeassistant/components/doorbird/.translations/en.json | 5 +++-- homeassistant/components/doorbird/strings.json | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/doorbird/.translations/en.json b/homeassistant/components/doorbird/.translations/en.json index 27c16fac3a1..f933b9c9929 100644 --- a/homeassistant/components/doorbird/.translations/en.json +++ b/homeassistant/components/doorbird/.translations/en.json @@ -21,7 +21,8 @@ "title": "Connect to the DoorBird" } }, - "title": "DoorBird" + "title": "DoorBird", + "flow_title" : "DoorBird {name} ({host})" }, "options": { "step": { @@ -33,4 +34,4 @@ } } } -} \ No newline at end of file +} diff --git a/homeassistant/components/doorbird/strings.json b/homeassistant/components/doorbird/strings.json index 9b2c95dd7c9..e4fb72db91b 100644 --- a/homeassistant/components/doorbird/strings.json +++ b/homeassistant/components/doorbird/strings.json @@ -27,6 +27,7 @@ "not_doorbird_device": "This device is not a DoorBird" }, "title" : "DoorBird", + "flow_title" : "DoorBird {name} ({host})", "error" : { "invalid_auth" : "Invalid authentication", "unknown" : "Unexpected error", From ff3bfade31a5c2023d808e06333e4551ebefa128 Mon Sep 17 00:00:00 2001 From: jjlawren Date: Thu, 2 Apr 2020 23:02:27 -0500 Subject: [PATCH 20/63] Plex followup to #33542 (#33558) --- homeassistant/components/plex/const.py | 3 +++ homeassistant/components/plex/media_player.py | 7 ++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/plex/const.py b/homeassistant/components/plex/const.py index d5cb3db3aba..44bb25b3fd9 100644 --- a/homeassistant/components/plex/const.py +++ b/homeassistant/components/plex/const.py @@ -38,3 +38,6 @@ X_PLEX_DEVICE_NAME = "Home Assistant" X_PLEX_PLATFORM = "Home Assistant" X_PLEX_PRODUCT = "Home Assistant" X_PLEX_VERSION = __version__ + +COMMAND_MEDIA_TYPE_MUSIC = "music" +COMMAND_MEDIA_TYPE_VIDEO = "video" diff --git a/homeassistant/components/plex/media_player.py b/homeassistant/components/plex/media_player.py index 5325544bf15..aea8ecadaff 100644 --- a/homeassistant/components/plex/media_player.py +++ b/homeassistant/components/plex/media_player.py @@ -11,7 +11,6 @@ from homeassistant.components.media_player.const import ( MEDIA_TYPE_MOVIE, MEDIA_TYPE_MUSIC, MEDIA_TYPE_TVSHOW, - MEDIA_TYPE_VIDEO, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PLAY, @@ -28,6 +27,8 @@ from homeassistant.helpers.entity_registry import async_get_registry from homeassistant.util import dt as dt_util from .const import ( + COMMAND_MEDIA_TYPE_MUSIC, + COMMAND_MEDIA_TYPE_VIDEO, COMMON_PLAYERS, CONF_SERVER_IDENTIFIER, DISPATCHERS, @@ -576,11 +577,11 @@ class PlexMediaPlayer(MediaPlayerDevice): shuffle = src.get("shuffle", 0) media = None - command_media_type = MEDIA_TYPE_VIDEO + command_media_type = COMMAND_MEDIA_TYPE_VIDEO if media_type == "MUSIC": media = self._get_music_media(library, src) - command_media_type = MEDIA_TYPE_MUSIC + command_media_type = COMMAND_MEDIA_TYPE_MUSIC elif media_type == "EPISODE": media = self._get_tv_media(library, src) elif media_type == "PLAYLIST": From ef28bcaa9ce4572cd047afdf847689c931ce6f76 Mon Sep 17 00:00:00 2001 From: Eugenio Panadero Date: Fri, 3 Apr 2020 10:11:08 +0200 Subject: [PATCH 21/63] Identify cameras in error logs for generic and mjpeg cameras (#33561) --- homeassistant/components/generic/camera.py | 10 +++++++--- homeassistant/components/mjpeg/camera.py | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/generic/camera.py b/homeassistant/components/generic/camera.py index 3abeab32262..768ef108969 100644 --- a/homeassistant/components/generic/camera.py +++ b/homeassistant/components/generic/camera.py @@ -132,7 +132,9 @@ class GenericCamera(Camera): ) return response.content except requests.exceptions.RequestException as error: - _LOGGER.error("Error getting camera image: %s", error) + _LOGGER.error( + "Error getting new camera image from %s: %s", self._name, error + ) return self._last_image self._last_image = await self.hass.async_add_job(fetch) @@ -146,10 +148,12 @@ class GenericCamera(Camera): response = await websession.get(url, auth=self._auth) self._last_image = await response.read() except asyncio.TimeoutError: - _LOGGER.error("Timeout getting image from: %s", self._name) + _LOGGER.error("Timeout getting camera image from %s", self._name) return self._last_image except aiohttp.ClientError as err: - _LOGGER.error("Error getting new camera image: %s", err) + _LOGGER.error( + "Error getting new camera image from %s: %s", self._name, err + ) return self._last_image self._last_url = url diff --git a/homeassistant/components/mjpeg/camera.py b/homeassistant/components/mjpeg/camera.py index ab0409694d1..c42901cd6c5 100644 --- a/homeassistant/components/mjpeg/camera.py +++ b/homeassistant/components/mjpeg/camera.py @@ -122,10 +122,10 @@ class MjpegCamera(Camera): return image except asyncio.TimeoutError: - _LOGGER.error("Timeout getting camera image") + _LOGGER.error("Timeout getting camera image from %s", self._name) except aiohttp.ClientError as err: - _LOGGER.error("Error getting new camera image: %s", err) + _LOGGER.error("Error getting new camera image from %s: %s", self._name, err) def camera_image(self): """Return a still image response from the camera.""" From af10cd315e53b1f1496d666e9e44ba6b25834053 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 3 Apr 2020 11:13:48 +0200 Subject: [PATCH 22/63] Upgrade luftdaten to 0.6.4 (#33564) --- homeassistant/components/luftdaten/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/luftdaten/manifest.json b/homeassistant/components/luftdaten/manifest.json index 13fa67a8b6b..e6e9110b33a 100644 --- a/homeassistant/components/luftdaten/manifest.json +++ b/homeassistant/components/luftdaten/manifest.json @@ -3,7 +3,7 @@ "name": "Luftdaten", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/luftdaten", - "requirements": ["luftdaten==0.6.3"], + "requirements": ["luftdaten==0.6.4"], "dependencies": [], "codeowners": ["@fabaff"], "quality_scale": "gold" diff --git a/requirements_all.txt b/requirements_all.txt index fa917932fbe..43429a19b78 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -840,7 +840,7 @@ logi_circle==0.2.2 london-tube-status==0.2 # homeassistant.components.luftdaten -luftdaten==0.6.3 +luftdaten==0.6.4 # homeassistant.components.lupusec lupupy==0.0.18 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index a4cf4e0176e..4bb18c8cf7a 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -329,7 +329,7 @@ libsoundtouch==0.7.2 logi_circle==0.2.2 # homeassistant.components.luftdaten -luftdaten==0.6.3 +luftdaten==0.6.4 # homeassistant.components.mythicbeastsdns mbddns==0.1.2 From aa6520cac11a39c011cad371ec4792ab4021d891 Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Fri, 3 Apr 2020 16:10:14 +0200 Subject: [PATCH 23/63] Fix source name (#33565) --- homeassistant/components/braviatv/media_player.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/braviatv/media_player.py b/homeassistant/components/braviatv/media_player.py index 6dd431aac69..f9362799224 100644 --- a/homeassistant/components/braviatv/media_player.py +++ b/homeassistant/components/braviatv/media_player.py @@ -218,8 +218,8 @@ class BraviaTVDevice(MediaPlayerDevice): self._channel_name = playing_info.get("title") self._program_media_type = playing_info.get("programMediaType") self._channel_number = playing_info.get("dispNum") - self._source = playing_info.get("source") self._content_uri = playing_info.get("uri") + self._source = self._get_source() self._duration = playing_info.get("durationSec") self._start_date_time = playing_info.get("startDateTime") else: @@ -229,6 +229,12 @@ class BraviaTVDevice(MediaPlayerDevice): _LOGGER.error(exception_instance) self._state = STATE_OFF + def _get_source(self): + """Return the name of the source.""" + for key, value in self._content_mapping.items(): + if value == self._content_uri: + return key + def _reset_playing_info(self): self._program_name = None self._channel_name = None From a7e5cc31c37abe802015ecf8eda43af39a278465 Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Fri, 3 Apr 2020 11:58:37 +0200 Subject: [PATCH 24/63] Bump gios library to version 0.1.1 (#33569) --- homeassistant/components/gios/__init__.py | 9 +++++++-- homeassistant/components/gios/config_flow.py | 11 ++--------- homeassistant/components/gios/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 5 files changed, 12 insertions(+), 14 deletions(-) diff --git a/homeassistant/components/gios/__init__.py b/homeassistant/components/gios/__init__.py index 0a7973709c1..c7e708e3207 100644 --- a/homeassistant/components/gios/__init__.py +++ b/homeassistant/components/gios/__init__.py @@ -3,7 +3,7 @@ import logging from aiohttp.client_exceptions import ClientConnectorError from async_timeout import timeout -from gios import ApiError, Gios, NoStationError +from gios import ApiError, Gios, InvalidSensorsData, NoStationError from homeassistant.core import Config, HomeAssistant from homeassistant.exceptions import ConfigEntryNotReady @@ -63,7 +63,12 @@ class GiosDataUpdateCoordinator(DataUpdateCoordinator): try: with timeout(30): await self.gios.update() - except (ApiError, NoStationError, ClientConnectorError) as error: + except ( + ApiError, + NoStationError, + ClientConnectorError, + InvalidSensorsData, + ) as error: raise UpdateFailed(error) if not self.gios.data: raise UpdateFailed("Invalid sensors data") diff --git a/homeassistant/components/gios/config_flow.py b/homeassistant/components/gios/config_flow.py index 368d610c226..5741af47a07 100644 --- a/homeassistant/components/gios/config_flow.py +++ b/homeassistant/components/gios/config_flow.py @@ -3,10 +3,10 @@ import asyncio from aiohttp.client_exceptions import ClientConnectorError from async_timeout import timeout -from gios import ApiError, Gios, NoStationError +from gios import ApiError, Gios, InvalidSensorsData, NoStationError import voluptuous as vol -from homeassistant import config_entries, exceptions +from homeassistant import config_entries from homeassistant.const import CONF_NAME from homeassistant.helpers.aiohttp_client import async_get_clientsession @@ -43,9 +43,6 @@ class GiosFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): gios = Gios(user_input[CONF_STATION_ID], websession) await gios.update() - if not gios.available: - raise InvalidSensorsData() - return self.async_create_entry( title=user_input[CONF_STATION_ID], data=user_input, ) @@ -59,7 +56,3 @@ class GiosFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): return self.async_show_form( step_id="user", data_schema=DATA_SCHEMA, errors=errors ) - - -class InvalidSensorsData(exceptions.HomeAssistantError): - """Error to indicate invalid sensors data.""" diff --git a/homeassistant/components/gios/manifest.json b/homeassistant/components/gios/manifest.json index 67fcbebe9a2..3e3d63965d3 100644 --- a/homeassistant/components/gios/manifest.json +++ b/homeassistant/components/gios/manifest.json @@ -4,6 +4,6 @@ "documentation": "https://www.home-assistant.io/integrations/gios", "dependencies": [], "codeowners": ["@bieniu"], - "requirements": ["gios==0.0.5"], + "requirements": ["gios==0.1.1"], "config_flow": true } diff --git a/requirements_all.txt b/requirements_all.txt index 43429a19b78..2ef389a280c 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -611,7 +611,7 @@ georss_qld_bushfire_alert_client==0.3 getmac==0.8.1 # homeassistant.components.gios -gios==0.0.5 +gios==0.1.1 # homeassistant.components.gitter gitterpy==0.1.7 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 4bb18c8cf7a..42e5020eb01 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -243,7 +243,7 @@ georss_qld_bushfire_alert_client==0.3 getmac==0.8.1 # homeassistant.components.gios -gios==0.0.5 +gios==0.1.1 # homeassistant.components.glances glances_api==0.2.0 From 43777ace206682e2af5c8d3c59d8dba9e107258f Mon Sep 17 00:00:00 2001 From: Jc2k Date: Fri, 3 Apr 2020 13:36:10 +0100 Subject: [PATCH 25/63] Fix browsing regression (#33572) --- homeassistant/components/zeroconf/manifest.json | 2 +- homeassistant/package_constraints.txt | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/zeroconf/manifest.json b/homeassistant/components/zeroconf/manifest.json index b0808d83d68..3171b8e953b 100644 --- a/homeassistant/components/zeroconf/manifest.json +++ b/homeassistant/components/zeroconf/manifest.json @@ -2,7 +2,7 @@ "domain": "zeroconf", "name": "Zero-configuration networking (zeroconf)", "documentation": "https://www.home-assistant.io/integrations/zeroconf", - "requirements": ["zeroconf==0.24.5"], + "requirements": ["zeroconf==0.25.0"], "dependencies": ["api"], "codeowners": ["@robbiet480", "@Kane610"], "quality_scale": "internal" diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index ca19feba5ef..025040f72d6 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -25,7 +25,7 @@ ruamel.yaml==0.15.100 sqlalchemy==1.3.15 voluptuous-serialize==2.3.0 voluptuous==0.11.7 -zeroconf==0.24.5 +zeroconf==0.25.0 pycryptodome>=3.6.6 diff --git a/requirements_all.txt b/requirements_all.txt index 2ef389a280c..dd1f96ed1f4 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2173,7 +2173,7 @@ youtube_dl==2020.03.24 zengge==0.2 # homeassistant.components.zeroconf -zeroconf==0.24.5 +zeroconf==0.25.0 # homeassistant.components.zha zha-quirks==0.0.38 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 42e5020eb01..92976a44584 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -795,7 +795,7 @@ ya_ma==0.3.8 yahooweather==0.10 # homeassistant.components.zeroconf -zeroconf==0.24.5 +zeroconf==0.25.0 # homeassistant.components.zha zha-quirks==0.0.38 From 5cf2043c0476d2d5786a5acbd5f3f4ddfd5f7836 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Fri, 3 Apr 2020 15:51:28 +0200 Subject: [PATCH 26/63] Bump adguardhome to 0.4.2 (#33575) --- homeassistant/components/adguard/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/adguard/manifest.json b/homeassistant/components/adguard/manifest.json index c77e0b3254d..02b0e2ea455 100644 --- a/homeassistant/components/adguard/manifest.json +++ b/homeassistant/components/adguard/manifest.json @@ -3,7 +3,7 @@ "name": "AdGuard Home", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/adguard", - "requirements": ["adguardhome==0.4.1"], + "requirements": ["adguardhome==0.4.2"], "dependencies": [], "codeowners": ["@frenck"] } diff --git a/requirements_all.txt b/requirements_all.txt index dd1f96ed1f4..cd31ce36b2e 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -122,7 +122,7 @@ adafruit-circuitpython-mcp230xx==2.2.2 adb-shell==0.1.1 # homeassistant.components.adguard -adguardhome==0.4.1 +adguardhome==0.4.2 # homeassistant.components.frontier_silicon afsapi==0.0.4 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 92976a44584..5cd5aea496e 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -32,7 +32,7 @@ abodepy==0.18.1 adb-shell==0.1.1 # homeassistant.components.adguard -adguardhome==0.4.1 +adguardhome==0.4.2 # homeassistant.components.geonetnz_quakes aio_geojson_geonetnz_quakes==0.12 From ddddd8566d4d0ee01d2efa861cd9e2754846def6 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Fri, 3 Apr 2020 15:39:22 +0200 Subject: [PATCH 27/63] Add default delay to Harmony config entries (#33576) --- homeassistant/components/harmony/__init__.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/harmony/__init__.py b/homeassistant/components/harmony/__init__.py index f7140bdb400..540e39f8f44 100644 --- a/homeassistant/components/harmony/__init__.py +++ b/homeassistant/components/harmony/__init__.py @@ -2,7 +2,11 @@ import asyncio import logging -from homeassistant.components.remote import ATTR_ACTIVITY, ATTR_DELAY_SECS +from homeassistant.components.remote import ( + ATTR_ACTIVITY, + ATTR_DELAY_SECS, + DEFAULT_DELAY_SECS, +) from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_HOST, CONF_NAME from homeassistant.core import HomeAssistant, callback @@ -33,7 +37,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry): address = entry.data[CONF_HOST] name = entry.data[CONF_NAME] activity = entry.options.get(ATTR_ACTIVITY) - delay_secs = entry.options.get(ATTR_DELAY_SECS) + delay_secs = entry.options.get(ATTR_DELAY_SECS, DEFAULT_DELAY_SECS) harmony_conf_file = hass.config.path(f"harmony_{entry.unique_id}.conf") try: From 1634592d902128b2b3fc4ee3ad37b4cc571867cd Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Fri, 3 Apr 2020 19:32:00 +0200 Subject: [PATCH 28/63] Updated frontend to 20200403.0 (#33586) --- homeassistant/components/frontend/manifest.json | 2 +- homeassistant/package_constraints.txt | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/frontend/manifest.json b/homeassistant/components/frontend/manifest.json index 8a540a96b0e..b0da48ab713 100644 --- a/homeassistant/components/frontend/manifest.json +++ b/homeassistant/components/frontend/manifest.json @@ -3,7 +3,7 @@ "name": "Home Assistant Frontend", "documentation": "https://www.home-assistant.io/integrations/frontend", "requirements": [ - "home-assistant-frontend==20200401.0" + "home-assistant-frontend==20200403.0" ], "dependencies": [ "api", diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index 025040f72d6..fd8e841d568 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -12,7 +12,7 @@ cryptography==2.8 defusedxml==0.6.0 distro==1.4.0 hass-nabucasa==0.32.2 -home-assistant-frontend==20200401.0 +home-assistant-frontend==20200403.0 importlib-metadata==1.5.0 jinja2>=2.11.1 netdisco==2.6.0 diff --git a/requirements_all.txt b/requirements_all.txt index cd31ce36b2e..5569f113d97 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -704,7 +704,7 @@ hole==0.5.1 holidays==0.10.1 # homeassistant.components.frontend -home-assistant-frontend==20200401.0 +home-assistant-frontend==20200403.0 # homeassistant.components.zwave homeassistant-pyozw==0.1.10 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 5cd5aea496e..e0f6ff033ed 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -282,7 +282,7 @@ hole==0.5.1 holidays==0.10.1 # homeassistant.components.frontend -home-assistant-frontend==20200401.0 +home-assistant-frontend==20200403.0 # homeassistant.components.zwave homeassistant-pyozw==0.1.10 From 4ead87270e1791f531d5a4391236a9ea0085fe40 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 3 Apr 2020 10:48:05 -0700 Subject: [PATCH 29/63] Bumped version to 0.108.0b2 --- homeassistant/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 1bf7a4f6441..e4e08f76356 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -1,7 +1,7 @@ """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 MINOR_VERSION = 108 -PATCH_VERSION = "0b1" +PATCH_VERSION = "0b2" __short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__ = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER = (3, 7, 0) From 0763503151c5fbbae956bd4ee793849dae8468f7 Mon Sep 17 00:00:00 2001 From: jjlawren Date: Sat, 4 Apr 2020 00:34:42 -0500 Subject: [PATCH 30/63] Debounce calls to Plex server (#33560) * Debounce calls to Plex server * Simplify debounce by recommendation * Update tests to handle debounce * Test debouncer, fix & optimize tests * Use property instead --- homeassistant/components/plex/const.py | 1 + homeassistant/components/plex/server.py | 37 +++++++++++++-- tests/components/plex/common.py | 20 +++++++++ tests/components/plex/test_config_flow.py | 6 +-- tests/components/plex/test_init.py | 36 +++++++-------- tests/components/plex/test_server.py | 55 +++++++++++++++++++---- 6 files changed, 120 insertions(+), 35 deletions(-) create mode 100644 tests/components/plex/common.py diff --git a/homeassistant/components/plex/const.py b/homeassistant/components/plex/const.py index 44bb25b3fd9..126c6eb313a 100644 --- a/homeassistant/components/plex/const.py +++ b/homeassistant/components/plex/const.py @@ -9,6 +9,7 @@ DEFAULT_PORT = 32400 DEFAULT_SSL = False DEFAULT_VERIFY_SSL = True +DEBOUNCE_TIMEOUT = 1 DISPATCHERS = "dispatchers" PLATFORMS = frozenset(["media_player", "sensor"]) PLATFORMS_COMPLETED = "platforms_completed" diff --git a/homeassistant/components/plex/server.py b/homeassistant/components/plex/server.py index 196968cc097..f2a4908e119 100644 --- a/homeassistant/components/plex/server.py +++ b/homeassistant/components/plex/server.py @@ -1,4 +1,5 @@ """Shared class to maintain Plex server instances.""" +from functools import partial, wraps import logging import ssl from urllib.parse import urlparse @@ -12,6 +13,7 @@ import requests.exceptions from homeassistant.components.media_player import DOMAIN as MP_DOMAIN from homeassistant.const import CONF_TOKEN, CONF_URL, CONF_VERIFY_SSL from homeassistant.helpers.dispatcher import dispatcher_send +from homeassistant.helpers.event import async_call_later from .const import ( CONF_CLIENT_IDENTIFIER, @@ -19,6 +21,7 @@ from .const import ( CONF_MONITORED_USERS, CONF_SERVER, CONF_USE_EPISODE_ART, + DEBOUNCE_TIMEOUT, DEFAULT_VERIFY_SSL, PLEX_NEW_MP_SIGNAL, PLEX_UPDATE_MEDIA_PLAYER_SIGNAL, @@ -39,12 +42,37 @@ plexapi.X_PLEX_PRODUCT = X_PLEX_PRODUCT plexapi.X_PLEX_VERSION = X_PLEX_VERSION +def debounce(func): + """Decorate function to debounce callbacks from Plex websocket.""" + + unsub = None + + async def call_later_listener(self, _): + """Handle call_later callback.""" + nonlocal unsub + unsub = None + await self.hass.async_add_executor_job(func, self) + + @wraps(func) + def wrapper(self): + """Schedule async callback.""" + nonlocal unsub + if unsub: + _LOGGER.debug("Throttling update of %s", self.friendly_name) + unsub() # pylint: disable=not-callable + unsub = async_call_later( + self.hass, DEBOUNCE_TIMEOUT, partial(call_later_listener, self), + ) + + return wrapper + + class PlexServer: """Manages a single Plex server connection.""" def __init__(self, hass, server_config, known_server_id=None, options=None): """Initialize a Plex server instance.""" - self._hass = hass + self.hass = hass self._plex_server = None self._known_clients = set() self._known_idle = set() @@ -150,12 +178,13 @@ class PlexServer: unique_id = f"{self.machine_identifier}:{machine_identifier}" _LOGGER.debug("Refreshing %s", unique_id) dispatcher_send( - self._hass, + self.hass, PLEX_UPDATE_MEDIA_PLAYER_SIGNAL.format(unique_id), device, session, ) + @debounce def update_platforms(self): """Update the platform entities.""" _LOGGER.debug("Updating devices") @@ -239,13 +268,13 @@ class PlexServer: if new_entity_configs: dispatcher_send( - self._hass, + self.hass, PLEX_NEW_MP_SIGNAL.format(self.machine_identifier), new_entity_configs, ) dispatcher_send( - self._hass, + self.hass, PLEX_UPDATE_SENSOR_SIGNAL.format(self.machine_identifier), sessions, ) diff --git a/tests/components/plex/common.py b/tests/components/plex/common.py new file mode 100644 index 00000000000..adc6f4e0299 --- /dev/null +++ b/tests/components/plex/common.py @@ -0,0 +1,20 @@ +"""Common fixtures and functions for Plex tests.""" +from datetime import timedelta + +from homeassistant.components.plex.const import ( + DEBOUNCE_TIMEOUT, + PLEX_UPDATE_PLATFORMS_SIGNAL, +) +from homeassistant.helpers.dispatcher import async_dispatcher_send +import homeassistant.util.dt as dt_util + +from tests.common import async_fire_time_changed + + +async def trigger_plex_update(hass, server_id): + """Update Plex by sending signal and jumping ahead by debounce timeout.""" + async_dispatcher_send(hass, PLEX_UPDATE_PLATFORMS_SIGNAL.format(server_id)) + await hass.async_block_till_done() + next_update = dt_util.utcnow() + timedelta(seconds=DEBOUNCE_TIMEOUT) + async_fire_time_changed(hass, next_update) + await hass.async_block_till_done() diff --git a/tests/components/plex/test_config_flow.py b/tests/components/plex/test_config_flow.py index d839ccc674b..bd5d45c0246 100644 --- a/tests/components/plex/test_config_flow.py +++ b/tests/components/plex/test_config_flow.py @@ -15,14 +15,13 @@ from homeassistant.components.plex.const import ( CONF_USE_EPISODE_ART, DOMAIN, PLEX_SERVER_CONFIG, - PLEX_UPDATE_PLATFORMS_SIGNAL, SERVERS, ) from homeassistant.config_entries import ENTRY_STATE_LOADED from homeassistant.const import CONF_HOST, CONF_PORT, CONF_TOKEN, CONF_URL -from homeassistant.helpers.dispatcher import async_dispatcher_send from homeassistant.setup import async_setup_component +from .common import trigger_plex_update from .const import DEFAULT_DATA, DEFAULT_OPTIONS, MOCK_SERVERS, MOCK_TOKEN from .mock_classes import MockPlexAccount, MockPlexServer @@ -416,8 +415,7 @@ async def test_option_flow_new_users_available(hass, caplog): server_id = mock_plex_server.machineIdentifier - async_dispatcher_send(hass, PLEX_UPDATE_PLATFORMS_SIGNAL.format(server_id)) - await hass.async_block_till_done() + await trigger_plex_update(hass, server_id) monitored_users = hass.data[DOMAIN][SERVERS][server_id].option_monitored_users diff --git a/tests/components/plex/test_init.py b/tests/components/plex/test_init.py index 387ce6cac03..1aef7878df5 100644 --- a/tests/components/plex/test_init.py +++ b/tests/components/plex/test_init.py @@ -23,10 +23,10 @@ from homeassistant.const import ( CONF_URL, CONF_VERIFY_SSL, ) -from homeassistant.helpers.dispatcher import async_dispatcher_send from homeassistant.setup import async_setup_component import homeassistant.util.dt as dt_util +from .common import trigger_plex_update from .const import DEFAULT_DATA, DEFAULT_OPTIONS, MOCK_SERVERS, MOCK_TOKEN from .mock_classes import MockPlexAccount, MockPlexServer @@ -74,7 +74,7 @@ async def test_setup_with_config(hass): ) -async def test_setup_with_config_entry(hass): +async def test_setup_with_config_entry(hass, caplog): """Test setup component with config.""" mock_plex_server = MockPlexServer() @@ -109,30 +109,31 @@ async def test_setup_with_config_entry(hass): hass.data[const.DOMAIN][const.PLATFORMS_COMPLETED][server_id] == const.PLATFORMS ) - async_dispatcher_send(hass, const.PLEX_UPDATE_PLATFORMS_SIGNAL.format(server_id)) - await hass.async_block_till_done() + await trigger_plex_update(hass, server_id) sensor = hass.states.get("sensor.plex_plex_server_1") assert sensor.state == str(len(mock_plex_server.accounts)) - async_dispatcher_send(hass, const.PLEX_UPDATE_PLATFORMS_SIGNAL.format(server_id)) - await hass.async_block_till_done() + await trigger_plex_update(hass, server_id) with patch.object( mock_plex_server, "clients", side_effect=plexapi.exceptions.BadRequest - ): - async_dispatcher_send( - hass, const.PLEX_UPDATE_PLATFORMS_SIGNAL.format(server_id) - ) - await hass.async_block_till_done() + ) as patched_clients_bad_request: + await trigger_plex_update(hass, server_id) + + assert patched_clients_bad_request.called + assert "Error requesting Plex client data from server" in caplog.text with patch.object( mock_plex_server, "clients", side_effect=requests.exceptions.RequestException - ): - async_dispatcher_send( - hass, const.PLEX_UPDATE_PLATFORMS_SIGNAL.format(server_id) - ) - await hass.async_block_till_done() + ) as patched_clients_requests_exception: + await trigger_plex_update(hass, server_id) + + assert patched_clients_requests_exception.called + assert ( + f"Could not connect to Plex server: {mock_plex_server.friendlyName}" + in caplog.text + ) async def test_set_config_entry_unique_id(hass): @@ -294,8 +295,7 @@ async def test_setup_with_photo_session(hass): server_id = mock_plex_server.machineIdentifier - async_dispatcher_send(hass, const.PLEX_UPDATE_PLATFORMS_SIGNAL.format(server_id)) - await hass.async_block_till_done() + await trigger_plex_update(hass, server_id) media_player = hass.states.get("media_player.plex_product_title") assert media_player.state == "idle" diff --git a/tests/components/plex/test_server.py b/tests/components/plex/test_server.py index 646a6ded32e..242c0fe5504 100644 --- a/tests/components/plex/test_server.py +++ b/tests/components/plex/test_server.py @@ -1,5 +1,6 @@ """Tests for Plex server.""" import copy +from datetime import timedelta from asynctest import patch @@ -7,16 +8,19 @@ from homeassistant.components.media_player import DOMAIN as MP_DOMAIN from homeassistant.components.plex.const import ( CONF_IGNORE_NEW_SHARED_USERS, CONF_MONITORED_USERS, + DEBOUNCE_TIMEOUT, DOMAIN, PLEX_UPDATE_PLATFORMS_SIGNAL, SERVERS, ) from homeassistant.helpers.dispatcher import async_dispatcher_send +import homeassistant.util.dt as dt_util +from .common import trigger_plex_update from .const import DEFAULT_DATA, DEFAULT_OPTIONS from .mock_classes import MockPlexServer -from tests.common import MockConfigEntry +from tests.common import MockConfigEntry, async_fire_time_changed async def test_new_users_available(hass): @@ -44,8 +48,7 @@ async def test_new_users_available(hass): server_id = mock_plex_server.machineIdentifier - async_dispatcher_send(hass, PLEX_UPDATE_PLATFORMS_SIGNAL.format(server_id)) - await hass.async_block_till_done() + await trigger_plex_update(hass, server_id) monitored_users = hass.data[DOMAIN][SERVERS][server_id].option_monitored_users @@ -83,8 +86,7 @@ async def test_new_ignored_users_available(hass, caplog): server_id = mock_plex_server.machineIdentifier - async_dispatcher_send(hass, PLEX_UPDATE_PLATFORMS_SIGNAL.format(server_id)) - await hass.async_block_till_done() + await trigger_plex_update(hass, server_id) monitored_users = hass.data[DOMAIN][SERVERS][server_id].option_monitored_users @@ -118,8 +120,7 @@ async def test_mark_sessions_idle(hass): server_id = mock_plex_server.machineIdentifier - async_dispatcher_send(hass, PLEX_UPDATE_PLATFORMS_SIGNAL.format(server_id)) - await hass.async_block_till_done() + await trigger_plex_update(hass, server_id) sensor = hass.states.get("sensor.plex_plex_server_1") assert sensor.state == str(len(mock_plex_server.accounts)) @@ -127,8 +128,44 @@ async def test_mark_sessions_idle(hass): mock_plex_server.clear_clients() mock_plex_server.clear_sessions() - async_dispatcher_send(hass, PLEX_UPDATE_PLATFORMS_SIGNAL.format(server_id)) - await hass.async_block_till_done() + await trigger_plex_update(hass, server_id) sensor = hass.states.get("sensor.plex_plex_server_1") assert sensor.state == "0" + + +async def test_debouncer(hass, caplog): + """Test debouncer decorator logic.""" + entry = MockConfigEntry( + domain=DOMAIN, + data=DEFAULT_DATA, + options=DEFAULT_OPTIONS, + unique_id=DEFAULT_DATA["server_id"], + ) + + mock_plex_server = MockPlexServer(config_entry=entry) + + with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch( + "homeassistant.components.plex.PlexWebsocket.listen" + ): + entry.add_to_hass(hass) + assert await hass.config_entries.async_setup(entry.entry_id) + await hass.async_block_till_done() + + server_id = mock_plex_server.machineIdentifier + + # First two updates are skipped + async_dispatcher_send(hass, PLEX_UPDATE_PLATFORMS_SIGNAL.format(server_id)) + await hass.async_block_till_done() + async_dispatcher_send(hass, PLEX_UPDATE_PLATFORMS_SIGNAL.format(server_id)) + await hass.async_block_till_done() + async_dispatcher_send(hass, PLEX_UPDATE_PLATFORMS_SIGNAL.format(server_id)) + await hass.async_block_till_done() + + next_update = dt_util.utcnow() + timedelta(seconds=DEBOUNCE_TIMEOUT) + async_fire_time_changed(hass, next_update) + await hass.async_block_till_done() + + assert ( + caplog.text.count(f"Throttling update of {mock_plex_server.friendlyName}") == 2 + ) From ab7afbdaf75339f71205ca298576ac8d8b7ab394 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 3 Apr 2020 19:42:06 -0700 Subject: [PATCH 31/63] Hass.io integration do not warn safe mode (#33600) * Hass.io integration do not warn safe mode * Better implementation * Tweak log message --- homeassistant/components/hassio/handler.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/hassio/handler.py b/homeassistant/components/hassio/handler.py index e471bfae543..bb41e5335d7 100644 --- a/homeassistant/components/hassio/handler.py +++ b/homeassistant/components/hassio/handler.py @@ -10,6 +10,7 @@ from homeassistant.components.http import ( CONF_SERVER_HOST, CONF_SERVER_PORT, CONF_SSL_CERTIFICATE, + DEFAULT_SERVER_HOST, ) from homeassistant.const import SERVER_PORT @@ -133,9 +134,14 @@ class HassIO: "refresh_token": refresh_token.token, } - if CONF_SERVER_HOST in http_config: + if ( + http_config.get(CONF_SERVER_HOST, DEFAULT_SERVER_HOST) + != DEFAULT_SERVER_HOST + ): options["watchdog"] = False - _LOGGER.warning("Don't use 'server_host' options with Hass.io") + _LOGGER.warning( + "Found incompatible HTTP option 'server_host'. Watchdog feature disabled" + ) return await self.send_command("/homeassistant/options", payload=options) From 6a297b375819a90cf97334bc8359abab390b4253 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 3 Apr 2020 22:41:08 -0700 Subject: [PATCH 32/63] Use IP addresses instead of mDNS names when wled discovered (#33608) --- homeassistant/components/wled/config_flow.py | 2 +- tests/components/wled/__init__.py | 10 ++--- tests/components/wled/test_config_flow.py | 44 ++++++++++---------- tests/components/wled/test_init.py | 2 +- tests/components/wled/test_light.py | 6 +-- tests/components/wled/test_switch.py | 4 +- 6 files changed, 35 insertions(+), 33 deletions(-) diff --git a/homeassistant/components/wled/config_flow.py b/homeassistant/components/wled/config_flow.py index da1193b1a01..ecf8ca6e1e0 100644 --- a/homeassistant/components/wled/config_flow.py +++ b/homeassistant/components/wled/config_flow.py @@ -45,7 +45,7 @@ class WLEDFlowHandler(ConfigFlow, domain=DOMAIN): # pylint: disable=no-member # https://github.com/PyCQA/pylint/issues/3167 self.context.update( { - CONF_HOST: host, + CONF_HOST: user_input["host"], CONF_NAME: name, CONF_MAC: user_input["properties"].get(CONF_MAC), "title_placeholders": {"name": name}, diff --git a/tests/components/wled/__init__.py b/tests/components/wled/__init__.py index b4b01c66d8a..f6bd0643450 100644 --- a/tests/components/wled/__init__.py +++ b/tests/components/wled/__init__.py @@ -18,31 +18,31 @@ async def init_integration( fixture = "wled/rgb.json" if not rgbw else "wled/rgbw.json" aioclient_mock.get( - "http://example.local:80/json/", + "http://192.168.1.123:80/json/", text=load_fixture(fixture), headers={"Content-Type": "application/json"}, ) aioclient_mock.post( - "http://example.local:80/json/state", + "http://192.168.1.123:80/json/state", json={}, headers={"Content-Type": "application/json"}, ) aioclient_mock.get( - "http://example.local:80/json/info", + "http://192.168.1.123:80/json/info", json={}, headers={"Content-Type": "application/json"}, ) aioclient_mock.get( - "http://example.local:80/json/state", + "http://192.168.1.123:80/json/state", json={}, headers={"Content-Type": "application/json"}, ) entry = MockConfigEntry( - domain=DOMAIN, data={CONF_HOST: "example.local", CONF_MAC: "aabbccddeeff"} + domain=DOMAIN, data={CONF_HOST: "192.168.1.123", CONF_MAC: "aabbccddeeff"} ) entry.add_to_hass(hass) diff --git a/tests/components/wled/test_config_flow.py b/tests/components/wled/test_config_flow.py index 521a7b67a46..6de14a024d4 100644 --- a/tests/components/wled/test_config_flow.py +++ b/tests/components/wled/test_config_flow.py @@ -40,7 +40,7 @@ async def test_show_zerconf_form( ) -> None: """Test that the zeroconf confirmation form is served.""" aioclient_mock.get( - "http://example.local:80/json/", + "http://192.168.1.123:80/json/", text=load_fixture("wled/rgb.json"), headers={"Content-Type": "application/json"}, ) @@ -49,10 +49,10 @@ async def test_show_zerconf_form( flow.hass = hass flow.context = {"source": SOURCE_ZEROCONF} result = await flow.async_step_zeroconf( - {"hostname": "example.local.", "properties": {}} + {"host": "192.168.1.123", "hostname": "example.local.", "properties": {}} ) - assert flow.context[CONF_HOST] == "example.local" + assert flow.context[CONF_HOST] == "192.168.1.123" assert flow.context[CONF_NAME] == "example" assert result["description_placeholders"] == {CONF_NAME: "example"} assert result["step_id"] == "zeroconf_confirm" @@ -80,12 +80,12 @@ async def test_zeroconf_connection_error( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker ) -> None: """Test we abort zeroconf flow on WLED connection error.""" - aioclient_mock.get("http://example.local/json/", exc=aiohttp.ClientError) + aioclient_mock.get("http://192.168.1.123/json/", exc=aiohttp.ClientError) result = await hass.config_entries.flow.async_init( config_flow.DOMAIN, context={"source": SOURCE_ZEROCONF}, - data={"hostname": "example.local.", "properties": {}}, + data={"host": "192.168.1.123", "hostname": "example.local.", "properties": {}}, ) assert result["reason"] == "connection_error" @@ -96,7 +96,7 @@ async def test_zeroconf_confirm_connection_error( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker ) -> None: """Test we abort zeroconf flow on WLED connection error.""" - aioclient_mock.get("http://example.com/json/", exc=aiohttp.ClientError) + aioclient_mock.get("http://192.168.1.123:80/json/", exc=aiohttp.ClientError) result = await hass.config_entries.flow.async_init( config_flow.DOMAIN, @@ -105,7 +105,7 @@ async def test_zeroconf_confirm_connection_error( CONF_HOST: "example.com", CONF_NAME: "test", }, - data={"hostname": "example.com.", "properties": {}}, + data={"host": "192.168.1.123", "hostname": "example.com.", "properties": {}}, ) assert result["reason"] == "connection_error" @@ -133,7 +133,7 @@ async def test_user_device_exists_abort( result = await hass.config_entries.flow.async_init( config_flow.DOMAIN, context={"source": SOURCE_USER}, - data={CONF_HOST: "example.local"}, + data={CONF_HOST: "192.168.1.123"}, ) assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT @@ -149,7 +149,7 @@ async def test_zeroconf_device_exists_abort( result = await hass.config_entries.flow.async_init( config_flow.DOMAIN, context={"source": SOURCE_ZEROCONF}, - data={"hostname": "example.local.", "properties": {}}, + data={"host": "192.168.1.123", "hostname": "example.local.", "properties": {}}, ) assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT @@ -165,7 +165,11 @@ async def test_zeroconf_with_mac_device_exists_abort( result = await hass.config_entries.flow.async_init( config_flow.DOMAIN, context={"source": SOURCE_ZEROCONF}, - data={"hostname": "example.local.", "properties": {CONF_MAC: "aabbccddeeff"}}, + data={ + "host": "192.168.1.123", + "hostname": "example.local.", + "properties": {CONF_MAC: "aabbccddeeff"}, + }, ) assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT @@ -177,7 +181,7 @@ async def test_full_user_flow_implementation( ) -> None: """Test the full manual user flow from start to finish.""" aioclient_mock.get( - "http://example.local:80/json/", + "http://192.168.1.123:80/json/", text=load_fixture("wled/rgb.json"), headers={"Content-Type": "application/json"}, ) @@ -190,12 +194,12 @@ async def test_full_user_flow_implementation( assert result["type"] == data_entry_flow.RESULT_TYPE_FORM result = await hass.config_entries.flow.async_configure( - result["flow_id"], user_input={CONF_HOST: "example.local"} + result["flow_id"], user_input={CONF_HOST: "192.168.1.123"} ) - assert result["data"][CONF_HOST] == "example.local" + assert result["data"][CONF_HOST] == "192.168.1.123" assert result["data"][CONF_MAC] == "aabbccddeeff" - assert result["title"] == "example.local" + assert result["title"] == "192.168.1.123" assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY @@ -204,7 +208,7 @@ async def test_full_zeroconf_flow_implementation( ) -> None: """Test the full manual user flow from start to finish.""" aioclient_mock.get( - "http://example.local:80/json/", + "http://192.168.1.123:80/json/", text=load_fixture("wled/rgb.json"), headers={"Content-Type": "application/json"}, ) @@ -213,19 +217,17 @@ async def test_full_zeroconf_flow_implementation( flow.hass = hass flow.context = {"source": SOURCE_ZEROCONF} result = await flow.async_step_zeroconf( - {"hostname": "example.local.", "properties": {}} + {"host": "192.168.1.123", "hostname": "example.local.", "properties": {}} ) - assert flow.context[CONF_HOST] == "example.local" + assert flow.context[CONF_HOST] == "192.168.1.123" assert flow.context[CONF_NAME] == "example" assert result["description_placeholders"] == {CONF_NAME: "example"} assert result["step_id"] == "zeroconf_confirm" assert result["type"] == data_entry_flow.RESULT_TYPE_FORM - result = await flow.async_step_zeroconf_confirm( - user_input={CONF_HOST: "example.local"} - ) - assert result["data"][CONF_HOST] == "example.local" + result = await flow.async_step_zeroconf_confirm(user_input={}) + assert result["data"][CONF_HOST] == "192.168.1.123" assert result["data"][CONF_MAC] == "aabbccddeeff" assert result["title"] == "example" assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY diff --git a/tests/components/wled/test_init.py b/tests/components/wled/test_init.py index d287ba6014a..053c5ebaca0 100644 --- a/tests/components/wled/test_init.py +++ b/tests/components/wled/test_init.py @@ -13,7 +13,7 @@ async def test_config_entry_not_ready( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker ) -> None: """Test the WLED configuration entry not ready.""" - aioclient_mock.get("http://example.local:80/json/", exc=aiohttp.ClientError) + aioclient_mock.get("http://192.168.1.123:80/json/", exc=aiohttp.ClientError) entry = await init_integration(hass, aioclient_mock) assert entry.state == ENTRY_STATE_SETUP_RETRY diff --git a/tests/components/wled/test_light.py b/tests/components/wled/test_light.py index c49ae6a12df..0009677cf18 100644 --- a/tests/components/wled/test_light.py +++ b/tests/components/wled/test_light.py @@ -141,7 +141,7 @@ async def test_light_error( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker, caplog ) -> None: """Test error handling of the WLED lights.""" - aioclient_mock.post("http://example.local:80/json/state", text="", status=400) + aioclient_mock.post("http://192.168.1.123:80/json/state", text="", status=400) await init_integration(hass, aioclient_mock) with patch("homeassistant.components.wled.WLEDDataUpdateCoordinator.async_refresh"): @@ -162,7 +162,7 @@ async def test_light_connection_error( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker ) -> None: """Test error handling of the WLED switches.""" - aioclient_mock.post("http://example.local:80/json/state", exc=aiohttp.ClientError) + aioclient_mock.post("http://192.168.1.123:80/json/state", exc=aiohttp.ClientError) await init_integration(hass, aioclient_mock) with patch("homeassistant.components.wled.WLEDDataUpdateCoordinator.async_refresh"): @@ -339,7 +339,7 @@ async def test_effect_service_error( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker, caplog ) -> None: """Test error handling of the WLED effect service.""" - aioclient_mock.post("http://example.local:80/json/state", text="", status=400) + aioclient_mock.post("http://192.168.1.123:80/json/state", text="", status=400) await init_integration(hass, aioclient_mock) with patch("homeassistant.components.wled.WLEDDataUpdateCoordinator.async_refresh"): diff --git a/tests/components/wled/test_switch.py b/tests/components/wled/test_switch.py index 5b315c87e9e..d140953b948 100644 --- a/tests/components/wled/test_switch.py +++ b/tests/components/wled/test_switch.py @@ -139,7 +139,7 @@ async def test_switch_error( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker, caplog ) -> None: """Test error handling of the WLED switches.""" - aioclient_mock.post("http://example.local:80/json/state", text="", status=400) + aioclient_mock.post("http://192.168.1.123:80/json/state", text="", status=400) await init_integration(hass, aioclient_mock) with patch("homeassistant.components.wled.WLEDDataUpdateCoordinator.async_refresh"): @@ -160,7 +160,7 @@ async def test_switch_connection_error( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker ) -> None: """Test error handling of the WLED switches.""" - aioclient_mock.post("http://example.local:80/json/state", exc=aiohttp.ClientError) + aioclient_mock.post("http://192.168.1.123:80/json/state", exc=aiohttp.ClientError) await init_integration(hass, aioclient_mock) with patch("homeassistant.components.wled.WLEDDataUpdateCoordinator.async_refresh"): From 5dae7f84518ae2ef07ee2b91a7a4ea2d6e2f0f4e Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Sat, 4 Apr 2020 07:41:39 +0200 Subject: [PATCH 33/63] Identify more Sonos radio stations with poor titles (#33609) --- homeassistant/components/sonos/media_player.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/sonos/media_player.py b/homeassistant/components/sonos/media_player.py index bb1179bb1e7..13484e6901b 100644 --- a/homeassistant/components/sonos/media_player.py +++ b/homeassistant/components/sonos/media_player.py @@ -614,11 +614,11 @@ class SonosEntity(MediaPlayerDevice): except (TypeError, KeyError, AttributeError): pass - # Radios without tagging can have the radio URI as title. Non-playing - # radios will not have a current title. In these cases we try to use - # the radio name instead. + # Radios without tagging can have part of the radio URI as title. + # Non-playing radios will not have a current title. In these cases we + # try to use the radio name instead. try: - if self.soco.is_radio_uri(self._media_title) or self.state != STATE_PLAYING: + if self._media_title in self._uri or self.state != STATE_PLAYING: self._media_title = variables["enqueued_transport_uri_meta_data"].title except (TypeError, KeyError, AttributeError): pass From 38b729b00ab250e462a89943734537ac54dad923 Mon Sep 17 00:00:00 2001 From: Chris Talkington Date: Sat, 4 Apr 2020 00:36:46 -0500 Subject: [PATCH 34/63] Use IP addresses instead of mDNS names when IPP discovered (#33610) * use discovery resolved host rather than mdns host. * Update __init__.py * Update test_config_flow.py * Update __init__.py * Update test_init.py * Update test_config_flow.py * Update test_config_flow.py * Update __init__.py * Update __init__.py * Update __init__.py * Update test_init.py * Update test_config_flow.py --- homeassistant/components/ipp/config_flow.py | 2 +- tests/components/ipp/__init__.py | 13 ++++--- tests/components/ipp/test_config_flow.py | 38 ++++++++------------- tests/components/ipp/test_init.py | 4 +-- 4 files changed, 23 insertions(+), 34 deletions(-) diff --git a/homeassistant/components/ipp/config_flow.py b/homeassistant/components/ipp/config_flow.py index 395a5f0db58..e95267e7803 100644 --- a/homeassistant/components/ipp/config_flow.py +++ b/homeassistant/components/ipp/config_flow.py @@ -85,7 +85,7 @@ class IPPFlowHandler(ConfigFlow, domain=DOMAIN): self.discovery_info.update( { - CONF_HOST: host, + CONF_HOST: discovery_info[CONF_HOST], CONF_PORT: port, CONF_SSL: tls, CONF_VERIFY_SSL: False, diff --git a/tests/components/ipp/__init__.py b/tests/components/ipp/__init__.py index 6bf162725e1..1c52c557024 100644 --- a/tests/components/ipp/__init__.py +++ b/tests/components/ipp/__init__.py @@ -22,13 +22,13 @@ IPP_ZEROCONF_SERVICE_TYPE = "_ipp._tcp.local." IPPS_ZEROCONF_SERVICE_TYPE = "_ipps._tcp.local." ZEROCONF_NAME = "EPSON123456" -ZEROCONF_HOST = "1.2.3.4" +ZEROCONF_HOST = "192.168.1.31" ZEROCONF_HOSTNAME = "EPSON123456.local." ZEROCONF_PORT = 631 MOCK_USER_INPUT = { - CONF_HOST: "EPSON123456.local", + CONF_HOST: "192.168.1.31", CONF_PORT: 361, CONF_SSL: False, CONF_VERIFY_SSL: False, @@ -37,7 +37,7 @@ MOCK_USER_INPUT = { MOCK_ZEROCONF_IPP_SERVICE_INFO = { CONF_TYPE: IPP_ZEROCONF_SERVICE_TYPE, - CONF_NAME: ZEROCONF_NAME, + CONF_NAME: f"{ZEROCONF_NAME}.{IPP_ZEROCONF_SERVICE_TYPE}", CONF_HOST: ZEROCONF_HOST, ATTR_HOSTNAME: ZEROCONF_HOSTNAME, CONF_PORT: ZEROCONF_PORT, @@ -46,7 +46,7 @@ MOCK_ZEROCONF_IPP_SERVICE_INFO = { MOCK_ZEROCONF_IPPS_SERVICE_INFO = { CONF_TYPE: IPPS_ZEROCONF_SERVICE_TYPE, - CONF_NAME: ZEROCONF_NAME, + CONF_NAME: f"{ZEROCONF_NAME}.{IPPS_ZEROCONF_SERVICE_TYPE}", CONF_HOST: ZEROCONF_HOST, ATTR_HOSTNAME: ZEROCONF_HOSTNAME, CONF_PORT: ZEROCONF_PORT, @@ -65,10 +65,9 @@ async def init_integration( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker, skip_setup: bool = False, ) -> MockConfigEntry: """Set up the IPP integration in Home Assistant.""" - fixture = "ipp/get-printer-attributes.bin" aioclient_mock.post( - "http://EPSON123456.local:631/ipp/print", + "http://192.168.1.31:631/ipp/print", content=load_fixture_binary(fixture), headers={"Content-Type": "application/ipp"}, ) @@ -77,7 +76,7 @@ async def init_integration( domain=DOMAIN, unique_id="cfe92100-67c4-11d4-a45f-f8d027761251", data={ - CONF_HOST: "EPSON123456.local", + CONF_HOST: "192.168.1.31", CONF_PORT: 631, CONF_SSL: False, CONF_VERIFY_SSL: True, diff --git a/tests/components/ipp/test_config_flow.py b/tests/components/ipp/test_config_flow.py index 5a2744eac51..0682929b7b8 100644 --- a/tests/components/ipp/test_config_flow.py +++ b/tests/components/ipp/test_config_flow.py @@ -38,7 +38,7 @@ async def test_show_zeroconf_form( ) -> None: """Test that the zeroconf confirmation form is served.""" aioclient_mock.post( - "http://EPSON123456.local:631/ipp/print", + "http://192.168.1.31:631/ipp/print", content=load_fixture_binary("ipp/get-printer-attributes.bin"), headers={"Content-Type": "application/ipp"}, ) @@ -57,9 +57,7 @@ async def test_connection_error( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker ) -> None: """Test we show user form on IPP connection error.""" - aioclient_mock.post( - "http://EPSON123456.local:631/ipp/print", exc=aiohttp.ClientError - ) + aioclient_mock.post("http://192.168.1.31:631/ipp/print", exc=aiohttp.ClientError) user_input = MOCK_USER_INPUT.copy() result = await hass.config_entries.flow.async_init( @@ -75,7 +73,7 @@ async def test_zeroconf_connection_error( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker ) -> None: """Test we abort zeroconf flow on IPP connection error.""" - aioclient_mock.post("http://EPSON123456.local/ipp/print", exc=aiohttp.ClientError) + aioclient_mock.post("http://192.168.1.31:631/ipp/print", exc=aiohttp.ClientError) discovery_info = MOCK_ZEROCONF_IPP_SERVICE_INFO.copy() result = await hass.config_entries.flow.async_init( @@ -90,17 +88,11 @@ async def test_zeroconf_confirm_connection_error( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker ) -> None: """Test we abort zeroconf flow on IPP connection error.""" - aioclient_mock.post("http://EPSON123456.local/ipp/print", exc=aiohttp.ClientError) + aioclient_mock.post("http://192.168.1.31:631/ipp/print", exc=aiohttp.ClientError) discovery_info = MOCK_ZEROCONF_IPP_SERVICE_INFO.copy() result = await hass.config_entries.flow.async_init( - DOMAIN, - context={ - "source": SOURCE_ZEROCONF, - CONF_HOST: "EPSON123456.local", - CONF_NAME: "EPSON123456", - }, - data=discovery_info, + DOMAIN, context={"source": SOURCE_ZEROCONF}, data=discovery_info ) assert result["type"] == RESULT_TYPE_ABORT @@ -112,7 +104,7 @@ async def test_user_connection_upgrade_required( ) -> None: """Test we show the user form if connection upgrade required by server.""" aioclient_mock.post( - "http://EPSON123456.local:631/ipp/print", exc=IPPConnectionUpgradeRequired + "http://192.168.1.31:631/ipp/print", exc=IPPConnectionUpgradeRequired ) user_input = MOCK_USER_INPUT.copy() @@ -130,7 +122,7 @@ async def test_zeroconf_connection_upgrade_required( ) -> None: """Test we abort zeroconf flow on IPP connection error.""" aioclient_mock.post( - "http://EPSON123456.local/ipp/print", exc=IPPConnectionUpgradeRequired + "http://192.168.1.31:631/ipp/print", exc=IPPConnectionUpgradeRequired ) discovery_info = MOCK_ZEROCONF_IPP_SERVICE_INFO.copy() @@ -193,7 +185,7 @@ async def test_full_user_flow_implementation( ) -> None: """Test the full manual user flow from start to finish.""" aioclient_mock.post( - "http://EPSON123456.local:631/ipp/print", + "http://192.168.1.31:631/ipp/print", content=load_fixture_binary("ipp/get-printer-attributes.bin"), headers={"Content-Type": "application/ipp"}, ) @@ -207,14 +199,14 @@ async def test_full_user_flow_implementation( result = await hass.config_entries.flow.async_configure( result["flow_id"], - user_input={CONF_HOST: "EPSON123456.local", CONF_BASE_PATH: "/ipp/print"}, + user_input={CONF_HOST: "192.168.1.31", CONF_BASE_PATH: "/ipp/print"}, ) assert result["type"] == RESULT_TYPE_CREATE_ENTRY - assert result["title"] == "EPSON123456.local" + assert result["title"] == "192.168.1.31" assert result["data"] - assert result["data"][CONF_HOST] == "EPSON123456.local" + assert result["data"][CONF_HOST] == "192.168.1.31" assert result["data"][CONF_UUID] == "cfe92100-67c4-11d4-a45f-f8d027761251" @@ -223,7 +215,7 @@ async def test_full_zeroconf_flow_implementation( ) -> None: """Test the full manual user flow from start to finish.""" aioclient_mock.post( - "http://EPSON123456.local:631/ipp/print", + "http://192.168.1.31:631/ipp/print", content=load_fixture_binary("ipp/get-printer-attributes.bin"), headers={"Content-Type": "application/ipp"}, ) @@ -244,7 +236,7 @@ async def test_full_zeroconf_flow_implementation( assert result["title"] == "EPSON123456" assert result["data"] - assert result["data"][CONF_HOST] == "EPSON123456.local" + assert result["data"][CONF_HOST] == "192.168.1.31" assert result["data"][CONF_UUID] == "cfe92100-67c4-11d4-a45f-f8d027761251" assert not result["data"][CONF_SSL] @@ -254,7 +246,7 @@ async def test_full_zeroconf_tls_flow_implementation( ) -> None: """Test the full manual user flow from start to finish.""" aioclient_mock.post( - "https://EPSON123456.local:631/ipp/print", + "https://192.168.1.31:631/ipp/print", content=load_fixture_binary("ipp/get-printer-attributes.bin"), headers={"Content-Type": "application/ipp"}, ) @@ -276,7 +268,7 @@ async def test_full_zeroconf_tls_flow_implementation( assert result["title"] == "EPSON123456" assert result["data"] - assert result["data"][CONF_HOST] == "EPSON123456.local" + assert result["data"][CONF_HOST] == "192.168.1.31" assert result["data"][CONF_NAME] == "EPSON123456" assert result["data"][CONF_UUID] == "cfe92100-67c4-11d4-a45f-f8d027761251" assert result["data"][CONF_SSL] diff --git a/tests/components/ipp/test_init.py b/tests/components/ipp/test_init.py index 7d3d0692e28..2ec11a1e937 100644 --- a/tests/components/ipp/test_init.py +++ b/tests/components/ipp/test_init.py @@ -17,9 +17,7 @@ async def test_config_entry_not_ready( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker ) -> None: """Test the IPP configuration entry not ready.""" - aioclient_mock.post( - "http://EPSON123456.local:631/ipp/print", exc=aiohttp.ClientError - ) + aioclient_mock.post("http://192.168.1.31:631/ipp/print", exc=aiohttp.ClientError) entry = await init_integration(hass, aioclient_mock) assert entry.state == ENTRY_STATE_SETUP_RETRY From 52f710528f5f199d910ac2ffeb3a56078c405eb5 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 4 Apr 2020 10:19:58 -0500 Subject: [PATCH 35/63] Handle race condition in harmony setup (#33611) * Handle race condition in harmony setup If the remote was discovered via ssdp before the yaml config import happened, the unique id would already be set and the import would abort. * Update homeassistant/components/harmony/config_flow.py Co-Authored-By: Paulus Schoutsen * reduce * black Co-authored-by: Paulus Schoutsen --- homeassistant/components/harmony/config_flow.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/harmony/config_flow.py b/homeassistant/components/harmony/config_flow.py index 9d9c9dfb8e9..8d43b2d69ca 100644 --- a/homeassistant/components/harmony/config_flow.py +++ b/homeassistant/components/harmony/config_flow.py @@ -128,8 +128,11 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): async def async_step_import(self, validated_input): """Handle import.""" - await self.async_set_unique_id(validated_input[UNIQUE_ID]) + await self.async_set_unique_id( + validated_input[UNIQUE_ID], raise_on_progress=False + ) self._abort_if_unique_id_configured() + # Everything was validated in remote async_setup_platform # all we do now is create. return await self._async_create_entry_from_valid_input( @@ -149,14 +152,8 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): # Options from yaml are preserved, we will pull them out when # we setup the config entry data.update(_options_from_user_input(user_input)) - return self.async_create_entry(title=validated[CONF_NAME], data=data) - def _host_already_configured(self, user_input): - """See if we already have a harmony matching user input configured.""" - existing_hosts = { - entry.data[CONF_HOST] for entry in self._async_current_entries() - } - return user_input[CONF_HOST] in existing_hosts + return self.async_create_entry(title=validated[CONF_NAME], data=data) def _options_from_user_input(user_input): From f5eafbe7609e72f0fe9a9a3d8be0726afc70ff11 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sat, 4 Apr 2020 14:51:12 +0200 Subject: [PATCH 36/63] Bump twentemilieu to 0.3.0 (#33622) * Bump twentemilieu to 0.3.0 * Fix tests --- homeassistant/components/twentemilieu/manifest.json | 3 +-- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- tests/components/twentemilieu/test_config_flow.py | 8 ++++---- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/twentemilieu/manifest.json b/homeassistant/components/twentemilieu/manifest.json index 9444e33700e..da4dc074262 100644 --- a/homeassistant/components/twentemilieu/manifest.json +++ b/homeassistant/components/twentemilieu/manifest.json @@ -3,7 +3,6 @@ "name": "Twente Milieu", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/twentemilieu", - "requirements": ["twentemilieu==0.2.0"], - "dependencies": [], + "requirements": ["twentemilieu==0.3.0"], "codeowners": ["@frenck"] } diff --git a/requirements_all.txt b/requirements_all.txt index 5569f113d97..2b765234e81 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2047,7 +2047,7 @@ transmissionrpc==0.11 tuyaha==0.0.5 # homeassistant.components.twentemilieu -twentemilieu==0.2.0 +twentemilieu==0.3.0 # homeassistant.components.twilio twilio==6.32.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index e0f6ff033ed..414fdf493f7 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -744,7 +744,7 @@ toonapilib==3.2.4 transmissionrpc==0.11 # homeassistant.components.twentemilieu -twentemilieu==0.2.0 +twentemilieu==0.3.0 # homeassistant.components.twilio twilio==6.32.0 diff --git a/tests/components/twentemilieu/test_config_flow.py b/tests/components/twentemilieu/test_config_flow.py index 1ccbe7a58a9..7dd19e755f3 100644 --- a/tests/components/twentemilieu/test_config_flow.py +++ b/tests/components/twentemilieu/test_config_flow.py @@ -34,7 +34,7 @@ async def test_show_set_form(hass): async def test_connection_error(hass, aioclient_mock): """Test we show user form on Twente Milieu connection error.""" aioclient_mock.post( - "https://wasteapi.2go-mobile.com/api/FetchAdress", exc=aiohttp.ClientError + "https://twentemilieuapi.ximmio.com/api/FetchAdress", exc=aiohttp.ClientError ) flow = config_flow.TwenteMilieuFlowHandler() @@ -49,7 +49,7 @@ async def test_connection_error(hass, aioclient_mock): async def test_invalid_address(hass, aioclient_mock): """Test we show user form on Twente Milieu invalid address error.""" aioclient_mock.post( - "https://wasteapi.2go-mobile.com/api/FetchAdress", + "https://twentemilieuapi.ximmio.com/api/FetchAdress", json={"dataList": []}, headers={"Content-Type": "application/json"}, ) @@ -70,7 +70,7 @@ async def test_address_already_set_up(hass, aioclient_mock): ) aioclient_mock.post( - "https://wasteapi.2go-mobile.com/api/FetchAdress", + "https://twentemilieuapi.ximmio.com/api/FetchAdress", json={"dataList": [{"UniqueId": "12345"}]}, headers={"Content-Type": "application/json"}, ) @@ -86,7 +86,7 @@ async def test_address_already_set_up(hass, aioclient_mock): async def test_full_flow_implementation(hass, aioclient_mock): """Test registering an integration and finishing flow works.""" aioclient_mock.post( - "https://wasteapi.2go-mobile.com/api/FetchAdress", + "https://twentemilieuapi.ximmio.com/api/FetchAdress", json={"dataList": [{"UniqueId": "12345"}]}, headers={"Content-Type": "application/json"}, ) From 71803cbdef712f480934ca9072497b4274dfae18 Mon Sep 17 00:00:00 2001 From: Alexei Chetroi Date: Sat, 4 Apr 2020 12:58:43 -0400 Subject: [PATCH 37/63] Update zha dependencies (#33639) --- homeassistant/components/zha/manifest.json | 4 ++-- requirements_all.txt | 4 ++-- requirements_test_all.txt | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/zha/manifest.json b/homeassistant/components/zha/manifest.json index 09dcf71d027..66b89724a2f 100644 --- a/homeassistant/components/zha/manifest.json +++ b/homeassistant/components/zha/manifest.json @@ -4,11 +4,11 @@ "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/zha", "requirements": [ - "bellows-homeassistant==0.15.1", + "bellows-homeassistant==0.15.2", "zha-quirks==0.0.38", "zigpy-cc==0.3.1", "zigpy-deconz==0.8.0", - "zigpy-homeassistant==0.18.0", + "zigpy-homeassistant==0.18.1", "zigpy-xbee-homeassistant==0.11.0", "zigpy-zigate==0.5.1" ], diff --git a/requirements_all.txt b/requirements_all.txt index 2b765234e81..93f8621355f 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -317,7 +317,7 @@ beautifulsoup4==4.8.2 beewi_smartclim==0.0.7 # homeassistant.components.zha -bellows-homeassistant==0.15.1 +bellows-homeassistant==0.15.2 # homeassistant.components.bmw_connected_drive bimmer_connected==0.7.1 @@ -2191,7 +2191,7 @@ zigpy-cc==0.3.1 zigpy-deconz==0.8.0 # homeassistant.components.zha -zigpy-homeassistant==0.18.0 +zigpy-homeassistant==0.18.1 # homeassistant.components.zha zigpy-xbee-homeassistant==0.11.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 414fdf493f7..c4d80a32788 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -131,7 +131,7 @@ av==6.1.2 axis==25 # homeassistant.components.zha -bellows-homeassistant==0.15.1 +bellows-homeassistant==0.15.2 # homeassistant.components.bom bomradarloop==0.1.4 @@ -807,7 +807,7 @@ zigpy-cc==0.3.1 zigpy-deconz==0.8.0 # homeassistant.components.zha -zigpy-homeassistant==0.18.0 +zigpy-homeassistant==0.18.1 # homeassistant.components.zha zigpy-xbee-homeassistant==0.11.0 From 30a391b88b93bfd0eb8ae4c19cfd35525a90e96e Mon Sep 17 00:00:00 2001 From: jjlawren Date: Sun, 5 Apr 2020 01:21:20 -0500 Subject: [PATCH 38/63] Plex logging additions & cleanup (#33681) --- homeassistant/components/plex/server.py | 16 ++++++++----- tests/components/plex/test_init.py | 31 +++++++++++-------------- tests/components/plex/test_server.py | 2 +- 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/homeassistant/components/plex/server.py b/homeassistant/components/plex/server.py index f2a4908e119..80e7c92640a 100644 --- a/homeassistant/components/plex/server.py +++ b/homeassistant/components/plex/server.py @@ -159,6 +159,7 @@ class PlexServer: for account in self._plex_server.systemAccounts() if account.name ] + _LOGGER.debug("Linked accounts: %s", self.accounts) owner_account = [ account.name @@ -167,6 +168,7 @@ class PlexServer: ] if owner_account: self._owner_username = owner_account[0] + _LOGGER.debug("Server owner found: '%s'", self._owner_username) self._version = self._plex_server.version @@ -209,11 +211,11 @@ class PlexServer: try: devices = self._plex_server.clients() sessions = self._plex_server.sessions() - except plexapi.exceptions.BadRequest: - _LOGGER.exception("Error requesting Plex client data from server") - return - except requests.exceptions.RequestException as ex: - _LOGGER.warning( + except ( + plexapi.exceptions.BadRequest, + requests.exceptions.RequestException, + ) as ex: + _LOGGER.error( "Could not connect to Plex server: %s (%s)", self.friendly_name, ex ) return @@ -234,7 +236,9 @@ class PlexServer: for player in session.players: if session_username and session_username not in monitored_users: ignored_clients.add(player.machineIdentifier) - _LOGGER.debug("Ignoring Plex client owned by %s", session_username) + _LOGGER.debug( + "Ignoring Plex client owned by '%s'", session_username + ) continue self._known_idle.discard(player.machineIdentifier) available_clients.setdefault( diff --git a/tests/components/plex/test_init.py b/tests/components/plex/test_init.py index 1aef7878df5..cd1ea8725bd 100644 --- a/tests/components/plex/test_init.py +++ b/tests/components/plex/test_init.py @@ -116,24 +116,21 @@ async def test_setup_with_config_entry(hass, caplog): await trigger_plex_update(hass, server_id) - with patch.object( - mock_plex_server, "clients", side_effect=plexapi.exceptions.BadRequest - ) as patched_clients_bad_request: - await trigger_plex_update(hass, server_id) + for test_exception in ( + plexapi.exceptions.BadRequest, + requests.exceptions.RequestException, + ): + with patch.object( + mock_plex_server, "clients", side_effect=test_exception + ) as patched_clients_bad_request: + await trigger_plex_update(hass, server_id) - assert patched_clients_bad_request.called - assert "Error requesting Plex client data from server" in caplog.text - - with patch.object( - mock_plex_server, "clients", side_effect=requests.exceptions.RequestException - ) as patched_clients_requests_exception: - await trigger_plex_update(hass, server_id) - - assert patched_clients_requests_exception.called - assert ( - f"Could not connect to Plex server: {mock_plex_server.friendlyName}" - in caplog.text - ) + assert patched_clients_bad_request.called + assert ( + f"Could not connect to Plex server: {mock_plex_server.friendlyName}" + in caplog.text + ) + caplog.clear() async def test_set_config_entry_unique_id(hass): diff --git a/tests/components/plex/test_server.py b/tests/components/plex/test_server.py index 242c0fe5504..3b70f30189a 100644 --- a/tests/components/plex/test_server.py +++ b/tests/components/plex/test_server.py @@ -94,7 +94,7 @@ async def test_new_ignored_users_available(hass, caplog): assert len(monitored_users) == 1 assert len(ignored_users) == 2 for ignored_user in ignored_users: - assert f"Ignoring Plex client owned by {ignored_user}" in caplog.text + assert f"Ignoring Plex client owned by '{ignored_user}'" in caplog.text sensor = hass.states.get("sensor.plex_plex_server_1") assert sensor.state == str(len(mock_plex_server.accounts)) From dd0fd36049d3be1723c71b7ad7f1965559de2670 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sun, 5 Apr 2020 01:21:44 -0500 Subject: [PATCH 39/63] Handle float values for homekit lightning (#33683) * Handle float values for homekit lightning * Empty commit to rerun CI --- .../components/homekit/type_lights.py | 28 ++++++++----------- tests/components/homekit/test_type_lights.py | 20 +++++++++++++ 2 files changed, 32 insertions(+), 16 deletions(-) diff --git a/homeassistant/components/homekit/type_lights.py b/homeassistant/components/homekit/type_lights.py index 1720c2c58c8..e38af1a04eb 100644 --- a/homeassistant/components/homekit/type_lights.py +++ b/homeassistant/components/homekit/type_lights.py @@ -149,7 +149,7 @@ class Light(HomeAccessory): # Handle Brightness if CHAR_BRIGHTNESS in self.chars: brightness = new_state.attributes.get(ATTR_BRIGHTNESS) - if isinstance(brightness, int): + if isinstance(brightness, (int, float)): brightness = round(brightness / 255 * 100, 0) # The homeassistant component might report its brightness as 0 but is # not off. But 0 is a special value in homekit. When you turn on a @@ -169,22 +169,18 @@ class Light(HomeAccessory): # Handle color temperature if CHAR_COLOR_TEMPERATURE in self.chars: color_temperature = new_state.attributes.get(ATTR_COLOR_TEMP) - if ( - isinstance(color_temperature, int) - and self.char_color_temperature.value != color_temperature - ): - self.char_color_temperature.set_value(color_temperature) + if isinstance(color_temperature, (int, float)): + color_temperature = round(color_temperature, 0) + if self.char_color_temperature.value != color_temperature: + self.char_color_temperature.set_value(color_temperature) # Handle Color if CHAR_SATURATION in self.chars and CHAR_HUE in self.chars: hue, saturation = new_state.attributes.get(ATTR_HS_COLOR, (None, None)) - if ( - isinstance(hue, (int, float)) - and isinstance(saturation, (int, float)) - and ( - hue != self.char_hue.value - or saturation != self.char_saturation.value - ) - ): - self.char_hue.set_value(hue) - self.char_saturation.set_value(saturation) + if isinstance(hue, (int, float)) and isinstance(saturation, (int, float)): + hue = round(hue, 0) + saturation = round(saturation, 0) + if hue != self.char_hue.value: + self.char_hue.set_value(hue) + if saturation != self.char_saturation.value: + self.char_saturation.set_value(saturation) diff --git a/tests/components/homekit/test_type_lights.py b/tests/components/homekit/test_type_lights.py index 888ad87a848..3ee2e61cc72 100644 --- a/tests/components/homekit/test_type_lights.py +++ b/tests/components/homekit/test_type_lights.py @@ -235,6 +235,17 @@ async def test_light_brightness(hass, hk_driver, cls, events, driver): await hass.async_block_till_done() assert acc.char_brightness.value == 1 + # Ensure floats are handled + hass.states.async_set(entity_id, STATE_ON, {ATTR_BRIGHTNESS: 55.66}) + await hass.async_block_till_done() + assert acc.char_brightness.value == 22 + hass.states.async_set(entity_id, STATE_ON, {ATTR_BRIGHTNESS: 108.4}) + await hass.async_block_till_done() + assert acc.char_brightness.value == 43 + hass.states.async_set(entity_id, STATE_ON, {ATTR_BRIGHTNESS: 0.0}) + await hass.async_block_till_done() + assert acc.char_brightness.value == 1 + async def test_light_color_temperature(hass, hk_driver, cls, events, driver): """Test light with color temperature.""" @@ -417,6 +428,11 @@ async def test_light_set_brightness_and_color(hass, hk_driver, cls, events, driv await hass.async_block_till_done() assert acc.char_brightness.value == 40 + hass.states.async_set(entity_id, STATE_ON, {ATTR_HS_COLOR: (4.5, 9.2)}) + await hass.async_block_till_done() + assert acc.char_hue.value == 4 + assert acc.char_saturation.value == 9 + # Set from HomeKit call_turn_on = async_mock_service(hass, DOMAIN, "turn_on") @@ -489,6 +505,10 @@ async def test_light_set_brightness_and_color_temp( await hass.async_block_till_done() assert acc.char_brightness.value == 40 + hass.states.async_set(entity_id, STATE_ON, {ATTR_COLOR_TEMP: (224.14)}) + await hass.async_block_till_done() + assert acc.char_color_temperature.value == 224 + # Set from HomeKit call_turn_on = async_mock_service(hass, DOMAIN, "turn_on") From 0f39296251d52c63223a77d6acf30440617374e3 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 4 Apr 2020 23:54:06 -0700 Subject: [PATCH 40/63] Bumped version to 0.108.0b3 --- homeassistant/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index e4e08f76356..981d5e41916 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -1,7 +1,7 @@ """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 MINOR_VERSION = 108 -PATCH_VERSION = "0b2" +PATCH_VERSION = "0b3" __short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__ = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER = (3, 7, 0) From 5fd8763c3c4cb0e3ec9ec519b49bfed6c504a2fd Mon Sep 17 00:00:00 2001 From: jjlawren Date: Mon, 6 Apr 2020 12:15:11 -0500 Subject: [PATCH 41/63] Skip parsing Plex session if incomplete (#33534) * Skip parsing session if incomplete * Schedule an update if session data is incomplete * Mark as callback * Remove update() & convert to async, abort if any session is incomplete --- homeassistant/components/plex/sensor.py | 109 ++++++++++++++---------- 1 file changed, 62 insertions(+), 47 deletions(-) diff --git a/homeassistant/components/plex/sensor.py b/homeassistant/components/plex/sensor.py index b1e93aec8c0..65d1ba0371b 100644 --- a/homeassistant/components/plex/sensor.py +++ b/homeassistant/components/plex/sensor.py @@ -2,14 +2,16 @@ import logging from homeassistant.core import callback -from homeassistant.helpers.dispatcher import async_dispatcher_connect +from homeassistant.helpers.dispatcher import async_dispatcher_connect, dispatcher_send from homeassistant.helpers.entity import Entity +from homeassistant.helpers.event import async_call_later from .const import ( CONF_SERVER_IDENTIFIER, DISPATCHERS, DOMAIN as PLEX_DOMAIN, NAME_FORMAT, + PLEX_UPDATE_PLATFORMS_SIGNAL, PLEX_UPDATE_SENSOR_SIGNAL, SERVERS, ) @@ -55,11 +57,67 @@ class PlexSensor(Entity): ) self.hass.data[PLEX_DOMAIN][DISPATCHERS][server_id].append(unsub) - @callback - def async_refresh_sensor(self, sessions): + async def async_refresh_sensor(self, sessions): """Set instance object and trigger an entity state update.""" + _LOGGER.debug("Refreshing sensor [%s]", self.unique_id) + self.sessions = sessions - self.async_schedule_update_ha_state(True) + + @callback + def update_plex(_): + dispatcher_send( + self.hass, + PLEX_UPDATE_PLATFORMS_SIGNAL.format(self._server.machine_identifier), + ) + + now_playing = [] + for sess in self.sessions: + if sess.TYPE == "photo": + _LOGGER.debug("Photo session detected, skipping: %s", sess) + continue + if not sess.usernames: + _LOGGER.debug( + "Session temporarily incomplete, will try again: %s", sess + ) + async_call_later(self.hass, 5, update_plex) + return + user = sess.usernames[0] + device = sess.players[0].title + now_playing_user = f"{user} - {device}" + now_playing_title = "" + + if sess.TYPE in ["clip", "episode"]: + # example: + # "Supernatural (2005) - s01e13 - Route 666" + season_title = sess.grandparentTitle + show = await self.hass.async_add_executor_job(sess.show) + if show.year is not None: + season_title += f" ({show.year!s})" + season_episode = sess.seasonEpisode + episode_title = sess.title + now_playing_title = ( + f"{season_title} - {season_episode} - {episode_title}" + ) + elif sess.TYPE == "track": + # example: + # "Billy Talent - Afraid of Heights - Afraid of Heights" + track_artist = sess.grandparentTitle + track_album = sess.parentTitle + track_title = sess.title + now_playing_title = f"{track_artist} - {track_album} - {track_title}" + else: + # example: + # "picture_of_last_summer_camp (2015)" + # "The Incredible Hulk (2008)" + now_playing_title = sess.title + if sess.year is not None: + now_playing_title += f" ({sess.year})" + + now_playing.append((now_playing_user, now_playing_title)) + self._state = len(self.sessions) + self._now_playing = now_playing + + self.async_write_ha_state() @property def name(self): @@ -96,49 +154,6 @@ class PlexSensor(Entity): """Return the state attributes.""" return {content[0]: content[1] for content in self._now_playing} - def update(self): - """Update method for Plex sensor.""" - _LOGGER.debug("Refreshing sensor [%s]", self.unique_id) - now_playing = [] - for sess in self.sessions: - if sess.TYPE == "photo": - _LOGGER.debug("Photo session detected, skipping: %s", sess) - continue - user = sess.usernames[0] - device = sess.players[0].title - now_playing_user = f"{user} - {device}" - now_playing_title = "" - - if sess.TYPE in ["clip", "episode"]: - # example: - # "Supernatural (2005) - s01e13 - Route 666" - season_title = sess.grandparentTitle - if sess.show().year is not None: - season_title += f" ({sess.show().year!s})" - season_episode = sess.seasonEpisode - episode_title = sess.title - now_playing_title = ( - f"{season_title} - {season_episode} - {episode_title}" - ) - elif sess.TYPE == "track": - # example: - # "Billy Talent - Afraid of Heights - Afraid of Heights" - track_artist = sess.grandparentTitle - track_album = sess.parentTitle - track_title = sess.title - now_playing_title = f"{track_artist} - {track_album} - {track_title}" - else: - # example: - # "picture_of_last_summer_camp (2015)" - # "The Incredible Hulk (2008)" - now_playing_title = sess.title - if sess.year is not None: - now_playing_title += f" ({sess.year})" - - now_playing.append((now_playing_user, now_playing_title)) - self._state = len(self.sessions) - self._now_playing = now_playing - @property def device_info(self): """Return a device description for device registry.""" From 49dc7ffb5be5826d08d088c7f944a797c740ac5d Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sun, 5 Apr 2020 17:23:20 -0500 Subject: [PATCH 42/63] Fix nuheat response error checking (#33712) This integration was checking request instead of response for the error code. --- homeassistant/components/nuheat/__init__.py | 2 +- .../components/nuheat/config_flow.py | 2 +- tests/components/nuheat/test_config_flow.py | 25 +++++++++++++++++-- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/nuheat/__init__.py b/homeassistant/components/nuheat/__init__.py index ff90bb26530..ca47f831370 100644 --- a/homeassistant/components/nuheat/__init__.py +++ b/homeassistant/components/nuheat/__init__.py @@ -78,7 +78,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry): except requests.exceptions.Timeout: raise ConfigEntryNotReady except requests.exceptions.HTTPError as ex: - if ex.request.status_code > 400 and ex.request.status_code < 500: + if ex.response.status_code > 400 and ex.response.status_code < 500: _LOGGER.error("Failed to login to nuheat: %s", ex) return False raise ConfigEntryNotReady diff --git a/homeassistant/components/nuheat/config_flow.py b/homeassistant/components/nuheat/config_flow.py index 082cb899ec5..4f12f590057 100644 --- a/homeassistant/components/nuheat/config_flow.py +++ b/homeassistant/components/nuheat/config_flow.py @@ -34,7 +34,7 @@ async def validate_input(hass: core.HomeAssistant, data): except requests.exceptions.Timeout: raise CannotConnect except requests.exceptions.HTTPError as ex: - if ex.request.status_code > 400 and ex.request.status_code < 500: + if ex.response.status_code > 400 and ex.response.status_code < 500: raise InvalidAuth raise CannotConnect # diff --git a/tests/components/nuheat/test_config_flow.py b/tests/components/nuheat/test_config_flow.py index 95987404e44..d6e10e1dc7c 100644 --- a/tests/components/nuheat/test_config_flow.py +++ b/tests/components/nuheat/test_config_flow.py @@ -1,5 +1,5 @@ """Test the NuHeat config flow.""" -from asynctest import patch +from asynctest import MagicMock, patch import requests from homeassistant import config_entries, setup @@ -100,6 +100,24 @@ async def test_form_invalid_auth(hass): with patch( "homeassistant.components.nuheat.config_flow.nuheat.NuHeat.authenticate", side_effect=Exception, + ): + result = await hass.config_entries.flow.async_configure( + result["flow_id"], + { + CONF_SERIAL_NUMBER: "12345", + CONF_USERNAME: "test-username", + CONF_PASSWORD: "test-password", + }, + ) + + assert result["type"] == "form" + assert result["errors"] == {"base": "invalid_auth"} + + response_mock = MagicMock() + type(response_mock).status_code = 401 + with patch( + "homeassistant.components.nuheat.config_flow.nuheat.NuHeat.authenticate", + side_effect=requests.HTTPError(response=response_mock), ): result2 = await hass.config_entries.flow.async_configure( result["flow_id"], @@ -120,12 +138,15 @@ async def test_form_invalid_thermostat(hass): DOMAIN, context={"source": config_entries.SOURCE_USER} ) + response_mock = MagicMock() + type(response_mock).status_code = 500 + with patch( "homeassistant.components.nuheat.config_flow.nuheat.NuHeat.authenticate", return_value=True, ), patch( "homeassistant.components.nuheat.config_flow.nuheat.NuHeat.get_thermostat", - side_effect=requests.exceptions.HTTPError, + side_effect=requests.HTTPError(response=response_mock), ): result2 = await hass.config_entries.flow.async_configure( result["flow_id"], From 565b54d8527d6a843a47f2d8c9920f1f23e41bc5 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sun, 5 Apr 2020 17:25:31 -0500 Subject: [PATCH 43/63] Fix rachio import of run time from yaml (#33723) Importing from yaml would fail for rachio when copying the manual run time to the option flow. --- homeassistant/components/rachio/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/rachio/__init__.py b/homeassistant/components/rachio/__init__.py index 9bd3b16d12c..8879bd6965c 100644 --- a/homeassistant/components/rachio/__init__.py +++ b/homeassistant/components/rachio/__init__.py @@ -86,7 +86,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry): if not options.get(CONF_MANUAL_RUN_MINS) and config.get(CONF_MANUAL_RUN_MINS): options_copy = options.copy() options_copy[CONF_MANUAL_RUN_MINS] = config[CONF_MANUAL_RUN_MINS] - hass.config_entries.async_update_entry(options=options_copy) + hass.config_entries.async_update_entry(entry, options=options_copy) # Configure API api_key = config[CONF_API_KEY] From 8392406476018b5688be595eab864f6df114c1b1 Mon Sep 17 00:00:00 2001 From: jjlawren Date: Mon, 6 Apr 2020 11:57:51 -0500 Subject: [PATCH 44/63] Fix Plex debounce wrapper (#33730) * Fix debounce wrapper by converting to async * Review suggestions --- homeassistant/components/plex/__init__.py | 2 +- homeassistant/components/plex/media_player.py | 8 ------- homeassistant/components/plex/server.py | 21 ++++++++++++------- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/homeassistant/components/plex/__init__.py b/homeassistant/components/plex/__init__.py index a73111793a7..ff36f4f5c32 100644 --- a/homeassistant/components/plex/__init__.py +++ b/homeassistant/components/plex/__init__.py @@ -175,7 +175,7 @@ async def async_setup_entry(hass, entry): unsub = async_dispatcher_connect( hass, PLEX_UPDATE_PLATFORMS_SIGNAL.format(server_id), - plex_server.update_platforms, + plex_server.async_update_platforms, ) hass.data[PLEX_DOMAIN][DISPATCHERS].setdefault(server_id, []) hass.data[PLEX_DOMAIN][DISPATCHERS][server_id].append(unsub) diff --git a/homeassistant/components/plex/media_player.py b/homeassistant/components/plex/media_player.py index aea8ecadaff..e09244739e9 100644 --- a/homeassistant/components/plex/media_player.py +++ b/homeassistant/components/plex/media_player.py @@ -502,7 +502,6 @@ class PlexMediaPlayer(MediaPlayerDevice): if self.device and "playback" in self._device_protocol_capabilities: self.device.setVolume(int(volume * 100), self._active_media_plexapi_type) self._volume_level = volume # store since we can't retrieve - self.plex_server.update_platforms() @property def volume_level(self): @@ -541,31 +540,26 @@ class PlexMediaPlayer(MediaPlayerDevice): """Send play command.""" if self.device and "playback" in self._device_protocol_capabilities: self.device.play(self._active_media_plexapi_type) - self.plex_server.update_platforms() def media_pause(self): """Send pause command.""" if self.device and "playback" in self._device_protocol_capabilities: self.device.pause(self._active_media_plexapi_type) - self.plex_server.update_platforms() def media_stop(self): """Send stop command.""" if self.device and "playback" in self._device_protocol_capabilities: self.device.stop(self._active_media_plexapi_type) - self.plex_server.update_platforms() def media_next_track(self): """Send next track command.""" if self.device and "playback" in self._device_protocol_capabilities: self.device.skipNext(self._active_media_plexapi_type) - self.plex_server.update_platforms() def media_previous_track(self): """Send previous track command.""" if self.device and "playback" in self._device_protocol_capabilities: self.device.skipPrevious(self._active_media_plexapi_type) - self.plex_server.update_platforms() def play_media(self, media_type, media_id, **kwargs): """Play a piece of media.""" @@ -602,8 +596,6 @@ class PlexMediaPlayer(MediaPlayerDevice): except requests.exceptions.ConnectTimeout: _LOGGER.error("Timed out playing on %s", self.name) - self.plex_server.update_platforms() - def _get_music_media(self, library_name, src): """Find music media and return a Plex media object.""" artist_name = src["artist_name"] diff --git a/homeassistant/components/plex/server.py b/homeassistant/components/plex/server.py index 80e7c92640a..a7b66c3a3ba 100644 --- a/homeassistant/components/plex/server.py +++ b/homeassistant/components/plex/server.py @@ -12,7 +12,7 @@ import requests.exceptions from homeassistant.components.media_player import DOMAIN as MP_DOMAIN from homeassistant.const import CONF_TOKEN, CONF_URL, CONF_VERIFY_SSL -from homeassistant.helpers.dispatcher import dispatcher_send +from homeassistant.helpers.dispatcher import async_dispatcher_send, dispatcher_send from homeassistant.helpers.event import async_call_later from .const import ( @@ -51,10 +51,10 @@ def debounce(func): """Handle call_later callback.""" nonlocal unsub unsub = None - await self.hass.async_add_executor_job(func, self) + await func(self) @wraps(func) - def wrapper(self): + async def wrapper(self): """Schedule async callback.""" nonlocal unsub if unsub: @@ -186,8 +186,12 @@ class PlexServer: session, ) + def _fetch_platform_data(self): + """Fetch all data from the Plex server in a single method.""" + return (self._plex_server.clients(), self._plex_server.sessions()) + @debounce - def update_platforms(self): + async def async_update_platforms(self): """Update the platform entities.""" _LOGGER.debug("Updating devices") @@ -209,8 +213,9 @@ class PlexServer: monitored_users.add(new_user) try: - devices = self._plex_server.clients() - sessions = self._plex_server.sessions() + devices, sessions = await self.hass.async_add_executor_job( + self._fetch_platform_data + ) except ( plexapi.exceptions.BadRequest, requests.exceptions.RequestException, @@ -271,13 +276,13 @@ class PlexServer: self._known_idle.add(client_id) if new_entity_configs: - dispatcher_send( + async_dispatcher_send( self.hass, PLEX_NEW_MP_SIGNAL.format(self.machine_identifier), new_entity_configs, ) - dispatcher_send( + async_dispatcher_send( self.hass, PLEX_UPDATE_SENSOR_SIGNAL.format(self.machine_identifier), sessions, From 8a68b1a3a9b5e7775e71401b8c4925936b6334c6 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Mon, 6 Apr 2020 19:25:09 +0200 Subject: [PATCH 45/63] Fix MQTT debug info for subscriptions with wildcard. (#33744) --- homeassistant/components/mqtt/__init__.py | 17 ++++++++++++----- homeassistant/components/mqtt/debug_info.py | 2 +- homeassistant/components/mqtt/models.py | 1 + 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/mqtt/__init__.py b/homeassistant/components/mqtt/__init__.py index 734f67906ce..c51f94992f5 100644 --- a/homeassistant/components/mqtt/__init__.py +++ b/homeassistant/components/mqtt/__init__.py @@ -389,7 +389,7 @@ def wrap_msg_callback(msg_callback: MessageCallbackType) -> MessageCallbackType: @wraps(msg_callback) async def async_wrapper(msg: Any) -> None: - """Catch and log exception.""" + """Call with deprecated signature.""" await msg_callback(msg.topic, msg.payload, msg.qos) wrapper_func = async_wrapper @@ -397,7 +397,7 @@ def wrap_msg_callback(msg_callback: MessageCallbackType) -> MessageCallbackType: @wraps(msg_callback) def wrapper(msg: Any) -> None: - """Catch and log exception.""" + """Call with deprecated signature.""" msg_callback(msg.topic, msg.payload, msg.qos) wrapper_func = wrapper @@ -809,7 +809,10 @@ class MQTT: if will_message is not None: self._mqttc.will_set( # pylint: disable=no-value-for-parameter - *attr.astuple(will_message) + *attr.astuple( + will_message, + filter=lambda attr, value: attr.name != "subscribed_topic", + ) ) async def async_publish( @@ -941,7 +944,10 @@ class MQTT: if self.birth_message: self.hass.add_job( self.async_publish( # pylint: disable=no-value-for-parameter - *attr.astuple(self.birth_message) + *attr.astuple( + self.birth_message, + filter=lambda attr, value: attr.name != "subscribed_topic", + ) ) ) @@ -977,7 +983,8 @@ class MQTT: continue self.hass.async_run_job( - subscription.callback, Message(msg.topic, payload, msg.qos, msg.retain) + subscription.callback, + Message(msg.topic, payload, msg.qos, msg.retain, subscription.topic), ) def _mqtt_on_disconnect(self, _mqttc, _userdata, result_code: int) -> None: diff --git a/homeassistant/components/mqtt/debug_info.py b/homeassistant/components/mqtt/debug_info.py index ec4ff1676bb..b51ee619a12 100644 --- a/homeassistant/components/mqtt/debug_info.py +++ b/homeassistant/components/mqtt/debug_info.py @@ -21,7 +21,7 @@ def log_messages(hass: HomeAssistantType, entity_id: str) -> MessageCallbackType def _log_message(msg): """Log message.""" debug_info = hass.data[DATA_MQTT_DEBUG_INFO] - messages = debug_info["entities"][entity_id]["topics"][msg.topic] + messages = debug_info["entities"][entity_id]["topics"][msg.subscribed_topic] messages.append(msg.payload) def _decorator(msg_callback: MessageCallbackType): diff --git a/homeassistant/components/mqtt/models.py b/homeassistant/components/mqtt/models.py index cfdecd3383d..3a4add57298 100644 --- a/homeassistant/components/mqtt/models.py +++ b/homeassistant/components/mqtt/models.py @@ -14,6 +14,7 @@ class Message: payload = attr.ib(type=PublishPayloadType) qos = attr.ib(type=int) retain = attr.ib(type=bool) + subscribed_topic = attr.ib(type=str, default=None) MessageCallbackType = Callable[[Message], None] From 69b98def5c83943896759501f69429494ffa8c7f Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 6 Apr 2020 12:24:08 -0500 Subject: [PATCH 46/63] =?UTF-8?q?Abort=20rachio=20config=20flow=20if=20the?= =?UTF-8?q?=20api=20key=20is=20already=20configured=E2=80=A6=20(#33747)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We now abort before hitting the api which can be slow and block startup if importing from yaml. --- homeassistant/components/rachio/config_flow.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/rachio/config_flow.py b/homeassistant/components/rachio/config_flow.py index 9eff7c99334..64e78a24f4a 100644 --- a/homeassistant/components/rachio/config_flow.py +++ b/homeassistant/components/rachio/config_flow.py @@ -62,9 +62,11 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): """Handle the initial step.""" errors = {} if user_input is not None: + await self.async_set_unique_id(user_input[CONF_API_KEY]) + self._abort_if_unique_id_configured() try: info = await validate_input(self.hass, user_input) - + return self.async_create_entry(title=info["title"], data=user_input) except CannotConnect: errors["base"] = "cannot_connect" except InvalidAuth: @@ -73,11 +75,6 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): _LOGGER.exception("Unexpected exception") errors["base"] = "unknown" - if "base" not in errors: - await self.async_set_unique_id(user_input[CONF_API_KEY]) - self._abort_if_unique_id_configured() - return self.async_create_entry(title=info["title"], data=user_input) - return self.async_show_form( step_id="user", data_schema=DATA_SCHEMA, errors=errors ) From de2eab30fa1b1b1f10eabd0eccef001668fec6df Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 6 Apr 2020 10:34:33 -0700 Subject: [PATCH 47/63] Bumped version to 0.108.0b4 --- homeassistant/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 981d5e41916..b282f0a3d62 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -1,7 +1,7 @@ """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 MINOR_VERSION = 108 -PATCH_VERSION = "0b3" +PATCH_VERSION = "0b4" __short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__ = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER = (3, 7, 0) From e1e768fa6518ce8e9b8d63cce2435202cf18b5f1 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Mon, 6 Apr 2020 22:23:22 +0200 Subject: [PATCH 48/63] Bump frontend (#33751) --- homeassistant/components/frontend/manifest.json | 10 +++------- homeassistant/package_constraints.txt | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/frontend/manifest.json b/homeassistant/components/frontend/manifest.json index b0da48ab713..3c6e8478c09 100644 --- a/homeassistant/components/frontend/manifest.json +++ b/homeassistant/components/frontend/manifest.json @@ -2,9 +2,7 @@ "domain": "frontend", "name": "Home Assistant Frontend", "documentation": "https://www.home-assistant.io/integrations/frontend", - "requirements": [ - "home-assistant-frontend==20200403.0" - ], + "requirements": ["home-assistant-frontend==20200406.0"], "dependencies": [ "api", "auth", @@ -16,8 +14,6 @@ "system_log", "websocket_api" ], - "codeowners": [ - "@home-assistant/frontend" - ], + "codeowners": ["@home-assistant/frontend"], "quality_scale": "internal" -} \ No newline at end of file +} diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index fd8e841d568..efc36dc1561 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -12,7 +12,7 @@ cryptography==2.8 defusedxml==0.6.0 distro==1.4.0 hass-nabucasa==0.32.2 -home-assistant-frontend==20200403.0 +home-assistant-frontend==20200406.0 importlib-metadata==1.5.0 jinja2>=2.11.1 netdisco==2.6.0 diff --git a/requirements_all.txt b/requirements_all.txt index 93f8621355f..5cd0275ad83 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -704,7 +704,7 @@ hole==0.5.1 holidays==0.10.1 # homeassistant.components.frontend -home-assistant-frontend==20200403.0 +home-assistant-frontend==20200406.0 # homeassistant.components.zwave homeassistant-pyozw==0.1.10 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index c4d80a32788..958bacf633e 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -282,7 +282,7 @@ hole==0.5.1 holidays==0.10.1 # homeassistant.components.frontend -home-assistant-frontend==20200403.0 +home-assistant-frontend==20200406.0 # homeassistant.components.zwave homeassistant-pyozw==0.1.10 From e3d90f53cc877070c51140d3270fef6e21096509 Mon Sep 17 00:00:00 2001 From: jjlawren Date: Mon, 6 Apr 2020 18:18:13 -0500 Subject: [PATCH 49/63] Defer Plex sensor retry instead of aborting (#33753) --- homeassistant/components/plex/sensor.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/plex/sensor.py b/homeassistant/components/plex/sensor.py index 65d1ba0371b..ab6985c0c43 100644 --- a/homeassistant/components/plex/sensor.py +++ b/homeassistant/components/plex/sensor.py @@ -62,6 +62,7 @@ class PlexSensor(Entity): _LOGGER.debug("Refreshing sensor [%s]", self.unique_id) self.sessions = sessions + update_failed = False @callback def update_plex(_): @@ -79,8 +80,8 @@ class PlexSensor(Entity): _LOGGER.debug( "Session temporarily incomplete, will try again: %s", sess ) - async_call_later(self.hass, 5, update_plex) - return + update_failed = True + continue user = sess.usernames[0] device = sess.players[0].title now_playing_user = f"{user} - {device}" @@ -119,6 +120,9 @@ class PlexSensor(Entity): self.async_write_ha_state() + if update_failed: + async_call_later(self.hass, 5, update_plex) + @property def name(self): """Return the name of the sensor.""" From 33849a15a83506171f422cc8e2180b6685d8d10e Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 6 Apr 2020 16:30:10 -0500 Subject: [PATCH 50/63] Bump HAP-python to 2.8.1 (#33756) --- homeassistant/components/homekit/manifest.json | 3 +-- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/homekit/manifest.json b/homeassistant/components/homekit/manifest.json index eb8d16d0c0a..b0c49a58a6a 100644 --- a/homeassistant/components/homekit/manifest.json +++ b/homeassistant/components/homekit/manifest.json @@ -2,7 +2,6 @@ "domain": "homekit", "name": "HomeKit", "documentation": "https://www.home-assistant.io/integrations/homekit", - "requirements": ["HAP-python==2.8.0"], - "dependencies": [], + "requirements": ["HAP-python==2.8.1"], "codeowners": [] } diff --git a/requirements_all.txt b/requirements_all.txt index 5cd0275ad83..080b033ebe3 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -35,7 +35,7 @@ Adafruit-SHT31==1.0.2 # Adafruit_BBIO==1.1.1 # homeassistant.components.homekit -HAP-python==2.8.0 +HAP-python==2.8.1 # homeassistant.components.mastodon Mastodon.py==1.5.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 958bacf633e..651ad377b3d 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -4,7 +4,7 @@ -r requirements_test.txt # homeassistant.components.homekit -HAP-python==2.8.0 +HAP-python==2.8.1 # homeassistant.components.mobile_app # homeassistant.components.owntracks From e8da7f333bb8b34fac5c1ed15c8d0538b1c39422 Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Mon, 6 Apr 2020 16:14:27 -0600 Subject: [PATCH 51/63] Bump aioambient to 1.1.1 (#33761) --- homeassistant/components/ambient_station/manifest.json | 3 +-- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/ambient_station/manifest.json b/homeassistant/components/ambient_station/manifest.json index 8c4bc1b3cc0..e73190bb580 100644 --- a/homeassistant/components/ambient_station/manifest.json +++ b/homeassistant/components/ambient_station/manifest.json @@ -3,7 +3,6 @@ "name": "Ambient Weather Station", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/ambient_station", - "requirements": ["aioambient==1.1.0"], - "dependencies": [], + "requirements": ["aioambient==1.1.1"], "codeowners": ["@bachya"] } diff --git a/requirements_all.txt b/requirements_all.txt index 080b033ebe3..1bea2a07f8d 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -140,7 +140,7 @@ aio_geojson_nsw_rfs_incidents==0.3 aio_georss_gdacs==0.3 # homeassistant.components.ambient_station -aioambient==1.1.0 +aioambient==1.1.1 # homeassistant.components.asuswrt aioasuswrt==1.2.3 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 651ad377b3d..cc3d0de9a8b 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -47,7 +47,7 @@ aio_geojson_nsw_rfs_incidents==0.3 aio_georss_gdacs==0.3 # homeassistant.components.ambient_station -aioambient==1.1.0 +aioambient==1.1.1 # homeassistant.components.asuswrt aioasuswrt==1.2.3 From 087ddcb6820c5a0d14b695b50b8272f54e778ae7 Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Mon, 6 Apr 2020 16:28:42 -0600 Subject: [PATCH 52/63] Bump simplisafe-python to 9.0.6 (#33762) --- homeassistant/components/simplisafe/manifest.json | 3 +-- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/simplisafe/manifest.json b/homeassistant/components/simplisafe/manifest.json index 917722a61b8..cd0cda68125 100644 --- a/homeassistant/components/simplisafe/manifest.json +++ b/homeassistant/components/simplisafe/manifest.json @@ -3,7 +3,6 @@ "name": "SimpliSafe", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/simplisafe", - "requirements": ["simplisafe-python==9.0.5"], - "dependencies": [], + "requirements": ["simplisafe-python==9.0.6"], "codeowners": ["@bachya"] } diff --git a/requirements_all.txt b/requirements_all.txt index 1bea2a07f8d..883be49d7c7 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1870,7 +1870,7 @@ simplehound==0.3 simplepush==1.1.4 # homeassistant.components.simplisafe -simplisafe-python==9.0.5 +simplisafe-python==9.0.6 # homeassistant.components.sisyphus sisyphus-control==2.2.1 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index cc3d0de9a8b..553f707df9a 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -689,7 +689,7 @@ sentry-sdk==0.13.5 simplehound==0.3 # homeassistant.components.simplisafe -simplisafe-python==9.0.5 +simplisafe-python==9.0.6 # homeassistant.components.sleepiq sleepyq==0.7 From a33e5728de3f204a52ee5e7c00c0ce5b7bd5dec1 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 6 Apr 2020 16:34:47 -0700 Subject: [PATCH 53/63] Bumped version to 0.108.0b5 --- homeassistant/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index b282f0a3d62..0a6fb9ec971 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -1,7 +1,7 @@ """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 MINOR_VERSION = 108 -PATCH_VERSION = "0b4" +PATCH_VERSION = "0b5" __short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__ = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER = (3, 7, 0) From abdee3fcb7ac7866274b9874e38b07d588140862 Mon Sep 17 00:00:00 2001 From: Chris Talkington Date: Tue, 7 Apr 2020 11:32:43 -0500 Subject: [PATCH 54/63] Catch IPPParseError during config flow (#33769) * Update config_flow.py * Update strings.json * Update config_flow.py * squash. --- homeassistant/components/ipp/config_flow.py | 19 +++++++++-- homeassistant/components/ipp/manifest.json | 3 +- homeassistant/components/ipp/strings.json | 3 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- tests/components/ipp/test_config_flow.py | 38 +++++++++++++++++++++ 6 files changed, 59 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/ipp/config_flow.py b/homeassistant/components/ipp/config_flow.py index e95267e7803..fe0808414ad 100644 --- a/homeassistant/components/ipp/config_flow.py +++ b/homeassistant/components/ipp/config_flow.py @@ -2,7 +2,13 @@ import logging from typing import Any, Dict, Optional -from pyipp import IPP, IPPConnectionError, IPPConnectionUpgradeRequired +from pyipp import ( + IPP, + IPPConnectionError, + IPPConnectionUpgradeRequired, + IPPParseError, + IPPResponseError, +) import voluptuous as vol from homeassistant.config_entries import CONN_CLASS_LOCAL_POLL, ConfigFlow @@ -63,8 +69,12 @@ class IPPFlowHandler(ConfigFlow, domain=DOMAIN): info = await validate_input(self.hass, user_input) except IPPConnectionUpgradeRequired: return self._show_setup_form({"base": "connection_upgrade"}) - except IPPConnectionError: + except (IPPConnectionError, IPPResponseError): return self._show_setup_form({"base": "connection_error"}) + except IPPParseError: + _LOGGER.exception("IPP Parse Error") + return self.async_abort(reason="parse_error") + user_input[CONF_UUID] = info[CONF_UUID] await self.async_set_unique_id(user_input[CONF_UUID]) @@ -100,8 +110,11 @@ class IPPFlowHandler(ConfigFlow, domain=DOMAIN): info = await validate_input(self.hass, self.discovery_info) except IPPConnectionUpgradeRequired: return self.async_abort(reason="connection_upgrade") - except IPPConnectionError: + except (IPPConnectionError, IPPResponseError): return self.async_abort(reason="connection_error") + except IPPParseError: + _LOGGER.exception("IPP Parse Error") + return self.async_abort(reason="parse_error") self.discovery_info[CONF_UUID] = info[CONF_UUID] diff --git a/homeassistant/components/ipp/manifest.json b/homeassistant/components/ipp/manifest.json index 0cb788eeee7..9e491a54896 100644 --- a/homeassistant/components/ipp/manifest.json +++ b/homeassistant/components/ipp/manifest.json @@ -2,8 +2,7 @@ "domain": "ipp", "name": "Internet Printing Protocol (IPP)", "documentation": "https://www.home-assistant.io/integrations/ipp", - "requirements": ["pyipp==0.8.3"], - "dependencies": [], + "requirements": ["pyipp==0.9.0"], "codeowners": ["@ctalkington"], "config_flow": true, "quality_scale": "platinum", diff --git a/homeassistant/components/ipp/strings.json b/homeassistant/components/ipp/strings.json index afd82d1f454..a80a7f2e0ba 100644 --- a/homeassistant/components/ipp/strings.json +++ b/homeassistant/components/ipp/strings.json @@ -26,7 +26,8 @@ "abort": { "already_configured": "This printer is already configured.", "connection_error": "Failed to connect to printer.", - "connection_upgrade": "Failed to connect to printer due to connection upgrade being required." + "connection_upgrade": "Failed to connect to printer due to connection upgrade being required.", + "parse_error": "Failed to parse response from printer." } } } diff --git a/requirements_all.txt b/requirements_all.txt index 883be49d7c7..95012a82cd7 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1336,7 +1336,7 @@ pyintesishome==1.7.1 pyipma==2.0.5 # homeassistant.components.ipp -pyipp==0.8.3 +pyipp==0.9.0 # homeassistant.components.iqvia pyiqvia==0.2.1 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 553f707df9a..df5fa4ac34d 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -519,7 +519,7 @@ pyicloud==0.9.6.1 pyipma==2.0.5 # homeassistant.components.ipp -pyipp==0.8.3 +pyipp==0.9.0 # homeassistant.components.iqvia pyiqvia==0.2.1 diff --git a/tests/components/ipp/test_config_flow.py b/tests/components/ipp/test_config_flow.py index 0682929b7b8..7e16a9fc6e0 100644 --- a/tests/components/ipp/test_config_flow.py +++ b/tests/components/ipp/test_config_flow.py @@ -134,6 +134,44 @@ async def test_zeroconf_connection_upgrade_required( assert result["reason"] == "connection_upgrade" +async def test_user_parse_error( + hass: HomeAssistant, aioclient_mock: AiohttpClientMocker +) -> None: + """Test we abort user flow on IPP parse error.""" + aioclient_mock.post( + "http://192.168.1.31:631/ipp/print", + content="BAD", + headers={"Content-Type": "application/ipp"}, + ) + + user_input = MOCK_USER_INPUT.copy() + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": SOURCE_USER}, data=user_input, + ) + + assert result["type"] == RESULT_TYPE_ABORT + assert result["reason"] == "parse_error" + + +async def test_zeroconf_parse_error( + hass: HomeAssistant, aioclient_mock: AiohttpClientMocker +) -> None: + """Test we abort zeroconf flow on IPP parse error.""" + aioclient_mock.post( + "http://192.168.1.31:631/ipp/print", + content="BAD", + headers={"Content-Type": "application/ipp"}, + ) + + discovery_info = MOCK_ZEROCONF_IPP_SERVICE_INFO.copy() + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": SOURCE_ZEROCONF}, data=discovery_info, + ) + + assert result["type"] == RESULT_TYPE_ABORT + assert result["reason"] == "parse_error" + + async def test_user_device_exists_abort( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker ) -> None: From 1bd1b8339d23142e79a3e87cc1944b0af4a9c7fe Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 7 Apr 2020 10:33:43 -0500 Subject: [PATCH 55/63] Update nexia for thermostats without zoning (#33770) * Bump nexia to 0.8.0 --- homeassistant/components/nexia/manifest.json | 9 ++------- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/nexia/manifest.json b/homeassistant/components/nexia/manifest.json index 06130f605ef..e69ea352c8e 100644 --- a/homeassistant/components/nexia/manifest.json +++ b/homeassistant/components/nexia/manifest.json @@ -1,13 +1,8 @@ { "domain": "nexia", "name": "Nexia", - "requirements": [ - "nexia==0.7.3" - ], - "dependencies": [], - "codeowners": [ - "@ryannazaretian", "@bdraco" - ], + "requirements": ["nexia==0.8.0"], + "codeowners": ["@ryannazaretian", "@bdraco"], "documentation": "https://www.home-assistant.io/integrations/nexia", "config_flow": true } diff --git a/requirements_all.txt b/requirements_all.txt index 95012a82cd7..6d0e0e590eb 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -922,7 +922,7 @@ netdisco==2.6.0 neurio==0.3.1 # homeassistant.components.nexia -nexia==0.7.3 +nexia==0.8.0 # homeassistant.components.nextcloud nextcloudmonitor==1.1.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index df5fa4ac34d..8a4af0beaf0 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -357,7 +357,7 @@ nessclient==0.9.15 netdisco==2.6.0 # homeassistant.components.nexia -nexia==0.7.3 +nexia==0.8.0 # homeassistant.components.nsw_fuel_station nsw-fuel-api-client==1.0.10 From b9336272d474226bbdeb86c5d9a5eed40d803ff8 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 7 Apr 2020 12:16:31 -0500 Subject: [PATCH 56/63] Fix nuheat reverting to auto mode after setting temp hold (#33772) * Fix nuheat reverting to auto mode after setting temp hold * clamp temp --- homeassistant/components/nuheat/climate.py | 31 +++++++++++++++++++--- homeassistant/components/nuheat/const.py | 9 ++++++- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/nuheat/climate.py b/homeassistant/components/nuheat/climate.py index f8d6bf1d8df..c1d591c03eb 100644 --- a/homeassistant/components/nuheat/climate.py +++ b/homeassistant/components/nuheat/climate.py @@ -1,6 +1,7 @@ """Support for NuHeat thermostats.""" -from datetime import timedelta +from datetime import datetime, timedelta import logging +import time from nuheat.config import SCHEDULE_HOLD, SCHEDULE_RUN, SCHEDULE_TEMPORARY_HOLD from nuheat.util import ( @@ -24,7 +25,16 @@ from homeassistant.const import ATTR_TEMPERATURE, TEMP_CELSIUS, TEMP_FAHRENHEIT from homeassistant.helpers import event as event_helper from homeassistant.util import Throttle -from .const import DOMAIN, MANUFACTURER, NUHEAT_API_STATE_SHIFT_DELAY +from .const import ( + DOMAIN, + MANUFACTURER, + NUHEAT_API_STATE_SHIFT_DELAY, + NUHEAT_DATETIME_FORMAT, + NUHEAT_KEY_HOLD_SET_POINT_DATE_TIME, + NUHEAT_KEY_SCHEDULE_MODE, + NUHEAT_KEY_SET_POINT_TEMP, + TEMP_HOLD_TIME_SEC, +) _LOGGER = logging.getLogger(__name__) @@ -218,9 +228,22 @@ class NuHeatThermostat(ClimateDevice): target_schedule_mode, ) - self._thermostat.set_target_temperature( - target_temperature, target_schedule_mode + target_temperature = max( + min(self._thermostat.max_temperature, target_temperature), + self._thermostat.min_temperature, ) + + request = { + NUHEAT_KEY_SET_POINT_TEMP: target_temperature, + NUHEAT_KEY_SCHEDULE_MODE: target_schedule_mode, + } + + if target_schedule_mode == SCHEDULE_TEMPORARY_HOLD: + request[NUHEAT_KEY_HOLD_SET_POINT_DATE_TIME] = datetime.fromtimestamp( + time.time() + TEMP_HOLD_TIME_SEC + ).strftime(NUHEAT_DATETIME_FORMAT) + + self._thermostat.set_data(request) self._schedule_mode = target_schedule_mode self._target_temperature = target_temperature self._schedule_update() diff --git a/homeassistant/components/nuheat/const.py b/homeassistant/components/nuheat/const.py index 1bb6c3825e7..bd44dcb1711 100644 --- a/homeassistant/components/nuheat/const.py +++ b/homeassistant/components/nuheat/const.py @@ -8,4 +8,11 @@ CONF_SERIAL_NUMBER = "serial_number" MANUFACTURER = "NuHeat" -NUHEAT_API_STATE_SHIFT_DELAY = 4 +NUHEAT_API_STATE_SHIFT_DELAY = 1 + +TEMP_HOLD_TIME_SEC = 43200 + +NUHEAT_KEY_SET_POINT_TEMP = "SetPointTemp" +NUHEAT_KEY_SCHEDULE_MODE = "ScheduleMode" +NUHEAT_KEY_HOLD_SET_POINT_DATE_TIME = "HoldSetPointDateTime" +NUHEAT_DATETIME_FORMAT = "%a, %d %b %Y %H:%M:%S GMT" From d92d74a14f1d6a61b48051224d1407443cb26547 Mon Sep 17 00:00:00 2001 From: jjlawren Date: Tue, 7 Apr 2020 12:17:16 -0500 Subject: [PATCH 57/63] Fix minor async issues in Plex (#33785) * Fix minor async context issues * Annotate callback --- homeassistant/components/plex/sensor.py | 7 +++++-- homeassistant/components/plex/server.py | 12 +++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/homeassistant/components/plex/sensor.py b/homeassistant/components/plex/sensor.py index ab6985c0c43..6fcfd39d192 100644 --- a/homeassistant/components/plex/sensor.py +++ b/homeassistant/components/plex/sensor.py @@ -2,7 +2,10 @@ import logging from homeassistant.core import callback -from homeassistant.helpers.dispatcher import async_dispatcher_connect, dispatcher_send +from homeassistant.helpers.dispatcher import ( + async_dispatcher_connect, + async_dispatcher_send, +) from homeassistant.helpers.entity import Entity from homeassistant.helpers.event import async_call_later @@ -66,7 +69,7 @@ class PlexSensor(Entity): @callback def update_plex(_): - dispatcher_send( + async_dispatcher_send( self.hass, PLEX_UPDATE_PLATFORMS_SIGNAL.format(self._server.machine_identifier), ) diff --git a/homeassistant/components/plex/server.py b/homeassistant/components/plex/server.py index a7b66c3a3ba..4134ad4e32b 100644 --- a/homeassistant/components/plex/server.py +++ b/homeassistant/components/plex/server.py @@ -12,7 +12,8 @@ import requests.exceptions from homeassistant.components.media_player import DOMAIN as MP_DOMAIN from homeassistant.const import CONF_TOKEN, CONF_URL, CONF_VERIFY_SSL -from homeassistant.helpers.dispatcher import async_dispatcher_send, dispatcher_send +from homeassistant.core import callback +from homeassistant.helpers.dispatcher import async_dispatcher_send from homeassistant.helpers.event import async_call_later from .const import ( @@ -175,11 +176,12 @@ class PlexServer: if config_entry_update_needed: raise ShouldUpdateConfigEntry - def refresh_entity(self, machine_identifier, device, session): + @callback + def async_refresh_entity(self, machine_identifier, device, session): """Forward refresh dispatch to media_player.""" unique_id = f"{self.machine_identifier}:{machine_identifier}" _LOGGER.debug("Refreshing %s", unique_id) - dispatcher_send( + async_dispatcher_send( self.hass, PLEX_UPDATE_MEDIA_PLAYER_SIGNAL.format(unique_id), device, @@ -262,7 +264,7 @@ class PlexServer: if client_id in new_clients: new_entity_configs.append(client_data) else: - self.refresh_entity( + self.async_refresh_entity( client_id, client_data["device"], client_data.get("session") ) @@ -272,7 +274,7 @@ class PlexServer: self._known_clients - self._known_idle - ignored_clients ).difference(available_clients) for client_id in idle_clients: - self.refresh_entity(client_id, None, None) + self.async_refresh_entity(client_id, None, None) self._known_idle.add(client_id) if new_entity_configs: From 4901fa24ec2aa3f6f6bc3cd7ce8c9602a9a0df38 Mon Sep 17 00:00:00 2001 From: Ziv <16467659+ziv1234@users.noreply.github.com> Date: Mon, 6 Apr 2020 14:36:49 +0300 Subject: [PATCH 58/63] Fix unhandled exceptions for config, default_config, harmony (#33731) * replaced MagicMock with CoroutineMock to avoid exception * added conversion to str so mock returns unique-id that doesn't throw json exception * added non-empty config since hass throws exception when config is empty --- homeassistant/components/harmony/util.py | 2 +- tests/components/config/test_group.py | 6 ++++-- tests/components/default_config/test_init.py | 2 +- tests/ignore_uncaught_exceptions.py | 2 -- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/harmony/util.py b/homeassistant/components/harmony/util.py index 69ed44cb7da..412aa2c6940 100644 --- a/homeassistant/components/harmony/util.py +++ b/homeassistant/components/harmony/util.py @@ -11,7 +11,7 @@ def find_unique_id_for_remote(harmony: HarmonyAPI): """Find the unique id for both websocket and xmpp clients.""" websocket_unique_id = harmony.hub_config.info.get("activeRemoteId") if websocket_unique_id is not None: - return websocket_unique_id + return str(websocket_unique_id) # fallback to the xmpp unique id if websocket is not available return harmony.config["global"]["timeStampHash"].split(";")[-1] diff --git a/tests/components/config/test_group.py b/tests/components/config/test_group.py index 49d168e2796..d00e0317e9e 100644 --- a/tests/components/config/test_group.py +++ b/tests/components/config/test_group.py @@ -1,6 +1,8 @@ """Test Group config panel.""" import json -from unittest.mock import MagicMock, patch +from unittest.mock import patch + +from asynctest import CoroutineMock from homeassistant.bootstrap import async_setup_component from homeassistant.components import config @@ -50,7 +52,7 @@ async def test_update_device_config(hass, hass_client): """Mock writing data.""" written.append(data) - mock_call = MagicMock() + mock_call = CoroutineMock() with patch("homeassistant.components.config._read", mock_read), patch( "homeassistant.components.config._write", mock_write diff --git a/tests/components/default_config/test_init.py b/tests/components/default_config/test_init.py index 6b9004595bb..638130a0ab6 100644 --- a/tests/components/default_config/test_init.py +++ b/tests/components/default_config/test_init.py @@ -34,4 +34,4 @@ def recorder_url_mock(): async def test_setup(hass): """Test setup.""" - assert await async_setup_component(hass, "default_config", {}) + assert await async_setup_component(hass, "default_config", {"foo": "bar"}) diff --git a/tests/ignore_uncaught_exceptions.py b/tests/ignore_uncaught_exceptions.py index df623a2fc20..47242be8a5a 100644 --- a/tests/ignore_uncaught_exceptions.py +++ b/tests/ignore_uncaught_exceptions.py @@ -4,8 +4,6 @@ IGNORE_UNCAUGHT_EXCEPTIONS = [ ("tests.components.cast.test_media_player", "test_entry_setup_single_config"), ("tests.components.cast.test_media_player", "test_entry_setup_list_config"), ("tests.components.cast.test_media_player", "test_entry_setup_platform_not_ready"), - ("tests.components.config.test_group", "test_update_device_config"), - ("tests.components.default_config.test_init", "test_setup"), ("tests.components.demo.test_init", "test_setting_up_demo"), ("tests.components.discovery.test_init", "test_discover_config_flow"), ("tests.components.dsmr.test_sensor", "test_default_setup"), From 265666b75a4b4d3b8663a2aafbd80b9852d65ff2 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 7 Apr 2020 10:29:24 -0700 Subject: [PATCH 59/63] Bumped version to 0.108.0b6 --- homeassistant/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 0a6fb9ec971..9b82885ce72 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -1,7 +1,7 @@ """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 MINOR_VERSION = 108 -PATCH_VERSION = "0b5" +PATCH_VERSION = "0b6" __short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__ = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER = (3, 7, 0) From 035b28045c04b206cfe65e11e7ba27d2ce972448 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 8 Apr 2020 13:02:45 +0200 Subject: [PATCH 60/63] Update translations --- .../.translations/synology_dsm.ca.json | 26 +++++++++++++ .../.translations/synology_dsm.da.json | 18 +++++++++ .../.translations/synology_dsm.en.json | 38 +++++++++++++++++++ .../.translations/synology_dsm.es.json | 26 +++++++++++++ .../.translations/synology_dsm.ko.json | 26 +++++++++++++ .../.translations/synology_dsm.lb.json | 26 +++++++++++++ .../.translations/synology_dsm.nl.json | 37 ++++++++++++++++++ .../.translations/synology_dsm.ru.json | 26 +++++++++++++ .../components/airly/.translations/bg.json | 1 - .../components/airly/.translations/ca.json | 1 - .../components/airly/.translations/da.json | 1 - .../components/airly/.translations/de.json | 1 - .../components/airly/.translations/en.json | 1 - .../airly/.translations/es-419.json | 1 - .../components/airly/.translations/es.json | 1 - .../components/airly/.translations/fr.json | 1 - .../components/airly/.translations/hu.json | 1 - .../components/airly/.translations/it.json | 1 - .../components/airly/.translations/ko.json | 1 - .../components/airly/.translations/lb.json | 1 - .../components/airly/.translations/nl.json | 1 - .../components/airly/.translations/no.json | 1 - .../components/airly/.translations/pl.json | 1 - .../components/airly/.translations/ru.json | 1 - .../components/airly/.translations/sl.json | 1 - .../components/airly/.translations/sv.json | 1 - .../airly/.translations/zh-Hant.json | 1 - .../airvisual/.translations/ca.json | 3 +- .../airvisual/.translations/de.json | 3 +- .../airvisual/.translations/en.json | 3 +- .../airvisual/.translations/es.json | 3 +- .../airvisual/.translations/fr.json | 3 +- .../airvisual/.translations/it.json | 3 +- .../airvisual/.translations/ko.json | 5 +-- .../airvisual/.translations/lb.json | 6 ++- .../airvisual/.translations/no.json | 3 +- .../airvisual/.translations/pl.json | 3 +- .../airvisual/.translations/ru.json | 5 +-- .../airvisual/.translations/sl.json | 3 +- .../airvisual/.translations/zh-Hant.json | 3 +- .../ambient_station/.translations/bg.json | 1 - .../ambient_station/.translations/ca.json | 1 - .../ambient_station/.translations/da.json | 1 - .../ambient_station/.translations/de.json | 1 - .../ambient_station/.translations/en.json | 1 - .../ambient_station/.translations/es-419.json | 1 - .../ambient_station/.translations/es.json | 1 - .../ambient_station/.translations/fr.json | 1 - .../ambient_station/.translations/hu.json | 1 - .../ambient_station/.translations/it.json | 1 - .../ambient_station/.translations/ko.json | 1 - .../ambient_station/.translations/lb.json | 1 - .../ambient_station/.translations/nl.json | 1 - .../ambient_station/.translations/no.json | 1 - .../ambient_station/.translations/pl.json | 1 - .../ambient_station/.translations/pt-BR.json | 1 - .../ambient_station/.translations/pt.json | 1 - .../ambient_station/.translations/ru.json | 1 - .../ambient_station/.translations/sl.json | 1 - .../ambient_station/.translations/sv.json | 1 - .../.translations/zh-Hans.json | 1 - .../.translations/zh-Hant.json | 1 - .../components/axis/.translations/ca.json | 3 +- .../components/axis/.translations/da.json | 3 +- .../components/axis/.translations/de.json | 3 +- .../components/axis/.translations/en.json | 3 +- .../components/axis/.translations/es.json | 3 +- .../components/axis/.translations/fr.json | 3 +- .../components/axis/.translations/hu.json | 3 -- .../components/axis/.translations/it.json | 3 +- .../components/axis/.translations/ko.json | 3 +- .../components/axis/.translations/lb.json | 3 +- .../components/axis/.translations/nl.json | 3 +- .../components/axis/.translations/no.json | 3 +- .../components/axis/.translations/pl.json | 3 +- .../components/axis/.translations/pt-BR.json | 3 +- .../components/axis/.translations/ru.json | 3 +- .../components/axis/.translations/sl.json | 3 +- .../components/axis/.translations/sv.json | 3 +- .../axis/.translations/zh-Hant.json | 3 +- .../binary_sensor/.translations/bg.json | 2 - .../binary_sensor/.translations/ca.json | 2 - .../binary_sensor/.translations/da.json | 2 - .../binary_sensor/.translations/de.json | 2 - .../binary_sensor/.translations/en.json | 2 - .../binary_sensor/.translations/es-419.json | 2 - .../binary_sensor/.translations/es.json | 2 - .../binary_sensor/.translations/fr.json | 2 - .../binary_sensor/.translations/hu.json | 2 - .../binary_sensor/.translations/it.json | 2 - .../binary_sensor/.translations/ko.json | 2 - .../binary_sensor/.translations/lb.json | 2 - .../binary_sensor/.translations/nl.json | 2 - .../binary_sensor/.translations/no.json | 2 - .../binary_sensor/.translations/pl.json | 2 - .../binary_sensor/.translations/pt.json | 1 - .../binary_sensor/.translations/ru.json | 2 - .../binary_sensor/.translations/sl.json | 2 - .../binary_sensor/.translations/sv.json | 2 - .../binary_sensor/.translations/zh-Hans.json | 1 - .../binary_sensor/.translations/zh-Hant.json | 2 - .../brother/.translations/zh-Hant.json | 2 +- .../cert_expiry/.translations/bg.json | 9 +---- .../cert_expiry/.translations/ca.json | 7 +--- .../cert_expiry/.translations/da.json | 9 +---- .../cert_expiry/.translations/de.json | 7 +--- .../cert_expiry/.translations/en.json | 7 +--- .../cert_expiry/.translations/es-419.json | 9 +---- .../cert_expiry/.translations/es.json | 7 +--- .../cert_expiry/.translations/fr.json | 7 +--- .../cert_expiry/.translations/it.json | 7 +--- .../cert_expiry/.translations/ko.json | 7 +--- .../cert_expiry/.translations/lb.json | 10 ++--- .../cert_expiry/.translations/nl.json | 9 +---- .../cert_expiry/.translations/no.json | 7 +--- .../cert_expiry/.translations/pl.json | 7 +--- .../cert_expiry/.translations/pt-BR.json | 5 --- .../cert_expiry/.translations/ru.json | 7 +--- .../cert_expiry/.translations/sl.json | 7 +--- .../cert_expiry/.translations/sv.json | 9 +---- .../cert_expiry/.translations/zh-Hant.json | 7 +--- .../coronavirus/.translations/hu.json | 16 ++++++++ .../components/cover/.translations/hu.json | 8 ++++ .../components/cover/.translations/lb.json | 7 +++- .../components/deconz/.translations/bg.json | 18 --------- .../components/deconz/.translations/ca.json | 18 --------- .../components/deconz/.translations/cs.json | 7 ---- .../components/deconz/.translations/da.json | 18 --------- .../components/deconz/.translations/de.json | 18 --------- .../components/deconz/.translations/en.json | 18 --------- .../deconz/.translations/es-419.json | 22 ----------- .../components/deconz/.translations/es.json | 18 --------- .../components/deconz/.translations/fr.json | 18 --------- .../components/deconz/.translations/he.json | 7 ---- .../components/deconz/.translations/hr.json | 5 --- .../components/deconz/.translations/hu.json | 17 --------- .../components/deconz/.translations/id.json | 7 ---- .../components/deconz/.translations/it.json | 18 --------- .../components/deconz/.translations/ko.json | 18 --------- .../components/deconz/.translations/lb.json | 18 --------- .../components/deconz/.translations/nl.json | 18 --------- .../components/deconz/.translations/nn.json | 7 ---- .../components/deconz/.translations/no.json | 18 --------- .../components/deconz/.translations/pl.json | 18 --------- .../deconz/.translations/pt-BR.json | 22 ----------- .../components/deconz/.translations/pt.json | 7 ---- .../components/deconz/.translations/ru.json | 18 --------- .../components/deconz/.translations/sl.json | 18 --------- .../components/deconz/.translations/sv.json | 18 --------- .../components/deconz/.translations/vi.json | 7 ---- .../deconz/.translations/zh-Hans.json | 7 ---- .../deconz/.translations/zh-Hant.json | 18 --------- .../components/demo/.translations/lb.json | 16 +++++++- .../components/directv/.translations/ca.json | 3 +- .../components/directv/.translations/de.json | 3 +- .../components/directv/.translations/en.json | 3 +- .../components/directv/.translations/es.json | 3 +- .../components/directv/.translations/fr.json | 3 +- .../components/directv/.translations/it.json | 3 +- .../components/directv/.translations/ko.json | 3 +- .../components/directv/.translations/lb.json | 7 +++- .../components/directv/.translations/no.json | 3 +- .../components/directv/.translations/pl.json | 7 ++-- .../components/directv/.translations/ru.json | 3 +- .../components/directv/.translations/sl.json | 3 +- .../directv/.translations/zh-Hant.json | 3 +- .../components/doorbird/.translations/ca.json | 5 ++- .../components/doorbird/.translations/de.json | 1 + .../components/doorbird/.translations/en.json | 6 +-- .../components/doorbird/.translations/es.json | 2 + .../components/doorbird/.translations/ko.json | 5 ++- .../components/doorbird/.translations/lb.json | 1 + .../components/doorbird/.translations/ru.json | 5 ++- .../doorbird/.translations/zh-Hant.json | 1 + .../elgato/.translations/zh-Hant.json | 2 +- .../esphome/.translations/zh-Hant.json | 2 +- .../flunearyou/.translations/ca.json | 21 ++++++++++ .../flunearyou/.translations/de.json | 20 ++++++++++ .../flunearyou/.translations/en.json | 21 ++++++++++ .../flunearyou/.translations/es.json | 21 ++++++++++ .../flunearyou/.translations/ko.json | 21 ++++++++++ .../flunearyou/.translations/lb.json | 21 ++++++++++ .../flunearyou/.translations/ru.json | 21 ++++++++++ .../flunearyou/.translations/zh-Hant.json | 21 ++++++++++ .../components/freebox/.translations/lb.json | 1 + .../geonetnz_quakes/.translations/bg.json | 3 -- .../geonetnz_quakes/.translations/ca.json | 3 -- .../geonetnz_quakes/.translations/da.json | 3 -- .../geonetnz_quakes/.translations/de.json | 3 -- .../geonetnz_quakes/.translations/en.json | 3 -- .../geonetnz_quakes/.translations/es.json | 3 -- .../geonetnz_quakes/.translations/fr.json | 3 -- .../geonetnz_quakes/.translations/it.json | 3 -- .../geonetnz_quakes/.translations/ko.json | 3 -- .../geonetnz_quakes/.translations/lb.json | 3 -- .../geonetnz_quakes/.translations/nl.json | 3 -- .../geonetnz_quakes/.translations/no.json | 3 -- .../geonetnz_quakes/.translations/pl.json | 3 -- .../geonetnz_quakes/.translations/pt-BR.json | 3 -- .../geonetnz_quakes/.translations/ru.json | 3 -- .../geonetnz_quakes/.translations/sl.json | 3 -- .../geonetnz_quakes/.translations/sv.json | 3 -- .../.translations/zh-Hant.json | 3 -- .../components/harmony/.translations/ca.json | 1 - .../components/harmony/.translations/de.json | 1 - .../components/harmony/.translations/en.json | 1 - .../components/harmony/.translations/es.json | 1 - .../components/harmony/.translations/fr.json | 1 - .../components/harmony/.translations/it.json | 1 - .../components/harmony/.translations/ko.json | 1 - .../components/harmony/.translations/lb.json | 1 - .../components/harmony/.translations/no.json | 1 - .../components/harmony/.translations/pl.json | 1 - .../components/harmony/.translations/ru.json | 1 - .../harmony/.translations/zh-Hant.json | 1 - .../components/heos/.translations/pl.json | 2 +- .../homekit_controller/.translations/hu.json | 2 +- .../huawei_lte/.translations/lb.json | 2 +- .../components/hue/.translations/ca.json | 17 +++++++++ .../components/hue/.translations/da.json | 17 +++++++++ .../components/hue/.translations/de.json | 17 +++++++++ .../components/hue/.translations/es.json | 17 +++++++++ .../components/hue/.translations/ko.json | 17 +++++++++ .../components/hue/.translations/lb.json | 17 +++++++++ .../components/hue/.translations/ru.json | 17 +++++++++ .../components/hue/.translations/zh-Hant.json | 17 +++++++++ .../components/ipp/.translations/ca.json | 24 ++++++++++-- .../components/ipp/.translations/en.json | 3 +- .../components/ipp/.translations/ko.json | 32 ++++++++++++++++ .../konnected/.translations/ca.json | 1 + .../konnected/.translations/es.json | 5 ++- .../konnected/.translations/ko.json | 10 ++++- .../konnected/.translations/lb.json | 2 +- .../konnected/.translations/ru.json | 9 ++++- .../components/light/.translations/hu.json | 2 + .../components/light/.translations/lb.json | 2 + .../components/melcloud/.translations/pl.json | 2 +- .../minecraft_server/.translations/ca.json | 3 +- .../minecraft_server/.translations/da.json | 3 +- .../minecraft_server/.translations/de.json | 3 +- .../minecraft_server/.translations/en.json | 3 +- .../minecraft_server/.translations/es.json | 3 +- .../minecraft_server/.translations/fr.json | 3 +- .../minecraft_server/.translations/hu.json | 5 +-- .../minecraft_server/.translations/it.json | 3 +- .../minecraft_server/.translations/ko.json | 3 +- .../minecraft_server/.translations/lb.json | 3 +- .../minecraft_server/.translations/lv.json | 3 +- .../minecraft_server/.translations/nl.json | 3 +- .../minecraft_server/.translations/no.json | 3 +- .../minecraft_server/.translations/pl.json | 3 +- .../minecraft_server/.translations/ru.json | 3 +- .../minecraft_server/.translations/sl.json | 3 +- .../minecraft_server/.translations/sv.json | 3 +- .../minecraft_server/.translations/tr.json | 3 +- .../.translations/zh-Hant.json | 3 +- .../components/mqtt/.translations/hu.json | 14 ++++++- .../components/notion/.translations/bg.json | 1 - .../components/notion/.translations/ca.json | 1 - .../components/notion/.translations/da.json | 1 - .../components/notion/.translations/de.json | 1 - .../components/notion/.translations/en.json | 1 - .../notion/.translations/es-419.json | 1 - .../components/notion/.translations/es.json | 1 - .../components/notion/.translations/fr.json | 1 - .../components/notion/.translations/hr.json | 1 - .../components/notion/.translations/hu.json | 1 - .../components/notion/.translations/it.json | 1 - .../components/notion/.translations/ko.json | 1 - .../components/notion/.translations/lb.json | 1 - .../components/notion/.translations/nl.json | 1 - .../components/notion/.translations/no.json | 1 - .../components/notion/.translations/pl.json | 1 - .../notion/.translations/pt-BR.json | 1 - .../components/notion/.translations/ru.json | 1 - .../components/notion/.translations/sl.json | 1 - .../components/notion/.translations/sv.json | 1 - .../notion/.translations/zh-Hans.json | 1 - .../notion/.translations/zh-Hant.json | 1 - .../components/nut/.translations/ca.json | 10 +++-- .../components/nut/.translations/ko.json | 37 ++++++++++++++++++ .../components/nut/.translations/lb.json | 1 + .../components/nut/.translations/pl.json | 37 ++++++++++++++++++ .../components/nut/.translations/ru.json | 37 ++++++++++++++++++ .../opentherm_gw/.translations/bg.json | 4 +- .../opentherm_gw/.translations/ca.json | 4 +- .../opentherm_gw/.translations/da.json | 4 +- .../opentherm_gw/.translations/de.json | 4 +- .../opentherm_gw/.translations/en.json | 4 +- .../opentherm_gw/.translations/es.json | 4 +- .../opentherm_gw/.translations/fr.json | 4 +- .../opentherm_gw/.translations/hu.json | 4 +- .../opentherm_gw/.translations/it.json | 4 +- .../opentherm_gw/.translations/ko.json | 4 +- .../opentherm_gw/.translations/lb.json | 4 +- .../opentherm_gw/.translations/nl.json | 4 +- .../opentherm_gw/.translations/no.json | 4 +- .../opentherm_gw/.translations/pl.json | 4 +- .../opentherm_gw/.translations/ru.json | 4 +- .../opentherm_gw/.translations/sl.json | 4 +- .../opentherm_gw/.translations/sv.json | 4 +- .../opentherm_gw/.translations/zh-Hant.json | 4 +- .../components/plex/.translations/bg.json | 21 ---------- .../components/plex/.translations/ca.json | 21 ---------- .../components/plex/.translations/cs.json | 3 -- .../components/plex/.translations/da.json | 21 ---------- .../components/plex/.translations/de.json | 21 ---------- .../components/plex/.translations/en.json | 21 ---------- .../components/plex/.translations/es-419.json | 21 ---------- .../components/plex/.translations/es.json | 21 ---------- .../components/plex/.translations/fr.json | 21 ---------- .../components/plex/.translations/hu.json | 15 -------- .../components/plex/.translations/it.json | 21 ---------- .../components/plex/.translations/ko.json | 21 ---------- .../components/plex/.translations/lb.json | 21 ---------- .../components/plex/.translations/lv.json | 8 ---- .../components/plex/.translations/nl.json | 21 ---------- .../components/plex/.translations/no.json | 21 ---------- .../components/plex/.translations/pl.json | 21 ---------- .../components/plex/.translations/pt-BR.json | 1 - .../components/plex/.translations/ru.json | 21 ---------- .../components/plex/.translations/sl.json | 21 ---------- .../components/plex/.translations/sv.json | 21 ---------- .../plex/.translations/zh-Hant.json | 21 ---------- .../components/rachio/.translations/pl.json | 2 +- .../components/roku/.translations/ca.json | 3 +- .../components/roku/.translations/de.json | 3 +- .../components/roku/.translations/en.json | 3 +- .../components/roku/.translations/es.json | 3 +- .../components/roku/.translations/fr.json | 3 +- .../components/roku/.translations/it.json | 3 +- .../components/roku/.translations/ko.json | 3 +- .../components/roku/.translations/lb.json | 3 +- .../components/roku/.translations/no.json | 3 +- .../components/roku/.translations/pl.json | 3 +- .../components/roku/.translations/ru.json | 3 +- .../components/roku/.translations/sl.json | 3 +- .../roku/.translations/zh-Hant.json | 3 +- .../samsungtv/.translations/ca.json | 1 - .../samsungtv/.translations/da.json | 1 - .../samsungtv/.translations/de.json | 1 - .../samsungtv/.translations/en.json | 1 - .../samsungtv/.translations/es.json | 1 - .../samsungtv/.translations/fr.json | 1 - .../samsungtv/.translations/hu.json | 1 - .../samsungtv/.translations/it.json | 1 - .../samsungtv/.translations/ko.json | 1 - .../samsungtv/.translations/lb.json | 1 - .../samsungtv/.translations/nl.json | 1 - .../samsungtv/.translations/no.json | 1 - .../samsungtv/.translations/pl.json | 1 - .../samsungtv/.translations/ru.json | 1 - .../samsungtv/.translations/sl.json | 1 - .../samsungtv/.translations/sv.json | 1 - .../samsungtv/.translations/tr.json | 1 - .../samsungtv/.translations/zh-Hant.json | 1 - .../components/sensor/.translations/lb.json | 36 +++++++++--------- .../simplisafe/.translations/bg.json | 1 - .../simplisafe/.translations/ca.json | 1 - .../simplisafe/.translations/cs.json | 1 - .../simplisafe/.translations/da.json | 1 - .../simplisafe/.translations/de.json | 1 - .../simplisafe/.translations/en.json | 1 - .../simplisafe/.translations/es-419.json | 1 - .../simplisafe/.translations/es.json | 1 - .../simplisafe/.translations/fr.json | 1 - .../simplisafe/.translations/it.json | 1 - .../simplisafe/.translations/ko.json | 1 - .../simplisafe/.translations/lb.json | 1 - .../simplisafe/.translations/nl.json | 1 - .../simplisafe/.translations/no.json | 1 - .../simplisafe/.translations/pl.json | 1 - .../simplisafe/.translations/pt-BR.json | 1 - .../simplisafe/.translations/pt.json | 1 - .../simplisafe/.translations/ro.json | 1 - .../simplisafe/.translations/ru.json | 1 - .../simplisafe/.translations/sl.json | 1 - .../simplisafe/.translations/sv.json | 1 - .../simplisafe/.translations/uk.json | 1 - .../simplisafe/.translations/zh-Hans.json | 1 - .../simplisafe/.translations/zh-Hant.json | 1 - .../components/switch/.translations/bg.json | 4 +- .../components/switch/.translations/ca.json | 4 +- .../components/switch/.translations/da.json | 4 +- .../components/switch/.translations/de.json | 4 +- .../components/switch/.translations/en.json | 4 +- .../switch/.translations/es-419.json | 4 +- .../components/switch/.translations/es.json | 4 +- .../components/switch/.translations/fr.json | 4 +- .../components/switch/.translations/hu.json | 4 +- .../components/switch/.translations/it.json | 4 +- .../components/switch/.translations/ko.json | 4 +- .../components/switch/.translations/lb.json | 4 +- .../components/switch/.translations/lv.json | 4 -- .../components/switch/.translations/nl.json | 4 +- .../components/switch/.translations/no.json | 4 +- .../components/switch/.translations/pl.json | 4 +- .../components/switch/.translations/ru.json | 4 +- .../components/switch/.translations/sl.json | 4 +- .../components/switch/.translations/sv.json | 4 +- .../switch/.translations/zh-Hant.json | 4 +- .../transmission/.translations/bg.json | 10 +---- .../transmission/.translations/ca.json | 10 +---- .../transmission/.translations/da.json | 10 +---- .../transmission/.translations/de.json | 10 +---- .../transmission/.translations/en.json | 10 +---- .../transmission/.translations/es.json | 10 +---- .../transmission/.translations/fr.json | 10 +---- .../transmission/.translations/hu.json | 9 ----- .../transmission/.translations/it.json | 10 +---- .../transmission/.translations/ko.json | 10 +---- .../transmission/.translations/lb.json | 10 +---- .../transmission/.translations/nl.json | 10 +---- .../transmission/.translations/no.json | 10 +---- .../transmission/.translations/pl.json | 10 +---- .../transmission/.translations/pt-BR.json | 10 +---- .../transmission/.translations/ru.json | 10 +---- .../transmission/.translations/sl.json | 10 +---- .../transmission/.translations/sv.json | 10 +---- .../transmission/.translations/zh-Hant.json | 10 +---- .../components/unifi/.translations/ca.json | 3 +- .../components/unifi/.translations/de.json | 3 +- .../components/unifi/.translations/en.json | 3 +- .../components/unifi/.translations/es.json | 3 +- .../components/unifi/.translations/ko.json | 3 +- .../components/unifi/.translations/lb.json | 18 +++++++-- .../components/unifi/.translations/ru.json | 3 +- .../unifi/.translations/zh-Hant.json | 3 +- .../components/vera/.translations/ca.json | 32 ++++++++++++++++ .../components/vera/.translations/de.json | 31 +++++++++++++++ .../components/vera/.translations/en.json | 32 ++++++++++++++++ .../components/vera/.translations/es.json | 32 ++++++++++++++++ .../components/vera/.translations/ko.json | 32 ++++++++++++++++ .../components/vera/.translations/lb.json | 32 ++++++++++++++++ .../components/vera/.translations/ru.json | 32 ++++++++++++++++ .../vera/.translations/zh-Hant.json | 32 ++++++++++++++++ .../components/vilfo/.translations/pl.json | 2 +- .../components/vizio/.translations/ca.json | 28 +------------- .../components/vizio/.translations/da.json | 12 +----- .../components/vizio/.translations/de.json | 28 +------------- .../components/vizio/.translations/en.json | 28 +------------- .../components/vizio/.translations/es.json | 28 +------------- .../components/vizio/.translations/fr.json | 26 +------------ .../components/vizio/.translations/hu.json | 12 +----- .../components/vizio/.translations/it.json | 28 +------------- .../components/vizio/.translations/ko.json | 28 +------------- .../components/vizio/.translations/lb.json | 31 +++------------ .../components/vizio/.translations/nl.json | 12 +----- .../components/vizio/.translations/no.json | 28 +------------- .../components/vizio/.translations/pl.json | 28 +------------- .../components/vizio/.translations/ru.json | 28 +------------- .../components/vizio/.translations/sl.json | 28 +------------- .../components/vizio/.translations/sv.json | 12 +----- .../vizio/.translations/zh-Hant.json | 28 +------------- .../components/withings/.translations/bg.json | 10 ----- .../components/withings/.translations/ca.json | 10 +---- .../components/withings/.translations/da.json | 10 +---- .../components/withings/.translations/de.json | 10 +---- .../components/withings/.translations/en.json | 10 +---- .../withings/.translations/es-419.json | 11 ------ .../components/withings/.translations/es.json | 10 +---- .../components/withings/.translations/fr.json | 10 +---- .../components/withings/.translations/hu.json | 10 +---- .../components/withings/.translations/it.json | 10 +---- .../components/withings/.translations/ko.json | 10 +---- .../components/withings/.translations/lb.json | 10 +---- .../components/withings/.translations/lv.json | 8 ---- .../components/withings/.translations/nl.json | 10 +---- .../components/withings/.translations/no.json | 10 +---- .../components/withings/.translations/pl.json | 10 +---- .../components/withings/.translations/ru.json | 10 +---- .../components/withings/.translations/sl.json | 10 +---- .../components/withings/.translations/sv.json | 10 +---- .../withings/.translations/zh-Hant.json | 10 +---- .../wled/.translations/zh-Hant.json | 2 +- .../components/wwlln/.translations/bg.json | 3 -- .../components/wwlln/.translations/ca.json | 6 +-- .../components/wwlln/.translations/cy.json | 3 -- .../components/wwlln/.translations/da.json | 3 -- .../components/wwlln/.translations/de.json | 6 +-- .../components/wwlln/.translations/en.json | 6 +-- .../wwlln/.translations/es-419.json | 3 -- .../components/wwlln/.translations/es.json | 6 +-- .../components/wwlln/.translations/fr.json | 6 +-- .../components/wwlln/.translations/hr.json | 3 -- .../components/wwlln/.translations/it.json | 6 +-- .../components/wwlln/.translations/ko.json | 6 +-- .../components/wwlln/.translations/lb.json | 3 -- .../components/wwlln/.translations/nl.json | 3 -- .../components/wwlln/.translations/no.json | 6 +-- .../components/wwlln/.translations/pl.json | 6 +-- .../components/wwlln/.translations/pt-BR.json | 3 -- .../components/wwlln/.translations/ru.json | 3 -- .../components/wwlln/.translations/sl.json | 6 +-- .../components/wwlln/.translations/sv.json | 3 -- .../wwlln/.translations/zh-Hans.json | 3 -- .../wwlln/.translations/zh-Hant.json | 6 +-- 497 files changed, 1344 insertions(+), 2310 deletions(-) create mode 100644 homeassistant/components/.translations/synology_dsm.ca.json create mode 100644 homeassistant/components/.translations/synology_dsm.da.json create mode 100644 homeassistant/components/.translations/synology_dsm.en.json create mode 100644 homeassistant/components/.translations/synology_dsm.es.json create mode 100644 homeassistant/components/.translations/synology_dsm.ko.json create mode 100644 homeassistant/components/.translations/synology_dsm.lb.json create mode 100644 homeassistant/components/.translations/synology_dsm.nl.json create mode 100644 homeassistant/components/.translations/synology_dsm.ru.json create mode 100644 homeassistant/components/coronavirus/.translations/hu.json create mode 100644 homeassistant/components/flunearyou/.translations/ca.json create mode 100644 homeassistant/components/flunearyou/.translations/de.json create mode 100644 homeassistant/components/flunearyou/.translations/en.json create mode 100644 homeassistant/components/flunearyou/.translations/es.json create mode 100644 homeassistant/components/flunearyou/.translations/ko.json create mode 100644 homeassistant/components/flunearyou/.translations/lb.json create mode 100644 homeassistant/components/flunearyou/.translations/ru.json create mode 100644 homeassistant/components/flunearyou/.translations/zh-Hant.json create mode 100644 homeassistant/components/ipp/.translations/ko.json create mode 100644 homeassistant/components/nut/.translations/ko.json create mode 100644 homeassistant/components/nut/.translations/pl.json create mode 100644 homeassistant/components/nut/.translations/ru.json create mode 100644 homeassistant/components/vera/.translations/ca.json create mode 100644 homeassistant/components/vera/.translations/de.json create mode 100644 homeassistant/components/vera/.translations/en.json create mode 100644 homeassistant/components/vera/.translations/es.json create mode 100644 homeassistant/components/vera/.translations/ko.json create mode 100644 homeassistant/components/vera/.translations/lb.json create mode 100644 homeassistant/components/vera/.translations/ru.json create mode 100644 homeassistant/components/vera/.translations/zh-Hant.json diff --git a/homeassistant/components/.translations/synology_dsm.ca.json b/homeassistant/components/.translations/synology_dsm.ca.json new file mode 100644 index 00000000000..39b99ac9306 --- /dev/null +++ b/homeassistant/components/.translations/synology_dsm.ca.json @@ -0,0 +1,26 @@ +{ + "config": { + "abort": { + "already_configured": "L'amfitri\u00f3 ja est\u00e0 configurat" + }, + "error": { + "login": "Error d\u2019inici de sessi\u00f3: comprova el nom d'usuari i la contrasenya", + "unknown": "Error desconegut: torna-ho a provar m\u00e9s tard o revisa la configuraci\u00f3" + }, + "step": { + "user": { + "data": { + "api_version": "Versi\u00f3 DSM", + "host": "Amfitri\u00f3", + "name": "Nom", + "password": "Contrasenya", + "port": "Port", + "ssl": "Utilitza SSL/TLS per connectar-te al servidor NAS", + "username": "Nom d'usuari" + }, + "title": "Synology DSM" + } + }, + "title": "Synology DSM" + } +} \ No newline at end of file diff --git a/homeassistant/components/.translations/synology_dsm.da.json b/homeassistant/components/.translations/synology_dsm.da.json new file mode 100644 index 00000000000..f95e08df3c1 --- /dev/null +++ b/homeassistant/components/.translations/synology_dsm.da.json @@ -0,0 +1,18 @@ +{ + "config": { + "step": { + "link": { + "data": { + "password": "Adgangskode", + "username": "Brugernavn" + } + }, + "user": { + "data": { + "password": "Adgangskode", + "username": "Brugernavn" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/.translations/synology_dsm.en.json b/homeassistant/components/.translations/synology_dsm.en.json new file mode 100644 index 00000000000..3bac6d16288 --- /dev/null +++ b/homeassistant/components/.translations/synology_dsm.en.json @@ -0,0 +1,38 @@ +{ + "config": { + "abort": { + "already_configured": "Host already configured" + }, + "error": { + "login": "Login error: please check your username & password", + "unknown": "Unknown error: please retry later or an other configuration" + }, + "flow_title": "Synology DSM {name} ({host})", + "step": { + "link": { + "data": { + "api_version": "DSM version", + "password": "Password", + "port": "Port (Optional)", + "ssl": "Use SSL/TLS to connect to your NAS", + "username": "Username" + }, + "description": "Do you want to setup {name} ({host})?", + "title": "Synology DSM" + }, + "user": { + "data": { + "api_version": "DSM version", + "host": "Host", + "name": "Name", + "password": "Password", + "port": "Port (Optional)", + "ssl": "Use SSL/TLS to connect to your NAS", + "username": "Username" + }, + "title": "Synology DSM" + } + }, + "title": "Synology DSM" + } +} \ No newline at end of file diff --git a/homeassistant/components/.translations/synology_dsm.es.json b/homeassistant/components/.translations/synology_dsm.es.json new file mode 100644 index 00000000000..fafedb50a0e --- /dev/null +++ b/homeassistant/components/.translations/synology_dsm.es.json @@ -0,0 +1,26 @@ +{ + "config": { + "abort": { + "already_configured": "El host ya est\u00e1 configurado." + }, + "error": { + "login": "Error de inicio de sesi\u00f3n: comprueba tu direcci\u00f3n de correo electr\u00f3nico y contrase\u00f1a", + "unknown": "Error desconocido: por favor vuelve a intentarlo m\u00e1s tarde o usa otra configuraci\u00f3n" + }, + "step": { + "user": { + "data": { + "api_version": "Versi\u00f3n del DSM", + "host": "Host", + "name": "Nombre", + "password": "Contrase\u00f1a", + "port": "Puerto", + "ssl": "Usar SSL/TLS para conectar con tu NAS", + "username": "Usuario" + }, + "title": "Synology DSM" + } + }, + "title": "Synology DSM" + } +} \ No newline at end of file diff --git a/homeassistant/components/.translations/synology_dsm.ko.json b/homeassistant/components/.translations/synology_dsm.ko.json new file mode 100644 index 00000000000..60fcd9866c1 --- /dev/null +++ b/homeassistant/components/.translations/synology_dsm.ko.json @@ -0,0 +1,26 @@ +{ + "config": { + "abort": { + "already_configured": "\ud638\uc2a4\ud2b8\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4." + }, + "error": { + "login": "\ub85c\uadf8\uc778 \uc624\ub958: \uc0ac\uc6a9\uc790 \uc774\ub984 \ubc0f \ube44\ubc00\ubc88\ud638\ub97c \ud655\uc778\ud574\uc8fc\uc138\uc694", + "unknown": "\uc54c \uc218 \uc5c6\ub294 \uc624\ub958\uc785\ub2c8\ub2e4. \ub098\uc911\uc5d0 \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uac70\ub098 \ub2e4\ub978 \uad6c\uc131\uc744 \uc2dc\ub3c4\ud574\ubcf4\uc138\uc694" + }, + "step": { + "user": { + "data": { + "api_version": "DSM \ubc84\uc804", + "host": "\ud638\uc2a4\ud2b8", + "name": "\uc774\ub984", + "password": "\ube44\ubc00\ubc88\ud638", + "port": "\ud3ec\ud2b8", + "ssl": "SSL/TLS \ub97c \uc0ac\uc6a9\ud558\uc5ec NAS \uc5d0 \uc5f0\uacb0", + "username": "\uc0ac\uc6a9\uc790 \uc774\ub984" + }, + "title": "Synology DSM" + } + }, + "title": "Synology DSM" + } +} \ No newline at end of file diff --git a/homeassistant/components/.translations/synology_dsm.lb.json b/homeassistant/components/.translations/synology_dsm.lb.json new file mode 100644 index 00000000000..92026cbe2d8 --- /dev/null +++ b/homeassistant/components/.translations/synology_dsm.lb.json @@ -0,0 +1,26 @@ +{ + "config": { + "abort": { + "already_configured": "Apparat ass scho konfigur\u00e9iert" + }, + "error": { + "login": "Feeler beim Login: iwwerpr\u00e9if de Benotzernumm & Passwuert", + "unknown": "Onbekannte Feeler: prob\u00e9ier sp\u00e9ider nach emol oder mat enger aner Konfiguratioun" + }, + "step": { + "user": { + "data": { + "api_version": "DSM Versioun", + "host": "Apparat", + "name": "Numm", + "password": "Passwuert", + "port": "Port", + "ssl": "Benotzt SSL/TLS fir sech mam NAS ze verbannen", + "username": "Benotzernumm" + }, + "title": "Synology DSM" + } + }, + "title": "Synology DSM" + } +} \ No newline at end of file diff --git a/homeassistant/components/.translations/synology_dsm.nl.json b/homeassistant/components/.translations/synology_dsm.nl.json new file mode 100644 index 00000000000..1927227b65f --- /dev/null +++ b/homeassistant/components/.translations/synology_dsm.nl.json @@ -0,0 +1,37 @@ +{ + "config": { + "abort": { + "already_configured": "Host is al geconfigureerd." + }, + "error": { + "unknown": "Onbekende fout: probeer het later opnieuw of een andere configuratie" + }, + "flow_title": "Synology DSM {name} ({host})", + "step": { + "link": { + "data": { + "api_version": "DSM-versie", + "password": "Wachtwoord", + "port": "Poort (optioneel)", + "ssl": "Gebruik SSL/TLS om verbinding te maken met uw NAS", + "username": "Gebruikersnaam" + }, + "description": "Wil je {name} ({host}) instellen?", + "title": "Synology DSM" + }, + "user": { + "data": { + "api_version": "DSM-versie", + "host": "Host", + "name": "Naam", + "password": "Wachtwoord", + "port": "Poort (optioneel)", + "ssl": "Gebruik SSL/TLS om verbinding te maken met uw NAS", + "username": "Gebruikersnaam" + }, + "title": "Synology DSM" + } + }, + "title": "Synology DSM" + } +} \ No newline at end of file diff --git a/homeassistant/components/.translations/synology_dsm.ru.json b/homeassistant/components/.translations/synology_dsm.ru.json new file mode 100644 index 00000000000..c76fa9ee972 --- /dev/null +++ b/homeassistant/components/.translations/synology_dsm.ru.json @@ -0,0 +1,26 @@ +{ + "config": { + "abort": { + "already_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430." + }, + "error": { + "login": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u0445\u043e\u0434\u0430: \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043b\u043e\u0433\u0438\u043d \u0438 \u043f\u0430\u0440\u043e\u043b\u044c.", + "unknown": "\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430: \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0438\u043b\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043f\u043e\u0437\u0436\u0435." + }, + "step": { + "user": { + "data": { + "api_version": "\u0412\u0435\u0440\u0441\u0438\u044f DSM", + "host": "\u0425\u043e\u0441\u0442", + "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", + "password": "\u041f\u0430\u0440\u043e\u043b\u044c", + "port": "\u041f\u043e\u0440\u0442", + "ssl": "\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c SSL / TLS \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f", + "username": "\u041b\u043e\u0433\u0438\u043d" + }, + "title": "Synology DSM" + } + }, + "title": "Synology DSM" + } +} \ No newline at end of file diff --git a/homeassistant/components/airly/.translations/bg.json b/homeassistant/components/airly/.translations/bg.json index c91190d9852..e09d9c0d62f 100644 --- a/homeassistant/components/airly/.translations/bg.json +++ b/homeassistant/components/airly/.translations/bg.json @@ -2,7 +2,6 @@ "config": { "error": { "auth": "API \u043a\u043b\u044e\u0447\u044a\u0442 \u043d\u0435 \u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0435\u043d.", - "name_exists": "\u0418\u043c\u0435\u0442\u043e \u0432\u0435\u0447\u0435 \u0441\u044a\u0449\u0435\u0441\u0442\u0432\u0443\u0432\u0430.", "wrong_location": "\u0412 \u0442\u0430\u0437\u0438 \u043e\u0431\u043b\u0430\u0441\u0442 \u043d\u044f\u043c\u0430 \u0438\u0437\u043c\u0435\u0440\u0432\u0430\u0442\u0435\u043b\u043d\u0438 \u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u043d\u0430 Airly." }, "step": { diff --git a/homeassistant/components/airly/.translations/ca.json b/homeassistant/components/airly/.translations/ca.json index 4c5a7a6bd59..00ef4c7180e 100644 --- a/homeassistant/components/airly/.translations/ca.json +++ b/homeassistant/components/airly/.translations/ca.json @@ -5,7 +5,6 @@ }, "error": { "auth": "La clau API no \u00e9s correcta.", - "name_exists": "El nom ja existeix.", "wrong_location": "No hi ha estacions de mesura Airly en aquesta zona." }, "step": { diff --git a/homeassistant/components/airly/.translations/da.json b/homeassistant/components/airly/.translations/da.json index 52bf903d5a8..b33e9b18da8 100644 --- a/homeassistant/components/airly/.translations/da.json +++ b/homeassistant/components/airly/.translations/da.json @@ -5,7 +5,6 @@ }, "error": { "auth": "API-n\u00f8glen er ikke korrekt.", - "name_exists": "Navnet findes allerede.", "wrong_location": "Ingen Airly-m\u00e5lestationer i dette omr\u00e5de." }, "step": { diff --git a/homeassistant/components/airly/.translations/de.json b/homeassistant/components/airly/.translations/de.json index ef2b2d64a4e..727b67e3245 100644 --- a/homeassistant/components/airly/.translations/de.json +++ b/homeassistant/components/airly/.translations/de.json @@ -5,7 +5,6 @@ }, "error": { "auth": "Der API-Schl\u00fcssel ist nicht korrekt.", - "name_exists": "Name existiert bereits", "wrong_location": "Keine Airly Luftmessstation an diesem Ort" }, "step": { diff --git a/homeassistant/components/airly/.translations/en.json b/homeassistant/components/airly/.translations/en.json index cae6854d231..ef485ec610f 100644 --- a/homeassistant/components/airly/.translations/en.json +++ b/homeassistant/components/airly/.translations/en.json @@ -5,7 +5,6 @@ }, "error": { "auth": "API key is not correct.", - "name_exists": "Name already exists.", "wrong_location": "No Airly measuring stations in this area." }, "step": { diff --git a/homeassistant/components/airly/.translations/es-419.json b/homeassistant/components/airly/.translations/es-419.json index 74924493863..41f7e29b408 100644 --- a/homeassistant/components/airly/.translations/es-419.json +++ b/homeassistant/components/airly/.translations/es-419.json @@ -2,7 +2,6 @@ "config": { "error": { "auth": "La clave API no es correcta.", - "name_exists": "El nombre ya existe.", "wrong_location": "No hay estaciones de medici\u00f3n Airly en esta \u00e1rea." }, "step": { diff --git a/homeassistant/components/airly/.translations/es.json b/homeassistant/components/airly/.translations/es.json index 6fd18eb747c..b364a45c344 100644 --- a/homeassistant/components/airly/.translations/es.json +++ b/homeassistant/components/airly/.translations/es.json @@ -5,7 +5,6 @@ }, "error": { "auth": "La clave de la API no es correcta.", - "name_exists": "El nombre ya existe.", "wrong_location": "No hay estaciones de medici\u00f3n Airly en esta zona." }, "step": { diff --git a/homeassistant/components/airly/.translations/fr.json b/homeassistant/components/airly/.translations/fr.json index f2fdbbd9754..b11493e337f 100644 --- a/homeassistant/components/airly/.translations/fr.json +++ b/homeassistant/components/airly/.translations/fr.json @@ -5,7 +5,6 @@ }, "error": { "auth": "La cl\u00e9 API n'est pas correcte.", - "name_exists": "Le nom existe d\u00e9j\u00e0.", "wrong_location": "Aucune station de mesure Airly dans cette zone." }, "step": { diff --git a/homeassistant/components/airly/.translations/hu.json b/homeassistant/components/airly/.translations/hu.json index 30898c61abb..ae3990c31ce 100644 --- a/homeassistant/components/airly/.translations/hu.json +++ b/homeassistant/components/airly/.translations/hu.json @@ -5,7 +5,6 @@ }, "error": { "auth": "Az API kulcs nem megfelel\u0151.", - "name_exists": "A n\u00e9v m\u00e1r l\u00e9tezik", "wrong_location": "Ezen a ter\u00fcleten nincs Airly m\u00e9r\u0151\u00e1llom\u00e1s." }, "step": { diff --git a/homeassistant/components/airly/.translations/it.json b/homeassistant/components/airly/.translations/it.json index c52e77881c0..0453d397bc4 100644 --- a/homeassistant/components/airly/.translations/it.json +++ b/homeassistant/components/airly/.translations/it.json @@ -5,7 +5,6 @@ }, "error": { "auth": "La chiave API non \u00e8 corretta.", - "name_exists": "Il nome \u00e8 gi\u00e0 esistente", "wrong_location": "Nessuna stazione di misurazione Airly in quest'area." }, "step": { diff --git a/homeassistant/components/airly/.translations/ko.json b/homeassistant/components/airly/.translations/ko.json index b64a16635a6..75b9bcfc1c4 100644 --- a/homeassistant/components/airly/.translations/ko.json +++ b/homeassistant/components/airly/.translations/ko.json @@ -5,7 +5,6 @@ }, "error": { "auth": "API \ud0a4\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.", - "name_exists": "\uc774\ub984\uc774 \uc774\ubbf8 \uc874\uc7ac\ud569\ub2c8\ub2e4.", "wrong_location": "\uc774 \uc9c0\uc5ed\uc5d0\ub294 Airly \uce21\uc815 \uc2a4\ud14c\uc774\uc158\uc774 \uc5c6\uc2b5\ub2c8\ub2e4." }, "step": { diff --git a/homeassistant/components/airly/.translations/lb.json b/homeassistant/components/airly/.translations/lb.json index 8c2f5c615f3..75c77d9481e 100644 --- a/homeassistant/components/airly/.translations/lb.json +++ b/homeassistant/components/airly/.translations/lb.json @@ -5,7 +5,6 @@ }, "error": { "auth": "Api Schl\u00ebssel ass net korrekt.", - "name_exists": "Numm g\u00ebtt et schonn", "wrong_location": "Keng Airly Moos Statioun an d\u00ebsem Ber\u00e4ich" }, "step": { diff --git a/homeassistant/components/airly/.translations/nl.json b/homeassistant/components/airly/.translations/nl.json index a9c6865ad91..2e9c97c8232 100644 --- a/homeassistant/components/airly/.translations/nl.json +++ b/homeassistant/components/airly/.translations/nl.json @@ -5,7 +5,6 @@ }, "error": { "auth": "API-sleutel is niet correct.", - "name_exists": "Naam bestaat al.", "wrong_location": "Geen Airly meetstations in dit gebied." }, "step": { diff --git a/homeassistant/components/airly/.translations/no.json b/homeassistant/components/airly/.translations/no.json index 79dfcd7307e..492e1471351 100644 --- a/homeassistant/components/airly/.translations/no.json +++ b/homeassistant/components/airly/.translations/no.json @@ -5,7 +5,6 @@ }, "error": { "auth": "API-n\u00f8kkelen er ikke korrekt.", - "name_exists": "Navnet finnes allerede.", "wrong_location": "Ingen Airly m\u00e5lestasjoner i dette omr\u00e5det." }, "step": { diff --git a/homeassistant/components/airly/.translations/pl.json b/homeassistant/components/airly/.translations/pl.json index 5274a4383b6..85918d7c711 100644 --- a/homeassistant/components/airly/.translations/pl.json +++ b/homeassistant/components/airly/.translations/pl.json @@ -5,7 +5,6 @@ }, "error": { "auth": "Klucz API jest nieprawid\u0142owy.", - "name_exists": "Nazwa ju\u017c istnieje.", "wrong_location": "Brak stacji pomiarowych Airly w tym rejonie." }, "step": { diff --git a/homeassistant/components/airly/.translations/ru.json b/homeassistant/components/airly/.translations/ru.json index 5094d3f4d1e..7846d8173c4 100644 --- a/homeassistant/components/airly/.translations/ru.json +++ b/homeassistant/components/airly/.translations/ru.json @@ -5,7 +5,6 @@ }, "error": { "auth": "\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 API.", - "name_exists": "\u042d\u0442\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f.", "wrong_location": "\u0412 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043d\u0435\u0442 \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0430\u043d\u0446\u0438\u0439 Airly." }, "step": { diff --git a/homeassistant/components/airly/.translations/sl.json b/homeassistant/components/airly/.translations/sl.json index f8ca4e5b6d5..d7797997910 100644 --- a/homeassistant/components/airly/.translations/sl.json +++ b/homeassistant/components/airly/.translations/sl.json @@ -5,7 +5,6 @@ }, "error": { "auth": "Klju\u010d API ni pravilen.", - "name_exists": "Ime \u017ee obstaja", "wrong_location": "Na tem obmo\u010dju ni merilnih postaj Airly." }, "step": { diff --git a/homeassistant/components/airly/.translations/sv.json b/homeassistant/components/airly/.translations/sv.json index 5b81b4625a2..7c7d10f47dc 100644 --- a/homeassistant/components/airly/.translations/sv.json +++ b/homeassistant/components/airly/.translations/sv.json @@ -5,7 +5,6 @@ }, "error": { "auth": "API-nyckeln \u00e4r inte korrekt.", - "name_exists": "Namnet finns redan.", "wrong_location": "Inga Airly m\u00e4tstationer i detta omr\u00e5de." }, "step": { diff --git a/homeassistant/components/airly/.translations/zh-Hant.json b/homeassistant/components/airly/.translations/zh-Hant.json index 5bc0a52f394..66934d7a986 100644 --- a/homeassistant/components/airly/.translations/zh-Hant.json +++ b/homeassistant/components/airly/.translations/zh-Hant.json @@ -5,7 +5,6 @@ }, "error": { "auth": "API \u5bc6\u9470\u4e0d\u6b63\u78ba\u3002", - "name_exists": "\u8a72\u540d\u7a31\u5df2\u5b58\u5728", "wrong_location": "\u8a72\u5340\u57df\u6c92\u6709 Arily \u76e3\u6e2c\u7ad9\u3002" }, "step": { diff --git a/homeassistant/components/airvisual/.translations/ca.json b/homeassistant/components/airvisual/.translations/ca.json index 66cd796d752..070eeee8b51 100644 --- a/homeassistant/components/airvisual/.translations/ca.json +++ b/homeassistant/components/airvisual/.translations/ca.json @@ -11,8 +11,7 @@ "data": { "api_key": "Clau API", "latitude": "Latitud", - "longitude": "Longitud", - "show_on_map": "Mostra al mapa l'\u00e0rea geogr\u00e0fica monitoritzada" + "longitude": "Longitud" }, "description": "Monitoritzaci\u00f3 de la qualitat de l'aire per ubicaci\u00f3 geogr\u00e0fica.", "title": "Configura AirVisual" diff --git a/homeassistant/components/airvisual/.translations/de.json b/homeassistant/components/airvisual/.translations/de.json index fc603318ab4..02f25900428 100644 --- a/homeassistant/components/airvisual/.translations/de.json +++ b/homeassistant/components/airvisual/.translations/de.json @@ -11,8 +11,7 @@ "data": { "api_key": "API-Schl\u00fcssel", "latitude": "Breitengrad", - "longitude": "L\u00e4ngengrad", - "show_on_map": "Zeigen Sie die \u00fcberwachte Geografie auf der Karte an" + "longitude": "L\u00e4ngengrad" }, "description": "\u00dcberwachen Sie die Luftqualit\u00e4t an einem geografischen Ort.", "title": "Konfigurieren Sie AirVisual" diff --git a/homeassistant/components/airvisual/.translations/en.json b/homeassistant/components/airvisual/.translations/en.json index 982ed8e13e7..30d501f1af6 100644 --- a/homeassistant/components/airvisual/.translations/en.json +++ b/homeassistant/components/airvisual/.translations/en.json @@ -11,8 +11,7 @@ "data": { "api_key": "API Key", "latitude": "Latitude", - "longitude": "Longitude", - "show_on_map": "Show monitored geography on the map" + "longitude": "Longitude" }, "description": "Monitor air quality in a geographical location.", "title": "Configure AirVisual" diff --git a/homeassistant/components/airvisual/.translations/es.json b/homeassistant/components/airvisual/.translations/es.json index a1054c79098..752593ce29d 100644 --- a/homeassistant/components/airvisual/.translations/es.json +++ b/homeassistant/components/airvisual/.translations/es.json @@ -11,8 +11,7 @@ "data": { "api_key": "Clave API", "latitude": "Latitud", - "longitude": "Longitud", - "show_on_map": "Mostrar geograf\u00eda monitorizada en el mapa" + "longitude": "Longitud" }, "description": "Monitorizar la calidad del aire en una ubicaci\u00f3n geogr\u00e1fica.", "title": "Configurar AirVisual" diff --git a/homeassistant/components/airvisual/.translations/fr.json b/homeassistant/components/airvisual/.translations/fr.json index 9f32bbf5d94..6ee4377db95 100644 --- a/homeassistant/components/airvisual/.translations/fr.json +++ b/homeassistant/components/airvisual/.translations/fr.json @@ -11,8 +11,7 @@ "data": { "api_key": "Cl\u00e9 API", "latitude": "Latitude", - "longitude": "Longitude", - "show_on_map": "Afficher la g\u00e9ographie surveill\u00e9e sur la carte" + "longitude": "Longitude" }, "description": "Surveiller la qualit\u00e9 de l\u2019air dans un emplacement g\u00e9ographique.", "title": "Configurer AirVisual" diff --git a/homeassistant/components/airvisual/.translations/it.json b/homeassistant/components/airvisual/.translations/it.json index 7d309fdb22a..762c99ec4d7 100644 --- a/homeassistant/components/airvisual/.translations/it.json +++ b/homeassistant/components/airvisual/.translations/it.json @@ -11,8 +11,7 @@ "data": { "api_key": "Chiave API", "latitude": "Latitudine", - "longitude": "Logitudine", - "show_on_map": "Mostra l'area geografica monitorata sulla mappa" + "longitude": "Logitudine" }, "description": "Monitorare la qualit\u00e0 dell'aria in una posizione geografica.", "title": "Configura AirVisual" diff --git a/homeassistant/components/airvisual/.translations/ko.json b/homeassistant/components/airvisual/.translations/ko.json index 8f1155aa5f9..4e1511b2d2d 100644 --- a/homeassistant/components/airvisual/.translations/ko.json +++ b/homeassistant/components/airvisual/.translations/ko.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "\uc774 API \ud0a4\ub294 \uc774\ubbf8 \uc0ac\uc6a9 \uc911\uc785\ub2c8\ub2e4." + "already_configured": "\uc88c\ud45c\uac12\uc774 \uc774\ubbf8 \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4" }, "error": { "invalid_api_key": "\uc798\ubabb\ub41c API \ud0a4" @@ -11,8 +11,7 @@ "data": { "api_key": "API \ud0a4", "latitude": "\uc704\ub3c4", - "longitude": "\uacbd\ub3c4", - "show_on_map": "\uc9c0\ub3c4\uc5d0 \ubaa8\ub2c8\ud130\ub9c1\ub41c \uc9c0\ub9ac \uc815\ubcf4 \ud45c\uc2dc" + "longitude": "\uacbd\ub3c4" }, "description": "\uc9c0\ub9ac\uc801 \uc704\uce58\uc5d0\uc11c \ub300\uae30\uc9c8\uc744 \ubaa8\ub2c8\ud130\ub9c1\ud569\ub2c8\ub2e4.", "title": "AirVisual \uad6c\uc131" diff --git a/homeassistant/components/airvisual/.translations/lb.json b/homeassistant/components/airvisual/.translations/lb.json index eb267e793bb..a7f20253ef1 100644 --- a/homeassistant/components/airvisual/.translations/lb.json +++ b/homeassistant/components/airvisual/.translations/lb.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "D\u00ebsen App Schl\u00ebssel g\u00ebtt scho benotzt" + "already_configured": "D\u00ebs Koordinate si schon registr\u00e9iert." }, "error": { "invalid_api_key": "Ong\u00ebltegen API Schl\u00ebssel" @@ -13,6 +13,7 @@ "latitude": "Breedegrad", "longitude": "L\u00e4ngegrad" }, + "description": "Loft Qualit\u00e9it an enger geografescher Lag iwwerwaachen.", "title": "AirVisual konfigur\u00e9ieren" } }, @@ -21,6 +22,9 @@ "options": { "step": { "init": { + "data": { + "show_on_map": "Iwwerwaachte Geografie op der Kaart uweisen" + }, "description": "Verschidden Optioune fir d'AirVisual Integratioun d\u00e9fin\u00e9ieren.", "title": "Airvisual ariichten" } diff --git a/homeassistant/components/airvisual/.translations/no.json b/homeassistant/components/airvisual/.translations/no.json index 82533db387f..2a2a1fcd07c 100644 --- a/homeassistant/components/airvisual/.translations/no.json +++ b/homeassistant/components/airvisual/.translations/no.json @@ -11,8 +11,7 @@ "data": { "api_key": "API-n\u00f8kkel", "latitude": "Breddegrad", - "longitude": "Lengdegrad", - "show_on_map": "Vis overv\u00e5ket geografi p\u00e5 kartet" + "longitude": "Lengdegrad" }, "description": "Overv\u00e5k luftkvaliteten p\u00e5 et geografisk sted.", "title": "Konfigurer AirVisual" diff --git a/homeassistant/components/airvisual/.translations/pl.json b/homeassistant/components/airvisual/.translations/pl.json index ebcbc12e405..99c74c3e5cd 100644 --- a/homeassistant/components/airvisual/.translations/pl.json +++ b/homeassistant/components/airvisual/.translations/pl.json @@ -11,8 +11,7 @@ "data": { "api_key": "Klucz API", "latitude": "Szeroko\u015b\u0107 geograficzna", - "longitude": "D\u0142ugo\u015b\u0107 geograficzna", - "show_on_map": "Wy\u015bwietlaj encje na mapie" + "longitude": "D\u0142ugo\u015b\u0107 geograficzna" }, "description": "Monitoruj jako\u015b\u0107 powietrza w okre\u015blonej lokalizacji geograficznej.", "title": "Konfiguracja AirVisual" diff --git a/homeassistant/components/airvisual/.translations/ru.json b/homeassistant/components/airvisual/.translations/ru.json index 5c9634390c6..e8682a0188a 100644 --- a/homeassistant/components/airvisual/.translations/ru.json +++ b/homeassistant/components/airvisual/.translations/ru.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "\u042d\u0442\u043e\u0442 \u043a\u043b\u044e\u0447 API \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f." + "already_configured": "\u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0443\u0436\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b." }, "error": { "invalid_api_key": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 API." @@ -11,8 +11,7 @@ "data": { "api_key": "\u041a\u043b\u044e\u0447 API", "latitude": "\u0428\u0438\u0440\u043e\u0442\u0430", - "longitude": "\u0414\u043e\u043b\u0433\u043e\u0442\u0430", - "show_on_map": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u043c\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043d\u0430 \u043a\u0430\u0440\u0442\u0435" + "longitude": "\u0414\u043e\u043b\u0433\u043e\u0442\u0430" }, "description": "\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0439\u0442\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u043e\u0437\u0434\u0443\u0445\u0430 \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438.", "title": "AirVisual" diff --git a/homeassistant/components/airvisual/.translations/sl.json b/homeassistant/components/airvisual/.translations/sl.json index 97ed91592d5..6511c7b6da8 100644 --- a/homeassistant/components/airvisual/.translations/sl.json +++ b/homeassistant/components/airvisual/.translations/sl.json @@ -11,8 +11,7 @@ "data": { "api_key": "API Klju\u010d", "latitude": "Zemljepisna \u0161irina", - "longitude": "Zemljepisna dol\u017eina", - "show_on_map": "Prika\u017ei nadzorovano obmo\u010dje na zemljevidu" + "longitude": "Zemljepisna dol\u017eina" }, "description": "Spremljajte kakovost zraka na zemljepisni lokaciji.", "title": "Nastavite AirVisual" diff --git a/homeassistant/components/airvisual/.translations/zh-Hant.json b/homeassistant/components/airvisual/.translations/zh-Hant.json index 5c347e3b251..e40926d4a08 100644 --- a/homeassistant/components/airvisual/.translations/zh-Hant.json +++ b/homeassistant/components/airvisual/.translations/zh-Hant.json @@ -11,8 +11,7 @@ "data": { "api_key": "API \u5bc6\u9470", "latitude": "\u7def\u5ea6", - "longitude": "\u7d93\u5ea6", - "show_on_map": "\u65bc\u5730\u5716\u4e0a\u986f\u793a\u76e3\u63a7\u4f4d\u7f6e\u3002" + "longitude": "\u7d93\u5ea6" }, "description": "\u4f9d\u5730\u7406\u4f4d\u7f6e\u76e3\u63a7\u7a7a\u6c23\u54c1\u8cea\u3002", "title": "\u8a2d\u5b9a AirVisual" diff --git a/homeassistant/components/ambient_station/.translations/bg.json b/homeassistant/components/ambient_station/.translations/bg.json index 2099038f004..df9fe8866ac 100644 --- a/homeassistant/components/ambient_station/.translations/bg.json +++ b/homeassistant/components/ambient_station/.translations/bg.json @@ -1,7 +1,6 @@ { "config": { "error": { - "identifier_exists": "Application \u0438/\u0438\u043b\u0438 API \u043a\u043b\u044e\u0447\u044a\u0442 \u0432\u0435\u0447\u0435 \u0441\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0430\u043d\u0438", "invalid_key": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d API \u043a\u043b\u044e\u0447 \u0438/\u0438\u043b\u0438 Application \u043a\u043b\u044e\u0447", "no_devices": "\u041d\u0435 \u0441\u0430 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0430" }, diff --git a/homeassistant/components/ambient_station/.translations/ca.json b/homeassistant/components/ambient_station/.translations/ca.json index 280a90354b0..0991c74b0a5 100644 --- a/homeassistant/components/ambient_station/.translations/ca.json +++ b/homeassistant/components/ambient_station/.translations/ca.json @@ -4,7 +4,6 @@ "already_configured": "Aquesta clau d'aplicaci\u00f3 ja est\u00e0 en \u00fas." }, "error": { - "identifier_exists": "Clau d'aplicaci\u00f3 i/o clau API ja registrada", "invalid_key": "Clau API i/o clau d'aplicaci\u00f3 inv\u00e0lida/es", "no_devices": "No s'ha trobat cap dispositiu al compte" }, diff --git a/homeassistant/components/ambient_station/.translations/da.json b/homeassistant/components/ambient_station/.translations/da.json index 6428508687d..5028a84eb31 100644 --- a/homeassistant/components/ambient_station/.translations/da.json +++ b/homeassistant/components/ambient_station/.translations/da.json @@ -4,7 +4,6 @@ "already_configured": "Denne appn\u00f8gle er allerede i brug." }, "error": { - "identifier_exists": "Applikationsn\u00f8gle og/eller API n\u00f8gle er allerede registreret", "invalid_key": "Ugyldig API n\u00f8gle og/eller applikationsn\u00f8gle", "no_devices": "Ingen enheder fundet i konto" }, diff --git a/homeassistant/components/ambient_station/.translations/de.json b/homeassistant/components/ambient_station/.translations/de.json index 451a2e70e68..9213007e935 100644 --- a/homeassistant/components/ambient_station/.translations/de.json +++ b/homeassistant/components/ambient_station/.translations/de.json @@ -4,7 +4,6 @@ "already_configured": "Dieser App-Schl\u00fcssel wird bereits verwendet." }, "error": { - "identifier_exists": "Anwendungsschl\u00fcssel und / oder API-Schl\u00fcssel bereits registriert", "invalid_key": "Ung\u00fcltiger API Key und / oder Anwendungsschl\u00fcssel", "no_devices": "Keine Ger\u00e4te im Konto gefunden" }, diff --git a/homeassistant/components/ambient_station/.translations/en.json b/homeassistant/components/ambient_station/.translations/en.json index 8b8e71d5316..c3e2a40ab13 100644 --- a/homeassistant/components/ambient_station/.translations/en.json +++ b/homeassistant/components/ambient_station/.translations/en.json @@ -4,7 +4,6 @@ "already_configured": "This app key is already in use." }, "error": { - "identifier_exists": "Application Key and/or API Key already registered", "invalid_key": "Invalid API Key and/or Application Key", "no_devices": "No devices found in account" }, diff --git a/homeassistant/components/ambient_station/.translations/es-419.json b/homeassistant/components/ambient_station/.translations/es-419.json index 268a6ba001e..4cca42afbf4 100644 --- a/homeassistant/components/ambient_station/.translations/es-419.json +++ b/homeassistant/components/ambient_station/.translations/es-419.json @@ -1,7 +1,6 @@ { "config": { "error": { - "identifier_exists": "Clave de aplicaci\u00f3n y/o clave de API ya registrada", "invalid_key": "Clave de API y/o clave de aplicaci\u00f3n no v\u00e1lida", "no_devices": "No se han encontrado dispositivos en la cuenta." }, diff --git a/homeassistant/components/ambient_station/.translations/es.json b/homeassistant/components/ambient_station/.translations/es.json index d575db2ba71..ae8b829d56e 100644 --- a/homeassistant/components/ambient_station/.translations/es.json +++ b/homeassistant/components/ambient_station/.translations/es.json @@ -4,7 +4,6 @@ "already_configured": "Esta clave API ya est\u00e1 en uso." }, "error": { - "identifier_exists": "La clave API y/o la clave de aplicaci\u00f3n ya est\u00e1 registrada", "invalid_key": "Clave API y/o clave de aplicaci\u00f3n no v\u00e1lida", "no_devices": "No se han encontrado dispositivos en la cuenta" }, diff --git a/homeassistant/components/ambient_station/.translations/fr.json b/homeassistant/components/ambient_station/.translations/fr.json index 00f4e3d02fc..34490332c12 100644 --- a/homeassistant/components/ambient_station/.translations/fr.json +++ b/homeassistant/components/ambient_station/.translations/fr.json @@ -4,7 +4,6 @@ "already_configured": "Cette cl\u00e9 d'application est d\u00e9j\u00e0 utilis\u00e9e." }, "error": { - "identifier_exists": "Cl\u00e9 d'application et / ou cl\u00e9 API d\u00e9j\u00e0 enregistr\u00e9e", "invalid_key": "Cl\u00e9 d'API et / ou cl\u00e9 d'application non valide", "no_devices": "Aucun appareil trouv\u00e9 dans le compte" }, diff --git a/homeassistant/components/ambient_station/.translations/hu.json b/homeassistant/components/ambient_station/.translations/hu.json index 222b512c39f..6febc6ec20d 100644 --- a/homeassistant/components/ambient_station/.translations/hu.json +++ b/homeassistant/components/ambient_station/.translations/hu.json @@ -1,7 +1,6 @@ { "config": { "error": { - "identifier_exists": "Alkalmaz\u00e1s kulcsot \u00e9s/vagy az API kulcsot m\u00e1r regisztr\u00e1lt\u00e1k", "invalid_key": "\u00c9rv\u00e9nytelen API kulcs \u00e9s / vagy alkalmaz\u00e1skulcs", "no_devices": "Nincs a fi\u00f3kodban tal\u00e1lhat\u00f3 eszk\u00f6z" }, diff --git a/homeassistant/components/ambient_station/.translations/it.json b/homeassistant/components/ambient_station/.translations/it.json index 6bfaaac8f01..e5c27bd3939 100644 --- a/homeassistant/components/ambient_station/.translations/it.json +++ b/homeassistant/components/ambient_station/.translations/it.json @@ -4,7 +4,6 @@ "already_configured": "Questa chiave dell'app \u00e8 gi\u00e0 in uso." }, "error": { - "identifier_exists": "API Key e/o Application Key gi\u00e0 registrata", "invalid_key": "API Key e/o Application Key non valida", "no_devices": "Nessun dispositivo trovato nell'account" }, diff --git a/homeassistant/components/ambient_station/.translations/ko.json b/homeassistant/components/ambient_station/.translations/ko.json index 3379411678b..2aa38688957 100644 --- a/homeassistant/components/ambient_station/.translations/ko.json +++ b/homeassistant/components/ambient_station/.translations/ko.json @@ -4,7 +4,6 @@ "already_configured": "\uc774 \uc571 \ud0a4\ub294 \uc774\ubbf8 \uc0ac\uc6a9 \uc911\uc785\ub2c8\ub2e4." }, "error": { - "identifier_exists": "\uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ud0a4 \ud639\uc740 API \ud0a4\uac00 \uc774\ubbf8 \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4", "invalid_key": "\uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ud0a4 \ud639\uc740 API \ud0a4\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4", "no_devices": "\uacc4\uc815\uc5d0 \uae30\uae30\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4" }, diff --git a/homeassistant/components/ambient_station/.translations/lb.json b/homeassistant/components/ambient_station/.translations/lb.json index 891051bae00..1c6f9224c57 100644 --- a/homeassistant/components/ambient_station/.translations/lb.json +++ b/homeassistant/components/ambient_station/.translations/lb.json @@ -4,7 +4,6 @@ "already_configured": "D\u00ebsen App Schl\u00ebssel g\u00ebtt scho benotzt" }, "error": { - "identifier_exists": "Applikatioun's Schl\u00ebssel an/oder API Schl\u00ebssel ass scho registr\u00e9iert", "invalid_key": "Ong\u00ebltegen API Schl\u00ebssel an/oder Applikatioun's Schl\u00ebssel", "no_devices": "Keng Apparater am Kont fonnt" }, diff --git a/homeassistant/components/ambient_station/.translations/nl.json b/homeassistant/components/ambient_station/.translations/nl.json index a070128eefe..bc8f90057e3 100644 --- a/homeassistant/components/ambient_station/.translations/nl.json +++ b/homeassistant/components/ambient_station/.translations/nl.json @@ -1,7 +1,6 @@ { "config": { "error": { - "identifier_exists": "Applicatiesleutel en/of API-sleutel al geregistreerd", "invalid_key": "Ongeldige API-sleutel en/of applicatiesleutel", "no_devices": "Geen apparaten gevonden in account" }, diff --git a/homeassistant/components/ambient_station/.translations/no.json b/homeassistant/components/ambient_station/.translations/no.json index 2b915aafce1..b69081286ed 100644 --- a/homeassistant/components/ambient_station/.translations/no.json +++ b/homeassistant/components/ambient_station/.translations/no.json @@ -4,7 +4,6 @@ "already_configured": "Denne app n\u00f8kkelen er allerede i bruk." }, "error": { - "identifier_exists": "Programn\u00f8kkel og/eller API-n\u00f8kkel er allerede registrert", "invalid_key": "Ugyldig API-n\u00f8kkel og/eller programn\u00f8kkel", "no_devices": "Ingen enheter funnet i kontoen" }, diff --git a/homeassistant/components/ambient_station/.translations/pl.json b/homeassistant/components/ambient_station/.translations/pl.json index 5da886f05cd..45d98e64dbb 100644 --- a/homeassistant/components/ambient_station/.translations/pl.json +++ b/homeassistant/components/ambient_station/.translations/pl.json @@ -4,7 +4,6 @@ "already_configured": "Ten klucz aplikacji jest ju\u017c w u\u017cyciu." }, "error": { - "identifier_exists": "Klucz aplikacji i/lub klucz API ju\u017c jest zarejestrowany.", "invalid_key": "Nieprawid\u0142owy klucz API i/lub klucz aplikacji", "no_devices": "Nie znaleziono urz\u0105dze\u0144 na koncie" }, diff --git a/homeassistant/components/ambient_station/.translations/pt-BR.json b/homeassistant/components/ambient_station/.translations/pt-BR.json index 61f5cea5e26..533d46ca8b7 100644 --- a/homeassistant/components/ambient_station/.translations/pt-BR.json +++ b/homeassistant/components/ambient_station/.translations/pt-BR.json @@ -1,7 +1,6 @@ { "config": { "error": { - "identifier_exists": "Chave de aplicativo e / ou chave de API j\u00e1 registrada", "invalid_key": "Chave de API e / ou chave de aplicativo inv\u00e1lidas", "no_devices": "Nenhum dispositivo encontrado na conta" }, diff --git a/homeassistant/components/ambient_station/.translations/pt.json b/homeassistant/components/ambient_station/.translations/pt.json index 92746b29f3d..61d8bf3ae1c 100644 --- a/homeassistant/components/ambient_station/.translations/pt.json +++ b/homeassistant/components/ambient_station/.translations/pt.json @@ -1,7 +1,6 @@ { "config": { "error": { - "identifier_exists": "Chave de aplica\u00e7\u00e3o e/ou chave de API j\u00e1 registradas.", "invalid_key": "Chave de API e/ou chave de aplica\u00e7\u00e3o inv\u00e1lidas", "no_devices": "Nenhum dispositivo encontrado na conta" }, diff --git a/homeassistant/components/ambient_station/.translations/ru.json b/homeassistant/components/ambient_station/.translations/ru.json index 07f3907eea1..e1f01d1567f 100644 --- a/homeassistant/components/ambient_station/.translations/ru.json +++ b/homeassistant/components/ambient_station/.translations/ru.json @@ -4,7 +4,6 @@ "already_configured": "\u042d\u0442\u043e\u0442 \u043a\u043b\u044e\u0447 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f." }, "error": { - "identifier_exists": "\u041a\u043b\u044e\u0447 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438/\u0438\u043b\u0438 \u043a\u043b\u044e\u0447 API \u0443\u0436\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d.", "invalid_key": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 API \u0438/\u0438\u043b\u0438 \u043a\u043b\u044e\u0447 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.", "no_devices": "\u0412 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b." }, diff --git a/homeassistant/components/ambient_station/.translations/sl.json b/homeassistant/components/ambient_station/.translations/sl.json index d5cf039b9f4..4f9389e7e49 100644 --- a/homeassistant/components/ambient_station/.translations/sl.json +++ b/homeassistant/components/ambient_station/.translations/sl.json @@ -4,7 +4,6 @@ "already_configured": "Ta klju\u010d za aplikacijo je \u017ee v uporabi." }, "error": { - "identifier_exists": "Aplikacijski klju\u010d in / ali klju\u010d API je \u017ee registriran", "invalid_key": "Neveljaven klju\u010d API in / ali klju\u010d aplikacije", "no_devices": "V ra\u010dunu ni najdene nobene naprave" }, diff --git a/homeassistant/components/ambient_station/.translations/sv.json b/homeassistant/components/ambient_station/.translations/sv.json index c429d439503..2f68fe4332d 100644 --- a/homeassistant/components/ambient_station/.translations/sv.json +++ b/homeassistant/components/ambient_station/.translations/sv.json @@ -1,7 +1,6 @@ { "config": { "error": { - "identifier_exists": "Applikationsnyckel och/eller API-nyckel \u00e4r redan registrerade", "invalid_key": "Ogiltigt API-nyckel och/eller applikationsnyckel", "no_devices": "Inga enheter hittades i kontot" }, diff --git a/homeassistant/components/ambient_station/.translations/zh-Hans.json b/homeassistant/components/ambient_station/.translations/zh-Hans.json index 866c06316f1..dc6f2d51ee9 100644 --- a/homeassistant/components/ambient_station/.translations/zh-Hans.json +++ b/homeassistant/components/ambient_station/.translations/zh-Hans.json @@ -1,7 +1,6 @@ { "config": { "error": { - "identifier_exists": "Application Key \u548c/\u6216 API Key \u5df2\u6ce8\u518c", "invalid_key": "\u65e0\u6548\u7684 API \u5bc6\u94a5\u548c/\u6216 Application Key", "no_devices": "\u6ca1\u6709\u5728\u5e10\u6237\u4e2d\u627e\u5230\u8bbe\u5907" }, diff --git a/homeassistant/components/ambient_station/.translations/zh-Hant.json b/homeassistant/components/ambient_station/.translations/zh-Hant.json index 6de1579f6ff..fdc7b87aa6b 100644 --- a/homeassistant/components/ambient_station/.translations/zh-Hant.json +++ b/homeassistant/components/ambient_station/.translations/zh-Hant.json @@ -4,7 +4,6 @@ "already_configured": "\u6b64\u61c9\u7528\u7a0b\u5f0f\u5bc6\u9470\u5df2\u88ab\u4f7f\u7528\u3002" }, "error": { - "identifier_exists": "API \u5bc6\u9470\u53ca/\u6216\u61c9\u7528\u5bc6\u9470\u5df2\u8a3b\u518a", "invalid_key": "API \u5bc6\u9470\u53ca/\u6216\u61c9\u7528\u5bc6\u9470\u7121\u6548", "no_devices": "\u5e33\u865f\u4e2d\u627e\u4e0d\u5230\u4efb\u4f55\u8a2d\u5099" }, diff --git a/homeassistant/components/axis/.translations/ca.json b/homeassistant/components/axis/.translations/ca.json index 58f5c0e4ad2..b391af0e609 100644 --- a/homeassistant/components/axis/.translations/ca.json +++ b/homeassistant/components/axis/.translations/ca.json @@ -4,8 +4,7 @@ "already_configured": "El dispositiu ja est\u00e0 configurat", "bad_config_file": "Dades incorrectes del fitxer de configuraci\u00f3", "link_local_address": "L'enlla\u00e7 d'adreces locals no est\u00e0 disponible", - "not_axis_device": "El dispositiu descobert no \u00e9s un dispositiu Axis", - "updated_configuration": "S'ha actualitzat la configuraci\u00f3 del dispositiu amb l'adre\u00e7a nova" + "not_axis_device": "El dispositiu descobert no \u00e9s un dispositiu Axis" }, "error": { "already_configured": "El dispositiu ja est\u00e0 configurat", diff --git a/homeassistant/components/axis/.translations/da.json b/homeassistant/components/axis/.translations/da.json index 355dbad83d5..21f33d120f7 100644 --- a/homeassistant/components/axis/.translations/da.json +++ b/homeassistant/components/axis/.translations/da.json @@ -4,8 +4,7 @@ "already_configured": "Enheden er allerede konfigureret", "bad_config_file": "Forkerte data fra konfigurationsfilen", "link_local_address": "Link lokale adresser underst\u00f8ttes ikke", - "not_axis_device": "Fundet enhed ikke en Axis enhed", - "updated_configuration": "Opdaterede enhedskonfiguration med ny v\u00e6rtsadresse" + "not_axis_device": "Fundet enhed ikke en Axis enhed" }, "error": { "already_configured": "Enheden er allerede konfigureret", diff --git a/homeassistant/components/axis/.translations/de.json b/homeassistant/components/axis/.translations/de.json index a92c948a2a7..f238b00e847 100644 --- a/homeassistant/components/axis/.translations/de.json +++ b/homeassistant/components/axis/.translations/de.json @@ -4,8 +4,7 @@ "already_configured": "Ger\u00e4t ist bereits konfiguriert", "bad_config_file": "Fehlerhafte Daten aus der Konfigurationsdatei", "link_local_address": "Link-local Adressen werden nicht unterst\u00fctzt", - "not_axis_device": "Erkanntes Ger\u00e4t ist kein Axis-Ger\u00e4t", - "updated_configuration": "Ger\u00e4tekonfiguration mit neuer Hostadresse aktualisiert" + "not_axis_device": "Erkanntes Ger\u00e4t ist kein Axis-Ger\u00e4t" }, "error": { "already_configured": "Ger\u00e4t ist bereits konfiguriert", diff --git a/homeassistant/components/axis/.translations/en.json b/homeassistant/components/axis/.translations/en.json index 1f00800422c..b56cb0c5b74 100644 --- a/homeassistant/components/axis/.translations/en.json +++ b/homeassistant/components/axis/.translations/en.json @@ -4,8 +4,7 @@ "already_configured": "Device is already configured", "bad_config_file": "Bad data from configuration file", "link_local_address": "Link local addresses are not supported", - "not_axis_device": "Discovered device not an Axis device", - "updated_configuration": "Updated device configuration with new host address" + "not_axis_device": "Discovered device not an Axis device" }, "error": { "already_configured": "Device is already configured", diff --git a/homeassistant/components/axis/.translations/es.json b/homeassistant/components/axis/.translations/es.json index 885e8f68913..3f7db674fdf 100644 --- a/homeassistant/components/axis/.translations/es.json +++ b/homeassistant/components/axis/.translations/es.json @@ -4,8 +4,7 @@ "already_configured": "El dispositivo ya est\u00e1 configurado", "bad_config_file": "Datos err\u00f3neos en el archivo de configuraci\u00f3n", "link_local_address": "Las direcciones de enlace locales no son compatibles", - "not_axis_device": "El dispositivo descubierto no es un dispositivo de Axis", - "updated_configuration": "Configuraci\u00f3n del dispositivo actualizada con la nueva direcci\u00f3n de host" + "not_axis_device": "El dispositivo descubierto no es un dispositivo de Axis" }, "error": { "already_configured": "El dispositivo ya est\u00e1 configurado", diff --git a/homeassistant/components/axis/.translations/fr.json b/homeassistant/components/axis/.translations/fr.json index 07cfbd46504..608e12d020a 100644 --- a/homeassistant/components/axis/.translations/fr.json +++ b/homeassistant/components/axis/.translations/fr.json @@ -4,8 +4,7 @@ "already_configured": "L'appareil est d\u00e9j\u00e0 configur\u00e9", "bad_config_file": "Mauvaises donn\u00e9es du fichier de configuration", "link_local_address": "Les adresses locales ne sont pas prises en charge", - "not_axis_device": "L'appareil d\u00e9couvert n'est pas un appareil Axis", - "updated_configuration": "Mise \u00e0 jour de la configuration du dispositif avec la nouvelle adresse de l'h\u00f4te" + "not_axis_device": "L'appareil d\u00e9couvert n'est pas un appareil Axis" }, "error": { "already_configured": "L'appareil est d\u00e9j\u00e0 configur\u00e9", diff --git a/homeassistant/components/axis/.translations/hu.json b/homeassistant/components/axis/.translations/hu.json index 4f05087cad8..b6347e21744 100644 --- a/homeassistant/components/axis/.translations/hu.json +++ b/homeassistant/components/axis/.translations/hu.json @@ -1,8 +1,5 @@ { "config": { - "abort": { - "updated_configuration": "Friss\u00edtett eszk\u00f6zkonfigur\u00e1ci\u00f3 \u00faj \u00e1llom\u00e1sc\u00edmmel" - }, "error": { "already_configured": "Az eszk\u00f6zt m\u00e1r konfigur\u00e1ltuk", "device_unavailable": "Az eszk\u00f6z nem \u00e9rhet\u0151 el", diff --git a/homeassistant/components/axis/.translations/it.json b/homeassistant/components/axis/.translations/it.json index 9e2eecf5747..3f303140c68 100644 --- a/homeassistant/components/axis/.translations/it.json +++ b/homeassistant/components/axis/.translations/it.json @@ -4,8 +4,7 @@ "already_configured": "Il dispositivo \u00e8 gi\u00e0 configurato", "bad_config_file": "Dati errati dal file di configurazione", "link_local_address": "Gli indirizzi locali di collegamento non sono supportati", - "not_axis_device": "Il dispositivo rilevato non \u00e8 un dispositivo Axis", - "updated_configuration": "Configurazione del dispositivo aggiornata con nuovo indirizzo host" + "not_axis_device": "Il dispositivo rilevato non \u00e8 un dispositivo Axis" }, "error": { "already_configured": "Il dispositivo \u00e8 gi\u00e0 configurato", diff --git a/homeassistant/components/axis/.translations/ko.json b/homeassistant/components/axis/.translations/ko.json index 3f1aa97f266..648bd3cfd7d 100644 --- a/homeassistant/components/axis/.translations/ko.json +++ b/homeassistant/components/axis/.translations/ko.json @@ -4,8 +4,7 @@ "already_configured": "\uae30\uae30\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4", "bad_config_file": "\uad6c\uc131 \ud30c\uc77c\uc5d0 \uc798\ubabb\ub41c \ub370\uc774\ud130\uac00 \uc788\uc2b5\ub2c8\ub2e4", "link_local_address": "\ub85c\uceec \uc8fc\uc18c \uc5f0\uacb0\uc740 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4", - "not_axis_device": "\ubc1c\uacac\ub41c \uae30\uae30\ub294 Axis \uae30\uae30\uac00 \uc544\ub2d9\ub2c8\ub2e4", - "updated_configuration": "\uc0c8\ub85c\uc6b4 \ud638\uc2a4\ud2b8 \uc8fc\uc18c\ub85c \uc5c5\ub370\uc774\ud2b8\ub41c \uae30\uae30 \uad6c\uc131" + "not_axis_device": "\ubc1c\uacac\ub41c \uae30\uae30\ub294 Axis \uae30\uae30\uac00 \uc544\ub2d9\ub2c8\ub2e4" }, "error": { "already_configured": "\uae30\uae30\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4", diff --git a/homeassistant/components/axis/.translations/lb.json b/homeassistant/components/axis/.translations/lb.json index 589932cd68e..24ee0e24125 100644 --- a/homeassistant/components/axis/.translations/lb.json +++ b/homeassistant/components/axis/.translations/lb.json @@ -4,8 +4,7 @@ "already_configured": "Apparat ass scho konfigur\u00e9iert", "bad_config_file": "Feelerhaft Donn\u00e9e\u00eb aus der Konfiguratioun's Datei", "link_local_address": "Lokal Link Adressen ginn net \u00ebnnerst\u00ebtzt", - "not_axis_device": "Entdeckten Apparat ass keen Axis Apparat", - "updated_configuration": "Konfiguratioun vum Apparat gouf mat der neier Adress aktualis\u00e9iert" + "not_axis_device": "Entdeckten Apparat ass keen Axis Apparat" }, "error": { "already_configured": "Apparat ass scho konfigur\u00e9iert", diff --git a/homeassistant/components/axis/.translations/nl.json b/homeassistant/components/axis/.translations/nl.json index b512690e2a3..10fc8c02d66 100644 --- a/homeassistant/components/axis/.translations/nl.json +++ b/homeassistant/components/axis/.translations/nl.json @@ -4,8 +4,7 @@ "already_configured": "Apparaat is al geconfigureerd", "bad_config_file": "Slechte gegevens van het configuratiebestand", "link_local_address": "Link-lokale adressen worden niet ondersteund", - "not_axis_device": "Ontdekte apparaat, is geen Axis-apparaat", - "updated_configuration": "Bijgewerkte apparaatconfiguratie met nieuw hostadres" + "not_axis_device": "Ontdekte apparaat, is geen Axis-apparaat" }, "error": { "already_configured": "Apparaat is al geconfigureerd", diff --git a/homeassistant/components/axis/.translations/no.json b/homeassistant/components/axis/.translations/no.json index 010472d2cce..1ad7a446cfa 100644 --- a/homeassistant/components/axis/.translations/no.json +++ b/homeassistant/components/axis/.translations/no.json @@ -4,8 +4,7 @@ "already_configured": "Enheten er allerede konfigurert", "bad_config_file": "D\u00e5rlige data fra konfigurasjonsfilen", "link_local_address": "Linking av lokale adresser st\u00f8ttes ikke", - "not_axis_device": "Oppdaget enhet ikke en Axis enhet", - "updated_configuration": "Oppdatert enhetskonfigurasjonen med ny vertsadresse" + "not_axis_device": "Oppdaget enhet ikke en Axis enhet" }, "error": { "already_configured": "Enheten er allerede konfigurert", diff --git a/homeassistant/components/axis/.translations/pl.json b/homeassistant/components/axis/.translations/pl.json index 9f7bb55147d..dd1a63039e2 100644 --- a/homeassistant/components/axis/.translations/pl.json +++ b/homeassistant/components/axis/.translations/pl.json @@ -4,8 +4,7 @@ "already_configured": "Urz\u0105dzenie jest ju\u017c skonfigurowane.", "bad_config_file": "B\u0142\u0119dne dane z pliku konfiguracyjnego", "link_local_address": "Po\u0142\u0105czenie lokalnego adresu nie jest obs\u0142ugiwane", - "not_axis_device": "Wykryte urz\u0105dzenie nie jest urz\u0105dzeniem Axis", - "updated_configuration": "Zaktualizowano konfiguracj\u0119 urz\u0105dzenia o nowy adres hosta" + "not_axis_device": "Wykryte urz\u0105dzenie nie jest urz\u0105dzeniem Axis" }, "error": { "already_configured": "Urz\u0105dzenie jest ju\u017c skonfigurowane.", diff --git a/homeassistant/components/axis/.translations/pt-BR.json b/homeassistant/components/axis/.translations/pt-BR.json index ceb6325af60..453c8fa3643 100644 --- a/homeassistant/components/axis/.translations/pt-BR.json +++ b/homeassistant/components/axis/.translations/pt-BR.json @@ -4,8 +4,7 @@ "already_configured": "O dispositivo j\u00e1 est\u00e1 configurado", "bad_config_file": "Dados incorretos do arquivo de configura\u00e7\u00e3o", "link_local_address": "Link de endere\u00e7os locais n\u00e3o s\u00e3o suportados", - "not_axis_device": "Dispositivo descoberto n\u00e3o \u00e9 um dispositivo Axis", - "updated_configuration": "Configura\u00e7\u00e3o do dispositivo atualizada com novo endere\u00e7o de host" + "not_axis_device": "Dispositivo descoberto n\u00e3o \u00e9 um dispositivo Axis" }, "error": { "already_configured": "O dispositivo j\u00e1 est\u00e1 configurado", diff --git a/homeassistant/components/axis/.translations/ru.json b/homeassistant/components/axis/.translations/ru.json index b0da189d20f..d9e3a40d304 100644 --- a/homeassistant/components/axis/.translations/ru.json +++ b/homeassistant/components/axis/.translations/ru.json @@ -4,8 +4,7 @@ "already_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.", "bad_config_file": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.", "link_local_address": "\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f.", - "not_axis_device": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c Axis.", - "updated_configuration": "\u0410\u0434\u0440\u0435\u0441 \u0445\u043e\u0441\u0442\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d." + "not_axis_device": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c Axis." }, "error": { "already_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.", diff --git a/homeassistant/components/axis/.translations/sl.json b/homeassistant/components/axis/.translations/sl.json index 44a701ed117..9d66831b91a 100644 --- a/homeassistant/components/axis/.translations/sl.json +++ b/homeassistant/components/axis/.translations/sl.json @@ -4,8 +4,7 @@ "already_configured": "Naprava je \u017ee konfigurirana", "bad_config_file": "Slabi podatki iz konfiguracijske datoteke", "link_local_address": "Lokalni naslovi povezave niso podprti", - "not_axis_device": "Odkrita naprava ni naprava Axis", - "updated_configuration": "Posodobljena konfiguracija naprave z novim naslovom gostitelja" + "not_axis_device": "Odkrita naprava ni naprava Axis" }, "error": { "already_configured": "Naprava je \u017ee konfigurirana", diff --git a/homeassistant/components/axis/.translations/sv.json b/homeassistant/components/axis/.translations/sv.json index 59761c7202f..76ceaf7cbd7 100644 --- a/homeassistant/components/axis/.translations/sv.json +++ b/homeassistant/components/axis/.translations/sv.json @@ -4,8 +4,7 @@ "already_configured": "Enheten \u00e4r redan konfigurerad", "bad_config_file": "Felaktig data fr\u00e5n konfigurationsfilen", "link_local_address": "Link local addresses are not supported", - "not_axis_device": "Uppt\u00e4ckte enhet som inte \u00e4r en Axis enhet", - "updated_configuration": "Uppdaterad enhetskonfiguration med ny v\u00e4rdadress" + "not_axis_device": "Uppt\u00e4ckte enhet som inte \u00e4r en Axis enhet" }, "error": { "already_configured": "Enheten \u00e4r redan konfigurerad", diff --git a/homeassistant/components/axis/.translations/zh-Hant.json b/homeassistant/components/axis/.translations/zh-Hant.json index ac552afe583..41ecfdb80b7 100644 --- a/homeassistant/components/axis/.translations/zh-Hant.json +++ b/homeassistant/components/axis/.translations/zh-Hant.json @@ -4,8 +4,7 @@ "already_configured": "\u8a2d\u5099\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", "bad_config_file": "\u8a2d\u5b9a\u6a94\u6848\u8cc7\u6599\u7121\u6548\u932f\u8aa4", "link_local_address": "\u4e0d\u652f\u63f4\u9023\u7d50\u672c\u5730\u7aef\u4f4d\u5740", - "not_axis_device": "\u6240\u767c\u73fe\u7684\u8a2d\u5099\u4e26\u975e Axis \u8a2d\u5099", - "updated_configuration": "\u4f7f\u7528\u65b0\u4e3b\u6a5f\u7aef\u4f4d\u5740\u66f4\u65b0\u88dd\u7f6e\u8a2d\u5b9a" + "not_axis_device": "\u6240\u767c\u73fe\u7684\u8a2d\u5099\u4e26\u975e Axis \u8a2d\u5099" }, "error": { "already_configured": "\u8a2d\u5099\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", diff --git a/homeassistant/components/binary_sensor/.translations/bg.json b/homeassistant/components/binary_sensor/.translations/bg.json index 373866ecd8c..3006b8cadbc 100644 --- a/homeassistant/components/binary_sensor/.translations/bg.json +++ b/homeassistant/components/binary_sensor/.translations/bg.json @@ -46,7 +46,6 @@ }, "trigger_type": { "bat_low": "{entity_name} \u0438\u0437\u0442\u043e\u0449\u0435\u043d\u0430 \u0431\u0430\u0442\u0435\u0440\u0438\u044f", - "closed": "{entity_name} \u0437\u0430\u0442\u0432\u043e\u0440\u0435\u043d", "cold": "{entity_name} \u0441\u0435 \u0438\u0437\u0441\u0442\u0443\u0434\u0438", "connected": "{entity_name} \u0441\u0432\u044a\u0440\u0437\u0430\u043d", "gas": "{entity_name} \u0437\u0430\u043f\u043e\u0447\u043d\u0430 \u0434\u0430 \u043e\u0442\u043a\u0440\u0438\u0432\u0430 \u0433\u0430\u0437", @@ -54,7 +53,6 @@ "light": "{entity_name} \u0437\u0430\u043f\u043e\u0447\u043d\u0430 \u0434\u0430 \u043e\u0442\u043a\u0440\u0438\u0432\u0430 \u0441\u0432\u0435\u0442\u043b\u0438\u043d\u0430", "locked": "{entity_name} \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d", "moist": "{entity_name} \u0441\u0442\u0430\u043d\u0430 \u0432\u043b\u0430\u0436\u0435\u043d", - "moist\u00a7": "{entity_name} \u0441\u0442\u0430\u0432\u0430 \u0432\u043b\u0430\u0436\u0435\u043d", "motion": "{entity_name} \u0437\u0430\u043f\u043e\u0447\u043d\u0430 \u043e\u0442\u043a\u0440\u0438\u0432\u0430\u043d\u0435 \u043d\u0430 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435", "moving": "{entity_name} \u0437\u0430\u043f\u043e\u0447\u043d\u0430 \u043e\u0442\u043a\u0440\u0438\u0432\u0430 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435", "no_gas": "{entity_name} \u0441\u043f\u0440\u044f \u0434\u0430 \u043e\u0442\u043a\u0440\u0438\u0432\u0430 \u0433\u0430\u0437", diff --git a/homeassistant/components/binary_sensor/.translations/ca.json b/homeassistant/components/binary_sensor/.translations/ca.json index 8bbd19a0d45..3a3485a3be7 100644 --- a/homeassistant/components/binary_sensor/.translations/ca.json +++ b/homeassistant/components/binary_sensor/.translations/ca.json @@ -46,7 +46,6 @@ }, "trigger_type": { "bat_low": "Bateria de {entity_name} baixa", - "closed": "{entity_name} est\u00e0 tancat", "cold": "{entity_name} es torna fred", "connected": "{entity_name} est\u00e0 connectat", "gas": "{entity_name} ha comen\u00e7at a detectar gas", @@ -54,7 +53,6 @@ "light": "{entity_name} ha comen\u00e7at a detectar llum", "locked": "{entity_name} est\u00e0 bloquejat", "moist": "{entity_name} es torna humit", - "moist\u00a7": "{entity_name} es torna humit", "motion": "{entity_name} ha comen\u00e7at a detectar moviment", "moving": "{entity_name} ha comen\u00e7at a moure's", "no_gas": "{entity_name} ha deixat de detectar gas", diff --git a/homeassistant/components/binary_sensor/.translations/da.json b/homeassistant/components/binary_sensor/.translations/da.json index 19229c16cb3..ffa68b094be 100644 --- a/homeassistant/components/binary_sensor/.translations/da.json +++ b/homeassistant/components/binary_sensor/.translations/da.json @@ -46,7 +46,6 @@ }, "trigger_type": { "bat_low": "{entity_name} lavt batteriniveau", - "closed": "{entity_name} lukket", "cold": "{entity_name} blev kold", "connected": "{entity_name} tilsluttet", "gas": "{entity_name} begyndte at registrere gas", @@ -54,7 +53,6 @@ "light": "{entity_name} begyndte at registrere lys", "locked": "{entity_name} l\u00e5st", "moist": "{entity_name} blev fugtig", - "moist\u00a7": "{entity_name} blev fugtig", "motion": "{entity_name} begyndte at registrere bev\u00e6gelse", "moving": "{entity_name} begyndte at bev\u00e6ge sig", "no_gas": "{entity_name} stoppede med at registrere gas", diff --git a/homeassistant/components/binary_sensor/.translations/de.json b/homeassistant/components/binary_sensor/.translations/de.json index e246198864b..55a079ca42a 100644 --- a/homeassistant/components/binary_sensor/.translations/de.json +++ b/homeassistant/components/binary_sensor/.translations/de.json @@ -46,7 +46,6 @@ }, "trigger_type": { "bat_low": "{entity_name} Batterie schwach", - "closed": "{entity_name} geschlossen", "cold": "{entity_name} wurde kalt", "connected": "{entity_name} verbunden", "gas": "{entity_name} hat Gas detektiert", @@ -54,7 +53,6 @@ "light": "{entity_name} hat Licht detektiert", "locked": "{entity_name} gesperrt", "moist": "{entity_name} wurde feucht", - "moist\u00a7": "{entity_name} wurde feucht", "motion": "{entity_name} hat Bewegungen detektiert", "moving": "{entity_name} hat angefangen sich zu bewegen", "no_gas": "{entity_name} hat kein Gas mehr erkannt", diff --git a/homeassistant/components/binary_sensor/.translations/en.json b/homeassistant/components/binary_sensor/.translations/en.json index 93b61893980..213d947236c 100644 --- a/homeassistant/components/binary_sensor/.translations/en.json +++ b/homeassistant/components/binary_sensor/.translations/en.json @@ -46,7 +46,6 @@ }, "trigger_type": { "bat_low": "{entity_name} battery low", - "closed": "{entity_name} closed", "cold": "{entity_name} became cold", "connected": "{entity_name} connected", "gas": "{entity_name} started detecting gas", @@ -54,7 +53,6 @@ "light": "{entity_name} started detecting light", "locked": "{entity_name} locked", "moist": "{entity_name} became moist", - "moist\u00a7": "{entity_name} became moist", "motion": "{entity_name} started detecting motion", "moving": "{entity_name} started moving", "no_gas": "{entity_name} stopped detecting gas", diff --git a/homeassistant/components/binary_sensor/.translations/es-419.json b/homeassistant/components/binary_sensor/.translations/es-419.json index e727e18775a..18b5e060818 100644 --- a/homeassistant/components/binary_sensor/.translations/es-419.json +++ b/homeassistant/components/binary_sensor/.translations/es-419.json @@ -44,7 +44,6 @@ }, "trigger_type": { "bat_low": "{entity_name} bater\u00eda baja", - "closed": "{entity_name} cerrado", "cold": "{entity_name} se enfri\u00f3", "connected": "{entity_name} conectado", "gas": "{entity_name} comenz\u00f3 a detectar gas", @@ -52,7 +51,6 @@ "light": "{entity_name} comenz\u00f3 a detectar luz", "locked": "{entity_name} bloqueado", "moist": "{entity_name} se humedeci\u00f3", - "moist\u00a7": "{entity_name} se humedeci\u00f3", "motion": "{entity_name} comenz\u00f3 a detectar movimiento", "moving": "{entity_name} comenz\u00f3 a moverse", "no_gas": "{entity_name} dej\u00f3 de detectar gas", diff --git a/homeassistant/components/binary_sensor/.translations/es.json b/homeassistant/components/binary_sensor/.translations/es.json index 9720fb974f6..02fbc465252 100644 --- a/homeassistant/components/binary_sensor/.translations/es.json +++ b/homeassistant/components/binary_sensor/.translations/es.json @@ -46,7 +46,6 @@ }, "trigger_type": { "bat_low": "{entity_name} bater\u00eda baja", - "closed": "{entity_name} cerrado", "cold": "{entity_name} se enfri\u00f3", "connected": "{entity_name} conectado", "gas": "{entity_name} empez\u00f3 a detectar gas", @@ -54,7 +53,6 @@ "light": "{entity_name} empez\u00f3 a detectar la luz", "locked": "{entity_name} bloqueado", "moist": "{entity_name} se humedece", - "moist\u00a7": "{entity_name} se humedeci\u00f3", "motion": "{entity_name} comenz\u00f3 a detectar movimiento", "moving": "{entity_name} empez\u00f3 a moverse", "no_gas": "{entity_name} dej\u00f3 de detectar gas", diff --git a/homeassistant/components/binary_sensor/.translations/fr.json b/homeassistant/components/binary_sensor/.translations/fr.json index 65abfbcd0bd..f5b2e2bfd97 100644 --- a/homeassistant/components/binary_sensor/.translations/fr.json +++ b/homeassistant/components/binary_sensor/.translations/fr.json @@ -46,7 +46,6 @@ }, "trigger_type": { "bat_low": "{entity_name} batterie faible", - "closed": "{entity_name} ferm\u00e9", "cold": "{entity_name} est devenu froid", "connected": "{entity_name} connect\u00e9", "gas": "{entity_name} a commenc\u00e9 \u00e0 d\u00e9tecter du gaz", @@ -54,7 +53,6 @@ "light": "{entity_name} a commenc\u00e9 \u00e0 d\u00e9tecter la lumi\u00e8re", "locked": "{entity_name} verrouill\u00e9", "moist": "{entity_name} est devenu humide", - "moist\u00a7": "{entity_name} est devenu humide", "motion": "{entity_name} a commenc\u00e9 \u00e0 d\u00e9tecter du mouvement", "moving": "{entity_name} a commenc\u00e9 \u00e0 se d\u00e9placer", "no_gas": "{entity_name} a arr\u00eat\u00e9 de d\u00e9tecter le gaz", diff --git a/homeassistant/components/binary_sensor/.translations/hu.json b/homeassistant/components/binary_sensor/.translations/hu.json index 7ec9b5268e2..d53e869e075 100644 --- a/homeassistant/components/binary_sensor/.translations/hu.json +++ b/homeassistant/components/binary_sensor/.translations/hu.json @@ -46,7 +46,6 @@ }, "trigger_type": { "bat_low": "{entity_name} akkufesz\u00fclts\u00e9g alacsony", - "closed": "{entity_name} be lett csukva", "cold": "{entity_name} hideg lett", "connected": "{entity_name} csatlakozik", "gas": "{entity_name} g\u00e1zt \u00e9rz\u00e9kel", @@ -54,7 +53,6 @@ "light": "{entity_name} f\u00e9nyt \u00e9rz\u00e9kel", "locked": "{entity_name} be lett z\u00e1rva", "moist": "{entity_name} nedves lett", - "moist\u00a7": "{entity_name} nedves lett", "motion": "{entity_name} mozg\u00e1st \u00e9rz\u00e9kel", "moving": "{entity_name} mozog", "no_gas": "{entity_name} m\u00e1r nem \u00e9rz\u00e9kel g\u00e1zt", diff --git a/homeassistant/components/binary_sensor/.translations/it.json b/homeassistant/components/binary_sensor/.translations/it.json index 74d295f3055..db897b68da0 100644 --- a/homeassistant/components/binary_sensor/.translations/it.json +++ b/homeassistant/components/binary_sensor/.translations/it.json @@ -46,7 +46,6 @@ }, "trigger_type": { "bat_low": "{entity_name} batteria scarica", - "closed": "{entity_name} \u00e8 chiuso", "cold": "{entity_name} \u00e8 diventato freddo", "connected": "{entity_name} connesso", "gas": "{entity_name} ha iniziato a rilevare il gas", @@ -54,7 +53,6 @@ "light": "{entity_name} ha iniziato a rilevare la luce", "locked": "{entity_name} bloccato", "moist": "{entity_name} diventato umido", - "moist\u00a7": "{entity_name} \u00e8 diventato umido", "motion": "{entity_name} ha iniziato a rilevare il movimento", "moving": "{entity_name} ha iniziato a muoversi", "no_gas": "{entity_name} ha smesso la rilevazione di gas", diff --git a/homeassistant/components/binary_sensor/.translations/ko.json b/homeassistant/components/binary_sensor/.translations/ko.json index 7fa745a9a9a..733d3a8de8f 100644 --- a/homeassistant/components/binary_sensor/.translations/ko.json +++ b/homeassistant/components/binary_sensor/.translations/ko.json @@ -46,7 +46,6 @@ }, "trigger_type": { "bat_low": "{entity_name} \ubc30\ud130\ub9ac \uc794\ub7c9\uc774 \ubd80\uc871\ud574\uc9c8 \ub54c", - "closed": "{entity_name} \uc774(\uac00) \ub2eb\ud790 \ub54c", "cold": "{entity_name} \uc774(\uac00) \ucc28\uac00\uc6cc\uc9c8 \ub54c", "connected": "{entity_name} \uc774(\uac00) \uc5f0\uacb0\ub420 \ub54c", "gas": "{entity_name} \uc774(\uac00) \uac00\uc2a4\ub97c \uac10\uc9c0\ud560 \ub54c", @@ -54,7 +53,6 @@ "light": "{entity_name} \uc774(\uac00) \ube5b\uc744 \uac10\uc9c0\ud560 \ub54c", "locked": "{entity_name} \uc774(\uac00) \uc7a0\uae38 \ub54c", "moist": "{entity_name} \uc774(\uac00) \uc2b5\ud574\uc9c8 \ub54c", - "moist\u00a7": "{entity_name} \uc774(\uac00) \uc2b5\ud574\uc9c8 \ub54c", "motion": "{entity_name} \uc774(\uac00) \uc6c0\uc9c1\uc784\uc744 \uac10\uc9c0\ud560 \ub54c", "moving": "{entity_name} \uc774(\uac00) \uc6c0\uc9c1\uc77c \ub54c", "no_gas": "{entity_name} \uc774(\uac00) \uac00\uc2a4\ub97c \uac10\uc9c0\ud558\uc9c0 \uc54a\uac8c \ub420 \ub54c", diff --git a/homeassistant/components/binary_sensor/.translations/lb.json b/homeassistant/components/binary_sensor/.translations/lb.json index c65ae94396b..7120b1bb289 100644 --- a/homeassistant/components/binary_sensor/.translations/lb.json +++ b/homeassistant/components/binary_sensor/.translations/lb.json @@ -46,7 +46,6 @@ }, "trigger_type": { "bat_low": "{entity_name} Batterie niddereg", - "closed": "{entity_name} gouf zougemaach", "cold": "{entity_name} gouf kal", "connected": "{entity_name} ass verbonnen", "gas": "{entity_name} huet ugefaangen Gas z'entdecken", @@ -54,7 +53,6 @@ "light": "{entity_name} huet ugefange Luucht z'entdecken", "locked": "{entity_name} gespaart", "moist": "{entity_name} gouf fiicht", - "moist\u00a7": "{entity_name} gouf fiicht", "motion": "{entity_name} huet ugefaange Beweegung z'entdecken", "moving": "{entity_name} huet ugefaangen sech ze beweegen", "no_gas": "{entity_name} huet opgehale Gas z'entdecken", diff --git a/homeassistant/components/binary_sensor/.translations/nl.json b/homeassistant/components/binary_sensor/.translations/nl.json index 508a06b38a2..04d40ecf9b8 100644 --- a/homeassistant/components/binary_sensor/.translations/nl.json +++ b/homeassistant/components/binary_sensor/.translations/nl.json @@ -46,7 +46,6 @@ }, "trigger_type": { "bat_low": "{entity_name} batterij bijna leeg", - "closed": "{entity_name} gesloten", "cold": "{entity_name} werd koud", "connected": "{entity_name} verbonden", "gas": "{entity_name} begon gas te detecteren", @@ -54,7 +53,6 @@ "light": "{entity_name} begon licht te detecteren", "locked": "{entity_name} vergrendeld", "moist": "{entity_name} werd vochtig", - "moist\u00a7": "{entity_name} werd vochtig", "motion": "{entity_name} begon beweging te detecteren", "moving": "{entity_name} begon te bewegen", "no_gas": "{entity_name} is gestopt met het detecteren van gas", diff --git a/homeassistant/components/binary_sensor/.translations/no.json b/homeassistant/components/binary_sensor/.translations/no.json index 4194102948b..b82dd8b0533 100644 --- a/homeassistant/components/binary_sensor/.translations/no.json +++ b/homeassistant/components/binary_sensor/.translations/no.json @@ -46,7 +46,6 @@ }, "trigger_type": { "bat_low": "{entity_name} lavt batteri", - "closed": "{entity_name} stengt", "cold": "{entity_name} ble kald", "connected": "{entity_name} tilkoblet", "gas": "{entity_name} begynte \u00e5 registrere gass", @@ -54,7 +53,6 @@ "light": "{entity_name} begynte \u00e5 registrere lys", "locked": "{entity_name} l\u00e5st", "moist": "{entity_name} ble fuktig", - "moist\u00a7": "{entity_name} ble fuktig", "motion": "{entity_name} begynte \u00e5 registrere bevegelse", "moving": "{entity_name} begynte \u00e5 bevege seg", "no_gas": "{entity_name} sluttet \u00e5 registrere gass", diff --git a/homeassistant/components/binary_sensor/.translations/pl.json b/homeassistant/components/binary_sensor/.translations/pl.json index bc474e3d514..ef174e72336 100644 --- a/homeassistant/components/binary_sensor/.translations/pl.json +++ b/homeassistant/components/binary_sensor/.translations/pl.json @@ -46,7 +46,6 @@ }, "trigger_type": { "bat_low": "nast\u0105pi roz\u0142adowanie baterii {entity_name}", - "closed": "nast\u0105pi zamkni\u0119cie {entity_name}", "cold": "sensor {entity_name} wykryje zimno", "connected": "nast\u0105pi pod\u0142\u0105czenie {entity_name}", "gas": "sensor {entity_name} wykryje gaz", @@ -54,7 +53,6 @@ "light": "sensor {entity_name} wykryje \u015bwiat\u0142o", "locked": "nast\u0105pi zamkni\u0119cie {entity_name}", "moist": "nast\u0105pi wykrycie wilgoci {entity_name}", - "moist\u00a7": "sensor {entity_name} wykryje wilgo\u0107", "motion": "sensor {entity_name} wykryje ruch", "moving": "sensor {entity_name} zacznie porusza\u0107 si\u0119", "no_gas": "sensor {entity_name} przestanie wykrywa\u0107 gaz", diff --git a/homeassistant/components/binary_sensor/.translations/pt.json b/homeassistant/components/binary_sensor/.translations/pt.json index aa16576d2c1..caea4c6c97a 100644 --- a/homeassistant/components/binary_sensor/.translations/pt.json +++ b/homeassistant/components/binary_sensor/.translations/pt.json @@ -17,7 +17,6 @@ "is_vibration": "{entity_name} est\u00e1 a detectar vibra\u00e7\u00f5es" }, "trigger_type": { - "closed": "{entity_name} est\u00e1 fechado", "moist": "ficou h\u00famido {entity_name}", "not_opened": "fechado {entity_name}", "not_plugged_in": "{entity_name} desligado", diff --git a/homeassistant/components/binary_sensor/.translations/ru.json b/homeassistant/components/binary_sensor/.translations/ru.json index 4c9cfb99a1c..fe1323c6744 100644 --- a/homeassistant/components/binary_sensor/.translations/ru.json +++ b/homeassistant/components/binary_sensor/.translations/ru.json @@ -46,7 +46,6 @@ }, "trigger_type": { "bat_low": "{entity_name} \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043d\u0438\u0437\u043a\u0438\u0439 \u0437\u0430\u0440\u044f\u0434", - "closed": "{entity_name} \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f", "cold": "{entity_name} \u043e\u0445\u043b\u0430\u0436\u0434\u0430\u0435\u0442\u0441\u044f", "connected": "{entity_name} \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f", "gas": "{entity_name} \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0433\u0430\u0437", @@ -54,7 +53,6 @@ "light": "{entity_name} \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u0432\u0435\u0442", "locked": "{entity_name} \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442\u0441\u044f", "moist": "{entity_name} \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0432\u043b\u0430\u0433\u0443", - "moist\u00a7": "{entity_name} \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0432\u043b\u0430\u0433\u0443", "motion": "{entity_name} \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435", "moving": "{entity_name} \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435", "no_gas": "{entity_name} \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0433\u0430\u0437", diff --git a/homeassistant/components/binary_sensor/.translations/sl.json b/homeassistant/components/binary_sensor/.translations/sl.json index 2004caeb342..234146e2e6f 100644 --- a/homeassistant/components/binary_sensor/.translations/sl.json +++ b/homeassistant/components/binary_sensor/.translations/sl.json @@ -46,7 +46,6 @@ }, "trigger_type": { "bat_low": "{entity_name} ima prazno baterijo", - "closed": "{entity_name} zaprto", "cold": "{entity_name} je postal hladen", "connected": "{entity_name} povezan", "gas": "{entity_name} za\u010del zaznavati plin", @@ -54,7 +53,6 @@ "light": "{entity_name} za\u010del zaznavati svetlobo", "locked": "{entity_name} zaklenjen", "moist": "{entity_name} postal vla\u017een", - "moist\u00a7": "{entity_name} postal vla\u017een", "motion": "{entity_name} za\u010del zaznavati gibanje", "moving": "{entity_name} se je za\u010del premikati", "no_gas": "{entity_name} prenehal zaznavati plin", diff --git a/homeassistant/components/binary_sensor/.translations/sv.json b/homeassistant/components/binary_sensor/.translations/sv.json index 5df2ce17c92..ec5d57daa79 100644 --- a/homeassistant/components/binary_sensor/.translations/sv.json +++ b/homeassistant/components/binary_sensor/.translations/sv.json @@ -46,7 +46,6 @@ }, "trigger_type": { "bat_low": "{entity_name} batteri l\u00e5gt", - "closed": "{entity_name} st\u00e4ngd", "cold": "{entity_name} blev kall", "connected": "{entity_name} ansluten", "gas": "{entity_name} b\u00f6rjade detektera gas", @@ -54,7 +53,6 @@ "light": "{entity_name} b\u00f6rjade uppt\u00e4cka ljus", "locked": "{entity_name} l\u00e5st", "moist": "{entity_name} blev fuktig", - "moist\u00a7": "{entity_name} blev fuktig", "motion": "{entity_name} b\u00f6rjade detektera r\u00f6relse", "moving": "{entity_name} b\u00f6rjade r\u00f6ra sig", "no_gas": "{entity_name} slutade uppt\u00e4cka gas", diff --git a/homeassistant/components/binary_sensor/.translations/zh-Hans.json b/homeassistant/components/binary_sensor/.translations/zh-Hans.json index aeb24e5056a..9ad8e67e6b8 100644 --- a/homeassistant/components/binary_sensor/.translations/zh-Hans.json +++ b/homeassistant/components/binary_sensor/.translations/zh-Hans.json @@ -44,7 +44,6 @@ }, "trigger_type": { "bat_low": "{entity_name} \u7535\u6c60\u7535\u91cf\u4f4e", - "closed": "{entity_name} \u5df2\u5173\u95ed", "cold": "{entity_name} \u53d8\u51b7", "connected": "{entity_name} \u5df2\u8fde\u63a5", "gas": "{entity_name} \u5f00\u59cb\u68c0\u6d4b\u5230\u71c3\u6c14\u6cc4\u6f0f", diff --git a/homeassistant/components/binary_sensor/.translations/zh-Hant.json b/homeassistant/components/binary_sensor/.translations/zh-Hant.json index 712c0fbd7c1..7b48833dd7b 100644 --- a/homeassistant/components/binary_sensor/.translations/zh-Hant.json +++ b/homeassistant/components/binary_sensor/.translations/zh-Hant.json @@ -46,7 +46,6 @@ }, "trigger_type": { "bat_low": "{entity_name}\u96fb\u91cf\u4f4e", - "closed": "{entity_name}\u5df2\u95dc\u9589", "cold": "{entity_name}\u5df2\u8b8a\u51b7", "connected": "{entity_name}\u5df2\u9023\u7dda", "gas": "{entity_name}\u5df2\u958b\u59cb\u5075\u6e2c\u6c23\u9ad4", @@ -54,7 +53,6 @@ "light": "{entity_name}\u5df2\u958b\u59cb\u5075\u6e2c\u5149\u7dda", "locked": "{entity_name}\u5df2\u4e0a\u9396", "moist": "{entity_name}\u5df2\u8b8a\u6f6e\u6fd5", - "moist\u00a7": "{entity_name}\u5df2\u8b8a\u6f6e\u6fd5", "motion": "{entity_name}\u5df2\u5075\u6e2c\u5230\u52d5\u4f5c", "moving": "{entity_name}\u958b\u59cb\u79fb\u52d5", "no_gas": "{entity_name}\u5df2\u505c\u6b62\u5075\u6e2c\u6c23\u9ad4", diff --git a/homeassistant/components/brother/.translations/zh-Hant.json b/homeassistant/components/brother/.translations/zh-Hant.json index 0ef813dffea..987a15f8a2f 100644 --- a/homeassistant/components/brother/.translations/zh-Hant.json +++ b/homeassistant/components/brother/.translations/zh-Hant.json @@ -24,7 +24,7 @@ "type": "\u5370\u8868\u6a5f\u985e\u578b" }, "description": "\u662f\u5426\u8981\u5c07\u5e8f\u865f {serial_number} \u4e4bBrother \u5370\u8868\u6a5f {model} \u65b0\u589e\u81f3 Home Assistant\uff1f", - "title": "\u767c\u73fe Brother \u5370\u8868\u6a5f" + "title": "\u81ea\u52d5\u63a2\u7d22\u5230 Brother \u5370\u8868\u6a5f" } }, "title": "Brother \u5370\u8868\u6a5f" diff --git a/homeassistant/components/cert_expiry/.translations/bg.json b/homeassistant/components/cert_expiry/.translations/bg.json index a4a36cb04dc..cf89911071b 100644 --- a/homeassistant/components/cert_expiry/.translations/bg.json +++ b/homeassistant/components/cert_expiry/.translations/bg.json @@ -1,15 +1,8 @@ { "config": { - "abort": { - "host_port_exists": "\u0422\u0430\u0437\u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0438 \u043f\u043e\u0440\u0442 \u0435 \u0432\u0435\u0447\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0430" - }, "error": { - "certificate_error": "\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044a\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u0432\u0430\u043b\u0438\u0434\u0438\u0440\u0430\u043d", - "certificate_fetch_failed": "\u041d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0435 \u043c\u0438\u0437\u0432\u043b\u0435\u0447\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043e\u0442 \u0442\u0430\u0437\u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0438 \u043f\u043e\u0440\u0442", "connection_timeout": "\u041d\u0435\u0432\u044a\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442 \u0437\u0430 \u0441\u0432\u043e\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435 \u0441 \u0442\u043e\u0437\u0438 \u0430\u0434\u0440\u0435\u0441", - "host_port_exists": "\u0422\u0430\u0437\u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0438 \u043f\u043e\u0440\u0442 \u0435 \u0432\u0435\u0447\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0430", - "resolve_failed": "\u0422\u043e\u0437\u0438 \u0430\u0434\u0440\u0435\u0441 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d", - "wrong_host": "\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044a\u0442 \u043d\u0435 \u0441\u044a\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0430 \u043d\u0430 \u0438\u043c\u0435\u0442\u043e \u043d\u0430 \u0445\u043e\u0441\u0442\u0430" + "resolve_failed": "\u0422\u043e\u0437\u0438 \u0430\u0434\u0440\u0435\u0441 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d" }, "step": { "user": { diff --git a/homeassistant/components/cert_expiry/.translations/ca.json b/homeassistant/components/cert_expiry/.translations/ca.json index 4786e258ff8..dce3519f09f 100644 --- a/homeassistant/components/cert_expiry/.translations/ca.json +++ b/homeassistant/components/cert_expiry/.translations/ca.json @@ -2,17 +2,12 @@ "config": { "abort": { "already_configured": "Aquesta combinaci\u00f3 d'amfitri\u00f3 i port ja est\u00e0 configurada", - "host_port_exists": "Aquesta combinaci\u00f3 d'amfitri\u00f3 i port ja est\u00e0 configurada", "import_failed": "La importaci\u00f3 des de configuraci\u00f3 ha fallat" }, "error": { - "certificate_error": "El certificat no ha pogut ser validat", - "certificate_fetch_failed": "No s'ha pogut obtenir el certificat des d'aquesta combinaci\u00f3 d'amfitri\u00f3 i port", "connection_refused": "La connexi\u00f3 s'ha rebutjat en connectar-se a l'amfitri\u00f3", "connection_timeout": "S'ha acabat el temps d'espera durant la connexi\u00f3 amb l'amfitri\u00f3.", - "host_port_exists": "Aquesta combinaci\u00f3 d'amfitri\u00f3 i port ja est\u00e0 configurada", - "resolve_failed": "No s'ha pogut resoldre l'amfitri\u00f3", - "wrong_host": "El certificat no coincideix amb el nom de l'amfitri\u00f3" + "resolve_failed": "No s'ha pogut resoldre l'amfitri\u00f3" }, "step": { "user": { diff --git a/homeassistant/components/cert_expiry/.translations/da.json b/homeassistant/components/cert_expiry/.translations/da.json index 26ee436860a..cf5f42338c3 100644 --- a/homeassistant/components/cert_expiry/.translations/da.json +++ b/homeassistant/components/cert_expiry/.translations/da.json @@ -1,15 +1,8 @@ { "config": { - "abort": { - "host_port_exists": "Denne v\u00e6rt- og portkombination er allerede konfigureret" - }, "error": { - "certificate_error": "Certifikatet kunne ikke valideres", - "certificate_fetch_failed": "Kan ikke hente certifikat fra denne v\u00e6rt- og portkombination", "connection_timeout": "Timeout ved tilslutning til denne v\u00e6rt", - "host_port_exists": "Denne v\u00e6rt- og portkombination er allerede konfigureret", - "resolve_failed": "V\u00e6rten kunne ikke findes", - "wrong_host": "Certifikatet stemmer ikke overens med v\u00e6rtsnavnet" + "resolve_failed": "V\u00e6rten kunne ikke findes" }, "step": { "user": { diff --git a/homeassistant/components/cert_expiry/.translations/de.json b/homeassistant/components/cert_expiry/.translations/de.json index edf116203c7..119d172690a 100644 --- a/homeassistant/components/cert_expiry/.translations/de.json +++ b/homeassistant/components/cert_expiry/.translations/de.json @@ -2,17 +2,12 @@ "config": { "abort": { "already_configured": "Diese Kombination aus Host und Port ist bereits konfiguriert.", - "host_port_exists": "Diese Kombination aus Host und Port ist bereits konfiguriert.", "import_failed": "Import aus Konfiguration fehlgeschlagen" }, "error": { - "certificate_error": "Zertifikat konnte nicht validiert werden", - "certificate_fetch_failed": "Zertifikat kann von dieser Kombination aus Host und Port nicht abgerufen werden", "connection_refused": "Verbindung beim Herstellen einer Verbindung zum Host abgelehnt", "connection_timeout": "Zeit\u00fcberschreitung beim Herstellen einer Verbindung mit diesem Host", - "host_port_exists": "Diese Kombination aus Host und Port ist bereits konfiguriert.", - "resolve_failed": "Dieser Host kann nicht aufgel\u00f6st werden", - "wrong_host": "Zertifikat stimmt nicht mit Hostname \u00fcberein" + "resolve_failed": "Dieser Host kann nicht aufgel\u00f6st werden" }, "step": { "user": { diff --git a/homeassistant/components/cert_expiry/.translations/en.json b/homeassistant/components/cert_expiry/.translations/en.json index 1c1b9a882e3..5aca41f7f78 100644 --- a/homeassistant/components/cert_expiry/.translations/en.json +++ b/homeassistant/components/cert_expiry/.translations/en.json @@ -2,17 +2,12 @@ "config": { "abort": { "already_configured": "This host and port combination is already configured", - "host_port_exists": "This host and port combination is already configured", "import_failed": "Import from config failed" }, "error": { - "certificate_error": "Certificate could not be validated", - "certificate_fetch_failed": "Can not fetch certificate from this host and port combination", "connection_refused": "Connection refused when connecting to host", "connection_timeout": "Timeout when connecting to this host", - "host_port_exists": "This host and port combination is already configured", - "resolve_failed": "This host can not be resolved", - "wrong_host": "Certificate does not match hostname" + "resolve_failed": "This host can not be resolved" }, "step": { "user": { diff --git a/homeassistant/components/cert_expiry/.translations/es-419.json b/homeassistant/components/cert_expiry/.translations/es-419.json index e350faffcb3..4e0b1ffca5d 100644 --- a/homeassistant/components/cert_expiry/.translations/es-419.json +++ b/homeassistant/components/cert_expiry/.translations/es-419.json @@ -1,15 +1,8 @@ { "config": { - "abort": { - "host_port_exists": "Esta combinaci\u00f3n de host y puerto ya est\u00e1 configurada" - }, "error": { - "certificate_error": "El certificado no pudo ser validado", - "certificate_fetch_failed": "No se puede recuperar el certificado de esta combinaci\u00f3n de host y puerto", "connection_timeout": "Tiempo de espera al conectarse a este host", - "host_port_exists": "Esta combinaci\u00f3n de host y puerto ya est\u00e1 configurada", - "resolve_failed": "Este host no puede resolverse", - "wrong_host": "El certificado no coincide con el nombre de host" + "resolve_failed": "Este host no puede resolverse" }, "step": { "user": { diff --git a/homeassistant/components/cert_expiry/.translations/es.json b/homeassistant/components/cert_expiry/.translations/es.json index 628f2b22e21..7cc44d7038a 100644 --- a/homeassistant/components/cert_expiry/.translations/es.json +++ b/homeassistant/components/cert_expiry/.translations/es.json @@ -2,17 +2,12 @@ "config": { "abort": { "already_configured": "Esta combinaci\u00f3n de host y puerto ya est\u00e1 configurada", - "host_port_exists": "Esta combinaci\u00f3n de host y puerto ya est\u00e1 configurada", "import_failed": "No se pudo importar desde la configuraci\u00f3n" }, "error": { - "certificate_error": "El certificado no pudo ser validado", - "certificate_fetch_failed": "No se puede obtener el certificado de esta combinaci\u00f3n de host y puerto", "connection_refused": "Conexi\u00f3n rechazada al conectarse al host", "connection_timeout": "Tiempo de espera agotado al conectar a este host", - "host_port_exists": "Esta combinaci\u00f3n de host y puerto ya est\u00e1 configurada", - "resolve_failed": "Este host no se puede resolver", - "wrong_host": "El certificado no coincide con el nombre de host" + "resolve_failed": "Este host no se puede resolver" }, "step": { "user": { diff --git a/homeassistant/components/cert_expiry/.translations/fr.json b/homeassistant/components/cert_expiry/.translations/fr.json index 245b899fadf..18398a2b048 100644 --- a/homeassistant/components/cert_expiry/.translations/fr.json +++ b/homeassistant/components/cert_expiry/.translations/fr.json @@ -2,17 +2,12 @@ "config": { "abort": { "already_configured": "Cette combinaison h\u00f4te et port est d\u00e9j\u00e0 configur\u00e9e", - "host_port_exists": "Cette combinaison h\u00f4te / port est d\u00e9j\u00e0 configur\u00e9e", "import_failed": "\u00c9chec de l'importation \u00e0 partir de la configuration" }, "error": { - "certificate_error": "Le certificat n'a pas pu \u00eatre valid\u00e9", - "certificate_fetch_failed": "Impossible de r\u00e9cup\u00e9rer le certificat de cette combinaison h\u00f4te / port", "connection_refused": "Connexion refus\u00e9e lors de la connexion \u00e0 l'h\u00f4te", "connection_timeout": "D\u00e9lai d'attente lors de la connexion \u00e0 cet h\u00f4te", - "host_port_exists": "Cette combinaison h\u00f4te / port est d\u00e9j\u00e0 configur\u00e9e", - "resolve_failed": "Cet h\u00f4te ne peut pas \u00eatre r\u00e9solu", - "wrong_host": "Le certificat ne correspond pas au nom d'h\u00f4te" + "resolve_failed": "Cet h\u00f4te ne peut pas \u00eatre r\u00e9solu" }, "step": { "user": { diff --git a/homeassistant/components/cert_expiry/.translations/it.json b/homeassistant/components/cert_expiry/.translations/it.json index e7a2801423d..e88afa7caef 100644 --- a/homeassistant/components/cert_expiry/.translations/it.json +++ b/homeassistant/components/cert_expiry/.translations/it.json @@ -2,17 +2,12 @@ "config": { "abort": { "already_configured": "Questa combinazione di host e porta \u00e8 gi\u00e0 configurata", - "host_port_exists": "Questa combinazione di host e porta \u00e8 gi\u00e0 configurata", "import_failed": "Importazione dalla configurazione non riuscita" }, "error": { - "certificate_error": "Il certificato non pu\u00f2 essere convalidato", - "certificate_fetch_failed": "Non \u00e8 possibile recuperare il certificato da questa combinazione di host e porta", "connection_refused": "Connessione rifiutata durante la connessione all'host", "connection_timeout": "Tempo scaduto collegandosi a questo host", - "host_port_exists": "Questa combinazione di host e porta \u00e8 gi\u00e0 configurata", - "resolve_failed": "Questo host non pu\u00f2 essere risolto", - "wrong_host": "Il certificato non corrisponde al nome host" + "resolve_failed": "Questo host non pu\u00f2 essere risolto" }, "step": { "user": { diff --git a/homeassistant/components/cert_expiry/.translations/ko.json b/homeassistant/components/cert_expiry/.translations/ko.json index 060bf6e26bd..962f9ebe42c 100644 --- a/homeassistant/components/cert_expiry/.translations/ko.json +++ b/homeassistant/components/cert_expiry/.translations/ko.json @@ -2,17 +2,12 @@ "config": { "abort": { "already_configured": "\ud638\uc2a4\ud2b8\uc640 \ud3ec\ud2b8\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4", - "host_port_exists": "\ud638\uc2a4\ud2b8\uc640 \ud3ec\ud2b8\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4", "import_failed": "\uad6c\uc131\uc5d0\uc11c \uac00\uc838\uc624\uae30 \uc2e4\ud328" }, "error": { - "certificate_error": "\uc778\uc99d\uc11c\ub97c \ud655\uc778\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4", - "certificate_fetch_failed": "\ud574\ub2f9 \ud638\uc2a4\ud2b8\uc640 \ud3ec\ud2b8\uc5d0\uc11c \uc778\uc99d\uc11c\ub97c \uac00\uc838 \uc62c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4", "connection_refused": "\ud638\uc2a4\ud2b8\uc5d0 \uc5f0\uacb0\uc774 \uac70\ubd80\ub418\uc5c8\uc2b5\ub2c8\ub2e4.", "connection_timeout": "\ud638\uc2a4\ud2b8 \uc5f0\uacb0 \uc2dc\uac04\uc774 \ucd08\uacfc\ud588\uc2b5\ub2c8\ub2e4", - "host_port_exists": "\ud638\uc2a4\ud2b8\uc640 \ud3ec\ud2b8\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4", - "resolve_failed": "\ud638\uc2a4\ud2b8\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4", - "wrong_host": "\uc778\uc99d\uc11c\uac00 \ud638\uc2a4\ud2b8 \uc774\ub984\uacfc \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4" + "resolve_failed": "\ud638\uc2a4\ud2b8\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4" }, "step": { "user": { diff --git a/homeassistant/components/cert_expiry/.translations/lb.json b/homeassistant/components/cert_expiry/.translations/lb.json index 14d12967a38..55ac013f96a 100644 --- a/homeassistant/components/cert_expiry/.translations/lb.json +++ b/homeassistant/components/cert_expiry/.translations/lb.json @@ -1,15 +1,13 @@ { "config": { "abort": { - "host_port_exists": "D\u00ebsen Host an Port sinn scho konfigur\u00e9iert" + "already_configured": "D\u00ebs Kombinatioun vun Host an Port sinn scho konfigur\u00e9iert", + "import_failed": "Import vun der Konfiguratioun feelgeschloen" }, "error": { - "certificate_error": "Zertifikat konnt net valid\u00e9iert ginn", - "certificate_fetch_failed": "Kann keen Zertifikat vun d\u00ebsen Host a Port recuper\u00e9ieren", + "connection_refused": "Verbindung refus\u00e9iert beim verbannen mam Host", "connection_timeout": "Z\u00e4it Iwwerschreidung beim verbannen.", - "host_port_exists": "D\u00ebsen Host an Port sinn scho konfigur\u00e9iert", - "resolve_failed": "D\u00ebsen Host kann net opgel\u00e9ist ginn", - "wrong_host": "Zertifikat entspr\u00e9cht net den Numm vum Apparat" + "resolve_failed": "D\u00ebsen Host kann net opgel\u00e9ist ginn" }, "step": { "user": { diff --git a/homeassistant/components/cert_expiry/.translations/nl.json b/homeassistant/components/cert_expiry/.translations/nl.json index 0544c8c02c1..7c9fbe67565 100644 --- a/homeassistant/components/cert_expiry/.translations/nl.json +++ b/homeassistant/components/cert_expiry/.translations/nl.json @@ -1,15 +1,8 @@ { "config": { - "abort": { - "host_port_exists": "Deze combinatie van host en poort is al geconfigureerd" - }, "error": { - "certificate_error": "Certificaat kon niet worden gevalideerd", - "certificate_fetch_failed": "Kan certificaat niet ophalen van deze combinatie van host en poort", "connection_timeout": "Time-out bij verbinding maken met deze host", - "host_port_exists": "Deze combinatie van host en poort is al geconfigureerd", - "resolve_failed": "Deze host kon niet gevonden worden", - "wrong_host": "Certificaat komt niet overeen met hostnaam" + "resolve_failed": "Deze host kon niet gevonden worden" }, "step": { "user": { diff --git a/homeassistant/components/cert_expiry/.translations/no.json b/homeassistant/components/cert_expiry/.translations/no.json index e5faab74995..a798ead27b6 100644 --- a/homeassistant/components/cert_expiry/.translations/no.json +++ b/homeassistant/components/cert_expiry/.translations/no.json @@ -2,17 +2,12 @@ "config": { "abort": { "already_configured": "Denne verts- og portkombinasjonen er allerede konfigurert", - "host_port_exists": "Denne verts- og portkombinasjonen er allerede konfigurert", "import_failed": "Import fra config mislyktes" }, "error": { - "certificate_error": "Sertifikatet kunne ikke valideres", - "certificate_fetch_failed": "Kan ikke hente sertifikat fra denne verts- og portkombinasjonen", "connection_refused": "Tilkoblingen ble nektet da den koblet til verten", "connection_timeout": "Tidsavbrudd n\u00e5r du kobler til denne verten", - "host_port_exists": "Denne verts- og portkombinasjonen er allerede konfigurert", - "resolve_failed": "Denne verten kan ikke l\u00f8ses", - "wrong_host": "Sertifikatet samsvarer ikke med vertsnavn" + "resolve_failed": "Denne verten kan ikke l\u00f8ses" }, "step": { "user": { diff --git a/homeassistant/components/cert_expiry/.translations/pl.json b/homeassistant/components/cert_expiry/.translations/pl.json index a4806ff13aa..510b75658a2 100644 --- a/homeassistant/components/cert_expiry/.translations/pl.json +++ b/homeassistant/components/cert_expiry/.translations/pl.json @@ -2,17 +2,12 @@ "config": { "abort": { "already_configured": "Ta kombinacja hosta i portu jest ju\u017c skonfigurowana", - "host_port_exists": "Ten host z tym portem jest ju\u017c skonfigurowany.", "import_failed": "Import z konfiguracji nie powi\u00f3d\u0142 si\u0119" }, "error": { - "certificate_error": "Nie mo\u017cna zweryfikowa\u0107 certyfikatu", - "certificate_fetch_failed": "Nie mo\u017cna pobra\u0107 certyfikatu z tej kombinacji hosta i portu", "connection_refused": "Po\u0142\u0105czenie odrzucone podczas \u0142\u0105czenia z hostem", "connection_timeout": "Przekroczono limit czasu po\u0142\u0105czenia z hostem.", - "host_port_exists": "Ten host z tym portem jest ju\u017c skonfigurowany.", - "resolve_failed": "Tego hosta nie mo\u017cna rozwi\u0105za\u0107", - "wrong_host": "Certyfikat nie pasuje do nazwy hosta" + "resolve_failed": "Tego hosta nie mo\u017cna rozwi\u0105za\u0107" }, "step": { "user": { diff --git a/homeassistant/components/cert_expiry/.translations/pt-BR.json b/homeassistant/components/cert_expiry/.translations/pt-BR.json index 06534314e00..0c0e272e23b 100644 --- a/homeassistant/components/cert_expiry/.translations/pt-BR.json +++ b/homeassistant/components/cert_expiry/.translations/pt-BR.json @@ -1,12 +1,7 @@ { "config": { - "abort": { - "host_port_exists": "Essa combina\u00e7\u00e3o de host e porta j\u00e1 est\u00e1 configurada" - }, "error": { - "certificate_fetch_failed": "N\u00e3o \u00e9 poss\u00edvel buscar o certificado dessa combina\u00e7\u00e3o de host e porta", "connection_timeout": "Tempo limite ao conectar-se a este host", - "host_port_exists": "Essa combina\u00e7\u00e3o de host e porta j\u00e1 est\u00e1 configurada", "resolve_failed": "Este host n\u00e3o pode ser resolvido" }, "step": { diff --git a/homeassistant/components/cert_expiry/.translations/ru.json b/homeassistant/components/cert_expiry/.translations/ru.json index 04a41704500..39c78acc4c0 100644 --- a/homeassistant/components/cert_expiry/.translations/ru.json +++ b/homeassistant/components/cert_expiry/.translations/ru.json @@ -2,17 +2,12 @@ "config": { "abort": { "already_configured": "\u042d\u0442\u0430 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u0445\u043e\u0441\u0442\u0430 \u0438 \u043f\u043e\u0440\u0442\u0430 \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430.", - "host_port_exists": "\u042d\u0442\u0430 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u0445\u043e\u0441\u0442\u0430 \u0438 \u043f\u043e\u0440\u0442\u0430 \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430.", "import_failed": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0438\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438." }, "error": { - "certificate_error": "\u041d\u0435 \u0443\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442.", - "certificate_fetch_failed": "\u041d\u0435 \u0443\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0441 \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u0445\u043e\u0441\u0442\u0430 \u0438 \u043f\u043e\u0440\u0442\u0430.", "connection_refused": "\u041f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043a \u0445\u043e\u0441\u0442\u0443 \u0431\u044b\u043b\u043e \u043e\u0442\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0438.", "connection_timeout": "\u0418\u0441\u0442\u0435\u043a\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0445\u043e\u0441\u0442\u0443.", - "host_port_exists": "\u042d\u0442\u0430 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u0445\u043e\u0441\u0442\u0430 \u0438 \u043f\u043e\u0440\u0442\u0430 \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430.", - "resolve_failed": "\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0445\u043e\u0441\u0442.", - "wrong_host": "\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u043c\u0443 \u0438\u043c\u0435\u043d\u0438." + "resolve_failed": "\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0445\u043e\u0441\u0442." }, "step": { "user": { diff --git a/homeassistant/components/cert_expiry/.translations/sl.json b/homeassistant/components/cert_expiry/.translations/sl.json index 284b0b960ba..605eb0b8182 100644 --- a/homeassistant/components/cert_expiry/.translations/sl.json +++ b/homeassistant/components/cert_expiry/.translations/sl.json @@ -2,17 +2,12 @@ "config": { "abort": { "already_configured": "Ta kombinacija gostitelja in vrat je \u017ee konfigurirana", - "host_port_exists": "Ta kombinacija gostitelja in vrat je \u017ee konfigurirana", "import_failed": "Uvoz iz konfiguracije ni uspel" }, "error": { - "certificate_error": "Certifikata ni bilo mogo\u010de preveriti", - "certificate_fetch_failed": "Iz te kombinacije gostitelja in vrat ni mogo\u010de pridobiti potrdila", "connection_refused": "Povezava zavrnjena, ko ste se povezali z gostiteljem", "connection_timeout": "\u010casovna omejitev za povezavo s tem gostiteljem je potekla", - "host_port_exists": "Ta kombinacija gostitelja in vrat je \u017ee konfigurirana", - "resolve_failed": "Tega gostitelja ni mogo\u010de razre\u0161iti", - "wrong_host": "Potrdilo se ne ujema z imenom gostitelja" + "resolve_failed": "Tega gostitelja ni mogo\u010de razre\u0161iti" }, "step": { "user": { diff --git a/homeassistant/components/cert_expiry/.translations/sv.json b/homeassistant/components/cert_expiry/.translations/sv.json index bdccf51b2cd..2655bb40f08 100644 --- a/homeassistant/components/cert_expiry/.translations/sv.json +++ b/homeassistant/components/cert_expiry/.translations/sv.json @@ -1,15 +1,8 @@ { "config": { - "abort": { - "host_port_exists": "Denna v\u00e4rd- och portkombination \u00e4r redan konfigurerad" - }, "error": { - "certificate_error": "Certifikatet kunde inte valideras", - "certificate_fetch_failed": "Kan inte h\u00e4mta certifikat fr\u00e5n denna v\u00e4rd- och portkombination", "connection_timeout": "Timeout vid anslutning till den h\u00e4r v\u00e4rden", - "host_port_exists": "Denna v\u00e4rd- och portkombination \u00e4r redan konfigurerad", - "resolve_failed": "Denna v\u00e4rd kan inte resolveras", - "wrong_host": "Certifikatet matchar inte v\u00e4rdnamnet" + "resolve_failed": "Denna v\u00e4rd kan inte resolveras" }, "step": { "user": { diff --git a/homeassistant/components/cert_expiry/.translations/zh-Hant.json b/homeassistant/components/cert_expiry/.translations/zh-Hant.json index 833e2370dde..f08e3e277e9 100644 --- a/homeassistant/components/cert_expiry/.translations/zh-Hant.json +++ b/homeassistant/components/cert_expiry/.translations/zh-Hant.json @@ -2,17 +2,12 @@ "config": { "abort": { "already_configured": "\u6b64\u4e3b\u6a5f\u7aef\u8207\u901a\u8a0a\u57e0\u7d44\u5408\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", - "host_port_exists": "\u6b64\u4e3b\u6a5f\u7aef\u8207\u901a\u8a0a\u57e0\u7d44\u5408\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", "import_failed": "\u532f\u5165\u8a2d\u5b9a\u5931\u6557" }, "error": { - "certificate_error": "\u8a8d\u8b49\u7121\u6cd5\u78ba\u8a8d", - "certificate_fetch_failed": "\u7121\u6cd5\u81ea\u6b64\u4e3b\u6a5f\u7aef\u8207\u901a\u8a0a\u57e0\u7d44\u5408\u7372\u5f97\u8a8d\u8b49", "connection_refused": "\u9023\u7dda\u81f3\u4e3b\u6a5f\u6642\u906d\u62d2\u7d55", "connection_timeout": "\u9023\u7dda\u81f3\u4e3b\u6a5f\u7aef\u903e\u6642", - "host_port_exists": "\u6b64\u4e3b\u6a5f\u7aef\u8207\u901a\u8a0a\u57e0\u7d44\u5408\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", - "resolve_failed": "\u4e3b\u6a5f\u7aef\u7121\u6cd5\u89e3\u6790", - "wrong_host": "\u8a8d\u8b49\u8207\u4e3b\u6a5f\u540d\u7a31\u4e0d\u7b26\u5408" + "resolve_failed": "\u4e3b\u6a5f\u7aef\u7121\u6cd5\u89e3\u6790" }, "step": { "user": { diff --git a/homeassistant/components/coronavirus/.translations/hu.json b/homeassistant/components/coronavirus/.translations/hu.json new file mode 100644 index 00000000000..171aedc801d --- /dev/null +++ b/homeassistant/components/coronavirus/.translations/hu.json @@ -0,0 +1,16 @@ +{ + "config": { + "abort": { + "already_configured": "Ez az orsz\u00e1g m\u00e1r konfigur\u00e1lva van." + }, + "step": { + "user": { + "data": { + "country": "Orsz\u00e1g" + }, + "title": "V\u00e1lassz egy orsz\u00e1got a megfigyel\u00e9shez" + } + }, + "title": "Koronav\u00edrus" + } +} \ No newline at end of file diff --git a/homeassistant/components/cover/.translations/hu.json b/homeassistant/components/cover/.translations/hu.json index d460c53109d..5e91736a263 100644 --- a/homeassistant/components/cover/.translations/hu.json +++ b/homeassistant/components/cover/.translations/hu.json @@ -1,5 +1,13 @@ { "device_automation": { + "action_type": { + "close": "{entity_name} z\u00e1r\u00e1sa", + "close_tilt": "{entity_name} d\u00f6nt\u00e9s z\u00e1r\u00e1sa", + "open": "{entity_name} nyit\u00e1sa", + "open_tilt": "{entity_name} d\u00f6nt\u00e9s nyit\u00e1sa", + "set_position": "{entity_name} poz\u00edci\u00f3j\u00e1nak be\u00e1ll\u00edt\u00e1sa", + "set_tilt_position": "{entity_name} d\u00f6nt\u00e9si poz\u00edci\u00f3j\u00e1nak be\u00e1ll\u00edt\u00e1sa" + }, "condition_type": { "is_closed": "{entity_name} z\u00e1rva van", "is_closing": "{entity_name} z\u00e1r\u00f3dik", diff --git a/homeassistant/components/cover/.translations/lb.json b/homeassistant/components/cover/.translations/lb.json index 41c29adf91d..4cbbf348872 100644 --- a/homeassistant/components/cover/.translations/lb.json +++ b/homeassistant/components/cover/.translations/lb.json @@ -1,7 +1,10 @@ { "device_automation": { "action_type": { + "close": "{entity_name} zoumaachen", + "close_tilt": "{entity_name} Kipp zoumaachen", "open": "{entity_name} opmaachen", + "open_tilt": "{entity_name} op Kipp stelle", "set_position": "{entity_name} positioun programm\u00e9ieren", "set_tilt_position": "{entity_name} kipp positioun programm\u00e9ieren" }, @@ -10,8 +13,8 @@ "is_closing": "{entity_name} g\u00ebtt zougemaach", "is_open": "{entity_name} ass op", "is_opening": "{entity_name} g\u00ebtt opgemaach", - "is_position": "{entity_name} positioun ass", - "is_tilt_position": "{entity_name} kipp positioun ass" + "is_position": "Aktuell {entity_name} positioun ass", + "is_tilt_position": "Aktuell {entity_name} kipp positioun ass" }, "trigger_type": { "closed": "{entity_name} gouf zougemaach", diff --git a/homeassistant/components/deconz/.translations/bg.json b/homeassistant/components/deconz/.translations/bg.json index fb75fc81f5f..3bcbb592301 100644 --- a/homeassistant/components/deconz/.translations/bg.json +++ b/homeassistant/components/deconz/.translations/bg.json @@ -14,10 +14,6 @@ "flow_title": "deCONZ Zigbee \u0448\u043b\u044e\u0437 ({host})", "step": { "hassio_confirm": { - "data": { - "allow_clip_sensor": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043d\u0438 \u0441\u0435\u043d\u0437\u043e\u0440\u0438", - "allow_deconz_groups": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0433\u0440\u0443\u043f\u0438 \u043e\u0442 deCONZ" - }, "description": "\u0418\u0441\u043a\u0430\u0442\u0435 \u043b\u0438 \u0434\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0442\u0435 Home Assistant \u0434\u0430 \u0441\u0435 \u0441\u0432\u044a\u0440\u0437\u0432\u0430 \u0441 deCONZ \u0431\u0430\u0437\u043e\u0432\u0430 \u0441\u0442\u0430\u043d\u0446\u0438\u044f, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0435\u043d \u043e\u0442 \u0434\u043e\u0431\u0430\u0432\u043a\u0430\u0442\u0430 \u0437\u0430 hass.io {addon}?", "title": "deCONZ Zigbee \u0431\u0430\u0437\u043e\u0432\u0430 \u0441\u0442\u0430\u043d\u0446\u0438\u044f \u0447\u0440\u0435\u0437 Hass.io \u0434\u043e\u0431\u0430\u0432\u043a\u0430" }, @@ -31,13 +27,6 @@ "link": { "description": "\u041e\u0442\u043a\u043b\u044e\u0447\u0438 deCONZ \u0448\u043b\u044e\u0437\u0430 \u0437\u0430 \u0434\u0430 \u0441\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0430 \u0441 Home Assistant.\n\n1. \u041e\u0442\u0438\u0434\u0435\u0442\u0435 \u043d\u0430 deCONZ Settings -> Gateway -> Advanced\n2. \u041d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0435 \u0431\u0443\u0442\u043e\u043d\u0430 \"Authenticate app\"", "title": "\u0412\u0440\u044a\u0437\u043a\u0430 \u0441 deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043d\u0438 \u0441\u0435\u043d\u0437\u043e\u0440\u0438", - "allow_deconz_groups": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0433\u0440\u0443\u043f\u0438 \u043e\u0442 deCONZ" - }, - "title": "\u0414\u043e\u043f\u044a\u043b\u043d\u0438\u0442\u0435\u043b\u043d\u0438 \u043e\u043f\u0446\u0438\u0438 \u0437\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 deCONZ" } }, "title": "deCONZ Zigbee \u0448\u043b\u044e\u0437" @@ -90,13 +79,6 @@ }, "options": { "step": { - "async_step_deconz_devices": { - "data": { - "allow_clip_sensor": "\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 deCONZ CLIP \u0441\u0435\u043d\u0437\u043e\u0440\u0438", - "allow_deconz_groups": "\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 deCONZ \u0441\u0432\u0435\u0442\u043b\u0438\u043d\u043d\u0438 \u0433\u0440\u0443\u043f\u0438" - }, - "description": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0439\u0442\u0435 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0442\u0430 \u043d\u0430 \u0442\u0438\u043f\u043e\u0432\u0435\u0442\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 deCONZ" - }, "deconz_devices": { "data": { "allow_clip_sensor": "\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 deCONZ CLIP \u0441\u0435\u043d\u0437\u043e\u0440\u0438", diff --git a/homeassistant/components/deconz/.translations/ca.json b/homeassistant/components/deconz/.translations/ca.json index e690d597dce..ee386bece55 100644 --- a/homeassistant/components/deconz/.translations/ca.json +++ b/homeassistant/components/deconz/.translations/ca.json @@ -14,10 +14,6 @@ "flow_title": "Passarel\u00b7la d'enlla\u00e7 deCONZ Zigbee ({host})", "step": { "hassio_confirm": { - "data": { - "allow_clip_sensor": "Permet la importaci\u00f3 de sensors virtuals", - "allow_deconz_groups": "Permet la importaci\u00f3 de grups deCONZ" - }, "description": "Vols configurar Home Assistant perqu\u00e8 es connecti amb la passarel\u00b7la deCONZ proporcionada pel complement de Hass.io: {addon}?", "title": "Passarel\u00b7la d'enlla\u00e7 deCONZ Zigbee (complement de Hass.io)" }, @@ -31,13 +27,6 @@ "link": { "description": "Desbloqueja la teva passarel\u00b7la d'enlla\u00e7 deCONZ per a registrar-te amb Home Assistant.\n\n1. V\u00e9s a la configuraci\u00f3 del sistema deCONZ -> Passarel\u00b7la -> Avan\u00e7at\n2. Prem el bot\u00f3 \"Autenticar applicaci\u00f3\"", "title": "Vincular amb deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "Permet la importaci\u00f3 de sensors virtuals", - "allow_deconz_groups": "Permetre la importaci\u00f3 de grups deCONZ" - }, - "title": "Opcions de configuraci\u00f3 addicionals de deCONZ" } }, "title": "Passarel\u00b7la d'enlla\u00e7 deCONZ Zigbee" @@ -96,13 +85,6 @@ }, "options": { "step": { - "async_step_deconz_devices": { - "data": { - "allow_clip_sensor": "Permet sensors deCONZ CLIP", - "allow_deconz_groups": "Permet grups de llums deCONZ" - }, - "description": "Configura la visibilitat dels tipus dels dispositius deCONZ" - }, "deconz_devices": { "data": { "allow_clip_sensor": "Permet sensors deCONZ CLIP", diff --git a/homeassistant/components/deconz/.translations/cs.json b/homeassistant/components/deconz/.translations/cs.json index 954d1c8eb6e..544ab0ff2ed 100644 --- a/homeassistant/components/deconz/.translations/cs.json +++ b/homeassistant/components/deconz/.translations/cs.json @@ -24,13 +24,6 @@ "link": { "description": "Odemkn\u011bte br\u00e1nu deCONZ, pro registraci v Home Assistant. \n\n 1. P\u0159ejd\u011bte do nastaven\u00ed syst\u00e9mu deCONZ \n 2. Stiskn\u011bte tla\u010d\u00edtko \"Unlock Gateway\"", "title": "Propojit s deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "Povolit import virtu\u00e1ln\u00edch \u010didel", - "allow_deconz_groups": "Povolit import skupin deCONZ" - }, - "title": "Dal\u0161\u00ed mo\u017enosti konfigurace pro deCONZ" } }, "title": "Br\u00e1na deCONZ Zigbee" diff --git a/homeassistant/components/deconz/.translations/da.json b/homeassistant/components/deconz/.translations/da.json index d1af7e1f4ba..91dd0ea9a54 100644 --- a/homeassistant/components/deconz/.translations/da.json +++ b/homeassistant/components/deconz/.translations/da.json @@ -14,10 +14,6 @@ "flow_title": "deCONZ Zigbee gateway ({host})", "step": { "hassio_confirm": { - "data": { - "allow_clip_sensor": "Tillad import af virtuelle sensorer", - "allow_deconz_groups": "Tillad import af deCONZ-grupper" - }, "description": "Vil du konfigurere Home Assistant til at oprette forbindelse til deCONZ-gateway'en leveret af Hass.io-tilf\u00f8jelsen {addon}?", "title": "deCONZ Zigbee-gateway via Hass.io-tilf\u00f8jelse" }, @@ -31,13 +27,6 @@ "link": { "description": "L\u00e5s din deCONZ-gateway op for at registrere dig med Home Assistant. \n\n 1. G\u00e5 til deCONZ settings -> Gateway -> Advanced\n 2. Tryk p\u00e5 knappen \"Authenticate app\"", "title": "Forbind med deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "Tillad import af virtuelle sensorer", - "allow_deconz_groups": "Tillad import af deCONZ-grupper" - }, - "title": "Ekstra konfigurationsindstillinger for deCONZ" } }, "title": "deCONZ Zigbee gateway" @@ -96,13 +85,6 @@ }, "options": { "step": { - "async_step_deconz_devices": { - "data": { - "allow_clip_sensor": "Tillad deCONZ CLIP-sensorer", - "allow_deconz_groups": "Tillad deCONZ-lysgrupper" - }, - "description": "Konfigurer synligheden af deCONZ-enhedstyper" - }, "deconz_devices": { "data": { "allow_clip_sensor": "Tillad deCONZ CLIP-sensorer", diff --git a/homeassistant/components/deconz/.translations/de.json b/homeassistant/components/deconz/.translations/de.json index c3ad3cd24c8..1b2daecbc4e 100644 --- a/homeassistant/components/deconz/.translations/de.json +++ b/homeassistant/components/deconz/.translations/de.json @@ -14,10 +14,6 @@ "flow_title": "deCONZ Zigbee Gateway", "step": { "hassio_confirm": { - "data": { - "allow_clip_sensor": "Import virtueller Sensoren zulassen", - "allow_deconz_groups": "Import von deCONZ-Gruppen zulassen" - }, "description": "M\u00f6chtest du Home Assistant so konfigurieren, dass er eine Verbindung mit dem deCONZ Gateway herstellt, der vom Add-on hass.io {addon} bereitgestellt wird?", "title": "deCONZ Zigbee Gateway \u00fcber das Hass.io Add-on" }, @@ -31,13 +27,6 @@ "link": { "description": "Entsperre dein deCONZ-Gateway, um es bei Home Assistant zu registrieren. \n\n 1. Gehe in die deCONZ-Systemeinstellungen \n 2. Dr\u00fccke die Taste \"Gateway entsperren\"", "title": "Mit deCONZ verbinden" - }, - "options": { - "data": { - "allow_clip_sensor": "Import virtueller Sensoren zulassen", - "allow_deconz_groups": "Import von deCONZ-Gruppen zulassen" - }, - "title": "Weitere Konfigurationsoptionen f\u00fcr deCONZ" } }, "title": "deCONZ Zigbee Gateway" @@ -96,13 +85,6 @@ }, "options": { "step": { - "async_step_deconz_devices": { - "data": { - "allow_clip_sensor": "deCONZ CLIP-Sensoren zulassen", - "allow_deconz_groups": "deCONZ-Lichtgruppen zulassen" - }, - "description": "Konfigurieren der Sichtbarkeit von deCONZ-Ger\u00e4tetypen" - }, "deconz_devices": { "data": { "allow_clip_sensor": "deCONZ CLIP-Sensoren zulassen", diff --git a/homeassistant/components/deconz/.translations/en.json b/homeassistant/components/deconz/.translations/en.json index 756636ad90a..2c9562359f5 100644 --- a/homeassistant/components/deconz/.translations/en.json +++ b/homeassistant/components/deconz/.translations/en.json @@ -14,10 +14,6 @@ "flow_title": "deCONZ Zigbee gateway ({host})", "step": { "hassio_confirm": { - "data": { - "allow_clip_sensor": "Allow importing virtual sensors", - "allow_deconz_groups": "Allow importing deCONZ groups" - }, "description": "Do you want to configure Home Assistant to connect to the deCONZ gateway provided by the Hass.io add-on {addon}?", "title": "deCONZ Zigbee gateway via Hass.io add-on" }, @@ -31,13 +27,6 @@ "link": { "description": "Unlock your deCONZ gateway to register with Home Assistant.\n\n1. Go to deCONZ Settings -> Gateway -> Advanced\n2. Press \"Authenticate app\" button", "title": "Link with deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "Allow importing virtual sensors", - "allow_deconz_groups": "Allow importing deCONZ groups" - }, - "title": "Extra configuration options for deCONZ" } }, "title": "deCONZ Zigbee gateway" @@ -96,13 +85,6 @@ }, "options": { "step": { - "async_step_deconz_devices": { - "data": { - "allow_clip_sensor": "Allow deCONZ CLIP sensors", - "allow_deconz_groups": "Allow deCONZ light groups" - }, - "description": "Configure visibility of deCONZ device types" - }, "deconz_devices": { "data": { "allow_clip_sensor": "Allow deCONZ CLIP sensors", diff --git a/homeassistant/components/deconz/.translations/es-419.json b/homeassistant/components/deconz/.translations/es-419.json index 448b654c86e..ea65ffbab33 100644 --- a/homeassistant/components/deconz/.translations/es-419.json +++ b/homeassistant/components/deconz/.translations/es-419.json @@ -13,10 +13,6 @@ }, "step": { "hassio_confirm": { - "data": { - "allow_clip_sensor": "Permitir la importaci\u00f3n de sensores virtuales", - "allow_deconz_groups": "Permitir la importaci\u00f3n de grupos deCONZ" - }, "description": "\u00bfDesea configurar Home Assistant para conectarse a la puerta de enlace deCONZ proporcionada por el complemento hass.io {addon}?", "title": "deCONZ Zigbee gateway a trav\u00e9s del complemento Hass.io" }, @@ -30,13 +26,6 @@ "link": { "description": "Desbloquee su puerta de enlace deCONZ para registrarse con Home Assistant. \n\n 1. Vaya a Configuraci\u00f3n deCONZ - > Gateway - > Avanzado \n 2. Presione el bot\u00f3n \"Autenticar aplicaci\u00f3n\"", "title": "Enlazar con deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "Permitir la importaci\u00f3n de sensores virtuales", - "allow_deconz_groups": "Permitir la importaci\u00f3n de grupos deCONZ" - }, - "title": "Opciones de configuraci\u00f3n adicionales para deCONZ" } }, "title": "deCONZ Zigbee gateway" @@ -59,16 +48,5 @@ "remote_button_rotated": "Bot\u00f3n girado \"{subtype}\"", "remote_gyro_activated": "Dispositivo agitado" } - }, - "options": { - "step": { - "async_step_deconz_devices": { - "data": { - "allow_clip_sensor": "Permitir sensores deCONZ CLIP", - "allow_deconz_groups": "Permitir grupos de luz deCONZ" - }, - "description": "Configurar la visibilidad de los tipos de dispositivos deCONZ" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/deconz/.translations/es.json b/homeassistant/components/deconz/.translations/es.json index 047be1c7933..517170fe225 100644 --- a/homeassistant/components/deconz/.translations/es.json +++ b/homeassistant/components/deconz/.translations/es.json @@ -14,10 +14,6 @@ "flow_title": "pasarela deCONZ Zigbee ({host})", "step": { "hassio_confirm": { - "data": { - "allow_clip_sensor": "Permitir importar sensores virtuales", - "allow_deconz_groups": "Permite importar grupos de deCONZ" - }, "description": "\u00bfQuieres configurar Home Assistant para que se conecte al gateway de deCONZ proporcionado por el add-on {addon} de hass.io?", "title": "Add-on deCONZ Zigbee v\u00eda Hass.io" }, @@ -31,13 +27,6 @@ "link": { "description": "Desbloquea tu gateway de deCONZ para registrarte con Home Assistant.\n\n1. Dir\u00edgete a deCONZ Settings -> Gateway -> Advanced\n2. Pulsa el bot\u00f3n \"Authenticate app\"", "title": "Enlazar con deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "Permitir importar sensores virtuales", - "allow_deconz_groups": "Permitir la importaci\u00f3n de grupos deCONZ" - }, - "title": "Opciones de configuraci\u00f3n adicionales para deCONZ" } }, "title": "Pasarela Zigbee deCONZ" @@ -96,13 +85,6 @@ }, "options": { "step": { - "async_step_deconz_devices": { - "data": { - "allow_clip_sensor": "Permitir sensores deCONZ CLIP", - "allow_deconz_groups": "Permitir grupos de luz deCONZ" - }, - "description": "Configurar la visibilidad de los tipos de dispositivos deCONZ" - }, "deconz_devices": { "data": { "allow_clip_sensor": "Permitir sensores deCONZ CLIP", diff --git a/homeassistant/components/deconz/.translations/fr.json b/homeassistant/components/deconz/.translations/fr.json index 2213dcf2d49..0c2ecf9edb8 100644 --- a/homeassistant/components/deconz/.translations/fr.json +++ b/homeassistant/components/deconz/.translations/fr.json @@ -14,10 +14,6 @@ "flow_title": "Passerelle deCONZ Zigbee ({host})", "step": { "hassio_confirm": { - "data": { - "allow_clip_sensor": "Autoriser l'importation de capteurs virtuels", - "allow_deconz_groups": "Autoriser l'importation des groupes deCONZ" - }, "description": "Voulez-vous configurer Home Assistant pour qu'il se connecte \u00e0 la passerelle deCONZ fournie par l'add-on hass.io {addon} ?", "title": "Passerelle deCONZ Zigbee via l'add-on Hass.io" }, @@ -31,13 +27,6 @@ "link": { "description": "D\u00e9verrouillez votre passerelle deCONZ pour vous enregistrer avec Home Assistant. \n\n 1. Acc\u00e9dez aux param\u00e8tres avanc\u00e9s du syst\u00e8me deCONZ \n 2. Cliquez sur \"D\u00e9verrouiller la passerelle\"", "title": "Lien vers deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "Autoriser l'importation de capteurs virtuels", - "allow_deconz_groups": "Autoriser l'importation des groupes deCONZ" - }, - "title": "Options de configuration suppl\u00e9mentaires pour deCONZ" } }, "title": "Passerelle deCONZ Zigbee" @@ -96,13 +85,6 @@ }, "options": { "step": { - "async_step_deconz_devices": { - "data": { - "allow_clip_sensor": "Autoriser les capteurs deCONZ CLIP", - "allow_deconz_groups": "Autoriser les groupes de lumi\u00e8res deCONZ" - }, - "description": "Configurer la visibilit\u00e9 des appareils de type deCONZ" - }, "deconz_devices": { "data": { "allow_clip_sensor": "Autoriser les capteurs deCONZ CLIP", diff --git a/homeassistant/components/deconz/.translations/he.json b/homeassistant/components/deconz/.translations/he.json index 89a2d69950e..da7878e94af 100644 --- a/homeassistant/components/deconz/.translations/he.json +++ b/homeassistant/components/deconz/.translations/he.json @@ -19,13 +19,6 @@ "link": { "description": "\u05d1\u05d8\u05dc \u05d0\u05ea \u05e0\u05e2\u05d9\u05dc\u05ea \u05d4\u05de\u05e9\u05e8 deCONZ \u05e9\u05dc\u05da \u05db\u05d3\u05d9 \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd Home Assistant.\n\n 1. \u05e2\u05d1\u05d5\u05e8 \u05d0\u05dc \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05de\u05e2\u05e8\u05db\u05ea deCONZ \n .2 \u05dc\u05d7\u05e5 \u05e2\u05dc \"Unlock Gateway\"", "title": "\u05e7\u05e9\u05e8 \u05e2\u05dd deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "\u05d0\u05e4\u05e9\u05e8 \u05dc\u05d9\u05d9\u05d1\u05d0 \u05d7\u05d9\u05d9\u05e9\u05e0\u05d9\u05dd \u05d5\u05d9\u05e8\u05d8\u05d5\u05d0\u05dc\u05d9\u05d9\u05dd", - "allow_deconz_groups": "\u05d0\u05e4\u05e9\u05e8 \u05dc\u05d9\u05d9\u05d1\u05d0 \u05e7\u05d1\u05d5\u05e6\u05d5\u05ea deCONZ" - }, - "title": "\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05ea\u05e6\u05d5\u05e8\u05d4 \u05e0\u05d5\u05e1\u05e4\u05d5\u05ea \u05e2\u05d1\u05d5\u05e8 deCONZ" } }, "title": "\u05de\u05d2\u05e9\u05e8 deCONZ Zigbee" diff --git a/homeassistant/components/deconz/.translations/hr.json b/homeassistant/components/deconz/.translations/hr.json index 2f2eb6df214..1700ec050bf 100644 --- a/homeassistant/components/deconz/.translations/hr.json +++ b/homeassistant/components/deconz/.translations/hr.json @@ -6,11 +6,6 @@ "host": "Host", "port": "Port" } - }, - "options": { - "data": { - "allow_clip_sensor": "Dopusti uvoz virtualnih senzora" - } } } } diff --git a/homeassistant/components/deconz/.translations/hu.json b/homeassistant/components/deconz/.translations/hu.json index c5bf9718127..31148c80e30 100644 --- a/homeassistant/components/deconz/.translations/hu.json +++ b/homeassistant/components/deconz/.translations/hu.json @@ -14,9 +14,6 @@ "flow_title": "deCONZ Zigbee \u00e1tj\u00e1r\u00f3 ({host})", "step": { "hassio_confirm": { - "data": { - "allow_clip_sensor": "Virtu\u00e1lis \u00e9rz\u00e9kel\u0151k import\u00e1l\u00e1s\u00e1nak enged\u00e9lyez\u00e9se" - }, "title": "deCONZ Zigbee \u00e1tj\u00e1r\u00f3 a Hass.io kieg\u00e9sz\u00edt\u0151 seg\u00edts\u00e9g\u00e9vel" }, "init": { @@ -29,13 +26,6 @@ "link": { "description": "Oldja fel a deCONZ \u00e1tj\u00e1r\u00f3t a Home Assistant-ban val\u00f3 regisztr\u00e1l\u00e1shoz.\n\n1. Menjen a deCONZ rendszer be\u00e1ll\u00edt\u00e1sokhoz\n2. Nyomja meg az \"\u00c1tj\u00e1r\u00f3 felold\u00e1sa\" gombot", "title": "Kapcsol\u00f3d\u00e1s a deCONZ-hoz" - }, - "options": { - "data": { - "allow_clip_sensor": "Virtu\u00e1lis szenzorok import\u00e1l\u00e1s\u00e1nak enged\u00e9lyez\u00e9se", - "allow_deconz_groups": "deCONZ csoportok import\u00e1l\u00e1s\u00e1nak enged\u00e9lyez\u00e9se" - }, - "title": "Extra be\u00e1ll\u00edt\u00e1si lehet\u0151s\u00e9gek a deCONZhoz" } }, "title": "deCONZ Zigbee gateway" @@ -94,13 +84,6 @@ }, "options": { "step": { - "async_step_deconz_devices": { - "data": { - "allow_clip_sensor": "Enged\u00e9lyezze a deCONZ CLIP \u00e9rz\u00e9kel\u0151ket", - "allow_deconz_groups": "DeCONZ f\u00e9nycsoportok enged\u00e9lyez\u00e9se" - }, - "description": "A deCONZ eszk\u00f6zt\u00edpusok l\u00e1that\u00f3s\u00e1g\u00e1nak konfigur\u00e1l\u00e1sa" - }, "deconz_devices": { "data": { "allow_clip_sensor": "Enged\u00e9lyezze a deCONZ CLIP \u00e9rz\u00e9kel\u0151ket", diff --git a/homeassistant/components/deconz/.translations/id.json b/homeassistant/components/deconz/.translations/id.json index 7d0b3163a40..72aaa84e70d 100644 --- a/homeassistant/components/deconz/.translations/id.json +++ b/homeassistant/components/deconz/.translations/id.json @@ -19,13 +19,6 @@ "link": { "description": "Buka gerbang deCONZ Anda untuk mendaftar dengan Home Assistant. \n\n 1. Pergi ke pengaturan sistem deCONZ \n 2. Tekan tombol \"Buka Kunci Gateway\"", "title": "Tautan dengan deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "Izinkan mengimpor sensor virtual", - "allow_deconz_groups": "Izinkan mengimpor grup deCONZ" - }, - "title": "Opsi konfigurasi tambahan untuk deCONZ" } }, "title": "deCONZ Zigbee gateway" diff --git a/homeassistant/components/deconz/.translations/it.json b/homeassistant/components/deconz/.translations/it.json index f6223cec6c1..e12668f082c 100644 --- a/homeassistant/components/deconz/.translations/it.json +++ b/homeassistant/components/deconz/.translations/it.json @@ -14,10 +14,6 @@ "flow_title": "Gateway Zigbee deCONZ ({host})", "step": { "hassio_confirm": { - "data": { - "allow_clip_sensor": "Consenti l'importazione di sensori virtuali", - "allow_deconz_groups": "Consenti l'importazione di gruppi deCONZ" - }, "description": "Vuoi configurare Home Assistant per connettersi al gateway deCONZ fornito dal componente aggiuntivo di Hass.io: {addon}?", "title": "Gateway Pigmee deCONZ tramite il componente aggiuntivo di Hass.io" }, @@ -31,13 +27,6 @@ "link": { "description": "Sblocca il tuo gateway deCONZ per registrarti con Home Assistant.\n\n1. Vai a Impostazioni deCONZ -> Gateway -> Avanzate\n2. Premere il pulsante \"Autentica app\"", "title": "Collega con deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "Consenti l'importazione di sensori virtuali", - "allow_deconz_groups": "Consenti l'importazione di gruppi deCONZ" - }, - "title": "Opzioni di configurazione extra per deCONZ" } }, "title": "Gateway Zigbee deCONZ" @@ -96,13 +85,6 @@ }, "options": { "step": { - "async_step_deconz_devices": { - "data": { - "allow_clip_sensor": "Consentire sensori CLIP deCONZ", - "allow_deconz_groups": "Consentire gruppi luce deCONZ" - }, - "description": "Configurare la visibilit\u00e0 dei tipi di dispositivi deCONZ" - }, "deconz_devices": { "data": { "allow_clip_sensor": "Consentire sensori CLIP deCONZ", diff --git a/homeassistant/components/deconz/.translations/ko.json b/homeassistant/components/deconz/.translations/ko.json index 1b72545bc09..00b9c1f437a 100644 --- a/homeassistant/components/deconz/.translations/ko.json +++ b/homeassistant/components/deconz/.translations/ko.json @@ -14,10 +14,6 @@ "flow_title": "deCONZ Zigbee \uac8c\uc774\ud2b8\uc6e8\uc774 ({host})", "step": { "hassio_confirm": { - "data": { - "allow_clip_sensor": "\uac00\uc0c1 \uc13c\uc11c \uac00\uc838\uc624\uae30 \ud5c8\uc6a9", - "allow_deconz_groups": "deCONZ \uadf8\ub8f9 \uac00\uc838\uc624\uae30 \ud5c8\uc6a9" - }, "description": "Hass.io {addon} \uc560\ub4dc\uc628\uc5d0\uc11c \uc81c\uacf5\ub41c deCONZ \uac8c\uc774\ud2b8\uc6e8\uc774\uc5d0 \uc5f0\uacb0\ud558\ub3c4\ub85d Home Assistant \ub97c \uad6c\uc131\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?", "title": "Hass.io \uc560\ub4dc\uc628\uc758 deCONZ Zigbee \uac8c\uc774\ud2b8\uc6e8\uc774" }, @@ -31,13 +27,6 @@ "link": { "description": "deCONZ \uac8c\uc774\ud2b8\uc6e8\uc774\ub97c \uc5b8\ub77d\ud558\uc5ec Home Assistant \uc5d0 \uc5f0\uacb0\ud558\uae30.\n\n1. deCONZ \uc2dc\uc2a4\ud15c \uc124\uc815\uc73c\ub85c \uc774\ub3d9\ud558\uc138\uc694\n2. \"Authenticate app\" \ubc84\ud2bc\uc744 \ub20c\ub7ec\uc8fc\uc138\uc694", "title": "deCONZ\uc640 \uc5f0\uacb0" - }, - "options": { - "data": { - "allow_clip_sensor": "\uac00\uc0c1 \uc13c\uc11c \uac00\uc838\uc624\uae30 \ud5c8\uc6a9", - "allow_deconz_groups": "deCONZ \uadf8\ub8f9 \uac00\uc838\uc624\uae30 \ud5c8\uc6a9" - }, - "title": "deCONZ \ucd94\uac00 \uad6c\uc131 \uc635\uc158" } }, "title": "deCONZ Zigbee \uac8c\uc774\ud2b8\uc6e8\uc774" @@ -96,13 +85,6 @@ }, "options": { "step": { - "async_step_deconz_devices": { - "data": { - "allow_clip_sensor": "deCONZ CLIP \uc13c\uc11c \ud5c8\uc6a9", - "allow_deconz_groups": "deCONZ \ub77c\uc774\ud2b8 \uadf8\ub8f9 \ud5c8\uc6a9" - }, - "description": "deCONZ \uae30\uae30 \uc720\ud615\uc758 \ud45c\uc2dc \uc5ec\ubd80 \uad6c\uc131" - }, "deconz_devices": { "data": { "allow_clip_sensor": "deCONZ CLIP \uc13c\uc11c \ud5c8\uc6a9", diff --git a/homeassistant/components/deconz/.translations/lb.json b/homeassistant/components/deconz/.translations/lb.json index 42fd840524f..61479cb78e2 100644 --- a/homeassistant/components/deconz/.translations/lb.json +++ b/homeassistant/components/deconz/.translations/lb.json @@ -14,10 +14,6 @@ "flow_title": "deCONZ Zigbee gateway ({host})", "step": { "hassio_confirm": { - "data": { - "allow_clip_sensor": "Erlaabt den Import vun virtuellen Sensoren", - "allow_deconz_groups": "Erlaabt den Import vun deCONZ Gruppen" - }, "description": "W\u00ebllt dir Home Assistant konfigur\u00e9iere fir sech mat der deCONZ gateway ze verbannen d\u00e9i vum hass.io add-on {addon} bereet gestallt g\u00ebtt?", "title": "deCONZ Zigbee gateway via Hass.io add-on" }, @@ -31,13 +27,6 @@ "link": { "description": "Entsperrt \u00e4r deCONZ gateway fir se mat Home Assistant ze registr\u00e9ieren.\n\n1. Gidd op deCONZ System Astellungen\n2. Dr\u00e9ckt \"Unlock\" Gateway Kn\u00e4ppchen", "title": "Link mat deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "Erlaabt den Import vun virtuellen Sensoren", - "allow_deconz_groups": "Erlaabt den Import vun deCONZ Gruppen" - }, - "title": "Extra Konfiguratiouns Optiounen fir deCONZ" } }, "title": "deCONZ Zigbee gateway" @@ -96,13 +85,6 @@ }, "options": { "step": { - "async_step_deconz_devices": { - "data": { - "allow_clip_sensor": "deCONZ Clip Sensoren erlaben", - "allow_deconz_groups": "deCONZ Luucht Gruppen erlaben" - }, - "description": "Visibilit\u00e9it vun deCONZ Apparater konfigur\u00e9ieren" - }, "deconz_devices": { "data": { "allow_clip_sensor": "deCONZ Clip Sensoren erlaben", diff --git a/homeassistant/components/deconz/.translations/nl.json b/homeassistant/components/deconz/.translations/nl.json index 585c09c5339..611d38ba950 100644 --- a/homeassistant/components/deconz/.translations/nl.json +++ b/homeassistant/components/deconz/.translations/nl.json @@ -14,10 +14,6 @@ "flow_title": "deCONZ Zigbee gateway ( {host} )", "step": { "hassio_confirm": { - "data": { - "allow_clip_sensor": "Sta het importeren van virtuele sensoren toe", - "allow_deconz_groups": "Sta de import van deCONZ-groepen toe" - }, "description": "Wilt u de Home Assistant configureren om verbinding te maken met de deCONZ gateway van de hass.io add-on {addon}?", "title": "deCONZ Zigbee Gateway via Hass.io add-on" }, @@ -31,13 +27,6 @@ "link": { "description": "Ontgrendel je deCONZ gateway om te registreren met Home Assistant.\n\n1. Ga naar deCONZ systeeminstellingen (Instellingen -> Gateway -> Geavanceerd)\n2. Druk op de knop \"Gateway ontgrendelen\"", "title": "Koppel met deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "Sta het importeren van virtuele sensoren toe", - "allow_deconz_groups": "Sta de import van deCONZ-groepen toe" - }, - "title": "Extra configuratieopties voor deCONZ" } }, "title": "deCONZ Zigbee gateway" @@ -96,13 +85,6 @@ }, "options": { "step": { - "async_step_deconz_devices": { - "data": { - "allow_clip_sensor": "DeCONZ CLIP sensoren toestaan", - "allow_deconz_groups": "DeCONZ-lichtgroepen toestaan" - }, - "description": "De zichtbaarheid van deCONZ-apparaattypen configureren" - }, "deconz_devices": { "data": { "allow_clip_sensor": "DeCONZ CLIP sensoren toestaan", diff --git a/homeassistant/components/deconz/.translations/nn.json b/homeassistant/components/deconz/.translations/nn.json index 46933ced427..986795e11c9 100644 --- a/homeassistant/components/deconz/.translations/nn.json +++ b/homeassistant/components/deconz/.translations/nn.json @@ -19,13 +19,6 @@ "link": { "description": "L\u00e5s opp deCONZ-gatewayen din for \u00e5 registrere den med Home Assistant.\n\n1. G\u00e5 til systeminnstillingane til deCONZ\n2. Trykk p\u00e5 \"L\u00e5s opp gateway\"-knappen", "title": "Link med deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "Tillat importering av virtuelle sensorar", - "allow_deconz_groups": "Tillat \u00e5 importera deCONZ-grupper" - }, - "title": "Ekstra konfigurasjonsalternativ for deCONZ" } }, "title": "deCONZ Zigbee gateway" diff --git a/homeassistant/components/deconz/.translations/no.json b/homeassistant/components/deconz/.translations/no.json index e7c5893b4f1..a10ae01e25f 100644 --- a/homeassistant/components/deconz/.translations/no.json +++ b/homeassistant/components/deconz/.translations/no.json @@ -14,10 +14,6 @@ "flow_title": "deCONZ Zigbee gateway ({host})", "step": { "hassio_confirm": { - "data": { - "allow_clip_sensor": "Tillat import av virtuelle sensorer", - "allow_deconz_groups": "Tillat import av deCONZ grupper" - }, "description": "Vil du konfigurere Home Assistant til \u00e5 koble seg til deCONZ-gateway levert av Hass.io-tillegget {addon} ?", "title": "deCONZ Zigbee gateway via Hass.io tillegg" }, @@ -31,13 +27,6 @@ "link": { "description": "L\u00e5s opp deCONZ-gatewayen din for \u00e5 registrere deg med Home Assistant. \n\n 1. G\u00e5 til deCONZ-systeminnstillinger -> Gateway -> Avansert \n 2. Trykk p\u00e5 \"L\u00e5s opp gateway\" knappen", "title": "Koble til deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "Tillat import av virtuelle sensorer", - "allow_deconz_groups": "Tillat import av deCONZ grupper" - }, - "title": "Ekstra konfigurasjonsalternativer for deCONZ" } }, "title": "deCONZ Zigbee gateway" @@ -96,13 +85,6 @@ }, "options": { "step": { - "async_step_deconz_devices": { - "data": { - "allow_clip_sensor": "Tillat deCONZ CLIP-sensorer", - "allow_deconz_groups": "Tillat deCONZ lys grupper" - }, - "description": "Konfigurere synlighet av deCONZ enhetstyper" - }, "deconz_devices": { "data": { "allow_clip_sensor": "Tillat deCONZ CLIP-sensorer", diff --git a/homeassistant/components/deconz/.translations/pl.json b/homeassistant/components/deconz/.translations/pl.json index d12e633bf23..ace1f4182a4 100644 --- a/homeassistant/components/deconz/.translations/pl.json +++ b/homeassistant/components/deconz/.translations/pl.json @@ -14,10 +14,6 @@ "flow_title": "Bramka deCONZ Zigbee ({host})", "step": { "hassio_confirm": { - "data": { - "allow_clip_sensor": "Zezwalaj na importowanie wirtualnych sensor\u00f3w", - "allow_deconz_groups": "Zezwalaj na importowanie grup deCONZ" - }, "description": "Czy chcesz skonfigurowa\u0107 Home Assistant, aby po\u0142\u0105czy\u0142 si\u0119 z bramk\u0105 deCONZ dostarczon\u0105 przez dodatek Hass.io {addon}?", "title": "Bramka deCONZ Zigbee przez dodatek Hass.io" }, @@ -31,13 +27,6 @@ "link": { "description": "Odblokuj bramk\u0119 deCONZ, aby zarejestrowa\u0107 j\u0105 w Home Assistant. \n\n 1. Przejd\u017a do ustawienia deCONZ > bramka > Zaawansowane\n 2. Naci\u015bnij przycisk \"Uwierzytelnij aplikacj\u0119\"", "title": "Po\u0142\u0105cz z deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "Zezwalaj na importowanie wirtualnych sensor\u00f3w", - "allow_deconz_groups": "Zezw\u00f3l na importowanie grup deCONZ" - }, - "title": "Dodatkowe opcje konfiguracji dla deCONZ" } }, "title": "Brama deCONZ Zigbee" @@ -96,13 +85,6 @@ }, "options": { "step": { - "async_step_deconz_devices": { - "data": { - "allow_clip_sensor": "Zezwalaj na czujniki deCONZ CLIP", - "allow_deconz_groups": "Zezwalaj na grupy \u015bwiate\u0142 deCONZ" - }, - "description": "Skonfiguruj widoczno\u015b\u0107 urz\u0105dze\u0144 deCONZ" - }, "deconz_devices": { "data": { "allow_clip_sensor": "Zezwalaj na czujniki deCONZ CLIP", diff --git a/homeassistant/components/deconz/.translations/pt-BR.json b/homeassistant/components/deconz/.translations/pt-BR.json index 8d54c470846..6d800bb0269 100644 --- a/homeassistant/components/deconz/.translations/pt-BR.json +++ b/homeassistant/components/deconz/.translations/pt-BR.json @@ -13,10 +13,6 @@ }, "step": { "hassio_confirm": { - "data": { - "allow_clip_sensor": "Permitir a importa\u00e7\u00e3o de sensores virtuais", - "allow_deconz_groups": "Permitir a importa\u00e7\u00e3o de grupos deCONZ" - }, "description": "Deseja configurar o Home Assistant para conectar-se ao gateway deCONZ fornecido pelo add-on hass.io {addon} ?", "title": "Gateway deCONZ Zigbee via add-on Hass.io" }, @@ -30,26 +26,8 @@ "link": { "description": "Desbloqueie o seu gateway deCONZ para se registar no Home Assistant. \n\n 1. V\u00e1 para as configura\u00e7\u00f5es do sistema deCONZ \n 2. Pressione o bot\u00e3o \"Desbloquear Gateway\"", "title": "Linkar com deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "Permitir a importa\u00e7\u00e3o de sensores virtuais", - "allow_deconz_groups": "Permitir a importa\u00e7\u00e3o de grupos deCONZ" - }, - "title": "Op\u00e7\u00f5es extras de configura\u00e7\u00e3o para deCONZ" } }, "title": "Gateway deCONZ Zigbee" - }, - "options": { - "step": { - "async_step_deconz_devices": { - "data": { - "allow_clip_sensor": "Permitir sensores deCONZ CLIP", - "allow_deconz_groups": "Permitir grupos de luz deCONZ" - }, - "description": "Configurar visibilidade dos tipos de dispositivos deCONZ" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/deconz/.translations/pt.json b/homeassistant/components/deconz/.translations/pt.json index f24d7692a55..f0ea9e57ca0 100644 --- a/homeassistant/components/deconz/.translations/pt.json +++ b/homeassistant/components/deconz/.translations/pt.json @@ -19,13 +19,6 @@ "link": { "description": "Desbloqueie o seu gateway deCONZ para se registar no Home Assistant. \n\n 1. V\u00e1 para as configura\u00e7\u00f5es do sistema deCONZ \n 2. Pressione o bot\u00e3o \"Desbloquear Gateway\"", "title": "Liga\u00e7\u00e3o com deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "Permitir a importa\u00e7\u00e3o de sensores virtuais", - "allow_deconz_groups": "Permitir a importa\u00e7\u00e3o de grupos deCONZ" - }, - "title": "Op\u00e7\u00f5es de configura\u00e7\u00e3o extra para deCONZ" } }, "title": "Gateway Zigbee deCONZ" diff --git a/homeassistant/components/deconz/.translations/ru.json b/homeassistant/components/deconz/.translations/ru.json index 054c85f595a..4d89f5ff8e0 100644 --- a/homeassistant/components/deconz/.translations/ru.json +++ b/homeassistant/components/deconz/.translations/ru.json @@ -14,10 +14,6 @@ "flow_title": "\u0428\u043b\u044e\u0437 Zigbee deCONZ ({host})", "step": { "hassio_confirm": { - "data": { - "allow_clip_sensor": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0438\u043c\u043f\u043e\u0440\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432", - "allow_deconz_groups": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0438\u043c\u043f\u043e\u0440\u0442 \u0433\u0440\u0443\u043f\u043f deCONZ" - }, "description": "\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a deCONZ (\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Hass.io \"{addon}\")?", "title": "Zigbee \u0448\u043b\u044e\u0437 deCONZ (\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Hass.io)" }, @@ -31,13 +27,6 @@ "link": { "description": "\u0420\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0439\u0442\u0435 \u0448\u043b\u044e\u0437 deCONZ \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0432 Home Assistant:\n\n1. \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u044b deCONZ -> Gateway -> Advanced.\n2. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u00abAuthenticate app\u00bb.", "title": "\u0421\u0432\u044f\u0437\u044c \u0441 deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0438\u043c\u043f\u043e\u0440\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432", - "allow_deconz_groups": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0438\u043c\u043f\u043e\u0440\u0442 \u0433\u0440\u0443\u043f\u043f deCONZ" - }, - "title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 deCONZ" } }, "title": "deCONZ" @@ -96,13 +85,6 @@ }, "options": { "step": { - "async_step_deconz_devices": { - "data": { - "allow_clip_sensor": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u0435\u043d\u0441\u043e\u0440\u044b deCONZ CLIP", - "allow_deconz_groups": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u044b \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f deCONZ" - }, - "description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0442\u0438\u043f\u043e\u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 deCONZ" - }, "deconz_devices": { "data": { "allow_clip_sensor": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u0435\u043d\u0441\u043e\u0440\u044b deCONZ CLIP", diff --git a/homeassistant/components/deconz/.translations/sl.json b/homeassistant/components/deconz/.translations/sl.json index d8d98c103c3..15927059d32 100644 --- a/homeassistant/components/deconz/.translations/sl.json +++ b/homeassistant/components/deconz/.translations/sl.json @@ -14,10 +14,6 @@ "flow_title": "deCONZ Zigbee prehod ({host})", "step": { "hassio_confirm": { - "data": { - "allow_clip_sensor": "Dovoli uvoz virtualnih senzorjev", - "allow_deconz_groups": "Dovoli uvoz deCONZ skupin" - }, "description": "Ali \u017eelite konfigurirati Home Assistant za povezavo s prehodom deCONZ, ki ga ponuja dodatek Hass.io {addon} ?", "title": "deCONZ Zigbee prehod preko dodatka Hass.io" }, @@ -31,13 +27,6 @@ "link": { "description": "Odklenite va\u0161 deCONZ gateway za registracijo s Home Assistant-om. \n1. Pojdite v deCONZ sistemske nastavitve\n2. Pritisnite tipko \"odkleni prehod\"", "title": "Povezava z deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "Dovoli uvoz virtualnih senzorjev", - "allow_deconz_groups": "Dovoli uvoz deCONZ skupin" - }, - "title": "Dodatne mo\u017enosti konfiguracije za deCONZ" } }, "title": "deCONZ Zigbee prehod" @@ -96,13 +85,6 @@ }, "options": { "step": { - "async_step_deconz_devices": { - "data": { - "allow_clip_sensor": "Dovoli deCONZ CLIP senzorje", - "allow_deconz_groups": "Dovolite deCONZ skupine lu\u010di" - }, - "description": "Konfiguracija vidnosti tipov naprav deCONZ" - }, "deconz_devices": { "data": { "allow_clip_sensor": "Dovoli deCONZ CLIP senzorje", diff --git a/homeassistant/components/deconz/.translations/sv.json b/homeassistant/components/deconz/.translations/sv.json index 3d74d6cb944..11a8aac485a 100644 --- a/homeassistant/components/deconz/.translations/sv.json +++ b/homeassistant/components/deconz/.translations/sv.json @@ -14,10 +14,6 @@ "flow_title": "deCONZ Zigbee gateway ({host})", "step": { "hassio_confirm": { - "data": { - "allow_clip_sensor": "Till\u00e5t import av virtuella sensorer", - "allow_deconz_groups": "Till\u00e5t import av deCONZ-grupper" - }, "description": "Vill du konfigurera Home Assistant att ansluta till den deCONZ-gateway som tillhandah\u00e5lls av Hass.io-till\u00e4gget {addon}?", "title": "deCONZ Zigbee gateway via Hass.io till\u00e4gg" }, @@ -31,13 +27,6 @@ "link": { "description": "L\u00e5s upp din deCONZ-gateway f\u00f6r att registrera dig med Home Assistant. \n\n 1. G\u00e5 till deCONZ-systeminst\u00e4llningarna \n 2. Tryck p\u00e5 \"L\u00e5s upp gateway\"-knappen", "title": "L\u00e4nka med deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "Till\u00e5t import av virtuella sensorer", - "allow_deconz_groups": "Till\u00e5t import av deCONZ-grupper" - }, - "title": "Extra konfigurationsalternativ f\u00f6r deCONZ" } }, "title": "deCONZ Zigbee Gateway" @@ -96,13 +85,6 @@ }, "options": { "step": { - "async_step_deconz_devices": { - "data": { - "allow_clip_sensor": "Till\u00e5t deCONZ CLIP-sensorer", - "allow_deconz_groups": "Till\u00e5t deCONZ ljusgrupper" - }, - "description": "Konfigurera synlighet f\u00f6r deCONZ-enhetstyper" - }, "deconz_devices": { "data": { "allow_clip_sensor": "Till\u00e5t deCONZ CLIP-sensorer", diff --git a/homeassistant/components/deconz/.translations/vi.json b/homeassistant/components/deconz/.translations/vi.json index 00f1d9be57f..75d8969495b 100644 --- a/homeassistant/components/deconz/.translations/vi.json +++ b/homeassistant/components/deconz/.translations/vi.json @@ -13,13 +13,6 @@ "data": { "port": "C\u1ed5ng (gi\u00e1 tr\u1ecb m\u1eb7c \u0111\u1ecbnh: '80')" } - }, - "options": { - "data": { - "allow_clip_sensor": "Cho ph\u00e9p nh\u1eadp c\u1ea3m bi\u1ebfn \u1ea3o", - "allow_deconz_groups": "Cho ph\u00e9p nh\u1eadp c\u00e1c nh\u00f3m deCONZ" - }, - "title": "T\u00f9y ch\u1ecdn c\u1ea5u h\u00ecnh b\u1ed5 sung cho deCONZ" } } } diff --git a/homeassistant/components/deconz/.translations/zh-Hans.json b/homeassistant/components/deconz/.translations/zh-Hans.json index ce51a54ac77..ada31494619 100644 --- a/homeassistant/components/deconz/.translations/zh-Hans.json +++ b/homeassistant/components/deconz/.translations/zh-Hans.json @@ -19,13 +19,6 @@ "link": { "description": "\u89e3\u9501\u60a8\u7684 deCONZ \u7f51\u5173\u4ee5\u6ce8\u518c\u5230 Home Assistant\u3002 \n\n 1. \u524d\u5f80 deCONZ \u7cfb\u7edf\u8bbe\u7f6e\n 2. \u70b9\u51fb\u201c\u89e3\u9501\u7f51\u5173\u201d\u6309\u94ae", "title": "\u8fde\u63a5 deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "\u5141\u8bb8\u5bfc\u5165\u865a\u62df\u4f20\u611f\u5668", - "allow_deconz_groups": "\u5141\u8bb8\u5bfc\u5165 deCONZ \u7fa4\u7ec4" - }, - "title": "deCONZ \u7684\u9644\u52a0\u914d\u7f6e\u9879" } }, "title": "deCONZ" diff --git a/homeassistant/components/deconz/.translations/zh-Hant.json b/homeassistant/components/deconz/.translations/zh-Hant.json index 073ebd784c6..07b7c6e997b 100644 --- a/homeassistant/components/deconz/.translations/zh-Hant.json +++ b/homeassistant/components/deconz/.translations/zh-Hant.json @@ -14,10 +14,6 @@ "flow_title": "deCONZ Zigbee \u9598\u9053\u5668\uff08{host}\uff09", "step": { "hassio_confirm": { - "data": { - "allow_clip_sensor": "\u5141\u8a31\u532f\u5165\u865b\u64ec\u611f\u61c9\u5668", - "allow_deconz_groups": "\u5141\u8a31\u532f\u5165 deCONZ \u7fa4\u7d44" - }, "description": "\u662f\u5426\u8981\u8a2d\u5b9a Home Assistant \u4ee5\u9023\u7dda\u81f3 Hass.io \u9644\u52a0\u6574\u5408 {addon} \u4e4b deCONZ \u9598\u9053\u5668\uff1f", "title": "\u900f\u904e Hass.io \u9644\u52a0\u7d44\u4ef6 deCONZ Zigbee \u9598\u9053\u5668" }, @@ -31,13 +27,6 @@ "link": { "description": "\u89e3\u9664 deCONZ \u9598\u9053\u5668\u9396\u5b9a\uff0c\u4ee5\u65bc Home Assistant \u9032\u884c\u8a3b\u518a\u3002\n\n1. \u9032\u5165 deCONZ \u7cfb\u7d71\u8a2d\u5b9a -> \u9598\u9053\u5668 -> \u9032\u968e\u8a2d\u5b9a\n2. \u6309\u4e0b\u300c\u8a8d\u8b49\u7a0b\u5f0f\uff08Authenticate app\uff09\u300d\u6309\u9215", "title": "\u9023\u7d50\u81f3 deCONZ" - }, - "options": { - "data": { - "allow_clip_sensor": "\u5141\u8a31\u532f\u5165\u865b\u64ec\u611f\u61c9\u5668", - "allow_deconz_groups": "\u5141\u8a31\u532f\u5165 deCONZ \u7fa4\u7d44" - }, - "title": "deCONZ \u9644\u52a0\u8a2d\u5b9a\u9078\u9805" } }, "title": "deCONZ Zigbee \u9598\u9053\u5668" @@ -96,13 +85,6 @@ }, "options": { "step": { - "async_step_deconz_devices": { - "data": { - "allow_clip_sensor": "\u5141\u8a31 deCONZ CLIP \u611f\u61c9\u5668", - "allow_deconz_groups": "\u5141\u8a31 deCONZ \u71c8\u5149\u7fa4\u7d44" - }, - "description": "\u8a2d\u5b9a deCONZ \u53ef\u8996\u8a2d\u5099\u985e\u578b" - }, "deconz_devices": { "data": { "allow_clip_sensor": "\u5141\u8a31 deCONZ CLIP \u611f\u61c9\u5668", diff --git a/homeassistant/components/demo/.translations/lb.json b/homeassistant/components/demo/.translations/lb.json index d968b43af8b..05b4ba93427 100644 --- a/homeassistant/components/demo/.translations/lb.json +++ b/homeassistant/components/demo/.translations/lb.json @@ -4,9 +4,23 @@ }, "options": { "step": { + "init": { + "data": { + "one": "Een", + "other": "Aner" + } + }, + "options_1": { + "data": { + "bool": "Optionelle Boolean", + "int": "Numeresch Agab" + } + }, "options_2": { "data": { - "select": "Eng Optioun auswielen" + "multi": "Multiple Auswiel", + "select": "Eng Optioun auswielen", + "string": "String W\u00e4ert" } } } diff --git a/homeassistant/components/directv/.translations/ca.json b/homeassistant/components/directv/.translations/ca.json index a88e1feb2e9..4bdc104e7de 100644 --- a/homeassistant/components/directv/.translations/ca.json +++ b/homeassistant/components/directv/.translations/ca.json @@ -5,8 +5,7 @@ "unknown": "Error inesperat" }, "error": { - "cannot_connect": "No s'ha pogut connectar, torna-ho a provar", - "unknown": "Error inesperat" + "cannot_connect": "No s'ha pogut connectar, torna-ho a provar" }, "flow_title": "DirecTV: {name}", "step": { diff --git a/homeassistant/components/directv/.translations/de.json b/homeassistant/components/directv/.translations/de.json index b6074c732f6..98a9e81f661 100644 --- a/homeassistant/components/directv/.translations/de.json +++ b/homeassistant/components/directv/.translations/de.json @@ -5,8 +5,7 @@ "unknown": "Unerwarteter Fehler" }, "error": { - "cannot_connect": "Verbindung fehlgeschlagen, versuchen Sie es erneut", - "unknown": "Unerwarteter Fehler" + "cannot_connect": "Verbindung fehlgeschlagen, versuchen Sie es erneut" }, "flow_title": "DirecTV: {name}", "step": { diff --git a/homeassistant/components/directv/.translations/en.json b/homeassistant/components/directv/.translations/en.json index f5105477c45..774ce1f2035 100644 --- a/homeassistant/components/directv/.translations/en.json +++ b/homeassistant/components/directv/.translations/en.json @@ -5,8 +5,7 @@ "unknown": "Unexpected error" }, "error": { - "cannot_connect": "Failed to connect, please try again", - "unknown": "Unexpected error" + "cannot_connect": "Failed to connect, please try again" }, "flow_title": "DirecTV: {name}", "step": { diff --git a/homeassistant/components/directv/.translations/es.json b/homeassistant/components/directv/.translations/es.json index ef9edd6dd73..f23f83481e5 100644 --- a/homeassistant/components/directv/.translations/es.json +++ b/homeassistant/components/directv/.translations/es.json @@ -5,8 +5,7 @@ "unknown": "Error inesperado" }, "error": { - "cannot_connect": "No se ha podido conectar, por favor, int\u00e9ntalo de nuevo.", - "unknown": "Error inesperado" + "cannot_connect": "No se ha podido conectar, por favor, int\u00e9ntalo de nuevo." }, "flow_title": "DirecTV: {name}", "step": { diff --git a/homeassistant/components/directv/.translations/fr.json b/homeassistant/components/directv/.translations/fr.json index 6ba9237a3ad..d7262f50eaf 100644 --- a/homeassistant/components/directv/.translations/fr.json +++ b/homeassistant/components/directv/.translations/fr.json @@ -5,8 +5,7 @@ "unknown": "Erreur inattendue" }, "error": { - "cannot_connect": "Impossible de se connecter, veuillez r\u00e9essayer", - "unknown": "Erreur inattendue" + "cannot_connect": "Impossible de se connecter, veuillez r\u00e9essayer" }, "flow_title": "DirecTV: {name}", "step": { diff --git a/homeassistant/components/directv/.translations/it.json b/homeassistant/components/directv/.translations/it.json index 4fe98fc6024..777b66d5c91 100644 --- a/homeassistant/components/directv/.translations/it.json +++ b/homeassistant/components/directv/.translations/it.json @@ -5,8 +5,7 @@ "unknown": "Errore imprevisto" }, "error": { - "cannot_connect": "Impossibile connettersi, si prega di riprovare", - "unknown": "Errore imprevisto" + "cannot_connect": "Impossibile connettersi, si prega di riprovare" }, "flow_title": "DirecTV: {name}", "step": { diff --git a/homeassistant/components/directv/.translations/ko.json b/homeassistant/components/directv/.translations/ko.json index 46ad9b15e49..5099b264085 100644 --- a/homeassistant/components/directv/.translations/ko.json +++ b/homeassistant/components/directv/.translations/ko.json @@ -5,8 +5,7 @@ "unknown": "\uc608\uc0c1\uce58 \ubabb\ud55c \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4" }, "error": { - "cannot_connect": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \uc2dc\ub3c4\ud574\uc8fc\uc138\uc694.", - "unknown": "\uc608\uc0c1\uce58 \ubabb\ud55c \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4" + "cannot_connect": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \uc2dc\ub3c4\ud574\uc8fc\uc138\uc694." }, "flow_title": "DirecTV: {name}", "step": { diff --git a/homeassistant/components/directv/.translations/lb.json b/homeassistant/components/directv/.translations/lb.json index 4a0c1267d2b..4e2a09c6bef 100644 --- a/homeassistant/components/directv/.translations/lb.json +++ b/homeassistant/components/directv/.translations/lb.json @@ -5,12 +5,15 @@ "unknown": "Onerwaarte Feeler" }, "error": { - "cannot_connect": "Feeler beim verbannen, prob\u00e9ier w.e.g. nach emol.", - "unknown": "Onerwaarte Feeler" + "cannot_connect": "Feeler beim verbannen, prob\u00e9ier w.e.g. nach emol." }, "flow_title": "DirecTV: {name}", "step": { "ssdp_confirm": { + "data": { + "one": "Een", + "other": "Aner" + }, "description": "Soll {name} konfigur\u00e9iert ginn?", "title": "Mam DirecTV Receiver verbannen" }, diff --git a/homeassistant/components/directv/.translations/no.json b/homeassistant/components/directv/.translations/no.json index b010b1aac01..be2500b38b3 100644 --- a/homeassistant/components/directv/.translations/no.json +++ b/homeassistant/components/directv/.translations/no.json @@ -5,8 +5,7 @@ "unknown": "Uventet feil" }, "error": { - "cannot_connect": "Klarte ikke \u00e5 koble til, vennligst pr\u00f8v igjen", - "unknown": "Uventet feil" + "cannot_connect": "Klarte ikke \u00e5 koble til, vennligst pr\u00f8v igjen" }, "flow_title": "", "step": { diff --git a/homeassistant/components/directv/.translations/pl.json b/homeassistant/components/directv/.translations/pl.json index c02e69601c8..d9de1368ec5 100644 --- a/homeassistant/components/directv/.translations/pl.json +++ b/homeassistant/components/directv/.translations/pl.json @@ -5,8 +5,7 @@ "unknown": "Niespodziewany b\u0142\u0105d." }, "error": { - "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia, spr\u00f3buj ponownie.", - "unknown": "Niespodziewany b\u0142\u0105d." + "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia, spr\u00f3buj ponownie." }, "flow_title": "DirecTV: {name}", "step": { @@ -18,13 +17,13 @@ "other": "inne" }, "description": "Czy chcesz skonfigurowa\u0107 {name}?", - "title": "Po\u0142\u0105cz si\u0119 z odbiornikiem DirecTV" + "title": "Po\u0142\u0105czenie z odbiornikiem DirecTV" }, "user": { "data": { "host": "Nazwa hosta lub adres IP" }, - "title": "Po\u0142\u0105cz si\u0119 z odbiornikiem DirecTV" + "title": "Po\u0142\u0105czenie z odbiornikiem DirecTV" } }, "title": "DirecTV" diff --git a/homeassistant/components/directv/.translations/ru.json b/homeassistant/components/directv/.translations/ru.json index 7fc53b8b8ea..08e18b89bf1 100644 --- a/homeassistant/components/directv/.translations/ru.json +++ b/homeassistant/components/directv/.translations/ru.json @@ -5,8 +5,7 @@ "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." }, "error": { - "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437.", - "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." + "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437." }, "flow_title": "DirecTV: {name}", "step": { diff --git a/homeassistant/components/directv/.translations/sl.json b/homeassistant/components/directv/.translations/sl.json index ce3d6fac9eb..ab20a6ec424 100644 --- a/homeassistant/components/directv/.translations/sl.json +++ b/homeassistant/components/directv/.translations/sl.json @@ -5,8 +5,7 @@ "unknown": "Nepri\u010dakovana napaka" }, "error": { - "cannot_connect": "Povezava ni uspela, poskusite znova", - "unknown": "Nepri\u010dakovana napaka" + "cannot_connect": "Povezava ni uspela, poskusite znova" }, "flow_title": "DirecTV: {name}", "step": { diff --git a/homeassistant/components/directv/.translations/zh-Hant.json b/homeassistant/components/directv/.translations/zh-Hant.json index 38b89b729ad..b7a1bb41f53 100644 --- a/homeassistant/components/directv/.translations/zh-Hant.json +++ b/homeassistant/components/directv/.translations/zh-Hant.json @@ -5,8 +5,7 @@ "unknown": "\u672a\u9810\u671f\u932f\u8aa4" }, "error": { - "cannot_connect": "\u9023\u7dda\u5931\u6557\uff0c\u8acb\u518d\u8a66\u4e00\u6b21", - "unknown": "\u672a\u9810\u671f\u932f\u8aa4" + "cannot_connect": "\u9023\u7dda\u5931\u6557\uff0c\u8acb\u518d\u8a66\u4e00\u6b21" }, "flow_title": "DirecTV\uff1a{name}", "step": { diff --git a/homeassistant/components/doorbird/.translations/ca.json b/homeassistant/components/doorbird/.translations/ca.json index 488481f9614..d26da82ad1e 100644 --- a/homeassistant/components/doorbird/.translations/ca.json +++ b/homeassistant/components/doorbird/.translations/ca.json @@ -1,13 +1,16 @@ { "config": { "abort": { - "already_configured": "Aquest dispositiu DoorBird ja est\u00e0 configurat" + "already_configured": "Aquest dispositiu DoorBird ja est\u00e0 configurat", + "link_local_address": "L'enlla\u00e7 amb adreces locals no est\u00e0 perm\u00e8s", + "not_doorbird_device": "Aquest dispositiu no \u00e9s DoorBird" }, "error": { "cannot_connect": "No s'ha pogut connectar, torna-ho a provar", "invalid_auth": "Autenticaci\u00f3 inv\u00e0lida", "unknown": "Error inesperat" }, + "flow_title": "DoorBird {name} ({host})", "step": { "user": { "data": { diff --git a/homeassistant/components/doorbird/.translations/de.json b/homeassistant/components/doorbird/.translations/de.json index 3709adaa69a..2992d066d4a 100644 --- a/homeassistant/components/doorbird/.translations/de.json +++ b/homeassistant/components/doorbird/.translations/de.json @@ -10,6 +10,7 @@ "invalid_auth": "Ung\u00fcltige Authentifizierung", "unknown": "Unerwarteter Fehler" }, + "flow_title": "DoorBird {name} ({host})", "step": { "user": { "data": { diff --git a/homeassistant/components/doorbird/.translations/en.json b/homeassistant/components/doorbird/.translations/en.json index f933b9c9929..87524cd7dd6 100644 --- a/homeassistant/components/doorbird/.translations/en.json +++ b/homeassistant/components/doorbird/.translations/en.json @@ -10,6 +10,7 @@ "invalid_auth": "Invalid authentication", "unknown": "Unexpected error" }, + "flow_title": "DoorBird {name} ({host})", "step": { "user": { "data": { @@ -21,8 +22,7 @@ "title": "Connect to the DoorBird" } }, - "title": "DoorBird", - "flow_title" : "DoorBird {name} ({host})" + "title": "DoorBird" }, "options": { "step": { @@ -34,4 +34,4 @@ } } } -} +} \ No newline at end of file diff --git a/homeassistant/components/doorbird/.translations/es.json b/homeassistant/components/doorbird/.translations/es.json index 93ab919cc03..4e2aa0414dc 100644 --- a/homeassistant/components/doorbird/.translations/es.json +++ b/homeassistant/components/doorbird/.translations/es.json @@ -2,6 +2,7 @@ "config": { "abort": { "already_configured": "DoorBird ya est\u00e1 configurado", + "link_local_address": "No se admiten direcciones locales", "not_doorbird_device": "Este dispositivo no es un DoorBird" }, "error": { @@ -9,6 +10,7 @@ "invalid_auth": "Autenticaci\u00f3n no v\u00e1lida", "unknown": "Error inesperado" }, + "flow_title": "DoorBird {name} ({host})", "step": { "user": { "data": { diff --git a/homeassistant/components/doorbird/.translations/ko.json b/homeassistant/components/doorbird/.translations/ko.json index 121262065fd..fff92c32188 100644 --- a/homeassistant/components/doorbird/.translations/ko.json +++ b/homeassistant/components/doorbird/.translations/ko.json @@ -1,13 +1,16 @@ { "config": { "abort": { - "already_configured": "\uc774 DoorBird \ub294 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4" + "already_configured": "\uc774 DoorBird \ub294 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4", + "link_local_address": "\ub85c\uceec \uc8fc\uc18c \uc5f0\uacb0\uc740 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4", + "not_doorbird_device": "\uc774 \uae30\uae30\ub294 DoorBird \uac00 \uc544\ub2d9\ub2c8\ub2e4" }, "error": { "cannot_connect": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \uc2dc\ub3c4\ud574\uc8fc\uc138\uc694.", "invalid_auth": "\uc778\uc99d\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4", "unknown": "\uc608\uc0c1\uce58 \ubabb\ud55c \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4" }, + "flow_title": "DoorBird {name} ({host})", "step": { "user": { "data": { diff --git a/homeassistant/components/doorbird/.translations/lb.json b/homeassistant/components/doorbird/.translations/lb.json index d0b94ed6c59..ba29b19df8a 100644 --- a/homeassistant/components/doorbird/.translations/lb.json +++ b/homeassistant/components/doorbird/.translations/lb.json @@ -10,6 +10,7 @@ "invalid_auth": "Ong\u00eblteg Authentifikatioun", "unknown": "Onerwaarte Feeler" }, + "flow_title": "DoorBird {name{ ({host})", "step": { "user": { "data": { diff --git a/homeassistant/components/doorbird/.translations/ru.json b/homeassistant/components/doorbird/.translations/ru.json index bca45c773b6..1c034d6d68b 100644 --- a/homeassistant/components/doorbird/.translations/ru.json +++ b/homeassistant/components/doorbird/.translations/ru.json @@ -1,13 +1,16 @@ { "config": { "abort": { - "already_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430." + "already_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.", + "link_local_address": "\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f.", + "not_doorbird_device": "\u042d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435 DoorBird." }, "error": { "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437.", "invalid_auth": "\u041d\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f.", "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." }, + "flow_title": "DoorBird {name} ({host})", "step": { "user": { "data": { diff --git a/homeassistant/components/doorbird/.translations/zh-Hant.json b/homeassistant/components/doorbird/.translations/zh-Hant.json index d8b6330b879..bb8b291f86b 100644 --- a/homeassistant/components/doorbird/.translations/zh-Hant.json +++ b/homeassistant/components/doorbird/.translations/zh-Hant.json @@ -10,6 +10,7 @@ "invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548", "unknown": "\u672a\u9810\u671f\u932f\u8aa4" }, + "flow_title": "DoorBird {name} ({host})", "step": { "user": { "data": { diff --git a/homeassistant/components/elgato/.translations/zh-Hant.json b/homeassistant/components/elgato/.translations/zh-Hant.json index b187abc5ccd..c0c638851a1 100644 --- a/homeassistant/components/elgato/.translations/zh-Hant.json +++ b/homeassistant/components/elgato/.translations/zh-Hant.json @@ -19,7 +19,7 @@ }, "zeroconf_confirm": { "description": "\u662f\u5426\u8981\u5c07 Elgato Key \u7167\u660e\u5e8f\u865f `{serial_number}` \u65b0\u589e\u81f3 Home Assistant\uff1f", - "title": "\u767c\u73fe\u5230 Elgato Key \u7167\u660e\u8a2d\u5099" + "title": "\u81ea\u52d5\u63a2\u7d22\u5230 Elgato Key \u7167\u660e\u8a2d\u5099" } }, "title": "Elgato Key \u7167\u660e" diff --git a/homeassistant/components/esphome/.translations/zh-Hant.json b/homeassistant/components/esphome/.translations/zh-Hant.json index 0386fd8c468..bc229d190a7 100644 --- a/homeassistant/components/esphome/.translations/zh-Hant.json +++ b/homeassistant/components/esphome/.translations/zh-Hant.json @@ -19,7 +19,7 @@ }, "discovery_confirm": { "description": "\u662f\u5426\u8981\u5c07 ESPHome \u7bc0\u9ede `{name}` \u65b0\u589e\u81f3 Home Assistant\uff1f", - "title": "\u767c\u73fe\u5230 ESPHome \u7bc0\u9ede" + "title": "\u81ea\u52d5\u63a2\u7d22\u5230 ESPHome \u7bc0\u9ede" }, "user": { "data": { diff --git a/homeassistant/components/flunearyou/.translations/ca.json b/homeassistant/components/flunearyou/.translations/ca.json new file mode 100644 index 00000000000..dddf7dc2c88 --- /dev/null +++ b/homeassistant/components/flunearyou/.translations/ca.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "Les coordenades ja estan registrades" + }, + "error": { + "general_error": "S'ha produ\u00eft un error desconegut." + }, + "step": { + "user": { + "data": { + "latitude": "Latitud", + "longitude": "Longitud" + }, + "description": "Monitoritza informes basats en usuari i CDC per a parells de coordenades.", + "title": "Configuraci\u00f3 Flu Near You" + } + }, + "title": "Flu Near You" + } +} \ No newline at end of file diff --git a/homeassistant/components/flunearyou/.translations/de.json b/homeassistant/components/flunearyou/.translations/de.json new file mode 100644 index 00000000000..0ac83023896 --- /dev/null +++ b/homeassistant/components/flunearyou/.translations/de.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "Diese Koordinaten sind bereits registriert." + }, + "error": { + "general_error": "Es gab einen unbekannten Fehler." + }, + "step": { + "user": { + "data": { + "latitude": "Breitengrad", + "longitude": "L\u00e4ngengrad" + }, + "title": "Konfigurieren Sie die Grippe in Ihrer N\u00e4he" + } + }, + "title": "Grippe in Ihrer N\u00e4he" + } +} \ No newline at end of file diff --git a/homeassistant/components/flunearyou/.translations/en.json b/homeassistant/components/flunearyou/.translations/en.json new file mode 100644 index 00000000000..ca868b8ebd9 --- /dev/null +++ b/homeassistant/components/flunearyou/.translations/en.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "These coordinates are already registered." + }, + "error": { + "general_error": "There was an unknown error." + }, + "step": { + "user": { + "data": { + "latitude": "Latitude", + "longitude": "Longitude" + }, + "description": "Monitor user-based and CDC repots for a pair of coordinates.", + "title": "Configure Flu Near You" + } + }, + "title": "Flu Near You" + } +} \ No newline at end of file diff --git a/homeassistant/components/flunearyou/.translations/es.json b/homeassistant/components/flunearyou/.translations/es.json new file mode 100644 index 00000000000..df104c5405e --- /dev/null +++ b/homeassistant/components/flunearyou/.translations/es.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "Estas coordenadas ya est\u00e1n registradas." + }, + "error": { + "general_error": "Se ha producido un error desconocido." + }, + "step": { + "user": { + "data": { + "latitude": "Latitud", + "longitude": "Longitud" + }, + "description": "Monitorizar reportes de usuarios y del CDC para un par de coordenadas", + "title": "Configurar Flu Near You" + } + }, + "title": "Flu Near You" + } +} \ No newline at end of file diff --git a/homeassistant/components/flunearyou/.translations/ko.json b/homeassistant/components/flunearyou/.translations/ko.json new file mode 100644 index 00000000000..c155a7f6111 --- /dev/null +++ b/homeassistant/components/flunearyou/.translations/ko.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "\uc88c\ud45c\uac12\uc774 \uc774\ubbf8 \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4" + }, + "error": { + "general_error": "\uc54c \uc218 \uc5c6\ub294 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4" + }, + "step": { + "user": { + "data": { + "latitude": "\uc704\ub3c4", + "longitude": "\uacbd\ub3c4" + }, + "description": "\uc0ac\uc6a9\uc790 \uae30\ubc18 \ub370\uc774\ud130 \ubc0f CDC \ubcf4\uace0\uc11c\uc5d0\uc11c \uc88c\ud45c\ub97c \ubaa8\ub2c8\ud130\ub9c1\ud569\ub2c8\ub2e4.", + "title": "Flu Near You \uad6c\uc131" + } + }, + "title": "Flu Near You" + } +} \ No newline at end of file diff --git a/homeassistant/components/flunearyou/.translations/lb.json b/homeassistant/components/flunearyou/.translations/lb.json new file mode 100644 index 00000000000..03c8d0bce09 --- /dev/null +++ b/homeassistant/components/flunearyou/.translations/lb.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "D\u00ebs Koordinate si scho registr\u00e9iert" + }, + "error": { + "general_error": "Onbekannten Feeler" + }, + "step": { + "user": { + "data": { + "latitude": "Breedegrad", + "longitude": "L\u00e4ngegrad" + }, + "description": "Iwwerwach Benotzer-bas\u00e9iert an CDC Berichter fir Koordinaten.", + "title": "Flu Near You konfigur\u00e9ieren" + } + }, + "title": "Flu Near You" + } +} \ No newline at end of file diff --git a/homeassistant/components/flunearyou/.translations/ru.json b/homeassistant/components/flunearyou/.translations/ru.json new file mode 100644 index 00000000000..8e8b050ba7a --- /dev/null +++ b/homeassistant/components/flunearyou/.translations/ru.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "\u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0443\u0436\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b." + }, + "error": { + "general_error": "\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." + }, + "step": { + "user": { + "data": { + "latitude": "\u0428\u0438\u0440\u043e\u0442\u0430", + "longitude": "\u0414\u043e\u043b\u0433\u043e\u0442\u0430" + }, + "description": "\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0438 CDC \u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f.", + "title": "Flu Near You" + } + }, + "title": "Flu Near You" + } +} \ No newline at end of file diff --git a/homeassistant/components/flunearyou/.translations/zh-Hant.json b/homeassistant/components/flunearyou/.translations/zh-Hant.json new file mode 100644 index 00000000000..50f31707a61 --- /dev/null +++ b/homeassistant/components/flunearyou/.translations/zh-Hant.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "\u6b64\u4e9b\u5ea7\u6a19\u5df2\u8a3b\u518a\u3002" + }, + "error": { + "general_error": "\u767c\u751f\u672a\u77e5\u932f\u8aa4\u3002" + }, + "step": { + "user": { + "data": { + "latitude": "\u7def\u5ea6", + "longitude": "\u7d93\u5ea6" + }, + "description": "\u76e3\u6e2c\u4f7f\u7528\u8005\u8207 CDC \u56de\u5831\u5ea7\u6a19\u3002", + "title": "\u8a2d\u5b9a Flu Near You" + } + }, + "title": "Flu Near You" + } +} \ No newline at end of file diff --git a/homeassistant/components/freebox/.translations/lb.json b/homeassistant/components/freebox/.translations/lb.json index fdf08c0a5fe..21567b8f096 100644 --- a/homeassistant/components/freebox/.translations/lb.json +++ b/homeassistant/components/freebox/.translations/lb.json @@ -10,6 +10,7 @@ }, "step": { "link": { + "description": "Dr\u00e9ck \"Ofsch\u00e9cken\", dann dr\u00e9ck de rietse Feil um Router fir d'Freebox mam Home Assistant ze registr\u00e9ieren.\n\n![Location of button on the router](/static/images/config_freebox.png)", "title": "Freebox Router verbannen" }, "user": { diff --git a/homeassistant/components/geonetnz_quakes/.translations/bg.json b/homeassistant/components/geonetnz_quakes/.translations/bg.json index 48d6eacda91..c907a6bafd9 100644 --- a/homeassistant/components/geonetnz_quakes/.translations/bg.json +++ b/homeassistant/components/geonetnz_quakes/.translations/bg.json @@ -1,8 +1,5 @@ { "config": { - "error": { - "identifier_exists": "\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0442\u043e \u0432\u0435\u0447\u0435 \u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0430\u043d\u043e" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/geonetnz_quakes/.translations/ca.json b/homeassistant/components/geonetnz_quakes/.translations/ca.json index 7a88d3d2c72..c422c1768a7 100644 --- a/homeassistant/components/geonetnz_quakes/.translations/ca.json +++ b/homeassistant/components/geonetnz_quakes/.translations/ca.json @@ -3,9 +3,6 @@ "abort": { "already_configured": "La ubicaci\u00f3 ja est\u00e0 configurada." }, - "error": { - "identifier_exists": "Ubicaci\u00f3 ja registrada" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/geonetnz_quakes/.translations/da.json b/homeassistant/components/geonetnz_quakes/.translations/da.json index 0d0e927bc4b..15847cdadc9 100644 --- a/homeassistant/components/geonetnz_quakes/.translations/da.json +++ b/homeassistant/components/geonetnz_quakes/.translations/da.json @@ -1,8 +1,5 @@ { "config": { - "error": { - "identifier_exists": "Placering allerede registreret" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/geonetnz_quakes/.translations/de.json b/homeassistant/components/geonetnz_quakes/.translations/de.json index 4f5a5cde750..a9d3c8dca79 100644 --- a/homeassistant/components/geonetnz_quakes/.translations/de.json +++ b/homeassistant/components/geonetnz_quakes/.translations/de.json @@ -3,9 +3,6 @@ "abort": { "already_configured": "Der Standort ist bereits konfiguriert." }, - "error": { - "identifier_exists": "Standort bereits registriert" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/geonetnz_quakes/.translations/en.json b/homeassistant/components/geonetnz_quakes/.translations/en.json index ed83ab49436..41fafa5763b 100644 --- a/homeassistant/components/geonetnz_quakes/.translations/en.json +++ b/homeassistant/components/geonetnz_quakes/.translations/en.json @@ -3,9 +3,6 @@ "abort": { "already_configured": "Location is already configured." }, - "error": { - "identifier_exists": "Location already registered" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/geonetnz_quakes/.translations/es.json b/homeassistant/components/geonetnz_quakes/.translations/es.json index f50823186c3..daab68f1111 100644 --- a/homeassistant/components/geonetnz_quakes/.translations/es.json +++ b/homeassistant/components/geonetnz_quakes/.translations/es.json @@ -3,9 +3,6 @@ "abort": { "already_configured": "La ubicaci\u00f3n ya est\u00e1 configurada." }, - "error": { - "identifier_exists": "Ubicaci\u00f3n ya registrada" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/geonetnz_quakes/.translations/fr.json b/homeassistant/components/geonetnz_quakes/.translations/fr.json index 39aee7a6694..0a6fb793628 100644 --- a/homeassistant/components/geonetnz_quakes/.translations/fr.json +++ b/homeassistant/components/geonetnz_quakes/.translations/fr.json @@ -3,9 +3,6 @@ "abort": { "already_configured": "L'emplacement est d\u00e9j\u00e0 configur\u00e9." }, - "error": { - "identifier_exists": "Emplacement d\u00e9j\u00e0 enregistr\u00e9" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/geonetnz_quakes/.translations/it.json b/homeassistant/components/geonetnz_quakes/.translations/it.json index 7b65c27f161..2b2cac02737 100644 --- a/homeassistant/components/geonetnz_quakes/.translations/it.json +++ b/homeassistant/components/geonetnz_quakes/.translations/it.json @@ -3,9 +3,6 @@ "abort": { "already_configured": "La posizione \u00e8 gi\u00e0 configurata." }, - "error": { - "identifier_exists": "Localit\u00e0 gi\u00e0 registrata" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/geonetnz_quakes/.translations/ko.json b/homeassistant/components/geonetnz_quakes/.translations/ko.json index 04adb36e5d2..30c534b18e0 100644 --- a/homeassistant/components/geonetnz_quakes/.translations/ko.json +++ b/homeassistant/components/geonetnz_quakes/.translations/ko.json @@ -3,9 +3,6 @@ "abort": { "already_configured": "\uc704\uce58\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4." }, - "error": { - "identifier_exists": "\uc704\uce58\uac00 \uc774\ubbf8 \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/geonetnz_quakes/.translations/lb.json b/homeassistant/components/geonetnz_quakes/.translations/lb.json index ea9d1682eda..a4cbecc5818 100644 --- a/homeassistant/components/geonetnz_quakes/.translations/lb.json +++ b/homeassistant/components/geonetnz_quakes/.translations/lb.json @@ -3,9 +3,6 @@ "abort": { "already_configured": "Standuert ass scho konfigu\u00e9iert." }, - "error": { - "identifier_exists": "Standuert ass scho registr\u00e9iert" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/geonetnz_quakes/.translations/nl.json b/homeassistant/components/geonetnz_quakes/.translations/nl.json index d6af28240eb..4495dee078d 100644 --- a/homeassistant/components/geonetnz_quakes/.translations/nl.json +++ b/homeassistant/components/geonetnz_quakes/.translations/nl.json @@ -1,8 +1,5 @@ { "config": { - "error": { - "identifier_exists": "Locatie al geregistreerd" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/geonetnz_quakes/.translations/no.json b/homeassistant/components/geonetnz_quakes/.translations/no.json index df69f6a3913..82160a4295f 100644 --- a/homeassistant/components/geonetnz_quakes/.translations/no.json +++ b/homeassistant/components/geonetnz_quakes/.translations/no.json @@ -3,9 +3,6 @@ "abort": { "already_configured": "Plasseringen er allerede konfigurert." }, - "error": { - "identifier_exists": "Beliggenhet allerede er registrert" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/geonetnz_quakes/.translations/pl.json b/homeassistant/components/geonetnz_quakes/.translations/pl.json index 5de41e72ef6..b9763b61fcc 100644 --- a/homeassistant/components/geonetnz_quakes/.translations/pl.json +++ b/homeassistant/components/geonetnz_quakes/.translations/pl.json @@ -3,9 +3,6 @@ "abort": { "already_configured": "Lokalizacja jest ju\u017c skonfigurowana." }, - "error": { - "identifier_exists": "Lokalizacja jest ju\u017c zarejestrowana." - }, "step": { "user": { "data": { diff --git a/homeassistant/components/geonetnz_quakes/.translations/pt-BR.json b/homeassistant/components/geonetnz_quakes/.translations/pt-BR.json index 7e3ee3b24da..1dcf264b3f6 100644 --- a/homeassistant/components/geonetnz_quakes/.translations/pt-BR.json +++ b/homeassistant/components/geonetnz_quakes/.translations/pt-BR.json @@ -1,8 +1,5 @@ { "config": { - "error": { - "identifier_exists": "Localiza\u00e7\u00e3o j\u00e1 registrada" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/geonetnz_quakes/.translations/ru.json b/homeassistant/components/geonetnz_quakes/.translations/ru.json index e8bf8499be6..0b3d23bfa3b 100644 --- a/homeassistant/components/geonetnz_quakes/.translations/ru.json +++ b/homeassistant/components/geonetnz_quakes/.translations/ru.json @@ -3,9 +3,6 @@ "abort": { "already_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430." }, - "error": { - "identifier_exists": "\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043e." - }, "step": { "user": { "data": { diff --git a/homeassistant/components/geonetnz_quakes/.translations/sl.json b/homeassistant/components/geonetnz_quakes/.translations/sl.json index 1176c08f453..03f265f2719 100644 --- a/homeassistant/components/geonetnz_quakes/.translations/sl.json +++ b/homeassistant/components/geonetnz_quakes/.translations/sl.json @@ -3,9 +3,6 @@ "abort": { "already_configured": "Lokacija je \u017ee nastavljena." }, - "error": { - "identifier_exists": "Lokacija je \u017ee registrirana" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/geonetnz_quakes/.translations/sv.json b/homeassistant/components/geonetnz_quakes/.translations/sv.json index 13058ad3ad2..3e27c340808 100644 --- a/homeassistant/components/geonetnz_quakes/.translations/sv.json +++ b/homeassistant/components/geonetnz_quakes/.translations/sv.json @@ -1,8 +1,5 @@ { "config": { - "error": { - "identifier_exists": "Plats redan registrerad" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/geonetnz_quakes/.translations/zh-Hant.json b/homeassistant/components/geonetnz_quakes/.translations/zh-Hant.json index 3d312978bb2..f46e74a35bc 100644 --- a/homeassistant/components/geonetnz_quakes/.translations/zh-Hant.json +++ b/homeassistant/components/geonetnz_quakes/.translations/zh-Hant.json @@ -3,9 +3,6 @@ "abort": { "already_configured": "\u4f4d\u7f6e\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210\u3002" }, - "error": { - "identifier_exists": "\u5ea7\u6a19\u5df2\u8a3b\u518a" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/harmony/.translations/ca.json b/homeassistant/components/harmony/.translations/ca.json index 75fded469a8..f4e77752936 100644 --- a/homeassistant/components/harmony/.translations/ca.json +++ b/homeassistant/components/harmony/.translations/ca.json @@ -5,7 +5,6 @@ }, "error": { "cannot_connect": "No s'ha pogut connectar, torna-ho a provar", - "invalid_auth": "Autenticaci\u00f3 inv\u00e0lida", "unknown": "Error inesperat" }, "flow_title": "Logitech Harmony Hub {name}", diff --git a/homeassistant/components/harmony/.translations/de.json b/homeassistant/components/harmony/.translations/de.json index 84187ef1d52..70a5c8707ce 100644 --- a/homeassistant/components/harmony/.translations/de.json +++ b/homeassistant/components/harmony/.translations/de.json @@ -5,7 +5,6 @@ }, "error": { "cannot_connect": "Verbindung fehlgeschlagen, versuchen Sie es erneut", - "invalid_auth": "Ung\u00fcltige Authentifizierung", "unknown": "Unerwarteter Fehler" }, "flow_title": "Logitech Harmony Hub {name}", diff --git a/homeassistant/components/harmony/.translations/en.json b/homeassistant/components/harmony/.translations/en.json index 697d5572373..00054dbc51e 100644 --- a/homeassistant/components/harmony/.translations/en.json +++ b/homeassistant/components/harmony/.translations/en.json @@ -5,7 +5,6 @@ }, "error": { "cannot_connect": "Failed to connect, please try again", - "invalid_auth": "Invalid authentication", "unknown": "Unexpected error" }, "flow_title": "Logitech Harmony Hub {name}", diff --git a/homeassistant/components/harmony/.translations/es.json b/homeassistant/components/harmony/.translations/es.json index f8e8bd9ea7e..300b2e4cb8d 100644 --- a/homeassistant/components/harmony/.translations/es.json +++ b/homeassistant/components/harmony/.translations/es.json @@ -5,7 +5,6 @@ }, "error": { "cannot_connect": "No se ha podido conectar, por favor, int\u00e9ntalo de nuevo", - "invalid_auth": "Autenticaci\u00f3n no v\u00e1lida", "unknown": "Error inesperado" }, "flow_title": "Logitech Harmony Hub {name}", diff --git a/homeassistant/components/harmony/.translations/fr.json b/homeassistant/components/harmony/.translations/fr.json index e927254b9e2..60848bea459 100644 --- a/homeassistant/components/harmony/.translations/fr.json +++ b/homeassistant/components/harmony/.translations/fr.json @@ -5,7 +5,6 @@ }, "error": { "cannot_connect": "Impossible de se connecter, veuillez r\u00e9essayer", - "invalid_auth": "Authentification non valide", "unknown": "Erreur inattendue" }, "flow_title": "Logitech Harmony Hub {name}", diff --git a/homeassistant/components/harmony/.translations/it.json b/homeassistant/components/harmony/.translations/it.json index 36d06ef565c..4b88151f3d6 100644 --- a/homeassistant/components/harmony/.translations/it.json +++ b/homeassistant/components/harmony/.translations/it.json @@ -5,7 +5,6 @@ }, "error": { "cannot_connect": "Impossibile connettersi, si prega di riprovare", - "invalid_auth": "Autenticazione non valida", "unknown": "Errore imprevisto" }, "flow_title": "Logitech Harmony Hub {name}", diff --git a/homeassistant/components/harmony/.translations/ko.json b/homeassistant/components/harmony/.translations/ko.json index 6106ce8a89d..392c06390aa 100644 --- a/homeassistant/components/harmony/.translations/ko.json +++ b/homeassistant/components/harmony/.translations/ko.json @@ -5,7 +5,6 @@ }, "error": { "cannot_connect": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \uc2dc\ub3c4\ud574\uc8fc\uc138\uc694.", - "invalid_auth": "\uc778\uc99d\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4", "unknown": "\uc608\uc0c1\uce58 \ubabb\ud55c \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4" }, "flow_title": "Logitech Harmony Hub {name}", diff --git a/homeassistant/components/harmony/.translations/lb.json b/homeassistant/components/harmony/.translations/lb.json index 64536a01407..6cd2ab7d7bf 100644 --- a/homeassistant/components/harmony/.translations/lb.json +++ b/homeassistant/components/harmony/.translations/lb.json @@ -5,7 +5,6 @@ }, "error": { "cannot_connect": "Feeler beim verbannen, prob\u00e9ier w.e.g. nach emol.", - "invalid_auth": "Ong\u00eblteg Authentifikatioun", "unknown": "Onerwaarte Feeler" }, "flow_title": "Logitech Harmony Hub {name}", diff --git a/homeassistant/components/harmony/.translations/no.json b/homeassistant/components/harmony/.translations/no.json index 6c989f8068b..4dd86965bfd 100644 --- a/homeassistant/components/harmony/.translations/no.json +++ b/homeassistant/components/harmony/.translations/no.json @@ -5,7 +5,6 @@ }, "error": { "cannot_connect": "Klarte ikke \u00e5 koble til, vennligst pr\u00f8v igjen", - "invalid_auth": "Ugyldig godkjenning", "unknown": "Uventet feil" }, "flow_title": "Logitech Harmony Hub {name}", diff --git a/homeassistant/components/harmony/.translations/pl.json b/homeassistant/components/harmony/.translations/pl.json index a9f611d0f35..e5ace2e0d1d 100644 --- a/homeassistant/components/harmony/.translations/pl.json +++ b/homeassistant/components/harmony/.translations/pl.json @@ -5,7 +5,6 @@ }, "error": { "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia, spr\u00f3buj ponownie.", - "invalid_auth": "Niepoprawne uwierzytelnienie.", "unknown": "Niespodziewany b\u0142\u0105d." }, "flow_title": "Logitech Harmony Hub {name}", diff --git a/homeassistant/components/harmony/.translations/ru.json b/homeassistant/components/harmony/.translations/ru.json index cdeb809da12..b89296616b3 100644 --- a/homeassistant/components/harmony/.translations/ru.json +++ b/homeassistant/components/harmony/.translations/ru.json @@ -5,7 +5,6 @@ }, "error": { "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437.", - "invalid_auth": "\u041d\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f.", "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." }, "flow_title": "Logitech Harmony Hub {name}", diff --git a/homeassistant/components/harmony/.translations/zh-Hant.json b/homeassistant/components/harmony/.translations/zh-Hant.json index 7cdbad1a70d..9e523c67290 100644 --- a/homeassistant/components/harmony/.translations/zh-Hant.json +++ b/homeassistant/components/harmony/.translations/zh-Hant.json @@ -5,7 +5,6 @@ }, "error": { "cannot_connect": "\u9023\u7dda\u5931\u6557\uff0c\u8acb\u518d\u8a66\u4e00\u6b21", - "invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548", "unknown": "\u672a\u9810\u671f\u932f\u8aa4" }, "flow_title": "\u7f85\u6280 Harmony Hub {name}", diff --git a/homeassistant/components/heos/.translations/pl.json b/homeassistant/components/heos/.translations/pl.json index d427acc3a98..e494a6b34df 100644 --- a/homeassistant/components/heos/.translations/pl.json +++ b/homeassistant/components/heos/.translations/pl.json @@ -13,7 +13,7 @@ "host": "Host" }, "description": "Wprowad\u017a nazw\u0119 hosta lub adres IP urz\u0105dzenia Heos (najlepiej pod\u0142\u0105czonego przewodowo do sieci).", - "title": "Po\u0142\u0105cz si\u0119 z Heos" + "title": "Po\u0142\u0105czenie z Heos" } }, "title": "Heos" diff --git a/homeassistant/components/homekit_controller/.translations/hu.json b/homeassistant/components/homekit_controller/.translations/hu.json index 264e635d7f4..53ca9a39015 100644 --- a/homeassistant/components/homekit_controller/.translations/hu.json +++ b/homeassistant/components/homekit_controller/.translations/hu.json @@ -14,7 +14,7 @@ "busy_error": "Az eszk\u00f6z megtagadta a p\u00e1ros\u00edt\u00e1s hozz\u00e1ad\u00e1s\u00e1t, mivel m\u00e1r p\u00e1ros\u00edtva van egy m\u00e1sik vez\u00e9rl\u0151vel.", "max_peers_error": "Az eszk\u00f6z megtagadta a p\u00e1ros\u00edt\u00e1s hozz\u00e1ad\u00e1s\u00e1t, mivel nincs ingyenes p\u00e1ros\u00edt\u00e1si t\u00e1rhely.", "max_tries_error": "Az eszk\u00f6z megtagadta a p\u00e1ros\u00edt\u00e1s hozz\u00e1ad\u00e1s\u00e1t, mivel t\u00f6bb mint 100 sikertelen hiteles\u00edt\u00e9si k\u00eds\u00e9rletet kapott.", - "pairing_failed": "Nem kezelt hiba t\u00f6rt\u00e9nt az eszk\u00f6zzel val\u00f3 p\u00e1ros\u00edt\u00e1s sor\u00e1n. Lehet, hogy ez \u00e1tmeneti hiba, vagy jelenleg nem t\u00e1mogatja az eszk\u00f6zt.", + "pairing_failed": "Nem kezelt hiba t\u00f6rt\u00e9nt az eszk\u00f6zzel val\u00f3 p\u00e1ros\u00edt\u00e1s sor\u00e1n. Lehet, hogy ez \u00e1tmeneti hiba, vagy az eszk\u00f6z jelenleg m\u00e9g nem t\u00e1mogatott.", "unable_to_pair": "Nem siker\u00fclt p\u00e1ros\u00edtani, pr\u00f3b\u00e1ld \u00fajra.", "unknown_error": "Az eszk\u00f6z ismeretlen hib\u00e1t jelentett. A p\u00e1ros\u00edt\u00e1s sikertelen." }, diff --git a/homeassistant/components/huawei_lte/.translations/lb.json b/homeassistant/components/huawei_lte/.translations/lb.json index 56d383edba3..d99c31d2d63 100644 --- a/homeassistant/components/huawei_lte/.translations/lb.json +++ b/homeassistant/components/huawei_lte/.translations/lb.json @@ -33,7 +33,7 @@ "step": { "init": { "data": { - "name": "Numm vum Notifikatioun's Service", + "name": "Numm vum Notifikatioun's Service (Restart n\u00e9ideg bei \u00c4nnerung)", "recipient": "Empf\u00e4nger vun SMS Notifikatioune", "track_new_devices": "Nei Apparater verfollegen" } diff --git a/homeassistant/components/hue/.translations/ca.json b/homeassistant/components/hue/.translations/ca.json index 471ce2181fb..53c248fe179 100644 --- a/homeassistant/components/hue/.translations/ca.json +++ b/homeassistant/components/hue/.translations/ca.json @@ -27,5 +27,22 @@ } }, "title": "Philips Hue" + }, + "device_automation": { + "trigger_subtype": { + "button_1": "Primer bot\u00f3", + "button_2": "Segon bot\u00f3", + "button_3": "Tercer bot\u00f3", + "button_4": "Quart bot\u00f3", + "dim_down": "Atenua la brillantor", + "dim_up": "Augmenta la brillantor", + "turn_off": "Apaga", + "turn_on": "Enc\u00e9n" + }, + "trigger_type": { + "remote_button_long_release": "Bot\u00f3 \"{subtype}\" alliberat despr\u00e9s d'una estona premut", + "remote_button_short_press": "Bot\u00f3 \"{subtype}\" premut", + "remote_button_short_release": "Bot\u00f3 \"{subtype}\" alliberat" + } } } \ No newline at end of file diff --git a/homeassistant/components/hue/.translations/da.json b/homeassistant/components/hue/.translations/da.json index afcfd7071e7..c00c19be42a 100644 --- a/homeassistant/components/hue/.translations/da.json +++ b/homeassistant/components/hue/.translations/da.json @@ -27,5 +27,22 @@ } }, "title": "Philips Hue" + }, + "device_automation": { + "trigger_subtype": { + "button_1": "F\u00f8rste knap", + "button_2": "Anden knap", + "button_3": "Tredje knap", + "button_4": "Fjerde knap", + "dim_down": "D\u00e6mp ned", + "dim_up": "D\u00e6mp op", + "turn_off": "Sluk", + "turn_on": "T\u00e6nd" + }, + "trigger_type": { + "remote_button_long_release": "\"{subtype}\"-knappen frigivet efter langt tryk", + "remote_button_short_press": "\"{subtype}\"-knappen trykket p\u00e5", + "remote_button_short_release": "\"{subtype}\"-knappen frigivet" + } } } \ No newline at end of file diff --git a/homeassistant/components/hue/.translations/de.json b/homeassistant/components/hue/.translations/de.json index 1907d9d23ca..a4ab9123b48 100644 --- a/homeassistant/components/hue/.translations/de.json +++ b/homeassistant/components/hue/.translations/de.json @@ -27,5 +27,22 @@ } }, "title": "Philips Hue" + }, + "device_automation": { + "trigger_subtype": { + "button_1": "Erste Taste", + "button_2": "Zweite Taste", + "button_3": "Dritte Taste", + "button_4": "Vierte Taste", + "dim_down": "Dimmer runter", + "dim_up": "Dimmer hoch", + "turn_off": "Ausschalten", + "turn_on": "Einschalten" + }, + "trigger_type": { + "remote_button_long_release": "\"{subtype}\" Taste nach langem Dr\u00fccken losgelassen", + "remote_button_short_press": "\"{subtype}\" Taste gedr\u00fcckt", + "remote_button_short_release": "\"{subtype}\" Taste losgelassen" + } } } \ No newline at end of file diff --git a/homeassistant/components/hue/.translations/es.json b/homeassistant/components/hue/.translations/es.json index bc41d3d2df0..6a5074c6e4a 100644 --- a/homeassistant/components/hue/.translations/es.json +++ b/homeassistant/components/hue/.translations/es.json @@ -27,5 +27,22 @@ } }, "title": "Philips Hue" + }, + "device_automation": { + "trigger_subtype": { + "button_1": "Primer bot\u00f3n", + "button_2": "Segundo bot\u00f3n", + "button_3": "Tercer bot\u00f3n", + "button_4": "Cuarto bot\u00f3n", + "dim_down": "Bajar la intensidad", + "dim_up": "Subir la intensidad", + "turn_off": "Apagar", + "turn_on": "Encender" + }, + "trigger_type": { + "remote_button_long_release": "Bot\u00f3n \"{subtype}\" soltado despu\u00e9s de una pulsaci\u00f3n larga", + "remote_button_short_press": "Bot\u00f3n \"{subtype}\" pulsado", + "remote_button_short_release": "Bot\u00f3n \"{subtype}\" soltado" + } } } \ No newline at end of file diff --git a/homeassistant/components/hue/.translations/ko.json b/homeassistant/components/hue/.translations/ko.json index 7e837ca5ff9..8b1c413b205 100644 --- a/homeassistant/components/hue/.translations/ko.json +++ b/homeassistant/components/hue/.translations/ko.json @@ -27,5 +27,22 @@ } }, "title": "\ud544\ub9bd\uc2a4 Hue \ube0c\ub9bf\uc9c0" + }, + "device_automation": { + "trigger_subtype": { + "button_1": "\uccab \ubc88\uc9f8 \ubc84\ud2bc", + "button_2": "\ub450 \ubc88\uc9f8 \ubc84\ud2bc", + "button_3": "\uc138 \ubc88\uc9f8 \ubc84\ud2bc", + "button_4": "\ub124 \ubc88\uc9f8 \ubc84\ud2bc", + "dim_down": "\uc5b4\ub461\uac8c \ud558\uae30", + "dim_up": "\ubc1d\uac8c \ud558\uae30", + "turn_off": "\ub044\uae30", + "turn_on": "\ucf1c\uae30" + }, + "trigger_type": { + "remote_button_long_release": "\"{subtype}\" \ubc84\ud2bc\uc774 \uae38\uac8c \ub20c\ub838\ub2e4\uac00 \uc190\uc744 \ub5c4 \ub54c", + "remote_button_short_press": "\"{subtype}\" \ubc84\ud2bc\uc774 \ub20c\ub9b4 \ub54c", + "remote_button_short_release": "\"{subtype}\" \ubc84\ud2bc\uc5d0\uc11c \uc190\uc744 \ub5c4 \ub54c" + } } } \ No newline at end of file diff --git a/homeassistant/components/hue/.translations/lb.json b/homeassistant/components/hue/.translations/lb.json index ac83609ff02..2b5b168817f 100644 --- a/homeassistant/components/hue/.translations/lb.json +++ b/homeassistant/components/hue/.translations/lb.json @@ -27,5 +27,22 @@ } }, "title": "Philips Hue" + }, + "device_automation": { + "trigger_subtype": { + "button_1": "\u00c9ischte Kn\u00e4ppchen", + "button_2": "Zweete Kn\u00e4ppchen", + "button_3": "Dr\u00ebtte Kn\u00e4ppchen", + "button_4": "V\u00e9ierte Kn\u00e4ppchen", + "dim_down": "Verd\u00e4ischteren", + "dim_up": "Erhellen", + "turn_off": "Ausschalten", + "turn_on": "Uschalten" + }, + "trigger_type": { + "remote_button_long_release": "\"{subtype}\" Kn\u00e4ppche no laangem unhalen lassgelooss", + "remote_button_short_press": "\"{subtype}\" Kn\u00e4ppche gedr\u00e9ckt", + "remote_button_short_release": "\"{subtype}\" Kn\u00e4ppche lassgelooss" + } } } \ No newline at end of file diff --git a/homeassistant/components/hue/.translations/ru.json b/homeassistant/components/hue/.translations/ru.json index 3425cb82d01..fa2f2e55744 100644 --- a/homeassistant/components/hue/.translations/ru.json +++ b/homeassistant/components/hue/.translations/ru.json @@ -27,5 +27,22 @@ } }, "title": "Philips Hue" + }, + "device_automation": { + "trigger_subtype": { + "button_1": "\u041f\u0435\u0440\u0432\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430", + "button_2": "\u0412\u0442\u043e\u0440\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430", + "button_3": "\u0422\u0440\u0435\u0442\u044c\u044f \u043a\u043d\u043e\u043f\u043a\u0430", + "button_4": "\u0427\u0435\u0442\u0432\u0435\u0440\u0442\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430", + "dim_down": "\u042f\u0440\u043a\u043e\u0441\u0442\u044c \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f", + "dim_up": "\u042f\u0440\u043a\u043e\u0441\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f", + "turn_off": "\u0412\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f", + "turn_on": "\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f" + }, + "trigger_type": { + "remote_button_long_release": "\"{subtype}\" \u043e\u0442\u043f\u0443\u0449\u0435\u043d\u0430 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044f", + "remote_button_short_press": "\"{subtype}\" \u043d\u0430\u0436\u0430\u0442\u0430", + "remote_button_short_release": "\"{subtype}\" \u043e\u0442\u043f\u0443\u0449\u0435\u043d\u0430" + } } } \ No newline at end of file diff --git a/homeassistant/components/hue/.translations/zh-Hant.json b/homeassistant/components/hue/.translations/zh-Hant.json index 6bbe75a8019..0aa75438f7b 100644 --- a/homeassistant/components/hue/.translations/zh-Hant.json +++ b/homeassistant/components/hue/.translations/zh-Hant.json @@ -27,5 +27,22 @@ } }, "title": "Philips Hue" + }, + "device_automation": { + "trigger_subtype": { + "button_1": "\u7b2c\u4e00\u500b\u6309\u9215", + "button_2": "\u7b2c\u4e8c\u500b\u6309\u9215", + "button_3": "\u7b2c\u4e09\u500b\u6309\u9215", + "button_4": "\u7b2c\u56db\u500b\u6309\u9215", + "dim_down": "\u8abf\u6697", + "dim_up": "\u8abf\u4eae", + "turn_off": "\u95dc\u9589", + "turn_on": "\u958b\u555f" + }, + "trigger_type": { + "remote_button_long_release": "\"{subtype}\" \u6309\u9215\u9577\u6309\u5f8c\u91cb\u653e", + "remote_button_short_press": "\"{subtype}\" \u6309\u9215\u5df2\u6309\u4e0b", + "remote_button_short_release": "\"{subtype}\" \u6309\u9215\u5df2\u91cb\u653e" + } } } \ No newline at end of file diff --git a/homeassistant/components/ipp/.translations/ca.json b/homeassistant/components/ipp/.translations/ca.json index 5708c8e638d..f193878d952 100644 --- a/homeassistant/components/ipp/.translations/ca.json +++ b/homeassistant/components/ipp/.translations/ca.json @@ -1,13 +1,31 @@ { "config": { + "abort": { + "already_configured": "Aquesta impressora ja est\u00e0 configurada.", + "connection_error": "No s'ha pogut connectar amb la impressora.", + "connection_upgrade": "No s'ha pogut connectar amb la impressora, es necessita actualitzar la connexi\u00f3." + }, + "error": { + "connection_error": "No s'ha pogut connectar amb la impressora." + }, "flow_title": "Impressora: {name}", "step": { "user": { "data": { + "base_path": "Ruta relativa a la impressora", "host": "Amfitri\u00f3 o adre\u00e7a IP", - "port": "Port" - } + "port": "Port", + "ssl": "La impressora \u00e9s compatible amb comunicaci\u00f3 SSL/TLS", + "verify_ssl": "La impressora utilitza un certificat SSL adequat" + }, + "description": "Configura la impressora amb el protocol d'impressi\u00f3 per Internet (IPP) per integrar-la amb Home Assistant.", + "title": "Enlla\u00e7 d'impressora" + }, + "zeroconf_confirm": { + "description": "Vols afegir la impressora {name} a Home Assistant?", + "title": "Impressora descoberta" } - } + }, + "title": "Protocol d'impressi\u00f3 per Internet (IPP)" } } \ No newline at end of file diff --git a/homeassistant/components/ipp/.translations/en.json b/homeassistant/components/ipp/.translations/en.json index df84cbefa29..c3fc9be6d45 100644 --- a/homeassistant/components/ipp/.translations/en.json +++ b/homeassistant/components/ipp/.translations/en.json @@ -3,7 +3,8 @@ "abort": { "already_configured": "This printer is already configured.", "connection_error": "Failed to connect to printer.", - "connection_upgrade": "Failed to connect to printer due to connection upgrade being required." + "connection_upgrade": "Failed to connect to printer due to connection upgrade being required.", + "parse_error": "Failed to parse response from printer." }, "error": { "connection_error": "Failed to connect to printer.", diff --git a/homeassistant/components/ipp/.translations/ko.json b/homeassistant/components/ipp/.translations/ko.json new file mode 100644 index 00000000000..ab556519e07 --- /dev/null +++ b/homeassistant/components/ipp/.translations/ko.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "\uc774 \ud504\ub9b0\ud130\ub294 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.", + "connection_error": "\ud504\ub9b0\ud130\uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.", + "connection_upgrade": "\ud504\ub9b0\ud130\uc5d0 \uc5f0\uacb0\ud558\ub824\uba74 \uc5f0\uacb0\uc744 \uc5c5\uadf8\ub808\uc774\ub4dc\ud574\uc57c \ud569\ub2c8\ub2e4." + }, + "error": { + "connection_error": "\ud504\ub9b0\ud130\uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.", + "connection_upgrade": "\ud504\ub9b0\ud130\uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. SSL/TLS \uc635\uc158\uc744 \ud655\uc778\ud558\uace0 \ub2e4\uc2dc \uc2dc\ub3c4\ud574\uc8fc\uc138\uc694." + }, + "flow_title": "\ud504\ub9b0\ud130: {name}", + "step": { + "user": { + "data": { + "base_path": "\ud504\ub9b0\ud130\uc758 \uc0c1\ub300 \uacbd\ub85c", + "host": "\ud638\uc2a4\ud2b8 \ub610\ub294 IP \uc8fc\uc18c", + "port": "\ud3ec\ud2b8", + "ssl": "\ud504\ub9b0\ud130\ub294 SSL/TLS \ub97c \ud1b5\ud55c \ud1b5\uc2e0\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4", + "verify_ssl": "\ud504\ub9b0\ud130\ub294 \uc62c\ubc14\ub978 SSL \uc778\uc99d\uc11c\ub97c \uc0ac\uc6a9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4" + }, + "description": "\uc778\ud130\ub137 \uc778\uc1c4 \ud504\ub85c\ud1a0\ucf5c (IPP) \ub97c \ud1b5\ud574 \ud504\ub9b0\ud130\ub97c \uc124\uc815\ud558\uc5ec Home Assistant \uc640 \uc5f0\ub3d9\ud569\ub2c8\ub2e4.", + "title": "\ud504\ub9b0\ud130 \uc5f0\uacb0" + }, + "zeroconf_confirm": { + "description": "Home Assistant \uc5d0 `{name}` \ud504\ub9b0\ud130\ub97c \ucd94\uac00\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?", + "title": "\ubc1c\uacac\ub41c \ud504\ub9b0\ud130" + } + }, + "title": "\uc778\ud130\ub137 \uc778\uc1c4 \ud504\ub85c\ud1a0\ucf5c (IPP)" + } +} \ No newline at end of file diff --git a/homeassistant/components/konnected/.translations/ca.json b/homeassistant/components/konnected/.translations/ca.json index d5fbb60ae71..80e7208391b 100644 --- a/homeassistant/components/konnected/.translations/ca.json +++ b/homeassistant/components/konnected/.translations/ca.json @@ -91,6 +91,7 @@ "data": { "activation": "Sortida quan estigui ON", "momentary": "Durada del pols (ms) (opcional)", + "more_states": "Configura estats addicionals per a aquesta zona", "name": "Nom (opcional)", "pause": "Pausa entre polsos (ms) (opcional)", "repeat": "Repeticions (-1 = infinit) (opcional)" diff --git a/homeassistant/components/konnected/.translations/es.json b/homeassistant/components/konnected/.translations/es.json index cfd05320e35..64069d4e756 100644 --- a/homeassistant/components/konnected/.translations/es.json +++ b/homeassistant/components/konnected/.translations/es.json @@ -34,6 +34,7 @@ "not_konn_panel": "No es un dispositivo Konnected.io reconocido" }, "error": { + "bad_host": "URL del host de la API de invalidaci\u00f3n no v\u00e1lida", "one": "", "other": "otros" }, @@ -86,7 +87,9 @@ }, "options_misc": { "data": { - "blink": "Parpadea el LED del panel cuando se env\u00eda un cambio de estado" + "api_host": "Invalidar la direcci\u00f3n URL del host de la API (opcional)", + "blink": "Parpadea el LED del panel cuando se env\u00eda un cambio de estado", + "override_api_host": "Reemplazar la URL predeterminada del panel host de la API de Home Assistant" }, "description": "Seleccione el comportamiento deseado para su panel", "title": "Configurar miscel\u00e1neos" diff --git a/homeassistant/components/konnected/.translations/ko.json b/homeassistant/components/konnected/.translations/ko.json index 0c5e213ea0d..34dd01d06b6 100644 --- a/homeassistant/components/konnected/.translations/ko.json +++ b/homeassistant/components/konnected/.translations/ko.json @@ -33,6 +33,9 @@ "abort": { "not_konn_panel": "\uc778\uc2dd\ub41c Konnected.io \uae30\uae30\uac00 \uc544\ub2d9\ub2c8\ub2e4" }, + "error": { + "bad_host": "API \ud638\uc2a4\ud2b8 URL \uc7ac\uc815\uc758\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4" + }, "step": { "options_binary": { "data": { @@ -82,7 +85,9 @@ }, "options_misc": { "data": { - "blink": "\uc0c1\ud0dc \ubcc0\uacbd\uc744 \ubcf4\ub0bc \ub54c \uae5c\ubc15\uc784 \ud328\ub110 LED \ub97c \ucf2d\ub2c8\ub2e4" + "api_host": "API \ud638\uc2a4\ud2b8 URL \uc7ac\uc815\uc758 (\uc120\ud0dd \uc0ac\ud56d)", + "blink": "\uc0c1\ud0dc \ubcc0\uacbd\uc744 \ubcf4\ub0bc \ub54c \uae5c\ubc15\uc784 \ud328\ub110 LED \ub97c \ucf2d\ub2c8\ub2e4", + "override_api_host": "\uae30\ubcf8 Home Assistant API \ud638\uc2a4\ud2b8 \ud328\ub110 URL \uc7ac\uc815\uc758" }, "description": "\ud328\ub110\uc5d0 \uc6d0\ud558\ub294 \ub3d9\uc791\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694", "title": "\uae30\ud0c0 \uad6c\uc131" @@ -91,11 +96,12 @@ "data": { "activation": "\uc2a4\uc704\uce58\uac00 \ucf1c\uc9c8 \ub54c \ucd9c\ub825", "momentary": "\ud384\uc2a4 \uc9c0\uc18d\uc2dc\uac04 (ms) (\uc120\ud0dd \uc0ac\ud56d)", + "more_states": "\uc774 \uad6c\uc5ed\uc5d0 \ub300\ud55c \ucd94\uac00 \uc0c1\ud0dc \uad6c\uc131", "name": "\uc774\ub984 (\uc120\ud0dd \uc0ac\ud56d)", "pause": "\ud384\uc2a4 \uac04 \uc77c\uc2dc\uc815\uc9c0 \uc2dc\uac04 (ms) (\uc120\ud0dd \uc0ac\ud56d)", "repeat": "\ubc18\ubcf5 \uc2dc\uac04 (-1 = \ubb34\ud55c) (\uc120\ud0dd \uc0ac\ud56d)" }, - "description": "{zone} \ub300\ud55c \ucd9c\ub825 \uc635\uc158\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694", + "description": "{zone} \uad6c\uc5ed\uc5d0 \ub300\ud55c \ucd9c\ub825 \uc635\uc158\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694: \uc0c1\ud0dc {state}", "title": "\uc2a4\uc704\uce58 \ucd9c\ub825 \uad6c\uc131" } }, diff --git a/homeassistant/components/konnected/.translations/lb.json b/homeassistant/components/konnected/.translations/lb.json index 984e3b79f54..6ad04254611 100644 --- a/homeassistant/components/konnected/.translations/lb.json +++ b/homeassistant/components/konnected/.translations/lb.json @@ -11,7 +11,7 @@ }, "step": { "confirm": { - "description": "Modell: {model}\nHost: {host}\nPort: {port}\n\nDir k\u00ebnnt den I/O a Panel Verhaalen an de Konnected Alarm Panel Astellunge konfigur\u00e9ieren.", + "description": "Modell: {model}\nID: {id}\nHost: {host}\nPort: {port}\n\nDir k\u00ebnnt den I/O a Panel Verhaalen an de Konnected Alarm Panel Astellunge konfigur\u00e9ieren.", "title": "Konnected Apparat parat" }, "import_confirm": { diff --git a/homeassistant/components/konnected/.translations/ru.json b/homeassistant/components/konnected/.translations/ru.json index 75a879832a4..f3b7f4d6d24 100644 --- a/homeassistant/components/konnected/.translations/ru.json +++ b/homeassistant/components/konnected/.translations/ru.json @@ -33,6 +33,9 @@ "abort": { "not_konn_panel": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e Konnected.io \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\u043e." }, + "error": { + "bad_host": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 URL \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0445\u043e\u0441\u0442\u0430 API." + }, "step": { "options_binary": { "data": { @@ -82,7 +85,9 @@ }, "options_misc": { "data": { - "blink": "LED-\u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u043f\u0440\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f" + "api_host": "\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c URL \u0445\u043e\u0441\u0442\u0430 API (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)", + "blink": "LED-\u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u043f\u0440\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f", + "override_api_host": "\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441 \u0445\u043e\u0441\u0442-\u043f\u0430\u043d\u0435\u043b\u0438 Home Assistant API" }, "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0412\u0430\u0448\u0435\u0439 \u043f\u0430\u043d\u0435\u043b\u0438.", "title": "\u041f\u0440\u043e\u0447\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438" @@ -96,7 +101,7 @@ "pause": "\u041f\u0430\u0443\u0437\u0430 \u043c\u0435\u0436\u0434\u0443 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430\u043c\u0438 (\u043c\u0441) (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)", "repeat": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0439 (-1 = \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e) (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)" }, - "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u044b\u0445\u043e\u0434\u0430 \u0434\u043b\u044f {zone}.", + "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u044b\u0445\u043e\u0434\u0430 \u0434\u043b\u044f {zone}: \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 {state}.", "title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u0430" } }, diff --git a/homeassistant/components/light/.translations/hu.json b/homeassistant/components/light/.translations/hu.json index 7d7e158f3cb..5192a8c7df2 100644 --- a/homeassistant/components/light/.translations/hu.json +++ b/homeassistant/components/light/.translations/hu.json @@ -1,6 +1,8 @@ { "device_automation": { "action_type": { + "brightness_decrease": "{entity_name} f\u00e9nyerej\u00e9nek cs\u00f6kkent\u00e9se", + "brightness_increase": "{entity_name} f\u00e9nyerej\u00e9nek n\u00f6vel\u00e9se", "toggle": "{entity_name} fel/lekapcsol\u00e1sa", "turn_off": "{entity_name} lekapcsol\u00e1sa", "turn_on": "{entity_name} felkapcsol\u00e1sa" diff --git a/homeassistant/components/light/.translations/lb.json b/homeassistant/components/light/.translations/lb.json index a7f807e8dcd..8ffa33a6a3b 100644 --- a/homeassistant/components/light/.translations/lb.json +++ b/homeassistant/components/light/.translations/lb.json @@ -1,6 +1,8 @@ { "device_automation": { "action_type": { + "brightness_decrease": "{entity_name} Hellegkeet reduz\u00e9ieren", + "brightness_increase": "{entity_name} Hellegkeet erh\u00e9ijen", "toggle": "{entity_name} \u00ebmschalten", "turn_off": "{entity_name} ausschalten", "turn_on": "{entity_name} uschalten" diff --git a/homeassistant/components/melcloud/.translations/pl.json b/homeassistant/components/melcloud/.translations/pl.json index 9abb68ca85a..60cc9843607 100644 --- a/homeassistant/components/melcloud/.translations/pl.json +++ b/homeassistant/components/melcloud/.translations/pl.json @@ -15,7 +15,7 @@ "username": "Adres e-mail u\u017cywany do logowania do MELCloud" }, "description": "Po\u0142\u0105cz u\u017cywaj\u0105c swojego konta MELCloud.", - "title": "Po\u0142\u0105cz si\u0119 z MELCloud" + "title": "Po\u0142\u0105czenie z MELCloud" } }, "title": "MELCloud" diff --git a/homeassistant/components/minecraft_server/.translations/ca.json b/homeassistant/components/minecraft_server/.translations/ca.json index 86856ac2d11..e205090d0cd 100644 --- a/homeassistant/components/minecraft_server/.translations/ca.json +++ b/homeassistant/components/minecraft_server/.translations/ca.json @@ -12,8 +12,7 @@ "user": { "data": { "host": "Amfitri\u00f3", - "name": "Nom", - "port": "Port" + "name": "Nom" }, "description": "Configuraci\u00f3 d'una inst\u00e0ncia de servidor de Minecraft per poder monitoritzar-lo.", "title": "Enlla\u00e7 del servidor de Minecraft" diff --git a/homeassistant/components/minecraft_server/.translations/da.json b/homeassistant/components/minecraft_server/.translations/da.json index bf930f2f277..e536234ffdb 100644 --- a/homeassistant/components/minecraft_server/.translations/da.json +++ b/homeassistant/components/minecraft_server/.translations/da.json @@ -12,8 +12,7 @@ "user": { "data": { "host": "V\u00e6rt", - "name": "Navn", - "port": "Port" + "name": "Navn" }, "description": "Konfigurer din Minecraft-server-instans for at tillade overv\u00e5gning.", "title": "Forbind din Minecraft-server" diff --git a/homeassistant/components/minecraft_server/.translations/de.json b/homeassistant/components/minecraft_server/.translations/de.json index 00426308239..31f0fe2c0f0 100644 --- a/homeassistant/components/minecraft_server/.translations/de.json +++ b/homeassistant/components/minecraft_server/.translations/de.json @@ -12,8 +12,7 @@ "user": { "data": { "host": "Host", - "name": "Name", - "port": "Port" + "name": "Name" }, "description": "Richte deine Minecraft Server-Instanz ein, um es \u00fcberwachen zu k\u00f6nnen.", "title": "Verkn\u00fcpfe deinen Minecraft Server" diff --git a/homeassistant/components/minecraft_server/.translations/en.json b/homeassistant/components/minecraft_server/.translations/en.json index d0f7a5d6300..fa04208cac9 100644 --- a/homeassistant/components/minecraft_server/.translations/en.json +++ b/homeassistant/components/minecraft_server/.translations/en.json @@ -12,8 +12,7 @@ "user": { "data": { "host": "Host", - "name": "Name", - "port": "Port" + "name": "Name" }, "description": "Set up your Minecraft Server instance to allow monitoring.", "title": "Link your Minecraft Server" diff --git a/homeassistant/components/minecraft_server/.translations/es.json b/homeassistant/components/minecraft_server/.translations/es.json index 14831ef45e1..a4509ba68d4 100644 --- a/homeassistant/components/minecraft_server/.translations/es.json +++ b/homeassistant/components/minecraft_server/.translations/es.json @@ -12,8 +12,7 @@ "user": { "data": { "host": "Host", - "name": "Nombre", - "port": "Puerto" + "name": "Nombre" }, "description": "Configura tu instancia de Minecraft Server para permitir la supervisi\u00f3n.", "title": "Enlace su servidor Minecraft" diff --git a/homeassistant/components/minecraft_server/.translations/fr.json b/homeassistant/components/minecraft_server/.translations/fr.json index bf87c6f3d73..c52021806d8 100644 --- a/homeassistant/components/minecraft_server/.translations/fr.json +++ b/homeassistant/components/minecraft_server/.translations/fr.json @@ -7,8 +7,7 @@ "user": { "data": { "host": "H\u00f4te", - "name": "Nom", - "port": "Port" + "name": "Nom" }, "title": "Reliez votre serveur Minecraft" } diff --git a/homeassistant/components/minecraft_server/.translations/hu.json b/homeassistant/components/minecraft_server/.translations/hu.json index 9341bdbe4d1..4cf4a7a72fb 100644 --- a/homeassistant/components/minecraft_server/.translations/hu.json +++ b/homeassistant/components/minecraft_server/.translations/hu.json @@ -7,10 +7,9 @@ "user": { "data": { "host": "Kiszolg\u00e1l\u00f3", - "name": "N\u00e9v", - "port": "Port" + "name": "N\u00e9v" }, - "title": "Kapcsolja \u00f6ssze a Minecraft szervert" + "title": "Kapcsold \u00f6ssze a Minecraft szervered" } }, "title": "Minecraft szerver" diff --git a/homeassistant/components/minecraft_server/.translations/it.json b/homeassistant/components/minecraft_server/.translations/it.json index 5861eebcc9a..a17ed15a546 100644 --- a/homeassistant/components/minecraft_server/.translations/it.json +++ b/homeassistant/components/minecraft_server/.translations/it.json @@ -12,8 +12,7 @@ "user": { "data": { "host": "Host", - "name": "Nome", - "port": "Porta" + "name": "Nome" }, "description": "Configurare l'istanza del Server Minecraft per consentire il monitoraggio.", "title": "Collega il tuo Server Minecraft" diff --git a/homeassistant/components/minecraft_server/.translations/ko.json b/homeassistant/components/minecraft_server/.translations/ko.json index 66b281cc5d9..ee3ee24db70 100644 --- a/homeassistant/components/minecraft_server/.translations/ko.json +++ b/homeassistant/components/minecraft_server/.translations/ko.json @@ -12,8 +12,7 @@ "user": { "data": { "host": "\ud638\uc2a4\ud2b8", - "name": "\uc774\ub984", - "port": "\ud3ec\ud2b8" + "name": "\uc774\ub984" }, "description": "\ubaa8\ub2c8\ud130\ub9c1\uc774 \uac00\ub2a5\ud558\ub3c4\ub85d Minecraft \uc11c\ubc84 \uc778\uc2a4\ud134\uc2a4\ub97c \uc124\uc815\ud574\uc8fc\uc138\uc694.", "title": "Minecraft \uc11c\ubc84 \uc5f0\uacb0" diff --git a/homeassistant/components/minecraft_server/.translations/lb.json b/homeassistant/components/minecraft_server/.translations/lb.json index f95dd062005..23157202469 100644 --- a/homeassistant/components/minecraft_server/.translations/lb.json +++ b/homeassistant/components/minecraft_server/.translations/lb.json @@ -12,8 +12,7 @@ "user": { "data": { "host": "Apparat", - "name": "Numm", - "port": "Port" + "name": "Numm" }, "description": "Riicht deng Minecraft Server Instanz a fir d'Iwwerwaachung z'erlaben", "title": "Verbann d\u00e4in Minecraft Server" diff --git a/homeassistant/components/minecraft_server/.translations/lv.json b/homeassistant/components/minecraft_server/.translations/lv.json index 7de2aaadfc8..a46db9e75e5 100644 --- a/homeassistant/components/minecraft_server/.translations/lv.json +++ b/homeassistant/components/minecraft_server/.translations/lv.json @@ -3,8 +3,7 @@ "step": { "user": { "data": { - "name": "Nosaukums", - "port": "Ports" + "name": "Nosaukums" } } } diff --git a/homeassistant/components/minecraft_server/.translations/nl.json b/homeassistant/components/minecraft_server/.translations/nl.json index 75e19bc2550..4f42a16362b 100644 --- a/homeassistant/components/minecraft_server/.translations/nl.json +++ b/homeassistant/components/minecraft_server/.translations/nl.json @@ -12,8 +12,7 @@ "user": { "data": { "host": "Host", - "name": "Naam", - "port": "Poort" + "name": "Naam" }, "description": "Stel uw Minecraft server in om monitoring toe te staan.", "title": "Koppel uw Minecraft server" diff --git a/homeassistant/components/minecraft_server/.translations/no.json b/homeassistant/components/minecraft_server/.translations/no.json index c49c76865e4..cd627cbe4ba 100644 --- a/homeassistant/components/minecraft_server/.translations/no.json +++ b/homeassistant/components/minecraft_server/.translations/no.json @@ -12,8 +12,7 @@ "user": { "data": { "host": "Vert", - "name": "Navn", - "port": "" + "name": "Navn" }, "description": "Konfigurer Minecraft Server-forekomsten slik at den kan overv\u00e5kes.", "title": "Link din Minecraft Server" diff --git a/homeassistant/components/minecraft_server/.translations/pl.json b/homeassistant/components/minecraft_server/.translations/pl.json index f9c4a515566..e277579ea23 100644 --- a/homeassistant/components/minecraft_server/.translations/pl.json +++ b/homeassistant/components/minecraft_server/.translations/pl.json @@ -12,8 +12,7 @@ "user": { "data": { "host": "Host", - "name": "Nazwa", - "port": "Port" + "name": "Nazwa" }, "description": "Skonfiguruj instancj\u0119 serwera Minecraft, aby umo\u017cliwi\u0107 monitorowanie.", "title": "Po\u0142\u0105cz sw\u00f3j serwer Minecraft" diff --git a/homeassistant/components/minecraft_server/.translations/ru.json b/homeassistant/components/minecraft_server/.translations/ru.json index 916b342ee4a..a07b84077a9 100644 --- a/homeassistant/components/minecraft_server/.translations/ru.json +++ b/homeassistant/components/minecraft_server/.translations/ru.json @@ -12,8 +12,7 @@ "user": { "data": { "host": "\u0425\u043e\u0441\u0442", - "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", - "port": "\u041f\u043e\u0440\u0442" + "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435" }, "description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0412\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Minecraft.", "title": "Minecraft Server" diff --git a/homeassistant/components/minecraft_server/.translations/sl.json b/homeassistant/components/minecraft_server/.translations/sl.json index cf8a8af54ee..d1ed6a36c35 100644 --- a/homeassistant/components/minecraft_server/.translations/sl.json +++ b/homeassistant/components/minecraft_server/.translations/sl.json @@ -12,8 +12,7 @@ "user": { "data": { "host": "Gostitelj", - "name": "Ime", - "port": "Vrata" + "name": "Ime" }, "description": "Nastavite svoj Minecraft stre\u017enik, da omogo\u010dite spremljanje.", "title": "Pove\u017eite svoj Minecraft stre\u017enik" diff --git a/homeassistant/components/minecraft_server/.translations/sv.json b/homeassistant/components/minecraft_server/.translations/sv.json index acf941878dd..e95938f1590 100644 --- a/homeassistant/components/minecraft_server/.translations/sv.json +++ b/homeassistant/components/minecraft_server/.translations/sv.json @@ -12,8 +12,7 @@ "user": { "data": { "host": "V\u00e4rd", - "name": "Namn", - "port": "Port" + "name": "Namn" }, "description": "St\u00e4ll in din Minecraft Server-instans f\u00f6r att till\u00e5ta \u00f6vervakning.", "title": "L\u00e4nka din Minecraft-server" diff --git a/homeassistant/components/minecraft_server/.translations/tr.json b/homeassistant/components/minecraft_server/.translations/tr.json index 595c1686982..fb76f697cd5 100644 --- a/homeassistant/components/minecraft_server/.translations/tr.json +++ b/homeassistant/components/minecraft_server/.translations/tr.json @@ -12,8 +12,7 @@ "user": { "data": { "host": "Host", - "name": "Ad", - "port": "Port" + "name": "Ad" }, "description": "G\u00f6zetmeye izin vermek i\u00e7in Minecraft server nesnesini ayarla.", "title": "Minecraft Servern\u0131 ba\u011fla" diff --git a/homeassistant/components/minecraft_server/.translations/zh-Hant.json b/homeassistant/components/minecraft_server/.translations/zh-Hant.json index c451ad71065..fbcde2a6be1 100644 --- a/homeassistant/components/minecraft_server/.translations/zh-Hant.json +++ b/homeassistant/components/minecraft_server/.translations/zh-Hant.json @@ -12,8 +12,7 @@ "user": { "data": { "host": "\u4e3b\u6a5f\u7aef", - "name": "\u540d\u7a31", - "port": "\u901a\u8a0a\u57e0" + "name": "\u540d\u7a31" }, "description": "\u8a2d\u5b9a Minecraft \u4f3a\u670d\u5668\u4ee5\u9032\u884c\u76e3\u63a7\u3002", "title": "\u9023\u7d50 Minecraft \u4f3a\u670d\u5668" diff --git a/homeassistant/components/mqtt/.translations/hu.json b/homeassistant/components/mqtt/.translations/hu.json index 26361b0e363..e45c287f44f 100644 --- a/homeassistant/components/mqtt/.translations/hu.json +++ b/homeassistant/components/mqtt/.translations/hu.json @@ -22,10 +22,22 @@ "data": { "discovery": "Felfedez\u00e9s enged\u00e9lyez\u00e9se" }, - "description": "Szeretn\u00e9d, hogy a Home Assistant csatlakozzon a hass.io addon {addon} \u00e1ltal biztos\u00edtott MQTT br\u00f3kerhez?", + "description": "Be szeretn\u00e9d konfigru\u00e1lni, hogy a Home Assistant a(z) {addon} Hass.io add-on \u00e1ltal biztos\u00edtott MQTT br\u00f3kerhez csatlakozzon?", "title": "MQTT Broker a Hass.io b\u0151v\u00edtm\u00e9nyen kereszt\u00fcl" } }, "title": "MQTT" + }, + "device_automation": { + "trigger_subtype": { + "button_1": "Els\u0151 gomb", + "button_2": "M\u00e1sodik gomb", + "button_3": "Harmadik gomb", + "button_4": "Negyedik gomb", + "button_5": "\u00d6t\u00f6dik gomb", + "button_6": "Hatodik gomb", + "turn_off": "Kikapcsol\u00e1s", + "turn_on": "Bekapcsol\u00e1s" + } } } \ No newline at end of file diff --git a/homeassistant/components/notion/.translations/bg.json b/homeassistant/components/notion/.translations/bg.json index 33ce361958a..1c78180e2a8 100644 --- a/homeassistant/components/notion/.translations/bg.json +++ b/homeassistant/components/notion/.translations/bg.json @@ -1,7 +1,6 @@ { "config": { "error": { - "identifier_exists": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e\u0442\u043e \u0438\u043c\u0435 \u0432\u0435\u0447\u0435 \u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0430\u043d\u043e", "invalid_credentials": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e \u0438\u043c\u0435 \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u0430", "no_devices": "\u041d\u0435 \u0441\u0430 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0430" }, diff --git a/homeassistant/components/notion/.translations/ca.json b/homeassistant/components/notion/.translations/ca.json index 09f598ef5d1..b6e73a5e209 100644 --- a/homeassistant/components/notion/.translations/ca.json +++ b/homeassistant/components/notion/.translations/ca.json @@ -4,7 +4,6 @@ "already_configured": "Aquest nom d'usuari ja est\u00e0 en \u00fas." }, "error": { - "identifier_exists": "Nom d'usuari ja registrat", "invalid_credentials": "Nom d'usuari o contrasenya incorrectes", "no_devices": "No s'han trobat dispositius al compte" }, diff --git a/homeassistant/components/notion/.translations/da.json b/homeassistant/components/notion/.translations/da.json index 784d106b94c..6b139fa6e66 100644 --- a/homeassistant/components/notion/.translations/da.json +++ b/homeassistant/components/notion/.translations/da.json @@ -4,7 +4,6 @@ "already_configured": "Dette brugernavn er allerede i brug." }, "error": { - "identifier_exists": "Brugernavn er allerede registreret", "invalid_credentials": "Ugyldigt brugernavn eller adgangskode", "no_devices": "Ingen enheder fundet i konto" }, diff --git a/homeassistant/components/notion/.translations/de.json b/homeassistant/components/notion/.translations/de.json index e11a16458c9..1ccd8c86bdc 100644 --- a/homeassistant/components/notion/.translations/de.json +++ b/homeassistant/components/notion/.translations/de.json @@ -4,7 +4,6 @@ "already_configured": "Dieser Benutzername wird bereits benutzt." }, "error": { - "identifier_exists": "Benutzername bereits registriert", "invalid_credentials": "Ung\u00fcltiger Benutzername oder Passwort", "no_devices": "Keine Ger\u00e4te im Konto gefunden" }, diff --git a/homeassistant/components/notion/.translations/en.json b/homeassistant/components/notion/.translations/en.json index 2476293a216..b729b368c37 100644 --- a/homeassistant/components/notion/.translations/en.json +++ b/homeassistant/components/notion/.translations/en.json @@ -4,7 +4,6 @@ "already_configured": "This username is already in use." }, "error": { - "identifier_exists": "Username already registered", "invalid_credentials": "Invalid username or password", "no_devices": "No devices found in account" }, diff --git a/homeassistant/components/notion/.translations/es-419.json b/homeassistant/components/notion/.translations/es-419.json index 1f4968f24e1..ad2f19b0668 100644 --- a/homeassistant/components/notion/.translations/es-419.json +++ b/homeassistant/components/notion/.translations/es-419.json @@ -1,7 +1,6 @@ { "config": { "error": { - "identifier_exists": "Nombre de usuario ya registrado", "invalid_credentials": "Nombre de usuario o contrase\u00f1a inv\u00e1lidos", "no_devices": "No se han encontrado dispositivos en la cuenta." }, diff --git a/homeassistant/components/notion/.translations/es.json b/homeassistant/components/notion/.translations/es.json index 08d02bd7493..7293e8f229f 100644 --- a/homeassistant/components/notion/.translations/es.json +++ b/homeassistant/components/notion/.translations/es.json @@ -4,7 +4,6 @@ "already_configured": "Esta nombre de usuario ya est\u00e1 en uso." }, "error": { - "identifier_exists": "Nombre de usuario ya registrado", "invalid_credentials": "Usuario o contrase\u00f1a no v\u00e1lido", "no_devices": "No se han encontrado dispositivos en la cuenta" }, diff --git a/homeassistant/components/notion/.translations/fr.json b/homeassistant/components/notion/.translations/fr.json index 4477c692993..ae24ba70419 100644 --- a/homeassistant/components/notion/.translations/fr.json +++ b/homeassistant/components/notion/.translations/fr.json @@ -4,7 +4,6 @@ "already_configured": "Ce nom d'utilisateur est d\u00e9j\u00e0 utilis\u00e9." }, "error": { - "identifier_exists": "Nom d'utilisateur d\u00e9j\u00e0 enregistr\u00e9", "invalid_credentials": "Nom d'utilisateur ou mot de passe invalide", "no_devices": "Aucun appareil trouv\u00e9 sur le compte" }, diff --git a/homeassistant/components/notion/.translations/hr.json b/homeassistant/components/notion/.translations/hr.json index b20317a236a..93ab9a4bf51 100644 --- a/homeassistant/components/notion/.translations/hr.json +++ b/homeassistant/components/notion/.translations/hr.json @@ -1,7 +1,6 @@ { "config": { "error": { - "identifier_exists": "Korisni\u010dko ime je ve\u0107 registrirano", "invalid_credentials": "Neispravno korisni\u010dko ime ili lozinka", "no_devices": "Nisu prona\u0111eni ure\u0111aji na ra\u010dunu" }, diff --git a/homeassistant/components/notion/.translations/hu.json b/homeassistant/components/notion/.translations/hu.json index 79878858ddc..285e6c7b485 100644 --- a/homeassistant/components/notion/.translations/hu.json +++ b/homeassistant/components/notion/.translations/hu.json @@ -1,7 +1,6 @@ { "config": { "error": { - "identifier_exists": "Felhaszn\u00e1l\u00f3n\u00e9v m\u00e1r regisztr\u00e1lva van", "invalid_credentials": "\u00c9rv\u00e9nytelen felhaszn\u00e1l\u00f3n\u00e9v vagy jelsz\u00f3", "no_devices": "Nem tal\u00e1lhat\u00f3 eszk\u00f6z a fi\u00f3kban" }, diff --git a/homeassistant/components/notion/.translations/it.json b/homeassistant/components/notion/.translations/it.json index 18ad0987aa7..e33b50f1938 100644 --- a/homeassistant/components/notion/.translations/it.json +++ b/homeassistant/components/notion/.translations/it.json @@ -4,7 +4,6 @@ "already_configured": "Questo nome utente \u00e8 gi\u00e0 in uso." }, "error": { - "identifier_exists": "Nome utente gi\u00e0 registrato", "invalid_credentials": "Nome utente o password non validi", "no_devices": "Nessun dispositivo trovato nell'account" }, diff --git a/homeassistant/components/notion/.translations/ko.json b/homeassistant/components/notion/.translations/ko.json index 52c7b6339cb..c848684ab59 100644 --- a/homeassistant/components/notion/.translations/ko.json +++ b/homeassistant/components/notion/.translations/ko.json @@ -4,7 +4,6 @@ "already_configured": "\uc774 \uc0ac\uc6a9\uc790 \uc774\ub984\uc740 \uc774\ubbf8 \uc0ac\uc6a9 \uc911\uc785\ub2c8\ub2e4." }, "error": { - "identifier_exists": "\uc0ac\uc6a9\uc790 \uc774\ub984\uc774 \uc774\ubbf8 \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4", "invalid_credentials": "\uc0ac\uc6a9\uc790 \uc774\ub984 \ub610\ub294 \ube44\ubc00\ubc88\ud638\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4", "no_devices": "\uacc4\uc815\uc5d0 \ub4f1\ub85d\ub41c \uae30\uae30\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4" }, diff --git a/homeassistant/components/notion/.translations/lb.json b/homeassistant/components/notion/.translations/lb.json index bc9fa9633b2..b5d2eabd507 100644 --- a/homeassistant/components/notion/.translations/lb.json +++ b/homeassistant/components/notion/.translations/lb.json @@ -4,7 +4,6 @@ "already_configured": "D\u00ebse Benotzernumm g\u00ebtt scho benotzt." }, "error": { - "identifier_exists": "Benotzernumm ass scho registr\u00e9iert", "invalid_credentials": "Ong\u00ebltege Benotzernumm oder Passwuert", "no_devices": "Keng Apparater am Kont fonnt" }, diff --git a/homeassistant/components/notion/.translations/nl.json b/homeassistant/components/notion/.translations/nl.json index c26fb50e075..f45ea87f972 100644 --- a/homeassistant/components/notion/.translations/nl.json +++ b/homeassistant/components/notion/.translations/nl.json @@ -1,7 +1,6 @@ { "config": { "error": { - "identifier_exists": "Gebruikersnaam al geregistreerd", "invalid_credentials": "Ongeldige gebruikersnaam of wachtwoord", "no_devices": "Geen apparaten gevonden in account" }, diff --git a/homeassistant/components/notion/.translations/no.json b/homeassistant/components/notion/.translations/no.json index 16105e680c5..302ef3f2b39 100644 --- a/homeassistant/components/notion/.translations/no.json +++ b/homeassistant/components/notion/.translations/no.json @@ -4,7 +4,6 @@ "already_configured": "Dette brukernavnet er allerede i bruk." }, "error": { - "identifier_exists": "Brukernavn er allerede registrert", "invalid_credentials": "Ugyldig brukernavn eller passord", "no_devices": "Ingen enheter funnet i kontoen" }, diff --git a/homeassistant/components/notion/.translations/pl.json b/homeassistant/components/notion/.translations/pl.json index 07facb21e93..fb9ffaad9c0 100644 --- a/homeassistant/components/notion/.translations/pl.json +++ b/homeassistant/components/notion/.translations/pl.json @@ -4,7 +4,6 @@ "already_configured": "Ta nazwa u\u017cytkownika jest ju\u017c w u\u017cyciu." }, "error": { - "identifier_exists": "Nazwa u\u017cytkownika jest ju\u017c zarejestrowana.", "invalid_credentials": "Nieprawid\u0142owa nazwa u\u017cytkownika lub has\u0142o", "no_devices": "Nie znaleziono urz\u0105dze\u0144 na koncie" }, diff --git a/homeassistant/components/notion/.translations/pt-BR.json b/homeassistant/components/notion/.translations/pt-BR.json index 4e81ac03665..5f790c02a40 100644 --- a/homeassistant/components/notion/.translations/pt-BR.json +++ b/homeassistant/components/notion/.translations/pt-BR.json @@ -1,7 +1,6 @@ { "config": { "error": { - "identifier_exists": "Nome de usu\u00e1rio j\u00e1 registrado", "invalid_credentials": "Usu\u00e1rio ou senha inv\u00e1lidos", "no_devices": "Nenhum dispositivo encontrado na conta" }, diff --git a/homeassistant/components/notion/.translations/ru.json b/homeassistant/components/notion/.translations/ru.json index 6e64ebbe7aa..41627cc6ab0 100644 --- a/homeassistant/components/notion/.translations/ru.json +++ b/homeassistant/components/notion/.translations/ru.json @@ -4,7 +4,6 @@ "already_configured": "\u042d\u0442\u0430 \u0443\u0447\u0451\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f." }, "error": { - "identifier_exists": "\u0423\u0447\u0451\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u0436\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430.", "invalid_credentials": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043b\u043e\u0433\u0438\u043d \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c.", "no_devices": "\u041d\u0435\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u044c\u044e." }, diff --git a/homeassistant/components/notion/.translations/sl.json b/homeassistant/components/notion/.translations/sl.json index c5577f52a24..5abe6164038 100644 --- a/homeassistant/components/notion/.translations/sl.json +++ b/homeassistant/components/notion/.translations/sl.json @@ -4,7 +4,6 @@ "already_configured": "To uporabni\u0161ko ime je \u017ee v uporabi." }, "error": { - "identifier_exists": "Uporabni\u0161ko ime je \u017ee registrirano", "invalid_credentials": "Neveljavno uporabni\u0161ko ime ali geslo", "no_devices": "V ra\u010dunu ni najdene nobene naprave" }, diff --git a/homeassistant/components/notion/.translations/sv.json b/homeassistant/components/notion/.translations/sv.json index 958cc48af28..89648180246 100644 --- a/homeassistant/components/notion/.translations/sv.json +++ b/homeassistant/components/notion/.translations/sv.json @@ -1,7 +1,6 @@ { "config": { "error": { - "identifier_exists": "Anv\u00e4ndarnamn \u00e4r redan anv\u00e4nt", "invalid_credentials": "Felaktigt anv\u00e4ndarnamn eller l\u00f6senord", "no_devices": "Inga enheter hittades p\u00e5 kontot" }, diff --git a/homeassistant/components/notion/.translations/zh-Hans.json b/homeassistant/components/notion/.translations/zh-Hans.json index 81d93727956..0e61657f615 100644 --- a/homeassistant/components/notion/.translations/zh-Hans.json +++ b/homeassistant/components/notion/.translations/zh-Hans.json @@ -1,7 +1,6 @@ { "config": { "error": { - "identifier_exists": "\u7528\u6237\u540d\u5df2\u6ce8\u518c", "invalid_credentials": "\u65e0\u6548\u7684\u7528\u6237\u540d\u6216\u5bc6\u7801", "no_devices": "\u5e10\u6237\u4e2d\u627e\u4e0d\u5230\u8bbe\u5907" }, diff --git a/homeassistant/components/notion/.translations/zh-Hant.json b/homeassistant/components/notion/.translations/zh-Hant.json index c426dfa3265..2767c504b78 100644 --- a/homeassistant/components/notion/.translations/zh-Hant.json +++ b/homeassistant/components/notion/.translations/zh-Hant.json @@ -4,7 +4,6 @@ "already_configured": "\u6b64\u4f7f\u7528\u8005\u540d\u7a31\u5df2\u88ab\u4f7f\u7528\u3002" }, "error": { - "identifier_exists": "\u4f7f\u7528\u8005\u540d\u7a31\u5df2\u8a3b\u518a", "invalid_credentials": "\u4f7f\u7528\u8005\u540d\u7a31\u6216\u5bc6\u78bc\u7121\u6548", "no_devices": "\u5e33\u865f\u4e2d\u627e\u4e0d\u5230\u4efb\u4f55\u8a2d\u5099" }, diff --git a/homeassistant/components/nut/.translations/ca.json b/homeassistant/components/nut/.translations/ca.json index 33d2268be5b..01a21920cfa 100644 --- a/homeassistant/components/nut/.translations/ca.json +++ b/homeassistant/components/nut/.translations/ca.json @@ -4,6 +4,7 @@ "already_configured": "El dispositiu ja est\u00e0 configurat" }, "error": { + "cannot_connect": "No s'ha pogut connectar, torna-ho a provar", "unknown": "Error inesperat" }, "step": { @@ -16,16 +17,19 @@ "port": "Port", "resources": "Recursos", "username": "Nom d'usuari" - } + }, + "title": "No s'ha pogut connectar amb el servidor NUT" } - } + }, + "title": "Eines de xarxa UPS (NUT)" }, "options": { "step": { "init": { "data": { "resources": "Recursos" - } + }, + "description": "Selecciona els recursos del sensor" } } } diff --git a/homeassistant/components/nut/.translations/ko.json b/homeassistant/components/nut/.translations/ko.json new file mode 100644 index 00000000000..f9fa46b6667 --- /dev/null +++ b/homeassistant/components/nut/.translations/ko.json @@ -0,0 +1,37 @@ +{ + "config": { + "abort": { + "already_configured": "\uae30\uae30\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4" + }, + "error": { + "cannot_connect": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \uc2dc\ub3c4\ud574\uc8fc\uc138\uc694.", + "unknown": "\uc608\uc0c1\uce58 \ubabb\ud55c \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4" + }, + "step": { + "user": { + "data": { + "alias": "\ubcc4\uba85", + "host": "\ud638\uc2a4\ud2b8", + "name": "\uc774\ub984", + "password": "\ube44\ubc00\ubc88\ud638", + "port": "\ud3ec\ud2b8", + "resources": "\ub9ac\uc18c\uc2a4", + "username": "\uc0ac\uc6a9\uc790 \uc774\ub984" + }, + "description": "NUT \uc11c\ubc84\uc5d0 UPS \uac00 \uc5ec\ub7ec \uac1c \uc5f0\uacb0\ub418\uc5b4 \uc788\ub294 \uacbd\uc6b0 '\ubcc4\uba85' \uc785\ub825\ub780\uc5d0 \uc870\ud68c\ud560 UPS \uc774\ub984\uc744 \uc785\ub825\ud574\uc8fc\uc138\uc694.", + "title": "NUT \uc11c\ubc84\uc5d0 \uc5f0\uacb0\ud558\uae30" + } + }, + "title": "\ub124\ud2b8\uc6cc\ud06c UPS \ub3c4\uad6c (NUT)" + }, + "options": { + "step": { + "init": { + "data": { + "resources": "\ub9ac\uc18c\uc2a4" + }, + "description": "\uc13c\uc11c \ub9ac\uc18c\uc2a4 \uc120\ud0dd" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/nut/.translations/lb.json b/homeassistant/components/nut/.translations/lb.json index 416d5c49aee..7e9ec8ddd97 100644 --- a/homeassistant/components/nut/.translations/lb.json +++ b/homeassistant/components/nut/.translations/lb.json @@ -18,6 +18,7 @@ "resources": "Ressourcen", "username": "Benotzernumm" }, + "description": "Falls m\u00e9i w\u00e9i een UPS mat deem NUT Server verbonnen ass, g\u00e8eff den UPS Numm am 'Alias' Feld un fir ze sichen.", "title": "Mam NUT Server verbannen" } }, diff --git a/homeassistant/components/nut/.translations/pl.json b/homeassistant/components/nut/.translations/pl.json new file mode 100644 index 00000000000..ee9a67b243b --- /dev/null +++ b/homeassistant/components/nut/.translations/pl.json @@ -0,0 +1,37 @@ +{ + "config": { + "abort": { + "already_configured": "Urz\u0105dzenie jest ju\u017c skonfigurowane." + }, + "error": { + "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia, spr\u00f3buj ponownie.", + "unknown": "Niespodziewany b\u0142\u0105d." + }, + "step": { + "user": { + "data": { + "alias": "Alias", + "host": "Host", + "name": "Nazwa", + "password": "Has\u0142o", + "port": "Port", + "resources": "Zasoby", + "username": "Nazwa u\u017cytkownika" + }, + "description": "Je\u015bli do serwera NUT pod\u0142\u0105czonych jest wiele zasilaczy UPS, wprowad\u017a w polu Alias nazw\u0119 zasilacza UPS, kt\u00f3rego dotyczy zapytanie.", + "title": "Po\u0142\u0105cz z serwerem NUT" + } + }, + "title": "Sieciowe narz\u0119dzia UPS (NUT)" + }, + "options": { + "step": { + "init": { + "data": { + "resources": "Zasoby" + }, + "description": "Wybierz zasoby sensor\u00f3w" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/nut/.translations/ru.json b/homeassistant/components/nut/.translations/ru.json new file mode 100644 index 00000000000..7bc48ec2e3f --- /dev/null +++ b/homeassistant/components/nut/.translations/ru.json @@ -0,0 +1,37 @@ +{ + "config": { + "abort": { + "already_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430." + }, + "error": { + "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437.", + "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." + }, + "step": { + "user": { + "data": { + "alias": "\u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c", + "host": "\u0425\u043e\u0441\u0442", + "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", + "password": "\u041f\u0430\u0440\u043e\u043b\u044c", + "port": "\u041f\u043e\u0440\u0442", + "resources": "\u0420\u0435\u0441\u0443\u0440\u0441\u044b", + "username": "\u041b\u043e\u0433\u0438\u043d" + }, + "description": "\u0415\u0441\u043b\u0438 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 NUT \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0418\u0411\u041f, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u043c\u044f \u0418\u0411\u041f \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432 \u043f\u043e\u043b\u0435 '\u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c'.", + "title": "\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 NUT" + } + }, + "title": "Network UPS Tools (NUT)" + }, + "options": { + "step": { + "init": { + "data": { + "resources": "\u0420\u0435\u0441\u0443\u0440\u0441\u044b" + }, + "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/opentherm_gw/.translations/bg.json b/homeassistant/components/opentherm_gw/.translations/bg.json index cd109579f64..fe9a611f115 100644 --- a/homeassistant/components/opentherm_gw/.translations/bg.json +++ b/homeassistant/components/opentherm_gw/.translations/bg.json @@ -10,10 +10,8 @@ "init": { "data": { "device": "\u041f\u044a\u0442 \u0438\u043b\u0438 URL \u0430\u0434\u0440\u0435\u0441", - "floor_temperature": "\u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u043d\u0430 \u043f\u043e\u0434\u0430", "id": "ID", - "name": "\u0418\u043c\u0435", - "precision": "\u041f\u0440\u0435\u0446\u0438\u0437\u043d\u043e\u0441\u0442 \u043d\u0430 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430\u0442\u0430 \u043d\u0430 \u043a\u043b\u0438\u043c\u0430\u0442\u0430" + "name": "\u0418\u043c\u0435" }, "title": "OpenTherm Gateway" } diff --git a/homeassistant/components/opentherm_gw/.translations/ca.json b/homeassistant/components/opentherm_gw/.translations/ca.json index 07567149063..4d39dec3662 100644 --- a/homeassistant/components/opentherm_gw/.translations/ca.json +++ b/homeassistant/components/opentherm_gw/.translations/ca.json @@ -10,10 +10,8 @@ "init": { "data": { "device": "Ruta o URL", - "floor_temperature": "Temperatura del pis", "id": "ID", - "name": "Nom", - "precision": "Precisi\u00f3 de la temperatura" + "name": "Nom" }, "title": "Passarel\u00b7la d'OpenTherm" } diff --git a/homeassistant/components/opentherm_gw/.translations/da.json b/homeassistant/components/opentherm_gw/.translations/da.json index 743adb715f6..bbdec393ab0 100644 --- a/homeassistant/components/opentherm_gw/.translations/da.json +++ b/homeassistant/components/opentherm_gw/.translations/da.json @@ -10,10 +10,8 @@ "init": { "data": { "device": "Sti eller webadresse", - "floor_temperature": "Gulvklima-temperatur", "id": "Id", - "name": "Navn", - "precision": "Klimatemperatur-pr\u00e6cision" + "name": "Navn" }, "title": "OpenTherm Gateway" } diff --git a/homeassistant/components/opentherm_gw/.translations/de.json b/homeassistant/components/opentherm_gw/.translations/de.json index c29be320d20..92217c51c04 100644 --- a/homeassistant/components/opentherm_gw/.translations/de.json +++ b/homeassistant/components/opentherm_gw/.translations/de.json @@ -10,10 +10,8 @@ "init": { "data": { "device": "Pfad oder URL", - "floor_temperature": "Boden-Temperatur", "id": "ID", - "name": "Name", - "precision": "Genauigkeit der Temperatur" + "name": "Name" }, "title": "OpenTherm Gateway" } diff --git a/homeassistant/components/opentherm_gw/.translations/en.json b/homeassistant/components/opentherm_gw/.translations/en.json index a7e143505a8..5ba5d232bfc 100644 --- a/homeassistant/components/opentherm_gw/.translations/en.json +++ b/homeassistant/components/opentherm_gw/.translations/en.json @@ -10,10 +10,8 @@ "init": { "data": { "device": "Path or URL", - "floor_temperature": "Floor climate temperature", "id": "ID", - "name": "Name", - "precision": "Climate temperature precision" + "name": "Name" }, "title": "OpenTherm Gateway" } diff --git a/homeassistant/components/opentherm_gw/.translations/es.json b/homeassistant/components/opentherm_gw/.translations/es.json index bb8a8b20f36..9acfbb4bf67 100644 --- a/homeassistant/components/opentherm_gw/.translations/es.json +++ b/homeassistant/components/opentherm_gw/.translations/es.json @@ -10,10 +10,8 @@ "init": { "data": { "device": "Ruta o URL", - "floor_temperature": "Temperatura del suelo", "id": "ID", - "name": "Nombre", - "precision": "Precisi\u00f3n de la temperatura clim\u00e1tica" + "name": "Nombre" }, "title": "Gateway OpenTherm" } diff --git a/homeassistant/components/opentherm_gw/.translations/fr.json b/homeassistant/components/opentherm_gw/.translations/fr.json index edde63d62b4..7508612580d 100644 --- a/homeassistant/components/opentherm_gw/.translations/fr.json +++ b/homeassistant/components/opentherm_gw/.translations/fr.json @@ -10,10 +10,8 @@ "init": { "data": { "device": "Chemin ou URL", - "floor_temperature": "Temp\u00e9rature du sol", "id": "ID", - "name": "Nom", - "precision": "Pr\u00e9cision de la temp\u00e9rature climatique" + "name": "Nom" }, "title": "Passerelle OpenTherm" } diff --git a/homeassistant/components/opentherm_gw/.translations/hu.json b/homeassistant/components/opentherm_gw/.translations/hu.json index 8a0780581fd..1a00570d324 100644 --- a/homeassistant/components/opentherm_gw/.translations/hu.json +++ b/homeassistant/components/opentherm_gw/.translations/hu.json @@ -10,10 +10,8 @@ "init": { "data": { "device": "El\u00e9r\u00e9si \u00fat vagy URL", - "floor_temperature": "Padl\u00f3 kl\u00edma h\u0151m\u00e9rs\u00e9klete", "id": "ID", - "name": "N\u00e9v", - "precision": "Kl\u00edma h\u0151m\u00e9rs\u00e9klet pontoss\u00e1ga" + "name": "N\u00e9v" }, "title": "OpenTherm \u00e1tj\u00e1r\u00f3" } diff --git a/homeassistant/components/opentherm_gw/.translations/it.json b/homeassistant/components/opentherm_gw/.translations/it.json index 73c3a8db970..c1392fdd077 100644 --- a/homeassistant/components/opentherm_gw/.translations/it.json +++ b/homeassistant/components/opentherm_gw/.translations/it.json @@ -10,10 +10,8 @@ "init": { "data": { "device": "Percorso o URL", - "floor_temperature": "Temperatura climatica del pavimento", "id": "ID", - "name": "Nome", - "precision": "Precisione della temperatura climatica" + "name": "Nome" }, "title": "OpenTherm Gateway" } diff --git a/homeassistant/components/opentherm_gw/.translations/ko.json b/homeassistant/components/opentherm_gw/.translations/ko.json index f370427625d..a51efdb197b 100644 --- a/homeassistant/components/opentherm_gw/.translations/ko.json +++ b/homeassistant/components/opentherm_gw/.translations/ko.json @@ -10,10 +10,8 @@ "init": { "data": { "device": "\uacbd\ub85c \ub610\ub294 URL", - "floor_temperature": "\uc2e4\ub0b4\uc628\ub3c4 \uc18c\uc218\uc810 \ubc84\ub9bc", "id": "ID", - "name": "\uc774\ub984", - "precision": "\uc2e4\ub0b4\uc628\ub3c4 \uc815\ubc00\ub3c4" + "name": "\uc774\ub984" }, "title": "OpenTherm Gateway" } diff --git a/homeassistant/components/opentherm_gw/.translations/lb.json b/homeassistant/components/opentherm_gw/.translations/lb.json index 505815dcb4d..3a057ec4e3b 100644 --- a/homeassistant/components/opentherm_gw/.translations/lb.json +++ b/homeassistant/components/opentherm_gw/.translations/lb.json @@ -10,10 +10,8 @@ "init": { "data": { "device": "Pfad oder URL", - "floor_temperature": "Buedem Klima Temperatur", "id": "ID", - "name": "Numm", - "precision": "Klima Temperatur Prezisioun" + "name": "Numm" }, "title": "OpenTherm Gateway" } diff --git a/homeassistant/components/opentherm_gw/.translations/nl.json b/homeassistant/components/opentherm_gw/.translations/nl.json index dbed3326b4a..331307d3bca 100644 --- a/homeassistant/components/opentherm_gw/.translations/nl.json +++ b/homeassistant/components/opentherm_gw/.translations/nl.json @@ -10,10 +10,8 @@ "init": { "data": { "device": "Pad of URL", - "floor_temperature": "Vloertemperatuur", "id": "ID", - "name": "Naam", - "precision": "Klimaattemperatuur precisie" + "name": "Naam" }, "title": "OpenTherm Gateway" } diff --git a/homeassistant/components/opentherm_gw/.translations/no.json b/homeassistant/components/opentherm_gw/.translations/no.json index d05a8efe168..6b30b85931d 100644 --- a/homeassistant/components/opentherm_gw/.translations/no.json +++ b/homeassistant/components/opentherm_gw/.translations/no.json @@ -10,10 +10,8 @@ "init": { "data": { "device": "Bane eller URL-adresse", - "floor_temperature": "Gulv klimatemperatur", "id": "", - "name": "Navn", - "precision": "Klima temperaturpresisjon" + "name": "Navn" }, "title": "OpenTherm Gateway" } diff --git a/homeassistant/components/opentherm_gw/.translations/pl.json b/homeassistant/components/opentherm_gw/.translations/pl.json index 88791781e3f..9d945eac27e 100644 --- a/homeassistant/components/opentherm_gw/.translations/pl.json +++ b/homeassistant/components/opentherm_gw/.translations/pl.json @@ -10,10 +10,8 @@ "init": { "data": { "device": "\u015acie\u017cka lub adres URL", - "floor_temperature": "Zaokr\u0105glanie warto\u015bci w d\u00f3\u0142", "id": "Identyfikator", - "name": "Nazwa", - "precision": "Precyzja temperatury" + "name": "Nazwa" }, "title": "Bramka OpenTherm" } diff --git a/homeassistant/components/opentherm_gw/.translations/ru.json b/homeassistant/components/opentherm_gw/.translations/ru.json index 0719857a7d3..6ad69e23c23 100644 --- a/homeassistant/components/opentherm_gw/.translations/ru.json +++ b/homeassistant/components/opentherm_gw/.translations/ru.json @@ -10,10 +10,8 @@ "init": { "data": { "device": "\u041f\u0443\u0442\u044c \u0438\u043b\u0438 URL-\u0430\u0434\u0440\u0435\u0441", - "floor_temperature": "\u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u043f\u043e\u043b\u0430", "id": "ID", - "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", - "precision": "\u0422\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b" + "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435" }, "title": "OpenTherm" } diff --git a/homeassistant/components/opentherm_gw/.translations/sl.json b/homeassistant/components/opentherm_gw/.translations/sl.json index bba6421ed3d..8eabe6839bb 100644 --- a/homeassistant/components/opentherm_gw/.translations/sl.json +++ b/homeassistant/components/opentherm_gw/.translations/sl.json @@ -10,10 +10,8 @@ "init": { "data": { "device": "Pot ali URL", - "floor_temperature": "Temperatura nadstropja", "id": "ID", - "name": "Ime", - "precision": "Natan\u010dnost temperature" + "name": "Ime" }, "title": "OpenTherm Prehod" } diff --git a/homeassistant/components/opentherm_gw/.translations/sv.json b/homeassistant/components/opentherm_gw/.translations/sv.json index 89ce4d75674..61562b9562f 100644 --- a/homeassistant/components/opentherm_gw/.translations/sv.json +++ b/homeassistant/components/opentherm_gw/.translations/sv.json @@ -10,10 +10,8 @@ "init": { "data": { "device": "S\u00f6kv\u00e4g eller URL", - "floor_temperature": "Golvtemperatur", "id": "ID", - "name": "Namn", - "precision": "Klimatemperaturprecision" + "name": "Namn" }, "title": "OpenTherm Gateway" } diff --git a/homeassistant/components/opentherm_gw/.translations/zh-Hant.json b/homeassistant/components/opentherm_gw/.translations/zh-Hant.json index 0d2842ce767..6c6db948156 100644 --- a/homeassistant/components/opentherm_gw/.translations/zh-Hant.json +++ b/homeassistant/components/opentherm_gw/.translations/zh-Hant.json @@ -10,10 +10,8 @@ "init": { "data": { "device": "\u8def\u5f91\u6216 URL", - "floor_temperature": "\u6a13\u5c64\u6eab\u5ea6", "id": "ID", - "name": "\u540d\u7a31", - "precision": "\u6eab\u63a7\u7cbe\u6e96\u5ea6" + "name": "\u540d\u7a31" }, "title": "OpenTherm \u9598\u9053\u5668" } diff --git a/homeassistant/components/plex/.translations/bg.json b/homeassistant/components/plex/.translations/bg.json index adfdd98ebaf..53d15e1205e 100644 --- a/homeassistant/components/plex/.translations/bg.json +++ b/homeassistant/components/plex/.translations/bg.json @@ -4,7 +4,6 @@ "all_configured": "\u0412\u0441\u0438\u0447\u043a\u0438 \u0441\u0432\u044a\u0440\u0437\u0430\u043d\u0438 \u0441\u044a\u0440\u0432\u044a\u0440\u0438 \u0432\u0435\u0447\u0435 \u0441\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0438", "already_configured": "\u0422\u043e\u0437\u0438 Plex \u0441\u044a\u0440\u0432\u044a\u0440 \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d", "already_in_progress": "Plex \u0441\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430", - "discovery_no_file": "\u041d\u0435 \u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d \u0441\u0442\u0430\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u0435\u043d \u0444\u0430\u0439\u043b", "invalid_import": "\u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0430\u043d\u0430\u0442\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0435 \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u0430", "non-interactive": "\u041d\u0435\u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u0435\u043d \u0438\u043c\u043f\u043e\u0440\u0442", "token_request_timeout": "\u0418\u0437\u0442\u0435\u0447\u0435 \u0432\u0440\u0435\u043c\u0435\u0442\u043e \u0437\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u043a\u043e\u0434 \u0437\u0430 \u0434\u043e\u0441\u0442\u044a\u043f", @@ -13,20 +12,9 @@ "error": { "faulty_credentials": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u0430 \u043e\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f", "no_servers": "\u041d\u044f\u043c\u0430 \u0441\u044a\u0440\u0432\u044a\u0440\u0438, \u0441\u0432\u044a\u0440\u0437\u0430\u043d\u0438 \u0441 \u0442\u043e\u0437\u0438 \u0430\u043a\u0430\u0443\u043d\u0442", - "no_token": "\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u043e\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u0435\u043d \u043a\u043e\u0434 \u0438\u043b\u0438 \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0440\u044a\u0447\u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430", "not_found": "Plex \u0441\u044a\u0440\u0432\u044a\u0440\u044a\u0442 \u043d\u0435 \u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d" }, "step": { - "manual_setup": { - "data": { - "host": "\u0410\u0434\u0440\u0435\u0441", - "port": "\u041f\u043e\u0440\u0442", - "ssl": "\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 SSL", - "token": "\u041a\u043e\u0434 (\u0430\u043a\u043e \u0441\u0435 \u0438\u0437\u0438\u0441\u043a\u0432\u0430)", - "verify_ssl": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 SSL \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442" - }, - "title": "Plex \u0441\u044a\u0440\u0432\u044a\u0440" - }, "select_server": { "data": { "server": "\u0421\u044a\u0440\u0432\u044a\u0440" @@ -37,14 +25,6 @@ "start_website_auth": { "description": "\u041f\u0440\u043e\u0434\u044a\u043b\u0436\u0435\u0442\u0435 \u0441 \u043e\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f\u0442\u0430 \u043d\u0430 plex.tv.", "title": "\u0421\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 Plex \u0441\u044a\u0440\u0432\u044a\u0440" - }, - "user": { - "data": { - "manual_setup": "\u0420\u044a\u0447\u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430", - "token": "Plex \u043a\u043e\u0434" - }, - "description": "\u041f\u0440\u043e\u0434\u044a\u043b\u0436\u0435\u0442\u0435 \u0441 \u043e\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f\u0442\u0430 \u043d\u0430 plex.tv \u0438\u043b\u0438 \u0440\u044a\u0447\u043d\u043e \u0434\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0442\u0435 \u0441\u044a\u0440\u0432\u044a\u0440.", - "title": "\u0421\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 Plex \u0441\u044a\u0440\u0432\u044a\u0440" } }, "title": "Plex" @@ -53,7 +33,6 @@ "step": { "plex_mp_settings": { "data": { - "show_all_controls": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438", "use_episode_art": "\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u043f\u043b\u0430\u043a\u0430\u0442 \u0437\u0430 \u0435\u043f\u0438\u0437\u043e\u0434\u0430" }, "description": "\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Plex Media Players" diff --git a/homeassistant/components/plex/.translations/ca.json b/homeassistant/components/plex/.translations/ca.json index d562d62b602..46b7759a04d 100644 --- a/homeassistant/components/plex/.translations/ca.json +++ b/homeassistant/components/plex/.translations/ca.json @@ -4,7 +4,6 @@ "all_configured": "Tots els servidors enlla\u00e7ats ja estan configurats", "already_configured": "Aquest servidor Plex ja est\u00e0 configurat", "already_in_progress": "S\u2019est\u00e0 configurant Plex", - "discovery_no_file": "No s'ha trobat cap fitxer de configuraci\u00f3 heretat", "invalid_import": "La configuraci\u00f3 importada \u00e9s inv\u00e0lida", "non-interactive": "Importaci\u00f3 no interactiva", "token_request_timeout": "S'ha acabat el temps d'espera durant l'obtenci\u00f3 del testimoni.", @@ -13,20 +12,9 @@ "error": { "faulty_credentials": "Ha fallat l'autoritzaci\u00f3", "no_servers": "No hi ha servidors enlla\u00e7ats amb el compte", - "no_token": "Proporciona un testimoni d'autenticaci\u00f3 o selecciona configuraci\u00f3 manual", "not_found": "No s'ha trobat el servidor Plex" }, "step": { - "manual_setup": { - "data": { - "host": "Amfitri\u00f3", - "port": "Port", - "ssl": "Utilitza SSL", - "token": "Testimoni d'autenticaci\u00f3 (si \u00e9s necessari)", - "verify_ssl": "Verifica el certificat SSL" - }, - "title": "Servidor Plex" - }, "select_server": { "data": { "server": "Servidor" @@ -37,14 +25,6 @@ "start_website_auth": { "description": "Continua l'autoritzaci\u00f3 a plex.tv.", "title": "Connexi\u00f3 amb el servidor Plex" - }, - "user": { - "data": { - "manual_setup": "Configuraci\u00f3 manual", - "token": "Testimoni d'autenticaci\u00f3 Plex" - }, - "description": "Introdueix un testimoni d'autenticaci\u00f3 Plex per configurar-ho autom\u00e0ticament.", - "title": "Connexi\u00f3 amb el servidor Plex" } }, "title": "Plex" @@ -55,7 +35,6 @@ "data": { "ignore_new_shared_users": "Ignora els nous usuaris gestionats/compartits", "monitored_users": "Usuaris monitoritzats", - "show_all_controls": "Mostra tots els controls", "use_episode_art": "Utilitza imatges de l'episodi" }, "description": "Opcions dels reproductors multim\u00e8dia Plex" diff --git a/homeassistant/components/plex/.translations/cs.json b/homeassistant/components/plex/.translations/cs.json index e033cd5c514..dc84548da7f 100644 --- a/homeassistant/components/plex/.translations/cs.json +++ b/homeassistant/components/plex/.translations/cs.json @@ -1,8 +1,5 @@ { "config": { - "abort": { - "discovery_no_file": "Nebyl nalezen \u017e\u00e1dn\u00fd star\u0161\u00ed konfigura\u010dn\u00ed soubor" - }, "step": { "start_website_auth": { "description": "Pokra\u010dujte v autorizaci na plex.tv.", diff --git a/homeassistant/components/plex/.translations/da.json b/homeassistant/components/plex/.translations/da.json index 9b80373727d..7bfdda60b37 100644 --- a/homeassistant/components/plex/.translations/da.json +++ b/homeassistant/components/plex/.translations/da.json @@ -4,7 +4,6 @@ "all_configured": "Alle linkede servere er allerede konfigureret", "already_configured": "Denne Plex-server er allerede konfigureret", "already_in_progress": "Plex konfigureres", - "discovery_no_file": "Der blev ikke fundet nogen \u00e6ldre konfigurationsfil", "invalid_import": "Importeret konfiguration er ugyldig", "non-interactive": "Ikke-interaktiv import", "token_request_timeout": "Timeout ved hentning af token", @@ -13,20 +12,9 @@ "error": { "faulty_credentials": "Godkendelse mislykkedes", "no_servers": "Ingen servere knyttet til konto", - "no_token": "Angiv et token eller v\u00e6lg manuel ops\u00e6tning", "not_found": "Plex-server ikke fundet" }, "step": { - "manual_setup": { - "data": { - "host": "V\u00e6rt", - "port": "Port", - "ssl": "Brug SSL", - "token": "Token (hvis n\u00f8dvendigt)", - "verify_ssl": "Bekr\u00e6ft SSL-certifikat" - }, - "title": "Plex-server" - }, "select_server": { "data": { "server": "Server" @@ -37,14 +25,6 @@ "start_website_auth": { "description": "Forts\u00e6t for at godkende p\u00e5 plex.tv.", "title": "Forbind Plex-server" - }, - "user": { - "data": { - "manual_setup": "Manuel ops\u00e6tning", - "token": "Plex-token" - }, - "description": "Indtast et Plex-token til automatisk ops\u00e6tning eller konfigurerer en server manuelt.", - "title": "Tilslut Plex-server" } }, "title": "Plex" @@ -55,7 +35,6 @@ "data": { "ignore_new_shared_users": "Ignorer nye administrerede/delte brugere", "monitored_users": "Monitorerede brugere", - "show_all_controls": "Vis alle kontrolelementer", "use_episode_art": "Brug episodekunst" }, "description": "Indstillinger for Plex-medieafspillere" diff --git a/homeassistant/components/plex/.translations/de.json b/homeassistant/components/plex/.translations/de.json index ea8f4b60de4..c86ffb97d3a 100644 --- a/homeassistant/components/plex/.translations/de.json +++ b/homeassistant/components/plex/.translations/de.json @@ -4,7 +4,6 @@ "all_configured": "Alle verkn\u00fcpften Server sind bereits konfiguriert", "already_configured": "Dieser Plex-Server ist bereits konfiguriert", "already_in_progress": "Plex wird konfiguriert", - "discovery_no_file": "Es wurde keine alte Konfigurationsdatei gefunden", "invalid_import": "Die importierte Konfiguration ist ung\u00fcltig", "non-interactive": "Nicht interaktiver Import", "token_request_timeout": "Zeit\u00fcberschreitung beim Erhalt des Tokens", @@ -13,20 +12,9 @@ "error": { "faulty_credentials": "Autorisation fehlgeschlagen", "no_servers": "Keine Server sind mit dem Konto verbunden", - "no_token": "Bereitstellen eines Tokens oder Ausw\u00e4hlen der manuellen Einrichtung", "not_found": "Plex-Server nicht gefunden" }, "step": { - "manual_setup": { - "data": { - "host": "Host", - "port": "Port", - "ssl": "SSL verwenden", - "token": "Token (falls erforderlich)", - "verify_ssl": "SSL-Zertifikat \u00fcberpr\u00fcfen" - }, - "title": "Plex Server" - }, "select_server": { "data": { "server": "Server" @@ -37,14 +25,6 @@ "start_website_auth": { "description": "Weiter zur Autorisierung unter plex.tv.", "title": "Plex Server verbinden" - }, - "user": { - "data": { - "manual_setup": "Manuelle Einrichtung", - "token": "Plex Token" - }, - "description": "Fahre mit der Autorisierung unter plex.tv fort oder konfiguriere einen Server manuell.", - "title": "Plex Server verbinden" } }, "title": "Plex" @@ -55,7 +35,6 @@ "data": { "ignore_new_shared_users": "Ignorieren neuer verwalteter/freigegebener Benutzer", "monitored_users": "\u00dcberwachte Benutzer", - "show_all_controls": "Alle Steuerelemente anzeigen", "use_episode_art": "Episode-Bilder verwenden" }, "description": "Optionen f\u00fcr Plex-Media-Player" diff --git a/homeassistant/components/plex/.translations/en.json b/homeassistant/components/plex/.translations/en.json index 4567171af77..b9ca9b355ee 100644 --- a/homeassistant/components/plex/.translations/en.json +++ b/homeassistant/components/plex/.translations/en.json @@ -4,7 +4,6 @@ "all_configured": "All linked servers already configured", "already_configured": "This Plex server is already configured", "already_in_progress": "Plex is being configured", - "discovery_no_file": "No legacy configuration file found", "invalid_import": "Imported configuration is invalid", "non-interactive": "Non-interactive import", "token_request_timeout": "Timed out obtaining token", @@ -13,20 +12,9 @@ "error": { "faulty_credentials": "Authorization failed", "no_servers": "No servers linked to account", - "no_token": "Provide a token or select manual setup", "not_found": "Plex server not found" }, "step": { - "manual_setup": { - "data": { - "host": "Host", - "port": "Port", - "ssl": "Use SSL", - "token": "Token (if required)", - "verify_ssl": "Verify SSL certificate" - }, - "title": "Plex server" - }, "select_server": { "data": { "server": "Server" @@ -37,14 +25,6 @@ "start_website_auth": { "description": "Continue to authorize at plex.tv.", "title": "Connect Plex server" - }, - "user": { - "data": { - "manual_setup": "Manual setup", - "token": "Plex token" - }, - "description": "Continue to authorize at plex.tv or manually configure a server.", - "title": "Connect Plex server" } }, "title": "Plex" @@ -55,7 +35,6 @@ "data": { "ignore_new_shared_users": "Ignore new managed/shared users", "monitored_users": "Monitored users", - "show_all_controls": "Show all controls", "use_episode_art": "Use episode art" }, "description": "Options for Plex Media Players" diff --git a/homeassistant/components/plex/.translations/es-419.json b/homeassistant/components/plex/.translations/es-419.json index 2fc98a70ead..0546fcd7adf 100644 --- a/homeassistant/components/plex/.translations/es-419.json +++ b/homeassistant/components/plex/.translations/es-419.json @@ -11,33 +11,15 @@ "error": { "faulty_credentials": "Autorizaci\u00f3n fallida", "no_servers": "No hay servidores vinculados a la cuenta", - "no_token": "Proporcione un token o seleccione la configuraci\u00f3n manual", "not_found": "Servidor Plex no encontrado" }, "step": { - "manual_setup": { - "data": { - "host": "Host", - "port": "Puerto", - "ssl": "Usar SSL", - "token": "Token (si es necesario)", - "verify_ssl": "Verificar el certificado SSL" - }, - "title": "Servidor Plex" - }, "select_server": { "data": { "server": "Servidor" }, "description": "M\u00faltiples servidores disponibles, seleccione uno:", "title": "Seleccionar servidor Plex" - }, - "user": { - "data": { - "manual_setup": "Configuraci\u00f3n manual", - "token": "Token Plex" - }, - "title": "Conectar servidor Plex" } }, "title": "Plex" @@ -45,9 +27,6 @@ "options": { "step": { "plex_mp_settings": { - "data": { - "show_all_controls": "Mostrar todos los controles" - }, "description": "Opciones para reproductores multimedia Plex" } } diff --git a/homeassistant/components/plex/.translations/es.json b/homeassistant/components/plex/.translations/es.json index 24127a7332c..3de562db21d 100644 --- a/homeassistant/components/plex/.translations/es.json +++ b/homeassistant/components/plex/.translations/es.json @@ -4,7 +4,6 @@ "all_configured": "Todos los servidores vinculados ya configurados", "already_configured": "Este servidor Plex ya est\u00e1 configurado", "already_in_progress": "Plex se est\u00e1 configurando", - "discovery_no_file": "No se ha encontrado ning\u00fan archivo de configuraci\u00f3n antiguo", "invalid_import": "La configuraci\u00f3n importada no es v\u00e1lida", "non-interactive": "Importaci\u00f3n no interactiva", "token_request_timeout": "Tiempo de espera agotado para la obtenci\u00f3n del token", @@ -13,20 +12,9 @@ "error": { "faulty_credentials": "Error en la autorizaci\u00f3n", "no_servers": "No hay servidores vinculados a la cuenta", - "no_token": "Proporcione un token o seleccione la configuraci\u00f3n manual", "not_found": "No se ha encontrado el servidor Plex" }, "step": { - "manual_setup": { - "data": { - "host": "Host", - "port": "Puerto", - "ssl": "Usar SSL", - "token": "Token (es necesario)", - "verify_ssl": "Verificar certificado SSL" - }, - "title": "Servidor Plex" - }, "select_server": { "data": { "server": "Servidor" @@ -37,14 +25,6 @@ "start_website_auth": { "description": "Contin\u00fae en plex.tv para autorizar", "title": "Conectar servidor Plex" - }, - "user": { - "data": { - "manual_setup": "Configuraci\u00f3n manual", - "token": "Token Plex" - }, - "description": "Introduzca un token Plex para la configuraci\u00f3n autom\u00e1tica o configure manualmente un servidor.", - "title": "Conectar servidor Plex" } }, "title": "Plex" @@ -55,7 +35,6 @@ "data": { "ignore_new_shared_users": "Ignorar nuevos usuarios administrados/compartidos", "monitored_users": "Usuarios monitorizados", - "show_all_controls": "Mostrar todos los controles", "use_episode_art": "Usar el arte de episodios" }, "description": "Opciones para reproductores multimedia Plex" diff --git a/homeassistant/components/plex/.translations/fr.json b/homeassistant/components/plex/.translations/fr.json index 4c1af21aaf1..354a5eaecf9 100644 --- a/homeassistant/components/plex/.translations/fr.json +++ b/homeassistant/components/plex/.translations/fr.json @@ -4,7 +4,6 @@ "all_configured": "Tous les serveurs li\u00e9s sont d\u00e9j\u00e0 configur\u00e9s", "already_configured": "Ce serveur Plex est d\u00e9j\u00e0 configur\u00e9", "already_in_progress": "Plex en cours de configuration", - "discovery_no_file": "Aucun fichier de configuration h\u00e9rit\u00e9 trouv\u00e9", "invalid_import": "La configuration import\u00e9e est invalide", "non-interactive": "Importation non interactive", "token_request_timeout": "D\u00e9lai d'obtention du jeton", @@ -13,20 +12,9 @@ "error": { "faulty_credentials": "L'autorisation \u00e0 \u00e9chou\u00e9e", "no_servers": "Aucun serveur li\u00e9 au compte", - "no_token": "Fournir un jeton ou s\u00e9lectionner l'installation manuelle", "not_found": "Serveur Plex introuvable" }, "step": { - "manual_setup": { - "data": { - "host": "H\u00f4te", - "port": "Port", - "ssl": "Utiliser SSL", - "token": "Jeton (si n\u00e9cessaire)", - "verify_ssl": "V\u00e9rifier le certificat SSL" - }, - "title": "Serveur Plex" - }, "select_server": { "data": { "server": "Serveur" @@ -37,14 +25,6 @@ "start_website_auth": { "description": "Continuer d'autoriser sur plex.tv.", "title": "Connecter un serveur Plex" - }, - "user": { - "data": { - "manual_setup": "Installation manuelle", - "token": "Jeton plex" - }, - "description": "Continuez pour autoriser plex.tv ou configurez manuellement un serveur.", - "title": "Connecter un serveur Plex" } }, "title": "Plex" @@ -55,7 +35,6 @@ "data": { "ignore_new_shared_users": "Ignorer les nouveaux utilisateurs g\u00e9r\u00e9s/partag\u00e9s", "monitored_users": "Utilisateurs surveill\u00e9s", - "show_all_controls": "Afficher tous les contr\u00f4les", "use_episode_art": "Utiliser l'art de l'\u00e9pisode" }, "description": "Options pour lecteurs multim\u00e9dia Plex" diff --git a/homeassistant/components/plex/.translations/hu.json b/homeassistant/components/plex/.translations/hu.json index 4712fb37b55..c59e31a3b95 100644 --- a/homeassistant/components/plex/.translations/hu.json +++ b/homeassistant/components/plex/.translations/hu.json @@ -4,7 +4,6 @@ "all_configured": "Az \u00f6sszes \u00f6sszekapcsolt szerver m\u00e1r konfigur\u00e1lva van", "already_configured": "Ez a Plex szerver m\u00e1r konfigur\u00e1lva van", "already_in_progress": "A Plex konfigur\u00e1l\u00e1sa folyamatban van", - "discovery_no_file": "Nem tal\u00e1lhat\u00f3 r\u00e9gi konfigur\u00e1ci\u00f3s f\u00e1jl", "invalid_import": "Az import\u00e1lt konfigur\u00e1ci\u00f3 \u00e9rv\u00e9nytelen", "non-interactive": "Nem interakt\u00edv import\u00e1l\u00e1s", "token_request_timeout": "Token k\u00e9r\u00e9sre sz\u00e1nt id\u0151 lej\u00e1rt", @@ -16,12 +15,6 @@ "not_found": "A Plex szerver nem tal\u00e1lhat\u00f3" }, "step": { - "manual_setup": { - "data": { - "host": "Kiszolg\u00e1l\u00f3", - "port": "Port" - } - }, "select_server": { "data": { "server": "szerver" @@ -32,13 +25,6 @@ "start_website_auth": { "description": "Folytassa az enged\u00e9lyez\u00e9st a plex.tv webhelyen.", "title": "Plex-kiszolg\u00e1l\u00f3 csatlakoztat\u00e1sa" - }, - "user": { - "data": { - "token": "Plex token" - }, - "description": "Folytassa az enged\u00e9lyez\u00e9st a plex.tv webhelyen, vagy manu\u00e1lisan konfigur\u00e1lja a szervert.", - "title": "Plex-kiszolg\u00e1l\u00f3 csatlakoztat\u00e1sa" } }, "title": "Plex" @@ -47,7 +33,6 @@ "step": { "plex_mp_settings": { "data": { - "show_all_controls": "Az \u00f6sszes vez\u00e9rl\u0151 megjelen\u00edt\u00e9se", "use_episode_art": "Haszn\u00e1lja az epiz\u00f3d bor\u00edt\u00f3j\u00e1t" }, "description": "Plex media lej\u00e1tsz\u00f3k be\u00e1ll\u00edt\u00e1sai" diff --git a/homeassistant/components/plex/.translations/it.json b/homeassistant/components/plex/.translations/it.json index e5ff4e01dc0..bb48d95bc51 100644 --- a/homeassistant/components/plex/.translations/it.json +++ b/homeassistant/components/plex/.translations/it.json @@ -4,7 +4,6 @@ "all_configured": "Tutti i server collegati sono gi\u00e0 configurati", "already_configured": "Questo server Plex \u00e8 gi\u00e0 configurato", "already_in_progress": "Plex \u00e8 in fase di configurazione", - "discovery_no_file": "Non \u00e8 stato trovato nessun file di configurazione da sostituire", "invalid_import": "La configurazione importata non \u00e8 valida", "non-interactive": "Importazione non interattiva", "token_request_timeout": "Timeout per l'ottenimento del token", @@ -13,20 +12,9 @@ "error": { "faulty_credentials": "Autorizzazione non riuscita", "no_servers": "Nessun server collegato all'account", - "no_token": "Fornire un token o selezionare la configurazione manuale", "not_found": "Server Plex non trovato" }, "step": { - "manual_setup": { - "data": { - "host": "Host", - "port": "Porta", - "ssl": "Usa SSL", - "token": "Token (se richiesto)", - "verify_ssl": "Verificare il certificato SSL" - }, - "title": "Server Plex" - }, "select_server": { "data": { "server": "Server" @@ -37,14 +25,6 @@ "start_website_auth": { "description": "Continuare ad autorizzare su plex.tv.", "title": "Collegare il server Plex" - }, - "user": { - "data": { - "manual_setup": "Configurazione manuale", - "token": "Token Plex" - }, - "description": "Continuare ad autorizzare plex.tv o configurare manualmente un server.", - "title": "Collegare il server Plex" } }, "title": "Plex" @@ -55,7 +35,6 @@ "data": { "ignore_new_shared_users": "Ignora nuovi utenti gestiti/condivisi", "monitored_users": "Utenti monitorati", - "show_all_controls": "Mostra tutti i controlli", "use_episode_art": "Usa la grafica dell'episodio" }, "description": "Opzioni per i lettori multimediali Plex" diff --git a/homeassistant/components/plex/.translations/ko.json b/homeassistant/components/plex/.translations/ko.json index 3292fab0a8e..5cb49836f4d 100644 --- a/homeassistant/components/plex/.translations/ko.json +++ b/homeassistant/components/plex/.translations/ko.json @@ -4,7 +4,6 @@ "all_configured": "\uc774\ubbf8 \uad6c\uc131\ub41c \ubaa8\ub4e0 \uc5f0\uacb0\ub41c \uc11c\ubc84", "already_configured": "\uc774 Plex \uc11c\ubc84\ub294 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4", "already_in_progress": "Plex \ub97c \uad6c\uc131 \uc911\uc785\ub2c8\ub2e4", - "discovery_no_file": "\ub808\uac70\uc2dc \uad6c\uc131 \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4", "invalid_import": "\uac00\uc838\uc628 \uad6c\uc131 \ub0b4\uc6a9\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4", "non-interactive": "\ube44 \ub300\ud654\ud615 \uac00\uc838\uc624\uae30", "token_request_timeout": "\ud1a0\ud070 \ud68d\ub4dd \uc2dc\uac04\uc774 \ucd08\uacfc\ud588\uc2b5\ub2c8\ub2e4", @@ -13,20 +12,9 @@ "error": { "faulty_credentials": "\uc778\uc99d\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4", "no_servers": "\uacc4\uc815\uc5d0 \uc5f0\uacb0\ub41c \uc11c\ubc84\uac00 \uc5c6\uc2b5\ub2c8\ub2e4", - "no_token": "\ud1a0\ud070\uc744 \uc785\ub825\ud558\uac70\ub098 \uc218\ub3d9 \uc124\uc815\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694", "not_found": "Plex \uc11c\ubc84\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4" }, "step": { - "manual_setup": { - "data": { - "host": "\ud638\uc2a4\ud2b8", - "port": "\ud3ec\ud2b8", - "ssl": "SSL \uc0ac\uc6a9", - "token": "\ud1a0\ud070 (\ud544\uc694\ud55c \uacbd\uc6b0)", - "verify_ssl": "SSL \uc778\uc99d\uc11c \uac80\uc99d" - }, - "title": "Plex \uc11c\ubc84" - }, "select_server": { "data": { "server": "\uc11c\ubc84" @@ -37,14 +25,6 @@ "start_website_auth": { "description": "plex.tv \uc5d0\uc11c \uc778\uc99d\uc744 \uc9c4\ud589\ud574\uc8fc\uc138\uc694.", "title": "Plex \uc11c\ubc84 \uc5f0\uacb0" - }, - "user": { - "data": { - "manual_setup": "\uc218\ub3d9 \uc124\uc815", - "token": "Plex \ud1a0\ud070" - }, - "description": "plex.tv \uc5d0\uc11c \uc778\uc99d\uc744 \uc9c4\ud589\ud558\uac70\ub098 \uc11c\ubc84\ub97c \uc218\ub3d9\uc73c\ub85c \uc124\uc815\ud574\uc8fc\uc138\uc694.", - "title": "Plex \uc11c\ubc84 \uc5f0\uacb0" } }, "title": "Plex" @@ -55,7 +35,6 @@ "data": { "ignore_new_shared_users": "\uc0c8\ub85c\uc6b4 \uad00\ub9ac/\uacf5\uc720 \uc0ac\uc6a9\uc790 \ubb34\uc2dc", "monitored_users": "\ubaa8\ub2c8\ud130\ub9c1\ub418\ub294 \uc0ac\uc6a9\uc790", - "show_all_controls": "\ubaa8\ub4e0 \ucee8\ud2b8\ub864 \ud45c\uc2dc\ud558\uae30", "use_episode_art": "\uc5d0\ud53c\uc18c\ub4dc \uc544\ud2b8 \uc0ac\uc6a9" }, "description": "Plex \ubbf8\ub514\uc5b4 \ud50c\ub808\uc774\uc5b4 \uc635\uc158" diff --git a/homeassistant/components/plex/.translations/lb.json b/homeassistant/components/plex/.translations/lb.json index 6ed9d372fc1..c8b910b6dc5 100644 --- a/homeassistant/components/plex/.translations/lb.json +++ b/homeassistant/components/plex/.translations/lb.json @@ -4,7 +4,6 @@ "all_configured": "All verbonne Server sinn scho konfigur\u00e9iert", "already_configured": "D\u00ebse Plex Server ass scho konfigur\u00e9iert", "already_in_progress": "Plex g\u00ebtt konfigur\u00e9iert", - "discovery_no_file": "Kee Konfiguratioun Fichier am ale Format fonnt.", "invalid_import": "D\u00e9i importiert Konfiguratioun ass ong\u00eblteg", "non-interactive": "Net interaktiven Import", "token_request_timeout": "Z\u00e4it Iwwerschreidung beim kr\u00e9ien vum Jeton", @@ -13,20 +12,9 @@ "error": { "faulty_credentials": "Feeler beider Autorisatioun", "no_servers": "Kee Server as mam Kont verbonnen", - "no_token": "Gitt en Token un oder wielt manuelle Setup", "not_found": "Kee Plex Server fonnt" }, "step": { - "manual_setup": { - "data": { - "host": "Apparat", - "port": "Port", - "ssl": "SSL benotzen", - "token": "Jeton (falls n\u00e9ideg)", - "verify_ssl": "SSL Zertifikat iwwerpr\u00e9iwen" - }, - "title": "Plex Server" - }, "select_server": { "data": { "server": "Server" @@ -37,14 +25,6 @@ "start_website_auth": { "description": "Weiderfueren op plex.tv fir d'Autorisatioun.", "title": "Plex Server verbannen" - }, - "user": { - "data": { - "manual_setup": "Manuell Konfiguratioun", - "token": "Jeton fir de Plex" - }, - "description": "Gitt een Jeton fir de Plex un fir eng automatesch Konfiguratioun", - "title": "Plex Server verbannen" } }, "title": "Plex" @@ -55,7 +35,6 @@ "data": { "ignore_new_shared_users": "Nei verwalt / gedeelt Benotzer ignor\u00e9ieren", "monitored_users": "Iwwerwaachte Benotzer", - "show_all_controls": "Weis all Kontrollen", "use_episode_art": "Benotz Biller vun der Episode" }, "description": "Optioune fir Plex Medie Spiller" diff --git a/homeassistant/components/plex/.translations/lv.json b/homeassistant/components/plex/.translations/lv.json index 23cda3fce4b..39d4b3d7096 100644 --- a/homeassistant/components/plex/.translations/lv.json +++ b/homeassistant/components/plex/.translations/lv.json @@ -7,14 +7,6 @@ "not_found": "Plex serveris nav atrasts" }, "step": { - "manual_setup": { - "data": { - "port": "Ports", - "ssl": "Izmantot SSL", - "verify_ssl": "P\u0101rbaud\u012bt SSL sertifik\u0101tu" - }, - "title": "Plex serveris" - }, "select_server": { "data": { "server": "Serveris" diff --git a/homeassistant/components/plex/.translations/nl.json b/homeassistant/components/plex/.translations/nl.json index 515ee8798c7..79ae6506d86 100644 --- a/homeassistant/components/plex/.translations/nl.json +++ b/homeassistant/components/plex/.translations/nl.json @@ -4,7 +4,6 @@ "all_configured": "Alle gekoppelde servers zijn al geconfigureerd", "already_configured": "Deze Plex-server is al geconfigureerd", "already_in_progress": "Plex wordt geconfigureerd", - "discovery_no_file": "Geen legacy configuratiebestand gevonden", "invalid_import": "Ge\u00efmporteerde configuratie is ongeldig", "non-interactive": "Niet-interactieve import", "token_request_timeout": "Time-out verkrijgen van token", @@ -13,20 +12,9 @@ "error": { "faulty_credentials": "Autorisatie mislukt", "no_servers": "Geen servers gekoppeld aan account", - "no_token": "Geef een token op of selecteer handmatige installatie", "not_found": "Plex-server niet gevonden" }, "step": { - "manual_setup": { - "data": { - "host": "Host", - "port": "Poort", - "ssl": "Gebruik SSL", - "token": "Token (indien nodig)", - "verify_ssl": "Controleer SSL-certificaat" - }, - "title": "Plex server" - }, "select_server": { "data": { "server": "Server" @@ -37,14 +25,6 @@ "start_website_auth": { "description": "Ga verder met autoriseren bij plex.tv.", "title": "Verbind de Plex server" - }, - "user": { - "data": { - "manual_setup": "Handmatig setup", - "token": "Plex token" - }, - "description": "Ga verder met autoriseren bij plex.tv of configureer een server.", - "title": "Verbind de Plex server" } }, "title": "Plex" @@ -53,7 +33,6 @@ "step": { "plex_mp_settings": { "data": { - "show_all_controls": "Toon alle bedieningselementen", "use_episode_art": "Gebruik aflevering kunst" }, "description": "Opties voor Plex-mediaspelers" diff --git a/homeassistant/components/plex/.translations/no.json b/homeassistant/components/plex/.translations/no.json index 29d43cb8275..be76411d8ac 100644 --- a/homeassistant/components/plex/.translations/no.json +++ b/homeassistant/components/plex/.translations/no.json @@ -4,7 +4,6 @@ "all_configured": "Alle knyttet servere som allerede er konfigurert", "already_configured": "Denne Plex-serveren er allerede konfigurert", "already_in_progress": "Plex blir konfigurert", - "discovery_no_file": "Ingen eldre konfigurasjonsfil funnet", "invalid_import": "Den importerte konfigurasjonen er ugyldig", "non-interactive": "Ikke-interaktiv import", "token_request_timeout": "Tidsavbrudd ved innhenting av token", @@ -13,20 +12,9 @@ "error": { "faulty_credentials": "Autorisasjonen mislyktes", "no_servers": "Ingen servere koblet til kontoen", - "no_token": "Angi et token eller velg manuelt oppsett", "not_found": "Plex-server ikke funnet" }, "step": { - "manual_setup": { - "data": { - "host": "Vert", - "port": "", - "ssl": "Bruk SSL", - "token": "Token (hvis n\u00f8dvendig)", - "verify_ssl": "Verifisere SSL-sertifikat" - }, - "title": "Plex-server" - }, "select_server": { "data": { "server": "" @@ -37,14 +25,6 @@ "start_website_auth": { "description": "Fortsett \u00e5 autorisere p\u00e5 plex.tv.", "title": "Koble til Plex-server" - }, - "user": { - "data": { - "manual_setup": "Manuelt oppsett", - "token": "Plex token" - }, - "description": "Fortsett \u00e5 autorisere p\u00e5 plex.tv eller manuelt konfigurere en server.", - "title": "Koble til Plex-server" } }, "title": "" @@ -55,7 +35,6 @@ "data": { "ignore_new_shared_users": "Ignorer nye administrerte/delte brukere", "monitored_users": "Overv\u00e5kede brukere", - "show_all_controls": "Vis alle kontroller", "use_episode_art": "Bruk episode bilde" }, "description": "Alternativer for Plex Media Players" diff --git a/homeassistant/components/plex/.translations/pl.json b/homeassistant/components/plex/.translations/pl.json index 6531b552000..8b21562a87e 100644 --- a/homeassistant/components/plex/.translations/pl.json +++ b/homeassistant/components/plex/.translations/pl.json @@ -4,7 +4,6 @@ "all_configured": "Wszystkie znalezione serwery s\u0105 ju\u017c skonfigurowane.", "already_configured": "Ten serwer Plex jest ju\u017c skonfigurowany.", "already_in_progress": "Plex jest konfigurowany", - "discovery_no_file": "Nie znaleziono pliku konfiguracyjnego", "invalid_import": "Zaimportowana konfiguracja jest nieprawid\u0142owa", "non-interactive": "Nieinteraktywny import", "token_request_timeout": "Przekroczono limit czasu na uzyskanie tokena.", @@ -13,20 +12,9 @@ "error": { "faulty_credentials": "Autoryzacja nie powiod\u0142a si\u0119", "no_servers": "Brak serwer\u00f3w po\u0142\u0105czonych z kontem", - "no_token": "Wprowad\u017a token lub wybierz konfiguracj\u0119 r\u0119czn\u0105", "not_found": "Nie znaleziono serwera Plex" }, "step": { - "manual_setup": { - "data": { - "host": "Host", - "port": "Port", - "ssl": "U\u017cyj SSL", - "token": "Token (je\u015bli wymagany)", - "verify_ssl": "Weryfikacja certyfikatu SSL" - }, - "title": "Serwer Plex" - }, "select_server": { "data": { "server": "Serwer" @@ -37,14 +25,6 @@ "start_website_auth": { "description": "Kontynuuj, by dokona\u0107 autoryzacji w plex.tv.", "title": "Po\u0142\u0105cz z serwerem Plex" - }, - "user": { - "data": { - "manual_setup": "Konfiguracja r\u0119czna", - "token": "Token Plex" - }, - "description": "Wprowad\u017a token Plex do automatycznej konfiguracji.", - "title": "Po\u0142\u0105cz z serwerem Plex" } }, "title": "Plex" @@ -55,7 +35,6 @@ "data": { "ignore_new_shared_users": "Ignoruj nowych zarz\u0105dzanych/wsp\u00f3\u0142dzielonych u\u017cytkownik\u00f3w", "monitored_users": "Monitorowani u\u017cytkownicy", - "show_all_controls": "Poka\u017c wszystkie elementy steruj\u0105ce", "use_episode_art": "U\u017cyj grafiki odcinka" }, "description": "Opcje dla odtwarzaczy multimedialnych Plex" diff --git a/homeassistant/components/plex/.translations/pt-BR.json b/homeassistant/components/plex/.translations/pt-BR.json index be97c7fdcb7..0248fc94857 100644 --- a/homeassistant/components/plex/.translations/pt-BR.json +++ b/homeassistant/components/plex/.translations/pt-BR.json @@ -8,7 +8,6 @@ "step": { "plex_mp_settings": { "data": { - "show_all_controls": "Mostrar todos os controles", "use_episode_art": "Usar arte epis\u00f3dio" }, "description": "Op\u00e7\u00f5es para Plex Media Players" diff --git a/homeassistant/components/plex/.translations/ru.json b/homeassistant/components/plex/.translations/ru.json index 2da10b1e8c4..851a2f16ae1 100644 --- a/homeassistant/components/plex/.translations/ru.json +++ b/homeassistant/components/plex/.translations/ru.json @@ -4,7 +4,6 @@ "all_configured": "\u0412\u0441\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b.", "already_configured": "\u042d\u0442\u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440 Plex \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d.", "already_in_progress": "\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430.", - "discovery_no_file": "\u0421\u0442\u0430\u0440\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d.", "invalid_import": "\u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043d\u0435\u0432\u0435\u0440\u043d\u0430.", "non-interactive": "\u041d\u0435\u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u043c\u043f\u043e\u0440\u0442.", "token_request_timeout": "\u0418\u0441\u0442\u0435\u043a\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u043a\u0435\u043d\u0430.", @@ -13,20 +12,9 @@ "error": { "faulty_credentials": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438.", "no_servers": "\u041d\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u044c\u044e.", - "no_token": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0442\u043e\u043a\u0435\u043d \u0438\u043b\u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0440\u0443\u0447\u043d\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443.", "not_found": "\u0421\u0435\u0440\u0432\u0435\u0440 Plex \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d." }, "step": { - "manual_setup": { - "data": { - "host": "\u0425\u043e\u0441\u0442", - "port": "\u041f\u043e\u0440\u0442", - "ssl": "\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c SSL", - "token": "\u0422\u043e\u043a\u0435\u043d (\u0435\u0441\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f)", - "verify_ssl": "\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 SSL" - }, - "title": "\u0421\u0435\u0440\u0432\u0435\u0440 Plex" - }, "select_server": { "data": { "server": "\u0421\u0435\u0440\u0432\u0435\u0440" @@ -37,14 +25,6 @@ "start_website_auth": { "description": "\u041f\u0440\u043e\u0439\u0434\u0438\u0442\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u0430 plex.tv.", "title": "Plex" - }, - "user": { - "data": { - "manual_setup": "\u0420\u0443\u0447\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430", - "token": "\u0422\u043e\u043a\u0435\u043d" - }, - "description": "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0439\u0442\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u0430 plex.tv \u0438\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u0440\u0443\u0447\u043d\u0443\u044e.", - "title": "Plex" } }, "title": "Plex" @@ -55,7 +35,6 @@ "data": { "ignore_new_shared_users": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0445 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445/\u043e\u0431\u0449\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439", "monitored_users": "\u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438", - "show_all_controls": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f", "use_episode_art": "\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u043b\u043e\u0436\u043a\u0438 \u044d\u043f\u0438\u0437\u043e\u0434\u043e\u0432" }, "description": "\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b" diff --git a/homeassistant/components/plex/.translations/sl.json b/homeassistant/components/plex/.translations/sl.json index 40ba84b9f41..20ad2ca0a02 100644 --- a/homeassistant/components/plex/.translations/sl.json +++ b/homeassistant/components/plex/.translations/sl.json @@ -4,7 +4,6 @@ "all_configured": "Vsi povezani stre\u017eniki so \u017ee konfigurirani", "already_configured": "Ta stre\u017enik Plex je \u017ee konfiguriran", "already_in_progress": "Plex se konfigurira", - "discovery_no_file": "Podedovane konfiguracijske datoteke ni bilo", "invalid_import": "Uvo\u017eena konfiguracija ni veljavna", "non-interactive": "Neinteraktivni uvoz", "token_request_timeout": "Potekla \u010dasovna omejitev za pridobitev \u017eetona", @@ -13,20 +12,9 @@ "error": { "faulty_credentials": "Avtorizacija ni uspela", "no_servers": "Ni stre\u017enikov povezanih z ra\u010dunom", - "no_token": "Vnesite \u017eeton ali izberite ro\u010dno nastavitev", "not_found": "Plex stre\u017enika ni mogo\u010de najti" }, "step": { - "manual_setup": { - "data": { - "host": "Gostitelj", - "port": "Vrata", - "ssl": "Uporaba SSL", - "token": "\u017deton (po potrebi)", - "verify_ssl": "Preverite SSL potrdilo" - }, - "title": "Plex stre\u017enik" - }, "select_server": { "data": { "server": "Stre\u017enik" @@ -37,14 +25,6 @@ "start_website_auth": { "description": "Nadaljujte z avtorizacijo na plex.tv.", "title": "Pove\u017eite stre\u017enik Plex" - }, - "user": { - "data": { - "manual_setup": "Ro\u010dna nastavitev", - "token": "Plex \u017eeton" - }, - "description": "Nadaljujte z avtorizacijo na plex.tv ali ro\u010dno konfigurirajte stre\u017enik.", - "title": "Pove\u017eite stre\u017enik Plex" } }, "title": "Plex" @@ -55,7 +35,6 @@ "data": { "ignore_new_shared_users": "Ignorirajte nove upravljane/deljene uporabnike", "monitored_users": "Nadzorovani uporabniki", - "show_all_controls": "Poka\u017ei vse kontrole", "use_episode_art": "Uporabi naslovno sliko epizode" }, "description": "Mo\u017enosti za predvajalnike Plex" diff --git a/homeassistant/components/plex/.translations/sv.json b/homeassistant/components/plex/.translations/sv.json index 25152e9dc81..42afc3eeaa9 100644 --- a/homeassistant/components/plex/.translations/sv.json +++ b/homeassistant/components/plex/.translations/sv.json @@ -4,7 +4,6 @@ "all_configured": "Alla l\u00e4nkade servrar har redan konfigurerats", "already_configured": "Denna Plex-server \u00e4r redan konfigurerad", "already_in_progress": "Plex konfigureras", - "discovery_no_file": "Ingen \u00e4ldre konfigurationsfil hittades", "invalid_import": "Importerad konfiguration \u00e4r ogiltig", "non-interactive": "Icke-interaktiv import", "token_request_timeout": "Timeout att erh\u00e5lla token", @@ -13,20 +12,9 @@ "error": { "faulty_credentials": "Auktoriseringen misslyckades", "no_servers": "Inga servrar l\u00e4nkade till konto", - "no_token": "Ange en token eller v\u00e4lj manuell inst\u00e4llning", "not_found": "Plex-server hittades inte" }, "step": { - "manual_setup": { - "data": { - "host": "V\u00e4rd", - "port": "Port", - "ssl": "Anv\u00e4nd SSL", - "token": "Token (om det beh\u00f6vs)", - "verify_ssl": "Verifiera SSL-certifikat" - }, - "title": "Plex-server" - }, "select_server": { "data": { "server": "Server" @@ -37,14 +25,6 @@ "start_website_auth": { "description": "Forts\u00e4tt att auktorisera p\u00e5 plex.tv.", "title": "Anslut Plex-servern" - }, - "user": { - "data": { - "manual_setup": "Manuell inst\u00e4llning", - "token": "Plex-token" - }, - "description": "Forts\u00e4tt att auktorisera p\u00e5 plex.tv eller konfigurera en server manuellt.", - "title": "Anslut Plex-servern" } }, "title": "Plex" @@ -53,7 +33,6 @@ "step": { "plex_mp_settings": { "data": { - "show_all_controls": "Visa alla kontroller", "use_episode_art": "Anv\u00e4nd avsnittsbild" }, "description": "Alternativ f\u00f6r Plex-mediaspelare" diff --git a/homeassistant/components/plex/.translations/zh-Hant.json b/homeassistant/components/plex/.translations/zh-Hant.json index 436333b0a79..6d46b8bc154 100644 --- a/homeassistant/components/plex/.translations/zh-Hant.json +++ b/homeassistant/components/plex/.translations/zh-Hant.json @@ -4,7 +4,6 @@ "all_configured": "\u6240\u6709\u7d81\u5b9a\u4f3a\u670d\u5668\u90fd\u5df2\u8a2d\u5b9a\u5b8c\u6210", "already_configured": "Plex \u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", "already_in_progress": "Plex \u5df2\u7d93\u8a2d\u5b9a", - "discovery_no_file": "\u627e\u4e0d\u5230\u820a\u7248\u8a2d\u5b9a\u6a94\u6848", "invalid_import": "\u532f\u5165\u4e4b\u8a2d\u5b9a\u7121\u6548", "non-interactive": "\u7121\u4e92\u52d5\u532f\u5165", "token_request_timeout": "\u53d6\u5f97\u5bc6\u9470\u903e\u6642", @@ -13,20 +12,9 @@ "error": { "faulty_credentials": "\u9a57\u8b49\u5931\u6557", "no_servers": "\u6b64\u5e33\u865f\u672a\u7d81\u5b9a\u4f3a\u670d\u5668", - "no_token": "\u63d0\u4f9b\u5bc6\u9470\u6216\u9078\u64c7\u624b\u52d5\u8a2d\u5b9a", "not_found": "\u627e\u4e0d\u5230 Plex \u4f3a\u670d\u5668" }, "step": { - "manual_setup": { - "data": { - "host": "\u4e3b\u6a5f\u7aef", - "port": "\u901a\u8a0a\u57e0", - "ssl": "\u4f7f\u7528 SSL", - "token": "\u5bc6\u9470\uff08\u5982\u679c\u9700\u8981\uff09", - "verify_ssl": "\u78ba\u8a8d SSL \u8a8d\u8b49" - }, - "title": "Plex \u4f3a\u670d\u5668" - }, "select_server": { "data": { "server": "\u4f3a\u670d\u5668" @@ -37,14 +25,6 @@ "start_website_auth": { "description": "\u7e7c\u7e8c\u65bc Plex.tv \u9032\u884c\u8a8d\u8b49\u3002", "title": "\u9023\u7dda\u81f3 Plex \u4f3a\u670d\u5668" - }, - "user": { - "data": { - "manual_setup": "\u624b\u52d5\u8a2d\u5b9a", - "token": "Plex \u5bc6\u9470" - }, - "description": "\u7e7c\u7e8c\u65bc Plex.tv \u9032\u884c\u8a8d\u8b49\u6216\u624b\u52d5\u8a2d\u5b9a\u4f3a\u670d\u5668\u3002", - "title": "\u9023\u7dda\u81f3 Plex \u4f3a\u670d\u5668" } }, "title": "Plex" @@ -55,7 +35,6 @@ "data": { "ignore_new_shared_users": "\u5ffd\u7565\u65b0\u589e\u7ba1\u7406/\u5206\u4eab\u4f7f\u7528\u8005", "monitored_users": "\u5df2\u76e3\u63a7\u4f7f\u7528\u8005", - "show_all_controls": "\u986f\u793a\u6240\u6709\u63a7\u5236", "use_episode_art": "\u4f7f\u7528\u5f71\u96c6\u5287\u7167" }, "description": "Plex \u64ad\u653e\u5668\u9078\u9805" diff --git a/homeassistant/components/rachio/.translations/pl.json b/homeassistant/components/rachio/.translations/pl.json index b186a764cd1..3c07ea850c0 100644 --- a/homeassistant/components/rachio/.translations/pl.json +++ b/homeassistant/components/rachio/.translations/pl.json @@ -14,7 +14,7 @@ "api_key": "Klucz API dla konta Rachio." }, "description": "B\u0119dziesz potrzebowa\u0142 klucza API ze strony https://app.rach.io/. Wybierz 'Account Settings', a nast\u0119pnie kliknij 'GET API KEY'.", - "title": "Po\u0142\u0105cz si\u0119 z urz\u0105dzeniem Rachio" + "title": "Po\u0142\u0105czenie z urz\u0105dzeniem Rachio" } }, "title": "Rachio" diff --git a/homeassistant/components/roku/.translations/ca.json b/homeassistant/components/roku/.translations/ca.json index 727c4e79d73..3f9897784f9 100644 --- a/homeassistant/components/roku/.translations/ca.json +++ b/homeassistant/components/roku/.translations/ca.json @@ -5,8 +5,7 @@ "unknown": "Error inesperat" }, "error": { - "cannot_connect": "No s'ha pogut connectar, torna-ho a provar", - "unknown": "Error inesperat" + "cannot_connect": "No s'ha pogut connectar, torna-ho a provar" }, "flow_title": "Roku: {name}", "step": { diff --git a/homeassistant/components/roku/.translations/de.json b/homeassistant/components/roku/.translations/de.json index d3c02cc1373..3954d9d549d 100644 --- a/homeassistant/components/roku/.translations/de.json +++ b/homeassistant/components/roku/.translations/de.json @@ -5,8 +5,7 @@ "unknown": "Unerwarteter Fehler" }, "error": { - "cannot_connect": "Verbindung fehlgeschlagen, versuchen Sie es erneut", - "unknown": "Unerwarteter Fehler" + "cannot_connect": "Verbindung fehlgeschlagen, versuchen Sie es erneut" }, "flow_title": "Roku: {name}", "step": { diff --git a/homeassistant/components/roku/.translations/en.json b/homeassistant/components/roku/.translations/en.json index a92570c7019..30c53e1d89e 100644 --- a/homeassistant/components/roku/.translations/en.json +++ b/homeassistant/components/roku/.translations/en.json @@ -5,8 +5,7 @@ "unknown": "Unexpected error" }, "error": { - "cannot_connect": "Failed to connect, please try again", - "unknown": "Unexpected error" + "cannot_connect": "Failed to connect, please try again" }, "flow_title": "Roku: {name}", "step": { diff --git a/homeassistant/components/roku/.translations/es.json b/homeassistant/components/roku/.translations/es.json index a472d079efb..ffa850f6ebe 100644 --- a/homeassistant/components/roku/.translations/es.json +++ b/homeassistant/components/roku/.translations/es.json @@ -5,8 +5,7 @@ "unknown": "Error inesperado" }, "error": { - "cannot_connect": "No se ha podido conectar, por favor, int\u00e9ntalo de nuevo.", - "unknown": "Error inesperado" + "cannot_connect": "No se ha podido conectar, por favor, int\u00e9ntalo de nuevo." }, "flow_title": "Roku: {name}", "step": { diff --git a/homeassistant/components/roku/.translations/fr.json b/homeassistant/components/roku/.translations/fr.json index ff24f46e921..a76f68f2f61 100644 --- a/homeassistant/components/roku/.translations/fr.json +++ b/homeassistant/components/roku/.translations/fr.json @@ -5,8 +5,7 @@ "unknown": "Erreur inattendue" }, "error": { - "cannot_connect": "Impossible de se connecter, veuillez r\u00e9essayer", - "unknown": "Erreur inattendue" + "cannot_connect": "Impossible de se connecter, veuillez r\u00e9essayer" }, "flow_title": "Roku: {name}", "step": { diff --git a/homeassistant/components/roku/.translations/it.json b/homeassistant/components/roku/.translations/it.json index 37567913700..c530504c6ec 100644 --- a/homeassistant/components/roku/.translations/it.json +++ b/homeassistant/components/roku/.translations/it.json @@ -5,8 +5,7 @@ "unknown": "Errore imprevisto" }, "error": { - "cannot_connect": "Impossibile connettersi, si prega di riprovare", - "unknown": "Errore imprevisto" + "cannot_connect": "Impossibile connettersi, si prega di riprovare" }, "flow_title": "Roku: {name}", "step": { diff --git a/homeassistant/components/roku/.translations/ko.json b/homeassistant/components/roku/.translations/ko.json index 75045d14865..d7cad509da1 100644 --- a/homeassistant/components/roku/.translations/ko.json +++ b/homeassistant/components/roku/.translations/ko.json @@ -5,8 +5,7 @@ "unknown": "\uc608\uc0c1\uce58 \ubabb\ud55c \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4" }, "error": { - "cannot_connect": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \uc2dc\ub3c4\ud574\uc8fc\uc138\uc694.", - "unknown": "\uc608\uc0c1\uce58 \ubabb\ud55c \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4" + "cannot_connect": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \uc2dc\ub3c4\ud574\uc8fc\uc138\uc694." }, "flow_title": "Roku: {name}", "step": { diff --git a/homeassistant/components/roku/.translations/lb.json b/homeassistant/components/roku/.translations/lb.json index 789dac2eed7..da6136334ce 100644 --- a/homeassistant/components/roku/.translations/lb.json +++ b/homeassistant/components/roku/.translations/lb.json @@ -5,8 +5,7 @@ "unknown": "Onerwaarte Feeler" }, "error": { - "cannot_connect": "Feeler beim verbannen, prob\u00e9ier w.e.g. nach emol.", - "unknown": "Onerwaarte Feeler" + "cannot_connect": "Feeler beim verbannen, prob\u00e9ier w.e.g. nach emol." }, "flow_title": "Roku: {name}", "step": { diff --git a/homeassistant/components/roku/.translations/no.json b/homeassistant/components/roku/.translations/no.json index cabc68de3f7..df56aa5d35d 100644 --- a/homeassistant/components/roku/.translations/no.json +++ b/homeassistant/components/roku/.translations/no.json @@ -5,8 +5,7 @@ "unknown": "Uventet feil" }, "error": { - "cannot_connect": "Klarte ikke \u00e5 koble til, vennligst pr\u00f8v igjen", - "unknown": "Uventet feil" + "cannot_connect": "Klarte ikke \u00e5 koble til, vennligst pr\u00f8v igjen" }, "flow_title": "Roku: {name}", "step": { diff --git a/homeassistant/components/roku/.translations/pl.json b/homeassistant/components/roku/.translations/pl.json index db3ef261f07..b92aab58df6 100644 --- a/homeassistant/components/roku/.translations/pl.json +++ b/homeassistant/components/roku/.translations/pl.json @@ -4,8 +4,7 @@ "already_configured": "Urz\u0105dzenie Roku jest ju\u017c skonfigurowane." }, "error": { - "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia, spr\u00f3buj ponownie.", - "unknown": "Niespodziewany b\u0142\u0105d." + "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia, spr\u00f3buj ponownie." }, "flow_title": "Roku: {name}", "step": { diff --git a/homeassistant/components/roku/.translations/ru.json b/homeassistant/components/roku/.translations/ru.json index b1825654c9d..0db5f9718aa 100644 --- a/homeassistant/components/roku/.translations/ru.json +++ b/homeassistant/components/roku/.translations/ru.json @@ -5,8 +5,7 @@ "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." }, "error": { - "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437.", - "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." + "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437." }, "flow_title": "Roku: {name}", "step": { diff --git a/homeassistant/components/roku/.translations/sl.json b/homeassistant/components/roku/.translations/sl.json index f47067b3392..0745151cb0a 100644 --- a/homeassistant/components/roku/.translations/sl.json +++ b/homeassistant/components/roku/.translations/sl.json @@ -5,8 +5,7 @@ "unknown": "Nepri\u010dakovana napaka" }, "error": { - "cannot_connect": "Povezava ni uspela, poskusite znova", - "unknown": "Nepri\u010dakovana napaka" + "cannot_connect": "Povezava ni uspela, poskusite znova" }, "flow_title": "Roku: {name}", "step": { diff --git a/homeassistant/components/roku/.translations/zh-Hant.json b/homeassistant/components/roku/.translations/zh-Hant.json index 2d6a606ef77..529fcb604c7 100644 --- a/homeassistant/components/roku/.translations/zh-Hant.json +++ b/homeassistant/components/roku/.translations/zh-Hant.json @@ -5,8 +5,7 @@ "unknown": "\u672a\u9810\u671f\u932f\u8aa4" }, "error": { - "cannot_connect": "\u9023\u7dda\u5931\u6557\uff0c\u8acb\u518d\u8a66\u4e00\u6b21", - "unknown": "\u672a\u9810\u671f\u932f\u8aa4" + "cannot_connect": "\u9023\u7dda\u5931\u6557\uff0c\u8acb\u518d\u8a66\u4e00\u6b21" }, "flow_title": "Roku\uff1a{name}", "step": { diff --git a/homeassistant/components/samsungtv/.translations/ca.json b/homeassistant/components/samsungtv/.translations/ca.json index 7ca5879a5c0..a742cc546b8 100644 --- a/homeassistant/components/samsungtv/.translations/ca.json +++ b/homeassistant/components/samsungtv/.translations/ca.json @@ -4,7 +4,6 @@ "already_configured": "La Samsung TV ja configurada.", "already_in_progress": "La configuraci\u00f3 de la Samsung TV ja est\u00e0 en curs.", "auth_missing": "Home Assistant no est\u00e0 autenticat per connectar-se amb aquesta Samsung TV.", - "not_found": "No s'han trobat Samsung TV's compatibles a la xarxa.", "not_successful": "No s'ha pogut connectar amb el dispositiu Samsung TV.", "not_supported": "Actualment aquest dispositiu Samsung TV no \u00e9s compatible." }, diff --git a/homeassistant/components/samsungtv/.translations/da.json b/homeassistant/components/samsungtv/.translations/da.json index 379fd5d8b6d..7a6b5540c59 100644 --- a/homeassistant/components/samsungtv/.translations/da.json +++ b/homeassistant/components/samsungtv/.translations/da.json @@ -4,7 +4,6 @@ "already_configured": "Dette Samsung-tv er allerede konfigureret.", "already_in_progress": "Samsung-tv-konfiguration er allerede i gang.", "auth_missing": "Home Assistant er ikke godkendt til at oprette forbindelse til dette Samsung-tv. Tjek dit tvs indstillinger for at godkende Home Assistant.", - "not_found": "Der blev ikke fundet nogen underst\u00f8ttede Samsung-tv-enheder p\u00e5 netv\u00e6rket.", "not_successful": "Kan ikke oprette forbindelse til denne Samsung tv-enhed.", "not_supported": "Dette Samsung TV underst\u00f8ttes i \u00f8jeblikket ikke." }, diff --git a/homeassistant/components/samsungtv/.translations/de.json b/homeassistant/components/samsungtv/.translations/de.json index e5e8611362c..24afa67038d 100644 --- a/homeassistant/components/samsungtv/.translations/de.json +++ b/homeassistant/components/samsungtv/.translations/de.json @@ -4,7 +4,6 @@ "already_configured": "Dieser Samsung TV ist bereits konfiguriert", "already_in_progress": "Der Konfigurationsablauf f\u00fcr Samsung TV wird bereits ausgef\u00fchrt.", "auth_missing": "Home Assistant ist nicht berechtigt, eine Verbindung zu diesem Samsung TV herzustellen. \u00dcberpr\u00fcfe die Einstellungen deines Fernsehger\u00e4ts, um Home Assistant zu autorisieren.", - "not_found": "Keine unterst\u00fctzten Samsung TV-Ger\u00e4te im Netzwerk gefunden.", "not_successful": "Es kann keine Verbindung zu diesem Samsung-Fernsehger\u00e4t hergestellt werden.", "not_supported": "Dieses Samsung TV-Ger\u00e4t wird derzeit nicht unterst\u00fctzt." }, diff --git a/homeassistant/components/samsungtv/.translations/en.json b/homeassistant/components/samsungtv/.translations/en.json index 2d3856fbaff..37dc84d3e30 100644 --- a/homeassistant/components/samsungtv/.translations/en.json +++ b/homeassistant/components/samsungtv/.translations/en.json @@ -4,7 +4,6 @@ "already_configured": "This Samsung TV is already configured.", "already_in_progress": "Samsung TV configuration is already in progress.", "auth_missing": "Home Assistant is not authorized to connect to this Samsung TV. Please check your TV's settings to authorize Home Assistant.", - "not_found": "No supported Samsung TV devices found on the network.", "not_successful": "Unable to connect to this Samsung TV device.", "not_supported": "This Samsung TV device is currently not supported." }, diff --git a/homeassistant/components/samsungtv/.translations/es.json b/homeassistant/components/samsungtv/.translations/es.json index 4466b329a2a..91581de59a1 100644 --- a/homeassistant/components/samsungtv/.translations/es.json +++ b/homeassistant/components/samsungtv/.translations/es.json @@ -4,7 +4,6 @@ "already_configured": "Este televisor Samsung ya est\u00e1 configurado.", "already_in_progress": "La configuraci\u00f3n del televisor Samsung ya est\u00e1 en progreso.", "auth_missing": "Home Assistant no est\u00e1 autenticado para conectarse a este televisor Samsung.", - "not_found": "No se encontraron televisiones Samsung compatibles en la red.", "not_successful": "No se puede conectar a este dispositivo Samsung TV.", "not_supported": "Esta televisi\u00f3n Samsung actualmente no es compatible." }, diff --git a/homeassistant/components/samsungtv/.translations/fr.json b/homeassistant/components/samsungtv/.translations/fr.json index e381660a3e2..8e722a7add0 100644 --- a/homeassistant/components/samsungtv/.translations/fr.json +++ b/homeassistant/components/samsungtv/.translations/fr.json @@ -4,7 +4,6 @@ "already_configured": "Ce t\u00e9l\u00e9viseur Samsung est d\u00e9j\u00e0 configur\u00e9.", "already_in_progress": "La configuration du t\u00e9l\u00e9viseur Samsung est d\u00e9j\u00e0 en cours.", "auth_missing": "Home Assistant n'est pas authentifi\u00e9 pour se connecter \u00e0 ce t\u00e9l\u00e9viseur Samsung.", - "not_found": "Aucun t\u00e9l\u00e9viseur Samsung pris en charge trouv\u00e9 sur le r\u00e9seau.", "not_successful": "Impossible de se connecter \u00e0 cet appareil Samsung TV.", "not_supported": "Ce t\u00e9l\u00e9viseur Samsung n'est actuellement pas pris en charge." }, diff --git a/homeassistant/components/samsungtv/.translations/hu.json b/homeassistant/components/samsungtv/.translations/hu.json index c7a046428bc..6ed1d806739 100644 --- a/homeassistant/components/samsungtv/.translations/hu.json +++ b/homeassistant/components/samsungtv/.translations/hu.json @@ -4,7 +4,6 @@ "already_configured": "Ez a Samsung TV m\u00e1r konfigur\u00e1lva van.", "already_in_progress": "A Samsung TV konfigur\u00e1l\u00e1sa m\u00e1r folyamatban van.", "auth_missing": "A Home Assistant nem jogosult csatlakozni ehhez a Samsung TV-hez. Ellen\u0151rizze a TV-k\u00e9sz\u00fcl\u00e9k\u00e9ben a Home Assistant enged\u00e9lyez\u00e9si be\u00e1ll\u00edt\u00e1sait.", - "not_found": "A h\u00e1l\u00f3zaton nem tal\u00e1lhat\u00f3 t\u00e1mogatott Samsung TV-eszk\u00f6z.", "not_successful": "Nem lehet csatlakozni ehhez a Samsung TV k\u00e9sz\u00fcl\u00e9khez.", "not_supported": "Ez a Samsung TV k\u00e9sz\u00fcl\u00e9k jelenleg nem t\u00e1mogatott." }, diff --git a/homeassistant/components/samsungtv/.translations/it.json b/homeassistant/components/samsungtv/.translations/it.json index 3d2d4dd8e11..692f91efea9 100644 --- a/homeassistant/components/samsungtv/.translations/it.json +++ b/homeassistant/components/samsungtv/.translations/it.json @@ -4,7 +4,6 @@ "already_configured": "Questo Samsung TV \u00e8 gi\u00e0 configurato.", "already_in_progress": "La configurazione di Samsung TV \u00e8 gi\u00e0 in corso.", "auth_missing": "Home Assistant non \u00e8 autorizzato a connettersi a questo Samsung TV. Controlla le impostazioni del tuo TV per autorizzare Home Assistant.", - "not_found": "Nessun dispositivo Samsung TV supportato trovato sulla rete.", "not_successful": "Impossibile connettersi a questo dispositivo Samsung TV.", "not_supported": "Questo dispositivo Samsung TV non \u00e8 attualmente supportato." }, diff --git a/homeassistant/components/samsungtv/.translations/ko.json b/homeassistant/components/samsungtv/.translations/ko.json index 0226fd52dc0..20b4496b428 100644 --- a/homeassistant/components/samsungtv/.translations/ko.json +++ b/homeassistant/components/samsungtv/.translations/ko.json @@ -4,7 +4,6 @@ "already_configured": "\uc774 \uc0bc\uc131 TV \ub294 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.", "already_in_progress": "\uc0bc\uc131 TV \uad6c\uc131\uc774 \uc774\ubbf8 \uc9c4\ud589\uc911\uc785\ub2c8\ub2e4.", "auth_missing": "Home Assistant \uac00 \ud574\ub2f9 \uc0bc\uc131 TV \uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc788\ub294 \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. TV \uc124\uc815\uc744 \ud655\uc778\ud558\uc5ec Home Assistant \ub97c \uc2b9\uc778\ud574\uc8fc\uc138\uc694.", - "not_found": "\uc9c0\uc6d0\ub418\ub294 \uc0bc\uc131 TV \ubaa8\ub378\uc774 \ub124\ud2b8\uc6cc\ud06c\uc5d0\uc11c \ubc1c\uacac\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.", "not_successful": "\uc0bc\uc131 TV \uae30\uae30\uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.", "not_supported": "\uc774 \uc0bc\uc131 TV \ubaa8\ub378\uc740 \ud604\uc7ac \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4." }, diff --git a/homeassistant/components/samsungtv/.translations/lb.json b/homeassistant/components/samsungtv/.translations/lb.json index b3a94a1a2a6..39ec28d6992 100644 --- a/homeassistant/components/samsungtv/.translations/lb.json +++ b/homeassistant/components/samsungtv/.translations/lb.json @@ -4,7 +4,6 @@ "already_configured": "D\u00ebs Samsung TV ass scho konfigur\u00e9iert.", "already_in_progress": "Konfiguratioun fir d\u00ebs Samsung TV ass schonn am gaang.", "auth_missing": "Home Assistant ass net authentifiz\u00e9iert fir sech mat d\u00ebsem Samsung TV ze verbannen.", - "not_found": "Keng \u00ebnnerst\u00ebtzte Samsung TV am Netzwierk fonnt.", "not_successful": "Keng Verbindung mat d\u00ebsem Samsung TV Apparat m\u00e9iglech.", "not_supported": "D\u00ebsen Samsung TV Modell g\u00ebtt momentan net \u00ebnnerst\u00ebtzt" }, diff --git a/homeassistant/components/samsungtv/.translations/nl.json b/homeassistant/components/samsungtv/.translations/nl.json index 09c0bba05a3..3dcb9e59d74 100644 --- a/homeassistant/components/samsungtv/.translations/nl.json +++ b/homeassistant/components/samsungtv/.translations/nl.json @@ -4,7 +4,6 @@ "already_configured": "Deze Samsung TV is al geconfigureerd.", "already_in_progress": "Samsung TV configuratie is al in uitvoering.", "auth_missing": "Home Assistant is niet geautoriseerd om verbinding te maken met deze Samsung TV.", - "not_found": "Geen ondersteunde Samsung TV-apparaten gevonden op het netwerk.", "not_successful": "Niet in staat om verbinding te maken met dit Samsung TV toestel.", "not_supported": "Deze Samsung TV wordt momenteel niet ondersteund." }, diff --git a/homeassistant/components/samsungtv/.translations/no.json b/homeassistant/components/samsungtv/.translations/no.json index 55a03edc728..6e02251f271 100644 --- a/homeassistant/components/samsungtv/.translations/no.json +++ b/homeassistant/components/samsungtv/.translations/no.json @@ -4,7 +4,6 @@ "already_configured": "Denne Samsung TV-en er allerede konfigurert.", "already_in_progress": "Samsung TV-konfigurasjon p\u00e5g\u00e5r allerede.", "auth_missing": "Home Assistant er ikke autorisert til \u00e5 koble til denne Samsung-TV. Vennligst kontroller innstillingene for TV-en for \u00e5 autorisere Home Assistent.", - "not_found": "Ingen st\u00f8ttede Samsung TV-enheter funnet i nettverket.", "not_successful": "Kan ikke koble til denne Samsung TV-enheten.", "not_supported": "Denne Samsung TV-enhetene st\u00f8ttes forel\u00f8pig ikke." }, diff --git a/homeassistant/components/samsungtv/.translations/pl.json b/homeassistant/components/samsungtv/.translations/pl.json index 200d8d2cf9a..02231169b65 100644 --- a/homeassistant/components/samsungtv/.translations/pl.json +++ b/homeassistant/components/samsungtv/.translations/pl.json @@ -4,7 +4,6 @@ "already_configured": "Ten telewizor Samsung jest ju\u017c skonfigurowany.", "already_in_progress": "Konfiguracja telewizora Samsung jest ju\u017c w toku.", "auth_missing": "Home Assistant nie jest uwierzytelniony, aby po\u0142\u0105czy\u0107 si\u0119 z tym telewizorem Samsung.", - "not_found": "W sieci nie znaleziono obs\u0142ugiwanych telewizor\u00f3w Samsung.", "not_successful": "Nie mo\u017cna po\u0142\u0105czy\u0107 si\u0119 urz\u0105dzeniem Samsung TV.", "not_supported": "Ten telewizor Samsung nie jest obecnie obs\u0142ugiwany." }, diff --git a/homeassistant/components/samsungtv/.translations/ru.json b/homeassistant/components/samsungtv/.translations/ru.json index 14f772c5e1d..016979eb330 100644 --- a/homeassistant/components/samsungtv/.translations/ru.json +++ b/homeassistant/components/samsungtv/.translations/ru.json @@ -4,7 +4,6 @@ "already_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.", "already_in_progress": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f.", "auth_missing": "Home Assistant \u043d\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u044d\u0442\u043e\u043c\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u0430.", - "not_found": "\u0412 \u0441\u0435\u0442\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432.", "not_successful": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443.", "not_supported": "\u042d\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u0430 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f." }, diff --git a/homeassistant/components/samsungtv/.translations/sl.json b/homeassistant/components/samsungtv/.translations/sl.json index 95286476ed0..bbf39de3409 100644 --- a/homeassistant/components/samsungtv/.translations/sl.json +++ b/homeassistant/components/samsungtv/.translations/sl.json @@ -4,7 +4,6 @@ "already_configured": "Ta televizor Samsung je \u017ee konfiguriran.", "already_in_progress": "Konfiguracija Samsung TV je \u017ee v teku.", "auth_missing": "Home Assistant nima dovoljenja za povezavo s tem televizorjem Samsung. Preverite nastavitve televizorja, da ga pooblastite.", - "not_found": "V omre\u017eju ni bilo najdenih nobenih podprtih naprav Samsung TV.", "not_successful": "Povezave s to napravo Samsung TV ni mogo\u010de vzpostaviti.", "not_supported": "Ta naprava Samsung TV trenutno ni podprta." }, diff --git a/homeassistant/components/samsungtv/.translations/sv.json b/homeassistant/components/samsungtv/.translations/sv.json index f75e8238506..423bf61a750 100644 --- a/homeassistant/components/samsungtv/.translations/sv.json +++ b/homeassistant/components/samsungtv/.translations/sv.json @@ -4,7 +4,6 @@ "already_configured": "Denna Samsung TV \u00e4r redan konfigurerad.", "already_in_progress": "Samsung TV-konfiguration p\u00e5g\u00e5r redan.", "auth_missing": "Home Assistant har inte beh\u00f6righet att ansluta till denna Samsung TV. Kontrollera tv:ns inst\u00e4llningar f\u00f6r att godk\u00e4nna Home Assistant.", - "not_found": "Inga Samsung TV-enheter som st\u00f6ds finns i n\u00e4tverket.", "not_successful": "Det g\u00e5r inte att ansluta till denna Samsung TV-enhet.", "not_supported": "Denna Samsung TV-enhet st\u00f6ds f\u00f6r n\u00e4rvarande inte." }, diff --git a/homeassistant/components/samsungtv/.translations/tr.json b/homeassistant/components/samsungtv/.translations/tr.json index 3cf1f135e1f..e23969be8a2 100644 --- a/homeassistant/components/samsungtv/.translations/tr.json +++ b/homeassistant/components/samsungtv/.translations/tr.json @@ -4,7 +4,6 @@ "already_configured": "Bu Samsung TV zaten ayarlanm\u0131\u015f.", "already_in_progress": "Samsung TV ayar\u0131 zaten s\u00fcr\u00fcyor.", "auth_missing": "Home Assistant'\u0131n bu Samsung TV'ye ba\u011flanma izni yok. Home Assistant'\u0131 yetkilendirmek i\u00e7in l\u00fctfen TV'nin ayarlar\u0131n\u0131 kontrol et.", - "not_found": "A\u011fda desteklenen Samsung TV cihaz\u0131 bulunamad\u0131.", "not_successful": "Bu Samsung TV cihaz\u0131na ba\u011flan\u0131lam\u0131yor.", "not_supported": "Bu Samsung TV cihaz\u0131 \u015fu anda desteklenmiyor." }, diff --git a/homeassistant/components/samsungtv/.translations/zh-Hant.json b/homeassistant/components/samsungtv/.translations/zh-Hant.json index 80cfa32a6bf..d12d47551c8 100644 --- a/homeassistant/components/samsungtv/.translations/zh-Hant.json +++ b/homeassistant/components/samsungtv/.translations/zh-Hant.json @@ -4,7 +4,6 @@ "already_configured": "\u4e09\u661f\u96fb\u8996\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", "already_in_progress": "\u4e09\u661f\u96fb\u8996\u8a2d\u5b9a\u5df2\u7d93\u9032\u884c\u4e2d\u3002", "auth_missing": "Home Assistant \u672a\u7372\u5f97\u9a57\u8b49\u4ee5\u9023\u7dda\u81f3\u6b64\u4e09\u661f\u96fb\u8996\u3002\u8acb\u6aa2\u67e5\u60a8\u7684\u96fb\u8996\u8a2d\u5b9a\u4ee5\u76e1\u8208\u9a57\u8b49\u3002", - "not_found": "\u5728\u7db2\u8def\u4e0a\u627e\u4e0d\u5230\u652f\u63f4\u7684\u4e09\u661f\u96fb\u8996\u3002", "not_successful": "\u7121\u6cd5\u9023\u7dda\u81f3\u4e09\u661f\u96fb\u8996\u8a2d\u5099\u3002", "not_supported": "\u4e0d\u652f\u63f4\u6b64\u6b3e\u4e09\u661f\u96fb\u8996\u3002" }, diff --git a/homeassistant/components/sensor/.translations/lb.json b/homeassistant/components/sensor/.translations/lb.json index 01a4e89c9f4..f999e3c16f0 100644 --- a/homeassistant/components/sensor/.translations/lb.json +++ b/homeassistant/components/sensor/.translations/lb.json @@ -1,26 +1,26 @@ { "device_automation": { "condition_type": { - "is_battery_level": "{entity_name} Batterie niveau", - "is_humidity": "{entity_name} Fiichtegkeet", - "is_illuminance": "{entity_name} Beliichtung", - "is_power": "{entity_name} Leeschtung", - "is_pressure": "{entity_name} Drock", - "is_signal_strength": "{entity_name} Signal St\u00e4erkt", - "is_temperature": "{entity_name} Temperatur", - "is_timestamp": "{entity_name} Z\u00e4itstempel", - "is_value": "{entity_name} W\u00e4ert" + "is_battery_level": "Aktuell {entity_name} Batterie niveau", + "is_humidity": "Aktuell {entity_name} Fiichtegkeet", + "is_illuminance": "Aktuell {entity_name} Beliichtung", + "is_power": "Aktuell {entity_name} Leeschtung", + "is_pressure": "Aktuell {entity_name} Drock", + "is_signal_strength": "Aktuell {entity_name} Signal St\u00e4erkt", + "is_temperature": "Aktuell {entity_name} Temperatur", + "is_timestamp": "Aktuelle {entity_name} Z\u00e4itstempel", + "is_value": "Aktuelle {entity_name} W\u00e4ert" }, "trigger_type": { - "battery_level": "{entity_name} Batterie niveau", - "humidity": "{entity_name} Fiichtegkeet", - "illuminance": "{entity_name} Beliichtung", - "power": "{entity_name} Leeschtung", - "pressure": "{entity_name} Drock", - "signal_strength": "{entity_name} Signal St\u00e4erkt", - "temperature": "{entity_name} Temperatur", - "timestamp": "{entity_name} Z\u00e4itstempel", - "value": "{entity_name} W\u00e4ert" + "battery_level": "{entity_name} Batterie niveau \u00e4nnert", + "humidity": "{entity_name} Fiichtegkeet \u00e4nnert", + "illuminance": "{entity_name} Beliichtung \u00e4nnert", + "power": "{entity_name} Leeschtung \u00e4nnert", + "pressure": "{entity_name} Drock \u00e4nnert", + "signal_strength": "{entity_name} Signal St\u00e4erkt \u00e4nnert", + "temperature": "{entity_name} Temperatur \u00e4nnert", + "timestamp": "{entity_name} Z\u00e4itstempel \u00e4nnert", + "value": "{entity_name} W\u00e4ert \u00e4nnert" } } } \ No newline at end of file diff --git a/homeassistant/components/simplisafe/.translations/bg.json b/homeassistant/components/simplisafe/.translations/bg.json index 4f15cc674b0..0ec8fd3c6b1 100644 --- a/homeassistant/components/simplisafe/.translations/bg.json +++ b/homeassistant/components/simplisafe/.translations/bg.json @@ -7,7 +7,6 @@ "step": { "user": { "data": { - "code": "\u041a\u043e\u0434 (\u0437\u0430 Home Assistant)", "password": "\u041f\u0430\u0440\u043e\u043b\u0430", "username": "E-mail \u0430\u0434\u0440\u0435\u0441" }, diff --git a/homeassistant/components/simplisafe/.translations/ca.json b/homeassistant/components/simplisafe/.translations/ca.json index 1f772071b59..f2d9db5797d 100644 --- a/homeassistant/components/simplisafe/.translations/ca.json +++ b/homeassistant/components/simplisafe/.translations/ca.json @@ -10,7 +10,6 @@ "step": { "user": { "data": { - "code": "Codi (pel Home Assistant)", "password": "Contrasenya", "username": "Correu electr\u00f2nic" }, diff --git a/homeassistant/components/simplisafe/.translations/cs.json b/homeassistant/components/simplisafe/.translations/cs.json index f4a47c5c344..2160dc226d9 100644 --- a/homeassistant/components/simplisafe/.translations/cs.json +++ b/homeassistant/components/simplisafe/.translations/cs.json @@ -7,7 +7,6 @@ "step": { "user": { "data": { - "code": "K\u00f3d (pro Home Assistant)", "password": "Heslo", "username": "E-mailov\u00e1 adresa" }, diff --git a/homeassistant/components/simplisafe/.translations/da.json b/homeassistant/components/simplisafe/.translations/da.json index ccd82979520..39324fe5f51 100644 --- a/homeassistant/components/simplisafe/.translations/da.json +++ b/homeassistant/components/simplisafe/.translations/da.json @@ -10,7 +10,6 @@ "step": { "user": { "data": { - "code": "Kode (til Home Assistant)", "password": "Adgangskode", "username": "Emailadresse" }, diff --git a/homeassistant/components/simplisafe/.translations/de.json b/homeassistant/components/simplisafe/.translations/de.json index 8c615a80c3f..08d5b31d202 100644 --- a/homeassistant/components/simplisafe/.translations/de.json +++ b/homeassistant/components/simplisafe/.translations/de.json @@ -10,7 +10,6 @@ "step": { "user": { "data": { - "code": "Code (f\u00fcr Home Assistant)", "password": "Passwort", "username": "E-Mail-Adresse" }, diff --git a/homeassistant/components/simplisafe/.translations/en.json b/homeassistant/components/simplisafe/.translations/en.json index c9d92c9e445..60c3784ee9d 100644 --- a/homeassistant/components/simplisafe/.translations/en.json +++ b/homeassistant/components/simplisafe/.translations/en.json @@ -10,7 +10,6 @@ "step": { "user": { "data": { - "code": "Code (for Home Assistant)", "password": "Password", "username": "Email Address" }, diff --git a/homeassistant/components/simplisafe/.translations/es-419.json b/homeassistant/components/simplisafe/.translations/es-419.json index 709d045c348..bf4127fbd84 100644 --- a/homeassistant/components/simplisafe/.translations/es-419.json +++ b/homeassistant/components/simplisafe/.translations/es-419.json @@ -7,7 +7,6 @@ "step": { "user": { "data": { - "code": "C\u00f3digo (para Home Assistant)", "password": "Contrase\u00f1a", "username": "Direcci\u00f3n de correo electr\u00f3nico" }, diff --git a/homeassistant/components/simplisafe/.translations/es.json b/homeassistant/components/simplisafe/.translations/es.json index dfd87be2721..fe159cf9fa8 100644 --- a/homeassistant/components/simplisafe/.translations/es.json +++ b/homeassistant/components/simplisafe/.translations/es.json @@ -10,7 +10,6 @@ "step": { "user": { "data": { - "code": "C\u00f3digo (para Home Assistant)", "password": "Contrase\u00f1a", "username": "Direcci\u00f3n de correo electr\u00f3nico" }, diff --git a/homeassistant/components/simplisafe/.translations/fr.json b/homeassistant/components/simplisafe/.translations/fr.json index 0f5049ecce4..e204fa96f1b 100644 --- a/homeassistant/components/simplisafe/.translations/fr.json +++ b/homeassistant/components/simplisafe/.translations/fr.json @@ -10,7 +10,6 @@ "step": { "user": { "data": { - "code": "Code (pour Home Assistant)", "password": "Mot de passe", "username": "Adresse e-mail" }, diff --git a/homeassistant/components/simplisafe/.translations/it.json b/homeassistant/components/simplisafe/.translations/it.json index 80f684cff7c..71581e845f4 100644 --- a/homeassistant/components/simplisafe/.translations/it.json +++ b/homeassistant/components/simplisafe/.translations/it.json @@ -10,7 +10,6 @@ "step": { "user": { "data": { - "code": "Codice (Home Assistant)", "password": "Password", "username": "Indirizzo E-mail" }, diff --git a/homeassistant/components/simplisafe/.translations/ko.json b/homeassistant/components/simplisafe/.translations/ko.json index 17d50bc1508..53e67cd5506 100644 --- a/homeassistant/components/simplisafe/.translations/ko.json +++ b/homeassistant/components/simplisafe/.translations/ko.json @@ -10,7 +10,6 @@ "step": { "user": { "data": { - "code": "\ucf54\ub4dc (Home Assistant \uc6a9)", "password": "\ube44\ubc00\ubc88\ud638", "username": "\uc774\uba54\uc77c \uc8fc\uc18c" }, diff --git a/homeassistant/components/simplisafe/.translations/lb.json b/homeassistant/components/simplisafe/.translations/lb.json index 81f4c82fcc7..a7e56f817d5 100644 --- a/homeassistant/components/simplisafe/.translations/lb.json +++ b/homeassistant/components/simplisafe/.translations/lb.json @@ -10,7 +10,6 @@ "step": { "user": { "data": { - "code": "Code (fir Home Assistant)", "password": "Passwuert", "username": "E-Mail Adress" }, diff --git a/homeassistant/components/simplisafe/.translations/nl.json b/homeassistant/components/simplisafe/.translations/nl.json index c84593c0b23..bad1c408144 100644 --- a/homeassistant/components/simplisafe/.translations/nl.json +++ b/homeassistant/components/simplisafe/.translations/nl.json @@ -7,7 +7,6 @@ "step": { "user": { "data": { - "code": "Code (voor Home Assistant)", "password": "Wachtwoord", "username": "E-mailadres" }, diff --git a/homeassistant/components/simplisafe/.translations/no.json b/homeassistant/components/simplisafe/.translations/no.json index 83a3f8cbaf9..436fba8fd06 100644 --- a/homeassistant/components/simplisafe/.translations/no.json +++ b/homeassistant/components/simplisafe/.translations/no.json @@ -10,7 +10,6 @@ "step": { "user": { "data": { - "code": "Kode (for Home Assistant)", "password": "Passord", "username": "E-postadresse" }, diff --git a/homeassistant/components/simplisafe/.translations/pl.json b/homeassistant/components/simplisafe/.translations/pl.json index 75a38230e88..b673d28a7ca 100644 --- a/homeassistant/components/simplisafe/.translations/pl.json +++ b/homeassistant/components/simplisafe/.translations/pl.json @@ -10,7 +10,6 @@ "step": { "user": { "data": { - "code": "Kod (dla Home Assistant'a)", "password": "Has\u0142o", "username": "Adres e-mail" }, diff --git a/homeassistant/components/simplisafe/.translations/pt-BR.json b/homeassistant/components/simplisafe/.translations/pt-BR.json index 819cb1d95e0..2f1fe9ca10a 100644 --- a/homeassistant/components/simplisafe/.translations/pt-BR.json +++ b/homeassistant/components/simplisafe/.translations/pt-BR.json @@ -7,7 +7,6 @@ "step": { "user": { "data": { - "code": "C\u00f3digo (para o Home Assistant)", "password": "Senha", "username": "Endere\u00e7o de e-mail" }, diff --git a/homeassistant/components/simplisafe/.translations/pt.json b/homeassistant/components/simplisafe/.translations/pt.json index 47929161976..809c8fc29a4 100644 --- a/homeassistant/components/simplisafe/.translations/pt.json +++ b/homeassistant/components/simplisafe/.translations/pt.json @@ -7,7 +7,6 @@ "step": { "user": { "data": { - "code": "C\u00f3digo (para Home Assistant)", "password": "Palavra-passe", "username": "Endere\u00e7o de e-mail" }, diff --git a/homeassistant/components/simplisafe/.translations/ro.json b/homeassistant/components/simplisafe/.translations/ro.json index b7e281a2bc2..33f284e93c2 100644 --- a/homeassistant/components/simplisafe/.translations/ro.json +++ b/homeassistant/components/simplisafe/.translations/ro.json @@ -7,7 +7,6 @@ "step": { "user": { "data": { - "code": "Cod (pentru Home Assistant)", "password": "Parola", "username": "Adresa de email" }, diff --git a/homeassistant/components/simplisafe/.translations/ru.json b/homeassistant/components/simplisafe/.translations/ru.json index 070ac3f3425..1e06319672a 100644 --- a/homeassistant/components/simplisafe/.translations/ru.json +++ b/homeassistant/components/simplisafe/.translations/ru.json @@ -10,7 +10,6 @@ "step": { "user": { "data": { - "code": "\u041a\u043e\u0434 (\u0434\u043b\u044f Home Assistant)", "password": "\u041f\u0430\u0440\u043e\u043b\u044c", "username": "\u0410\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b" }, diff --git a/homeassistant/components/simplisafe/.translations/sl.json b/homeassistant/components/simplisafe/.translations/sl.json index fde16021d69..15131fb1198 100644 --- a/homeassistant/components/simplisafe/.translations/sl.json +++ b/homeassistant/components/simplisafe/.translations/sl.json @@ -10,7 +10,6 @@ "step": { "user": { "data": { - "code": "Koda (za Home Assistant)", "password": "Geslo", "username": "E-po\u0161tni naslov" }, diff --git a/homeassistant/components/simplisafe/.translations/sv.json b/homeassistant/components/simplisafe/.translations/sv.json index 4666a9ea182..28ae99c1dc4 100644 --- a/homeassistant/components/simplisafe/.translations/sv.json +++ b/homeassistant/components/simplisafe/.translations/sv.json @@ -7,7 +7,6 @@ "step": { "user": { "data": { - "code": "Kod (f\u00f6r Home Assistant)", "password": "L\u00f6senord", "username": "E-postadress" }, diff --git a/homeassistant/components/simplisafe/.translations/uk.json b/homeassistant/components/simplisafe/.translations/uk.json index 4dee0ed5f4d..c7938df009e 100644 --- a/homeassistant/components/simplisafe/.translations/uk.json +++ b/homeassistant/components/simplisafe/.translations/uk.json @@ -3,7 +3,6 @@ "step": { "user": { "data": { - "code": "\u041a\u043e\u0434 (\u0434\u043b\u044f Home Assistant)", "password": "\u041f\u0430\u0440\u043e\u043b\u044c", "username": "\u0410\u0434\u0440\u0435\u0441\u0430 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438" }, diff --git a/homeassistant/components/simplisafe/.translations/zh-Hans.json b/homeassistant/components/simplisafe/.translations/zh-Hans.json index 4c57baea77f..2981ee71634 100644 --- a/homeassistant/components/simplisafe/.translations/zh-Hans.json +++ b/homeassistant/components/simplisafe/.translations/zh-Hans.json @@ -7,7 +7,6 @@ "step": { "user": { "data": { - "code": "\u4ee3\u7801\uff08\u7528\u4e8eHome Assistant\uff09", "password": "\u5bc6\u7801", "username": "\u7535\u5b50\u90ae\u4ef6\u5730\u5740" }, diff --git a/homeassistant/components/simplisafe/.translations/zh-Hant.json b/homeassistant/components/simplisafe/.translations/zh-Hant.json index 981fa5b59cf..bbe44a4fdea 100644 --- a/homeassistant/components/simplisafe/.translations/zh-Hant.json +++ b/homeassistant/components/simplisafe/.translations/zh-Hant.json @@ -10,7 +10,6 @@ "step": { "user": { "data": { - "code": "\u9a57\u8b49\u78bc\uff08Home Assistant \u7528\uff09", "password": "\u5bc6\u78bc", "username": "\u96fb\u5b50\u90f5\u4ef6\u5730\u5740" }, diff --git a/homeassistant/components/switch/.translations/bg.json b/homeassistant/components/switch/.translations/bg.json index 64a3ea94e1b..19a853dba97 100644 --- a/homeassistant/components/switch/.translations/bg.json +++ b/homeassistant/components/switch/.translations/bg.json @@ -7,9 +7,7 @@ }, "condition_type": { "is_off": "{entity_name} \u0435 \u0438\u0437\u043a\u043b\u044e\u0447\u0435\u043d", - "is_on": "{entity_name} \u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d", - "turn_off": "\u0418\u0437\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435 \u043d\u0430 {entity_name}", - "turn_on": "\u0412\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435 \u043d\u0430 {entity_name}" + "is_on": "{entity_name} \u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d" }, "trigger_type": { "turned_off": "\u0418\u0437\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435 \u043d\u0430 {entity_name}", diff --git a/homeassistant/components/switch/.translations/ca.json b/homeassistant/components/switch/.translations/ca.json index dbf5e152656..0f1101eca75 100644 --- a/homeassistant/components/switch/.translations/ca.json +++ b/homeassistant/components/switch/.translations/ca.json @@ -7,9 +7,7 @@ }, "condition_type": { "is_off": "{entity_name} est\u00e0 apagat", - "is_on": "{entity_name} est\u00e0 enc\u00e8s", - "turn_off": "{entity_name} desactivat", - "turn_on": "{entity_name} activat" + "is_on": "{entity_name} est\u00e0 enc\u00e8s" }, "trigger_type": { "turned_off": "{entity_name} desactivat", diff --git a/homeassistant/components/switch/.translations/da.json b/homeassistant/components/switch/.translations/da.json index 2514a56a010..eefa1e8bb6e 100644 --- a/homeassistant/components/switch/.translations/da.json +++ b/homeassistant/components/switch/.translations/da.json @@ -7,9 +7,7 @@ }, "condition_type": { "is_off": "{entity_name} er fra", - "is_on": "{entity_name} er til", - "turn_off": "{entity_name} slukket", - "turn_on": "{entity_name} t\u00e6ndt" + "is_on": "{entity_name} er til" }, "trigger_type": { "turned_off": "{entity_name} slukkede", diff --git a/homeassistant/components/switch/.translations/de.json b/homeassistant/components/switch/.translations/de.json index 5396facadd7..76496da6dc8 100644 --- a/homeassistant/components/switch/.translations/de.json +++ b/homeassistant/components/switch/.translations/de.json @@ -7,9 +7,7 @@ }, "condition_type": { "is_off": "{entity_name} ist ausgeschaltet", - "is_on": "{entity_name} ist eingeschaltet", - "turn_off": "{entity_name} ausgeschaltet", - "turn_on": "{entity_name} eingeschaltet" + "is_on": "{entity_name} ist eingeschaltet" }, "trigger_type": { "turned_off": "{entity_name} ausgeschaltet", diff --git a/homeassistant/components/switch/.translations/en.json b/homeassistant/components/switch/.translations/en.json index 391a071cb8f..3f37de5331e 100644 --- a/homeassistant/components/switch/.translations/en.json +++ b/homeassistant/components/switch/.translations/en.json @@ -7,9 +7,7 @@ }, "condition_type": { "is_off": "{entity_name} is off", - "is_on": "{entity_name} is on", - "turn_off": "{entity_name} turned off", - "turn_on": "{entity_name} turned on" + "is_on": "{entity_name} is on" }, "trigger_type": { "turned_off": "{entity_name} turned off", diff --git a/homeassistant/components/switch/.translations/es-419.json b/homeassistant/components/switch/.translations/es-419.json index f9607852036..b42b2ce56fa 100644 --- a/homeassistant/components/switch/.translations/es-419.json +++ b/homeassistant/components/switch/.translations/es-419.json @@ -6,9 +6,7 @@ }, "condition_type": { "is_off": "{entity_name} est\u00e1 apagado", - "is_on": "{entity_name} est\u00e1 encendido", - "turn_off": "{entity_name} apagado", - "turn_on": "{entity_name} encendido" + "is_on": "{entity_name} est\u00e1 encendido" }, "trigger_type": { "turned_off": "{entity_name} apagado", diff --git a/homeassistant/components/switch/.translations/es.json b/homeassistant/components/switch/.translations/es.json index 24dbc2cdc1f..c6790619182 100644 --- a/homeassistant/components/switch/.translations/es.json +++ b/homeassistant/components/switch/.translations/es.json @@ -7,9 +7,7 @@ }, "condition_type": { "is_off": "{entity_name} est\u00e1 apagada", - "is_on": "{entity_name} est\u00e1 encendida", - "turn_off": "{entity_name} apagado", - "turn_on": "{entity_name} encendido" + "is_on": "{entity_name} est\u00e1 encendida" }, "trigger_type": { "turned_off": "{entity_name} apagado", diff --git a/homeassistant/components/switch/.translations/fr.json b/homeassistant/components/switch/.translations/fr.json index 807b85c5fb5..adc91477a23 100644 --- a/homeassistant/components/switch/.translations/fr.json +++ b/homeassistant/components/switch/.translations/fr.json @@ -7,9 +7,7 @@ }, "condition_type": { "is_off": "{entity_name} est \u00e9teint", - "is_on": "{entity_name} est allum\u00e9", - "turn_off": "{entity_name} \u00e9teint", - "turn_on": "{entity_name} allum\u00e9" + "is_on": "{entity_name} est allum\u00e9" }, "trigger_type": { "turned_off": "{entity_name} \u00e9teint", diff --git a/homeassistant/components/switch/.translations/hu.json b/homeassistant/components/switch/.translations/hu.json index c3ea3190694..3fba61a4848 100644 --- a/homeassistant/components/switch/.translations/hu.json +++ b/homeassistant/components/switch/.translations/hu.json @@ -7,9 +7,7 @@ }, "condition_type": { "is_off": "{entity_name} ki van kapcsolva", - "is_on": "{entity_name} be van kapcsolva", - "turn_off": "{entity_name} ki lett kapcsolva", - "turn_on": "{entity_name} be lett kapcsolva" + "is_on": "{entity_name} be van kapcsolva" }, "trigger_type": { "turned_off": "{entity_name} ki lett kapcsolva", diff --git a/homeassistant/components/switch/.translations/it.json b/homeassistant/components/switch/.translations/it.json index ec742e4113b..32f479b8b5c 100644 --- a/homeassistant/components/switch/.translations/it.json +++ b/homeassistant/components/switch/.translations/it.json @@ -7,9 +7,7 @@ }, "condition_type": { "is_off": "{entity_name} \u00e8 disattivato", - "is_on": "{entity_name} \u00e8 attivo", - "turn_off": "{entity_name} disattivato", - "turn_on": "{entity_name} attivato" + "is_on": "{entity_name} \u00e8 attivo" }, "trigger_type": { "turned_off": "{entity_name} disattivato", diff --git a/homeassistant/components/switch/.translations/ko.json b/homeassistant/components/switch/.translations/ko.json index d3b9b1dd169..b923fdb210e 100644 --- a/homeassistant/components/switch/.translations/ko.json +++ b/homeassistant/components/switch/.translations/ko.json @@ -7,9 +7,7 @@ }, "condition_type": { "is_off": "{entity_name} \uc774(\uac00) \uaebc\uc838 \uc788\uc73c\uba74", - "is_on": "{entity_name} \uc774(\uac00) \ucf1c\uc838 \uc788\uc73c\uba74", - "turn_off": "{entity_name} \uc774(\uac00) \uaebc\uc838 \uc788\uc73c\uba74", - "turn_on": "{entity_name} \uc774(\uac00) \ucf1c\uc838 \uc788\uc73c\uba74" + "is_on": "{entity_name} \uc774(\uac00) \ucf1c\uc838 \uc788\uc73c\uba74" }, "trigger_type": { "turned_off": "{entity_name} \uc774(\uac00) \uaebc\uc9c8 \ub54c", diff --git a/homeassistant/components/switch/.translations/lb.json b/homeassistant/components/switch/.translations/lb.json index 8e974a0a8de..a7f807e8dcd 100644 --- a/homeassistant/components/switch/.translations/lb.json +++ b/homeassistant/components/switch/.translations/lb.json @@ -7,9 +7,7 @@ }, "condition_type": { "is_off": "{entity_name} ass aus", - "is_on": "{entity_name} ass un", - "turn_off": "{entity_name} gouf ausgeschalt", - "turn_on": "{entity_name} gouf ugeschalt" + "is_on": "{entity_name} ass un" }, "trigger_type": { "turned_off": "{entity_name} gouf ausgeschalt", diff --git a/homeassistant/components/switch/.translations/lv.json b/homeassistant/components/switch/.translations/lv.json index 784a9a37afa..7668dfa5ac8 100644 --- a/homeassistant/components/switch/.translations/lv.json +++ b/homeassistant/components/switch/.translations/lv.json @@ -1,9 +1,5 @@ { "device_automation": { - "condition_type": { - "turn_off": "{entity_name} tika izsl\u0113gta", - "turn_on": "{entity_name} tika iesl\u0113gta" - }, "trigger_type": { "turned_off": "{entity_name} tika izsl\u0113gta", "turned_on": "{entity_name} tika iesl\u0113gta" diff --git a/homeassistant/components/switch/.translations/nl.json b/homeassistant/components/switch/.translations/nl.json index 5e2aa6747a4..905ad413090 100644 --- a/homeassistant/components/switch/.translations/nl.json +++ b/homeassistant/components/switch/.translations/nl.json @@ -7,9 +7,7 @@ }, "condition_type": { "is_off": "{entity_name} is uitgeschakeld", - "is_on": "{entity_name} is ingeschakeld", - "turn_off": "{entity_name} uitgeschakeld", - "turn_on": "{entity_name} ingeschakeld" + "is_on": "{entity_name} is ingeschakeld" }, "trigger_type": { "turned_off": "{entity_name} uitgeschakeld", diff --git a/homeassistant/components/switch/.translations/no.json b/homeassistant/components/switch/.translations/no.json index 3469079f230..785e9ca2912 100644 --- a/homeassistant/components/switch/.translations/no.json +++ b/homeassistant/components/switch/.translations/no.json @@ -7,9 +7,7 @@ }, "condition_type": { "is_off": "{entity_name} er av", - "is_on": "{entity_name} er p\u00e5", - "turn_off": "{entity_name} sl\u00e5tt av", - "turn_on": "{entity_name} sl\u00e5tt p\u00e5" + "is_on": "{entity_name} er p\u00e5" }, "trigger_type": { "turned_off": "{entity_name} sl\u00e5tt av", diff --git a/homeassistant/components/switch/.translations/pl.json b/homeassistant/components/switch/.translations/pl.json index 3d352aa2b58..930694de8ca 100644 --- a/homeassistant/components/switch/.translations/pl.json +++ b/homeassistant/components/switch/.translations/pl.json @@ -7,9 +7,7 @@ }, "condition_type": { "is_off": "prze\u0142\u0105cznik {entity_name} jest wy\u0142\u0105czony", - "is_on": "prze\u0142\u0105cznik {entity_name} jest w\u0142\u0105czony", - "turn_off": "prze\u0142\u0105cznik {entity_name} wy\u0142\u0105czony", - "turn_on": "prze\u0142\u0105cznik {entity_name} w\u0142\u0105czony" + "is_on": "prze\u0142\u0105cznik {entity_name} jest w\u0142\u0105czony" }, "trigger_type": { "turned_off": "nast\u0105pi wy\u0142\u0105czenie {entity_name}", diff --git a/homeassistant/components/switch/.translations/ru.json b/homeassistant/components/switch/.translations/ru.json index 74503eea60b..8ca964606ae 100644 --- a/homeassistant/components/switch/.translations/ru.json +++ b/homeassistant/components/switch/.translations/ru.json @@ -7,9 +7,7 @@ }, "condition_type": { "is_off": "{entity_name} \u0432 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438", - "is_on": "{entity_name} \u0432\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438", - "turn_off": "{entity_name} \u0432 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438", - "turn_on": "{entity_name} \u0432\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438" + "is_on": "{entity_name} \u0432\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438" }, "trigger_type": { "turned_off": "{entity_name} \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f", diff --git a/homeassistant/components/switch/.translations/sl.json b/homeassistant/components/switch/.translations/sl.json index f1b851b05b6..bef4f1583b6 100644 --- a/homeassistant/components/switch/.translations/sl.json +++ b/homeassistant/components/switch/.translations/sl.json @@ -7,9 +7,7 @@ }, "condition_type": { "is_off": "{entity_name} je izklopljen", - "is_on": "{entity_name} je vklopljen", - "turn_off": "{entity_name} izklopljen", - "turn_on": "{entity_name} vklopljen" + "is_on": "{entity_name} je vklopljen" }, "trigger_type": { "turned_off": "{entity_name} izklopljen", diff --git a/homeassistant/components/switch/.translations/sv.json b/homeassistant/components/switch/.translations/sv.json index 3ec36265e52..ed5367e0013 100644 --- a/homeassistant/components/switch/.translations/sv.json +++ b/homeassistant/components/switch/.translations/sv.json @@ -7,9 +7,7 @@ }, "condition_type": { "is_off": "{entity_name} \u00e4r avst\u00e4ngd", - "is_on": "{entity_name} \u00e4r p\u00e5", - "turn_off": "{entity_name} st\u00e4ngdes av", - "turn_on": "{entity_name} slogs p\u00e5" + "is_on": "{entity_name} \u00e4r p\u00e5" }, "trigger_type": { "turned_off": "{entity_name} st\u00e4ngdes av", diff --git a/homeassistant/components/switch/.translations/zh-Hant.json b/homeassistant/components/switch/.translations/zh-Hant.json index 3eaac840497..d8bda90de85 100644 --- a/homeassistant/components/switch/.translations/zh-Hant.json +++ b/homeassistant/components/switch/.translations/zh-Hant.json @@ -7,9 +7,7 @@ }, "condition_type": { "is_off": "{entity_name}\u5df2\u95dc\u9589", - "is_on": "{entity_name}\u5df2\u958b\u555f", - "turn_off": "{entity_name}\u5df2\u95dc\u9589", - "turn_on": "{entity_name}\u5df2\u958b\u555f" + "is_on": "{entity_name}\u5df2\u958b\u555f" }, "trigger_type": { "turned_off": "{entity_name}\u5df2\u95dc\u9589", diff --git a/homeassistant/components/transmission/.translations/bg.json b/homeassistant/components/transmission/.translations/bg.json index 98160b89925..3278f7a3a4c 100644 --- a/homeassistant/components/transmission/.translations/bg.json +++ b/homeassistant/components/transmission/.translations/bg.json @@ -1,8 +1,7 @@ { "config": { "abort": { - "already_configured": "\u0410\u0434\u0440\u0435\u0441\u044a\u0442 \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d.", - "one_instance_allowed": "\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u0435 \u0441\u0430\u043c\u043e \u0435\u0434\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f." + "already_configured": "\u0410\u0434\u0440\u0435\u0441\u044a\u0442 \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d." }, "error": { "cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435 \u0441 \u0430\u0434\u0440\u0435\u0441\u0430", @@ -10,12 +9,6 @@ "wrong_credentials": "\u0413\u0440\u0435\u0448\u043d\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e \u0438\u043c\u0435 \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u0430" }, "step": { - "options": { - "data": { - "scan_interval": "\u0427\u0435\u0441\u0442\u043e\u0442\u0430 \u043d\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0435" - }, - "title": "\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0435" - }, "user": { "data": { "host": "\u0410\u0434\u0440\u0435\u0441", @@ -35,7 +28,6 @@ "data": { "scan_interval": "\u0427\u0435\u0441\u0442\u043e\u0442\u0430 \u043d\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0435" }, - "description": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043e\u043f\u0446\u0438\u0438\u0442\u0435 \u0437\u0430 Transmission", "title": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043e\u043f\u0446\u0438\u0438\u0442\u0435 \u0437\u0430 Transmission" } } diff --git a/homeassistant/components/transmission/.translations/ca.json b/homeassistant/components/transmission/.translations/ca.json index f621574683f..7630b50cdcf 100644 --- a/homeassistant/components/transmission/.translations/ca.json +++ b/homeassistant/components/transmission/.translations/ca.json @@ -1,8 +1,7 @@ { "config": { "abort": { - "already_configured": "L'amfitri\u00f3 ja est\u00e0 configurat.", - "one_instance_allowed": "Nom\u00e9s cal una sola inst\u00e0ncia." + "already_configured": "L'amfitri\u00f3 ja est\u00e0 configurat." }, "error": { "cannot_connect": "No s'ha pogut connectar amb l'amfitri\u00f3", @@ -10,12 +9,6 @@ "wrong_credentials": "Nom d'usuari o contrasenya incorrectes" }, "step": { - "options": { - "data": { - "scan_interval": "Freq\u00fc\u00e8ncia d\u2019actualitzaci\u00f3" - }, - "title": "Opcions de configuraci\u00f3" - }, "user": { "data": { "host": "Amfitri\u00f3", @@ -35,7 +28,6 @@ "data": { "scan_interval": "Freq\u00fc\u00e8ncia d\u2019actualitzaci\u00f3" }, - "description": "Opcions de configuraci\u00f3 de Transmission", "title": "Opcions de configuraci\u00f3 de Transmission" } } diff --git a/homeassistant/components/transmission/.translations/da.json b/homeassistant/components/transmission/.translations/da.json index e84ec938ee2..feabb364344 100644 --- a/homeassistant/components/transmission/.translations/da.json +++ b/homeassistant/components/transmission/.translations/da.json @@ -1,8 +1,7 @@ { "config": { "abort": { - "already_configured": "V\u00e6rten er allerede konfigureret.", - "one_instance_allowed": "Kun en enkelt instans er n\u00f8dvendig." + "already_configured": "V\u00e6rten er allerede konfigureret." }, "error": { "cannot_connect": "Kunne ikke oprette forbindelse til v\u00e6rt", @@ -10,12 +9,6 @@ "wrong_credentials": "Ugyldigt brugernavn eller adgangskode" }, "step": { - "options": { - "data": { - "scan_interval": "Opdateringsfrekvens" - }, - "title": "Konfigurationsmuligheder" - }, "user": { "data": { "host": "V\u00e6rt", @@ -35,7 +28,6 @@ "data": { "scan_interval": "Opdateringsfrekvens" }, - "description": "Konfigurationsindstillinger for Transmission", "title": "Konfigurationsindstillinger for Transmission" } } diff --git a/homeassistant/components/transmission/.translations/de.json b/homeassistant/components/transmission/.translations/de.json index 736a6d72659..c3d912e5e77 100644 --- a/homeassistant/components/transmission/.translations/de.json +++ b/homeassistant/components/transmission/.translations/de.json @@ -1,8 +1,7 @@ { "config": { "abort": { - "already_configured": "Host ist bereits konfiguriert.", - "one_instance_allowed": "Nur eine einzige Instanz ist notwendig." + "already_configured": "Host ist bereits konfiguriert." }, "error": { "cannot_connect": "Verbindung zum Host nicht m\u00f6glich", @@ -10,12 +9,6 @@ "wrong_credentials": "Falscher Benutzername oder Kennwort" }, "step": { - "options": { - "data": { - "scan_interval": "Aktualisierungsfrequenz" - }, - "title": "Konfigurationsoptionen" - }, "user": { "data": { "host": "Host", @@ -35,7 +28,6 @@ "data": { "scan_interval": "Aktualisierungsfrequenz" }, - "description": "Konfigurieren von Optionen f\u00fcr Transmission", "title": "Konfiguriere die Optionen f\u00fcr die \u00dcbertragung" } } diff --git a/homeassistant/components/transmission/.translations/en.json b/homeassistant/components/transmission/.translations/en.json index aa8b99a4914..3605f21e140 100644 --- a/homeassistant/components/transmission/.translations/en.json +++ b/homeassistant/components/transmission/.translations/en.json @@ -1,8 +1,7 @@ { "config": { "abort": { - "already_configured": "Host is already configured.", - "one_instance_allowed": "Only a single instance is necessary." + "already_configured": "Host is already configured." }, "error": { "cannot_connect": "Unable to Connect to host", @@ -10,12 +9,6 @@ "wrong_credentials": "Wrong username or password" }, "step": { - "options": { - "data": { - "scan_interval": "Update frequency" - }, - "title": "Configure Options" - }, "user": { "data": { "host": "Host", @@ -35,7 +28,6 @@ "data": { "scan_interval": "Update frequency" }, - "description": "Configure options for Transmission", "title": "Configure options for Transmission" } } diff --git a/homeassistant/components/transmission/.translations/es.json b/homeassistant/components/transmission/.translations/es.json index 06ea19e72b8..a1d0f364769 100644 --- a/homeassistant/components/transmission/.translations/es.json +++ b/homeassistant/components/transmission/.translations/es.json @@ -1,8 +1,7 @@ { "config": { "abort": { - "already_configured": "El host ya est\u00e1 configurado.", - "one_instance_allowed": "S\u00f3lo se necesita una sola instancia." + "already_configured": "El host ya est\u00e1 configurado." }, "error": { "cannot_connect": "No se puede conectar al host", @@ -10,12 +9,6 @@ "wrong_credentials": "Nombre de usuario o contrase\u00f1a incorrectos" }, "step": { - "options": { - "data": { - "scan_interval": "Frecuencia de actualizaci\u00f3n" - }, - "title": "Configurar opciones" - }, "user": { "data": { "host": "Host", @@ -35,7 +28,6 @@ "data": { "scan_interval": "Frecuencia de actualizaci\u00f3n" }, - "description": "Configurar opciones para la transmisi\u00f3n", "title": "Configurar opciones para la transmisi\u00f3n" } } diff --git a/homeassistant/components/transmission/.translations/fr.json b/homeassistant/components/transmission/.translations/fr.json index 3c267b36a08..c7a78201797 100644 --- a/homeassistant/components/transmission/.translations/fr.json +++ b/homeassistant/components/transmission/.translations/fr.json @@ -1,8 +1,7 @@ { "config": { "abort": { - "already_configured": "L'h\u00f4te est d\u00e9j\u00e0 configur\u00e9.", - "one_instance_allowed": "Une seule instance est n\u00e9cessaire." + "already_configured": "L'h\u00f4te est d\u00e9j\u00e0 configur\u00e9." }, "error": { "cannot_connect": "Impossible de se connecter \u00e0 l'h\u00f4te", @@ -10,12 +9,6 @@ "wrong_credentials": "Mauvais nom d'utilisateur ou mot de passe" }, "step": { - "options": { - "data": { - "scan_interval": "Fr\u00e9quence de mise \u00e0 jour" - }, - "title": "Configurer les options" - }, "user": { "data": { "host": "H\u00f4te", @@ -35,7 +28,6 @@ "data": { "scan_interval": "Fr\u00e9quence de mise \u00e0 jour" }, - "description": "Configurer les options pour Transmission", "title": "Configurer les options pour Transmission" } } diff --git a/homeassistant/components/transmission/.translations/hu.json b/homeassistant/components/transmission/.translations/hu.json index 14bf5c28bdf..cbd2f44c340 100644 --- a/homeassistant/components/transmission/.translations/hu.json +++ b/homeassistant/components/transmission/.translations/hu.json @@ -1,20 +1,11 @@ { "config": { - "abort": { - "one_instance_allowed": "Csak egyetlen p\u00e9ld\u00e1nyra van sz\u00fcks\u00e9g." - }, "error": { "cannot_connect": "Nem lehet csatlakozni az \u00e1llom\u00e1shoz", "name_exists": "A n\u00e9v m\u00e1r l\u00e9tezik", "wrong_credentials": "Rossz felhaszn\u00e1l\u00f3n\u00e9v vagy jelsz\u00f3" }, "step": { - "options": { - "data": { - "scan_interval": "Friss\u00edt\u00e9si gyakoris\u00e1g" - }, - "title": "Be\u00e1ll\u00edt\u00e1sok konfigur\u00e1l\u00e1sa" - }, "user": { "data": { "host": "Kiszolg\u00e1l\u00f3", diff --git a/homeassistant/components/transmission/.translations/it.json b/homeassistant/components/transmission/.translations/it.json index a7c4c675856..8a1f01783c1 100644 --- a/homeassistant/components/transmission/.translations/it.json +++ b/homeassistant/components/transmission/.translations/it.json @@ -1,8 +1,7 @@ { "config": { "abort": { - "already_configured": "L'host \u00e8 gi\u00e0 configurato.", - "one_instance_allowed": "\u00c8 necessaria solo una singola istanza." + "already_configured": "L'host \u00e8 gi\u00e0 configurato." }, "error": { "cannot_connect": "Impossibile connettersi all'host", @@ -10,12 +9,6 @@ "wrong_credentials": "Nome utente o password non validi" }, "step": { - "options": { - "data": { - "scan_interval": "Frequenza di aggiornamento" - }, - "title": "Configura opzioni" - }, "user": { "data": { "host": "Host", @@ -35,7 +28,6 @@ "data": { "scan_interval": "Frequenza di aggiornamento" }, - "description": "Configurare le opzioni per Trasmissione", "title": "Configurare le opzioni per Transmission" } } diff --git a/homeassistant/components/transmission/.translations/ko.json b/homeassistant/components/transmission/.translations/ko.json index 507d4e84789..4d3537818b7 100644 --- a/homeassistant/components/transmission/.translations/ko.json +++ b/homeassistant/components/transmission/.translations/ko.json @@ -1,8 +1,7 @@ { "config": { "abort": { - "already_configured": "\ud638\uc2a4\ud2b8\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.", - "one_instance_allowed": "\ud558\ub098\uc758 \uc778\uc2a4\ud134\uc2a4\ub9cc \ud544\uc694\ud569\ub2c8\ub2e4." + "already_configured": "\ud638\uc2a4\ud2b8\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4." }, "error": { "cannot_connect": "\ud638\uc2a4\ud2b8\uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4", @@ -10,12 +9,6 @@ "wrong_credentials": "\uc0ac\uc6a9\uc790 \uc774\ub984 \ub610\ub294 \ube44\ubc00\ubc88\ud638\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4" }, "step": { - "options": { - "data": { - "scan_interval": "\uc5c5\ub370\uc774\ud2b8 \ube48\ub3c4" - }, - "title": "\uc635\uc158 \uc124\uc815" - }, "user": { "data": { "host": "\ud638\uc2a4\ud2b8", @@ -35,7 +28,6 @@ "data": { "scan_interval": "\uc5c5\ub370\uc774\ud2b8 \ube48\ub3c4" }, - "description": "Transmission \uc635\uc158 \uc124\uc815", "title": "Transmission \uc635\uc158 \uc124\uc815" } } diff --git a/homeassistant/components/transmission/.translations/lb.json b/homeassistant/components/transmission/.translations/lb.json index a012bcd8cde..0533574efb0 100644 --- a/homeassistant/components/transmission/.translations/lb.json +++ b/homeassistant/components/transmission/.translations/lb.json @@ -1,8 +1,7 @@ { "config": { "abort": { - "already_configured": "Apparat ass scho konfigur\u00e9iert", - "one_instance_allowed": "N\u00ebmmen eng eenzeg Instanz ass n\u00e9ideg." + "already_configured": "Apparat ass scho konfigur\u00e9iert" }, "error": { "cannot_connect": "Kann sech net mam Server verbannen.", @@ -10,12 +9,6 @@ "wrong_credentials": "Falsche Benotzernumm oder Passwuert" }, "step": { - "options": { - "data": { - "scan_interval": "Intervalle vun de Mise \u00e0 jour" - }, - "title": "Optioune konfigur\u00e9ieren" - }, "user": { "data": { "host": "Server", @@ -35,7 +28,6 @@ "data": { "scan_interval": "Intervalle vun de Mise \u00e0 jour" }, - "description": "Optioune fir Transmission konfigur\u00e9ieren", "title": "Optioune fir Transmission konfigur\u00e9ieren" } } diff --git a/homeassistant/components/transmission/.translations/nl.json b/homeassistant/components/transmission/.translations/nl.json index ccb9c569562..5abf25e286c 100644 --- a/homeassistant/components/transmission/.translations/nl.json +++ b/homeassistant/components/transmission/.translations/nl.json @@ -1,8 +1,7 @@ { "config": { "abort": { - "already_configured": "Host is al geconfigureerd.", - "one_instance_allowed": "Slechts \u00e9\u00e9n instantie is nodig." + "already_configured": "Host is al geconfigureerd." }, "error": { "cannot_connect": "Kan geen verbinding maken met host", @@ -10,12 +9,6 @@ "wrong_credentials": "verkeerde gebruikersnaam of wachtwoord" }, "step": { - "options": { - "data": { - "scan_interval": "Update frequentie" - }, - "title": "Configureer opties" - }, "user": { "data": { "host": "Host", @@ -35,7 +28,6 @@ "data": { "scan_interval": "Update frequentie" }, - "description": "Configureer opties voor Transmission", "title": "Configureer de opties voor Transmission" } } diff --git a/homeassistant/components/transmission/.translations/no.json b/homeassistant/components/transmission/.translations/no.json index c46a6d782ea..d18a854d6e3 100644 --- a/homeassistant/components/transmission/.translations/no.json +++ b/homeassistant/components/transmission/.translations/no.json @@ -1,8 +1,7 @@ { "config": { "abort": { - "already_configured": "Verten er allerede konfigurert.", - "one_instance_allowed": "Bare en enkel instans er n\u00f8dvendig." + "already_configured": "Verten er allerede konfigurert." }, "error": { "cannot_connect": "Kan ikke koble til vert", @@ -10,12 +9,6 @@ "wrong_credentials": "Ugyldig brukernavn eller passord" }, "step": { - "options": { - "data": { - "scan_interval": "Oppdater frekvens" - }, - "title": "Konfigurer alternativer" - }, "user": { "data": { "host": "Vert", @@ -35,7 +28,6 @@ "data": { "scan_interval": "Oppdater frekvens" }, - "description": "Konfigurer alternativer for Transmission", "title": "Konfigurer alternativer for Transmission" } } diff --git a/homeassistant/components/transmission/.translations/pl.json b/homeassistant/components/transmission/.translations/pl.json index 5aac538766b..f3e8c01f3d7 100644 --- a/homeassistant/components/transmission/.translations/pl.json +++ b/homeassistant/components/transmission/.translations/pl.json @@ -1,8 +1,7 @@ { "config": { "abort": { - "already_configured": "Host jest ju\u017c skonfigurowany.", - "one_instance_allowed": "Wymagana jest tylko jedna instancja." + "already_configured": "Host jest ju\u017c skonfigurowany." }, "error": { "cannot_connect": "Nie mo\u017cna po\u0142\u0105czy\u0107 si\u0119 z hostem", @@ -10,12 +9,6 @@ "wrong_credentials": "Nieprawid\u0142owa nazwa u\u017cytkownika lub has\u0142o" }, "step": { - "options": { - "data": { - "scan_interval": "Cz\u0119stotliwo\u015b\u0107 aktualizacji" - }, - "title": "Opcje" - }, "user": { "data": { "host": "Host", @@ -35,7 +28,6 @@ "data": { "scan_interval": "Cz\u0119stotliwo\u015b\u0107 aktualizacji" }, - "description": "Konfiguracja opcji dla Transmission", "title": "Konfiguracja opcji dla Transmission" } } diff --git a/homeassistant/components/transmission/.translations/pt-BR.json b/homeassistant/components/transmission/.translations/pt-BR.json index de854e1273c..2c162e66ce7 100644 --- a/homeassistant/components/transmission/.translations/pt-BR.json +++ b/homeassistant/components/transmission/.translations/pt-BR.json @@ -1,8 +1,7 @@ { "config": { "abort": { - "already_configured": "O host j\u00e1 est\u00e1 configurado.", - "one_instance_allowed": "Apenas uma \u00fanica inst\u00e2ncia \u00e9 necess\u00e1ria." + "already_configured": "O host j\u00e1 est\u00e1 configurado." }, "error": { "cannot_connect": "N\u00e3o foi poss\u00edvel conectar ao host", @@ -10,12 +9,6 @@ "wrong_credentials": "Nome de usu\u00e1rio ou senha incorretos" }, "step": { - "options": { - "data": { - "scan_interval": "Frequ\u00eancia de atualiza\u00e7\u00e3o" - }, - "title": "Op\u00e7\u00f5es de configura\u00e7\u00e3o" - }, "user": { "data": { "host": "Host", @@ -35,7 +28,6 @@ "data": { "scan_interval": "Frequ\u00eancia de atualiza\u00e7\u00e3o" }, - "description": "Configurar op\u00e7\u00f5es para transmiss\u00e3o", "title": "Configurar op\u00e7\u00f5es para Transmission" } } diff --git a/homeassistant/components/transmission/.translations/ru.json b/homeassistant/components/transmission/.translations/ru.json index 9f876dde505..ad43d3ee600 100644 --- a/homeassistant/components/transmission/.translations/ru.json +++ b/homeassistant/components/transmission/.translations/ru.json @@ -1,8 +1,7 @@ { "config": { "abort": { - "already_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.", - "one_instance_allowed": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430." + "already_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430." }, "error": { "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u0445\u043e\u0441\u0442\u0443.", @@ -10,12 +9,6 @@ "wrong_credentials": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043b\u043e\u0433\u0438\u043d \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c." }, "step": { - "options": { - "data": { - "scan_interval": "\u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f" - }, - "title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Transmission" - }, "user": { "data": { "host": "\u0425\u043e\u0441\u0442", @@ -35,7 +28,6 @@ "data": { "scan_interval": "\u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f" }, - "description": "\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Transmission", "title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Transmission" } } diff --git a/homeassistant/components/transmission/.translations/sl.json b/homeassistant/components/transmission/.translations/sl.json index 37ce27e19f4..765fb284c3a 100644 --- a/homeassistant/components/transmission/.translations/sl.json +++ b/homeassistant/components/transmission/.translations/sl.json @@ -1,8 +1,7 @@ { "config": { "abort": { - "already_configured": "Gostitelj je \u017ee konfiguriran.", - "one_instance_allowed": "Potrebna je samo ena instanca." + "already_configured": "Gostitelj je \u017ee konfiguriran." }, "error": { "cannot_connect": "Ni mogo\u010de vzpostaviti povezave z gostiteljem", @@ -10,12 +9,6 @@ "wrong_credentials": "Napa\u010dno uporabni\u0161ko ime ali geslo" }, "step": { - "options": { - "data": { - "scan_interval": "Pogostost posodabljanja" - }, - "title": "Nastavite mo\u017enosti" - }, "user": { "data": { "host": "Gostitelj", @@ -35,7 +28,6 @@ "data": { "scan_interval": "Pogostost posodabljanja" }, - "description": "Nastavite mo\u017enosti za Transmission", "title": "Nastavite mo\u017enosti za Transmission" } } diff --git a/homeassistant/components/transmission/.translations/sv.json b/homeassistant/components/transmission/.translations/sv.json index b2a00771e85..289c9f985e3 100644 --- a/homeassistant/components/transmission/.translations/sv.json +++ b/homeassistant/components/transmission/.translations/sv.json @@ -1,8 +1,7 @@ { "config": { "abort": { - "already_configured": "V\u00e4rden \u00e4r redan konfigurerad.", - "one_instance_allowed": "Endast en enda instans \u00e4r n\u00f6dv\u00e4ndig." + "already_configured": "V\u00e4rden \u00e4r redan konfigurerad." }, "error": { "cannot_connect": "Det g\u00e5r inte att ansluta till v\u00e4rden", @@ -10,12 +9,6 @@ "wrong_credentials": "Fel anv\u00e4ndarnamn eller l\u00f6senord" }, "step": { - "options": { - "data": { - "scan_interval": "Uppdateringsfrekvens" - }, - "title": "Konfigurera alternativ" - }, "user": { "data": { "host": "V\u00e4rd", @@ -35,7 +28,6 @@ "data": { "scan_interval": "Uppdateringsfrekvens" }, - "description": "Konfigurera alternativ f\u00f6r Transmission", "title": "Konfigurera alternativ f\u00f6r Transmission" } } diff --git a/homeassistant/components/transmission/.translations/zh-Hant.json b/homeassistant/components/transmission/.translations/zh-Hant.json index 304babc991e..6ae573211c6 100644 --- a/homeassistant/components/transmission/.translations/zh-Hant.json +++ b/homeassistant/components/transmission/.translations/zh-Hant.json @@ -1,8 +1,7 @@ { "config": { "abort": { - "already_configured": "\u4e3b\u6a5f\u7aef\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210\u3002", - "one_instance_allowed": "\u50c5\u9700\u8a2d\u5b9a\u4e00\u7d44\u7269\u4ef6\u5373\u53ef\u3002" + "already_configured": "\u4e3b\u6a5f\u7aef\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210\u3002" }, "error": { "cannot_connect": "\u7121\u6cd5\u9023\u7dda\u81f3\u4e3b\u6a5f\u7aef", @@ -10,12 +9,6 @@ "wrong_credentials": "\u4f7f\u7528\u8005\u540d\u7a31\u6216\u5bc6\u78bc\u932f\u8aa4" }, "step": { - "options": { - "data": { - "scan_interval": "\u66f4\u65b0\u983b\u7387" - }, - "title": "\u8a2d\u5b9a\u9078\u9805" - }, "user": { "data": { "host": "\u4e3b\u6a5f\u7aef", @@ -35,7 +28,6 @@ "data": { "scan_interval": "\u66f4\u65b0\u983b\u7387" }, - "description": "Transmission \u8a2d\u5b9a\u9078\u9805", "title": "Transmission \u8a2d\u5b9a\u9078\u9805" } } diff --git a/homeassistant/components/unifi/.translations/ca.json b/homeassistant/components/unifi/.translations/ca.json index 3a6e147e867..7eefb77b3d2 100644 --- a/homeassistant/components/unifi/.translations/ca.json +++ b/homeassistant/components/unifi/.translations/ca.json @@ -32,7 +32,8 @@ "client_control": { "data": { "block_client": "Clients controlats amb acc\u00e9s a la xarxa", - "new_client": "Afegeix un client nou per al control d\u2019acc\u00e9s a la xarxa" + "new_client": "Afegeix un client nou per al control d\u2019acc\u00e9s a la xarxa", + "poe_clients": "Permet control POE dels clients" }, "description": "Configura els controls del client \n\nConfigura interruptors per als n\u00fameros de s\u00e8rie als quals vulguis controlar l'acc\u00e9s a la xarxa.", "title": "Opcions d'UniFi 2/3" diff --git a/homeassistant/components/unifi/.translations/de.json b/homeassistant/components/unifi/.translations/de.json index 655000662ec..afdea87956b 100644 --- a/homeassistant/components/unifi/.translations/de.json +++ b/homeassistant/components/unifi/.translations/de.json @@ -32,7 +32,8 @@ "client_control": { "data": { "block_client": "Clients mit Netzwerkzugriffskontrolle", - "new_client": "F\u00fcgen Sie einen neuen Client f\u00fcr die Netzwerkzugangskontrolle hinzu" + "new_client": "F\u00fcgen Sie einen neuen Client f\u00fcr die Netzwerkzugangskontrolle hinzu", + "poe_clients": "POE-Kontrolle von Clients zulassen" }, "description": "Konfigurieren Sie Client-Steuerelemente \n\nErstellen Sie Switches f\u00fcr Seriennummern, f\u00fcr die Sie den Netzwerkzugriff steuern m\u00f6chten.", "title": "UniFi-Optionen 2/3" diff --git a/homeassistant/components/unifi/.translations/en.json b/homeassistant/components/unifi/.translations/en.json index 8fdde34470b..d42a647c82f 100644 --- a/homeassistant/components/unifi/.translations/en.json +++ b/homeassistant/components/unifi/.translations/en.json @@ -32,7 +32,8 @@ "client_control": { "data": { "block_client": "Network access controlled clients", - "new_client": "Add new client for network access control" + "new_client": "Add new client for network access control", + "poe_clients": "Allow POE control of clients" }, "description": "Configure client controls\n\nCreate switches for serial numbers you want to control network access for.", "title": "UniFi options 2/3" diff --git a/homeassistant/components/unifi/.translations/es.json b/homeassistant/components/unifi/.translations/es.json index b6713bb09bb..31c7e6c0bcd 100644 --- a/homeassistant/components/unifi/.translations/es.json +++ b/homeassistant/components/unifi/.translations/es.json @@ -32,7 +32,8 @@ "client_control": { "data": { "block_client": "Clientes con acceso controlado a la red", - "new_client": "A\u00f1adir nuevo cliente para el control de acceso a la red" + "new_client": "A\u00f1adir nuevo cliente para el control de acceso a la red", + "poe_clients": "Permitir control PoE de clientes" }, "description": "Configurar controles de cliente\n\nCrea conmutadores para los n\u00fameros de serie para los que deseas controlar el acceso a la red.", "title": "Opciones UniFi 2/3" diff --git a/homeassistant/components/unifi/.translations/ko.json b/homeassistant/components/unifi/.translations/ko.json index 5c45e272e91..d57d80c7911 100644 --- a/homeassistant/components/unifi/.translations/ko.json +++ b/homeassistant/components/unifi/.translations/ko.json @@ -32,7 +32,8 @@ "client_control": { "data": { "block_client": "\ub124\ud2b8\uc6cc\ud06c \uc561\uc138\uc2a4 \uc81c\uc5b4 \ud074\ub77c\uc774\uc5b8\ud2b8", - "new_client": "\ub124\ud2b8\uc6cc\ud06c \uc561\uc138\uc2a4 \uc81c\uc5b4\ub97c \uc704\ud55c \uc0c8\ub85c\uc6b4 \ud074\ub77c\uc774\uc5b8\ud2b8 \ucd94\uac00" + "new_client": "\ub124\ud2b8\uc6cc\ud06c \uc561\uc138\uc2a4 \uc81c\uc5b4\ub97c \uc704\ud55c \uc0c8\ub85c\uc6b4 \ud074\ub77c\uc774\uc5b8\ud2b8 \ucd94\uac00", + "poe_clients": "\ud074\ub77c\uc774\uc5b8\ud2b8\uc758 POE \uc81c\uc5b4 \ud5c8\uc6a9" }, "description": "\ud074\ub77c\uc774\uc5b8\ud2b8 \ucee8\ud2b8\ub864 \uad6c\uc131 \n\n\ub124\ud2b8\uc6cc\ud06c \uc561\uc138\uc2a4\ub97c \uc81c\uc5b4\ud558\ub824\ub294 \uc2dc\ub9ac\uc5bc \ubc88\ud638\uc5d0 \ub300\ud55c \uc2a4\uc704\uce58\ub97c \ub9cc\ub4ed\ub2c8\ub2e4.", "title": "UniFi \uc635\uc158 2/3" diff --git a/homeassistant/components/unifi/.translations/lb.json b/homeassistant/components/unifi/.translations/lb.json index 13bb40dd25e..a3d7d685ed2 100644 --- a/homeassistant/components/unifi/.translations/lb.json +++ b/homeassistant/components/unifi/.translations/lb.json @@ -6,7 +6,8 @@ }, "error": { "faulty_credentials": "Ong\u00eblteg Login Informatioune", - "service_unavailable": "Keen Service disponibel" + "service_unavailable": "Keen Service disponibel", + "unknown_client_mac": "Kee Cliwent mat der MAC Adress disponibel" }, "step": { "user": { @@ -23,19 +24,30 @@ }, "title": "Unifi Kontroller" }, + "error": { + "unknown_client_mac": "Kee Client am Unifi disponibel mat der MAC Adress" + }, "options": { "step": { "client_control": { + "data": { + "block_client": "Netzwierk Zougang kontroll\u00e9iert Clienten", + "new_client": "Neie Client fir Netzwierk Zougang Kontroll b\u00e4isetzen", + "poe_clients": "POE Kontroll vun Clienten erlaben" + }, + "description": "Client Kontroll konfigur\u00e9ieren\n\nErstell Schalter fir Serienummer d\u00e9i sollen fir Netzwierk Zougangs Kontroll kontroll\u00e9iert ginn.", "title": "UniFi Optiounen 2/3" }, "device_tracker": { "data": { "detection_time": "Z\u00e4it a Sekonne vum leschten Z\u00e4itpunkt un bis den Apparat als \u00ebnnerwee consider\u00e9iert g\u00ebtt", + "ssid_filter": "SSIDs auswielen fir Clienten ze verfollegen", "track_clients": "Netzwierk Cliente verfollegen", "track_devices": "Netzwierk Apparater (Ubiquiti Apparater) verfollegen", "track_wired_clients": "Kabel Netzwierk Cliente abez\u00e9ien" }, - "title": "UniFi Optiounen" + "description": "Apparate verfollegen ariichten", + "title": "UniFi Optiounen 1/3" }, "init": { "data": { @@ -48,7 +60,7 @@ "allow_bandwidth_sensors": "Bandbreet Benotzung Sensore fir Netzwierk Cliente erstellen" }, "description": "Statistik Sensoren konfigur\u00e9ieren", - "title": "UniFi Optiounen" + "title": "UniFi Optiounen 3/3" } } } diff --git a/homeassistant/components/unifi/.translations/ru.json b/homeassistant/components/unifi/.translations/ru.json index b73c6b9c2fb..6cd09a947eb 100644 --- a/homeassistant/components/unifi/.translations/ru.json +++ b/homeassistant/components/unifi/.translations/ru.json @@ -29,7 +29,8 @@ "client_control": { "data": { "block_client": "\u041a\u043b\u0438\u0435\u043d\u0442\u044b \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u043c \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430", - "new_client": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430" + "new_client": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430", + "poe_clients": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c POE \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432" }, "title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 UniFi. \u0428\u0430\u0433 2" }, diff --git a/homeassistant/components/unifi/.translations/zh-Hant.json b/homeassistant/components/unifi/.translations/zh-Hant.json index ca920abd492..e91bfca407c 100644 --- a/homeassistant/components/unifi/.translations/zh-Hant.json +++ b/homeassistant/components/unifi/.translations/zh-Hant.json @@ -32,7 +32,8 @@ "client_control": { "data": { "block_client": "\u7db2\u8def\u5b58\u53d6\u63a7\u5236\u5ba2\u6236\u7aef", - "new_client": "\u65b0\u589e\u9396\u8981\u63a7\u5236\u7db2\u8def\u5b58\u53d6\u7684\u5ba2\u6236\u7aef" + "new_client": "\u65b0\u589e\u9396\u8981\u63a7\u5236\u7db2\u8def\u5b58\u53d6\u7684\u5ba2\u6236\u7aef", + "poe_clients": "\u5141\u8a31 POE \u63a7\u5236\u5ba2\u6236\u7aef" }, "description": "\u8a2d\u5b9a\u5ba2\u6236\u7aef\u63a7\u5236\n\n\u65b0\u589e\u9396\u8981\u63a7\u5236\u7db2\u8def\u5b58\u53d6\u7684\u958b\u95dc\u5e8f\u865f\u3002", "title": "UniFi \u9078\u9805 2/3" diff --git a/homeassistant/components/vera/.translations/ca.json b/homeassistant/components/vera/.translations/ca.json new file mode 100644 index 00000000000..d15d12ce6c3 --- /dev/null +++ b/homeassistant/components/vera/.translations/ca.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "Ja hi ha un controlador configurat.", + "cannot_connect": "No s'ha pogut connectar amb el controlador amb l'URL {base_url}" + }, + "step": { + "user": { + "data": { + "exclude": "Identificadors de dispositiu Vera a excloure de Home Assistant.", + "lights": "Identificadors de dispositiu dels commutadors Vera a tractar com a llums a Home Assistant.", + "vera_controller_url": "URL del controlador" + }, + "description": "Proporciona un URL pel controlador Vera. Hauria de quedar aix\u00ed: http://192.168.1.161:3480.", + "title": "Configuraci\u00f3 del controlador Vera" + } + }, + "title": "Vera" + }, + "options": { + "step": { + "init": { + "data": { + "exclude": "Identificadors de dispositiu Vera a excloure de Home Assistant.", + "lights": "Identificadors de dispositiu dels commutadors Vera a tractar com a llums a Home Assistant." + }, + "description": "Consulta la documentaci\u00f3 de Vera per veure els detalls sobre els par\u00e0metres opcionals a: https://www.home-assistant.io/integrations/vera/. Nota: tots els canvis fets aqu\u00ed necessitaran un reinici de Home Assistant. Per esborrar valors, posa-hi un espai.", + "title": "Opcions del controlador Vera" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vera/.translations/de.json b/homeassistant/components/vera/.translations/de.json new file mode 100644 index 00000000000..91f61c9c2bc --- /dev/null +++ b/homeassistant/components/vera/.translations/de.json @@ -0,0 +1,31 @@ +{ + "config": { + "abort": { + "already_configured": "Ein Controller ist bereits konfiguriert.", + "cannot_connect": "Konnte keine Verbindung zum Controller mit url {base_url} herstellen" + }, + "step": { + "user": { + "data": { + "exclude": "Vera-Ger\u00e4te-IDs, die vom Home Assistant ausgeschlossen werden sollen.", + "lights": "Vera Switch-Ger\u00e4te-IDs, die im Home Assistant als Lichter behandelt werden sollen.", + "vera_controller_url": "Controller-URL" + }, + "description": "Stellen Sie unten eine Vera-Controller-Url zur Verf\u00fcgung. Sie sollte wie folgt aussehen: http://192.168.1.161:3480.", + "title": "Richten Sie den Vera-Controller ein" + } + }, + "title": "Vera" + }, + "options": { + "step": { + "init": { + "data": { + "exclude": "Vera-Ger\u00e4te-IDs, die vom Home Assistant ausgeschlossen werden sollen." + }, + "description": "Weitere Informationen zu optionalen Parametern finden Sie in der Vera-Dokumentation: https://www.home-assistant.io/integrations/vera/. Hinweis: Alle \u00c4nderungen hier erfordern einen Neustart des Home Assistant-Servers. Geben Sie ein Leerzeichen ein, um Werte zu l\u00f6schen.", + "title": "Vera Controller Optionen" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vera/.translations/en.json b/homeassistant/components/vera/.translations/en.json new file mode 100644 index 00000000000..0578daa4c0b --- /dev/null +++ b/homeassistant/components/vera/.translations/en.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "A controller is already configured.", + "cannot_connect": "Could not connect to controller with url {base_url}" + }, + "step": { + "user": { + "data": { + "exclude": "Vera device ids to exclude from Home Assistant.", + "lights": "Vera switch device ids to treat as lights in Home Assistant.", + "vera_controller_url": "Controller URL" + }, + "description": "Provide a Vera controller url below. It should look like this: http://192.168.1.161:3480.", + "title": "Setup Vera controller" + } + }, + "title": "Vera" + }, + "options": { + "step": { + "init": { + "data": { + "exclude": "Vera device ids to exclude from Home Assistant.", + "lights": "Vera switch device ids to treat as lights in Home Assistant." + }, + "description": "See the vera documentation for details on optional parameters: https://www.home-assistant.io/integrations/vera/. Note: Any changes here will need a restart to the home assistant server. To clear values, provide a space.", + "title": "Vera controller options" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vera/.translations/es.json b/homeassistant/components/vera/.translations/es.json new file mode 100644 index 00000000000..672bcc9056e --- /dev/null +++ b/homeassistant/components/vera/.translations/es.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "Un controlador ya est\u00e1 configurado.", + "cannot_connect": "No se pudo conectar con el controlador con url {base_url}" + }, + "step": { + "user": { + "data": { + "exclude": "Identificadores de dispositivos Vera a excluir de Home Assistant", + "lights": "Identificadores de interruptores Vera que deben ser tratados como luces en Home Assistant", + "vera_controller_url": "URL del controlador" + }, + "description": "Introduce una URL para el controlador Vera a continuaci\u00f3n. Ser\u00eda algo como: http://192.168.1.161:3480.", + "title": "Configurar el controlador Vera" + } + }, + "title": "Vera" + }, + "options": { + "step": { + "init": { + "data": { + "exclude": "Identificadores de dispositivos Vera a excluir de Home Assistant", + "lights": "Identificadores de interruptores Vera que deben ser tratados como luces en Home Assistant" + }, + "description": "Consulte la documentaci\u00f3n de Vera para obtener detalles sobre los par\u00e1metros opcionales: https://www.home-assistant.io/integrations/vera/. Nota: Cualquier cambio aqu\u00ed necesitar\u00e1 un reinicio del servidor de Home Assistant. Para borrar valores, introduce un espacio.", + "title": "Opciones del controlador Vera" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vera/.translations/ko.json b/homeassistant/components/vera/.translations/ko.json new file mode 100644 index 00000000000..cecde6b9183 --- /dev/null +++ b/homeassistant/components/vera/.translations/ko.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "\ucee8\ud2b8\ub864\ub7ec\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4", + "cannot_connect": "URL {base_url} \uc5d0 \ucee8\ud2b8\ub864\ub7ec\ub97c \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4" + }, + "step": { + "user": { + "data": { + "exclude": "Home Assistant \uc5d0\uc11c \uc81c\uc678\ud560 Vera \uae30\uae30 ID.", + "lights": "Vera \uc2a4\uc704\uce58 \uae30\uae30 ID \ub294 Home Assistant \uc5d0\uc11c \uc870\uba85\uc73c\ub85c \ucde8\uae09\ub429\ub2c8\ub2e4.", + "vera_controller_url": "\ucee8\ud2b8\ub864\ub7ec URL" + }, + "description": "\uc544\ub798\uc5d0 Vera \ucee8\ud2b8\ub864\ub7ec URL \uc744 \uc785\ub825\ud574\uc8fc\uc138\uc694. http://192.168.1.161:3480 \uacfc \uac19\uc740 \ud615\uc2dd\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.", + "title": "Vera \ucee8\ud2b8\ub864\ub7ec \uc124\uc815" + } + }, + "title": "Vera" + }, + "options": { + "step": { + "init": { + "data": { + "exclude": "Home Assistant \uc5d0\uc11c \uc81c\uc678\ud560 Vera \uae30\uae30 ID.", + "lights": "Vera \uc2a4\uc704\uce58 \uae30\uae30 ID \ub294 Home Assistant \uc5d0\uc11c \uc870\uba85\uc73c\ub85c \ucde8\uae09\ub429\ub2c8\ub2e4." + }, + "description": "\ub9e4\uac1c \ubcc0\uc218 \uc120\ud0dd\uc0ac\ud56d\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 vera \uc124\uba85\uc11c\ub97c \ucc38\uc870\ud574\uc8fc\uc138\uc694: https://www.home-assistant.io/integrations/vera/. \ucc38\uace0: \uc5ec\uae30\uc5d0\uc11c \ubcc0\uacbd\ud558\uba74 Home Assistant \uc11c\ubc84\ub97c \ub2e4\uc2dc \uc2dc\uc791\ud574\uc57c \ud569\ub2c8\ub2e4. \uac12\uc744 \uc9c0\uc6b0\ub824\uba74 \uc785\ub825\ub780\uc744 \uacf5\ubc31\uc73c\ub85c \ub450\uc138\uc694.", + "title": "Vera \ucee8\ud2b8\ub864\ub7ec \uc635\uc158" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vera/.translations/lb.json b/homeassistant/components/vera/.translations/lb.json new file mode 100644 index 00000000000..440c576596f --- /dev/null +++ b/homeassistant/components/vera/.translations/lb.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "Ee Kontroller ass scho konfigur\u00e9iert", + "cannot_connect": "Et konnt keng Verbindung mam Kontroller mat der URL {base_url} hiergestallt ginn" + }, + "step": { + "user": { + "data": { + "exclude": "IDs vu Vera Apparater d\u00e9i vun Home Assistant ausgeschloss solle ginn.", + "lights": "IDs vun Apparater vu Vera Schalter d\u00e9i als Luuchten am Home Assistant trait\u00e9iert ginn.", + "vera_controller_url": "Kontroller URL" + }, + "description": "Vera Kontroller URL uginn: D\u00e9i sollt sou ausgesinn:\nhttp://192.168.1.161:3480.", + "title": "Vera Kontroller ariichten" + } + }, + "title": "Vera" + }, + "options": { + "step": { + "init": { + "data": { + "exclude": "IDs vu Vera Apparater d\u00e9i vun Home Assistant ausgeschloss solle ginn.", + "lights": "IDs vun Apparater vu Vera Schalter d\u00e9i als Luuchten am Home Assistant trait\u00e9iert ginn." + }, + "description": "Kuck Vera Dokumentatioun fir Detailer zu den optionellle Parameter: https://www.home-assistant.io/integrations/vera/. Hiweis: All \u00c4nnerunge ginn er\u00e9ischt no engem Neistart vum Home Assistant aktiv. Fir W\u00e4rter ze l\u00e4schen, einfach een \"Leerzeichen\" am Feld uginn.", + "title": "Vera Kontroller Optiounen" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vera/.translations/ru.json b/homeassistant/components/vera/.translations/ru.json new file mode 100644 index 00000000000..de374358e84 --- /dev/null +++ b/homeassistant/components/vera/.translations/ru.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.", + "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0443 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 {base_url}." + }, + "step": { + "user": { + "data": { + "exclude": "\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 Vera \u0434\u043b\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438\u0437 Home Assistant.", + "lights": "\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 Vera \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f \u0432 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u0432 Home Assistant.", + "vera_controller_url": "URL-\u0430\u0434\u0440\u0435\u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430" + }, + "description": "\u0423\u043a\u0430\u0436\u0438\u0442\u0435 URL-\u0430\u0434\u0440\u0435\u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 Vera. \u0410\u0434\u0440\u0435\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 'http://192.168.1.161:3480'.", + "title": "Vera" + } + }, + "title": "Vera" + }, + "options": { + "step": { + "init": { + "data": { + "exclude": "\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 Vera \u0434\u043b\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438\u0437 Home Assistant.", + "lights": "\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 Vera \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f \u0432 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u0432 Home Assistant." + }, + "description": "\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445: https://www.home-assistant.io/integrations/vera/.\n\u0414\u043b\u044f \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u043b\u044e\u0431\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Home Assistant. \u0427\u0442\u043e\u0431\u044b \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043f\u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0440\u043e\u0431\u0435\u043b.", + "title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 Vera" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vera/.translations/zh-Hant.json b/homeassistant/components/vera/.translations/zh-Hant.json new file mode 100644 index 00000000000..6fb71a57abe --- /dev/null +++ b/homeassistant/components/vera/.translations/zh-Hant.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "\u6b64\u63a7\u5236\u5668\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210\u3002", + "cannot_connect": "\u7121\u6cd5\u9023\u7dda\u81f3\u63a7\u5236\u5668 URL {base_url}" + }, + "step": { + "user": { + "data": { + "exclude": "\u5f9e Home Assistant \u6392\u9664\u7684 Vera \u8a2d\u5099 ID\u3002", + "lights": "\u65bc Home Assistant \u4e2d\u8996\u70ba\u71c8\u5149\u7684 Vera \u958b\u95dc\u8a2d\u5099 ID\u3002", + "vera_controller_url": "\u63a7\u5236\u5668 URL" + }, + "description": "\u65bc\u4e0b\u65b9\u63d0\u4f9b Vera \u63a7\u5236\u5668 URL\u3002\u683c\u5f0f\u61c9\u8a72\u70ba\uff1ahttp://192.168.1.161:3480\u3002", + "title": "\u8a2d\u5b9a Vera \u63a7\u5236\u5668" + } + }, + "title": "Vera" + }, + "options": { + "step": { + "init": { + "data": { + "exclude": "\u5f9e Home Assistant \u6392\u9664\u7684 Vera \u8a2d\u5099 ID\u3002", + "lights": "\u65bc Home Assistant \u4e2d\u8996\u70ba\u71c8\u5149\u7684 Vera \u958b\u95dc\u8a2d\u5099 ID\u3002" + }, + "description": "\u8acb\u53c3\u95b1 Vera \u6587\u4ef6\u4ee5\u7372\u5f97\u8a73\u7d30\u7684\u9078\u9805\u53c3\u6578\u8cc7\u6599\uff1ahttps://www.home-assistant.io/integrations/vera/\u3002\u8acb\u6ce8\u610f\uff1a\u4efb\u4f55\u8b8a\u66f4\u90fd\u9700\u8981\u91cd\u555f Home Assistant\u3002\u6b32\u6e05\u9664\u8a2d\u5b9a\u503c\u3001\u8acb\u8f38\u5165\u7a7a\u683c\u3002", + "title": "Vera \u63a7\u5236\u5668\u9078\u9805" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vilfo/.translations/pl.json b/homeassistant/components/vilfo/.translations/pl.json index aef0c14703f..e9cd91209a4 100644 --- a/homeassistant/components/vilfo/.translations/pl.json +++ b/homeassistant/components/vilfo/.translations/pl.json @@ -15,7 +15,7 @@ "host": "Nazwa hosta lub adres IP routera" }, "description": "Skonfiguruj integracj\u0119 routera Vilfo. Potrzebujesz nazwy hosta/adresu IP routera Vilfo i tokena dost\u0119pu do interfejsu API. Aby uzyska\u0107 dodatkowe informacje na temat tej integracji i sposobu uzyskania niezb\u0119dnych danych do konfiguracji, odwied\u017a: https://www.home-assistant.io/integrations/vilfo", - "title": "Po\u0142\u0105cz si\u0119 z routerem Vilfo" + "title": "Po\u0142\u0105czenie z routerem Vilfo" } }, "title": "Router Vilfo" diff --git a/homeassistant/components/vizio/.translations/ca.json b/homeassistant/components/vizio/.translations/ca.json index c8cfa563779..6b9a3a89134 100644 --- a/homeassistant/components/vizio/.translations/ca.json +++ b/homeassistant/components/vizio/.translations/ca.json @@ -1,21 +1,14 @@ { "config": { "abort": { - "already_in_progress": "El flux de dades de configuraci\u00f3 pel component Vizio ja est\u00e0 en curs.", "already_setup": "Aquesta entrada ja ha estat configurada.", - "already_setup_with_diff_host_and_name": "Sembla que aquesta entrada ja s'ha configurat amb un amfitri\u00f3 i nom diferents a partir del n\u00famero de s\u00e8rie. Elimina les entrades antigues de configuraction.yaml i del men\u00fa d'integracions abans de provar d'afegir el dispositiu novament.", - "host_exists": "Ja existeix un component Vizio configurat amb el host.", - "name_exists": "Ja existeix un component Vizio configurat amb el nom.", - "updated_entry": "Aquesta entrada ja s'ha configurat per\u00f2 el nom i les opcions definides a la configuraci\u00f3 no coincideixen amb els valors importats anteriorment, en conseq\u00fc\u00e8ncia, s'han actualitzat.", - "updated_options": "Aquesta entrada ja s'ha configurat per\u00f2 les opcions definides a la configuraci\u00f3 no coincideixen amb els valors importats anteriorment, en conseq\u00fc\u00e8ncia, s'han actualitzat.", - "updated_volume_step": "Aquesta entrada ja s'ha configurat per\u00f2 la mida de l'increment de volum definit a la configuraci\u00f3 no coincideix, en conseq\u00fc\u00e8ncia, s'ha actualitzat." + "updated_entry": "Aquesta entrada ja s'ha configurat per\u00f2 el nom i les opcions definides a la configuraci\u00f3 no coincideixen amb els valors importats anteriorment, en conseq\u00fc\u00e8ncia, s'han actualitzat." }, "error": { "cant_connect": "No s'ha pogut connectar amb el dispositiu. [Comprova la documentaci\u00f3](https://www.home-assistant.io/integrations/vizio/) i torna a verificar que: \n - El dispositiu est\u00e0 engegat \n - El dispositiu est\u00e0 connectat a la xarxa \n - Els valors que has intridu\u00eft s\u00f3n correctes\n abans d\u2019intentar tornar a presentar.", "complete_pairing failed": "No s'ha pogut completar l'emparellament. Verifica que el PIN proporcionat sigui el correcte i que el televisor segueix connectat a la xarxa abans de provar-ho de nou.", "host_exists": "Dispositiu Vizio amb aquest nom d'amfitri\u00f3 ja configurat.", - "name_exists": "Dispositiu Vizio amb aquest nom ja configurat.", - "tv_needs_token": "Si el tipus de dispositiu \u00e9s 'tv', cal un testimoni d'acc\u00e9s v\u00e0lid (token)." + "name_exists": "Dispositiu Vizio amb aquest nom ja configurat." }, "step": { "pair_tv": { @@ -33,14 +26,6 @@ "description": "El dispositiu Vizio SmartCast est\u00e0 connectat a Home Assistant.\n\nEl testimoni d'acc\u00e9s (Access Token) \u00e9s '**{access_token}**'.", "title": "Emparellament completat" }, - "tv_apps": { - "data": { - "apps_to_include_or_exclude": "Aplicacions a incloure o excloure", - "include_or_exclude": "Incloure o excloure aplicacions?" - }, - "description": "Si tens una Smart TV, pots filtrar de manera opcional la teva llista de canals escollint quines aplicacions vols incloure o excloure de la llista. Pots ometre aquest pas si el teu televisor no admet aplicacions.", - "title": "Configuraci\u00f3 d'Aplicacions per a Smart TV" - }, "user": { "data": { "access_token": "Testimoni d'acc\u00e9s", @@ -50,14 +35,6 @@ }, "description": "Nom\u00e9s es necessita testimoni d'acc\u00e9s per als televisors. Si est\u00e0s configurant un televisor i encara no tens un testimoni d'acc\u00e9s, deixeu-ho en blanc per poder fer el proc\u00e9s d'emparellament.", "title": "Configuraci\u00f3 del client de Vizio SmartCast" - }, - "user_tv": { - "data": { - "apps_to_include_or_exclude": "Aplicacions a incloure o excloure", - "include_or_exclude": "Incloure o excloure aplicacions?" - }, - "description": "Si tens una Smart TV, pots filtrar de manera opcional la teva llista de canals escollint quines aplicacions vols incloure o excloure de la llista. Pots ometre aquest pas si el teu televisor no admet aplicacions.", - "title": "Configuraci\u00f3 d'Aplicacions per a Smart TV" } }, "title": "Vizio SmartCast" @@ -68,7 +45,6 @@ "data": { "apps_to_include_or_exclude": "Aplicacions a incloure o excloure", "include_or_exclude": "Incloure o excloure aplicacions?", - "timeout": "Temps d'espera de les sol\u00b7licituds API (en segons)", "volume_step": "Mida del pas de volum" }, "description": "Si tens una Smart TV, pots filtrar de manera opcional la teva llista de canals escollint quines aplicacions vols incloure o excloure de la llista.", diff --git a/homeassistant/components/vizio/.translations/da.json b/homeassistant/components/vizio/.translations/da.json index 9bfd5864025..5317c1c2adb 100644 --- a/homeassistant/components/vizio/.translations/da.json +++ b/homeassistant/components/vizio/.translations/da.json @@ -1,20 +1,13 @@ { "config": { "abort": { - "already_in_progress": "Konfigurationsproces for Vizio-komponenten er allerede i gang.", "already_setup": "Denne post er allerede blevet konfigureret.", - "already_setup_with_diff_host_and_name": "Denne post ser ud til allerede at v\u00e6re konfigureret med en anden v\u00e6rt og navn baseret p\u00e5 dens serienummer. Fjern eventuelle gamle poster fra din configuration.yaml og i menuen Integrationer, f\u00f8r du fors\u00f8ger at tilf\u00f8je denne enhed igen.", - "host_exists": "Vizio-komponent med v\u00e6rt er allerede konfigureret.", - "name_exists": "Vizio-komponent med navn er allerede konfigureret.", - "updated_entry": "Denne post er allerede konfigureret, men navnet og/eller indstillingerne, der er defineret i konfigurationen, stemmer ikke overens med den tidligere importerede konfiguration, s\u00e5 konfigurationsposten er blevet opdateret i overensstemmelse hermed.", - "updated_options": "Denne post er allerede konfigureret, men indstillingerne, der er defineret i konfigurationen, stemmer ikke overens med de tidligere importerede indstillingsv\u00e6rdier, s\u00e5 konfigurationsposten er blevet opdateret i overensstemmelse hermed.", - "updated_volume_step": "Denne post er allerede konfigureret, men lydstyrketrinst\u00f8rrelsen i konfigurationen stemmer ikke overens med konfigurationsposten, s\u00e5 konfigurationsposten er blevet opdateret i overensstemmelse hermed." + "updated_entry": "Denne post er allerede konfigureret, men navnet og/eller indstillingerne, der er defineret i konfigurationen, stemmer ikke overens med den tidligere importerede konfiguration, s\u00e5 konfigurationsposten er blevet opdateret i overensstemmelse hermed." }, "error": { "cant_connect": "Kunne ikke oprette forbindelse til enheden. [Gennemg\u00e5 dokumentationen] (https://www.home-assistant.io/integrations/vizio/), og bekr\u00e6ft, at: \n - Enheden er t\u00e6ndt \n - Enheden er tilsluttet netv\u00e6rket \n - De angivne v\u00e6rdier er korrekte \n f\u00f8r du fors\u00f8ger at indsende igen.", "host_exists": "Vizio-enhed med den specificerede v\u00e6rt er allerede konfigureret.", - "name_exists": "Vizio-enhed med det specificerede navn er allerede konfigureret.", - "tv_needs_token": "N\u00e5r enhedstypen er 'tv', skal der bruges en gyldig adgangstoken." + "name_exists": "Vizio-enhed med det specificerede navn er allerede konfigureret." }, "step": { "user": { @@ -33,7 +26,6 @@ "step": { "init": { "data": { - "timeout": "Timeout for API-anmodning (sekunder)", "volume_step": "Lydstyrkestrinst\u00f8rrelse" }, "title": "Opdater Vizo SmartCast-indstillinger" diff --git a/homeassistant/components/vizio/.translations/de.json b/homeassistant/components/vizio/.translations/de.json index a3b69526943..2197d27de71 100644 --- a/homeassistant/components/vizio/.translations/de.json +++ b/homeassistant/components/vizio/.translations/de.json @@ -1,21 +1,14 @@ { "config": { "abort": { - "already_in_progress": "Konfigurationsablauf f\u00fcr die Vizio-Komponente wird bereits ausgef\u00fchrt.", "already_setup": "Dieser Eintrag wurde bereits eingerichtet.", - "already_setup_with_diff_host_and_name": "Dieser Eintrag scheint bereits mit einem anderen Host und Namen basierend auf seiner Seriennummer eingerichtet worden zu sein. Bitte entfernen Sie alle alten Eintr\u00e4ge aus Ihrer configuration.yaml und aus dem Men\u00fc Integrationen, bevor Sie erneut versuchen, dieses Ger\u00e4t hinzuzuf\u00fcgen.", - "host_exists": "Vizio-Komponent mit bereits konfiguriertem Host.", - "name_exists": "Vizio-Komponent mit bereits konfiguriertem Namen.", - "updated_entry": "Dieser Eintrag wurde bereits eingerichtet, aber der Name, die Apps und / oder die in der Konfiguration definierten Optionen stimmen nicht mit der zuvor importierten Konfiguration \u00fcberein, sodass der Konfigurationseintrag entsprechend aktualisiert wurde.", - "updated_options": "Dieser Eintrag wurde bereits eingerichtet, aber die in der Konfiguration definierten Optionen stimmen nicht mit den zuvor importierten Optionswerten \u00fcberein, daher wurde der Konfigurationseintrag entsprechend aktualisiert.", - "updated_volume_step": "Dieser Eintrag wurde bereits eingerichtet, aber die Lautst\u00e4rken-Schrittgr\u00f6\u00dfe in der Konfiguration stimmt nicht mit dem Konfigurationseintrag \u00fcberein, sodass der Konfigurationseintrag entsprechend aktualisiert wurde." + "updated_entry": "Dieser Eintrag wurde bereits eingerichtet, aber der Name, die Apps und / oder die in der Konfiguration definierten Optionen stimmen nicht mit der zuvor importierten Konfiguration \u00fcberein, sodass der Konfigurationseintrag entsprechend aktualisiert wurde." }, "error": { "cant_connect": "Es konnte keine Verbindung zum Ger\u00e4t hergestellt werden. [\u00dcberpr\u00fcfen Sie die Dokumentation] (https://www.home-assistant.io/integrations/vizio/) und \u00fcberpr\u00fcfen Sie Folgendes erneut:\n- Das Ger\u00e4t ist eingeschaltet\n- Das Ger\u00e4t ist mit dem Netzwerk verbunden\n- Die von Ihnen eingegebenen Werte sind korrekt\nbevor sie versuchen, erneut zu \u00fcbermitteln.", "complete_pairing failed": "Das Pairing kann nicht abgeschlossen werden. Stellen Sie sicher, dass die von Ihnen angegebene PIN korrekt ist und das Fernsehger\u00e4t weiterhin mit Strom versorgt und mit dem Netzwerk verbunden ist, bevor Sie es erneut versuchen.", "host_exists": "Vizio-Ger\u00e4t mit angegebenem Host bereits konfiguriert.", - "name_exists": "Vizio-Ger\u00e4t mit angegebenem Namen bereits konfiguriert.", - "tv_needs_token": "Wenn der Ger\u00e4tetyp \"TV\" ist, wird ein g\u00fcltiger Zugriffstoken ben\u00f6tigt." + "name_exists": "Vizio-Ger\u00e4t mit angegebenem Namen bereits konfiguriert." }, "step": { "pair_tv": { @@ -33,14 +26,6 @@ "description": "Ihr Vizio SmartCast-Fernseher ist jetzt mit Home Assistant verbunden. \n\n Ihr Zugriffstoken ist '**{access_token}**'.", "title": "Kopplung abgeschlossen" }, - "tv_apps": { - "data": { - "apps_to_include_or_exclude": "Apps zum Einschlie\u00dfen oder Ausschlie\u00dfen", - "include_or_exclude": "Apps einschlie\u00dfen oder ausschlie\u00dfen?" - }, - "description": "Wenn Sie \u00fcber ein Smart TV verf\u00fcgen, k\u00f6nnen Sie Ihre Quellliste optional filtern, indem Sie ausw\u00e4hlen, welche Apps in Ihre Quellliste aufgenommen oder ausgeschlossen werden sollen. Sie k\u00f6nnen diesen Schritt f\u00fcr Fernsehger\u00e4te \u00fcberspringen, die keine Apps unterst\u00fctzen.", - "title": "Konfigurieren Sie Apps f\u00fcr Ihr Smart TV" - }, "user": { "data": { "access_token": "Zugangstoken", @@ -50,14 +35,6 @@ }, "description": "Ein Zugriffstoken wird nur f\u00fcr Fernsehger\u00e4te ben\u00f6tigt. Wenn Sie ein Fernsehger\u00e4t konfigurieren und noch kein Zugriffstoken haben, lassen Sie es leer, um einen Pairing-Vorgang durchzuf\u00fchren.", "title": "Richten Sie das Vizio SmartCast-Ger\u00e4t ein" - }, - "user_tv": { - "data": { - "apps_to_include_or_exclude": "Apps zum Einschlie\u00dfen oder Ausschlie\u00dfen", - "include_or_exclude": "Apps einschlie\u00dfen oder ausschlie\u00dfen?" - }, - "description": "Wenn Sie \u00fcber ein Smart TV verf\u00fcgen, k\u00f6nnen Sie Ihre Quellliste optional filtern, indem Sie ausw\u00e4hlen, welche Apps in Ihre Quellliste aufgenommen oder ausgeschlossen werden sollen. Sie k\u00f6nnen diesen Schritt f\u00fcr Fernsehger\u00e4te \u00fcberspringen, die keine Apps unterst\u00fctzen.", - "title": "Konfigurieren Sie Apps f\u00fcr Ihr Smart TV" } }, "title": "Vizio SmartCast" @@ -68,7 +45,6 @@ "data": { "apps_to_include_or_exclude": "Apps zum Einschlie\u00dfen oder Ausschlie\u00dfen", "include_or_exclude": "Apps einschlie\u00dfen oder ausschlie\u00dfen?", - "timeout": "API Request Timeout (Sekunden)", "volume_step": "Lautst\u00e4rken-Schrittgr\u00f6\u00dfe" }, "description": "Wenn Sie \u00fcber ein Smart-TV-Ger\u00e4t verf\u00fcgen, k\u00f6nnen Sie Ihre Quellliste optional filtern, indem Sie ausw\u00e4hlen, welche Apps in Ihre Quellliste aufgenommen oder ausgeschlossen werden sollen.", diff --git a/homeassistant/components/vizio/.translations/en.json b/homeassistant/components/vizio/.translations/en.json index ec82f41c079..f4b03e1eb82 100644 --- a/homeassistant/components/vizio/.translations/en.json +++ b/homeassistant/components/vizio/.translations/en.json @@ -1,21 +1,14 @@ { "config": { "abort": { - "already_in_progress": "Config flow for vizio component already in progress.", "already_setup": "This entry has already been setup.", - "already_setup_with_diff_host_and_name": "This entry appears to have already been setup with a different host and name based on its serial number. Please remove any old entries from your configuration.yaml and from the Integrations menu before reattempting to add this device.", - "host_exists": "Vizio component with host already configured.", - "name_exists": "Vizio component with name already configured.", - "updated_entry": "This entry has already been setup but the name, apps, and/or options defined in the configuration do not match the previously imported configuration, so the configuration entry has been updated accordingly.", - "updated_options": "This entry has already been setup but the options defined in the config do not match the previously imported options values so the config entry has been updated accordingly.", - "updated_volume_step": "This entry has already been setup but the volume step size in the config does not match the config entry so the config entry has been updated accordingly." + "updated_entry": "This entry has already been setup but the name, apps, and/or options defined in the configuration do not match the previously imported configuration, so the configuration entry has been updated accordingly." }, "error": { "cant_connect": "Could not connect to the device. [Review the docs](https://www.home-assistant.io/integrations/vizio/) and re-verify that:\n- The device is powered on\n- The device is connected to the network\n- The values you filled in are accurate\nbefore attempting to resubmit.", "complete_pairing failed": "Unable to complete pairing. Ensure the PIN you provided is correct and the TV is still powered and connected to the network before resubmitting.", "host_exists": "Vizio device with specified host already configured.", - "name_exists": "Vizio device with specified name already configured.", - "tv_needs_token": "When Device Type is `tv` then a valid Access Token is needed." + "name_exists": "Vizio device with specified name already configured." }, "step": { "pair_tv": { @@ -33,14 +26,6 @@ "description": "Your Vizio SmartCast TV is now connected to Home Assistant.\n\nYour Access Token is '**{access_token}**'.", "title": "Pairing Complete" }, - "tv_apps": { - "data": { - "apps_to_include_or_exclude": "Apps to Include or Exclude", - "include_or_exclude": "Include or Exclude Apps?" - }, - "description": "If you have a Smart TV, you can optionally filter your source list by choosing which apps to include or exclude in your source list. You can skip this step for TVs that don't support apps.", - "title": "Configure Apps for Smart TV" - }, "user": { "data": { "access_token": "Access Token", @@ -50,14 +35,6 @@ }, "description": "An Access Token is only needed for TVs. If you are configuring a TV and do not have an Access Token yet, leave it blank to go through a pairing process.", "title": "Setup Vizio SmartCast Device" - }, - "user_tv": { - "data": { - "apps_to_include_or_exclude": "Apps to Include or Exclude", - "include_or_exclude": "Include or Exclude Apps?" - }, - "description": "If you have a Smart TV, you can optionally filter your source list by choosing which apps to include or exclude in your source list. You can skip this step for TVs that don't support apps.", - "title": "Configure Apps for Smart TV" } }, "title": "Vizio SmartCast" @@ -68,7 +45,6 @@ "data": { "apps_to_include_or_exclude": "Apps to Include or Exclude", "include_or_exclude": "Include or Exclude Apps?", - "timeout": "API Request Timeout (seconds)", "volume_step": "Volume Step Size" }, "description": "If you have a Smart TV, you can optionally filter your source list by choosing which apps to include or exclude in your source list.", diff --git a/homeassistant/components/vizio/.translations/es.json b/homeassistant/components/vizio/.translations/es.json index 68e855fa5a8..eb35fbb0b5b 100644 --- a/homeassistant/components/vizio/.translations/es.json +++ b/homeassistant/components/vizio/.translations/es.json @@ -1,21 +1,14 @@ { "config": { "abort": { - "already_in_progress": "Configurar el flujo para el componente vizio que ya est\u00e1 en marcha.", "already_setup": "Esta entrada ya ha sido configurada.", - "already_setup_with_diff_host_and_name": "Esta entrada parece haber sido ya configurada con un host y un nombre diferentes basados en su n\u00famero de serie. Elimine las entradas antiguas de su archivo configuration.yaml y del men\u00fa Integraciones antes de volver a intentar agregar este dispositivo.", - "host_exists": "Host ya configurado del componente de Vizio", - "name_exists": "Nombre ya configurado del componente de Vizio", - "updated_entry": "Esta entrada ya ha sido configurada pero el nombre y/o las opciones definidas en la configuraci\u00f3n no coinciden con la configuraci\u00f3n previamente importada, por lo que la entrada de la configuraci\u00f3n ha sido actualizada en consecuencia.", - "updated_options": "Esta entrada ya ha sido configurada pero las opciones definidas en la configuraci\u00f3n no coinciden con los valores de las opciones importadas previamente, por lo que la entrada de la configuraci\u00f3n ha sido actualizada en consecuencia.", - "updated_volume_step": "Esta entrada ya ha sido configurada pero el tama\u00f1o del paso de volumen en la configuraci\u00f3n no coincide con la entrada de la configuraci\u00f3n, por lo que la entrada de la configuraci\u00f3n ha sido actualizada en consecuencia." + "updated_entry": "Esta entrada ya ha sido configurada pero el nombre y/o las opciones definidas en la configuraci\u00f3n no coinciden con la configuraci\u00f3n previamente importada, por lo que la entrada de la configuraci\u00f3n ha sido actualizada en consecuencia." }, "error": { "cant_connect": "No se pudo conectar al dispositivo. [Revise los documentos] (https://www.home-assistant.io/integrations/vizio/) y vuelva a verificar que:\n- El dispositivo est\u00e1 encendido\n- El dispositivo est\u00e1 conectado a la red\n- Los valores que ha rellenado son precisos\nantes de intentar volver a enviar.", "complete_pairing failed": "No se pudo completar el emparejamiento. Aseg\u00farate de que el PIN que has proporcionado es correcto y que el televisor sigue encendido y conectado a la red antes de volver a enviarlo.", "host_exists": "El host ya est\u00e1 configurado.", - "name_exists": "Nombre ya configurado.", - "tv_needs_token": "Cuando el tipo de dispositivo es `tv`, se necesita un token de acceso v\u00e1lido." + "name_exists": "Nombre ya configurado." }, "step": { "pair_tv": { @@ -33,14 +26,6 @@ "description": "Su dispositivo Vizio SmartCast TV ahora est\u00e1 conectado a Home Assistant.\n\nEl Token de Acceso es '**{access_token}**'.", "title": "Emparejamiento Completado" }, - "tv_apps": { - "data": { - "apps_to_include_or_exclude": "Aplicaciones para incluir o excluir", - "include_or_exclude": "\u00bfIncluir o excluir aplicaciones?" - }, - "description": "Si tiene un Smart TV, opcionalmente puede filtrar su lista de origen eligiendo qu\u00e9 aplicaciones incluir o excluir en su lista de origen. Puede omitir este paso para televisores que no admiten aplicaciones.", - "title": "Configurar aplicaciones para Smart TV" - }, "user": { "data": { "access_token": "Token de acceso", @@ -50,14 +35,6 @@ }, "description": "Todos los campos son obligatorios excepto el Token de Acceso. Si decides no proporcionar un Token de Acceso y tu Tipo de Dispositivo es \"tv\", se te llevar\u00e1 por un proceso de emparejamiento con tu dispositivo para que se pueda recuperar un Token de Acceso.\n\nPara pasar por el proceso de emparejamiento, antes de pulsar en Enviar, aseg\u00farese de que tu TV est\u00e9 encendida y conectada a la red. Tambi\u00e9n es necesario poder ver la pantalla.", "title": "Configurar el cliente de Vizio SmartCast" - }, - "user_tv": { - "data": { - "apps_to_include_or_exclude": "Aplicaciones para incluir o excluir", - "include_or_exclude": "\u00bfIncluir o excluir aplicaciones?" - }, - "description": "Si tienes un Smart TV, puedes opcionalmente filtrar tu lista de fuentes eligiendo qu\u00e9 aplicaciones incluir o excluir en tu lista de fuentes. Puedes omitir este paso para televisores que no admiten aplicaciones.", - "title": "Configurar aplicaciones para Smart TV" } }, "title": "Vizio SmartCast" @@ -68,7 +45,6 @@ "data": { "apps_to_include_or_exclude": "Aplicaciones para incluir o excluir", "include_or_exclude": "\u00bfIncluir o excluir aplicaciones?", - "timeout": "Tiempo de espera de solicitud de API (segundos)", "volume_step": "Tama\u00f1o del paso de volumen" }, "description": "Si tienes un Smart TV, opcionalmente puedes filtrar su lista de fuentes eligiendo qu\u00e9 aplicaciones incluir o excluir en su lista de fuentes.", diff --git a/homeassistant/components/vizio/.translations/fr.json b/homeassistant/components/vizio/.translations/fr.json index bf672e9dfb9..0c0ff56af69 100644 --- a/homeassistant/components/vizio/.translations/fr.json +++ b/homeassistant/components/vizio/.translations/fr.json @@ -1,21 +1,14 @@ { "config": { "abort": { - "already_in_progress": "Flux de configuration pour le composant Vizio d\u00e9j\u00e0 en cours.", "already_setup": "Cette entr\u00e9e a d\u00e9j\u00e0 \u00e9t\u00e9 configur\u00e9e.", - "already_setup_with_diff_host_and_name": "Cette entr\u00e9e semble avoir d\u00e9j\u00e0 \u00e9t\u00e9 configur\u00e9e avec un h\u00f4te et un nom diff\u00e9rents en fonction de son num\u00e9ro de s\u00e9rie. Veuillez supprimer toutes les anciennes entr\u00e9es de votre configuration.yaml et du menu Int\u00e9grations avant de r\u00e9essayer d'ajouter ce p\u00e9riph\u00e9rique.", - "host_exists": "Composant Vizio avec h\u00f4te d\u00e9j\u00e0 configur\u00e9.", - "name_exists": "Composant Vizio dont le nom est d\u00e9j\u00e0 configur\u00e9.", - "updated_entry": "Cette entr\u00e9e a d\u00e9j\u00e0 \u00e9t\u00e9 configur\u00e9e mais le nom et/ou les options d\u00e9finis dans la configuration ne correspondent pas \u00e0 la configuration pr\u00e9c\u00e9demment import\u00e9e, de sorte que l'entr\u00e9e de configuration a \u00e9t\u00e9 mise \u00e0 jour en cons\u00e9quence.", - "updated_options": "Cette entr\u00e9e a d\u00e9j\u00e0 \u00e9t\u00e9 configur\u00e9e mais les options d\u00e9finies dans la configuration ne correspondent pas aux valeurs des options pr\u00e9c\u00e9demment import\u00e9es, de sorte que l'entr\u00e9e de configuration a \u00e9t\u00e9 mise \u00e0 jour en cons\u00e9quence.", - "updated_volume_step": "Cette entr\u00e9e a d\u00e9j\u00e0 \u00e9t\u00e9 configur\u00e9e, mais la taille du pas du volume dans la configuration ne correspond pas \u00e0 l'entr\u00e9e de configuration, de sorte que l'entr\u00e9e de configuration a \u00e9t\u00e9 mise \u00e0 jour en cons\u00e9quence." + "updated_entry": "Cette entr\u00e9e a d\u00e9j\u00e0 \u00e9t\u00e9 configur\u00e9e mais le nom et/ou les options d\u00e9finis dans la configuration ne correspondent pas \u00e0 la configuration pr\u00e9c\u00e9demment import\u00e9e, de sorte que l'entr\u00e9e de configuration a \u00e9t\u00e9 mise \u00e0 jour en cons\u00e9quence." }, "error": { "cant_connect": "Impossible de se connecter \u00e0 l'appareil. [V\u00e9rifier les documents](https://www.home-assistant.io/integrations/vizio/) et rev\u00e9rifier que:\n- L'appareil est sous tension\n- L'appareil est connect\u00e9 au r\u00e9seau\n- Les valeurs que vous avez saisies sont exactes\navant d'essayer de le soumettre \u00e0 nouveau.", "complete_pairing failed": "Impossible de terminer l'appariement. Assurez-vous que le code PIN que vous avez fourni est correct et que le t\u00e9l\u00e9viseur est toujours aliment\u00e9 et connect\u00e9 au r\u00e9seau avant de soumettre \u00e0 nouveau.", "host_exists": "H\u00f4te d\u00e9j\u00e0 configur\u00e9.", - "name_exists": "Nom d\u00e9j\u00e0 configur\u00e9.", - "tv_needs_token": "Lorsque le type de p\u00e9riph\u00e9rique est \" TV \", un jeton d'acc\u00e8s valide est requis." + "name_exists": "Nom d\u00e9j\u00e0 configur\u00e9." }, "step": { "pair_tv": { @@ -31,13 +24,6 @@ "pairing_complete_import": { "title": "Appairage termin\u00e9" }, - "tv_apps": { - "data": { - "apps_to_include_or_exclude": "Applications \u00e0 inclure ou \u00e0 exclure", - "include_or_exclude": "Inclure ou exclure des applications?" - }, - "title": "Configurer les applications pour Smart TV" - }, "user": { "data": { "access_token": "Jeton d'acc\u00e8s", @@ -47,13 +33,6 @@ }, "description": "Un jeton d'acc\u00e8s n'est n\u00e9cessaire que pour les t\u00e9l\u00e9viseurs. Si vous configurez un t\u00e9l\u00e9viseur et que vous n'avez pas encore de jeton d'acc\u00e8s, laissez-le vide pour passer par un processus de couplage.", "title": "Configurer le client Vizio SmartCast" - }, - "user_tv": { - "data": { - "apps_to_include_or_exclude": "Applications \u00e0 inclure ou \u00e0 exclure", - "include_or_exclude": "Inclure ou exclure des applications?" - }, - "title": "Configurer les applications pour Smart TV" } }, "title": "Vizio SmartCast" @@ -64,7 +43,6 @@ "data": { "apps_to_include_or_exclude": "Applications \u00e0 inclure ou \u00e0 exclure", "include_or_exclude": "Inclure ou exclure des applications?", - "timeout": "D\u00e9lai d'expiration de la demande d'API (secondes)", "volume_step": "Taille du pas de volume" }, "description": "Si vous avez une Smart TV, vous pouvez \u00e9ventuellement filtrer votre liste de sources en choisissant les applications \u00e0 inclure ou \u00e0 exclure dans votre liste de sources.", diff --git a/homeassistant/components/vizio/.translations/hu.json b/homeassistant/components/vizio/.translations/hu.json index 650d5133dbd..c8b74f33e3d 100644 --- a/homeassistant/components/vizio/.translations/hu.json +++ b/homeassistant/components/vizio/.translations/hu.json @@ -1,20 +1,13 @@ { "config": { "abort": { - "already_in_progress": "A vizio komponens konfigur\u00e1ci\u00f3s folyamata m\u00e1r folyamatban van.", "already_setup": "Ez a bejegyz\u00e9s m\u00e1r be van \u00e1ll\u00edtva.", - "already_setup_with_diff_host_and_name": "\u00dagy t\u0171nik, hogy ez a bejegyz\u00e9s m\u00e1r be van \u00e1ll\u00edtva egy m\u00e1sik \u00e1llom\u00e1ssal \u00e9s n\u00e9vvel a sorozatsz\u00e1ma alapj\u00e1n. T\u00e1vol\u00edtsa el a r\u00e9gi bejegyz\u00e9seket a configuration.yaml \u00e9s az Integr\u00e1ci\u00f3k men\u00fcb\u0151l, miel\u0151tt \u00fajra megpr\u00f3b\u00e1ln\u00e1 hozz\u00e1adni ezt az eszk\u00f6zt.", - "host_exists": "Vizio-\u00f6sszetev\u0151, amelynek az kiszolg\u00e1l\u00f3neve m\u00e1r konfigur\u00e1lva van.", - "name_exists": "Vizio-\u00f6sszetev\u0151, amelynek neve m\u00e1r konfigur\u00e1lva van.", - "updated_entry": "Ez a bejegyz\u00e9s m\u00e1r be van \u00e1ll\u00edtva, de a konfigur\u00e1ci\u00f3ban defini\u00e1lt n\u00e9v \u00e9s/vagy be\u00e1ll\u00edt\u00e1sok nem egyeznek meg a kor\u00e1bban import\u00e1lt konfigur\u00e1ci\u00f3val, \u00edgy a konfigur\u00e1ci\u00f3s bejegyz\u00e9s ennek megfelel\u0151en friss\u00fclt.", - "updated_options": "Ez a bejegyz\u00e9s m\u00e1r be van \u00e1ll\u00edtva, de a konfigur\u00e1ci\u00f3ban megadott be\u00e1ll\u00edt\u00e1sok nem egyeznek meg a kor\u00e1bban import\u00e1lt be\u00e1ll\u00edt\u00e1si \u00e9rt\u00e9kekkel, \u00edgy a konfigur\u00e1ci\u00f3s bejegyz\u00e9s ennek megfelel\u0151en friss\u00fclt.", - "updated_volume_step": "Ez a bejegyz\u00e9s m\u00e1r be van \u00e1ll\u00edtva, de a konfigur\u00e1ci\u00f3ban l\u00e9v\u0151 henger\u0151l\u00e9p\u00e9s m\u00e9rete nem egyezik meg a konfigur\u00e1ci\u00f3s bejegyz\u00e9ssel, \u00edgy a konfigur\u00e1ci\u00f3s bejegyz\u00e9s ennek megfelel\u0151en friss\u00fclt." + "updated_entry": "Ez a bejegyz\u00e9s m\u00e1r be van \u00e1ll\u00edtva, de a konfigur\u00e1ci\u00f3ban defini\u00e1lt n\u00e9v, appok \u00e9s/vagy be\u00e1ll\u00edt\u00e1sok nem egyeznek meg a kor\u00e1bban import\u00e1lt konfigur\u00e1ci\u00f3val, \u00edgy a konfigur\u00e1ci\u00f3s bejegyz\u00e9s ennek megfelel\u0151en friss\u00fclt." }, "error": { "cant_connect": "Nem lehetett csatlakozni az eszk\u00f6zh\u00f6z. [Tekintsd \u00e1t a dokumentumokat] (https://www.home-assistant.io/integrations/vizio/) \u00e9s \u00fajra ellen\u0151rizd, hogy:\n- A k\u00e9sz\u00fcl\u00e9k be van kapcsolva\n- A k\u00e9sz\u00fcl\u00e9k csatlakozik a h\u00e1l\u00f3zathoz\n- A kit\u00f6lt\u00f6tt \u00e9rt\u00e9kek pontosak\nmiel\u0151tt \u00fajra elk\u00fclden\u00e9d.", "host_exists": "A megadott kiszolg\u00e1l\u00f3n\u00e9vvel rendelkez\u0151 Vizio-eszk\u00f6z m\u00e1r konfigur\u00e1lva van.", - "name_exists": "A megadott n\u00e9vvel rendelkez\u0151 Vizio-eszk\u00f6z m\u00e1r konfigur\u00e1lva van.", - "tv_needs_token": "Ha az eszk\u00f6z t\u00edpusa \"tv\", akkor \u00e9rv\u00e9nyes hozz\u00e1f\u00e9r\u00e9si tokenre van sz\u00fcks\u00e9g." + "name_exists": "A megadott n\u00e9vvel rendelkez\u0151 Vizio-eszk\u00f6z m\u00e1r konfigur\u00e1lva van." }, "step": { "user": { @@ -32,7 +25,6 @@ "step": { "init": { "data": { - "timeout": "API-k\u00e9r\u00e9s id\u0151t\u00fall\u00e9p\u00e9se (m\u00e1sodpercben)", "volume_step": "Hanger\u0151 l\u00e9p\u00e9s nagys\u00e1ga" }, "title": "Friss\u00edtse a Vizo SmartCast be\u00e1ll\u00edt\u00e1sokat" diff --git a/homeassistant/components/vizio/.translations/it.json b/homeassistant/components/vizio/.translations/it.json index eef86bf78cb..4a26a40ad56 100644 --- a/homeassistant/components/vizio/.translations/it.json +++ b/homeassistant/components/vizio/.translations/it.json @@ -1,21 +1,14 @@ { "config": { "abort": { - "already_in_progress": "Il flusso di configurazione per vizio \u00e8 gi\u00e0 in corso.", "already_setup": "Questa voce \u00e8 gi\u00e0 stata configurata.", - "already_setup_with_diff_host_and_name": "Sembra che questa voce sia gi\u00e0 stata configurata con un host e un nome diversi in base al suo numero seriale. Rimuovere eventuali voci precedenti da configuration.yaml e dal menu Integrazioni prima di tentare nuovamente di aggiungere questo dispositivo.", - "host_exists": "Componente Vizio con host gi\u00e0 configurato.", - "name_exists": "Componente Vizio con nome gi\u00e0 configurato.", - "updated_entry": "Questa voce \u00e8 gi\u00e0 stata configurata, ma il nome, le app e/o le opzioni definite nella configurazione non corrispondono alla configurazione importata in precedenza, pertanto la voce di configurazione \u00e8 stata aggiornata di conseguenza.", - "updated_options": "Questa voce \u00e8 gi\u00e0 stata impostata, ma le opzioni definite nella configurazione non corrispondono ai valori delle opzioni importate in precedenza, quindi la voce di configurazione \u00e8 stata aggiornata di conseguenza.", - "updated_volume_step": "Questa voce \u00e8 gi\u00e0 stata impostata, ma la dimensione del passo del volume nella configurazione non corrisponde alla voce di configurazione, quindi \u00e8 stata aggiornata di conseguenza." + "updated_entry": "Questa voce \u00e8 gi\u00e0 stata configurata, ma il nome, le app e/o le opzioni definite nella configurazione non corrispondono alla configurazione importata in precedenza, pertanto la voce di configurazione \u00e8 stata aggiornata di conseguenza." }, "error": { "cant_connect": "Impossibile connettersi al dispositivo. [Esamina i documenti] (https://www.home-assistant.io/integrations/vizio/) e verifica nuovamente che: \n - Il dispositivo sia acceso \n - Il dispositivo sia collegato alla rete \n - I valori inseriti siano corretti \n prima di ritentare.", "complete_pairing failed": "Impossibile completare l'associazione. Assicurarsi che il PIN fornito sia corretto e che il televisore sia ancora alimentato e connesso alla rete prima di inviarlo di nuovo.", "host_exists": "Dispositivo Vizio con host specificato gi\u00e0 configurato.", - "name_exists": "Dispositivo Vizio con il nome specificato gi\u00e0 configurato.", - "tv_needs_token": "Quando Device Type \u00e8 `tv`, \u00e8 necessario un token di accesso valido." + "name_exists": "Dispositivo Vizio con il nome specificato gi\u00e0 configurato." }, "step": { "pair_tv": { @@ -33,14 +26,6 @@ "description": "Il dispositivo Vizio SmartCast TV \u00e8 ora connesso a Home Assistant. \n\nIl tuo Token di Accesso \u00e8 '**{access_token}**'.", "title": "Associazione completata" }, - "tv_apps": { - "data": { - "apps_to_include_or_exclude": "App da includere o escludere", - "include_or_exclude": "Includere o Escludere le App?" - }, - "description": "Se si dispone di una Smart TV, \u00e8 possibile filtrare facoltativamente l'elenco di origine scegliendo le app da includere o escludere in esso. \u00c8 possibile saltare questo passaggio per i televisori che non supportano le app.", - "title": "Configura le app per Smart TV" - }, "user": { "data": { "access_token": "Token di accesso", @@ -50,14 +35,6 @@ }, "description": "Un Token di Accesso \u00e8 necessario solo per i televisori. Se si sta configurando un televisore e non si dispone ancora di un Token di Accesso, lasciarlo vuoto per passare attraverso un processo di associazione.", "title": "Configurazione del dispositivo SmartCast Vizio" - }, - "user_tv": { - "data": { - "apps_to_include_or_exclude": "App da Includere o Escludere", - "include_or_exclude": "Includere o Escludere le App?" - }, - "description": "Se si dispone di una Smart TV, \u00e8 possibile filtrare facoltativamente l'elenco di origine scegliendo le app da includere o escludere in esso. \u00c8 possibile saltare questo passaggio per i televisori che non supportano le app.", - "title": "Configura le app per Smart TV" } }, "title": "Vizio SmartCast" @@ -68,7 +45,6 @@ "data": { "apps_to_include_or_exclude": "App da includere o escludere", "include_or_exclude": "Includere o escludere app?", - "timeout": "Timeout richiesta API (secondi)", "volume_step": "Dimensione del passo del volume" }, "description": "Se si dispone di una Smart TV, \u00e8 possibile filtrare l'elenco di origine scegliendo le app da includere o escludere in esso.", diff --git a/homeassistant/components/vizio/.translations/ko.json b/homeassistant/components/vizio/.translations/ko.json index 33edb72733a..df2fb243f88 100644 --- a/homeassistant/components/vizio/.translations/ko.json +++ b/homeassistant/components/vizio/.translations/ko.json @@ -1,21 +1,14 @@ { "config": { "abort": { - "already_in_progress": "vizio \uad6c\uc131 \uc694\uc18c\uc5d0 \ub300\ud55c \uad6c\uc131 \ud50c\ub85c\uc6b0\uac00 \uc774\ubbf8 \uc9c4\ud589 \uc911\uc785\ub2c8\ub2e4.", "already_setup": "\uc774 \ud56d\ubaa9\uc740 \uc774\ubbf8 \uc124\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4.", - "already_setup_with_diff_host_and_name": "\uc774 \ud56d\ubaa9\uc740 \uc2dc\ub9ac\uc5bc \ubc88\ud638\ub85c \ub2e4\ub978 \ud638\uc2a4\ud2b8 \ubc0f \uc774\ub984\uc73c\ub85c \uc774\ubbf8 \uc124\uc815\ub418\uc5b4\uc788\ub294 \uac83\uc73c\ub85c \ubcf4\uc785\ub2c8\ub2e4. \uc774 \uae30\uae30\ub97c \ucd94\uac00\ud558\uae30 \uc804\uc5d0 configuration.yaml \ubc0f \ud1b5\ud569 \uad6c\uc131\uc694\uc18c \uba54\ub274\uc5d0\uc11c \uc774\uc804 \ud56d\ubaa9\uc744 \uc81c\uac70\ud574\uc8fc\uc138\uc694.", - "host_exists": "\ud574\ub2f9 \ud638\uc2a4\ud2b8\uc758 Vizio \uad6c\uc131 \uc694\uc18c\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.", - "name_exists": "\ud574\ub2f9 \uc774\ub984\uc758 Vizio \uad6c\uc131 \uc694\uc18c\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.", - "updated_entry": "\uc774 \ud56d\ubaa9\uc740 \uc774\ubbf8 \uc124\uc815\ub418\uc5c8\uc9c0\ub9cc \uad6c\uc131\uc5d0 \uc815\uc758\ub41c \uc774\ub984, \uc571 \ud639\uc740 \uc635\uc158\uc774 \uc774\uc804\uc5d0 \uac00\uc838\uc628 \uad6c\uc131 \ub0b4\uc6a9\uacfc \uc77c\uce58\ud558\uc9c0 \uc54a\uc73c\ubbc0\ub85c \uad6c\uc131 \ud56d\ubaa9\uc774 \uadf8\uc5d0 \ub530\ub77c \uc5c5\ub370\uc774\ud2b8\ub418\uc5c8\uc2b5\ub2c8\ub2e4.", - "updated_options": "\uc774 \ud56d\ubaa9\uc740 \uc774\ubbf8 \uc124\uc815\ub418\uc5c8\uc9c0\ub9cc \uad6c\uc131\uc5d0 \uc815\uc758\ub41c \uc635\uc158\uc774 \uc774\uc804\uc5d0 \uac00\uc838\uc628 \uc635\uc158 \uac12\uacfc \uc77c\uce58\ud558\uc9c0 \uc54a\uc73c\ubbc0\ub85c \uad6c\uc131 \ud56d\ubaa9\uc774 \uadf8\uc5d0 \ub530\ub77c \uc5c5\ub370\uc774\ud2b8\ub418\uc5c8\uc2b5\ub2c8\ub2e4.", - "updated_volume_step": "\uc774 \ud56d\ubaa9\uc740 \uc774\ubbf8 \uc124\uc815\ub418\uc5c8\uc9c0\ub9cc \uad6c\uc131\uc758 \ubcfc\ub968 \ub2e8\uacc4 \ud06c\uae30\uac00 \uad6c\uc131 \ud56d\ubaa9\uacfc \uc77c\uce58\ud558\uc9c0 \uc54a\uc73c\ubbc0\ub85c \uad6c\uc131 \ud56d\ubaa9\uc774 \uadf8\uc5d0 \ub530\ub77c \uc5c5\ub370\uc774\ud2b8\ub418\uc5c8\uc2b5\ub2c8\ub2e4." + "updated_entry": "\uc774 \ud56d\ubaa9\uc740 \uc774\ubbf8 \uc124\uc815\ub418\uc5c8\uc9c0\ub9cc \uad6c\uc131\uc5d0 \uc815\uc758\ub41c \uc774\ub984, \uc571 \ud639\uc740 \uc635\uc158\uc774 \uc774\uc804\uc5d0 \uac00\uc838\uc628 \uad6c\uc131 \ub0b4\uc6a9\uacfc \uc77c\uce58\ud558\uc9c0 \uc54a\uc73c\ubbc0\ub85c \uad6c\uc131 \ud56d\ubaa9\uc774 \uadf8\uc5d0 \ub530\ub77c \uc5c5\ub370\uc774\ud2b8\ub418\uc5c8\uc2b5\ub2c8\ub2e4." }, "error": { "cant_connect": "\uae30\uae30\uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. [\uc548\ub0b4\ub97c \ucc38\uace0] (https://www.home-assistant.io/integrations/vizio/)\ud558\uace0 \uc591\uc2dd\uc744 \ub2e4\uc2dc \uc81c\ucd9c\ud558\uae30 \uc804\uc5d0 \ub2e4\uc74c\uc744 \ub2e4\uc2dc \ud655\uc778\ud574\uc8fc\uc138\uc694.\n- \uae30\uae30 \uc804\uc6d0\uc774 \ucf1c\uc838 \uc788\uc2b5\ub2c8\uae4c?\n- \uae30\uae30\uac00 \ub124\ud2b8\uc6cc\ud06c\uc5d0 \uc5f0\uacb0\ub418\uc5b4 \uc788\uc2b5\ub2c8\uae4c?\n- \uc785\ub825\ud55c \ub0b4\uc6a9\uc774 \uc62c\ubc14\ub985\ub2c8\uae4c?", "complete_pairing failed": "\ud398\uc5b4\ub9c1\uc744 \uc644\ub8cc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc785\ub825\ud55c PIN \uc774 \uc62c\ubc14\ub978\uc9c0 \ud655\uc778\ud558\uace0 \ub2e4\uc74c \uacfc\uc815\uc744 \uc9c4\ud589\ud558\uae30 \uc804\uc5d0 TV \uc758 \uc804\uc6d0\uc774 \ucf1c\uc838 \uc788\uace0 \ub124\ud2b8\uc6cc\ud06c\uc5d0 \uc5f0\uacb0\ub418\uc5b4 \uc788\ub294\uc9c0 \ud655\uc778\ud574\uc8fc\uc138\uc694.", "host_exists": "\uc124\uc815\ub41c \ud638\uc2a4\ud2b8\uc758 Vizio \uae30\uae30\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.", - "name_exists": "\uc124\uc815\ub41c \uc774\ub984\uc758 Vizio \uae30\uae30\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.", - "tv_needs_token": "\uae30\uae30 \uc720\ud615\uc774 'tv' \uc778 \uacbd\uc6b0 \uc720\ud6a8\ud55c \uc561\uc138\uc2a4 \ud1a0\ud070\uc774 \ud544\uc694\ud569\ub2c8\ub2e4." + "name_exists": "\uc124\uc815\ub41c \uc774\ub984\uc758 Vizio \uae30\uae30\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4." }, "step": { "pair_tv": { @@ -33,14 +26,6 @@ "description": "Vizio SmartCast TV \uac00 Home Assistant \uc5d0 \uc5f0\uacb0\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \n\n\uc561\uc138\uc2a4 \ud1a0\ud070\uc740 '**{access_token}**' \uc785\ub2c8\ub2e4.", "title": "\ud398\uc5b4\ub9c1 \uc644\ub8cc" }, - "tv_apps": { - "data": { - "apps_to_include_or_exclude": "\ud3ec\ud568 \ub610\ub294 \uc81c\uc678 \ud560 \uc571", - "include_or_exclude": "\uc571\uc744 \ud3ec\ud568 \ub610\ub294 \uc81c\uc678\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?" - }, - "description": "\uc2a4\ub9c8\ud2b8 TV \uac00 \uc788\ub294 \uacbd\uc6b0 \uc120\ud0dd\uc0ac\ud56d\uc73c\ub85c \uc18c\uc2a4 \ubaa9\ub85d\uc5d0 \ud3ec\ud568 \ub610\ub294 \uc81c\uc678\ud560 \uc571\uc744 \uc120\ud0dd\ud558\uc5ec \uc18c\uc2a4 \ubaa9\ub85d\uc744 \ud544\ud130\ub9c1\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc571\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 TV\uc758 \uacbd\uc6b0 \uc774 \ub2e8\uacc4\ub97c \uac74\ub108\ub6f8 \uc218 \uc788\uc2b5\ub2c8\ub2e4.", - "title": "\uc2a4\ub9c8\ud2b8 TV \uc6a9 \uc571 \uad6c\uc131" - }, "user": { "data": { "access_token": "\uc561\uc138\uc2a4 \ud1a0\ud070", @@ -50,14 +35,6 @@ }, "description": "\uc561\uc138\uc2a4 \ud1a0\ud070\uc740 TV \uc5d0\ub9cc \ud544\uc694\ud569\ub2c8\ub2e4. TV \ub97c \uad6c\uc131\ud558\uace0 \uc788\uace0 \uc544\uc9c1 \uc561\uc138\uc2a4 \ud1a0\ud070\uc774 \uc5c6\ub294 \uacbd\uc6b0 \ud398\uc5b4\ub9c1 \uacfc\uc815\uc744 \uc9c4\ud589\ud558\ub824\uba74 \ube44\uc6cc\ub450\uc138\uc694.", "title": "Vizio SmartCast \uae30\uae30 \uc124\uc815" - }, - "user_tv": { - "data": { - "apps_to_include_or_exclude": "\ud3ec\ud568 \ub610\ub294 \uc81c\uc678 \ud560 \uc571", - "include_or_exclude": "\uc571\uc744 \ud3ec\ud568 \ub610\ub294 \uc81c\uc678\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?" - }, - "description": "\uc2a4\ub9c8\ud2b8 TV \uac00 \uc788\ub294 \uacbd\uc6b0 \uc120\ud0dd\uc0ac\ud56d\uc73c\ub85c \uc18c\uc2a4 \ubaa9\ub85d\uc5d0 \ud3ec\ud568 \ub610\ub294 \uc81c\uc678\ud560 \uc571\uc744 \uc120\ud0dd\ud558\uc5ec \uc18c\uc2a4 \ubaa9\ub85d\uc744 \ud544\ud130\ub9c1\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc571\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 TV\uc758 \uacbd\uc6b0 \uc774 \ub2e8\uacc4\ub97c \uac74\ub108\ub6f8 \uc218 \uc788\uc2b5\ub2c8\ub2e4.", - "title": "\uc2a4\ub9c8\ud2b8 TV \uc6a9 \uc571 \uad6c\uc131" } }, "title": "Vizio SmartCast" @@ -68,7 +45,6 @@ "data": { "apps_to_include_or_exclude": "\ud3ec\ud568 \ub610\ub294 \uc81c\uc678 \ud560 \uc571", "include_or_exclude": "\uc571\uc744 \ud3ec\ud568 \ub610\ub294 \uc81c\uc678\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?", - "timeout": "API \uc694\uccad \uc2dc\uac04 \ucd08\uacfc (\ucd08)", "volume_step": "\ubcfc\ub968 \ub2e8\uacc4 \ud06c\uae30" }, "description": "\uc2a4\ub9c8\ud2b8 TV \uac00 \uc788\ub294 \uacbd\uc6b0 \uc120\ud0dd\uc0ac\ud56d\uc73c\ub85c \uc18c\uc2a4 \ubaa9\ub85d\uc5d0 \ud3ec\ud568 \ub610\ub294 \uc81c\uc678\ud560 \uc571\uc744 \uc120\ud0dd\ud558\uc5ec \uc18c\uc2a4 \ubaa9\ub85d\uc744 \ud544\ud130\ub9c1\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.", diff --git a/homeassistant/components/vizio/.translations/lb.json b/homeassistant/components/vizio/.translations/lb.json index 79dfa120db2..3146c8756a8 100644 --- a/homeassistant/components/vizio/.translations/lb.json +++ b/homeassistant/components/vizio/.translations/lb.json @@ -1,21 +1,14 @@ { "config": { "abort": { - "already_in_progress": "Konfiguratioun's Oflaf fir Vizio Komponent ass schonn am gaangen.", "already_setup": "D\u00ebs Entr\u00e9e ass scho konfigur\u00e9iert.", - "already_setup_with_diff_host_and_name": "D\u00ebs Entr\u00e9e ass scho konfigur\u00e9iert mat engem aneren Host an Numm bas\u00e9ierend unhand vu\u00a0senger Seriennummer. L\u00e4scht w.e.g. al Entr\u00e9e vun \u00e4rer configuration.yaml a\u00a0vum Integratioun's Men\u00fc ier dir prob\u00e9iert d\u00ebsen Apparate r\u00ebm b\u00e4i ze setzen.", - "host_exists": "Vizio Komponent mam Host ass schon konfigur\u00e9iert.", - "name_exists": "Vizio Komponent mam Numm ass scho konfigur\u00e9iert.", - "updated_entry": "D\u00ebs Entr\u00e9e ass scho konfigur\u00e9iert mee d\u00e9i defin\u00e9ierten Numm an/oder Optiounen an der Konfiguratioun st\u00ebmmen net mat deene virdrun import\u00e9ierten Optiounen iwwereneen, esou gouf d'Entr\u00e9e deementspriechend aktualis\u00e9iert.", - "updated_options": "D\u00ebs Entr\u00e9e ass scho konfigur\u00e9iert mee d\u00e9i defin\u00e9iert Optiounen an der Konfiguratioun st\u00ebmmen net mat deene virdrun import\u00e9ierten Optiounen iwwereneen, esou gouf d'Entr\u00e9e deementspriechend aktualis\u00e9iert.", - "updated_volume_step": "D\u00ebs Entr\u00e9e ass scho konfigur\u00e9iert mee d\u00e9i defin\u00e9iert Lautst\u00e4erkt Schr\u00ebtt Gr\u00e9isst an der Konfiguratioun st\u00ebmmt net mat der Konfiguratioun iwwereneen, esou gouf d'Entr\u00e9e deementspriechend aktualis\u00e9iert." + "updated_entry": "D\u00ebs Entr\u00e9e ass scho konfigur\u00e9iert mee d\u00e9i defin\u00e9ierten Numm an/oder Optiounen an der Konfiguratioun st\u00ebmmen net mat deene virdrun import\u00e9ierten Optiounen iwwereneen, esou gouf d'Entr\u00e9e deementspriechend aktualis\u00e9iert." }, "error": { "cant_connect": "Konnt sech net mam Apparat verbannen. [Iwwerpr\u00e9ift Dokumentatioun] (https://www.home-assistant.io/integrations/vizio/) a stellt s\u00e9cher dass:\n- Den Apparat ass un\n- Den Apparat ass mam Netzwierk verbonnen\n- D'Optiounen d\u00e9i dir aginn hutt si korrekt\nier dir d'Verbindung nees prob\u00e9iert", "complete_pairing failed": "Feeler beim ofschl\u00e9isse vun der Kopplung. Iwwerpr\u00e9if dass de PIN korrekt an da de Fernsee nach \u00ebmmer ugeschalt a mam Netzwierk verbonnen ass ier de n\u00e4chste Versuch gestart g\u00ebtt.", "host_exists": "Vizio Apparat mat d\u00ebsem Host ass scho konfigur\u00e9iert.", - "name_exists": "Vizio Apparat mat d\u00ebsen Numm ass scho konfigur\u00e9iert.", - "tv_needs_token": "Wann den Typ vum Apparat `tv`ass da g\u00ebtt ee g\u00ebltegen Acc\u00e8s Jeton ben\u00e9idegt." + "name_exists": "Vizio Apparat mat d\u00ebsen Numm ass scho konfigur\u00e9iert." }, "step": { "pair_tv": { @@ -33,13 +26,6 @@ "description": "D\u00e4in Visio SmartCast Apparat ass elo mam Home Assistant verbonnen.\n\nD\u00e4in Acc\u00e8s Jeton ass '**{access_token}**'.", "title": "Kopplung ofgeschloss" }, - "tv_apps": { - "data": { - "apps_to_include_or_exclude": "Apps fir mat abegr\u00e4ifen oder auszeschl\u00e9issen", - "include_or_exclude": "Apps mat abez\u00e9ien oder auschl\u00e9issen?" - }, - "title": "Apps fir Smart TV konfigur\u00e9ieren" - }, "user": { "data": { "access_token": "Acc\u00e8ss Jeton", @@ -47,15 +33,8 @@ "host": ":", "name": "Numm" }, - "description": "All Felder sinn noutwendeg ausser Acc\u00e8s Jeton. Wann keen Acc\u00e8s Jeton uginn ass, an den Typ vun Apparat ass 'TV', da g\u00ebtt e Kopplungs Prozess mam Apparat gestart fir een Acc\u00e8s Jeton z'erstellen.\n\nFir de Kopplung Prozess ofzesch\u00e9issen,ier op \"ofsch\u00e9cken\" klickt, pr\u00e9ift datt de Fernsee ugeschalt a mam Netzwierk verbonnen ass. Du muss och k\u00ebnnen op de Bildschierm gesinn.", - "title": "Vizo Smartcast ariichten" - }, - "user_tv": { - "data": { - "apps_to_include_or_exclude": "Apps fir mat abegr\u00e4ifen oder auszeschl\u00e9issen", - "include_or_exclude": "Apps mat abez\u00e9ien oder auschl\u00e9issen?" - }, - "title": "Apps fir Smart TV konfigur\u00e9ieren" + "description": "Een Access Jeton g\u00ebtt nn\u00ebmme fir Fernseher gebraucht. Wann Dir e Fernseh konfigur\u00e9iert a keen Access Jeton hutt, da loosst et eidel fir duerch dee Pairing Prozess ze goen.", + "title": "Vizo Smartcast Apparat ariichten" } }, "title": "Vizio SmartCast" @@ -66,9 +45,9 @@ "data": { "apps_to_include_or_exclude": "Apps fir mat abegr\u00e4ifen oder auszeschl\u00e9issen", "include_or_exclude": "Apps mat abez\u00e9ien oder auschl\u00e9issen?", - "timeout": "Z\u00e4itiwwerscheidung bei der Ufro vun der API (sekonnen)", "volume_step": "Lautst\u00e4erkt Schr\u00ebtt Gr\u00e9isst" }, + "description": "Falls du ee Smart TV hues kanns du d'Quelle L\u00ebscht optionell filteren andeems du d'Apps auswiels d\u00e9i soll mat abegraff oder ausgeschloss ginn.", "title": "Vizo Smartcast Optiounen aktualis\u00e9ieren" } }, diff --git a/homeassistant/components/vizio/.translations/nl.json b/homeassistant/components/vizio/.translations/nl.json index bbc95d73bbc..797836e0145 100644 --- a/homeassistant/components/vizio/.translations/nl.json +++ b/homeassistant/components/vizio/.translations/nl.json @@ -1,20 +1,13 @@ { "config": { "abort": { - "already_in_progress": "Configuratie stroom voor vizio component al in uitvoering.", "already_setup": "Dit item is al ingesteld.", - "already_setup_with_diff_host_and_name": "Dit item lijkt al te zijn ingesteld met een andere host en naam op basis van het serienummer. Verwijder alle oude vermeldingen uit uw configuratie.yaml en uit het menu Integraties voordat u opnieuw probeert dit apparaat toe te voegen.", - "host_exists": "Vizio apparaat met opgegeven host al geconfigureerd.", - "name_exists": "Vizio apparaat met opgegeven naam al geconfigureerd.", - "updated_entry": "Dit item is al ingesteld, maar de naam en/of opties die zijn gedefinieerd in de configuratie komen niet overeen met de eerder ge\u00efmporteerde configuratie, dus het configuratie-item is dienovereenkomstig bijgewerkt.", - "updated_options": "Dit item is al ingesteld, maar de opties die in de configuratie zijn gedefinieerd komen niet overeen met de eerder ge\u00efmporteerde optiewaarden, dus de configuratie-invoer is dienovereenkomstig bijgewerkt.", - "updated_volume_step": "Dit item is al ingesteld, maar de volumestapgrootte in de configuratie komt niet overeen met het configuratie-item, dus het configuratie-item is dienovereenkomstig bijgewerkt." + "updated_entry": "Dit item is al ingesteld, maar de naam en/of opties die zijn gedefinieerd in de configuratie komen niet overeen met de eerder ge\u00efmporteerde configuratie, dus het configuratie-item is dienovereenkomstig bijgewerkt." }, "error": { "cant_connect": "Kan geen verbinding maken met het apparaat. [Bekijk de documenten] (https://www.home-assistant.io/integrations/vizio/) en controleer of:\n- Het apparaat is ingeschakeld\n- Het apparaat is aangesloten op het netwerk\n- De waarden die u ingevuld correct zijn\nvoordat u weer probeert om opnieuw in te dienen.", "host_exists": "Vizio apparaat met opgegeven host al geconfigureerd.", - "name_exists": "Vizio apparaat met opgegeven naam al geconfigureerd.", - "tv_needs_token": "Wanneer het apparaattype `tv` is, dan is er een geldig toegangstoken nodig." + "name_exists": "Vizio apparaat met opgegeven naam al geconfigureerd." }, "step": { "user": { @@ -33,7 +26,6 @@ "step": { "init": { "data": { - "timeout": "Time-out van API-aanvragen (seconden)", "volume_step": "Volume Stapgrootte" }, "title": "Update Vizo SmartCast Opties" diff --git a/homeassistant/components/vizio/.translations/no.json b/homeassistant/components/vizio/.translations/no.json index 6391ac20aa7..65e96945e46 100644 --- a/homeassistant/components/vizio/.translations/no.json +++ b/homeassistant/components/vizio/.translations/no.json @@ -1,21 +1,14 @@ { "config": { "abort": { - "already_in_progress": "Konfigurasjons flyt for Vizio komponent er allerede i gang.", "already_setup": "Denne oppf\u00f8ringen er allerede konfigurert.", - "already_setup_with_diff_host_and_name": "Denne oppf\u00f8ringen ser ut til \u00e5 allerede v\u00e6re konfigurert med en annen vert og navn basert p\u00e5 serienummeret. Fjern den gamle oppf\u00f8ringer fra konfigurasjonen.yaml og fra integrasjonsmenyen f\u00f8r du pr\u00f8ver ut \u00e5 legge til denne enheten p\u00e5 nytt.", - "host_exists": "Vizio komponent med vert allerede konfigurert.", - "name_exists": "Vizio-komponent med navn som allerede er konfigurert.", - "updated_entry": "Dette innlegget har allerede v\u00e6rt oppsett, men navnet, apps, og/eller alternativer som er definert i konfigurasjon som ikke stemmer med det som tidligere er importert konfigurasjon, s\u00e5 konfigurasjonen innlegget har blitt oppdatert i henhold til dette.", - "updated_options": "Denne oppf\u00f8ringen er allerede konfigurert, men alternativene som er definert i konfigurasjonen samsvarer ikke med de tidligere importerte alternativverdiene, s\u00e5 konfigurasjonsoppf\u00f8ringen er oppdatert deretter.", - "updated_volume_step": "Denne oppf\u00f8ringen er allerede konfigurert, men volumstrinnst\u00f8rrelsen i konfigurasjonen samsvarer ikke med konfigurasjonsoppf\u00f8ringen, s\u00e5 konfigurasjonsoppf\u00f8ringen er oppdatert deretter." + "updated_entry": "Dette innlegget har allerede v\u00e6rt oppsett, men navnet, apps, og/eller alternativer som er definert i konfigurasjon som ikke stemmer med det som tidligere er importert konfigurasjon, s\u00e5 konfigurasjonen innlegget har blitt oppdatert i henhold til dette." }, "error": { "cant_connect": "Kunne ikke koble til enheten. [Se gjennom dokumentene] (https://www.home-assistant.io/integrations/vizio/) og bekreft at: \n - Enheten er sl\u00e5tt p\u00e5 \n - Enheten er koblet til nettverket \n - Verdiene du fylte ut er n\u00f8yaktige \n f\u00f8r du pr\u00f8ver \u00e5 sende inn p\u00e5 nytt.", "complete_pairing failed": "Kan ikke fullf\u00f8re sammenkoblingen. Forsikre deg om at PIN-koden du oppga er riktig, og at TV-en fortsatt er p\u00e5 og tilkoblet nettverket f\u00f8r du sender inn p\u00e5 nytt.", "host_exists": "Vizio-enhet med spesifisert vert allerede konfigurert.", - "name_exists": "Vizio-enhet med spesifisert navn allerede konfigurert.", - "tv_needs_token": "N\u00e5r enhetstype er `tv`, er det n\u00f8dvendig med en gyldig tilgangstoken." + "name_exists": "Vizio-enhet med spesifisert navn allerede konfigurert." }, "step": { "pair_tv": { @@ -33,14 +26,6 @@ "description": "Din Vizio SmartCast TV er n\u00e5 koblet til Home Assistant.\n\nTilgangstokenet er **{access_token}**.", "title": "Sammenkoblingen Er Fullf\u00f8rt" }, - "tv_apps": { - "data": { - "apps_to_include_or_exclude": "Apper \u00e5 inkludere eller ekskludere", - "include_or_exclude": "Inkluder eller ekskludere apper?" - }, - "description": "Hvis du har en Smart TV, kan du eventuelt filtrere kildelisten din ved \u00e5 velge hvilke apper du vil inkludere eller ekskludere i kildelisten. Du kan hoppe over dette trinnet for TV-er som ikke st\u00f8tter apper.", - "title": "Konfigurere Apper for Smart TV" - }, "user": { "data": { "access_token": "Tilgangstoken", @@ -50,14 +35,6 @@ }, "description": "En tilgangstoken er bare n\u00f8dvendig for TV-er. Hvis du konfigurerer en TV og ikke har tilgangstoken enn\u00e5, m\u00e5 du la den st\u00e5 tom for \u00e5 g\u00e5 gjennom en sammenkoblingsprosess.", "title": "Sett opp Vizio SmartCast-enhet" - }, - "user_tv": { - "data": { - "apps_to_include_or_exclude": "Apper \u00e5 inkludere eller ekskludere", - "include_or_exclude": "Inkluder eller ekskludere apper?" - }, - "description": "Hvis du har en Smart TV, kan du eventuelt filtrere kildelisten din ved \u00e5 velge hvilke apper du vil inkludere eller ekskludere i kildelisten. Du kan hoppe over dette trinnet for TV-er som ikke st\u00f8tter apper.", - "title": "Konfigurere Apper for Smart TV" } }, "title": "" @@ -68,7 +45,6 @@ "data": { "apps_to_include_or_exclude": "Apper \u00e5 inkludere eller ekskludere", "include_or_exclude": "Inkluder eller ekskludere apper?", - "timeout": "Tidsavbrudd for API-foresp\u00f8rsel (sekunder)", "volume_step": "St\u00f8rrelse p\u00e5 volum trinn" }, "description": "Hvis du har en Smart-TV, kan du eventuelt filtrere kildelisten ved \u00e5 velge hvilke apper som skal inkluderes eller utelates i kildelisten.", diff --git a/homeassistant/components/vizio/.translations/pl.json b/homeassistant/components/vizio/.translations/pl.json index 91ed0b2dd53..2537279d998 100644 --- a/homeassistant/components/vizio/.translations/pl.json +++ b/homeassistant/components/vizio/.translations/pl.json @@ -1,20 +1,13 @@ { "config": { "abort": { - "already_in_progress": "Konfiguracja komponentu Vizio jest ju\u017c w trakcie.", "already_setup": "Ten komponent jest ju\u017c skonfigurowany.", - "already_setup_with_diff_host_and_name": "Wygl\u0105da na to, \u017ce ten wpis zosta\u0142 ju\u017c skonfigurowany z innym hostem i nazw\u0105 na podstawie jego numeru seryjnego. Usu\u0144 wszystkie stare wpisy z pliku configuration.yaml i z menu Integracje przed ponown\u0105 pr\u00f3b\u0105 dodania tego urz\u0105dzenia.", - "host_exists": "Komponent Vizio dla tego hosta jest ju\u017c skonfigurowany.", - "name_exists": "Komponent Vizio dla tej nazwy jest ju\u017c skonfigurowany.", - "updated_entry": "Ten wpis zosta\u0142 ju\u017c skonfigurowany, ale nazwa i/lub opcje zdefiniowane w konfiguracji nie pasuj\u0105 do wcze\u015bniej zaimportowanych warto\u015bci, wi\u0119c wpis konfiguracji zosta\u0142 odpowiednio zaktualizowany.", - "updated_options": "Ten wpis zosta\u0142 ju\u017c skonfigurowany, ale opcje zdefiniowane w konfiguracji nie pasuj\u0105 do wcze\u015bniej zaimportowanych warto\u015bci, wi\u0119c wpis konfiguracji zosta\u0142 odpowiednio zaktualizowany.", - "updated_volume_step": "Ten wpis zosta\u0142 ju\u017c skonfigurowany, ale rozmiar skoku g\u0142o\u015bno\u015bci w konfiguracji nie pasuje do wpisu konfiguracji, wi\u0119c wpis konfiguracji zosta\u0142 odpowiednio zaktualizowany." + "updated_entry": "Ten wpis zosta\u0142 ju\u017c skonfigurowany, ale nazwa i/lub opcje zdefiniowane w konfiguracji nie pasuj\u0105 do wcze\u015bniej zaimportowanych warto\u015bci, wi\u0119c wpis konfiguracji zosta\u0142 odpowiednio zaktualizowany." }, "error": { "cant_connect": "Nie mo\u017cna po\u0142\u0105czy\u0107 si\u0119 z urz\u0105dzeniem. [Przejrzyj dokumentacj\u0119] (https://www.home-assistant.io/integrations/vizio/) i ponownie sprawd\u017a, czy: \n - urz\u0105dzenie jest w\u0142\u0105czone,\n - urz\u0105dzenie jest pod\u0142\u0105czone do sieci,\n - wprowadzone warto\u015bci s\u0105 prawid\u0142owe,\n przed pr\u00f3b\u0105 ponownego przes\u0142ania.", "host_exists": "Urz\u0105dzenie Vizio z okre\u015blonym hostem jest ju\u017c skonfigurowane.", - "name_exists": "Urz\u0105dzenie Vizio o okre\u015blonej nazwie jest ju\u017c skonfigurowane.", - "tv_needs_token": "Gdy typem urz\u0105dzenia jest `tv` potrzebny jest prawid\u0142owy token dost\u0119pu." + "name_exists": "Urz\u0105dzenie Vizio o okre\u015blonej nazwie jest ju\u017c skonfigurowane." }, "step": { "pair_tv": { @@ -28,14 +21,6 @@ "pairing_complete_import": { "title": "Parowanie zako\u0144czone" }, - "tv_apps": { - "data": { - "apps_to_include_or_exclude": "Aplikacje do do\u0142\u0105czenia lub wykluczenia", - "include_or_exclude": "Do\u0142\u0105czanie lub wykluczanie aplikacji" - }, - "description": "Je\u015bli telewizor obs\u0142uguje aplikacje, mo\u017cesz opcjonalnie filtrowa\u0107 aplikacje, kt\u00f3re maj\u0105 zosta\u0107 uwzgl\u0119dnione lub wykluczone z listy \u017ar\u00f3de\u0142. Mo\u017cesz pomin\u0105\u0107 ten krok dla telewizor\u00f3w, kt\u00f3re nie obs\u0142uguj\u0105 aplikacji.", - "title": "Konfigurowanie aplikacji dla smart TV" - }, "user": { "data": { "access_token": "Token dost\u0119pu", @@ -44,14 +29,6 @@ "name": "Nazwa" }, "title": "Konfiguracja klienta Vizio SmartCast" - }, - "user_tv": { - "data": { - "apps_to_include_or_exclude": "Aplikacje do do\u0142\u0105czenia lub wykluczenia", - "include_or_exclude": "Do\u0142\u0105czy\u0107 czy wykluczy\u0107 aplikacje?" - }, - "description": "Je\u015bli telewizor obs\u0142uguje aplikacje, mo\u017cesz opcjonalnie filtrowa\u0107 aplikacje, kt\u00f3re maj\u0105 zosta\u0107 uwzgl\u0119dnione lub wykluczone z listy \u017ar\u00f3de\u0142. Mo\u017cesz pomin\u0105\u0107 ten krok dla telewizor\u00f3w, kt\u00f3re nie obs\u0142uguj\u0105 aplikacji.", - "title": "Skonfiguruj aplikacje dla Smart TV" } }, "title": "Vizio SmartCast" @@ -62,7 +39,6 @@ "data": { "apps_to_include_or_exclude": "Aplikacje do do\u0142\u0105czenia lub wykluczenia", "include_or_exclude": "Do\u0142\u0105czanie lub wykluczanie aplikacji", - "timeout": "Limit czasu \u017c\u0105dania API (sekundy)", "volume_step": "Skok g\u0142o\u015bno\u015bci" }, "description": "Je\u015bli telewizor obs\u0142uguje aplikacje, mo\u017cesz opcjonalnie filtrowa\u0107 aplikacje, kt\u00f3re maj\u0105 zosta\u0107 uwzgl\u0119dnione lub wykluczone z listy \u017ar\u00f3de\u0142. Mo\u017cesz pomin\u0105\u0107 ten krok dla telewizor\u00f3w, kt\u00f3re nie obs\u0142uguj\u0105 aplikacji.", diff --git a/homeassistant/components/vizio/.translations/ru.json b/homeassistant/components/vizio/.translations/ru.json index 9162b2b0fe6..e1e6ac73b9d 100644 --- a/homeassistant/components/vizio/.translations/ru.json +++ b/homeassistant/components/vizio/.translations/ru.json @@ -1,21 +1,14 @@ { "config": { "abort": { - "already_in_progress": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f.", "already_setup": "\u042d\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u0436\u0435 \u0431\u044b\u043b\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430.", - "already_setup_with_diff_host_and_name": "\u041f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u044d\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u0436\u0435 \u0431\u044b\u043b\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c \u0445\u043e\u0441\u0442\u043e\u043c \u0438 \u0438\u043c\u0435\u043d\u0435\u043c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0435\u0433\u043e \u0441\u0435\u0440\u0438\u0439\u043d\u043e\u0433\u043e \u043d\u043e\u043c\u0435\u0440\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0432\u0441\u0435 \u0441\u0442\u0430\u0440\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438\u0437 \u0412\u0430\u0448\u0435\u0433\u043e configuration.yaml \u0438 \u0438\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \"\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438\" \u0438 \u0437\u0430\u0442\u0435\u043c \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443.", - "host_exists": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.", - "name_exists": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.", - "updated_entry": "\u042d\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430, \u043d\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u0430\u043d\u0435\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u043f\u0438\u0441\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0431\u044b\u043b\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430.", - "updated_options": "\u042d\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430, \u043d\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u0430\u043d\u0435\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u043f\u0438\u0441\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0431\u044b\u043b\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430.", - "updated_volume_step": "\u042d\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430, \u043d\u043e \u0448\u0430\u0433 \u0433\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u0438, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u0430\u043d\u0435\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u043f\u0438\u0441\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0431\u044b\u043b\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430." + "updated_entry": "\u042d\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430, \u043d\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u0430\u043d\u0435\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u043f\u0438\u0441\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0431\u044b\u043b\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430." }, "error": { "cant_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443. \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0443, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e:\n- \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e;\n- \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043a \u0441\u0435\u0442\u0438;\n- \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0432\u0432\u0435\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.\n\n\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 [\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438](https://www.home-assistant.io/integrations/vizio/) \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.", "complete_pairing failed": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0441\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435. \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0443, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0412\u0430\u043c\u0438 PIN-\u043a\u043e\u0434 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439, \u0430 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043a \u0441\u0435\u0442\u0438.", "host_exists": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.", - "name_exists": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.", - "tv_needs_token": "\u0414\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f `tv` \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0442\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430." + "name_exists": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430." }, "step": { "pair_tv": { @@ -33,14 +26,6 @@ "description": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e Vizio SmartCast \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043a Home Assistant. \n\n\u0412\u0430\u0448 \u0442\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430 - '**{access_token}**'.", "title": "\u0421\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e" }, - "tv_apps": { - "data": { - "apps_to_include_or_exclude": "\u0421\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439", - "include_or_exclude": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f?" - }, - "description": "\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c Smart TV, \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0438\u0432 \u0438\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0448\u0430\u0433 \u0434\u043b\u044f \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.", - "title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f Smart TV" - }, "user": { "data": { "access_token": "\u0422\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430", @@ -50,14 +35,6 @@ }, "description": "\u0422\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u043e\u0432. \u0415\u0441\u043b\u0438 \u0412\u044b \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0435 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440 \u0438 \u0443 \u0412\u0430\u0441 \u0435\u0449\u0435 \u043d\u0435\u0442 \u0442\u043e\u043a\u0435\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u043e \u043f\u043e\u043b\u0435 \u043f\u0443\u0441\u0442\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f.", "title": "Vizio SmartCast" - }, - "user_tv": { - "data": { - "apps_to_include_or_exclude": "\u0421\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439", - "include_or_exclude": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f?" - }, - "description": "\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c Smart TV, \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0438\u0432 \u0438\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0448\u0430\u0433 \u0434\u043b\u044f \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.", - "title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f Smart TV" } }, "title": "Vizio SmartCast" @@ -68,7 +45,6 @@ "data": { "apps_to_include_or_exclude": "\u0421\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439", "include_or_exclude": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f?", - "timeout": "\u0422\u0430\u0439\u043c-\u0430\u0443\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 API (\u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445)", "volume_step": "\u0428\u0430\u0433 \u0433\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u0438" }, "description": "\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c Smart TV, \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0438\u0432 \u0438\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430.", diff --git a/homeassistant/components/vizio/.translations/sl.json b/homeassistant/components/vizio/.translations/sl.json index 8163846aec0..ed325acd868 100644 --- a/homeassistant/components/vizio/.translations/sl.json +++ b/homeassistant/components/vizio/.translations/sl.json @@ -1,21 +1,14 @@ { "config": { "abort": { - "already_in_progress": "Konfiguracijski tok za komponento vizio je \u017ee v teku.", "already_setup": "Ta vnos je \u017ee nastavljen.", - "already_setup_with_diff_host_and_name": "Zdi se, da je bil ta vnos \u017ee nastavljen z drugim gostiteljem in imenom glede na njegovo serijsko \u0161tevilko. Pred ponovnim poskusom dodajanja te naprave, odstranite vse stare vnose iz config.yaml in iz menija Integrations.", - "host_exists": "VIZIO komponenta z gostiteljem \u017ee nastavljen.", - "name_exists": "Vizio komponenta z imenom je \u017ee konfigurirana.", - "updated_entry": "Ta vnos je bil \u017ee nastavljen, vendar se ime, aplikacije in/ali mo\u017enosti, dolo\u010dene v konfiguraciji, ne ujemajo s predhodno uvo\u017eeno konfiguracijo, zato je bil konfiguracijski vnos ustrezno posodobljen.", - "updated_options": "Ta vnos je \u017ee nastavljen, vendar se mo\u017enosti, definirane v config-u, ne ujemajo s predhodno uvo\u017eenimi vrednostmi, zato je bil vnos konfiguracije ustrezno posodobljen.", - "updated_volume_step": "Ta vnos je \u017ee nastavljen, vendar velikost koraka glasnosti v config-u ne ustreza vnosu konfiguracije, zato je bil vnos konfiguracije ustrezno posodobljen." + "updated_entry": "Ta vnos je bil \u017ee nastavljen, vendar se ime, aplikacije in/ali mo\u017enosti, dolo\u010dene v konfiguraciji, ne ujemajo s predhodno uvo\u017eeno konfiguracijo, zato je bil konfiguracijski vnos ustrezno posodobljen." }, "error": { "cant_connect": "Ni bilo mogo\u010de povezati z napravo. [Preglejte dokumente] (https://www.home-assistant.io/integrations/vizio/) in ponovno preverite, ali: \n \u2013 Naprava je vklopljena \n \u2013 Naprava je povezana z omre\u017ejem \n \u2013 Vrednosti, ki ste jih izpolnili, so to\u010dne \nnato poskusite ponovno.", "complete_pairing failed": "Seznanjanja ni mogo\u010de dokon\u010dati. Zagotovite, da je PIN, ki ste ga vnesli, pravilen in da je televizor \u0161e vedno vklopljen in priklju\u010den na omre\u017eje, preden ponovno poizkusite.", "host_exists": "Naprava Vizio z dolo\u010denim gostiteljem je \u017ee konfigurirana.", - "name_exists": "Naprava Vizio z navedenim imenom je \u017ee konfigurirana.", - "tv_needs_token": "Ko je vrsta naprave\u00bb TV \u00ab, je potreben veljaven \u017eeton za dostop." + "name_exists": "Naprava Vizio z navedenim imenom je \u017ee konfigurirana." }, "step": { "pair_tv": { @@ -33,14 +26,6 @@ "description": "Va\u0161 VIZIO SmartCast TV je zdaj priklju\u010den na Home Assistant.\n\n\u017deton za dostop je '**{access_token}**'.", "title": "Seznanjanje je kon\u010dano" }, - "tv_apps": { - "data": { - "apps_to_include_or_exclude": "Aplikacije za vklju\u010ditev ali izklju\u010ditev", - "include_or_exclude": "Vklju\u010di ali Izklju\u010di Aplikacije?" - }, - "description": "\u010ce imate pametni TV, lahko po izbiri filtrirate seznam virov tako, da izberete, katere aplikacije \u017eelite vklju\u010diti ali izklju\u010diti na seznamu virov. Ta korak lahko presko\u010dite za televizorje, ki ne podpirajo aplikacij.", - "title": "Konfigurirajte aplikacije za pametno televizijo" - }, "user": { "data": { "access_token": "\u017deton za dostop", @@ -50,14 +35,6 @@ }, "description": "Dostopni \u017eeton je potreben samo za televizorje. \u010ce konfigurirate televizor in \u0161e nimate \u017eetona za dostop, ga pustite prazno in boste \u0161li, da bo \u0161el skozi postopek seznanjanja.", "title": "Namestite Vizio SmartCast napravo" - }, - "user_tv": { - "data": { - "apps_to_include_or_exclude": "Aplikacije za vklju\u010ditev ali izklju\u010ditev", - "include_or_exclude": "Vklju\u010di ali Izklju\u010di Aplikacije?" - }, - "description": "\u010ce imate pametni TV, lahko po izbiri filtrirate seznam virov tako, da izberete, katere aplikacije \u017eelite vklju\u010diti ali izklju\u010diti na seznamu virov. Ta korak lahko presko\u010dite za televizorje, ki ne podpirajo aplikacij.", - "title": "Konfigurirajte aplikacije za pametno televizijo" } }, "title": "Vizio SmartCast" @@ -68,7 +45,6 @@ "data": { "apps_to_include_or_exclude": "Aplikacije za vklju\u010ditev ali izklju\u010ditev", "include_or_exclude": "Vklju\u010di ali Izklju\u010di Aplikacije?", - "timeout": "\u010casovna omejitev zahteve za API (sekunde)", "volume_step": "Velikost koraka glasnosti" }, "description": "\u010ce imate pametni TV, lahko po izbiri filtrirate seznam virov tako, da izberete, katere aplikacije \u017eelite vklju\u010diti ali izklju\u010diti na seznamu virov.", diff --git a/homeassistant/components/vizio/.translations/sv.json b/homeassistant/components/vizio/.translations/sv.json index 072b441a071..bafd7d1bd2f 100644 --- a/homeassistant/components/vizio/.translations/sv.json +++ b/homeassistant/components/vizio/.translations/sv.json @@ -1,20 +1,13 @@ { "config": { "abort": { - "already_in_progress": "Konfigurationsfl\u00f6de f\u00f6r vizio-komponenten p\u00e5g\u00e5r\nredan.", "already_setup": "Den h\u00e4r posten har redan st\u00e4llts in.", - "already_setup_with_diff_host_and_name": "Den h\u00e4r posten verkar redan ha st\u00e4llts in med en annan v\u00e4rd och ett annat namn baserat p\u00e5 dess serienummer. Ta bort alla gamla poster fr\u00e5n configuration.yaml och fr\u00e5n menyn Integrationer innan du f\u00f6rs\u00f6ker l\u00e4gga till den h\u00e4r enheten igen.", - "host_exists": "Vizio-komponenten med v\u00e4rdnamnet \u00e4r redan konfigurerad.", - "name_exists": "Vizio-komponent med namn redan konfigurerad.", - "updated_entry": "Den h\u00e4r posten har redan konfigurerats, men namnet och/eller alternativen som definierats i konfigurationen matchar inte den tidigare importerade konfigurationen och d\u00e4rf\u00f6r har konfigureringsposten uppdaterats i enlighet med detta.", - "updated_options": "Den h\u00e4r posten har redan st\u00e4llts in men de alternativ som definierats i konfigurationen matchar inte de tidigare importerade alternativv\u00e4rdena s\u00e5 konfigurationsposten har uppdaterats i enlighet med detta.", - "updated_volume_step": "Den h\u00e4r posten har redan st\u00e4llts in men volymstegstorleken i konfigurationen matchar inte konfigurationsposten s\u00e5 konfigurationsposten har uppdaterats i enlighet med detta." + "updated_entry": "Den h\u00e4r posten har redan konfigurerats, men namnet och/eller alternativen som definierats i konfigurationen matchar inte den tidigare importerade konfigurationen och d\u00e4rf\u00f6r har konfigureringsposten uppdaterats i enlighet med detta." }, "error": { "cant_connect": "Det gick inte att ansluta till enheten. [Granska dokumentationen] (https://www.home-assistant.io/integrations/vizio/) och p\u00e5 nytt kontrollera att\n- Enheten \u00e4r p\u00e5slagen\n- Enheten \u00e4r ansluten till n\u00e4tverket\n- De v\u00e4rden du fyllt i \u00e4r korrekta\ninnan du f\u00f6rs\u00f6ker skicka in igen.", "host_exists": "Vizio-enheten med angivet v\u00e4rdnamn \u00e4r redan konfigurerad.", - "name_exists": "Vizio-enheten med angivet namn \u00e4r redan konfigurerad.", - "tv_needs_token": "N\u00e4r Enhetstyp \u00e4r 'tv' beh\u00f6vs en giltig \u00e5tkomsttoken." + "name_exists": "Vizio-enheten med angivet namn \u00e4r redan konfigurerad." }, "step": { "user": { @@ -33,7 +26,6 @@ "step": { "init": { "data": { - "timeout": "Timeout f\u00f6r API-anrop (sekunder)", "volume_step": "Storlek p\u00e5 volymsteg" }, "title": "Uppdatera Vizo SmartCast-alternativ" diff --git a/homeassistant/components/vizio/.translations/zh-Hant.json b/homeassistant/components/vizio/.translations/zh-Hant.json index 4d826a287f6..eb396428e68 100644 --- a/homeassistant/components/vizio/.translations/zh-Hant.json +++ b/homeassistant/components/vizio/.translations/zh-Hant.json @@ -1,21 +1,14 @@ { "config": { "abort": { - "already_in_progress": "Vizio \u5143\u4ef6\u8a2d\u5b9a\u5df2\u7d93\u9032\u884c\u4e2d\u3002", "already_setup": "\u6b64\u7269\u4ef6\u5df2\u8a2d\u5b9a\u904e\u3002", - "already_setup_with_diff_host_and_name": "\u6839\u64da\u6240\u63d0\u4f9b\u7684\u5e8f\u865f\uff0c\u6b64\u7269\u4ef6\u4f3c\u4e4e\u5df2\u7d93\u4f7f\u7528\u4e0d\u540c\u7684\u4e3b\u6a5f\u7aef\u8207\u540d\u7a31\u9032\u884c\u8a2d\u5b9a\u3002\u8acb\u5f9e\u6574\u5408\u9078\u55ae Config.yaml \u4e2d\u79fb\u9664\u820a\u7269\u4ef6\uff0c\u7136\u5f8c\u518d\u65b0\u589e\u6b64\u8a2d\u5099\u3002", - "host_exists": "\u4f9d\u4e3b\u6a5f\u7aef\u4e4b Vizio \u5143\u4ef6\u8a2d\u5b9a\u5df2\u7d93\u9032\u884c\u4e2d\u3002", - "name_exists": "\u4f9d\u540d\u7a31\u4e4b Vizio \u5143\u4ef6\u8a2d\u5b9a\u5df2\u7d93\u9032\u884c\u4e2d\u3002", - "updated_entry": "\u6b64\u7269\u4ef6\u5df2\u7d93\u8a2d\u5b9a\uff0c\u4f46\u8a2d\u5b9a\u4e4b\u540d\u7a31\u3001App \u53ca/\u6216\u9078\u9805\u8207\u5148\u524d\u532f\u5165\u7684\u7269\u4ef6\u9078\u9805\u503c\u4e0d\u5408\uff0c\u56e0\u6b64\u8a2d\u5b9a\u5c07\u6703\u8ddf\u8457\u66f4\u65b0\u3002", - "updated_options": "\u6b64\u7269\u4ef6\u5df2\u7d93\u8a2d\u5b9a\uff0c\u4f46\u8a2d\u5b9a\u4e4b\u9078\u9805\u5b9a\u7fa9\u8207\u7269\u4ef6\u9078\u9805\u503c\u4e0d\u5408\uff0c\u56e0\u6b64\u8a2d\u5b9a\u5c07\u6703\u8ddf\u8457\u66f4\u65b0\u3002", - "updated_volume_step": "\u6b64\u7269\u4ef6\u5df2\u7d93\u8a2d\u5b9a\uff0c\u4f46\u8a2d\u5b9a\u4e4b\u97f3\u91cf\u5927\u5c0f\u8207\u7269\u4ef6\u8a2d\u5b9a\u4e0d\u5408\uff0c\u56e0\u6b64\u8a2d\u5b9a\u5c07\u6703\u8ddf\u8457\u66f4\u65b0\u3002" + "updated_entry": "\u6b64\u7269\u4ef6\u5df2\u7d93\u8a2d\u5b9a\uff0c\u4f46\u8a2d\u5b9a\u4e4b\u540d\u7a31\u3001App \u53ca/\u6216\u9078\u9805\u8207\u5148\u524d\u532f\u5165\u7684\u7269\u4ef6\u9078\u9805\u503c\u4e0d\u5408\uff0c\u56e0\u6b64\u8a2d\u5b9a\u5c07\u6703\u8ddf\u8457\u66f4\u65b0\u3002" }, "error": { "cant_connect": "\u7121\u6cd5\u9023\u7dda\u81f3\u8a2d\u5099\u3002[\u8acb\u53c3\u8003\u8aaa\u660e\u6587\u4ef6](https://www.home-assistant.io/integrations/vizio/) \u4e26\u78ba\u8a8d\u4ee5\u4e0b\u9805\u76ee\uff1a\n- \u8a2d\u5099\u5df2\u958b\u6a5f\n- \u8a2d\u5099\u5df2\u9023\u7dda\u81f3\u7db2\u8def\n- \u586b\u5beb\u8cc7\u6599\u6b63\u78ba\n\u7136\u5f8c\u518d\u91cd\u65b0\u50b3\u9001\u3002", "complete_pairing failed": "\u7121\u6cd5\u5b8c\u6210\u914d\u5c0d\uff0c\u50b3\u9001\u524d\u3001\u8acb\u78ba\u5b9a\u6240\u8f38\u5165\u7684 PIN \u78bc\u3001\u540c\u6642\u96fb\u8996\u5df2\u7d93\u958b\u555f\u4e26\u9023\u7dda\u81f3\u7db2\u8def\u3002", "host_exists": "\u4f9d\u4e3b\u6a5f\u7aef\u4e4b Vizio \u5143\u4ef6\u8a2d\u5b9a\u5df2\u8a2d\u5b9a\u5b8c\u6210\u3002", - "name_exists": "\u4f9d\u540d\u7a31\u4e4b Vizio \u5143\u4ef6\u8a2d\u5b9a\u5df2\u8a2d\u5b9a\u5b8c\u6210\u3002", - "tv_needs_token": "\u7576\u8a2d\u5099\u985e\u5225\u70ba\u300cTV\u300d\u6642\uff0c\u9700\u8981\u5b58\u53d6\u5bc6\u9470\u3002" + "name_exists": "\u4f9d\u540d\u7a31\u4e4b Vizio \u5143\u4ef6\u8a2d\u5b9a\u5df2\u8a2d\u5b9a\u5b8c\u6210\u3002" }, "step": { "pair_tv": { @@ -33,14 +26,6 @@ "description": "Vizio SmartCast TV \u8a2d\u5099\u5df2\u9023\u7dda\u81f3 Home Assistant\u3002\n\n\u5b58\u53d6\u5bc6\u9470\u70ba\u300c**{access_token}**\u300d\u3002", "title": "\u914d\u5c0d\u5b8c\u6210" }, - "tv_apps": { - "data": { - "apps_to_include_or_exclude": "\u6240\u8981\u5305\u542b\u6216\u6392\u9664\u7684 App", - "include_or_exclude": "\u5305\u542b\u6216\u6392\u9664 App\uff1f" - }, - "description": "\u5047\u5982\u60a8\u64c1\u6709 Smart TV\u3001\u53ef\u4ee5\u65bc\u4f86\u6e90\u5217\u8868\u4e2d\u9078\u64c7\u6216\u6392\u9664\u904e\u6ffe App\u3002\u5047\u5982\u96fb\u8996\u4e0d\u652f\u63f4 App\u3001\u5247\u53ef\u8df3\u904e\u6b64\u6b65\u9a5f\u3002", - "title": "Smart TV \u8a2d\u5b9a App" - }, "user": { "data": { "access_token": "\u5b58\u53d6\u5bc6\u9470", @@ -50,14 +35,6 @@ }, "description": "\u6b64\u96fb\u8996\u50c5\u9700\u5b58\u53d6\u5bc6\u9470\u3002\u5047\u5982\u60a8\u6b63\u5728\u8a2d\u5b9a\u96fb\u8996\u3001\u5c1a\u672a\u53d6\u5f97\u5bc6\u9470\uff0c\u4fdd\u6301\u7a7a\u767d\u4ee5\u9032\u884c\u914d\u5c0d\u904e\u7a0b\u3002", "title": "\u8a2d\u5b9a Vizio SmartCast \u8a2d\u5099" - }, - "user_tv": { - "data": { - "apps_to_include_or_exclude": "\u6240\u8981\u5305\u542b\u6216\u6392\u9664\u7684 App", - "include_or_exclude": "\u5305\u542b\u6216\u6392\u9664 App\uff1f" - }, - "description": "\u5047\u5982\u60a8\u64c1\u6709 Smart TV\u3001\u53ef\u4ee5\u65bc\u4f86\u6e90\u5217\u8868\u4e2d\u9078\u64c7\u6216\u6392\u9664\u904e\u6ffe App\u3002\u5047\u5982\u96fb\u8996\u4e0d\u652f\u63f4 App\u3001\u5247\u53ef\u8df3\u904e\u6b64\u6b65\u9a5f\u3002", - "title": "Smart TV \u8a2d\u5b9a App" } }, "title": "Vizio SmartCast" @@ -68,7 +45,6 @@ "data": { "apps_to_include_or_exclude": "\u6240\u8981\u5305\u542b\u6216\u6392\u9664\u7684 App", "include_or_exclude": "\u5305\u542b\u6216\u6392\u9664 App\uff1f", - "timeout": "API \u8acb\u6c42\u903e\u6642\uff08\u79d2\uff09", "volume_step": "\u97f3\u91cf\u5927\u5c0f" }, "description": "\u5047\u5982\u60a8\u64c1\u6709 Smart TV\u3001\u53ef\u7531\u4f86\u6e90\u5217\u8868\u4e2d\u9078\u64c7\u6240\u8981\u904e\u6ffe\u5305\u542b\u6216\u6392\u9664\u7684 App\u3002\u3002", diff --git a/homeassistant/components/withings/.translations/bg.json b/homeassistant/components/withings/.translations/bg.json index 4064b21ca6b..30e384e0bc0 100644 --- a/homeassistant/components/withings/.translations/bg.json +++ b/homeassistant/components/withings/.translations/bg.json @@ -1,8 +1,5 @@ { "config": { - "abort": { - "no_flows": "\u0422\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0442\u0435 Withings, \u043f\u0440\u0435\u0434\u0438 \u0434\u0430 \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430 \u0441\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0430\u0442\u0435. \u041c\u043e\u043b\u044f, \u043f\u0440\u043e\u0447\u0435\u0442\u0435\u0442\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u0442\u0430." - }, "create_entry": { "default": "\u0423\u0441\u043f\u0435\u0448\u043d\u043e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u043a\u0438\u0440\u0430\u043d\u0435 \u0441 Withings \u0437\u0430 \u0438\u0437\u0431\u0440\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0444\u0438\u043b." }, @@ -13,13 +10,6 @@ }, "description": "\u041a\u043e\u0439 \u043f\u0440\u043e\u0444\u0438\u043b \u0441\u0442\u0435 \u0438\u0437\u0431\u0440\u0430\u043b\u0438 \u043d\u0430 \u0443\u0435\u0431\u0441\u0430\u0439\u0442\u0430 \u043d\u0430 Withings? \u0412\u0430\u0436\u043d\u043e \u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0442\u0435 \u0434\u0430 \u0441\u044a\u0432\u043f\u0430\u0434\u0430\u0442, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u0435\u043d \u0441\u043b\u0443\u0447\u0430\u0439 \u0434\u0430\u043d\u043d\u0438\u0442\u0435 \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u043d\u043e \u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438.", "title": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u043f\u0440\u043e\u0444\u0438\u043b." - }, - "user": { - "data": { - "profile": "\u041f\u0440\u043e\u0444\u0438\u043b" - }, - "description": "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u043f\u0440\u043e\u0444\u0438\u043b, \u043a\u044a\u043c \u043a\u043e\u0439\u0442\u043e \u0438\u0441\u043a\u0430\u0442\u0435 \u0434\u0430 \u0441\u0432\u044a\u0440\u0436\u0435\u0442\u0435 Home Assistant \u0441 Withings. \u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0442\u0430 \u043d\u0430 Withings \u043d\u0435 \u0437\u0430\u0431\u0440\u0430\u0432\u044f\u0439\u0442\u0435 \u0434\u0430 \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0435\u0434\u0438\u043d \u0438 \u0441\u044a\u0449 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b \u0438\u043b\u0438 \u0434\u0430\u043d\u043d\u0438\u0442\u0435 \u043d\u044f\u043c\u0430 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u0441\u0432\u044a\u0440\u0437\u0430\u043d\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u043d\u043e.", - "title": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u043f\u0440\u043e\u0444\u0438\u043b." } }, "title": "Withings" diff --git a/homeassistant/components/withings/.translations/ca.json b/homeassistant/components/withings/.translations/ca.json index edb95a946aa..6363ddf1983 100644 --- a/homeassistant/components/withings/.translations/ca.json +++ b/homeassistant/components/withings/.translations/ca.json @@ -2,8 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "S'ha acabat el temps d'espera durant la generaci\u00f3 de l'URL d'autoritzaci\u00f3.", - "missing_configuration": "La integraci\u00f3 Withings no est\u00e0 configurada. Mira'n la documentaci\u00f3.", - "no_flows": "Necessites configurar Withings abans de poder autenticar't-hi. Llegeix la documentaci\u00f3." + "missing_configuration": "La integraci\u00f3 Withings no est\u00e0 configurada. Mira'n la documentaci\u00f3." }, "create_entry": { "default": "Autenticaci\u00f3 exitosa amb Withings per al perfil seleccionat." @@ -18,13 +17,6 @@ }, "description": "Quin perfil has seleccionat al lloc web de Withings? \u00c9s important que els perfils coincideixin sin\u00f3, les dades no s\u2019etiquetaran correctament.", "title": "Perfil d'usuari." - }, - "user": { - "data": { - "profile": "Perfil" - }, - "description": "Selecciona un perfil d'usuari amb el qual vols que Home Assistant s'uneixi amb un perfil de Withings. A la p\u00e0gina de Withings, assegura't de seleccionar el mateix usuari o, les dades no seran les correctes.", - "title": "Perfil d'usuari." } }, "title": "Withings" diff --git a/homeassistant/components/withings/.translations/da.json b/homeassistant/components/withings/.translations/da.json index 72d851ad873..09e73e4ea8e 100644 --- a/homeassistant/components/withings/.translations/da.json +++ b/homeassistant/components/withings/.translations/da.json @@ -2,8 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "Timeout ved generering af godkendelses-url.", - "missing_configuration": "Withings-integrationen er ikke konfigureret. F\u00f8lg venligst dokumentationen.", - "no_flows": "Du skal konfigurere Withings, f\u00f8r du kan godkende med den. L\u00e6s venligst dokumentationen." + "missing_configuration": "Withings-integrationen er ikke konfigureret. F\u00f8lg venligst dokumentationen." }, "create_entry": { "default": "Godkendt med Withings." @@ -18,13 +17,6 @@ }, "description": "Hvilken profil har du valgt p\u00e5 Withings hjemmeside? Det er vigtigt, at profilerne matcher, ellers vil data blive m\u00e6rket forkert.", "title": "Brugerprofil." - }, - "user": { - "data": { - "profile": "Profil" - }, - "description": "V\u00e6lg en brugerprofil, som du vil have Home Assistant til at tilknytte med en Withings-profil. P\u00e5 siden Withings skal du s\u00f8rge for at v\u00e6lge den samme bruger eller data vil ikke blive m\u00e6rket korrekt.", - "title": "Brugerprofil." } }, "title": "Withings" diff --git a/homeassistant/components/withings/.translations/de.json b/homeassistant/components/withings/.translations/de.json index ae8ab679593..6295d918848 100644 --- a/homeassistant/components/withings/.translations/de.json +++ b/homeassistant/components/withings/.translations/de.json @@ -2,8 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "Zeit\u00fcberschreitung beim Erstellen der Autorisierungs-URL.", - "missing_configuration": "Die Withings-Integration ist nicht konfiguriert. Bitte folgen Sie der Dokumentation.", - "no_flows": "Withings muss konfiguriert werden, bevor die Integration authentifiziert werden kann. Bitte lies die Dokumentation." + "missing_configuration": "Die Withings-Integration ist nicht konfiguriert. Bitte folgen Sie der Dokumentation." }, "create_entry": { "default": "Erfolgreiche Authentifizierung mit Withings." @@ -18,13 +17,6 @@ }, "description": "Welches Profil hast du auf der Withings-Website ausgew\u00e4hlt? Es ist wichtig, dass die Profile \u00fcbereinstimmen, da sonst die Daten falsch beschriftet werden.", "title": "Benutzerprofil" - }, - "user": { - "data": { - "profile": "Profil" - }, - "description": "W\u00e4hle ein Benutzerprofil aus, dem Home Assistant ein Withings-Profil zuordnen soll. Stelle sicher, dass du auf der Withings-Seite denselben Benutzer ausw\u00e4hlst, da sonst die Daten nicht korrekt gekennzeichnet werden.", - "title": "Benutzerprofil." } }, "title": "Withings" diff --git a/homeassistant/components/withings/.translations/en.json b/homeassistant/components/withings/.translations/en.json index c39ac530ae6..eefa54b9490 100644 --- a/homeassistant/components/withings/.translations/en.json +++ b/homeassistant/components/withings/.translations/en.json @@ -2,8 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "Timeout generating authorize url.", - "missing_configuration": "The Withings integration is not configured. Please follow the documentation.", - "no_flows": "You need to configure Withings before being able to authenticate with it. Please read the documentation." + "missing_configuration": "The Withings integration is not configured. Please follow the documentation." }, "create_entry": { "default": "Successfully authenticated with Withings." @@ -18,13 +17,6 @@ }, "description": "Which profile did you select on the Withings website? It's important the profiles match, otherwise data will be mis-labeled.", "title": "User Profile." - }, - "user": { - "data": { - "profile": "Profile" - }, - "description": "Select a user profile to which you want Home Assistant to map with a Withings profile. On the withings page, be sure to select the same user or data will not be labeled correctly.", - "title": "User Profile." } }, "title": "Withings" diff --git a/homeassistant/components/withings/.translations/es-419.json b/homeassistant/components/withings/.translations/es-419.json index 485150d2928..f0490e5724b 100644 --- a/homeassistant/components/withings/.translations/es-419.json +++ b/homeassistant/components/withings/.translations/es-419.json @@ -1,19 +1,8 @@ { "config": { - "abort": { - "no_flows": "Debe configurar Withings antes de poder autenticarse con \u00e9l. Por favor lea la documentaci\u00f3n." - }, "create_entry": { "default": "Autenticado correctamente con Withings para el perfil seleccionado." }, - "step": { - "user": { - "data": { - "profile": "Perfil" - }, - "title": "Perfil del usuario." - } - }, "title": "Withings" } } \ No newline at end of file diff --git a/homeassistant/components/withings/.translations/es.json b/homeassistant/components/withings/.translations/es.json index c239d7d8db9..f3e2c36ae72 100644 --- a/homeassistant/components/withings/.translations/es.json +++ b/homeassistant/components/withings/.translations/es.json @@ -2,8 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "Tiempo de espera agotado para la autorizaci\u00f3n de la url.", - "missing_configuration": "La integraci\u00f3n de Withings no est\u00e1 configurada. Por favor, siga la documentaci\u00f3n.", - "no_flows": "Debe configurar Withings antes de poder autenticarse con \u00e9l. Por favor, lea la documentaci\u00f3n." + "missing_configuration": "La integraci\u00f3n de Withings no est\u00e1 configurada. Por favor, siga la documentaci\u00f3n." }, "create_entry": { "default": "Autenticado correctamente con Withings para el perfil seleccionado." @@ -18,13 +17,6 @@ }, "description": "\u00bfQu\u00e9 perfil seleccion\u00f3 en el sitio web de Withings? Es importante que los perfiles coincidan, de lo contrario los datos se etiquetar\u00e1n incorrectamente.", "title": "Perfil de usuario." - }, - "user": { - "data": { - "profile": "Perfil" - }, - "description": "Seleccione un perfil de usuario para el cual desea que Home Assistant se conecte con el perfil de Withings. En la p\u00e1gina de Withings, aseg\u00farese de seleccionar el mismo usuario o los datos no se identificar\u00e1n correctamente.", - "title": "Perfil de usuario." } }, "title": "Withings" diff --git a/homeassistant/components/withings/.translations/fr.json b/homeassistant/components/withings/.translations/fr.json index a9a0db55005..d178ef6c889 100644 --- a/homeassistant/components/withings/.translations/fr.json +++ b/homeassistant/components/withings/.translations/fr.json @@ -2,8 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "D\u00e9lai d'expiration g\u00e9n\u00e9rant une URL d'autorisation.", - "missing_configuration": "L'int\u00e9gration Withings n'est pas configur\u00e9e. Veuillez suivre la documentation.", - "no_flows": "Vous devez configurer Withings avant de pouvoir vous authentifier avec celui-ci. Veuillez lire la documentation." + "missing_configuration": "L'int\u00e9gration Withings n'est pas configur\u00e9e. Veuillez suivre la documentation." }, "create_entry": { "default": "Authentifi\u00e9 avec succ\u00e8s \u00e0 Withings pour le profil s\u00e9lectionn\u00e9." @@ -18,13 +17,6 @@ }, "description": "Quel profil avez-vous s\u00e9lectionn\u00e9 sur le site Withings? Il est important que les profils correspondent, sinon les donn\u00e9es seront mal \u00e9tiquet\u00e9es.", "title": "Profil utilisateur" - }, - "user": { - "data": { - "profile": "Profil" - }, - "description": "S\u00e9lectionnez l'utilisateur que vous souhaitez associer \u00e0 Withings. Sur la page withings, veillez \u00e0 s\u00e9lectionner le m\u00eame utilisateur, sinon les donn\u00e9es ne seront pas \u00e9tiquet\u00e9es correctement.", - "title": "Profil utilisateur" } }, "title": "Withings" diff --git a/homeassistant/components/withings/.translations/hu.json b/homeassistant/components/withings/.translations/hu.json index 503013e402f..b13cf9ec524 100644 --- a/homeassistant/components/withings/.translations/hu.json +++ b/homeassistant/components/withings/.translations/hu.json @@ -2,8 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "Id\u0151t\u00fall\u00e9p\u00e9s az \u00e9rv\u00e9nyes\u00edt\u00e9si url gener\u00e1l\u00e1sa sor\u00e1n.", - "missing_configuration": "A Withings integr\u00e1ci\u00f3 nincs konfigur\u00e1lva. K\u00e9rj\u00fck, k\u00f6vesse a dokument\u00e1ci\u00f3t.", - "no_flows": "Konfigur\u00e1lnia kell a Withings-et, miel\u0151tt hiteles\u00edtheti mag\u00e1t vele. K\u00e9rj\u00fck, olvassa el a dokument\u00e1ci\u00f3t." + "missing_configuration": "A Withings integr\u00e1ci\u00f3 nincs konfigur\u00e1lva. K\u00e9rj\u00fck, k\u00f6vesse a dokument\u00e1ci\u00f3t." }, "create_entry": { "default": "A Withings sikeresen hiteles\u00edtett." @@ -18,13 +17,6 @@ }, "description": "Melyik profilt v\u00e1lasztottad ki a Withings weboldalon? Fontos, hogy a profilok egyeznek, k\u00fcl\u00f6nben az adatok helytelen c\u00edmk\u00e9vel lesznek ell\u00e1tva.", "title": "Felhaszn\u00e1l\u00f3i profil." - }, - "user": { - "data": { - "profile": "Profil" - }, - "description": "V\u00e1lasszon egy felhaszn\u00e1l\u00f3i profilt, amelyet szeretn\u00e9, hogy a Home Assistant hozz\u00e1rendeljen a Withings profilhoz. \u00dcgyeljen arra, hogy ugyanazt a felhaszn\u00e1l\u00f3t v\u00e1lassza a Withings oldalon, k\u00fcl\u00f6nben az adatok nem lesznek megfelel\u0151en felcimk\u00e9zve.", - "title": "Felhaszn\u00e1l\u00f3i profil." } }, "title": "Withings" diff --git a/homeassistant/components/withings/.translations/it.json b/homeassistant/components/withings/.translations/it.json index 4a6f5e67965..6deeff07489 100644 --- a/homeassistant/components/withings/.translations/it.json +++ b/homeassistant/components/withings/.translations/it.json @@ -2,8 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "Timeout durante la generazione dell'URL di autorizzazione.", - "missing_configuration": "Il componente Withings non \u00e8 configurato. Si prega di seguire la documentazione.", - "no_flows": "\u00c8 necessario configurare Withings prima di potersi autenticare con esso. Si prega di leggere la documentazione." + "missing_configuration": "Il componente Withings non \u00e8 configurato. Si prega di seguire la documentazione." }, "create_entry": { "default": "Autenticazione riuscita con Withings." @@ -18,13 +17,6 @@ }, "description": "Quale profilo hai selezionato sul sito web di Withings? \u00c8 importante che i profili corrispondano, altrimenti i dati avranno con un'errata etichettatura.", "title": "Profilo utente." - }, - "user": { - "data": { - "profile": "Profilo" - }, - "description": "Seleziona un profilo utente a cui desideri associare Home Assistant con un profilo Withings. Nella pagina Withings, assicurati di selezionare lo stesso utente o i dati non saranno etichettati correttamente.", - "title": "Profilo utente." } }, "title": "Withings" diff --git a/homeassistant/components/withings/.translations/ko.json b/homeassistant/components/withings/.translations/ko.json index 4ff2a80434a..8cdd8511919 100644 --- a/homeassistant/components/withings/.translations/ko.json +++ b/homeassistant/components/withings/.translations/ko.json @@ -2,8 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "\uc778\uc99d url \uc0dd\uc131 \uc2dc\uac04\uc774 \ucd08\uacfc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.", - "missing_configuration": "Withings \uad6c\uc131\uc694\uc18c\uac00 \uad6c\uc131\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. \uc124\uba85\uc11c\ub97c \ucc38\uace0\ud574\uc8fc\uc138\uc694.", - "no_flows": "Withings \ub97c \uc778\uc99d\ud558\ub824\uba74 \uba3c\uc800 Withings \ub97c \uad6c\uc131\ud574\uc57c \ud569\ub2c8\ub2e4. [\uc548\ub0b4](https://www.home-assistant.io/components/withings/) \ub97c \uc77d\uc5b4\ubcf4\uc138\uc694." + "missing_configuration": "Withings \uad6c\uc131\uc694\uc18c\uac00 \uad6c\uc131\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. \uc124\uba85\uc11c\ub97c \ucc38\uace0\ud574\uc8fc\uc138\uc694." }, "create_entry": { "default": "Withings \ub85c \uc131\uacf5\uc801\uc73c\ub85c \uc778\uc99d\ub418\uc5c8\uc2b5\ub2c8\ub2e4." @@ -18,13 +17,6 @@ }, "description": "Withings \uc6f9 \uc0ac\uc774\ud2b8\uc5d0\uc11c \uc5b4\ub5a4 \ud504\ub85c\ud544\uc744 \uc120\ud0dd\ud558\uc168\ub098\uc694? \ud504\ub85c\ud544\uc774 \uc77c\uce58\ud574\uc57c \ud569\ub2c8\ub2e4. \uadf8\ub807\uc9c0 \uc54a\uc73c\uba74, \ub370\uc774\ud130\uc5d0 \ub808\uc774\ube14\uc774 \uc798\ubabb \uc9c0\uc815\ub429\ub2c8\ub2e4.", "title": "\uc0ac\uc6a9\uc790 \ud504\ub85c\ud544." - }, - "user": { - "data": { - "profile": "\ud504\ub85c\ud544" - }, - "description": "Home Assistant \uac00 Withings \ud504\ub85c\ud544\uacfc \ub9f5\ud551\ud560 \uc0ac\uc6a9\uc790 \ud504\ub85c\ud544\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694. Withings \ud398\uc774\uc9c0\uc5d0\uc11c \ub3d9\uc77c\ud55c \uc0ac\uc6a9\uc790\ub97c \uc120\ud0dd\ud574\uc57c\ud569\ub2c8\ub2e4. \uadf8\ub807\uc9c0 \uc54a\uc73c\uba74 \ub370\uc774\ud130\uc5d0 \uc62c\ubc14\ub978 \ub808\uc774\ube14\uc774 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.", - "title": "\uc0ac\uc6a9\uc790 \ud504\ub85c\ud544." } }, "title": "Withings" diff --git a/homeassistant/components/withings/.translations/lb.json b/homeassistant/components/withings/.translations/lb.json index 4f3fb27e7b2..1984ef6f586 100644 --- a/homeassistant/components/withings/.translations/lb.json +++ b/homeassistant/components/withings/.translations/lb.json @@ -2,8 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "Z\u00e4it Iwwerschreidung beim gener\u00e9ieren vun der Autorisatiouns URL.", - "missing_configuration": "Withings Integratioun ass nach net konfigur\u00e9iert. Follegt w.e.g der Dokumentatioun.", - "no_flows": "Dir musst Withingss konfigur\u00e9ieren, ier Dir d\u00ebs Authentifiz\u00e9ierung k\u00ebnnt benotzen. Liest w.e.g. d'Instruktioune." + "missing_configuration": "Withings Integratioun ass nach net konfigur\u00e9iert. Follegt w.e.g der Dokumentatioun." }, "create_entry": { "default": "Erfollegr\u00e4ich mam ausgewielte Profile mat Withings authentifiz\u00e9iert." @@ -18,13 +17,6 @@ }, "description": "W\u00e9ie Profil hutt dir op der Withings Webs\u00e4it ausgewielt? Et ass wichteg dass Profiller passen, soss ginn Donn\u00e9e\u00eb falsch gekennzeechent.", "title": "Benotzer Profil." - }, - "user": { - "data": { - "profile": "Profil" - }, - "description": "Wielt ee Benotzer Profile aus dee mam Withings Profile soll verbonne ginn. Stellt s\u00e9cher dass dir op der Withings S\u00e4it deeselwechte Benotzer auswielt, soss ginn d'Donn\u00e9e net richteg ugewisen.", - "title": "Benotzer Profil." } }, "title": "Withings" diff --git a/homeassistant/components/withings/.translations/lv.json b/homeassistant/components/withings/.translations/lv.json index 3f7cf20fdb4..7d8b268367c 100644 --- a/homeassistant/components/withings/.translations/lv.json +++ b/homeassistant/components/withings/.translations/lv.json @@ -1,13 +1,5 @@ { "config": { - "step": { - "user": { - "data": { - "profile": "Profils" - }, - "title": "Lietot\u0101ja profils." - } - }, "title": "Withings" } } \ No newline at end of file diff --git a/homeassistant/components/withings/.translations/nl.json b/homeassistant/components/withings/.translations/nl.json index 0b01fc8c16a..d534acc5c09 100644 --- a/homeassistant/components/withings/.translations/nl.json +++ b/homeassistant/components/withings/.translations/nl.json @@ -2,8 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "Time-out tijdens genereren autorisatie url.", - "missing_configuration": "De Withings integratie is niet geconfigureerd. Gelieve de documentatie te volgen.", - "no_flows": "U moet Withings configureren voordat u zich ermee kunt verifi\u00ebren. [Gelieve de documentatie te lezen]" + "missing_configuration": "De Withings integratie is niet geconfigureerd. Gelieve de documentatie te volgen." }, "create_entry": { "default": "Succesvol geverifieerd met Withings voor het geselecteerde profiel." @@ -18,13 +17,6 @@ }, "description": "Welk profiel hebt u op de website van Withings selecteren? Het is belangrijk dat de profielen overeenkomen, anders worden gegevens verkeerd gelabeld.", "title": "Gebruikersprofiel." - }, - "user": { - "data": { - "profile": "Profiel" - }, - "description": "Selecteer een gebruikersprofiel waaraan u Home Assistant wilt toewijzen met een Withings-profiel. Zorg ervoor dat u op de pagina Withings dezelfde gebruiker selecteert, anders worden de gegevens niet correct gelabeld.", - "title": "Gebruikersprofiel." } }, "title": "Withings" diff --git a/homeassistant/components/withings/.translations/no.json b/homeassistant/components/withings/.translations/no.json index 1c4a8c0fb71..fac2fa3a8fc 100644 --- a/homeassistant/components/withings/.translations/no.json +++ b/homeassistant/components/withings/.translations/no.json @@ -2,8 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "Tidsavbrudd ved generering av autoriseringsadresse.", - "missing_configuration": "Withings-integreringen er ikke konfigurert. Vennligst f\u00f8lg dokumentasjonen.", - "no_flows": "Du m\u00e5 konfigurere Withings f\u00f8r du kan godkjenne med den. Vennligst les dokumentasjonen." + "missing_configuration": "Withings-integreringen er ikke konfigurert. Vennligst f\u00f8lg dokumentasjonen." }, "create_entry": { "default": "Vellykket godkjent med Withings." @@ -18,13 +17,6 @@ }, "description": "Hvilken profil valgte du p\u00e5 Withings nettsted? Det er viktig at profilene samsvarer, ellers blir data feilmerket.", "title": "Brukerprofil." - }, - "user": { - "data": { - "profile": "Profil" - }, - "description": "Velg en brukerprofil som du vil at Home Assistant skal kartlegge med en Withings-profil. P\u00e5 Withings-siden m\u00e5 du passe p\u00e5 at du velger samme bruker ellers vil ikke dataen bli merket riktig.", - "title": "Brukerprofil." } }, "title": "Withings" diff --git a/homeassistant/components/withings/.translations/pl.json b/homeassistant/components/withings/.translations/pl.json index afe35bd06cf..c20f7a9ba53 100644 --- a/homeassistant/components/withings/.translations/pl.json +++ b/homeassistant/components/withings/.translations/pl.json @@ -2,8 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "Min\u0105\u0142 limit czasu generowania url autoryzacji.", - "missing_configuration": "Integracja z Withings nie jest skonfigurowana. Post\u0119puj zgodnie z dokumentacj\u0105.", - "no_flows": "Musisz skonfigurowa\u0107 Withings, aby m\u00f3c si\u0119 z nim uwierzytelni\u0107. Zapoznaj si\u0119 z dokumentacj\u0105." + "missing_configuration": "Integracja z Withings nie jest skonfigurowana. Post\u0119puj zgodnie z dokumentacj\u0105." }, "create_entry": { "default": "Pomy\u015blnie uwierzytelniono z Withings dla wybranego profilu" @@ -18,13 +17,6 @@ }, "description": "Kt\u00f3ry profil wybra\u0142e\u015b na stronie Withings? Wa\u017cne jest, aby profile si\u0119 zgadza\u0142y, w przeciwnym razie dane zostan\u0105 b\u0142\u0119dnie oznaczone.", "title": "Profil u\u017cytkownika" - }, - "user": { - "data": { - "profile": "Profil" - }, - "description": "Wybierz profil u\u017cytkownika Withings, na kt\u00f3ry chcesz po\u0142\u0105czy\u0107 z Home Assistant'em. Na stronie Withings wybierz ten sam profil u\u017cytkownika, by dane by\u0142y poprawnie oznaczone.", - "title": "Profil u\u017cytkownika" } }, "title": "Withings" diff --git a/homeassistant/components/withings/.translations/ru.json b/homeassistant/components/withings/.translations/ru.json index 407bcf48c1a..eba16290453 100644 --- a/homeassistant/components/withings/.translations/ru.json +++ b/homeassistant/components/withings/.translations/ru.json @@ -2,8 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "\u0418\u0441\u0442\u0435\u043a\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0441\u044b\u043b\u043a\u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438.", - "missing_configuration": "\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f Withings \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438.", - "no_flows": "\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 Withings \u043f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435\u043c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438." + "missing_configuration": "\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f Withings \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438." }, "create_entry": { "default": "\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e." @@ -18,13 +17,6 @@ }, "description": "\u041a\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0412\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 Withings? \u0412\u0430\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0444\u0438\u043b\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u043b\u0438, \u0438\u043d\u0430\u0447\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b.", "title": "Withings" - }, - "user": { - "data": { - "profile": "\u041f\u0440\u043e\u0444\u0438\u043b\u044c" - }, - "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 Withings \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u043e\u0433\u043e \u0436\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0438\u043d\u0430\u0447\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e.", - "title": "Withings" } }, "title": "Withings" diff --git a/homeassistant/components/withings/.translations/sl.json b/homeassistant/components/withings/.translations/sl.json index faa76ac9333..1de0a0d6ce7 100644 --- a/homeassistant/components/withings/.translations/sl.json +++ b/homeassistant/components/withings/.translations/sl.json @@ -2,8 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "\u010casovna omejitev za generiranje potrditvenega URL-ja je potekla.", - "missing_configuration": "Integracija Withings ni konfigurirana. Prosimo, upo\u0161tevajte dokumentacijo.", - "no_flows": "Withings morate prvo konfigurirati, preden ga boste lahko uporabili za overitev. Prosimo, preberite dokumentacijo." + "missing_configuration": "Integracija Withings ni konfigurirana. Prosimo, upo\u0161tevajte dokumentacijo." }, "create_entry": { "default": "Uspe\u0161no overjen z Withings." @@ -18,13 +17,6 @@ }, "description": "Kateri profil ste izbrali na spletni strani Withings? Pomembno je, da se profili ujemajo, sicer bodo podatki napa\u010dno ozna\u010deni.", "title": "Uporabni\u0161ki profil." - }, - "user": { - "data": { - "profile": "Profil" - }, - "description": "Izberite uporabni\u0161ki profil, za katerega \u017eelite, da se Home Assistant prika\u017ee s profilom Withings. Na Withings strani ne pozabite izbrati istega uporabnika sicer podatki ne bodo pravilno ozna\u010deni.", - "title": "Uporabni\u0161ki profil." } }, "title": "Withings" diff --git a/homeassistant/components/withings/.translations/sv.json b/homeassistant/components/withings/.translations/sv.json index dc8954af2c7..dfaa09d52f0 100644 --- a/homeassistant/components/withings/.translations/sv.json +++ b/homeassistant/components/withings/.translations/sv.json @@ -2,8 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "Skapandet av en auktoriseringsadress \u00f6verskred tidsgr\u00e4nsen.", - "missing_configuration": "Withings-integrationen \u00e4r inte konfigurerad. V\u00e4nligen f\u00f6lj dokumentationen.", - "no_flows": "Du m\u00e5ste konfigurera Withings innan du kan autentisera med den. L\u00e4s dokumentationen." + "missing_configuration": "Withings-integrationen \u00e4r inte konfigurerad. V\u00e4nligen f\u00f6lj dokumentationen." }, "create_entry": { "default": "Lyckad autentisering med Withings." @@ -18,13 +17,6 @@ }, "description": "Vilken profil valde du p\u00e5 Withings webbplats? Det \u00e4r viktigt att profilerna matchar, annars kommer data att vara felm\u00e4rkta.", "title": "Anv\u00e4ndarprofil." - }, - "user": { - "data": { - "profile": "Profil" - }, - "description": "V\u00e4lj en anv\u00e4ndarprofil som du vill att Home Assistant ska kartl\u00e4gga med en Withings-profil. Var noga med att v\u00e4lja samma anv\u00e4ndare p\u00e5 visningssidan eller s\u00e5 kommer inte data att betecknas korrekt.", - "title": "Anv\u00e4ndarprofil." } }, "title": "Withings" diff --git a/homeassistant/components/withings/.translations/zh-Hant.json b/homeassistant/components/withings/.translations/zh-Hant.json index 06870c4020a..61ae1fd8e06 100644 --- a/homeassistant/components/withings/.translations/zh-Hant.json +++ b/homeassistant/components/withings/.translations/zh-Hant.json @@ -2,8 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "\u7522\u751f\u8a8d\u8b49 URL \u6642\u903e\u6642\u3002", - "missing_configuration": "Withings \u6574\u5408\u5c1a\u672a\u8a2d\u7f6e\uff0c\u8acb\u53c3\u95b1\u6587\u4ef6\u8aaa\u660e\u3002", - "no_flows": "\u5fc5\u9808\u5148\u8a2d\u5b9a Withings \u65b9\u80fd\u9032\u884c\u8a8d\u8b49\u3002\u8acb\u53c3\u95b1\u6587\u4ef6\u3002" + "missing_configuration": "Withings \u6574\u5408\u5c1a\u672a\u8a2d\u7f6e\uff0c\u8acb\u53c3\u95b1\u6587\u4ef6\u8aaa\u660e\u3002" }, "create_entry": { "default": "\u5df2\u6210\u529f\u8a8d\u8b49 Withings \u8a2d\u5099\u3002" @@ -18,13 +17,6 @@ }, "description": "\u65bc Withings \u7db2\u7ad9\u6240\u9078\u64c7\u7684\u500b\u4eba\u8a2d\u5b9a\u70ba\u4f55\uff1f\u5047\u5982\u500b\u4eba\u8a2d\u5b9a\u4e0d\u7b26\u5408\u7684\u8a71\uff0c\u8cc7\u6599\u5c07\u6703\u6a19\u793a\u932f\u8aa4\u3002", "title": "\u500b\u4eba\u8a2d\u5b9a\u3002" - }, - "user": { - "data": { - "profile": "\u500b\u4eba\u8a2d\u5b9a" - }, - "description": "\u9078\u64c7 Home Assistant \u6240\u8981\u5c0d\u61c9\u4f7f\u7528\u7684 Withings \u500b\u4eba\u8a2d\u5b9a\u3002\u65bc Withings \u9801\u9762\u3001\u78ba\u5b9a\u9078\u53d6\u76f8\u540c\u7684\u4f7f\u7528\u8005\uff0c\u5426\u5247\u8cc7\u6599\u5c07\u7121\u6cd5\u6b63\u78ba\u6a19\u793a\u3002", - "title": "\u500b\u4eba\u8a2d\u5b9a\u3002" } }, "title": "Withings" diff --git a/homeassistant/components/wled/.translations/zh-Hant.json b/homeassistant/components/wled/.translations/zh-Hant.json index b72ef3d078c..14139a20401 100644 --- a/homeassistant/components/wled/.translations/zh-Hant.json +++ b/homeassistant/components/wled/.translations/zh-Hant.json @@ -18,7 +18,7 @@ }, "zeroconf_confirm": { "description": "\u662f\u5426\u8981\u65b0\u589e WLED \u540d\u7a31\u300c{name}\u300d\u8a2d\u5099\u81f3 Home Assistant\uff1f", - "title": "\u767c\u73fe\u5230 WLED \u8a2d\u5099" + "title": "\u81ea\u52d5\u63a2\u7d22\u5230 WLED \u8a2d\u5099" } }, "title": "WLED" diff --git a/homeassistant/components/wwlln/.translations/bg.json b/homeassistant/components/wwlln/.translations/bg.json index c083218c443..f252518fcab 100644 --- a/homeassistant/components/wwlln/.translations/bg.json +++ b/homeassistant/components/wwlln/.translations/bg.json @@ -1,8 +1,5 @@ { "config": { - "error": { - "identifier_exists": "\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0442\u043e \u0432\u0435\u0447\u0435 \u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0430\u043d\u043e" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/wwlln/.translations/ca.json b/homeassistant/components/wwlln/.translations/ca.json index 736689c34d5..f7fe15f27ec 100644 --- a/homeassistant/components/wwlln/.translations/ca.json +++ b/homeassistant/components/wwlln/.translations/ca.json @@ -1,11 +1,7 @@ { "config": { "abort": { - "already_configured": "Aquesta ubicaci\u00f3 ja est\u00e0 registrada.", - "window_too_small": "Una finestra massa petita pot provocar que Home Assistant perdi esdeveniments." - }, - "error": { - "identifier_exists": "Ubicaci\u00f3 ja registrada" + "already_configured": "Aquesta ubicaci\u00f3 ja est\u00e0 registrada." }, "step": { "user": { diff --git a/homeassistant/components/wwlln/.translations/cy.json b/homeassistant/components/wwlln/.translations/cy.json index e9de2acbdc6..6050207304f 100644 --- a/homeassistant/components/wwlln/.translations/cy.json +++ b/homeassistant/components/wwlln/.translations/cy.json @@ -1,8 +1,5 @@ { "config": { - "error": { - "identifier_exists": "Enw eisoes wedi gofrestru" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/wwlln/.translations/da.json b/homeassistant/components/wwlln/.translations/da.json index 5d4f4c40b5d..df10f39657a 100644 --- a/homeassistant/components/wwlln/.translations/da.json +++ b/homeassistant/components/wwlln/.translations/da.json @@ -1,8 +1,5 @@ { "config": { - "error": { - "identifier_exists": "Lokalitet er allerede registreret" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/wwlln/.translations/de.json b/homeassistant/components/wwlln/.translations/de.json index c02da263f89..487f2294dc6 100644 --- a/homeassistant/components/wwlln/.translations/de.json +++ b/homeassistant/components/wwlln/.translations/de.json @@ -1,11 +1,7 @@ { "config": { "abort": { - "already_configured": "Dieser Standort ist bereits registriert.", - "window_too_small": "Ein zu kleines Fenster f\u00fchrt dazu, dass Home Assistant Ereignisse verpasst." - }, - "error": { - "identifier_exists": "Standort bereits registriert" + "already_configured": "Dieser Standort ist bereits registriert." }, "step": { "user": { diff --git a/homeassistant/components/wwlln/.translations/en.json b/homeassistant/components/wwlln/.translations/en.json index a12a5079f9b..48896cc8682 100644 --- a/homeassistant/components/wwlln/.translations/en.json +++ b/homeassistant/components/wwlln/.translations/en.json @@ -1,11 +1,7 @@ { "config": { "abort": { - "already_configured": "This location is already registered.", - "window_too_small": "A too-small window will cause Home Assistant to miss events." - }, - "error": { - "identifier_exists": "Location already registered" + "already_configured": "This location is already registered." }, "step": { "user": { diff --git a/homeassistant/components/wwlln/.translations/es-419.json b/homeassistant/components/wwlln/.translations/es-419.json index d185410a4ef..6b2e5d23ffb 100644 --- a/homeassistant/components/wwlln/.translations/es-419.json +++ b/homeassistant/components/wwlln/.translations/es-419.json @@ -1,8 +1,5 @@ { "config": { - "error": { - "identifier_exists": "Lugar ya registrado" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/wwlln/.translations/es.json b/homeassistant/components/wwlln/.translations/es.json index ee377673181..22eb2c1e704 100644 --- a/homeassistant/components/wwlln/.translations/es.json +++ b/homeassistant/components/wwlln/.translations/es.json @@ -1,11 +1,7 @@ { "config": { "abort": { - "already_configured": "Esta ubicaci\u00f3n ya est\u00e1 registrada.", - "window_too_small": "Una ventana demasiado peque\u00f1a provocar\u00e1 que Home Assistant se pierda eventos." - }, - "error": { - "identifier_exists": "Ubicaci\u00f3n ya registrada" + "already_configured": "Esta ubicaci\u00f3n ya est\u00e1 registrada." }, "step": { "user": { diff --git a/homeassistant/components/wwlln/.translations/fr.json b/homeassistant/components/wwlln/.translations/fr.json index ad16a7e3a8d..d19114286ad 100644 --- a/homeassistant/components/wwlln/.translations/fr.json +++ b/homeassistant/components/wwlln/.translations/fr.json @@ -1,11 +1,7 @@ { "config": { "abort": { - "already_configured": "Cet emplacement est d\u00e9j\u00e0 enregistr\u00e9.", - "window_too_small": "Une fen\u00eatre trop petite emp\u00eachera Home Assistant de manquer des \u00e9v\u00e9nements." - }, - "error": { - "identifier_exists": "Emplacement d\u00e9j\u00e0 enregistr\u00e9" + "already_configured": "Cet emplacement est d\u00e9j\u00e0 enregistr\u00e9." }, "step": { "user": { diff --git a/homeassistant/components/wwlln/.translations/hr.json b/homeassistant/components/wwlln/.translations/hr.json index 09ca1a0273f..3dec14ffa17 100644 --- a/homeassistant/components/wwlln/.translations/hr.json +++ b/homeassistant/components/wwlln/.translations/hr.json @@ -1,8 +1,5 @@ { "config": { - "error": { - "identifier_exists": "Lokacija je ve\u0107 registrirana" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/wwlln/.translations/it.json b/homeassistant/components/wwlln/.translations/it.json index 35cbb8b9bc0..1733cfdf172 100644 --- a/homeassistant/components/wwlln/.translations/it.json +++ b/homeassistant/components/wwlln/.translations/it.json @@ -1,11 +1,7 @@ { "config": { "abort": { - "already_configured": "Questa posizione \u00e8 gi\u00e0 registrata.", - "window_too_small": "Una finestra troppo piccola far\u00e0 s\u00ec che Home Assistant perda gli eventi." - }, - "error": { - "identifier_exists": "Localit\u00e0 gi\u00e0 registrata" + "already_configured": "Questa posizione \u00e8 gi\u00e0 registrata." }, "step": { "user": { diff --git a/homeassistant/components/wwlln/.translations/ko.json b/homeassistant/components/wwlln/.translations/ko.json index bc4a483a077..a71ebe3ea0c 100644 --- a/homeassistant/components/wwlln/.translations/ko.json +++ b/homeassistant/components/wwlln/.translations/ko.json @@ -1,11 +1,7 @@ { "config": { "abort": { - "already_configured": "\uc774 \uc704\uce58\ub294 \uc774\ubbf8 \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4", - "window_too_small": "\ucc3d\uc774 \ub108\ubb34 \uc791\uc73c\uba74 Home Assistant \uac00 \uc774\ubca4\ud2b8\ub97c \ub193\uce60 \uc218 \uc788\uc2b5\ub2c8\ub2e4." - }, - "error": { - "identifier_exists": "\uc704\uce58\uac00 \uc774\ubbf8 \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4" + "already_configured": "\uc774 \uc704\uce58\ub294 \uc774\ubbf8 \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4" }, "step": { "user": { diff --git a/homeassistant/components/wwlln/.translations/lb.json b/homeassistant/components/wwlln/.translations/lb.json index a580b639d96..9632cb372b2 100644 --- a/homeassistant/components/wwlln/.translations/lb.json +++ b/homeassistant/components/wwlln/.translations/lb.json @@ -3,9 +3,6 @@ "abort": { "already_configured": "D\u00ebse Standuert ass scho registr\u00e9iert" }, - "error": { - "identifier_exists": "Standuert ass scho registr\u00e9iert" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/wwlln/.translations/nl.json b/homeassistant/components/wwlln/.translations/nl.json index 8cf0e80806d..542c53f0c03 100644 --- a/homeassistant/components/wwlln/.translations/nl.json +++ b/homeassistant/components/wwlln/.translations/nl.json @@ -1,8 +1,5 @@ { "config": { - "error": { - "identifier_exists": "Locatie al geregistreerd" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/wwlln/.translations/no.json b/homeassistant/components/wwlln/.translations/no.json index ca9822d2733..fab8810ba5e 100644 --- a/homeassistant/components/wwlln/.translations/no.json +++ b/homeassistant/components/wwlln/.translations/no.json @@ -1,11 +1,7 @@ { "config": { "abort": { - "already_configured": "Denne plasseringen er allerede registrert.", - "window_too_small": "Et for lite vindu vil f\u00f8re til at Home Assistant g\u00e5r glipp av hendelser." - }, - "error": { - "identifier_exists": "Lokasjon allerede registrert" + "already_configured": "Denne plasseringen er allerede registrert." }, "step": { "user": { diff --git a/homeassistant/components/wwlln/.translations/pl.json b/homeassistant/components/wwlln/.translations/pl.json index a202c611086..22d84209b7f 100644 --- a/homeassistant/components/wwlln/.translations/pl.json +++ b/homeassistant/components/wwlln/.translations/pl.json @@ -1,11 +1,7 @@ { "config": { "abort": { - "already_configured": "Ta lokalizacja jest ju\u017c zarejestrowana.", - "window_too_small": "Zbyt ma\u0142e okno spowoduje, \u017ce Home Assistant przegapi wydarzenia." - }, - "error": { - "identifier_exists": "Lokalizacja jest ju\u017c zarejestrowana." + "already_configured": "Ta lokalizacja jest ju\u017c zarejestrowana." }, "step": { "user": { diff --git a/homeassistant/components/wwlln/.translations/pt-BR.json b/homeassistant/components/wwlln/.translations/pt-BR.json index 30b39a4431c..296588f66a8 100644 --- a/homeassistant/components/wwlln/.translations/pt-BR.json +++ b/homeassistant/components/wwlln/.translations/pt-BR.json @@ -1,8 +1,5 @@ { "config": { - "error": { - "identifier_exists": "Localiza\u00e7\u00e3o j\u00e1 registrada" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/wwlln/.translations/ru.json b/homeassistant/components/wwlln/.translations/ru.json index b0e39a51898..b67d70e057b 100644 --- a/homeassistant/components/wwlln/.translations/ru.json +++ b/homeassistant/components/wwlln/.translations/ru.json @@ -3,9 +3,6 @@ "abort": { "already_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430." }, - "error": { - "identifier_exists": "\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043e." - }, "step": { "user": { "data": { diff --git a/homeassistant/components/wwlln/.translations/sl.json b/homeassistant/components/wwlln/.translations/sl.json index 396180249e2..11fc4f00db8 100644 --- a/homeassistant/components/wwlln/.translations/sl.json +++ b/homeassistant/components/wwlln/.translations/sl.json @@ -1,11 +1,7 @@ { "config": { "abort": { - "already_configured": "Ta lokacija je \u017ee registrirana.", - "window_too_small": "Premajhno okno bo povzro\u010dilo, da bo Home Assistant zamudil dogodke." - }, - "error": { - "identifier_exists": "Lokacija je \u017ee registrirana" + "already_configured": "Ta lokacija je \u017ee registrirana." }, "step": { "user": { diff --git a/homeassistant/components/wwlln/.translations/sv.json b/homeassistant/components/wwlln/.translations/sv.json index 4aa525f7a2a..3180c543452 100644 --- a/homeassistant/components/wwlln/.translations/sv.json +++ b/homeassistant/components/wwlln/.translations/sv.json @@ -1,8 +1,5 @@ { "config": { - "error": { - "identifier_exists": "Platsen \u00e4r redan registrerad" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/wwlln/.translations/zh-Hans.json b/homeassistant/components/wwlln/.translations/zh-Hans.json index d719802ad7a..e53d33512e1 100644 --- a/homeassistant/components/wwlln/.translations/zh-Hans.json +++ b/homeassistant/components/wwlln/.translations/zh-Hans.json @@ -1,8 +1,5 @@ { "config": { - "error": { - "identifier_exists": "\u4f4d\u7f6e\u5df2\u7ecf\u6ce8\u518c" - }, "step": { "user": { "data": { diff --git a/homeassistant/components/wwlln/.translations/zh-Hant.json b/homeassistant/components/wwlln/.translations/zh-Hant.json index b75c07a0813..fac13ffe77f 100644 --- a/homeassistant/components/wwlln/.translations/zh-Hant.json +++ b/homeassistant/components/wwlln/.translations/zh-Hant.json @@ -1,11 +1,7 @@ { "config": { "abort": { - "already_configured": "\u6b64\u4f4d\u7f6e\u5df2\u8a3b\u518a\u3002", - "window_too_small": "\u904e\u5c0f\u7684\u8996\u7a97\u5c07\u5c0e\u81f4 Home Assistant \u932f\u904e\u4e8b\u4ef6\u3002" - }, - "error": { - "identifier_exists": "\u5ea7\u6a19\u5df2\u8a3b\u518a" + "already_configured": "\u6b64\u4f4d\u7f6e\u5df2\u8a3b\u518a\u3002" }, "step": { "user": { From 9675cc5ed2338f3b51c04b27298338b456e900c9 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Tue, 7 Apr 2020 22:42:17 +0200 Subject: [PATCH 61/63] Updated frontend to 20200407.1 (#33799) --- homeassistant/components/frontend/manifest.json | 2 +- homeassistant/package_constraints.txt | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/frontend/manifest.json b/homeassistant/components/frontend/manifest.json index 3c6e8478c09..efd9f99b18a 100644 --- a/homeassistant/components/frontend/manifest.json +++ b/homeassistant/components/frontend/manifest.json @@ -2,7 +2,7 @@ "domain": "frontend", "name": "Home Assistant Frontend", "documentation": "https://www.home-assistant.io/integrations/frontend", - "requirements": ["home-assistant-frontend==20200406.0"], + "requirements": ["home-assistant-frontend==20200407.1"], "dependencies": [ "api", "auth", diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index efc36dc1561..bf6888e7073 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -12,7 +12,7 @@ cryptography==2.8 defusedxml==0.6.0 distro==1.4.0 hass-nabucasa==0.32.2 -home-assistant-frontend==20200406.0 +home-assistant-frontend==20200407.1 importlib-metadata==1.5.0 jinja2>=2.11.1 netdisco==2.6.0 diff --git a/requirements_all.txt b/requirements_all.txt index 6d0e0e590eb..7cb73658492 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -704,7 +704,7 @@ hole==0.5.1 holidays==0.10.1 # homeassistant.components.frontend -home-assistant-frontend==20200406.0 +home-assistant-frontend==20200407.1 # homeassistant.components.zwave homeassistant-pyozw==0.1.10 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 8a4af0beaf0..3403ad5a519 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -282,7 +282,7 @@ hole==0.5.1 holidays==0.10.1 # homeassistant.components.frontend -home-assistant-frontend==20200406.0 +home-assistant-frontend==20200407.1 # homeassistant.components.zwave homeassistant-pyozw==0.1.10 From 837f7638cf9904bb6191c1493f0afced7257a880 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 8 Apr 2020 14:05:04 +0200 Subject: [PATCH 62/63] Bumped version to 0.108.0 --- homeassistant/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 9b82885ce72..4b829692ea5 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -1,7 +1,7 @@ """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 MINOR_VERSION = 108 -PATCH_VERSION = "0b6" +PATCH_VERSION = "0" __short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__ = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER = (3, 7, 0) From 245eae89ebb97e2e53b475109b64c10fcbc47360 Mon Sep 17 00:00:00 2001 From: springstan <46536646+springstan@users.noreply.github.com> Date: Tue, 7 Apr 2020 18:22:03 +0200 Subject: [PATCH 63/63] Bump pyW215 to 0.7.0 (#33786) --- homeassistant/components/dlink/manifest.json | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/dlink/manifest.json b/homeassistant/components/dlink/manifest.json index 7f5ff6cfd02..754a9ec5e03 100644 --- a/homeassistant/components/dlink/manifest.json +++ b/homeassistant/components/dlink/manifest.json @@ -2,7 +2,7 @@ "domain": "dlink", "name": "D-Link Wi-Fi Smart Plugs", "documentation": "https://www.home-assistant.io/integrations/dlink", - "requirements": ["pyW215==0.6.0"], + "requirements": ["pyW215==0.7.0"], "dependencies": [], "codeowners": [] } diff --git a/requirements_all.txt b/requirements_all.txt index 7cb73658492..15168678a85 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1140,7 +1140,7 @@ pyRFXtrx==0.25 pyTibber==0.13.6 # homeassistant.components.dlink -pyW215==0.6.0 +pyW215==0.7.0 # homeassistant.components.w800rf32 pyW800rf32==0.1