From 6304cbb71e51d94e934d3ee57525d75930f37ab7 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 27 Apr 2022 16:30:03 +0200 Subject: [PATCH 001/151] Bumped version to 2022.5.0b0 --- homeassistant/const.py | 2 +- setup.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index ffe5825bf89..941caad17ae 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -7,7 +7,7 @@ from .backports.enum import StrEnum MAJOR_VERSION: Final = 2022 MINOR_VERSION: Final = 5 -PATCH_VERSION: Final = "0.dev0" +PATCH_VERSION: Final = "0b0" __short_version__: Final = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__: Final = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER: Final[tuple[int, int, int]] = (3, 9, 0) diff --git a/setup.cfg b/setup.cfg index 4b23f5f7988..2a512907a39 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = homeassistant -version = 2022.5.0.dev0 +version = 2022.5.0b0 author = The Home Assistant Authors author_email = hello@home-assistant.io license = Apache-2.0 From f963270a800d110f5ebd26fdf144e0fec57594ad Mon Sep 17 00:00:00 2001 From: "David F. Mulcahey" Date: Wed, 27 Apr 2022 11:24:26 -0400 Subject: [PATCH 002/151] Improve ZHA startup performance (#70111) * Remove semaphores and background mains init * additional logging * correct cache usage and update tests --- .../components/zha/core/channels/__init__.py | 14 +------- .../components/zha/core/channels/base.py | 27 +++++++++++++--- .../components/zha/core/channels/general.py | 4 ++- .../zha/core/channels/homeautomation.py | 2 +- homeassistant/components/zha/core/device.py | 18 +++++++++++ homeassistant/components/zha/core/gateway.py | 32 ++++++++----------- homeassistant/components/zha/light.py | 2 +- tests/components/zha/conftest.py | 1 + tests/components/zha/test_device.py | 6 ++-- tests/components/zha/test_fan.py | 15 +++++++-- 10 files changed, 76 insertions(+), 45 deletions(-) diff --git a/homeassistant/components/zha/core/channels/__init__.py b/homeassistant/components/zha/core/channels/__init__.py index 2011f92a63b..00409794473 100644 --- a/homeassistant/components/zha/core/channels/__init__.py +++ b/homeassistant/components/zha/core/channels/__init__.py @@ -2,7 +2,6 @@ from __future__ import annotations import asyncio -from collections.abc import Coroutine from typing import TYPE_CHECKING, Any, TypeVar import zigpy.endpoint @@ -50,7 +49,6 @@ class Channels: self._pools: list[ChannelPool] = [] self._power_config: base.ZigbeeChannel | None = None self._identify: base.ZigbeeChannel | None = None - self._semaphore = asyncio.Semaphore(3) self._unique_id = str(zha_device.ieee) self._zdo_channel = base.ZDOChannel(zha_device.device.endpoints[0], zha_device) self._zha_device = zha_device @@ -82,11 +80,6 @@ class Channels: if self._identify is None: self._identify = channel - @property - def semaphore(self) -> asyncio.Semaphore: - """Return semaphore for concurrent tasks.""" - return self._semaphore - @property def zdo_channel(self) -> base.ZDOChannel: """Return ZDO channel.""" @@ -336,13 +329,8 @@ class ChannelPool: async def _execute_channel_tasks(self, func_name: str, *args: Any) -> None: """Add a throttled channel task and swallow exceptions.""" - - async def _throttle(coro: Coroutine[Any, Any, None]) -> None: - async with self._channels.semaphore: - return await coro - channels = [*self.claimed_channels.values(), *self.client_channels.values()] - tasks = [_throttle(getattr(ch, func_name)(*args)) for ch in channels] + tasks = [getattr(ch, func_name)(*args) for ch in channels] results = await asyncio.gather(*tasks, return_exceptions=True) for channel, outcome in zip(channels, results): if isinstance(outcome, Exception): diff --git a/homeassistant/components/zha/core/channels/base.py b/homeassistant/components/zha/core/channels/base.py index b10209f45f4..7beefe2f0d0 100644 --- a/homeassistant/components/zha/core/channels/base.py +++ b/homeassistant/components/zha/core/channels/base.py @@ -310,11 +310,14 @@ class ZigbeeChannel(LogMixin): """Set cluster binding and attribute reporting.""" if not self._ch_pool.skip_configuration: if self.BIND: + self.debug("Performing cluster binding") await self.bind() if self.cluster.is_server: + self.debug("Configuring cluster attribute reporting") await self.configure_reporting() ch_specific_cfg = getattr(self, "async_configure_channel_specific", None) if ch_specific_cfg: + self.debug("Performing channel specific configuration") await ch_specific_cfg() self.debug("finished channel configuration") else: @@ -325,6 +328,7 @@ class ZigbeeChannel(LogMixin): async def async_initialize(self, from_cache: bool) -> None: """Initialize channel.""" if not from_cache and self._ch_pool.skip_configuration: + self.debug("Skipping channel initialization") self._status = ChannelStatus.INITIALIZED return @@ -334,12 +338,23 @@ class ZigbeeChannel(LogMixin): uncached.extend([cfg["attr"] for cfg in self.REPORT_CONFIG]) if cached: - await self._get_attributes(True, cached, from_cache=True) + self.debug("initializing cached channel attributes: %s", cached) + await self._get_attributes( + True, cached, from_cache=True, only_cache=from_cache + ) if uncached: - await self._get_attributes(True, uncached, from_cache=from_cache) + self.debug( + "initializing uncached channel attributes: %s - from cache[%s]", + uncached, + from_cache, + ) + await self._get_attributes( + True, uncached, from_cache=from_cache, only_cache=from_cache + ) ch_specific_init = getattr(self, "async_initialize_channel_specific", None) if ch_specific_init: + self.debug("Performing channel specific initialization: %s", uncached) await ch_specific_init(from_cache=from_cache) self.debug("finished channel initialization") @@ -407,7 +422,7 @@ class ZigbeeChannel(LogMixin): self._cluster, [attribute], allow_cache=from_cache, - only_cache=from_cache and not self._ch_pool.is_mains_powered, + only_cache=from_cache, manufacturer=manufacturer, ) return result.get(attribute) @@ -417,6 +432,7 @@ class ZigbeeChannel(LogMixin): raise_exceptions: bool, attributes: list[int | str], from_cache: bool = True, + only_cache: bool = True, ) -> dict[int | str, Any]: """Get the values for a list of attributes.""" manufacturer = None @@ -428,17 +444,18 @@ class ZigbeeChannel(LogMixin): result = {} while chunk: try: + self.debug("Reading attributes in chunks: %s", chunk) read, _ = await self.cluster.read_attributes( attributes, allow_cache=from_cache, - only_cache=from_cache and not self._ch_pool.is_mains_powered, + only_cache=only_cache, manufacturer=manufacturer, ) result.update(read) except (asyncio.TimeoutError, zigpy.exceptions.ZigbeeException) as ex: self.debug( "failed to get attributes '%s' on '%s' cluster: %s", - attributes, + chunk, self.cluster.ep_attribute, str(ex), ) diff --git a/homeassistant/components/zha/core/channels/general.py b/homeassistant/components/zha/core/channels/general.py index f528057c313..81152bb8869 100644 --- a/homeassistant/components/zha/core/channels/general.py +++ b/homeassistant/components/zha/core/channels/general.py @@ -463,7 +463,9 @@ class PowerConfigurationChannel(ZigbeeChannel): "battery_size", "battery_quantity", ] - return self.get_attributes(attributes, from_cache=from_cache) + return self.get_attributes( + attributes, from_cache=from_cache, only_cache=from_cache + ) @registries.ZIGBEE_CHANNEL_REGISTRY.register(general.PowerProfile.cluster_id) diff --git a/homeassistant/components/zha/core/channels/homeautomation.py b/homeassistant/components/zha/core/channels/homeautomation.py index 02fa835dc20..e1019ed31bf 100644 --- a/homeassistant/components/zha/core/channels/homeautomation.py +++ b/homeassistant/components/zha/core/channels/homeautomation.py @@ -97,7 +97,7 @@ class ElectricalMeasurementChannel(ZigbeeChannel): for a in self.REPORT_CONFIG if a["attr"] not in self.cluster.unsupported_attributes ] - result = await self.get_attributes(attrs, from_cache=False) + result = await self.get_attributes(attrs, from_cache=False, only_cache=False) if result: for attr, value in result.items(): self.async_send_signal( diff --git a/homeassistant/components/zha/core/device.py b/homeassistant/components/zha/core/device.py index 41d90b48869..854d80ffb78 100644 --- a/homeassistant/components/zha/core/device.py +++ b/homeassistant/components/zha/core/device.py @@ -351,11 +351,15 @@ class ZHADevice(LogMixin): if self.is_coordinator: return if self.last_seen is None: + self.debug("last_seen is None, marking the device unavailable") self.update_available(False) return difference = time.time() - self.last_seen if difference < self.consider_unavailable_time: + self.debug( + "Device seen - marking the device available and resetting counter" + ) self.update_available(True) self._checkins_missed_count = 0 return @@ -365,6 +369,10 @@ class ZHADevice(LogMixin): or self.manufacturer == "LUMI" or not self._channels.pools ): + self.debug( + "last_seen is %s seconds ago and ping attempts have been exhausted, marking the device unavailable", + difference, + ) self.update_available(False) return @@ -386,13 +394,23 @@ class ZHADevice(LogMixin): def update_available(self, available: bool) -> None: """Update device availability and signal entities.""" + self.debug( + "Update device availability - device available: %s - new availability: %s - changed: %s", + self.available, + available, + self.available ^ available, + ) availability_changed = self.available ^ available self.available = available if availability_changed and available: # reinit channels then signal entities + self.debug( + "Device availability changed and device became available, reinitializing channels" + ) self.hass.async_create_task(self._async_became_available()) return if availability_changed and not available: + self.debug("Device availability changed and device became unavailable") self._channels.zha_send_event( { "device_event_type": "device_offline", diff --git a/homeassistant/components/zha/core/gateway.py b/homeassistant/components/zha/core/gateway.py index 64f7b24ff99..1280f3defe3 100644 --- a/homeassistant/components/zha/core/gateway.py +++ b/homeassistant/components/zha/core/gateway.py @@ -239,29 +239,25 @@ class ZHAGateway: async def async_initialize_devices_and_entities(self) -> None: """Initialize devices and load entities.""" - semaphore = asyncio.Semaphore(2) - async def _throttle(zha_device: ZHADevice, cached: bool) -> None: - async with semaphore: - await zha_device.async_initialize(from_cache=cached) - - _LOGGER.debug("Loading battery powered devices") + _LOGGER.warning("Loading all devices") await asyncio.gather( - *( - _throttle(dev, cached=True) - for dev in self.devices.values() - if not dev.is_mains_powered - ) + *(dev.async_initialize(from_cache=True) for dev in self.devices.values()) ) - _LOGGER.debug("Loading mains powered devices") - await asyncio.gather( - *( - _throttle(dev, cached=False) - for dev in self.devices.values() - if dev.is_mains_powered + async def fetch_updated_state() -> None: + """Fetch updated state for mains powered devices.""" + _LOGGER.warning("Fetching current state for mains powered devices") + await asyncio.gather( + *( + dev.async_initialize(from_cache=False) + for dev in self.devices.values() + if dev.is_mains_powered + ) ) - ) + + # background the fetching of state for mains powered devices + asyncio.create_task(fetch_updated_state()) def device_joined(self, device: zigpy.device.Device) -> None: """Handle device joined. diff --git a/homeassistant/components/zha/light.py b/homeassistant/components/zha/light.py index b6d344a57e7..ef7205feb87 100644 --- a/homeassistant/components/zha/light.py +++ b/homeassistant/components/zha/light.py @@ -488,7 +488,7 @@ class Light(BaseLight, ZhaEntity): ] results = await self._color_channel.get_attributes( - attributes, from_cache=False + attributes, from_cache=False, only_cache=False ) if (color_mode := results.get("color_mode")) is not None: diff --git a/tests/components/zha/conftest.py b/tests/components/zha/conftest.py index cb562cd5eaa..482a11b95de 100644 --- a/tests/components/zha/conftest.py +++ b/tests/components/zha/conftest.py @@ -177,6 +177,7 @@ def zha_device_joined(hass, setup_zha): """Return a newly joined ZHA device.""" async def _zha_device(zigpy_dev): + zigpy_dev.last_seen = time.time() await setup_zha() zha_gateway = common.get_zha_gateway(hass) await zha_gateway.async_device_initialized(zigpy_dev) diff --git a/tests/components/zha/test_device.py b/tests/components/zha/test_device.py index 76877e71ffc..0f2caceada5 100644 --- a/tests/components/zha/test_device.py +++ b/tests/components/zha/test_device.py @@ -106,7 +106,7 @@ def _send_time_changed(hass, seconds): @patch( "homeassistant.components.zha.core.channels.general.BasicChannel.async_initialize", - new=mock.MagicMock(), + new=mock.AsyncMock(), ) async def test_check_available_success( hass, device_with_basic_channel, zha_device_restored @@ -160,7 +160,7 @@ async def test_check_available_success( @patch( "homeassistant.components.zha.core.channels.general.BasicChannel.async_initialize", - new=mock.MagicMock(), + new=mock.AsyncMock(), ) async def test_check_available_unsuccessful( hass, device_with_basic_channel, zha_device_restored @@ -203,7 +203,7 @@ async def test_check_available_unsuccessful( @patch( "homeassistant.components.zha.core.channels.general.BasicChannel.async_initialize", - new=mock.MagicMock(), + new=mock.AsyncMock(), ) async def test_check_available_no_basic_channel( hass, device_without_basic_channel, zha_device_restored, caplog diff --git a/tests/components/zha/test_fan.py b/tests/components/zha/test_fan.py index e367857b260..19f5f39a22f 100644 --- a/tests/components/zha/test_fan.py +++ b/tests/components/zha/test_fan.py @@ -471,7 +471,10 @@ async def test_fan_update_entity( assert hass.states.get(entity_id).attributes[ATTR_PERCENTAGE] == 0 assert hass.states.get(entity_id).attributes[ATTR_PRESET_MODE] is None assert hass.states.get(entity_id).attributes[ATTR_PERCENTAGE_STEP] == 100 / 3 - assert cluster.read_attributes.await_count == 2 + if zha_device_joined_restored.name == "zha_device_joined": + assert cluster.read_attributes.await_count == 2 + else: + assert cluster.read_attributes.await_count == 4 await async_setup_component(hass, "homeassistant", {}) await hass.async_block_till_done() @@ -480,7 +483,10 @@ async def test_fan_update_entity( "homeassistant", "update_entity", {"entity_id": entity_id}, blocking=True ) assert hass.states.get(entity_id).state == STATE_OFF - assert cluster.read_attributes.await_count == 3 + if zha_device_joined_restored.name == "zha_device_joined": + assert cluster.read_attributes.await_count == 3 + else: + assert cluster.read_attributes.await_count == 5 cluster.PLUGGED_ATTR_READS = {"fan_mode": 1} await hass.services.async_call( @@ -490,4 +496,7 @@ async def test_fan_update_entity( assert hass.states.get(entity_id).attributes[ATTR_PERCENTAGE] == 33 assert hass.states.get(entity_id).attributes[ATTR_PRESET_MODE] is None assert hass.states.get(entity_id).attributes[ATTR_PERCENTAGE_STEP] == 100 / 3 - assert cluster.read_attributes.await_count == 4 + if zha_device_joined_restored.name == "zha_device_joined": + assert cluster.read_attributes.await_count == 4 + else: + assert cluster.read_attributes.await_count == 6 From d00d82389dcb9de919dfaba829e2d1c157b0e3f2 Mon Sep 17 00:00:00 2001 From: Dave T <17680170+davet2001@users.noreply.github.com> Date: Wed, 27 Apr 2022 23:08:18 +0100 Subject: [PATCH 003/151] Remove invalid unique id from generic camera (#70568) Co-authored-by: J. Nick Koston --- homeassistant/components/generic/__init__.py | 22 +++++++++++- homeassistant/components/generic/camera.py | 2 +- .../components/generic/config_flow.py | 2 -- tests/components/generic/test_config_flow.py | 34 +++++++++++++++++++ 4 files changed, 56 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/generic/__init__.py b/homeassistant/components/generic/__init__.py index f243f1639b3..cb669d8b906 100644 --- a/homeassistant/components/generic/__init__.py +++ b/homeassistant/components/generic/__init__.py @@ -1,8 +1,12 @@ """The generic component.""" +from __future__ import annotations + +from typing import Any from homeassistant.config_entries import ConfigEntry from homeassistant.const import Platform -from homeassistant.core import HomeAssistant +from homeassistant.core import HomeAssistant, callback +from homeassistant.helpers import entity_registry as er DOMAIN = "generic" PLATFORMS = [Platform.CAMERA] @@ -13,9 +17,25 @@ async def _async_update_listener(hass: HomeAssistant, entry: ConfigEntry) -> Non await hass.config_entries.async_reload(entry.entry_id) +async def _async_migrate_unique_ids(hass: HomeAssistant, entry: ConfigEntry) -> None: + """Migrate entities to the new unique id.""" + + @callback + def _async_migrator(entity_entry: er.RegistryEntry) -> dict[str, Any] | None: + if entity_entry.unique_id == entry.entry_id: + # Already correct, nothing to do + return None + # There is only one entity, and its unique id + # should always be the same as the config entry entry_id + return {"new_unique_id": entry.entry_id} + + await er.async_migrate_entries(hass, entry.entry_id, _async_migrator) + + async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up generic IP camera from a config entry.""" + await _async_migrate_unique_ids(hass, entry) hass.config_entries.async_setup_platforms(entry, PLATFORMS) entry.async_on_unload(entry.add_update_listener(_async_update_listener)) diff --git a/homeassistant/components/generic/camera.py b/homeassistant/components/generic/camera.py index e83cb0df0aa..d20032e2607 100644 --- a/homeassistant/components/generic/camera.py +++ b/homeassistant/components/generic/camera.py @@ -109,7 +109,7 @@ async def async_setup_entry( """Set up a generic IP Camera.""" async_add_entities( - [GenericCamera(hass, entry.options, entry.unique_id, entry.title)] + [GenericCamera(hass, entry.options, entry.entry_id, entry.title)] ) diff --git a/homeassistant/components/generic/config_flow.py b/homeassistant/components/generic/config_flow.py index 3d15069bca8..4298b473681 100644 --- a/homeassistant/components/generic/config_flow.py +++ b/homeassistant/components/generic/config_flow.py @@ -274,7 +274,6 @@ class GenericIPCamConfigFlow(ConfigFlow, domain=DOMAIN): # is always jpeg user_input[CONF_CONTENT_TYPE] = "image/jpeg" - await self.async_set_unique_id(self.flow_id) return self.async_create_entry( title=name, data={}, options=user_input ) @@ -302,7 +301,6 @@ class GenericIPCamConfigFlow(ConfigFlow, domain=DOMAIN): import_config[CONF_LIMIT_REFETCH_TO_URL_CHANGE] = False still_format = import_config.get(CONF_CONTENT_TYPE, "image/jpeg") import_config[CONF_CONTENT_TYPE] = still_format - await self.async_set_unique_id(self.flow_id) return self.async_create_entry(title=name, data={}, options=import_config) diff --git a/tests/components/generic/test_config_flow.py b/tests/components/generic/test_config_flow.py index 3caa1aa7adf..f5411ed3ea0 100644 --- a/tests/components/generic/test_config_flow.py +++ b/tests/components/generic/test_config_flow.py @@ -28,6 +28,7 @@ from homeassistant.const import ( CONF_VERIFY_SSL, HTTP_BASIC_AUTHENTICATION, ) +from homeassistant.helpers import entity_registry from tests.common import MockConfigEntry @@ -577,3 +578,36 @@ async def test_reload_on_title_change(hass) -> None: await hass.async_block_till_done() assert hass.states.get("camera.my_title").attributes["friendly_name"] == "New Title" + + +async def test_migrate_existing_ids(hass) -> None: + """Test that existing ids are migrated for issue #70568.""" + + registry = entity_registry.async_get(hass) + + test_data = TESTDATA_OPTIONS.copy() + test_data[CONF_CONTENT_TYPE] = "image/png" + old_unique_id = "54321" + entity_id = "camera.sample_camera" + + mock_entry = MockConfigEntry( + domain=DOMAIN, unique_id=old_unique_id, options=test_data, title="My Title" + ) + new_unique_id = mock_entry.entry_id + mock_entry.add_to_hass(hass) + + entity_entry = registry.async_get_or_create( + "camera", + DOMAIN, + old_unique_id, + suggested_object_id="sample camera", + config_entry=mock_entry, + ) + assert entity_entry.entity_id == entity_id + assert entity_entry.unique_id == old_unique_id + + await hass.config_entries.async_setup(mock_entry.entry_id) + await hass.async_block_till_done() + + entity_entry = registry.async_get(entity_id) + assert entity_entry.unique_id == new_unique_id From 627bd0d58a9bca4db5286359e449a5d4ab4a3460 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Wed, 27 Apr 2022 17:05:00 +0200 Subject: [PATCH 004/151] Handle removed entites in collection.sync_entity_lifecycle (#70759) * Handle removed entites in collection.sync_entity_lifecycle * Add comment --- homeassistant/helpers/collection.py | 15 ++- homeassistant/helpers/entity.py | 18 ++- homeassistant/helpers/entity_platform.py | 2 +- tests/helpers/test_collection.py | 142 ++++++++++++++++++++++- 4 files changed, 168 insertions(+), 9 deletions(-) diff --git a/homeassistant/helpers/collection.py b/homeassistant/helpers/collection.py index 9017c60c23f..7a73f90539c 100644 --- a/homeassistant/helpers/collection.py +++ b/homeassistant/helpers/collection.py @@ -334,7 +334,13 @@ def sync_entity_lifecycle( ent_reg = entity_registry.async_get(hass) async def _add_entity(change_set: CollectionChangeSet) -> Entity: + def entity_removed() -> None: + """Remove entity from entities if it's removed or not added.""" + if change_set.item_id in entities: + entities.pop(change_set.item_id) + entities[change_set.item_id] = create_entity(change_set.item) + entities[change_set.item_id].async_on_remove(entity_removed) return entities[change_set.item_id] async def _remove_entity(change_set: CollectionChangeSet) -> None: @@ -343,11 +349,16 @@ def sync_entity_lifecycle( ) if ent_to_remove is not None: ent_reg.async_remove(ent_to_remove) - else: + elif change_set.item_id in entities: await entities[change_set.item_id].async_remove(force_remove=True) - entities.pop(change_set.item_id) + # Unconditionally pop the entity from the entity list to avoid racing against + # the entity registry event handled by Entity._async_registry_updated + if change_set.item_id in entities: + entities.pop(change_set.item_id) async def _update_entity(change_set: CollectionChangeSet) -> None: + if change_set.item_id not in entities: + return await entities[change_set.item_id].async_update_config(change_set.item) # type: ignore[attr-defined] _func_map: dict[ diff --git a/homeassistant/helpers/entity.py b/homeassistant/helpers/entity.py index f94b4257d30..791a80f7731 100644 --- a/homeassistant/helpers/entity.py +++ b/homeassistant/helpers/entity.py @@ -759,7 +759,7 @@ class Entity(ABC): @callback def async_on_remove(self, func: CALLBACK_TYPE) -> None: - """Add a function to call when entity removed.""" + """Add a function to call when entity is removed or not added.""" if self._on_remove is None: self._on_remove = [] self._on_remove.append(func) @@ -788,13 +788,23 @@ class Entity(ABC): self.parallel_updates = parallel_updates self._platform_state = EntityPlatformState.ADDED + def _call_on_remove_callbacks(self) -> None: + """Call callbacks registered by async_on_remove.""" + if self._on_remove is None: + return + while self._on_remove: + self._on_remove.pop()() + @callback def add_to_platform_abort(self) -> None: """Abort adding an entity to a platform.""" + + self._platform_state = EntityPlatformState.NOT_ADDED + self._call_on_remove_callbacks() + self.hass = None # type: ignore[assignment] self.platform = None self.parallel_updates = None - self._platform_state = EntityPlatformState.NOT_ADDED async def add_to_platform_finish(self) -> None: """Finish adding an entity to a platform.""" @@ -819,9 +829,7 @@ class Entity(ABC): self._platform_state = EntityPlatformState.REMOVED - if self._on_remove is not None: - while self._on_remove: - self._on_remove.pop()() + self._call_on_remove_callbacks() await self.async_internal_will_remove_from_hass() await self.async_will_remove_from_hass() diff --git a/homeassistant/helpers/entity_platform.py b/homeassistant/helpers/entity_platform.py index 65cfe706f14..6972dbf7c16 100644 --- a/homeassistant/helpers/entity_platform.py +++ b/homeassistant/helpers/entity_platform.py @@ -611,7 +611,7 @@ class EntityPlatform: self.hass.states.async_reserve(entity.entity_id) def remove_entity_cb() -> None: - """Remove entity from entities list.""" + """Remove entity from entities dict.""" self.entities.pop(entity_id) entity.async_on_remove(remove_entity_cb) diff --git a/tests/helpers/test_collection.py b/tests/helpers/test_collection.py index 11ab0f46ce4..cd4bbba1a3e 100644 --- a/tests/helpers/test_collection.py +++ b/tests/helpers/test_collection.py @@ -4,7 +4,13 @@ import logging import pytest import voluptuous as vol -from homeassistant.helpers import collection, entity, entity_component, storage +from homeassistant.helpers import ( + collection, + entity, + entity_component, + entity_registry as er, + storage, +) from tests.common import flush_store @@ -261,6 +267,140 @@ async def test_attach_entity_component_collection(hass): assert hass.states.get("test.mock_1") is None +async def test_entity_component_collection_abort(hass): + """Test aborted entity adding is handled.""" + ent_comp = entity_component.EntityComponent(_LOGGER, "test", hass) + coll = collection.ObservableCollection(_LOGGER) + + async_update_config_calls = [] + async_remove_calls = [] + + class MockMockEntity(MockEntity): + """Track calls to async_update_config and async_remove.""" + + async def async_update_config(self, config): + nonlocal async_update_config_calls + async_update_config_calls.append(None) + await super().async_update_config() + + async def async_remove(self, *, force_remove: bool = False): + nonlocal async_remove_calls + async_remove_calls.append(None) + await super().async_remove() + + collection.sync_entity_lifecycle( + hass, "test", "test", ent_comp, coll, MockMockEntity + ) + entity_registry = er.async_get(hass) + entity_registry.async_get_or_create( + "test", + "test", + "mock_id", + suggested_object_id="mock_1", + disabled_by=er.RegistryEntryDisabler.INTEGRATION, + ) + + await coll.notify_changes( + [ + collection.CollectionChangeSet( + collection.CHANGE_ADDED, + "mock_id", + {"id": "mock_id", "state": "initial", "name": "Mock 1"}, + ) + ], + ) + + assert hass.states.get("test.mock_1") is None + + await coll.notify_changes( + [ + collection.CollectionChangeSet( + collection.CHANGE_UPDATED, + "mock_id", + {"id": "mock_id", "state": "second", "name": "Mock 1 updated"}, + ) + ], + ) + + assert hass.states.get("test.mock_1") is None + assert len(async_update_config_calls) == 0 + + await coll.notify_changes( + [collection.CollectionChangeSet(collection.CHANGE_REMOVED, "mock_id", None)], + ) + + assert hass.states.get("test.mock_1") is None + assert len(async_remove_calls) == 0 + + +async def test_entity_component_collection_entity_removed(hass): + """Test entity removal is handled.""" + ent_comp = entity_component.EntityComponent(_LOGGER, "test", hass) + coll = collection.ObservableCollection(_LOGGER) + + async_update_config_calls = [] + async_remove_calls = [] + + class MockMockEntity(MockEntity): + """Track calls to async_update_config and async_remove.""" + + async def async_update_config(self, config): + nonlocal async_update_config_calls + async_update_config_calls.append(None) + await super().async_update_config() + + async def async_remove(self, *, force_remove: bool = False): + nonlocal async_remove_calls + async_remove_calls.append(None) + await super().async_remove() + + collection.sync_entity_lifecycle( + hass, "test", "test", ent_comp, coll, MockMockEntity + ) + entity_registry = er.async_get(hass) + entity_registry.async_get_or_create( + "test", "test", "mock_id", suggested_object_id="mock_1" + ) + + await coll.notify_changes( + [ + collection.CollectionChangeSet( + collection.CHANGE_ADDED, + "mock_id", + {"id": "mock_id", "state": "initial", "name": "Mock 1"}, + ) + ], + ) + + assert hass.states.get("test.mock_1").name == "Mock 1" + assert hass.states.get("test.mock_1").state == "initial" + + entity_registry.async_remove("test.mock_1") + await hass.async_block_till_done() + assert hass.states.get("test.mock_1") is None + assert len(async_remove_calls) == 1 + + await coll.notify_changes( + [ + collection.CollectionChangeSet( + collection.CHANGE_UPDATED, + "mock_id", + {"id": "mock_id", "state": "second", "name": "Mock 1 updated"}, + ) + ], + ) + + assert hass.states.get("test.mock_1") is None + assert len(async_update_config_calls) == 0 + + await coll.notify_changes( + [collection.CollectionChangeSet(collection.CHANGE_REMOVED, "mock_id", None)], + ) + + assert hass.states.get("test.mock_1") is None + assert len(async_remove_calls) == 1 + + async def test_storage_collection_websocket(hass, hass_ws_client): """Test exposing a storage collection via websockets.""" store = storage.Store(hass, 1, "test-data") From 5a618e7f586149cfdc698adf078e002e1c9fe7e2 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 27 Apr 2022 19:05:42 +0200 Subject: [PATCH 005/151] Bump hatasmota to 0.4.1 (#70799) Co-authored-by: Erik Montnemery --- .../components/tasmota/manifest.json | 2 +- homeassistant/components/tasmota/sensor.py | 23 ++++++++++++++++++- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- tests/components/tasmota/test_sensor.py | 4 ++-- 5 files changed, 27 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/tasmota/manifest.json b/homeassistant/components/tasmota/manifest.json index 2f3a1b66fea..6a743683d94 100644 --- a/homeassistant/components/tasmota/manifest.json +++ b/homeassistant/components/tasmota/manifest.json @@ -3,7 +3,7 @@ "name": "Tasmota", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/tasmota", - "requirements": ["hatasmota==0.4.0"], + "requirements": ["hatasmota==0.4.1"], "dependencies": ["mqtt"], "mqtt": ["tasmota/discovery/#"], "codeowners": ["@emontnemery"], diff --git a/homeassistant/components/tasmota/sensor.py b/homeassistant/components/tasmota/sensor.py index feb15cd5639..34526904f17 100644 --- a/homeassistant/components/tasmota/sensor.py +++ b/homeassistant/components/tasmota/sensor.py @@ -54,11 +54,24 @@ ICON = "icon" # A Tasmota sensor type may be mapped to either a device class or an icon, not both SENSOR_DEVICE_CLASS_ICON_MAP: dict[str, dict[str, Any]] = { + hc.SENSOR_ACTIVE_ENERGYEXPORT: { + DEVICE_CLASS: SensorDeviceClass.ENERGY, + STATE_CLASS: SensorStateClass.TOTAL, + }, + hc.SENSOR_ACTIVE_ENERGYIMPORT: { + DEVICE_CLASS: SensorDeviceClass.ENERGY, + STATE_CLASS: SensorStateClass.TOTAL, + }, + hc.SENSOR_ACTIVE_POWERUSAGE: { + DEVICE_CLASS: SensorDeviceClass.POWER, + STATE_CLASS: SensorStateClass.MEASUREMENT, + }, hc.SENSOR_AMBIENT: { DEVICE_CLASS: SensorDeviceClass.ILLUMINANCE, STATE_CLASS: SensorStateClass.MEASUREMENT, }, hc.SENSOR_APPARENT_POWERUSAGE: { + ICON: "mdi:flash", STATE_CLASS: SensorStateClass.MEASUREMENT, }, hc.SENSOR_BATTERY: { @@ -80,6 +93,11 @@ SENSOR_DEVICE_CLASS_ICON_MAP: dict[str, dict[str, Any]] = { ICON: "mdi:alpha-a-circle-outline", STATE_CLASS: SensorStateClass.MEASUREMENT, }, + hc.SENSOR_CURRENTNEUTRAL: { + ICON: "mdi:alpha-a-circle-outline", + DEVICE_CLASS: SensorDeviceClass.CURRENT, + STATE_CLASS: SensorStateClass.MEASUREMENT, + }, hc.SENSOR_DEWPOINT: { DEVICE_CLASS: SensorDeviceClass.TEMPERATURE, ICON: "mdi:weather-rainy", @@ -141,7 +159,10 @@ SENSOR_DEVICE_CLASS_ICON_MAP: dict[str, dict[str, Any]] = { STATE_CLASS: SensorStateClass.MEASUREMENT, }, hc.SENSOR_PROXIMITY: {ICON: "mdi:ruler"}, + hc.SENSOR_REACTIVE_ENERGYEXPORT: {STATE_CLASS: SensorStateClass.TOTAL}, + hc.SENSOR_REACTIVE_ENERGYIMPORT: {STATE_CLASS: SensorStateClass.TOTAL}, hc.SENSOR_REACTIVE_POWERUSAGE: { + ICON: "mdi:flash", STATE_CLASS: SensorStateClass.MEASUREMENT, }, hc.SENSOR_STATUS_LAST_RESTART_TIME: {DEVICE_CLASS: SensorDeviceClass.TIMESTAMP}, @@ -162,7 +183,7 @@ SENSOR_DEVICE_CLASS_ICON_MAP: dict[str, dict[str, Any]] = { hc.SENSOR_TODAY: {DEVICE_CLASS: SensorDeviceClass.ENERGY}, hc.SENSOR_TOTAL: { DEVICE_CLASS: SensorDeviceClass.ENERGY, - STATE_CLASS: SensorStateClass.TOTAL_INCREASING, + STATE_CLASS: SensorStateClass.TOTAL, }, hc.SENSOR_TOTAL_START_TIME: {ICON: "mdi:progress-clock"}, hc.SENSOR_TVOC: {ICON: "mdi:air-filter"}, diff --git a/requirements_all.txt b/requirements_all.txt index daa9ae78610..ca5a28b5cb2 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -792,7 +792,7 @@ hass-nabucasa==0.54.0 hass_splunk==0.1.1 # homeassistant.components.tasmota -hatasmota==0.4.0 +hatasmota==0.4.1 # homeassistant.components.jewish_calendar hdate==0.10.4 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 9975c08b5df..326eb00e596 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -562,7 +562,7 @@ hangups==0.4.18 hass-nabucasa==0.54.0 # homeassistant.components.tasmota -hatasmota==0.4.0 +hatasmota==0.4.1 # homeassistant.components.jewish_calendar hdate==0.10.4 diff --git a/tests/components/tasmota/test_sensor.py b/tests/components/tasmota/test_sensor.py index 8e810c82a43..b27a9b8ca49 100644 --- a/tests/components/tasmota/test_sensor.py +++ b/tests/components/tasmota/test_sensor.py @@ -284,7 +284,7 @@ async def test_indexed_sensor_state_via_mqtt2(hass, mqtt_mock, setup_tasmota): state = hass.states.get("sensor.tasmota_energy_total") assert state.state == "unavailable" assert not state.attributes.get(ATTR_ASSUMED_STATE) - assert state.attributes[ATTR_STATE_CLASS] is SensorStateClass.TOTAL_INCREASING + assert state.attributes[ATTR_STATE_CLASS] is SensorStateClass.TOTAL async_fire_mqtt_message(hass, "tasmota_49A3BC/tele/LWT", "Online") await hass.async_block_till_done() @@ -333,7 +333,7 @@ async def test_indexed_sensor_state_via_mqtt3(hass, mqtt_mock, setup_tasmota): state = hass.states.get("sensor.tasmota_energy_total_1") assert state.state == "unavailable" assert not state.attributes.get(ATTR_ASSUMED_STATE) - assert state.attributes[ATTR_STATE_CLASS] is SensorStateClass.TOTAL_INCREASING + assert state.attributes[ATTR_STATE_CLASS] is SensorStateClass.TOTAL async_fire_mqtt_message(hass, "tasmota_49A3BC/tele/LWT", "Online") await hass.async_block_till_done() From 4f9ff2a252fa2d0aa4bcafa4352702d70684c9e2 Mon Sep 17 00:00:00 2001 From: "David F. Mulcahey" Date: Wed, 27 Apr 2022 13:55:31 -0400 Subject: [PATCH 006/151] Bump ZHA dependencies (#70900) * Bump ZHA libs * bump Zigpy --- homeassistant/components/zha/manifest.json | 6 +++--- requirements_all.txt | 6 +++--- requirements_test_all.txt | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/zha/manifest.json b/homeassistant/components/zha/manifest.json index 3704e9715fb..8befa039382 100644 --- a/homeassistant/components/zha/manifest.json +++ b/homeassistant/components/zha/manifest.json @@ -7,9 +7,9 @@ "bellows==0.29.0", "pyserial==3.5", "pyserial-asyncio==0.6", - "zha-quirks==0.0.72", - "zigpy-deconz==0.14.0", - "zigpy==0.44.2", + "zha-quirks==0.0.73", + "zigpy-deconz==0.16.0", + "zigpy==0.45.1", "zigpy-xbee==0.14.0", "zigpy-zigate==0.7.4", "zigpy-znp==0.7.0" diff --git a/requirements_all.txt b/requirements_all.txt index ca5a28b5cb2..c76ee52cff7 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2480,7 +2480,7 @@ zengge==0.2 zeroconf==0.38.4 # homeassistant.components.zha -zha-quirks==0.0.72 +zha-quirks==0.0.73 # homeassistant.components.zhong_hong zhong_hong_hvac==1.0.9 @@ -2489,7 +2489,7 @@ zhong_hong_hvac==1.0.9 ziggo-mediabox-xl==1.1.0 # homeassistant.components.zha -zigpy-deconz==0.14.0 +zigpy-deconz==0.16.0 # homeassistant.components.zha zigpy-xbee==0.14.0 @@ -2501,7 +2501,7 @@ zigpy-zigate==0.7.4 zigpy-znp==0.7.0 # homeassistant.components.zha -zigpy==0.44.2 +zigpy==0.45.1 # homeassistant.components.zoneminder zm-py==0.5.2 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 326eb00e596..bc1eb01a3d2 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1620,10 +1620,10 @@ youless-api==0.16 zeroconf==0.38.4 # homeassistant.components.zha -zha-quirks==0.0.72 +zha-quirks==0.0.73 # homeassistant.components.zha -zigpy-deconz==0.14.0 +zigpy-deconz==0.16.0 # homeassistant.components.zha zigpy-xbee==0.14.0 @@ -1635,7 +1635,7 @@ zigpy-zigate==0.7.4 zigpy-znp==0.7.0 # homeassistant.components.zha -zigpy==0.44.2 +zigpy==0.45.1 # homeassistant.components.zwave_js zwave-js-server-python==0.36.0 From a5ac263276a604bf73699ec0d6f4e0a9b58ae9d0 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 27 Apr 2022 05:54:47 -1000 Subject: [PATCH 007/151] Add additional OUI for tplink light devices (#70922) --- homeassistant/components/tplink/manifest.json | 4 ++++ homeassistant/generated/dhcp.py | 1 + 2 files changed, 5 insertions(+) diff --git a/homeassistant/components/tplink/manifest.json b/homeassistant/components/tplink/manifest.json index 383031d3417..9a419302a18 100644 --- a/homeassistant/components/tplink/manifest.json +++ b/homeassistant/components/tplink/manifest.json @@ -74,6 +74,10 @@ "hostname": "k[lp]*", "macaddress": "1027F5*" }, + { + "hostname": "k[lp]*", + "macaddress": "B0A7B9*" + }, { "hostname": "k[lp]*", "macaddress": "403F8C*" diff --git a/homeassistant/generated/dhcp.py b/homeassistant/generated/dhcp.py index 3ae5b0a1376..d0ffb9b097a 100644 --- a/homeassistant/generated/dhcp.py +++ b/homeassistant/generated/dhcp.py @@ -137,6 +137,7 @@ DHCP: list[dict[str, str | bool]] = [ {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '60A4B7*'}, {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '005F67*'}, {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '1027F5*'}, + {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': 'B0A7B9*'}, {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '403F8C*'}, {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': 'C0C9E3*'}, {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '909A4A*'}, From 32d7f04a6553ef034c0375527e4dfc7e8f24762a Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 27 Apr 2022 18:18:32 -1000 Subject: [PATCH 008/151] Add discovery support for polisy to isy994 (#70940) --- .../components/isy994/config_flow.py | 5 +- homeassistant/components/isy994/manifest.json | 3 +- homeassistant/generated/dhcp.py | 1 + tests/components/isy994/test_config_flow.py | 55 +++++++++++++++++++ 4 files changed, 62 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/isy994/config_flow.py b/homeassistant/components/isy994/config_flow.py index 866ec800402..dea4bce4eeb 100644 --- a/homeassistant/components/isy994/config_flow.py +++ b/homeassistant/components/isy994/config_flow.py @@ -203,7 +203,10 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): ) -> data_entry_flow.FlowResult: """Handle a discovered isy994 via dhcp.""" friendly_name = discovery_info.hostname - url = f"http://{discovery_info.ip}" + if friendly_name.startswith("polisy"): + url = f"http://{discovery_info.ip}:8080" + else: + url = f"http://{discovery_info.ip}" mac = discovery_info.macaddress isy_mac = ( f"{mac[0:2]}:{mac[2:4]}:{mac[4:6]}:{mac[6:8]}:{mac[8:10]}:{mac[10:12]}" diff --git a/homeassistant/components/isy994/manifest.json b/homeassistant/components/isy994/manifest.json index d92226a4277..d131a150fb3 100644 --- a/homeassistant/components/isy994/manifest.json +++ b/homeassistant/components/isy994/manifest.json @@ -13,7 +13,8 @@ ], "dhcp": [ { "registered_devices": true }, - { "hostname": "isy*", "macaddress": "0021B9*" } + { "hostname": "isy*", "macaddress": "0021B9*" }, + { "hostname": "polisy*", "macaddress": "000DB9*" } ], "iot_class": "local_push", "loggers": ["pyisy"] diff --git a/homeassistant/generated/dhcp.py b/homeassistant/generated/dhcp.py index d0ffb9b097a..4ebe47ded17 100644 --- a/homeassistant/generated/dhcp.py +++ b/homeassistant/generated/dhcp.py @@ -54,6 +54,7 @@ DHCP: list[dict[str, str | bool]] = [ {'domain': 'intellifire', 'hostname': 'zentrios-*'}, {'domain': 'isy994', 'registered_devices': True}, {'domain': 'isy994', 'hostname': 'isy*', 'macaddress': '0021B9*'}, + {'domain': 'isy994', 'hostname': 'polisy*', 'macaddress': '000DB9*'}, {'domain': 'lyric', 'hostname': 'lyric-*', 'macaddress': '48A2E6*'}, {'domain': 'lyric', 'hostname': 'lyric-*', 'macaddress': 'B82CA0*'}, {'domain': 'lyric', 'hostname': 'lyric-*', 'macaddress': '00D02D*'}, diff --git a/tests/components/isy994/test_config_flow.py b/tests/components/isy994/test_config_flow.py index b16f5c0070d..60e9fd964b6 100644 --- a/tests/components/isy994/test_config_flow.py +++ b/tests/components/isy994/test_config_flow.py @@ -44,6 +44,12 @@ MOCK_USER_INPUT = { CONF_PASSWORD: MOCK_PASSWORD, CONF_TLS_VER: MOCK_TLS_VERSION, } +MOCK_POLISY_USER_INPUT = { + CONF_HOST: f"http://{MOCK_HOSTNAME}:8080", + CONF_USERNAME: MOCK_USERNAME, + CONF_PASSWORD: MOCK_PASSWORD, + CONF_TLS_VER: MOCK_TLS_VERSION, +} MOCK_IMPORT_WITH_SSL = { CONF_HOST: f"https://{MOCK_HOSTNAME}", CONF_USERNAME: MOCK_USERNAME, @@ -69,6 +75,7 @@ MOCK_IMPORT_FULL_CONFIG = { MOCK_DEVICE_NAME = "Name of the device" MOCK_UUID = "ce:fb:72:31:b7:b9" MOCK_MAC = "cefb7231b7b9" +MOCK_POLISY_MAC = "000db9123456" MOCK_CONFIG_RESPONSE = """ @@ -95,6 +102,14 @@ PATCH_ASYNC_SETUP = f"{INTEGRATION}.async_setup" PATCH_ASYNC_SETUP_ENTRY = f"{INTEGRATION}.async_setup_entry" +def _get_schema_default(schema, key_name): + """Iterate schema to find a key.""" + for schema_key in schema: + if schema_key == key_name: + return schema_key.default() + raise KeyError(f"{key_name} not found in schema") + + async def test_form(hass: HomeAssistant): """Test we get the form.""" @@ -544,6 +559,46 @@ async def test_form_dhcp(hass: HomeAssistant): assert len(mock_setup_entry.mock_calls) == 1 +async def test_form_dhcp_with_polisy(hass: HomeAssistant): + """Test we can setup from dhcp with polisy.""" + + result = await hass.config_entries.flow.async_init( + DOMAIN, + context={"source": SOURCE_DHCP}, + data=dhcp.DhcpServiceInfo( + ip="1.2.3.4", + hostname="polisy", + macaddress=MOCK_POLISY_MAC, + ), + ) + assert result["type"] == data_entry_flow.RESULT_TYPE_FORM + assert result["step_id"] == "user" + assert result["errors"] == {} + assert ( + _get_schema_default(result["data_schema"].schema, CONF_HOST) + == "http://1.2.3.4:8080" + ) + + with patch(PATCH_CONNECTION, return_value=MOCK_CONFIG_RESPONSE), patch( + PATCH_ASYNC_SETUP, return_value=True + ) as mock_setup, patch( + PATCH_ASYNC_SETUP_ENTRY, + return_value=True, + ) as mock_setup_entry: + result2 = await hass.config_entries.flow.async_configure( + result["flow_id"], + MOCK_POLISY_USER_INPUT, + ) + await hass.async_block_till_done() + + assert result2["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY + assert result2["title"] == f"{MOCK_DEVICE_NAME} ({MOCK_HOSTNAME})" + assert result2["result"].unique_id == MOCK_UUID + assert result2["data"] == MOCK_POLISY_USER_INPUT + assert len(mock_setup.mock_calls) == 1 + assert len(mock_setup_entry.mock_calls) == 1 + + async def test_form_dhcp_existing_entry(hass: HomeAssistant): """Test we update the ip of an existing entry from dhcp.""" From f3a18bc8f2af640d8c865113afed0e26a5768c53 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 27 Apr 2022 18:19:36 -1000 Subject: [PATCH 009/151] Adjust get_latest_short_term_statistics query to be postgresql compatible (#70953) --- homeassistant/components/recorder/statistics.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/recorder/statistics.py b/homeassistant/components/recorder/statistics.py index 0056a81fb60..1c993b32bb6 100644 --- a/homeassistant/components/recorder/statistics.py +++ b/homeassistant/components/recorder/statistics.py @@ -1136,16 +1136,20 @@ def get_latest_short_term_statistics( ] most_recent_statistic_row = ( session.query( - StatisticsShortTerm.id, - func.max(StatisticsShortTerm.start), + StatisticsShortTerm.metadata_id, + func.max(StatisticsShortTerm.start).label("start_max"), ) + .filter(StatisticsShortTerm.metadata_id.in_(metadata_ids)) .group_by(StatisticsShortTerm.metadata_id) - .having(StatisticsShortTerm.metadata_id.in_(metadata_ids)) ).subquery() stats = execute( session.query(*QUERY_STATISTICS_SHORT_TERM).join( most_recent_statistic_row, - StatisticsShortTerm.id == most_recent_statistic_row.c.id, + ( + StatisticsShortTerm.metadata_id # pylint: disable=comparison-with-callable + == most_recent_statistic_row.c.metadata_id + ) + & (StatisticsShortTerm.start == most_recent_statistic_row.c.start_max), ) ) if not stats: From e41490f8bab0578c033b2f53fa2e5d833663b412 Mon Sep 17 00:00:00 2001 From: "David F. Mulcahey" Date: Wed, 27 Apr 2022 20:52:32 -0400 Subject: [PATCH 010/151] Fix flaky ZHA tests (#70956) --- tests/components/zha/test_gateway.py | 11 ++++++----- tests/components/zha/test_select.py | 6 +++++- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/tests/components/zha/test_gateway.py b/tests/components/zha/test_gateway.py index a263a6d7ed3..67ce6481542 100644 --- a/tests/components/zha/test_gateway.py +++ b/tests/components/zha/test_gateway.py @@ -1,5 +1,6 @@ """Test ZHA Gateway.""" import asyncio +import math import time from unittest.mock import patch @@ -207,14 +208,14 @@ async def test_updating_device_store(hass, zigpy_dev_basic, zha_dev_basic): assert zha_dev_basic.last_seen is not None entry = zha_gateway.zha_storage.async_get_or_create_device(zha_dev_basic) - assert entry.last_seen == zha_dev_basic.last_seen + assert math.isclose(entry.last_seen, zha_dev_basic.last_seen, rel_tol=1e-06) assert zha_dev_basic.last_seen is not None last_seen = zha_dev_basic.last_seen # test that we can't set None as last seen any more zha_dev_basic.async_update_last_seen(None) - assert last_seen == zha_dev_basic.last_seen + assert math.isclose(last_seen, zha_dev_basic.last_seen, rel_tol=1e-06) # test that we won't put None in storage zigpy_dev_basic.last_seen = None @@ -222,18 +223,18 @@ async def test_updating_device_store(hass, zigpy_dev_basic, zha_dev_basic): await zha_gateway.async_update_device_storage() await hass.async_block_till_done() entry = zha_gateway.zha_storage.async_get_or_create_device(zha_dev_basic) - assert entry.last_seen == last_seen + assert math.isclose(entry.last_seen, last_seen, rel_tol=1e-06) # test that we can still set a good last_seen last_seen = time.time() zha_dev_basic.async_update_last_seen(last_seen) - assert last_seen == zha_dev_basic.last_seen + assert math.isclose(last_seen, zha_dev_basic.last_seen, rel_tol=1e-06) # test that we still put good values in storage await zha_gateway.async_update_device_storage() await hass.async_block_till_done() entry = zha_gateway.zha_storage.async_get_or_create_device(zha_dev_basic) - assert entry.last_seen == last_seen + assert math.isclose(entry.last_seen, last_seen, rel_tol=1e-06) async def test_cleaning_up_storage(hass, zigpy_dev_basic, zha_dev_basic, hass_storage): diff --git a/tests/components/zha/test_select.py b/tests/components/zha/test_select.py index a761b8ea36b..452939420bf 100644 --- a/tests/components/zha/test_select.py +++ b/tests/components/zha/test_select.py @@ -193,7 +193,11 @@ async def test_on_off_select(hass, light, zha_device_joined_restored): state = hass.states.get(entity_id) assert state - assert state.state == STATE_UNKNOWN + if zha_device_joined_restored.name == "zha_device_joined": + assert state.state == general.OnOff.StartUpOnOff.On.name + else: + assert state.state == STATE_UNKNOWN + assert state.attributes["options"] == ["Off", "On", "Toggle", "PreviousValue"] entity_entry = entity_registry.async_get(entity_id) From 6a131ca7deef880f6adb73b8972a8a36506edda4 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 27 Apr 2022 18:18:59 -1000 Subject: [PATCH 011/151] Add dhcp hostname of older ZJ series Magic Home bulbs to discovery (#70958) --- homeassistant/components/flux_led/manifest.json | 3 +++ homeassistant/generated/dhcp.py | 1 + 2 files changed, 4 insertions(+) diff --git a/homeassistant/components/flux_led/manifest.json b/homeassistant/components/flux_led/manifest.json index 1dac7b81d89..e28b55869c7 100644 --- a/homeassistant/components/flux_led/manifest.json +++ b/homeassistant/components/flux_led/manifest.json @@ -38,6 +38,9 @@ "macaddress": "8CCE4E*", "hostname": "lwip*" }, + { + "hostname": "hf-lpb100-zj*" + }, { "hostname": "zengge_[0-9a-f][0-9a-f]_*" }, diff --git a/homeassistant/generated/dhcp.py b/homeassistant/generated/dhcp.py index 4ebe47ded17..015d70e2939 100644 --- a/homeassistant/generated/dhcp.py +++ b/homeassistant/generated/dhcp.py @@ -36,6 +36,7 @@ DHCP: list[dict[str, str | bool]] = [ {'domain': 'flux_led', 'hostname': '[ba][lk]*', 'macaddress': 'B4E842*'}, {'domain': 'flux_led', 'hostname': '[hba][flk]*', 'macaddress': 'F0FE6B*'}, {'domain': 'flux_led', 'hostname': 'lwip*', 'macaddress': '8CCE4E*'}, + {'domain': 'flux_led', 'hostname': 'hf-lpb100-zj*'}, {'domain': 'flux_led', 'hostname': 'zengge_[0-9a-f][0-9a-f]_*'}, {'domain': 'flux_led', 'hostname': 'sta*', 'macaddress': 'C82E47*'}, {'domain': 'fronius', 'macaddress': '0003AC*'}, From 8a33eb4418931f89b9411f1f9ec4293d97e2791c Mon Sep 17 00:00:00 2001 From: Allen Porter Date: Wed, 27 Apr 2022 21:17:25 -0700 Subject: [PATCH 012/151] Bump gcal_sync 0.6.3 to fix calendar path encoding bug (#70959) --- homeassistant/components/google/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/google/manifest.json b/homeassistant/components/google/manifest.json index 8af1fa00437..0e9a2fe7ddb 100644 --- a/homeassistant/components/google/manifest.json +++ b/homeassistant/components/google/manifest.json @@ -4,7 +4,7 @@ "config_flow": true, "dependencies": ["auth"], "documentation": "https://www.home-assistant.io/integrations/calendar.google/", - "requirements": ["gcal-sync==0.6.2", "oauth2client==4.1.3"], + "requirements": ["gcal-sync==0.6.3", "oauth2client==4.1.3"], "codeowners": ["@allenporter"], "iot_class": "cloud_polling", "loggers": ["googleapiclient"] diff --git a/requirements_all.txt b/requirements_all.txt index c76ee52cff7..df74fa12364 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -689,7 +689,7 @@ gTTS==2.2.4 garages-amsterdam==3.0.0 # homeassistant.components.google -gcal-sync==0.6.2 +gcal-sync==0.6.3 # homeassistant.components.geniushub geniushub-client==0.6.30 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index bc1eb01a3d2..ec628688ad0 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -486,7 +486,7 @@ gTTS==2.2.4 garages-amsterdam==3.0.0 # homeassistant.components.google -gcal-sync==0.6.2 +gcal-sync==0.6.3 # homeassistant.components.usgs_earthquakes_feed geojson_client==0.6 From a1f47b203636f824d3cb0c2d3216fdb6fde203b2 Mon Sep 17 00:00:00 2001 From: Allen Porter Date: Wed, 27 Apr 2022 21:16:50 -0700 Subject: [PATCH 013/151] Set nest climate min/max temp range (#70960) --- homeassistant/components/nest/climate_sdm.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/homeassistant/components/nest/climate_sdm.py b/homeassistant/components/nest/climate_sdm.py index 26fb88482ee..89048b9f624 100644 --- a/homeassistant/components/nest/climate_sdm.py +++ b/homeassistant/components/nest/climate_sdm.py @@ -71,6 +71,8 @@ FAN_MODE_MAP = { FAN_INV_MODE_MAP = {v: k for k, v in FAN_MODE_MAP.items()} MAX_FAN_DURATION = 43200 # 15 hours is the max in the SDM API +MIN_TEMP = 10 +MAX_TEMP = 32 async def async_setup_sdm_entry( @@ -94,6 +96,9 @@ async def async_setup_sdm_entry( class ThermostatEntity(ClimateEntity): """A nest thermostat climate entity.""" + _attr_min_temp = MIN_TEMP + _attr_max_temp = MAX_TEMP + def __init__(self, device: Device) -> None: """Initialize ThermostatEntity.""" self._device = device From dd739e95d00e1e57fad3028628147415d9edb011 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 27 Apr 2022 21:59:41 -0700 Subject: [PATCH 014/151] Bumped version to 2022.5.0b1 --- homeassistant/const.py | 2 +- setup.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 941caad17ae..17b38e7a566 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -7,7 +7,7 @@ from .backports.enum import StrEnum MAJOR_VERSION: Final = 2022 MINOR_VERSION: Final = 5 -PATCH_VERSION: Final = "0b0" +PATCH_VERSION: Final = "0b1" __short_version__: Final = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__: Final = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER: Final[tuple[int, int, int]] = (3, 9, 0) diff --git a/setup.cfg b/setup.cfg index 2a512907a39..4775b35a195 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = homeassistant -version = 2022.5.0b0 +version = 2022.5.0b1 author = The Home Assistant Authors author_email = hello@home-assistant.io license = Apache-2.0 From 6d917973668e7a9c4164dc85b88129c2b2d4886e Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Thu, 28 Apr 2022 17:34:40 +0200 Subject: [PATCH 015/151] Manually update translations for 2022.5 (#71005) --- .../accuweather/translations/ca.json | 3 + .../accuweather/translations/de.json | 3 + .../accuweather/translations/el.json | 3 + .../accuweather/translations/en.json | 3 + .../accuweather/translations/et.json | 3 + .../accuweather/translations/fr.json | 5 +- .../accuweather/translations/hu.json | 5 +- .../accuweather/translations/id.json | 3 + .../accuweather/translations/it.json | 3 + .../accuweather/translations/ja.json | 3 + .../accuweather/translations/nl.json | 3 + .../accuweather/translations/no.json | 3 + .../accuweather/translations/pl.json | 3 + .../accuweather/translations/pt-BR.json | 3 + .../accuweather/translations/ru.json | 3 + .../accuweather/translations/tr.json | 3 + .../accuweather/translations/zh-Hant.json | 3 + .../components/adax/translations/hu.json | 4 +- .../components/adax/translations/nl.json | 2 +- .../components/aemet/translations/ca.json | 2 +- .../components/aemet/translations/de.json | 2 +- .../components/aemet/translations/en.json | 2 +- .../components/aemet/translations/et.json | 2 +- .../components/aemet/translations/fr.json | 2 +- .../components/aemet/translations/hu.json | 2 +- .../components/aemet/translations/id.json | 2 +- .../components/aemet/translations/it.json | 2 +- .../components/aemet/translations/nl.json | 2 +- .../components/aemet/translations/no.json | 2 +- .../components/aemet/translations/pl.json | 2 +- .../components/aemet/translations/pt-BR.json | 2 +- .../components/aemet/translations/ru.json | 2 +- .../components/aemet/translations/tr.json | 2 +- .../aemet/translations/zh-Hant.json | 2 +- .../components/agent_dvr/translations/hu.json | 2 +- .../components/airly/translations/ca.json | 2 +- .../components/airly/translations/de.json | 2 +- .../components/airly/translations/en.json | 2 +- .../components/airly/translations/et.json | 2 +- .../components/airly/translations/fr.json | 2 +- .../components/airly/translations/hu.json | 4 +- .../components/airly/translations/id.json | 2 +- .../components/airly/translations/it.json | 2 +- .../components/airly/translations/nl.json | 2 +- .../components/airly/translations/no.json | 2 +- .../components/airly/translations/pl.json | 2 +- .../components/airly/translations/pt-BR.json | 2 +- .../components/airly/translations/ru.json | 2 +- .../components/airly/translations/tr.json | 2 +- .../airly/translations/zh-Hant.json | 2 +- .../components/airnow/translations/ca.json | 2 +- .../components/airnow/translations/de.json | 2 +- .../components/airnow/translations/en.json | 2 +- .../components/airnow/translations/et.json | 2 +- .../components/airnow/translations/fr.json | 2 +- .../components/airnow/translations/hu.json | 2 +- .../components/airnow/translations/id.json | 2 +- .../components/airnow/translations/it.json | 2 +- .../components/airnow/translations/nl.json | 2 +- .../components/airnow/translations/no.json | 2 +- .../components/airnow/translations/pl.json | 2 +- .../components/airnow/translations/pt-BR.json | 2 +- .../components/airnow/translations/ru.json | 2 +- .../components/airnow/translations/tr.json | 2 +- .../airnow/translations/zh-Hant.json | 2 +- .../airvisual/translations/sensor.fr.json | 2 +- .../components/airzone/translations/ca.json | 3 +- .../components/airzone/translations/cs.json | 18 ++ .../components/airzone/translations/de.json | 3 +- .../components/airzone/translations/el.json | 3 +- .../components/airzone/translations/et.json | 3 +- .../components/airzone/translations/fr.json | 3 +- .../components/airzone/translations/hu.json | 3 +- .../components/airzone/translations/id.json | 3 +- .../components/airzone/translations/it.json | 3 +- .../components/airzone/translations/ja.json | 3 +- .../components/airzone/translations/nl.json | 3 +- .../components/airzone/translations/no.json | 3 +- .../components/airzone/translations/pl.json | 3 +- .../airzone/translations/pt-BR.json | 3 +- .../components/airzone/translations/ru.json | 3 +- .../components/airzone/translations/tr.json | 20 ++ .../airzone/translations/zh-Hant.json | 3 +- .../components/almond/translations/hu.json | 4 +- .../components/almond/translations/it.json | 2 +- .../components/ambee/translations/hu.json | 2 +- .../ambiclimate/translations/hu.json | 4 +- .../ambiclimate/translations/it.json | 4 +- .../ambient_station/translations/hu.json | 2 +- .../components/androidtv/translations/hu.json | 10 +- .../components/apple_tv/translations/bg.json | 1 + .../components/apple_tv/translations/ca.json | 1 + .../components/apple_tv/translations/de.json | 1 + .../components/apple_tv/translations/el.json | 1 + .../components/apple_tv/translations/en.json | 6 +- .../components/apple_tv/translations/et.json | 1 + .../components/apple_tv/translations/fr.json | 1 + .../components/apple_tv/translations/he.json | 1 + .../components/apple_tv/translations/hu.json | 13 +- .../components/apple_tv/translations/id.json | 1 + .../components/apple_tv/translations/it.json | 1 + .../components/apple_tv/translations/ja.json | 1 + .../components/apple_tv/translations/nl.json | 1 + .../components/apple_tv/translations/no.json | 1 + .../components/apple_tv/translations/pl.json | 1 + .../apple_tv/translations/pt-BR.json | 1 + .../components/apple_tv/translations/ru.json | 1 + .../components/apple_tv/translations/tr.json | 1 + .../apple_tv/translations/zh-Hant.json | 1 + .../components/arcam_fmj/translations/hu.json | 2 +- .../components/arcam_fmj/translations/it.json | 4 +- .../components/asuswrt/translations/ca.json | 2 +- .../components/asuswrt/translations/de.json | 2 +- .../components/asuswrt/translations/et.json | 2 +- .../components/asuswrt/translations/fr.json | 2 +- .../components/asuswrt/translations/he.json | 2 +- .../components/asuswrt/translations/hu.json | 4 +- .../components/asuswrt/translations/id.json | 2 +- .../components/asuswrt/translations/it.json | 4 +- .../components/asuswrt/translations/nl.json | 2 +- .../components/asuswrt/translations/no.json | 2 +- .../components/asuswrt/translations/pl.json | 2 +- .../asuswrt/translations/pt-BR.json | 2 +- .../components/asuswrt/translations/ru.json | 2 +- .../components/asuswrt/translations/tr.json | 2 +- .../asuswrt/translations/zh-Hant.json | 2 +- .../components/aurora/translations/hu.json | 4 +- .../components/auth/translations/fr.json | 4 +- .../components/axis/translations/hu.json | 2 +- .../azure_devops/translations/it.json | 4 +- .../azure_event_hub/translations/de.json | 2 +- .../binary_sensor/translations/cs.json | 4 + .../binary_sensor/translations/he.json | 8 +- .../binary_sensor/translations/pt-BR.json | 2 +- .../binary_sensor/translations/zh-Hant.json | 2 +- .../components/blebox/translations/it.json | 2 +- .../components/braviatv/translations/ca.json | 2 +- .../components/braviatv/translations/de.json | 2 +- .../components/braviatv/translations/en.json | 2 +- .../components/braviatv/translations/et.json | 2 +- .../components/braviatv/translations/fr.json | 2 +- .../components/braviatv/translations/hu.json | 2 +- .../components/braviatv/translations/id.json | 2 +- .../components/braviatv/translations/it.json | 2 +- .../components/braviatv/translations/nl.json | 2 +- .../components/braviatv/translations/no.json | 2 +- .../components/braviatv/translations/pl.json | 2 +- .../braviatv/translations/pt-BR.json | 2 +- .../components/braviatv/translations/ru.json | 2 +- .../components/braviatv/translations/tr.json | 2 +- .../braviatv/translations/zh-Hant.json | 2 +- .../components/broadlink/translations/hu.json | 4 +- .../components/brother/translations/ca.json | 5 +- .../components/brother/translations/da.json | 3 +- .../components/brother/translations/de.json | 5 +- .../components/brother/translations/el.json | 3 +- .../components/brother/translations/en.json | 5 +- .../brother/translations/es-419.json | 3 +- .../components/brother/translations/es.json | 3 +- .../components/brother/translations/et.json | 5 +- .../components/brother/translations/fr.json | 5 +- .../components/brother/translations/hu.json | 5 +- .../components/brother/translations/id.json | 5 +- .../components/brother/translations/it.json | 5 +- .../components/brother/translations/ja.json | 3 +- .../components/brother/translations/ko.json | 3 +- .../components/brother/translations/lb.json | 3 +- .../components/brother/translations/nl.json | 5 +- .../components/brother/translations/no.json | 5 +- .../components/brother/translations/pl.json | 5 +- .../brother/translations/pt-BR.json | 5 +- .../components/brother/translations/ru.json | 5 +- .../components/brother/translations/sl.json | 3 +- .../components/brother/translations/sv.json | 3 +- .../components/brother/translations/tr.json | 5 +- .../components/brother/translations/uk.json | 3 +- .../brother/translations/zh-Hans.json | 3 - .../brother/translations/zh-Hant.json | 3 +- .../components/bsblan/translations/hu.json | 2 +- .../components/cast/translations/cs.json | 32 +++ .../components/climacell/translations/ca.json | 2 +- .../components/climacell/translations/de.json | 2 +- .../components/climacell/translations/en.json | 23 +- .../components/climacell/translations/fr.json | 4 +- .../components/climacell/translations/hu.json | 6 +- .../components/climacell/translations/pl.json | 2 +- .../climacell/translations/sensor.fr.json | 2 +- .../climacell/translations/sensor.hu.json | 2 +- .../components/climate/translations/et.json | 4 +- .../cloudflare/translations/he.json | 3 +- .../components/coinbase/translations/ca.json | 3 +- .../components/coinbase/translations/de.json | 3 +- .../components/coinbase/translations/el.json | 3 +- .../components/coinbase/translations/en.json | 6 +- .../components/coinbase/translations/et.json | 3 +- .../components/coinbase/translations/fr.json | 3 +- .../components/coinbase/translations/hu.json | 3 +- .../components/coinbase/translations/id.json | 3 +- .../components/coinbase/translations/it.json | 3 +- .../components/coinbase/translations/ja.json | 3 +- .../components/coinbase/translations/nl.json | 3 +- .../components/coinbase/translations/no.json | 3 +- .../components/coinbase/translations/pl.json | 3 +- .../coinbase/translations/pt-BR.json | 3 +- .../components/coinbase/translations/ru.json | 3 +- .../components/coinbase/translations/tr.json | 3 +- .../coinbase/translations/zh-Hant.json | 3 +- .../coronavirus/translations/hu.json | 2 +- .../components/cover/translations/he.json | 4 +- .../components/cpuspeed/translations/bg.json | 1 - .../components/cpuspeed/translations/ca.json | 1 - .../components/cpuspeed/translations/de.json | 1 - .../components/cpuspeed/translations/el.json | 1 - .../components/cpuspeed/translations/en.json | 1 - .../components/cpuspeed/translations/es.json | 1 - .../components/cpuspeed/translations/et.json | 1 - .../components/cpuspeed/translations/fr.json | 1 - .../components/cpuspeed/translations/he.json | 7 +- .../components/cpuspeed/translations/hu.json | 1 - .../components/cpuspeed/translations/id.json | 1 - .../components/cpuspeed/translations/it.json | 1 - .../components/cpuspeed/translations/ja.json | 1 - .../components/cpuspeed/translations/nl.json | 1 - .../components/cpuspeed/translations/no.json | 1 - .../components/cpuspeed/translations/pl.json | 1 - .../cpuspeed/translations/pt-BR.json | 1 - .../components/cpuspeed/translations/ru.json | 1 - .../components/cpuspeed/translations/tr.json | 1 - .../cpuspeed/translations/zh-Hans.json | 1 - .../cpuspeed/translations/zh-Hant.json | 1 - .../crownstone/translations/ca.json | 21 -- .../crownstone/translations/cs.json | 10 - .../crownstone/translations/de.json | 21 -- .../crownstone/translations/el.json | 21 -- .../crownstone/translations/en.json | 21 -- .../crownstone/translations/es-419.json | 3 - .../crownstone/translations/es.json | 21 -- .../crownstone/translations/et.json | 21 -- .../crownstone/translations/fr.json | 21 -- .../crownstone/translations/he.json | 10 - .../crownstone/translations/hu.json | 21 -- .../crownstone/translations/id.json | 21 -- .../crownstone/translations/it.json | 21 -- .../crownstone/translations/ja.json | 21 -- .../crownstone/translations/ko.json | 16 -- .../crownstone/translations/nl.json | 21 -- .../crownstone/translations/no.json | 21 -- .../crownstone/translations/pl.json | 21 -- .../crownstone/translations/pt-BR.json | 21 -- .../crownstone/translations/ru.json | 21 -- .../crownstone/translations/tr.json | 21 -- .../crownstone/translations/zh-Hant.json | 21 -- .../components/deconz/translations/he.json | 2 +- .../components/deconz/translations/hu.json | 2 +- .../components/deluge/translations/bg.json | 21 ++ .../components/deluge/translations/ca.json | 23 ++ .../components/deluge/translations/cs.json | 21 ++ .../components/deluge/translations/de.json | 23 ++ .../components/deluge/translations/el.json | 23 ++ .../components/deluge/translations/en.json | 26 +-- .../components/deluge/translations/et.json | 23 ++ .../components/deluge/translations/fr.json | 23 ++ .../components/deluge/translations/he.json | 21 ++ .../components/deluge/translations/hu.json | 23 ++ .../components/deluge/translations/id.json | 23 ++ .../components/deluge/translations/it.json | 23 ++ .../components/deluge/translations/ja.json | 23 ++ .../components/deluge/translations/nl.json | 23 ++ .../components/deluge/translations/no.json | 23 ++ .../components/deluge/translations/pl.json | 23 ++ .../components/deluge/translations/pt-BR.json | 23 ++ .../components/deluge/translations/ru.json | 23 ++ .../components/deluge/translations/tr.json | 23 ++ .../deluge/translations/zh-Hant.json | 23 ++ .../components/demo/translations/it.json | 4 +- .../components/denonavr/translations/bg.json | 3 + .../components/denonavr/translations/ca.json | 3 + .../components/denonavr/translations/de.json | 3 + .../components/denonavr/translations/el.json | 3 + .../components/denonavr/translations/en.json | 3 + .../components/denonavr/translations/et.json | 3 + .../components/denonavr/translations/fr.json | 3 + .../components/denonavr/translations/hu.json | 7 +- .../components/denonavr/translations/id.json | 3 + .../components/denonavr/translations/it.json | 3 + .../components/denonavr/translations/ja.json | 3 + .../components/denonavr/translations/nl.json | 3 + .../components/denonavr/translations/no.json | 3 + .../components/denonavr/translations/pl.json | 3 + .../denonavr/translations/pt-BR.json | 3 + .../components/denonavr/translations/ru.json | 3 + .../components/denonavr/translations/tr.json | 3 + .../denonavr/translations/zh-Hant.json | 3 + .../derivative/translations/bg.json | 25 +++ .../derivative/translations/ca.json | 59 ++++++ .../derivative/translations/cs.json | 11 + .../derivative/translations/de.json | 59 ++++++ .../derivative/translations/el.json | 59 ++++++ .../derivative/translations/en.json | 16 ++ .../derivative/translations/et.json | 59 ++++++ .../derivative/translations/fr.json | 59 ++++++ .../derivative/translations/he.json | 11 + .../derivative/translations/hu.json | 59 ++++++ .../derivative/translations/id.json | 59 ++++++ .../derivative/translations/it.json | 59 ++++++ .../derivative/translations/ja.json | 59 ++++++ .../derivative/translations/nl.json | 59 ++++++ .../derivative/translations/no.json | 59 ++++++ .../derivative/translations/pl.json | 59 ++++++ .../derivative/translations/pt-BR.json | 59 ++++++ .../derivative/translations/ru.json | 53 +++++ .../derivative/translations/sv.json | 12 ++ .../derivative/translations/tr.json | 59 ++++++ .../derivative/translations/zh-Hans.json | 59 ++++++ .../derivative/translations/zh-Hant.json | 59 ++++++ .../components/directv/translations/it.json | 4 +- .../components/discord/translations/bg.json | 13 ++ .../components/discord/translations/ca.json | 27 +++ .../components/discord/translations/de.json | 27 +++ .../components/discord/translations/el.json | 27 +++ .../components/discord/translations/en.json | 4 +- .../components/discord/translations/et.json | 27 +++ .../components/discord/translations/fr.json | 27 +++ .../components/discord/translations/he.json | 25 +++ .../components/discord/translations/hu.json | 27 +++ .../components/discord/translations/id.json | 27 +++ .../components/discord/translations/it.json | 27 +++ .../components/discord/translations/ja.json | 27 +++ .../components/discord/translations/nl.json | 27 +++ .../components/discord/translations/no.json | 27 +++ .../components/discord/translations/pl.json | 27 +++ .../discord/translations/pt-BR.json | 27 +++ .../components/discord/translations/ru.json | 27 +++ .../components/discord/translations/tr.json | 27 +++ .../discord/translations/zh-Hant.json | 27 +++ .../components/dlna_dmr/translations/hu.json | 4 +- .../components/dlna_dms/translations/cs.json | 20 ++ .../components/dlna_dms/translations/hu.json | 2 +- .../components/doorbird/translations/ca.json | 3 + .../components/doorbird/translations/de.json | 3 + .../components/doorbird/translations/el.json | 3 + .../components/doorbird/translations/en.json | 3 + .../components/doorbird/translations/et.json | 3 + .../components/doorbird/translations/fr.json | 3 + .../components/doorbird/translations/hu.json | 3 + .../components/doorbird/translations/id.json | 3 + .../components/doorbird/translations/it.json | 3 + .../components/doorbird/translations/ja.json | 3 + .../components/doorbird/translations/nl.json | 3 + .../components/doorbird/translations/no.json | 3 + .../components/doorbird/translations/pl.json | 3 + .../doorbird/translations/pt-BR.json | 3 + .../components/doorbird/translations/ru.json | 3 + .../components/doorbird/translations/tr.json | 3 + .../doorbird/translations/zh-Hant.json | 3 + .../components/dsmr/translations/it.json | 8 +- .../components/dunehd/translations/ca.json | 2 +- .../components/dunehd/translations/de.json | 2 +- .../components/dunehd/translations/en.json | 2 +- .../components/dunehd/translations/et.json | 2 +- .../components/dunehd/translations/fr.json | 2 +- .../components/dunehd/translations/hu.json | 2 +- .../components/dunehd/translations/id.json | 2 +- .../components/dunehd/translations/it.json | 2 +- .../components/dunehd/translations/nl.json | 2 +- .../components/dunehd/translations/no.json | 2 +- .../components/dunehd/translations/pl.json | 2 +- .../components/dunehd/translations/pt-BR.json | 2 +- .../components/dunehd/translations/ru.json | 2 +- .../components/dunehd/translations/tr.json | 2 +- .../dunehd/translations/zh-Hant.json | 2 +- .../components/ecobee/translations/hu.json | 2 +- .../components/elkm1/translations/bg.json | 4 +- .../components/elkm1/translations/ca.json | 12 +- .../components/elkm1/translations/cs.json | 7 - .../components/elkm1/translations/de.json | 12 +- .../components/elkm1/translations/el.json | 12 +- .../components/elkm1/translations/es-419.json | 8 - .../components/elkm1/translations/es.json | 8 +- .../components/elkm1/translations/et.json | 12 +- .../components/elkm1/translations/fr.json | 12 +- .../components/elkm1/translations/he.json | 9 +- .../components/elkm1/translations/hu.json | 14 +- .../components/elkm1/translations/id.json | 12 +- .../components/elkm1/translations/it.json | 12 +- .../components/elkm1/translations/ja.json | 12 +- .../components/elkm1/translations/ko.json | 8 - .../components/elkm1/translations/lb.json | 8 - .../components/elkm1/translations/nl.json | 12 +- .../components/elkm1/translations/no.json | 12 +- .../components/elkm1/translations/pl.json | 12 +- .../components/elkm1/translations/pt-BR.json | 12 +- .../components/elkm1/translations/pt.json | 9 - .../components/elkm1/translations/ru.json | 12 +- .../components/elkm1/translations/sl.json | 8 - .../components/elkm1/translations/sv.json | 7 - .../components/elkm1/translations/tr.json | 12 +- .../components/elkm1/translations/uk.json | 8 - .../elkm1/translations/zh-Hant.json | 12 +- .../emulated_roku/translations/hu.json | 2 +- .../enphase_envoy/translations/en.json | 3 +- .../environment_canada/translations/de.json | 2 +- .../components/epson/translations/hu.json | 2 +- .../components/esphome/translations/cs.json | 2 +- .../components/esphome/translations/hu.json | 2 +- .../evil_genius_labs/translations/cs.json | 1 + .../components/ezviz/translations/it.json | 2 +- .../components/fan/translations/hu.json | 1 + .../components/fibaro/translations/bg.json | 21 ++ .../components/fibaro/translations/ca.json | 22 ++ .../components/fibaro/translations/de.json | 22 ++ .../components/fibaro/translations/el.json | 22 ++ .../components/fibaro/translations/en.json | 2 +- .../components/fibaro/translations/et.json | 22 ++ .../components/fibaro/translations/fr.json | 22 ++ .../components/fibaro/translations/he.json | 20 ++ .../components/fibaro/translations/hu.json | 22 ++ .../components/fibaro/translations/id.json | 22 ++ .../components/fibaro/translations/it.json | 22 ++ .../components/fibaro/translations/ja.json | 22 ++ .../components/fibaro/translations/nl.json | 22 ++ .../components/fibaro/translations/no.json | 22 ++ .../components/fibaro/translations/pl.json | 22 ++ .../components/fibaro/translations/pt-BR.json | 22 ++ .../components/fibaro/translations/ru.json | 22 ++ .../components/fibaro/translations/tr.json | 22 ++ .../fibaro/translations/zh-Hant.json | 22 ++ .../components/filesize/translations/bg.json | 19 ++ .../components/filesize/translations/ca.json | 19 ++ .../components/filesize/translations/de.json | 19 ++ .../components/filesize/translations/el.json | 19 ++ .../components/filesize/translations/en.json | 28 +-- .../components/filesize/translations/et.json | 19 ++ .../components/filesize/translations/fr.json | 19 ++ .../components/filesize/translations/he.json | 7 + .../components/filesize/translations/hu.json | 19 ++ .../components/filesize/translations/id.json | 19 ++ .../components/filesize/translations/it.json | 19 ++ .../components/filesize/translations/ja.json | 19 ++ .../components/filesize/translations/nl.json | 19 ++ .../components/filesize/translations/no.json | 19 ++ .../components/filesize/translations/pl.json | 19 ++ .../filesize/translations/pt-BR.json | 19 ++ .../components/filesize/translations/ru.json | 19 ++ .../components/filesize/translations/tr.json | 19 ++ .../filesize/translations/zh-Hant.json | 19 ++ .../components/fivem/translations/hu.json | 2 +- .../components/flux_led/translations/hu.json | 2 +- .../forecast_solar/translations/ca.json | 1 + .../forecast_solar/translations/de.json | 1 + .../forecast_solar/translations/el.json | 1 + .../forecast_solar/translations/en.json | 2 +- .../forecast_solar/translations/et.json | 1 + .../forecast_solar/translations/fr.json | 1 + .../forecast_solar/translations/hu.json | 3 +- .../forecast_solar/translations/id.json | 1 + .../forecast_solar/translations/it.json | 1 + .../forecast_solar/translations/ja.json | 1 + .../forecast_solar/translations/nl.json | 1 + .../forecast_solar/translations/no.json | 1 + .../forecast_solar/translations/pl.json | 1 + .../forecast_solar/translations/pt-BR.json | 1 + .../forecast_solar/translations/ru.json | 1 + .../forecast_solar/translations/tr.json | 1 + .../forecast_solar/translations/zh-Hant.json | 1 + .../components/foscam/translations/ca.json | 3 +- .../components/foscam/translations/cs.json | 3 +- .../components/foscam/translations/de.json | 3 +- .../components/foscam/translations/el.json | 3 +- .../components/foscam/translations/en.json | 3 +- .../foscam/translations/es-419.json | 3 +- .../components/foscam/translations/es.json | 3 +- .../components/foscam/translations/et.json | 3 +- .../components/foscam/translations/fr.json | 3 +- .../components/foscam/translations/hu.json | 3 +- .../components/foscam/translations/id.json | 3 +- .../components/foscam/translations/it.json | 3 +- .../components/foscam/translations/ja.json | 3 +- .../components/foscam/translations/ko.json | 3 +- .../components/foscam/translations/lb.json | 3 +- .../components/foscam/translations/nl.json | 3 +- .../components/foscam/translations/no.json | 3 +- .../components/foscam/translations/pl.json | 3 +- .../components/foscam/translations/pt-BR.json | 3 +- .../components/foscam/translations/ru.json | 3 +- .../components/foscam/translations/tr.json | 3 +- .../foscam/translations/zh-Hant.json | 3 +- .../components/freebox/translations/hu.json | 2 +- .../components/freebox/translations/it.json | 2 +- .../components/fritz/translations/ca.json | 1 + .../components/fritz/translations/de.json | 1 + .../components/fritz/translations/el.json | 1 + .../components/fritz/translations/en.json | 11 + .../components/fritz/translations/et.json | 1 + .../components/fritz/translations/fr.json | 1 + .../components/fritz/translations/hu.json | 1 + .../components/fritz/translations/id.json | 1 + .../components/fritz/translations/it.json | 1 + .../components/fritz/translations/ja.json | 1 + .../components/fritz/translations/nl.json | 1 + .../components/fritz/translations/no.json | 1 + .../components/fritz/translations/pl.json | 1 + .../components/fritz/translations/pt-BR.json | 1 + .../components/fritz/translations/ru.json | 1 + .../components/fritz/translations/tr.json | 1 + .../fritz/translations/zh-Hant.json | 1 + .../components/fritzbox/translations/ca.json | 1 + .../components/fritzbox/translations/de.json | 1 + .../components/fritzbox/translations/el.json | 1 + .../components/fritzbox/translations/et.json | 1 + .../components/fritzbox/translations/fr.json | 1 + .../components/fritzbox/translations/hu.json | 3 +- .../components/fritzbox/translations/id.json | 1 + .../components/fritzbox/translations/it.json | 1 + .../components/fritzbox/translations/ja.json | 1 + .../components/fritzbox/translations/nl.json | 1 + .../components/fritzbox/translations/no.json | 1 + .../components/fritzbox/translations/pl.json | 1 + .../fritzbox/translations/pt-BR.json | 1 + .../components/fritzbox/translations/ru.json | 1 + .../components/fritzbox/translations/tr.json | 1 + .../fritzbox/translations/zh-Hant.json | 1 + .../components/generic/translations/bg.json | 53 +++++ .../components/generic/translations/ca.json | 88 ++++++++ .../components/generic/translations/cs.json | 33 +++ .../components/generic/translations/de.json | 88 ++++++++ .../components/generic/translations/el.json | 88 ++++++++ .../components/generic/translations/en.json | 2 + .../components/generic/translations/et.json | 88 ++++++++ .../components/generic/translations/fr.json | 88 ++++++++ .../components/generic/translations/he.json | 88 ++++++++ .../components/generic/translations/hu.json | 88 ++++++++ .../components/generic/translations/id.json | 88 ++++++++ .../components/generic/translations/it.json | 88 ++++++++ .../components/generic/translations/ja.json | 88 ++++++++ .../components/generic/translations/nl.json | 88 ++++++++ .../components/generic/translations/no.json | 88 ++++++++ .../components/generic/translations/pl.json | 88 ++++++++ .../generic/translations/pt-BR.json | 88 ++++++++ .../components/generic/translations/ru.json | 88 ++++++++ .../components/generic/translations/tr.json | 88 ++++++++ .../generic/translations/zh-Hant.json | 88 ++++++++ .../components/gios/translations/hu.json | 2 +- .../components/glances/translations/hu.json | 2 +- .../components/goalzero/translations/ca.json | 2 +- .../components/goalzero/translations/de.json | 2 +- .../components/goalzero/translations/en.json | 2 +- .../components/goalzero/translations/et.json | 2 +- .../components/goalzero/translations/fr.json | 2 +- .../components/goalzero/translations/hu.json | 4 +- .../components/goalzero/translations/id.json | 2 +- .../components/goalzero/translations/it.json | 2 +- .../components/goalzero/translations/nl.json | 2 +- .../components/goalzero/translations/no.json | 2 +- .../components/goalzero/translations/pl.json | 2 +- .../goalzero/translations/pt-BR.json | 2 +- .../components/goalzero/translations/ru.json | 2 +- .../components/goalzero/translations/tr.json | 2 +- .../goalzero/translations/zh-Hant.json | 2 +- .../components/goodwe/translations/hu.json | 2 +- .../components/google/translations/bg.json | 20 ++ .../components/google/translations/ca.json | 31 +++ .../components/google/translations/cs.json | 23 ++ .../components/google/translations/de.json | 31 +++ .../components/google/translations/el.json | 31 +++ .../components/google/translations/es.json | 12 ++ .../components/google/translations/et.json | 31 +++ .../components/google/translations/fr.json | 31 +++ .../components/google/translations/he.json | 27 +++ .../components/google/translations/hu.json | 31 +++ .../components/google/translations/id.json | 31 +++ .../components/google/translations/it.json | 31 +++ .../components/google/translations/ja.json | 31 +++ .../components/google/translations/nl.json | 31 +++ .../components/google/translations/no.json | 31 +++ .../components/google/translations/pl.json | 31 +++ .../components/google/translations/pt-BR.json | 31 +++ .../components/google/translations/ru.json | 31 +++ .../components/google/translations/tr.json | 31 +++ .../google/translations/zh-Hant.json | 31 +++ .../google_travel_time/translations/hu.json | 2 +- .../components/group/translations/bg.json | 109 +++++++++- .../components/group/translations/ca.json | 105 +++++++++- .../components/group/translations/cs.json | 196 ++++++++++++++++++ .../components/group/translations/de.json | 105 +++++++++- .../components/group/translations/el.json | 95 ++++++++- .../components/group/translations/en.json | 77 ++++++- .../components/group/translations/et.json | 95 ++++++++- .../components/group/translations/fr.json | 105 +++++++++- .../components/group/translations/he.json | 93 ++++++++- .../components/group/translations/hu.json | 115 ++++++++-- .../components/group/translations/id.json | 105 +++++++++- .../components/group/translations/it.json | 105 +++++++++- .../components/group/translations/ja.json | 93 ++++++++- .../components/group/translations/nl.json | 105 +++++++++- .../components/group/translations/no.json | 105 +++++++++- .../components/group/translations/pl.json | 107 +++++++++- .../components/group/translations/pt-BR.json | 105 +++++++++- .../components/group/translations/ru.json | 105 +++++++++- .../components/group/translations/tr.json | 158 ++++++++++++-- .../group/translations/zh-Hant.json | 93 ++++++++- .../growatt_server/translations/hu.json | 2 +- .../components/guardian/translations/hu.json | 2 +- .../components/hangouts/translations/ca.json | 2 +- .../components/hangouts/translations/de.json | 2 +- .../components/hangouts/translations/et.json | 2 +- .../components/hangouts/translations/fr.json | 6 +- .../components/hangouts/translations/he.json | 2 +- .../components/hangouts/translations/hu.json | 2 +- .../components/hangouts/translations/id.json | 2 +- .../components/hangouts/translations/it.json | 2 +- .../components/hangouts/translations/nl.json | 2 +- .../components/hangouts/translations/no.json | 2 +- .../components/hangouts/translations/pl.json | 2 +- .../hangouts/translations/pt-BR.json | 2 +- .../components/hangouts/translations/ru.json | 2 +- .../components/hangouts/translations/tr.json | 2 +- .../hangouts/translations/zh-Hant.json | 2 +- .../components/hassio/translations/ja.json | 2 +- .../home_connect/translations/hu.json | 4 +- .../home_connect/translations/it.json | 2 +- .../home_plus_control/translations/hu.json | 6 +- .../home_plus_control/translations/it.json | 2 +- .../components/homekit/translations/bg.json | 6 - .../components/homekit/translations/ca.json | 9 - .../components/homekit/translations/cs.json | 9 - .../components/homekit/translations/de.json | 9 - .../components/homekit/translations/el.json | 9 - .../components/homekit/translations/en.json | 9 - .../homekit/translations/es-419.json | 3 - .../components/homekit/translations/es.json | 9 - .../components/homekit/translations/et.json | 9 - .../components/homekit/translations/fr.json | 9 - .../components/homekit/translations/he.json | 9 +- .../components/homekit/translations/hu.json | 11 +- .../components/homekit/translations/id.json | 9 - .../components/homekit/translations/it.json | 9 - .../components/homekit/translations/ja.json | 9 - .../components/homekit/translations/ka.json | 8 - .../components/homekit/translations/ko.json | 9 - .../components/homekit/translations/lb.json | 9 - .../components/homekit/translations/nl.json | 9 - .../components/homekit/translations/no.json | 9 - .../components/homekit/translations/pl.json | 9 - .../homekit/translations/pt-BR.json | 11 +- .../components/homekit/translations/pt.json | 8 - .../components/homekit/translations/ru.json | 9 - .../components/homekit/translations/sl.json | 10 - .../components/homekit/translations/sv.json | 3 - .../components/homekit/translations/tr.json | 9 - .../components/homekit/translations/uk.json | 9 - .../homekit/translations/zh-Hans.json | 9 - .../homekit/translations/zh-Hant.json | 9 - .../homekit_controller/translations/hu.json | 2 +- .../homematicip_cloud/translations/fr.json | 2 +- .../homematicip_cloud/translations/hu.json | 2 +- .../homematicip_cloud/translations/it.json | 2 +- .../components/honeywell/translations/ca.json | 14 +- .../components/honeywell/translations/de.json | 14 +- .../components/honeywell/translations/el.json | 14 +- .../components/honeywell/translations/en.json | 6 +- .../components/honeywell/translations/es.json | 3 +- .../components/honeywell/translations/et.json | 14 +- .../components/honeywell/translations/fr.json | 14 +- .../components/honeywell/translations/hu.json | 14 +- .../components/honeywell/translations/id.json | 14 +- .../components/honeywell/translations/it.json | 14 +- .../components/honeywell/translations/ja.json | 14 +- .../components/honeywell/translations/nl.json | 14 +- .../components/honeywell/translations/no.json | 14 +- .../components/honeywell/translations/pl.json | 14 +- .../honeywell/translations/pt-BR.json | 14 +- .../components/honeywell/translations/ru.json | 14 +- .../components/honeywell/translations/tr.json | 14 +- .../honeywell/translations/zh-Hant.json | 14 +- .../huawei_lte/translations/hu.json | 2 +- .../components/hue/translations/ca.json | 1 + .../components/hue/translations/de.json | 1 + .../components/hue/translations/el.json | 1 + .../components/hue/translations/en.json | 1 + .../components/hue/translations/et.json | 1 + .../components/hue/translations/fr.json | 1 + .../components/hue/translations/hu.json | 3 +- .../components/hue/translations/id.json | 1 + .../components/hue/translations/it.json | 1 + .../components/hue/translations/nl.json | 1 + .../components/hue/translations/no.json | 1 + .../components/hue/translations/pl.json | 1 + .../components/hue/translations/pt-BR.json | 1 + .../components/hue/translations/ru.json | 1 + .../components/hue/translations/tr.json | 1 + .../components/hue/translations/zh-Hant.json | 1 + .../humidifier/translations/hu.json | 1 + .../components/hyperion/translations/hu.json | 4 +- .../components/ifttt/translations/ja.json | 2 +- .../components/insteon/translations/ca.json | 5 + .../components/insteon/translations/de.json | 5 + .../components/insteon/translations/el.json | 5 + .../components/insteon/translations/en.json | 1 + .../components/insteon/translations/et.json | 5 + .../components/insteon/translations/fr.json | 5 + .../components/insteon/translations/he.json | 1 + .../components/insteon/translations/hu.json | 5 + .../components/insteon/translations/id.json | 5 + .../components/insteon/translations/it.json | 7 +- .../components/insteon/translations/ja.json | 6 +- .../components/insteon/translations/nl.json | 5 + .../components/insteon/translations/no.json | 5 + .../components/insteon/translations/pl.json | 5 + .../insteon/translations/pt-BR.json | 5 + .../components/insteon/translations/ru.json | 5 + .../components/insteon/translations/tr.json | 5 + .../insteon/translations/zh-Hant.json | 5 + .../translations/bg.json} | 2 +- .../integration/translations/ca.json | 42 ++++ .../integration/translations/cs.json | 41 ++++ .../integration/translations/de.json | 42 ++++ .../integration/translations/el.json | 42 ++++ .../integration/translations/en.json | 6 + .../integration/translations/et.json | 42 ++++ .../integration/translations/fr.json | 42 ++++ .../integration/translations/he.json | 40 ++++ .../integration/translations/hu.json | 42 ++++ .../integration/translations/id.json | 42 ++++ .../integration/translations/it.json | 42 ++++ .../integration/translations/ja.json | 42 ++++ .../integration/translations/nl.json | 42 ++++ .../integration/translations/no.json | 42 ++++ .../integration/translations/pl.json | 42 ++++ .../integration/translations/pt-BR.json | 42 ++++ .../integration/translations/ru.json | 42 ++++ .../integration/translations/tr.json | 42 ++++ .../integration/translations/zh-Hans.json | 42 ++++ .../integration/translations/zh-Hant.json | 42 ++++ .../intellifire/translations/bg.json | 15 ++ .../intellifire/translations/ca.json | 29 ++- .../intellifire/translations/cs.json | 11 + .../intellifire/translations/de.json | 29 ++- .../intellifire/translations/el.json | 29 ++- .../intellifire/translations/en.json | 16 +- .../intellifire/translations/et.json | 29 ++- .../intellifire/translations/fr.json | 29 ++- .../intellifire/translations/he.json | 19 +- .../intellifire/translations/hu.json | 29 ++- .../intellifire/translations/id.json | 29 ++- .../intellifire/translations/it.json | 29 ++- .../intellifire/translations/ja.json | 29 ++- .../intellifire/translations/nl.json | 29 ++- .../intellifire/translations/no.json | 29 ++- .../intellifire/translations/pl.json | 29 ++- .../intellifire/translations/pt-BR.json | 29 ++- .../intellifire/translations/ru.json | 29 ++- .../intellifire/translations/tr.json | 29 ++- .../intellifire/translations/zh-Hant.json | 29 ++- .../components/iotawatt/translations/hu.json | 2 +- .../components/iotawatt/translations/id.json | 2 +- .../components/ipma/translations/hu.json | 2 +- .../components/ipp/translations/it.json | 2 +- .../components/ipp/translations/pl.json | 2 +- .../components/iss/translations/hu.json | 2 +- .../components/iss/translations/pt-BR.json | 4 +- .../kaleidescape/translations/cs.json | 13 ++ .../kaleidescape/translations/hu.json | 2 +- .../components/knx/translations/bg.json | 18 +- .../components/knx/translations/ca.json | 78 ++++++- .../components/knx/translations/de.json | 82 ++++++-- .../components/knx/translations/el.json | 60 +++++- .../components/knx/translations/en.json | 6 +- .../components/knx/translations/et.json | 78 ++++++- .../components/knx/translations/fr.json | 78 ++++++- .../components/knx/translations/hu.json | 78 ++++++- .../components/knx/translations/id.json | 78 ++++++- .../components/knx/translations/it.json | 78 ++++++- .../components/knx/translations/ja.json | 58 +++++- .../components/knx/translations/nl.json | 78 ++++++- .../components/knx/translations/no.json | 78 ++++++- .../components/knx/translations/pl.json | 78 ++++++- .../components/knx/translations/pt-BR.json | 78 ++++++- .../components/knx/translations/ru.json | 78 ++++++- .../components/knx/translations/tr.json | 78 ++++++- .../components/knx/translations/zh-Hant.json | 78 ++++++- .../components/konnected/translations/fr.json | 2 +- .../components/konnected/translations/hu.json | 8 +- .../components/konnected/translations/it.json | 6 +- .../konnected/translations/pt-BR.json | 2 +- .../kostal_plenticore/translations/ca.json | 3 +- .../kostal_plenticore/translations/de.json | 3 +- .../kostal_plenticore/translations/el.json | 3 +- .../kostal_plenticore/translations/en.json | 3 +- .../kostal_plenticore/translations/es.json | 3 +- .../kostal_plenticore/translations/et.json | 3 +- .../kostal_plenticore/translations/fr.json | 3 +- .../kostal_plenticore/translations/hu.json | 3 +- .../kostal_plenticore/translations/id.json | 3 +- .../kostal_plenticore/translations/it.json | 3 +- .../kostal_plenticore/translations/ja.json | 3 +- .../kostal_plenticore/translations/nl.json | 3 +- .../kostal_plenticore/translations/no.json | 3 +- .../kostal_plenticore/translations/pl.json | 3 +- .../kostal_plenticore/translations/pt-BR.json | 3 +- .../kostal_plenticore/translations/ru.json | 3 +- .../kostal_plenticore/translations/tr.json | 3 +- .../translations/zh-Hant.json | 3 +- .../components/kraken/translations/it.json | 8 +- .../components/light/translations/hu.json | 1 + .../logi_circle/translations/hu.json | 4 +- .../logi_circle/translations/it.json | 2 +- .../components/lookin/translations/hu.json | 4 +- .../components/luftdaten/translations/hu.json | 2 +- .../luftdaten/translations/pt-BR.json | 2 +- .../lutron_caseta/translations/pl.json | 2 +- .../components/lyric/translations/hu.json | 2 +- .../components/lyric/translations/it.json | 2 +- .../components/mailgun/translations/ja.json | 2 +- .../components/mazda/translations/ca.json | 6 +- .../components/mazda/translations/de.json | 6 +- .../components/mazda/translations/el.json | 6 +- .../components/mazda/translations/en.json | 6 +- .../components/mazda/translations/es.json | 6 +- .../components/mazda/translations/et.json | 6 +- .../components/mazda/translations/fr.json | 6 +- .../components/mazda/translations/hu.json | 6 +- .../components/mazda/translations/id.json | 6 +- .../components/mazda/translations/it.json | 6 +- .../components/mazda/translations/ja.json | 6 +- .../components/mazda/translations/ko.json | 6 +- .../components/mazda/translations/nl.json | 6 +- .../components/mazda/translations/no.json | 6 +- .../components/mazda/translations/pl.json | 6 +- .../components/mazda/translations/pt-BR.json | 6 +- .../components/mazda/translations/ru.json | 6 +- .../components/mazda/translations/tr.json | 6 +- .../mazda/translations/zh-Hant.json | 6 +- .../components/meater/translations/bg.json | 17 ++ .../components/meater/translations/ca.json | 18 ++ .../components/meater/translations/cs.json | 16 ++ .../components/meater/translations/de.json | 18 ++ .../components/meater/translations/el.json | 18 ++ .../components/meater/translations/et.json | 18 ++ .../components/meater/translations/fr.json | 18 ++ .../components/meater/translations/he.json | 16 ++ .../components/meater/translations/hu.json | 18 ++ .../components/meater/translations/id.json | 18 ++ .../components/meater/translations/it.json | 18 ++ .../components/meater/translations/ja.json | 18 ++ .../components/meater/translations/nl.json | 18 ++ .../components/meater/translations/no.json | 18 ++ .../components/meater/translations/pl.json | 18 ++ .../components/meater/translations/pt-BR.json | 18 ++ .../components/meater/translations/ru.json | 18 ++ .../components/meater/translations/tr.json | 18 ++ .../meater/translations/zh-Hant.json | 18 ++ .../media_player/translations/de.json | 3 + .../media_player/translations/el.json | 3 + .../media_player/translations/et.json | 3 + .../media_player/translations/fr.json | 3 + .../media_player/translations/hu.json | 4 + .../media_player/translations/id.json | 3 + .../media_player/translations/it.json | 3 + .../media_player/translations/nl.json | 3 + .../media_player/translations/no.json | 3 + .../media_player/translations/pl.json | 3 + .../media_player/translations/pt-BR.json | 3 + .../media_player/translations/zh-Hant.json | 3 + .../components/met/translations/hu.json | 2 +- .../met_eireann/translations/hu.json | 2 +- .../meteo_france/translations/bg.json | 6 +- .../meteo_france/translations/ca.json | 8 +- .../meteo_france/translations/cs.json | 6 +- .../meteo_france/translations/da.json | 3 +- .../meteo_france/translations/de.json | 6 +- .../meteo_france/translations/el.json | 6 +- .../meteo_france/translations/en.json | 6 +- .../meteo_france/translations/es-419.json | 3 +- .../meteo_france/translations/es.json | 6 +- .../meteo_france/translations/et.json | 6 +- .../meteo_france/translations/fr.json | 6 +- .../meteo_france/translations/hu.json | 6 +- .../meteo_france/translations/id.json | 6 +- .../meteo_france/translations/it.json | 6 +- .../meteo_france/translations/ja.json | 6 +- .../meteo_france/translations/ko.json | 6 +- .../meteo_france/translations/lb.json | 6 +- .../meteo_france/translations/nl.json | 6 +- .../meteo_france/translations/no.json | 6 +- .../meteo_france/translations/pl.json | 6 +- .../meteo_france/translations/pt-BR.json | 6 +- .../meteo_france/translations/pt.json | 3 +- .../meteo_france/translations/ru.json | 6 +- .../meteo_france/translations/sl.json | 3 +- .../meteo_france/translations/sv.json | 3 +- .../meteo_france/translations/tr.json | 6 +- .../meteo_france/translations/uk.json | 6 +- .../meteo_france/translations/zh-Hant.json | 6 +- .../meteoclimatic/translations/bg.json | 5 - .../meteoclimatic/translations/ca.json | 5 +- .../meteoclimatic/translations/de.json | 5 +- .../meteoclimatic/translations/el.json | 5 +- .../meteoclimatic/translations/en.json | 5 +- .../meteoclimatic/translations/es.json | 4 +- .../meteoclimatic/translations/et.json | 5 +- .../meteoclimatic/translations/fr.json | 5 +- .../meteoclimatic/translations/gl.json | 9 - .../meteoclimatic/translations/hu.json | 5 +- .../meteoclimatic/translations/id.json | 5 +- .../meteoclimatic/translations/it.json | 5 +- .../meteoclimatic/translations/ja.json | 5 +- .../meteoclimatic/translations/nl.json | 5 +- .../meteoclimatic/translations/no.json | 5 +- .../meteoclimatic/translations/pl.json | 5 +- .../meteoclimatic/translations/pt-BR.json | 5 +- .../meteoclimatic/translations/pt.json | 9 - .../meteoclimatic/translations/ru.json | 5 +- .../meteoclimatic/translations/tr.json | 5 +- .../meteoclimatic/translations/zh-Hant.json | 5 +- .../components/mikrotik/translations/hu.json | 2 +- .../sk.json => min_max/translations/bg.json} | 2 +- .../components/min_max/translations/ca.json | 42 ++++ .../components/min_max/translations/cs.json | 34 +++ .../components/min_max/translations/de.json | 42 ++++ .../components/min_max/translations/el.json | 42 ++++ .../components/min_max/translations/en.json | 8 + .../components/min_max/translations/et.json | 42 ++++ .../components/min_max/translations/fr.json | 42 ++++ .../components/min_max/translations/he.json | 37 ++++ .../components/min_max/translations/hu.json | 42 ++++ .../components/min_max/translations/id.json | 42 ++++ .../components/min_max/translations/it.json | 42 ++++ .../components/min_max/translations/ja.json | 42 ++++ .../components/min_max/translations/nl.json | 42 ++++ .../components/min_max/translations/no.json | 42 ++++ .../components/min_max/translations/pl.json | 42 ++++ .../min_max/translations/pt-BR.json | 42 ++++ .../components/min_max/translations/ru.json | 42 ++++ .../components/min_max/translations/sv.json | 11 + .../components/min_max/translations/tr.json | 42 ++++ .../min_max/translations/zh-Hans.json | 42 ++++ .../min_max/translations/zh-Hant.json | 42 ++++ .../minecraft_server/translations/hu.json | 2 +- .../minecraft_server/translations/pl.json | 2 +- .../components/mjpeg/translations/fr.json | 2 + .../components/mjpeg/translations/hu.json | 4 +- .../modem_callerid/translations/hu.json | 4 +- .../modern_forms/translations/et.json | 2 +- .../components/moon/translations/cs.json | 13 ++ .../moon/translations/sensor.fi.json | 6 +- .../motion_blinds/translations/ca.json | 4 +- .../motion_blinds/translations/de.json | 4 +- .../motion_blinds/translations/en.json | 6 +- .../motion_blinds/translations/et.json | 4 +- .../motion_blinds/translations/fr.json | 4 +- .../motion_blinds/translations/he.json | 2 +- .../motion_blinds/translations/hu.json | 12 +- .../motion_blinds/translations/id.json | 4 +- .../motion_blinds/translations/it.json | 4 +- .../motion_blinds/translations/nl.json | 4 +- .../motion_blinds/translations/no.json | 4 +- .../motion_blinds/translations/pl.json | 4 +- .../motion_blinds/translations/pt-BR.json | 4 +- .../motion_blinds/translations/ru.json | 4 +- .../motion_blinds/translations/tr.json | 4 +- .../motion_blinds/translations/zh-Hant.json | 4 +- .../components/nam/translations/hu.json | 2 +- .../components/nanoleaf/translations/fr.json | 8 + .../components/nanoleaf/translations/hu.json | 2 +- .../components/neato/translations/hu.json | 4 +- .../components/neato/translations/it.json | 2 +- .../components/nest/translations/hu.json | 8 +- .../components/nest/translations/it.json | 2 +- .../components/nest/translations/pl.json | 2 +- .../components/netatmo/translations/hu.json | 4 +- .../components/netatmo/translations/it.json | 2 +- .../netatmo/translations/pt-BR.json | 2 +- .../nfandroidtv/translations/ca.json | 2 +- .../nfandroidtv/translations/de.json | 2 +- .../nfandroidtv/translations/en.json | 2 +- .../nfandroidtv/translations/et.json | 2 +- .../nfandroidtv/translations/fr.json | 2 +- .../nfandroidtv/translations/he.json | 2 +- .../nfandroidtv/translations/hu.json | 4 +- .../nfandroidtv/translations/id.json | 2 +- .../nfandroidtv/translations/it.json | 2 +- .../nfandroidtv/translations/nl.json | 2 +- .../nfandroidtv/translations/no.json | 2 +- .../nfandroidtv/translations/pl.json | 2 +- .../nfandroidtv/translations/pt-BR.json | 2 +- .../nfandroidtv/translations/ru.json | 2 +- .../nfandroidtv/translations/tr.json | 2 +- .../nfandroidtv/translations/zh-Hant.json | 2 +- .../components/nina/translations/zh-Hant.json | 18 +- .../nmap_tracker/translations/en.json | 3 +- .../nmap_tracker/translations/et.json | 4 +- .../nmap_tracker/translations/hu.json | 4 +- .../nmap_tracker/translations/no.json | 4 +- .../nmap_tracker/translations/pt-BR.json | 12 +- .../nmap_tracker/translations/tr.json | 4 +- .../components/nzbget/translations/hu.json | 2 +- .../ondilo_ico/translations/hu.json | 2 +- .../ondilo_ico/translations/it.json | 2 +- .../components/onewire/translations/es.json | 5 + .../components/onewire/translations/fr.json | 3 +- .../components/onewire/translations/nl.json | 4 + .../components/onvif/translations/hu.json | 8 +- .../open_meteo/translations/ca.json | 2 +- .../opentherm_gw/translations/hu.json | 2 +- .../openweathermap/translations/ca.json | 4 +- .../openweathermap/translations/de.json | 4 +- .../openweathermap/translations/en.json | 4 +- .../openweathermap/translations/et.json | 4 +- .../openweathermap/translations/fr.json | 4 +- .../openweathermap/translations/he.json | 2 +- .../openweathermap/translations/hu.json | 4 +- .../openweathermap/translations/id.json | 4 +- .../openweathermap/translations/it.json | 4 +- .../openweathermap/translations/nl.json | 4 +- .../openweathermap/translations/no.json | 4 +- .../openweathermap/translations/pl.json | 4 +- .../openweathermap/translations/pt-BR.json | 4 +- .../openweathermap/translations/ru.json | 2 +- .../openweathermap/translations/tr.json | 4 +- .../openweathermap/translations/zh-Hant.json | 4 +- .../components/overkiz/translations/ca.json | 1 + .../components/overkiz/translations/de.json | 1 + .../components/overkiz/translations/el.json | 1 + .../components/overkiz/translations/et.json | 1 + .../components/overkiz/translations/fr.json | 1 + .../components/overkiz/translations/hu.json | 1 + .../components/overkiz/translations/id.json | 1 + .../components/overkiz/translations/it.json | 1 + .../components/overkiz/translations/ja.json | 1 + .../components/overkiz/translations/nl.json | 1 + .../components/overkiz/translations/no.json | 1 + .../components/overkiz/translations/pl.json | 1 + .../overkiz/translations/pt-BR.json | 1 + .../components/overkiz/translations/ru.json | 1 + .../components/overkiz/translations/tr.json | 1 + .../overkiz/translations/zh-Hant.json | 1 + .../components/owntracks/translations/cs.json | 1 + .../p1_monitor/translations/hu.json | 2 +- .../panasonic_viera/translations/hu.json | 2 +- .../components/peco/translations/bg.json | 7 + .../components/peco/translations/ca.json | 16 ++ .../components/peco/translations/cs.json | 7 + .../components/peco/translations/de.json | 16 ++ .../components/peco/translations/el.json | 16 ++ .../components/peco/translations/en.json | 4 +- .../components/peco/translations/et.json | 16 ++ .../components/peco/translations/fr.json | 16 ++ .../components/peco/translations/he.json | 7 + .../components/peco/translations/hu.json | 16 ++ .../components/peco/translations/id.json | 16 ++ .../components/peco/translations/it.json | 16 ++ .../components/peco/translations/ja.json | 16 ++ .../components/peco/translations/nl.json | 16 ++ .../components/peco/translations/no.json | 16 ++ .../components/peco/translations/pl.json | 16 ++ .../components/peco/translations/pt-BR.json | 16 ++ .../components/peco/translations/ru.json | 16 ++ .../components/peco/translations/tr.json | 16 ++ .../components/peco/translations/zh-Hant.json | 16 ++ .../components/pi_hole/translations/hu.json | 2 +- .../components/plaato/translations/cs.json | 1 + .../plant/translations/zh-Hant.json | 2 +- .../components/plex/translations/hu.json | 2 +- .../components/plugwise/translations/ca.json | 1 + .../components/plugwise/translations/de.json | 1 + .../components/plugwise/translations/el.json | 1 + .../components/plugwise/translations/en.json | 1 + .../components/plugwise/translations/et.json | 1 + .../components/plugwise/translations/fr.json | 1 + .../components/plugwise/translations/hu.json | 1 + .../components/plugwise/translations/id.json | 1 + .../components/plugwise/translations/it.json | 1 + .../components/plugwise/translations/ja.json | 1 + .../components/plugwise/translations/nl.json | 1 + .../components/plugwise/translations/no.json | 1 + .../components/plugwise/translations/pl.json | 1 + .../plugwise/translations/pt-BR.json | 1 + .../components/plugwise/translations/ru.json | 1 + .../components/plugwise/translations/tr.json | 1 + .../plugwise/translations/zh-Hant.json | 1 + .../components/point/translations/hu.json | 6 +- .../components/point/translations/it.json | 2 +- .../components/powerwall/translations/de.json | 2 +- .../components/powerwall/translations/es.json | 3 + .../components/ps4/translations/ca.json | 6 + .../components/ps4/translations/de.json | 6 + .../components/ps4/translations/el.json | 6 + .../components/ps4/translations/en.json | 6 + .../components/ps4/translations/et.json | 6 + .../components/ps4/translations/fr.json | 6 + .../components/ps4/translations/hu.json | 16 +- .../components/ps4/translations/id.json | 6 + .../components/ps4/translations/it.json | 6 + .../components/ps4/translations/ja.json | 6 + .../components/ps4/translations/nl.json | 6 + .../components/ps4/translations/no.json | 6 + .../components/ps4/translations/pl.json | 6 + .../components/ps4/translations/pt-BR.json | 6 + .../components/ps4/translations/ru.json | 6 + .../components/ps4/translations/tr.json | 6 + .../components/ps4/translations/zh-Hant.json | 6 + .../pure_energie/translations/cs.json | 19 ++ .../pure_energie/translations/fr.json | 4 + .../pvpc_hourly_pricing/translations/ja.json | 4 +- .../components/qnap_qsw/translations/de.json | 21 ++ .../components/qnap_qsw/translations/el.json | 21 ++ .../components/qnap_qsw/translations/en.json | 4 +- .../components/qnap_qsw/translations/et.json | 21 ++ .../components/qnap_qsw/translations/fr.json | 21 ++ .../components/qnap_qsw/translations/hu.json | 21 ++ .../components/qnap_qsw/translations/id.json | 21 ++ .../components/qnap_qsw/translations/it.json | 21 ++ .../components/qnap_qsw/translations/nl.json | 21 ++ .../components/qnap_qsw/translations/no.json | 21 ++ .../components/qnap_qsw/translations/pl.json | 21 ++ .../qnap_qsw/translations/pt-BR.json | 21 ++ .../components/qnap_qsw/translations/ru.json | 21 ++ .../qnap_qsw/translations/zh-Hant.json | 21 ++ .../radio_browser/translations/cs.json | 7 + .../radio_browser/translations/fr.json | 5 + .../radio_browser/translations/he.json | 5 + .../components/remote/translations/hu.json | 1 + .../components/roku/translations/hu.json | 2 +- .../components/roku/translations/it.json | 8 +- .../components/roomba/translations/pl.json | 4 +- .../components/roon/translations/ca.json | 7 + .../components/roon/translations/de.json | 7 + .../components/roon/translations/el.json | 7 + .../components/roon/translations/en.json | 7 + .../components/roon/translations/et.json | 7 + .../components/roon/translations/fr.json | 7 + .../components/roon/translations/he.json | 6 + .../components/roon/translations/hu.json | 13 +- .../components/roon/translations/id.json | 7 + .../components/roon/translations/it.json | 11 +- .../components/roon/translations/ja.json | 7 + .../components/roon/translations/nl.json | 7 + .../components/roon/translations/no.json | 7 + .../components/roon/translations/pl.json | 7 + .../components/roon/translations/pt-BR.json | 7 + .../components/roon/translations/ru.json | 7 + .../components/roon/translations/tr.json | 7 + .../components/roon/translations/zh-Hant.json | 7 + .../rtsp_to_webrtc/translations/hu.json | 3 +- .../components/sabnzbd/translations/de.json | 18 ++ .../components/sabnzbd/translations/el.json | 18 ++ .../components/sabnzbd/translations/en.json | 8 +- .../components/sabnzbd/translations/et.json | 18 ++ .../components/sabnzbd/translations/fr.json | 18 ++ .../components/sabnzbd/translations/hu.json | 18 ++ .../components/sabnzbd/translations/id.json | 18 ++ .../components/sabnzbd/translations/it.json | 18 ++ .../components/sabnzbd/translations/nl.json | 18 ++ .../components/sabnzbd/translations/no.json | 18 ++ .../components/sabnzbd/translations/pl.json | 18 ++ .../sabnzbd/translations/pt-BR.json | 18 ++ .../sabnzbd/translations/zh-Hant.json | 18 ++ .../components/samsungtv/translations/bg.json | 6 + .../components/samsungtv/translations/ca.json | 14 +- .../components/samsungtv/translations/cs.json | 9 + .../components/samsungtv/translations/de.json | 14 +- .../components/samsungtv/translations/el.json | 14 +- .../components/samsungtv/translations/en.json | 4 +- .../components/samsungtv/translations/et.json | 14 +- .../components/samsungtv/translations/fr.json | 16 +- .../components/samsungtv/translations/hu.json | 18 +- .../components/samsungtv/translations/id.json | 14 +- .../components/samsungtv/translations/it.json | 14 +- .../components/samsungtv/translations/ja.json | 12 +- .../components/samsungtv/translations/nl.json | 14 +- .../components/samsungtv/translations/no.json | 14 +- .../components/samsungtv/translations/pl.json | 14 +- .../samsungtv/translations/pt-BR.json | 14 +- .../components/samsungtv/translations/ru.json | 14 +- .../components/samsungtv/translations/tr.json | 14 +- .../samsungtv/translations/zh-Hant.json | 14 +- .../screenlogic/translations/fr.json | 2 +- .../components/season/translations/cs.json | 14 ++ .../components/sense/translations/cs.json | 9 +- .../components/sense/translations/fr.json | 4 +- .../components/sensibo/translations/hu.json | 2 +- .../components/sensor/translations/pl.json | 4 +- .../components/sentry/translations/ca.json | 2 +- .../components/sentry/translations/de.json | 2 +- .../components/sentry/translations/en.json | 2 +- .../components/sentry/translations/et.json | 2 +- .../components/sentry/translations/fr.json | 2 +- .../components/sentry/translations/he.json | 2 +- .../components/sentry/translations/hu.json | 2 +- .../components/sentry/translations/id.json | 2 +- .../components/sentry/translations/it.json | 2 +- .../components/sentry/translations/nl.json | 2 +- .../components/sentry/translations/no.json | 2 +- .../components/sentry/translations/pl.json | 2 +- .../components/sentry/translations/pt-BR.json | 2 +- .../components/sentry/translations/ru.json | 2 +- .../components/sentry/translations/tr.json | 2 +- .../sentry/translations/zh-Hant.json | 2 +- .../components/senz/translations/bg.json | 7 + .../components/senz/translations/ca.json | 20 ++ .../components/senz/translations/de.json | 20 ++ .../components/senz/translations/el.json | 20 ++ .../components/senz/translations/et.json | 20 ++ .../components/senz/translations/fr.json | 20 ++ .../components/senz/translations/he.json | 20 ++ .../components/senz/translations/hu.json | 20 ++ .../components/senz/translations/id.json | 20 ++ .../components/senz/translations/it.json | 20 ++ .../components/senz/translations/ja.json | 20 ++ .../components/senz/translations/nl.json | 20 ++ .../components/senz/translations/no.json | 20 ++ .../components/senz/translations/pl.json | 20 ++ .../components/senz/translations/pt-BR.json | 20 ++ .../components/senz/translations/ru.json | 20 ++ .../components/senz/translations/tr.json | 20 ++ .../components/senz/translations/zh-Hant.json | 20 ++ .../simplisafe/translations/bg.json | 5 - .../simplisafe/translations/ca.json | 8 - .../simplisafe/translations/cs.json | 1 - .../simplisafe/translations/de.json | 21 +- .../simplisafe/translations/el.json | 15 +- .../simplisafe/translations/en.json | 13 +- .../simplisafe/translations/es.json | 8 - .../simplisafe/translations/et.json | 21 +- .../simplisafe/translations/fr.json | 21 +- .../simplisafe/translations/hu.json | 21 +- .../simplisafe/translations/id.json | 21 +- .../simplisafe/translations/it.json | 21 +- .../simplisafe/translations/ja.json | 8 - .../simplisafe/translations/ko.json | 1 - .../simplisafe/translations/lb.json | 1 - .../simplisafe/translations/nl.json | 21 +- .../simplisafe/translations/no.json | 21 +- .../simplisafe/translations/pl.json | 21 +- .../simplisafe/translations/pt-BR.json | 21 +- .../simplisafe/translations/ru.json | 8 - .../simplisafe/translations/sl.json | 7 - .../simplisafe/translations/tr.json | 8 - .../simplisafe/translations/uk.json | 1 - .../simplisafe/translations/zh-Hant.json | 21 +- .../components/sleepiq/translations/fr.json | 1 + .../components/slimproto/translations/de.json | 7 + .../components/slimproto/translations/el.json | 7 + .../components/slimproto/translations/en.json | 14 +- .../components/slimproto/translations/et.json | 7 + .../components/slimproto/translations/fr.json | 7 + .../components/slimproto/translations/hu.json | 13 ++ .../components/slimproto/translations/id.json | 7 + .../components/slimproto/translations/it.json | 13 ++ .../components/slimproto/translations/nl.json | 7 + .../components/slimproto/translations/no.json | 7 + .../components/slimproto/translations/pl.json | 7 + .../slimproto/translations/pt-BR.json | 7 + .../slimproto/translations/zh-Hant.json | 7 + .../components/smappee/translations/hu.json | 4 +- .../components/smappee/translations/it.json | 2 +- .../smartthings/translations/it.json | 4 +- .../components/smhi/translations/hu.json | 5 +- .../components/solax/translations/es.json | 7 + .../components/soma/translations/it.json | 2 +- .../components/somfy/translations/hu.json | 4 +- .../components/somfy/translations/it.json | 2 +- .../components/sonarr/translations/cs.json | 1 + .../components/sonarr/translations/hu.json | 2 +- .../components/spotify/translations/hu.json | 4 +- .../components/spotify/translations/it.json | 2 +- .../components/sql/translations/ca.json | 55 +++++ .../components/sql/translations/de.json | 55 +++++ .../components/sql/translations/el.json | 55 +++++ .../components/sql/translations/en.json | 4 +- .../components/sql/translations/et.json | 55 +++++ .../components/sql/translations/fr.json | 55 +++++ .../components/sql/translations/hu.json | 55 +++++ .../components/sql/translations/id.json | 55 +++++ .../components/sql/translations/it.json | 55 +++++ .../components/sql/translations/nl.json | 53 +++++ .../components/sql/translations/no.json | 55 +++++ .../components/sql/translations/pl.json | 55 +++++ .../components/sql/translations/pt-BR.json | 55 +++++ .../components/sql/translations/ru.json | 55 +++++ .../components/sql/translations/tr.json | 55 +++++ .../components/sql/translations/zh-Hant.json | 55 +++++ .../srp_energy/translations/ca.json | 3 +- .../srp_energy/translations/cs.json | 3 +- .../srp_energy/translations/de.json | 3 +- .../srp_energy/translations/el.json | 3 +- .../srp_energy/translations/en.json | 3 +- .../srp_energy/translations/es.json | 3 +- .../srp_energy/translations/et.json | 3 +- .../srp_energy/translations/fr.json | 3 +- .../srp_energy/translations/hu.json | 3 +- .../srp_energy/translations/id.json | 3 +- .../srp_energy/translations/it.json | 3 +- .../srp_energy/translations/ja.json | 3 +- .../srp_energy/translations/ka.json | 3 +- .../srp_energy/translations/ko.json | 3 +- .../srp_energy/translations/nl.json | 3 +- .../srp_energy/translations/no.json | 3 +- .../srp_energy/translations/pl.json | 3 +- .../srp_energy/translations/pt-BR.json | 3 +- .../srp_energy/translations/ru.json | 3 +- .../srp_energy/translations/tr.json | 3 +- .../srp_energy/translations/uk.json | 3 +- .../srp_energy/translations/zh-Hans.json | 3 +- .../srp_energy/translations/zh-Hant.json | 3 +- .../steam_online/translations/de.json | 36 ++++ .../steam_online/translations/el.json | 36 ++++ .../steam_online/translations/en.json | 18 +- .../steam_online/translations/et.json | 36 ++++ .../steam_online/translations/fr.json | 36 ++++ .../steam_online/translations/hu.json | 36 ++++ .../steam_online/translations/id.json | 36 ++++ .../steam_online/translations/it.json | 36 ++++ .../steam_online/translations/nl.json | 36 ++++ .../steam_online/translations/no.json | 36 ++++ .../steam_online/translations/pl.json | 36 ++++ .../steam_online/translations/pt-BR.json | 36 ++++ .../steam_online/translations/ru.json | 25 +++ .../steam_online/translations/zh-Hant.json | 36 ++++ .../components/steamist/translations/hu.json | 2 +- .../components/subaru/translations/ca.json | 19 +- .../components/subaru/translations/de.json | 19 +- .../components/subaru/translations/el.json | 19 +- .../components/subaru/translations/en.json | 19 +- .../components/subaru/translations/et.json | 19 +- .../components/subaru/translations/fr.json | 19 +- .../components/subaru/translations/hu.json | 21 +- .../components/subaru/translations/id.json | 19 +- .../components/subaru/translations/it.json | 19 +- .../components/subaru/translations/ja.json | 19 +- .../components/subaru/translations/nl.json | 19 +- .../components/subaru/translations/no.json | 19 +- .../components/subaru/translations/pl.json | 19 +- .../components/subaru/translations/pt-BR.json | 19 +- .../components/subaru/translations/ru.json | 19 +- .../components/subaru/translations/tr.json | 19 +- .../subaru/translations/zh-Hant.json | 19 +- .../components/sun/translations/bg.json | 5 + .../components/sun/translations/ca.json | 10 + .../components/sun/translations/cs.json | 10 + .../components/sun/translations/de.json | 10 + .../components/sun/translations/el.json | 10 + .../components/sun/translations/en.json | 10 + .../components/sun/translations/et.json | 10 + .../components/sun/translations/fr.json | 10 + .../components/sun/translations/he.json | 10 + .../components/sun/translations/hu.json | 10 + .../components/sun/translations/id.json | 10 + .../components/sun/translations/it.json | 10 + .../components/sun/translations/ja.json | 10 + .../components/sun/translations/nl.json | 10 + .../components/sun/translations/no.json | 10 + .../components/sun/translations/pl.json | 10 + .../components/sun/translations/pt-BR.json | 10 + .../components/sun/translations/ru.json | 10 + .../components/sun/translations/tr.json | 10 + .../components/sun/translations/zh-Hant.json | 10 + .../components/switch/translations/cs.json | 10 + .../components/switch/translations/el.json | 4 +- .../components/switch/translations/hu.json | 1 + .../components/switch/translations/pt-BR.json | 4 +- .../switch_as_x/translations/bg.json | 11 + .../switch_as_x/translations/ca.json | 16 +- .../switch_as_x/translations/cs.json | 18 ++ .../switch_as_x/translations/de.json | 16 +- .../switch_as_x/translations/el.json | 10 +- .../switch_as_x/translations/en.json | 8 +- .../switch_as_x/translations/et.json | 16 +- .../switch_as_x/translations/fr.json | 16 +- .../switch_as_x/translations/he.json | 4 +- .../switch_as_x/translations/hu.json | 16 +- .../switch_as_x/translations/id.json | 16 +- .../switch_as_x/translations/it.json | 16 +- .../switch_as_x/translations/ja.json | 10 +- .../switch_as_x/translations/nl.json | 16 +- .../switch_as_x/translations/no.json | 16 +- .../switch_as_x/translations/pl.json | 16 +- .../switch_as_x/translations/pt-BR.json | 16 +- .../switch_as_x/translations/pt.json | 2 +- .../switch_as_x/translations/ru.json | 14 +- .../switch_as_x/translations/sv.json | 8 +- .../switch_as_x/translations/tr.json | 20 ++ .../switch_as_x/translations/zh-Hans.json | 20 ++ .../switch_as_x/translations/zh-Hant.json | 16 +- .../components/switchbot/translations/fr.json | 2 +- .../components/switchbot/translations/hu.json | 2 +- .../components/switchbot/translations/it.json | 4 +- .../components/syncthing/translations/ca.json | 3 +- .../components/syncthing/translations/de.json | 3 +- .../components/syncthing/translations/el.json | 3 +- .../components/syncthing/translations/en.json | 3 +- .../components/syncthing/translations/es.json | 3 +- .../components/syncthing/translations/et.json | 3 +- .../components/syncthing/translations/fr.json | 3 +- .../components/syncthing/translations/he.json | 3 +- .../components/syncthing/translations/hu.json | 3 +- .../components/syncthing/translations/id.json | 3 +- .../components/syncthing/translations/it.json | 3 +- .../components/syncthing/translations/ja.json | 3 +- .../components/syncthing/translations/nl.json | 3 +- .../components/syncthing/translations/no.json | 3 +- .../components/syncthing/translations/pl.json | 3 +- .../syncthing/translations/pt-BR.json | 3 +- .../components/syncthing/translations/ru.json | 3 +- .../components/syncthing/translations/sv.json | 3 +- .../components/syncthing/translations/tr.json | 3 +- .../syncthing/translations/zh-Hans.json | 3 +- .../syncthing/translations/zh-Hant.json | 3 +- .../components/syncthru/translations/hu.json | 4 +- .../system_bridge/translations/ca.json | 3 +- .../system_bridge/translations/de.json | 3 +- .../system_bridge/translations/el.json | 3 +- .../system_bridge/translations/en.json | 3 +- .../system_bridge/translations/es.json | 3 +- .../system_bridge/translations/et.json | 3 +- .../system_bridge/translations/fr.json | 3 +- .../system_bridge/translations/he.json | 3 +- .../system_bridge/translations/hu.json | 3 +- .../system_bridge/translations/id.json | 3 +- .../system_bridge/translations/it.json | 3 +- .../system_bridge/translations/ja.json | 3 +- .../system_bridge/translations/nl.json | 3 +- .../system_bridge/translations/no.json | 3 +- .../system_bridge/translations/pl.json | 3 +- .../system_bridge/translations/pt-BR.json | 3 +- .../system_bridge/translations/ru.json | 3 +- .../system_bridge/translations/tr.json | 3 +- .../system_bridge/translations/zh-Hant.json | 3 +- .../system_health/translations/pt-BR.json | 2 +- .../components/tado/translations/ca.json | 4 +- .../components/tado/translations/de.json | 4 +- .../components/tado/translations/en.json | 4 +- .../components/tado/translations/et.json | 4 +- .../components/tado/translations/fr.json | 4 +- .../components/tado/translations/hu.json | 4 +- .../components/tado/translations/id.json | 4 +- .../components/tado/translations/it.json | 4 +- .../components/tado/translations/nl.json | 4 +- .../components/tado/translations/no.json | 4 +- .../components/tado/translations/pl.json | 4 +- .../components/tado/translations/pt-BR.json | 4 +- .../components/tado/translations/ru.json | 4 +- .../components/tado/translations/tr.json | 4 +- .../components/tado/translations/zh-Hant.json | 4 +- .../components/tailscale/translations/ca.json | 2 +- .../components/tailscale/translations/de.json | 2 +- .../components/tailscale/translations/et.json | 2 +- .../components/tailscale/translations/fr.json | 2 +- .../components/tailscale/translations/hu.json | 2 +- .../components/tailscale/translations/id.json | 2 +- .../components/tailscale/translations/it.json | 2 +- .../components/tailscale/translations/nl.json | 2 +- .../components/tailscale/translations/no.json | 2 +- .../components/tailscale/translations/pl.json | 2 +- .../tailscale/translations/pt-BR.json | 2 +- .../components/tailscale/translations/ru.json | 2 +- .../components/tailscale/translations/tr.json | 2 +- .../tailscale/translations/zh-Hant.json | 2 +- .../tankerkoenig/translations/bg.json | 29 +++ .../tankerkoenig/translations/ca.json | 41 ++++ .../tankerkoenig/translations/de.json | 41 ++++ .../tankerkoenig/translations/el.json | 41 ++++ .../tankerkoenig/translations/et.json | 41 ++++ .../tankerkoenig/translations/fr.json | 41 ++++ .../tankerkoenig/translations/he.json | 18 ++ .../tankerkoenig/translations/hu.json | 41 ++++ .../tankerkoenig/translations/id.json | 41 ++++ .../tankerkoenig/translations/it.json | 41 ++++ .../tankerkoenig/translations/ja.json | 41 ++++ .../tankerkoenig/translations/nl.json | 41 ++++ .../tankerkoenig/translations/no.json | 41 ++++ .../tankerkoenig/translations/pl.json | 41 ++++ .../tankerkoenig/translations/pt-BR.json | 41 ++++ .../tankerkoenig/translations/ru.json | 41 ++++ .../tankerkoenig/translations/tr.json | 41 ++++ .../tankerkoenig/translations/zh-Hant.json | 41 ++++ .../components/tautulli/translations/de.json | 30 +++ .../components/tautulli/translations/el.json | 30 +++ .../components/tautulli/translations/en.json | 55 +++-- .../components/tautulli/translations/et.json | 30 +++ .../components/tautulli/translations/fr.json | 30 +++ .../components/tautulli/translations/hu.json | 30 +++ .../components/tautulli/translations/id.json | 30 +++ .../components/tautulli/translations/it.json | 30 +++ .../components/tautulli/translations/nl.json | 28 +++ .../components/tautulli/translations/no.json | 30 +++ .../components/tautulli/translations/pl.json | 30 +++ .../tautulli/translations/pt-BR.json | 30 +++ .../components/tautulli/translations/ru.json | 30 +++ .../tautulli/translations/zh-Hant.json | 30 +++ .../tellduslive/translations/hu.json | 2 +- .../tesla_wall_connector/translations/ca.json | 10 - .../tesla_wall_connector/translations/de.json | 10 - .../tesla_wall_connector/translations/el.json | 10 - .../tesla_wall_connector/translations/en.json | 10 - .../tesla_wall_connector/translations/es.json | 10 - .../tesla_wall_connector/translations/et.json | 10 - .../tesla_wall_connector/translations/fr.json | 10 - .../tesla_wall_connector/translations/hu.json | 10 - .../tesla_wall_connector/translations/id.json | 10 - .../tesla_wall_connector/translations/it.json | 10 - .../tesla_wall_connector/translations/ja.json | 10 - .../tesla_wall_connector/translations/nl.json | 10 - .../tesla_wall_connector/translations/no.json | 10 - .../tesla_wall_connector/translations/pl.json | 10 - .../translations/pt-BR.json | 10 - .../tesla_wall_connector/translations/ru.json | 10 - .../tesla_wall_connector/translations/tr.json | 10 - .../translations/zh-Hans.json | 10 - .../translations/zh-Hant.json | 10 - .../components/threshold/translations/bg.json | 22 ++ .../components/threshold/translations/ca.json | 40 ++++ .../components/threshold/translations/de.json | 40 ++++ .../components/threshold/translations/el.json | 40 ++++ .../components/threshold/translations/en.json | 2 + .../components/threshold/translations/et.json | 40 ++++ .../components/threshold/translations/fr.json | 40 ++++ .../components/threshold/translations/hu.json | 40 ++++ .../components/threshold/translations/id.json | 40 ++++ .../components/threshold/translations/it.json | 40 ++++ .../components/threshold/translations/ja.json | 40 ++++ .../components/threshold/translations/nl.json | 40 ++++ .../components/threshold/translations/no.json | 40 ++++ .../components/threshold/translations/pl.json | 40 ++++ .../threshold/translations/pt-BR.json | 40 ++++ .../components/threshold/translations/ru.json | 40 ++++ .../components/threshold/translations/tr.json | 40 ++++ .../threshold/translations/zh-Hans.json | 40 ++++ .../threshold/translations/zh-Hant.json | 40 ++++ .../components/tod/translations/bg.json | 11 + .../components/tod/translations/ca.json | 31 +++ .../components/tod/translations/de.json | 31 +++ .../components/tod/translations/el.json | 31 +++ .../components/tod/translations/en.json | 7 +- .../components/tod/translations/et.json | 31 +++ .../components/tod/translations/fr.json | 31 +++ .../components/tod/translations/he.json | 30 +++ .../components/tod/translations/hu.json | 31 +++ .../components/tod/translations/id.json | 31 +++ .../components/tod/translations/it.json | 31 +++ .../components/tod/translations/ja.json | 31 +++ .../components/tod/translations/nl.json | 31 +++ .../components/tod/translations/no.json | 31 +++ .../components/tod/translations/pl.json | 31 +++ .../components/tod/translations/pt-BR.json | 31 +++ .../components/tod/translations/ru.json | 31 +++ .../components/tod/translations/tr.json | 31 +++ .../components/tod/translations/zh-Hans.json | 31 +++ .../components/tod/translations/zh-Hant.json | 31 +++ .../tomorrowio/translations/bg.json | 20 ++ .../tomorrowio/translations/ca.json | 33 +++ .../tomorrowio/translations/cs.json | 11 + .../tomorrowio/translations/de.json | 33 +++ .../tomorrowio/translations/el.json | 33 +++ .../tomorrowio/translations/en.json | 1 + .../tomorrowio/translations/et.json | 33 +++ .../tomorrowio/translations/fr.json | 33 +++ .../tomorrowio/translations/he.json | 20 ++ .../tomorrowio/translations/hu.json | 33 +++ .../tomorrowio/translations/id.json | 33 +++ .../tomorrowio/translations/it.json | 33 +++ .../tomorrowio/translations/ja.json | 33 +++ .../tomorrowio/translations/nl.json | 33 +++ .../tomorrowio/translations/no.json | 33 +++ .../tomorrowio/translations/pl.json | 33 +++ .../tomorrowio/translations/pt-BR.json | 33 +++ .../tomorrowio/translations/ru.json | 33 +++ .../tomorrowio/translations/sensor.bg.json | 8 + .../tomorrowio/translations/sensor.ca.json | 27 +++ .../tomorrowio/translations/sensor.de.json | 27 +++ .../tomorrowio/translations/sensor.el.json | 27 +++ .../tomorrowio/translations/sensor.et.json | 27 +++ .../tomorrowio/translations/sensor.fr.json | 27 +++ .../tomorrowio/translations/sensor.hu.json | 27 +++ .../tomorrowio/translations/sensor.id.json | 27 +++ .../tomorrowio/translations/sensor.it.json | 27 +++ .../tomorrowio/translations/sensor.ja.json | 27 +++ .../tomorrowio/translations/sensor.nl.json | 27 +++ .../tomorrowio/translations/sensor.no.json | 27 +++ .../tomorrowio/translations/sensor.pl.json | 27 +++ .../tomorrowio/translations/sensor.pt-BR.json | 27 +++ .../tomorrowio/translations/sensor.ru.json | 27 +++ .../tomorrowio/translations/sensor.tr.json | 27 +++ .../translations/sensor.zh-Hant.json | 27 +++ .../tomorrowio/translations/tr.json | 33 +++ .../tomorrowio/translations/zh-Hant.json | 33 +++ .../components/toon/translations/hu.json | 2 +- .../components/toon/translations/it.json | 2 +- .../components/tplink/translations/it.json | 2 +- .../components/tradfri/translations/hu.json | 2 +- .../trafikverket_ferry/translations/de.json | 30 +++ .../trafikverket_ferry/translations/el.json | 30 +++ .../trafikverket_ferry/translations/et.json | 30 +++ .../trafikverket_ferry/translations/fr.json | 30 +++ .../trafikverket_ferry/translations/hu.json | 30 +++ .../trafikverket_ferry/translations/id.json | 30 +++ .../trafikverket_ferry/translations/it.json | 30 +++ .../trafikverket_ferry/translations/nl.json | 30 +++ .../trafikverket_ferry/translations/no.json | 30 +++ .../trafikverket_ferry/translations/pl.json | 30 +++ .../translations/pt-BR.json | 30 +++ .../trafikverket_ferry/translations/ru.json | 30 +++ .../translations/zh-Hant.json | 30 +++ .../trafikverket_train/translations/bg.json | 24 +++ .../trafikverket_train/translations/ca.json | 32 +++ .../trafikverket_train/translations/de.json | 32 +++ .../trafikverket_train/translations/el.json | 32 +++ .../trafikverket_train/translations/en.json | 22 +- .../trafikverket_train/translations/et.json | 32 +++ .../trafikverket_train/translations/fr.json | 32 +++ .../trafikverket_train/translations/he.json | 24 +++ .../trafikverket_train/translations/hu.json | 32 +++ .../trafikverket_train/translations/id.json | 32 +++ .../trafikverket_train/translations/it.json | 32 +++ .../trafikverket_train/translations/ja.json | 32 +++ .../trafikverket_train/translations/nl.json | 32 +++ .../trafikverket_train/translations/no.json | 32 +++ .../trafikverket_train/translations/pl.json | 32 +++ .../translations/pt-BR.json | 32 +++ .../trafikverket_train/translations/ru.json | 32 +++ .../trafikverket_train/translations/tr.json | 32 +++ .../translations/zh-Hant.json | 32 +++ .../transmission/translations/hu.json | 2 +- .../tuya/translations/select.he.json | 2 +- .../tuya/translations/select.pt-BR.json | 12 +- .../twentemilieu/translations/bg.json | 3 +- .../twentemilieu/translations/ca.json | 3 +- .../twentemilieu/translations/cs.json | 3 +- .../twentemilieu/translations/da.json | 3 +- .../twentemilieu/translations/de.json | 3 +- .../twentemilieu/translations/el.json | 3 +- .../twentemilieu/translations/en.json | 3 +- .../twentemilieu/translations/es-419.json | 3 +- .../twentemilieu/translations/es.json | 3 +- .../twentemilieu/translations/et.json | 3 +- .../twentemilieu/translations/fr.json | 3 +- .../twentemilieu/translations/hu.json | 3 +- .../twentemilieu/translations/id.json | 3 +- .../twentemilieu/translations/it.json | 3 +- .../twentemilieu/translations/ja.json | 3 +- .../twentemilieu/translations/ko.json | 3 +- .../twentemilieu/translations/lb.json | 3 +- .../twentemilieu/translations/nl.json | 3 +- .../twentemilieu/translations/nn.json | 9 - .../twentemilieu/translations/no.json | 3 +- .../twentemilieu/translations/pl.json | 3 +- .../twentemilieu/translations/pt-BR.json | 3 +- .../twentemilieu/translations/ru.json | 3 +- .../twentemilieu/translations/sl.json | 3 +- .../twentemilieu/translations/sv.json | 3 +- .../twentemilieu/translations/tr.json | 3 +- .../twentemilieu/translations/uk.json | 3 +- .../twentemilieu/translations/zh-Hant.json | 3 +- .../components/twilio/translations/cs.json | 1 + .../components/twilio/translations/id.json | 2 +- .../components/twilio/translations/ja.json | 2 +- .../components/twinkly/translations/ca.json | 4 +- .../components/twinkly/translations/cs.json | 4 +- .../components/twinkly/translations/de.json | 4 +- .../components/twinkly/translations/el.json | 4 +- .../components/twinkly/translations/en.json | 4 +- .../components/twinkly/translations/es.json | 4 +- .../components/twinkly/translations/et.json | 4 +- .../components/twinkly/translations/fr.json | 4 +- .../components/twinkly/translations/hu.json | 6 +- .../components/twinkly/translations/id.json | 4 +- .../components/twinkly/translations/it.json | 4 +- .../components/twinkly/translations/ja.json | 4 +- .../components/twinkly/translations/ka.json | 4 +- .../components/twinkly/translations/ko.json | 4 +- .../components/twinkly/translations/nl.json | 4 +- .../components/twinkly/translations/no.json | 4 +- .../components/twinkly/translations/pl.json | 4 +- .../twinkly/translations/pt-BR.json | 4 +- .../components/twinkly/translations/ru.json | 4 +- .../components/twinkly/translations/tr.json | 4 +- .../components/twinkly/translations/uk.json | 4 +- .../twinkly/translations/zh-Hant.json | 4 +- .../components/unifi/translations/hu.json | 4 +- .../components/unifi/translations/it.json | 4 +- .../components/update/translations/ca.json | 7 + .../components/update/translations/cs.json | 9 + .../components/update/translations/de.json | 7 + .../components/update/translations/el.json | 7 + .../components/update/translations/es.json | 3 + .../components/update/translations/et.json | 7 + .../components/update/translations/fr.json | 7 + .../components/update/translations/he.json | 10 + .../components/update/translations/hu.json | 7 + .../components/update/translations/id.json | 7 + .../components/update/translations/it.json | 7 + .../components/update/translations/ja.json | 7 + .../components/update/translations/nl.json | 7 + .../components/update/translations/no.json | 7 + .../components/update/translations/pl.json | 7 + .../components/update/translations/pt-BR.json | 7 + .../components/update/translations/ru.json | 7 + .../components/update/translations/tr.json | 7 + .../update/translations/zh-Hans.json | 9 + .../update/translations/zh-Hant.json | 7 + .../components/upnp/translations/it.json | 8 +- .../components/uptime/translations/bg.json | 12 ++ .../components/uptime/translations/cs.json | 12 ++ .../components/uptime/translations/id.json | 13 ++ .../components/uptime/translations/it.json | 3 + .../components/uptime/translations/no.json | 13 ++ .../components/uptime/translations/pl.json | 13 ++ .../components/uptime/translations/pt-BR.json | 2 +- .../components/uptime/translations/tr.json | 13 ++ .../uptimerobot/translations/ca.json | 5 +- .../uptimerobot/translations/de.json | 5 +- .../uptimerobot/translations/el.json | 1 + .../uptimerobot/translations/et.json | 5 +- .../uptimerobot/translations/fr.json | 5 +- .../uptimerobot/translations/hu.json | 5 +- .../uptimerobot/translations/id.json | 5 +- .../uptimerobot/translations/it.json | 5 +- .../uptimerobot/translations/ja.json | 1 + .../uptimerobot/translations/nl.json | 5 +- .../uptimerobot/translations/no.json | 5 +- .../uptimerobot/translations/pl.json | 5 +- .../uptimerobot/translations/pt-BR.json | 5 +- .../uptimerobot/translations/ru.json | 5 +- .../uptimerobot/translations/tr.json | 5 +- .../uptimerobot/translations/zh-Hant.json | 5 +- .../utility_meter/translations/bg.json | 11 + .../utility_meter/translations/ca.json | 35 ++++ .../utility_meter/translations/cs.json | 35 ++++ .../utility_meter/translations/de.json | 35 ++++ .../utility_meter/translations/el.json | 35 ++++ .../utility_meter/translations/et.json | 35 ++++ .../utility_meter/translations/fr.json | 35 ++++ .../utility_meter/translations/hu.json | 35 ++++ .../utility_meter/translations/id.json | 35 ++++ .../utility_meter/translations/it.json | 35 ++++ .../utility_meter/translations/ja.json | 35 ++++ .../utility_meter/translations/nl.json | 35 ++++ .../utility_meter/translations/no.json | 35 ++++ .../utility_meter/translations/pl.json | 35 ++++ .../utility_meter/translations/pt-BR.json | 35 ++++ .../utility_meter/translations/ru.json | 35 ++++ .../utility_meter/translations/tr.json | 35 ++++ .../utility_meter/translations/zh-Hans.json | 35 ++++ .../utility_meter/translations/zh-Hant.json | 35 ++++ .../components/vallox/translations/bg.json | 6 +- .../components/vallox/translations/ca.json | 7 +- .../components/vallox/translations/cs.json | 7 - .../components/vallox/translations/de.json | 7 +- .../components/vallox/translations/el.json | 7 +- .../components/vallox/translations/en.json | 7 +- .../components/vallox/translations/es.json | 7 +- .../components/vallox/translations/et.json | 7 +- .../components/vallox/translations/fr.json | 7 +- .../components/vallox/translations/he.json | 3 +- .../components/vallox/translations/hu.json | 7 +- .../components/vallox/translations/id.json | 7 +- .../components/vallox/translations/it.json | 7 +- .../components/vallox/translations/ja.json | 7 +- .../components/vallox/translations/lv.json | 9 - .../components/vallox/translations/nl.json | 7 +- .../components/vallox/translations/no.json | 7 +- .../components/vallox/translations/pl.json | 7 +- .../components/vallox/translations/pt-BR.json | 7 +- .../components/vallox/translations/ru.json | 7 +- .../components/vallox/translations/tr.json | 7 +- .../vallox/translations/zh-Hant.json | 7 +- .../components/venstar/translations/pl.json | 2 +- .../components/vera/translations/ca.json | 5 +- .../components/vera/translations/cs.json | 4 +- .../components/vera/translations/de.json | 5 +- .../components/vera/translations/el.json | 5 +- .../components/vera/translations/en.json | 5 +- .../components/vera/translations/es-419.json | 4 +- .../components/vera/translations/es.json | 4 +- .../components/vera/translations/et.json | 5 +- .../components/vera/translations/fr.json | 5 +- .../components/vera/translations/hu.json | 5 +- .../components/vera/translations/id.json | 5 +- .../components/vera/translations/it.json | 5 +- .../components/vera/translations/ja.json | 5 +- .../components/vera/translations/ko.json | 4 +- .../components/vera/translations/lb.json | 4 +- .../components/vera/translations/nl.json | 5 +- .../components/vera/translations/no.json | 5 +- .../components/vera/translations/pl.json | 5 +- .../components/vera/translations/pt-BR.json | 5 +- .../components/vera/translations/ru.json | 5 +- .../components/vera/translations/sl.json | 4 +- .../components/vera/translations/tr.json | 5 +- .../components/vera/translations/uk.json | 4 +- .../components/vera/translations/zh-Hant.json | 5 +- .../components/verisure/translations/hu.json | 4 +- .../components/version/translations/he.json | 11 + .../components/vicare/translations/fr.json | 2 +- .../components/vicare/translations/hu.json | 2 +- .../components/vizio/translations/hu.json | 2 +- .../vlc_telnet/translations/hu.json | 2 +- .../components/vulcan/translations/bg.json | 30 +++ .../components/vulcan/translations/ca.json | 69 ++++++ .../components/vulcan/translations/de.json | 69 ++++++ .../components/vulcan/translations/el.json | 69 ++++++ .../components/vulcan/translations/en.json | 130 ++++++------ .../components/vulcan/translations/et.json | 69 ++++++ .../components/vulcan/translations/fr.json | 69 ++++++ .../components/vulcan/translations/hu.json | 69 ++++++ .../components/vulcan/translations/id.json | 69 ++++++ .../components/vulcan/translations/it.json | 69 ++++++ .../components/vulcan/translations/ja.json | 69 ++++++ .../components/vulcan/translations/nl.json | 69 ++++++ .../components/vulcan/translations/no.json | 69 ++++++ .../components/vulcan/translations/pl.json | 69 ++++++ .../components/vulcan/translations/pt-BR.json | 69 ++++++ .../components/vulcan/translations/ru.json | 69 ++++++ .../components/vulcan/translations/tr.json | 69 ++++++ .../vulcan/translations/zh-Hant.json | 69 ++++++ .../components/wallbox/translations/bg.json | 3 +- .../components/wallbox/translations/ca.json | 3 +- .../components/wallbox/translations/de.json | 3 +- .../components/wallbox/translations/el.json | 3 +- .../components/wallbox/translations/en.json | 3 +- .../components/wallbox/translations/es.json | 3 +- .../components/wallbox/translations/et.json | 3 +- .../components/wallbox/translations/fr.json | 3 +- .../components/wallbox/translations/he.json | 3 +- .../components/wallbox/translations/hu.json | 3 +- .../components/wallbox/translations/id.json | 3 +- .../components/wallbox/translations/it.json | 3 +- .../components/wallbox/translations/ja.json | 3 +- .../components/wallbox/translations/nl.json | 3 +- .../components/wallbox/translations/no.json | 3 +- .../components/wallbox/translations/pl.json | 3 +- .../wallbox/translations/pt-BR.json | 3 +- .../components/wallbox/translations/ru.json | 3 +- .../components/wallbox/translations/tr.json | 3 +- .../wallbox/translations/zh-Hant.json | 3 +- .../waze_travel_time/translations/hu.json | 2 +- .../components/webostv/translations/hu.json | 47 +++++ .../components/wilight/translations/ca.json | 2 +- .../components/wilight/translations/de.json | 2 +- .../components/wilight/translations/en.json | 2 +- .../components/wilight/translations/et.json | 2 +- .../components/wilight/translations/fr.json | 2 +- .../components/wilight/translations/hu.json | 2 +- .../components/wilight/translations/id.json | 2 +- .../components/wilight/translations/it.json | 2 +- .../components/wilight/translations/nl.json | 2 +- .../components/wilight/translations/no.json | 2 +- .../components/wilight/translations/pl.json | 2 +- .../wilight/translations/pt-BR.json | 2 +- .../components/wilight/translations/ru.json | 2 +- .../components/wilight/translations/tr.json | 2 +- .../wilight/translations/zh-Hant.json | 2 +- .../components/withings/translations/hu.json | 4 +- .../components/withings/translations/it.json | 2 +- .../components/wiz/translations/hu.json | 2 +- .../wolflink/translations/sensor.hu.json | 2 +- .../components/xbox/translations/hu.json | 2 +- .../components/xbox/translations/it.json | 2 +- .../xiaomi_aqara/translations/ca.json | 6 +- .../xiaomi_aqara/translations/de.json | 6 +- .../xiaomi_aqara/translations/en.json | 6 +- .../xiaomi_aqara/translations/et.json | 6 +- .../xiaomi_aqara/translations/fr.json | 6 +- .../xiaomi_aqara/translations/he.json | 4 +- .../xiaomi_aqara/translations/hu.json | 8 +- .../xiaomi_aqara/translations/id.json | 6 +- .../xiaomi_aqara/translations/it.json | 6 +- .../xiaomi_aqara/translations/nl.json | 6 +- .../xiaomi_aqara/translations/no.json | 6 +- .../xiaomi_aqara/translations/pl.json | 6 +- .../xiaomi_aqara/translations/pt-BR.json | 8 +- .../xiaomi_aqara/translations/ru.json | 6 +- .../xiaomi_aqara/translations/tr.json | 6 +- .../xiaomi_aqara/translations/zh-Hant.json | 6 +- .../xiaomi_miio/translations/he.json | 2 +- .../xiaomi_miio/translations/hu.json | 2 +- .../xiaomi_miio/translations/pt-BR.json | 2 +- .../yale_smart_alarm/translations/hu.json | 4 +- .../components/yeelight/translations/cs.json | 2 +- .../components/yeelight/translations/fr.json | 2 +- .../components/youless/translations/hu.json | 2 +- .../components/zha/translations/cs.json | 2 +- .../components/zwave_js/translations/bg.json | 3 + .../components/zwave_js/translations/ca.json | 4 + .../components/zwave_js/translations/de.json | 4 + .../components/zwave_js/translations/el.json | 4 + .../components/zwave_js/translations/en.json | 5 +- .../components/zwave_js/translations/et.json | 4 + .../components/zwave_js/translations/fr.json | 4 + .../components/zwave_js/translations/hu.json | 6 +- .../components/zwave_js/translations/id.json | 6 +- .../components/zwave_js/translations/it.json | 4 + .../components/zwave_js/translations/ja.json | 4 + .../components/zwave_js/translations/nl.json | 4 + .../components/zwave_js/translations/no.json | 4 + .../components/zwave_js/translations/pl.json | 4 + .../zwave_js/translations/pt-BR.json | 4 + .../components/zwave_js/translations/ru.json | 4 + .../components/zwave_js/translations/tr.json | 4 + .../zwave_js/translations/zh-Hant.json | 4 + .../components/zwave_me/translations/ca.json | 4 +- .../components/zwave_me/translations/de.json | 6 +- .../components/zwave_me/translations/en.json | 4 +- .../components/zwave_me/translations/et.json | 4 +- .../components/zwave_me/translations/fr.json | 4 +- .../components/zwave_me/translations/he.json | 2 +- .../components/zwave_me/translations/hu.json | 4 +- .../components/zwave_me/translations/id.json | 4 +- .../components/zwave_me/translations/it.json | 4 +- .../components/zwave_me/translations/nl.json | 4 +- .../components/zwave_me/translations/no.json | 4 +- .../components/zwave_me/translations/pl.json | 4 +- .../zwave_me/translations/pt-BR.json | 4 +- .../components/zwave_me/translations/ru.json | 4 +- .../components/zwave_me/translations/tr.json | 4 +- .../zwave_me/translations/zh-Hant.json | 4 +- 1917 files changed, 23024 insertions(+), 3546 deletions(-) create mode 100644 homeassistant/components/airzone/translations/cs.json create mode 100644 homeassistant/components/airzone/translations/tr.json delete mode 100644 homeassistant/components/crownstone/translations/ko.json create mode 100644 homeassistant/components/deluge/translations/bg.json create mode 100644 homeassistant/components/deluge/translations/ca.json create mode 100644 homeassistant/components/deluge/translations/cs.json create mode 100644 homeassistant/components/deluge/translations/de.json create mode 100644 homeassistant/components/deluge/translations/el.json create mode 100644 homeassistant/components/deluge/translations/et.json create mode 100644 homeassistant/components/deluge/translations/fr.json create mode 100644 homeassistant/components/deluge/translations/he.json create mode 100644 homeassistant/components/deluge/translations/hu.json create mode 100644 homeassistant/components/deluge/translations/id.json create mode 100644 homeassistant/components/deluge/translations/it.json create mode 100644 homeassistant/components/deluge/translations/ja.json create mode 100644 homeassistant/components/deluge/translations/nl.json create mode 100644 homeassistant/components/deluge/translations/no.json create mode 100644 homeassistant/components/deluge/translations/pl.json create mode 100644 homeassistant/components/deluge/translations/pt-BR.json create mode 100644 homeassistant/components/deluge/translations/ru.json create mode 100644 homeassistant/components/deluge/translations/tr.json create mode 100644 homeassistant/components/deluge/translations/zh-Hant.json create mode 100644 homeassistant/components/derivative/translations/bg.json create mode 100644 homeassistant/components/derivative/translations/ca.json create mode 100644 homeassistant/components/derivative/translations/cs.json create mode 100644 homeassistant/components/derivative/translations/de.json create mode 100644 homeassistant/components/derivative/translations/el.json create mode 100644 homeassistant/components/derivative/translations/et.json create mode 100644 homeassistant/components/derivative/translations/fr.json create mode 100644 homeassistant/components/derivative/translations/he.json create mode 100644 homeassistant/components/derivative/translations/hu.json create mode 100644 homeassistant/components/derivative/translations/id.json create mode 100644 homeassistant/components/derivative/translations/it.json create mode 100644 homeassistant/components/derivative/translations/ja.json create mode 100644 homeassistant/components/derivative/translations/nl.json create mode 100644 homeassistant/components/derivative/translations/no.json create mode 100644 homeassistant/components/derivative/translations/pl.json create mode 100644 homeassistant/components/derivative/translations/pt-BR.json create mode 100644 homeassistant/components/derivative/translations/ru.json create mode 100644 homeassistant/components/derivative/translations/sv.json create mode 100644 homeassistant/components/derivative/translations/tr.json create mode 100644 homeassistant/components/derivative/translations/zh-Hans.json create mode 100644 homeassistant/components/derivative/translations/zh-Hant.json create mode 100644 homeassistant/components/discord/translations/bg.json create mode 100644 homeassistant/components/discord/translations/ca.json create mode 100644 homeassistant/components/discord/translations/de.json create mode 100644 homeassistant/components/discord/translations/el.json create mode 100644 homeassistant/components/discord/translations/et.json create mode 100644 homeassistant/components/discord/translations/fr.json create mode 100644 homeassistant/components/discord/translations/he.json create mode 100644 homeassistant/components/discord/translations/hu.json create mode 100644 homeassistant/components/discord/translations/id.json create mode 100644 homeassistant/components/discord/translations/it.json create mode 100644 homeassistant/components/discord/translations/ja.json create mode 100644 homeassistant/components/discord/translations/nl.json create mode 100644 homeassistant/components/discord/translations/no.json create mode 100644 homeassistant/components/discord/translations/pl.json create mode 100644 homeassistant/components/discord/translations/pt-BR.json create mode 100644 homeassistant/components/discord/translations/ru.json create mode 100644 homeassistant/components/discord/translations/tr.json create mode 100644 homeassistant/components/discord/translations/zh-Hant.json create mode 100644 homeassistant/components/dlna_dms/translations/cs.json create mode 100644 homeassistant/components/fibaro/translations/bg.json create mode 100644 homeassistant/components/fibaro/translations/ca.json create mode 100644 homeassistant/components/fibaro/translations/de.json create mode 100644 homeassistant/components/fibaro/translations/el.json create mode 100644 homeassistant/components/fibaro/translations/et.json create mode 100644 homeassistant/components/fibaro/translations/fr.json create mode 100644 homeassistant/components/fibaro/translations/he.json create mode 100644 homeassistant/components/fibaro/translations/hu.json create mode 100644 homeassistant/components/fibaro/translations/id.json create mode 100644 homeassistant/components/fibaro/translations/it.json create mode 100644 homeassistant/components/fibaro/translations/ja.json create mode 100644 homeassistant/components/fibaro/translations/nl.json create mode 100644 homeassistant/components/fibaro/translations/no.json create mode 100644 homeassistant/components/fibaro/translations/pl.json create mode 100644 homeassistant/components/fibaro/translations/pt-BR.json create mode 100644 homeassistant/components/fibaro/translations/ru.json create mode 100644 homeassistant/components/fibaro/translations/tr.json create mode 100644 homeassistant/components/fibaro/translations/zh-Hant.json create mode 100644 homeassistant/components/filesize/translations/bg.json create mode 100644 homeassistant/components/filesize/translations/ca.json create mode 100644 homeassistant/components/filesize/translations/de.json create mode 100644 homeassistant/components/filesize/translations/el.json create mode 100644 homeassistant/components/filesize/translations/et.json create mode 100644 homeassistant/components/filesize/translations/fr.json create mode 100644 homeassistant/components/filesize/translations/he.json create mode 100644 homeassistant/components/filesize/translations/hu.json create mode 100644 homeassistant/components/filesize/translations/id.json create mode 100644 homeassistant/components/filesize/translations/it.json create mode 100644 homeassistant/components/filesize/translations/ja.json create mode 100644 homeassistant/components/filesize/translations/nl.json create mode 100644 homeassistant/components/filesize/translations/no.json create mode 100644 homeassistant/components/filesize/translations/pl.json create mode 100644 homeassistant/components/filesize/translations/pt-BR.json create mode 100644 homeassistant/components/filesize/translations/ru.json create mode 100644 homeassistant/components/filesize/translations/tr.json create mode 100644 homeassistant/components/filesize/translations/zh-Hant.json create mode 100644 homeassistant/components/generic/translations/bg.json create mode 100644 homeassistant/components/generic/translations/ca.json create mode 100644 homeassistant/components/generic/translations/cs.json create mode 100644 homeassistant/components/generic/translations/de.json create mode 100644 homeassistant/components/generic/translations/el.json create mode 100644 homeassistant/components/generic/translations/et.json create mode 100644 homeassistant/components/generic/translations/fr.json create mode 100644 homeassistant/components/generic/translations/he.json create mode 100644 homeassistant/components/generic/translations/hu.json create mode 100644 homeassistant/components/generic/translations/id.json create mode 100644 homeassistant/components/generic/translations/it.json create mode 100644 homeassistant/components/generic/translations/ja.json create mode 100644 homeassistant/components/generic/translations/nl.json create mode 100644 homeassistant/components/generic/translations/no.json create mode 100644 homeassistant/components/generic/translations/pl.json create mode 100644 homeassistant/components/generic/translations/pt-BR.json create mode 100644 homeassistant/components/generic/translations/ru.json create mode 100644 homeassistant/components/generic/translations/tr.json create mode 100644 homeassistant/components/generic/translations/zh-Hant.json create mode 100644 homeassistant/components/google/translations/bg.json create mode 100644 homeassistant/components/google/translations/ca.json create mode 100644 homeassistant/components/google/translations/cs.json create mode 100644 homeassistant/components/google/translations/de.json create mode 100644 homeassistant/components/google/translations/el.json create mode 100644 homeassistant/components/google/translations/es.json create mode 100644 homeassistant/components/google/translations/et.json create mode 100644 homeassistant/components/google/translations/fr.json create mode 100644 homeassistant/components/google/translations/he.json create mode 100644 homeassistant/components/google/translations/hu.json create mode 100644 homeassistant/components/google/translations/id.json create mode 100644 homeassistant/components/google/translations/it.json create mode 100644 homeassistant/components/google/translations/ja.json create mode 100644 homeassistant/components/google/translations/nl.json create mode 100644 homeassistant/components/google/translations/no.json create mode 100644 homeassistant/components/google/translations/pl.json create mode 100644 homeassistant/components/google/translations/pt-BR.json create mode 100644 homeassistant/components/google/translations/ru.json create mode 100644 homeassistant/components/google/translations/tr.json create mode 100644 homeassistant/components/google/translations/zh-Hant.json rename homeassistant/components/{vallox/translations/is.json => integration/translations/bg.json} (73%) create mode 100644 homeassistant/components/integration/translations/ca.json create mode 100644 homeassistant/components/integration/translations/cs.json create mode 100644 homeassistant/components/integration/translations/de.json create mode 100644 homeassistant/components/integration/translations/el.json create mode 100644 homeassistant/components/integration/translations/et.json create mode 100644 homeassistant/components/integration/translations/fr.json create mode 100644 homeassistant/components/integration/translations/he.json create mode 100644 homeassistant/components/integration/translations/hu.json create mode 100644 homeassistant/components/integration/translations/id.json create mode 100644 homeassistant/components/integration/translations/it.json create mode 100644 homeassistant/components/integration/translations/ja.json create mode 100644 homeassistant/components/integration/translations/nl.json create mode 100644 homeassistant/components/integration/translations/no.json create mode 100644 homeassistant/components/integration/translations/pl.json create mode 100644 homeassistant/components/integration/translations/pt-BR.json create mode 100644 homeassistant/components/integration/translations/ru.json create mode 100644 homeassistant/components/integration/translations/tr.json create mode 100644 homeassistant/components/integration/translations/zh-Hans.json create mode 100644 homeassistant/components/integration/translations/zh-Hant.json create mode 100644 homeassistant/components/kaleidescape/translations/cs.json create mode 100644 homeassistant/components/meater/translations/bg.json create mode 100644 homeassistant/components/meater/translations/ca.json create mode 100644 homeassistant/components/meater/translations/cs.json create mode 100644 homeassistant/components/meater/translations/de.json create mode 100644 homeassistant/components/meater/translations/el.json create mode 100644 homeassistant/components/meater/translations/et.json create mode 100644 homeassistant/components/meater/translations/fr.json create mode 100644 homeassistant/components/meater/translations/he.json create mode 100644 homeassistant/components/meater/translations/hu.json create mode 100644 homeassistant/components/meater/translations/id.json create mode 100644 homeassistant/components/meater/translations/it.json create mode 100644 homeassistant/components/meater/translations/ja.json create mode 100644 homeassistant/components/meater/translations/nl.json create mode 100644 homeassistant/components/meater/translations/no.json create mode 100644 homeassistant/components/meater/translations/pl.json create mode 100644 homeassistant/components/meater/translations/pt-BR.json create mode 100644 homeassistant/components/meater/translations/ru.json create mode 100644 homeassistant/components/meater/translations/tr.json create mode 100644 homeassistant/components/meater/translations/zh-Hant.json delete mode 100644 homeassistant/components/meteoclimatic/translations/gl.json delete mode 100644 homeassistant/components/meteoclimatic/translations/pt.json rename homeassistant/components/{vallox/translations/sk.json => min_max/translations/bg.json} (73%) create mode 100644 homeassistant/components/min_max/translations/ca.json create mode 100644 homeassistant/components/min_max/translations/cs.json create mode 100644 homeassistant/components/min_max/translations/de.json create mode 100644 homeassistant/components/min_max/translations/el.json create mode 100644 homeassistant/components/min_max/translations/et.json create mode 100644 homeassistant/components/min_max/translations/fr.json create mode 100644 homeassistant/components/min_max/translations/he.json create mode 100644 homeassistant/components/min_max/translations/hu.json create mode 100644 homeassistant/components/min_max/translations/id.json create mode 100644 homeassistant/components/min_max/translations/it.json create mode 100644 homeassistant/components/min_max/translations/ja.json create mode 100644 homeassistant/components/min_max/translations/nl.json create mode 100644 homeassistant/components/min_max/translations/no.json create mode 100644 homeassistant/components/min_max/translations/pl.json create mode 100644 homeassistant/components/min_max/translations/pt-BR.json create mode 100644 homeassistant/components/min_max/translations/ru.json create mode 100644 homeassistant/components/min_max/translations/sv.json create mode 100644 homeassistant/components/min_max/translations/tr.json create mode 100644 homeassistant/components/min_max/translations/zh-Hans.json create mode 100644 homeassistant/components/min_max/translations/zh-Hant.json create mode 100644 homeassistant/components/moon/translations/cs.json create mode 100644 homeassistant/components/peco/translations/bg.json create mode 100644 homeassistant/components/peco/translations/ca.json create mode 100644 homeassistant/components/peco/translations/cs.json create mode 100644 homeassistant/components/peco/translations/de.json create mode 100644 homeassistant/components/peco/translations/el.json create mode 100644 homeassistant/components/peco/translations/et.json create mode 100644 homeassistant/components/peco/translations/fr.json create mode 100644 homeassistant/components/peco/translations/he.json create mode 100644 homeassistant/components/peco/translations/hu.json create mode 100644 homeassistant/components/peco/translations/id.json create mode 100644 homeassistant/components/peco/translations/it.json create mode 100644 homeassistant/components/peco/translations/ja.json create mode 100644 homeassistant/components/peco/translations/nl.json create mode 100644 homeassistant/components/peco/translations/no.json create mode 100644 homeassistant/components/peco/translations/pl.json create mode 100644 homeassistant/components/peco/translations/pt-BR.json create mode 100644 homeassistant/components/peco/translations/ru.json create mode 100644 homeassistant/components/peco/translations/tr.json create mode 100644 homeassistant/components/peco/translations/zh-Hant.json create mode 100644 homeassistant/components/pure_energie/translations/cs.json create mode 100644 homeassistant/components/qnap_qsw/translations/de.json create mode 100644 homeassistant/components/qnap_qsw/translations/el.json create mode 100644 homeassistant/components/qnap_qsw/translations/et.json create mode 100644 homeassistant/components/qnap_qsw/translations/fr.json create mode 100644 homeassistant/components/qnap_qsw/translations/hu.json create mode 100644 homeassistant/components/qnap_qsw/translations/id.json create mode 100644 homeassistant/components/qnap_qsw/translations/it.json create mode 100644 homeassistant/components/qnap_qsw/translations/nl.json create mode 100644 homeassistant/components/qnap_qsw/translations/no.json create mode 100644 homeassistant/components/qnap_qsw/translations/pl.json create mode 100644 homeassistant/components/qnap_qsw/translations/pt-BR.json create mode 100644 homeassistant/components/qnap_qsw/translations/ru.json create mode 100644 homeassistant/components/qnap_qsw/translations/zh-Hant.json create mode 100644 homeassistant/components/radio_browser/translations/cs.json create mode 100644 homeassistant/components/sabnzbd/translations/de.json create mode 100644 homeassistant/components/sabnzbd/translations/el.json create mode 100644 homeassistant/components/sabnzbd/translations/et.json create mode 100644 homeassistant/components/sabnzbd/translations/fr.json create mode 100644 homeassistant/components/sabnzbd/translations/hu.json create mode 100644 homeassistant/components/sabnzbd/translations/id.json create mode 100644 homeassistant/components/sabnzbd/translations/it.json create mode 100644 homeassistant/components/sabnzbd/translations/nl.json create mode 100644 homeassistant/components/sabnzbd/translations/no.json create mode 100644 homeassistant/components/sabnzbd/translations/pl.json create mode 100644 homeassistant/components/sabnzbd/translations/pt-BR.json create mode 100644 homeassistant/components/sabnzbd/translations/zh-Hant.json create mode 100644 homeassistant/components/season/translations/cs.json create mode 100644 homeassistant/components/senz/translations/bg.json create mode 100644 homeassistant/components/senz/translations/ca.json create mode 100644 homeassistant/components/senz/translations/de.json create mode 100644 homeassistant/components/senz/translations/el.json create mode 100644 homeassistant/components/senz/translations/et.json create mode 100644 homeassistant/components/senz/translations/fr.json create mode 100644 homeassistant/components/senz/translations/he.json create mode 100644 homeassistant/components/senz/translations/hu.json create mode 100644 homeassistant/components/senz/translations/id.json create mode 100644 homeassistant/components/senz/translations/it.json create mode 100644 homeassistant/components/senz/translations/ja.json create mode 100644 homeassistant/components/senz/translations/nl.json create mode 100644 homeassistant/components/senz/translations/no.json create mode 100644 homeassistant/components/senz/translations/pl.json create mode 100644 homeassistant/components/senz/translations/pt-BR.json create mode 100644 homeassistant/components/senz/translations/ru.json create mode 100644 homeassistant/components/senz/translations/tr.json create mode 100644 homeassistant/components/senz/translations/zh-Hant.json create mode 100644 homeassistant/components/slimproto/translations/de.json create mode 100644 homeassistant/components/slimproto/translations/el.json create mode 100644 homeassistant/components/slimproto/translations/et.json create mode 100644 homeassistant/components/slimproto/translations/fr.json create mode 100644 homeassistant/components/slimproto/translations/hu.json create mode 100644 homeassistant/components/slimproto/translations/id.json create mode 100644 homeassistant/components/slimproto/translations/it.json create mode 100644 homeassistant/components/slimproto/translations/nl.json create mode 100644 homeassistant/components/slimproto/translations/no.json create mode 100644 homeassistant/components/slimproto/translations/pl.json create mode 100644 homeassistant/components/slimproto/translations/pt-BR.json create mode 100644 homeassistant/components/slimproto/translations/zh-Hant.json create mode 100644 homeassistant/components/solax/translations/es.json create mode 100644 homeassistant/components/sql/translations/ca.json create mode 100644 homeassistant/components/sql/translations/de.json create mode 100644 homeassistant/components/sql/translations/el.json create mode 100644 homeassistant/components/sql/translations/et.json create mode 100644 homeassistant/components/sql/translations/fr.json create mode 100644 homeassistant/components/sql/translations/hu.json create mode 100644 homeassistant/components/sql/translations/id.json create mode 100644 homeassistant/components/sql/translations/it.json create mode 100644 homeassistant/components/sql/translations/nl.json create mode 100644 homeassistant/components/sql/translations/no.json create mode 100644 homeassistant/components/sql/translations/pl.json create mode 100644 homeassistant/components/sql/translations/pt-BR.json create mode 100644 homeassistant/components/sql/translations/ru.json create mode 100644 homeassistant/components/sql/translations/tr.json create mode 100644 homeassistant/components/sql/translations/zh-Hant.json create mode 100644 homeassistant/components/steam_online/translations/de.json create mode 100644 homeassistant/components/steam_online/translations/el.json create mode 100644 homeassistant/components/steam_online/translations/et.json create mode 100644 homeassistant/components/steam_online/translations/fr.json create mode 100644 homeassistant/components/steam_online/translations/hu.json create mode 100644 homeassistant/components/steam_online/translations/id.json create mode 100644 homeassistant/components/steam_online/translations/it.json create mode 100644 homeassistant/components/steam_online/translations/nl.json create mode 100644 homeassistant/components/steam_online/translations/no.json create mode 100644 homeassistant/components/steam_online/translations/pl.json create mode 100644 homeassistant/components/steam_online/translations/pt-BR.json create mode 100644 homeassistant/components/steam_online/translations/ru.json create mode 100644 homeassistant/components/steam_online/translations/zh-Hant.json create mode 100644 homeassistant/components/switch_as_x/translations/bg.json create mode 100644 homeassistant/components/switch_as_x/translations/cs.json create mode 100644 homeassistant/components/switch_as_x/translations/tr.json create mode 100644 homeassistant/components/switch_as_x/translations/zh-Hans.json create mode 100644 homeassistant/components/tankerkoenig/translations/bg.json create mode 100644 homeassistant/components/tankerkoenig/translations/ca.json create mode 100644 homeassistant/components/tankerkoenig/translations/de.json create mode 100644 homeassistant/components/tankerkoenig/translations/el.json create mode 100644 homeassistant/components/tankerkoenig/translations/et.json create mode 100644 homeassistant/components/tankerkoenig/translations/fr.json create mode 100644 homeassistant/components/tankerkoenig/translations/he.json create mode 100644 homeassistant/components/tankerkoenig/translations/hu.json create mode 100644 homeassistant/components/tankerkoenig/translations/id.json create mode 100644 homeassistant/components/tankerkoenig/translations/it.json create mode 100644 homeassistant/components/tankerkoenig/translations/ja.json create mode 100644 homeassistant/components/tankerkoenig/translations/nl.json create mode 100644 homeassistant/components/tankerkoenig/translations/no.json create mode 100644 homeassistant/components/tankerkoenig/translations/pl.json create mode 100644 homeassistant/components/tankerkoenig/translations/pt-BR.json create mode 100644 homeassistant/components/tankerkoenig/translations/ru.json create mode 100644 homeassistant/components/tankerkoenig/translations/tr.json create mode 100644 homeassistant/components/tankerkoenig/translations/zh-Hant.json create mode 100644 homeassistant/components/tautulli/translations/de.json create mode 100644 homeassistant/components/tautulli/translations/el.json create mode 100644 homeassistant/components/tautulli/translations/et.json create mode 100644 homeassistant/components/tautulli/translations/fr.json create mode 100644 homeassistant/components/tautulli/translations/hu.json create mode 100644 homeassistant/components/tautulli/translations/id.json create mode 100644 homeassistant/components/tautulli/translations/it.json create mode 100644 homeassistant/components/tautulli/translations/nl.json create mode 100644 homeassistant/components/tautulli/translations/no.json create mode 100644 homeassistant/components/tautulli/translations/pl.json create mode 100644 homeassistant/components/tautulli/translations/pt-BR.json create mode 100644 homeassistant/components/tautulli/translations/ru.json create mode 100644 homeassistant/components/tautulli/translations/zh-Hant.json create mode 100644 homeassistant/components/threshold/translations/bg.json create mode 100644 homeassistant/components/threshold/translations/ca.json create mode 100644 homeassistant/components/threshold/translations/de.json create mode 100644 homeassistant/components/threshold/translations/el.json create mode 100644 homeassistant/components/threshold/translations/et.json create mode 100644 homeassistant/components/threshold/translations/fr.json create mode 100644 homeassistant/components/threshold/translations/hu.json create mode 100644 homeassistant/components/threshold/translations/id.json create mode 100644 homeassistant/components/threshold/translations/it.json create mode 100644 homeassistant/components/threshold/translations/ja.json create mode 100644 homeassistant/components/threshold/translations/nl.json create mode 100644 homeassistant/components/threshold/translations/no.json create mode 100644 homeassistant/components/threshold/translations/pl.json create mode 100644 homeassistant/components/threshold/translations/pt-BR.json create mode 100644 homeassistant/components/threshold/translations/ru.json create mode 100644 homeassistant/components/threshold/translations/tr.json create mode 100644 homeassistant/components/threshold/translations/zh-Hans.json create mode 100644 homeassistant/components/threshold/translations/zh-Hant.json create mode 100644 homeassistant/components/tod/translations/bg.json create mode 100644 homeassistant/components/tod/translations/ca.json create mode 100644 homeassistant/components/tod/translations/de.json create mode 100644 homeassistant/components/tod/translations/el.json create mode 100644 homeassistant/components/tod/translations/et.json create mode 100644 homeassistant/components/tod/translations/fr.json create mode 100644 homeassistant/components/tod/translations/he.json create mode 100644 homeassistant/components/tod/translations/hu.json create mode 100644 homeassistant/components/tod/translations/id.json create mode 100644 homeassistant/components/tod/translations/it.json create mode 100644 homeassistant/components/tod/translations/ja.json create mode 100644 homeassistant/components/tod/translations/nl.json create mode 100644 homeassistant/components/tod/translations/no.json create mode 100644 homeassistant/components/tod/translations/pl.json create mode 100644 homeassistant/components/tod/translations/pt-BR.json create mode 100644 homeassistant/components/tod/translations/ru.json create mode 100644 homeassistant/components/tod/translations/tr.json create mode 100644 homeassistant/components/tod/translations/zh-Hans.json create mode 100644 homeassistant/components/tod/translations/zh-Hant.json create mode 100644 homeassistant/components/tomorrowio/translations/bg.json create mode 100644 homeassistant/components/tomorrowio/translations/ca.json create mode 100644 homeassistant/components/tomorrowio/translations/cs.json create mode 100644 homeassistant/components/tomorrowio/translations/de.json create mode 100644 homeassistant/components/tomorrowio/translations/el.json create mode 100644 homeassistant/components/tomorrowio/translations/et.json create mode 100644 homeassistant/components/tomorrowio/translations/fr.json create mode 100644 homeassistant/components/tomorrowio/translations/he.json create mode 100644 homeassistant/components/tomorrowio/translations/hu.json create mode 100644 homeassistant/components/tomorrowio/translations/id.json create mode 100644 homeassistant/components/tomorrowio/translations/it.json create mode 100644 homeassistant/components/tomorrowio/translations/ja.json create mode 100644 homeassistant/components/tomorrowio/translations/nl.json create mode 100644 homeassistant/components/tomorrowio/translations/no.json create mode 100644 homeassistant/components/tomorrowio/translations/pl.json create mode 100644 homeassistant/components/tomorrowio/translations/pt-BR.json create mode 100644 homeassistant/components/tomorrowio/translations/ru.json create mode 100644 homeassistant/components/tomorrowio/translations/sensor.bg.json create mode 100644 homeassistant/components/tomorrowio/translations/sensor.ca.json create mode 100644 homeassistant/components/tomorrowio/translations/sensor.de.json create mode 100644 homeassistant/components/tomorrowio/translations/sensor.el.json create mode 100644 homeassistant/components/tomorrowio/translations/sensor.et.json create mode 100644 homeassistant/components/tomorrowio/translations/sensor.fr.json create mode 100644 homeassistant/components/tomorrowio/translations/sensor.hu.json create mode 100644 homeassistant/components/tomorrowio/translations/sensor.id.json create mode 100644 homeassistant/components/tomorrowio/translations/sensor.it.json create mode 100644 homeassistant/components/tomorrowio/translations/sensor.ja.json create mode 100644 homeassistant/components/tomorrowio/translations/sensor.nl.json create mode 100644 homeassistant/components/tomorrowio/translations/sensor.no.json create mode 100644 homeassistant/components/tomorrowio/translations/sensor.pl.json create mode 100644 homeassistant/components/tomorrowio/translations/sensor.pt-BR.json create mode 100644 homeassistant/components/tomorrowio/translations/sensor.ru.json create mode 100644 homeassistant/components/tomorrowio/translations/sensor.tr.json create mode 100644 homeassistant/components/tomorrowio/translations/sensor.zh-Hant.json create mode 100644 homeassistant/components/tomorrowio/translations/tr.json create mode 100644 homeassistant/components/tomorrowio/translations/zh-Hant.json create mode 100644 homeassistant/components/trafikverket_ferry/translations/de.json create mode 100644 homeassistant/components/trafikverket_ferry/translations/el.json create mode 100644 homeassistant/components/trafikverket_ferry/translations/et.json create mode 100644 homeassistant/components/trafikverket_ferry/translations/fr.json create mode 100644 homeassistant/components/trafikverket_ferry/translations/hu.json create mode 100644 homeassistant/components/trafikverket_ferry/translations/id.json create mode 100644 homeassistant/components/trafikverket_ferry/translations/it.json create mode 100644 homeassistant/components/trafikverket_ferry/translations/nl.json create mode 100644 homeassistant/components/trafikverket_ferry/translations/no.json create mode 100644 homeassistant/components/trafikverket_ferry/translations/pl.json create mode 100644 homeassistant/components/trafikverket_ferry/translations/pt-BR.json create mode 100644 homeassistant/components/trafikverket_ferry/translations/ru.json create mode 100644 homeassistant/components/trafikverket_ferry/translations/zh-Hant.json create mode 100644 homeassistant/components/trafikverket_train/translations/bg.json create mode 100644 homeassistant/components/trafikverket_train/translations/ca.json create mode 100644 homeassistant/components/trafikverket_train/translations/de.json create mode 100644 homeassistant/components/trafikverket_train/translations/el.json create mode 100644 homeassistant/components/trafikverket_train/translations/et.json create mode 100644 homeassistant/components/trafikverket_train/translations/fr.json create mode 100644 homeassistant/components/trafikverket_train/translations/he.json create mode 100644 homeassistant/components/trafikverket_train/translations/hu.json create mode 100644 homeassistant/components/trafikverket_train/translations/id.json create mode 100644 homeassistant/components/trafikverket_train/translations/it.json create mode 100644 homeassistant/components/trafikverket_train/translations/ja.json create mode 100644 homeassistant/components/trafikverket_train/translations/nl.json create mode 100644 homeassistant/components/trafikverket_train/translations/no.json create mode 100644 homeassistant/components/trafikverket_train/translations/pl.json create mode 100644 homeassistant/components/trafikverket_train/translations/pt-BR.json create mode 100644 homeassistant/components/trafikverket_train/translations/ru.json create mode 100644 homeassistant/components/trafikverket_train/translations/tr.json create mode 100644 homeassistant/components/trafikverket_train/translations/zh-Hant.json delete mode 100644 homeassistant/components/twentemilieu/translations/nn.json create mode 100644 homeassistant/components/update/translations/cs.json create mode 100644 homeassistant/components/update/translations/es.json create mode 100644 homeassistant/components/update/translations/he.json create mode 100644 homeassistant/components/update/translations/zh-Hans.json create mode 100644 homeassistant/components/uptime/translations/bg.json create mode 100644 homeassistant/components/uptime/translations/cs.json create mode 100644 homeassistant/components/uptime/translations/id.json create mode 100644 homeassistant/components/uptime/translations/no.json create mode 100644 homeassistant/components/uptime/translations/pl.json create mode 100644 homeassistant/components/uptime/translations/tr.json create mode 100644 homeassistant/components/utility_meter/translations/bg.json create mode 100644 homeassistant/components/utility_meter/translations/ca.json create mode 100644 homeassistant/components/utility_meter/translations/cs.json create mode 100644 homeassistant/components/utility_meter/translations/de.json create mode 100644 homeassistant/components/utility_meter/translations/el.json create mode 100644 homeassistant/components/utility_meter/translations/et.json create mode 100644 homeassistant/components/utility_meter/translations/fr.json create mode 100644 homeassistant/components/utility_meter/translations/hu.json create mode 100644 homeassistant/components/utility_meter/translations/id.json create mode 100644 homeassistant/components/utility_meter/translations/it.json create mode 100644 homeassistant/components/utility_meter/translations/ja.json create mode 100644 homeassistant/components/utility_meter/translations/nl.json create mode 100644 homeassistant/components/utility_meter/translations/no.json create mode 100644 homeassistant/components/utility_meter/translations/pl.json create mode 100644 homeassistant/components/utility_meter/translations/pt-BR.json create mode 100644 homeassistant/components/utility_meter/translations/ru.json create mode 100644 homeassistant/components/utility_meter/translations/tr.json create mode 100644 homeassistant/components/utility_meter/translations/zh-Hans.json create mode 100644 homeassistant/components/utility_meter/translations/zh-Hant.json delete mode 100644 homeassistant/components/vallox/translations/lv.json create mode 100644 homeassistant/components/vulcan/translations/bg.json create mode 100644 homeassistant/components/vulcan/translations/ca.json create mode 100644 homeassistant/components/vulcan/translations/de.json create mode 100644 homeassistant/components/vulcan/translations/el.json create mode 100644 homeassistant/components/vulcan/translations/et.json create mode 100644 homeassistant/components/vulcan/translations/fr.json create mode 100644 homeassistant/components/vulcan/translations/hu.json create mode 100644 homeassistant/components/vulcan/translations/id.json create mode 100644 homeassistant/components/vulcan/translations/it.json create mode 100644 homeassistant/components/vulcan/translations/ja.json create mode 100644 homeassistant/components/vulcan/translations/nl.json create mode 100644 homeassistant/components/vulcan/translations/no.json create mode 100644 homeassistant/components/vulcan/translations/pl.json create mode 100644 homeassistant/components/vulcan/translations/pt-BR.json create mode 100644 homeassistant/components/vulcan/translations/ru.json create mode 100644 homeassistant/components/vulcan/translations/tr.json create mode 100644 homeassistant/components/vulcan/translations/zh-Hant.json create mode 100644 homeassistant/components/webostv/translations/hu.json diff --git a/homeassistant/components/accuweather/translations/ca.json b/homeassistant/components/accuweather/translations/ca.json index 8178a5caef0..feda485d8fd 100644 --- a/homeassistant/components/accuweather/translations/ca.json +++ b/homeassistant/components/accuweather/translations/ca.json @@ -3,6 +3,9 @@ "abort": { "single_instance_allowed": "Ja configurat. Nom\u00e9s \u00e9s possible una sola configuraci\u00f3." }, + "create_entry": { + "default": "Alguns sensors no estan activats de manera predeterminada. Els pots activar des del registre d'entitats, despr\u00e9s de la configuraci\u00f3 de la integraci\u00f3.\nLa previsi\u00f3 meteorol\u00f2gica no est\u00e0 activada de manera predeterminada. Pots activar-la a les opcions de la integraci\u00f3." + }, "error": { "cannot_connect": "Ha fallat la connexi\u00f3", "invalid_api_key": "Clau API inv\u00e0lida", diff --git a/homeassistant/components/accuweather/translations/de.json b/homeassistant/components/accuweather/translations/de.json index 17eb0ee31fc..ac0c430de04 100644 --- a/homeassistant/components/accuweather/translations/de.json +++ b/homeassistant/components/accuweather/translations/de.json @@ -3,6 +3,9 @@ "abort": { "single_instance_allowed": "Bereits konfiguriert. Nur eine einzige Konfiguration m\u00f6glich." }, + "create_entry": { + "default": "Einige Sensoren sind standardm\u00e4\u00dfig nicht aktiviert. Du kannst sie nach der Integrationskonfiguration in der Entit\u00e4tsregistrierung aktivieren.\nDie Wettervorhersage ist nicht standardm\u00e4\u00dfig aktiviert. Du kannst sie in den Integrationsoptionen aktivieren." + }, "error": { "cannot_connect": "Verbindung fehlgeschlagen", "invalid_api_key": "Ung\u00fcltiger API-Schl\u00fcssel", diff --git a/homeassistant/components/accuweather/translations/el.json b/homeassistant/components/accuweather/translations/el.json index 4f7a23e1d6f..43a65158455 100644 --- a/homeassistant/components/accuweather/translations/el.json +++ b/homeassistant/components/accuweather/translations/el.json @@ -3,6 +3,9 @@ "abort": { "single_instance_allowed": "\u0388\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af. \u039c\u03cc\u03bd\u03bf \u03bc\u03af\u03b1 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae." }, + "create_entry": { + "default": "\u039f\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03b9 \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b5\u03c2 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03bf\u03b9 \u03b1\u03c0\u03cc \u03c0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae. \u039c\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03c4\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c3\u03c4\u03bf \u03bc\u03b7\u03c4\u03c1\u03ce\u03bf \u03bf\u03bd\u03c4\u03bf\u03c4\u03ae\u03c4\u03c9\u03bd \u03bc\u03b5\u03c4\u03ac \u03c4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03b5\u03bd\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2.\n \u0397 \u03c0\u03c1\u03cc\u03b3\u03bd\u03c9\u03c3\u03b7 \u03ba\u03b1\u03b9\u03c1\u03bf\u03cd \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7 \u03b1\u03c0\u03cc \u03c0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae. \u039c\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03c4\u03bf \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c3\u03c4\u03b9\u03c2 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7\u03c2." + }, "error": { "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", "invalid_api_key": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03ba\u03bb\u03b5\u03b9\u03b4\u03af API", diff --git a/homeassistant/components/accuweather/translations/en.json b/homeassistant/components/accuweather/translations/en.json index 8f2261b93c7..a984080fd86 100644 --- a/homeassistant/components/accuweather/translations/en.json +++ b/homeassistant/components/accuweather/translations/en.json @@ -3,6 +3,9 @@ "abort": { "single_instance_allowed": "Already configured. Only a single configuration possible." }, + "create_entry": { + "default": "Some sensors are not enabled by default. You can enable them in the entity registry after the integration configuration.\nWeather forecast is not enabled by default. You can enable it in the integration options." + }, "error": { "cannot_connect": "Failed to connect", "invalid_api_key": "Invalid API key", diff --git a/homeassistant/components/accuweather/translations/et.json b/homeassistant/components/accuweather/translations/et.json index 6e2dc1ffd96..429e2dec61e 100644 --- a/homeassistant/components/accuweather/translations/et.json +++ b/homeassistant/components/accuweather/translations/et.json @@ -3,6 +3,9 @@ "abort": { "single_instance_allowed": "Sidumine juba tehtud. V\u00f5imalik on ainult 1 sidumine." }, + "create_entry": { + "default": "M\u00f5ned andurid ei ole vaikimisi lubatud. Saad neid lubada \u00fcksuse registris p\u00e4rast sidumise seadistamist.\nIlmaprognoos ei ole vaikimisi lubatud. Saad selle lubada sidumise valikutes." + }, "error": { "cannot_connect": "\u00dchendamine nurjus", "invalid_api_key": "API v\u00f5ti on vale", diff --git a/homeassistant/components/accuweather/translations/fr.json b/homeassistant/components/accuweather/translations/fr.json index 1de45f8da22..cf407ef3962 100644 --- a/homeassistant/components/accuweather/translations/fr.json +++ b/homeassistant/components/accuweather/translations/fr.json @@ -3,6 +3,9 @@ "abort": { "single_instance_allowed": "D\u00e9j\u00e0 configur\u00e9. Une seule configuration possible." }, + "create_entry": { + "default": "Certains capteurs ne sont pas activ\u00e9s par d\u00e9faut. Vous pouvez les activer dans le registre des entit\u00e9s une fois la configuration de l'int\u00e9gration termin\u00e9e.\nLes pr\u00e9visions m\u00e9t\u00e9orologiques ne sont pas activ\u00e9es par d\u00e9faut. Vous pouvez les activer dans les options de l'int\u00e9gration." + }, "error": { "cannot_connect": "\u00c9chec de connexion", "invalid_api_key": "Cl\u00e9 d'API non valide", @@ -16,7 +19,7 @@ "longitude": "Longitude", "name": "Nom" }, - "description": "Si vous avez besoin d'aide pour la configuration, consultez le site suivant : https://www.home-assistant.io/integrations/accuweather/\n\nCertains capteurs ne sont pas activ\u00e9s par d\u00e9faut. Vous pouvez les activer dans le registre des entit\u00e9s apr\u00e8s la configuration de l'int\u00e9gration.\nLes pr\u00e9visions m\u00e9t\u00e9orologiques ne sont pas activ\u00e9es par d\u00e9faut. Vous pouvez l'activer dans les options d'int\u00e9gration.", + "description": "Si vous avez besoin d'aide pour la configuration, consultez\u00a0: https://www.home-assistant.io/integrations/accuweather/\n\nCertains capteurs ne sont pas activ\u00e9s par d\u00e9faut. Vous pouvez les activer dans le registre des entit\u00e9s une fois la configuration de l'int\u00e9gration termin\u00e9e.\nLes pr\u00e9visions m\u00e9t\u00e9orologiques ne sont pas activ\u00e9es par d\u00e9faut. Vous pouvez les activer dans les options de l'int\u00e9gration.", "title": "AccuWeather" } } diff --git a/homeassistant/components/accuweather/translations/hu.json b/homeassistant/components/accuweather/translations/hu.json index 8b0409d1f22..1b30dd09daf 100644 --- a/homeassistant/components/accuweather/translations/hu.json +++ b/homeassistant/components/accuweather/translations/hu.json @@ -3,6 +3,9 @@ "abort": { "single_instance_allowed": "M\u00e1r konfigur\u00e1lva van. Csak egy konfigur\u00e1ci\u00f3 lehets\u00e9ges." }, + "create_entry": { + "default": "Egyes \u00e9rz\u00e9kel\u0151k alap\u00e9rtelmez\u00e9s szerint nincsenek enged\u00e9lyezve. Az integr\u00e1ci\u00f3s konfigur\u00e1ci\u00f3 ut\u00e1n enged\u00e9lyezheti \u0151ket az entit\u00e1s rendszerle\u00edr\u00f3 adatb\u00e1zis\u00e1ban.\nAz id\u0151j\u00e1r\u00e1s-el\u0151rejelz\u00e9s alap\u00e9rtelmez\u00e9s szerint nincs enged\u00e9lyezve. Ezt az integr\u00e1ci\u00f3s be\u00e1ll\u00edt\u00e1sokban enged\u00e9lyezheti." + }, "error": { "cannot_connect": "Sikertelen csatlakoz\u00e1s", "invalid_api_key": "\u00c9rv\u00e9nytelen API kulcs", @@ -14,7 +17,7 @@ "api_key": "API kulcs", "latitude": "Sz\u00e9less\u00e9g", "longitude": "Hossz\u00fas\u00e1g", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" }, "description": "Ha seg\u00edts\u00e9gre van sz\u00fcks\u00e9ge a konfigur\u00e1l\u00e1shoz, n\u00e9zze meg itt: https://www.home-assistant.io/integrations/accuweather/ \n\nEgyes \u00e9rz\u00e9kel\u0151k alap\u00e9rtelmez\u00e9s szerint nincsenek enged\u00e9lyezve. Az integr\u00e1ci\u00f3s konfigur\u00e1ci\u00f3 ut\u00e1n enged\u00e9lyezheti \u0151ket az entit\u00e1s-nyilv\u00e1ntart\u00e1sban.\nAz id\u0151j\u00e1r\u00e1s-el\u0151rejelz\u00e9s alap\u00e9rtelmez\u00e9s szerint nincs enged\u00e9lyezve. Ezt az integr\u00e1ci\u00f3s be\u00e1ll\u00edt\u00e1sokban enged\u00e9lyezheti.", "title": "AccuWeather" diff --git a/homeassistant/components/accuweather/translations/id.json b/homeassistant/components/accuweather/translations/id.json index 970b3a026b7..7bf9f27e8b2 100644 --- a/homeassistant/components/accuweather/translations/id.json +++ b/homeassistant/components/accuweather/translations/id.json @@ -3,6 +3,9 @@ "abort": { "single_instance_allowed": "Sudah dikonfigurasi. Hanya satu konfigurasi yang diizinkan." }, + "create_entry": { + "default": "Beberapa sensor tidak diaktifkan secara default. Anda dapat mengaktifkannya di registri entitas setelah konfigurasi integrasi.\nPrakiraan cuaca tidak diaktifkan secara default. Anda dapat mengaktifkannya di opsi integrasi." + }, "error": { "cannot_connect": "Gagal terhubung", "invalid_api_key": "Kunci API tidak valid", diff --git a/homeassistant/components/accuweather/translations/it.json b/homeassistant/components/accuweather/translations/it.json index 8a1f9b96463..9daaf378fb4 100644 --- a/homeassistant/components/accuweather/translations/it.json +++ b/homeassistant/components/accuweather/translations/it.json @@ -3,6 +3,9 @@ "abort": { "single_instance_allowed": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione." }, + "create_entry": { + "default": "Alcuni sensori non sono abilitati per impostazione predefinita. Puoi abilitarli nel registro delle entit\u00e0 dopo la configurazione dell'integrazione.\nLe previsioni del tempo non sono abilitate per impostazione predefinita. Puoi abilitarlo nelle opzioni di integrazione." + }, "error": { "cannot_connect": "Impossibile connettersi", "invalid_api_key": "Chiave API non valida", diff --git a/homeassistant/components/accuweather/translations/ja.json b/homeassistant/components/accuweather/translations/ja.json index 10fe398ba04..d05e75e74b5 100644 --- a/homeassistant/components/accuweather/translations/ja.json +++ b/homeassistant/components/accuweather/translations/ja.json @@ -3,6 +3,9 @@ "abort": { "single_instance_allowed": "\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u5358\u4e00\u306e\u8a2d\u5b9a\u3057\u304b\u3067\u304d\u307e\u305b\u3093\u3002" }, + "create_entry": { + "default": "\u4e00\u90e8\u306e\u30bb\u30f3\u30b5\u30fc\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u305b\u3093\u3002\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u69cb\u6210\u5f8c\u3001\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u30ec\u30b8\u30b9\u30c8\u30ea\u3067\u305d\u308c\u3089\u3092\u6709\u52b9\u306b\u3067\u304d\u307e\u3059\u3002\n\u5929\u6c17\u4e88\u5831\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u305b\u3093\u3002\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u6709\u52b9\u306b\u3067\u304d\u307e\u3059\u3002" + }, "error": { "cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f", "invalid_api_key": "\u7121\u52b9\u306aAPI\u30ad\u30fc", diff --git a/homeassistant/components/accuweather/translations/nl.json b/homeassistant/components/accuweather/translations/nl.json index f04d93b5921..2a6dd1a812b 100644 --- a/homeassistant/components/accuweather/translations/nl.json +++ b/homeassistant/components/accuweather/translations/nl.json @@ -3,6 +3,9 @@ "abort": { "single_instance_allowed": "Al geconfigureerd. Slechts een enkele configuratie mogelijk." }, + "create_entry": { + "default": "Sommige sensoren zijn standaard niet ingeschakeld. U kunt ze inschakelen in het entiteitenregister na de integratieconfiguratie.\nWeersvoorspelling is niet standaard ingeschakeld. U kunt deze inschakelen in de integratieopties." + }, "error": { "cannot_connect": "Kan geen verbinding maken", "invalid_api_key": "API-sleutel", diff --git a/homeassistant/components/accuweather/translations/no.json b/homeassistant/components/accuweather/translations/no.json index be87b1ab244..af689b2fd1c 100644 --- a/homeassistant/components/accuweather/translations/no.json +++ b/homeassistant/components/accuweather/translations/no.json @@ -3,6 +3,9 @@ "abort": { "single_instance_allowed": "Allerede konfigurert. Bare \u00e9n enkelt konfigurasjon er mulig." }, + "create_entry": { + "default": "Noen sensorer er ikke aktivert som standard. Du kan aktivere dem i enhetsregisteret etter integrasjonskonfigurasjonen.\n V\u00e6rmelding er ikke aktivert som standard. Du kan aktivere det i integreringsalternativene." + }, "error": { "cannot_connect": "Tilkobling mislyktes", "invalid_api_key": "Ugyldig API-n\u00f8kkel", diff --git a/homeassistant/components/accuweather/translations/pl.json b/homeassistant/components/accuweather/translations/pl.json index 2794bc8b7b6..a8ef8a3bfa0 100644 --- a/homeassistant/components/accuweather/translations/pl.json +++ b/homeassistant/components/accuweather/translations/pl.json @@ -3,6 +3,9 @@ "abort": { "single_instance_allowed": "Ju\u017c skonfigurowano. Mo\u017cliwa jest tylko jedna konfiguracja." }, + "create_entry": { + "default": "Niekt\u00f3re sensory nie s\u0105 domy\u015blnie w\u0142\u0105czone. Mo\u017cesz je w\u0142\u0105czy\u0107 w rejestrze encji po skonfigurowaniu integracji.\nPrognoza pogody nie jest domy\u015blnie w\u0142\u0105czona. Mo\u017cesz to w\u0142\u0105czy\u0107 w opcjach integracji." + }, "error": { "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", "invalid_api_key": "Nieprawid\u0142owy klucz API", diff --git a/homeassistant/components/accuweather/translations/pt-BR.json b/homeassistant/components/accuweather/translations/pt-BR.json index 469dd81ff91..4bb1bbbc97e 100644 --- a/homeassistant/components/accuweather/translations/pt-BR.json +++ b/homeassistant/components/accuweather/translations/pt-BR.json @@ -3,6 +3,9 @@ "abort": { "single_instance_allowed": "J\u00e1 configurado. Apenas uma configura\u00e7\u00e3o \u00e9 poss\u00edvel." }, + "create_entry": { + "default": "Alguns sensores n\u00e3o s\u00e3o ativados por padr\u00e3o. Voc\u00ea pode habilit\u00e1-los no registro da entidade ap\u00f3s a configura\u00e7\u00e3o da integra\u00e7\u00e3o.\n A previs\u00e3o do tempo n\u00e3o est\u00e1 habilitada por padr\u00e3o. Voc\u00ea pode habilit\u00e1-lo nas op\u00e7\u00f5es de integra\u00e7\u00e3o." + }, "error": { "cannot_connect": "Falha ao conectar", "invalid_api_key": "Chave de API inv\u00e1lida", diff --git a/homeassistant/components/accuweather/translations/ru.json b/homeassistant/components/accuweather/translations/ru.json index 7bc767b1baf..dfd24b6f147 100644 --- a/homeassistant/components/accuweather/translations/ru.json +++ b/homeassistant/components/accuweather/translations/ru.json @@ -3,6 +3,9 @@ "abort": { "single_instance_allowed": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e." }, + "create_entry": { + "default": "\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0435\u043d\u0441\u043e\u0440\u044b \u0441\u043a\u0440\u044b\u0442\u044b \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u0440\u043e\u0433\u043d\u043e\u0437 \u043f\u043e\u0433\u043e\u0434\u044b. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u044b\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432 \u0432 \u0440\u0435\u0435\u0441\u0442\u0440\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u043d\u043e\u0437 \u043f\u043e\u0433\u043e\u0434\u044b \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438." + }, "error": { "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", "invalid_api_key": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 API.", diff --git a/homeassistant/components/accuweather/translations/tr.json b/homeassistant/components/accuweather/translations/tr.json index 7b0fa476458..b5efeb7080e 100644 --- a/homeassistant/components/accuweather/translations/tr.json +++ b/homeassistant/components/accuweather/translations/tr.json @@ -3,6 +3,9 @@ "abort": { "single_instance_allowed": "Zaten yap\u0131land\u0131r\u0131lm\u0131\u015f. Yaln\u0131zca tek bir konfig\u00fcrasyon m\u00fcmk\u00fcnd\u00fcr." }, + "create_entry": { + "default": "Baz\u0131 sens\u00f6rler varsay\u0131lan olarak etkin de\u011fildir. Bunlar\u0131, entegrasyon yap\u0131land\u0131rmas\u0131ndan sonra varl\u0131k kay\u0131t defterinde etkinle\u015ftirebilirsiniz.\n Hava tahmini varsay\u0131lan olarak etkin de\u011fildir. Entegrasyon se\u00e7eneklerinde etkinle\u015ftirebilirsiniz." + }, "error": { "cannot_connect": "Ba\u011flanma hatas\u0131", "invalid_api_key": "Ge\u00e7ersiz API anahtar\u0131", diff --git a/homeassistant/components/accuweather/translations/zh-Hant.json b/homeassistant/components/accuweather/translations/zh-Hant.json index fbf72991e92..6d9e7e1c36f 100644 --- a/homeassistant/components/accuweather/translations/zh-Hant.json +++ b/homeassistant/components/accuweather/translations/zh-Hant.json @@ -3,6 +3,9 @@ "abort": { "single_instance_allowed": "\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210\u3001\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u88dd\u7f6e\u3002" }, + "create_entry": { + "default": "\u90e8\u5206\u611f\u6e2c\u5668\u9810\u8a2d\u70ba\u4e0d\u555f\u7528\u72c0\u614b\u3002\u53ef\u4ee5\u7a0d\u5f8c\u65bc\u6574\u5408\u8a2d\u5b9a\u9801\u9762\u4e2d\u7684\u5be6\u9ad4\u8a3b\u518a\u8868\u9032\u884c\u555f\u7528\u3002\n\u5929\u6c23\u9810\u5831\u9810\u8a2d\u70ba\u4e0d\u555f\u7528\u3001\u53ef\u4ee5\u65bc\u6574\u5408\u9078\u9805\u4e2d\u9032\u884c\u555f\u7528\u3002" + }, "error": { "cannot_connect": "\u9023\u7dda\u5931\u6557", "invalid_api_key": "API \u91d1\u9470\u7121\u6548", diff --git a/homeassistant/components/adax/translations/hu.json b/homeassistant/components/adax/translations/hu.json index 9f37837420f..a2a6dcdacaf 100644 --- a/homeassistant/components/adax/translations/hu.json +++ b/homeassistant/components/adax/translations/hu.json @@ -20,9 +20,9 @@ "local": { "data": { "wifi_pswd": "WiFi jelsz\u00f3", - "wifi_ssid": "WiFi ssid" + "wifi_ssid": "Wi-Fi SSID" }, - "description": "\u00c1ll\u00edtsa vissza a f\u0171t\u0151berendez\u00e9st a + \u00e9s az OK gomb nyomvatart\u00e1s\u00e1val, m\u00edg a kijelz\u0151n a \"Reset\" (Vissza\u00e1ll\u00edt\u00e1s) felirat nem jelenik meg. Ezut\u00e1n nyomja meg \u00e9s tartsa lenyomva a f\u0171t\u0151berendez\u00e9s OK gombj\u00e1t, am\u00edg a k\u00e9k led villogni nem kezd, majd nyomja meg a K\u00fcld\u00e9s gombot. A f\u0171t\u0151berendez\u00e9s konfigur\u00e1l\u00e1sa n\u00e9h\u00e1ny percet vehet ig\u00e9nybe." + "description": "\u00c1ll\u00edtsa vissza a f\u0171t\u0151berendez\u00e9st a + \u00e9s az OK gomb nyomvatart\u00e1s\u00e1val, m\u00edg a kijelz\u0151n a \"Reset\" (Vissza\u00e1ll\u00edt\u00e1s) felirat nem jelenik meg. Ezut\u00e1n nyomja meg \u00e9s tartsa lenyomva a f\u0171t\u0151berendez\u00e9s OK gombj\u00e1t, am\u00edg a k\u00e9k led villogni nem kezd, l\u00e9pjen tov\u00e1bb. A f\u0171t\u0151berendez\u00e9s konfigur\u00e1l\u00e1sa n\u00e9h\u00e1ny percet vehet ig\u00e9nybe." }, "user": { "data": { diff --git a/homeassistant/components/adax/translations/nl.json b/homeassistant/components/adax/translations/nl.json index 026c3c06dae..ced3b8bdab0 100644 --- a/homeassistant/components/adax/translations/nl.json +++ b/homeassistant/components/adax/translations/nl.json @@ -31,7 +31,7 @@ "host": "Host", "password": "Wachtwoord" }, - "description": "Selecteer verbindingstype. Lokaal vereist verwarming met bluetooth" + "description": "Selecteer verbindingstype. Lokaal vereist verwarming met Bluetooth." } } } diff --git a/homeassistant/components/aemet/translations/ca.json b/homeassistant/components/aemet/translations/ca.json index 75784ddfc87..7dab53fc049 100644 --- a/homeassistant/components/aemet/translations/ca.json +++ b/homeassistant/components/aemet/translations/ca.json @@ -14,7 +14,7 @@ "longitude": "Longitud", "name": "Nom de la integraci\u00f3" }, - "description": "Configura la integraci\u00f3 d'AEMET OpenData. Per generar la clau API, v\u00e9s a https://opendata.aemet.es/centrodedescargas/altaUsuario", + "description": "Per generar la clau API, v\u00e9s a https://opendata.aemet.es/centrodedescargas/altaUsuario", "title": "AEMET OpenData" } } diff --git a/homeassistant/components/aemet/translations/de.json b/homeassistant/components/aemet/translations/de.json index 0704e7d71ba..25f374f2e43 100644 --- a/homeassistant/components/aemet/translations/de.json +++ b/homeassistant/components/aemet/translations/de.json @@ -14,7 +14,7 @@ "longitude": "L\u00e4ngengrad", "name": "Name der Integration" }, - "description": "Richte die AEMET OpenData Integration ein. Um den API-Schl\u00fcssel zu generieren, besuche https://opendata.aemet.es/centrodedescargas/altaUsuario", + "description": "Um den API-Schl\u00fcssel zu generieren, besuche https://opendata.aemet.es/centrodedescargas/altaUsuario", "title": "AEMET OpenData" } } diff --git a/homeassistant/components/aemet/translations/en.json b/homeassistant/components/aemet/translations/en.json index 3888ccdafc0..7c10d1dc676 100644 --- a/homeassistant/components/aemet/translations/en.json +++ b/homeassistant/components/aemet/translations/en.json @@ -14,7 +14,7 @@ "longitude": "Longitude", "name": "Name of the integration" }, - "description": "Set up AEMET OpenData integration. To generate API key go to https://opendata.aemet.es/centrodedescargas/altaUsuario", + "description": "To generate API key go to https://opendata.aemet.es/centrodedescargas/altaUsuario", "title": "AEMET OpenData" } } diff --git a/homeassistant/components/aemet/translations/et.json b/homeassistant/components/aemet/translations/et.json index 0d542fcc744..04292b3d912 100644 --- a/homeassistant/components/aemet/translations/et.json +++ b/homeassistant/components/aemet/translations/et.json @@ -14,7 +14,7 @@ "longitude": "Pikkuskraad", "name": "Sidumise nimi" }, - "description": "Seadista AEMET OpenData sidumine. API v\u00f5tme loomiseks mine aadressile https://opendata.aemet.es/centrodedescargas/altaUsuario", + "description": "API-v\u00f5tme loomiseks mine aadressile https://opendata.aemet.es/centrodedescargas/altaUsuario", "title": "AEMET OpenData" } } diff --git a/homeassistant/components/aemet/translations/fr.json b/homeassistant/components/aemet/translations/fr.json index 0d3d0e77a5e..bddfd2507bf 100644 --- a/homeassistant/components/aemet/translations/fr.json +++ b/homeassistant/components/aemet/translations/fr.json @@ -14,7 +14,7 @@ "longitude": "Longitude", "name": "Nom de l'int\u00e9gration" }, - "description": "Configurez l'int\u00e9gration AEMET OpenData. Pour g\u00e9n\u00e9rer la cl\u00e9 API, acc\u00e9dez \u00e0 https://opendata.aemet.es/centrodedescargas/altaUsuario", + "description": "Pour g\u00e9n\u00e9rer une cl\u00e9 d'API, rendez-vous sur https://opendata.aemet.es/centrodedescargas/altaUsuario", "title": "AEMET OpenData" } } diff --git a/homeassistant/components/aemet/translations/hu.json b/homeassistant/components/aemet/translations/hu.json index 31a7654efd9..2f2984b1c90 100644 --- a/homeassistant/components/aemet/translations/hu.json +++ b/homeassistant/components/aemet/translations/hu.json @@ -14,7 +14,7 @@ "longitude": "Hossz\u00fas\u00e1g", "name": "Az integr\u00e1ci\u00f3 neve" }, - "description": "\u00c1ll\u00edtsa be az AEMET OpenData integr\u00e1ci\u00f3t. Az API-kulcs el\u0151\u00e1ll\u00edt\u00e1s\u00e1hoz keresse fel a https://opendata.aemet.es/centrodedescargas/altaUsuario webhelyet.", + "description": "Az API-kulcs l\u00e9trehoz\u00e1s\u00e1hoz keresse fel a https://opendata.aemet.es/centrodedescargas/altaUsuario webhelyet", "title": "AEMET OpenData" } } diff --git a/homeassistant/components/aemet/translations/id.json b/homeassistant/components/aemet/translations/id.json index e3a602a9a7c..62239172aae 100644 --- a/homeassistant/components/aemet/translations/id.json +++ b/homeassistant/components/aemet/translations/id.json @@ -14,7 +14,7 @@ "longitude": "Bujur", "name": "Nama integrasi" }, - "description": "Siapkan integrasi AEMET OpenData. Untuk menghasilkan kunci API, buka https://opendata.aemet.es/centrodedescargas/altaUsuario", + "description": "Untuk membuat kunci API, buka https://opendata.aemet.es/centrodedescargas/altaUsuario", "title": "AEMET OpenData" } } diff --git a/homeassistant/components/aemet/translations/it.json b/homeassistant/components/aemet/translations/it.json index a55e003ca4e..4b3f6f2251b 100644 --- a/homeassistant/components/aemet/translations/it.json +++ b/homeassistant/components/aemet/translations/it.json @@ -14,7 +14,7 @@ "longitude": "Logitudine", "name": "Nome dell'integrazione" }, - "description": "Imposta l'integrazione di AEMET OpenData. Per generare la chiave API, vai su https://opendata.aemet.es/centrodedescargas/altaUsuario", + "description": "Per generare la chiave API, vai su https://opendata.aemet.es/centrodescargas/altaUsuario", "title": "AEMET OpenData" } } diff --git a/homeassistant/components/aemet/translations/nl.json b/homeassistant/components/aemet/translations/nl.json index 40fab5d9e0f..abf590e5a36 100644 --- a/homeassistant/components/aemet/translations/nl.json +++ b/homeassistant/components/aemet/translations/nl.json @@ -14,7 +14,7 @@ "longitude": "Lengtegraad", "name": "Naam van de integratie" }, - "description": "Stel AEMET OpenData-integratie in. Ga naar https://opendata.aemet.es/centrodedescargas/altaUsuario om een API-sleutel te genereren", + "description": "Om een API sleutel te genereren ga naar https://opendata.aemet.es/centrodedescargas/altaUsuario", "title": "AEMET OpenData" } } diff --git a/homeassistant/components/aemet/translations/no.json b/homeassistant/components/aemet/translations/no.json index fe36ff835ee..a6076844122 100644 --- a/homeassistant/components/aemet/translations/no.json +++ b/homeassistant/components/aemet/translations/no.json @@ -14,7 +14,7 @@ "longitude": "Lengdegrad", "name": "Navnet p\u00e5 integrasjonen" }, - "description": "Sett opp AEMET OpenData-integrasjon. For \u00e5 generere API-n\u00f8kkel, g\u00e5 til https://opendata.aemet.es/centrodedescargas/altaUsuario", + "description": "For \u00e5 generere API-n\u00f8kkel, g\u00e5 til https://opendata.aemet.es/centrodedescargas/altaUsuario", "title": "AEMET OpenData" } } diff --git a/homeassistant/components/aemet/translations/pl.json b/homeassistant/components/aemet/translations/pl.json index 8531ca47fd6..f1021585140 100644 --- a/homeassistant/components/aemet/translations/pl.json +++ b/homeassistant/components/aemet/translations/pl.json @@ -14,7 +14,7 @@ "longitude": "D\u0142ugo\u015b\u0107 geograficzna", "name": "Nazwa integracji" }, - "description": "Skonfiguruj integracj\u0119 AEMET OpenData. Aby wygenerowa\u0107 klucz API, przejd\u017a do https://opendata.aemet.es/centrodedescargas/altaUsuario", + "description": "Aby wygenerowa\u0107 klucz API, przejd\u017a do https://opendata.aemet.es/centrodedescargas/altaUsuario", "title": "AEMET OpenData" } } diff --git a/homeassistant/components/aemet/translations/pt-BR.json b/homeassistant/components/aemet/translations/pt-BR.json index 6a0c8800b02..7c5972dccd8 100644 --- a/homeassistant/components/aemet/translations/pt-BR.json +++ b/homeassistant/components/aemet/translations/pt-BR.json @@ -14,7 +14,7 @@ "longitude": "Longitude", "name": "Nome da integra\u00e7\u00e3o" }, - "description": "Configure a integra\u00e7\u00e3o AEMET OpenData. Para gerar a chave API acesse https://opendata.aemet.es/centrodedescargas/altaUsuario", + "description": "Para gerar a chave API acesse https://opendata.aemet.es/centrodedescargas/altaUsuario", "title": "AEMET OpenData" } } diff --git a/homeassistant/components/aemet/translations/ru.json b/homeassistant/components/aemet/translations/ru.json index f9278af712b..9d8496cbb2d 100644 --- a/homeassistant/components/aemet/translations/ru.json +++ b/homeassistant/components/aemet/translations/ru.json @@ -14,7 +14,7 @@ "longitude": "\u0414\u043e\u043b\u0433\u043e\u0442\u0430", "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435" }, - "description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Home Assistant \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 AEMET OpenData. \u0427\u0442\u043e\u0431\u044b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043b\u044e\u0447 API, \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 https://opendata.aemet.es/centrodedescargas/altaUsuario.", + "description": "\u0427\u0442\u043e\u0431\u044b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043b\u044e\u0447 API, \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 https://opendata.aemet.es/centrodedescargas/altaUsuario.", "title": "AEMET OpenData" } } diff --git a/homeassistant/components/aemet/translations/tr.json b/homeassistant/components/aemet/translations/tr.json index 7cb0048b0e0..e1e3cae01ff 100644 --- a/homeassistant/components/aemet/translations/tr.json +++ b/homeassistant/components/aemet/translations/tr.json @@ -14,7 +14,7 @@ "longitude": "Boylam", "name": "Entegrasyonun ad\u0131" }, - "description": "AEMET OpenData entegrasyonunu ayarlay\u0131n. API anahtar\u0131 olu\u015fturmak i\u00e7in https://opendata.aemet.es/centrodedescargas/altaUsuario adresine gidin.", + "description": "API anahtar\u0131 olu\u015fturmak i\u00e7in https://opendata.aemet.es/centrodedescargas/altaUsuario adresine gidin.", "title": "AEMET OpenData" } } diff --git a/homeassistant/components/aemet/translations/zh-Hant.json b/homeassistant/components/aemet/translations/zh-Hant.json index e064a6c0192..4d77ca17505 100644 --- a/homeassistant/components/aemet/translations/zh-Hant.json +++ b/homeassistant/components/aemet/translations/zh-Hant.json @@ -14,7 +14,7 @@ "longitude": "\u7d93\u5ea6", "name": "\u6574\u5408\u540d\u7a31" }, - "description": "\u6b32\u8a2d\u5b9a AEMET OpenData \u6574\u5408\u3002\u8acb\u81f3 https://opendata.aemet.es/centrodedescargas/altaUsuario \u7522\u751f API \u91d1\u9470", + "description": "\u8acb\u81f3 https://opendata.aemet.es/centrodedescargas/altaUsuario \u4ee5\u7522\u751f API \u91d1\u9470", "title": "AEMET OpenData" } } diff --git a/homeassistant/components/agent_dvr/translations/hu.json b/homeassistant/components/agent_dvr/translations/hu.json index 83751d72eaf..fdddd0ba92e 100644 --- a/homeassistant/components/agent_dvr/translations/hu.json +++ b/homeassistant/components/agent_dvr/translations/hu.json @@ -4,7 +4,7 @@ "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van" }, "error": { - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "cannot_connect": "Sikertelen csatlakoz\u00e1s" }, "step": { diff --git a/homeassistant/components/airly/translations/ca.json b/homeassistant/components/airly/translations/ca.json index 0d5177df33e..ac956185c14 100644 --- a/homeassistant/components/airly/translations/ca.json +++ b/homeassistant/components/airly/translations/ca.json @@ -15,7 +15,7 @@ "longitude": "Longitud", "name": "Nom" }, - "description": "Configura la integraci\u00f3 de qualitat de l'aire Airly. Per generar la clau API, v\u00e9s a https://developer.airly.eu/register", + "description": "Per generar la clau API, v\u00e9s a https://developer.airly.eu/register", "title": "Airly" } } diff --git a/homeassistant/components/airly/translations/de.json b/homeassistant/components/airly/translations/de.json index b13798c0ae3..216a8c56c6d 100644 --- a/homeassistant/components/airly/translations/de.json +++ b/homeassistant/components/airly/translations/de.json @@ -15,7 +15,7 @@ "longitude": "L\u00e4ngengrad", "name": "Name" }, - "description": "Einrichtung der Airly-Luftqualit\u00e4t Integration. Um einen API-Schl\u00fcssel zu generieren, registriere dich auf https://developer.airly.eu/register", + "description": "Um einen API-Schl\u00fcssel zu generieren, besuche https://developer.airly.eu/register", "title": "Airly" } } diff --git a/homeassistant/components/airly/translations/en.json b/homeassistant/components/airly/translations/en.json index 0a5426c87d8..249905eff2a 100644 --- a/homeassistant/components/airly/translations/en.json +++ b/homeassistant/components/airly/translations/en.json @@ -15,7 +15,7 @@ "longitude": "Longitude", "name": "Name" }, - "description": "Set up Airly air quality integration. To generate API key go to https://developer.airly.eu/register", + "description": "To generate API key go to https://developer.airly.eu/register", "title": "Airly" } } diff --git a/homeassistant/components/airly/translations/et.json b/homeassistant/components/airly/translations/et.json index 6730e131ac2..6a55262ac6c 100644 --- a/homeassistant/components/airly/translations/et.json +++ b/homeassistant/components/airly/translations/et.json @@ -15,7 +15,7 @@ "longitude": "Pikkuskraad", "name": "Nimi" }, - "description": "Seadista Airly \u00f5hukvaliteedi andmete sidumine. API v\u00f5tme loomiseks mine aadressile https://developer.airly.eu/register", + "description": "API-v\u00f5tme loomiseks mine aadressile https://developer.airly.eu/register", "title": "" } } diff --git a/homeassistant/components/airly/translations/fr.json b/homeassistant/components/airly/translations/fr.json index 85d1a3b478e..17a7248f7ad 100644 --- a/homeassistant/components/airly/translations/fr.json +++ b/homeassistant/components/airly/translations/fr.json @@ -15,7 +15,7 @@ "longitude": "Longitude", "name": "Nom" }, - "description": "Configurez l'int\u00e9gration de la qualit\u00e9 de l'air Airly. Pour g\u00e9n\u00e9rer une cl\u00e9 API, rendez-vous sur https://developer.airly.eu/register.", + "description": "Pour g\u00e9n\u00e9rer une cl\u00e9 d'API, rendez-vous sur https://developer.airly.eu/register", "title": "Airly" } } diff --git a/homeassistant/components/airly/translations/hu.json b/homeassistant/components/airly/translations/hu.json index f730edde85f..04d667f4079 100644 --- a/homeassistant/components/airly/translations/hu.json +++ b/homeassistant/components/airly/translations/hu.json @@ -13,9 +13,9 @@ "api_key": "API kulcs", "latitude": "Sz\u00e9less\u00e9g", "longitude": "Hossz\u00fas\u00e1g", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" }, - "description": "Az Airly leveg\u0151min\u0151s\u00e9gi integr\u00e1ci\u00f3j\u00e1nak be\u00e1ll\u00edt\u00e1sa. Api-kulcs l\u00e9trehoz\u00e1s\u00e1hoz nyissa meg a k\u00f6vetkez\u0151 weboldalt: https://developer.airly.eu/register", + "description": "Az API-kulcs l\u00e9trehoz\u00e1s\u00e1hoz keresse fel a https://developer.airly.eu/register webhelyet", "title": "Airly" } } diff --git a/homeassistant/components/airly/translations/id.json b/homeassistant/components/airly/translations/id.json index 57b4c0d95f9..bc97db4135a 100644 --- a/homeassistant/components/airly/translations/id.json +++ b/homeassistant/components/airly/translations/id.json @@ -15,7 +15,7 @@ "longitude": "Bujur", "name": "Nama" }, - "description": "Siapkan integrasi kualitas udara Airly. Untuk membuat kunci API, buka https://developer.airly.eu/register", + "description": "Untuk membuat kunci API, buka https://developer.airly.eu/register", "title": "Airly" } } diff --git a/homeassistant/components/airly/translations/it.json b/homeassistant/components/airly/translations/it.json index 170455ffb15..b96d5c8a74c 100644 --- a/homeassistant/components/airly/translations/it.json +++ b/homeassistant/components/airly/translations/it.json @@ -15,7 +15,7 @@ "longitude": "Logitudine", "name": "Nome" }, - "description": "Configurazione dell'integrazione della qualit\u00e0 dell'aria Airly. Per generare la chiave API vai su https://developer.airly.eu/register", + "description": "Per generare la chiave API, vai su https://developer.airly.eu/register", "title": "Airly" } } diff --git a/homeassistant/components/airly/translations/nl.json b/homeassistant/components/airly/translations/nl.json index 14cbaf1711e..70fbca2074f 100644 --- a/homeassistant/components/airly/translations/nl.json +++ b/homeassistant/components/airly/translations/nl.json @@ -15,7 +15,7 @@ "longitude": "Lengtegraad", "name": "Naam" }, - "description": "Airly-integratie van luchtkwaliteit instellen. Ga naar https://developer.airly.eu/register om de API-sleutel te genereren", + "description": "Om een API sleutel te genereren ga naar https://developer.airly.eu/register", "title": "Airly" } } diff --git a/homeassistant/components/airly/translations/no.json b/homeassistant/components/airly/translations/no.json index 4c81422d93c..015e95af8f2 100644 --- a/homeassistant/components/airly/translations/no.json +++ b/homeassistant/components/airly/translations/no.json @@ -15,7 +15,7 @@ "longitude": "Lengdegrad", "name": "Navn" }, - "description": "Sett opp Airly luftkvalitet integrasjon. For \u00e5 opprette API-n\u00f8kkel, g\u00e5 til [https://developer.airly.eu/register](https://developer.airly.eu/register)", + "description": "For \u00e5 generere API-n\u00f8kkel, g\u00e5 til https://developer.airly.eu/register", "title": "" } } diff --git a/homeassistant/components/airly/translations/pl.json b/homeassistant/components/airly/translations/pl.json index f205a569474..dd44f2bf635 100644 --- a/homeassistant/components/airly/translations/pl.json +++ b/homeassistant/components/airly/translations/pl.json @@ -15,7 +15,7 @@ "longitude": "D\u0142ugo\u015b\u0107 geograficzna", "name": "Nazwa" }, - "description": "Konfiguracja integracji Airly. By wygenerowa\u0107 klucz API, przejd\u017a na stron\u0119 https://developer.airly.eu/register", + "description": "By wygenerowa\u0107 klucz API, przejd\u017a na stron\u0119 https://developer.airly.eu/register", "title": "Airly" } } diff --git a/homeassistant/components/airly/translations/pt-BR.json b/homeassistant/components/airly/translations/pt-BR.json index e1f2fe097a6..0e9913b559c 100644 --- a/homeassistant/components/airly/translations/pt-BR.json +++ b/homeassistant/components/airly/translations/pt-BR.json @@ -15,7 +15,7 @@ "longitude": "Longitude", "name": "Nome" }, - "description": "Configure a integra\u00e7\u00e3o da qualidade do ar airly. Para gerar a chave de API v\u00e1 para https://developer.airly.eu/register", + "description": "Para gerar a chave de API, acesse https://developer.airly.eu/register", "title": "Airly" } } diff --git a/homeassistant/components/airly/translations/ru.json b/homeassistant/components/airly/translations/ru.json index 41ca90a8c02..80c6a98813c 100644 --- a/homeassistant/components/airly/translations/ru.json +++ b/homeassistant/components/airly/translations/ru.json @@ -15,7 +15,7 @@ "longitude": "\u0414\u043e\u043b\u0433\u043e\u0442\u0430", "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435" }, - "description": "\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043f\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0443 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u0434\u0443\u0445\u0430 Airly. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u044e\u0447 API, \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 https://developer.airly.eu/register.", + "description": "\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u044e\u0447 API, \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 https://developer.airly.eu/register.", "title": "Airly" } } diff --git a/homeassistant/components/airly/translations/tr.json b/homeassistant/components/airly/translations/tr.json index fcae9294da2..7f5643be2d0 100644 --- a/homeassistant/components/airly/translations/tr.json +++ b/homeassistant/components/airly/translations/tr.json @@ -15,7 +15,7 @@ "longitude": "Boylam", "name": "Ad" }, - "description": "Airly hava kalitesi entegrasyonunu ayarlay\u0131n. API anahtar\u0131 olu\u015fturmak i\u00e7in https://developer.airly.eu/register adresine gidin.", + "description": "API anahtar\u0131 olu\u015fturmak i\u00e7in https://developer.airly.eu/register adresine gidin.", "title": "Airly" } } diff --git a/homeassistant/components/airly/translations/zh-Hant.json b/homeassistant/components/airly/translations/zh-Hant.json index e289bc7cd50..65f0bf8cde5 100644 --- a/homeassistant/components/airly/translations/zh-Hant.json +++ b/homeassistant/components/airly/translations/zh-Hant.json @@ -15,7 +15,7 @@ "longitude": "\u7d93\u5ea6", "name": "\u540d\u7a31" }, - "description": "\u6b32\u8a2d\u5b9a Airly \u7a7a\u6c23\u54c1\u8cea\u6574\u5408\u3002\u8acb\u81f3 https://developer.airly.eu/register \u7522\u751f API \u91d1\u9470", + "description": "\u8acb\u81f3 https://developer.airly.eu/register \u4ee5\u7522\u751f API \u91d1\u9470", "title": "Airly" } } diff --git a/homeassistant/components/airnow/translations/ca.json b/homeassistant/components/airnow/translations/ca.json index 2db3cfad563..9a2b0aa9afc 100644 --- a/homeassistant/components/airnow/translations/ca.json +++ b/homeassistant/components/airnow/translations/ca.json @@ -17,7 +17,7 @@ "longitude": "Longitud", "radius": "Radi de l'estaci\u00f3 (milles; opcional)" }, - "description": "Configura la integraci\u00f3 de qualitat d'aire AirNow. Per generar la clau API, v\u00e9s a https://docs.airnowapi.org/account/request/", + "description": "Per generar la clau API, v\u00e9s a https://docs.airnowapi.org/account/request/", "title": "AirNow" } } diff --git a/homeassistant/components/airnow/translations/de.json b/homeassistant/components/airnow/translations/de.json index adf9ddf85a3..3c207a39cce 100644 --- a/homeassistant/components/airnow/translations/de.json +++ b/homeassistant/components/airnow/translations/de.json @@ -17,7 +17,7 @@ "longitude": "L\u00e4ngengrad", "radius": "Stationsradius (Meilen; optional)" }, - "description": "Richte die AirNow-Luftqualit\u00e4tsintegration ein. Um den API-Schl\u00fcssel zu generieren, besuche https://docs.airnowapi.org/account/request/.", + "description": "Um den API-Schl\u00fcssel zu generieren, besuche https://docs.airnowapi.org/account/request/", "title": "AirNow" } } diff --git a/homeassistant/components/airnow/translations/en.json b/homeassistant/components/airnow/translations/en.json index 371bb270ac1..cb3081284b4 100644 --- a/homeassistant/components/airnow/translations/en.json +++ b/homeassistant/components/airnow/translations/en.json @@ -17,7 +17,7 @@ "longitude": "Longitude", "radius": "Station Radius (miles; optional)" }, - "description": "Set up AirNow air quality integration. To generate API key go to https://docs.airnowapi.org/account/request/", + "description": "To generate API key go to https://docs.airnowapi.org/account/request/", "title": "AirNow" } } diff --git a/homeassistant/components/airnow/translations/et.json b/homeassistant/components/airnow/translations/et.json index 52b2bb618e0..3bdf8661d36 100644 --- a/homeassistant/components/airnow/translations/et.json +++ b/homeassistant/components/airnow/translations/et.json @@ -17,7 +17,7 @@ "longitude": "Pikkuskraad", "radius": "Jaama raadius (miilid; valikuline)" }, - "description": "Seadista AirNow \u00f5hukvaliteedi sidumine. API-v\u00f5tme loomiseks mine aadressile https://docs.airnowapi.org/account/request/", + "description": "API-v\u00f5tme loomiseks mine aadressile https://docs.airnowapi.org/account/request/", "title": "" } } diff --git a/homeassistant/components/airnow/translations/fr.json b/homeassistant/components/airnow/translations/fr.json index 1cfe1652771..2da7427e1be 100644 --- a/homeassistant/components/airnow/translations/fr.json +++ b/homeassistant/components/airnow/translations/fr.json @@ -17,7 +17,7 @@ "longitude": "Longitude", "radius": "Rayon d'action de la station (en miles, facultatif)" }, - "description": "Configurez l'int\u00e9gration de la qualit\u00e9 de l'air AirNow. Pour g\u00e9n\u00e9rer la cl\u00e9 API, acc\u00e9dez \u00e0 https://docs.airnowapi.org/account/request/", + "description": "Pour g\u00e9n\u00e9rer une cl\u00e9 d'API, rendez-vous sur https://docs.airnowapi.org/account/request/", "title": "AirNow" } } diff --git a/homeassistant/components/airnow/translations/hu.json b/homeassistant/components/airnow/translations/hu.json index 3f1bef471ee..52bf8cd63a0 100644 --- a/homeassistant/components/airnow/translations/hu.json +++ b/homeassistant/components/airnow/translations/hu.json @@ -17,7 +17,7 @@ "longitude": "Hossz\u00fas\u00e1g", "radius": "\u00c1llom\u00e1s sugara (m\u00e9rf\u00f6ld; opcion\u00e1lis)" }, - "description": "\u00c1ll\u00edtsa be az AirNow leveg\u0151min\u0151s\u00e9gi integr\u00e1ci\u00f3t. Az API-kulcs el\u0151\u00e1ll\u00edt\u00e1s\u00e1hoz keresse fel a https://docs.airnowapi.org/account/request/ oldalt.", + "description": "Az API-kulcs l\u00e9trehoz\u00e1s\u00e1hoz keresse fel a https://docs.airnowapi.org/account/request/ webhelyet", "title": "AirNow" } } diff --git a/homeassistant/components/airnow/translations/id.json b/homeassistant/components/airnow/translations/id.json index 66fdff72fae..4d4ac987320 100644 --- a/homeassistant/components/airnow/translations/id.json +++ b/homeassistant/components/airnow/translations/id.json @@ -17,7 +17,7 @@ "longitude": "Bujur", "radius": "Radius Stasiun (mil; opsional)" }, - "description": "Siapkan integrasi kualitas udara AirNow. Untuk membuat kunci API buka https://docs.airnowapi.org/account/request/", + "description": "Untuk membuat kunci API buka https://docs.airnowapi.org/account/request/", "title": "AirNow" } } diff --git a/homeassistant/components/airnow/translations/it.json b/homeassistant/components/airnow/translations/it.json index 9dda15dfbd2..77715910c75 100644 --- a/homeassistant/components/airnow/translations/it.json +++ b/homeassistant/components/airnow/translations/it.json @@ -17,7 +17,7 @@ "longitude": "Logitudine", "radius": "Raggio stazione (miglia; opzionale)" }, - "description": "Configura l'integrazione per la qualit\u00e0 dell'aria AirNow. Per generare la chiave API, vai su https://docs.airnowapi.org/account/request/", + "description": "Per generare la chiave API vai su https://docs.airnowapi.org/account/request/", "title": "AirNow" } } diff --git a/homeassistant/components/airnow/translations/nl.json b/homeassistant/components/airnow/translations/nl.json index 090a5363823..5e5e33bf93d 100644 --- a/homeassistant/components/airnow/translations/nl.json +++ b/homeassistant/components/airnow/translations/nl.json @@ -17,7 +17,7 @@ "longitude": "Lengtegraad", "radius": "Stationsradius (mijl; optioneel)" }, - "description": "AirNow luchtkwaliteit integratie opzetten. Om een API sleutel te genereren ga naar https://docs.airnowapi.org/account/request/", + "description": "Om een API sleutel te genereren ga naar https://docs.airnowapi.org/account/request/", "title": "AirNow" } } diff --git a/homeassistant/components/airnow/translations/no.json b/homeassistant/components/airnow/translations/no.json index 19fa7e12207..b56b7096e2b 100644 --- a/homeassistant/components/airnow/translations/no.json +++ b/homeassistant/components/airnow/translations/no.json @@ -17,7 +17,7 @@ "longitude": "Lengdegrad", "radius": "Stasjonsradius (miles; valgfritt)" }, - "description": "Konfigurer integrering av luftkvalitet i AirNow. For \u00e5 generere en API-n\u00f8kkel, g\u00e5r du til https://docs.airnowapi.org/account/request/", + "description": "For \u00e5 generere API-n\u00f8kkel, g\u00e5 til https://docs.airnowapi.org/account/request/", "title": "" } } diff --git a/homeassistant/components/airnow/translations/pl.json b/homeassistant/components/airnow/translations/pl.json index fe4310607b9..f29a48dc47b 100644 --- a/homeassistant/components/airnow/translations/pl.json +++ b/homeassistant/components/airnow/translations/pl.json @@ -17,7 +17,7 @@ "longitude": "D\u0142ugo\u015b\u0107 geograficzna", "radius": "Promie\u0144 od stacji (w milach; opcjonalnie)" }, - "description": "Konfiguracja integracji jako\u015bci powietrza AirNow. Aby wygenerowa\u0107 klucz API, przejd\u017a do https://docs.airnowapi.org/account/request/", + "description": "Aby wygenerowa\u0107 klucz API, przejd\u017a do https://docs.airnowapi.org/account/request/", "title": "AirNow" } } diff --git a/homeassistant/components/airnow/translations/pt-BR.json b/homeassistant/components/airnow/translations/pt-BR.json index fa24093b419..c1bda0098cd 100644 --- a/homeassistant/components/airnow/translations/pt-BR.json +++ b/homeassistant/components/airnow/translations/pt-BR.json @@ -17,7 +17,7 @@ "longitude": "Longitude", "radius": "Raio da Esta\u00e7\u00e3o (milhas; opcional)" }, - "description": "Configure a integra\u00e7\u00e3o da qualidade do ar AirNow. Para gerar a chave de API, acesse https://docs.airnowapi.org/account/request/", + "description": "Para gerar a chave de API, acesse https://docs.airnowapi.org/account/request/", "title": "AirNow" } } diff --git a/homeassistant/components/airnow/translations/ru.json b/homeassistant/components/airnow/translations/ru.json index 9667accb7c4..c5a9137f4c7 100644 --- a/homeassistant/components/airnow/translations/ru.json +++ b/homeassistant/components/airnow/translations/ru.json @@ -17,7 +17,7 @@ "longitude": "\u0414\u043e\u043b\u0433\u043e\u0442\u0430", "radius": "\u0420\u0430\u0434\u0438\u0443\u0441 \u0441\u0442\u0430\u043d\u0446\u0438\u0438 (\u0432 \u043c\u0438\u043b\u044f\u0445; \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)" }, - "description": "\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043f\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0443 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u0434\u0443\u0445\u0430 AirNow. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u044e\u0447 API, \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 https://docs.airnowapi.org/account/request/.", + "description": "\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u044e\u0447 API, \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 https://docs.airnowapi.org/account/request/.", "title": "AirNow" } } diff --git a/homeassistant/components/airnow/translations/tr.json b/homeassistant/components/airnow/translations/tr.json index 590332b496c..1f80d7805da 100644 --- a/homeassistant/components/airnow/translations/tr.json +++ b/homeassistant/components/airnow/translations/tr.json @@ -17,7 +17,7 @@ "longitude": "Boylam", "radius": "\u0130stasyon Yar\u0131\u00e7ap\u0131 (mil; iste\u011fe ba\u011fl\u0131)" }, - "description": "AirNow hava kalitesi entegrasyonunu ayarlay\u0131n. API anahtar\u0131 olu\u015fturmak i\u00e7in https://docs.airnowapi.org/account/request/ adresine gidin.", + "description": "API anahtar\u0131 olu\u015fturmak i\u00e7in https://docs.airnowapi.org/account/request/ adresine gidin.", "title": "AirNow" } } diff --git a/homeassistant/components/airnow/translations/zh-Hant.json b/homeassistant/components/airnow/translations/zh-Hant.json index 08d7aab5878..bb18a5d8975 100644 --- a/homeassistant/components/airnow/translations/zh-Hant.json +++ b/homeassistant/components/airnow/translations/zh-Hant.json @@ -17,7 +17,7 @@ "longitude": "\u7d93\u5ea6", "radius": "\u89c0\u6e2c\u7ad9\u534a\u5f91\uff08\u82f1\u91cc\uff1b\u9078\u9805\uff09" }, - "description": "\u6b32\u8a2d\u5b9a AirNow \u7a7a\u6c23\u54c1\u8cea\u6574\u5408\u3002\u8acb\u81f3 https://docs.airnowapi.org/account/request/ \u7522\u751f API \u91d1\u9470", + "description": "\u8acb\u81f3 https://docs.airnowapi.org/account/request/ \u4ee5\u7522\u751f API \u91d1\u9470", "title": "AirNow" } } diff --git a/homeassistant/components/airvisual/translations/sensor.fr.json b/homeassistant/components/airvisual/translations/sensor.fr.json index 47feff6bd79..2f9aacc775b 100644 --- a/homeassistant/components/airvisual/translations/sensor.fr.json +++ b/homeassistant/components/airvisual/translations/sensor.fr.json @@ -10,7 +10,7 @@ }, "airvisual__pollutant_level": { "good": "Bon", - "hazardous": "Hasardeux", + "hazardous": "Dangereux", "moderate": "Mod\u00e9r\u00e9", "unhealthy": "Malsain", "unhealthy_sensitive": "Malsain pour les groupes sensibles", diff --git a/homeassistant/components/airzone/translations/ca.json b/homeassistant/components/airzone/translations/ca.json index bbff47a9904..111a53fcf3a 100644 --- a/homeassistant/components/airzone/translations/ca.json +++ b/homeassistant/components/airzone/translations/ca.json @@ -4,7 +4,8 @@ "already_configured": "El dispositiu ja est\u00e0 configurat" }, "error": { - "cannot_connect": "Ha fallat la connexi\u00f3" + "cannot_connect": "Ha fallat la connexi\u00f3", + "invalid_system_id": "ID de sistema Airzone inv\u00e0lid" }, "step": { "user": { diff --git a/homeassistant/components/airzone/translations/cs.json b/homeassistant/components/airzone/translations/cs.json new file mode 100644 index 00000000000..aad89c1cbe3 --- /dev/null +++ b/homeassistant/components/airzone/translations/cs.json @@ -0,0 +1,18 @@ +{ + "config": { + "abort": { + "already_configured": "Za\u0159\u00edzen\u00ed je ji\u017e nastaveno" + }, + "error": { + "cannot_connect": "Nepoda\u0159ilo se p\u0159ipojit" + }, + "step": { + "user": { + "data": { + "host": "Hostitel", + "port": "Port" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/airzone/translations/de.json b/homeassistant/components/airzone/translations/de.json index 7b3f5030f06..2edb50330f4 100644 --- a/homeassistant/components/airzone/translations/de.json +++ b/homeassistant/components/airzone/translations/de.json @@ -4,7 +4,8 @@ "already_configured": "Ger\u00e4t ist bereits konfiguriert" }, "error": { - "cannot_connect": "Verbindung fehlgeschlagen" + "cannot_connect": "Verbindung fehlgeschlagen", + "invalid_system_id": "Ung\u00fcltige Airzone-System-ID" }, "step": { "user": { diff --git a/homeassistant/components/airzone/translations/el.json b/homeassistant/components/airzone/translations/el.json index 7b04fe27743..13da6efe27d 100644 --- a/homeassistant/components/airzone/translations/el.json +++ b/homeassistant/components/airzone/translations/el.json @@ -4,7 +4,8 @@ "already_configured": "\u0397 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03b8\u03b5\u03af" }, "error": { - "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2" + "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", + "invalid_system_id": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03b1\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c3\u03c5\u03c3\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2 Airzone" }, "step": { "user": { diff --git a/homeassistant/components/airzone/translations/et.json b/homeassistant/components/airzone/translations/et.json index 307aa0de0a5..dff9d1173f6 100644 --- a/homeassistant/components/airzone/translations/et.json +++ b/homeassistant/components/airzone/translations/et.json @@ -4,7 +4,8 @@ "already_configured": "Seade on juba h\u00e4\u00e4lestatud" }, "error": { - "cannot_connect": "\u00dchendamine nurjus" + "cannot_connect": "\u00dchendamine nurjus", + "invalid_system_id": "Airzone'i s\u00fcsteemi ID on vigane" }, "step": { "user": { diff --git a/homeassistant/components/airzone/translations/fr.json b/homeassistant/components/airzone/translations/fr.json index 1fdf1e4397b..40d22ad8bd9 100644 --- a/homeassistant/components/airzone/translations/fr.json +++ b/homeassistant/components/airzone/translations/fr.json @@ -4,7 +4,8 @@ "already_configured": "L'appareil est d\u00e9j\u00e0 configur\u00e9" }, "error": { - "cannot_connect": "\u00c9chec de connexion" + "cannot_connect": "\u00c9chec de connexion", + "invalid_system_id": "ID syst\u00e8me Airzone non valide" }, "step": { "user": { diff --git a/homeassistant/components/airzone/translations/hu.json b/homeassistant/components/airzone/translations/hu.json index 88e7449a1c4..9a835f88dfc 100644 --- a/homeassistant/components/airzone/translations/hu.json +++ b/homeassistant/components/airzone/translations/hu.json @@ -4,7 +4,8 @@ "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van" }, "error": { - "cannot_connect": "Sikertelen csatlakoz\u00e1s" + "cannot_connect": "Sikertelen csatlakoz\u00e1s", + "invalid_system_id": "\u00c9rv\u00e9nytelen Airzone rendszerazonos\u00edt\u00f3" }, "step": { "user": { diff --git a/homeassistant/components/airzone/translations/id.json b/homeassistant/components/airzone/translations/id.json index c37058bac34..ec37639811b 100644 --- a/homeassistant/components/airzone/translations/id.json +++ b/homeassistant/components/airzone/translations/id.json @@ -4,7 +4,8 @@ "already_configured": "Perangkat sudah dikonfigurasi" }, "error": { - "cannot_connect": "Gagal terhubung" + "cannot_connect": "Gagal terhubung", + "invalid_system_id": "ID Sistem Airzone Tidak Valid" }, "step": { "user": { diff --git a/homeassistant/components/airzone/translations/it.json b/homeassistant/components/airzone/translations/it.json index db377b36fcc..32f8c67b545 100644 --- a/homeassistant/components/airzone/translations/it.json +++ b/homeassistant/components/airzone/translations/it.json @@ -4,7 +4,8 @@ "already_configured": "Il dispositivo \u00e8 gi\u00e0 configurato" }, "error": { - "cannot_connect": "Impossibile connettersi" + "cannot_connect": "Impossibile connettersi", + "invalid_system_id": "ID sistema Airzone non valido" }, "step": { "user": { diff --git a/homeassistant/components/airzone/translations/ja.json b/homeassistant/components/airzone/translations/ja.json index 71b8bf1c908..28ebf809dbf 100644 --- a/homeassistant/components/airzone/translations/ja.json +++ b/homeassistant/components/airzone/translations/ja.json @@ -4,7 +4,8 @@ "already_configured": "\u30c7\u30d0\u30a4\u30b9\u306f\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059" }, "error": { - "cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f" + "cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f", + "invalid_system_id": "Airzone\u30b7\u30b9\u30c6\u30e0ID\u304c\u7121\u52b9\u3067\u3059" }, "step": { "user": { diff --git a/homeassistant/components/airzone/translations/nl.json b/homeassistant/components/airzone/translations/nl.json index 4611c23eb1e..0e84f756de1 100644 --- a/homeassistant/components/airzone/translations/nl.json +++ b/homeassistant/components/airzone/translations/nl.json @@ -4,7 +4,8 @@ "already_configured": "Apparaat is al geconfigureerd" }, "error": { - "cannot_connect": "Kon niet verbinden" + "cannot_connect": "Kon niet verbinden", + "invalid_system_id": "Ongeldige Airzone systeem ID" }, "step": { "user": { diff --git a/homeassistant/components/airzone/translations/no.json b/homeassistant/components/airzone/translations/no.json index f078016b761..6eeaee3a53a 100644 --- a/homeassistant/components/airzone/translations/no.json +++ b/homeassistant/components/airzone/translations/no.json @@ -4,7 +4,8 @@ "already_configured": "Enheten er allerede konfigurert" }, "error": { - "cannot_connect": "Tilkobling mislyktes" + "cannot_connect": "Tilkobling mislyktes", + "invalid_system_id": "Ugyldig Airzone System ID" }, "step": { "user": { diff --git a/homeassistant/components/airzone/translations/pl.json b/homeassistant/components/airzone/translations/pl.json index 38dc359b248..e389618ff80 100644 --- a/homeassistant/components/airzone/translations/pl.json +++ b/homeassistant/components/airzone/translations/pl.json @@ -4,7 +4,8 @@ "already_configured": "Urz\u0105dzenie jest ju\u017c skonfigurowane" }, "error": { - "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia" + "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", + "invalid_system_id": "Nieprawid\u0142owy identyfikator systemu Airzone" }, "step": { "user": { diff --git a/homeassistant/components/airzone/translations/pt-BR.json b/homeassistant/components/airzone/translations/pt-BR.json index 1a8df1fef99..c2668c937b4 100644 --- a/homeassistant/components/airzone/translations/pt-BR.json +++ b/homeassistant/components/airzone/translations/pt-BR.json @@ -4,7 +4,8 @@ "already_configured": "Dispositivo j\u00e1 est\u00e1 configurado" }, "error": { - "cannot_connect": "Falha ao conectar" + "cannot_connect": "Falha ao conectar", + "invalid_system_id": "ID do sistema Airzone inv\u00e1lido" }, "step": { "user": { diff --git a/homeassistant/components/airzone/translations/ru.json b/homeassistant/components/airzone/translations/ru.json index 6032b0bdf00..d480866b262 100644 --- a/homeassistant/components/airzone/translations/ru.json +++ b/homeassistant/components/airzone/translations/ru.json @@ -4,7 +4,8 @@ "already_configured": "\u042d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 Home Assistant." }, "error": { - "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f." + "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", + "invalid_system_id": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0438\u0441\u0442\u0435\u043c\u044b Airzone." }, "step": { "user": { diff --git a/homeassistant/components/airzone/translations/tr.json b/homeassistant/components/airzone/translations/tr.json new file mode 100644 index 00000000000..c911478ec32 --- /dev/null +++ b/homeassistant/components/airzone/translations/tr.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "Cihaz zaten yap\u0131land\u0131r\u0131lm\u0131\u015f" + }, + "error": { + "cannot_connect": "Ba\u011flanma hatas\u0131", + "invalid_system_id": "Ge\u00e7ersiz Airzone Sistem Kimli\u011fi" + }, + "step": { + "user": { + "data": { + "host": "Sunucu", + "port": "Port" + }, + "description": "Airzone entegrasyonunu ayarlay\u0131n." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/airzone/translations/zh-Hant.json b/homeassistant/components/airzone/translations/zh-Hant.json index 01e2db9730b..42166fe39ec 100644 --- a/homeassistant/components/airzone/translations/zh-Hant.json +++ b/homeassistant/components/airzone/translations/zh-Hant.json @@ -4,7 +4,8 @@ "already_configured": "\u88dd\u7f6e\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210" }, "error": { - "cannot_connect": "\u9023\u7dda\u5931\u6557" + "cannot_connect": "\u9023\u7dda\u5931\u6557", + "invalid_system_id": "\u7121\u6548\u7684 Airzone \u7cfb\u7d71 ID" }, "step": { "user": { diff --git a/homeassistant/components/almond/translations/hu.json b/homeassistant/components/almond/translations/hu.json index b0a3a1b2461..b424675faaa 100644 --- a/homeassistant/components/almond/translations/hu.json +++ b/homeassistant/components/almond/translations/hu.json @@ -3,7 +3,7 @@ "abort": { "cannot_connect": "Sikertelen csatlakoz\u00e1s", "missing_configuration": "A komponens nincs konfigur\u00e1lva. K\u00e9rem, k\u00f6vesse a dokument\u00e1ci\u00f3t.", - "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3t [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lsz.", + "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3 [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lhat\u00f3.", "single_instance_allowed": "M\u00e1r konfigur\u00e1lva van. Csak egy konfigur\u00e1ci\u00f3 lehets\u00e9ges." }, "step": { @@ -12,7 +12,7 @@ "title": "Almond - Home Assistant b\u0151v\u00edtm\u00e9nnyel" }, "pick_implementation": { - "title": "V\u00e1lassz hiteles\u00edt\u00e9si m\u00f3dszert" + "title": "V\u00e1lasszon egy hiteles\u00edt\u00e9si m\u00f3dszert" } } } diff --git a/homeassistant/components/almond/translations/it.json b/homeassistant/components/almond/translations/it.json index 58eadad0d80..1d028e73111 100644 --- a/homeassistant/components/almond/translations/it.json +++ b/homeassistant/components/almond/translations/it.json @@ -2,7 +2,7 @@ "config": { "abort": { "cannot_connect": "Impossibile connettersi", - "missing_configuration": "Il componente non \u00e8 configurato. Si prega di seguire la documentazione.", + "missing_configuration": "Il componente non \u00e8 configurato. Segui la documentazione.", "no_url_available": "Nessun URL disponibile. Per informazioni su questo errore, [controlla la sezione della guida]({docs_url})", "single_instance_allowed": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione." }, diff --git a/homeassistant/components/ambee/translations/hu.json b/homeassistant/components/ambee/translations/hu.json index e4cef44c5ba..80b14ac7470 100644 --- a/homeassistant/components/ambee/translations/hu.json +++ b/homeassistant/components/ambee/translations/hu.json @@ -19,7 +19,7 @@ "api_key": "API kulcs", "latitude": "Sz\u00e9less\u00e9g", "longitude": "Hossz\u00fas\u00e1g", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" }, "description": "Integr\u00e1lja \u00f6ssze Ambeet Home Assistanttal." } diff --git a/homeassistant/components/ambiclimate/translations/hu.json b/homeassistant/components/ambiclimate/translations/hu.json index 1e67873f1aa..3de93421f42 100644 --- a/homeassistant/components/ambiclimate/translations/hu.json +++ b/homeassistant/components/ambiclimate/translations/hu.json @@ -9,12 +9,12 @@ "default": "Sikeres hiteles\u00edt\u00e9s" }, "error": { - "follow_link": "K\u00e9rem, k\u00f6vesse a hivatkoz\u00e1st \u00e9s hiteles\u00edtse mag\u00e1t miel\u0151tt megnyomn\u00e1 a K\u00fcld\u00e9s gombot", + "follow_link": "K\u00e9rem, k\u00f6vesse a hivatkoz\u00e1st \u00e9s hiteles\u00edtse mag\u00e1t miel\u0151tt folytatn\u00e1", "no_token": "Ambiclimate-al nem siker\u00fclt a hiteles\u00edt\u00e9s" }, "step": { "auth": { - "description": "K\u00e9rj\u00fck, k\u00f6vesse ezt a [link]({authorization_url}}) \u00e9s ** Enged\u00e9lyezze ** a hozz\u00e1f\u00e9r\u00e9st Ambiclimate -fi\u00f3kj\u00e1hoz, majd t\u00e9rjen vissza, \u00e9s nyomja meg az al\u00e1bbi ** K\u00fcld\u00e9s ** gombot.\n(Gy\u0151z\u0151dj\u00f6n meg arr\u00f3l, hogy a megadott visszah\u00edv\u00e1si URL {cb_url})", + "description": "K\u00e9rj\u00fck, k\u00f6vesse ezt a [link]({authorization_url}}) \u00e9s **Enged\u00e9lyezze** a hozz\u00e1f\u00e9r\u00e9st Ambiclimate -fi\u00f3kj\u00e1hoz, majd t\u00e9rjen vissza, \u00e9s nyomja meg az al\u00e1bbi **Mehet** gombot.\n(Gy\u0151z\u0151dj\u00f6n meg arr\u00f3l, hogy a megadott visszah\u00edv\u00e1si URL {cb_url})", "title": "Ambiclimate hiteles\u00edt\u00e9se" } } diff --git a/homeassistant/components/ambiclimate/translations/it.json b/homeassistant/components/ambiclimate/translations/it.json index ccf0836ee1d..d48f6748bbe 100644 --- a/homeassistant/components/ambiclimate/translations/it.json +++ b/homeassistant/components/ambiclimate/translations/it.json @@ -3,13 +3,13 @@ "abort": { "access_token": "Errore sconosciuto durante la generazione di un token di accesso.", "already_configured": "L'account \u00e8 gi\u00e0 configurato", - "missing_configuration": "Il componente non \u00e8 configurato. Si prega di seguire la documentazione." + "missing_configuration": "Il componente non \u00e8 configurato. Segui la documentazione." }, "create_entry": { "default": "Autenticazione riuscita" }, "error": { - "follow_link": "Si prega di seguire il link e di autenticarsi prima di premere Invia", + "follow_link": "Segui il collegamento e autenticati prima di premere Invia", "no_token": "Non autenticato con Ambiclimate" }, "step": { diff --git a/homeassistant/components/ambient_station/translations/hu.json b/homeassistant/components/ambient_station/translations/hu.json index 6974bda2c20..bc2ff29b7ee 100644 --- a/homeassistant/components/ambient_station/translations/hu.json +++ b/homeassistant/components/ambient_station/translations/hu.json @@ -5,7 +5,7 @@ }, "error": { "invalid_key": "\u00c9rv\u00e9nytelen API kulcs", - "no_devices": "Nincs a fi\u00f3kodban tal\u00e1lhat\u00f3 eszk\u00f6z" + "no_devices": "Nem tal\u00e1lhat\u00f3 a fi\u00f3kj\u00e1ban eszk\u00f6z" }, "step": { "user": { diff --git a/homeassistant/components/androidtv/translations/hu.json b/homeassistant/components/androidtv/translations/hu.json index c8d8c0fd97b..3b75153a351 100644 --- a/homeassistant/components/androidtv/translations/hu.json +++ b/homeassistant/components/androidtv/translations/hu.json @@ -43,12 +43,12 @@ "init": { "data": { "apps": "Alkalmaz\u00e1slista konfigur\u00e1l\u00e1sa", - "exclude_unnamed_apps": "Ismeretlen nev\u0171 alkalmaz\u00e1s kiz\u00e1r\u00e1sa", - "get_sources": "A fut\u00f3 alkalmaz\u00e1sok forr\u00e1slist\u00e1jak\u00e9nt val\u00f3 megjelen\u00edt\u00e9se", - "screencap": "A k\u00e9perny\u0151n megjelen\u0151 k\u00e9p legyen-e az albumbor\u00edt\u00f3", + "exclude_unnamed_apps": "Az ismeretlen nev\u0171 alkalmaz\u00e1sok kiz\u00e1r\u00e1sa a forr\u00e1slist\u00e1b\u00f3l", + "get_sources": "A fut\u00f3 alkalmaz\u00e1sok megjelen\u00edt\u00e9se a bemeneti forr\u00e1sok list\u00e1j\u00e1ban", + "screencap": "Haszn\u00e1ljon k\u00e9perny\u0151felv\u00e9telt az albumbor\u00edt\u00f3khoz", "state_detection_rules": "\u00c1llapotfelismer\u00e9si szab\u00e1lyok konfigur\u00e1l\u00e1sa", - "turn_off_command": "ADB shell parancs az alap\u00e9rtelmezett kikapcsol\u00e1si (turn_off) parancs fel\u00fcl\u00edr\u00e1s\u00e1ra", - "turn_on_command": "ADB shell parancs az alap\u00e9rtelmezett bekapcsol\u00e1si (turn_on) parancs fel\u00fcl\u00edr\u00e1s\u00e1ra" + "turn_off_command": "ADB shell kikapcsol\u00e1si parancs (alap\u00e9rtelmez\u00e9s szerint hagyja \u00fcresen)", + "turn_on_command": "ADB shell bekapcsol\u00e1si parancs (alap\u00e9rtelmez\u00e9s szerint hagyja \u00fcresen)" }, "title": "Android TV be\u00e1ll\u00edt\u00e1sok" }, diff --git a/homeassistant/components/apple_tv/translations/bg.json b/homeassistant/components/apple_tv/translations/bg.json index 4629a79d152..b1923cab650 100644 --- a/homeassistant/components/apple_tv/translations/bg.json +++ b/homeassistant/components/apple_tv/translations/bg.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u0442\u043e \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e", "already_configured_device": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u0442\u043e \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e", + "ipv6_not_supported": "IPv6 \u043d\u0435 \u0441\u0435 \u043f\u043e\u0434\u0434\u044a\u0440\u0436\u0430.", "no_devices_found": "\u041d\u0435 \u0441\u0430 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u043c\u0440\u0435\u0436\u0430\u0442\u0430", "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0442\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0432\u0430\u043d\u0435 \u0431\u0435\u0448\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e", "unknown": "\u041d\u0435\u043e\u0447\u0430\u043a\u0432\u0430\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430" diff --git a/homeassistant/components/apple_tv/translations/ca.json b/homeassistant/components/apple_tv/translations/ca.json index 88c49059067..c672733193a 100644 --- a/homeassistant/components/apple_tv/translations/ca.json +++ b/homeassistant/components/apple_tv/translations/ca.json @@ -9,6 +9,7 @@ "device_not_found": "No s'ha trobat el dispositiu durant el descobriment, prova de tornar-lo a afegir.", "inconsistent_device": "Els protocols esperats no s'han trobat durant el descobriment. Normalment aix\u00f2 indica un problema amb el DNS multicast (Zeroconf). Prova d'afegir el dispositiu de nou.", "invalid_config": "La configuraci\u00f3 d'aquest dispositiu no est\u00e0 completa. Intenta'l tornar a afegir.", + "ipv6_not_supported": "IPv6 no est\u00e0 suportat.", "no_devices_found": "No s'han trobat dispositius a la xarxa", "reauth_successful": "Re-autenticaci\u00f3 realitzada correctament", "setup_failed": "No s'ha pogut configurar el dispositiu.", diff --git a/homeassistant/components/apple_tv/translations/de.json b/homeassistant/components/apple_tv/translations/de.json index ca6f69f5442..48149ce8394 100644 --- a/homeassistant/components/apple_tv/translations/de.json +++ b/homeassistant/components/apple_tv/translations/de.json @@ -9,6 +9,7 @@ "device_not_found": "Das Ger\u00e4t wurde bei der Erkennung nicht gefunden. Bitte versuche es erneut hinzuzuf\u00fcgen.", "inconsistent_device": "Die erwarteten Protokolle wurden bei der Erkennung nicht gefunden. Dies deutet normalerweise auf ein Problem mit Multicast-DNS (Zeroconf) hin. Bitte versuche das Ger\u00e4t erneut hinzuzuf\u00fcgen.", "invalid_config": "Die Konfiguration f\u00fcr dieses Ger\u00e4t ist unvollst\u00e4ndig. Bitte versuche, es erneut hinzuzuf\u00fcgen.", + "ipv6_not_supported": "IPv6 wird nicht unterst\u00fctzt.", "no_devices_found": "Keine Ger\u00e4te im Netzwerk gefunden", "reauth_successful": "Die erneute Authentifizierung war erfolgreich", "setup_failed": "Fehler beim Einrichten des Ger\u00e4ts.", diff --git a/homeassistant/components/apple_tv/translations/el.json b/homeassistant/components/apple_tv/translations/el.json index 11a61899b84..cbe36bf56fb 100644 --- a/homeassistant/components/apple_tv/translations/el.json +++ b/homeassistant/components/apple_tv/translations/el.json @@ -9,6 +9,7 @@ "device_not_found": "\u0397 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b1\u03bd\u03af\u03c7\u03bd\u03b5\u03c5\u03c3\u03b7, \u03b4\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03b5\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac.", "inconsistent_device": "\u03a4\u03b1 \u03b1\u03bd\u03b1\u03bc\u03b5\u03bd\u03cc\u03bc\u03b5\u03bd\u03b1 \u03c0\u03c1\u03c9\u03c4\u03cc\u03ba\u03bf\u03bb\u03bb\u03b1 \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b1\u03bd\u03b1\u03ba\u03ac\u03bb\u03c5\u03c8\u03b7. \u0391\u03c5\u03c4\u03cc \u03c3\u03c5\u03bd\u03ae\u03b8\u03c9\u03c2 \u03c5\u03c0\u03bf\u03b4\u03b7\u03bb\u03ce\u03bd\u03b5\u03b9 \u03c0\u03c1\u03cc\u03b2\u03bb\u03b7\u03bc\u03b1 \u03bc\u03b5 \u03c4\u03bf multicast DNS (Zeroconf). \u03a0\u03c1\u03bf\u03c3\u03c0\u03b1\u03b8\u03ae\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03b5\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac \u03c4\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae.", "invalid_config": "\u0397 \u03c1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 \u03c0\u03b1\u03c1\u03b1\u03bc\u03ad\u03c4\u03c1\u03c9\u03bd \u03b3\u03b9\u03b1 \u03b1\u03c5\u03c4\u03ae \u03c4\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bb\u03bb\u03b9\u03c0\u03ae\u03c2. \u03a0\u03c1\u03bf\u03c3\u03c0\u03b1\u03b8\u03ae\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03b5\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac.", + "ipv6_not_supported": "\u03a4\u03bf IPv6 \u03b4\u03b5\u03bd \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9.", "no_devices_found": "\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ad\u03c2 \u03c3\u03c4\u03bf \u03b4\u03af\u03ba\u03c4\u03c5\u03bf", "reauth_successful": "\u039f \u03b5\u03ba \u03bd\u03ad\u03bf\u03c5 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03ae\u03c4\u03b1\u03bd \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03ae\u03c2", "setup_failed": "\u0391\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5 \u03b7 \u03c1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2.", diff --git a/homeassistant/components/apple_tv/translations/en.json b/homeassistant/components/apple_tv/translations/en.json index f455d590d79..792eaf32c29 100644 --- a/homeassistant/components/apple_tv/translations/en.json +++ b/homeassistant/components/apple_tv/translations/en.json @@ -2,11 +2,13 @@ "config": { "abort": { "already_configured": "Device is already configured", + "already_configured_device": "Device is already configured", "already_in_progress": "Configuration flow is already in progress", "backoff": "Device does not accept pairing requests at this time (you might have entered an invalid PIN code too many times), try again later.", "device_did_not_pair": "No attempt to finish pairing process was made from the device.", "device_not_found": "Device was not found during discovery, please try adding it again.", "inconsistent_device": "Expected protocols were not found during discovery. This normally indicates a problem with multicast DNS (Zeroconf). Please try adding the device again.", + "invalid_config": "The configuration for this device is incomplete. Please try adding it again.", "ipv6_not_supported": "IPv6 is not supported.", "no_devices_found": "No devices found on the network", "reauth_successful": "Re-authentication was successful", @@ -17,6 +19,7 @@ "already_configured": "Device is already configured", "invalid_auth": "Invalid authentication", "no_devices_found": "No devices found on the network", + "no_usable_service": "A device was found but could not identify any way to establish a connection to it. If you keep seeing this message, try specifying its IP address or restarting your Apple TV.", "unknown": "Unexpected error" }, "flow_title": "{name} ({type})", @@ -70,5 +73,6 @@ "description": "Configure general device settings" } } - } + }, + "title": "Apple TV" } \ No newline at end of file diff --git a/homeassistant/components/apple_tv/translations/et.json b/homeassistant/components/apple_tv/translations/et.json index fa660662d8b..8180b95fe12 100644 --- a/homeassistant/components/apple_tv/translations/et.json +++ b/homeassistant/components/apple_tv/translations/et.json @@ -9,6 +9,7 @@ "device_not_found": "Seadet avastamise ajal ei leitud, proovi seda uuesti lisada.", "inconsistent_device": "Eeldatavaid protokolle avastamise ajal ei leitud. See n\u00e4itab tavaliselt probleemi multcast DNS-iga (Zeroconf). Proovi seade uuesti lisada.", "invalid_config": "Selle seadme s\u00e4tted on puudulikud. Proovi see uuesti lisada.", + "ipv6_not_supported": "IPv6 ei ole toetatud.", "no_devices_found": "V\u00f5rgust ei leitud \u00fchtegi seadet", "reauth_successful": "Taastuvastamine \u00f5nnestus", "setup_failed": "Seadme h\u00e4\u00e4lestamine nurjus.", diff --git a/homeassistant/components/apple_tv/translations/fr.json b/homeassistant/components/apple_tv/translations/fr.json index 510d22c79a5..6d7deea6e5a 100644 --- a/homeassistant/components/apple_tv/translations/fr.json +++ b/homeassistant/components/apple_tv/translations/fr.json @@ -9,6 +9,7 @@ "device_not_found": "L'appareil n'a pas \u00e9t\u00e9 trouv\u00e9 lors de la d\u00e9couverte, veuillez r\u00e9essayer de l'ajouter.", "inconsistent_device": "Les protocoles attendus n'ont pas \u00e9t\u00e9 trouv\u00e9s lors de la d\u00e9couverte. Cela indique normalement un probl\u00e8me avec le DNS multicast (Zeroconf). Veuillez r\u00e9essayer d'ajouter l'appareil.", "invalid_config": "La configuration de cet appareil est incompl\u00e8te. Veuillez r\u00e9essayer de l'ajouter.", + "ipv6_not_supported": "IPv6 n'est pas pris en charge.", "no_devices_found": "Aucun appareil trouv\u00e9 sur le r\u00e9seau", "reauth_successful": "La r\u00e9-authentification a r\u00e9ussi", "setup_failed": "\u00c9chec de la configuration de l'appareil.", diff --git a/homeassistant/components/apple_tv/translations/he.json b/homeassistant/components/apple_tv/translations/he.json index 03e7dc5d4fe..61ca863bd66 100644 --- a/homeassistant/components/apple_tv/translations/he.json +++ b/homeassistant/components/apple_tv/translations/he.json @@ -4,6 +4,7 @@ "already_configured": "\u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05d4\u05ea\u05e7\u05df \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4", "already_configured_device": "\u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05d4\u05ea\u05e7\u05df \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4", "already_in_progress": "\u05d6\u05e8\u05d9\u05de\u05ea \u05d4\u05ea\u05e6\u05d5\u05e8\u05d4 \u05db\u05d1\u05e8 \u05de\u05ea\u05d1\u05e6\u05e2\u05ea", + "ipv6_not_supported": "IPv6 \u05d0\u05d9\u05e0\u05d5 \u05e0\u05ea\u05de\u05da.", "no_devices_found": "\u05dc\u05d0 \u05e0\u05de\u05e6\u05d0\u05d5 \u05de\u05db\u05e9\u05d9\u05e8\u05d9\u05dd \u05d1\u05e8\u05e9\u05ea", "reauth_successful": "\u05d4\u05d0\u05d9\u05de\u05d5\u05ea \u05de\u05d7\u05d3\u05e9 \u05d4\u05e6\u05dc\u05d9\u05d7", "unknown": "\u05e9\u05d2\u05d9\u05d0\u05d4 \u05d1\u05dc\u05ea\u05d9 \u05e6\u05e4\u05d5\u05d9\u05d4" diff --git a/homeassistant/components/apple_tv/translations/hu.json b/homeassistant/components/apple_tv/translations/hu.json index f76063c5eeb..73a30fbdd9a 100644 --- a/homeassistant/components/apple_tv/translations/hu.json +++ b/homeassistant/components/apple_tv/translations/hu.json @@ -3,12 +3,13 @@ "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", "already_configured_device": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "backoff": "Az eszk\u00f6z jelenleg nem fogadja el a p\u00e1ros\u00edt\u00e1si k\u00e9relmeket (lehet, hogy t\u00fal sokszor adott meg \u00e9rv\u00e9nytelen PIN-k\u00f3dot), pr\u00f3b\u00e1lkozzon \u00fajra k\u00e9s\u0151bb.", "device_did_not_pair": "A p\u00e1ros\u00edt\u00e1s folyamat\u00e1t az eszk\u00f6zr\u0151l nem pr\u00f3b\u00e1lt\u00e1k befejezni.", "device_not_found": "Nem tal\u00e1lhat\u00f3 eszk\u00f6z a felder\u00edt\u00e9s sor\u00e1n, k\u00e9rj\u00fck, pr\u00f3b\u00e1lja meg \u00fajra hozz\u00e1adni.", "inconsistent_device": "Az elv\u00e1rt protokollok nem tal\u00e1lhat\u00f3k a felder\u00edt\u00e9s sor\u00e1n. Ez \u00e1ltal\u00e1ban a multicast DNS (Zeroconf) probl\u00e9m\u00e1j\u00e1t jelzi. K\u00e9rj\u00fck, pr\u00f3b\u00e1lja meg \u00fajra hozz\u00e1adni az eszk\u00f6zt.", "invalid_config": "Az eszk\u00f6z konfigur\u00e1l\u00e1sa nem teljes. K\u00e9rj\u00fck, pr\u00f3b\u00e1lja meg \u00fajra hozz\u00e1adni.", + "ipv6_not_supported": "Az IPv6 nem t\u00e1mogatott.", "no_devices_found": "Nem tal\u00e1lhat\u00f3 eszk\u00f6z a h\u00e1l\u00f3zaton", "reauth_successful": "Az \u00fajrahiteles\u00edt\u00e9s sikeres volt.", "setup_failed": "Az eszk\u00f6z be\u00e1ll\u00edt\u00e1sa sikertelen.", @@ -21,14 +22,14 @@ "no_usable_service": "Tal\u00e1ltunk egy eszk\u00f6zt, de nem tudtuk azonos\u00edtani, hogyan lehetne kapcsolatot l\u00e9tes\u00edteni vele. Ha tov\u00e1bbra is ezt az \u00fczenetet l\u00e1tja, pr\u00f3b\u00e1lja meg megadni az IP-c\u00edm\u00e9t, vagy ind\u00edtsa \u00fajra az Apple TV-t.", "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" }, - "flow_title": "{name}", + "flow_title": "{name} ({type})", "step": { "confirm": { - "description": "Arra k\u00e9sz\u00fcl, hogy felvegye {name} nev\u0171 Apple TV-t a Home Assistant p\u00e9ld\u00e1ny\u00e1ba. \n\n ** A folyamat befejez\u00e9s\u00e9hez t\u00f6bb PIN-k\u00f3dot kell megadnia. ** \n\nFelh\u00edvjuk figyelm\u00e9t, hogy ezzel az integr\u00e1ci\u00f3val *nem* fogja tudni kikapcsolni az Apple TV-t. Csak a Home Assistant saj\u00e1t m\u00e9dialej\u00e1tsz\u00f3ja kapcsol ki!", + "description": "\u00d6n a `{name}`, `{type}` t\u00edpus\u00fa eszk\u00f6zt k\u00e9sz\u00fcl hozz\u00e1adni a Home Assistanthoz.\n\n**A folyamat befejez\u00e9s\u00e9hez t\u00f6bb PIN k\u00f3dot is meg kell adnia.**\n\nK\u00e9rj\u00fck, vegye figyelembe, hogy ezzel az integr\u00e1ci\u00f3val *nem* tudja kikapcsolni az Apple TV k\u00e9sz\u00fcl\u00e9k\u00e9t. Csak a Home Assistant m\u00e9dialej\u00e1tsz\u00f3ja fog kikapcsolni!", "title": "Apple TV sikeresen hozz\u00e1adva" }, "pair_no_pin": { - "description": "P\u00e1ros\u00edt\u00e1sra van sz\u00fcks\u00e9g a {protocol} szolg\u00e1ltat\u00e1shoz. A folytat\u00e1shoz k\u00e9rj\u00fck, \u00edrja be az Apple TV {pin}-t.", + "description": "P\u00e1ros\u00edt\u00e1sra van sz\u00fcks\u00e9g a {protocol} szolg\u00e1ltat\u00e1shoz. A folytat\u00e1shoz k\u00e9rj\u00fck, \u00edrja be k\u00e9sz\u00fcl\u00e9ken a PIN k\u00f3dot: {pin}.", "title": "P\u00e1ros\u00edt\u00e1s" }, "pair_with_pin": { @@ -47,7 +48,7 @@ "title": "A p\u00e1ros\u00edt\u00e1s nem lehets\u00e9ges" }, "reconfigure": { - "description": "Ez az Apple TV csatlakoz\u00e1si neh\u00e9zs\u00e9gekkel k\u00fczd, ez\u00e9rt \u00fajra kell konfigur\u00e1lni.", + "description": "Konfigur\u00e1lja \u00fajra ezt az eszk\u00f6zt a m\u0171k\u00f6d\u0151k\u00e9pess\u00e9g vissza\u00e1ll\u00edt\u00e1s\u00e1hoz.", "title": "Eszk\u00f6z \u00fajrakonfigur\u00e1l\u00e1sa" }, "service_problem": { @@ -58,7 +59,7 @@ "data": { "device_input": "Eszk\u00f6z" }, - "description": "El\u0151sz\u00f6r \u00edrja be a hozz\u00e1adni k\u00edv\u00e1nt Apple TV eszk\u00f6znev\u00e9t (pl. Konyha vagy H\u00e1l\u00f3szoba) vagy IP-c\u00edm\u00e9t. Ha valamilyen eszk\u00f6zt automatikusan tal\u00e1ltak a h\u00e1l\u00f3zat\u00e1n, az al\u00e1bb l\u00e1that\u00f3. \n\nHa nem l\u00e1tja eszk\u00f6z\u00e9t, vagy b\u00e1rmilyen probl\u00e9m\u00e1t tapasztal, pr\u00f3b\u00e1lja meg megadni az eszk\u00f6z IP-c\u00edm\u00e9t. \n\n {devices}", + "description": "Kezdje a hozz\u00e1adni k\u00edv\u00e1nt Apple TV eszk\u00f6znev\u00e9nek (pl. Konyha vagy H\u00e1l\u00f3szoba) vagy IP-c\u00edm\u00e9nek megad\u00e1s\u00e1val. \n\n Ha nem l\u00e1tja az eszk\u00f6zt, vagy b\u00e1rmilyen probl\u00e9m\u00e1t tapasztal, pr\u00f3b\u00e1lja meg megadni az eszk\u00f6z IP-c\u00edm\u00e9t.", "title": "\u00daj Apple TV be\u00e1ll\u00edt\u00e1sa" } } diff --git a/homeassistant/components/apple_tv/translations/id.json b/homeassistant/components/apple_tv/translations/id.json index 8a978eca737..7120d0671b8 100644 --- a/homeassistant/components/apple_tv/translations/id.json +++ b/homeassistant/components/apple_tv/translations/id.json @@ -9,6 +9,7 @@ "device_not_found": "Perangkat tidak ditemukan selama penemuan, coba tambahkan lagi.", "inconsistent_device": "Protokol yang diharapkan tidak ditemukan selama penemuan. Ini biasanya terjadi karena masalah dengan DNS multicast (Zeroconf). Coba tambahkan perangkat lagi.", "invalid_config": "Konfigurasi untuk perangkat ini tidak lengkap. Coba tambahkan lagi.", + "ipv6_not_supported": "IPv6 tidak didukung.", "no_devices_found": "Tidak ada perangkat yang ditemukan di jaringan", "reauth_successful": "Autentikasi ulang berhasil", "setup_failed": "Gagal menyiapkan perangkat.", diff --git a/homeassistant/components/apple_tv/translations/it.json b/homeassistant/components/apple_tv/translations/it.json index 47bd8612265..b1e3a06440f 100644 --- a/homeassistant/components/apple_tv/translations/it.json +++ b/homeassistant/components/apple_tv/translations/it.json @@ -9,6 +9,7 @@ "device_not_found": "Il dispositivo non \u00e8 stato trovato durante il rilevamento, prova ad aggiungerlo di nuovo.", "inconsistent_device": "I protocolli previsti non sono stati trovati durante il rilevamento. Questo normalmente indica un problema con DNS multicast (Zeroconf). Prova ad aggiungere di nuovo il dispositivo.", "invalid_config": "La configurazione per questo dispositivo \u00e8 incompleta. Prova ad aggiungerlo di nuovo.", + "ipv6_not_supported": "IPv6 non \u00e8 supportato.", "no_devices_found": "Nessun dispositivo trovato sulla rete", "reauth_successful": "La nuova autenticazione \u00e8 stata eseguita correttamente", "setup_failed": "Impossibile configurare il dispositivo.", diff --git a/homeassistant/components/apple_tv/translations/ja.json b/homeassistant/components/apple_tv/translations/ja.json index c70dda18d01..9984006365e 100644 --- a/homeassistant/components/apple_tv/translations/ja.json +++ b/homeassistant/components/apple_tv/translations/ja.json @@ -9,6 +9,7 @@ "device_not_found": "\u691c\u51fa\u4e2d\u306b\u30c7\u30d0\u30a4\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u3082\u3046\u4e00\u5ea6\u8ffd\u52a0\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002", "inconsistent_device": "\u691c\u51fa\u4e2d\u306b\u671f\u5f85\u3057\u305f\u30d7\u30ed\u30c8\u30b3\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u3053\u308c\u306f\u901a\u5e38\u3001\u30de\u30eb\u30c1\u30ad\u30e3\u30b9\u30c8DNS(Zeroconf)\u306b\u554f\u984c\u304c\u3042\u308b\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u30c7\u30d0\u30a4\u30b9\u3092\u3082\u3046\u4e00\u5ea6\u8ffd\u52a0\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002", "invalid_config": "\u3053\u306e\u30c7\u30d0\u30a4\u30b9\u306e\u8a2d\u5b9a\u306f\u4e0d\u5b8c\u5168\u3067\u3059\u3002\u3082\u3046\u4e00\u5ea6\u8ffd\u52a0\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002", + "ipv6_not_supported": "IPv6\u306b\u306f\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u305b\u3093\u3002", "no_devices_found": "\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u4e0a\u306b\u30c7\u30d0\u30a4\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093", "reauth_successful": "\u518d\u8a8d\u8a3c\u306b\u6210\u529f\u3057\u307e\u3057\u305f", "setup_failed": "\u30c7\u30d0\u30a4\u30b9\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002", diff --git a/homeassistant/components/apple_tv/translations/nl.json b/homeassistant/components/apple_tv/translations/nl.json index 7fdc20c7291..8aaf120403c 100644 --- a/homeassistant/components/apple_tv/translations/nl.json +++ b/homeassistant/components/apple_tv/translations/nl.json @@ -9,6 +9,7 @@ "device_not_found": "Apparaat werd niet gevonden tijdens het zoeken, probeer het opnieuw toe te voegen.", "inconsistent_device": "De verwachte protocollen zijn niet gevonden tijdens het zoeken. Dit wijst gewoonlijk op een probleem met multicast DNS (Zeroconf). Probeer het apparaat opnieuw toe te voegen.", "invalid_config": "De configuratie voor dit apparaat is onvolledig. Probeer het opnieuw toe te voegen.", + "ipv6_not_supported": "IPv6 wordt niet ondersteund.", "no_devices_found": "Geen apparaten gevonden op het netwerk", "reauth_successful": "Herauthenticatie was succesvol", "setup_failed": "Kan het apparaat niet instellen.", diff --git a/homeassistant/components/apple_tv/translations/no.json b/homeassistant/components/apple_tv/translations/no.json index b24c48a396e..e364633597e 100644 --- a/homeassistant/components/apple_tv/translations/no.json +++ b/homeassistant/components/apple_tv/translations/no.json @@ -9,6 +9,7 @@ "device_not_found": "Enheten ble ikke funnet under oppdagelsen. Pr\u00f8v \u00e5 legge den til p\u00e5 nytt.", "inconsistent_device": "Forventede protokoller ble ikke funnet under oppdagelsen. Dette indikerer vanligvis et problem med multicast DNS (Zeroconf). Pr\u00f8v \u00e5 legge til enheten p\u00e5 nytt.", "invalid_config": "Konfigurasjonen for denne enheten er ufullstendig. Pr\u00f8v \u00e5 legge den til p\u00e5 nytt.", + "ipv6_not_supported": "IPv6 st\u00f8ttes ikke.", "no_devices_found": "Ingen enheter funnet p\u00e5 nettverket", "reauth_successful": "Godkjenning p\u00e5 nytt var vellykket", "setup_failed": "Kunne ikke konfigurere enheten.", diff --git a/homeassistant/components/apple_tv/translations/pl.json b/homeassistant/components/apple_tv/translations/pl.json index 1ba9b46dc3b..303de09c1dd 100644 --- a/homeassistant/components/apple_tv/translations/pl.json +++ b/homeassistant/components/apple_tv/translations/pl.json @@ -9,6 +9,7 @@ "device_not_found": "Urz\u0105dzenie nie zosta\u0142o znalezione podczas wykrywania, spr\u00f3buj doda\u0107 je ponownie.", "inconsistent_device": "Oczekiwane protoko\u0142y nie zosta\u0142y znalezione podczas wykrywania. Zwykle wskazuje to na problem z multicastem DNS (Zeroconf). Spr\u00f3buj ponownie doda\u0107 urz\u0105dzenie.", "invalid_config": "Konfiguracja tego urz\u0105dzenia jest niekompletna. Spr\u00f3buj doda\u0107 go ponownie.", + "ipv6_not_supported": "IPv6 nie jest obs\u0142ugiwany.", "no_devices_found": "Nie znaleziono urz\u0105dze\u0144 w sieci", "reauth_successful": "Ponowne uwierzytelnienie powiod\u0142o si\u0119", "setup_failed": "Nie uda\u0142o si\u0119 skonfigurowa\u0107 urz\u0105dzenia.", diff --git a/homeassistant/components/apple_tv/translations/pt-BR.json b/homeassistant/components/apple_tv/translations/pt-BR.json index 79fee5f02ec..539335c17d3 100644 --- a/homeassistant/components/apple_tv/translations/pt-BR.json +++ b/homeassistant/components/apple_tv/translations/pt-BR.json @@ -9,6 +9,7 @@ "device_not_found": "O dispositivo n\u00e3o foi encontrado durante a descoberta. Tente adicion\u00e1-lo novamente.", "inconsistent_device": "Os protocolos esperados n\u00e3o foram encontrados durante a descoberta. Isso normalmente indica um problema com o DNS multicast (Zeroconf). Tente adicionar o dispositivo novamente.", "invalid_config": "A configura\u00e7\u00e3o deste dispositivo est\u00e1 incompleta. Tente adicion\u00e1-lo novamente.", + "ipv6_not_supported": "IPv6 n\u00e3o \u00e9 suportado.", "no_devices_found": "Nenhum dispositivo encontrado na rede", "reauth_successful": "A reautentica\u00e7\u00e3o foi bem-sucedida", "setup_failed": "Falha ao configurar o dispositivo.", diff --git a/homeassistant/components/apple_tv/translations/ru.json b/homeassistant/components/apple_tv/translations/ru.json index 4863a541603..88516d45af3 100644 --- a/homeassistant/components/apple_tv/translations/ru.json +++ b/homeassistant/components/apple_tv/translations/ru.json @@ -9,6 +9,7 @@ "device_not_found": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0435\u0449\u0451 \u0440\u0430\u0437.", "inconsistent_device": "\u041d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b. \u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441 \u043c\u043d\u043e\u0433\u043e\u0430\u0434\u0440\u0435\u0441\u043d\u044b\u043c DNS (Zeroconf). \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0435\u0449\u0451 \u0440\u0430\u0437.", "invalid_config": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0435\u0449\u0451 \u0440\u0430\u0437.", + "ipv6_not_supported": "IPv6 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f.", "no_devices_found": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0432 \u0441\u0435\u0442\u0438.", "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e.", "setup_failed": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e.", diff --git a/homeassistant/components/apple_tv/translations/tr.json b/homeassistant/components/apple_tv/translations/tr.json index 4b9c2a4ca07..cee9fcce81e 100644 --- a/homeassistant/components/apple_tv/translations/tr.json +++ b/homeassistant/components/apple_tv/translations/tr.json @@ -9,6 +9,7 @@ "device_not_found": "Cihaz ke\u015fif s\u0131ras\u0131nda bulunamad\u0131, l\u00fctfen tekrar eklemeyi deneyin.", "inconsistent_device": "Ke\u015fif s\u0131ras\u0131nda beklenen protokoller bulunamad\u0131. Bu normalde \u00e7ok noktaya yay\u0131n DNS (Zeroconf) ile ilgili bir sorunu g\u00f6sterir. L\u00fctfen cihaz\u0131 tekrar eklemeyi deneyin.", "invalid_config": "Bu ayg\u0131t\u0131n yap\u0131land\u0131rmas\u0131 tamamlanmad\u0131. L\u00fctfen tekrar eklemeyi deneyin.", + "ipv6_not_supported": "IPv6 desteklenmiyor.", "no_devices_found": "A\u011fda cihaz bulunamad\u0131", "reauth_successful": "Yeniden kimlik do\u011frulama ba\u015far\u0131l\u0131 oldu", "setup_failed": "Cihaz kurulumu ba\u015far\u0131s\u0131z.", diff --git a/homeassistant/components/apple_tv/translations/zh-Hant.json b/homeassistant/components/apple_tv/translations/zh-Hant.json index 41732c0813e..b4e5108d474 100644 --- a/homeassistant/components/apple_tv/translations/zh-Hant.json +++ b/homeassistant/components/apple_tv/translations/zh-Hant.json @@ -9,6 +9,7 @@ "device_not_found": "\u641c\u5c0b\u4e0d\u5230\u88dd\u7f6e\u3001\u8acb\u8a66\u8457\u518d\u65b0\u589e\u4e00\u6b21\u3002", "inconsistent_device": "\u641c\u5c0b\u4e0d\u5230\u9810\u671f\u7684\u901a\u8a0a\u5354\u5b9a\u3002\u901a\u5e38\u539f\u56e0\u70ba Multicast DNS (Zeroconf) \u554f\u984c\u3001\u8acb\u8a66\u8457\u518d\u65b0\u589e\u4e00\u6b21\u3002", "invalid_config": "\u6b64\u88dd\u7f6e\u8a2d\u5b9a\u4e0d\u5b8c\u6574\uff0c\u8acb\u7a0d\u5019\u518d\u8a66\u4e00\u6b21\u3002", + "ipv6_not_supported": "\u4e0d\u652f\u63f4 IPv6\u3002", "no_devices_found": "\u7db2\u8def\u4e0a\u627e\u4e0d\u5230\u88dd\u7f6e", "reauth_successful": "\u91cd\u65b0\u8a8d\u8b49\u6210\u529f", "setup_failed": "\u88dd\u7f6e\u8a2d\u5b9a\u5931\u6557\u3002", diff --git a/homeassistant/components/arcam_fmj/translations/hu.json b/homeassistant/components/arcam_fmj/translations/hu.json index 964ebe2a33d..897b462eb48 100644 --- a/homeassistant/components/arcam_fmj/translations/hu.json +++ b/homeassistant/components/arcam_fmj/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "cannot_connect": "Sikertelen csatlakoz\u00e1s" }, "error": { diff --git a/homeassistant/components/arcam_fmj/translations/it.json b/homeassistant/components/arcam_fmj/translations/it.json index 2b99566888b..637bfa6533d 100644 --- a/homeassistant/components/arcam_fmj/translations/it.json +++ b/homeassistant/components/arcam_fmj/translations/it.json @@ -6,8 +6,8 @@ "cannot_connect": "Impossibile connettersi" }, "error": { - "one": "Pi\u00f9", - "other": "Altri" + "one": "Vuoto", + "other": "Vuoti" }, "flow_title": "{host}", "step": { diff --git a/homeassistant/components/asuswrt/translations/ca.json b/homeassistant/components/asuswrt/translations/ca.json index d034aefb407..9149cd1ae7a 100644 --- a/homeassistant/components/asuswrt/translations/ca.json +++ b/homeassistant/components/asuswrt/translations/ca.json @@ -18,7 +18,7 @@ "mode": "Mode", "name": "Nom", "password": "Contrasenya", - "port": "Port", + "port": "Port (deixa-ho buit pel predeterminat del protocol)", "protocol": "Protocol de comunicacions a utilitzar", "ssh_key": "Ruta al fitxer de claus SSH (en lloc de la contrasenya)", "username": "Nom d'usuari" diff --git a/homeassistant/components/asuswrt/translations/de.json b/homeassistant/components/asuswrt/translations/de.json index f5e41e09ac2..af4beb984a4 100644 --- a/homeassistant/components/asuswrt/translations/de.json +++ b/homeassistant/components/asuswrt/translations/de.json @@ -18,7 +18,7 @@ "mode": "Modus", "name": "Name", "password": "Passwort", - "port": "Port", + "port": "Port (leer lassen f\u00fcr Protokollstandard)", "protocol": "Zu verwendendes Kommunikationsprotokoll", "ssh_key": "Pfad zu deiner SSH-Schl\u00fcsseldatei (anstelle des Passworts)", "username": "Benutzername" diff --git a/homeassistant/components/asuswrt/translations/et.json b/homeassistant/components/asuswrt/translations/et.json index 61e8b1a8d4f..7b7a0869061 100644 --- a/homeassistant/components/asuswrt/translations/et.json +++ b/homeassistant/components/asuswrt/translations/et.json @@ -18,7 +18,7 @@ "mode": "Re\u017eiim", "name": "Nimi", "password": "Salas\u00f5na", - "port": "Port", + "port": "Port (vaikepordi kasutamiseks j\u00e4ta t\u00fchjaks)", "protocol": "Kasutatav sideprotokoll", "ssh_key": "Rada SSH v\u00f5tmefailini (parooli asemel)", "username": "Kasutajanimi" diff --git a/homeassistant/components/asuswrt/translations/fr.json b/homeassistant/components/asuswrt/translations/fr.json index 0d53f3f24cf..5c8882d5813 100644 --- a/homeassistant/components/asuswrt/translations/fr.json +++ b/homeassistant/components/asuswrt/translations/fr.json @@ -18,7 +18,7 @@ "mode": "Mode", "name": "Nom", "password": "Mot de passe", - "port": "Port", + "port": "Port (laisser vide pour utiliser la valeur par d\u00e9faut du protocole)", "protocol": "Protocole de communication \u00e0 utiliser", "ssh_key": "Chemin d'acc\u00e8s \u00e0 votre fichier de cl\u00e9s SSH (au lieu du mot de passe)", "username": "Nom d'utilisateur" diff --git a/homeassistant/components/asuswrt/translations/he.json b/homeassistant/components/asuswrt/translations/he.json index 2d2cebaa7e3..867cc6e4f5c 100644 --- a/homeassistant/components/asuswrt/translations/he.json +++ b/homeassistant/components/asuswrt/translations/he.json @@ -18,7 +18,7 @@ "mode": "\u05de\u05e6\u05d1", "name": "\u05e9\u05dd", "password": "\u05e1\u05d9\u05e1\u05de\u05d4", - "port": "\u05e4\u05ea\u05d7\u05d4", + "port": "\u05e4\u05ea\u05d7\u05d4 (\u05e8\u05d9\u05e7 \u05e2\u05d1\u05d5\u05e8 \u05e4\u05e8\u05d5\u05d8\u05d5\u05e7\u05d5\u05dc \u05d1\u05e8\u05d9\u05e8\u05ea \u05de\u05d7\u05d3\u05dc)", "ssh_key": "\u05e0\u05ea\u05d9\u05d1 \u05dc\u05e7\u05d5\u05d1\u05e5 \u05d4\u05de\u05e4\u05ea\u05d7 \u05e9\u05dc SSH (\u05d1\u05de\u05e7\u05d5\u05dd \u05dc\u05e1\u05d9\u05e1\u05de\u05d4)", "username": "\u05e9\u05dd \u05de\u05e9\u05ea\u05de\u05e9" } diff --git a/homeassistant/components/asuswrt/translations/hu.json b/homeassistant/components/asuswrt/translations/hu.json index ff64372f1b0..d8133061380 100644 --- a/homeassistant/components/asuswrt/translations/hu.json +++ b/homeassistant/components/asuswrt/translations/hu.json @@ -16,9 +16,9 @@ "data": { "host": "C\u00edm", "mode": "M\u00f3d", - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "password": "Jelsz\u00f3", - "port": "Port", + "port": "Port (hagyja \u00fcresen az alap\u00e9rtelmezetthez)", "protocol": "Haszn\u00e1lhat\u00f3 kommunik\u00e1ci\u00f3s protokoll", "ssh_key": "Az SSH kulcsf\u00e1jl el\u00e9r\u00e9si \u00fatja (jelsz\u00f3 helyett)", "username": "Felhaszn\u00e1l\u00f3n\u00e9v" diff --git a/homeassistant/components/asuswrt/translations/id.json b/homeassistant/components/asuswrt/translations/id.json index aa4eebd1f86..83ade7b6462 100644 --- a/homeassistant/components/asuswrt/translations/id.json +++ b/homeassistant/components/asuswrt/translations/id.json @@ -18,7 +18,7 @@ "mode": "Mode", "name": "Nama", "password": "Kata Sandi", - "port": "Port", + "port": "Port (Biarkan kosong untuk nilai default)", "protocol": "Protokol komunikasi yang akan digunakan", "ssh_key": "Jalur ke file kunci SSH Anda (bukan kata sandi)", "username": "Nama Pengguna" diff --git a/homeassistant/components/asuswrt/translations/it.json b/homeassistant/components/asuswrt/translations/it.json index 824db386176..0cf06679d83 100644 --- a/homeassistant/components/asuswrt/translations/it.json +++ b/homeassistant/components/asuswrt/translations/it.json @@ -7,7 +7,7 @@ "cannot_connect": "Impossibile connettersi", "invalid_host": "Nome host o indirizzo IP non valido", "pwd_and_ssh": "Fornire solo la password o il file della chiave SSH", - "pwd_or_ssh": "Si prega di fornire la password o il file della chiave SSH", + "pwd_or_ssh": "Fornisci la password o il file della chiave SSH", "ssh_not_file": "File chiave SSH non trovato", "unknown": "Errore imprevisto" }, @@ -18,7 +18,7 @@ "mode": "Modalit\u00e0", "name": "Nome", "password": "Password", - "port": "Porta", + "port": "Porta (lascia vuoto per impostazione predefinita del protocollo)", "protocol": "Protocollo di comunicazione da utilizzare", "ssh_key": "Percorso del file della chiave SSH (invece della password)", "username": "Nome utente" diff --git a/homeassistant/components/asuswrt/translations/nl.json b/homeassistant/components/asuswrt/translations/nl.json index f6f347f771f..e6db5fae621 100644 --- a/homeassistant/components/asuswrt/translations/nl.json +++ b/homeassistant/components/asuswrt/translations/nl.json @@ -18,7 +18,7 @@ "mode": "Mode", "name": "Naam", "password": "Wachtwoord", - "port": "Poort", + "port": "Poort (leeg laten voor protocol standaard)", "protocol": "Te gebruiken communicatieprotocol", "ssh_key": "Pad naar uw SSH-sleutelbestand (in plaats van wachtwoord)", "username": "Gebruikersnaam" diff --git a/homeassistant/components/asuswrt/translations/no.json b/homeassistant/components/asuswrt/translations/no.json index c1e5fd5d99a..84ece53ed42 100644 --- a/homeassistant/components/asuswrt/translations/no.json +++ b/homeassistant/components/asuswrt/translations/no.json @@ -18,7 +18,7 @@ "mode": "Modus", "name": "Navn", "password": "Passord", - "port": "Port", + "port": "Port (la st\u00e5 tomt for protokollstandard)", "protocol": "Kommunikasjonsprotokoll som skal brukes", "ssh_key": "Bane til SSH-n\u00f8kkelfilen (i stedet for passord)", "username": "Brukernavn" diff --git a/homeassistant/components/asuswrt/translations/pl.json b/homeassistant/components/asuswrt/translations/pl.json index 9fd5d00b1c4..76d8f30d950 100644 --- a/homeassistant/components/asuswrt/translations/pl.json +++ b/homeassistant/components/asuswrt/translations/pl.json @@ -18,7 +18,7 @@ "mode": "Tryb", "name": "Nazwa", "password": "Has\u0142o", - "port": "Port", + "port": "Port (pozostaw puste dla domy\u015blnego protoko\u0142u)", "protocol": "Wybierz protok\u00f3\u0142 komunikacyjny", "ssh_key": "\u015acie\u017cka do pliku z kluczem SSH (zamiast has\u0142a)", "username": "Nazwa u\u017cytkownika" diff --git a/homeassistant/components/asuswrt/translations/pt-BR.json b/homeassistant/components/asuswrt/translations/pt-BR.json index 06982ade622..88999128895 100644 --- a/homeassistant/components/asuswrt/translations/pt-BR.json +++ b/homeassistant/components/asuswrt/translations/pt-BR.json @@ -18,7 +18,7 @@ "mode": "Modo", "name": "Nome", "password": "Senha", - "port": "Porta", + "port": "Porta (deixe em branco para o protocolo padr\u00e3o)", "protocol": "Protocolo de comunica\u00e7\u00e3o a ser usado", "ssh_key": "Caminho para seu arquivo de chave SSH (em vez de senha)", "username": "Usu\u00e1rio" diff --git a/homeassistant/components/asuswrt/translations/ru.json b/homeassistant/components/asuswrt/translations/ru.json index 35254821f23..8edc9786f5b 100644 --- a/homeassistant/components/asuswrt/translations/ru.json +++ b/homeassistant/components/asuswrt/translations/ru.json @@ -18,7 +18,7 @@ "mode": "\u0420\u0435\u0436\u0438\u043c", "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", "password": "\u041f\u0430\u0440\u043e\u043b\u044c", - "port": "\u041f\u043e\u0440\u0442", + "port": "\u041f\u043e\u0440\u0442 (\u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0443\u0441\u0442\u044b\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e)", "protocol": "\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0441\u0432\u044f\u0437\u0438", "ssh_key": "\u041f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u043a\u043b\u044e\u0447\u0435\u0439 SSH (\u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0430\u0440\u043e\u043b\u044f)", "username": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f" diff --git a/homeassistant/components/asuswrt/translations/tr.json b/homeassistant/components/asuswrt/translations/tr.json index 9b7870a3fba..3225c78b40a 100644 --- a/homeassistant/components/asuswrt/translations/tr.json +++ b/homeassistant/components/asuswrt/translations/tr.json @@ -18,7 +18,7 @@ "mode": "Mod", "name": "Ad", "password": "Parola", - "port": "Port", + "port": "Port (protokol varsay\u0131lan\u0131 i\u00e7in bo\u015f b\u0131rak\u0131n)", "protocol": "Kullan\u0131lacak ileti\u015fim protokol\u00fc", "ssh_key": "SSH anahtar dosyan\u0131z\u0131n yolu (\u015fifre yerine)", "username": "Kullan\u0131c\u0131 Ad\u0131" diff --git a/homeassistant/components/asuswrt/translations/zh-Hant.json b/homeassistant/components/asuswrt/translations/zh-Hant.json index d0997e495c5..17c5cd698cd 100644 --- a/homeassistant/components/asuswrt/translations/zh-Hant.json +++ b/homeassistant/components/asuswrt/translations/zh-Hant.json @@ -18,7 +18,7 @@ "mode": "\u6a21\u5f0f", "name": "\u540d\u7a31", "password": "\u5bc6\u78bc", - "port": "\u901a\u8a0a\u57e0", + "port": "\u901a\u8a0a\u57e0 (\u4fdd\u6301\u7a7a\u767d\u4f7f\u7528\u9810\u8a2d\u5354\u5b9a)", "protocol": "\u4f7f\u7528\u901a\u8a0a\u606f\u5354\u5b9a", "ssh_key": "SSH \u91d1\u9470\u6a94\u6848\u8def\u5f91\uff08\u975e\u5bc6\u78bc\uff09", "username": "\u4f7f\u7528\u8005\u540d\u7a31" diff --git a/homeassistant/components/aurora/translations/hu.json b/homeassistant/components/aurora/translations/hu.json index 292ed552235..cbca495254d 100644 --- a/homeassistant/components/aurora/translations/hu.json +++ b/homeassistant/components/aurora/translations/hu.json @@ -8,7 +8,7 @@ "data": { "latitude": "Sz\u00e9less\u00e9g", "longitude": "Hossz\u00fas\u00e1g", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" } } } @@ -17,7 +17,7 @@ "step": { "init": { "data": { - "threshold": "K\u00fcsz\u00f6b (%)" + "threshold": "K\u00fcsz\u00f6b\u00e9rt\u00e9k (%)" } } } diff --git a/homeassistant/components/auth/translations/fr.json b/homeassistant/components/auth/translations/fr.json index cf0a1888495..79b467d0255 100644 --- a/homeassistant/components/auth/translations/fr.json +++ b/homeassistant/components/auth/translations/fr.json @@ -5,7 +5,7 @@ "no_available_service": "Aucun service de notification disponible." }, "error": { - "invalid_code": "Code invalide. Veuillez essayer \u00e0 nouveau." + "invalid_code": "Code non valide, veuillez r\u00e9essayer." }, "step": { "init": { @@ -21,7 +21,7 @@ }, "totp": { "error": { - "invalid_code": "Code invalide. Veuillez essayez \u00e0 nouveau. Si cette erreur persiste, assurez-vous que l'horloge de votre syst\u00e8me Home Assistant est correcte." + "invalid_code": "Code non valide, veuillez r\u00e9essayer. Si cette erreur persiste, assurez-vous que l'heure de votre syst\u00e8me Home Assistant est correcte." }, "step": { "init": { diff --git a/homeassistant/components/axis/translations/hu.json b/homeassistant/components/axis/translations/hu.json index cb2f9a17c93..c9121ed2f54 100644 --- a/homeassistant/components/axis/translations/hu.json +++ b/homeassistant/components/axis/translations/hu.json @@ -7,7 +7,7 @@ }, "error": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "cannot_connect": "Sikertelen csatlakoz\u00e1s", "invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s" }, diff --git a/homeassistant/components/azure_devops/translations/it.json b/homeassistant/components/azure_devops/translations/it.json index 232264d1026..bd14e7926cd 100644 --- a/homeassistant/components/azure_devops/translations/it.json +++ b/homeassistant/components/azure_devops/translations/it.json @@ -21,10 +21,10 @@ "user": { "data": { "organization": "Organizzazione", - "personal_access_token": "Token di Accesso Personale (PAT)", + "personal_access_token": "Token di accesso personale (PAT)", "project": "Progetto" }, - "description": "Configura un'istanza di DevOps di Azure per accedere al progetto. Un Token di Accesso Personale (PAT) \u00e8 richiesto solo per un progetto privato.", + "description": "Configura un'istanza di DevOps di Azure per accedere al progetto. Un token di accesso personale (PAT) \u00e8 richiesto solo per un progetto privato.", "title": "Aggiungere un progetto Azure DevOps" } } diff --git a/homeassistant/components/azure_event_hub/translations/de.json b/homeassistant/components/azure_event_hub/translations/de.json index c1552371f76..b72ef47ab34 100644 --- a/homeassistant/components/azure_event_hub/translations/de.json +++ b/homeassistant/components/azure_event_hub/translations/de.json @@ -4,7 +4,7 @@ "already_configured": "Der Dienst ist bereits konfiguriert", "cannot_connect": "Die Verbindung mit den Anmeldeinformationen aus der configuration.yaml ist fehlgeschlagen, bitte entferne diese aus der yaml und verwende den Konfigurationsfluss.", "single_instance_allowed": "Bereits konfiguriert. Nur eine einzige Konfiguration m\u00f6glich.", - "unknown": "Die Verbindung mit den Anmeldeinformationen aus der configuration.yaml ist mit einem unbekannten Fehler fehlgeschlagen. Bitte entferne diese aus der yaml und verwende den Konfigurationsfluss." + "unknown": "Die Verbindung mit den Anmeldeinformationen aus der configuration.yaml ist mit einem unbekannten Fehler fehlgeschlagen. Bitte entferne diese aus der yaml und verwende den Konfigurationsfluss." }, "error": { "cannot_connect": "Verbindung fehlgeschlagen", diff --git a/homeassistant/components/binary_sensor/translations/cs.json b/homeassistant/components/binary_sensor/translations/cs.json index fb19cc00fda..ced02ffc326 100644 --- a/homeassistant/components/binary_sensor/translations/cs.json +++ b/homeassistant/components/binary_sensor/translations/cs.json @@ -112,6 +112,10 @@ "off": "Nenab\u00edj\u00ed se", "on": "Nab\u00edjen\u00ed" }, + "carbon_monoxide": { + "off": "\u017d\u00e1dn\u00fd plyn", + "on": "Zji\u0161t\u011bn plyn" + }, "cold": { "off": "Norm\u00e1ln\u00ed", "on": "Studen\u00e9" diff --git a/homeassistant/components/binary_sensor/translations/he.json b/homeassistant/components/binary_sensor/translations/he.json index 293a4f3f264..5f0e14ccac1 100644 --- a/homeassistant/components/binary_sensor/translations/he.json +++ b/homeassistant/components/binary_sensor/translations/he.json @@ -151,11 +151,11 @@ "on": "\u05de\u05d7\u05d5\u05d1\u05e8" }, "door": { - "off": "\u05e1\u05d2\u05d5\u05e8", + "off": "\u05e0\u05e1\u05d2\u05e8", "on": "\u05e4\u05ea\u05d5\u05d7" }, "garage_door": { - "off": "\u05e1\u05d2\u05d5\u05e8", + "off": "\u05e0\u05e1\u05d2\u05e8", "on": "\u05e4\u05ea\u05d5\u05d7" }, "gas": { @@ -191,7 +191,7 @@ "on": "\u05d6\u05d5\u05d4\u05d4" }, "opening": { - "off": "\u05e1\u05d2\u05d5\u05e8", + "off": "\u05e0\u05e1\u05d2\u05e8", "on": "\u05e4\u05ea\u05d5\u05d7" }, "plug": { @@ -231,7 +231,7 @@ "on": "\u05d6\u05d5\u05d4\u05d4" }, "window": { - "off": "\u05e1\u05d2\u05d5\u05e8", + "off": "\u05e0\u05e1\u05d2\u05e8", "on": "\u05e4\u05ea\u05d5\u05d7" } }, diff --git a/homeassistant/components/binary_sensor/translations/pt-BR.json b/homeassistant/components/binary_sensor/translations/pt-BR.json index d858dec6664..5b1ba2a1abf 100644 --- a/homeassistant/components/binary_sensor/translations/pt-BR.json +++ b/homeassistant/components/binary_sensor/translations/pt-BR.json @@ -179,7 +179,7 @@ "on": "Molhado" }, "motion": { - "off": "Sem movimento", + "off": "N\u00e3o detectado", "on": "Detectado" }, "moving": { diff --git a/homeassistant/components/binary_sensor/translations/zh-Hant.json b/homeassistant/components/binary_sensor/translations/zh-Hant.json index a0adaaab083..417ca652cb5 100644 --- a/homeassistant/components/binary_sensor/translations/zh-Hant.json +++ b/homeassistant/components/binary_sensor/translations/zh-Hant.json @@ -203,7 +203,7 @@ "on": "\u5728\u5bb6" }, "problem": { - "off": "\u78ba\u5b9a", + "off": "\u6b63\u5e38", "on": "\u7570\u5e38" }, "running": { diff --git a/homeassistant/components/blebox/translations/it.json b/homeassistant/components/blebox/translations/it.json index 6d377840e90..86025ffdeee 100644 --- a/homeassistant/components/blebox/translations/it.json +++ b/homeassistant/components/blebox/translations/it.json @@ -7,7 +7,7 @@ "error": { "cannot_connect": "Impossibile connettersi", "unknown": "Errore imprevisto", - "unsupported_version": "Il dispositivo BleBox ha un firmware obsoleto. Si prega di aggiornarlo prima." + "unsupported_version": "Il dispositivo BleBox ha un firmware obsoleto. Aggiornalo prima." }, "flow_title": "{name} ({host})", "step": { diff --git a/homeassistant/components/braviatv/translations/ca.json b/homeassistant/components/braviatv/translations/ca.json index 94fe36dcddc..b8616f5e8ba 100644 --- a/homeassistant/components/braviatv/translations/ca.json +++ b/homeassistant/components/braviatv/translations/ca.json @@ -21,7 +21,7 @@ "data": { "host": "Amfitri\u00f3" }, - "description": "Configura la integraci\u00f3 de televisor Sony Bravia. Si tens problemes durant la configuraci\u00f3, v\u00e9s a: https://www.home-assistant.io/integrations/braviatv\n\nAssegura't que el televisor estigui engegat.", + "description": "Assegura't que el televisor est\u00e0 engegat abans de configurar-lo.", "title": "Televisor Sony Bravia" } } diff --git a/homeassistant/components/braviatv/translations/de.json b/homeassistant/components/braviatv/translations/de.json index cca5c5aa47f..55ddbec464e 100644 --- a/homeassistant/components/braviatv/translations/de.json +++ b/homeassistant/components/braviatv/translations/de.json @@ -21,7 +21,7 @@ "data": { "host": "Host" }, - "description": "Richte die Sony Bravia TV-Integration ein. Wenn du Probleme mit der Konfiguration hast, gehe zu: https://www.home-assistant.io/integrations/braviatv \n\nStelle sicher, dass dein Fernseher eingeschaltet ist.", + "description": "Stelle sicher, dass dein Fernseher eingeschaltet ist, bevor du versuchst, ihn einzurichten.", "title": "Sony Bravia TV" } } diff --git a/homeassistant/components/braviatv/translations/en.json b/homeassistant/components/braviatv/translations/en.json index 05ced6af856..9cc2ac23d17 100644 --- a/homeassistant/components/braviatv/translations/en.json +++ b/homeassistant/components/braviatv/translations/en.json @@ -21,7 +21,7 @@ "data": { "host": "Host" }, - "description": "Set up Sony Bravia TV integration. If you have problems with configuration go to: https://www.home-assistant.io/integrations/braviatv \n\nEnsure that your TV is turned on.", + "description": "Ensure that your TV is turned on before trying to set it up.", "title": "Sony Bravia TV" } } diff --git a/homeassistant/components/braviatv/translations/et.json b/homeassistant/components/braviatv/translations/et.json index 6930186aeba..c63e3635185 100644 --- a/homeassistant/components/braviatv/translations/et.json +++ b/homeassistant/components/braviatv/translations/et.json @@ -21,7 +21,7 @@ "data": { "host": "" }, - "description": "Seadista Sony Bravia TV sidumine. Kuion probleeme seadetega mine: https://www.home-assistant.io/integrations/braviatv \n\nVeendu, et teler on sisse l\u00fclitatud.", + "description": "Enne teleri seadistamist veendu, et see oleks sisse l\u00fclitatud.", "title": "" } } diff --git a/homeassistant/components/braviatv/translations/fr.json b/homeassistant/components/braviatv/translations/fr.json index d609f1a2fa1..f85aea705fb 100644 --- a/homeassistant/components/braviatv/translations/fr.json +++ b/homeassistant/components/braviatv/translations/fr.json @@ -21,7 +21,7 @@ "data": { "host": "H\u00f4te" }, - "description": "Configurez l'int\u00e9gration du t\u00e9l\u00e9viseur Sony Bravia. Si vous rencontrez des probl\u00e8mes de configuration, rendez-vous sur: https://www.home-assistant.io/integrations/braviatv \n\n Assurez-vous que votre t\u00e9l\u00e9viseur est allum\u00e9.", + "description": "Assurez-vous que votre t\u00e9l\u00e9viseur est allum\u00e9 avant d'essayer de le configurer.", "title": "Sony Bravia TV" } } diff --git a/homeassistant/components/braviatv/translations/hu.json b/homeassistant/components/braviatv/translations/hu.json index 00e88955c81..554e74c52b1 100644 --- a/homeassistant/components/braviatv/translations/hu.json +++ b/homeassistant/components/braviatv/translations/hu.json @@ -21,7 +21,7 @@ "data": { "host": "C\u00edm" }, - "description": "\u00c1ll\u00edtsa be a Sony Bravia TV integr\u00e1ci\u00f3t. Ha probl\u00e9m\u00e1i vannak a konfigur\u00e1ci\u00f3val, l\u00e1togasson el a k\u00f6vetkez\u0151 oldalra: https://www.home-assistant.io/integrations/braviatv \n\n Gy\u0151z\u0151dj\u00f6n meg arr\u00f3l, hogy a TV be van kapcsolva.", + "description": "Gy\u0151z\u0151dj\u00f6n meg arr\u00f3l, hogy a TV k\u00e9sz\u00fcl\u00e9k be van kapcsolva a be\u00e1ll\u00edt\u00e1s el\u0151tt.", "title": "Sony Bravia TV" } } diff --git a/homeassistant/components/braviatv/translations/id.json b/homeassistant/components/braviatv/translations/id.json index def84dacdbb..cb7d5396f7a 100644 --- a/homeassistant/components/braviatv/translations/id.json +++ b/homeassistant/components/braviatv/translations/id.json @@ -21,7 +21,7 @@ "data": { "host": "Host" }, - "description": "Siapkan integrasi TV Sony Bravia. Jika Anda memiliki masalah dengan konfigurasi, buka: https://www.home-assistant.io/integrations/braviatv \n\nPastikan TV Anda dinyalakan.", + "description": "Pastikan TV Anda dinyalakan sebelum menyiapkan.", "title": "TV Sony Bravia" } } diff --git a/homeassistant/components/braviatv/translations/it.json b/homeassistant/components/braviatv/translations/it.json index bbd02157496..7ab149fa6c7 100644 --- a/homeassistant/components/braviatv/translations/it.json +++ b/homeassistant/components/braviatv/translations/it.json @@ -21,7 +21,7 @@ "data": { "host": "Host" }, - "description": "Configura l'integrazione TV di Sony Bravia. In caso di problemi con la configurazione visita: https://www.home-assistant.io/integrations/braviatv\n\nAssicurati che il televisore sia acceso.", + "description": "Assicurati che la tua TV sia accesa prima di provare a configurarla.", "title": "Sony Bravia TV" } } diff --git a/homeassistant/components/braviatv/translations/nl.json b/homeassistant/components/braviatv/translations/nl.json index 5354f5761ec..133c5277045 100644 --- a/homeassistant/components/braviatv/translations/nl.json +++ b/homeassistant/components/braviatv/translations/nl.json @@ -21,7 +21,7 @@ "data": { "host": "Host" }, - "description": "Stel Sony Bravia TV-integratie in. Als je problemen hebt met de configuratie ga dan naar: https://www.home-assistant.io/integrations/braviatv \n\nZorg ervoor dat uw tv is ingeschakeld.", + "description": "Zorg ervoor dat uw TV aan staat voordat u hem probeert in te stellen.", "title": "Sony Bravia TV" } } diff --git a/homeassistant/components/braviatv/translations/no.json b/homeassistant/components/braviatv/translations/no.json index 0c960a850e2..6465db8d3c0 100644 --- a/homeassistant/components/braviatv/translations/no.json +++ b/homeassistant/components/braviatv/translations/no.json @@ -21,7 +21,7 @@ "data": { "host": "Vert" }, - "description": "Sett opp Sony Bravia TV-integrasjon. Hvis du har problemer med konfigurasjonen, g\u00e5 til: [https://www.home-assistant.io/integrations/braviatv](https://www.home-assistant.io/integrations/braviatv)\n\n Forsikre deg om at TV-en er sl\u00e5tt p\u00e5.", + "description": "S\u00f8rg for at TV-en er sl\u00e5tt p\u00e5 f\u00f8r du pr\u00f8ver \u00e5 sette den opp.", "title": "" } } diff --git a/homeassistant/components/braviatv/translations/pl.json b/homeassistant/components/braviatv/translations/pl.json index 1aa5d7cb58a..354962a62d9 100644 --- a/homeassistant/components/braviatv/translations/pl.json +++ b/homeassistant/components/braviatv/translations/pl.json @@ -21,7 +21,7 @@ "data": { "host": "Nazwa hosta lub adres IP" }, - "description": "Konfiguracja integracji telewizora Sony Bravia. Je\u015bli masz problemy z konfiguracj\u0105, przejd\u017a do strony: https://www.home-assistant.io/integrations/braviatv\n\nUpewnij si\u0119, \u017ce telewizor jest w\u0142\u0105czony.", + "description": "Upewnij si\u0119, \u017ce telewizor jest w\u0142\u0105czony, zanim spr\u00f3bujesz go skonfigurowa\u0107.", "title": "Sony Bravia TV" } } diff --git a/homeassistant/components/braviatv/translations/pt-BR.json b/homeassistant/components/braviatv/translations/pt-BR.json index bd6d47af018..a784e30d84c 100644 --- a/homeassistant/components/braviatv/translations/pt-BR.json +++ b/homeassistant/components/braviatv/translations/pt-BR.json @@ -21,7 +21,7 @@ "data": { "host": "Nome do host" }, - "description": "Configure a integra\u00e7\u00e3o do Sony Bravia TV. Se voc\u00ea tiver problemas com a configura\u00e7\u00e3o, acesse: https://www.home-assistant.io/integrations/braviatv \n\n Verifique se a sua TV est\u00e1 ligada.", + "description": "Certifique-se de que sua TV esteja ligada antes de tentar configur\u00e1-la.", "title": "Sony Bravia TV" } } diff --git a/homeassistant/components/braviatv/translations/ru.json b/homeassistant/components/braviatv/translations/ru.json index add32dd0d79..3aeb83f7686 100644 --- a/homeassistant/components/braviatv/translations/ru.json +++ b/homeassistant/components/braviatv/translations/ru.json @@ -21,7 +21,7 @@ "data": { "host": "\u0425\u043e\u0441\u0442" }, - "description": "\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 \u043f\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438:\nhttps://www.home-assistant.io/integrations/braviatv", + "description": "\u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0412\u0430\u0448 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440 \u0432\u043a\u043b\u044e\u0447\u0435\u043d.", "title": "\u0422\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440 Sony Bravia" } } diff --git a/homeassistant/components/braviatv/translations/tr.json b/homeassistant/components/braviatv/translations/tr.json index 6d0f82e29a4..b6df4a7999a 100644 --- a/homeassistant/components/braviatv/translations/tr.json +++ b/homeassistant/components/braviatv/translations/tr.json @@ -21,7 +21,7 @@ "data": { "host": "Ana Bilgisayar" }, - "description": "Sony Bravia TV entegrasyonunu ayarlay\u0131n. Yap\u0131land\u0131rmayla ilgili sorunlar\u0131n\u0131z varsa \u015fu adrese gidin: https://www.home-assistant.io/integrations/braviatv \n\n TV'nizin a\u00e7\u0131k oldu\u011fundan emin olun.", + "description": "Kurmaya \u00e7al\u0131\u015fmadan \u00f6nce TV'nizin a\u00e7\u0131k oldu\u011fundan emin olun.", "title": "Sony Bravia TV" } } diff --git a/homeassistant/components/braviatv/translations/zh-Hant.json b/homeassistant/components/braviatv/translations/zh-Hant.json index f736b601a74..35ef6ef2e4f 100644 --- a/homeassistant/components/braviatv/translations/zh-Hant.json +++ b/homeassistant/components/braviatv/translations/zh-Hant.json @@ -21,7 +21,7 @@ "data": { "host": "\u4e3b\u6a5f\u7aef" }, - "description": "\u8a2d\u5b9a Sony Bravia \u96fb\u8996\u6574\u5408\u3002\u5047\u5982\u65bc\u8a2d\u5b9a\u904e\u7a0b\u4e2d\u906d\u9047\u56f0\u7136\uff0c\u8acb\u53c3\u95b1\uff1ahttps://www.home-assistant.io/integrations/braviatv \n\n\u78ba\u5b9a\u96fb\u8996\u5df2\u7d93\u958b\u555f\u3002", + "description": "\u65bc\u8a2d\u5b9a\u524d\u78ba\u5b9a\u96fb\u8996\u5df2\u7d93\u958b\u555f\u3002", "title": "Sony Bravia \u96fb\u8996" } } diff --git a/homeassistant/components/broadlink/translations/hu.json b/homeassistant/components/broadlink/translations/hu.json index 0bab0c1752f..70fd71b5897 100644 --- a/homeassistant/components/broadlink/translations/hu.json +++ b/homeassistant/components/broadlink/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "cannot_connect": "Sikertelen csatlakoz\u00e1s", "invalid_host": "\u00c9rv\u00e9nytelen hosztn\u00e9v vagy IP-c\u00edm", "not_supported": "Az eszk\u00f6z nem t\u00e1mogatott", @@ -20,7 +20,7 @@ }, "finish": { "data": { - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" }, "title": "V\u00e1lasszonegy nevet az eszk\u00f6znek" }, diff --git a/homeassistant/components/brother/translations/ca.json b/homeassistant/components/brother/translations/ca.json index 689495478bb..d9b664dfe82 100644 --- a/homeassistant/components/brother/translations/ca.json +++ b/homeassistant/components/brother/translations/ca.json @@ -15,14 +15,13 @@ "data": { "host": "Amfitri\u00f3", "type": "Tipus d'impressora" - }, - "description": "Configura la integraci\u00f3 d'impressora Brother. Si tens problemes amb la configuraci\u00f3, visita: https://www.home-assistant.io/integrations/brother" + } }, "zeroconf_confirm": { "data": { "type": "Tipus d'impressora" }, - "description": "Vols afegir la impressora Brother {model} amb n\u00famero de s\u00e8rie `{serial_number}` a Home Assistant?", + "description": "Vols afegir la impressora {model} amb n\u00famero de s\u00e8rie `{serial_number}` a Home Assistant?", "title": "Impressora Brother descoberta" } } diff --git a/homeassistant/components/brother/translations/da.json b/homeassistant/components/brother/translations/da.json index fc9cd0079d8..7dcd8188085 100644 --- a/homeassistant/components/brother/translations/da.json +++ b/homeassistant/components/brother/translations/da.json @@ -14,8 +14,7 @@ "data": { "host": "Printerens v\u00e6rtsnavn eller IP-adresse", "type": "Type af printer" - }, - "description": "Konfigurer Brother-printerintegration. Hvis du har problemer med konfiguration, kan du g\u00e5 til: https://www.home-assistant.io/integrations/brother" + } }, "zeroconf_confirm": { "data": { diff --git a/homeassistant/components/brother/translations/de.json b/homeassistant/components/brother/translations/de.json index 8126a04f21d..e8056b0505a 100644 --- a/homeassistant/components/brother/translations/de.json +++ b/homeassistant/components/brother/translations/de.json @@ -15,14 +15,13 @@ "data": { "host": "Host", "type": "Typ des Druckers" - }, - "description": "Einrichten der Brother-Drucker-Integration. Wenn Du Probleme mit der Konfiguration hast, gehe zu: https://www.home-assistant.io/integrations/brother" + } }, "zeroconf_confirm": { "data": { "type": "Typ des Druckers" }, - "description": "M\u00f6chtest du den Brother Drucker {model} mit der Seriennummer `{serial_number}` zum Home Assistant hinzuf\u00fcgen?", + "description": "M\u00f6chtest du den Drucker {model} mit der Seriennummer ` {serial_number} ` zu Home Assistant hinzuf\u00fcgen?", "title": "Brother-Drucker entdeckt" } } diff --git a/homeassistant/components/brother/translations/el.json b/homeassistant/components/brother/translations/el.json index f8a27353a6a..e8c9e4ea8e7 100644 --- a/homeassistant/components/brother/translations/el.json +++ b/homeassistant/components/brother/translations/el.json @@ -15,8 +15,7 @@ "data": { "host": "\u039a\u03b5\u03bd\u03c4\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae\u03c2", "type": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03c4\u03bf\u03c5 \u03b5\u03ba\u03c4\u03c5\u03c0\u03c9\u03c4\u03ae" - }, - "description": "\u03a1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 \u03b5\u03ba\u03c4\u03c5\u03c0\u03c9\u03c4\u03ae Brother. \u0395\u03ac\u03bd \u03ad\u03c7\u03b5\u03c4\u03b5 \u03c0\u03c1\u03bf\u03b2\u03bb\u03ae\u03bc\u03b1\u03c4\u03b1 \u03bc\u03b5 \u03c4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03bc\u03b5\u03c4\u03b1\u03b2\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7: https://www.home-assistant.io/integrations/brother" + } }, "zeroconf_confirm": { "data": { diff --git a/homeassistant/components/brother/translations/en.json b/homeassistant/components/brother/translations/en.json index 8ec9d84c7fb..997cdb1ea83 100644 --- a/homeassistant/components/brother/translations/en.json +++ b/homeassistant/components/brother/translations/en.json @@ -15,14 +15,13 @@ "data": { "host": "Host", "type": "Type of the printer" - }, - "description": "Set up Brother printer integration. If you have problems with configuration go to: https://www.home-assistant.io/integrations/brother" + } }, "zeroconf_confirm": { "data": { "type": "Type of the printer" }, - "description": "Do you want to add the Brother Printer {model} with serial number `{serial_number}` to Home Assistant?", + "description": "Do you want to add the printer {model} with serial number `{serial_number}` to Home Assistant?", "title": "Discovered Brother Printer" } } diff --git a/homeassistant/components/brother/translations/es-419.json b/homeassistant/components/brother/translations/es-419.json index 33d06705017..21c57cab021 100644 --- a/homeassistant/components/brother/translations/es-419.json +++ b/homeassistant/components/brother/translations/es-419.json @@ -14,8 +14,7 @@ "data": { "host": "Nombre de host de la impresora o direcci\u00f3n IP", "type": "Tipo de impresora" - }, - "description": "Configure la integraci\u00f3n de la impresora Brother. Si tiene problemas con la configuraci\u00f3n, vaya a: https://www.home-assistant.io/integrations/brother" + } }, "zeroconf_confirm": { "data": { diff --git a/homeassistant/components/brother/translations/es.json b/homeassistant/components/brother/translations/es.json index 43b3cefdded..bc6aa749445 100644 --- a/homeassistant/components/brother/translations/es.json +++ b/homeassistant/components/brother/translations/es.json @@ -15,8 +15,7 @@ "data": { "host": "Host", "type": "Tipo de impresora" - }, - "description": "Configura la integraci\u00f3n de impresoras Brother. Si tienes problemas con la configuraci\u00f3n, ve a: https://www.home-assistant.io/integrations/brother" + } }, "zeroconf_confirm": { "data": { diff --git a/homeassistant/components/brother/translations/et.json b/homeassistant/components/brother/translations/et.json index 1115e5cb3ca..99928a5d1ab 100644 --- a/homeassistant/components/brother/translations/et.json +++ b/homeassistant/components/brother/translations/et.json @@ -15,14 +15,13 @@ "data": { "host": "Host", "type": "Printeri t\u00fc\u00fcp" - }, - "description": "Seadista Brotheri printeri sidumine. Kui seadistamisega on probleeme mine aadressile https://www.home-assistant.io/integrations/brother" + } }, "zeroconf_confirm": { "data": { "type": "Printeri t\u00fc\u00fcp" }, - "description": "Kas soovite lisada Home Assistanti Brotheri printeri {model} seerianumbriga \" {serial_number} \"?", + "description": "Kas lisada Home Assistantile printer {model} seerianumbriga ` {serial_number} `?", "title": "Avastatud Brotheri printer" } } diff --git a/homeassistant/components/brother/translations/fr.json b/homeassistant/components/brother/translations/fr.json index 851d46f1772..4d248d05102 100644 --- a/homeassistant/components/brother/translations/fr.json +++ b/homeassistant/components/brother/translations/fr.json @@ -15,14 +15,13 @@ "data": { "host": "H\u00f4te", "type": "Type d'imprimante" - }, - "description": "Configurez l'int\u00e9gration de l'imprimante Brother. Si vous avez des probl\u00e8mes avec la configuration, allez \u00e0 : https://www.home-assistant.io/integrations/brother" + } }, "zeroconf_confirm": { "data": { "type": "Type d'imprimante" }, - "description": "Voulez-vous ajouter l'imprimante Brother {model} avec le num\u00e9ro de s\u00e9rie `{serial_number}` \u00e0 Home Assistant ?", + "description": "Voulez-vous ajouter l'imprimante {model} portant le num\u00e9ro de s\u00e9rie `{serial_number}` \u00e0 Home Assistant\u00a0?", "title": "Imprimante Brother d\u00e9couverte" } } diff --git a/homeassistant/components/brother/translations/hu.json b/homeassistant/components/brother/translations/hu.json index f0218dc2647..93c368cf74a 100644 --- a/homeassistant/components/brother/translations/hu.json +++ b/homeassistant/components/brother/translations/hu.json @@ -15,14 +15,13 @@ "data": { "host": "C\u00edm", "type": "A nyomtat\u00f3 t\u00edpusa" - }, - "description": "A Brother nyomtat\u00f3 integr\u00e1ci\u00f3j\u00e1nak be\u00e1ll\u00edt\u00e1sa. Ha probl\u00e9m\u00e1id vannak a konfigur\u00e1ci\u00f3val, l\u00e1togass el a k\u00f6vetkez\u0151 oldalra: https://www.home-assistant.io/integrations/brother" + } }, "zeroconf_confirm": { "data": { "type": "A nyomtat\u00f3 t\u00edpusa" }, - "description": "Hozz\u00e1 szeretn\u00e9 adni a {model} Brother nyomtat\u00f3t, amelynek sorsz\u00e1ma: `{serial_number}`, Home Assistanthoz?", + "description": "Hozz\u00e1 szeretn\u00e9 adni a {model} nyomtat\u00f3t, amelynek sorsz\u00e1ma: `{serial_number}`, Home Assistanthoz?", "title": "Felfedezett Brother nyomtat\u00f3" } } diff --git a/homeassistant/components/brother/translations/id.json b/homeassistant/components/brother/translations/id.json index ed02999710e..135274450d3 100644 --- a/homeassistant/components/brother/translations/id.json +++ b/homeassistant/components/brother/translations/id.json @@ -15,14 +15,13 @@ "data": { "host": "Host", "type": "Jenis printer" - }, - "description": "Siapkan integrasi printer Brother. Jika Anda memiliki masalah dengan konfigurasi, buka: https://www.home-assistant.io/integrations/brother" + } }, "zeroconf_confirm": { "data": { "type": "Jenis printer" }, - "description": "Ingin menambahkan Printer Brother {model} dengan nomor seri `{serial_number}` ke Home Assistant?", + "description": "Ingin menambahkan printer {model} dengan nomor seri `{serial_number}` ke Home Assistant?", "title": "Perangkat Printer Brother yang Ditemukan" } } diff --git a/homeassistant/components/brother/translations/it.json b/homeassistant/components/brother/translations/it.json index 29059723159..21fd1bf15ab 100644 --- a/homeassistant/components/brother/translations/it.json +++ b/homeassistant/components/brother/translations/it.json @@ -15,14 +15,13 @@ "data": { "host": "Host", "type": "Tipo di stampante" - }, - "description": "Configura l'integrazione della stampante Brother. In caso di problemi con la configurazione, visita: https://www.home-assistant.io/integrations/brother" + } }, "zeroconf_confirm": { "data": { "type": "Tipo di stampante" }, - "description": "Vuoi aggiungere la stampante Brother {model} con il numero seriale `{serial_number}` a Home Assistant?", + "description": "Vuoi aggiungere la stampante {model} con il numero seriale `{serial_number}` a Home Assistant?", "title": "Trovata stampante Brother" } } diff --git a/homeassistant/components/brother/translations/ja.json b/homeassistant/components/brother/translations/ja.json index 6c0e1e57767..ce3341ef676 100644 --- a/homeassistant/components/brother/translations/ja.json +++ b/homeassistant/components/brother/translations/ja.json @@ -15,8 +15,7 @@ "data": { "host": "\u30db\u30b9\u30c8", "type": "\u30d7\u30ea\u30f3\u30bf\u30fc\u306e\u7a2e\u985e" - }, - "description": "\u30d6\u30e9\u30b6\u30fc\u793e\u88fd\u30d7\u30ea\u30f3\u30bf\u30fc\u306e\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u307e\u3059\u3002\u8a2d\u5b9a\u306b\u95a2\u3057\u3066\u554f\u984c\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f\u3001https://www.home-assistant.io/integrations/brother \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u304f\u3060\u3055\u3044" + } }, "zeroconf_confirm": { "data": { diff --git a/homeassistant/components/brother/translations/ko.json b/homeassistant/components/brother/translations/ko.json index 2d3b587e475..a69c415f061 100644 --- a/homeassistant/components/brother/translations/ko.json +++ b/homeassistant/components/brother/translations/ko.json @@ -15,8 +15,7 @@ "data": { "host": "\ud638\uc2a4\ud2b8", "type": "\ud504\ub9b0\ud130\uc758 \uc885\ub958" - }, - "description": "\ube0c\ub77c\ub354 \ud504\ub9b0\ud130 \ud1b5\ud569 \uad6c\uc131\uc694\uc18c\ub97c \uc124\uc815\ud569\ub2c8\ub2e4. \uad6c\uc131\uc5d0 \ubb38\uc81c\uac00\uc788\ub294 \uacbd\uc6b0 https://www.home-assistant.io/integrations/brother \ub97c \ucc38\uc870\ud574\uc8fc\uc138\uc694" + } }, "zeroconf_confirm": { "data": { diff --git a/homeassistant/components/brother/translations/lb.json b/homeassistant/components/brother/translations/lb.json index 91964ec90ca..0a0d3785274 100644 --- a/homeassistant/components/brother/translations/lb.json +++ b/homeassistant/components/brother/translations/lb.json @@ -15,8 +15,7 @@ "data": { "host": "Host", "type": "Typ vum Printer" - }, - "description": "Brother Printer Integratioun ariichten. Am Fall vun Problemer kuckt op: https://www.home-assistant.io/integrations/brother" + } }, "zeroconf_confirm": { "data": { diff --git a/homeassistant/components/brother/translations/nl.json b/homeassistant/components/brother/translations/nl.json index 6440be77e75..97c506299a7 100644 --- a/homeassistant/components/brother/translations/nl.json +++ b/homeassistant/components/brother/translations/nl.json @@ -15,14 +15,13 @@ "data": { "host": "Host", "type": "Type printer" - }, - "description": "Zet Brother printerintegratie op. Als u problemen heeft met de configuratie ga dan naar: https://www.home-assistant.io/integrations/brother" + } }, "zeroconf_confirm": { "data": { "type": "Type printer" }, - "description": "Wilt u het Brother Printer {model} met serienummer {serial_number}' toevoegen aan Home Assistant?", + "description": "Wilt u de printer {model} met serienummer ` {serial_number} ` toevoegen aan Home Assistant?", "title": "Ontdekte Brother Printer" } } diff --git a/homeassistant/components/brother/translations/no.json b/homeassistant/components/brother/translations/no.json index 9d3618cad62..2f383701288 100644 --- a/homeassistant/components/brother/translations/no.json +++ b/homeassistant/components/brother/translations/no.json @@ -15,14 +15,13 @@ "data": { "host": "Vert", "type": "Skriver type" - }, - "description": "Sett opp Brother skriver integrasjonen. Hvis du har problemer med konfigurasjonen, bes\u00f8k dokumentasjonen her: [https://www.home-assistant.io/integrations/brother](https://www.home-assistant.io/integrations/brother)" + } }, "zeroconf_confirm": { "data": { "type": "Type skriver" }, - "description": "Vil du legge til Brother-skriveren {model} med serienummeret `{serial_number}` til Home Assistant?", + "description": "Vil du legge til skriveren {model} med serienummeret ` {serial_number} ` til Home Assistant?", "title": "Oppdaget Brother Skriver" } } diff --git a/homeassistant/components/brother/translations/pl.json b/homeassistant/components/brother/translations/pl.json index 20031bf94ad..159b0308ab7 100644 --- a/homeassistant/components/brother/translations/pl.json +++ b/homeassistant/components/brother/translations/pl.json @@ -15,14 +15,13 @@ "data": { "host": "Nazwa hosta lub adres IP", "type": "Typ drukarki" - }, - "description": "Konfiguracja integracji drukarek Brother. Je\u015bli masz problemy z konfiguracj\u0105, przejd\u017a na stron\u0119: https://www.home-assistant.io/integrations/brother" + } }, "zeroconf_confirm": { "data": { "type": "Typ drukarki" }, - "description": "Czy chcesz doda\u0107 drukark\u0119 Brother {model} o numerze seryjnym `{serial_number}` do Home Assistanta?", + "description": "Czy chcesz doda\u0107 drukark\u0119 {model} o numerze seryjnym `{serial_number}` do Home Assistanta?", "title": "Wykryto drukark\u0119 Brother" } } diff --git a/homeassistant/components/brother/translations/pt-BR.json b/homeassistant/components/brother/translations/pt-BR.json index 33113d12881..5e938d90edd 100644 --- a/homeassistant/components/brother/translations/pt-BR.json +++ b/homeassistant/components/brother/translations/pt-BR.json @@ -15,14 +15,13 @@ "data": { "host": "Nome do host", "type": "Tipo de impressora" - }, - "description": "Configure a integra\u00e7\u00e3o da impressora Brother. Se voc\u00ea tiver problemas com a configura\u00e7\u00e3o, acesse: https://www.home-assistant.io/integrations/brother" + } }, "zeroconf_confirm": { "data": { "type": "Tipo de impressora" }, - "description": "Deseja adicionar a impressora Brother {model} com n\u00famero de s\u00e9rie ` {serial_number} ` ao Home Assistant?", + "description": "Deseja adicionar a impressora {model} com n\u00famero de s\u00e9rie ` {serial_number} ` ao Home Assistant?", "title": "Impressora Brother descoberta" } } diff --git a/homeassistant/components/brother/translations/ru.json b/homeassistant/components/brother/translations/ru.json index 6fd15e30ac3..a9f6158ccf8 100644 --- a/homeassistant/components/brother/translations/ru.json +++ b/homeassistant/components/brother/translations/ru.json @@ -15,14 +15,13 @@ "data": { "host": "\u0425\u043e\u0441\u0442", "type": "\u0422\u0438\u043f \u043f\u0440\u0438\u043d\u0442\u0435\u0440\u0430" - }, - "description": "\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 \u043f\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438: https://www.home-assistant.io/integrations/brother." + } }, "zeroconf_confirm": { "data": { "type": "\u0422\u0438\u043f \u043f\u0440\u0438\u043d\u0442\u0435\u0440\u0430" }, - "description": "\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u043d\u0442\u0435\u0440 Brother {model} \u0441 \u0441\u0435\u0440\u0438\u0439\u043d\u044b\u043c \u043d\u043e\u043c\u0435\u0440\u043e\u043c `{serial_number}`?", + "description": "\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u043d\u0442\u0435\u0440 {model} \u0441 \u0441\u0435\u0440\u0438\u0439\u043d\u044b\u043c \u043d\u043e\u043c\u0435\u0440\u043e\u043c `{serial_number}`?", "title": "\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d \u043f\u0440\u0438\u043d\u0442\u0435\u0440 Brother" } } diff --git a/homeassistant/components/brother/translations/sl.json b/homeassistant/components/brother/translations/sl.json index 53ce1423819..fcd53a65413 100644 --- a/homeassistant/components/brother/translations/sl.json +++ b/homeassistant/components/brother/translations/sl.json @@ -14,8 +14,7 @@ "data": { "host": "Gostiteljsko ime tiskalnika ali naslov IP", "type": "Vrsta tiskalnika" - }, - "description": "Nastavite integracijo tiskalnika Brother. \u010ce imate te\u017eave s konfiguracijo, pojdite na: https://www.home-assistant.io/integrations/brother" + } }, "zeroconf_confirm": { "data": { diff --git a/homeassistant/components/brother/translations/sv.json b/homeassistant/components/brother/translations/sv.json index 3a049bb92c8..00d29aa3a0a 100644 --- a/homeassistant/components/brother/translations/sv.json +++ b/homeassistant/components/brother/translations/sv.json @@ -14,8 +14,7 @@ "data": { "host": "Skrivarens v\u00e4rdnamn eller IP-adress", "type": "Typ av skrivare" - }, - "description": "St\u00e4ll in Brother-skrivarintegration. Om du har problem med konfigurationen g\u00e5r du till: https://www.home-assistant.io/integrations/brother" + } }, "zeroconf_confirm": { "data": { diff --git a/homeassistant/components/brother/translations/tr.json b/homeassistant/components/brother/translations/tr.json index c989844c6f7..291be1c4138 100644 --- a/homeassistant/components/brother/translations/tr.json +++ b/homeassistant/components/brother/translations/tr.json @@ -15,14 +15,13 @@ "data": { "host": "Sunucu", "type": "Yaz\u0131c\u0131n\u0131n t\u00fcr\u00fc" - }, - "description": "Brother yaz\u0131c\u0131 entegrasyonunu ayarlay\u0131n. Yap\u0131land\u0131rmayla ilgili sorunlar\u0131n\u0131z varsa \u015fu adrese gidin: https://www.home-assistant.io/integrations/brother" + } }, "zeroconf_confirm": { "data": { "type": "Yaz\u0131c\u0131n\u0131n t\u00fcr\u00fc" }, - "description": "Seri numaras\u0131 ` {serial_number} ` olan Brother Yaz\u0131c\u0131 {model} }'i Home Assistant'a eklemek ister misiniz?", + "description": "Seri numaras\u0131 ` {serial_number} ` olan {model} yaz\u0131c\u0131y\u0131 Home Assistant'a eklemek istiyor musunuz?", "title": "Ke\u015ffedilen Brother Yaz\u0131c\u0131" } } diff --git a/homeassistant/components/brother/translations/uk.json b/homeassistant/components/brother/translations/uk.json index ac5943aa85c..89ce35d988e 100644 --- a/homeassistant/components/brother/translations/uk.json +++ b/homeassistant/components/brother/translations/uk.json @@ -15,8 +15,7 @@ "data": { "host": "\u0425\u043e\u0441\u0442", "type": "\u0422\u0438\u043f \u043f\u0440\u0438\u043d\u0442\u0435\u0440\u0430" - }, - "description": "\u041e\u0437\u043d\u0430\u0439\u043e\u043c\u0442\u0435\u0441\u044f \u0437 \u0456\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0456\u0454\u044e \u043f\u043e \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044e \u0456\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0456\u0457: https://www.home-assistant.io/integrations/brother." + } }, "zeroconf_confirm": { "data": { diff --git a/homeassistant/components/brother/translations/zh-Hans.json b/homeassistant/components/brother/translations/zh-Hans.json index 91e0c310dd1..5a0e6f80393 100644 --- a/homeassistant/components/brother/translations/zh-Hans.json +++ b/homeassistant/components/brother/translations/zh-Hans.json @@ -8,9 +8,6 @@ "snmp_error": "SNMP\u670d\u52a1\u5668\u5df2\u5173\u95ed\u6216\u4e0d\u652f\u6301\u6253\u5370\u3002" }, "step": { - "user": { - "description": "\u8bbe\u7f6e Brother \u6253\u5370\u673a\u96c6\u6210\u3002\u5982\u679c\u60a8\u9047\u5230\u95ee\u9898\uff0c\u8bf7\u8bbf\u95ee\uff1ahttps://www.home-assistant.io/integrations/brother" - }, "zeroconf_confirm": { "data": { "type": "\u6253\u5370\u673a\u7c7b\u578b" diff --git a/homeassistant/components/brother/translations/zh-Hant.json b/homeassistant/components/brother/translations/zh-Hant.json index 016d83309f2..1fdeedbb556 100644 --- a/homeassistant/components/brother/translations/zh-Hant.json +++ b/homeassistant/components/brother/translations/zh-Hant.json @@ -15,8 +15,7 @@ "data": { "host": "\u4e3b\u6a5f\u7aef", "type": "\u5370\u8868\u6a5f\u985e\u5225" - }, - "description": "\u8a2d\u5b9a Brother \u5370\u8868\u6a5f\u6574\u5408\u3002\u5047\u5982\u9700\u8981\u5354\u52a9\uff0c\u8acb\u53c3\u8003\uff1ahttps://www.home-assistant.io/integrations/brother" + } }, "zeroconf_confirm": { "data": { diff --git a/homeassistant/components/bsblan/translations/hu.json b/homeassistant/components/bsblan/translations/hu.json index f04a0a3af0e..0c02cfb733d 100644 --- a/homeassistant/components/bsblan/translations/hu.json +++ b/homeassistant/components/bsblan/translations/hu.json @@ -17,7 +17,7 @@ "port": "Port", "username": "Felhaszn\u00e1l\u00f3n\u00e9v" }, - "description": "\u00c1ll\u00edtsa be a BSB-Lan eszk\u00f6zt az HomeAssistantba val\u00f3 integr\u00e1ci\u00f3hoz.", + "description": "\u00c1ll\u00edtsa be a BSB-Lan eszk\u00f6zt az Home Assistantba val\u00f3 integr\u00e1ci\u00f3hoz.", "title": "Csatlakoz\u00e1s a BSB-Lan eszk\u00f6zh\u00f6z" } } diff --git a/homeassistant/components/cast/translations/cs.json b/homeassistant/components/cast/translations/cs.json index f04465341e3..cfcc3594575 100644 --- a/homeassistant/components/cast/translations/cs.json +++ b/homeassistant/components/cast/translations/cs.json @@ -3,10 +3,42 @@ "abort": { "single_instance_allowed": "Ji\u017e nastaveno. Je mo\u017en\u00e1 pouze jedin\u00e1 konfigurace." }, + "error": { + "invalid_known_hosts": "Zn\u00e1m\u00ed hostitel\u00e9 mus\u00ed b\u00fdt seznam hostitel\u016f odd\u011blen\u00fd \u010d\u00e1rkou." + }, "step": { + "config": { + "data": { + "known_hosts": "Zn\u00e1m\u00ed hostitel\u00e9" + }, + "description": "Zn\u00e1m\u00ed hostitel\u00e9 - seznam n\u00e1zv\u016f hostitel\u016f nebo IP adres za\u0159\u00edzen\u00ed odd\u011blen\u00fd \u010d\u00e1rkou, kter\u00fd se pou\u017eije, pokud nefunguje zji\u0161\u0165ov\u00e1n\u00ed pomoc\u00ed mDNS.", + "title": "Konfigurace Google Cast" + }, "confirm": { "description": "Chcete za\u010d\u00edt nastavovat?" } } + }, + "options": { + "error": { + "invalid_known_hosts": "Zn\u00e1m\u00ed hostitel\u00e9 mus\u00ed b\u00fdt seznam hostitel\u016f odd\u011blen\u00fd \u010d\u00e1rkou." + }, + "step": { + "advanced_options": { + "data": { + "ignore_cec": "Ignorovat CEC", + "uuid": "Povolen\u00e9 UUID" + }, + "description": "Allowed UUIDs - \u010d\u00e1rkou odd\u011blen\u00fd seznam UUID za\u0159\u00edzen\u00ed Cast, kter\u00e9 chcete p\u0159idat do aplikace Home Assistant. Pou\u017eijte pouze v p\u0159\u00edpad\u011b, \u017ee nechcete p\u0159idat v\u0161echna dostupn\u00e1 za\u0159\u00edzen\u00ed Cast.\nIgnorovat CEC - \u010c\u00e1rkou odd\u011blen\u00fd seznam za\u0159\u00edzen\u00ed Chromecast, kter\u00e1 maj\u00ed p\u0159i ur\u010dov\u00e1n\u00ed aktivn\u00edho vstupu ignorovat data CEC. Tento \u00fadaj bude p\u0159ed\u00e1n do pychromecast.IGNORE_CEC.", + "title": "Pokro\u010dil\u00e1 konfigurace Google Cast" + }, + "basic_options": { + "data": { + "known_hosts": "Zn\u00e1m\u00ed hostitel\u00e9" + }, + "description": "Zn\u00e1m\u00ed hostitel\u00e9 - seznam n\u00e1zv\u016f hostitel\u016f nebo IP adres za\u0159\u00edzen\u00ed odd\u011blen\u00fd \u010d\u00e1rkou, kter\u00fd se pou\u017eije, pokud nefunguje zji\u0161\u0165ov\u00e1n\u00ed pomoc\u00ed mDNS.", + "title": "Konfigurace Google Cast" + } + } } } \ No newline at end of file diff --git a/homeassistant/components/climacell/translations/ca.json b/homeassistant/components/climacell/translations/ca.json index fa924ae8272..78d43991e90 100644 --- a/homeassistant/components/climacell/translations/ca.json +++ b/homeassistant/components/climacell/translations/ca.json @@ -25,7 +25,7 @@ "data": { "timestep": "Minuts entre previsions NowCast" }, - "description": "Si decideixes activar l'entitat de predicci\u00f3 \"nowcast\", podr\u00e0s configurar l'interval en minuts entre cada previsi\u00f3. El nombre de previsions proporcionades dep\u00e8n d'aquest interval de minuts.", + "description": "Si decideixes activar l'entitat de previsi\u00f3 `nowcast`, podr\u00e0s configurar l'interval en minuts entre cada previsi\u00f3. El nombre de previsions proporcionades dep\u00e8n d'aquest interval de minuts.", "title": "Actualitzaci\u00f3 d'opcions de ClimaCell" } } diff --git a/homeassistant/components/climacell/translations/de.json b/homeassistant/components/climacell/translations/de.json index eb5f3f73faf..01e9a81647e 100644 --- a/homeassistant/components/climacell/translations/de.json +++ b/homeassistant/components/climacell/translations/de.json @@ -23,7 +23,7 @@ "step": { "init": { "data": { - "timestep": "Minuten zwischen den Kurzvorhersagen" + "timestep": "Minuten zwischen den NowCast Kurzvorhersagen" }, "description": "Wenn du die Vorhersage-Entitit\u00e4t \"Kurzvorhersage\" aktivierst, kannst du die Anzahl der Minuten zwischen den einzelnen Vorhersagen konfigurieren. Die Anzahl der bereitgestellten Vorhersagen h\u00e4ngt von der Anzahl der zwischen den Vorhersagen gew\u00e4hlten Minuten ab.", "title": "ClimaCell-Optionen aktualisieren" diff --git a/homeassistant/components/climacell/translations/en.json b/homeassistant/components/climacell/translations/en.json index a35be85d5b2..3e5cd436ba8 100644 --- a/homeassistant/components/climacell/translations/en.json +++ b/homeassistant/components/climacell/translations/en.json @@ -1,4 +1,24 @@ { + "config": { + "error": { + "cannot_connect": "Failed to connect", + "invalid_api_key": "Invalid API key", + "rate_limited": "Currently rate limited, please try again later.", + "unknown": "Unexpected error" + }, + "step": { + "user": { + "data": { + "api_key": "API Key", + "api_version": "API Version", + "latitude": "Latitude", + "longitude": "Longitude", + "name": "Name" + }, + "description": "If Latitude and Longitude are not provided, the default values in the Home Assistant configuration will be used. An entity will be created for each forecast type but only the ones you select will be enabled by default." + } + } + }, "options": { "step": { "init": { @@ -9,5 +29,6 @@ "title": "Update ClimaCell Options" } } - } + }, + "title": "ClimaCell" } \ No newline at end of file diff --git a/homeassistant/components/climacell/translations/fr.json b/homeassistant/components/climacell/translations/fr.json index 19b986a3db7..9194073bb5a 100644 --- a/homeassistant/components/climacell/translations/fr.json +++ b/homeassistant/components/climacell/translations/fr.json @@ -23,9 +23,9 @@ "step": { "init": { "data": { - "timestep": "Min. Entre les pr\u00e9visions NowCast" + "timestep": "Min. entre les pr\u00e9visions NowCast" }, - "description": "Si vous choisissez d'activer l'entit\u00e9 de pr\u00e9vision \u00abnowcast\u00bb, vous pouvez configurer le nombre de minutes entre chaque pr\u00e9vision. Le nombre de pr\u00e9visions fournies d\u00e9pend du nombre de minutes choisies entre les pr\u00e9visions.", + "description": "Si vous choisissez d'activer l'entit\u00e9 de pr\u00e9vision \u00ab\u00a0nowcast\u00a0\u00bb, vous pouvez configurer le nombre de minutes entre chaque pr\u00e9vision. Le nombre de pr\u00e9visions fournies d\u00e9pend du nombre de minutes choisies entre les pr\u00e9visions.", "title": "Mettre \u00e0 jour les options ClimaCell" } } diff --git a/homeassistant/components/climacell/translations/hu.json b/homeassistant/components/climacell/translations/hu.json index 3454a489455..bdeb913275c 100644 --- a/homeassistant/components/climacell/translations/hu.json +++ b/homeassistant/components/climacell/translations/hu.json @@ -3,7 +3,7 @@ "error": { "cannot_connect": "Sikertelen csatlakoz\u00e1s", "invalid_api_key": "\u00c9rv\u00e9nytelen API kulcs", - "rate_limited": "Jelenleg korl\u00e1tozott sebess\u00e9g\u0171, k\u00e9rj\u00fck, pr\u00f3b\u00e1lja meg k\u00e9s\u0151bb \u00fajra.", + "rate_limited": "Jelenleg korl\u00e1tozott a hozz\u00e1f\u00e9r\u00e9s, k\u00e9rj\u00fck, pr\u00f3b\u00e1lja meg k\u00e9s\u0151bb \u00fajra.", "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" }, "step": { @@ -13,7 +13,7 @@ "api_version": "API Verzi\u00f3", "latitude": "Sz\u00e9less\u00e9g", "longitude": "Hossz\u00fas\u00e1g", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" }, "description": "Ha a Sz\u00e9less\u00e9g \u00e9s Hossz\u00fas\u00e1g nincs megadva, akkor a Home Assistant konfigur\u00e1ci\u00f3j\u00e1ban l\u00e9v\u0151 alap\u00e9rtelmezett \u00e9rt\u00e9keket fogjuk haszn\u00e1lni. Minden el\u0151rejelz\u00e9si t\u00edpushoz l\u00e9trej\u00f6n egy entit\u00e1s, de alap\u00e9rtelmez\u00e9s szerint csak az \u00d6n \u00e1ltal kiv\u00e1lasztottak lesznek enged\u00e9lyezve." } @@ -26,7 +26,7 @@ "timestep": "Min. A NowCast el\u0151rejelz\u00e9sek k\u00f6z\u00f6tt" }, "description": "Ha a `nowcast` el\u0151rejelz\u00e9si entit\u00e1s enged\u00e9lyez\u00e9s\u00e9t v\u00e1lasztja, be\u00e1ll\u00edthatja az egyes el\u0151rejelz\u00e9sek k\u00f6z\u00f6tti percek sz\u00e1m\u00e1t. A megadott el\u0151rejelz\u00e9sek sz\u00e1ma az el\u0151rejelz\u00e9sek k\u00f6z\u00f6tt kiv\u00e1lasztott percek sz\u00e1m\u00e1t\u00f3l f\u00fcgg.", - "title": "Friss\u00edtse a ClimaCell be\u00e1ll\u00edt\u00e1sokat" + "title": "ClimaCell be\u00e1ll\u00edt\u00e1sok friss\u00edt\u00e9se" } } }, diff --git a/homeassistant/components/climacell/translations/pl.json b/homeassistant/components/climacell/translations/pl.json index dc08cb9b1bf..e107be1e001 100644 --- a/homeassistant/components/climacell/translations/pl.json +++ b/homeassistant/components/climacell/translations/pl.json @@ -23,7 +23,7 @@ "step": { "init": { "data": { - "timestep": "Minuty pomi\u0119dzy prognozami" + "timestep": "Czas (min) mi\u0119dzy prognozami NowCast" }, "description": "Je\u015bli zdecydujesz si\u0119 w\u0142\u0105czy\u0107 encj\u0119 prognozy \u201enowcast\u201d, mo\u017cesz skonfigurowa\u0107 liczb\u0119 minut mi\u0119dzy ka\u017cd\u0105 prognoz\u0105. Liczba dostarczonych prognoz zale\u017cy od liczby minut wybranych mi\u0119dzy prognozami.", "title": "Opcje aktualizacji ClimaCell" diff --git a/homeassistant/components/climacell/translations/sensor.fr.json b/homeassistant/components/climacell/translations/sensor.fr.json index 95625c2b8da..acff91fc570 100644 --- a/homeassistant/components/climacell/translations/sensor.fr.json +++ b/homeassistant/components/climacell/translations/sensor.fr.json @@ -2,7 +2,7 @@ "state": { "climacell__health_concern": { "good": "Bon", - "hazardous": "Hasardeux", + "hazardous": "Dangereux", "moderate": "Mod\u00e9r\u00e9", "unhealthy": "Mauvais pour la sant\u00e9", "unhealthy_for_sensitive_groups": "Mauvaise qualit\u00e9 pour les groupes sensibles", diff --git a/homeassistant/components/climacell/translations/sensor.hu.json b/homeassistant/components/climacell/translations/sensor.hu.json index d864d505143..656a460f429 100644 --- a/homeassistant/components/climacell/translations/sensor.hu.json +++ b/homeassistant/components/climacell/translations/sensor.hu.json @@ -17,7 +17,7 @@ "very_low": "Nagyon alacsony" }, "climacell__precipitation_type": { - "freezing_rain": "Fagyos es\u0151", + "freezing_rain": "Havas es\u0151", "ice_pellets": "\u00d3nos es\u0151", "none": "Nincs", "rain": "Es\u0151", diff --git a/homeassistant/components/climate/translations/et.json b/homeassistant/components/climate/translations/et.json index 7be57f4cdaa..c57a4d72991 100644 --- a/homeassistant/components/climate/translations/et.json +++ b/homeassistant/components/climate/translations/et.json @@ -18,8 +18,8 @@ "_": { "auto": "Automaatne", "cool": "Jahuta", - "dry": "Kuiv", - "fan_only": "Ainult ventilaator", + "dry": "Kuivata", + "fan_only": "Ventileeri", "heat": "Soojenda", "heat_cool": "K\u00fcta/jahuta", "off": "V\u00e4ljas" diff --git a/homeassistant/components/cloudflare/translations/he.json b/homeassistant/components/cloudflare/translations/he.json index 1f53e94240c..9303ea9143c 100644 --- a/homeassistant/components/cloudflare/translations/he.json +++ b/homeassistant/components/cloudflare/translations/he.json @@ -25,7 +25,8 @@ "user": { "data": { "api_token": "\u05d0\u05e1\u05d9\u05de\u05d5\u05df API" - } + }, + "description": "\u05e9\u05d9\u05dc\u05d5\u05d1 \u05d6\u05d4 \u05d3\u05d5\u05e8\u05e9 \u05d0\u05e1\u05d9\u05de\u05d5\u05df API \u05e9\u05e0\u05d5\u05e6\u05e8 \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea Zone:Zone:Read and Zone:DNS:\u05e2\u05e8\u05d9\u05db\u05ea \u05d4\u05e8\u05e9\u05d0\u05d5\u05ea \u05e2\u05d1\u05d5\u05e8 \u05db\u05dc \u05d4\u05d0\u05d6\u05d5\u05e8\u05d9\u05dd \u05d1\u05d7\u05e9\u05d1\u05d5\u05df \u05e9\u05dc\u05da." }, "zone": { "data": { diff --git a/homeassistant/components/coinbase/translations/ca.json b/homeassistant/components/coinbase/translations/ca.json index 0772a04aa15..0543f97003a 100644 --- a/homeassistant/components/coinbase/translations/ca.json +++ b/homeassistant/components/coinbase/translations/ca.json @@ -36,7 +36,8 @@ "data": { "account_balance_currencies": "Saldos de cartera a informar.", "exchange_base": "Moneda base per als sensors de canvi de tipus.", - "exchange_rate_currencies": "Tipus de canvi a informar." + "exchange_rate_currencies": "Tipus de canvi a informar.", + "exchnage_rate_precision": "Nombre de posicions decimals per als tipus de canvi." }, "description": "Ajusta les opcions de Coinbase" } diff --git a/homeassistant/components/coinbase/translations/de.json b/homeassistant/components/coinbase/translations/de.json index 4c1d2edc5ca..d4b58ae42bd 100644 --- a/homeassistant/components/coinbase/translations/de.json +++ b/homeassistant/components/coinbase/translations/de.json @@ -36,7 +36,8 @@ "data": { "account_balance_currencies": "Zu meldende Wallet-Guthaben.", "exchange_base": "Basisw\u00e4hrung f\u00fcr Wechselkurssensoren.", - "exchange_rate_currencies": "Zu meldende Wechselkurse." + "exchange_rate_currencies": "Zu meldende Wechselkurse.", + "exchnage_rate_precision": "Anzahl der Dezimalstellen f\u00fcr Wechselkurse." }, "description": "Coinbase-Optionen anpassen" } diff --git a/homeassistant/components/coinbase/translations/el.json b/homeassistant/components/coinbase/translations/el.json index 196aaad8643..05d6a1f7415 100644 --- a/homeassistant/components/coinbase/translations/el.json +++ b/homeassistant/components/coinbase/translations/el.json @@ -36,7 +36,8 @@ "data": { "account_balance_currencies": "\u03a5\u03c0\u03cc\u03bb\u03bf\u03b9\u03c0\u03b1 \u03c0\u03bf\u03c1\u03c4\u03bf\u03c6\u03bf\u03bb\u03b9\u03bf\u03cd \u03c0\u03c1\u03bf\u03c2 \u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac.", "exchange_base": "\u0392\u03b1\u03c3\u03b9\u03ba\u03cc \u03bd\u03cc\u03bc\u03b9\u03c3\u03bc\u03b1 \u03b3\u03b9\u03b1 \u03c4\u03bf\u03c5\u03c2 \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b5\u03c2 \u03c3\u03c5\u03bd\u03b1\u03bb\u03bb\u03b1\u03b3\u03bc\u03b1\u03c4\u03b9\u03ba\u03ce\u03bd \u03b9\u03c3\u03bf\u03c4\u03b9\u03bc\u03b9\u03ce\u03bd.", - "exchange_rate_currencies": "\u03a3\u03c5\u03bd\u03b1\u03bb\u03bb\u03b1\u03b3\u03bc\u03b1\u03c4\u03b9\u03ba\u03ad\u03c2 \u03b9\u03c3\u03bf\u03c4\u03b9\u03bc\u03af\u03b5\u03c2 \u03c0\u03c1\u03bf\u03c2 \u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac." + "exchange_rate_currencies": "\u03a3\u03c5\u03bd\u03b1\u03bb\u03bb\u03b1\u03b3\u03bc\u03b1\u03c4\u03b9\u03ba\u03ad\u03c2 \u03b9\u03c3\u03bf\u03c4\u03b9\u03bc\u03af\u03b5\u03c2 \u03c0\u03c1\u03bf\u03c2 \u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac.", + "exchnage_rate_precision": "\u0391\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03b4\u03b5\u03ba\u03b1\u03b4\u03b9\u03ba\u03ce\u03bd \u03c8\u03b7\u03c6\u03af\u03c9\u03bd \u03b3\u03b9\u03b1 \u03c4\u03b9\u03c2 \u03c3\u03c5\u03bd\u03b1\u03bb\u03bb\u03b1\u03b3\u03bc\u03b1\u03c4\u03b9\u03ba\u03ad\u03c2 \u03b9\u03c3\u03bf\u03c4\u03b9\u03bc\u03af\u03b5\u03c2." }, "description": "\u03a0\u03c1\u03bf\u03c3\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ce\u03bd Coinbase" } diff --git a/homeassistant/components/coinbase/translations/en.json b/homeassistant/components/coinbase/translations/en.json index 019159c8057..d5d7483e260 100644 --- a/homeassistant/components/coinbase/translations/en.json +++ b/homeassistant/components/coinbase/translations/en.json @@ -14,7 +14,9 @@ "user": { "data": { "api_key": "API Key", - "api_token": "API Secret" + "api_token": "API Secret", + "currencies": "Account Balance Currencies", + "exchange_rates": "Exchange Rates" }, "description": "Please enter the details of your API key as provided by Coinbase.", "title": "Coinbase API Key Details" @@ -24,7 +26,9 @@ "options": { "error": { "currency_unavailable": "One or more of the requested currency balances is not provided by your Coinbase API.", + "currency_unavaliable": "One or more of the requested currency balances is not provided by your Coinbase API.", "exchange_rate_unavailable": "One or more of the requested exchange rates is not provided by Coinbase.", + "exchange_rate_unavaliable": "One or more of the requested exchange rates is not provided by Coinbase.", "unknown": "Unexpected error" }, "step": { diff --git a/homeassistant/components/coinbase/translations/et.json b/homeassistant/components/coinbase/translations/et.json index 0c30ec9ff34..821d17656d2 100644 --- a/homeassistant/components/coinbase/translations/et.json +++ b/homeassistant/components/coinbase/translations/et.json @@ -36,7 +36,8 @@ "data": { "account_balance_currencies": "Rahakoti saldod teavitamine.", "exchange_base": "Vahetuskursiandurite baasvaluuta.", - "exchange_rate_currencies": "Vahetuskursside aruanne." + "exchange_rate_currencies": "Vahetuskursside aruanne.", + "exchnage_rate_precision": "Vahetuskursside k\u00fcmnendkohtade arv." }, "description": "Kohanda Coinbase'i valikuid" } diff --git a/homeassistant/components/coinbase/translations/fr.json b/homeassistant/components/coinbase/translations/fr.json index 01cd7ec6dbf..77664cca73d 100644 --- a/homeassistant/components/coinbase/translations/fr.json +++ b/homeassistant/components/coinbase/translations/fr.json @@ -36,7 +36,8 @@ "data": { "account_balance_currencies": "Soldes du portefeuille \u00e0 d\u00e9clarer.", "exchange_base": "Devise de base pour les capteurs de taux de change.", - "exchange_rate_currencies": "Taux de change \u00e0 d\u00e9clarer." + "exchange_rate_currencies": "Taux de change \u00e0 d\u00e9clarer.", + "exchnage_rate_precision": "Nombre de d\u00e9cimales pour les taux de change." }, "description": "Ajuster les options de Coinbase" } diff --git a/homeassistant/components/coinbase/translations/hu.json b/homeassistant/components/coinbase/translations/hu.json index 3db29058e68..44287da0ee6 100644 --- a/homeassistant/components/coinbase/translations/hu.json +++ b/homeassistant/components/coinbase/translations/hu.json @@ -36,7 +36,8 @@ "data": { "account_balance_currencies": "Jelentend\u0151 p\u00e9nzt\u00e1rca egyenlegek.", "exchange_base": "Az \u00e1rfolyam-\u00e9rz\u00e9kel\u0151k alapvalut\u00e1ja.", - "exchange_rate_currencies": "Jelentend\u0151 \u00e1rfolyamok." + "exchange_rate_currencies": "Jelentend\u0151 \u00e1rfolyamok.", + "exchnage_rate_precision": "A tizedesjegyek sz\u00e1ma az \u00e1tv\u00e1lt\u00e1si \u00e1rfolyamokn\u00e1l." }, "description": "\u00c1ll\u00edtsa be a Coinbase opci\u00f3kat" } diff --git a/homeassistant/components/coinbase/translations/id.json b/homeassistant/components/coinbase/translations/id.json index 1d431ffd2fd..477aceafa45 100644 --- a/homeassistant/components/coinbase/translations/id.json +++ b/homeassistant/components/coinbase/translations/id.json @@ -36,7 +36,8 @@ "data": { "account_balance_currencies": "Saldo dompet untuk dilaporkan.", "exchange_base": "Mata uang dasar untuk sensor nilai tukar.", - "exchange_rate_currencies": "Nilai tukar untuk dilaporkan." + "exchange_rate_currencies": "Nilai tukar untuk dilaporkan.", + "exchnage_rate_precision": "Jumlah digit desimal untuk nilai tukar." }, "description": "Sesuaikan Opsi Coinbase" } diff --git a/homeassistant/components/coinbase/translations/it.json b/homeassistant/components/coinbase/translations/it.json index ecc0d93e747..64b5b0cdca7 100644 --- a/homeassistant/components/coinbase/translations/it.json +++ b/homeassistant/components/coinbase/translations/it.json @@ -36,7 +36,8 @@ "data": { "account_balance_currencies": "Saldi del portafoglio da segnalare.", "exchange_base": "Valuta di base per i sensori di tasso di cambio.", - "exchange_rate_currencies": "Tassi di cambio da segnalare." + "exchange_rate_currencies": "Tassi di cambio da segnalare.", + "exchnage_rate_precision": "Numero di cifre decimali per i tassi di cambio." }, "description": "Regola le opzioni di Coinbase" } diff --git a/homeassistant/components/coinbase/translations/ja.json b/homeassistant/components/coinbase/translations/ja.json index 6b6791d40b2..321e0c05d9d 100644 --- a/homeassistant/components/coinbase/translations/ja.json +++ b/homeassistant/components/coinbase/translations/ja.json @@ -36,7 +36,8 @@ "data": { "account_balance_currencies": "\u30a6\u30a9\u30ec\u30c3\u30c8\u306e\u6b8b\u9ad8\u3092\u5831\u544a\u3059\u308b\u3002", "exchange_base": "\u70ba\u66ff\u30ec\u30fc\u30c8\u30bb\u30f3\u30b5\u30fc\u306e\u57fa\u6e96\u901a\u8ca8\u3002", - "exchange_rate_currencies": "\u30ec\u30dd\u30fc\u30c8\u3059\u3079\u304d\u70ba\u66ff\u30ec\u30fc\u30c8" + "exchange_rate_currencies": "\u30ec\u30dd\u30fc\u30c8\u3059\u3079\u304d\u70ba\u66ff\u30ec\u30fc\u30c8", + "exchnage_rate_precision": "\u70ba\u66ff\u30ec\u30fc\u30c8\u306e\u5c0f\u6570\u70b9\u4ee5\u4e0b\u306e\u6841\u6570\u3002" }, "description": "Coinbase\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u8abf\u6574" } diff --git a/homeassistant/components/coinbase/translations/nl.json b/homeassistant/components/coinbase/translations/nl.json index fc2068cb01a..98763deb9a7 100644 --- a/homeassistant/components/coinbase/translations/nl.json +++ b/homeassistant/components/coinbase/translations/nl.json @@ -36,7 +36,8 @@ "data": { "account_balance_currencies": "Wallet-saldi om te rapporteren.", "exchange_base": "Basisvaluta voor wisselkoerssensoren.", - "exchange_rate_currencies": "Wisselkoersen om te rapporteren." + "exchange_rate_currencies": "Wisselkoersen om te rapporteren.", + "exchnage_rate_precision": "Aantal decimalen voor wisselkoersen." }, "description": "Coinbase-opties aanpassen" } diff --git a/homeassistant/components/coinbase/translations/no.json b/homeassistant/components/coinbase/translations/no.json index 9a24d984c32..5171814cf9d 100644 --- a/homeassistant/components/coinbase/translations/no.json +++ b/homeassistant/components/coinbase/translations/no.json @@ -36,7 +36,8 @@ "data": { "account_balance_currencies": "Lommeboksaldoer som skal rapporteres.", "exchange_base": "Standardvaluta for valutakurssensorer.", - "exchange_rate_currencies": "Valutakurser som skal rapporteres." + "exchange_rate_currencies": "Valutakurser som skal rapporteres.", + "exchnage_rate_precision": "Antall desimaler for valutakurser." }, "description": "Juster Coinbase-alternativer" } diff --git a/homeassistant/components/coinbase/translations/pl.json b/homeassistant/components/coinbase/translations/pl.json index 14432be5928..7465ae24486 100644 --- a/homeassistant/components/coinbase/translations/pl.json +++ b/homeassistant/components/coinbase/translations/pl.json @@ -36,7 +36,8 @@ "data": { "account_balance_currencies": "Salda portfela do zg\u0142oszenia.", "exchange_base": "Waluta bazowa dla sensor\u00f3w kurs\u00f3w walut.", - "exchange_rate_currencies": "Kursy walut do zg\u0142oszenia." + "exchange_rate_currencies": "Kursy walut do zg\u0142oszenia.", + "exchnage_rate_precision": "Liczba miejsc po przecinku dla kurs\u00f3w walut." }, "description": "Dostosuj opcje Coinbase" } diff --git a/homeassistant/components/coinbase/translations/pt-BR.json b/homeassistant/components/coinbase/translations/pt-BR.json index 6596135208b..5ed52fa7afc 100644 --- a/homeassistant/components/coinbase/translations/pt-BR.json +++ b/homeassistant/components/coinbase/translations/pt-BR.json @@ -36,7 +36,8 @@ "data": { "account_balance_currencies": "Saldos da carteira a relatar.", "exchange_base": "Moeda base para sensores de taxa de c\u00e2mbio.", - "exchange_rate_currencies": "Taxas de c\u00e2mbio a informar." + "exchange_rate_currencies": "Taxas de c\u00e2mbio a informar.", + "exchnage_rate_precision": "N\u00famero de casas decimais para taxas de c\u00e2mbio." }, "description": "Ajustar as op\u00e7\u00f5es da Coinbase" } diff --git a/homeassistant/components/coinbase/translations/ru.json b/homeassistant/components/coinbase/translations/ru.json index 41439aacea8..951c0182320 100644 --- a/homeassistant/components/coinbase/translations/ru.json +++ b/homeassistant/components/coinbase/translations/ru.json @@ -36,7 +36,8 @@ "data": { "account_balance_currencies": "\u0411\u0430\u043b\u0430\u043d\u0441\u044b \u043a\u043e\u0448\u0435\u043b\u044c\u043a\u0430 \u0434\u043b\u044f \u043e\u0442\u0447\u0435\u0442\u043d\u043e\u0441\u0442\u0438.", "exchange_base": "\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u0432\u0430\u043b\u044e\u0442\u0430 \u0434\u043b\u044f \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u043e\u0431\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u0443\u0440\u0441\u0430.", - "exchange_rate_currencies": "\u041a\u0443\u0440\u0441\u044b \u0432\u0430\u043b\u044e\u0442 \u0434\u043b\u044f \u043e\u0442\u0447\u0435\u0442\u043d\u043e\u0441\u0442\u0438." + "exchange_rate_currencies": "\u041a\u0443\u0440\u0441\u044b \u0432\u0430\u043b\u044e\u0442 \u0434\u043b\u044f \u043e\u0442\u0447\u0435\u0442\u043d\u043e\u0441\u0442\u0438.", + "exchnage_rate_precision": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u043a\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u044f\u0442\u043e\u0439 \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u043d\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432." }, "description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 Coinbase" } diff --git a/homeassistant/components/coinbase/translations/tr.json b/homeassistant/components/coinbase/translations/tr.json index e52b6a81e76..e21cab489e4 100644 --- a/homeassistant/components/coinbase/translations/tr.json +++ b/homeassistant/components/coinbase/translations/tr.json @@ -36,7 +36,8 @@ "data": { "account_balance_currencies": "Rapor edilecek c\u00fczdan bakiyeleri.", "exchange_base": "D\u00f6viz kuru sens\u00f6rleri i\u00e7in temel para birimi.", - "exchange_rate_currencies": "Raporlanacak d\u00f6viz kurlar\u0131." + "exchange_rate_currencies": "Raporlanacak d\u00f6viz kurlar\u0131.", + "exchnage_rate_precision": "D\u00f6viz kurlar\u0131 i\u00e7in ondal\u0131k basamak say\u0131s\u0131." }, "description": "Coinbase Se\u00e7eneklerini Ayarlay\u0131n" } diff --git a/homeassistant/components/coinbase/translations/zh-Hant.json b/homeassistant/components/coinbase/translations/zh-Hant.json index 4510515bff2..315fe90254f 100644 --- a/homeassistant/components/coinbase/translations/zh-Hant.json +++ b/homeassistant/components/coinbase/translations/zh-Hant.json @@ -36,7 +36,8 @@ "data": { "account_balance_currencies": "\u5e33\u6236\u9918\u984d\u56de\u5831\u503c\u3002", "exchange_base": "\u532f\u7387\u611f\u6e2c\u5668\u57fa\u6e96\u8ca8\u5e63\u3002", - "exchange_rate_currencies": "\u532f\u7387\u56de\u5831\u503c\u3002" + "exchange_rate_currencies": "\u532f\u7387\u56de\u5831\u503c\u3002", + "exchnage_rate_precision": "\u532f\u7387\u5c0f\u6578\u4f4d\u6578\u3002" }, "description": "\u8abf\u6574 Coinbase \u9078\u9805" } diff --git a/homeassistant/components/coronavirus/translations/hu.json b/homeassistant/components/coronavirus/translations/hu.json index 9b79c82a014..880990f35c0 100644 --- a/homeassistant/components/coronavirus/translations/hu.json +++ b/homeassistant/components/coronavirus/translations/hu.json @@ -9,7 +9,7 @@ "data": { "country": "Orsz\u00e1g" }, - "title": "V\u00e1lassz egy orsz\u00e1got a megfigyel\u00e9shez" + "title": "V\u00e1lasszon egy orsz\u00e1got a figyel\u00e9shez" } } } diff --git a/homeassistant/components/cover/translations/he.json b/homeassistant/components/cover/translations/he.json index 66f6b9f3bbe..9e6fa77594f 100644 --- a/homeassistant/components/cover/translations/he.json +++ b/homeassistant/components/cover/translations/he.json @@ -10,7 +10,7 @@ "stop": "\u05e2\u05e6\u05d5\u05e8 {entity_name}" }, "condition_type": { - "is_closed": "{entity_name} \u05e1\u05d2\u05d5\u05e8", + "is_closed": "{entity_name} \u05e0\u05e1\u05d2\u05e8", "is_closing": "{entity_name} \u05e0\u05e1\u05d2\u05e8", "is_open": "{entity_name} \u05e4\u05ea\u05d5\u05d7", "is_opening": "{entity_name} \u05e0\u05e4\u05ea\u05d7", @@ -28,7 +28,7 @@ }, "state": { "_": { - "closed": "\u05e1\u05d2\u05d5\u05e8", + "closed": "\u05e0\u05e1\u05d2\u05e8", "closing": "\u05e1\u05d5\u05d2\u05e8", "open": "\u05e4\u05ea\u05d5\u05d7", "opening": "\u05e4\u05d5\u05ea\u05d7", diff --git a/homeassistant/components/cpuspeed/translations/bg.json b/homeassistant/components/cpuspeed/translations/bg.json index df41c1d7b0a..22f23d4428d 100644 --- a/homeassistant/components/cpuspeed/translations/bg.json +++ b/homeassistant/components/cpuspeed/translations/bg.json @@ -1,7 +1,6 @@ { "config": { "abort": { - "alread_configured": "\u0412\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e. \u0412\u044a\u0437\u043c\u043e\u0436\u043d\u0430 \u0435 \u0441\u0430\u043c\u043e \u0435\u0434\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f.", "already_configured": "\u0412\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e. \u0412\u044a\u0437\u043c\u043e\u0436\u043d\u0430 \u0435 \u0441\u0430\u043c\u043e \u0435\u0434\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f." }, "step": { diff --git a/homeassistant/components/cpuspeed/translations/ca.json b/homeassistant/components/cpuspeed/translations/ca.json index 17e6295a5a9..79d3ccdf412 100644 --- a/homeassistant/components/cpuspeed/translations/ca.json +++ b/homeassistant/components/cpuspeed/translations/ca.json @@ -1,7 +1,6 @@ { "config": { "abort": { - "alread_configured": "Ja configurat. Nom\u00e9s \u00e9s possible una sola configuraci\u00f3.", "already_configured": "Ja configurat. Nom\u00e9s \u00e9s possible una sola configuraci\u00f3.", "not_compatible": "No es pot obtenir la informaci\u00f3 de CPU, aquesta integraci\u00f3 no \u00e9s compatible amb el teu sistema" }, diff --git a/homeassistant/components/cpuspeed/translations/de.json b/homeassistant/components/cpuspeed/translations/de.json index f32ef08adba..60f5123a61c 100644 --- a/homeassistant/components/cpuspeed/translations/de.json +++ b/homeassistant/components/cpuspeed/translations/de.json @@ -1,7 +1,6 @@ { "config": { "abort": { - "alread_configured": "Bereits konfiguriert. Nur eine einzige Konfiguration m\u00f6glich.", "already_configured": "Bereits konfiguriert. Nur eine einzige Konfiguration m\u00f6glich.", "not_compatible": "CPU-Informationen k\u00f6nnen nicht abgerufen werden, diese Integration ist nicht mit deinem System kompatibel" }, diff --git a/homeassistant/components/cpuspeed/translations/el.json b/homeassistant/components/cpuspeed/translations/el.json index 4c3541e2640..aac30ca2a82 100644 --- a/homeassistant/components/cpuspeed/translations/el.json +++ b/homeassistant/components/cpuspeed/translations/el.json @@ -1,7 +1,6 @@ { "config": { "abort": { - "alread_configured": "\u0388\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af. \u039c\u03cc\u03bd\u03bf \u03bc\u03af\u03b1 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae.", "already_configured": "\u0388\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af. \u039c\u03cc\u03bd\u03bf \u03bc\u03af\u03b1 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae.", "not_compatible": "\u0394\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03bb\u03ae\u03c8\u03b7 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03b9\u03ce\u03bd CPU, \u03b1\u03c5\u03c4\u03ae \u03b7 \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03c3\u03c5\u03bc\u03b2\u03b1\u03c4\u03ae \u03bc\u03b5 \u03c4\u03bf \u03c3\u03cd\u03c3\u03c4\u03b7\u03bc\u03ac \u03c3\u03b1\u03c2" }, diff --git a/homeassistant/components/cpuspeed/translations/en.json b/homeassistant/components/cpuspeed/translations/en.json index adcf047b382..d482e5d3d3d 100644 --- a/homeassistant/components/cpuspeed/translations/en.json +++ b/homeassistant/components/cpuspeed/translations/en.json @@ -1,7 +1,6 @@ { "config": { "abort": { - "alread_configured": "Already configured. Only a single configuration possible.", "already_configured": "Already configured. Only a single configuration possible.", "not_compatible": "Unable to get CPU information, this integration is not compatible with your system" }, diff --git a/homeassistant/components/cpuspeed/translations/es.json b/homeassistant/components/cpuspeed/translations/es.json index 03b2a17dba3..87ff7b0c783 100644 --- a/homeassistant/components/cpuspeed/translations/es.json +++ b/homeassistant/components/cpuspeed/translations/es.json @@ -1,7 +1,6 @@ { "config": { "abort": { - "alread_configured": "Ya configurado. Solo es posible una \u00fanica configuraci\u00f3n.", "already_configured": "Ya configurado. Solo es posible una \u00fanica configuraci\u00f3n.", "not_compatible": "No se puede obtener informaci\u00f3n de la CPU, esta integraci\u00f3n no es compatible con su sistema" }, diff --git a/homeassistant/components/cpuspeed/translations/et.json b/homeassistant/components/cpuspeed/translations/et.json index 037d1b73086..69805d26d58 100644 --- a/homeassistant/components/cpuspeed/translations/et.json +++ b/homeassistant/components/cpuspeed/translations/et.json @@ -1,7 +1,6 @@ { "config": { "abort": { - "alread_configured": "Juba seadistatud. Lubatud on ainult \u00fcks sidumine.", "already_configured": "Juba seadistatud. Lubatud on ainult \u00fcks seadistamine.", "not_compatible": "CPU teavet ei saa hankida, see sidumine ei \u00fchildu s\u00fcsteemiga" }, diff --git a/homeassistant/components/cpuspeed/translations/fr.json b/homeassistant/components/cpuspeed/translations/fr.json index 5de49927c49..26428d40ef2 100644 --- a/homeassistant/components/cpuspeed/translations/fr.json +++ b/homeassistant/components/cpuspeed/translations/fr.json @@ -1,7 +1,6 @@ { "config": { "abort": { - "alread_configured": "D\u00e9j\u00e0 configur\u00e9. Une seule configuration possible.", "already_configured": "D\u00e9j\u00e0 configur\u00e9. Une seule configuration possible.", "not_compatible": "Impossible d'obtenir les informations CPU, cette int\u00e9gration n'est pas compatible avec votre syst\u00e8me" }, diff --git a/homeassistant/components/cpuspeed/translations/he.json b/homeassistant/components/cpuspeed/translations/he.json index e38d585f2a4..9c1bb588a8f 100644 --- a/homeassistant/components/cpuspeed/translations/he.json +++ b/homeassistant/components/cpuspeed/translations/he.json @@ -1,13 +1,14 @@ { "config": { "abort": { - "alread_configured": "\u05ea\u05e6\u05d5\u05e8\u05ea\u05d5 \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4. \u05e8\u05e7 \u05ea\u05e6\u05d5\u05e8\u05d4 \u05d0\u05d7\u05ea \u05d0\u05e4\u05e9\u05e8\u05d9\u05ea.", "already_configured": "\u05ea\u05e6\u05d5\u05e8\u05ea\u05d5 \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4. \u05e8\u05e7 \u05ea\u05e6\u05d5\u05e8\u05d4 \u05d0\u05d7\u05ea \u05d0\u05e4\u05e9\u05e8\u05d9\u05ea." }, "step": { "user": { - "description": "\u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05ea\u05d7\u05d9\u05dc \u05d1\u05d4\u05d2\u05d3\u05e8\u05d4?" + "description": "\u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05ea\u05d7\u05d9\u05dc \u05d1\u05d4\u05d2\u05d3\u05e8\u05d4?", + "title": "\u05de\u05d4\u05d9\u05e8\u05d5\u05ea \u05de\u05e2\u05d1\u05d3" } } - } + }, + "title": "\u05de\u05d4\u05d9\u05e8\u05d5\u05ea \u05de\u05e2\u05d1\u05d3" } \ No newline at end of file diff --git a/homeassistant/components/cpuspeed/translations/hu.json b/homeassistant/components/cpuspeed/translations/hu.json index 9ab3aa355dd..400baa4e362 100644 --- a/homeassistant/components/cpuspeed/translations/hu.json +++ b/homeassistant/components/cpuspeed/translations/hu.json @@ -1,7 +1,6 @@ { "config": { "abort": { - "alread_configured": "M\u00e1r konfigur\u00e1lva van. Csak egy konfigur\u00e1ci\u00f3 lehets\u00e9ges.", "already_configured": "M\u00e1r konfigur\u00e1lva van. Csak egy konfigur\u00e1ci\u00f3 lehets\u00e9ges.", "not_compatible": "Nem lehet CPU-inform\u00e1ci\u00f3kat lek\u00e9rni, ez az integr\u00e1ci\u00f3 nem kompatibilis a rendszer\u00e9vel." }, diff --git a/homeassistant/components/cpuspeed/translations/id.json b/homeassistant/components/cpuspeed/translations/id.json index ab3b16da4e9..e8a87d3707d 100644 --- a/homeassistant/components/cpuspeed/translations/id.json +++ b/homeassistant/components/cpuspeed/translations/id.json @@ -1,7 +1,6 @@ { "config": { "abort": { - "alread_configured": "Sudah dikonfigurasi. Hanya satu konfigurasi yang diizinkan.", "already_configured": "Sudah dikonfigurasi. Hanya satu konfigurasi yang diizinkan.", "not_compatible": "Tidak dapat mendapatkan informasi CPU, integrasi ini tidak kompatibel dengan sistem Anda" }, diff --git a/homeassistant/components/cpuspeed/translations/it.json b/homeassistant/components/cpuspeed/translations/it.json index 803458e48d7..ff84b5bf5ad 100644 --- a/homeassistant/components/cpuspeed/translations/it.json +++ b/homeassistant/components/cpuspeed/translations/it.json @@ -1,7 +1,6 @@ { "config": { "abort": { - "alread_configured": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione.", "already_configured": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione.", "not_compatible": "Impossibile ottenere informazioni sulla CPU, questa integrazione non \u00e8 compatibile con il tuo sistema" }, diff --git a/homeassistant/components/cpuspeed/translations/ja.json b/homeassistant/components/cpuspeed/translations/ja.json index d8e2fa85fb7..e2264b57dcb 100644 --- a/homeassistant/components/cpuspeed/translations/ja.json +++ b/homeassistant/components/cpuspeed/translations/ja.json @@ -1,7 +1,6 @@ { "config": { "abort": { - "alread_configured": "\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u5358\u4e00\u306e\u8a2d\u5b9a\u3057\u304b\u3067\u304d\u307e\u305b\u3093\u3002", "already_configured": "\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u5358\u4e00\u306e\u8a2d\u5b9a\u3057\u304b\u3067\u304d\u307e\u305b\u3093\u3002", "not_compatible": "CPU\u60c5\u5831\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u306e\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306f\u3001\u304a\u4f7f\u3044\u306e\u30b7\u30b9\u30c6\u30e0\u3068\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002" }, diff --git a/homeassistant/components/cpuspeed/translations/nl.json b/homeassistant/components/cpuspeed/translations/nl.json index b29d9c9ddf1..c3d09b0b8a6 100644 --- a/homeassistant/components/cpuspeed/translations/nl.json +++ b/homeassistant/components/cpuspeed/translations/nl.json @@ -1,7 +1,6 @@ { "config": { "abort": { - "alread_configured": "Al geconfigureerd. Slechts een enkele configuratie mogelijk.", "already_configured": "Al geconfigureerd. Slechts een enkele configuratie mogelijk.", "not_compatible": "Kan geen CPU-informatie ophalen, deze integratie is niet compatibel met uw systeem" }, diff --git a/homeassistant/components/cpuspeed/translations/no.json b/homeassistant/components/cpuspeed/translations/no.json index 40d5ed1de01..9f3cb464424 100644 --- a/homeassistant/components/cpuspeed/translations/no.json +++ b/homeassistant/components/cpuspeed/translations/no.json @@ -1,7 +1,6 @@ { "config": { "abort": { - "alread_configured": "Allerede konfigurert. Bare \u00e9n enkelt konfigurasjon er mulig.", "already_configured": "Allerede konfigurert. Bare \u00e9n enkelt konfigurasjon er mulig.", "not_compatible": "Kan ikke hente CPU-informasjon, denne integrasjonen er ikke kompatibel med systemet ditt" }, diff --git a/homeassistant/components/cpuspeed/translations/pl.json b/homeassistant/components/cpuspeed/translations/pl.json index 81c37098c29..be477365437 100644 --- a/homeassistant/components/cpuspeed/translations/pl.json +++ b/homeassistant/components/cpuspeed/translations/pl.json @@ -1,7 +1,6 @@ { "config": { "abort": { - "alread_configured": "Ju\u017c skonfigurowano. Mo\u017cliwa jest tylko jedna konfiguracja.", "already_configured": "Ju\u017c skonfigurowano. Mo\u017cliwa jest tylko jedna konfiguracja.", "not_compatible": "Nie mo\u017cna uzyska\u0107 informacji o procesorze, ta integracja nie jest zgodna z twoim systemem" }, diff --git a/homeassistant/components/cpuspeed/translations/pt-BR.json b/homeassistant/components/cpuspeed/translations/pt-BR.json index f39ce9b4c9a..b21fcb00def 100644 --- a/homeassistant/components/cpuspeed/translations/pt-BR.json +++ b/homeassistant/components/cpuspeed/translations/pt-BR.json @@ -1,7 +1,6 @@ { "config": { "abort": { - "alread_configured": "J\u00e1 configurado. Apenas uma configura\u00e7\u00e3o \u00e9 poss\u00edvel.", "already_configured": "J\u00e1 configurado. Apenas uma configura\u00e7\u00e3o \u00e9 poss\u00edvel.", "not_compatible": "N\u00e3o \u00e9 poss\u00edvel obter informa\u00e7\u00f5es da CPU, esta integra\u00e7\u00e3o n\u00e3o \u00e9 compat\u00edvel com seu sistema" }, diff --git a/homeassistant/components/cpuspeed/translations/ru.json b/homeassistant/components/cpuspeed/translations/ru.json index 9638a43f7f7..0a44b56086c 100644 --- a/homeassistant/components/cpuspeed/translations/ru.json +++ b/homeassistant/components/cpuspeed/translations/ru.json @@ -1,7 +1,6 @@ { "config": { "abort": { - "alread_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e.", "already_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e.", "not_compatible": "\u041d\u0435 \u0443\u0434\u0430\u0451\u0442\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435, \u044d\u0442\u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0430 \u0441 \u0412\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439." }, diff --git a/homeassistant/components/cpuspeed/translations/tr.json b/homeassistant/components/cpuspeed/translations/tr.json index d4dd5a271e0..f5689f2f3b4 100644 --- a/homeassistant/components/cpuspeed/translations/tr.json +++ b/homeassistant/components/cpuspeed/translations/tr.json @@ -1,7 +1,6 @@ { "config": { "abort": { - "alread_configured": "Zaten yap\u0131land\u0131r\u0131lm\u0131\u015f. Yaln\u0131zca tek bir konfig\u00fcrasyon m\u00fcmk\u00fcnd\u00fcr.", "already_configured": "Zaten yap\u0131land\u0131r\u0131lm\u0131\u015f. Yaln\u0131zca tek bir konfig\u00fcrasyon m\u00fcmk\u00fcnd\u00fcr.", "not_compatible": "CPU bilgisi al\u0131nam\u0131yor, bu entegrasyon sisteminizle uyumlu de\u011fil" }, diff --git a/homeassistant/components/cpuspeed/translations/zh-Hans.json b/homeassistant/components/cpuspeed/translations/zh-Hans.json index 41130cbdd39..95f5766edc9 100644 --- a/homeassistant/components/cpuspeed/translations/zh-Hans.json +++ b/homeassistant/components/cpuspeed/translations/zh-Hans.json @@ -1,7 +1,6 @@ { "config": { "abort": { - "alread_configured": "\u5f53\u524d\u96c6\u6210\u5df2\u88ab\u914d\u7f6e\uff0c\u4ec5\u80fd\u53ea\u6709\u4e00\u4e2a\u914d\u7f6e", "already_configured": "\u5f53\u524d\u96c6\u6210\u5df2\u88ab\u914d\u7f6e\uff0c\u4ec5\u80fd\u53ea\u6709\u4e00\u4e2a\u914d\u7f6e", "not_compatible": "\u65e0\u6cd5\u83b7\u53d6 CPU \u4fe1\u606f\uff0c\u8be5\u96c6\u6210\u4e0e\u60a8\u7684\u7cfb\u7edf\u4e0d\u517c\u5bb9" }, diff --git a/homeassistant/components/cpuspeed/translations/zh-Hant.json b/homeassistant/components/cpuspeed/translations/zh-Hant.json index 4885aead70a..b88f1d1b1d4 100644 --- a/homeassistant/components/cpuspeed/translations/zh-Hant.json +++ b/homeassistant/components/cpuspeed/translations/zh-Hant.json @@ -1,7 +1,6 @@ { "config": { "abort": { - "alread_configured": "\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210\u3001\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u88dd\u7f6e\u3002", "already_configured": "\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210\u3001\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u88dd\u7f6e\u3002", "not_compatible": "\u7121\u6cd5\u53d6\u5f97 CPU \u8cc7\u8a0a\uff0c\u9019\u500b\u63d2\u4ef6\u8207\u4f60\u7684\u7cfb\u7d71\u4e0d\u76f8\u5bb9" }, diff --git a/homeassistant/components/crownstone/translations/ca.json b/homeassistant/components/crownstone/translations/ca.json index 9de845d87c6..deded7c6b71 100644 --- a/homeassistant/components/crownstone/translations/ca.json +++ b/homeassistant/components/crownstone/translations/ca.json @@ -56,13 +56,6 @@ "description": "Selecciona el port s\u00e8rie de l'adaptador USB Crownstone.\n\nBusca un dispositiu amb VID 10C4 i PID EA60.", "title": "Configuraci\u00f3 de l'adaptador USB Crownstone" }, - "usb_config_option": { - "data": { - "usb_path": "Ruta del dispositiu USB" - }, - "description": "Selecciona el port s\u00e8rie de l'adaptador USB Crownstone.\n\nBusca un dispositiu amb VID 10C4 i PID EA60.", - "title": "Configuraci\u00f3 de l'adaptador USB Crownstone" - }, "usb_manual_config": { "data": { "usb_manual_path": "Ruta del dispositiu USB" @@ -70,26 +63,12 @@ "description": "Introdueix manualment la ruta de l'adaptador USB Crownstone.", "title": "Ruta manual de l'adaptador USB Crownstone" }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "Ruta del dispositiu USB" - }, - "description": "Introdueix manualment la ruta de l'adaptador USB Crownstone.", - "title": "Ruta manual de l'adaptador USB Crownstone" - }, "usb_sphere_config": { "data": { "usb_sphere": "Esfera Crownstone" }, "description": "Selecciona la esfera Crownstone on es troba l'USB.", "title": "Esfera Crownstone USB" - }, - "usb_sphere_config_option": { - "data": { - "usb_sphere": "Esfera Crownstone" - }, - "description": "Selecciona la esfera Crownstone on es troba l'USB.", - "title": "Esfera Crownstone USB" } } } diff --git a/homeassistant/components/crownstone/translations/cs.json b/homeassistant/components/crownstone/translations/cs.json index 1f14cdd8eff..b6c0cae1be2 100644 --- a/homeassistant/components/crownstone/translations/cs.json +++ b/homeassistant/components/crownstone/translations/cs.json @@ -28,20 +28,10 @@ "usb_path": "Cesta k USB za\u0159\u00edzen\u00ed" } }, - "usb_config_option": { - "data": { - "usb_path": "Cesta k USB za\u0159\u00edzen\u00ed" - } - }, "usb_manual_config": { "data": { "usb_manual_path": "Cesta k USB za\u0159\u00edzen\u00ed" } - }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "Cesta k USB za\u0159\u00edzen\u00ed" - } } } } diff --git a/homeassistant/components/crownstone/translations/de.json b/homeassistant/components/crownstone/translations/de.json index a969d9b2999..054d6987c29 100644 --- a/homeassistant/components/crownstone/translations/de.json +++ b/homeassistant/components/crownstone/translations/de.json @@ -56,13 +56,6 @@ "description": "W\u00e4hle den seriellen Anschluss des Crownstone-USB-Dongles.\n\nSuche nach einem Ger\u00e4t mit VID 10C4 und PID EA60.", "title": "Crownstone USB-Dongle-Konfiguration" }, - "usb_config_option": { - "data": { - "usb_path": "USB-Ger\u00e4te-Pfad" - }, - "description": "W\u00e4hle den seriellen Anschluss des Crownstone-USB-Dongles.\n\nSuche nach einem Ger\u00e4t mit VID 10C4 und PID EA60.", - "title": "Crownstone USB-Dongle-Konfiguration" - }, "usb_manual_config": { "data": { "usb_manual_path": "USB-Ger\u00e4te-Pfad" @@ -70,26 +63,12 @@ "description": "Gib den Pfad eines Crownstone USB-Dongles manuell ein.", "title": "Crownstone USB-Dongle manueller Pfad" }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "USB-Ger\u00e4te-Pfad" - }, - "description": "Gib den Pfad eines Crownstone USB-Dongles manuell ein.", - "title": "Crownstone USB-Dongle manueller Pfad" - }, "usb_sphere_config": { "data": { "usb_sphere": "Crownstone Sphere" }, "description": "W\u00e4hle eine Crownstone Sphere aus, in der sich der USB-Stick befindet.", "title": "Crownstone USB Sphere" - }, - "usb_sphere_config_option": { - "data": { - "usb_sphere": "Crownstone Sphere" - }, - "description": "W\u00e4hle eine Crownstone Sphere aus, in der sich der USB-Stick befindet.", - "title": "Crownstone USB Sphere" } } } diff --git a/homeassistant/components/crownstone/translations/el.json b/homeassistant/components/crownstone/translations/el.json index 81cfbd9ad39..b682dedcb1b 100644 --- a/homeassistant/components/crownstone/translations/el.json +++ b/homeassistant/components/crownstone/translations/el.json @@ -56,13 +56,6 @@ "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c4\u03b7 \u03c3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03ae \u03b8\u03cd\u03c1\u03b1 \u03c4\u03bf\u03c5 Crownstone USB dongle.\n\n\u0391\u03bd\u03b1\u03b6\u03b7\u03c4\u03ae\u03c3\u03c4\u03b5 \u03bc\u03b9\u03b1 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03bc\u03b5 VID 10C4 \u03ba\u03b1\u03b9 PID EA60.", "title": "\u03a1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 \u03c4\u03bf\u03c5 Crownstone USB dongle" }, - "usb_config_option": { - "data": { - "usb_path": "\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2 USB" - }, - "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c4\u03b7 \u03c3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03ae \u03b8\u03cd\u03c1\u03b1 \u03c4\u03bf\u03c5 Crownstone USB dongle.\n\n\u0391\u03bd\u03b1\u03b6\u03b7\u03c4\u03ae\u03c3\u03c4\u03b5 \u03bc\u03b9\u03b1 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03bc\u03b5 VID 10C4 \u03ba\u03b1\u03b9 PID EA60.", - "title": "\u03a1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 \u03c4\u03bf\u03c5 Crownstone USB dongle" - }, "usb_manual_config": { "data": { "usb_manual_path": "\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2 USB" @@ -70,26 +63,12 @@ "description": "\u03a7\u03b5\u03b9\u03c1\u03bf\u03ba\u03af\u03bd\u03b7\u03c4\u03b7 \u03b5\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c4\u03b7\u03c2 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae\u03c2 \u03b5\u03bd\u03cc\u03c2 dongle USB Crownstone.", "title": "\u03a7\u03b5\u03b9\u03c1\u03bf\u03ba\u03af\u03bd\u03b7\u03c4\u03b7 \u03b5\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c4\u03b7\u03c2 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae\u03c2 USB dongle Crownstone" }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2 USB" - }, - "description": "\u03a7\u03b5\u03b9\u03c1\u03bf\u03ba\u03af\u03bd\u03b7\u03c4\u03b7 \u03b5\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c4\u03b7\u03c2 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae\u03c2 \u03b5\u03bd\u03cc\u03c2 dongle USB Crownstone.", - "title": "\u03a7\u03b5\u03b9\u03c1\u03bf\u03ba\u03af\u03bd\u03b7\u03c4\u03b7 \u03b5\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c4\u03b7\u03c2 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae\u03c2 USB dongle Crownstone" - }, "usb_sphere_config": { "data": { "usb_sphere": "Crownstone Sphere" }, "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03bc\u03af\u03b1 Crownstone Sphere \u03cc\u03c0\u03bf\u03c5 \u03b2\u03c1\u03af\u03c3\u03ba\u03b5\u03c4\u03b1\u03b9 \u03c4\u03bf USB.", "title": "Crownstone USB Sphere" - }, - "usb_sphere_config_option": { - "data": { - "usb_sphere": "Crownstone Sphere" - }, - "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03bc\u03af\u03b1 Crownstone Sphere \u03cc\u03c0\u03bf\u03c5 \u03b2\u03c1\u03af\u03c3\u03ba\u03b5\u03c4\u03b1\u03b9 \u03c4\u03bf USB.", - "title": "Crownstone USB Sphere" } } } diff --git a/homeassistant/components/crownstone/translations/en.json b/homeassistant/components/crownstone/translations/en.json index d6070c90a0f..09a26b9739c 100644 --- a/homeassistant/components/crownstone/translations/en.json +++ b/homeassistant/components/crownstone/translations/en.json @@ -56,13 +56,6 @@ "description": "Select the serial port of the Crownstone USB dongle.\n\nLook for a device with VID 10C4 and PID EA60.", "title": "Crownstone USB dongle configuration" }, - "usb_config_option": { - "data": { - "usb_path": "USB Device Path" - }, - "description": "Select the serial port of the Crownstone USB dongle.\n\nLook for a device with VID 10C4 and PID EA60.", - "title": "Crownstone USB dongle configuration" - }, "usb_manual_config": { "data": { "usb_manual_path": "USB Device Path" @@ -70,26 +63,12 @@ "description": "Manually enter the path of a Crownstone USB dongle.", "title": "Crownstone USB dongle manual path" }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "USB Device Path" - }, - "description": "Manually enter the path of a Crownstone USB dongle.", - "title": "Crownstone USB dongle manual path" - }, "usb_sphere_config": { "data": { "usb_sphere": "Crownstone Sphere" }, "description": "Select a Crownstone Sphere where the USB is located.", "title": "Crownstone USB Sphere" - }, - "usb_sphere_config_option": { - "data": { - "usb_sphere": "Crownstone Sphere" - }, - "description": "Select a Crownstone Sphere where the USB is located.", - "title": "Crownstone USB Sphere" } } } diff --git a/homeassistant/components/crownstone/translations/es-419.json b/homeassistant/components/crownstone/translations/es-419.json index 1c904302541..40b4cebe97b 100644 --- a/homeassistant/components/crownstone/translations/es-419.json +++ b/homeassistant/components/crownstone/translations/es-419.json @@ -39,9 +39,6 @@ "usb_config": { "description": "Seleccione el puerto serie del dongle USB Crownstone. \n\n Busque un dispositivo con VID 10C4 y PID EA60.", "title": "Configuraci\u00f3n del dongle USB Crownstone" - }, - "usb_config_option": { - "description": "Seleccione el puerto serie del dongle USB Crownstone. \n\n Busque un dispositivo con VID 10C4 y PID EA60." } } } diff --git a/homeassistant/components/crownstone/translations/es.json b/homeassistant/components/crownstone/translations/es.json index 9e4ac60832f..f52b0074322 100644 --- a/homeassistant/components/crownstone/translations/es.json +++ b/homeassistant/components/crownstone/translations/es.json @@ -56,13 +56,6 @@ "description": "Seleccione el puerto serie del dispositivo USB Crownstone.\n\nBusque un dispositivo con VID 10C4 y PID EA60.", "title": "Configuraci\u00f3n del dispositivo USB Crownstone" }, - "usb_config_option": { - "data": { - "usb_path": "Ruta del dispositivo USB" - }, - "description": "Seleccione el puerto serie del dispositivo USB Crownstone.\n\nBusque un dispositivo con VID 10C4 y PID EA60.", - "title": "Configuraci\u00f3n del dispositivo USB Crownstone" - }, "usb_manual_config": { "data": { "usb_manual_path": "Ruta del dispositivo USB" @@ -70,26 +63,12 @@ "description": "Introduzca manualmente la ruta de un dispositivo USB Crownstone.", "title": "Ruta manual del dispositivo USB Crownstone" }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "Ruta del dispositivo USB" - }, - "description": "Introduzca manualmente la ruta de un dispositivo USB Crownstone.", - "title": "Ruta manual del dispositivo USB Crownstone" - }, "usb_sphere_config": { "data": { "usb_sphere": "Esfera Crownstone" }, "description": "Selecciona una Esfera Crownstone donde se encuentra el USB.", "title": "USB de Esfera Crownstone" - }, - "usb_sphere_config_option": { - "data": { - "usb_sphere": "Esfera Crownstone" - }, - "description": "Selecciona una Esfera Crownstone donde se encuentra el USB.", - "title": "USB de Esfera Crownstone" } } } diff --git a/homeassistant/components/crownstone/translations/et.json b/homeassistant/components/crownstone/translations/et.json index 3a651257e1a..da7831e8959 100644 --- a/homeassistant/components/crownstone/translations/et.json +++ b/homeassistant/components/crownstone/translations/et.json @@ -56,13 +56,6 @@ "description": "Vali Crownstone'i USB seadme jadaport. \n\n Otsi seadet mille VID on 10C4 ja PID on EA60.", "title": "Crownstone'i USB seadme s\u00e4tted" }, - "usb_config_option": { - "data": { - "usb_path": "USB seadme rada" - }, - "description": "Vali Crownstone'i USB seadme jadaport. \n\n Otsi seadet mille VID on 10C4 ja PID on EA60.", - "title": "Crownstone'i USB seadme s\u00e4tted" - }, "usb_manual_config": { "data": { "usb_manual_path": "USB seadme rada" @@ -70,26 +63,12 @@ "description": "Sisesta k\u00e4sitsi Crownstone'i USBseadme rada.", "title": "Crownstone'i USB seadme rada" }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "USB seadme rada" - }, - "description": "Sisesta k\u00e4sitsi Crownstone'i USBseadme rada.", - "title": "Crownstone'i USB seadme rada" - }, "usb_sphere_config": { "data": { "usb_sphere": "Crownstone Sphere" }, "description": "Vali Crownstone Sphere kus USB asub.", "title": "Crownstone USB Sphere" - }, - "usb_sphere_config_option": { - "data": { - "usb_sphere": "Crownstone Sphere" - }, - "description": "Vali Crownstone Sphere kus USB asub.", - "title": "Crownstone USB Sphere" } } } diff --git a/homeassistant/components/crownstone/translations/fr.json b/homeassistant/components/crownstone/translations/fr.json index 61a2f0da436..59f9aa0f20b 100644 --- a/homeassistant/components/crownstone/translations/fr.json +++ b/homeassistant/components/crownstone/translations/fr.json @@ -56,13 +56,6 @@ "description": "S\u00e9lectionnez le port s\u00e9rie du dongle USB Crownstone. \n\n Recherchez un appareil avec VID 10C4 et PID EA60.", "title": "Configuration du dongle USB Crownstone" }, - "usb_config_option": { - "data": { - "usb_path": "Chemin du p\u00e9riph\u00e9rique USB" - }, - "description": "S\u00e9lectionnez le port s\u00e9rie du dongle USB Crownstone. \n\n Recherchez un appareil avec VID 10C4 et PID EA60.", - "title": "Configuration du dongle USB Crownstone" - }, "usb_manual_config": { "data": { "usb_manual_path": "Chemin du p\u00e9riph\u00e9rique USB" @@ -70,26 +63,12 @@ "description": "Entrez manuellement le chemin d'un dongle USB Crownstone.", "title": "Chemin d'acc\u00e8s manuel du dongle USB Crownstone" }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "Chemin du p\u00e9riph\u00e9rique USB" - }, - "description": "Entrez manuellement le chemin d'un dongle USB Crownstone.", - "title": "Chemin d'acc\u00e8s manuel du dongle USB Crownstone" - }, "usb_sphere_config": { "data": { "usb_sphere": "Crownstone Sphere" }, "description": "S\u00e9lectionnez une sph\u00e8re Crownstone o\u00f9 se trouve l\u2019USB.", "title": "Sph\u00e8re USB Crownstone" - }, - "usb_sphere_config_option": { - "data": { - "usb_sphere": "Crownstone Sphere" - }, - "description": "S\u00e9lectionnez une sph\u00e8re Crownstone o\u00f9 se trouve l\u2019USB.", - "title": "Sph\u00e8re USB Crownstone" } } } diff --git a/homeassistant/components/crownstone/translations/he.json b/homeassistant/components/crownstone/translations/he.json index af11b65839b..db4289ffebc 100644 --- a/homeassistant/components/crownstone/translations/he.json +++ b/homeassistant/components/crownstone/translations/he.json @@ -33,20 +33,10 @@ "usb_path": "\u05e0\u05ea\u05d9\u05d1 \u05d4\u05ea\u05e7\u05df USB" } }, - "usb_config_option": { - "data": { - "usb_path": "\u05e0\u05ea\u05d9\u05d1 \u05d4\u05ea\u05e7\u05df USB" - } - }, "usb_manual_config": { "data": { "usb_manual_path": "\u05e0\u05ea\u05d9\u05d1 \u05d4\u05ea\u05e7\u05df USB" } - }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "\u05e0\u05ea\u05d9\u05d1 \u05d4\u05ea\u05e7\u05df USB" - } } } } diff --git a/homeassistant/components/crownstone/translations/hu.json b/homeassistant/components/crownstone/translations/hu.json index 2c2a2e34fe1..f2ffe6f2b07 100644 --- a/homeassistant/components/crownstone/translations/hu.json +++ b/homeassistant/components/crownstone/translations/hu.json @@ -56,13 +56,6 @@ "description": "V\u00e1lassza ki a Crownstone USB kulcs soros portj\u00e1t.\n\nKeressen egy VID 10C4 \u00e9s PID EA60 azonos\u00edt\u00f3val rendelkez\u0151 eszk\u00f6zt.", "title": "Crownstone USB kulcs konfigur\u00e1ci\u00f3" }, - "usb_config_option": { - "data": { - "usb_path": "USB eszk\u00f6z el\u00e9r\u00e9si \u00fat" - }, - "description": "V\u00e1lassza ki a Crownstone USB kulcs soros portj\u00e1t.\n\nKeressen egy VID 10C4 \u00e9s PID EA60 azonos\u00edt\u00f3val rendelkez\u0151 eszk\u00f6zt.", - "title": "Crownstone USB kulcs konfigur\u00e1ci\u00f3" - }, "usb_manual_config": { "data": { "usb_manual_path": "USB eszk\u00f6z el\u00e9r\u00e9si \u00fat" @@ -70,26 +63,12 @@ "description": "Adja meg manu\u00e1lisan a Crownstone USB kulcs \u00fatvonal\u00e1t.", "title": "A Crownstone USB kulcs manu\u00e1lis el\u00e9r\u00e9si \u00fatja" }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "USB eszk\u00f6z el\u00e9r\u00e9si \u00fat" - }, - "description": "Adja meg manu\u00e1lisan a Crownstone USB kulcs \u00fatvonal\u00e1t.", - "title": "A Crownstone USB kulcs manu\u00e1lis el\u00e9r\u00e9si \u00fatja" - }, "usb_sphere_config": { "data": { "usb_sphere": "Crownstone Sphere" }, "description": "V\u00e1lasszon egy Crownstone Sphere-t, ahol az USB tal\u00e1lhat\u00f3.", "title": "Crownstone USB Sphere" - }, - "usb_sphere_config_option": { - "data": { - "usb_sphere": "Crownstone Sphere" - }, - "description": "V\u00e1lasszon egy Crownstone Sphere-t, ahol az USB tal\u00e1lhat\u00f3.", - "title": "Crownstone USB Sphere" } } } diff --git a/homeassistant/components/crownstone/translations/id.json b/homeassistant/components/crownstone/translations/id.json index aef98346fd2..381645f1453 100644 --- a/homeassistant/components/crownstone/translations/id.json +++ b/homeassistant/components/crownstone/translations/id.json @@ -56,13 +56,6 @@ "description": "Pilih port serial dongle USB Crownstone. \n\nCari perangkat dengan VID 10C4 dan PID EA60.", "title": "Konfigurasi dongle USB Crownstone" }, - "usb_config_option": { - "data": { - "usb_path": "Jalur Perangkat USB" - }, - "description": "Pilih port serial dongle USB Crownstone. \n\nCari perangkat dengan VID 10C4 dan PID EA60.", - "title": "Konfigurasi dongle USB Crownstone" - }, "usb_manual_config": { "data": { "usb_manual_path": "Jalur Perangkat USB" @@ -70,26 +63,12 @@ "description": "Masukkan jalur dongle USB Crownstone secara manual.", "title": "Jalur manual dongle USB Crownstone" }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "Jalur Perangkat USB" - }, - "description": "Masukkan jalur dongle USB Crownstone secara manual.", - "title": "Jalur manual dongle USB Crownstone" - }, "usb_sphere_config": { "data": { "usb_sphere": "Crownstone Sphere" }, "description": "Pilih Crownstone Sphere tempat USB berada.", "title": "Crownstone USB Sphere" - }, - "usb_sphere_config_option": { - "data": { - "usb_sphere": "Crownstone Sphere" - }, - "description": "Pilih Crownstone Sphere tempat USB berada.", - "title": "Crownstone USB Sphere" } } } diff --git a/homeassistant/components/crownstone/translations/it.json b/homeassistant/components/crownstone/translations/it.json index 062f77c9349..5600ff09de8 100644 --- a/homeassistant/components/crownstone/translations/it.json +++ b/homeassistant/components/crownstone/translations/it.json @@ -56,13 +56,6 @@ "description": "Seleziona la porta seriale della chiavetta USB Crownstone. \n\nCerca un dispositivo con VID 10C4 e PID EA60.", "title": "Configurazione della chiavetta USB Crownstone" }, - "usb_config_option": { - "data": { - "usb_path": "Percorso del dispositivo USB" - }, - "description": "Seleziona la porta seriale della chiavetta USB Crownstone. \n\nCerca un dispositivo con VID 10C4 e PID EA60.", - "title": "Configurazione della chiavetta USB Crownstone" - }, "usb_manual_config": { "data": { "usb_manual_path": "Percorso del dispositivo USB" @@ -70,26 +63,12 @@ "description": "Immettere manualmente il percorso di una chiavetta USB Crownstone.", "title": "Percorso manuale della chiavetta USB Crownstone" }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "Percorso del dispositivo USB" - }, - "description": "Immetti manualmente il percorso di una chiavetta USB Crownstone.", - "title": "Percorso manuale della chiavetta USB Crownstone" - }, "usb_sphere_config": { "data": { "usb_sphere": "Sfera Crownstone" }, "description": "Seleziona una sfera di Crownstone dove si trova l'USB.", "title": "Sfera USB Crownstone" - }, - "usb_sphere_config_option": { - "data": { - "usb_sphere": "Sfera Crownstone" - }, - "description": "Seleziona una sfera Crownstone in cui si trova l'USB.", - "title": "Sfera USB Crownstone" } } } diff --git a/homeassistant/components/crownstone/translations/ja.json b/homeassistant/components/crownstone/translations/ja.json index 6ab8f858af4..639922c4d94 100644 --- a/homeassistant/components/crownstone/translations/ja.json +++ b/homeassistant/components/crownstone/translations/ja.json @@ -56,13 +56,6 @@ "description": "Crownstone USB\u30c9\u30f3\u30b0\u30eb\u306e\u30b7\u30ea\u30a2\u30eb \u30dd\u30fc\u30c8\u3092\u9078\u629e\u3057\u307e\u3059\u3002\n\nVID 10C4 \u3067 PID EA60 \u306a\u5024\u306e\u30c7\u30d0\u30a4\u30b9\u3092\u63a2\u3057\u307e\u3059\u3002", "title": "Crownstone USB\u30c9\u30f3\u30b0\u30eb\u306e\u8a2d\u5b9a" }, - "usb_config_option": { - "data": { - "usb_path": "USB\u30c7\u30d0\u30a4\u30b9\u306e\u30d1\u30b9" - }, - "description": "Crownstone USB\u30c9\u30f3\u30b0\u30eb\u306e\u30b7\u30ea\u30a2\u30eb \u30dd\u30fc\u30c8\u3092\u9078\u629e\u3057\u307e\u3059\u3002\n\nVID 10C4 \u3067 PID EA60 \u306a\u5024\u306e\u30c7\u30d0\u30a4\u30b9\u3092\u63a2\u3057\u307e\u3059\u3002", - "title": "Crownstone USB\u30c9\u30f3\u30b0\u30eb\u306e\u8a2d\u5b9a" - }, "usb_manual_config": { "data": { "usb_manual_path": "USB\u30c7\u30d0\u30a4\u30b9\u306e\u30d1\u30b9" @@ -70,26 +63,12 @@ "description": "\u624b\u52d5\u3067\u3001Crownstone USB\u30c9\u30f3\u30b0\u30eb\u306e\u30d1\u30b9\u3092\u5165\u529b\u3057\u307e\u3059\u3002", "title": "Crownstone USB\u30c9\u30f3\u30b0\u30eb\u3078\u306e\u624b\u52d5\u30d1\u30b9" }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "USB\u30c7\u30d0\u30a4\u30b9\u306e\u30d1\u30b9" - }, - "description": "\u624b\u52d5\u3067\u3001Crownstone USB\u30c9\u30f3\u30b0\u30eb\u306e\u30d1\u30b9\u3092\u5165\u529b\u3057\u307e\u3059\u3002", - "title": "Crownstone USB\u30c9\u30f3\u30b0\u30eb\u3078\u306e\u624b\u52d5\u30d1\u30b9" - }, "usb_sphere_config": { "data": { "usb_sphere": "Crownstone Sphere" }, "description": "USB\u306b\u914d\u7f6e\u3055\u308c\u3066\u3044\u308b\u3001CrownstoneSphere\u3092\u9078\u629e\u3057\u307e\u3059\u3002", "title": "Crownstone USB Sphere" - }, - "usb_sphere_config_option": { - "data": { - "usb_sphere": "Crownstone Sphere" - }, - "description": "USB\u306b\u914d\u7f6e\u3055\u308c\u3066\u3044\u308b\u3001CrownstoneSphere\u3092\u9078\u629e\u3057\u307e\u3059\u3002", - "title": "Crownstone USB Sphere" } } } diff --git a/homeassistant/components/crownstone/translations/ko.json b/homeassistant/components/crownstone/translations/ko.json deleted file mode 100644 index aadd2d3da42..00000000000 --- a/homeassistant/components/crownstone/translations/ko.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "options": { - "step": { - "usb_config_option": { - "data": { - "usb_path": "USB \uc7a5\uce58 \uacbd\ub85c" - } - }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "USB \uc7a5\uce58 \uacbd\ub85c" - } - } - } - } -} \ No newline at end of file diff --git a/homeassistant/components/crownstone/translations/nl.json b/homeassistant/components/crownstone/translations/nl.json index 1da12c8f841..91dddf8619e 100644 --- a/homeassistant/components/crownstone/translations/nl.json +++ b/homeassistant/components/crownstone/translations/nl.json @@ -56,13 +56,6 @@ "description": "Selecteer de seri\u00eble poort van de Crownstone USB dongle.\n\nZoek naar een apparaat met VID 10C4 en PID EA60.", "title": "Crownstone USB dongle configuratie" }, - "usb_config_option": { - "data": { - "usb_path": "USB-apparaatpad" - }, - "description": "Selecteer de seri\u00eble poort van de Crownstone USB dongle.\n\nZoek naar een apparaat met VID 10C4 en PID EA60.", - "title": "Crownstone USB dongle configuratie" - }, "usb_manual_config": { "data": { "usb_manual_path": "USB-apparaatpad" @@ -70,26 +63,12 @@ "description": "Voer handmatig het pad van een Crownstone USB dongle in.", "title": "Crownstone USB-dongle handmatig pad" }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "USB-apparaatpad" - }, - "description": "Voer handmatig het pad van een Crownstone USB dongle in.", - "title": "Crownstone USB-dongle handmatig pad" - }, "usb_sphere_config": { "data": { "usb_sphere": "Crownstone Sphere" }, "description": "Selecteer een Crownstone Sphere waar de USB zich bevindt.", "title": "Crownstone USB Sphere" - }, - "usb_sphere_config_option": { - "data": { - "usb_sphere": "Crownstone Sphere" - }, - "description": "Selecteer een Crownstone Sphere waar de USB zich bevindt.", - "title": "Crownstone USB Sphere" } } } diff --git a/homeassistant/components/crownstone/translations/no.json b/homeassistant/components/crownstone/translations/no.json index 88f3578a9a4..33e61211205 100644 --- a/homeassistant/components/crownstone/translations/no.json +++ b/homeassistant/components/crownstone/translations/no.json @@ -56,13 +56,6 @@ "description": "Velg serieporten til Crownstone USB -dongelen. \n\n Se etter en enhet med VID 10C4 og PID EA60.", "title": "Crownstone USB -dongle -konfigurasjon" }, - "usb_config_option": { - "data": { - "usb_path": "USB enhetsbane" - }, - "description": "Velg serieporten til Crownstone USB -dongelen. \n\n Se etter en enhet med VID 10C4 og PID EA60.", - "title": "Crownstone USB -dongle -konfigurasjon" - }, "usb_manual_config": { "data": { "usb_manual_path": "USB enhetsbane" @@ -70,26 +63,12 @@ "description": "Skriv inn banen til en Crownstone USB -dongle manuelt.", "title": "Crownstone USB -dongle manuell bane" }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "USB enhetsbane" - }, - "description": "Skriv inn banen til en Crownstone USB -dongle manuelt.", - "title": "Crownstone USB -dongle manuell bane" - }, "usb_sphere_config": { "data": { "usb_sphere": "Crownstone Sphere" }, "description": "Velg en Crownstone Sphere der USB -en er plassert.", "title": "Crownstone USB Sphere" - }, - "usb_sphere_config_option": { - "data": { - "usb_sphere": "Crownstone USB Sphere" - }, - "description": "Velg en Crownstone Sphere der USB -en er plassert.", - "title": "Crownstone USB Sphere" } } } diff --git a/homeassistant/components/crownstone/translations/pl.json b/homeassistant/components/crownstone/translations/pl.json index 12ac55d668c..49a1d888a94 100644 --- a/homeassistant/components/crownstone/translations/pl.json +++ b/homeassistant/components/crownstone/translations/pl.json @@ -56,13 +56,6 @@ "description": "Wybierz port szeregowy urz\u0105dzenia USB Crownstone. \n\nPoszukaj urz\u0105dzenia z VID 10C4 i PID EA60.", "title": "Konfiguracja urz\u0105dzenia USB Crownstone" }, - "usb_config_option": { - "data": { - "usb_path": "\u015acie\u017cka urz\u0105dzenia USB" - }, - "description": "Wybierz port szeregowy urz\u0105dzenia USB Crownstone. \n\nPoszukaj urz\u0105dzenia z VID 10C4 i PID EA60.", - "title": "Konfiguracja urz\u0105dzenia USB Crownstone" - }, "usb_manual_config": { "data": { "usb_manual_path": "\u015acie\u017cka urz\u0105dzenia USB" @@ -70,26 +63,12 @@ "description": "Wprowad\u017a r\u0119cznie \u015bcie\u017ck\u0119 urz\u0105dzenia USB Crownstone.", "title": "Wpisz r\u0119cznie \u015bcie\u017ck\u0119 urz\u0105dzenia USB Crownstone" }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "\u015acie\u017cka urz\u0105dzenia USB" - }, - "description": "Wprowad\u017a r\u0119cznie \u015bcie\u017ck\u0119 urz\u0105dzenia USB Crownstone.", - "title": "Wpisz r\u0119cznie \u015bcie\u017ck\u0119 urz\u0105dzenia USB Crownstone" - }, "usb_sphere_config": { "data": { "usb_sphere": "Crownstone Sphere" }, "description": "Wybierz USB, w kt\u00f3rym znajduje si\u0119 Crownstone Sphere.", "title": "USB Crownstone Sphere" - }, - "usb_sphere_config_option": { - "data": { - "usb_sphere": "Crownstone Sphere" - }, - "description": "Wybierz USB w kt\u00f3rym znajduje si\u0119 Crownstone Sphere.", - "title": "USB Crownstone Sphere" } } } diff --git a/homeassistant/components/crownstone/translations/pt-BR.json b/homeassistant/components/crownstone/translations/pt-BR.json index df4e446837e..f68c7a7f483 100644 --- a/homeassistant/components/crownstone/translations/pt-BR.json +++ b/homeassistant/components/crownstone/translations/pt-BR.json @@ -56,13 +56,6 @@ "description": "Selecione a porta serial do dongle USB Crownstone. \n\n Procure um dispositivo com VID 10C4 e PID EA60.", "title": "Configura\u00e7\u00e3o do dongle USB Crownstone" }, - "usb_config_option": { - "data": { - "usb_path": "Caminho do Dispositivo USB" - }, - "description": "Selecione a porta serial do dongle USB Crownstone. \n\n Procure um dispositivo com VID 10C4 e PID EA60.", - "title": "Configura\u00e7\u00e3o do dongle USB Crownstone" - }, "usb_manual_config": { "data": { "usb_manual_path": "Caminho do Dispositivo USB" @@ -70,26 +63,12 @@ "description": "Insira manualmente o caminho de um dongle USB Crownstone.", "title": "Caminho manual do dongle USB Crownstone" }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "Caminho do Dispositivo USB" - }, - "description": "Insira manualmente o caminho de um dongle USB Crownstone.", - "title": "Caminho manual do dongle USB Crownstone" - }, "usb_sphere_config": { "data": { "usb_sphere": "Esfera da Pedra da Coroa" }, "description": "Selecione um Crownstone Sphere onde o USB est\u00e1 localizado.", "title": "Esfera USB Crownstone" - }, - "usb_sphere_config_option": { - "data": { - "usb_sphere": "Esfera de Crownstone" - }, - "description": "Selecione um Crownstone Sphere onde o USB est\u00e1 localizado.", - "title": "Esfera USB Crownstone" } } } diff --git a/homeassistant/components/crownstone/translations/ru.json b/homeassistant/components/crownstone/translations/ru.json index 7dfd88bd63e..d16b16f457e 100644 --- a/homeassistant/components/crownstone/translations/ru.json +++ b/homeassistant/components/crownstone/translations/ru.json @@ -56,13 +56,6 @@ "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 Crownstone. \n\n\u0414\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441 VID 10C4 \u0438 PID EA60.", "title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 Crownstone" }, - "usb_config_option": { - "data": { - "usb_path": "\u041f\u0443\u0442\u044c \u043a USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443" - }, - "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 Crownstone. \n\n\u0414\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441 VID 10C4 \u0438 PID EA60.", - "title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 Crownstone" - }, "usb_manual_config": { "data": { "usb_manual_path": "\u041f\u0443\u0442\u044c \u043a USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443" @@ -70,26 +63,12 @@ "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0443\u0442\u044c \u043a USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 Crownstone.", "title": "\u041f\u0443\u0442\u044c \u043a USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 Crownstone" }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "\u041f\u0443\u0442\u044c \u043a USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443" - }, - "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0443\u0442\u044c \u043a USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 Crownstone.", - "title": "\u041f\u0443\u0442\u044c \u043a USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 Crownstone" - }, "usb_sphere_config": { "data": { "usb_sphere": "Crownstone Sphere" }, "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 Crownstone Sphere, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e.", "title": "Crownstone USB Sphere" - }, - "usb_sphere_config_option": { - "data": { - "usb_sphere": "Crownstone Sphere" - }, - "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 Crownstone Sphere, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e.", - "title": "Crownstone USB Sphere" } } } diff --git a/homeassistant/components/crownstone/translations/tr.json b/homeassistant/components/crownstone/translations/tr.json index 1c97cbdf170..d244ed239a3 100644 --- a/homeassistant/components/crownstone/translations/tr.json +++ b/homeassistant/components/crownstone/translations/tr.json @@ -56,13 +56,6 @@ "description": "Crownstone USB donan\u0131m kilidinin seri ba\u011flant\u0131 noktas\u0131n\u0131 se\u00e7in. \n\n VID 10C4 ve PID EA60'a sahip bir cihaz aray\u0131n.", "title": "Crownstone USB dongle yap\u0131land\u0131rmas\u0131" }, - "usb_config_option": { - "data": { - "usb_path": "USB Cihaz Yolu" - }, - "description": "Crownstone USB donan\u0131m kilidinin seri ba\u011flant\u0131 noktas\u0131n\u0131 se\u00e7in. \n\n VID 10C4 ve PID EA60'a sahip bir cihaz aray\u0131n.", - "title": "Crownstone USB dongle yap\u0131land\u0131rmas\u0131" - }, "usb_manual_config": { "data": { "usb_manual_path": "USB Cihaz Yolu" @@ -70,26 +63,12 @@ "description": "Crownstone USB dongle'\u0131n yolunu manuel olarak girin.", "title": "Crownstone USB dongle manuel yolu" }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "USB Cihaz Yolu" - }, - "description": "Crownstone USB dongle'\u0131n yolunu manuel olarak girin.", - "title": "Crownstone USB dongle manuel yolu" - }, "usb_sphere_config": { "data": { "usb_sphere": "Crownstone Stick" }, "description": "USB'nin bulundu\u011fu bir Crownstone Stick se\u00e7in.", "title": "Crownstone USB Stick" - }, - "usb_sphere_config_option": { - "data": { - "usb_sphere": "Crownstone Stick" - }, - "description": "USB'nin bulundu\u011fu bir Crownstone Stick se\u00e7in.", - "title": "Crownstone USB Stick" } } } diff --git a/homeassistant/components/crownstone/translations/zh-Hant.json b/homeassistant/components/crownstone/translations/zh-Hant.json index 2c362ba0bcb..32ef596aba3 100644 --- a/homeassistant/components/crownstone/translations/zh-Hant.json +++ b/homeassistant/components/crownstone/translations/zh-Hant.json @@ -56,13 +56,6 @@ "description": "\u9078\u64c7 Crownstone USB \u88dd\u7f6e\u5e8f\u5217\u57e0\u3002\n\n\u8acb\u641c\u5c0b VID 10C4 \u53ca PID EA60 \u88dd\u7f6e\u3002", "title": "Crownstone USB \u88dd\u7f6e\u8a2d\u5b9a" }, - "usb_config_option": { - "data": { - "usb_path": "USB \u88dd\u7f6e\u8def\u5f91" - }, - "description": "\u9078\u64c7 Crownstone USB \u88dd\u7f6e\u5e8f\u5217\u57e0\u3002\n\n\u8acb\u641c\u5c0b VID 10C4 \u53ca PID EA60 \u88dd\u7f6e\u3002", - "title": "Crownstone USB \u88dd\u7f6e\u8a2d\u5b9a" - }, "usb_manual_config": { "data": { "usb_manual_path": "USB \u88dd\u7f6e\u8def\u5f91" @@ -70,26 +63,12 @@ "description": "\u624b\u52d5\u8f38\u5165 Crownstone USB \u88dd\u7f6e\u8def\u5f91\u3002", "title": "Crownstone USB \u88dd\u7f6e\u624b\u52d5\u8def\u5f91" }, - "usb_manual_config_option": { - "data": { - "usb_manual_path": "USB \u88dd\u7f6e\u8def\u5f91" - }, - "description": "\u624b\u52d5\u8f38\u5165 Crownstone USB \u88dd\u7f6e\u8def\u5f91\u3002", - "title": "Crownstone USB \u88dd\u7f6e\u624b\u52d5\u8def\u5f91" - }, "usb_sphere_config": { "data": { "usb_sphere": "Crownstone Sphere" }, "description": "\u9078\u64c7 Crownstone Sphere \u6240\u5728 USB \u8def\u5f91\u3002", "title": "Crownstone USB Sphere" - }, - "usb_sphere_config_option": { - "data": { - "usb_sphere": "Crownstone Sphere" - }, - "description": "\u9078\u64c7 Crownstone Sphere \u6240\u5728 USB \u8def\u5f91\u3002", - "title": "Crownstone USB Sphere" } } } diff --git a/homeassistant/components/deconz/translations/he.json b/homeassistant/components/deconz/translations/he.json index 3e2b350a0d9..97274180aef 100644 --- a/homeassistant/components/deconz/translations/he.json +++ b/homeassistant/components/deconz/translations/he.json @@ -12,7 +12,7 @@ "flow_title": "{host}", "step": { "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\"", + "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. \u05d9\u05e9 \u05dc\u05e2\u05d1\u05d5\u05e8 \u05d0\u05dc \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea deCONZ > \u05e9\u05e2\u05e8 > \u05de\u05ea\u05e7\u05d3\u05dd\n 2. \u05dc\u05d7\u05d9\u05e6\u05d4 \u05e2\u05dc \u05db\u05e4\u05ea\u05d5\u05e8 \"\u05d0\u05d9\u05de\u05d5\u05ea \u05d9\u05d9\u05e9\u05d5\u05dd\"", "title": "\u05e7\u05e9\u05e8 \u05e2\u05dd deCONZ" }, "manual_input": { diff --git a/homeassistant/components/deconz/translations/hu.json b/homeassistant/components/deconz/translations/hu.json index 4ffc1662ecb..47bb343247c 100644 --- a/homeassistant/components/deconz/translations/hu.json +++ b/homeassistant/components/deconz/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "A bridge m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "no_bridges": "Nem tal\u00e1lhat\u00f3 deCONZ \u00e1tj\u00e1r\u00f3", "no_hardware_available": "Nincs deCONZ-hoz csatlakoztatott r\u00e1di\u00f3hardver", "not_deconz_bridge": "Nem egy deCONZ \u00e1tj\u00e1r\u00f3", diff --git a/homeassistant/components/deluge/translations/bg.json b/homeassistant/components/deluge/translations/bg.json new file mode 100644 index 00000000000..2a0cd494422 --- /dev/null +++ b/homeassistant/components/deluge/translations/bg.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "\u0423\u0441\u043b\u0443\u0433\u0430\u0442\u0430 \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0430" + }, + "error": { + "cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435", + "invalid_auth": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0432\u0430\u043d\u0435" + }, + "step": { + "user": { + "data": { + "host": "\u0425\u043e\u0441\u0442", + "password": "\u041f\u0430\u0440\u043e\u043b\u0430", + "port": "\u041f\u043e\u0440\u0442", + "username": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e \u0438\u043c\u0435" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/deluge/translations/ca.json b/homeassistant/components/deluge/translations/ca.json new file mode 100644 index 00000000000..df0a2a31ee4 --- /dev/null +++ b/homeassistant/components/deluge/translations/ca.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "already_configured": "El servei ja est\u00e0 configurat" + }, + "error": { + "cannot_connect": "Ha fallat la connexi\u00f3", + "invalid_auth": "Autenticaci\u00f3 inv\u00e0lida" + }, + "step": { + "user": { + "data": { + "host": "Amfitri\u00f3", + "password": "Contrasenya", + "port": "Port", + "username": "Nom d'usuari", + "web_port": "Port web (per al servei de visita)" + }, + "description": "Per poder utilitzar aquesta integraci\u00f3, has d'activar l'opci\u00f3 seg\u00fcent a la configuraci\u00f3 de Deluge: Daemon > Permet controls remots" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/deluge/translations/cs.json b/homeassistant/components/deluge/translations/cs.json new file mode 100644 index 00000000000..2845835ef00 --- /dev/null +++ b/homeassistant/components/deluge/translations/cs.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "Slu\u017eba je ji\u017e nastavena" + }, + "error": { + "cannot_connect": "Nepoda\u0159ilo se p\u0159ipojit", + "invalid_auth": "Neplatn\u00e9 ov\u011b\u0159en\u00ed" + }, + "step": { + "user": { + "data": { + "host": "Hostitel", + "password": "Heslo", + "port": "Port", + "username": "U\u017eivatelsk\u00e9 jm\u00e9no" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/deluge/translations/de.json b/homeassistant/components/deluge/translations/de.json new file mode 100644 index 00000000000..9e8d559a523 --- /dev/null +++ b/homeassistant/components/deluge/translations/de.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "already_configured": "Der Dienst ist bereits konfiguriert" + }, + "error": { + "cannot_connect": "Verbindung fehlgeschlagen", + "invalid_auth": "Ung\u00fcltige Authentifizierung" + }, + "step": { + "user": { + "data": { + "host": "Host", + "password": "Passwort", + "port": "Port", + "username": "Benutzername", + "web_port": "Webport (f\u00fcr Besuchsdienste)" + }, + "description": "Um diese Integration nutzen zu k\u00f6nnen, musst du die folgende Option in den Deluge-Einstellungen aktivieren: Daemon > Fernsteuerungen zulassen" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/deluge/translations/el.json b/homeassistant/components/deluge/translations/el.json new file mode 100644 index 00000000000..48645a7378a --- /dev/null +++ b/homeassistant/components/deluge/translations/el.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "already_configured": "\u0397 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af" + }, + "error": { + "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", + "invalid_auth": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2" + }, + "step": { + "user": { + "data": { + "host": "\u039a\u03b5\u03bd\u03c4\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae\u03c2", + "password": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", + "port": "\u0398\u03cd\u03c1\u03b1", + "username": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7", + "web_port": "\u0398\u03cd\u03c1\u03b1 \u0399\u03c3\u03c4\u03bf\u03cd (\u03b3\u03b9\u03b1 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03b5\u03c0\u03af\u03c3\u03ba\u03b5\u03c8\u03b7\u03c2)" + }, + "description": "\u0393\u03b9\u03b1 \u03bd\u03b1 \u03bc\u03c0\u03bf\u03c1\u03ad\u03c3\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03ae\u03bd \u03c4\u03b7\u03bd \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7, \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b1\u03ba\u03cc\u03bb\u03bf\u03c5\u03b8\u03b7 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03c3\u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03ba\u03b1\u03c4\u03b1\u03ba\u03bb\u03c5\u03c3\u03bc\u03bf\u03cd: Daemon > \u039d\u03b1 \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9 \u03bf \u03b1\u03c0\u03bf\u03bc\u03b1\u03ba\u03c1\u03c5\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/deluge/translations/en.json b/homeassistant/components/deluge/translations/en.json index a3a2f539126..3f4e4b0b445 100644 --- a/homeassistant/components/deluge/translations/en.json +++ b/homeassistant/components/deluge/translations/en.json @@ -1,23 +1,23 @@ { "config": { - "step": { - "user": { - "description": "To be able to use this integration, you have to enable the following option in deluge settings: Daemon > Allow remote controls", - "data": { - "host": "Host", - "username": "Username", - "password": "Password", - "port": "Port", - "web_port": "Web port (for visiting service)" - } - } + "abort": { + "already_configured": "Service is already configured" }, "error": { "cannot_connect": "Failed to connect", "invalid_auth": "Invalid authentication" }, - "abort": { - "already_configured": "Service is already configured" + "step": { + "user": { + "data": { + "host": "Host", + "password": "Password", + "port": "Port", + "username": "Username", + "web_port": "Web port (for visiting service)" + }, + "description": "To be able to use this integration, you have to enable the following option in deluge settings: Daemon > Allow remote controls" + } } } } \ No newline at end of file diff --git a/homeassistant/components/deluge/translations/et.json b/homeassistant/components/deluge/translations/et.json new file mode 100644 index 00000000000..26d8d23438d --- /dev/null +++ b/homeassistant/components/deluge/translations/et.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "already_configured": "Teenus on juba seadistatud" + }, + "error": { + "cannot_connect": "\u00dchendamine nurjus", + "invalid_auth": "Tuvastamine nurjus" + }, + "step": { + "user": { + "data": { + "host": "Host", + "password": "Salas\u00f5na", + "port": "Port", + "username": "Kasutajanimi", + "web_port": "Veebiport (teenuse k\u00fclastamiseks)" + }, + "description": "Selle sidumise kasutamiseks deluge s\u00e4tetes lubama j\u00e4rgmise suvandi: Daemon > Luba kaugjuhtimispuldid" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/deluge/translations/fr.json b/homeassistant/components/deluge/translations/fr.json new file mode 100644 index 00000000000..4607d78f78c --- /dev/null +++ b/homeassistant/components/deluge/translations/fr.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "already_configured": "Le service est d\u00e9j\u00e0 configur\u00e9" + }, + "error": { + "cannot_connect": "\u00c9chec de connexion", + "invalid_auth": "Authentification non valide" + }, + "step": { + "user": { + "data": { + "host": "H\u00f4te", + "password": "Mot de passe", + "port": "Port", + "username": "Nom d'utilisateur", + "web_port": "Port web (pour consulter le service)" + }, + "description": "Afin de pouvoir utiliser cette int\u00e9gration, vous devez activer l'option suivante dans les param\u00e8tres de Deluge\u00a0: D\u00e9mon > Autoriser les connexion \u00e0 distance" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/deluge/translations/he.json b/homeassistant/components/deluge/translations/he.json new file mode 100644 index 00000000000..80971c19dfc --- /dev/null +++ b/homeassistant/components/deluge/translations/he.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "\u05e9\u05d9\u05e8\u05d5\u05ea \u05d6\u05d4 \u05db\u05d1\u05e8 \u05de\u05d5\u05d2\u05d3\u05e8" + }, + "error": { + "cannot_connect": "\u05d4\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05e0\u05db\u05e9\u05dc\u05d4", + "invalid_auth": "\u05d0\u05d9\u05de\u05d5\u05ea \u05dc\u05d0 \u05d7\u05d5\u05e7\u05d9" + }, + "step": { + "user": { + "data": { + "host": "\u05de\u05d0\u05e8\u05d7", + "password": "\u05e1\u05d9\u05e1\u05de\u05d4", + "port": "\u05e4\u05ea\u05d7\u05d4", + "username": "\u05e9\u05dd \u05de\u05e9\u05ea\u05de\u05e9" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/deluge/translations/hu.json b/homeassistant/components/deluge/translations/hu.json new file mode 100644 index 00000000000..6058a985c55 --- /dev/null +++ b/homeassistant/components/deluge/translations/hu.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "already_configured": "A szolg\u00e1ltat\u00e1s m\u00e1r konfigur\u00e1lva van" + }, + "error": { + "cannot_connect": "Sikertelen csatlakoz\u00e1s", + "invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s" + }, + "step": { + "user": { + "data": { + "host": "C\u00edm", + "password": "Jelsz\u00f3", + "port": "Port", + "username": "Felhaszn\u00e1l\u00f3n\u00e9v", + "web_port": "Web port (a szolg\u00e1ltat\u00e1s l\u00e1togat\u00e1s\u00e1hoz)" + }, + "description": "Ahhoz, hogy ezt az integr\u00e1ci\u00f3t haszn\u00e1lni tudja, enged\u00e9lyeznie kell a k\u00f6vetkez\u0151 opci\u00f3t a be\u00e1ll\u00edt\u00e1sokban: Daemon > Allow remote controls" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/deluge/translations/id.json b/homeassistant/components/deluge/translations/id.json new file mode 100644 index 00000000000..8a2fce22fd5 --- /dev/null +++ b/homeassistant/components/deluge/translations/id.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "already_configured": "Layanan sudah dikonfigurasi" + }, + "error": { + "cannot_connect": "Gagal terhubung", + "invalid_auth": "Autentikasi tidak valid" + }, + "step": { + "user": { + "data": { + "host": "Host", + "password": "Kata Sandi", + "port": "Port", + "username": "Nama Pengguna", + "web_port": "Port web (untuk mengunjungi layanan)" + }, + "description": "Untuk dapat menggunakan integrasi ini, Anda harus mengaktifkan opsi berikut dalam pengaturan deluge: Daemon > Izinkan kendali jarak jauh" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/deluge/translations/it.json b/homeassistant/components/deluge/translations/it.json new file mode 100644 index 00000000000..d9407f0c29f --- /dev/null +++ b/homeassistant/components/deluge/translations/it.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "already_configured": "Il servizio \u00e8 gi\u00e0 configurato" + }, + "error": { + "cannot_connect": "Impossibile connettersi", + "invalid_auth": "Autenticazione non valida" + }, + "step": { + "user": { + "data": { + "host": "Host", + "password": "Password", + "port": "Porta", + "username": "Nome utente", + "web_port": "Porta web (per il servizio di visita)" + }, + "description": "Per poter utilizzare questa integrazione, devi abilitare la seguente opzione nelle impostazioni di diluvio: Demone > Consenti controlli " + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/deluge/translations/ja.json b/homeassistant/components/deluge/translations/ja.json new file mode 100644 index 00000000000..ab796327717 --- /dev/null +++ b/homeassistant/components/deluge/translations/ja.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "already_configured": "\u30b5\u30fc\u30d3\u30b9\u306f\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059" + }, + "error": { + "cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f", + "invalid_auth": "\u7121\u52b9\u306a\u8a8d\u8a3c" + }, + "step": { + "user": { + "data": { + "host": "\u30db\u30b9\u30c8", + "password": "\u30d1\u30b9\u30ef\u30fc\u30c9", + "port": "\u30dd\u30fc\u30c8", + "username": "\u30e6\u30fc\u30b6\u30fc\u540d", + "web_port": "Web\u30dd\u30fc\u30c8\uff08\u8a2a\u554f\u30b5\u30fc\u30d3\u30b9\u7528\uff09" + }, + "description": "\u3053\u306e\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u5229\u7528\u3059\u308b\u305f\u3081\u306b\u306f\u3001deluge\u306e\u8a2d\u5b9a\u3067\u4ee5\u4e0b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u6709\u52b9\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30c7\u30fc\u30e2\u30f3 -> \u30ea\u30e2\u30fc\u30c8\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u306e\u8a31\u53ef" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/deluge/translations/nl.json b/homeassistant/components/deluge/translations/nl.json new file mode 100644 index 00000000000..6c824130708 --- /dev/null +++ b/homeassistant/components/deluge/translations/nl.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "already_configured": "Service is al geconfigureerd" + }, + "error": { + "cannot_connect": "Kan geen verbinding maken", + "invalid_auth": "Ongeldige authenticatie" + }, + "step": { + "user": { + "data": { + "host": "Host", + "password": "Wachtwoord", + "port": "Poort", + "username": "Gebruikersnaam", + "web_port": "Webpoort (voor bezoekdienst)" + }, + "description": "Om deze integratie te kunnen gebruiken, moet u de volgende optie inschakelen in de deluge instellingen: Daemon > Afstandsbediening toestaan" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/deluge/translations/no.json b/homeassistant/components/deluge/translations/no.json new file mode 100644 index 00000000000..02d22dfb1a5 --- /dev/null +++ b/homeassistant/components/deluge/translations/no.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "already_configured": "Tjenesten er allerede konfigurert" + }, + "error": { + "cannot_connect": "Tilkobling mislyktes", + "invalid_auth": "Ugyldig godkjenning" + }, + "step": { + "user": { + "data": { + "host": "Vert", + "password": "Passord", + "port": "Port", + "username": "Brukernavn", + "web_port": "Webport (for bes\u00f8kstjeneste)" + }, + "description": "For \u00e5 kunne bruke denne integrasjonen, m\u00e5 du aktivere f\u00f8lgende alternativ i deluge-innstillingene: Daemon > Tillat fjernkontroller" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/deluge/translations/pl.json b/homeassistant/components/deluge/translations/pl.json new file mode 100644 index 00000000000..64269b9ab36 --- /dev/null +++ b/homeassistant/components/deluge/translations/pl.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "already_configured": "Us\u0142uga jest ju\u017c skonfigurowana" + }, + "error": { + "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", + "invalid_auth": "Niepoprawne uwierzytelnienie" + }, + "step": { + "user": { + "data": { + "host": "Nazwa hosta lub adres IP", + "password": "Has\u0142o", + "port": "Port", + "username": "Nazwa u\u017cytkownika", + "web_port": "Port WWW (do odwiedzania us\u0142ugi)" + }, + "description": "Aby m\u00f3c korzysta\u0107 z tej integracji, musisz w\u0142\u0105czy\u0107 nast\u0119puj\u0105c\u0105 opcj\u0119 w ustawieniach Deluge: Daemon > Zezw\u00f3l na zdalne sterowanie" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/deluge/translations/pt-BR.json b/homeassistant/components/deluge/translations/pt-BR.json new file mode 100644 index 00000000000..ba45a44117b --- /dev/null +++ b/homeassistant/components/deluge/translations/pt-BR.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "already_configured": "O servi\u00e7o j\u00e1 est\u00e1 configurado" + }, + "error": { + "cannot_connect": "Falha ao conectar", + "invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida" + }, + "step": { + "user": { + "data": { + "host": "Nome do host", + "password": "Senha", + "port": "Porta", + "username": "Usu\u00e1rio", + "web_port": "Porta Web (para servi\u00e7o de visita)" + }, + "description": "Para poder usar essa integra\u00e7\u00e3o, voc\u00ea deve habilitar a seguinte op\u00e7\u00e3o nas configura\u00e7\u00f5es de Deluge: Daemon > Permitir controles remotos" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/deluge/translations/ru.json b/homeassistant/components/deluge/translations/ru.json new file mode 100644 index 00000000000..04ab9df50e5 --- /dev/null +++ b/homeassistant/components/deluge/translations/ru.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "already_configured": "\u042d\u0442\u0430 \u0441\u043b\u0443\u0436\u0431\u0430 \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 Home Assistant." + }, + "error": { + "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", + "invalid_auth": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438." + }, + "step": { + "user": { + "data": { + "host": "\u0425\u043e\u0441\u0442", + "password": "\u041f\u0430\u0440\u043e\u043b\u044c", + "port": "\u041f\u043e\u0440\u0442", + "username": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", + "web_port": "\u0412\u0435\u0431-\u043f\u043e\u0440\u0442 (\u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u043b\u0443\u0436\u0431\u044b)" + }, + "description": "\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u044d\u0442\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0435\u0439, \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0439\u0442\u0435 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 Deluge \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435: Daemon > Allow remote controls." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/deluge/translations/tr.json b/homeassistant/components/deluge/translations/tr.json new file mode 100644 index 00000000000..0cf6d9ffe35 --- /dev/null +++ b/homeassistant/components/deluge/translations/tr.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "already_configured": "Hizmet zaten yap\u0131land\u0131r\u0131lm\u0131\u015f" + }, + "error": { + "cannot_connect": "Ba\u011flanma hatas\u0131", + "invalid_auth": "Ge\u00e7ersiz kimlik do\u011frulama" + }, + "step": { + "user": { + "data": { + "host": "Sunucu", + "password": "Parola", + "port": "Port", + "username": "Kullan\u0131c\u0131 Ad\u0131", + "web_port": "Web ba\u011flant\u0131 noktas\u0131 (ziyaret hizmeti i\u00e7in)" + }, + "description": "Bu entegrasyonu kullanabilmek i\u00e7in, deluge ayarlar\u0131nda a\u015fa\u011f\u0131daki se\u00e7ene\u011fi etkinle\u015ftirmeniz gerekir: Daemon > Uzaktan kontrollere izin ver" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/deluge/translations/zh-Hant.json b/homeassistant/components/deluge/translations/zh-Hant.json new file mode 100644 index 00000000000..c9ad139b2dc --- /dev/null +++ b/homeassistant/components/deluge/translations/zh-Hant.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "already_configured": "\u670d\u52d9\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210" + }, + "error": { + "cannot_connect": "\u9023\u7dda\u5931\u6557", + "invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548" + }, + "step": { + "user": { + "data": { + "host": "\u4e3b\u6a5f\u7aef", + "password": "\u5bc6\u78bc", + "port": "\u901a\u8a0a\u57e0", + "username": "\u4f7f\u7528\u8005\u540d\u7a31", + "web_port": "Web \u901a\u8a0a\u57e0\uff08\u8a2a\u554f\u670d\u52d9\uff09" + }, + "description": "\u6b32\u4f7f\u7528\u6b64\u6574\u5408\uff0c\u5fc5\u9808\u5148\u5728 deluge \u8a2d\u5b9a\u4e2d\u958b\u555f\u4ee5\u4e0b\u9078\u9805\uff1aDaemon > \u5141\u8a31\u9060\u7aef\u5b58\u53d6" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/demo/translations/it.json b/homeassistant/components/demo/translations/it.json index 0fb3f52b916..1c94dea053f 100644 --- a/homeassistant/components/demo/translations/it.json +++ b/homeassistant/components/demo/translations/it.json @@ -3,8 +3,8 @@ "step": { "init": { "data": { - "one": "Pi\u00f9", - "other": "Altri" + "one": "Vuoto", + "other": "Vuoti" } }, "options_1": { diff --git a/homeassistant/components/denonavr/translations/bg.json b/homeassistant/components/denonavr/translations/bg.json index 6ec6215c6e1..4b4384d0bc9 100644 --- a/homeassistant/components/denonavr/translations/bg.json +++ b/homeassistant/components/denonavr/translations/bg.json @@ -8,6 +8,9 @@ "user": { "data": { "host": "IP \u0430\u0434\u0440\u0435\u0441" + }, + "data_description": { + "host": "\u041e\u0441\u0442\u0430\u0432\u0435\u0442\u0435 \u043f\u0440\u0430\u0437\u043d\u043e, \u0437\u0430 \u0434\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u043e\u0442\u043a\u0440\u0438\u0432\u0430\u043d\u0435" } } } diff --git a/homeassistant/components/denonavr/translations/ca.json b/homeassistant/components/denonavr/translations/ca.json index f499c6a0a17..11065514ce4 100644 --- a/homeassistant/components/denonavr/translations/ca.json +++ b/homeassistant/components/denonavr/translations/ca.json @@ -27,6 +27,9 @@ "data": { "host": "Adre\u00e7a IP" }, + "data_description": { + "host": "Deixeu-ho en blanc per utilitzar descobriment autom\u00e0tic" + }, "description": "Connecta el teu receptor, si no es configura l'adre\u00e7a IP, s'utilitza el descobriment autom\u00e0tic", "title": "Receptors de xarxa AVR de Denon" } diff --git a/homeassistant/components/denonavr/translations/de.json b/homeassistant/components/denonavr/translations/de.json index 414bd798f62..1c9a1a8ec95 100644 --- a/homeassistant/components/denonavr/translations/de.json +++ b/homeassistant/components/denonavr/translations/de.json @@ -27,6 +27,9 @@ "data": { "host": "IP-Adresse" }, + "data_description": { + "host": "Leer lassen, um automatische Erkennung zu verwenden" + }, "description": "Verbinde dich mit deinem Receiver, wenn die IP-Adresse nicht eingestellt ist, wird die automatische Erkennung verwendet", "title": "Denon AVR-Netzwerk-Receiver" } diff --git a/homeassistant/components/denonavr/translations/el.json b/homeassistant/components/denonavr/translations/el.json index 180cacc2459..d176fd944d6 100644 --- a/homeassistant/components/denonavr/translations/el.json +++ b/homeassistant/components/denonavr/translations/el.json @@ -27,6 +27,9 @@ "data": { "host": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 IP" }, + "data_description": { + "host": "\u0391\u03c6\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf \u03ba\u03b5\u03bd\u03cc \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03b1\u03bd\u03b1\u03ba\u03ac\u03bb\u03c5\u03c8\u03b7" + }, "description": "\u03a3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03bf \u03b4\u03ad\u03ba\u03c4\u03b7 \u03c3\u03b1\u03c2, \u03b5\u03ac\u03bd \u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 IP \u03b4\u03b5\u03bd \u03ad\u03c7\u03b5\u03b9 \u03bf\u03c1\u03b9\u03c3\u03c4\u03b5\u03af, \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03b1\u03bd\u03b1\u03ba\u03ac\u03bb\u03c5\u03c8\u03b7.", "title": "\u0394\u03ad\u03ba\u03c4\u03b5\u03c2 \u03b4\u03b9\u03ba\u03c4\u03cd\u03bf\u03c5 Denon AVR" } diff --git a/homeassistant/components/denonavr/translations/en.json b/homeassistant/components/denonavr/translations/en.json index 383ae5a502c..2d937856b1c 100644 --- a/homeassistant/components/denonavr/translations/en.json +++ b/homeassistant/components/denonavr/translations/en.json @@ -27,6 +27,9 @@ "data": { "host": "IP Address" }, + "data_description": { + "host": "Leave blank to use auto-discovery" + }, "description": "Connect to your receiver, if the IP address is not set, auto-discovery is used", "title": "Denon AVR Network Receivers" } diff --git a/homeassistant/components/denonavr/translations/et.json b/homeassistant/components/denonavr/translations/et.json index 5dc9f3cc771..f133aaf9dd7 100644 --- a/homeassistant/components/denonavr/translations/et.json +++ b/homeassistant/components/denonavr/translations/et.json @@ -27,6 +27,9 @@ "data": { "host": "IP aadress" }, + "data_description": { + "host": "Automaatse avastamise kasutamiseks j\u00e4ta v\u00e4li t\u00fchjaks." + }, "description": "Kui IP-aadressi pole m\u00e4\u00e4ratud, kasutatakse automaatset avastamist", "title": "" } diff --git a/homeassistant/components/denonavr/translations/fr.json b/homeassistant/components/denonavr/translations/fr.json index 474f02f5e21..27a72477164 100644 --- a/homeassistant/components/denonavr/translations/fr.json +++ b/homeassistant/components/denonavr/translations/fr.json @@ -27,6 +27,9 @@ "data": { "host": "Adresse IP" }, + "data_description": { + "host": "Laissez le champ vide pour utiliser la d\u00e9couverte automatique" + }, "description": "Connectez-vous \u00e0 votre r\u00e9cepteur, si l'adresse IP n'est pas d\u00e9finie, la d\u00e9tection automatique est utilis\u00e9e", "title": "R\u00e9cepteurs r\u00e9seaux Denon AVR" } diff --git a/homeassistant/components/denonavr/translations/hu.json b/homeassistant/components/denonavr/translations/hu.json index 874f190ff01..6891d18a9c4 100644 --- a/homeassistant/components/denonavr/translations/hu.json +++ b/homeassistant/components/denonavr/translations/hu.json @@ -2,9 +2,9 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "cannot_connect": "Nem siker\u00fclt csatlakozni, k\u00e9rj\u00fck, pr\u00f3b\u00e1lja \u00fajra. A h\u00e1l\u00f3zati \u00e9s Ethernet k\u00e1belek kih\u00faz\u00e1sa \u00e9s \u00fajracsatlakoztat\u00e1sa seg\u00edthet", - "not_denonavr_manufacturer": "Nem egy Denon AVR h\u00e1l\u00f3zati vev\u0151, felfedezett gy\u00e1rt\u00f3 nem egyezik", + "not_denonavr_manufacturer": "Nem egy Denon AVR h\u00e1l\u00f3zati vev\u0151, a felfedezett gy\u00e1rt\u00f3n\u00e9v nem megfelel\u0151", "not_denonavr_missing": "Nem Denon AVR h\u00e1l\u00f3zati vev\u0151, a felfedez\u00e9si inform\u00e1ci\u00f3k nem teljesek" }, "error": { @@ -27,6 +27,9 @@ "data": { "host": "IP c\u00edm" }, + "data_description": { + "host": "Az automatikus felder\u00edt\u00e9s haszn\u00e1lat\u00e1hoz hagyja \u00fcresen" + }, "description": "Csatlakozzon a vev\u0151h\u00f6z, ha az IP-c\u00edm nincs be\u00e1ll\u00edtva, az automatikus felder\u00edt\u00e9st haszn\u00e1lja", "title": "Denon AVR h\u00e1l\u00f3zati vev\u0151k\u00e9sz\u00fcl\u00e9kek" } diff --git a/homeassistant/components/denonavr/translations/id.json b/homeassistant/components/denonavr/translations/id.json index b2543d1d877..50a28ef5447 100644 --- a/homeassistant/components/denonavr/translations/id.json +++ b/homeassistant/components/denonavr/translations/id.json @@ -27,6 +27,9 @@ "data": { "host": "Alamat IP" }, + "data_description": { + "host": "Kosongkan untuk menggunakan penemuan otomatis" + }, "description": "Hubungkan ke Receiver Anda. Jika alamat IP tidak ditentukan, penemuan otomatis akan digunakan", "title": "Network Receiver Denon AVR" } diff --git a/homeassistant/components/denonavr/translations/it.json b/homeassistant/components/denonavr/translations/it.json index 76d0d627ca3..23fffd3ab44 100644 --- a/homeassistant/components/denonavr/translations/it.json +++ b/homeassistant/components/denonavr/translations/it.json @@ -27,6 +27,9 @@ "data": { "host": "Indirizzo IP" }, + "data_description": { + "host": "Lascia vuoto per usare il rilevamento automatico" + }, "description": "Collega il ricevitore, se l'indirizzo IP non \u00e8 impostato, sar\u00e0 utilizzato il rilevamento automatico", "title": "Ricevitori di rete Denon AVR" } diff --git a/homeassistant/components/denonavr/translations/ja.json b/homeassistant/components/denonavr/translations/ja.json index 1a5b41a3368..cd3198b7e10 100644 --- a/homeassistant/components/denonavr/translations/ja.json +++ b/homeassistant/components/denonavr/translations/ja.json @@ -27,6 +27,9 @@ "data": { "host": "IP\u30a2\u30c9\u30ec\u30b9" }, + "data_description": { + "host": "\u81ea\u52d5\u691c\u51fa\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u7a7a\u767d\u306e\u307e\u307e\u306b\u3057\u307e\u3059" + }, "description": "\u53d7\u4fe1\u6a5f\u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002IP\u30a2\u30c9\u30ec\u30b9\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001\u81ea\u52d5\u691c\u51fa\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059", "title": "\u30c7\u30ce\u30f3(Denon)AVR\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30ec\u30b7\u30fc\u30d0\u30fc" } diff --git a/homeassistant/components/denonavr/translations/nl.json b/homeassistant/components/denonavr/translations/nl.json index 47da10106f3..f03895452df 100644 --- a/homeassistant/components/denonavr/translations/nl.json +++ b/homeassistant/components/denonavr/translations/nl.json @@ -27,6 +27,9 @@ "data": { "host": "IP-adres" }, + "data_description": { + "host": "Leeg laten om auto-discovery te gebruiken" + }, "description": "Maak verbinding met uw ontvanger. Als het IP-adres niet is ingesteld, wordt automatische detectie gebruikt", "title": "Denon AVR Netwerk Ontvangers" } diff --git a/homeassistant/components/denonavr/translations/no.json b/homeassistant/components/denonavr/translations/no.json index 892cf8d5767..333c55a44f7 100644 --- a/homeassistant/components/denonavr/translations/no.json +++ b/homeassistant/components/denonavr/translations/no.json @@ -27,6 +27,9 @@ "data": { "host": "IP adresse" }, + "data_description": { + "host": "La feltet st\u00e5 tomt hvis du vil bruke automatisk s\u00f8k" + }, "description": "Koble til mottakeren, hvis IP-adressen ikke er angitt, brukes automatisk oppdagelse", "title": "Denon AVR Network Receivers" } diff --git a/homeassistant/components/denonavr/translations/pl.json b/homeassistant/components/denonavr/translations/pl.json index 6b09baf7d4c..054371c6ba1 100644 --- a/homeassistant/components/denonavr/translations/pl.json +++ b/homeassistant/components/denonavr/translations/pl.json @@ -27,6 +27,9 @@ "data": { "host": "Adres IP" }, + "data_description": { + "host": "Pozostaw puste, aby u\u017cy\u0107 automatycznego wykrywania" + }, "description": "\u0141\u0105czenie z urz\u0105dzeniem, je\u015bli adres IP nie jest zdefiniowany, u\u017cywane jest automatyczne wykrywanie.", "title": "Denon AVR" } diff --git a/homeassistant/components/denonavr/translations/pt-BR.json b/homeassistant/components/denonavr/translations/pt-BR.json index 084c7dd3c18..2a716dacdca 100644 --- a/homeassistant/components/denonavr/translations/pt-BR.json +++ b/homeassistant/components/denonavr/translations/pt-BR.json @@ -27,6 +27,9 @@ "data": { "host": "Endere\u00e7o IP" }, + "data_description": { + "host": "Deixe em branco para usar a descoberta autom\u00e1tica" + }, "description": "Conecte-se ao seu receptor, se o endere\u00e7o IP n\u00e3o estiver definido, a descoberta autom\u00e1tica ser\u00e1 usada", "title": "Receptores de rede Denon AVR" } diff --git a/homeassistant/components/denonavr/translations/ru.json b/homeassistant/components/denonavr/translations/ru.json index c1fb25a9889..1db49decaad 100644 --- a/homeassistant/components/denonavr/translations/ru.json +++ b/homeassistant/components/denonavr/translations/ru.json @@ -27,6 +27,9 @@ "data": { "host": "IP-\u0430\u0434\u0440\u0435\u0441" }, + "data_description": { + "host": "\u041e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0443\u0441\u0442\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435" + }, "description": "\u0415\u0441\u043b\u0438 IP-\u0430\u0434\u0440\u0435\u0441 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d, \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435", "title": "\u0420\u0435\u0441\u0438\u0432\u0435\u0440 Denon" } diff --git a/homeassistant/components/denonavr/translations/tr.json b/homeassistant/components/denonavr/translations/tr.json index 2c32de293b8..046e535c621 100644 --- a/homeassistant/components/denonavr/translations/tr.json +++ b/homeassistant/components/denonavr/translations/tr.json @@ -27,6 +27,9 @@ "data": { "host": "IP Adresi" }, + "data_description": { + "host": "Otomatik bulmay\u0131 kullanmak i\u00e7in bo\u015f b\u0131rak\u0131n" + }, "description": "Al\u0131c\u0131n\u0131za ba\u011flan\u0131n, IP adresi ayarlanmazsa otomatik bulma kullan\u0131l\u0131r", "title": "Denon AVR A\u011f Al\u0131c\u0131lar\u0131" } diff --git a/homeassistant/components/denonavr/translations/zh-Hant.json b/homeassistant/components/denonavr/translations/zh-Hant.json index 073de46866d..1217a6d7b87 100644 --- a/homeassistant/components/denonavr/translations/zh-Hant.json +++ b/homeassistant/components/denonavr/translations/zh-Hant.json @@ -27,6 +27,9 @@ "data": { "host": "IP \u4f4d\u5740" }, + "data_description": { + "host": "\u4fdd\u6301\u7a7a\u767d\u4ee5\u4f7f\u7528\u81ea\u52d5\u641c\u7d22" + }, "description": "\u9023\u7dda\u81f3\u63a5\u6536\u5668\u3002\u5047\u5982\u672a\u8a2d\u5b9a IP \u4f4d\u5740\uff0c\u5c07\u4f7f\u7528\u81ea\u52d5\u63a2\u7d22\u3002", "title": "Denon AVR \u7db2\u8def\u63a5\u6536\u5668" } diff --git a/homeassistant/components/derivative/translations/bg.json b/homeassistant/components/derivative/translations/bg.json new file mode 100644 index 00000000000..14946d95fe0 --- /dev/null +++ b/homeassistant/components/derivative/translations/bg.json @@ -0,0 +1,25 @@ +{ + "config": { + "step": { + "user": { + "data": { + "name": "\u0418\u043c\u0435" + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "name": "\u0418\u043c\u0435" + } + }, + "options": { + "data": { + "name": "\u0418\u043c\u0435" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/derivative/translations/ca.json b/homeassistant/components/derivative/translations/ca.json new file mode 100644 index 00000000000..3003b9349fd --- /dev/null +++ b/homeassistant/components/derivative/translations/ca.json @@ -0,0 +1,59 @@ +{ + "config": { + "step": { + "user": { + "data": { + "name": "Nom", + "round": "Precisi\u00f3", + "source": "Sensor d'entrada", + "time_window": "Finestra de temps", + "unit_prefix": "Prefix m\u00e8tric", + "unit_time": "Unitat de temps" + }, + "data_description": { + "round": "Controla el nombre de d\u00edgits decimals a la sortida.", + "time_window": "Si s'estableix, el valor del sensor \u00e9s una mitjana m\u00f2bil ponderada en el temps de les derivades dins d'aquesta finestra.", + "unit_prefix": "La sortida s'escalar\u00e0 segons el prefix m\u00e8tric i la unitat de temps de la derivada seleccionats." + }, + "description": "Crea un sensor que estima la derivada d'un altre sensor.", + "title": "Afegeix sensor derivatiu" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "name": "Nom", + "round": "Precisi\u00f3", + "source": "Sensor d'entrada", + "time_window": "Finestra de temps", + "unit_prefix": "Prefix m\u00e8tric", + "unit_time": "Unitat de temps" + }, + "data_description": { + "round": "Controla el nombre de d\u00edgits decimals a la sortida.", + "time_window": "Si s'estableix, el valor del sensor \u00e9s una mitjana m\u00f2bil ponderada en el temps de les derivades dins d'aquesta finestra.", + "unit_prefix": "La sortida s'escalar\u00e0 segons el prefix m\u00e8tric i la unitat de temps de la derivada seleccionats." + } + }, + "options": { + "data": { + "name": "Nom", + "round": "Precisi\u00f3", + "source": "Sensor d'entrada", + "time_window": "Finestra de temps", + "unit_prefix": "Prefix m\u00e8tric", + "unit_time": "Unitat de temps" + }, + "data_description": { + "round": "Controla el nombre de d\u00edgits decimals a la sortida.", + "time_window": "Si s'estableix, el valor del sensor \u00e9s una mitjana m\u00f2bil ponderada en el temps de les derivades dins d'aquesta finestra.", + "unit_prefix": "La sortida s'escalar\u00e0 segons el prefix m\u00e8tric i la unitat de temps de la derivada seleccionats." + }, + "description": "Crea un sensor que estima la derivada d'un altre sensor." + } + } + }, + "title": "Sensor derivatiu" +} \ No newline at end of file diff --git a/homeassistant/components/derivative/translations/cs.json b/homeassistant/components/derivative/translations/cs.json new file mode 100644 index 00000000000..ee8ee0e6d86 --- /dev/null +++ b/homeassistant/components/derivative/translations/cs.json @@ -0,0 +1,11 @@ +{ + "options": { + "step": { + "init": { + "data_description": { + "unit_prefix": "." + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/derivative/translations/de.json b/homeassistant/components/derivative/translations/de.json new file mode 100644 index 00000000000..4e1dbc1929c --- /dev/null +++ b/homeassistant/components/derivative/translations/de.json @@ -0,0 +1,59 @@ +{ + "config": { + "step": { + "user": { + "data": { + "name": "Name", + "round": "Genauigkeit", + "source": "Eingangssensor", + "time_window": "Zeitfenster", + "unit_prefix": "Metrisches Pr\u00e4fix", + "unit_time": "Zeiteinheit" + }, + "data_description": { + "round": "Steuert die Anzahl der Dezimalstellen in der Ausgabe.", + "time_window": "Wenn gesetzt, ist der Sensorwert ein zeitgewichteter gleitender Durchschnitt von Ableitungen innerhalb dieses Fensters.", + "unit_prefix": "Die Ausgabe wird gem\u00e4\u00df dem ausgew\u00e4hlten metrischen Pr\u00e4fix und der Zeiteinheit der Ableitung skaliert." + }, + "description": "Erstelle einen Sensor, der die Ableitung eines Sensors sch\u00e4tzt.", + "title": "Ableitungssensor hinzuf\u00fcgen" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "name": "Name", + "round": "Genauigkeit", + "source": "Eingangssensor", + "time_window": "Zeitfenster", + "unit_prefix": "Metrisches Pr\u00e4fix", + "unit_time": "Zeiteinheit" + }, + "data_description": { + "round": "Steuert die Anzahl der Dezimalstellen in der Ausgabe.", + "time_window": "Wenn gesetzt, ist der Sensorwert ein zeitgewichteter gleitender Durchschnitt von Ableitungen innerhalb dieses Fensters.", + "unit_prefix": "Die Ausgabe wird gem\u00e4\u00df dem ausgew\u00e4hlten metrischen Pr\u00e4fix und der Zeiteinheit der Ableitung skaliert.." + } + }, + "options": { + "data": { + "name": "Name", + "round": "Genauigkeit", + "source": "Eingangssensor", + "time_window": "Zeitfenster", + "unit_prefix": "Metrisches Pr\u00e4fix", + "unit_time": "Zeiteinheit" + }, + "data_description": { + "round": "Steuert die Anzahl der Dezimalstellen in der Ausgabe.", + "time_window": "Wenn gesetzt, ist der Sensorwert ein zeitgewichteter gleitender Durchschnitt von Ableitungen innerhalb dieses Fensters.", + "unit_prefix": "Die Ausgabe wird gem\u00e4\u00df dem ausgew\u00e4hlten metrischen Pr\u00e4fix und der Zeiteinheit der Ableitung skaliert.." + }, + "description": "Erstelle einen Sensor, der die Ableitung eines Sensors sch\u00e4tzt." + } + } + }, + "title": "Ableitungssensor" +} \ No newline at end of file diff --git a/homeassistant/components/derivative/translations/el.json b/homeassistant/components/derivative/translations/el.json new file mode 100644 index 00000000000..a5a19efc1e5 --- /dev/null +++ b/homeassistant/components/derivative/translations/el.json @@ -0,0 +1,59 @@ +{ + "config": { + "step": { + "user": { + "data": { + "name": "\u038c\u03bd\u03bf\u03bc\u03b1", + "round": "\u0391\u03ba\u03c1\u03af\u03b2\u03b5\u03b9\u03b1", + "source": "\u0391\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5", + "time_window": "\u03a7\u03c1\u03bf\u03bd\u03b9\u03ba\u03cc \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf", + "unit_prefix": "\u039c\u03b5\u03c4\u03c1\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03b8\u03b5\u03bc\u03b1", + "unit_time": "\u039c\u03bf\u03bd\u03ac\u03b4\u03b1 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c5" + }, + "data_description": { + "round": "\u0395\u03bb\u03ad\u03b3\u03c7\u03b5\u03b9 \u03c4\u03bf\u03bd \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc \u03c4\u03c9\u03bd \u03b4\u03b5\u03ba\u03b1\u03b4\u03b9\u03ba\u03ce\u03bd \u03c8\u03b7\u03c6\u03af\u03c9\u03bd \u03c3\u03c4\u03b7\u03bd \u03ad\u03be\u03bf\u03b4\u03bf.", + "time_window": "\u0395\u03ac\u03bd \u03bf\u03c1\u03b9\u03c3\u03c4\u03b5\u03af, \u03b7 \u03c4\u03b9\u03bc\u03ae \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03bf\u03bd\u03b9\u03ba\u03ac \u03c3\u03c4\u03b1\u03b8\u03bc\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2 \u03ba\u03b9\u03bd\u03b7\u03c4\u03cc\u03c2 \u03bc\u03ad\u03c3\u03bf\u03c2 \u03cc\u03c1\u03bf\u03c2 \u03c4\u03c9\u03bd \u03c0\u03b1\u03c1\u03b1\u03b3\u03ce\u03b3\u03c9\u03bd \u03b5\u03bd\u03c4\u03cc\u03c2 \u03b1\u03c5\u03c4\u03bf\u03cd \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03b1\u03b8\u03cd\u03c1\u03bf\u03c5.", + "unit_prefix": "\u0397 \u03c0\u03b1\u03c1\u03ac\u03b3\u03c9\u03b3\u03bf\u03c2 \u03b8\u03b1 \u03ba\u03bb\u03b9\u03bc\u03b1\u03ba\u03c9\u03b8\u03b5\u03af \u03c3\u03cd\u03bc\u03c6\u03c9\u03bd\u03b1 \u03bc\u03b5 \u03c4\u03bf \u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03bf \u03bc\u03b5\u03c4\u03c1\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03b8\u03b5\u03bc\u03b1 \u03ba\u03b1\u03b9 \u03c4\u03b7 \u03bc\u03bf\u03bd\u03ac\u03b4\u03b1 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c5 \u03c4\u03b7\u03c2 \u03c0\u03b1\u03c1\u03b1\u03b3\u03ce\u03b3\u03bf\u03c5." + }, + "description": "\u0397 \u03b1\u03ba\u03c1\u03af\u03b2\u03b5\u03b9\u03b1 \u03b5\u03bb\u03ad\u03b3\u03c7\u03b5\u03b9 \u03c4\u03bf\u03bd \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc \u03c4\u03c9\u03bd \u03b4\u03b5\u03ba\u03b1\u03b4\u03b9\u03ba\u03ce\u03bd \u03c8\u03b7\u03c6\u03af\u03c9\u03bd \u03c3\u03c4\u03b7\u03bd \u03ad\u03be\u03bf\u03b4\u03bf.\n\u0395\u03ac\u03bd \u03c4\u03bf \u03c7\u03c1\u03bf\u03bd\u03b9\u03ba\u03cc \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 0, \u03b7 \u03c4\u03b9\u03bc\u03ae \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03bf\u03bd\u03b9\u03ba\u03ac \u03c3\u03c4\u03b1\u03b8\u03bc\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2 \u03ba\u03b9\u03bd\u03b7\u03c4\u03cc\u03c2 \u03bc\u03ad\u03c3\u03bf\u03c2 \u03cc\u03c1\u03bf\u03c2 \u03c4\u03c9\u03bd \u03c0\u03b1\u03c1\u03b1\u03b3\u03ce\u03b3\u03c9\u03bd \u03b5\u03bd\u03c4\u03cc\u03c2 \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03b1\u03b8\u03cd\u03c1\u03bf\u03c5.\n\u0397 \u03c0\u03b1\u03c1\u03ac\u03b3\u03c9\u03b3\u03bf\u03c2 \u03b8\u03b1 \u03ba\u03bb\u03b9\u03bc\u03b1\u03ba\u03ce\u03bd\u03b5\u03c4\u03b1\u03b9 \u03c3\u03cd\u03bc\u03c6\u03c9\u03bd\u03b1 \u03bc\u03b5 \u03c4\u03bf \u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03bf \u03bc\u03b5\u03c4\u03c1\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03b8\u03b5\u03bc\u03b1 \u03ba\u03b1\u03b9 \u03c4\u03b7 \u03bc\u03bf\u03bd\u03ac\u03b4\u03b1 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c5 \u03c4\u03b7\u03c2 \u03c0\u03b1\u03c1\u03b1\u03b3\u03ce\u03b3\u03bf\u03c5.", + "title": "\u039d\u03ad\u03bf\u03c2 \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2 Derivative" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "name": "\u038c\u03bd\u03bf\u03bc\u03b1", + "round": "\u0391\u03ba\u03c1\u03af\u03b2\u03b5\u03b9\u03b1", + "source": "\u0391\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5", + "time_window": "\u03a7\u03c1\u03bf\u03bd\u03b9\u03ba\u03cc \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf", + "unit_prefix": "\u039c\u03b5\u03c4\u03c1\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03b8\u03b5\u03bc\u03b1", + "unit_time": "\u039c\u03bf\u03bd\u03ac\u03b4\u03b1 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c5" + }, + "data_description": { + "round": "\u0395\u03bb\u03ad\u03b3\u03c7\u03b5\u03b9 \u03c4\u03bf\u03bd \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc \u03c4\u03c9\u03bd \u03b4\u03b5\u03ba\u03b1\u03b4\u03b9\u03ba\u03ce\u03bd \u03c8\u03b7\u03c6\u03af\u03c9\u03bd \u03c3\u03c4\u03b7\u03bd \u03ad\u03be\u03bf\u03b4\u03bf.", + "time_window": "\u0395\u03ac\u03bd \u03bf\u03c1\u03b9\u03c3\u03c4\u03b5\u03af, \u03b7 \u03c4\u03b9\u03bc\u03ae \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03bf\u03bd\u03b9\u03ba\u03ac \u03c3\u03c4\u03b1\u03b8\u03bc\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2 \u03ba\u03b9\u03bd\u03b7\u03c4\u03cc\u03c2 \u03bc\u03ad\u03c3\u03bf\u03c2 \u03cc\u03c1\u03bf\u03c2 \u03c4\u03c9\u03bd \u03c0\u03b1\u03c1\u03b1\u03b3\u03ce\u03b3\u03c9\u03bd \u03b5\u03bd\u03c4\u03cc\u03c2 \u03b1\u03c5\u03c4\u03bf\u03cd \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03b1\u03b8\u03cd\u03c1\u03bf\u03c5.", + "unit_prefix": "\u0397 \u03c0\u03b1\u03c1\u03ac\u03b3\u03c9\u03b3\u03bf\u03c2 \u03b8\u03b1 \u03ba\u03bb\u03b9\u03bc\u03b1\u03ba\u03c9\u03b8\u03b5\u03af \u03c3\u03cd\u03bc\u03c6\u03c9\u03bd\u03b1 \u03bc\u03b5 \u03c4\u03bf \u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03bf \u03bc\u03b5\u03c4\u03c1\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03b8\u03b5\u03bc\u03b1 \u03ba\u03b1\u03b9 \u03c4\u03b7 \u03bc\u03bf\u03bd\u03ac\u03b4\u03b1 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c5 \u03c4\u03b7\u03c2 \u03c0\u03b1\u03c1\u03b1\u03b3\u03ce\u03b3\u03bf\u03c5." + } + }, + "options": { + "data": { + "name": "\u038c\u03bd\u03bf\u03bc\u03b1", + "round": "\u0391\u03ba\u03c1\u03af\u03b2\u03b5\u03b9\u03b1", + "source": "\u0391\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5", + "time_window": "\u03a7\u03c1\u03bf\u03bd\u03b9\u03ba\u03cc \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf", + "unit_prefix": "\u039c\u03b5\u03c4\u03c1\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03b8\u03b5\u03bc\u03b1", + "unit_time": "\u039c\u03bf\u03bd\u03ac\u03b4\u03b1 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c5" + }, + "data_description": { + "round": "\u0395\u03bb\u03ad\u03b3\u03c7\u03b5\u03b9 \u03c4\u03bf\u03bd \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc \u03c4\u03c9\u03bd \u03b4\u03b5\u03ba\u03b1\u03b4\u03b9\u03ba\u03ce\u03bd \u03c8\u03b7\u03c6\u03af\u03c9\u03bd \u03c3\u03c4\u03b7\u03bd \u03ad\u03be\u03bf\u03b4\u03bf.", + "time_window": "\u0395\u03ac\u03bd \u03bf\u03c1\u03b9\u03c3\u03c4\u03b5\u03af, \u03b7 \u03c4\u03b9\u03bc\u03ae \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03bf\u03bd\u03b9\u03ba\u03ac \u03c3\u03c4\u03b1\u03b8\u03bc\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2 \u03ba\u03b9\u03bd\u03b7\u03c4\u03cc\u03c2 \u03bc\u03ad\u03c3\u03bf\u03c2 \u03cc\u03c1\u03bf\u03c2 \u03c4\u03c9\u03bd \u03c0\u03b1\u03c1\u03b1\u03b3\u03ce\u03b3\u03c9\u03bd \u03b5\u03bd\u03c4\u03cc\u03c2 \u03b1\u03c5\u03c4\u03bf\u03cd \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03b1\u03b8\u03cd\u03c1\u03bf\u03c5.", + "unit_prefix": "\u0397 \u03c0\u03b1\u03c1\u03ac\u03b3\u03c9\u03b3\u03bf\u03c2 \u03b8\u03b1 \u03ba\u03bb\u03b9\u03bc\u03b1\u03ba\u03c9\u03b8\u03b5\u03af \u03c3\u03cd\u03bc\u03c6\u03c9\u03bd\u03b1 \u03bc\u03b5 \u03c4\u03bf \u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03bf \u03bc\u03b5\u03c4\u03c1\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03b8\u03b5\u03bc\u03b1 \u03ba\u03b1\u03b9 \u03c4\u03b7 \u03bc\u03bf\u03bd\u03ac\u03b4\u03b1 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c5 \u03c4\u03b7\u03c2 \u03c0\u03b1\u03c1\u03b1\u03b3\u03ce\u03b3\u03bf\u03c5." + }, + "description": "\u0397 \u03b1\u03ba\u03c1\u03af\u03b2\u03b5\u03b9\u03b1 \u03b5\u03bb\u03ad\u03b3\u03c7\u03b5\u03b9 \u03c4\u03bf\u03bd \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc \u03c4\u03c9\u03bd \u03b4\u03b5\u03ba\u03b1\u03b4\u03b9\u03ba\u03ce\u03bd \u03c8\u03b7\u03c6\u03af\u03c9\u03bd \u03c3\u03c4\u03b7\u03bd \u03ad\u03be\u03bf\u03b4\u03bf.\n\u0395\u03ac\u03bd \u03c4\u03bf \u03c7\u03c1\u03bf\u03bd\u03b9\u03ba\u03cc \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 0, \u03b7 \u03c4\u03b9\u03bc\u03ae \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03bf\u03bd\u03b9\u03ba\u03ac \u03c3\u03c4\u03b1\u03b8\u03bc\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2 \u03ba\u03b9\u03bd\u03b7\u03c4\u03cc\u03c2 \u03bc\u03ad\u03c3\u03bf\u03c2 \u03cc\u03c1\u03bf\u03c2 \u03c4\u03c9\u03bd \u03c0\u03b1\u03c1\u03b1\u03b3\u03ce\u03b3\u03c9\u03bd \u03b5\u03bd\u03c4\u03cc\u03c2 \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03b1\u03b8\u03cd\u03c1\u03bf\u03c5.\n\u0397 \u03c0\u03b1\u03c1\u03ac\u03b3\u03c9\u03b3\u03bf\u03c2 \u03b8\u03b1 \u03ba\u03bb\u03b9\u03bc\u03b1\u03ba\u03ce\u03bd\u03b5\u03c4\u03b1\u03b9 \u03c3\u03cd\u03bc\u03c6\u03c9\u03bd\u03b1 \u03bc\u03b5 \u03c4\u03bf \u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03bf \u03bc\u03b5\u03c4\u03c1\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03b8\u03b5\u03bc\u03b1 \u03ba\u03b1\u03b9 \u03c4\u03b7 \u03bc\u03bf\u03bd\u03ac\u03b4\u03b1 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c5 \u03c4\u03b7\u03c2 \u03c0\u03b1\u03c1\u03b1\u03b3\u03ce\u03b3\u03bf\u03c5." + } + } + }, + "title": "\u0391\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2 \u03c0\u03b1\u03c1\u03b1\u03b3\u03ce\u03b3\u03c9\u03bd" +} \ No newline at end of file diff --git a/homeassistant/components/derivative/translations/en.json b/homeassistant/components/derivative/translations/en.json index b91318b5237..884f1fa5244 100644 --- a/homeassistant/components/derivative/translations/en.json +++ b/homeassistant/components/derivative/translations/en.json @@ -36,6 +36,22 @@ "time_window": "If set, the sensor's value is a time weighted moving average of derivatives within this window.", "unit_prefix": "The output will be scaled according to the selected metric prefix and time unit of the derivative.." } + }, + "options": { + "data": { + "name": "Name", + "round": "Precision", + "source": "Input sensor", + "time_window": "Time window", + "unit_prefix": "Metric prefix", + "unit_time": "Time unit" + }, + "data_description": { + "round": "Controls the number of decimal digits in the output.", + "time_window": "If set, the sensor's value is a time weighted moving average of derivatives within this window.", + "unit_prefix": "The output will be scaled according to the selected metric prefix and time unit of the derivative.." + }, + "description": "Create a sensor that estimates the derivative of a sensor." } } }, diff --git a/homeassistant/components/derivative/translations/et.json b/homeassistant/components/derivative/translations/et.json new file mode 100644 index 00000000000..45c566fac9b --- /dev/null +++ b/homeassistant/components/derivative/translations/et.json @@ -0,0 +1,59 @@ +{ + "config": { + "step": { + "user": { + "data": { + "name": "Nimi", + "round": "T\u00e4psus", + "source": "Sisendandur", + "time_window": "Ajavahemik", + "unit_prefix": "M\u00f5\u00f5diku eesliide", + "unit_time": "Aja\u00fchik" + }, + "data_description": { + "round": "K\u00fcmnendkohtade arv v\u00e4ljundis.", + "time_window": "Kui see on m\u00e4\u00e4ratud on anduri v\u00e4\u00e4rtus selle akna tuletisinstrumentide ajaga kaalutud liikuv keskmine.", + "unit_prefix": "Tuletis skaleeritakse vastavalt valitud meetrilisele eesliitele ja tuletise aja\u00fchikule." + }, + "description": "Loo andur mis hindab anduri tuletist.", + "title": "Lisa uus tuletisandur" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "name": "Nimi", + "round": "T\u00e4psus", + "source": "Sisendandur", + "time_window": "Ajavahemik", + "unit_prefix": "M\u00f5\u00f5diku eesliide", + "unit_time": "Aja\u00fchik" + }, + "data_description": { + "round": "K\u00fcmnendkohtade arv v\u00e4ljundis.", + "time_window": "Kui see on m\u00e4\u00e4ratud on anduri v\u00e4\u00e4rtus selle akna tuletisinstrumentide ajaga kaalutud liikuv keskmine.", + "unit_prefix": "Tuletis skaleeritakse vastavalt valitud meetrilisele eesliitele ja tuletise aja\u00fchikule." + } + }, + "options": { + "data": { + "name": "Nimi", + "round": "T\u00e4psus", + "source": "Sisendandur", + "time_window": "Ajavahemik", + "unit_prefix": "M\u00f5\u00f5diku eesliide", + "unit_time": "Aja\u00fchik" + }, + "data_description": { + "round": "K\u00fcmnendkohtade arv v\u00e4ljundis.", + "time_window": "Kui see on m\u00e4\u00e4ratud, on anduri v\u00e4\u00e4rtus selle akna tuletisinstrumentide ajaga kaalutud liikuv keskmine.", + "unit_prefix": "Tuletis skaleeritakse vastavalt valitud meetrilisele eesliitele ja tuletise aja\u00fchikule." + }, + "description": "T\u00e4psus reguleerib k\u00fcmnendkohtade arvu v\u00e4ljundis.\n Kui ajaaken ei ole 0, on anduri v\u00e4\u00e4rtuseks aknas olevate tuletisinstrumentide ajaga kaalutud liikuv keskmine.\n Tuletist skaleeritakse vastavalt valitud meetrilise prefiksile ja tuletise aja\u00fchikule." + } + } + }, + "title": "Tuletisandur" +} \ No newline at end of file diff --git a/homeassistant/components/derivative/translations/fr.json b/homeassistant/components/derivative/translations/fr.json new file mode 100644 index 00000000000..d967a3abc89 --- /dev/null +++ b/homeassistant/components/derivative/translations/fr.json @@ -0,0 +1,59 @@ +{ + "config": { + "step": { + "user": { + "data": { + "name": "Nom", + "round": "Pr\u00e9cision", + "source": "Capteur d'entr\u00e9e", + "time_window": "P\u00e9riode", + "unit_prefix": "Pr\u00e9fixe m\u00e9trique", + "unit_time": "Unit\u00e9 de temps" + }, + "data_description": { + "round": "Contr\u00f4le le nombre de chiffres d\u00e9cimaux dans la sortie.", + "time_window": "Si d\u00e9finie, la valeur du capteur est une moyenne mobile pond\u00e9r\u00e9e dans le temps des d\u00e9riv\u00e9es dans cette p\u00e9riode.", + "unit_prefix": "La sortie sera mise \u00e0 l'\u00e9chelle en fonction du pr\u00e9fixe m\u00e9trique et de l'unit\u00e9 de temps de la d\u00e9riv\u00e9e s\u00e9lectionn\u00e9s." + }, + "description": "Cr\u00e9ez un capteur calculant la d\u00e9riv\u00e9e d'un autre capteur.", + "title": "Ajouter un capteur de d\u00e9riv\u00e9e" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "name": "Nom", + "round": "Pr\u00e9cision", + "source": "Capteur d'entr\u00e9e", + "time_window": "P\u00e9riode", + "unit_prefix": "Pr\u00e9fixe m\u00e9trique", + "unit_time": "Unit\u00e9 de temps" + }, + "data_description": { + "round": "Contr\u00f4le le nombre de chiffres d\u00e9cimaux dans la sortie.", + "time_window": "Si d\u00e9finie, la valeur du capteur est une moyenne mobile pond\u00e9r\u00e9e dans le temps des d\u00e9riv\u00e9es dans cette p\u00e9riode.", + "unit_prefix": "La sortie sera mise \u00e0 l'\u00e9chelle en fonction du pr\u00e9fixe m\u00e9trique et de l'unit\u00e9 de temps de la d\u00e9riv\u00e9e s\u00e9lectionn\u00e9s.." + } + }, + "options": { + "data": { + "name": "Nom", + "round": "Pr\u00e9cision", + "source": "Capteur d'entr\u00e9e", + "time_window": "P\u00e9riode", + "unit_prefix": "Pr\u00e9fixe m\u00e9trique", + "unit_time": "Unit\u00e9 de temps" + }, + "data_description": { + "round": "Contr\u00f4le le nombre de chiffres d\u00e9cimaux dans la sortie.", + "time_window": "Si d\u00e9finie, la valeur du capteur est une moyenne mobile pond\u00e9r\u00e9e dans le temps des d\u00e9riv\u00e9es dans cette p\u00e9riode.", + "unit_prefix": "La sortie sera mise \u00e0 l'\u00e9chelle en fonction du pr\u00e9fixe m\u00e9trique et de l'unit\u00e9 de temps de la d\u00e9riv\u00e9e s\u00e9lectionn\u00e9s." + }, + "description": "Cr\u00e9ez un capteur calculant la d\u00e9riv\u00e9e d'un autre capteur." + } + } + }, + "title": "Capteur de d\u00e9riv\u00e9e" +} \ No newline at end of file diff --git a/homeassistant/components/derivative/translations/he.json b/homeassistant/components/derivative/translations/he.json new file mode 100644 index 00000000000..317b836da6d --- /dev/null +++ b/homeassistant/components/derivative/translations/he.json @@ -0,0 +1,11 @@ +{ + "options": { + "step": { + "options": { + "data_description": { + "unit_prefix": "." + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/derivative/translations/hu.json b/homeassistant/components/derivative/translations/hu.json new file mode 100644 index 00000000000..e71175d2a32 --- /dev/null +++ b/homeassistant/components/derivative/translations/hu.json @@ -0,0 +1,59 @@ +{ + "config": { + "step": { + "user": { + "data": { + "name": "Elnevez\u00e9s", + "round": "Pontoss\u00e1g", + "source": "Forr\u00e1s \u00e9rz\u00e9kel\u0151", + "time_window": "Id\u0151ablak", + "unit_prefix": "M\u00e9rt\u00e9kegys\u00e9g el\u0151tag", + "unit_time": "Id\u0151egys\u00e9g" + }, + "data_description": { + "round": "Az eredm\u00e9ny tizedesjegyeinek sz\u00e1ma.", + "time_window": "Ha be van \u00e1ll\u00edtva, az \u00e9rz\u00e9kel\u0151 \u00e9rt\u00e9ke az ablakon bel\u00fcli sz\u00e1rmaz\u00e9kok id\u0151vel s\u00falyozott mozg\u00f3\u00e1tlaga.", + "unit_prefix": "A sz\u00e1rmaz\u00e9kos \u00e9rt\u00e9k a sz\u00e1rmaztatott term\u00e9k kiv\u00e1lasztott m\u00e9rt\u00e9kegys\u00e9g el\u0151tagja \u00e9s id\u0151egys\u00e9ge szerint lesz sk\u00e1l\u00e1zva." + }, + "description": "Hozzon l\u00e9tre egy \u00e9rz\u00e9kel\u0151t, amely megbecs\u00fcli a forr\u00e1s \u00e9rz\u00e9kel\u0151 sz\u00e1rmaz\u00e9k\u00e1t.", + "title": "\u00daj sz\u00e1rmaz\u00e9kos \u00e9rz\u00e9kel\u0151" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "name": "Elnevez\u00e9s", + "round": "Pontoss\u00e1g", + "source": "Forr\u00e1s \u00e9rz\u00e9kel\u0151", + "time_window": "Id\u0151ablak", + "unit_prefix": "M\u00e9rt\u00e9kegys\u00e9g el\u0151tag", + "unit_time": "Id\u0151egys\u00e9g" + }, + "data_description": { + "round": "Az eredm\u00e9ny tizedesjegyeinek sz\u00e1ma.", + "time_window": "Ha be van \u00e1ll\u00edtva, az \u00e9rz\u00e9kel\u0151 \u00e9rt\u00e9ke az ablakon bel\u00fcli sz\u00e1rmaz\u00e9kok id\u0151vel s\u00falyozott mozg\u00f3\u00e1tlaga.", + "unit_prefix": "A sz\u00e1rmaz\u00e9kos \u00e9rt\u00e9k a sz\u00e1rmaztatott term\u00e9k kiv\u00e1lasztott m\u00e9rt\u00e9kegys\u00e9g el\u0151tagja \u00e9s id\u0151egys\u00e9ge szerint lesz sk\u00e1l\u00e1zva.." + } + }, + "options": { + "data": { + "name": "Elnevez\u00e9s", + "round": "Pontoss\u00e1g", + "source": "Forr\u00e1s \u00e9rz\u00e9kel\u0151", + "time_window": "Id\u0151ablak", + "unit_prefix": "M\u00e9rt\u00e9kegys\u00e9g el\u0151tag", + "unit_time": "Id\u0151egys\u00e9g" + }, + "data_description": { + "round": "Az eredm\u00e9ny tizedesjegyeinek sz\u00e1ma.", + "time_window": "Ha be van \u00e1ll\u00edtva, az \u00e9rz\u00e9kel\u0151 \u00e9rt\u00e9ke az ablakon bel\u00fcli sz\u00e1rmaz\u00e9kok id\u0151vel s\u00falyozott mozg\u00f3\u00e1tlaga.", + "unit_prefix": "A sz\u00e1rmaz\u00e9kos \u00e9rt\u00e9k a sz\u00e1rmaztatott term\u00e9k kiv\u00e1lasztott m\u00e9rt\u00e9kegys\u00e9g el\u0151tagja \u00e9s id\u0151egys\u00e9ge szerint lesz sk\u00e1l\u00e1zva.." + }, + "description": "Hozzon l\u00e9tre egy \u00e9rz\u00e9kel\u0151t, amely megbecs\u00fcli a forr\u00e1s \u00e9rz\u00e9kel\u0151 sz\u00e1rmaz\u00e9k\u00e1t." + } + } + }, + "title": "Sz\u00e1rmaz\u00e9kos \u00e9rz\u00e9kel\u0151" +} \ No newline at end of file diff --git a/homeassistant/components/derivative/translations/id.json b/homeassistant/components/derivative/translations/id.json new file mode 100644 index 00000000000..67d6752a182 --- /dev/null +++ b/homeassistant/components/derivative/translations/id.json @@ -0,0 +1,59 @@ +{ + "config": { + "step": { + "user": { + "data": { + "name": "Nama", + "round": "Presisi", + "source": "Sensor input", + "time_window": "Jangka waktu", + "unit_prefix": "Prefiks metrik", + "unit_time": "Unit waktu" + }, + "data_description": { + "round": "Mengontrol jumlah digit desimal dalam output.", + "time_window": "Jika disetel, nilai sensor adalah rata-rata bergerak berbobot waktu dari turunan dalam jangka ini.", + "unit_prefix": "Output akan diskalakan sesuai dengan prefiks metrik yang dipilih dan unit waktu turunan." + }, + "description": "Buat sensor yang memperkirakan nilai turunan dari sebuah sensor.", + "title": "Tambahkan sensor Turunan" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "name": "Nama", + "round": "Presisi", + "source": "Sensor input", + "time_window": "Jangka waktu", + "unit_prefix": "Prefiks metrik", + "unit_time": "Unit waktu" + }, + "data_description": { + "round": "Mengontrol jumlah digit desimal dalam output.", + "time_window": "Jika disetel, nilai sensor adalah rata-rata bergerak berbobot waktu dari turunan dalam jangka ini.", + "unit_prefix": "Output akan diskalakan sesuai dengan prefiks metrik yang dipilih dan unit waktu turunan.." + } + }, + "options": { + "data": { + "name": "Nama", + "round": "Presisi", + "source": "Sensor input", + "time_window": "Jangka waktu", + "unit_prefix": "Prefiks metrik", + "unit_time": "Unit waktu" + }, + "data_description": { + "round": "Mengontrol jumlah digit desimal dalam output.", + "time_window": "Jika disetel, nilai sensor adalah rata-rata bergerak berbobot waktu dari turunan dalam jangka ini.", + "unit_prefix": "Output akan diskalakan sesuai dengan prefiks metrik yang dipilih dan unit waktu turunan.." + }, + "description": "Buat sensor yang memperkirakan nilai turunan dari sebuah sensor." + } + } + }, + "title": "Sensor Turunan" +} \ No newline at end of file diff --git a/homeassistant/components/derivative/translations/it.json b/homeassistant/components/derivative/translations/it.json new file mode 100644 index 00000000000..ad888e13745 --- /dev/null +++ b/homeassistant/components/derivative/translations/it.json @@ -0,0 +1,59 @@ +{ + "config": { + "step": { + "user": { + "data": { + "name": "Nome", + "round": "Precisione", + "source": "Sensore di ingresso", + "time_window": "Finestra temporale", + "unit_prefix": "Prefisso metrico", + "unit_time": "Unit\u00e0 di tempo" + }, + "data_description": { + "round": "Controlla il numero di cifre decimali nell'uscita.", + "time_window": "Se impostato, il valore del sensore \u00e8 una media mobile delle derivate ponderata nel tempo all'interno di questa finestra.", + "unit_prefix": "L'output sar\u00e0 ridimensionato in base al prefisso metrico selezionato e all'unit\u00e0 di tempo della derivata." + }, + "description": "Crea un sensore che stimi la derivata di un sensore.", + "title": "Aggiungi sensore derivata" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "name": "Nome", + "round": "Precisione", + "source": "Sensore di ingresso", + "time_window": "Finestra temporale", + "unit_prefix": "Prefisso metrico", + "unit_time": "Unit\u00e0 di tempo" + }, + "data_description": { + "round": "Controlla il numero di cifre decimali nell'uscita.", + "time_window": "Se impostato, il valore del sensore \u00e8 una media mobile delle derivate ponderata nel tempo all'interno di questa finestra.", + "unit_prefix": "L'output sar\u00e0 ridimensionato in base al prefisso metrico selezionato e all'unit\u00e0 di tempo della derivata.." + } + }, + "options": { + "data": { + "name": "Nome", + "round": "Precisione", + "source": "Sensore di ingresso", + "time_window": "Finestra temporale", + "unit_prefix": "Prefisso metrico", + "unit_time": "Unit\u00e0 di tempo" + }, + "data_description": { + "round": "Controlla il numero di cifre decimali nell'uscita.", + "time_window": "Se impostato, il valore del sensore \u00e8 una media mobile delle derivate ponderata nel tempo all'interno di questa finestra.", + "unit_prefix": "L'output sar\u00e0 ridimensionato in base al prefisso metrico selezionato e all'unit\u00e0 di tempo della derivata.." + }, + "description": "Crea un sensore che stimi la derivata di un sensore." + } + } + }, + "title": "Sensore derivata" +} \ No newline at end of file diff --git a/homeassistant/components/derivative/translations/ja.json b/homeassistant/components/derivative/translations/ja.json new file mode 100644 index 00000000000..10232f996d6 --- /dev/null +++ b/homeassistant/components/derivative/translations/ja.json @@ -0,0 +1,59 @@ +{ + "config": { + "step": { + "user": { + "data": { + "name": "\u540d\u524d", + "round": "\u7cbe\u5ea6", + "source": "\u5165\u529b\u30bb\u30f3\u30b5\u30fc", + "time_window": "\u6642\u9593\u8ef8", + "unit_prefix": "\u30e1\u30c8\u30ea\u30c3\u30af\u63a5\u982d\u8f9e", + "unit_time": "\u6642\u9593\u5358\u4f4d" + }, + "data_description": { + "round": "\u51fa\u529b\u5024\u306e\u5c0f\u6570\u70b9\u4ee5\u4e0b\u306e\u6841\u6570\u3002", + "time_window": "\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u30bb\u30f3\u30b5\u30fc\u306e\u5024\u306f\u3053\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u5185\u306e\u5fae\u5206\u306e\u6642\u9593\u52a0\u91cd\u79fb\u52d5\u5e73\u5747\u3068\u306a\u308a\u307e\u3059\u3002", + "unit_prefix": "\u5fae\u5206\u306f\u3001\u9078\u629e\u3055\u308c\u305f\u5358\u4f4d\u306e\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3068\u5fae\u5206\u306e\u6642\u9593\u5358\u4f4d\u306b\u5f93\u3063\u3066\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002" + }, + "description": "\u7cbe\u5ea6\u306f\u3001\u51fa\u529b\u306e\u5c0f\u6570\u70b9\u4ee5\u4e0b\u306e\u6841\u6570\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002\n\u6642\u9593\u7a93\u304c0\u3067\u306a\u3044\u5834\u5408\u3001\u30bb\u30f3\u30b5\u30fc\u306e\u5024\u306f\u7a93\u5185\u306e\u5fae\u5206\u306e\u6642\u9593\u52a0\u91cd\u79fb\u52d5\u5e73\u5747\u306b\u306a\u308a\u307e\u3059\u3002\n\u5fae\u5206\u306f\u3001\u9078\u629e\u3055\u308c\u305f\u5358\u4f4d\u306e\u30d7\u30ea\u30d5\u30a3\u30c3\u30af\u30b9\u3068\u5fae\u5206\u306e\u6642\u9593\u5358\u4f4d\u306b\u5f93\u3063\u3066\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002", + "title": "\u65b0\u3057\u3044\u6d3e\u751f(Derivative)\u30bb\u30f3\u30b5\u30fc" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "name": "\u540d\u524d", + "round": "\u7cbe\u5ea6", + "source": "\u5165\u529b\u30bb\u30f3\u30b5\u30fc", + "time_window": "\u6642\u9593\u8ef8", + "unit_prefix": "\u30e1\u30c8\u30ea\u30c3\u30af\u63a5\u982d\u8f9e", + "unit_time": "\u6642\u9593\u5358\u4f4d" + }, + "data_description": { + "round": "\u51fa\u529b\u5024\u306e\u5c0f\u6570\u70b9\u4ee5\u4e0b\u306e\u6841\u6570\u3002", + "time_window": "\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u30bb\u30f3\u30b5\u30fc\u306e\u5024\u306f\u3053\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u5185\u306e\u5fae\u5206\u306e\u6642\u9593\u52a0\u91cd\u79fb\u52d5\u5e73\u5747\u3068\u306a\u308a\u307e\u3059\u3002", + "unit_prefix": "\u5fae\u5206\u306f\u3001\u9078\u629e\u3055\u308c\u305f\u5358\u4f4d\u306e\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3068\u5fae\u5206\u306e\u6642\u9593\u5358\u4f4d\u306b\u5f93\u3063\u3066\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002." + } + }, + "options": { + "data": { + "name": "\u540d\u524d", + "round": "\u7cbe\u5ea6", + "source": "\u5165\u529b\u30bb\u30f3\u30b5\u30fc", + "time_window": "\u6642\u9593\u8ef8", + "unit_prefix": "\u30e1\u30c8\u30ea\u30c3\u30af\u63a5\u982d\u8f9e", + "unit_time": "\u6642\u9593\u5358\u4f4d" + }, + "data_description": { + "round": "\u51fa\u529b\u5024\u306e\u5c0f\u6570\u70b9\u4ee5\u4e0b\u306e\u6841\u6570\u3002", + "time_window": "\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u30bb\u30f3\u30b5\u30fc\u306e\u5024\u306f\u3053\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u5185\u306e\u5fae\u5206\u306e\u6642\u9593\u52a0\u91cd\u79fb\u52d5\u5e73\u5747\u3068\u306a\u308a\u307e\u3059\u3002", + "unit_prefix": "\u5fae\u5206\u306f\u3001\u9078\u629e\u3055\u308c\u305f\u5358\u4f4d\u306e\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3068\u5fae\u5206\u306e\u6642\u9593\u5358\u4f4d\u306b\u5f93\u3063\u3066\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002." + }, + "description": "\u7cbe\u5ea6\u306f\u3001\u51fa\u529b\u306e\u5c0f\u6570\u70b9\u4ee5\u4e0b\u306e\u6841\u6570\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002\n\u6642\u9593\u7a93\u304c0\u3067\u306a\u3044\u5834\u5408\u3001\u30bb\u30f3\u30b5\u30fc\u306e\u5024\u306f\u7a93\u5185\u306e\u5fae\u5206\u306e\u6642\u9593\u52a0\u91cd\u79fb\u52d5\u5e73\u5747\u306b\u306a\u308a\u307e\u3059\u3002\n\u5fae\u5206\u306f\u3001\u9078\u629e\u3055\u308c\u305f\u5358\u4f4d\u306e\u30d7\u30ea\u30d5\u30a3\u30c3\u30af\u30b9\u3068\u5fae\u5206\u306e\u6642\u9593\u5358\u4f4d\u306b\u5f93\u3063\u3066\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002" + } + } + }, + "title": "\u6d3e\u751f(Derivative)\u30bb\u30f3\u30b5\u30fc" +} \ No newline at end of file diff --git a/homeassistant/components/derivative/translations/nl.json b/homeassistant/components/derivative/translations/nl.json new file mode 100644 index 00000000000..8b7cf5a9402 --- /dev/null +++ b/homeassistant/components/derivative/translations/nl.json @@ -0,0 +1,59 @@ +{ + "config": { + "step": { + "user": { + "data": { + "name": "Naam", + "round": "Precisie", + "source": "Invoer sensor", + "time_window": "Tijdsvenster", + "unit_prefix": "Metrisch voorvoegsel", + "unit_time": "Tijdseenheid" + }, + "data_description": { + "round": "Regelt het aantal decimale cijfers in de uitvoer.", + "time_window": "Indien ingesteld, is de waarde van de sensor een tijdgewogen voortschrijdend gemiddelde van de afgeleiden binnen dit venster.", + "unit_prefix": "De uitvoer wordt geschaald volgens het geselecteerde metrische voorvoegsel en de tijdseenheid van de afgeleide" + }, + "description": "Maak een sensor die de afgeleide van een sensor schat.", + "title": "Voeg afgeleide sensor toe" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "name": "Naam", + "round": "Precisie", + "source": "Invoer sensor", + "time_window": "Tijdsvenster", + "unit_prefix": "Metrisch voorvoegsel", + "unit_time": "Tijdseenheid" + }, + "data_description": { + "round": "Regelt het aantal decimale cijfers in de uitvoer.", + "time_window": "Indien ingesteld, is de waarde van de sensor een tijdgewogen voortschrijdend gemiddelde van de afgeleiden binnen dit venster.", + "unit_prefix": "De uitvoer wordt geschaald volgens het geselecteerde metrische voorvoegsel en de tijdseenheid van de afgeleide." + } + }, + "options": { + "data": { + "name": "Naam", + "round": "Precisie", + "source": "Invoer sensor", + "time_window": "Tijdsvenster", + "unit_prefix": "Metrisch voorvoegsel", + "unit_time": "Tijdseenheid" + }, + "data_description": { + "round": "Regelt het aantal decimale cijfers in de uitvoer.", + "time_window": "Indien ingesteld, is de waarde van de sensor een tijdgewogen voortschrijdend gemiddelde van de afgeleiden binnen dit venster.", + "unit_prefix": "De uitvoer wordt geschaald volgens het geselecteerde metrische voorvoegsel en de tijdseenheid van de afgeleide." + }, + "description": "Maak een sensor die de afgeleide van een sensor schat." + } + } + }, + "title": "Derivatieve sensor" +} \ No newline at end of file diff --git a/homeassistant/components/derivative/translations/no.json b/homeassistant/components/derivative/translations/no.json new file mode 100644 index 00000000000..735f1fae6ae --- /dev/null +++ b/homeassistant/components/derivative/translations/no.json @@ -0,0 +1,59 @@ +{ + "config": { + "step": { + "user": { + "data": { + "name": "Navn", + "round": "Presisjon", + "source": "Inngangssensor", + "time_window": "Tidsvindu", + "unit_prefix": "Metrisk prefiks", + "unit_time": "Tidsenhet" + }, + "data_description": { + "round": "Styrer antall desimaler i utdataene.", + "time_window": "Hvis den er angitt, er sensorens verdi et tidsvektet glidende gjennomsnitt av derivater i dette vinduet.", + "unit_prefix": "Utdataene skaleres i henhold til det valgte metriske prefikset og tidsenheten til den deriverte." + }, + "description": "Lag en sensor som estimerer den deriverte av en sensor.", + "title": "Legg til derivatsensor" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "name": "Navn", + "round": "Presisjon", + "source": "Inngangssensor", + "time_window": "Tidsvindu", + "unit_prefix": "Metrisk prefiks", + "unit_time": "Tidsenhet" + }, + "data_description": { + "round": "Styrer antall desimaler i utdataene.", + "time_window": "Hvis den er angitt, er sensorens verdi et tidsvektet glidende gjennomsnitt av derivater i dette vinduet.", + "unit_prefix": "Utdataene skaleres i henhold til det valgte metriske prefikset og tidsenheten til den deriverte.." + } + }, + "options": { + "data": { + "name": "Navn", + "round": "Presisjon", + "source": "Inngangssensor", + "time_window": "Tidsvindu", + "unit_prefix": "Metrisk prefiks", + "unit_time": "Tidsenhet" + }, + "data_description": { + "round": "Styrer antall desimaler i utdataene.", + "time_window": "Hvis den er angitt, er sensorens verdi et tidsvektet glidende gjennomsnitt av derivater i dette vinduet.", + "unit_prefix": "Utdataene skaleres i henhold til det valgte metriske prefikset og tidsenheten til den deriverte.." + }, + "description": "Lag en sensor som estimerer den deriverte av en sensor." + } + } + }, + "title": "Avledet sensor" +} \ No newline at end of file diff --git a/homeassistant/components/derivative/translations/pl.json b/homeassistant/components/derivative/translations/pl.json new file mode 100644 index 00000000000..041d52ffeff --- /dev/null +++ b/homeassistant/components/derivative/translations/pl.json @@ -0,0 +1,59 @@ +{ + "config": { + "step": { + "user": { + "data": { + "name": "Nazwa", + "round": "Precyzja", + "source": "Sensor wej\u015bciowy", + "time_window": "Okno czasowe", + "unit_prefix": "Prefiks metryczny", + "unit_time": "Jednostka czasu" + }, + "data_description": { + "round": "Kontroluje liczb\u0119 cyfr dziesi\u0119tnych w danych wyj\u015bciowych.", + "time_window": "Je\u015bli jest ustawiona, warto\u015b\u0107 sensora jest wa\u017con\u0105 w czasie \u015bredni\u0105 ruchom\u0105 pochodnych w tym oknie.", + "unit_prefix": "Wynik b\u0119dzie skalowany zgodnie z wybranym prefiksem metrycznym i jednostk\u0105 czasu pochodnej." + }, + "description": "Tworzy sensor, kt\u00f3ry szacuje pochodn\u0105 sensora.", + "title": "Dodaj sensor pochodnej" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "name": "Nazwa", + "round": "Precyzja", + "source": "Sensor wej\u015bciowy", + "time_window": "Okno czasowe", + "unit_prefix": "Prefiks metryczny", + "unit_time": "Jednostka czasu" + }, + "data_description": { + "round": "Kontroluje liczb\u0119 cyfr dziesi\u0119tnych w danych wyj\u015bciowych.", + "time_window": "Je\u015bli jest ustawiona, warto\u015b\u0107 sensora jest wa\u017con\u0105 w czasie \u015bredni\u0105 ruchom\u0105 pochodnych w tym oknie.", + "unit_prefix": "Wynik b\u0119dzie skalowany zgodnie z wybranym prefiksem metrycznym i jednostk\u0105 czasu pochodnej." + } + }, + "options": { + "data": { + "name": "Nazwa", + "round": "Precyzja", + "source": "Sensor wej\u015bciowy", + "time_window": "Okno czasowe", + "unit_prefix": "Prefiks metryczny", + "unit_time": "Jednostka czasu" + }, + "data_description": { + "round": "Kontroluje liczb\u0119 cyfr dziesi\u0119tnych w danych wyj\u015bciowych.", + "time_window": "Je\u015bli jest ustawiona, warto\u015b\u0107 sensora jest wa\u017con\u0105 w czasie \u015bredni\u0105 ruchom\u0105 pochodnych w tym oknie.", + "unit_prefix": "Wynik b\u0119dzie skalowany zgodnie z wybranym prefiksem metrycznym i jednostk\u0105 czasu pochodnej." + }, + "description": "Tworzy sensor, kt\u00f3ry szacuje pochodn\u0105 sensora." + } + } + }, + "title": "Sensor pochodnej" +} \ No newline at end of file diff --git a/homeassistant/components/derivative/translations/pt-BR.json b/homeassistant/components/derivative/translations/pt-BR.json new file mode 100644 index 00000000000..4d29a3970ee --- /dev/null +++ b/homeassistant/components/derivative/translations/pt-BR.json @@ -0,0 +1,59 @@ +{ + "config": { + "step": { + "user": { + "data": { + "name": "Nome", + "round": "Precis\u00e3o", + "source": "Sensor de entrada", + "time_window": "Janela do tempo", + "unit_prefix": "Prefixo da m\u00e9trica", + "unit_time": "Unidade de tempo" + }, + "data_description": { + "round": "Controla o n\u00famero de d\u00edgitos decimais na sa\u00edda.", + "time_window": "Se definido, o valor do sensor \u00e9 uma m\u00e9dia m\u00f3vel ponderada no tempo das derivadas dentro desta janela.", + "unit_prefix": "A sa\u00edda ser\u00e1 dimensionada de acordo com o prefixo m\u00e9trico selecionado e a unidade de tempo da derivada." + }, + "description": "Crie um sensor que estime a derivada de um sensor.", + "title": "Adicionar sensor Derivative" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "name": "Nome", + "round": "Precis\u00e3o", + "source": "Sensor de entrada", + "time_window": "Janela do tempo", + "unit_prefix": "Prefixo da m\u00e9trica", + "unit_time": "Unidade de tempo" + }, + "data_description": { + "round": "Controla o n\u00famero de d\u00edgitos decimais na sa\u00edda.", + "time_window": "Se definido, o valor do sensor \u00e9 uma m\u00e9dia m\u00f3vel ponderada no tempo das derivadas dentro desta janela.", + "unit_prefix": "A sa\u00edda ser\u00e1 dimensionada de acordo com o prefixo m\u00e9trico selecionado e a unidade de tempo da derivada.." + } + }, + "options": { + "data": { + "name": "Nome", + "round": "Precis\u00e3o", + "source": "Sensor de entrada", + "time_window": "Janela do tempo", + "unit_prefix": "Prefixo da m\u00e9trica", + "unit_time": "Unidade de tempo" + }, + "data_description": { + "round": "Controla o n\u00famero de d\u00edgitos decimais na sa\u00edda.", + "time_window": "Se definido, o valor do sensor \u00e9 uma m\u00e9dia m\u00f3vel ponderada no tempo das derivadas dentro desta janela.", + "unit_prefix": "A sa\u00edda ser\u00e1 dimensionada de acordo com o prefixo m\u00e9trico selecionado e a unidade de tempo da derivada.." + }, + "description": "Crie um sensor que estime a derivada de um sensor." + } + } + }, + "title": "Sensor derivativo" +} \ No newline at end of file diff --git a/homeassistant/components/derivative/translations/ru.json b/homeassistant/components/derivative/translations/ru.json new file mode 100644 index 00000000000..d7c62f070e1 --- /dev/null +++ b/homeassistant/components/derivative/translations/ru.json @@ -0,0 +1,53 @@ +{ + "config": { + "step": { + "user": { + "data": { + "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", + "round": "\u041e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435", + "source": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0441\u0435\u043d\u0441\u043e\u0440", + "time_window": "\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u043e\u043a\u043d\u043e", + "unit_prefix": "\u041f\u0440\u0435\u0444\u0438\u043a\u0441 \u043c\u0435\u0442\u0440\u0438\u043a\u0438", + "unit_time": "\u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438" + }, + "data_description": { + "round": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u043a\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u044f\u0442\u043e\u0439." + }, + "title": "\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u0430\u044f" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", + "round": "\u041e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435", + "source": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0441\u0435\u043d\u0441\u043e\u0440", + "time_window": "\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u043e\u043a\u043d\u043e", + "unit_prefix": "\u041f\u0440\u0435\u0444\u0438\u043a\u0441 \u043c\u0435\u0442\u0440\u0438\u043a\u0438", + "unit_time": "\u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438" + }, + "data_description": { + "round": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u043a\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u044f\u0442\u043e\u0439.", + "unit_prefix": "." + } + }, + "options": { + "data": { + "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", + "round": "\u041e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435", + "source": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0441\u0435\u043d\u0441\u043e\u0440", + "time_window": "\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u043e\u043a\u043d\u043e", + "unit_prefix": "\u041f\u0440\u0435\u0444\u0438\u043a\u0441 \u043c\u0435\u0442\u0440\u0438\u043a\u0438", + "unit_time": "\u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438" + }, + "data_description": { + "round": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u043a\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u044f\u0442\u043e\u0439.", + "unit_prefix": "." + } + } + } + }, + "title": "\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u0430\u044f" +} \ No newline at end of file diff --git a/homeassistant/components/derivative/translations/sv.json b/homeassistant/components/derivative/translations/sv.json new file mode 100644 index 00000000000..66dcd34b1d7 --- /dev/null +++ b/homeassistant/components/derivative/translations/sv.json @@ -0,0 +1,12 @@ +{ + "options": { + "step": { + "init": { + "data": { + "name": "Namn", + "round": "Precision" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/derivative/translations/tr.json b/homeassistant/components/derivative/translations/tr.json new file mode 100644 index 00000000000..68016c74372 --- /dev/null +++ b/homeassistant/components/derivative/translations/tr.json @@ -0,0 +1,59 @@ +{ + "config": { + "step": { + "user": { + "data": { + "name": "Ad", + "round": "Hassas", + "source": "Giri\u015f sens\u00f6r\u00fc", + "time_window": "Zaman penceresi", + "unit_prefix": "Metrik \u00f6neki", + "unit_time": "Zaman birimi" + }, + "data_description": { + "round": "\u00c7\u0131kt\u0131daki ondal\u0131k basamak say\u0131s\u0131n\u0131 kontrol eder.", + "time_window": "Ayarlan\u0131rsa, sens\u00f6r\u00fcn de\u011feri, bu penceredeki t\u00fcrevlerin zaman a\u011f\u0131rl\u0131kl\u0131 hareketli ortalamas\u0131d\u0131r.", + "unit_prefix": "\u00c7\u0131kt\u0131, t\u00fcrevin se\u00e7ilen metrik \u00f6nekine ve zaman birimine g\u00f6re \u00f6l\u00e7eklenecektir." + }, + "description": "Bir sens\u00f6r\u00fcn t\u00fcrevini tahmin eden bir sens\u00f6r olu\u015fturun.", + "title": "T\u00fcrev sens\u00f6r\u00fc ekle" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "name": "Ad", + "round": "Hassas", + "source": "Giri\u015f sens\u00f6r\u00fc", + "time_window": "Zaman penceresi", + "unit_prefix": "Metrik \u00f6neki", + "unit_time": "Zaman birimi" + }, + "data_description": { + "round": "\u00c7\u0131kt\u0131daki ondal\u0131k basamak say\u0131s\u0131n\u0131 kontrol eder.", + "time_window": "Ayarlan\u0131rsa, sens\u00f6r\u00fcn de\u011feri, bu penceredeki t\u00fcrevlerin zaman a\u011f\u0131rl\u0131kl\u0131 hareketli ortalamas\u0131d\u0131r.", + "unit_prefix": "\u00c7\u0131kt\u0131, t\u00fcrevin se\u00e7ilen metrik \u00f6nekine ve zaman birimine g\u00f6re \u00f6l\u00e7eklenecektir.." + } + }, + "options": { + "data": { + "name": "Ad", + "round": "Hassas", + "source": "Giri\u015f sens\u00f6r\u00fc", + "time_window": "Zaman penceresi", + "unit_prefix": "Metrik \u00f6neki", + "unit_time": "Zaman birimi" + }, + "data_description": { + "round": "\u00c7\u0131kt\u0131daki ondal\u0131k basamak say\u0131s\u0131n\u0131 kontrol eder.", + "time_window": "Ayarlan\u0131rsa, sens\u00f6r\u00fcn de\u011feri, bu penceredeki t\u00fcrevlerin zaman a\u011f\u0131rl\u0131kl\u0131 hareketli ortalamas\u0131d\u0131r.", + "unit_prefix": "\u00c7\u0131kt\u0131, t\u00fcrevin se\u00e7ilen metrik \u00f6nekine ve zaman birimine g\u00f6re \u00f6l\u00e7eklenecektir.." + }, + "description": "Bir sens\u00f6r\u00fcn t\u00fcrevini tahmin eden bir sens\u00f6r olu\u015fturun." + } + } + }, + "title": "T\u00fcrev sens\u00f6r\u00fc" +} \ No newline at end of file diff --git a/homeassistant/components/derivative/translations/zh-Hans.json b/homeassistant/components/derivative/translations/zh-Hans.json new file mode 100644 index 00000000000..689f057dec0 --- /dev/null +++ b/homeassistant/components/derivative/translations/zh-Hans.json @@ -0,0 +1,59 @@ +{ + "config": { + "step": { + "user": { + "data": { + "name": "\u540d\u79f0", + "round": "\u7cbe\u5ea6", + "source": "\u8f93\u5165\u4f20\u611f\u5668", + "time_window": "\u65f6\u95f4\u7a97\u53e3", + "unit_prefix": "\u5355\u4f4d\u524d\u7f00", + "unit_time": "\u65f6\u95f4\u5355\u4f4d" + }, + "data_description": { + "round": "\u63a7\u5236\u8f93\u51fa\u7684\u5c0f\u6570\u4f4d\u6570\u3002", + "time_window": "\u5982\u679c\u8bbe\u7f6e\uff0c\u4f20\u611f\u5668\u5c06\u8f93\u51fa\u6b64\u65f6\u95f4\u7a97\u53e3\u5185\u7684\u53d8\u5316\u7387\u6309\u7167\u201c\u65f6\u95f4\u52a0\u6743\u79fb\u52a8\u5e73\u5747\u6cd5\u201d\u5904\u7406\u540e\u7684\u503c\u3002", + "unit_prefix": "\u8f93\u51fa\u503c\u5c06\u6839\u636e\u6240\u9009\u7684\u5355\u4f4d\u524d\u7f00\u548c\u65f6\u95f4\u5355\u4f4d\u8fdb\u884c\u7f29\u653e\u3002" + }, + "description": "\u521b\u5efa\u4f20\u611f\u5668\u6765\u4f30\u7b97\u53e6\u4e00\u4e2a\u4f20\u611f\u5668\u7684\u53d8\u5316\u7387\u3002", + "title": "\u6dfb\u52a0\u53d8\u5316\u7387\uff08\u5bfc\u6570\uff09\u4f20\u611f\u5668" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "name": "\u540d\u79f0", + "round": "\u7cbe\u5ea6", + "source": "\u8f93\u5165\u4f20\u611f\u5668", + "time_window": "\u65f6\u95f4\u7a97\u53e3", + "unit_prefix": "\u5355\u4f4d\u524d\u7f00", + "unit_time": "\u65f6\u95f4\u5355\u4f4d" + }, + "data_description": { + "round": "\u63a7\u5236\u8f93\u51fa\u7684\u5c0f\u6570\u4f4d\u6570\u3002", + "time_window": "\u5982\u679c\u8bbe\u7f6e\uff0c\u4f20\u611f\u5668\u5c06\u8f93\u51fa\u6b64\u65f6\u95f4\u7a97\u53e3\u5185\u7684\u53d8\u5316\u7387\u6309\u7167\u201c\u65f6\u95f4\u52a0\u6743\u79fb\u52a8\u5e73\u5747\u6cd5\u201d\u5904\u7406\u540e\u7684\u503c\u3002", + "unit_prefix": "\u8f93\u51fa\u503c\u5c06\u6839\u636e\u6240\u9009\u7684\u5355\u4f4d\u524d\u7f00\u548c\u65f6\u95f4\u5355\u4f4d\u8fdb\u884c\u7f29\u653e\u3002" + } + }, + "options": { + "data": { + "name": "\u540d\u79f0", + "round": "\u7cbe\u5ea6", + "source": "\u8f93\u5165\u4f20\u611f\u5668", + "time_window": "\u65f6\u95f4\u7a97\u53e3", + "unit_prefix": "\u5355\u4f4d\u524d\u7f00", + "unit_time": "\u65f6\u95f4\u5355\u4f4d" + }, + "data_description": { + "round": "\u63a7\u5236\u8f93\u51fa\u7684\u5c0f\u6570\u4f4d\u6570\u3002", + "time_window": "\u5982\u679c\u8bbe\u7f6e\uff0c\u4f20\u611f\u5668\u5c06\u8f93\u51fa\u6b64\u65f6\u95f4\u7a97\u53e3\u5185\u7684\u53d8\u5316\u7387\u6309\u7167\u201c\u65f6\u95f4\u52a0\u6743\u79fb\u52a8\u5e73\u5747\u6cd5\u201d\u5904\u7406\u540e\u7684\u503c\u3002", + "unit_prefix": "\u8f93\u51fa\u503c\u5c06\u6839\u636e\u6240\u9009\u7684\u5355\u4f4d\u524d\u7f00\u548c\u65f6\u95f4\u5355\u4f4d\u8fdb\u884c\u7f29\u653e\u3002" + }, + "description": "\u521b\u5efa\u4f20\u611f\u5668\u6765\u4f30\u7b97\u53e6\u4e00\u4e2a\u4f20\u611f\u5668\u7684\u53d8\u5316\u7387\u3002" + } + } + }, + "title": "\u53d8\u5316\u7387\u4f20\u611f\u5668" +} \ No newline at end of file diff --git a/homeassistant/components/derivative/translations/zh-Hant.json b/homeassistant/components/derivative/translations/zh-Hant.json new file mode 100644 index 00000000000..3c100df8034 --- /dev/null +++ b/homeassistant/components/derivative/translations/zh-Hant.json @@ -0,0 +1,59 @@ +{ + "config": { + "step": { + "user": { + "data": { + "name": "\u540d\u7a31", + "round": "\u6e96\u78ba\u5ea6", + "source": "\u8f38\u5165\u611f\u6e2c\u5668", + "time_window": "\u6642\u9593\u8996\u7a97", + "unit_prefix": "\u516c\u5236\u524d\u7db4", + "unit_time": "\u6642\u9593\u55ae\u4f4d" + }, + "data_description": { + "round": "\u63a7\u5236\u8f38\u51fa\u4e2d\u7684\u5c0f\u6578\u4f4d\u6578\u3002", + "time_window": "\u8a2d\u5b9a\u5f8c\u3001\u611f\u6e2c\u5668\u6578\u503c\u5c07\u70ba\u8996\u7a97\u5167\u5c0e\u6578\u7684\u6642\u9593\u52a0\u6b0a\u52a0\u6b0a\u79fb\u52d5\u5e73\u5747\u503c\u3002", + "unit_prefix": "\u8f38\u51fa\u5c07\u53d7\u6240\u9078\u64c7\u516c\u5236\u524d\u7db4\u53ca\u5c0e\u6578\u6642\u9593\u55ae\u4f4d\u800c\u8b8a\u5316\u3002" + }, + "description": "\u65b0\u589e\u9810\u4f30\u611f\u6e2c\u5668\u5c0e\u6578\u4e4b\u611f\u6e2c\u5668\u3002", + "title": "\u65b0\u589e\u5c0e\u6578\u611f\u6e2c\u5668" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "name": "\u540d\u7a31", + "round": "\u6e96\u78ba\u5ea6", + "source": "\u8f38\u5165\u611f\u6e2c\u5668", + "time_window": "\u6642\u9593\u8996\u7a97", + "unit_prefix": "\u516c\u5236\u524d\u7db4", + "unit_time": "\u6642\u9593\u55ae\u4f4d" + }, + "data_description": { + "round": "\u63a7\u5236\u8f38\u51fa\u4e2d\u7684\u5c0f\u6578\u4f4d\u6578\u3002", + "time_window": "\u8a2d\u5b9a\u5f8c\u3001\u611f\u6e2c\u5668\u6578\u503c\u5c07\u70ba\u8996\u7a97\u5167\u5c0e\u6578\u7684\u6642\u9593\u52a0\u6b0a\u52a0\u6b0a\u79fb\u52d5\u5e73\u5747\u503c\u3002", + "unit_prefix": "\u8f38\u51fa\u5c07\u53d7\u6240\u9078\u64c7\u516c\u5236\u524d\u7db4\u53ca\u5c0e\u6578\u6642\u9593\u55ae\u4f4d\u800c\u8b8a\u5316\u3002." + } + }, + "options": { + "data": { + "name": "\u540d\u7a31", + "round": "\u6e96\u78ba\u5ea6", + "source": "\u8f38\u5165\u611f\u6e2c\u5668", + "time_window": "\u6642\u9593\u8996\u7a97", + "unit_prefix": "\u516c\u5236\u524d\u7db4", + "unit_time": "\u6642\u9593\u55ae\u4f4d" + }, + "data_description": { + "round": "\u63a7\u5236\u8f38\u51fa\u4e2d\u7684\u5c0f\u6578\u4f4d\u6578\u3002", + "time_window": "\u8a2d\u5b9a\u5f8c\u3001\u611f\u6e2c\u5668\u6578\u503c\u5c07\u70ba\u8996\u7a97\u5167\u5c0e\u6578\u7684\u6642\u9593\u52a0\u6b0a\u52a0\u6b0a\u79fb\u52d5\u5e73\u5747\u503c\u3002", + "unit_prefix": "\u8f38\u51fa\u5c07\u53d7\u6240\u9078\u64c7\u516c\u5236\u524d\u7db4\u53ca\u5c0e\u6578\u6642\u9593\u55ae\u4f4d\u800c\u8b8a\u5316\u3002" + }, + "description": "\u65b0\u589e\u9810\u4f30\u611f\u6e2c\u5668\u5c0e\u6578\u4e4b\u611f\u6e2c\u5668\u3002" + } + } + }, + "title": "\u5c0e\u6578\u611f\u6e2c\u5668" +} \ No newline at end of file diff --git a/homeassistant/components/directv/translations/it.json b/homeassistant/components/directv/translations/it.json index 9fb0932c342..3653e3876c2 100644 --- a/homeassistant/components/directv/translations/it.json +++ b/homeassistant/components/directv/translations/it.json @@ -11,8 +11,8 @@ "step": { "ssdp_confirm": { "data": { - "one": "Pi\u00f9", - "other": "Altri" + "one": "Vuoto", + "other": "Vuoti" }, "description": "Vuoi impostare {name} ?" }, diff --git a/homeassistant/components/discord/translations/bg.json b/homeassistant/components/discord/translations/bg.json new file mode 100644 index 00000000000..00faba1155f --- /dev/null +++ b/homeassistant/components/discord/translations/bg.json @@ -0,0 +1,13 @@ +{ + "config": { + "abort": { + "already_configured": "\u0423\u0441\u043b\u0443\u0433\u0430\u0442\u0430 \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0430", + "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0442\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0432\u0430\u043d\u0435 \u0431\u0435\u0448\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e" + }, + "error": { + "cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435", + "invalid_auth": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0432\u0430\u043d\u0435", + "unknown": "\u041d\u0435\u043e\u0447\u0430\u043a\u0432\u0430\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/discord/translations/ca.json b/homeassistant/components/discord/translations/ca.json new file mode 100644 index 00000000000..bd87ba1f8dc --- /dev/null +++ b/homeassistant/components/discord/translations/ca.json @@ -0,0 +1,27 @@ +{ + "config": { + "abort": { + "already_configured": "El servei ja est\u00e0 configurat", + "reauth_successful": "Re-autenticaci\u00f3 realitzada correctament" + }, + "error": { + "cannot_connect": "Ha fallat la connexi\u00f3", + "invalid_auth": "Autenticaci\u00f3 inv\u00e0lida", + "unknown": "Error inesperat" + }, + "step": { + "reauth_confirm": { + "data": { + "api_token": "Token d'API" + }, + "description": "Consulta la documentaci\u00f3 per obtenir la teva clau de bot de Discord. \n\n{url}" + }, + "user": { + "data": { + "api_token": "Token d'API" + }, + "description": "Consulta la documentaci\u00f3 per obtenir la teva clau de bot de Discord. \n\n{url}" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/discord/translations/de.json b/homeassistant/components/discord/translations/de.json new file mode 100644 index 00000000000..e4f745573c0 --- /dev/null +++ b/homeassistant/components/discord/translations/de.json @@ -0,0 +1,27 @@ +{ + "config": { + "abort": { + "already_configured": "Der Dienst ist bereits konfiguriert", + "reauth_successful": "Die erneute Authentifizierung war erfolgreich" + }, + "error": { + "cannot_connect": "Verbindung fehlgeschlagen", + "invalid_auth": "Ung\u00fcltige Authentifizierung", + "unknown": "Unerwarteter Fehler" + }, + "step": { + "reauth_confirm": { + "data": { + "api_token": "API-Token" + }, + "description": "Weitere Informationen zum Abrufen deines Discord-Bot-Schl\u00fcssels findest du in der Dokumentation. \n\n {url}" + }, + "user": { + "data": { + "api_token": "API-Token" + }, + "description": "Weitere Informationen zum Abrufen deines Discord-Bot-Schl\u00fcssels findest du in der Dokumentation. \n\n {url}" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/discord/translations/el.json b/homeassistant/components/discord/translations/el.json new file mode 100644 index 00000000000..a090d61d3c4 --- /dev/null +++ b/homeassistant/components/discord/translations/el.json @@ -0,0 +1,27 @@ +{ + "config": { + "abort": { + "already_configured": "\u0397 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af", + "reauth_successful": "\u039f \u03b5\u03ba \u03bd\u03ad\u03bf\u03c5 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03ae\u03c4\u03b1\u03bd \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03ae\u03c2" + }, + "error": { + "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", + "invalid_auth": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", + "unknown": "\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" + }, + "step": { + "reauth_confirm": { + "data": { + "api_token": "\u0394\u03b9\u03b1\u03ba\u03c1\u03b9\u03c4\u03b9\u03ba\u03cc API" + }, + "description": "\u0391\u03bd\u03b1\u03c4\u03c1\u03ad\u03be\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd \u03c4\u03b5\u03ba\u03bc\u03b7\u03c1\u03af\u03c9\u03c3\u03b7 \u03b3\u03b9\u03b1 \u03c4\u03b7 \u03bb\u03ae\u03c8\u03b7 \u03c4\u03bf\u03c5 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03bf\u03cd Discord bot. \n\n {url}" + }, + "user": { + "data": { + "api_token": "\u0394\u03b9\u03b1\u03ba\u03c1\u03b9\u03c4\u03b9\u03ba\u03cc API" + }, + "description": "\u0391\u03bd\u03b1\u03c4\u03c1\u03ad\u03be\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd \u03c4\u03b5\u03ba\u03bc\u03b7\u03c1\u03af\u03c9\u03c3\u03b7 \u03b3\u03b9\u03b1 \u03c4\u03b7 \u03bb\u03ae\u03c8\u03b7 \u03c4\u03bf\u03c5 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03bf\u03cd Discord bot. \n\n {url}" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/discord/translations/en.json b/homeassistant/components/discord/translations/en.json index 77e16e9312d..ee72905b4d3 100644 --- a/homeassistant/components/discord/translations/en.json +++ b/homeassistant/components/discord/translations/en.json @@ -10,13 +10,13 @@ "unknown": "Unexpected error" }, "step": { - "user": { + "reauth_confirm": { "data": { "api_token": "API Token" }, "description": "Refer to the documentation on getting your Discord bot key.\n\n{url}" }, - "reauth_confirm": { + "user": { "data": { "api_token": "API Token" }, diff --git a/homeassistant/components/discord/translations/et.json b/homeassistant/components/discord/translations/et.json new file mode 100644 index 00000000000..ba69a715841 --- /dev/null +++ b/homeassistant/components/discord/translations/et.json @@ -0,0 +1,27 @@ +{ + "config": { + "abort": { + "already_configured": "Teenus on juba h\u00e4\u00e4lestatud", + "reauth_successful": "Taastuvastamine \u00f5nnestus" + }, + "error": { + "cannot_connect": "\u00dchendamine nurjus", + "invalid_auth": "Tuvastamine nurjus", + "unknown": "Ootamatu t\u00f5rge" + }, + "step": { + "reauth_confirm": { + "data": { + "api_token": "API v\u00f5ti" + }, + "description": "Vaata oma Discordi roboti v\u00f5tme hankimise dokumentatsiooni. \n\n {url}" + }, + "user": { + "data": { + "api_token": "API v\u00f5ti" + }, + "description": "Vaata oma Discordi roboti v\u00f5tme hankimise dokumentatsiooni. \n\n {url}" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/discord/translations/fr.json b/homeassistant/components/discord/translations/fr.json new file mode 100644 index 00000000000..3ffac86c505 --- /dev/null +++ b/homeassistant/components/discord/translations/fr.json @@ -0,0 +1,27 @@ +{ + "config": { + "abort": { + "already_configured": "Le service est d\u00e9j\u00e0 configur\u00e9", + "reauth_successful": "La r\u00e9-authentification a r\u00e9ussi" + }, + "error": { + "cannot_connect": "\u00c9chec de connexion", + "invalid_auth": "Authentification non valide", + "unknown": "Erreur inattendue" + }, + "step": { + "reauth_confirm": { + "data": { + "api_token": "Jeton d'API" + }, + "description": "Consultez la documentation pour obtenir votre cl\u00e9 de bot Discord.\n\n{url}" + }, + "user": { + "data": { + "api_token": "Jeton d'API" + }, + "description": "Consultez la documentation pour obtenir votre cl\u00e9 de bot Discord.\n\n{url}" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/discord/translations/he.json b/homeassistant/components/discord/translations/he.json new file mode 100644 index 00000000000..d23c46a99bc --- /dev/null +++ b/homeassistant/components/discord/translations/he.json @@ -0,0 +1,25 @@ +{ + "config": { + "abort": { + "already_configured": "\u05e9\u05d9\u05e8\u05d5\u05ea \u05d6\u05d4 \u05db\u05d1\u05e8 \u05de\u05d5\u05d2\u05d3\u05e8", + "reauth_successful": "\u05d4\u05d0\u05d9\u05de\u05d5\u05ea \u05de\u05d7\u05d3\u05e9 \u05d4\u05e6\u05dc\u05d9\u05d7" + }, + "error": { + "cannot_connect": "\u05d4\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05e0\u05db\u05e9\u05dc\u05d4", + "invalid_auth": "\u05d0\u05d9\u05de\u05d5\u05ea \u05dc\u05d0 \u05d7\u05d5\u05e7\u05d9", + "unknown": "\u05e9\u05d2\u05d9\u05d0\u05d4 \u05d1\u05dc\u05ea\u05d9 \u05e6\u05e4\u05d5\u05d9\u05d4" + }, + "step": { + "reauth_confirm": { + "data": { + "api_token": "\u05d0\u05e1\u05d9\u05de\u05d5\u05df API" + } + }, + "user": { + "data": { + "api_token": "\u05d0\u05e1\u05d9\u05de\u05d5\u05df API" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/discord/translations/hu.json b/homeassistant/components/discord/translations/hu.json new file mode 100644 index 00000000000..bcbd8748808 --- /dev/null +++ b/homeassistant/components/discord/translations/hu.json @@ -0,0 +1,27 @@ +{ + "config": { + "abort": { + "already_configured": "A szolg\u00e1ltat\u00e1s m\u00e1r konfigur\u00e1lva van", + "reauth_successful": "Az \u00fajrahiteles\u00edt\u00e9s sikeres volt." + }, + "error": { + "cannot_connect": "Sikertelen csatlakoz\u00e1s", + "invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s", + "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" + }, + "step": { + "reauth_confirm": { + "data": { + "api_token": "API Token" + }, + "description": "Tekintse meg a Discord botkulcs beszerz\u00e9s\u00e9nek dokument\u00e1ci\u00f3j\u00e1t. \n\n {url}" + }, + "user": { + "data": { + "api_token": "API Token" + }, + "description": "Tekintse meg a Discord botkulcs beszerz\u00e9s\u00e9nek dokument\u00e1ci\u00f3j\u00e1t. \n\n {url}" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/discord/translations/id.json b/homeassistant/components/discord/translations/id.json new file mode 100644 index 00000000000..2e5d7d41f23 --- /dev/null +++ b/homeassistant/components/discord/translations/id.json @@ -0,0 +1,27 @@ +{ + "config": { + "abort": { + "already_configured": "Layanan sudah dikonfigurasi", + "reauth_successful": "Autentikasi ulang berhasil" + }, + "error": { + "cannot_connect": "Gagal terhubung", + "invalid_auth": "Autentikasi tidak valid", + "unknown": "Kesalahan yang tidak diharapkan" + }, + "step": { + "reauth_confirm": { + "data": { + "api_token": "Token API" + }, + "description": "Lihat dokumentasi tentang mendapatkan kunci bot Discord Anda. \n\n {url}" + }, + "user": { + "data": { + "api_token": "Token API" + }, + "description": "Lihat dokumentasi tentang mendapatkan kunci bot Discord Anda. \n\n {url}" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/discord/translations/it.json b/homeassistant/components/discord/translations/it.json new file mode 100644 index 00000000000..c8be2cb0ed1 --- /dev/null +++ b/homeassistant/components/discord/translations/it.json @@ -0,0 +1,27 @@ +{ + "config": { + "abort": { + "already_configured": "Il servizio \u00e8 gi\u00e0 configurato", + "reauth_successful": "La nuova autenticazione \u00e8 stata eseguita correttamente" + }, + "error": { + "cannot_connect": "Impossibile connettersi", + "invalid_auth": "Autenticazione non valida", + "unknown": "Errore imprevisto" + }, + "step": { + "reauth_confirm": { + "data": { + "api_token": "Token API" + }, + "description": "Fai riferimento alla documentazione su come ottenere la chiave del bot Discord. \n\n {url}" + }, + "user": { + "data": { + "api_token": "Token API" + }, + "description": "Fai riferimento alla documentazione su come ottenere la chiave del bot Discord. \n\n {url}" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/discord/translations/ja.json b/homeassistant/components/discord/translations/ja.json new file mode 100644 index 00000000000..3d96ea99890 --- /dev/null +++ b/homeassistant/components/discord/translations/ja.json @@ -0,0 +1,27 @@ +{ + "config": { + "abort": { + "already_configured": "\u30b5\u30fc\u30d3\u30b9\u306f\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059", + "reauth_successful": "\u518d\u8a8d\u8a3c\u306b\u6210\u529f\u3057\u307e\u3057\u305f" + }, + "error": { + "cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f", + "invalid_auth": "\u7121\u52b9\u306a\u8a8d\u8a3c", + "unknown": "\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc" + }, + "step": { + "reauth_confirm": { + "data": { + "api_token": "API\u30c8\u30fc\u30af\u30f3" + }, + "description": "Discord\u30dc\u30c3\u30c8\u30ad\u30fc\u306e\u53d6\u5f97\u306b\u3064\u3044\u3066\u306f\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\n{url}" + }, + "user": { + "data": { + "api_token": "API\u30c8\u30fc\u30af\u30f3" + }, + "description": "Discord\u30dc\u30c3\u30c8\u30ad\u30fc\u306e\u53d6\u5f97\u306b\u3064\u3044\u3066\u306f\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\n{url}" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/discord/translations/nl.json b/homeassistant/components/discord/translations/nl.json new file mode 100644 index 00000000000..55fb894031d --- /dev/null +++ b/homeassistant/components/discord/translations/nl.json @@ -0,0 +1,27 @@ +{ + "config": { + "abort": { + "already_configured": "Service is al geconfigureerd", + "reauth_successful": "Herauthenticatie was succesvol" + }, + "error": { + "cannot_connect": "Kan geen verbinding maken", + "invalid_auth": "Ongeldige authenticatie", + "unknown": "Onverwachte fout" + }, + "step": { + "reauth_confirm": { + "data": { + "api_token": "API-token" + }, + "description": "Raadpleeg de documentatie over het verkrijgen van uw Discord bot key.\n\n{url}" + }, + "user": { + "data": { + "api_token": "API-token" + }, + "description": "Raadpleeg de documentatie over het verkrijgen van uw Discord bot key.\n\n{url}" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/discord/translations/no.json b/homeassistant/components/discord/translations/no.json new file mode 100644 index 00000000000..e8a36e5c794 --- /dev/null +++ b/homeassistant/components/discord/translations/no.json @@ -0,0 +1,27 @@ +{ + "config": { + "abort": { + "already_configured": "Tjenesten er allerede konfigurert", + "reauth_successful": "Godkjenning p\u00e5 nytt var vellykket" + }, + "error": { + "cannot_connect": "Tilkobling mislyktes", + "invalid_auth": "Ugyldig godkjenning", + "unknown": "Uventet feil" + }, + "step": { + "reauth_confirm": { + "data": { + "api_token": "API-token" + }, + "description": "Se dokumentasjonen for \u00e5 f\u00e5 din Discord-botn\u00f8kkel. \n\n {url}" + }, + "user": { + "data": { + "api_token": "API-token" + }, + "description": "Se dokumentasjonen for \u00e5 f\u00e5 din Discord-botn\u00f8kkel. \n\n {url}" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/discord/translations/pl.json b/homeassistant/components/discord/translations/pl.json new file mode 100644 index 00000000000..96fb45d1bc5 --- /dev/null +++ b/homeassistant/components/discord/translations/pl.json @@ -0,0 +1,27 @@ +{ + "config": { + "abort": { + "already_configured": "Us\u0142uga jest ju\u017c skonfigurowana", + "reauth_successful": "Ponowne uwierzytelnienie powiod\u0142o si\u0119" + }, + "error": { + "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", + "invalid_auth": "Niepoprawne uwierzytelnienie", + "unknown": "Nieoczekiwany b\u0142\u0105d" + }, + "step": { + "reauth_confirm": { + "data": { + "api_token": "Token API" + }, + "description": "Zapoznaj si\u0119 z dokumentacj\u0105 dotycz\u0105c\u0105 uzyskiwania klucza bota Discord. \n\n{url}" + }, + "user": { + "data": { + "api_token": "Token API" + }, + "description": "Zapoznaj si\u0119 z dokumentacj\u0105 dotycz\u0105c\u0105 uzyskiwania klucza bota Discord. \n\n{url}" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/discord/translations/pt-BR.json b/homeassistant/components/discord/translations/pt-BR.json new file mode 100644 index 00000000000..cedd60f6fb6 --- /dev/null +++ b/homeassistant/components/discord/translations/pt-BR.json @@ -0,0 +1,27 @@ +{ + "config": { + "abort": { + "already_configured": "O servi\u00e7o j\u00e1 est\u00e1 configurado", + "reauth_successful": "A reautentica\u00e7\u00e3o foi bem-sucedida" + }, + "error": { + "cannot_connect": "Falha ao conectar", + "invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida", + "unknown": "Erro inesperado" + }, + "step": { + "reauth_confirm": { + "data": { + "api_token": "Token da API" + }, + "description": "Consulte a documenta\u00e7\u00e3o sobre como obter sua chave de bot do Discord. \n\n {url}" + }, + "user": { + "data": { + "api_token": "Token da API" + }, + "description": "Consulte a documenta\u00e7\u00e3o sobre como obter sua chave de bot do Discord. \n\n {url}" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/discord/translations/ru.json b/homeassistant/components/discord/translations/ru.json new file mode 100644 index 00000000000..19be65ea874 --- /dev/null +++ b/homeassistant/components/discord/translations/ru.json @@ -0,0 +1,27 @@ +{ + "config": { + "abort": { + "already_configured": "\u042d\u0442\u0430 \u0441\u043b\u0443\u0436\u0431\u0430 \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 Home Assistant.", + "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e." + }, + "error": { + "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", + "invalid_auth": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.", + "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." + }, + "step": { + "reauth_confirm": { + "data": { + "api_token": "\u0422\u043e\u043a\u0435\u043d API" + }, + "description": "\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439 \u043f\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044e \u043a\u043b\u044e\u0447\u0430 \u0431\u043e\u0442\u0430 Discord. \n\n{url}" + }, + "user": { + "data": { + "api_token": "\u0422\u043e\u043a\u0435\u043d API" + }, + "description": "\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439 \u043f\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044e \u043a\u043b\u044e\u0447\u0430 \u0431\u043e\u0442\u0430 Discord. \n\n{url}" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/discord/translations/tr.json b/homeassistant/components/discord/translations/tr.json new file mode 100644 index 00000000000..2bce7e54907 --- /dev/null +++ b/homeassistant/components/discord/translations/tr.json @@ -0,0 +1,27 @@ +{ + "config": { + "abort": { + "already_configured": "Hizmet zaten yap\u0131land\u0131r\u0131lm\u0131\u015f", + "reauth_successful": "Yeniden kimlik do\u011frulama ba\u015far\u0131l\u0131 oldu" + }, + "error": { + "cannot_connect": "Ba\u011flanma hatas\u0131", + "invalid_auth": "Ge\u00e7ersiz kimlik do\u011frulama", + "unknown": "Beklenmeyen hata" + }, + "step": { + "reauth_confirm": { + "data": { + "api_token": "API Anahtar\u0131" + }, + "description": "Discord bot anahtar\u0131n\u0131z\u0131 almayla ilgili belgelere bak\u0131n. \n\n {url}" + }, + "user": { + "data": { + "api_token": "API Anahtar\u0131" + }, + "description": "Discord bot anahtar\u0131n\u0131z\u0131 almayla ilgili belgelere bak\u0131n. \n\n {url}" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/discord/translations/zh-Hant.json b/homeassistant/components/discord/translations/zh-Hant.json new file mode 100644 index 00000000000..5f0f4500903 --- /dev/null +++ b/homeassistant/components/discord/translations/zh-Hant.json @@ -0,0 +1,27 @@ +{ + "config": { + "abort": { + "already_configured": "\u670d\u52d9\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", + "reauth_successful": "\u91cd\u65b0\u8a8d\u8b49\u6210\u529f" + }, + "error": { + "cannot_connect": "\u9023\u7dda\u5931\u6557", + "invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548", + "unknown": "\u672a\u9810\u671f\u932f\u8aa4" + }, + "step": { + "reauth_confirm": { + "data": { + "api_token": "API \u6b0a\u6756" + }, + "description": "\u8acb\u53c3\u8003\u6587\u4ef6\u4ee5\u53d6\u5f97 Discord \u6a5f\u5668\u4eba\u91d1\u9470\u3002\n\n{url}" + }, + "user": { + "data": { + "api_token": "API \u6b0a\u6756" + }, + "description": "\u8acb\u53c3\u8003\u6587\u4ef6\u4ee5\u53d6\u5f97 Discord \u6a5f\u5668\u4eba\u91d1\u9470\u3002\n\n{url}" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/dlna_dmr/translations/hu.json b/homeassistant/components/dlna_dmr/translations/hu.json index 6596e71e05e..5e2ba148602 100644 --- a/homeassistant/components/dlna_dmr/translations/hu.json +++ b/homeassistant/components/dlna_dmr/translations/hu.json @@ -21,7 +21,7 @@ "description": "Kezd\u0151dhet a be\u00e1ll\u00edt\u00e1s?" }, "import_turn_on": { - "description": "Kapcsolja be az eszk\u00f6zt, \u00e9s kattintson a K\u00fcld\u00e9s gombra a migr\u00e1ci\u00f3 folytat\u00e1s\u00e1hoz" + "description": "Kapcsolja be az eszk\u00f6zt, majd folytassa a migr\u00e1ci\u00f3t" }, "manual": { "data": { @@ -35,7 +35,7 @@ "host": "C\u00edm", "url": "URL" }, - "description": "V\u00e1lassz egy be\u00e1ll\u00edtand\u00f3 eszk\u00f6zt vagy adj meg egy URL-t", + "description": "V\u00e1lassza ki a konfigur\u00e1lni k\u00edv\u00e1nt eszk\u00f6zt, vagy hagyja \u00fcresen az URL-c\u00edm k\u00e9zi megad\u00e1s\u00e1hoz", "title": "DLNA digit\u00e1lis m\u00e9dia renderel\u0151" } } diff --git a/homeassistant/components/dlna_dms/translations/cs.json b/homeassistant/components/dlna_dms/translations/cs.json new file mode 100644 index 00000000000..cfcad870880 --- /dev/null +++ b/homeassistant/components/dlna_dms/translations/cs.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "Za\u0159\u00edzen\u00ed je ji\u017e nastaveno", + "already_in_progress": "Konfigurace ji\u017e prob\u00edh\u00e1", + "no_devices_found": "V s\u00edti nebyla nalezena \u017e\u00e1dn\u00e1 za\u0159\u00edzen\u00ed" + }, + "flow_title": "{name}", + "step": { + "confirm": { + "description": "Chcete za\u010d\u00edt nastavovat?" + }, + "user": { + "data": { + "host": "Hostitel" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/dlna_dms/translations/hu.json b/homeassistant/components/dlna_dms/translations/hu.json index 8c645d42aa8..74ba47053a4 100644 --- a/homeassistant/components/dlna_dms/translations/hu.json +++ b/homeassistant/components/dlna_dms/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "bad_ssdp": "Az SSDP-adatok hi\u00e1nyosak", "no_devices_found": "Nem tal\u00e1lhat\u00f3 eszk\u00f6z a h\u00e1l\u00f3zaton", "not_dms": "A m\u00e9diaszerver eszk\u00f6z nem t\u00e1mogatott" diff --git a/homeassistant/components/doorbird/translations/ca.json b/homeassistant/components/doorbird/translations/ca.json index 880360234b1..0049709caa3 100644 --- a/homeassistant/components/doorbird/translations/ca.json +++ b/homeassistant/components/doorbird/translations/ca.json @@ -29,6 +29,9 @@ "data": { "events": "Llista d'esdeveniments separats per comes." }, + "data_description": { + "events": "Afegeix el/s noms del/s esdeveniment/s que vulguis seguir separats per comes. Despr\u00e9s d'introduir-los, utilitza l'aplicaci\u00f3 de DoorBird per assignar-los a un esdeveniment espec\u00edfic.\n\nExemple: algu_ha_premut_el_boto, moviment" + }, "description": "Afegeix el/s noms del/s esdeveniment/s que vulguis seguir separats per comes. Despr\u00e9s d'introduir-los, utilitza l'aplicaci\u00f3 de DoorBird per assignar-los a un esdeveniment espec\u00edfic. Consulta la documentaci\u00f3 a https://www.home-assistant.io/integrations/doorbird/#events.\nExemple: algu_ha_premut_el_boto, moviment_detectat" } } diff --git a/homeassistant/components/doorbird/translations/de.json b/homeassistant/components/doorbird/translations/de.json index 3f025e67386..7a60a3bf4ae 100644 --- a/homeassistant/components/doorbird/translations/de.json +++ b/homeassistant/components/doorbird/translations/de.json @@ -29,6 +29,9 @@ "data": { "events": "Durch Kommas getrennte Liste von Ereignissen." }, + "data_description": { + "events": "F\u00fcge f\u00fcr jedes Ereignis, das du verfolgen m\u00f6chtest, einen durch Komma getrennten Ereignisnamen hinzu. Nachdem du sie hier eingegeben hast, verwende die DoorBird-App, um sie einem bestimmten Ereignis zuzuordnen.\n\nBeispiel: jemand_drueckte_den_Knopf, bewegung" + }, "description": "F\u00fcge f\u00fcr jedes Ereignis, das du verfolgen m\u00f6chtest, einen durch Kommas getrennten Ereignisnamen hinzu. Nachdem du sie hier eingegeben hast, verwende die DoorBird-App, um sie einem bestimmten Ereignis zuzuweisen. Weitere Informationen findest du in der Dokumentation unter https://www.home-assistant.io/integrations/doorbird/#events. Beispiel: jemand_hat_den_knopf_gedr\u00fcckt, bewegung" } } diff --git a/homeassistant/components/doorbird/translations/el.json b/homeassistant/components/doorbird/translations/el.json index ffbf523e7d8..da06dc3e0be 100644 --- a/homeassistant/components/doorbird/translations/el.json +++ b/homeassistant/components/doorbird/translations/el.json @@ -29,6 +29,9 @@ "data": { "events": "\u039b\u03af\u03c3\u03c4\u03b1 \u03c3\u03c5\u03bc\u03b2\u03ac\u03bd\u03c4\u03c9\u03bd \u03b4\u03b9\u03b1\u03c7\u03c9\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03b7 \u03bc\u03b5 \u03ba\u03cc\u03bc\u03bc\u03b1." }, + "data_description": { + "events": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c3\u03c5\u03bc\u03b2\u03ac\u03bd\u03c4\u03bf\u03c2 \u03c0\u03bf\u03c5 \u03b4\u03b9\u03b1\u03c7\u03c9\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9 \u03bc\u03b5 \u03ba\u03cc\u03bc\u03bc\u03b1 \u03b3\u03b9\u03b1 \u03ba\u03ac\u03b8\u03b5 \u03c3\u03c5\u03bc\u03b2\u03ac\u03bd \u03c0\u03bf\u03c5 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c0\u03b1\u03c1\u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03ae\u03c3\u03b5\u03c4\u03b5. \u0391\u03c6\u03bf\u03cd \u03c4\u03b1 \u03ba\u03b1\u03c4\u03b1\u03c7\u03c9\u03c1\u03af\u03c3\u03b5\u03c4\u03b5 \u03b5\u03b4\u03ce, \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae DoorBird \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c4\u03b1 \u03b1\u03bd\u03c4\u03b9\u03c3\u03c4\u03bf\u03b9\u03c7\u03af\u03c3\u03b5\u03c4\u03b5 \u03c3\u03b5 \u03ad\u03bd\u03b1 \u03c3\u03c5\u03b3\u03ba\u03b5\u03ba\u03c1\u03b9\u03bc\u03ad\u03bd\u03bf \u03c3\u03c5\u03bc\u03b2\u03ac\u03bd.\n\n\u03a0\u03b1\u03c1\u03ac\u03b4\u03b5\u03b9\u03b3\u03bc\u03b1: somebody_pressed_the_button, motion" + }, "description": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c3\u03c5\u03bc\u03b2\u03ac\u03bd\u03c4\u03bf\u03c2 \u03c0\u03bf\u03c5 \u03b4\u03b9\u03b1\u03c7\u03c9\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9 \u03bc\u03b5 \u03ba\u03cc\u03bc\u03bc\u03b1 \u03b3\u03b9\u03b1 \u03ba\u03ac\u03b8\u03b5 \u03c3\u03c5\u03bc\u03b2\u03ac\u03bd \u03c0\u03bf\u03c5 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c0\u03b1\u03c1\u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03ae\u03c3\u03b5\u03c4\u03b5. \u0391\u03c6\u03bf\u03cd \u03c4\u03b1 \u03ba\u03b1\u03c4\u03b1\u03c7\u03c9\u03c1\u03af\u03c3\u03b5\u03c4\u03b5 \u03b5\u03b4\u03ce, \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae DoorBird \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c4\u03b1 \u03b1\u03bd\u03c4\u03b9\u03c3\u03c4\u03bf\u03b9\u03c7\u03af\u03c3\u03b5\u03c4\u03b5 \u03c3\u03b5 \u03ad\u03bd\u03b1 \u03c3\u03c5\u03b3\u03ba\u03b5\u03ba\u03c1\u03b9\u03bc\u03ad\u03bd\u03bf \u03c3\u03c5\u03bc\u03b2\u03ac\u03bd. \u0391\u03bd\u03b1\u03c4\u03c1\u03ad\u03be\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd \u03c4\u03b5\u03ba\u03bc\u03b7\u03c1\u03af\u03c9\u03c3\u03b7 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 https://www.home-assistant.io/integrations/doorbird/#events. \u03a0\u03b1\u03c1\u03ac\u03b4\u03b5\u03b9\u03b3\u03bc\u03b1: somebody_pressed_the_button, motion" } } diff --git a/homeassistant/components/doorbird/translations/en.json b/homeassistant/components/doorbird/translations/en.json index db1cea2d73f..ee005dfbfed 100644 --- a/homeassistant/components/doorbird/translations/en.json +++ b/homeassistant/components/doorbird/translations/en.json @@ -29,6 +29,9 @@ "data": { "events": "Comma separated list of events." }, + "data_description": { + "events": "Add an comma separated event name for each event you wish to track. After entering them here, use the DoorBird app to assign them to a specific event.\n\nExample: somebody_pressed_the_button, motion" + }, "description": "Add an comma separated event name for each event you wish to track. After entering them here, use the DoorBird app to assign them to a specific event. See the documentation at https://www.home-assistant.io/integrations/doorbird/#events. Example: somebody_pressed_the_button, motion" } } diff --git a/homeassistant/components/doorbird/translations/et.json b/homeassistant/components/doorbird/translations/et.json index 08b163c0ca2..f37d5d0244b 100644 --- a/homeassistant/components/doorbird/translations/et.json +++ b/homeassistant/components/doorbird/translations/et.json @@ -29,6 +29,9 @@ "data": { "events": "Komadega eraldatud s\u00fcndmuste loend." }, + "data_description": { + "events": "Lisa iga s\u00fcndmuse jaoks, mida soovid j\u00e4lgida, komaga eraldatud s\u00fcndmuse nimi. P\u00e4rast nende sisestamist siia kasuta DoorBirdi rakendust, et m\u00e4\u00e4rata need konkreetsele s\u00fcndmusele.\n\nN\u00e4ide: somebody_pressed_the_button, liikumine" + }, "description": "Lisa komaga eraldatud s\u00fcndmuse nimi igale j\u00e4lgitavale s\u00fcndmusele. P\u00e4rast nende sisestamist kasuta rakendust DoorBird, et siduda need konkreetse s\u00fcndmusega. Vaata dokumentatsiooni aadressil https://www.home-assistant.io/integrations/doorbird/#events. N\u00e4ide: somebody_pressed_the_button, motion" } } diff --git a/homeassistant/components/doorbird/translations/fr.json b/homeassistant/components/doorbird/translations/fr.json index 40569250e5f..b4819897366 100644 --- a/homeassistant/components/doorbird/translations/fr.json +++ b/homeassistant/components/doorbird/translations/fr.json @@ -29,6 +29,9 @@ "data": { "events": "Liste d'\u00e9v\u00e9nements s\u00e9par\u00e9s par des virgules." }, + "data_description": { + "events": "Ajoutez les noms des \u00e9v\u00e9nements que vous souhaitez suivre, s\u00e9par\u00e9s par des virgules. Apr\u00e8s les avoir saisis ici, utilisez l'application DoorBird pour les affecter \u00e0 un \u00e9v\u00e9nement sp\u00e9cifique.\n\nExemple\u00a0: somebody_pressed_the_button, motion" + }, "description": "Ajoutez un nom d'\u00e9v\u00e9nement s\u00e9par\u00e9 par des virgules pour chaque \u00e9v\u00e9nement que vous souhaitez suivre. Apr\u00e8s les avoir saisis ici, utilisez l'application DoorBird pour les affecter \u00e0 un \u00e9v\u00e9nement sp\u00e9cifique. Consultez la documentation sur https://www.home-assistant.io/integrations/doorbird/#events. Exemple: somebody_pressed_the_button, motion" } } diff --git a/homeassistant/components/doorbird/translations/hu.json b/homeassistant/components/doorbird/translations/hu.json index 48a124b4f17..51bbb0864dd 100644 --- a/homeassistant/components/doorbird/translations/hu.json +++ b/homeassistant/components/doorbird/translations/hu.json @@ -29,6 +29,9 @@ "data": { "events": "Vessz\u0151vel elv\u00e1lasztott esem\u00e9nyek list\u00e1ja." }, + "data_description": { + "events": "Adjon hozz\u00e1 egy vessz\u0151vel elv\u00e1lasztott esem\u00e9nynevet minden egyes esem\u00e9nyhez, amelyet nyomon k\u00edv\u00e1n k\u00f6vetni. Miut\u00e1n be\u00edrta \u0151ket ide, a DoorBird alkalmaz\u00e1ssal rendelje \u0151ket egy adott esem\u00e9nyhez.\n\nP\u00e9lda: valaki_megnyomta_a_gombot, motion" + }, "description": "Adjon hozz\u00e1 vessz\u0151vel elv\u00e1lasztott esem\u00e9nynevet minden k\u00f6vetni k\u00edv\u00e1nt esem\u00e9nyhez. Miut\u00e1n itt megadta \u0151ket, haszn\u00e1lja a DoorBird alkalmaz\u00e1st, hogy hozz\u00e1rendelje \u0151ket egy adott esem\u00e9nyhez. Tekintse meg a dokument\u00e1ci\u00f3t a https://www.home-assistant.io/integrations/doorbird/#events c\u00edmen. P\u00e9lda: valaki_pr\u00e9selt_gomb, mozg\u00e1s" } } diff --git a/homeassistant/components/doorbird/translations/id.json b/homeassistant/components/doorbird/translations/id.json index 60348ec26a1..c5d5733457d 100644 --- a/homeassistant/components/doorbird/translations/id.json +++ b/homeassistant/components/doorbird/translations/id.json @@ -29,6 +29,9 @@ "data": { "events": "Daftar event yang dipisahkan koma." }, + "data_description": { + "events": "Tambahkan nama event yang dipisahkan koma untuk setiap event yang ingin dilacak. Setelah memasukkannya di sini, gunakan aplikasi DoorBird untuk menetapkannya ke event tertentu.\n\nMisalnya: ada_yang_menekan_tombol, gerakan" + }, "description": "Tambahkan nama event yang dipisahkan koma untuk setiap event yang ingin dilacak. Setelah memasukkannya di sini, gunakan aplikasi DoorBird untuk menetapkannya ke event tertentu. Baca dokumentasi di https://www.home-assistant.io/integrations/doorbird/#events. Contoh: somebody_pressed_the_button, motion" } } diff --git a/homeassistant/components/doorbird/translations/it.json b/homeassistant/components/doorbird/translations/it.json index 83f1ab9c5eb..9864f100954 100644 --- a/homeassistant/components/doorbird/translations/it.json +++ b/homeassistant/components/doorbird/translations/it.json @@ -29,6 +29,9 @@ "data": { "events": "Elenco di eventi separati da virgole." }, + "data_description": { + "events": "Aggiungi un nome evento separato da virgole per ogni evento che desideri monitorare. Dopo averli inseriti qui, usa l'applicazione DoorBird per assegnarli a un evento specifico. \n\nEsempio: somebody_pressed_the_button, movimento" + }, "description": "Aggiungere un nome di evento separato da virgola per ogni evento che desideri monitorare. Dopo averli inseriti qui, usa l'applicazione DoorBird per assegnarli a un evento specifico. Consulta la documentazione su https://www.home-assistant.io/integrations/doorbird/#events. Esempio: qualcuno_premuto_il_pulsante, movimento" } } diff --git a/homeassistant/components/doorbird/translations/ja.json b/homeassistant/components/doorbird/translations/ja.json index 179edc8943c..55363310ec5 100644 --- a/homeassistant/components/doorbird/translations/ja.json +++ b/homeassistant/components/doorbird/translations/ja.json @@ -29,6 +29,9 @@ "data": { "events": "\u30a4\u30d9\u30f3\u30c8\u306e\u30b3\u30f3\u30de\u533a\u5207\u308a\u30ea\u30b9\u30c8\u3002" }, + "data_description": { + "events": "\u8ffd\u8de1\u3059\u308b\u30a4\u30d9\u30f3\u30c8\u3054\u3068\u306b\u30b3\u30f3\u30de\u533a\u5207\u308a\u306e\u30a4\u30d9\u30f3\u30c8\u540d\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002\u3053\u3053\u306b\u5165\u529b\u5f8c\u3001DoorBird\u30a2\u30d7\u30ea\u3092\u4f7f\u7528\u3057\u3066\u7279\u5b9a\u306e\u30a4\u30d9\u30f3\u30c8\u306b\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \n\n\u4f8b: somebody_pressed_the_button, motion" + }, "description": "\u8ffd\u8de1\u3059\u308b\u30a4\u30d9\u30f3\u30c8\u3054\u3068\u306b\u3001\u30b3\u30f3\u30de\u533a\u5207\u308a\u3067\u30a4\u30d9\u30f3\u30c8\u540d\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002\u3053\u3053\u306b\u5165\u529b\u3057\u305f\u5f8c\u3001DoorBird\u30a2\u30d7\u30ea\u3092\u4f7f\u7528\u3057\u3066\u7279\u5b9a\u306e\u30a4\u30d9\u30f3\u30c8\u306b\u5272\u308a\u5f53\u3066\u307e\u3059\u3002https://www.home-assistant.io/integrations/doorbird/#events. \u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b: somebody_pressed_the_button, motion" } } diff --git a/homeassistant/components/doorbird/translations/nl.json b/homeassistant/components/doorbird/translations/nl.json index db32d96d831..83e47ca4c5e 100644 --- a/homeassistant/components/doorbird/translations/nl.json +++ b/homeassistant/components/doorbird/translations/nl.json @@ -29,6 +29,9 @@ "data": { "events": "Door komma's gescheiden lijst met gebeurtenissen." }, + "data_description": { + "events": "Voeg een door komma's gescheiden evenementnaam toe voor elk evenement dat u wilt volgen. Nadat u ze hier hebt ingevoerd, gebruikt u de DoorBird app om ze aan een specifieke gebeurtenis toe te wijzen.\n\nVoorbeeld: iemand_drukt_op_de_knop, beweging" + }, "description": "Voeg een door komma's gescheiden evenementnaam toe voor elk evenement dat u wilt volgen. Nadat je ze hier hebt ingevoerd, gebruik je de DoorBird-app om ze toe te wijzen aan een specifiek evenement. Zie de documentatie op https://www.home-assistant.io/integrations/doorbird/#events. Voorbeeld: iemand_drukte_knop, beweging" } } diff --git a/homeassistant/components/doorbird/translations/no.json b/homeassistant/components/doorbird/translations/no.json index 356c86a8b54..a30fc93013a 100644 --- a/homeassistant/components/doorbird/translations/no.json +++ b/homeassistant/components/doorbird/translations/no.json @@ -29,6 +29,9 @@ "data": { "events": "Kommaseparert liste over hendelser." }, + "data_description": { + "events": "Legg til et navn p\u00e5 en kommadelt hendelse for hver hendelse du vil spore. N\u00e5r du har skrevet dem inn her, bruker du DoorBird-appen til \u00e5 tilordne dem til en bestemt hendelse.\n\nEksempel: somebody_pressed_the_button, bevegelse" + }, "description": "Legg til et kommaseparert hendelsesnavn for hvert arrangement du \u00f8nsker \u00e5 spore. Etter \u00e5 ha skrevet dem inn her, bruker du DoorBird-appen til \u00e5 tilordne dem til en bestemt hendelse. Se dokumentasjonen p\u00e5 https://www.home-assistant.io/integrations/doorbird/#events. Eksempel: noen_trykket_knappen, bevegelse" } } diff --git a/homeassistant/components/doorbird/translations/pl.json b/homeassistant/components/doorbird/translations/pl.json index f55d2d406f2..85a7a8765a7 100644 --- a/homeassistant/components/doorbird/translations/pl.json +++ b/homeassistant/components/doorbird/translations/pl.json @@ -29,6 +29,9 @@ "data": { "events": "Lista wydarze\u0144 oddzielona przecinkami" }, + "data_description": { + "events": "Dodaj nazw\u0119 oddzielon\u0105 przecinkami dla ka\u017cdego wydarzenia, kt\u00f3re chcesz \u015bledzi\u0107. Po wprowadzeniu ich tutaj u\u017cyj aplikacji DoorBird, aby przypisa\u0107 je do konkretnego wydarzenia. \n\nPrzyk\u0142ad: kto\u015b_nacisn\u0105\u0142_przycisk, ruch" + }, "description": "Dodaj nazwy wydarze\u0144 oddzielonych przecinkami, kt\u00f3re chcesz \u015bledzi\u0107. Po wprowadzeniu ich tutaj u\u017cyj aplikacji DoorBird, aby przypisa\u0107 je do okre\u015blonych zdarze\u0144. Zapoznaj si\u0119 z dokumentacj\u0105 na stronie https://www.home-assistant.io/integrations/doorbird/#events.\nPrzyk\u0142ad: nacisniecie_przycisku, ruch" } } diff --git a/homeassistant/components/doorbird/translations/pt-BR.json b/homeassistant/components/doorbird/translations/pt-BR.json index 3f2c479df8f..07170c086b7 100644 --- a/homeassistant/components/doorbird/translations/pt-BR.json +++ b/homeassistant/components/doorbird/translations/pt-BR.json @@ -29,6 +29,9 @@ "data": { "events": "Lista de eventos separados por v\u00edrgulas." }, + "data_description": { + "events": "Adicione um nome de evento separado por v\u00edrgula para cada evento que voc\u00ea deseja rastrear. Depois de inseri-los aqui, use o aplicativo DoorBird para atribu\u00ed-los a um evento espec\u00edfico. \n\n Exemplo: someone_pressed_the_button, movimento" + }, "description": "Adicione um nome de evento separado por v\u00edrgula para cada evento que voc\u00ea deseja rastrear. Depois de inseri-los aqui, use o aplicativo DoorBird para atribu\u00ed-los a um evento espec\u00edfico. Consulte a documenta\u00e7\u00e3o em https://www.home-assistant.io/integrations/doorbird/#events. Exemplo: alguem_pressionou_o_botao movimento" } } diff --git a/homeassistant/components/doorbird/translations/ru.json b/homeassistant/components/doorbird/translations/ru.json index df156bb640a..045092a2b97 100644 --- a/homeassistant/components/doorbird/translations/ru.json +++ b/homeassistant/components/doorbird/translations/ru.json @@ -29,6 +29,9 @@ "data": { "events": "\u0421\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e." }, + "data_description": { + "events": "\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 DoorBird, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0438\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0441\u043e\u0431\u044b\u0442\u0438\u044e.\n\n\u041f\u0440\u0438\u043c\u0435\u0440: somebody_pressed_the_button, motion." + }, "description": "\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 DoorBird, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0438\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0441\u043e\u0431\u044b\u0442\u0438\u044e. \u041f\u0440\u0438\u043c\u0435\u0440: somebody_pressed_the_button, motion. \u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439 \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: https://www.home-assistant.io/integrations/doorbird/#events." } } diff --git a/homeassistant/components/doorbird/translations/tr.json b/homeassistant/components/doorbird/translations/tr.json index 1bb08b6f81e..1e472a43535 100644 --- a/homeassistant/components/doorbird/translations/tr.json +++ b/homeassistant/components/doorbird/translations/tr.json @@ -29,6 +29,9 @@ "data": { "events": "Virg\u00fclle ayr\u0131lm\u0131\u015f olaylar\u0131n listesi." }, + "data_description": { + "events": "\u0130zlemek istedi\u011finiz her etkinlik i\u00e7in virg\u00fclle ayr\u0131lm\u0131\u015f bir etkinlik ad\u0131 ekleyin. Bunlar\u0131 buraya girdikten sonra, onlar\u0131 belirli bir etkinli\u011fe atamak i\u00e7in DoorBird uygulamas\u0131n\u0131 kullan\u0131n. \n\n \u00d6rnek: birisi_butona_basti, hareket" + }, "description": "\u0130zlemek istedi\u011finiz her etkinlik i\u00e7in virg\u00fclle ayr\u0131lm\u0131\u015f bir etkinlik ad\u0131 ekleyin. Bunlar\u0131 buraya girdikten sonra, onlar\u0131 belirli bir etkinli\u011fe atamak i\u00e7in DoorBird uygulamas\u0131n\u0131 kullan\u0131n. https://www.home-assistant.io/integrations/doorbird/#events adresindeki belgelere bak\u0131n. \u00d6rnek: birisi_pressed_the_button, hareket" } } diff --git a/homeassistant/components/doorbird/translations/zh-Hant.json b/homeassistant/components/doorbird/translations/zh-Hant.json index 020267b4921..616e346b0dc 100644 --- a/homeassistant/components/doorbird/translations/zh-Hant.json +++ b/homeassistant/components/doorbird/translations/zh-Hant.json @@ -29,6 +29,9 @@ "data": { "events": "\u4ee5\u9017\u865f\u5206\u5225\u4e8b\u4ef6\u5217\u8868\u3002" }, + "data_description": { + "events": "\u4ee5\u9017\u865f\u5206\u5225\u6240\u8981\u8ffd\u8e64\u7684\u4e8b\u4ef6\u540d\u7a31\u3002\u65bc\u6b64\u8f38\u5165\u5f8c\uff0c\u4f7f\u7528 DoorBird App \u6307\u5b9a\u81f3\u7279\u5b9a\u4e8b\u4ef6\u3002\n\n\u4f8b\u5982\uff1asomebody_pressed_the_button, motion" + }, "description": "\u4ee5\u9017\u865f\u5206\u5225\u6240\u8981\u8ffd\u8e64\u7684\u4e8b\u4ef6\u540d\u7a31\u3002\u65bc\u6b64\u8f38\u5165\u5f8c\uff0c\u4f7f\u7528 DoorBird App \u6307\u5b9a\u81f3\u7279\u5b9a\u4e8b\u4ef6\u3002\u8acb\u53c3\u95b1\u6587\u4ef6\uff1ahttps://www.home-assistant.io/integrations/doorbird/#events\u3002\u4f8b\u5982\uff1asomebody_pressed_the_button, motion" } } diff --git a/homeassistant/components/dsmr/translations/it.json b/homeassistant/components/dsmr/translations/it.json index 9b50979d016..67ca750dd02 100644 --- a/homeassistant/components/dsmr/translations/it.json +++ b/homeassistant/components/dsmr/translations/it.json @@ -9,12 +9,12 @@ "already_configured": "Il dispositivo \u00e8 gi\u00e0 configurato", "cannot_communicate": "Impossibile comunicare", "cannot_connect": "Impossibile connettersi", - "one": "Pi\u00f9", - "other": "Altri" + "one": "Vuoto", + "other": "Vuoti" }, "step": { - "one": "Pi\u00f9", - "other": "Altri", + "one": "Vuoto", + "other": "Vuoti", "setup_network": { "data": { "dsmr_version": "Seleziona la versione DSMR", diff --git a/homeassistant/components/dunehd/translations/ca.json b/homeassistant/components/dunehd/translations/ca.json index 12f139afe60..08dd841bf4f 100644 --- a/homeassistant/components/dunehd/translations/ca.json +++ b/homeassistant/components/dunehd/translations/ca.json @@ -13,7 +13,7 @@ "data": { "host": "Amfitri\u00f3" }, - "description": "Configura la integraci\u00f3 Dune HD. Si tens problemes durant la configuraci\u00f3, v\u00e9s a: https://www.home-assistant.io/integrations/dunehd\n\nAssegura't que el reproductor estigui engegat.", + "description": "Assegura't que el reproductor est\u00e0 engegat.", "title": "Dune HD" } } diff --git a/homeassistant/components/dunehd/translations/de.json b/homeassistant/components/dunehd/translations/de.json index f3d7ecd725a..bcab02b2a09 100644 --- a/homeassistant/components/dunehd/translations/de.json +++ b/homeassistant/components/dunehd/translations/de.json @@ -13,7 +13,7 @@ "data": { "host": "Host" }, - "description": "Richte die Dune HD-Integration ein. Wenn du Probleme mit der Konfiguration hast, gehe zu: https://www.home-assistant.io/integrations/dunehd \n\nStelle sicher, dass dein Player eingeschaltet ist.", + "description": "Stelle sicher, dass dein Player eingeschaltet ist.", "title": "Dune HD" } } diff --git a/homeassistant/components/dunehd/translations/en.json b/homeassistant/components/dunehd/translations/en.json index 41540c987be..d6392509fcf 100644 --- a/homeassistant/components/dunehd/translations/en.json +++ b/homeassistant/components/dunehd/translations/en.json @@ -13,7 +13,7 @@ "data": { "host": "Host" }, - "description": "Set up Dune HD integration. If you have problems with configuration go to: https://www.home-assistant.io/integrations/dunehd \n\nEnsure that your player is turned on.", + "description": "Ensure that your player is turned on.", "title": "Dune HD" } } diff --git a/homeassistant/components/dunehd/translations/et.json b/homeassistant/components/dunehd/translations/et.json index bb53d124200..3f4a9b4b085 100644 --- a/homeassistant/components/dunehd/translations/et.json +++ b/homeassistant/components/dunehd/translations/et.json @@ -13,7 +13,7 @@ "data": { "host": "" }, - "description": "Seadista Dune HD sidumine. Kui seadistamisega on probleeme, mine aadressile https://www.home-assistant.io/integrations/dunehd\n\n Veendu, et seade on sisse l\u00fclitatud.", + "description": "Veendu, et m\u00e4ngija on sisse l\u00fclitatud.", "title": "" } } diff --git a/homeassistant/components/dunehd/translations/fr.json b/homeassistant/components/dunehd/translations/fr.json index 0e8cb6d6ff8..8c3bc89a0e6 100644 --- a/homeassistant/components/dunehd/translations/fr.json +++ b/homeassistant/components/dunehd/translations/fr.json @@ -13,7 +13,7 @@ "data": { "host": "H\u00f4te" }, - "description": "Configurez l'int\u00e9gration Dune HD. Si vous rencontrez des probl\u00e8mes de configuration, acc\u00e9dez \u00e0: https://www.home-assistant.io/integrations/dunehd \n\n Assurez-vous que votre lecteur est allum\u00e9.", + "description": "Assurez-vous que votre lecteur est allum\u00e9.", "title": "Dune HD" } } diff --git a/homeassistant/components/dunehd/translations/hu.json b/homeassistant/components/dunehd/translations/hu.json index 15b2d297363..1dc7c8ec6cc 100644 --- a/homeassistant/components/dunehd/translations/hu.json +++ b/homeassistant/components/dunehd/translations/hu.json @@ -13,7 +13,7 @@ "data": { "host": "C\u00edm" }, - "description": "\u00c1ll\u00edtsa be a Dune HD integr\u00e1ci\u00f3t. Ha probl\u00e9m\u00e1i vannak a konfigur\u00e1ci\u00f3val, l\u00e1togasson el a k\u00f6vetkez\u0151 oldalra: https://www.home-assistant.io/integrations/dunehd \n\n Gy\u0151z\u0151dj\u00f6n meg arr\u00f3l, hogy a lej\u00e1tsz\u00f3 be van kapcsolva.", + "description": "Gy\u0151z\u0151dj\u00f6n meg arr\u00f3l, hogy a lej\u00e1tsz\u00f3 be van kapcsolva.", "title": "Dune HD" } } diff --git a/homeassistant/components/dunehd/translations/id.json b/homeassistant/components/dunehd/translations/id.json index 25cb96bedea..5a86947a07a 100644 --- a/homeassistant/components/dunehd/translations/id.json +++ b/homeassistant/components/dunehd/translations/id.json @@ -13,7 +13,7 @@ "data": { "host": "Host" }, - "description": "Siapkan integrasi Dune HD. Jika Anda memiliki masalah dengan konfigurasi, buka: https://www.home-assistant.io/integrations/dunehd \n\nPastikan pemutar Anda dinyalakan.", + "description": "Pastikan pemutar Anda dinyalakan.", "title": "Dune HD" } } diff --git a/homeassistant/components/dunehd/translations/it.json b/homeassistant/components/dunehd/translations/it.json index e296a59e474..0e33feb2640 100644 --- a/homeassistant/components/dunehd/translations/it.json +++ b/homeassistant/components/dunehd/translations/it.json @@ -13,7 +13,7 @@ "data": { "host": "Host" }, - "description": "Configura l'integrazione Dune HD. In caso di problemi con la configurazione, visita: https://www.home-assistant.io/integrations/dunehd \n\n Assicurati che il tuo lettore sia acceso.", + "description": "Assicurati che il tuo lettore sia acceso.", "title": "Dune HD" } } diff --git a/homeassistant/components/dunehd/translations/nl.json b/homeassistant/components/dunehd/translations/nl.json index bb3dd7def47..f4c54a5dba5 100644 --- a/homeassistant/components/dunehd/translations/nl.json +++ b/homeassistant/components/dunehd/translations/nl.json @@ -13,7 +13,7 @@ "data": { "host": "Host" }, - "description": "Stel Dune HD integratie in. Als u problemen heeft met de configuratie ga dan naar: https://www.home-assistant.io/integrations/dunehd \n\nZorg ervoor dat uw speler is ingeschakeld.", + "description": "Zorg ervoor dat uw speler is ingeschakeld.", "title": "Dune HD" } } diff --git a/homeassistant/components/dunehd/translations/no.json b/homeassistant/components/dunehd/translations/no.json index a887228c322..1b35f5581b1 100644 --- a/homeassistant/components/dunehd/translations/no.json +++ b/homeassistant/components/dunehd/translations/no.json @@ -13,7 +13,7 @@ "data": { "host": "Vert" }, - "description": "Konfigurer Dune HD-integrering. Hvis du har problemer med konfigurasjonen, kan du g\u00e5 til: https://www.home-assistant.io/integrations/dunehd \n\nKontroller at spilleren er sl\u00e5tt p\u00e5.", + "description": "S\u00f8rg for at spilleren er sl\u00e5tt p\u00e5.", "title": "" } } diff --git a/homeassistant/components/dunehd/translations/pl.json b/homeassistant/components/dunehd/translations/pl.json index 5def31d1c46..376b84e05d9 100644 --- a/homeassistant/components/dunehd/translations/pl.json +++ b/homeassistant/components/dunehd/translations/pl.json @@ -13,7 +13,7 @@ "data": { "host": "Nazwa hosta lub adres IP" }, - "description": "Konfiguracja integracji odtwarzacza Dune HD. Je\u015bli masz problemy z konfiguracj\u0105, przejd\u017a do strony: https://www.home-assistant.io/integrations/dunehd\n\nUpewnij si\u0119, \u017ce odtwarzacz jest w\u0142\u0105czony.", + "description": "Upewnij si\u0119, \u017ce odtwarzacz jest w\u0142\u0105czony.", "title": "Dune HD" } } diff --git a/homeassistant/components/dunehd/translations/pt-BR.json b/homeassistant/components/dunehd/translations/pt-BR.json index 072cf6011ea..4775f1af379 100644 --- a/homeassistant/components/dunehd/translations/pt-BR.json +++ b/homeassistant/components/dunehd/translations/pt-BR.json @@ -13,7 +13,7 @@ "data": { "host": "Nome do host" }, - "description": "Configure a integra\u00e7\u00e3o Dune HD. Se voc\u00ea tiver problemas com a configura\u00e7\u00e3o, acesse: https://www.home-assistant.io/integrations/dunehd \n\n Certifique-se de que seu player est\u00e1 ligado.", + "description": "Certifique-se de que seu player est\u00e1 ligado.", "title": "Dune HD" } } diff --git a/homeassistant/components/dunehd/translations/ru.json b/homeassistant/components/dunehd/translations/ru.json index c1537de579f..134511e66f2 100644 --- a/homeassistant/components/dunehd/translations/ru.json +++ b/homeassistant/components/dunehd/translations/ru.json @@ -13,7 +13,7 @@ "data": { "host": "\u0425\u043e\u0441\u0442" }, - "description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Home Assistant \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 Dune HD. \u0415\u0441\u043b\u0438 \u0443 \u0412\u0430\u0441 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439, \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 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443: https://www.home-assistant.io/integrations/dunehd\n\n\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0412\u0430\u0448 \u043f\u043b\u0435\u0435\u0440 \u0432\u043a\u043b\u044e\u0447\u0435\u043d.", + "description": "\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d.", "title": "Dune HD" } } diff --git a/homeassistant/components/dunehd/translations/tr.json b/homeassistant/components/dunehd/translations/tr.json index 121267c34e3..79c2f033cfc 100644 --- a/homeassistant/components/dunehd/translations/tr.json +++ b/homeassistant/components/dunehd/translations/tr.json @@ -13,7 +13,7 @@ "data": { "host": "Sunucu" }, - "description": "Dune HD entegrasyonunu ayarlay\u0131n. Yap\u0131land\u0131rmayla ilgili sorunlar\u0131n\u0131z varsa \u015fu adrese gidin: https://www.home-assistant.io/integrations/dunehd \n\n Oynat\u0131c\u0131n\u0131z\u0131n a\u00e7\u0131k oldu\u011fundan emin olun.", + "description": "Oynat\u0131c\u0131n\u0131z\u0131n a\u00e7\u0131k oldu\u011fundan emin olun.", "title": "Dune HD" } } diff --git a/homeassistant/components/dunehd/translations/zh-Hant.json b/homeassistant/components/dunehd/translations/zh-Hant.json index a81055b9576..993a6d9a210 100644 --- a/homeassistant/components/dunehd/translations/zh-Hant.json +++ b/homeassistant/components/dunehd/translations/zh-Hant.json @@ -13,7 +13,7 @@ "data": { "host": "\u4e3b\u6a5f\u7aef" }, - "description": "\u8a2d\u5b9a Dune HD \u6574\u5408\u3002\u5047\u5982\u65bc\u8a2d\u5b9a\u904e\u7a0b\u4e2d\u906d\u9047\u56f0\u7136\uff0c\u8acb\u53c3\u95b1\uff1ahttps://www.home-assistant.io/integrations/dunehd \n\n\u78ba\u5b9a\u64ad\u653e\u68c4\u5df2\u7d93\u958b\u555f\u3002", + "description": "\u78ba\u5b9a\u64ad\u653e\u5668\u5df2\u7d93\u958b\u555f\u3002", "title": "Dune HD" } } diff --git a/homeassistant/components/ecobee/translations/hu.json b/homeassistant/components/ecobee/translations/hu.json index a91478ff038..a2fdd5553a4 100644 --- a/homeassistant/components/ecobee/translations/hu.json +++ b/homeassistant/components/ecobee/translations/hu.json @@ -9,7 +9,7 @@ }, "step": { "authorize": { - "description": "K\u00e9rj\u00fck, enged\u00e9lyezze ezt az alkalmaz\u00e1st a https://www.ecobee.com/consumerportal/index.html c\u00edmen a k\u00f6vetkez\u0151 PIN-k\u00f3ddal: \n\n {pin} \n \n Ezut\u00e1n nyomja meg a K\u00fcld\u00e9s gombot.", + "description": "K\u00e9rj\u00fck, enged\u00e9lyezze ezt az alkalmaz\u00e1st a https://www.ecobee.com/consumerportal/index.html c\u00edmen a k\u00f6vetkez\u0151 PIN-k\u00f3ddal: \n\n {pin} \n \nEzut\u00e1n nyomja meg a Mehet gombot.", "title": "Alkalmaz\u00e1s enged\u00e9lyez\u00e9se ecobee.com-on" }, "user": { diff --git a/homeassistant/components/elkm1/translations/bg.json b/homeassistant/components/elkm1/translations/bg.json index 8fd587a0640..5e83523d419 100644 --- a/homeassistant/components/elkm1/translations/bg.json +++ b/homeassistant/components/elkm1/translations/bg.json @@ -1,7 +1,9 @@ { "config": { "abort": { - "cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435" + "cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435", + "invalid_auth": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0432\u0430\u043d\u0435", + "unknown": "\u041d\u0435\u043e\u0447\u0430\u043a\u0432\u0430\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430" }, "flow_title": "{mac_address} ({host})", "step": { diff --git a/homeassistant/components/elkm1/translations/ca.json b/homeassistant/components/elkm1/translations/ca.json index 2317e475a37..b0a979f98b5 100644 --- a/homeassistant/components/elkm1/translations/ca.json +++ b/homeassistant/components/elkm1/translations/ca.json @@ -4,7 +4,9 @@ "address_already_configured": "Ja hi ha un Elk-M1 configurat amb aquesta adre\u00e7a", "already_configured": "Ja hi ha un Elk-M1 configurat amb aquest prefix", "already_in_progress": "El flux de configuraci\u00f3 ja est\u00e0 en curs", - "cannot_connect": "Ha fallat la connexi\u00f3" + "cannot_connect": "Ha fallat la connexi\u00f3", + "invalid_auth": "Autenticaci\u00f3 inv\u00e0lida", + "unknown": "Error inesperat" }, "error": { "cannot_connect": "Ha fallat la connexi\u00f3", @@ -37,13 +39,7 @@ }, "user": { "data": { - "address": "Adre\u00e7a IP, domini o port s\u00e8rie (en cas d'una connexi\u00f3 s\u00e8rie).", - "device": "Dispositiu", - "password": "Contrasenya", - "prefix": "Prefix \u00fanic (deixa-ho en blanc si nom\u00e9s tens un \u00fanic controlador Elk-M1).", - "protocol": "Protocol", - "temperature_unit": "Unitats de temperatura que utilitza l'Elk-M1.", - "username": "Nom d'usuari" + "device": "Dispositiu" }, "description": "Selecciona un sistema descobert o 'entrada manual' si no s'han descobert dispositius.", "title": "Connexi\u00f3 amb el controlador Elk-M1" diff --git a/homeassistant/components/elkm1/translations/cs.json b/homeassistant/components/elkm1/translations/cs.json index f2f4c17af9c..9ff8da3067d 100644 --- a/homeassistant/components/elkm1/translations/cs.json +++ b/homeassistant/components/elkm1/translations/cs.json @@ -28,13 +28,6 @@ "title": "P\u0159ipojen\u00ed k ovlada\u010di Elk-M1" }, "user": { - "data": { - "password": "Heslo", - "prefix": "Jedine\u010dn\u00fd prefix (ponechte pr\u00e1zdn\u00e9, pokud m\u00e1te pouze jeden ElkM1).", - "protocol": "Protokol", - "temperature_unit": "Jednotka teploty pou\u017e\u00edvan\u00e1 ElkM1.", - "username": "U\u017eivatelsk\u00e9 jm\u00e9no" - }, "title": "P\u0159ipojen\u00ed k ovlada\u010di Elk-M1" } } diff --git a/homeassistant/components/elkm1/translations/de.json b/homeassistant/components/elkm1/translations/de.json index cf318a626c9..7c08a9b254d 100644 --- a/homeassistant/components/elkm1/translations/de.json +++ b/homeassistant/components/elkm1/translations/de.json @@ -4,7 +4,9 @@ "address_already_configured": "Ein ElkM1 mit dieser Adresse ist bereits konfiguriert", "already_configured": "Ein ElkM1 mit diesem Pr\u00e4fix ist bereits konfiguriert", "already_in_progress": "Der Konfigurationsablauf wird bereits ausgef\u00fchrt", - "cannot_connect": "Verbinden fehlgeschlagen" + "cannot_connect": "Verbindung fehlgeschlagen", + "invalid_auth": "Ung\u00fcltige Authentifizierung", + "unknown": "Unerwarteter Fehler" }, "error": { "cannot_connect": "Verbindung fehlgeschlagen", @@ -37,13 +39,7 @@ }, "user": { "data": { - "address": "Die IP-Adresse, die Domain oder der serielle Port bei einer seriellen Verbindung.", - "device": "Ger\u00e4t", - "password": "Passwort", - "prefix": "Ein eindeutiges Pr\u00e4fix (leer lassen, wenn du nur einen ElkM1 hast).", - "protocol": "Protokoll", - "temperature_unit": "Die von ElkM1 verwendete Temperatureinheit.", - "username": "Benutzername" + "device": "Ger\u00e4t" }, "description": "W\u00e4hle ein erkanntes System oder \"Manuelle Eingabe\", wenn keine Ger\u00e4te erkannt wurden.", "title": "Stelle eine Verbindung zur Elk-M1-Steuerung her" diff --git a/homeassistant/components/elkm1/translations/el.json b/homeassistant/components/elkm1/translations/el.json index 9f600806d83..bc1d64649aa 100644 --- a/homeassistant/components/elkm1/translations/el.json +++ b/homeassistant/components/elkm1/translations/el.json @@ -4,7 +4,9 @@ "address_already_configured": "\u0388\u03bd\u03b1 ElkM1 \u03bc\u03b5 \u03b1\u03c5\u03c4\u03ae\u03bd \u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03b8\u03b5\u03af", "already_configured": "\u0388\u03bd\u03b1 ElkM1 \u03bc\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c0\u03c1\u03cc\u03b8\u03b5\u03bc\u03b1 \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03b8\u03b5\u03af", "already_in_progress": "\u0397 \u03c1\u03bf\u03ae \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7\u03c2 \u03b2\u03c1\u03af\u03c3\u03ba\u03b5\u03c4\u03b1\u03b9 \u03ae\u03b4\u03b7 \u03c3\u03b5 \u03b5\u03be\u03ad\u03bb\u03b9\u03be\u03b7", - "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2" + "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", + "invalid_auth": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", + "unknown": "\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" }, "error": { "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", @@ -37,13 +39,7 @@ }, "user": { "data": { - "address": "\u0397 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 IP \u03ae \u03bf \u03c4\u03bf\u03bc\u03ad\u03b1\u03c2 \u03ae \u03b7 \u03c3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03ae \u03b8\u03cd\u03c1\u03b1 \u03b5\u03ac\u03bd \u03b7 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03b3\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03bc\u03ad\u03c3\u03c9 \u03c3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03ae\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2.", - "device": "\u03a3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae", - "password": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", - "prefix": "\u0388\u03bd\u03b1 \u03bc\u03bf\u03bd\u03b1\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03b8\u03b5\u03bc\u03b1 (\u03b1\u03c6\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf \u03ba\u03b5\u03bd\u03cc \u03b1\u03bd \u03ad\u03c7\u03b5\u03c4\u03b5 \u03bc\u03cc\u03bd\u03bf \u03ad\u03bd\u03b1 ElkM1).", - "protocol": "\u03a0\u03c1\u03c9\u03c4\u03cc\u03ba\u03bf\u03bb\u03bb\u03bf", - "temperature_unit": "\u0397 \u03bc\u03bf\u03bd\u03ac\u03b4\u03b1 \u03b8\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1\u03c2 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af \u03c4\u03bf ElkM1.", - "username": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7" + "device": "\u03a3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae" }, "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03c3\u03cd\u03c3\u03c4\u03b7\u03bc\u03b1 \u03c0\u03bf\u03c5 \u03b1\u03bd\u03b1\u03ba\u03b1\u03bb\u03cd\u03c6\u03b8\u03b7\u03ba\u03b5 \u03ae \"\u039c\u03b7 \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03ba\u03b1\u03c4\u03b1\u03c7\u03ce\u03c1\u03b9\u03c3\u03b7\" \u03b5\u03ac\u03bd \u03b4\u03b5\u03bd \u03ad\u03c7\u03bf\u03c5\u03bd \u03b5\u03bd\u03c4\u03bf\u03c0\u03b9\u03c3\u03c4\u03b5\u03af \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ad\u03c2.", "title": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c3\u03c4\u03bf Elk-M1 Control" diff --git a/homeassistant/components/elkm1/translations/es-419.json b/homeassistant/components/elkm1/translations/es-419.json index 02271c4ea6c..09b5bc190f7 100644 --- a/homeassistant/components/elkm1/translations/es-419.json +++ b/homeassistant/components/elkm1/translations/es-419.json @@ -11,14 +11,6 @@ }, "step": { "user": { - "data": { - "address": "La direcci\u00f3n IP, dominio o puerto serie si se conecta via serial.", - "password": "Contrase\u00f1a (solo segura).", - "prefix": "Un prefijo \u00fanico (d\u00e9jelo en blanco si solo tiene un ElkM1).", - "protocol": "Protocolo", - "temperature_unit": "La unidad de temperatura que utiliza ElkM1.", - "username": "Nombre de usuario (solo seguro)." - }, "description": "La cadena de direcci\u00f3n debe tener el formato 'direcci\u00f3n[:puerto]' para 'seguro' y 'no seguro'. Ejemplo: '192.168.1.1'. El puerto es opcional y el valor predeterminado es 2101 para 'no seguro' y 2601 para 'seguro'. Para el protocolo serie, la direcci\u00f3n debe estar en la forma 'tty[:baudios]'. Ejemplo: '/dev/ttyS1'. La velocidad en baudios es opcional y su valor predeterminado es 115200.", "title": "Con\u00e9ctese al control Elk-M1" } diff --git a/homeassistant/components/elkm1/translations/es.json b/homeassistant/components/elkm1/translations/es.json index 06c0d9e257e..46e25dd288f 100644 --- a/homeassistant/components/elkm1/translations/es.json +++ b/homeassistant/components/elkm1/translations/es.json @@ -37,13 +37,7 @@ }, "user": { "data": { - "address": "La direcci\u00f3n IP o dominio o puerto serie si se conecta a trav\u00e9s de serie.", - "device": "Dispositivo", - "password": "Contrase\u00f1a", - "prefix": "Un prefijo \u00fanico (d\u00e9jalo en blanco si s\u00f3lo tienes un Elk-M1).", - "protocol": "Protocolo", - "temperature_unit": "La temperatura que usa la unidad Elk-M1", - "username": "Usuario" + "device": "Dispositivo" }, "description": "La cadena de direcci\u00f3n debe estar en el formato 'direcci\u00f3n[:puerto]' para 'seguro' y 'no-seguro'. Ejemplo: '192.168.1.1'. El puerto es opcional y el valor predeterminado es 2101 para 'no-seguro' y 2601 para 'seguro'. Para el protocolo serie, la direcci\u00f3n debe tener la forma 'tty[:baudios]'. Ejemplo: '/dev/ttyS1'. Los baudios son opcionales y el valor predeterminado es 115200.", "title": "Conectar con Control Elk-M1" diff --git a/homeassistant/components/elkm1/translations/et.json b/homeassistant/components/elkm1/translations/et.json index d874763045f..fbefde0a118 100644 --- a/homeassistant/components/elkm1/translations/et.json +++ b/homeassistant/components/elkm1/translations/et.json @@ -4,7 +4,9 @@ "address_already_configured": "Selle aadressiga ElkM1 on juba seadistatud", "already_configured": "Selle eesliitega ElkM1 on juba seadistatud", "already_in_progress": "Seadistamine juba k\u00e4ib", - "cannot_connect": "\u00dchendumine nurjus" + "cannot_connect": "\u00dchendumine nurjus", + "invalid_auth": "Tuvastamine nurjus", + "unknown": "Ootamatu t\u00f5rge" }, "error": { "cannot_connect": "\u00dchendamine nurjus", @@ -37,13 +39,7 @@ }, "user": { "data": { - "address": "IP-aadress v\u00f5i domeen v\u00f5i jadaport, kui \u00fchendatakse jadaliidese kaudu.", - "device": "Seade", - "password": "Salas\u00f5na", - "prefix": "Unikaalne eesliide (j\u00e4ta t\u00fchjaks kui on ainult \u00fcks ElkM1).", - "protocol": "Protokoll", - "temperature_unit": "ElkM1'i temperatuuri\u00fchik.", - "username": "Kasutajanimi" + "device": "Seade" }, "description": "Vali avastatud s\u00fcsteem v\u00f5i \"K\u00e4sitsi sisestamine\" kui \u00fchtegi seadet ei ole avastatud.", "title": "\u00dchendu Elk-M1 Control" diff --git a/homeassistant/components/elkm1/translations/fr.json b/homeassistant/components/elkm1/translations/fr.json index 07b5d132968..e7512a596d1 100644 --- a/homeassistant/components/elkm1/translations/fr.json +++ b/homeassistant/components/elkm1/translations/fr.json @@ -4,7 +4,9 @@ "address_already_configured": "Un ElkM1 avec cette adresse est d\u00e9j\u00e0 configur\u00e9", "already_configured": "Un ElkM1 avec ce pr\u00e9fixe est d\u00e9j\u00e0 configur\u00e9", "already_in_progress": "La configuration est d\u00e9j\u00e0 en cours", - "cannot_connect": "\u00c9chec de connexion" + "cannot_connect": "\u00c9chec de connexion", + "invalid_auth": "Authentification non valide", + "unknown": "Erreur inattendue" }, "error": { "cannot_connect": "\u00c9chec de connexion", @@ -37,13 +39,7 @@ }, "user": { "data": { - "address": "L'adresse IP ou le domaine ou le port s\u00e9rie si vous vous connectez via s\u00e9rie.", - "device": "Appareil", - "password": "Mot de passe", - "prefix": "Un pr\u00e9fixe unique (laissez vide si vous n'avez qu'un seul ElkM1).", - "protocol": "Protocole", - "temperature_unit": "L'unit\u00e9 de temp\u00e9rature utilis\u00e9e par ElkM1.", - "username": "Nom d'utilisateur" + "device": "Appareil" }, "description": "Choisissez un syst\u00e8me d\u00e9couvert ou 'Entr\u00e9e manuelle' si aucun appareil n'a \u00e9t\u00e9 d\u00e9couvert.", "title": "Se connecter a Elk-M1 Control" diff --git a/homeassistant/components/elkm1/translations/he.json b/homeassistant/components/elkm1/translations/he.json index 8d7b5c9b945..3dda78332f9 100644 --- a/homeassistant/components/elkm1/translations/he.json +++ b/homeassistant/components/elkm1/translations/he.json @@ -2,7 +2,9 @@ "config": { "abort": { "already_in_progress": "\u05d6\u05e8\u05d9\u05de\u05ea \u05d4\u05ea\u05e6\u05d5\u05e8\u05d4 \u05db\u05d1\u05e8 \u05de\u05ea\u05d1\u05e6\u05e2\u05ea", - "cannot_connect": "\u05d4\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05e0\u05db\u05e9\u05dc\u05d4" + "cannot_connect": "\u05d4\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05e0\u05db\u05e9\u05dc\u05d4", + "invalid_auth": "\u05d0\u05d9\u05de\u05d5\u05ea \u05dc\u05d0 \u05d7\u05d5\u05e7\u05d9", + "unknown": "\u05e9\u05d2\u05d9\u05d0\u05d4 \u05d1\u05dc\u05ea\u05d9 \u05e6\u05e4\u05d5\u05d9\u05d4" }, "error": { "cannot_connect": "\u05d4\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05e0\u05db\u05e9\u05dc\u05d4", @@ -31,10 +33,7 @@ }, "user": { "data": { - "device": "\u05d4\u05ea\u05e7\u05df", - "password": "\u05e1\u05d9\u05e1\u05de\u05d4", - "protocol": "\u05e4\u05e8\u05d5\u05d8\u05d5\u05e7\u05d5\u05dc", - "username": "\u05e9\u05dd \u05de\u05e9\u05ea\u05de\u05e9" + "device": "\u05d4\u05ea\u05e7\u05df" }, "title": "\u05d4\u05ea\u05d7\u05d1\u05e8 \u05d0\u05dc \u05d1\u05e7\u05e8\u05ea Elk-M1" } diff --git a/homeassistant/components/elkm1/translations/hu.json b/homeassistant/components/elkm1/translations/hu.json index d076ad684c2..d744ac578ab 100644 --- a/homeassistant/components/elkm1/translations/hu.json +++ b/homeassistant/components/elkm1/translations/hu.json @@ -3,8 +3,10 @@ "abort": { "address_already_configured": "Az ElkM1 ezzel a c\u00edmmel m\u00e1r konfigur\u00e1lva van", "already_configured": "Az ezzel az el\u0151taggal rendelkez\u0151 ElkM1 m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", - "cannot_connect": "Sikertelen csatlakoz\u00e1s" + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", + "cannot_connect": "Sikertelen csatlakoz\u00e1s", + "invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s", + "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" }, "error": { "cannot_connect": "Sikertelen csatlakoz\u00e1s", @@ -37,13 +39,7 @@ }, "user": { "data": { - "address": "Az IP-c\u00edm vagy tartom\u00e1ny vagy soros port, ha soros kapcsolaton kereszt\u00fcl csatlakozik.", - "device": "Eszk\u00f6z", - "password": "Jelsz\u00f3", - "prefix": "Egyedi el\u0151tag (hagyja \u00fcresen, ha csak egy ElkM1 van).", - "protocol": "Protokoll", - "temperature_unit": "Az ElkM1 h\u0151m\u00e9rs\u00e9kleti egys\u00e9g haszn\u00e1lja.", - "username": "Felhaszn\u00e1l\u00f3n\u00e9v" + "device": "Eszk\u00f6z" }, "description": "V\u00e1lasszon egy felfedezett rendszert vagy a \u201eK\u00e9zi bevitelt\u201d, ha nem \u00e9szlelt eszk\u00f6zt.", "title": "Csatlakoz\u00e1s az Elk-M1 vez\u00e9rl\u0151h\u00f6z" diff --git a/homeassistant/components/elkm1/translations/id.json b/homeassistant/components/elkm1/translations/id.json index 782906fac0a..4512ad040e1 100644 --- a/homeassistant/components/elkm1/translations/id.json +++ b/homeassistant/components/elkm1/translations/id.json @@ -4,7 +4,9 @@ "address_already_configured": "ElkM1 dengan alamat ini sudah dikonfigurasi", "already_configured": "ElkM1 dengan prefiks ini sudah dikonfigurasi", "already_in_progress": "Alur konfigurasi sedang berlangsung", - "cannot_connect": "Gagal terhubung" + "cannot_connect": "Gagal terhubung", + "invalid_auth": "Autentikasi tidak valid", + "unknown": "Kesalahan yang tidak diharapkan" }, "error": { "cannot_connect": "Gagal terhubung", @@ -37,13 +39,7 @@ }, "user": { "data": { - "address": "Alamat IP atau domain atau port serial jika terhubung melalui serial.", - "device": "Perangkat", - "password": "Kata Sandi", - "prefix": "Prefiks unik (kosongkan jika hanya ada satu ElkM1).", - "protocol": "Protokol", - "temperature_unit": "Unit suhu yang digunakan ElkM1.", - "username": "Nama Pengguna" + "device": "Perangkat" }, "description": "Pilih sistem yang ditemukan atau 'Entri Manual' jika tidak ada perangkat yang ditemukan.", "title": "Hubungkan ke Kontrol Elk-M1" diff --git a/homeassistant/components/elkm1/translations/it.json b/homeassistant/components/elkm1/translations/it.json index fa05ab5d436..9284d2a495c 100644 --- a/homeassistant/components/elkm1/translations/it.json +++ b/homeassistant/components/elkm1/translations/it.json @@ -4,7 +4,9 @@ "address_already_configured": "Un ElkM1 con questo indirizzo \u00e8 gi\u00e0 configurato", "already_configured": "Un ElkM1 con questo prefisso \u00e8 gi\u00e0 configurato", "already_in_progress": "Il flusso di configurazione \u00e8 gi\u00e0 in corso", - "cannot_connect": "Impossibile connettersi" + "cannot_connect": "Impossibile connettersi", + "invalid_auth": "Autenticazione non valida", + "unknown": "Errore imprevisto" }, "error": { "cannot_connect": "Impossibile connettersi", @@ -37,13 +39,7 @@ }, "user": { "data": { - "address": "L'indirizzo IP o il dominio o la porta seriale se ci si connette tramite seriale.", - "device": "Dispositivo", - "password": "Password", - "prefix": "Un prefisso univoco (lascia vuoto se disponi di un solo ElkM1).", - "protocol": "Protocollo", - "temperature_unit": "L'unit\u00e0 di temperatura utilizzata da ElkM1.", - "username": "Nome utente" + "device": "Dispositivo" }, "description": "Scegli un sistema rilevato o \"Inserimento manuale\" se non sono stati rilevati dispositivi.", "title": "Connettiti al controllo Elk-M1" diff --git a/homeassistant/components/elkm1/translations/ja.json b/homeassistant/components/elkm1/translations/ja.json index f280d6d6276..3d86e5f673d 100644 --- a/homeassistant/components/elkm1/translations/ja.json +++ b/homeassistant/components/elkm1/translations/ja.json @@ -4,7 +4,9 @@ "address_already_configured": "\u3053\u306e\u30a2\u30c9\u30ec\u30b9\u306eElkM1\u306f\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059", "already_configured": "\u3053\u306e\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u6301\u3064ElkM1\u306f\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059", "already_in_progress": "\u69cb\u6210\u30d5\u30ed\u30fc\u306f\u3059\u3067\u306b\u9032\u884c\u4e2d\u3067\u3059", - "cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f" + "cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f", + "invalid_auth": "\u7121\u52b9\u306a\u8a8d\u8a3c", + "unknown": "\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc" }, "error": { "cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f", @@ -37,13 +39,7 @@ }, "user": { "data": { - "address": "IP\u30a2\u30c9\u30ec\u30b9\u307e\u305f\u306f\u30c9\u30e1\u30a4\u30f3\u3001\u30b7\u30ea\u30a2\u30eb\u3067\u63a5\u7d9a\u3059\u308b\u5834\u5408\u306f\u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u3002", - "device": "\u30c7\u30d0\u30a4\u30b9", - "password": "\u30d1\u30b9\u30ef\u30fc\u30c9", - "prefix": "\u30e6\u30cb\u30fc\u30af(\u4e00\u610f)\u306a\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9(ElkM1\u304c1\u3064\u3057\u304b\u306a\u3044\u5834\u5408\u306f\u7a7a\u767d\u306e\u307e\u307e\u306b\u3057\u307e\u3059)", - "protocol": "\u30d7\u30ed\u30c8\u30b3\u30eb", - "temperature_unit": "ElkM1\u304c\u4f7f\u7528\u3059\u308b\u6e29\u5ea6\u5358\u4f4d\u3002", - "username": "\u30e6\u30fc\u30b6\u30fc\u540d" + "device": "\u30c7\u30d0\u30a4\u30b9" }, "description": "\u30a2\u30c9\u30ec\u30b9\u6587\u5b57\u5217\u306f\u3001 '\u30bb\u30ad\u30e5\u30a2 '\u304a\u3088\u3073 '\u975e\u30bb\u30ad\u30e5\u30a2 '\u306e\u5834\u5408\u306f\u3001'address[:port]'\u306e\u5f62\u5f0f\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b: '192.168.1.1'\u3002\u30dd\u30fc\u30c8\u306f\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306f'\u975e\u30bb\u30ad\u30e5\u30a2'\u306e\u5834\u5408\u306f\u30012101 \u3067'\u30bb\u30ad\u30e5\u30a2'\u306e\u5834\u5408\u306f\u30012601 \u3067\u3059\u3002\u30b7\u30ea\u30a2\u30eb \u30d7\u30ed\u30c8\u30b3\u30eb\u306e\u5834\u5408\u3001\u30a2\u30c9\u30ec\u30b9\u306f\u3001'tty[:baud]' \u306e\u5f62\u5f0f\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u4f8b: '/dev/ttyS1'\u3002\u30dc\u30fc\u306f\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306f115200\u3067\u3059\u3002", "title": "Elk-M1 Control\u306b\u63a5\u7d9a" diff --git a/homeassistant/components/elkm1/translations/ko.json b/homeassistant/components/elkm1/translations/ko.json index 507f741676a..6ffa3679946 100644 --- a/homeassistant/components/elkm1/translations/ko.json +++ b/homeassistant/components/elkm1/translations/ko.json @@ -11,14 +11,6 @@ }, "step": { "user": { - "data": { - "address": "\uc2dc\ub9ac\uc5bc\uc744 \ud1b5\ud574 \uc5f0\uacb0\ud558\ub294 \uacbd\uc6b0\uc758 IP \uc8fc\uc18c\ub098 \ub3c4\uba54\uc778 \ub610\ub294 \uc2dc\ub9ac\uc5bc \ud3ec\ud2b8.", - "password": "\ube44\ubc00\ubc88\ud638", - "prefix": "\uace0\uc720\ud55c \uc811\ub450\uc0ac (ElkM1 \uc774 \ud558\ub098\ub9cc \uc788\uc73c\uba74 \ube44\uc6cc\ub450\uc138\uc694).", - "protocol": "\ud504\ub85c\ud1a0\ucf5c", - "temperature_unit": "ElkM1 \uc774 \uc0ac\uc6a9\ud558\ub294 \uc628\ub3c4 \ub2e8\uc704.", - "username": "\uc0ac\uc6a9\uc790 \uc774\ub984" - }, "description": "\uc8fc\uc18c \ubb38\uc790\uc5f4\uc740 '\ubcf4\uc548' \ubc0f '\ube44\ubcf4\uc548'\uc5d0 \ub300\ud574 'address[:port]' \ud615\uc2dd\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc608: '192.168.1.1'. \ud3ec\ud2b8\ub294 \uc120\ud0dd \uc0ac\ud56d\uc774\uba70 \uae30\ubcf8\uac12\uc740 '\ube44\ubcf4\uc548' \uc758 \uacbd\uc6b0 2101 \uc774\uace0 '\ubcf4\uc548' \uc758 \uacbd\uc6b0 2601 \uc785\ub2c8\ub2e4. \uc2dc\ub9ac\uc5bc \ud504\ub85c\ud1a0\ucf5c\uc758 \uacbd\uc6b0 \uc8fc\uc18c\ub294 'tty[:baud]' \ud615\uc2dd\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc608: '/dev/ttyS1'. \uc804\uc1a1 \uc18d\ub3c4\ub294 \uc120\ud0dd \uc0ac\ud56d\uc774\uba70 \uae30\ubcf8\uac12\uc740 115200 \uc785\ub2c8\ub2e4.", "title": "Elk-M1 \uc81c\uc5b4\uc5d0 \uc5f0\uacb0\ud558\uae30" } diff --git a/homeassistant/components/elkm1/translations/lb.json b/homeassistant/components/elkm1/translations/lb.json index 084b4a1347f..14d2a82b97e 100644 --- a/homeassistant/components/elkm1/translations/lb.json +++ b/homeassistant/components/elkm1/translations/lb.json @@ -11,14 +11,6 @@ }, "step": { "user": { - "data": { - "address": "IP Adress oder Domain oder Serielle Port falls d'Verbindung seriell ass.", - "password": "Passwuert", - "prefix": "Een eenzegaartege Pr\u00e4fix (eidel lossen wann et n\u00ebmmen 1 ElkM1 g\u00ebtt)", - "protocol": "Protokoll", - "temperature_unit": "Temperatur Eenheet d\u00e9i den ElkM1 benotzt.", - "username": "Benotzernumm" - }, "description": "D'Adress muss an der Form 'adress[:port]' fir 'ges\u00e9chert' an 'onges\u00e9chert' sinn. Beispill: '192.168.1.1'. De Port os optionell an ass standardm\u00e9isseg op 2101 fir 'onges\u00e9chert' an op 2601 fir 'ges\u00e9chert' d\u00e9fin\u00e9iert. Fir de serielle Protokoll, muss d'Adress an der Form 'tty[:baud]' sinn. Beispill: '/dev/ttyS1'. Baud Rate ass optionell an ass standardm\u00e9isseg op 115200 d\u00e9fin\u00e9iert.", "title": "Mat Elk-M1 Control verbannen" } diff --git a/homeassistant/components/elkm1/translations/nl.json b/homeassistant/components/elkm1/translations/nl.json index c3efd45dbc0..c27293ce050 100644 --- a/homeassistant/components/elkm1/translations/nl.json +++ b/homeassistant/components/elkm1/translations/nl.json @@ -4,7 +4,9 @@ "address_already_configured": "Een ElkM1 met dit adres is al geconfigureerd", "already_configured": "Een ElkM1 met dit voorvoegsel is al geconfigureerd", "already_in_progress": "De configuratiestroom is al aan de gang", - "cannot_connect": "Kan geen verbinding maken" + "cannot_connect": "Kan geen verbinding maken", + "invalid_auth": "Ongeldige authenticatie", + "unknown": "Onverwachte fout" }, "error": { "cannot_connect": "Kan geen verbinding maken", @@ -37,13 +39,7 @@ }, "user": { "data": { - "address": "Het IP-adres of domein of seri\u00eble poort bij verbinding via serieel.", - "device": "Apparaat", - "password": "Wachtwoord", - "prefix": "Een uniek voorvoegsel (laat dit leeg als u maar \u00e9\u00e9n ElkM1 heeft).", - "protocol": "Protocol", - "temperature_unit": "De temperatuureenheid die ElkM1 gebruikt.", - "username": "Gebruikersnaam" + "device": "Apparaat" }, "description": "Kies een ontdekt systeem of 'Handmatige invoer' als er geen apparaten zijn ontdekt.", "title": "Maak verbinding met Elk-M1 Control" diff --git a/homeassistant/components/elkm1/translations/no.json b/homeassistant/components/elkm1/translations/no.json index ced77ff0d04..221b9206c81 100644 --- a/homeassistant/components/elkm1/translations/no.json +++ b/homeassistant/components/elkm1/translations/no.json @@ -4,7 +4,9 @@ "address_already_configured": "En ElkM1 med denne adressen er allerede konfigurert", "already_configured": "En ElkM1 med dette prefikset er allerede konfigurert", "already_in_progress": "Konfigurasjonsflyten p\u00e5g\u00e5r allerede", - "cannot_connect": "Tilkobling mislyktes" + "cannot_connect": "Tilkobling mislyktes", + "invalid_auth": "Ugyldig godkjenning", + "unknown": "Uventet feil" }, "error": { "cannot_connect": "Tilkobling mislyktes", @@ -37,13 +39,7 @@ }, "user": { "data": { - "address": "IP-adressen eller domenet eller seriell port hvis du kobler til via seriell.", - "device": "Enhet", - "password": "Passord", - "prefix": "Et unikt prefiks (la v\u00e6re tomt hvis du bare har en ElkM1).", - "protocol": "Protokoll", - "temperature_unit": "Temperaturenheten ElkM1 bruker.", - "username": "Brukernavn" + "device": "Enhet" }, "description": "Velg et oppdaget system eller \"Manuell oppf\u00f8ring\" hvis ingen enheter har blitt oppdaget.", "title": "Koble til Elk-M1-kontroll" diff --git a/homeassistant/components/elkm1/translations/pl.json b/homeassistant/components/elkm1/translations/pl.json index 62900716f62..3b27226438f 100644 --- a/homeassistant/components/elkm1/translations/pl.json +++ b/homeassistant/components/elkm1/translations/pl.json @@ -4,7 +4,9 @@ "address_already_configured": "Urz\u0105dzenie jest ju\u017c skonfigurowane z tym adresem", "already_configured": "ElkM1 z tym prefiksem jest ju\u017c skonfigurowany", "already_in_progress": "Konfiguracja jest ju\u017c w toku", - "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia" + "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", + "invalid_auth": "Niepoprawne uwierzytelnienie", + "unknown": "Nieoczekiwany b\u0142\u0105d" }, "error": { "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", @@ -37,13 +39,7 @@ }, "user": { "data": { - "address": "Adres IP, domena lub port szeregowy w przypadku po\u0142\u0105czenia szeregowego.", - "device": "Urz\u0105dzenie", - "password": "Has\u0142o", - "prefix": "Unikatowy prefiks (pozostaw pusty, je\u015bli masz tylko jeden ElkM1).", - "protocol": "Protok\u00f3\u0142", - "temperature_unit": "Jednostka temperatury u\u017cywanej przez ElkM1.", - "username": "Nazwa u\u017cytkownika" + "device": "Urz\u0105dzenie" }, "description": "Wybierz wykryty system lub \u201eWpis r\u0119czny\u201d, je\u015bli nie wykryto \u017cadnych urz\u0105dze\u0144.", "title": "Pod\u0142\u0105czenie do sterownika Elk-M1" diff --git a/homeassistant/components/elkm1/translations/pt-BR.json b/homeassistant/components/elkm1/translations/pt-BR.json index 7cb9a5f101a..6fb03ab66e8 100644 --- a/homeassistant/components/elkm1/translations/pt-BR.json +++ b/homeassistant/components/elkm1/translations/pt-BR.json @@ -4,7 +4,9 @@ "address_already_configured": "Um ElkM1 com este endere\u00e7o j\u00e1 est\u00e1 configurado", "already_configured": "A conta j\u00e1 foi configurada", "already_in_progress": "O fluxo de configura\u00e7\u00e3o j\u00e1 est\u00e1 em andamento", - "cannot_connect": "Falha ao conectar" + "cannot_connect": "Falha ao conectar", + "invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida", + "unknown": "Erro inesperado" }, "error": { "cannot_connect": "Falha ao conectar", @@ -37,13 +39,7 @@ }, "user": { "data": { - "address": "O endere\u00e7o IP ou dom\u00ednio ou porta serial se estiver conectando via serial.", - "device": "Dispositivo", - "password": "Senha", - "prefix": "Um prefixo exclusivo (deixe em branco se voc\u00ea tiver apenas um ElkM1).", - "protocol": "Protocolo", - "temperature_unit": "A unidade de temperatura que ElkM1 usa.", - "username": "Usu\u00e1rio" + "device": "Dispositivo" }, "description": "Escolha um sistema descoberto ou 'Entrada Manual' se nenhum dispositivo foi descoberto.", "title": "Conecte ao controle Elk-M1" diff --git a/homeassistant/components/elkm1/translations/pt.json b/homeassistant/components/elkm1/translations/pt.json index 48d278ac354..2e669c21f1e 100644 --- a/homeassistant/components/elkm1/translations/pt.json +++ b/homeassistant/components/elkm1/translations/pt.json @@ -4,15 +4,6 @@ "cannot_connect": "Falha na liga\u00e7\u00e3o", "invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida", "unknown": "Erro inesperado" - }, - "step": { - "user": { - "data": { - "password": "Palavra-passe (segura apenas)", - "protocol": "Protocolo", - "username": "Nome de utilizador (apenas seguro)." - } - } } } } \ No newline at end of file diff --git a/homeassistant/components/elkm1/translations/ru.json b/homeassistant/components/elkm1/translations/ru.json index 1b4bf7250d7..624166fea48 100644 --- a/homeassistant/components/elkm1/translations/ru.json +++ b/homeassistant/components/elkm1/translations/ru.json @@ -4,7 +4,9 @@ "address_already_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441 \u044d\u0442\u0438\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.", "already_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441 \u044d\u0442\u0438\u043c \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.", "already_in_progress": "\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f.", - "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f." + "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", + "invalid_auth": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.", + "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.", @@ -37,13 +39,7 @@ }, "user": { "data": { - "address": "IP-\u0430\u0434\u0440\u0435\u0441, \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442", - "device": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e", - "password": "\u041f\u0430\u0440\u043e\u043b\u044c", - "prefix": "\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 (\u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0443\u0441\u0442\u044b\u043c, \u0435\u0441\u043b\u0438 \u0443 \u0412\u0430\u0441 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d ElkM1)", - "protocol": "\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b", - "temperature_unit": "\u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b", - "username": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f" + "device": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e" }, "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438\u043b\u0438 'Manual Entry', \u0435\u0441\u043b\u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435 \u0431\u044b\u043b\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b.", "title": "Elk-M1 Control" diff --git a/homeassistant/components/elkm1/translations/sl.json b/homeassistant/components/elkm1/translations/sl.json index a815011988e..50988abb1d3 100644 --- a/homeassistant/components/elkm1/translations/sl.json +++ b/homeassistant/components/elkm1/translations/sl.json @@ -11,14 +11,6 @@ }, "step": { "user": { - "data": { - "address": "IP naslov, domena ali serijska vrata, \u010de se povezujete prek serijske povezave.", - "password": "Geslo (samo varno).", - "prefix": "Edinstvena predpona (pustite prazno, \u010de imate samo en ElkM1).", - "protocol": "Protokol", - "temperature_unit": "Temperaturna enota, ki jo uporablja ElkM1.", - "username": "Uporabni\u0161ko ime (samo varno)." - }, "description": "Naslov mora biti v obliki \"naslov[:port]\" za \"varno\" in \"ne-varno'. Primer: '192.168.1.1'. Vrata so neobvezna in so privzeto nastavljena na 2101 za \"non-secure\" in 2601 za 'varno'. Za serijski protokol, mora biti naslov v obliki \" tty[:baud]'. Primer: '/dev/ttyS1'. Baud je neobvezen in privzeto nastavljen na 115200.", "title": "Pove\u017eite se z Elk-M1 Control" } diff --git a/homeassistant/components/elkm1/translations/sv.json b/homeassistant/components/elkm1/translations/sv.json index 23a7d475a6f..19d9bb17e4b 100644 --- a/homeassistant/components/elkm1/translations/sv.json +++ b/homeassistant/components/elkm1/translations/sv.json @@ -4,13 +4,6 @@ "cannot_connect": "Det gick inte att ansluta, f\u00f6rs\u00f6k igen", "invalid_auth": "Ogiltig autentisering", "unknown": "Ov\u00e4ntat fel" - }, - "step": { - "user": { - "data": { - "protocol": "Protokoll" - } - } } } } \ No newline at end of file diff --git a/homeassistant/components/elkm1/translations/tr.json b/homeassistant/components/elkm1/translations/tr.json index e8f147c8d57..d1c865bffd5 100644 --- a/homeassistant/components/elkm1/translations/tr.json +++ b/homeassistant/components/elkm1/translations/tr.json @@ -4,7 +4,9 @@ "address_already_configured": "Bu adrese sahip bir ElkM1 zaten yap\u0131land\u0131r\u0131lm\u0131\u015ft\u0131r", "already_configured": "Bu \u00f6nek ile bir ElkM1 zaten yap\u0131land\u0131r\u0131lm\u0131\u015ft\u0131r", "already_in_progress": "Yap\u0131land\u0131rma ak\u0131\u015f\u0131 zaten devam ediyor", - "cannot_connect": "Ba\u011flanma hatas\u0131" + "cannot_connect": "Ba\u011flanma hatas\u0131", + "invalid_auth": "Ge\u00e7ersiz kimlik do\u011frulama", + "unknown": "Beklenmeyen hata" }, "error": { "cannot_connect": "Ba\u011flanma hatas\u0131", @@ -37,13 +39,7 @@ }, "user": { "data": { - "address": "Seri yoluyla ba\u011flan\u0131l\u0131yorsa IP adresi veya etki alan\u0131 veya seri ba\u011flant\u0131 noktas\u0131.", - "device": "Cihaz", - "password": "Parola", - "prefix": "Benzersiz bir \u00f6nek (yaln\u0131zca bir ElkM1'iniz varsa bo\u015f b\u0131rak\u0131n).", - "protocol": "Protokol", - "temperature_unit": "ElkM1'in kulland\u0131\u011f\u0131 s\u0131cakl\u0131k birimi.", - "username": "Kullan\u0131c\u0131 Ad\u0131" + "device": "Cihaz" }, "description": "Ke\u015ffedilen bir sistem veya ke\u015ffedilmemi\u015fse 'Manuel Giri\u015f' se\u00e7in.", "title": "Elk-M1 Kontrol\u00fcne Ba\u011flan\u0131n" diff --git a/homeassistant/components/elkm1/translations/uk.json b/homeassistant/components/elkm1/translations/uk.json index a8e711a4590..d794c6ecf69 100644 --- a/homeassistant/components/elkm1/translations/uk.json +++ b/homeassistant/components/elkm1/translations/uk.json @@ -11,14 +11,6 @@ }, "step": { "user": { - "data": { - "address": "IP-\u0430\u0434\u0440\u0435\u0441\u0430, \u0434\u043e\u043c\u0435\u043d\u043d\u0435 \u0456\u043c'\u044f \u0430\u0431\u043e \u043f\u043e\u0441\u043b\u0456\u0434\u043e\u0432\u043d\u0438\u0439 \u043f\u043e\u0440\u0442", - "password": "\u041f\u0430\u0440\u043e\u043b\u044c", - "prefix": "\u0423\u043d\u0456\u043a\u0430\u043b\u044c\u043d\u0438\u0439 \u043f\u0440\u0435\u0444\u0456\u043a\u0441 (\u0437\u0430\u043b\u0438\u0448\u0442\u0435 \u043f\u043e\u0440\u043e\u0436\u043d\u0456\u043c, \u044f\u043a\u0449\u043e \u0443 \u0412\u0430\u0441 \u0442\u0456\u043b\u044c\u043a\u0438 \u043e\u0434\u0438\u043d ElkM1)", - "protocol": "\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b", - "temperature_unit": "\u041e\u0434\u0438\u043d\u0438\u0446\u044f \u0432\u0438\u043c\u0456\u0440\u0443 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0438", - "username": "\u0406\u043c'\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430" - }, "description": "\u0420\u044f\u0434\u043e\u043a \u0430\u0434\u0440\u0435\u0441\u0438 \u043f\u043e\u0432\u0438\u043d\u043d\u0430 \u0431\u0443\u0442\u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0456 'addres[:port]' \u0434\u043b\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0456\u0432 'secure' \u0456 'non-secure' (\u043d\u0430\u043f\u0440\u0438\u043a\u043b\u0430\u0434: '192.168.1.1'). \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 'port' \u0432\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043d\u0435\u043e\u0431\u043e\u0432'\u044f\u0437\u043a\u043e\u0432\u043e, \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c \u0432\u0456\u043d \u0434\u043e\u0440\u0456\u0432\u043d\u044e\u0454 2101 \u0434\u043b\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 'non-secure' \u0456 2601 \u0434\u043b\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 'secure'. \u0414\u043b\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 'serial' \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u043e\u0432\u0438\u043d\u043d\u0430 \u0431\u0443\u0442\u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0456 'tty[:baud]' (\u043d\u0430\u043f\u0440\u0438\u043a\u043b\u0430\u0434: '/dev/ttyS1'). \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 'baud' \u0432\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043d\u0435\u043e\u0431\u043e\u0432'\u044f\u0437\u043a\u043e\u0432\u043e, \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c \u0432\u0456\u043d \u0434\u043e\u0440\u0456\u0432\u043d\u044e\u0454 115200.", "title": "Elk-M1 Control" } diff --git a/homeassistant/components/elkm1/translations/zh-Hant.json b/homeassistant/components/elkm1/translations/zh-Hant.json index 543f93626ce..9405180fe0d 100644 --- a/homeassistant/components/elkm1/translations/zh-Hant.json +++ b/homeassistant/components/elkm1/translations/zh-Hant.json @@ -4,7 +4,9 @@ "address_already_configured": "\u4f7f\u7528\u6b64\u4f4d\u5740\u7684\u4e00\u7d44 ElkM1 \u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", "already_configured": "\u4f7f\u7528\u6b64 Prefix \u7684\u4e00\u7d44 ElkM1 \u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", "already_in_progress": "\u8a2d\u5b9a\u5df2\u7d93\u9032\u884c\u4e2d", - "cannot_connect": "\u9023\u7dda\u5931\u6557" + "cannot_connect": "\u9023\u7dda\u5931\u6557", + "invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548", + "unknown": "\u672a\u9810\u671f\u932f\u8aa4" }, "error": { "cannot_connect": "\u9023\u7dda\u5931\u6557", @@ -37,13 +39,7 @@ }, "user": { "data": { - "address": "IP \u6216\u7db2\u57df\u540d\u7a31\u3001\u5e8f\u5217\u57e0\uff08\u5047\u5982\u900f\u904e\u5e8f\u5217\u9023\u7dda\uff09\u3002", - "device": "\u88dd\u7f6e", - "password": "\u5bc6\u78bc", - "prefix": "\u7368\u4e00\u7684 Prefix\uff08\u5047\u5982\u50c5\u6709\u4e00\u7d44 ElkM1 \u5247\u4fdd\u7559\u7a7a\u767d\uff09\u3002", - "protocol": "\u901a\u8a0a\u5354\u5b9a", - "temperature_unit": "ElkM1 \u4f7f\u7528\u6eab\u5ea6\u55ae\u4f4d\u3002", - "username": "\u4f7f\u7528\u8005\u540d\u7a31" + "device": "\u88dd\u7f6e" }, "description": "\u9078\u64c7\u6240\u767c\u73fe\u5230\u7684\u7cfb\u7d71\uff0c\u6216\u5047\u5982\u6c92\u627e\u5230\u7684\u8a71\u9032\u884c\u624b\u52d5\u8f38\u5165\u3002", "title": "\u9023\u7dda\u81f3 Elk-M1 Control" diff --git a/homeassistant/components/emulated_roku/translations/hu.json b/homeassistant/components/emulated_roku/translations/hu.json index 53b66f6db19..74cbdbcec79 100644 --- a/homeassistant/components/emulated_roku/translations/hu.json +++ b/homeassistant/components/emulated_roku/translations/hu.json @@ -10,7 +10,7 @@ "advertise_port": "Port k\u00f6zl\u00e9se", "host_ip": "IP c\u00edm", "listen_port": "Port", - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "upnp_bind_multicast": "K\u00f6t\u00f6tt multicast (igaz/hamis)" }, "title": "A kiszolg\u00e1l\u00f3 szerver konfigur\u00e1l\u00e1sa" diff --git a/homeassistant/components/enphase_envoy/translations/en.json b/homeassistant/components/enphase_envoy/translations/en.json index ff600fea454..5d4617ed9fa 100644 --- a/homeassistant/components/enphase_envoy/translations/en.json +++ b/homeassistant/components/enphase_envoy/translations/en.json @@ -2,8 +2,7 @@ "config": { "abort": { "already_configured": "Device is already configured", - "reauth_successful": "Re-authentication was successful", - "not_ipv4_address": "Only IPv4 addresess are supported" + "reauth_successful": "Re-authentication was successful" }, "error": { "cannot_connect": "Failed to connect", diff --git a/homeassistant/components/environment_canada/translations/de.json b/homeassistant/components/environment_canada/translations/de.json index c351683007f..6c9be14be27 100644 --- a/homeassistant/components/environment_canada/translations/de.json +++ b/homeassistant/components/environment_canada/translations/de.json @@ -15,7 +15,7 @@ "longitude": "L\u00e4ngengrad", "station": "ID der Wetterstation" }, - "description": "Es muss entweder eine Stations-ID oder der Breitengrad/L\u00e4ngengrad angegeben werden. Als Standardwerte f\u00fcr Breitengrad/L\u00e4ngengrad werden die in Ihrer Home Assistant-Installation konfigurierten Werte verwendet. Bei Angabe von Koordinaten wird die den Koordinaten am n\u00e4chsten gelegene Wetterstation verwendet. Wenn ein Stationscode verwendet wird, muss er dem Format entsprechen: PP/Code, wobei PP f\u00fcr die zweistellige Provinz und Code f\u00fcr die Stationskennung steht. Die Liste der Stations-IDs findest du hier: https://dd.weather.gc.ca/citypage_weather/docs/site_list_towns_en.csv. Die Wetterinformationen k\u00f6nnen entweder in Englisch oder Franz\u00f6sisch abgerufen werden.", + "description": "Es muss entweder eine Stations-ID oder der Breitengrad/L\u00e4ngengrad angegeben werden. Als Standardwerte f\u00fcr Breitengrad/L\u00e4ngengrad werden die in deiner Home Assistant-Installation konfigurierten Werte verwendet. Bei Angabe von Koordinaten wird die den Koordinaten am n\u00e4chsten gelegene Wetterstation verwendet. Wenn ein Stationscode verwendet wird, muss er dem Format entsprechen: PP/Code, wobei PP f\u00fcr die zweistellige Provinz und Code f\u00fcr die Stationskennung steht. Die Liste der Stations-IDs findest du hier: https://dd.weather.gc.ca/citypage_weather/docs/site_list_towns_en.csv. Die Wetterinformationen k\u00f6nnen entweder in Englisch oder Franz\u00f6sisch abgerufen werden.", "title": "Standort Kanada: Wetterstandort und Sprache" } } diff --git a/homeassistant/components/epson/translations/hu.json b/homeassistant/components/epson/translations/hu.json index e3aa507b7c1..ff56db57da9 100644 --- a/homeassistant/components/epson/translations/hu.json +++ b/homeassistant/components/epson/translations/hu.json @@ -8,7 +8,7 @@ "user": { "data": { "host": "C\u00edm", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" } } } diff --git a/homeassistant/components/esphome/translations/cs.json b/homeassistant/components/esphome/translations/cs.json index c6885e06851..cdd86bd2577 100644 --- a/homeassistant/components/esphome/translations/cs.json +++ b/homeassistant/components/esphome/translations/cs.json @@ -11,7 +11,7 @@ "invalid_psk": "Transportn\u00ed \u0161ifrovac\u00ed kl\u00ed\u010d je neplatn\u00fd. Ujist\u011bte se, \u017ee odpov\u00edd\u00e1 tomu, co m\u00e1te ve sv\u00e9 konfiguraci", "resolve_error": "Nelze naj\u00edt IP adresu uzlu ESP. Pokud tato chyba p\u0159etrv\u00e1v\u00e1, nastavte statickou adresu IP: https://esphomelib.com/esphomeyaml/components/wifi.html#manual-ips" }, - "flow_title": "ESPHome: {name}", + "flow_title": "{name}", "step": { "authenticate": { "data": { diff --git a/homeassistant/components/esphome/translations/hu.json b/homeassistant/components/esphome/translations/hu.json index 17af0e57d26..e8e6c9b2dc2 100644 --- a/homeassistant/components/esphome/translations/hu.json +++ b/homeassistant/components/esphome/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "reauth_successful": "Az \u00fajrahiteles\u00edt\u00e9s sikeres volt." }, "error": { diff --git a/homeassistant/components/evil_genius_labs/translations/cs.json b/homeassistant/components/evil_genius_labs/translations/cs.json index e1bf8e7f45f..7a929c1286f 100644 --- a/homeassistant/components/evil_genius_labs/translations/cs.json +++ b/homeassistant/components/evil_genius_labs/translations/cs.json @@ -1,6 +1,7 @@ { "config": { "error": { + "timeout": "Vypr\u0161el \u010dasov\u00fd limit pro nav\u00e1z\u00e1n\u00ed spojen\u00ed", "unknown": "Neo\u010dek\u00e1van\u00e1 chyba" } } diff --git a/homeassistant/components/ezviz/translations/it.json b/homeassistant/components/ezviz/translations/it.json index 0c6ce669ba3..febba0cad51 100644 --- a/homeassistant/components/ezviz/translations/it.json +++ b/homeassistant/components/ezviz/translations/it.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured_account": "L'account \u00e8 gi\u00e0 configurato", - "ezviz_cloud_account_missing": "Ezviz cloud account mancante. Si prega di riconfigurare l'account Ezviz cloud", + "ezviz_cloud_account_missing": "Ezviz cloud account mancante. Riconfigura l'account Ezviz cloud", "unknown": "Errore imprevisto" }, "error": { diff --git a/homeassistant/components/fan/translations/hu.json b/homeassistant/components/fan/translations/hu.json index ec3175b8290..50e659b001a 100644 --- a/homeassistant/components/fan/translations/hu.json +++ b/homeassistant/components/fan/translations/hu.json @@ -9,6 +9,7 @@ "is_on": "{entity_name} be van kapcsolva" }, "trigger_type": { + "changed_states": "{entity_name} be- vagy kikapcsolt", "toggled": "{entity_name} \u00e1tkapcsolt", "turned_off": "{entity_name} ki lett kapcsolva", "turned_on": "{entity_name} be lett kapcsolva" diff --git a/homeassistant/components/fibaro/translations/bg.json b/homeassistant/components/fibaro/translations/bg.json new file mode 100644 index 00000000000..9f39b8c9185 --- /dev/null +++ b/homeassistant/components/fibaro/translations/bg.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u0442\u043e \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e" + }, + "error": { + "cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435", + "invalid_auth": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0432\u0430\u043d\u0435", + "unknown": "\u041d\u0435\u043e\u0447\u0430\u043a\u0432\u0430\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430" + }, + "step": { + "user": { + "data": { + "password": "\u041f\u0430\u0440\u043e\u043b\u0430", + "url": "URL \u0432\u044a\u0432 \u0444\u043e\u0440\u043c\u0430\u0442 URL", + "username": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e \u0438\u043c\u0435" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/fibaro/translations/ca.json b/homeassistant/components/fibaro/translations/ca.json new file mode 100644 index 00000000000..8e04b3567f8 --- /dev/null +++ b/homeassistant/components/fibaro/translations/ca.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "already_configured": "El dispositiu ja est\u00e0 configurat" + }, + "error": { + "cannot_connect": "Ha fallat la connexi\u00f3", + "invalid_auth": "Autenticaci\u00f3 inv\u00e0lida", + "unknown": "Error inesperat" + }, + "step": { + "user": { + "data": { + "import_plugins": "Vols importar les entitats dels complements Fibaro?", + "password": "Contrasenya", + "url": "URL en el format http://HOST/api/", + "username": "Nom d'usuari" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/fibaro/translations/de.json b/homeassistant/components/fibaro/translations/de.json new file mode 100644 index 00000000000..831abc85929 --- /dev/null +++ b/homeassistant/components/fibaro/translations/de.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "already_configured": "Ger\u00e4t ist bereits konfiguriert" + }, + "error": { + "cannot_connect": "Verbindung fehlgeschlagen", + "invalid_auth": "Ung\u00fcltige Authentifizierung", + "unknown": "Unerwarteter Fehler" + }, + "step": { + "user": { + "data": { + "import_plugins": "Entit\u00e4ten aus Fibaro-Plugins importieren?", + "password": "Passwort", + "url": "URL im Format http://HOST/api/", + "username": "Benutzername" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/fibaro/translations/el.json b/homeassistant/components/fibaro/translations/el.json new file mode 100644 index 00000000000..d2a2659646f --- /dev/null +++ b/homeassistant/components/fibaro/translations/el.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "already_configured": "\u0397 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03b8\u03b5\u03af" + }, + "error": { + "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", + "invalid_auth": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", + "unknown": "\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" + }, + "step": { + "user": { + "data": { + "import_plugins": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03bf\u03bd\u03c4\u03bf\u03c4\u03ae\u03c4\u03c9\u03bd \u03b1\u03c0\u03cc \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03b1 fibaro;", + "password": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", + "url": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03bc\u03b5 \u03c4\u03b7 \u03bc\u03bf\u03c1\u03c6\u03ae http://HOST/api/", + "username": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/fibaro/translations/en.json b/homeassistant/components/fibaro/translations/en.json index 2baeb3a7213..6bcff530798 100644 --- a/homeassistant/components/fibaro/translations/en.json +++ b/homeassistant/components/fibaro/translations/en.json @@ -11,9 +11,9 @@ "step": { "user": { "data": { - "url": "URL in the format http://HOST/api/", "import_plugins": "Import entities from fibaro plugins?", "password": "Password", + "url": "URL in the format http://HOST/api/", "username": "Username" } } diff --git a/homeassistant/components/fibaro/translations/et.json b/homeassistant/components/fibaro/translations/et.json new file mode 100644 index 00000000000..d9f140f8380 --- /dev/null +++ b/homeassistant/components/fibaro/translations/et.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "already_configured": "Seade on juba h\u00e4\u00e4lestatud" + }, + "error": { + "cannot_connect": "\u00dchendamine nurjus", + "invalid_auth": "Tuvastamine nurjus", + "unknown": "Ootamatu t\u00f5rge" + }, + "step": { + "user": { + "data": { + "import_plugins": "Kas importida olemid fibaro pistikprogrammidest?", + "password": "Salas\u00f5na", + "url": "URL vormingus http://HOST/api/", + "username": "Kasutajanimi" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/fibaro/translations/fr.json b/homeassistant/components/fibaro/translations/fr.json new file mode 100644 index 00000000000..8dee1529959 --- /dev/null +++ b/homeassistant/components/fibaro/translations/fr.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "already_configured": "L'appareil est d\u00e9j\u00e0 configur\u00e9" + }, + "error": { + "cannot_connect": "\u00c9chec de connexion", + "invalid_auth": "Authentification non valide", + "unknown": "Erreur inattendue" + }, + "step": { + "user": { + "data": { + "import_plugins": "Importer les entit\u00e9s \u00e0 partir des plugins fibaro\u00a0?", + "password": "Mot de passe", + "url": "URL au format http://HOST/api/", + "username": "Nom d'utilisateur" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/fibaro/translations/he.json b/homeassistant/components/fibaro/translations/he.json new file mode 100644 index 00000000000..c479d8488f2 --- /dev/null +++ b/homeassistant/components/fibaro/translations/he.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "\u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05d4\u05ea\u05e7\u05df \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4" + }, + "error": { + "cannot_connect": "\u05d4\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05e0\u05db\u05e9\u05dc\u05d4", + "invalid_auth": "\u05d0\u05d9\u05de\u05d5\u05ea \u05dc\u05d0 \u05d7\u05d5\u05e7\u05d9", + "unknown": "\u05e9\u05d2\u05d9\u05d0\u05d4 \u05d1\u05dc\u05ea\u05d9 \u05e6\u05e4\u05d5\u05d9\u05d4" + }, + "step": { + "user": { + "data": { + "password": "\u05e1\u05d9\u05e1\u05de\u05d4", + "username": "\u05e9\u05dd \u05de\u05e9\u05ea\u05de\u05e9" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/fibaro/translations/hu.json b/homeassistant/components/fibaro/translations/hu.json new file mode 100644 index 00000000000..d976d4b1a96 --- /dev/null +++ b/homeassistant/components/fibaro/translations/hu.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van" + }, + "error": { + "cannot_connect": "Sikertelen csatlakoz\u00e1s", + "invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s", + "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" + }, + "step": { + "user": { + "data": { + "import_plugins": "Import\u00e1ln\u00e1 az entit\u00e1sokat a fibaro be\u00e9p\u00fcl\u0151 modulokb\u00f3l?", + "password": "Jelsz\u00f3", + "url": "URL a k\u00f6vetkez\u0151 form\u00e1tumban: http://C\u00cdM/api/", + "username": "Felhaszn\u00e1l\u00f3n\u00e9v" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/fibaro/translations/id.json b/homeassistant/components/fibaro/translations/id.json new file mode 100644 index 00000000000..715ad91c275 --- /dev/null +++ b/homeassistant/components/fibaro/translations/id.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "already_configured": "Perangkat sudah dikonfigurasi" + }, + "error": { + "cannot_connect": "Gagal terhubung", + "invalid_auth": "Autentikasi tidak valid", + "unknown": "Kesalahan yang tidak diharapkan" + }, + "step": { + "user": { + "data": { + "import_plugins": "Impor entitas dari plugin fibaro?", + "password": "Kata Sandi", + "url": "URL dalam format http://HOST/api/", + "username": "Nama Pengguna" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/fibaro/translations/it.json b/homeassistant/components/fibaro/translations/it.json new file mode 100644 index 00000000000..641ed94e49f --- /dev/null +++ b/homeassistant/components/fibaro/translations/it.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "already_configured": "Il dispositivo \u00e8 gi\u00e0 configurato" + }, + "error": { + "cannot_connect": "Impossibile connettersi", + "invalid_auth": "Autenticazione non valida", + "unknown": "Errore imprevisto" + }, + "step": { + "user": { + "data": { + "import_plugins": "Vuoi importare le entit\u00e0 dai plugin fibaro?", + "password": "Password", + "url": "URL nel formato http://HOST/api/", + "username": "Nome utente" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/fibaro/translations/ja.json b/homeassistant/components/fibaro/translations/ja.json new file mode 100644 index 00000000000..8fc6562ff3b --- /dev/null +++ b/homeassistant/components/fibaro/translations/ja.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "already_configured": "\u30c7\u30d0\u30a4\u30b9\u306f\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059" + }, + "error": { + "cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f", + "invalid_auth": "\u7121\u52b9\u306a\u8a8d\u8a3c", + "unknown": "\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc" + }, + "step": { + "user": { + "data": { + "import_plugins": "fibaro\u30d7\u30e9\u30b0\u30a4\u30f3\u304b\u3089\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u307e\u3059\u304b\uff1f", + "password": "\u30d1\u30b9\u30ef\u30fc\u30c9", + "url": "URL\u306e\u5f62\u5f0f\u306f\u3001http://HOST/api/ \u3067\u3059", + "username": "\u30e6\u30fc\u30b6\u30fc\u540d" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/fibaro/translations/nl.json b/homeassistant/components/fibaro/translations/nl.json new file mode 100644 index 00000000000..72b8588d1e4 --- /dev/null +++ b/homeassistant/components/fibaro/translations/nl.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "already_configured": "Apparaat is al geconfigureerd" + }, + "error": { + "cannot_connect": "Kon niet verbinden", + "invalid_auth": "Ongeldige authenticatie", + "unknown": "Onverwachte fout" + }, + "step": { + "user": { + "data": { + "import_plugins": "Entiteiten importeren uit fibaro-plug-ins?", + "password": "Wachtwoord", + "url": "URL in het formaat http://HOST/api/", + "username": "Gebruikersnaam" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/fibaro/translations/no.json b/homeassistant/components/fibaro/translations/no.json new file mode 100644 index 00000000000..8c868bb1ad8 --- /dev/null +++ b/homeassistant/components/fibaro/translations/no.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "already_configured": "Enheten er allerede konfigurert" + }, + "error": { + "cannot_connect": "Tilkobling mislyktes", + "invalid_auth": "Ugyldig godkjenning", + "unknown": "Uventet feil" + }, + "step": { + "user": { + "data": { + "import_plugins": "Importere enheter fra fibaro plugins?", + "password": "Passord", + "url": "URL i formatet http://HOST/api/", + "username": "Brukernavn" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/fibaro/translations/pl.json b/homeassistant/components/fibaro/translations/pl.json new file mode 100644 index 00000000000..ce4b2652d80 --- /dev/null +++ b/homeassistant/components/fibaro/translations/pl.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "already_configured": "Urz\u0105dzenie jest ju\u017c skonfigurowane" + }, + "error": { + "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", + "invalid_auth": "Niepoprawne uwierzytelnienie", + "unknown": "Nieoczekiwany b\u0142\u0105d" + }, + "step": { + "user": { + "data": { + "import_plugins": "Zaimportowa\u0107 encje z wtyczek fibaro?", + "password": "Has\u0142o", + "url": "Adres URL w formacie http://HOST/api/", + "username": "Nazwa u\u017cytkownika" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/fibaro/translations/pt-BR.json b/homeassistant/components/fibaro/translations/pt-BR.json new file mode 100644 index 00000000000..3e0f3139fa7 --- /dev/null +++ b/homeassistant/components/fibaro/translations/pt-BR.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "already_configured": "Dispositivo j\u00e1 est\u00e1 configurado" + }, + "error": { + "cannot_connect": "Falha ao conectar", + "invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida", + "unknown": "Erro inesperado" + }, + "step": { + "user": { + "data": { + "import_plugins": "Importar entidades de plugins fibaro?", + "password": "Senha", + "url": "URL no formato http://HOST/api/", + "username": "Usu\u00e1rio" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/fibaro/translations/ru.json b/homeassistant/components/fibaro/translations/ru.json new file mode 100644 index 00000000000..56e75b5fa34 --- /dev/null +++ b/homeassistant/components/fibaro/translations/ru.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "already_configured": "\u042d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 Home Assistant." + }, + "error": { + "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", + "invalid_auth": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.", + "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." + }, + "step": { + "user": { + "data": { + "import_plugins": "\u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438\u0437 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 fibaro", + "password": "\u041f\u0430\u0440\u043e\u043b\u044c", + "url": "URL-\u0430\u0434\u0440\u0435\u0441 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 http://HOST/api/", + "username": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/fibaro/translations/tr.json b/homeassistant/components/fibaro/translations/tr.json new file mode 100644 index 00000000000..c873e0dafd3 --- /dev/null +++ b/homeassistant/components/fibaro/translations/tr.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "already_configured": "Cihaz zaten yap\u0131land\u0131r\u0131lm\u0131\u015f" + }, + "error": { + "cannot_connect": "Ba\u011flanma hatas\u0131", + "invalid_auth": "Ge\u00e7ersiz kimlik do\u011frulama", + "unknown": "Beklenmeyen hata" + }, + "step": { + "user": { + "data": { + "import_plugins": "Varl\u0131klar\u0131 fibaro eklentilerinden i\u00e7e aktar\u0131ls\u0131n m\u0131?", + "password": "Parola", + "url": "http://HOST/api/ bi\u00e7imindeki URL", + "username": "Kullan\u0131c\u0131 Ad\u0131" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/fibaro/translations/zh-Hant.json b/homeassistant/components/fibaro/translations/zh-Hant.json new file mode 100644 index 00000000000..e494fb1012f --- /dev/null +++ b/homeassistant/components/fibaro/translations/zh-Hant.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "already_configured": "\u88dd\u7f6e\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210" + }, + "error": { + "cannot_connect": "\u9023\u7dda\u5931\u6557", + "invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548", + "unknown": "\u672a\u9810\u671f\u932f\u8aa4" + }, + "step": { + "user": { + "data": { + "import_plugins": "\u5f9e fibaro \u5916\u639b\u532f\u5165\u5be6\u9ad4\uff1f", + "password": "\u5bc6\u78bc", + "url": "URL \u683c\u5f0f\u70ba http://HOST/api/", + "username": "\u4f7f\u7528\u8005\u540d\u7a31" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/filesize/translations/bg.json b/homeassistant/components/filesize/translations/bg.json new file mode 100644 index 00000000000..cfee062d421 --- /dev/null +++ b/homeassistant/components/filesize/translations/bg.json @@ -0,0 +1,19 @@ +{ + "config": { + "abort": { + "already_configured": "\u0423\u0441\u043b\u0443\u0433\u0430\u0442\u0430 \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0430" + }, + "error": { + "not_allowed": "\u041f\u044a\u0442\u044f\u0442 \u043d\u0435 \u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d", + "not_valid": "\u041f\u044a\u0442\u044f\u0442 \u043d\u0435 \u0435 \u0432\u0430\u043b\u0438\u0434\u0435\u043d" + }, + "step": { + "user": { + "data": { + "file_path": "\u041f\u044a\u0442 \u043a\u044a\u043c \u0444\u0430\u0439\u043b\u0430" + } + } + } + }, + "title": "\u0420\u0430\u0437\u043c\u0435\u0440 \u043d\u0430 \u0444\u0430\u0439\u043b\u0430" +} \ No newline at end of file diff --git a/homeassistant/components/filesize/translations/ca.json b/homeassistant/components/filesize/translations/ca.json new file mode 100644 index 00000000000..7bdcb4ae522 --- /dev/null +++ b/homeassistant/components/filesize/translations/ca.json @@ -0,0 +1,19 @@ +{ + "config": { + "abort": { + "already_configured": "El servei ja est\u00e0 configurat" + }, + "error": { + "not_allowed": "Ruta no permesa", + "not_valid": "Ruta inv\u00e0lida" + }, + "step": { + "user": { + "data": { + "file_path": "Ruta al fitxer" + } + } + } + }, + "title": "Mida de fitxer" +} \ No newline at end of file diff --git a/homeassistant/components/filesize/translations/de.json b/homeassistant/components/filesize/translations/de.json new file mode 100644 index 00000000000..ac101d35783 --- /dev/null +++ b/homeassistant/components/filesize/translations/de.json @@ -0,0 +1,19 @@ +{ + "config": { + "abort": { + "already_configured": "Der Dienst ist bereits konfiguriert" + }, + "error": { + "not_allowed": "Pfad nicht erlaubt", + "not_valid": "Pfad ung\u00fcltig" + }, + "step": { + "user": { + "data": { + "file_path": "Pfad zur Datei" + } + } + } + }, + "title": "Dateigr\u00f6\u00dfe" +} \ No newline at end of file diff --git a/homeassistant/components/filesize/translations/el.json b/homeassistant/components/filesize/translations/el.json new file mode 100644 index 00000000000..c1b8f4eab2c --- /dev/null +++ b/homeassistant/components/filesize/translations/el.json @@ -0,0 +1,19 @@ +{ + "config": { + "abort": { + "already_configured": "\u0397 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af" + }, + "error": { + "not_allowed": "\u0397 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae \u03b4\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9", + "not_valid": "\u0397 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7" + }, + "step": { + "user": { + "data": { + "file_path": "\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae \u03c0\u03c1\u03bf\u03c2 \u03c4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf" + } + } + } + }, + "title": "Filesize" +} \ No newline at end of file diff --git a/homeassistant/components/filesize/translations/en.json b/homeassistant/components/filesize/translations/en.json index cd8954e5a71..1bad0b9b081 100644 --- a/homeassistant/components/filesize/translations/en.json +++ b/homeassistant/components/filesize/translations/en.json @@ -1,19 +1,19 @@ { "config": { - "step": { - "user": { - "data": { - "file_path": "Path to file" - } + "abort": { + "already_configured": "Service is already configured" + }, + "error": { + "not_allowed": "Path is not allowed", + "not_valid": "Path is not valid" + }, + "step": { + "user": { + "data": { + "file_path": "Path to file" + } + } } - }, - "error": { - "not_valid": "Path is not valid", - "not_allowed": "Path is not allowed" - }, - "abort": { - "already_configured": "Filepath is already configured" - } }, "title": "Filesize" - } \ No newline at end of file +} \ No newline at end of file diff --git a/homeassistant/components/filesize/translations/et.json b/homeassistant/components/filesize/translations/et.json new file mode 100644 index 00000000000..b27b482e4cd --- /dev/null +++ b/homeassistant/components/filesize/translations/et.json @@ -0,0 +1,19 @@ +{ + "config": { + "abort": { + "already_configured": "Teenus on juba h\u00e4\u00e4lestatud" + }, + "error": { + "not_allowed": "Kirje asukoht on keelatud", + "not_valid": "Kirjet ei leitud" + }, + "step": { + "user": { + "data": { + "file_path": "Kirje asukoht" + } + } + } + }, + "title": "Filesize" +} \ No newline at end of file diff --git a/homeassistant/components/filesize/translations/fr.json b/homeassistant/components/filesize/translations/fr.json new file mode 100644 index 00000000000..8f2f8ffe1ce --- /dev/null +++ b/homeassistant/components/filesize/translations/fr.json @@ -0,0 +1,19 @@ +{ + "config": { + "abort": { + "already_configured": "Le service est d\u00e9j\u00e0 configur\u00e9" + }, + "error": { + "not_allowed": "Le chemin d'acc\u00e8s n'est pas autoris\u00e9", + "not_valid": "Le chemin d'acc\u00e8s n'est pas valide" + }, + "step": { + "user": { + "data": { + "file_path": "Chemin d'acc\u00e8s au fichier" + } + } + } + }, + "title": "Taille de fichier" +} \ No newline at end of file diff --git a/homeassistant/components/filesize/translations/he.json b/homeassistant/components/filesize/translations/he.json new file mode 100644 index 00000000000..48a6eeeea33 --- /dev/null +++ b/homeassistant/components/filesize/translations/he.json @@ -0,0 +1,7 @@ +{ + "config": { + "abort": { + "already_configured": "\u05e9\u05d9\u05e8\u05d5\u05ea \u05d6\u05d4 \u05db\u05d1\u05e8 \u05de\u05d5\u05d2\u05d3\u05e8" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/filesize/translations/hu.json b/homeassistant/components/filesize/translations/hu.json new file mode 100644 index 00000000000..74c9f598bb9 --- /dev/null +++ b/homeassistant/components/filesize/translations/hu.json @@ -0,0 +1,19 @@ +{ + "config": { + "abort": { + "already_configured": "A szolg\u00e1ltat\u00e1s m\u00e1r konfigur\u00e1lva van" + }, + "error": { + "not_allowed": "Az el\u00e9r\u00e9si \u00fat nem enged\u00e9lyezett", + "not_valid": "Az el\u00e9r\u00e9si \u00fat \u00e9rv\u00e9nytelen" + }, + "step": { + "user": { + "data": { + "file_path": "A f\u00e1jl el\u00e9r\u00e9si \u00fatja" + } + } + } + }, + "title": "F\u00e1jlm\u00e9ret" +} \ No newline at end of file diff --git a/homeassistant/components/filesize/translations/id.json b/homeassistant/components/filesize/translations/id.json new file mode 100644 index 00000000000..cb4bfdebaa7 --- /dev/null +++ b/homeassistant/components/filesize/translations/id.json @@ -0,0 +1,19 @@ +{ + "config": { + "abort": { + "already_configured": "Layanan sudah dikonfigurasi" + }, + "error": { + "not_allowed": "Jalur tidak diperbolehkan", + "not_valid": "Jalur tidak valid" + }, + "step": { + "user": { + "data": { + "file_path": "Jalur ke file" + } + } + } + }, + "title": "Ukuran file" +} \ No newline at end of file diff --git a/homeassistant/components/filesize/translations/it.json b/homeassistant/components/filesize/translations/it.json new file mode 100644 index 00000000000..4372477b24c --- /dev/null +++ b/homeassistant/components/filesize/translations/it.json @@ -0,0 +1,19 @@ +{ + "config": { + "abort": { + "already_configured": "Il servizio \u00e8 gi\u00e0 configurato" + }, + "error": { + "not_allowed": "Il percorso non \u00e8 consentito", + "not_valid": "Il percorso non \u00e8 valido" + }, + "step": { + "user": { + "data": { + "file_path": "Percorso del file" + } + } + } + }, + "title": "Dimensione file" +} \ No newline at end of file diff --git a/homeassistant/components/filesize/translations/ja.json b/homeassistant/components/filesize/translations/ja.json new file mode 100644 index 00000000000..3d8ca72452b --- /dev/null +++ b/homeassistant/components/filesize/translations/ja.json @@ -0,0 +1,19 @@ +{ + "config": { + "abort": { + "already_configured": "\u30b5\u30fc\u30d3\u30b9\u306f\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059" + }, + "error": { + "not_allowed": "\u30d1\u30b9\u304c\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093", + "not_valid": "\u30d1\u30b9\u304c\u7121\u52b9\u3067\u3059" + }, + "step": { + "user": { + "data": { + "file_path": "\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30d1\u30b9" + } + } + } + }, + "title": "\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba" +} \ No newline at end of file diff --git a/homeassistant/components/filesize/translations/nl.json b/homeassistant/components/filesize/translations/nl.json new file mode 100644 index 00000000000..d8a35446044 --- /dev/null +++ b/homeassistant/components/filesize/translations/nl.json @@ -0,0 +1,19 @@ +{ + "config": { + "abort": { + "already_configured": "Service is al geconfigureerd" + }, + "error": { + "not_allowed": "Pad is niet toegestaan", + "not_valid": "Pad is niet geldig" + }, + "step": { + "user": { + "data": { + "file_path": "Pad naar bestand" + } + } + } + }, + "title": "Bestandsgrootte" +} \ No newline at end of file diff --git a/homeassistant/components/filesize/translations/no.json b/homeassistant/components/filesize/translations/no.json new file mode 100644 index 00000000000..18bdf37d667 --- /dev/null +++ b/homeassistant/components/filesize/translations/no.json @@ -0,0 +1,19 @@ +{ + "config": { + "abort": { + "already_configured": "Tjenesten er allerede konfigurert" + }, + "error": { + "not_allowed": "Stien er ikke tillatt", + "not_valid": "Banen er ikke gyldig" + }, + "step": { + "user": { + "data": { + "file_path": "Bane til fil" + } + } + } + }, + "title": "Filst\u00f8rrelse" +} \ No newline at end of file diff --git a/homeassistant/components/filesize/translations/pl.json b/homeassistant/components/filesize/translations/pl.json new file mode 100644 index 00000000000..2b2cd21a79c --- /dev/null +++ b/homeassistant/components/filesize/translations/pl.json @@ -0,0 +1,19 @@ +{ + "config": { + "abort": { + "already_configured": "Us\u0142uga jest ju\u017c skonfigurowana" + }, + "error": { + "not_allowed": "Niedozwolona \u015bcie\u017cka", + "not_valid": "Nieprawid\u0142owa \u015bcie\u017cka" + }, + "step": { + "user": { + "data": { + "file_path": "\u015acie\u017cka do pliku" + } + } + } + }, + "title": "Rozmiar pliku" +} \ No newline at end of file diff --git a/homeassistant/components/filesize/translations/pt-BR.json b/homeassistant/components/filesize/translations/pt-BR.json new file mode 100644 index 00000000000..dfcc9cc5348 --- /dev/null +++ b/homeassistant/components/filesize/translations/pt-BR.json @@ -0,0 +1,19 @@ +{ + "config": { + "abort": { + "already_configured": "O servi\u00e7o j\u00e1 est\u00e1 configurado" + }, + "error": { + "not_allowed": "O caminho n\u00e3o \u00e9 permitido", + "not_valid": "O caminho n\u00e3o \u00e9 v\u00e1lido" + }, + "step": { + "user": { + "data": { + "file_path": "Caminho para o arquivo" + } + } + } + }, + "title": "Tamanho do arquivo" +} \ No newline at end of file diff --git a/homeassistant/components/filesize/translations/ru.json b/homeassistant/components/filesize/translations/ru.json new file mode 100644 index 00000000000..1071fd09ca5 --- /dev/null +++ b/homeassistant/components/filesize/translations/ru.json @@ -0,0 +1,19 @@ +{ + "config": { + "abort": { + "already_configured": "\u042d\u0442\u0430 \u0441\u043b\u0443\u0436\u0431\u0430 \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 Home Assistant." + }, + "error": { + "not_allowed": "\u041f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439.", + "not_valid": "\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443." + }, + "step": { + "user": { + "data": { + "file_path": "\u041f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443" + } + } + } + }, + "title": "\u0420\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430" +} \ No newline at end of file diff --git a/homeassistant/components/filesize/translations/tr.json b/homeassistant/components/filesize/translations/tr.json new file mode 100644 index 00000000000..cf62d56284e --- /dev/null +++ b/homeassistant/components/filesize/translations/tr.json @@ -0,0 +1,19 @@ +{ + "config": { + "abort": { + "already_configured": "Hizmet zaten yap\u0131land\u0131r\u0131lm\u0131\u015f" + }, + "error": { + "not_allowed": "Yola izin verilmiyor", + "not_valid": "Yol ge\u00e7erli de\u011fil" + }, + "step": { + "user": { + "data": { + "file_path": "Dosya yolu" + } + } + } + }, + "title": "Dosya boyutu" +} \ No newline at end of file diff --git a/homeassistant/components/filesize/translations/zh-Hant.json b/homeassistant/components/filesize/translations/zh-Hant.json new file mode 100644 index 00000000000..692d770d337 --- /dev/null +++ b/homeassistant/components/filesize/translations/zh-Hant.json @@ -0,0 +1,19 @@ +{ + "config": { + "abort": { + "already_configured": "\u670d\u52d9\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210" + }, + "error": { + "not_allowed": "\u8def\u5f91\u4e0d\u5141\u8a31", + "not_valid": "\u8def\u5f91\u7121\u6548" + }, + "step": { + "user": { + "data": { + "file_path": "\u6a94\u6848\u8def\u5f91" + } + } + } + }, + "title": "\u6a94\u6848\u5927\u5c0f" +} \ No newline at end of file diff --git a/homeassistant/components/fivem/translations/hu.json b/homeassistant/components/fivem/translations/hu.json index b307c6e79fc..4e56dc3c17f 100644 --- a/homeassistant/components/fivem/translations/hu.json +++ b/homeassistant/components/fivem/translations/hu.json @@ -13,7 +13,7 @@ "user": { "data": { "host": "C\u00edm", - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "port": "Port" } } diff --git a/homeassistant/components/flux_led/translations/hu.json b/homeassistant/components/flux_led/translations/hu.json index 1208f87fe70..f2f5d9b8751 100644 --- a/homeassistant/components/flux_led/translations/hu.json +++ b/homeassistant/components/flux_led/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "no_devices_found": "Nem tal\u00e1lhat\u00f3 eszk\u00f6z a h\u00e1l\u00f3zaton" }, "error": { diff --git a/homeassistant/components/forecast_solar/translations/ca.json b/homeassistant/components/forecast_solar/translations/ca.json index 7bd31828080..141ad11c165 100644 --- a/homeassistant/components/forecast_solar/translations/ca.json +++ b/homeassistant/components/forecast_solar/translations/ca.json @@ -22,6 +22,7 @@ "azimuth": "Azimut (360 graus, 0 = nord, 90 = est, 180 = sud, 270 = oest)", "damping": "Factor d'amortiment: ajusta els resultats al mat\u00ed i al vespre", "declination": "Inclinaci\u00f3 (0 = horitzontal, 90 = vertical)", + "inverter_size": "Pot\u00e8ncia de l'inversor (Watts)", "modules power": "Pot\u00e8ncia m\u00e0xima total dels panells solars" }, "description": "Aquests valors permeten ajustar els resultats de Solar.Forecast. Consulta la documentaci\u00f3 si tens dubtes sobre algun camp." diff --git a/homeassistant/components/forecast_solar/translations/de.json b/homeassistant/components/forecast_solar/translations/de.json index 43b60424cf1..06e51e04659 100644 --- a/homeassistant/components/forecast_solar/translations/de.json +++ b/homeassistant/components/forecast_solar/translations/de.json @@ -22,6 +22,7 @@ "azimuth": "Azimut (360 Grad, 0 = Norden, 90 = Osten, 180 = S\u00fcden, 270 = Westen)", "damping": "D\u00e4mpfungsfaktor: passt die Ergebnisse morgens und abends an", "declination": "Deklination (0 = Horizontal, 90 = Vertikal)", + "inverter_size": "Wechselrichtergr\u00f6\u00dfe (Watt)", "modules power": "Gesamt-Watt-Spitzenleistung deiner Solarmodule" }, "description": "Mit diesen Werten kann das Solar.Forecast-Ergebnis angepasst werden. Wenn ein Feld unklar ist, lies bitte in der Dokumentation nach." diff --git a/homeassistant/components/forecast_solar/translations/el.json b/homeassistant/components/forecast_solar/translations/el.json index 0f6603a622b..e2e75c05f65 100644 --- a/homeassistant/components/forecast_solar/translations/el.json +++ b/homeassistant/components/forecast_solar/translations/el.json @@ -22,6 +22,7 @@ "azimuth": "\u0391\u03b6\u03b9\u03bc\u03bf\u03cd\u03b8\u03b9\u03bf (360 \u03bc\u03bf\u03af\u03c1\u03b5\u03c2, 0 = \u0392\u03bf\u03c1\u03c1\u03ac\u03c2, 90 = \u0391\u03bd\u03b1\u03c4\u03bf\u03bb\u03ae, 180 = \u039d\u03cc\u03c4\u03bf\u03c2, 270 = \u0394\u03cd\u03c3\u03b7)", "damping": "\u03a3\u03c5\u03bd\u03c4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae\u03c2 \u03b1\u03c0\u03cc\u03c3\u03b2\u03b5\u03c3\u03b7\u03c2: \u03c1\u03c5\u03b8\u03bc\u03af\u03b6\u03b5\u03b9 \u03c4\u03b1 \u03b1\u03c0\u03bf\u03c4\u03b5\u03bb\u03ad\u03c3\u03bc\u03b1\u03c4\u03b1 \u03c0\u03c1\u03c9\u03af \u03ba\u03b1\u03b9 \u03b2\u03c1\u03ac\u03b4\u03c5", "declination": "\u0391\u03c0\u03cc\u03ba\u03bb\u03b9\u03c3\u03b7 (0 = \u03bf\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1, 90 = \u03ba\u03b1\u03c4\u03b1\u03ba\u03cc\u03c1\u03c5\u03c6\u03b7)", + "inverter_size": "\u039c\u03ad\u03b3\u03b5\u03b8\u03bf\u03c2 \u03bc\u03b5\u03c4\u03b1\u03c4\u03c1\u03bf\u03c0\u03ad\u03b1 (Watt)", "modules power": "\u03a3\u03c5\u03bd\u03bf\u03bb\u03b9\u03ba\u03ae \u03bc\u03ad\u03b3\u03b9\u03c3\u03c4\u03b7 \u03b9\u03c3\u03c7\u03cd\u03c2 Watt \u03c4\u03c9\u03bd \u03b7\u03bb\u03b9\u03b1\u03ba\u03ce\u03bd \u03c3\u03b1\u03c2 \u03bc\u03bf\u03bd\u03ac\u03b4\u03c9\u03bd" }, "description": "\u0391\u03c5\u03c4\u03ad\u03c2 \u03bf\u03b9 \u03c4\u03b9\u03bc\u03ad\u03c2 \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03bf\u03c5\u03bd \u03c4\u03b7 \u03c1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03b1\u03c0\u03bf\u03c4\u03b5\u03bb\u03ad\u03c3\u03bc\u03b1\u03c4\u03bf\u03c2 Solar.Forecast. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b1\u03bd\u03b1\u03c4\u03c1\u03ad\u03be\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd \u03c4\u03b5\u03ba\u03bc\u03b7\u03c1\u03af\u03c9\u03c3\u03b7 \u03b5\u03ac\u03bd \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf \u03c0\u03b5\u03b4\u03af\u03bf \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03c3\u03b1\u03c6\u03ad\u03c2." diff --git a/homeassistant/components/forecast_solar/translations/en.json b/homeassistant/components/forecast_solar/translations/en.json index db9bead2e8c..2aa5a37cd1c 100644 --- a/homeassistant/components/forecast_solar/translations/en.json +++ b/homeassistant/components/forecast_solar/translations/en.json @@ -21,8 +21,8 @@ "api_key": "Forecast.Solar API Key (optional)", "azimuth": "Azimuth (360 degrees, 0 = North, 90 = East, 180 = South, 270 = West)", "damping": "Damping factor: adjusts the results in the morning and evening", - "inverter_size": "Inverter size (Watt)", "declination": "Declination (0 = Horizontal, 90 = Vertical)", + "inverter_size": "Inverter size (Watt)", "modules power": "Total Watt peak power of your solar modules" }, "description": "These values allow tweaking the Solar.Forecast result. Please refer to the documentation if a field is unclear." diff --git a/homeassistant/components/forecast_solar/translations/et.json b/homeassistant/components/forecast_solar/translations/et.json index 7aa87f4cf58..d2b72b30708 100644 --- a/homeassistant/components/forecast_solar/translations/et.json +++ b/homeassistant/components/forecast_solar/translations/et.json @@ -22,6 +22,7 @@ "azimuth": "Asimuut (360 kraadi, 0 = p\u00f5hi, 90 = ida, 180 = l\u00f5una, 270 = l\u00e4\u00e4s)", "damping": "Summutustegur: reguleerib tulemusi hommikul ja \u00f5htul", "declination": "Deklinatsioon (0 = horisontaalne, 90 = vertikaalne)", + "inverter_size": "Inverteri v\u00f5imsus (vatti)", "modules power": "P\u00e4ikesemoodulite koguv\u00f5imsus vattides" }, "description": "Need v\u00e4\u00e4rtused v\u00f5imaldavad muuta Solar.Forecast tulemust. Vaata dokumentatsiooni kui asi on ebaselge." diff --git a/homeassistant/components/forecast_solar/translations/fr.json b/homeassistant/components/forecast_solar/translations/fr.json index efd9f7be3a6..78b4d3f8f88 100644 --- a/homeassistant/components/forecast_solar/translations/fr.json +++ b/homeassistant/components/forecast_solar/translations/fr.json @@ -22,6 +22,7 @@ "azimuth": "Azimut (360 degr\u00e9s, 0 = Nord, 90 = Est, 180 = Sud, 270 = Ouest)", "damping": "Facteur d'amortissement : ajuste les r\u00e9sultats matin et soir", "declination": "D\u00e9clinaison (0 = horizontale, 90 = verticale)", + "inverter_size": "Taille de l'onduleur (en watts)", "modules power": "Puissance de cr\u00eate totale en watts de vos modules solaires" }, "description": "Ces valeurs permettent de peaufiner le r\u00e9sultat Solar.Forecast. Veuillez vous r\u00e9f\u00e9rer \u00e0 la documentation si un champ n'est pas clair." diff --git a/homeassistant/components/forecast_solar/translations/hu.json b/homeassistant/components/forecast_solar/translations/hu.json index 0bd814f16be..33a69ad2fd7 100644 --- a/homeassistant/components/forecast_solar/translations/hu.json +++ b/homeassistant/components/forecast_solar/translations/hu.json @@ -8,7 +8,7 @@ "latitude": "Sz\u00e9less\u00e9g", "longitude": "Hossz\u00fas\u00e1g", "modules power": "A napelemmodulok teljes cs\u00facsteljes\u00edtm\u00e9nye (Watt)", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" }, "description": "T\u00f6ltse ki a napelemek adatait. K\u00e9rj\u00fck, olvassa el a dokument\u00e1ci\u00f3t, ha egy mez\u0151 nem egy\u00e9rtelm\u0171." } @@ -22,6 +22,7 @@ "azimuth": "Azimut (360 fok, 0 = \u00e9szak, 90 = keleti, 180 = d\u00e9li, 270 = nyugati)", "damping": "Csillap\u00edt\u00e1si t\u00e9nyez\u0151: be\u00e1ll\u00edtja az eredm\u00e9nyeket reggelre \u00e9s est\u00e9re", "declination": "Deklin\u00e1ci\u00f3 (0 = v\u00edzszintes, 90 = f\u00fcgg\u0151leges)", + "inverter_size": "Inverter m\u00e9rete (Watt)", "modules power": "A napelemmodulok teljes cs\u00facsteljes\u00edtm\u00e9nye (Watt)" }, "description": "Ezek az \u00e9rt\u00e9kek lehet\u0151v\u00e9 teszik a Solar.Forecast eredm\u00e9ny m\u00f3dos\u00edt\u00e1s\u00e1t. K\u00e9rj\u00fck, olvassa el a dokument\u00e1ci\u00f3t, ha egy mez\u0151 nem egy\u00e9rtelm\u0171." diff --git a/homeassistant/components/forecast_solar/translations/id.json b/homeassistant/components/forecast_solar/translations/id.json index 27ef16e0266..5bd1236d6a6 100644 --- a/homeassistant/components/forecast_solar/translations/id.json +++ b/homeassistant/components/forecast_solar/translations/id.json @@ -22,6 +22,7 @@ "azimuth": "Azimuth (360 derajat, 0 = Utara, 90 = Timur, 180 = Selatan, 270 = Barat)", "damping": "Faktor redaman: menyesuaikan hasil di pagi dan sore hari", "declination": "Deklinasi (0 = Horizontal, 90 = Vertikal)", + "inverter_size": "Ukuran inverter (Watt)", "modules power": "Total daya puncak modul surya Anda dalam Watt" }, "description": "Nilai-nilai ini memungkinkan penyesuaian hasil Solar.Forecast. Rujuk ke dokumentasi jika bidang isian tidak jelas." diff --git a/homeassistant/components/forecast_solar/translations/it.json b/homeassistant/components/forecast_solar/translations/it.json index 7920eee43eb..598c67695cc 100644 --- a/homeassistant/components/forecast_solar/translations/it.json +++ b/homeassistant/components/forecast_solar/translations/it.json @@ -22,6 +22,7 @@ "azimuth": "Azimut (360 gradi, 0 = Nord, 90 = Est, 180 = Sud, 270 = Ovest)", "damping": "Fattore di smorzamento: regola i risultati al mattino e alla sera", "declination": "Declinazione (0 = Orizzontale, 90 = Verticale)", + "inverter_size": "Dimensioni inverter (Watt)", "modules power": "Potenza di picco totale in Watt dei tuoi moduli solari" }, "description": "Questi valori consentono di modificare il risultato di Solar.Forecast. Fai riferimento alla documentazione se un campo non \u00e8 chiaro." diff --git a/homeassistant/components/forecast_solar/translations/ja.json b/homeassistant/components/forecast_solar/translations/ja.json index 62090376bed..d86dc08f2b7 100644 --- a/homeassistant/components/forecast_solar/translations/ja.json +++ b/homeassistant/components/forecast_solar/translations/ja.json @@ -22,6 +22,7 @@ "azimuth": "\u65b9\u4f4d\u89d2(360\u5ea6\u30010=\u5317\u300190=\u6771\u3001180=\u5357\u3001270=\u897f)", "damping": "\u6e1b\u8870\u4fc2\u6570(\u30c0\u30f3\u30d4\u30f3\u30b0\u30d5\u30a1\u30af\u30bf\u30fc): \u671d\u3068\u5915\u65b9\u306e\u7d50\u679c\u3092\u8abf\u6574\u3059\u308b", "declination": "\u504f\u89d2(0\uff1d\u6c34\u5e73\u300190\uff1d\u5782\u76f4)", + "inverter_size": "\u30a4\u30f3\u30d0\u30fc\u30bf\u30fc\u306e\u30b5\u30a4\u30ba\uff08\u30ef\u30c3\u30c8\uff09", "modules power": "\u30bd\u30fc\u30e9\u30fc\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u7dcf\u30ef\u30c3\u30c8\u30d4\u30fc\u30af\u96fb\u529b" }, "description": "\u3053\u308c\u3089\u306e\u5024\u306b\u3088\u308a\u3001Solar.Forecast\u306e\u7d50\u679c\u3092\u5fae\u8abf\u6574\u3067\u304d\u307e\u3059\u3002\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u4e0d\u660e\u306a\u5834\u5408\u306f\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002" diff --git a/homeassistant/components/forecast_solar/translations/nl.json b/homeassistant/components/forecast_solar/translations/nl.json index c66d272782d..dbc966e59fc 100644 --- a/homeassistant/components/forecast_solar/translations/nl.json +++ b/homeassistant/components/forecast_solar/translations/nl.json @@ -22,6 +22,7 @@ "azimuth": "Azimut (360 graden, 0 = Noord, 90 = Oost, 180 = Zuid, 270 = West)", "damping": "Dempingsfactor: past de resultaten 's ochtends en 's avonds aan", "declination": "Declinatie (0 = Horizontaal, 90 = Verticaal)", + "inverter_size": "Omvormer grootte (Watt)", "modules power": "Totaal Watt piekvermogen van uw zonnepanelen" }, "description": "Met deze waarden kan het resultaat van Solar.Forecast worden aangepast. Raadpleeg de documentatie als een veld onduidelijk is." diff --git a/homeassistant/components/forecast_solar/translations/no.json b/homeassistant/components/forecast_solar/translations/no.json index 1504727c1ae..a9acbb86f00 100644 --- a/homeassistant/components/forecast_solar/translations/no.json +++ b/homeassistant/components/forecast_solar/translations/no.json @@ -22,6 +22,7 @@ "azimuth": "Azimut (360 grader, 0 = Nord, 90 = \u00d8st, 180 = S\u00f8r, 270 = Vest)", "damping": "Dempingsfaktor: justerer resultatene om morgenen og kvelden", "declination": "Deklinasjon (0 = horisontal, 90 = vertikal)", + "inverter_size": "Inverterst\u00f8rrelse (Watt)", "modules power": "Total Watt-toppeffekt i solcellemodulene dine" }, "description": "Disse verdiene tillater justering av Solar.Forecast -resultatet. Se dokumentasjonen hvis et felt er uklart." diff --git a/homeassistant/components/forecast_solar/translations/pl.json b/homeassistant/components/forecast_solar/translations/pl.json index 3fc782fe7c3..ad01ce4bb54 100644 --- a/homeassistant/components/forecast_solar/translations/pl.json +++ b/homeassistant/components/forecast_solar/translations/pl.json @@ -22,6 +22,7 @@ "azimuth": "Azymut (360 stopni, 0 = P\u00f3\u0142noc, 90 = Wsch\u00f3d, 180 = Po\u0142udnie, 270 = Zach\u00f3d)", "damping": "Wsp\u00f3\u0142czynnik t\u0142umienia: dostosowuje wyniki rano i wieczorem", "declination": "Deklinacja (0 = Poziomo, 90 = Pionowo)", + "inverter_size": "Rozmiar falownika (Wat)", "modules power": "Ca\u0142kowita moc szczytowa modu\u0142\u00f3w fotowoltaicznych w watach" }, "description": "Te warto\u015bci pozwalaj\u0105 dostosowa\u0107 wyniki dla Solar.Forecast. Prosz\u0119 zapozna\u0107 si\u0119 z dokumentacj\u0105, je\u015bli pole jest niejasne." diff --git a/homeassistant/components/forecast_solar/translations/pt-BR.json b/homeassistant/components/forecast_solar/translations/pt-BR.json index ad6cca066c4..6761e17e8bd 100644 --- a/homeassistant/components/forecast_solar/translations/pt-BR.json +++ b/homeassistant/components/forecast_solar/translations/pt-BR.json @@ -22,6 +22,7 @@ "azimuth": "Azimute (360\u00b0, 0\u00b0 = Norte, 90\u00b0 = Leste, 180\u00b0 = Sul, 270\u00b0 = Oeste)", "damping": "Fator de amortecimento: ajusta os resultados de manh\u00e3 e \u00e0 noite", "declination": "Declina\u00e7\u00e3o (0\u00b0 = Horizontal, 90\u00b0 = Vertical)", + "inverter_size": "Pot\u00eancia do inversor (Watt)", "modules power": "Pot\u00eancia de pico total em Watt de seus m\u00f3dulos solares" }, "description": "Preencha os dados de seus pain\u00e9is solares. Consulte a documenta\u00e7\u00e3o se um campo n\u00e3o estiver claro." diff --git a/homeassistant/components/forecast_solar/translations/ru.json b/homeassistant/components/forecast_solar/translations/ru.json index 9cf8e87a8e2..f7d4d502691 100644 --- a/homeassistant/components/forecast_solar/translations/ru.json +++ b/homeassistant/components/forecast_solar/translations/ru.json @@ -22,6 +22,7 @@ "azimuth": "\u0410\u0437\u0438\u043c\u0443\u0442 (360 \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432, 0 = \u0441\u0435\u0432\u0435\u0440, 90 = \u0432\u043e\u0441\u0442\u043e\u043a, 180 = \u044e\u0433, 270 = \u0437\u0430\u043f\u0430\u0434)", "damping": "\u0424\u0430\u043a\u0442\u043e\u0440 \u0437\u0430\u0442\u0443\u0445\u0430\u043d\u0438\u044f: \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0443\u0442\u0440\u043e\u043c \u0438 \u0432\u0435\u0447\u0435\u0440\u043e\u043c", "declination": "\u0421\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435 (0 = \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435, 90 = \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435)", + "inverter_size": "\u041c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0432\u0435\u0440\u0442\u043e\u0440\u0430 (\u0432 \u0412\u0430\u0442\u0442\u0430\u0445)", "modules power": "\u041e\u0431\u0449\u0430\u044f \u043f\u0438\u043a\u043e\u0432\u0430\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u0412\u0430\u0448\u0438\u0445 \u0441\u043e\u043b\u043d\u0435\u0447\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 (\u0432 \u0412\u0430\u0442\u0442\u0430\u0445)" }, "description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 Forecast.Solar." diff --git a/homeassistant/components/forecast_solar/translations/tr.json b/homeassistant/components/forecast_solar/translations/tr.json index fecd8d7889a..1fa6def5714 100644 --- a/homeassistant/components/forecast_solar/translations/tr.json +++ b/homeassistant/components/forecast_solar/translations/tr.json @@ -22,6 +22,7 @@ "azimuth": "Azimut (360 derece, 0 = Kuzey, 90 = Do\u011fu, 180 = G\u00fcney, 270 = Bat\u0131)", "damping": "S\u00f6n\u00fcmleme fakt\u00f6r\u00fc: sonu\u00e7lar\u0131 sabah ve ak\u015fam ayarlar", "declination": "Sapma (0 = Yatay, 90 = Dikey)", + "inverter_size": "\u0130nverter boyutu (Watt)", "modules power": "Solar mod\u00fcllerinizin toplam en y\u00fcksek Watt g\u00fcc\u00fc" }, "description": "Bu de\u011ferler Solar.Forecast sonucunun ayarlanmas\u0131na izin verir. Bir alan net de\u011filse l\u00fctfen belgelere bak\u0131n." diff --git a/homeassistant/components/forecast_solar/translations/zh-Hant.json b/homeassistant/components/forecast_solar/translations/zh-Hant.json index fca97b9da01..3870ca29846 100644 --- a/homeassistant/components/forecast_solar/translations/zh-Hant.json +++ b/homeassistant/components/forecast_solar/translations/zh-Hant.json @@ -22,6 +22,7 @@ "azimuth": "\u65b9\u4f4d\u89d2\uff08360 \u5ea6\u55ae\u4f4d\u30020 = \u5317\u300190 = \u6771\u3001180 = \u5357\u3001270 = \u897f\uff09", "damping": "\u963b\u5c3c\u56e0\u7d20\uff1a\u8abf\u6574\u6e05\u6668\u8207\u508d\u665a\u7d50\u679c", "declination": "\u504f\u89d2\uff080 = \u6c34\u5e73\u300190 = \u5782\u76f4\uff09", + "inverter_size": "\u8b8a\u6d41\u5668\u5c3a\u5bf8\uff08Watt\uff09", "modules power": "\u7e3d\u5cf0\u503c\u529f\u7387" }, "description": "\u6b64\u4e9b\u6578\u503c\u5141\u8a31\u5fae\u8abf Solar.Forecast \u7d50\u679c\u3002\u5982\u679c\u6709\u4e0d\u6e05\u695a\u7684\u5730\u65b9\u3001\u8acb\u53c3\u8003\u6587\u4ef6\u8aaa\u660e\u3002" diff --git a/homeassistant/components/foscam/translations/ca.json b/homeassistant/components/foscam/translations/ca.json index b7f71c8c922..2fbd19dc20c 100644 --- a/homeassistant/components/foscam/translations/ca.json +++ b/homeassistant/components/foscam/translations/ca.json @@ -21,6 +21,5 @@ } } } - }, - "title": "Foscam" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/cs.json b/homeassistant/components/foscam/translations/cs.json index b6f3c40abf6..ae1fc69cc77 100644 --- a/homeassistant/components/foscam/translations/cs.json +++ b/homeassistant/components/foscam/translations/cs.json @@ -18,6 +18,5 @@ } } } - }, - "title": "Foscam" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/de.json b/homeassistant/components/foscam/translations/de.json index bc1c12ea130..30d331848a4 100644 --- a/homeassistant/components/foscam/translations/de.json +++ b/homeassistant/components/foscam/translations/de.json @@ -21,6 +21,5 @@ } } } - }, - "title": "Foscam" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/el.json b/homeassistant/components/foscam/translations/el.json index 0e6c9b7c65d..44aa096837c 100644 --- a/homeassistant/components/foscam/translations/el.json +++ b/homeassistant/components/foscam/translations/el.json @@ -21,6 +21,5 @@ } } } - }, - "title": "Foscam" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/en.json b/homeassistant/components/foscam/translations/en.json index 16a7d0b7800..29fd01d030d 100644 --- a/homeassistant/components/foscam/translations/en.json +++ b/homeassistant/components/foscam/translations/en.json @@ -21,6 +21,5 @@ } } } - }, - "title": "Foscam" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/es-419.json b/homeassistant/components/foscam/translations/es-419.json index 39027bdf914..720a14b8523 100644 --- a/homeassistant/components/foscam/translations/es-419.json +++ b/homeassistant/components/foscam/translations/es-419.json @@ -11,6 +11,5 @@ } } } - }, - "title": "Foscam" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/es.json b/homeassistant/components/foscam/translations/es.json index 7e8b7c1427d..f80ef3335d1 100644 --- a/homeassistant/components/foscam/translations/es.json +++ b/homeassistant/components/foscam/translations/es.json @@ -21,6 +21,5 @@ } } } - }, - "title": "Foscam" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/et.json b/homeassistant/components/foscam/translations/et.json index c21ffa0cdd1..9c2801c6135 100644 --- a/homeassistant/components/foscam/translations/et.json +++ b/homeassistant/components/foscam/translations/et.json @@ -21,6 +21,5 @@ } } } - }, - "title": "" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/fr.json b/homeassistant/components/foscam/translations/fr.json index f728c6d7414..dcc4b45cc83 100644 --- a/homeassistant/components/foscam/translations/fr.json +++ b/homeassistant/components/foscam/translations/fr.json @@ -21,6 +21,5 @@ } } } - }, - "title": "Foscam" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/hu.json b/homeassistant/components/foscam/translations/hu.json index b303db792bb..575e2b34982 100644 --- a/homeassistant/components/foscam/translations/hu.json +++ b/homeassistant/components/foscam/translations/hu.json @@ -21,6 +21,5 @@ } } } - }, - "title": "Foscam" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/id.json b/homeassistant/components/foscam/translations/id.json index 21a7682b92c..89d57eb8e4a 100644 --- a/homeassistant/components/foscam/translations/id.json +++ b/homeassistant/components/foscam/translations/id.json @@ -21,6 +21,5 @@ } } } - }, - "title": "Foscam" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/it.json b/homeassistant/components/foscam/translations/it.json index 63868a0f07f..e38b7d3e8a2 100644 --- a/homeassistant/components/foscam/translations/it.json +++ b/homeassistant/components/foscam/translations/it.json @@ -21,6 +21,5 @@ } } } - }, - "title": "Foscam" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/ja.json b/homeassistant/components/foscam/translations/ja.json index 5a02ae5f446..3089882c63e 100644 --- a/homeassistant/components/foscam/translations/ja.json +++ b/homeassistant/components/foscam/translations/ja.json @@ -21,6 +21,5 @@ } } } - }, - "title": "Foscam" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/ko.json b/homeassistant/components/foscam/translations/ko.json index ba743f6b27a..762957e840e 100644 --- a/homeassistant/components/foscam/translations/ko.json +++ b/homeassistant/components/foscam/translations/ko.json @@ -21,6 +21,5 @@ } } } - }, - "title": "Foscam" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/lb.json b/homeassistant/components/foscam/translations/lb.json index 123b3f4be76..11dd851f381 100644 --- a/homeassistant/components/foscam/translations/lb.json +++ b/homeassistant/components/foscam/translations/lb.json @@ -11,6 +11,5 @@ } } } - }, - "title": "Foscam" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/nl.json b/homeassistant/components/foscam/translations/nl.json index 9bea23ad702..5a6bfcaa4b3 100644 --- a/homeassistant/components/foscam/translations/nl.json +++ b/homeassistant/components/foscam/translations/nl.json @@ -21,6 +21,5 @@ } } } - }, - "title": "Foscam" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/no.json b/homeassistant/components/foscam/translations/no.json index 0184213de27..03b96cebe65 100644 --- a/homeassistant/components/foscam/translations/no.json +++ b/homeassistant/components/foscam/translations/no.json @@ -21,6 +21,5 @@ } } } - }, - "title": "" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/pl.json b/homeassistant/components/foscam/translations/pl.json index d7494e22063..03a6a47fb74 100644 --- a/homeassistant/components/foscam/translations/pl.json +++ b/homeassistant/components/foscam/translations/pl.json @@ -21,6 +21,5 @@ } } } - }, - "title": "Foscam" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/pt-BR.json b/homeassistant/components/foscam/translations/pt-BR.json index b33dce1e6fe..18af16044e8 100644 --- a/homeassistant/components/foscam/translations/pt-BR.json +++ b/homeassistant/components/foscam/translations/pt-BR.json @@ -21,6 +21,5 @@ } } } - }, - "title": "Foscam" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/ru.json b/homeassistant/components/foscam/translations/ru.json index 8e8404c501e..1089ef63d59 100644 --- a/homeassistant/components/foscam/translations/ru.json +++ b/homeassistant/components/foscam/translations/ru.json @@ -21,6 +21,5 @@ } } } - }, - "title": "Foscam" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/tr.json b/homeassistant/components/foscam/translations/tr.json index e6e5adc434c..1f8aab543fb 100644 --- a/homeassistant/components/foscam/translations/tr.json +++ b/homeassistant/components/foscam/translations/tr.json @@ -21,6 +21,5 @@ } } } - }, - "title": "Foscam" + } } \ No newline at end of file diff --git a/homeassistant/components/foscam/translations/zh-Hant.json b/homeassistant/components/foscam/translations/zh-Hant.json index d10746842a8..007a378a36b 100644 --- a/homeassistant/components/foscam/translations/zh-Hant.json +++ b/homeassistant/components/foscam/translations/zh-Hant.json @@ -21,6 +21,5 @@ } } } - }, - "title": "Foscam" + } } \ No newline at end of file diff --git a/homeassistant/components/freebox/translations/hu.json b/homeassistant/components/freebox/translations/hu.json index 873e1057c15..39cfe189449 100644 --- a/homeassistant/components/freebox/translations/hu.json +++ b/homeassistant/components/freebox/translations/hu.json @@ -10,7 +10,7 @@ }, "step": { "link": { - "description": "Kattintson a \u201eK\u00fcld\u00e9s\u201d gombra, majd \u00e9rintse meg a jobbra mutat\u00f3 nyilat az \u00fatv\u00e1laszt\u00f3n a Freebox regisztr\u00e1l\u00e1s\u00e1hoz Home Assistant seg\u00edts\u00e9g\u00e9vel. \n\n![A gomb helye a routeren] (/static/images/config_freebox.png)", + "description": "A k\u00f6vetkez\u0151 l\u00e9p\u00e9sben \u00e9rintse meg a jobbra mutat\u00f3 nyilat az \u00fatv\u00e1laszt\u00f3n a Freebox regisztr\u00e1l\u00e1s\u00e1hoz Home Assistant seg\u00edts\u00e9g\u00e9vel. \n\n![A gomb helye a routeren] (/static/images/config_freebox.png)", "title": "Freebox \u00fatv\u00e1laszt\u00f3 linkel\u00e9se" }, "user": { diff --git a/homeassistant/components/freebox/translations/it.json b/homeassistant/components/freebox/translations/it.json index 4eb49d5fdfb..f1978217547 100644 --- a/homeassistant/components/freebox/translations/it.json +++ b/homeassistant/components/freebox/translations/it.json @@ -5,7 +5,7 @@ }, "error": { "cannot_connect": "Impossibile connettersi", - "register_failed": "Errore in fase di registrazione, si prega di riprovare", + "register_failed": "Errore in fase di registrazione, riprova", "unknown": "Errore imprevisto" }, "step": { diff --git a/homeassistant/components/fritz/translations/ca.json b/homeassistant/components/fritz/translations/ca.json index d39805a6302..04d5b14cac3 100644 --- a/homeassistant/components/fritz/translations/ca.json +++ b/homeassistant/components/fritz/translations/ca.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "El dispositiu ja est\u00e0 configurat", "already_in_progress": "El flux de configuraci\u00f3 ja est\u00e0 en curs", + "ignore_ip6_link_local": "L'enlla\u00e7 amb adreces IPv6 locals no est\u00e0 perm\u00e8s", "reauth_successful": "Re-autenticaci\u00f3 realitzada correctament" }, "error": { diff --git a/homeassistant/components/fritz/translations/de.json b/homeassistant/components/fritz/translations/de.json index ae36b3450ca..d64845ba9b7 100644 --- a/homeassistant/components/fritz/translations/de.json +++ b/homeassistant/components/fritz/translations/de.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "Ger\u00e4t ist bereits konfiguriert", "already_in_progress": "Der Konfigurationsablauf wird bereits ausgef\u00fchrt", + "ignore_ip6_link_local": "IPv6 link local address wird nicht unterst\u00fctzt.", "reauth_successful": "Die erneute Authentifizierung war erfolgreich" }, "error": { diff --git a/homeassistant/components/fritz/translations/el.json b/homeassistant/components/fritz/translations/el.json index d514848040f..6dfc67e08d6 100644 --- a/homeassistant/components/fritz/translations/el.json +++ b/homeassistant/components/fritz/translations/el.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "\u0397 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03b8\u03b5\u03af", "already_in_progress": "\u0397 \u03c1\u03bf\u03ae \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7\u03c2 \u03b2\u03c1\u03af\u03c3\u03ba\u03b5\u03c4\u03b1\u03b9 \u03ae\u03b4\u03b7 \u03c3\u03b5 \u03b5\u03be\u03ad\u03bb\u03b9\u03be\u03b7", + "ignore_ip6_link_local": "\u0397 \u03c4\u03bf\u03c0\u03b9\u03ba\u03ae \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 IPv6 \u03b4\u03b5\u03bd \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9.", "reauth_successful": "\u039f \u03b5\u03ba \u03bd\u03ad\u03bf\u03c5 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03ae\u03c4\u03b1\u03bd \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03ae\u03c2" }, "error": { diff --git a/homeassistant/components/fritz/translations/en.json b/homeassistant/components/fritz/translations/en.json index e7ee1568684..3ce31866c2f 100644 --- a/homeassistant/components/fritz/translations/en.json +++ b/homeassistant/components/fritz/translations/en.json @@ -10,6 +10,7 @@ "already_configured": "Device is already configured", "already_in_progress": "Configuration flow is already in progress", "cannot_connect": "Failed to connect", + "connection_error": "Failed to connect", "invalid_auth": "Invalid authentication", "upnp_not_configured": "Missing UPnP settings on device." }, @@ -31,6 +32,16 @@ "description": "Update FRITZ!Box Tools credentials for: {host}.\n\nFRITZ!Box Tools is unable to log in to your FRITZ!Box.", "title": "Updating FRITZ!Box Tools - credentials" }, + "start_config": { + "data": { + "host": "Host", + "password": "Password", + "port": "Port", + "username": "Username" + }, + "description": "Setup FRITZ!Box Tools to control your FRITZ!Box.\nMinimum needed: username, password.", + "title": "Setup FRITZ!Box Tools - mandatory" + }, "user": { "data": { "host": "Host", diff --git a/homeassistant/components/fritz/translations/et.json b/homeassistant/components/fritz/translations/et.json index 2051e9f4e63..89bf4a3b7c9 100644 --- a/homeassistant/components/fritz/translations/et.json +++ b/homeassistant/components/fritz/translations/et.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "Seade on juba h\u00e4\u00e4lestatud", "already_in_progress": "H\u00e4\u00e4lestamine on k\u00e4imas", + "ignore_ip6_link_local": "IPv6 lingi kohalikku aadressi ei toetata.", "reauth_successful": "Taastuvastamine \u00f5nnestus" }, "error": { diff --git a/homeassistant/components/fritz/translations/fr.json b/homeassistant/components/fritz/translations/fr.json index 3219164d98b..cfcd942b530 100644 --- a/homeassistant/components/fritz/translations/fr.json +++ b/homeassistant/components/fritz/translations/fr.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "L'appareil est d\u00e9j\u00e0 configur\u00e9", "already_in_progress": "La configuration est d\u00e9j\u00e0 en cours", + "ignore_ip6_link_local": "Les adresses IPv6 de liaison locale ne sont pas prises en charge.", "reauth_successful": "La r\u00e9-authentification a r\u00e9ussi" }, "error": { diff --git a/homeassistant/components/fritz/translations/hu.json b/homeassistant/components/fritz/translations/hu.json index 81d3bb19e27..d1ff2c0c6bf 100644 --- a/homeassistant/components/fritz/translations/hu.json +++ b/homeassistant/components/fritz/translations/hu.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", "already_in_progress": "A konfigur\u00e1ci\u00f3 m\u00e1r folyamatban van", + "ignore_ip6_link_local": "Az IPv6-kapcsolat helyi c\u00edme nem t\u00e1mogatott.", "reauth_successful": "Az \u00fajhiteles\u00edt\u00e9s sikeres volt" }, "error": { diff --git a/homeassistant/components/fritz/translations/id.json b/homeassistant/components/fritz/translations/id.json index 816885b6391..c31bdf8b77c 100644 --- a/homeassistant/components/fritz/translations/id.json +++ b/homeassistant/components/fritz/translations/id.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "Perangkat sudah dikonfigurasi", "already_in_progress": "Alur konfigurasi sedang berlangsung", + "ignore_ip6_link_local": "Alamat lokal tautan IPv6 tidak didukung.", "reauth_successful": "Autentikasi ulang berhasil" }, "error": { diff --git a/homeassistant/components/fritz/translations/it.json b/homeassistant/components/fritz/translations/it.json index bf577223b6e..0516449f5db 100644 --- a/homeassistant/components/fritz/translations/it.json +++ b/homeassistant/components/fritz/translations/it.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "Il dispositivo \u00e8 gi\u00e0 configurato", "already_in_progress": "Il flusso di configurazione \u00e8 gi\u00e0 in corso", + "ignore_ip6_link_local": "L'indirizzo locale del collegamento IPv6 non \u00e8 supportato.", "reauth_successful": "La nuova autenticazione \u00e8 stata eseguita correttamente" }, "error": { diff --git a/homeassistant/components/fritz/translations/ja.json b/homeassistant/components/fritz/translations/ja.json index afbda92d3fe..8bd9747c9bc 100644 --- a/homeassistant/components/fritz/translations/ja.json +++ b/homeassistant/components/fritz/translations/ja.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "\u30c7\u30d0\u30a4\u30b9\u306f\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059", "already_in_progress": "\u69cb\u6210\u30d5\u30ed\u30fc\u306f\u3059\u3067\u306b\u9032\u884c\u4e2d\u3067\u3059", + "ignore_ip6_link_local": "IPv6\u30ea\u30f3\u30af\u306e\u30ed\u30fc\u30ab\u30eb\u30a2\u30c9\u30ec\u30b9\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002", "reauth_successful": "\u518d\u8a8d\u8a3c\u306b\u6210\u529f\u3057\u307e\u3057\u305f" }, "error": { diff --git a/homeassistant/components/fritz/translations/nl.json b/homeassistant/components/fritz/translations/nl.json index b5577f11a0d..11fabceaf8d 100644 --- a/homeassistant/components/fritz/translations/nl.json +++ b/homeassistant/components/fritz/translations/nl.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "Apparaat is al geconfigureerd", "already_in_progress": "De configuratiestroom is al aan de gang", + "ignore_ip6_link_local": "Lokaal IPv6-linkadres wordt niet ondersteund.", "reauth_successful": "Herauthenticatie was succesvol" }, "error": { diff --git a/homeassistant/components/fritz/translations/no.json b/homeassistant/components/fritz/translations/no.json index 6d6a805bab8..a18df1a7b14 100644 --- a/homeassistant/components/fritz/translations/no.json +++ b/homeassistant/components/fritz/translations/no.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "Enheten er allerede konfigurert", "already_in_progress": "Konfigurasjonsflyten p\u00e5g\u00e5r allerede", + "ignore_ip6_link_local": "IPv6-lenkens lokale adresse st\u00f8ttes ikke.", "reauth_successful": "Godkjenning p\u00e5 nytt var vellykket" }, "error": { diff --git a/homeassistant/components/fritz/translations/pl.json b/homeassistant/components/fritz/translations/pl.json index 7ec1f539aab..fed010f1987 100644 --- a/homeassistant/components/fritz/translations/pl.json +++ b/homeassistant/components/fritz/translations/pl.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "Urz\u0105dzenie jest ju\u017c skonfigurowane", "already_in_progress": "Konfiguracja jest ju\u017c w toku", + "ignore_ip6_link_local": "Adres lokalny \u0142\u0105cza IPv6 nie jest obs\u0142ugiwany.", "reauth_successful": "Ponowne uwierzytelnienie powiod\u0142o si\u0119" }, "error": { diff --git a/homeassistant/components/fritz/translations/pt-BR.json b/homeassistant/components/fritz/translations/pt-BR.json index 2170b34b1ee..ceb295310c7 100644 --- a/homeassistant/components/fritz/translations/pt-BR.json +++ b/homeassistant/components/fritz/translations/pt-BR.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "Dispositivo j\u00e1 est\u00e1 configurado", "already_in_progress": "O fluxo de configura\u00e7\u00e3o j\u00e1 est\u00e1 em andamento", + "ignore_ip6_link_local": "O endere\u00e7o local IPv6 n\u00e3o \u00e9 suportado.", "reauth_successful": "A reautentica\u00e7\u00e3o foi bem-sucedida" }, "error": { diff --git a/homeassistant/components/fritz/translations/ru.json b/homeassistant/components/fritz/translations/ru.json index 82530cca298..e45c36fe736 100644 --- a/homeassistant/components/fritz/translations/ru.json +++ b/homeassistant/components/fritz/translations/ru.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "\u042d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 Home Assistant.", "already_in_progress": "\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f.", + "ignore_ip6_link_local": "\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 IPv6 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f.", "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e." }, "error": { diff --git a/homeassistant/components/fritz/translations/tr.json b/homeassistant/components/fritz/translations/tr.json index 9a9cd3da6bf..86cabbb782b 100644 --- a/homeassistant/components/fritz/translations/tr.json +++ b/homeassistant/components/fritz/translations/tr.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "Cihaz zaten yap\u0131land\u0131r\u0131lm\u0131\u015f", "already_in_progress": "Yap\u0131land\u0131rma ak\u0131\u015f\u0131 zaten devam ediyor", + "ignore_ip6_link_local": "IPv6 ba\u011flant\u0131 yerel adresi desteklenmiyor.", "reauth_successful": "Yeniden kimlik do\u011frulama ba\u015far\u0131l\u0131 oldu" }, "error": { diff --git a/homeassistant/components/fritz/translations/zh-Hant.json b/homeassistant/components/fritz/translations/zh-Hant.json index 7eeb3ae5e4b..778c38e36f7 100644 --- a/homeassistant/components/fritz/translations/zh-Hant.json +++ b/homeassistant/components/fritz/translations/zh-Hant.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "\u88dd\u7f6e\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", "already_in_progress": "\u8a2d\u5b9a\u5df2\u7d93\u9032\u884c\u4e2d", + "ignore_ip6_link_local": "\u4e0d\u652f\u63f4\u9023\u7d50\u672c\u5730\u7aef IPv6 \u4f4d\u5740", "reauth_successful": "\u91cd\u65b0\u8a8d\u8b49\u6210\u529f" }, "error": { diff --git a/homeassistant/components/fritzbox/translations/ca.json b/homeassistant/components/fritzbox/translations/ca.json index efd81ddff84..c17b1fc87c9 100644 --- a/homeassistant/components/fritzbox/translations/ca.json +++ b/homeassistant/components/fritzbox/translations/ca.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "El dispositiu ja est\u00e0 configurat", "already_in_progress": "El flux de configuraci\u00f3 ja est\u00e0 en curs", + "ignore_ip6_link_local": "L'enlla\u00e7 amb adreces IPv6 locals no est\u00e0 perm\u00e8s", "no_devices_found": "No s'han trobat dispositius a la xarxa", "not_supported": "Connectat a AVM FRITZ!Box per\u00f2 no es poden controlar dispositius Smart Home.", "reauth_successful": "Re-autenticaci\u00f3 realitzada correctament" diff --git a/homeassistant/components/fritzbox/translations/de.json b/homeassistant/components/fritzbox/translations/de.json index 7da8e616cfc..ef2a6083608 100644 --- a/homeassistant/components/fritzbox/translations/de.json +++ b/homeassistant/components/fritzbox/translations/de.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "Ger\u00e4t ist bereits konfiguriert", "already_in_progress": "Der Konfigurationsablauf wird bereits ausgef\u00fchrt", + "ignore_ip6_link_local": "IPv6 link local address wird nicht unterst\u00fctzt.", "no_devices_found": "Keine Ger\u00e4te im Netzwerk gefunden", "not_supported": "Verbunden mit AVM FRITZ!Box, kann jedoch keine Smart Home-Ger\u00e4te steuern.", "reauth_successful": "Die erneute Authentifizierung war erfolgreich" diff --git a/homeassistant/components/fritzbox/translations/el.json b/homeassistant/components/fritzbox/translations/el.json index 975126772d5..9e1c95e41f1 100644 --- a/homeassistant/components/fritzbox/translations/el.json +++ b/homeassistant/components/fritzbox/translations/el.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "\u0397 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03b8\u03b5\u03af", "already_in_progress": "\u0397 \u03c1\u03bf\u03ae \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7\u03c2 \u03b2\u03c1\u03af\u03c3\u03ba\u03b5\u03c4\u03b1\u03b9 \u03ae\u03b4\u03b7 \u03c3\u03b5 \u03b5\u03be\u03ad\u03bb\u03b9\u03be\u03b7", + "ignore_ip6_link_local": "\u0397 \u03c4\u03bf\u03c0\u03b9\u03ba\u03ae \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 IPv6 \u03b4\u03b5\u03bd \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9.", "no_devices_found": "\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ad\u03c2 \u03c3\u03c4\u03bf \u03b4\u03af\u03ba\u03c4\u03c5\u03bf", "not_supported": "\u03a3\u03c5\u03bd\u03b4\u03ad\u03b8\u03b7\u03ba\u03b5 \u03c3\u03c4\u03bf AVM FRITZ!Box \u03b1\u03bb\u03bb\u03ac \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b5\u03bb\u03ad\u03b3\u03be\u03b5\u03b9 \u03c4\u03b9\u03c2 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ad\u03c2 Smart Home.", "reauth_successful": "\u039f \u03b5\u03ba \u03bd\u03ad\u03bf\u03c5 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03ae\u03c4\u03b1\u03bd \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03ae\u03c2" diff --git a/homeassistant/components/fritzbox/translations/et.json b/homeassistant/components/fritzbox/translations/et.json index 849dc7fadee..3db11e7355c 100644 --- a/homeassistant/components/fritzbox/translations/et.json +++ b/homeassistant/components/fritzbox/translations/et.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "Seade on juba h\u00e4\u00e4lestatud", "already_in_progress": "Seadistamine on juba k\u00e4imas", + "ignore_ip6_link_local": "IPv6 lingi kohalikku aadressi ei toetata.", "no_devices_found": "V\u00f5rgust ei leitud seadmeid", "not_supported": "\u00dchendatud AVM FRITZ!Boxiga! kuid see ei saa juhtida Smart Home seadmeid.", "reauth_successful": "Taastuvastamine \u00f5nnestus" diff --git a/homeassistant/components/fritzbox/translations/fr.json b/homeassistant/components/fritzbox/translations/fr.json index 69f024e26d7..f9e3d354a6d 100644 --- a/homeassistant/components/fritzbox/translations/fr.json +++ b/homeassistant/components/fritzbox/translations/fr.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "L'appareil est d\u00e9j\u00e0 configur\u00e9", "already_in_progress": "La configuration est d\u00e9j\u00e0 en cours", + "ignore_ip6_link_local": "Les adresses IPv6 de liaison locale ne sont pas prises en charge.", "no_devices_found": "Aucun appareil trouv\u00e9 sur le r\u00e9seau", "not_supported": "Connect\u00e9 \u00e0 AVM FRITZ! Box mais impossible de contr\u00f4ler les appareils Smart Home.", "reauth_successful": "La r\u00e9-authentification a r\u00e9ussi" diff --git a/homeassistant/components/fritzbox/translations/hu.json b/homeassistant/components/fritzbox/translations/hu.json index c1cf8154aea..f079bf8e1df 100644 --- a/homeassistant/components/fritzbox/translations/hu.json +++ b/homeassistant/components/fritzbox/translations/hu.json @@ -2,7 +2,8 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", + "ignore_ip6_link_local": "Az IPv6-kapcsolat helyi c\u00edme nem t\u00e1mogatott.", "no_devices_found": "Nem tal\u00e1lhat\u00f3 eszk\u00f6z a h\u00e1l\u00f3zaton", "not_supported": "Csatlakoztatva az AVM FRITZ! Boxhoz, de nem tudja vez\u00e9relni az intelligens otthoni eszk\u00f6z\u00f6ket.", "reauth_successful": "Az \u00fajrahiteles\u00edt\u00e9s sikeres volt." diff --git a/homeassistant/components/fritzbox/translations/id.json b/homeassistant/components/fritzbox/translations/id.json index f9c4f09b4ae..63e0ebb4823 100644 --- a/homeassistant/components/fritzbox/translations/id.json +++ b/homeassistant/components/fritzbox/translations/id.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "Perangkat sudah dikonfigurasi", "already_in_progress": "Alur konfigurasi sedang berlangsung", + "ignore_ip6_link_local": "Alamat lokal tautan IPv6 tidak didukung.", "no_devices_found": "Tidak ada perangkat yang ditemukan di jaringan", "not_supported": "Tersambung ke AVM FRITZ!Box tetapi tidak dapat mengontrol perangkat Smart Home.", "reauth_successful": "Autentikasi ulang berhasil" diff --git a/homeassistant/components/fritzbox/translations/it.json b/homeassistant/components/fritzbox/translations/it.json index 68cbe08b1b9..65a819d8329 100644 --- a/homeassistant/components/fritzbox/translations/it.json +++ b/homeassistant/components/fritzbox/translations/it.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "Il dispositivo \u00e8 gi\u00e0 configurato", "already_in_progress": "Il flusso di configurazione \u00e8 gi\u00e0 in corso", + "ignore_ip6_link_local": "L'indirizzo locale del collegamento IPv6 non \u00e8 supportato.", "no_devices_found": "Nessun dispositivo trovato sulla rete", "not_supported": "Collegato a AVM FRITZ!Box, ma non \u00e8 in grado di controllare i dispositivi Smart Home.", "reauth_successful": "La nuova autenticazione \u00e8 stata eseguita correttamente" diff --git a/homeassistant/components/fritzbox/translations/ja.json b/homeassistant/components/fritzbox/translations/ja.json index c246ea5fb0d..047442d5ee7 100644 --- a/homeassistant/components/fritzbox/translations/ja.json +++ b/homeassistant/components/fritzbox/translations/ja.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "\u30c7\u30d0\u30a4\u30b9\u306f\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059", "already_in_progress": "\u69cb\u6210\u30d5\u30ed\u30fc\u306f\u3059\u3067\u306b\u9032\u884c\u4e2d\u3067\u3059", + "ignore_ip6_link_local": "IPv6\u30ea\u30f3\u30af\u306e\u30ed\u30fc\u30ab\u30eb\u30a2\u30c9\u30ec\u30b9\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002", "no_devices_found": "\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u4e0a\u306b\u30c7\u30d0\u30a4\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093", "not_supported": "AVM FRITZ!Box\u306b\u63a5\u7d9a\u3057\u307e\u3057\u305f\u304c\u3001Smart Home devices\u3092\u5236\u5fa1\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002", "reauth_successful": "\u518d\u8a8d\u8a3c\u306b\u6210\u529f\u3057\u307e\u3057\u305f" diff --git a/homeassistant/components/fritzbox/translations/nl.json b/homeassistant/components/fritzbox/translations/nl.json index b1be4c8214f..43d51df760d 100644 --- a/homeassistant/components/fritzbox/translations/nl.json +++ b/homeassistant/components/fritzbox/translations/nl.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "Apparaat is al geconfigureerd", "already_in_progress": "De configuratiestroom is al aan de gang", + "ignore_ip6_link_local": "IPv6 link lokaal adres wordt niet ondersteund.", "no_devices_found": "Geen apparaten gevonden op het netwerk", "not_supported": "Verbonden met AVM FRITZ! Box, maar het kan geen Smart Home-apparaten bedienen.", "reauth_successful": "Herauthenticatie was succesvol" diff --git a/homeassistant/components/fritzbox/translations/no.json b/homeassistant/components/fritzbox/translations/no.json index 5ec0cc1acdc..98174053a61 100644 --- a/homeassistant/components/fritzbox/translations/no.json +++ b/homeassistant/components/fritzbox/translations/no.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "Enheten er allerede konfigurert", "already_in_progress": "Konfigurasjonsflyten p\u00e5g\u00e5r allerede", + "ignore_ip6_link_local": "IPv6-lenkens lokale adresse st\u00f8ttes ikke.", "no_devices_found": "Ingen enheter funnet p\u00e5 nettverket", "not_supported": "Tilkoblet AVM FRITZ! Box, men den klarer ikke \u00e5 kontrollere Smart Home-enheter.", "reauth_successful": "Godkjenning p\u00e5 nytt var vellykket" diff --git a/homeassistant/components/fritzbox/translations/pl.json b/homeassistant/components/fritzbox/translations/pl.json index d9832ee51a4..f1ff975af8d 100644 --- a/homeassistant/components/fritzbox/translations/pl.json +++ b/homeassistant/components/fritzbox/translations/pl.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "Urz\u0105dzenie jest ju\u017c skonfigurowane", "already_in_progress": "Konfiguracja jest ju\u017c w toku", + "ignore_ip6_link_local": "Adres lokalny \u0142\u0105cza IPv6 nie jest obs\u0142ugiwany.", "no_devices_found": "Nie znaleziono urz\u0105dze\u0144 w sieci", "not_supported": "Po\u0142\u0105czony z AVM FRITZ!Box, ale nie jest w stanie kontrolowa\u0107 urz\u0105dze\u0144 Smart Home", "reauth_successful": "Ponowne uwierzytelnienie powiod\u0142o si\u0119" diff --git a/homeassistant/components/fritzbox/translations/pt-BR.json b/homeassistant/components/fritzbox/translations/pt-BR.json index 3e3884cbc41..1fbe79772db 100644 --- a/homeassistant/components/fritzbox/translations/pt-BR.json +++ b/homeassistant/components/fritzbox/translations/pt-BR.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "Dispositivo j\u00e1 est\u00e1 configurado", "already_in_progress": "O fluxo de configura\u00e7\u00e3o j\u00e1 est\u00e1 em andamento", + "ignore_ip6_link_local": "O endere\u00e7o local IPv6 n\u00e3o \u00e9 suportado.", "no_devices_found": "Nenhum dispositivo encontrado na rede", "not_supported": "Conectado ao AVM FRITZ!Box, mas n\u00e3o consegue controlar os dispositivos Smart Home.", "reauth_successful": "A reautentica\u00e7\u00e3o foi bem-sucedida" diff --git a/homeassistant/components/fritzbox/translations/ru.json b/homeassistant/components/fritzbox/translations/ru.json index 51e9aedc632..5f939462db2 100644 --- a/homeassistant/components/fritzbox/translations/ru.json +++ b/homeassistant/components/fritzbox/translations/ru.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "\u042d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 Home Assistant.", "already_in_progress": "\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f.", + "ignore_ip6_link_local": "\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 IPv6 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f.", "no_devices_found": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0432 \u0441\u0435\u0442\u0438.", "not_supported": "\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a AVM FRITZ! Box \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e, \u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 Smart Home \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.", "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e." diff --git a/homeassistant/components/fritzbox/translations/tr.json b/homeassistant/components/fritzbox/translations/tr.json index 300ca1a096a..a870cbcae11 100644 --- a/homeassistant/components/fritzbox/translations/tr.json +++ b/homeassistant/components/fritzbox/translations/tr.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "Cihaz zaten yap\u0131land\u0131r\u0131lm\u0131\u015f", "already_in_progress": "Yap\u0131land\u0131rma ak\u0131\u015f\u0131 zaten devam ediyor", + "ignore_ip6_link_local": "IPv6 ba\u011flant\u0131 yerel adresi desteklenmiyor.", "no_devices_found": "A\u011fda cihaz bulunamad\u0131", "not_supported": "AVM FRITZ!Box'a ba\u011fl\u0131 ancak Ak\u0131ll\u0131 Ev cihazlar\u0131n\u0131 kontrol edemiyor.", "reauth_successful": "Yeniden kimlik do\u011frulama ba\u015far\u0131l\u0131 oldu" diff --git a/homeassistant/components/fritzbox/translations/zh-Hant.json b/homeassistant/components/fritzbox/translations/zh-Hant.json index b90b87aaee7..904cd81f625 100644 --- a/homeassistant/components/fritzbox/translations/zh-Hant.json +++ b/homeassistant/components/fritzbox/translations/zh-Hant.json @@ -3,6 +3,7 @@ "abort": { "already_configured": "\u88dd\u7f6e\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", "already_in_progress": "\u8a2d\u5b9a\u5df2\u7d93\u9032\u884c\u4e2d", + "ignore_ip6_link_local": "\u4e0d\u652f\u63f4\u9023\u7d50\u672c\u5730\u7aef IPv6 \u4f4d\u5740", "no_devices_found": "\u7db2\u8def\u4e0a\u627e\u4e0d\u5230\u88dd\u7f6e", "not_supported": "\u5df2\u9023\u7dda\u81f3 AVM FRITZ!Box \u4f46\u7121\u6cd5\u63a7\u5236\u667a\u80fd\u5bb6\u5ead\u88dd\u7f6e\u3002", "reauth_successful": "\u91cd\u65b0\u8a8d\u8b49\u6210\u529f" diff --git a/homeassistant/components/generic/translations/bg.json b/homeassistant/components/generic/translations/bg.json new file mode 100644 index 00000000000..dc9bd439f0b --- /dev/null +++ b/homeassistant/components/generic/translations/bg.json @@ -0,0 +1,53 @@ +{ + "config": { + "abort": { + "no_devices_found": "\u041d\u044f\u043c\u0430 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u043c\u0440\u0435\u0436\u0430\u0442\u0430", + "single_instance_allowed": "\u0412\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e. \u0412\u044a\u0437\u043c\u043e\u0436\u043d\u0430 \u0435 \u0441\u0430\u043c\u043e \u0435\u0434\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f." + }, + "error": { + "unknown": "\u041d\u0435\u043e\u0447\u0430\u043a\u0432\u0430\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430" + }, + "step": { + "confirm": { + "description": "\u0418\u0441\u043a\u0430\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0437\u0430\u043f\u043e\u0447\u043d\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0432\u0430\u043d\u0435\u0442\u043e?" + }, + "content_type": { + "data": { + "content_type": "\u0422\u0438\u043f \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435" + }, + "description": "\u041f\u043e\u0441\u043e\u0447\u0435\u0442\u0435 \u0442\u0438\u043f\u0430 \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435 \u0437\u0430 \u043f\u043e\u0442\u043e\u043a\u0430." + }, + "user": { + "data": { + "authentication": "\u0423\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0432\u0430\u043d\u0435", + "content_type": "\u0422\u0438\u043f \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435", + "password": "\u041f\u0430\u0440\u043e\u043b\u0430", + "rtsp_transport": "RTSP \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u0435\u043d \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b", + "username": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e \u0438\u043c\u0435" + } + } + } + }, + "options": { + "error": { + "unknown": "\u041d\u0435\u043e\u0447\u0430\u043a\u0432\u0430\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430" + }, + "step": { + "content_type": { + "data": { + "content_type": "\u0422\u0438\u043f \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435" + }, + "description": "\u041f\u043e\u0441\u043e\u0447\u0435\u0442\u0435 \u0442\u0438\u043f\u0430 \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435 \u0437\u0430 \u043f\u043e\u0442\u043e\u043a\u0430." + }, + "init": { + "data": { + "authentication": "\u0423\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0432\u0430\u043d\u0435", + "content_type": "\u0422\u0438\u043f \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435", + "password": "\u041f\u0430\u0440\u043e\u043b\u0430", + "rtsp_transport": "RTSP \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u0435\u043d \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b", + "username": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e \u0438\u043c\u0435" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/generic/translations/ca.json b/homeassistant/components/generic/translations/ca.json new file mode 100644 index 00000000000..3c2f5055ba5 --- /dev/null +++ b/homeassistant/components/generic/translations/ca.json @@ -0,0 +1,88 @@ +{ + "config": { + "abort": { + "no_devices_found": "No s'han trobat dispositius a la xarxa", + "single_instance_allowed": "Ja configurat. Nom\u00e9s \u00e9s possible una sola configuraci\u00f3." + }, + "error": { + "already_exists": "Ja hi ha una c\u00e0mera amb aquest URL de configuraci\u00f3.", + "invalid_still_image": "L'URL no ha retornat una imatge fixa v\u00e0lida", + "no_still_image_or_stream_url": "Has d'especificar almenys una imatge un URL de flux", + "stream_file_not_found": "Fitxer no trobat mentre s'intentava connectar al flux de dades (est\u00e0 instal\u00b7lat ffmpeg?)", + "stream_http_not_found": "HTTP 404 'Not found' a l'intentar connectar-se al flux de dades ('stream')", + "stream_io_error": "Error d'entrada/sortida mentre s'intentava connectar al flux de dades. Protocol de transport RTSP incorrecte?", + "stream_no_route_to_host": "No s'ha pogut trobar l'amfitri\u00f3 mentre intentava connectar al flux de dades", + "stream_no_video": "El flux no cont\u00e9 v\u00eddeo", + "stream_not_permitted": "Operaci\u00f3 no permesa mentre s'intentava connectar al flux de dades. Protocol de transport RTSP incorrecte?", + "stream_unauthorised": "L'autoritzaci\u00f3 ha fallat mentre s'intentava connectar amb el flux de dades", + "timeout": "El temps m\u00e0xim de c\u00e0rrega de l'URL ha expirat", + "unable_still_load": "No s'ha pogut carregar cap imatge v\u00e0lida des de l'URL d'imatge fixa (pot ser per un amfitri\u00f3 o URL inv\u00e0lid o un error d'autenticaci\u00f3). Revisa els registres per a m\u00e9s informaci\u00f3.", + "unknown": "Error inesperat" + }, + "step": { + "confirm": { + "description": "Vols comen\u00e7ar la configuraci\u00f3?" + }, + "content_type": { + "data": { + "content_type": "Tipus de contingut" + }, + "description": "Especifica el tipus de contingut per al flux de dades (stream)." + }, + "user": { + "data": { + "authentication": "Autenticaci\u00f3", + "content_type": "Tipus de contingut", + "framerate": "Freq\u00fc\u00e8ncia de visualitzaci\u00f3 (Hz)", + "limit_refetch_to_url_change": "Limita la lectura al canvi d'URL", + "password": "Contrasenya", + "rtsp_transport": "Protocol de transport RTSP", + "still_image_url": "URL d'imatge fixa (p. ex. http://...)", + "stream_source": "URL origen del flux (p. ex. rtsp://...)", + "username": "Nom d'usuari", + "verify_ssl": "Verifica el certificat SSL" + }, + "description": "Introdueix la configuraci\u00f3 de connexi\u00f3 amb la c\u00e0mera." + } + } + }, + "options": { + "error": { + "already_exists": "Ja hi ha una c\u00e0mera amb aquest URL de configuraci\u00f3.", + "invalid_still_image": "L'URL no ha retornat una imatge fixa v\u00e0lida", + "no_still_image_or_stream_url": "Has d'especificar almenys una imatge un URL de flux", + "stream_file_not_found": "Fitxer no trobat mentre s'intentava connectar al flux de dades (est\u00e0 instal\u00b7lat ffmpeg?)", + "stream_http_not_found": "HTTP 404 'Not found' a l'intentar connectar-se al flux de dades ('stream')", + "stream_io_error": "Error d'entrada/sortida mentre s'intentava connectar al flux de dades. Protocol de transport RTSP incorrecte?", + "stream_no_route_to_host": "No s'ha pogut trobar l'amfitri\u00f3 mentre intentava connectar al flux de dades", + "stream_no_video": "El flux no cont\u00e9 v\u00eddeo", + "stream_not_permitted": "Operaci\u00f3 no permesa mentre s'intentava connectar al flux de dades. Protocol de transport RTSP incorrecte?", + "stream_unauthorised": "L'autoritzaci\u00f3 ha fallat mentre s'intentava connectar amb el flux de dades", + "timeout": "El temps m\u00e0xim de c\u00e0rrega de l'URL ha expirat", + "unable_still_load": "No s'ha pogut carregar cap imatge v\u00e0lida des de l'URL d'imatge fixa (pot ser per un amfitri\u00f3 o URL inv\u00e0lid o un error d'autenticaci\u00f3). Revisa els registres per a m\u00e9s informaci\u00f3.", + "unknown": "Error inesperat" + }, + "step": { + "content_type": { + "data": { + "content_type": "Tipus de contingut" + }, + "description": "Especifica el tipus de contingut per al flux de dades (stream)." + }, + "init": { + "data": { + "authentication": "Autenticaci\u00f3", + "content_type": "Tipus de contingut", + "framerate": "Freq\u00fc\u00e8ncia de visualitzaci\u00f3 (Hz)", + "limit_refetch_to_url_change": "Limita la lectura al canvi d'URL", + "password": "Contrasenya", + "rtsp_transport": "Protocol de transport RTSP", + "still_image_url": "URL d'imatge fixa (p. ex. http://...)", + "stream_source": "URL origen del flux (p. ex. rtsp://...)", + "username": "Nom d'usuari", + "verify_ssl": "Verifica el certificat SSL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/generic/translations/cs.json b/homeassistant/components/generic/translations/cs.json new file mode 100644 index 00000000000..520e0743edd --- /dev/null +++ b/homeassistant/components/generic/translations/cs.json @@ -0,0 +1,33 @@ +{ + "config": { + "step": { + "content_type": { + "data": { + "content_type": "Typ obsahu" + } + }, + "user": { + "data": { + "password": "Heslo", + "username": "U\u017eivatelsk\u00e9 jm\u00e9no" + } + } + } + }, + "options": { + "step": { + "content_type": { + "data": { + "content_type": "Typ obsahu" + } + }, + "init": { + "data": { + "password": "Heslo", + "username": "U\u017eivatelsk\u00e9 jm\u00e9no", + "verify_ssl": "Ov\u011b\u0159it certifik\u00e1t SSL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/generic/translations/de.json b/homeassistant/components/generic/translations/de.json new file mode 100644 index 00000000000..849555dcc5e --- /dev/null +++ b/homeassistant/components/generic/translations/de.json @@ -0,0 +1,88 @@ +{ + "config": { + "abort": { + "no_devices_found": "Keine Ger\u00e4te im Netzwerk gefunden", + "single_instance_allowed": "Bereits konfiguriert. Nur eine einzige Konfiguration m\u00f6glich." + }, + "error": { + "already_exists": "Es existiert bereits eine Kamera mit diesen URL-Einstellungen.", + "invalid_still_image": "URL hat kein g\u00fcltiges Standbild zur\u00fcckgegeben", + "no_still_image_or_stream_url": "Du musst mindestens eine Standbild- oder Stream-URL angeben", + "stream_file_not_found": "Datei nicht gefunden beim Versuch, eine Verbindung zum Stream herzustellen (ist ffmpeg installiert?)", + "stream_http_not_found": "HTTP 404 Not found beim Versuch, eine Verbindung zum Stream herzustellen", + "stream_io_error": "Eingabe-/Ausgabefehler beim Versuch, eine Verbindung zum Stream herzustellen. Falsches RTSP-Transportprotokoll?", + "stream_no_route_to_host": "Beim Versuch, eine Verbindung zum Stream herzustellen, konnte der Host nicht gefunden werden", + "stream_no_video": "Stream enth\u00e4lt kein Video", + "stream_not_permitted": "Beim Versuch, eine Verbindung zum Stream herzustellen, ist ein Vorgang nicht zul\u00e4ssig. Falsches RTSP-Transportprotokoll?", + "stream_unauthorised": "Autorisierung beim Versuch, eine Verbindung zum Stream herzustellen, fehlgeschlagen", + "timeout": "Zeit\u00fcberschreitung beim Laden der URL", + "unable_still_load": "Es konnte kein g\u00fcltiges Bild von der Standbild-URL geladen werden (z. B. ung\u00fcltiger Host, URL oder Authentifizierungsfehler). \u00dcberpr\u00fcfe das Protokoll f\u00fcr weitere Informationen.", + "unknown": "Unerwarteter Fehler" + }, + "step": { + "confirm": { + "description": "M\u00f6chtest Du mit der Einrichtung beginnen?" + }, + "content_type": { + "data": { + "content_type": "Inhaltstyp" + }, + "description": "Gib den Inhaltstyp des Streams an." + }, + "user": { + "data": { + "authentication": "Authentifizierung", + "content_type": "Inhaltstyp", + "framerate": "Bildfrequenz (Hz)", + "limit_refetch_to_url_change": "Neuabruf auf URL-\u00c4nderung beschr\u00e4nken", + "password": "Passwort", + "rtsp_transport": "RTSP-Transportprotokoll", + "still_image_url": "Standbild-URL (z.B. http://...)", + "stream_source": "Stream-Quell-URL (z.B. rtsp://...)", + "username": "Benutzername", + "verify_ssl": "SSL-Zertifikat \u00fcberpr\u00fcfen" + }, + "description": "Gib die Einstellungen f\u00fcr die Verbindung mit der Kamera ein." + } + } + }, + "options": { + "error": { + "already_exists": "Es existiert bereits eine Kamera mit diesen URL-Einstellungen.", + "invalid_still_image": "URL hat kein g\u00fcltiges Standbild zur\u00fcckgegeben", + "no_still_image_or_stream_url": "Du musst mindestens eine Standbild- oder Stream-URL angeben", + "stream_file_not_found": "Datei nicht gefunden beim Versuch, eine Verbindung zum Stream herzustellen (ist ffmpeg installiert?)", + "stream_http_not_found": "HTTP 404 Not found beim Versuch, eine Verbindung zum Stream herzustellen", + "stream_io_error": "Eingabe-/Ausgabefehler beim Versuch, eine Verbindung zum Stream herzustellen. Falsches RTSP-Transportprotokoll?", + "stream_no_route_to_host": "Beim Versuch, eine Verbindung zum Stream herzustellen, konnte der Host nicht gefunden werden", + "stream_no_video": "Stream enth\u00e4lt kein Video", + "stream_not_permitted": "Beim Versuch, eine Verbindung zum Stream herzustellen, ist ein Vorgang nicht zul\u00e4ssig. Falsches RTSP-Transportprotokoll?", + "stream_unauthorised": "Autorisierung beim Versuch, eine Verbindung zum Stream herzustellen, fehlgeschlagen", + "timeout": "Zeit\u00fcberschreitung beim Laden der URL", + "unable_still_load": "Es konnte kein g\u00fcltiges Bild von der Standbild-URL geladen werden (z. B. ung\u00fcltiger Host, URL oder Authentifizierungsfehler). \u00dcberpr\u00fcfe das Protokoll f\u00fcr weitere Informationen.", + "unknown": "Unerwarteter Fehler" + }, + "step": { + "content_type": { + "data": { + "content_type": "Inhaltstyp" + }, + "description": "Gib den Inhaltstyp des Streams an." + }, + "init": { + "data": { + "authentication": "Authentifizierung", + "content_type": "Inhaltstyp", + "framerate": "Bildfrequenz (Hz)", + "limit_refetch_to_url_change": "Neuabruf auf URL-\u00c4nderung beschr\u00e4nken", + "password": "Passwort", + "rtsp_transport": "RTSP-Transportprotokoll", + "still_image_url": "Standbild-URL (z.B. http://...)", + "stream_source": "Stream-Quell-URL (z.B. rtsp://...)", + "username": "Benutzername", + "verify_ssl": "SSL-Zertifikat \u00fcberpr\u00fcfen" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/generic/translations/el.json b/homeassistant/components/generic/translations/el.json new file mode 100644 index 00000000000..f3fae37f5ca --- /dev/null +++ b/homeassistant/components/generic/translations/el.json @@ -0,0 +1,88 @@ +{ + "config": { + "abort": { + "no_devices_found": "\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ad\u03c2 \u03c3\u03c4\u03bf \u03b4\u03af\u03ba\u03c4\u03c5\u03bf", + "single_instance_allowed": "\u0388\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af. \u039c\u03cc\u03bd\u03bf \u03bc\u03af\u03b1 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae." + }, + "error": { + "already_exists": "\u03a5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03ba\u03ac\u03bc\u03b5\u03c1\u03b1 \u03bc\u03b5 \u03b1\u03c5\u03c4\u03ad\u03c2 \u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 URL.", + "invalid_still_image": "\u0397 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03b4\u03b5\u03bd \u03b5\u03c0\u03ad\u03c3\u03c4\u03c1\u03b5\u03c8\u03b5 \u03bc\u03b9\u03b1 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03b1\u03ba\u03af\u03bd\u03b7\u03c4\u03b7 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1", + "no_still_image_or_stream_url": "\u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03ba\u03b1\u03b8\u03bf\u03c1\u03af\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf\u03c5\u03bb\u03ac\u03c7\u03b9\u03c3\u03c4\u03bf\u03bd \u03bc\u03b9\u03b1 \u03c3\u03c4\u03b1\u03b8\u03b5\u03c1\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1 \u03ae \u03bc\u03b9\u03b1 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03c1\u03bf\u03ae\u03c2", + "stream_file_not_found": "\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b5\u03b9\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 \u03c3\u03b5 \u03c1\u03bf\u03ae (\u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03b3\u03ba\u03b1\u03c4\u03b5\u03c3\u03c4\u03b7\u03bc\u03ad\u03bd\u03bf \u03c4\u03bf ffmpeg;)", + "stream_http_not_found": "HTTP 404 \u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b5\u03b9\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 \u03c3\u03c4\u03b7 \u03c1\u03bf\u03ae", + "stream_io_error": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5/\u03b5\u03be\u03cc\u03b4\u03bf\u03c5 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b5\u03b9\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 \u03c3\u03c4\u03b7 \u03c1\u03bf\u03ae. \u039b\u03ac\u03b8\u03bf\u03c2 \u03c0\u03c1\u03c9\u03c4\u03cc\u03ba\u03bf\u03bb\u03bb\u03bf \u03bc\u03b5\u03c4\u03b1\u03c6\u03bf\u03c1\u03ac\u03c2 RTSP;", + "stream_no_route_to_host": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b5\u03cd\u03c1\u03b5\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03ba\u03b5\u03bd\u03c4\u03c1\u03b9\u03ba\u03bf\u03cd \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b5\u03b9\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 \u03c3\u03c4\u03b7 \u03c1\u03bf\u03ae", + "stream_no_video": "\u0397 \u03c1\u03bf\u03ae \u03b4\u03b5\u03bd \u03ad\u03c7\u03b5\u03b9 \u03b2\u03af\u03bd\u03c4\u03b5\u03bf", + "stream_not_permitted": "\u0394\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9 \u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b5\u03b9\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 \u03c3\u03b5 \u03c1\u03bf\u03ae. \u039b\u03ac\u03b8\u03bf\u03c2 \u03c0\u03c1\u03c9\u03c4\u03cc\u03ba\u03bf\u03bb\u03bb\u03bf \u03bc\u03b5\u03c4\u03b1\u03c6\u03bf\u03c1\u03ac\u03c2 RTSP;", + "stream_unauthorised": "\u0397 \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03cc\u03c4\u03b7\u03c3\u03b7 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b5\u03b9\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 \u03c3\u03c4\u03b7 \u03c1\u03bf\u03ae", + "timeout": "\u039b\u03ae\u03be\u03b7 \u03c7\u03c1\u03bf\u03bd\u03b9\u03ba\u03bf\u03cd \u03bf\u03c1\u03af\u03bf\u03c5 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7 \u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7\u03c2 URL", + "unable_still_load": "\u0391\u03b4\u03c5\u03bd\u03b1\u03bc\u03af\u03b1 \u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7\u03c2 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7\u03c2 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 \u03b1\u03c0\u03cc \u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03b1\u03ba\u03af\u03bd\u03b7\u03c4\u03b7\u03c2 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 (\u03c0.\u03c7. \u03bc\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ba\u03b5\u03bd\u03c4\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae\u03c2, \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03ae \u03b1\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2). \u0391\u03bd\u03b1\u03c4\u03c1\u03ad\u03be\u03c4\u03b5 \u03c3\u03c4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03ba\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2 \u03b3\u03b9\u03b1 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2.", + "unknown": "\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" + }, + "step": { + "confirm": { + "description": "\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03be\u03b5\u03ba\u03b9\u03bd\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7 \u03c1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7;" + }, + "content_type": { + "data": { + "content_type": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03bf\u03c5" + }, + "description": "\u039a\u03b1\u03b8\u03bf\u03c1\u03af\u03c3\u03c4\u03b5 \u03c4\u03bf\u03bd \u03c4\u03cd\u03c0\u03bf \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03bf\u03c5 \u03b3\u03b9\u03b1 \u03c4\u03b7 \u03c1\u03bf\u03ae." + }, + "user": { + "data": { + "authentication": "\u0395\u03bb\u03ad\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", + "content_type": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03bf\u03c5", + "framerate": "\u03a1\u03c5\u03b8\u03bc\u03cc\u03c2 \u03ba\u03b1\u03c1\u03ad (Hz)", + "limit_refetch_to_url_change": "\u03a0\u03b5\u03c1\u03b9\u03bf\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2 \u03b5\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac\u03c2 \u03c3\u03c4\u03b7\u03bd \u03b1\u03bb\u03bb\u03b1\u03b3\u03ae url", + "password": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", + "rtsp_transport": "\u03a0\u03c1\u03c9\u03c4\u03cc\u03ba\u03bf\u03bb\u03bb\u03bf \u03bc\u03b5\u03c4\u03b1\u03c6\u03bf\u03c1\u03ac\u03c2 RTSP", + "still_image_url": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03c3\u03c4\u03b1\u03b8\u03b5\u03c1\u03ae\u03c2 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 (\u03c0.\u03c7. http://...)", + "stream_source": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03c0\u03b7\u03b3\u03ae\u03c2 \u03c1\u03bf\u03ae\u03c2 (\u03c0.\u03c7. rtsp://...)", + "username": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7", + "verify_ssl": "\u0395\u03c0\u03b1\u03bb\u03b7\u03b8\u03b5\u03cd\u03c3\u03c4\u03b5 \u03c4\u03bf \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03cc SSL" + }, + "description": "\u0395\u03b9\u03c3\u03b1\u03b3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd \u03ba\u03ac\u03bc\u03b5\u03c1\u03b1." + } + } + }, + "options": { + "error": { + "already_exists": "\u03a5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03ba\u03ac\u03bc\u03b5\u03c1\u03b1 \u03bc\u03b5 \u03b1\u03c5\u03c4\u03ad\u03c2 \u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 URL.", + "invalid_still_image": "\u0397 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03b4\u03b5\u03bd \u03b5\u03c0\u03ad\u03c3\u03c4\u03c1\u03b5\u03c8\u03b5 \u03bc\u03b9\u03b1 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03b1\u03ba\u03af\u03bd\u03b7\u03c4\u03b7 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1", + "no_still_image_or_stream_url": "\u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03ba\u03b1\u03b8\u03bf\u03c1\u03af\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf\u03c5\u03bb\u03ac\u03c7\u03b9\u03c3\u03c4\u03bf\u03bd \u03bc\u03b9\u03b1 \u03c3\u03c4\u03b1\u03b8\u03b5\u03c1\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1 \u03ae \u03bc\u03b9\u03b1 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03c1\u03bf\u03ae\u03c2", + "stream_file_not_found": "\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b5\u03b9\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 \u03c3\u03b5 \u03c1\u03bf\u03ae (\u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03b3\u03ba\u03b1\u03c4\u03b5\u03c3\u03c4\u03b7\u03bc\u03ad\u03bd\u03bf \u03c4\u03bf ffmpeg;)", + "stream_http_not_found": "HTTP 404 \u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b5\u03b9\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 \u03c3\u03c4\u03b7 \u03c1\u03bf\u03ae", + "stream_io_error": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5/\u03b5\u03be\u03cc\u03b4\u03bf\u03c5 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b5\u03b9\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 \u03c3\u03c4\u03b7 \u03c1\u03bf\u03ae. \u039b\u03ac\u03b8\u03bf\u03c2 \u03c0\u03c1\u03c9\u03c4\u03cc\u03ba\u03bf\u03bb\u03bb\u03bf \u03bc\u03b5\u03c4\u03b1\u03c6\u03bf\u03c1\u03ac\u03c2 RTSP;", + "stream_no_route_to_host": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b5\u03cd\u03c1\u03b5\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03ba\u03b5\u03bd\u03c4\u03c1\u03b9\u03ba\u03bf\u03cd \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b5\u03b9\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 \u03c3\u03c4\u03b7 \u03c1\u03bf\u03ae", + "stream_no_video": "\u0397 \u03c1\u03bf\u03ae \u03b4\u03b5\u03bd \u03ad\u03c7\u03b5\u03b9 \u03b2\u03af\u03bd\u03c4\u03b5\u03bf", + "stream_not_permitted": "\u0394\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9 \u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b5\u03b9\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 \u03c3\u03b5 \u03c1\u03bf\u03ae. \u039b\u03ac\u03b8\u03bf\u03c2 \u03c0\u03c1\u03c9\u03c4\u03cc\u03ba\u03bf\u03bb\u03bb\u03bf \u03bc\u03b5\u03c4\u03b1\u03c6\u03bf\u03c1\u03ac\u03c2 RTSP;", + "stream_unauthorised": "\u0397 \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03cc\u03c4\u03b7\u03c3\u03b7 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b5\u03b9\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 \u03c3\u03c4\u03b7 \u03c1\u03bf\u03ae", + "timeout": "\u039b\u03ae\u03be\u03b7 \u03c7\u03c1\u03bf\u03bd\u03b9\u03ba\u03bf\u03cd \u03bf\u03c1\u03af\u03bf\u03c5 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7 \u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7\u03c2 URL", + "unable_still_load": "\u0391\u03b4\u03c5\u03bd\u03b1\u03bc\u03af\u03b1 \u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7\u03c2 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7\u03c2 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 \u03b1\u03c0\u03cc \u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03b1\u03ba\u03af\u03bd\u03b7\u03c4\u03b7\u03c2 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 (\u03c0.\u03c7. \u03bc\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ba\u03b5\u03bd\u03c4\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae\u03c2, \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03ae \u03b1\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2). \u0391\u03bd\u03b1\u03c4\u03c1\u03ad\u03be\u03c4\u03b5 \u03c3\u03c4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03ba\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2 \u03b3\u03b9\u03b1 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2.", + "unknown": "\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" + }, + "step": { + "content_type": { + "data": { + "content_type": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03bf\u03c5" + }, + "description": "\u039a\u03b1\u03b8\u03bf\u03c1\u03af\u03c3\u03c4\u03b5 \u03c4\u03bf\u03bd \u03c4\u03cd\u03c0\u03bf \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03bf\u03c5 \u03b3\u03b9\u03b1 \u03c4\u03b7 \u03c1\u03bf\u03ae." + }, + "init": { + "data": { + "authentication": "\u0395\u03bb\u03ad\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", + "content_type": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03bf\u03c5", + "framerate": "\u03a1\u03c5\u03b8\u03bc\u03cc\u03c2 \u03ba\u03b1\u03c1\u03ad (Hz)", + "limit_refetch_to_url_change": "\u03a0\u03b5\u03c1\u03b9\u03bf\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2 \u03b5\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac\u03c2 \u03c3\u03c4\u03b7\u03bd \u03b1\u03bb\u03bb\u03b1\u03b3\u03ae url", + "password": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", + "rtsp_transport": "\u03a0\u03c1\u03c9\u03c4\u03cc\u03ba\u03bf\u03bb\u03bb\u03bf \u03bc\u03b5\u03c4\u03b1\u03c6\u03bf\u03c1\u03ac\u03c2 RTSP", + "still_image_url": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03c3\u03c4\u03b1\u03b8\u03b5\u03c1\u03ae\u03c2 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 (\u03c0.\u03c7. http://...)", + "stream_source": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03c0\u03b7\u03b3\u03ae\u03c2 \u03c1\u03bf\u03ae\u03c2 (\u03c0.\u03c7. rtsp://...)", + "username": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7", + "verify_ssl": "\u0395\u03c0\u03b1\u03bb\u03b7\u03b8\u03b5\u03cd\u03c3\u03c4\u03b5 \u03c4\u03bf \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03cc SSL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/generic/translations/en.json b/homeassistant/components/generic/translations/en.json index 478ea76b476..b158488f178 100644 --- a/homeassistant/components/generic/translations/en.json +++ b/homeassistant/components/generic/translations/en.json @@ -32,6 +32,7 @@ "user": { "data": { "authentication": "Authentication", + "content_type": "Content Type", "framerate": "Frame Rate (Hz)", "limit_refetch_to_url_change": "Limit refetch to url change", "password": "Password", @@ -71,6 +72,7 @@ "init": { "data": { "authentication": "Authentication", + "content_type": "Content Type", "framerate": "Frame Rate (Hz)", "limit_refetch_to_url_change": "Limit refetch to url change", "password": "Password", diff --git a/homeassistant/components/generic/translations/et.json b/homeassistant/components/generic/translations/et.json new file mode 100644 index 00000000000..ae6f5aa75f8 --- /dev/null +++ b/homeassistant/components/generic/translations/et.json @@ -0,0 +1,88 @@ +{ + "config": { + "abort": { + "no_devices_found": "V\u00f5rgust ei leitud \u00fchtegi seadet", + "single_instance_allowed": "Juba seadistatud. V\u00f5imalik on ainult \u00fcks seadistamine." + }, + "error": { + "already_exists": "Nende URL-i seadetega kaamera on juba olemas.", + "invalid_still_image": "URL ei tagastanud kehtivat pilti", + "no_still_image_or_stream_url": "Pead m\u00e4\u00e4rama v\u00e4hemalt liikumatu pildi v\u00f5i voo URL-i", + "stream_file_not_found": "Vooga \u00fchenduse loomisel ei leitud faili (kas ffmpeg on installitud?)", + "stream_http_not_found": "HTTP 404 viga kui \u00fcritatakse vooga \u00fchendust luua", + "stream_io_error": "Sisend-/v\u00e4ljundviga vooga \u00fchenduse loomisel. Vale RTSP transpordiprotokoll?", + "stream_no_route_to_host": "Vooga \u00fchenduse loomisel ei leitud hosti", + "stream_no_video": "Voos pole videot", + "stream_not_permitted": "Vooga \u00fchenduse loomisel pole toiming lubatud. Vale RTSP transpordiprotokoll?", + "stream_unauthorised": "Autoriseerimine eba\u00f5nnestus vooga \u00fchendamise ajal", + "timeout": "URL-i laadimise ajal\u00f5pp", + "unable_still_load": "Pilti ei saa laadida URL-ist (nt kehtetu host, URL v\u00f5i autentimise t\u00f5rge). Lisateabe saamiseks vaata logi.", + "unknown": "Ootamatu t\u00f5rge" + }, + "step": { + "confirm": { + "description": "Kas alustada seadistamist?" + }, + "content_type": { + "data": { + "content_type": "Sisu t\u00fc\u00fcp" + }, + "description": "M\u00e4\u00e4ra voo sisut\u00fc\u00fcp." + }, + "user": { + "data": { + "authentication": "Autentimine", + "content_type": "Sisu t\u00fc\u00fcp", + "framerate": "Kaadrisagedus (Hz)", + "limit_refetch_to_url_change": "Piira laadimist URL-i muutmiseni", + "password": "Salas\u00f5na", + "rtsp_transport": "RTSP transpordiprotokoll", + "still_image_url": "Pildi URL (nt http://...)", + "stream_source": "Voo allikas URL (nt rtsp://...)", + "username": "Kasutajanimi", + "verify_ssl": "Kontrolli SSL sertifikaati" + }, + "description": "Sisesta s\u00e4tted kaameraga \u00fchenduse loomiseks." + } + } + }, + "options": { + "error": { + "already_exists": "Nende URL-i seadetega kaamera on juba olemas.", + "invalid_still_image": "URL ei tagastanud kehtivat pilti", + "no_still_image_or_stream_url": "Pead m\u00e4\u00e4rama v\u00e4hemalt liikumatu pildi v\u00f5i voo URL-i", + "stream_file_not_found": "Vooga \u00fchenduse loomisel ei leitud faili (kas ffmpeg on installitud?)", + "stream_http_not_found": "HTTP 404 viga kui \u00fcritatakse vooga \u00fchendust luua", + "stream_io_error": "Sisend-/v\u00e4ljundviga vooga \u00fchenduse loomisel. Vale RTSP transpordiprotokoll?", + "stream_no_route_to_host": "Vooga \u00fchenduse loomisel ei leitud hosti", + "stream_no_video": "Voos pole videot", + "stream_not_permitted": "Vooga \u00fchenduse loomisel pole toiming lubatud. Vale RTSP transpordiprotokoll?", + "stream_unauthorised": "Autoriseerimine eba\u00f5nnestus vooga \u00fchendamise ajal", + "timeout": "URL-i laadimise ajal\u00f5pp", + "unable_still_load": "Pilti ei saa laadida URL-ist (nt kehtetu host, URL v\u00f5i autentimise t\u00f5rge). Lisateabe saamiseks vaata logi.", + "unknown": "Ootamatu t\u00f5rge" + }, + "step": { + "content_type": { + "data": { + "content_type": "Sisu t\u00fc\u00fcp" + }, + "description": "M\u00e4\u00e4ra voo sisut\u00fc\u00fcp." + }, + "init": { + "data": { + "authentication": "Autentimine", + "content_type": "Sisu t\u00fc\u00fcp", + "framerate": "Kaadrisagedus (Hz)", + "limit_refetch_to_url_change": "Piira laadimist URL-i muutmiseni", + "password": "Salas\u00f5na", + "rtsp_transport": "RTSP transpordiprotokoll", + "still_image_url": "Pildi URL (nt http://...)", + "stream_source": "Voo allikas URL (nt rtsp://...)", + "username": "Kasutajanimi", + "verify_ssl": "Kontrolli SSL sertifikaati" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/generic/translations/fr.json b/homeassistant/components/generic/translations/fr.json new file mode 100644 index 00000000000..4905afb64e7 --- /dev/null +++ b/homeassistant/components/generic/translations/fr.json @@ -0,0 +1,88 @@ +{ + "config": { + "abort": { + "no_devices_found": "Aucun appareil trouv\u00e9 sur le r\u00e9seau", + "single_instance_allowed": "D\u00e9j\u00e0 configur\u00e9. Une seule configuration possible." + }, + "error": { + "already_exists": "Une cam\u00e9ra avec ces param\u00e8tres d'URL existe d\u00e9j\u00e0.", + "invalid_still_image": "L'URL n'a pas renvoy\u00e9 d'image fixe valide", + "no_still_image_or_stream_url": "Vous devez au moins renseigner une URL d'image fixe ou de flux", + "stream_file_not_found": "Fichier non trouv\u00e9 lors de la tentative de connexion au flux (ffmpeg est-il install\u00e9\u00a0?)", + "stream_http_not_found": "Erreur\u00a0404 (introuvable) lors de la tentative de connexion au flux", + "stream_io_error": "Erreur d'entr\u00e9e/sortie lors de la tentative de connexion au flux. Mauvais protocole de transport RTSP\u00a0?", + "stream_no_route_to_host": "Impossible de trouver l'h\u00f4te lors de la tentative de connexion au flux", + "stream_no_video": "Le flux ne contient pas de vid\u00e9o", + "stream_not_permitted": "Op\u00e9ration non autoris\u00e9e lors de la tentative de connexion au flux. Mauvais protocole de transport RTSP\u00a0?", + "stream_unauthorised": "\u00c9chec de l'autorisation lors de la tentative de connexion au flux", + "timeout": "D\u00e9lai d'attente expir\u00e9 lors du chargement de l'URL", + "unable_still_load": "Impossible de charger une image valide depuis l'URL d'image fixe (cela pourrait \u00eatre d\u00fb \u00e0 un h\u00f4te ou \u00e0 une URL non valide, ou \u00e0 un \u00e9chec de l'authentification). Consultez le journal pour plus d'informations.", + "unknown": "Erreur inattendue" + }, + "step": { + "confirm": { + "description": "Voulez-vous commencer la configuration\u00a0?" + }, + "content_type": { + "data": { + "content_type": "Type de contenu" + }, + "description": "Sp\u00e9cifiez le type de contenu du flux." + }, + "user": { + "data": { + "authentication": "Authentification", + "content_type": "Type de contenu", + "framerate": "Fr\u00e9quence d'images (en hertz)", + "limit_refetch_to_url_change": "Limiter la r\u00e9cup\u00e9ration aux changements d'URL", + "password": "Mot de passe", + "rtsp_transport": "Protocole de transport RTSP", + "still_image_url": "URL d'image fixe (par exemple, http://\u2026)", + "stream_source": "URL de la source du flux (par exemple, rtsp://\u2026)", + "username": "Nom d'utilisateur", + "verify_ssl": "V\u00e9rifier le certificat SSL" + }, + "description": "Saisissez les param\u00e8tres de connexion \u00e0 la cam\u00e9ra." + } + } + }, + "options": { + "error": { + "already_exists": "Une cam\u00e9ra avec ces param\u00e8tres d'URL existe d\u00e9j\u00e0.", + "invalid_still_image": "L'URL n'a pas renvoy\u00e9 d'image fixe valide", + "no_still_image_or_stream_url": "Vous devez au moins renseigner une URL d'image fixe ou de flux", + "stream_file_not_found": "Fichier non trouv\u00e9 lors de la tentative de connexion au flux (ffmpeg est-il install\u00e9\u00a0?)", + "stream_http_not_found": "Erreur\u00a0404 (introuvable) lors de la tentative de connexion au flux", + "stream_io_error": "Erreur d'entr\u00e9e/sortie lors de la tentative de connexion au flux. Mauvais protocole de transport RTSP\u00a0?", + "stream_no_route_to_host": "Impossible de trouver l'h\u00f4te lors de la tentative de connexion au flux", + "stream_no_video": "Le flux ne contient pas de vid\u00e9o", + "stream_not_permitted": "Op\u00e9ration non autoris\u00e9e lors de la tentative de connexion au flux. Mauvais protocole de transport RTSP\u00a0?", + "stream_unauthorised": "\u00c9chec de l'autorisation lors de la tentative de connexion au flux", + "timeout": "D\u00e9lai d'attente expir\u00e9 lors du chargement de l'URL", + "unable_still_load": "Impossible de charger une image valide depuis l'URL d'image fixe (cela pourrait \u00eatre d\u00fb \u00e0 un h\u00f4te ou \u00e0 une URL non valide, ou \u00e0 un \u00e9chec de l'authentification). Consultez le journal pour plus d'informations.", + "unknown": "Erreur inattendue" + }, + "step": { + "content_type": { + "data": { + "content_type": "Type de contenu" + }, + "description": "Sp\u00e9cifiez le type de contenu du flux." + }, + "init": { + "data": { + "authentication": "Authentification", + "content_type": "Type de contenu", + "framerate": "Fr\u00e9quence d'images (en hertz)", + "limit_refetch_to_url_change": "Limiter la r\u00e9cup\u00e9ration aux changements d'URL", + "password": "Mot de passe", + "rtsp_transport": "Protocole de transport RTSP", + "still_image_url": "URL d'image fixe (par exemple, http://\u2026)", + "stream_source": "URL de la source du flux (par exemple, rtsp://\u2026)", + "username": "Nom d'utilisateur", + "verify_ssl": "V\u00e9rifier le certificat SSL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/generic/translations/he.json b/homeassistant/components/generic/translations/he.json new file mode 100644 index 00000000000..b20b0ea88a7 --- /dev/null +++ b/homeassistant/components/generic/translations/he.json @@ -0,0 +1,88 @@ +{ + "config": { + "abort": { + "no_devices_found": "\u05dc\u05d0 \u05e0\u05de\u05e6\u05d0\u05d5 \u05de\u05db\u05e9\u05d9\u05e8\u05d9\u05dd \u05d1\u05e8\u05e9\u05ea", + "single_instance_allowed": "\u05ea\u05e6\u05d5\u05e8\u05ea\u05d5 \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4. \u05e8\u05e7 \u05ea\u05e6\u05d5\u05e8\u05d4 \u05d0\u05d7\u05ea \u05d0\u05e4\u05e9\u05e8\u05d9\u05ea." + }, + "error": { + "already_exists": "\u05de\u05e6\u05dc\u05de\u05d4 \u05e2\u05dd \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05ea\u05e8 \u05d6\u05d5 \u05db\u05d1\u05e8 \u05e7\u05d9\u05d9\u05de\u05ea.", + "invalid_still_image": "\u05db\u05ea\u05d5\u05d1\u05ea \u05d4\u05d0\u05ea\u05e8 \u05dc\u05d0 \u05d4\u05d7\u05d6\u05d9\u05e8\u05d4 \u05ea\u05de\u05d5\u05e0\u05ea \u05e1\u05d8\u05d9\u05dc\u05e1 \u05d7\u05d5\u05e7\u05d9\u05ea", + "no_still_image_or_stream_url": "\u05d9\u05e9 \u05dc\u05e6\u05d9\u05d9\u05df \u05dc\u05e4\u05d7\u05d5\u05ea \u05ea\u05de\u05d5\u05e0\u05ea \u05e1\u05d8\u05d9\u05dc\u05e1 \u05d0\u05d5 \u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05ea\u05e8 \u05e9\u05dc \u05d4\u05d6\u05e8\u05de\u05d4", + "stream_file_not_found": "\u05d4\u05e7\u05d5\u05d1\u05e5 \u05dc\u05d0 \u05e0\u05de\u05e6\u05d0 \u05d1\u05e2\u05ea \u05e0\u05d9\u05e1\u05d9\u05d5\u05df \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05dc\u05d4\u05d6\u05e8\u05de\u05d4 (\u05d4\u05d0\u05dd ffmpeg \u05de\u05d5\u05ea\u05e7\u05df?)", + "stream_http_not_found": "HTTP 404 \u05dc\u05d0 \u05e0\u05de\u05e6\u05d0 \u05d1\u05e2\u05ea \u05e0\u05d9\u05e1\u05d9\u05d5\u05df \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05dc\u05d4\u05d6\u05e8\u05de\u05d4", + "stream_io_error": "\u05e9\u05d2\u05d9\u05d0\u05ea \u05e7\u05dc\u05d8/\u05e4\u05dc\u05d8 \u05d1\u05e2\u05ea \u05e0\u05d9\u05e1\u05d9\u05d5\u05df \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05dc\u05d4\u05d6\u05e8\u05de\u05d4. \u05e4\u05e8\u05d5\u05d8\u05d5\u05e7\u05d5\u05dc \u05ea\u05e2\u05d1\u05d5\u05e8\u05d4 \u05e9\u05d2\u05d5\u05d9 \u05e9\u05dc RTSP?", + "stream_no_route_to_host": "\u05dc\u05d0 \u05e0\u05d9\u05ea\u05df \u05d4\u05d9\u05d4 \u05dc\u05de\u05e6\u05d5\u05d0 \u05d0\u05ea \u05d4\u05de\u05d0\u05e8\u05d7 \u05d1\u05e2\u05ea \u05e0\u05d9\u05e1\u05d9\u05d5\u05df \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05dc\u05d4\u05d6\u05e8\u05de\u05d4", + "stream_no_video": "\u05d0\u05d9\u05df \u05d5\u05d9\u05d3\u05d9\u05d0\u05d5 \u05dc\u05d4\u05d6\u05e8\u05de\u05d4", + "stream_not_permitted": "\u05d4\u05e4\u05e2\u05d5\u05dc\u05d4 \u05d0\u05d9\u05e0\u05d4 \u05de\u05d5\u05ea\u05e8\u05ea \u05d1\u05e2\u05ea \u05e0\u05d9\u05e1\u05d9\u05d5\u05df \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05dc\u05d4\u05d6\u05e8\u05de\u05d4. \u05e4\u05e8\u05d5\u05d8\u05d5\u05e7\u05d5\u05dc \u05ea\u05e2\u05d1\u05d5\u05e8\u05d4 \u05e9\u05d2\u05d5\u05d9 \u05e9\u05dc RTSP?", + "stream_unauthorised": "\u05d4\u05d4\u05e8\u05e9\u05d0\u05d4 \u05e0\u05db\u05e9\u05dc\u05d4 \u05d1\u05e2\u05ea \u05e0\u05d9\u05e1\u05d9\u05d5\u05df \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05dc\u05d4\u05d6\u05e8\u05de\u05d4", + "timeout": "\u05d6\u05de\u05df \u05e7\u05e6\u05d5\u05d1 \u05d1\u05e2\u05ea \u05d8\u05e2\u05d9\u05e0\u05ea \u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05ea\u05e8", + "unable_still_load": "\u05d0\u05d9\u05df \u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \u05dc\u05d8\u05e2\u05d5\u05df \u05ea\u05de\u05d5\u05e0\u05d4 \u05d7\u05d5\u05e7\u05d9\u05ea \u05de\u05db\u05ea\u05d5\u05d1\u05ea \u05d4\u05d0\u05ea\u05e8 \u05e9\u05dc \u05ea\u05de\u05d5\u05e0\u05ea \u05e1\u05d8\u05d9\u05dc\u05e1 (\u05dc\u05d3\u05d5\u05d2\u05de\u05d4, \u05db\u05e9\u05dc \u05dc\u05d0 \u05d7\u05d5\u05e7\u05d9 \u05d1\u05de\u05d7\u05e9\u05d1 \u05de\u05d0\u05e8\u05d7, \u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05ea\u05e8 \u05d0\u05d5 \u05d0\u05d9\u05de\u05d5\u05ea). \u05e0\u05d0 \u05dc\u05e2\u05d9\u05d9\u05df \u05d1\u05d9\u05d5\u05de\u05df \u05d4\u05e8\u05d9\u05e9\u05d5\u05dd \u05dc\u05e7\u05d1\u05dc\u05ea \u05de\u05d9\u05d3\u05e2 \u05e0\u05d5\u05e1\u05e3.", + "unknown": "\u05e9\u05d2\u05d9\u05d0\u05d4 \u05d1\u05dc\u05ea\u05d9 \u05e6\u05e4\u05d5\u05d9\u05d4" + }, + "step": { + "confirm": { + "description": "\u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05ea\u05d7\u05d9\u05dc \u05d1\u05d4\u05d2\u05d3\u05e8\u05d4?" + }, + "content_type": { + "data": { + "content_type": "\u05e1\u05d5\u05d2 \u05ea\u05d5\u05db\u05df" + }, + "description": "\u05e0\u05d0 \u05dc\u05e6\u05d9\u05d9\u05df \u05d0\u05ea \u05e1\u05d5\u05d2 \u05d4\u05ea\u05d5\u05db\u05df \u05e2\u05d1\u05d5\u05e8 \u05d4\u05d6\u05e8\u05dd." + }, + "user": { + "data": { + "authentication": "\u05d0\u05d9\u05de\u05d5\u05ea", + "content_type": "\u05e1\u05d5\u05d2 \u05ea\u05d5\u05db\u05df", + "framerate": "\u05e7\u05e6\u05d1 \u05e4\u05e8\u05d9\u05d9\u05de\u05d9\u05dd (\u05d4\u05e8\u05e5)", + "limit_refetch_to_url_change": "\u05d4\u05d2\u05d1\u05dc\u05d4 \u05e9\u05dc \u05d0\u05d7\u05e1\u05d5\u05df \u05d7\u05d5\u05d6\u05e8 \u05dc\u05e9\u05d9\u05e0\u05d5\u05d9 \u05db\u05ea\u05d5\u05d1\u05ea \u05d4\u05d0\u05ea\u05e8", + "password": "\u05e1\u05d9\u05e1\u05de\u05d4", + "rtsp_transport": "\u05e4\u05e8\u05d5\u05d8\u05d5\u05e7\u05d5\u05dc \u05ea\u05e2\u05d1\u05d5\u05e8\u05d4 RTSP", + "still_image_url": "\u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05ea\u05e8 \u05e9\u05dc \u05ea\u05de\u05d5\u05e0\u05ea \u05e1\u05d8\u05d9\u05dc\u05e1 (\u05dc\u05d3\u05d5\u05d2\u05de\u05d4, http://...)", + "stream_source": "\u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05ea\u05e8 \u05e9\u05dc \u05de\u05e7\u05d5\u05e8 \u05d6\u05e8\u05dd (\u05dc\u05d3\u05d5\u05d2\u05de\u05d4, rtsp://...)", + "username": "\u05e9\u05dd \u05de\u05e9\u05ea\u05de\u05e9", + "verify_ssl": "\u05d0\u05d9\u05de\u05d5\u05ea \u05d0\u05d9\u05e9\u05d5\u05e8 SSL" + }, + "description": "\u05e0\u05d0 \u05dc\u05d4\u05d6\u05d9\u05df \u05d0\u05ea \u05d4\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05db\u05d3\u05d9 \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05dc\u05de\u05e6\u05dc\u05de\u05d4." + } + } + }, + "options": { + "error": { + "already_exists": "\u05de\u05e6\u05dc\u05de\u05d4 \u05e2\u05dd \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05ea\u05e8 \u05d6\u05d5 \u05db\u05d1\u05e8 \u05e7\u05d9\u05d9\u05de\u05ea.", + "invalid_still_image": "\u05db\u05ea\u05d5\u05d1\u05ea \u05d4\u05d0\u05ea\u05e8 \u05dc\u05d0 \u05d4\u05d7\u05d6\u05d9\u05e8\u05d4 \u05ea\u05de\u05d5\u05e0\u05ea \u05e1\u05d8\u05d9\u05dc\u05e1 \u05d7\u05d5\u05e7\u05d9\u05ea", + "no_still_image_or_stream_url": "\u05d9\u05e9 \u05dc\u05e6\u05d9\u05d9\u05df \u05dc\u05e4\u05d7\u05d5\u05ea \u05ea\u05de\u05d5\u05e0\u05ea \u05e1\u05d8\u05d9\u05dc\u05e1 \u05d0\u05d5 \u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05ea\u05e8 \u05e9\u05dc \u05d4\u05d6\u05e8\u05de\u05d4", + "stream_file_not_found": "\u05d4\u05e7\u05d5\u05d1\u05e5 \u05dc\u05d0 \u05e0\u05de\u05e6\u05d0 \u05d1\u05e2\u05ea \u05e0\u05d9\u05e1\u05d9\u05d5\u05df \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05dc\u05d4\u05d6\u05e8\u05de\u05d4 (\u05d4\u05d0\u05dd ffmpeg \u05de\u05d5\u05ea\u05e7\u05df?)", + "stream_http_not_found": "HTTP 404 \u05dc\u05d0 \u05e0\u05de\u05e6\u05d0 \u05d1\u05e2\u05ea \u05e0\u05d9\u05e1\u05d9\u05d5\u05df \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05dc\u05d4\u05d6\u05e8\u05de\u05d4", + "stream_io_error": "\u05e9\u05d2\u05d9\u05d0\u05ea \u05e7\u05dc\u05d8/\u05e4\u05dc\u05d8 \u05d1\u05e2\u05ea \u05e0\u05d9\u05e1\u05d9\u05d5\u05df \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05dc\u05d4\u05d6\u05e8\u05de\u05d4. \u05e4\u05e8\u05d5\u05d8\u05d5\u05e7\u05d5\u05dc \u05ea\u05e2\u05d1\u05d5\u05e8\u05d4 \u05e9\u05d2\u05d5\u05d9 \u05e9\u05dc RTSP?", + "stream_no_route_to_host": "\u05dc\u05d0 \u05e0\u05d9\u05ea\u05df \u05d4\u05d9\u05d4 \u05dc\u05de\u05e6\u05d5\u05d0 \u05d0\u05ea \u05d4\u05de\u05d0\u05e8\u05d7 \u05d1\u05e2\u05ea \u05e0\u05d9\u05e1\u05d9\u05d5\u05df \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05dc\u05d4\u05d6\u05e8\u05de\u05d4", + "stream_no_video": "\u05d0\u05d9\u05df \u05d5\u05d9\u05d3\u05d9\u05d0\u05d5 \u05dc\u05d4\u05d6\u05e8\u05de\u05d4", + "stream_not_permitted": "\u05d4\u05e4\u05e2\u05d5\u05dc\u05d4 \u05d0\u05d9\u05e0\u05d4 \u05de\u05d5\u05ea\u05e8\u05ea \u05d1\u05e2\u05ea \u05e0\u05d9\u05e1\u05d9\u05d5\u05df \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05dc\u05d4\u05d6\u05e8\u05de\u05d4. \u05e4\u05e8\u05d5\u05d8\u05d5\u05e7\u05d5\u05dc \u05ea\u05e2\u05d1\u05d5\u05e8\u05d4 \u05e9\u05d2\u05d5\u05d9 \u05e9\u05dc RTSP?", + "stream_unauthorised": "\u05d4\u05d4\u05e8\u05e9\u05d0\u05d4 \u05e0\u05db\u05e9\u05dc\u05d4 \u05d1\u05e2\u05ea \u05e0\u05d9\u05e1\u05d9\u05d5\u05df \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05dc\u05d4\u05d6\u05e8\u05de\u05d4", + "timeout": "\u05d6\u05de\u05df \u05e7\u05e6\u05d5\u05d1 \u05d1\u05e2\u05ea \u05d8\u05e2\u05d9\u05e0\u05ea \u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05ea\u05e8", + "unable_still_load": "\u05d0\u05d9\u05df \u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \u05dc\u05d8\u05e2\u05d5\u05df \u05ea\u05de\u05d5\u05e0\u05d4 \u05d7\u05d5\u05e7\u05d9\u05ea \u05de\u05db\u05ea\u05d5\u05d1\u05ea \u05d4\u05d0\u05ea\u05e8 \u05e9\u05dc \u05ea\u05de\u05d5\u05e0\u05ea \u05e1\u05d8\u05d9\u05dc\u05e1 (\u05dc\u05d3\u05d5\u05d2\u05de\u05d4, \u05db\u05e9\u05dc \u05dc\u05d0 \u05d7\u05d5\u05e7\u05d9 \u05d1\u05de\u05d7\u05e9\u05d1 \u05de\u05d0\u05e8\u05d7, \u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05ea\u05e8 \u05d0\u05d5 \u05d0\u05d9\u05de\u05d5\u05ea). \u05e0\u05d0 \u05dc\u05e2\u05d9\u05d9\u05df \u05d1\u05d9\u05d5\u05de\u05df \u05d4\u05e8\u05d9\u05e9\u05d5\u05dd \u05dc\u05e7\u05d1\u05dc\u05ea \u05de\u05d9\u05d3\u05e2 \u05e0\u05d5\u05e1\u05e3.", + "unknown": "\u05e9\u05d2\u05d9\u05d0\u05d4 \u05d1\u05dc\u05ea\u05d9 \u05e6\u05e4\u05d5\u05d9\u05d4" + }, + "step": { + "content_type": { + "data": { + "content_type": "\u05e1\u05d5\u05d2 \u05ea\u05d5\u05db\u05df" + }, + "description": "\u05e0\u05d0 \u05dc\u05e6\u05d9\u05d9\u05df \u05d0\u05ea \u05e1\u05d5\u05d2 \u05d4\u05ea\u05d5\u05db\u05df \u05e2\u05d1\u05d5\u05e8 \u05d4\u05d6\u05e8\u05dd." + }, + "init": { + "data": { + "authentication": "\u05d0\u05d9\u05de\u05d5\u05ea", + "content_type": "\u05e1\u05d5\u05d2 \u05ea\u05d5\u05db\u05df", + "framerate": "\u05e7\u05e6\u05d1 \u05e4\u05e8\u05d9\u05d9\u05de\u05d9\u05dd (\u05d4\u05e8\u05e5)", + "limit_refetch_to_url_change": "\u05d4\u05d2\u05d1\u05dc\u05d4 \u05e9\u05dc \u05d0\u05d7\u05e1\u05d5\u05df \u05d7\u05d5\u05d6\u05e8 \u05dc\u05e9\u05d9\u05e0\u05d5\u05d9 \u05db\u05ea\u05d5\u05d1\u05ea \u05d4\u05d0\u05ea\u05e8", + "password": "\u05e1\u05d9\u05e1\u05de\u05d4", + "rtsp_transport": "\u05e4\u05e8\u05d5\u05d8\u05d5\u05e7\u05d5\u05dc \u05ea\u05e2\u05d1\u05d5\u05e8\u05d4 RTSP", + "still_image_url": "\u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05ea\u05e8 \u05e9\u05dc \u05ea\u05de\u05d5\u05e0\u05ea \u05e1\u05d8\u05d9\u05dc\u05e1 (\u05dc\u05d3\u05d5\u05d2\u05de\u05d4, http://...)", + "stream_source": "\u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05ea\u05e8 \u05e9\u05dc \u05de\u05e7\u05d5\u05e8 \u05d6\u05e8\u05dd (\u05dc\u05d3\u05d5\u05d2\u05de\u05d4, rtsp://...)", + "username": "\u05e9\u05dd \u05de\u05e9\u05ea\u05de\u05e9", + "verify_ssl": "\u05d0\u05d9\u05de\u05d5\u05ea \u05d0\u05d9\u05e9\u05d5\u05e8 SSL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/generic/translations/hu.json b/homeassistant/components/generic/translations/hu.json new file mode 100644 index 00000000000..4e97e594d1e --- /dev/null +++ b/homeassistant/components/generic/translations/hu.json @@ -0,0 +1,88 @@ +{ + "config": { + "abort": { + "no_devices_found": "Nem tal\u00e1lhat\u00f3 eszk\u00f6z a h\u00e1l\u00f3zaton", + "single_instance_allowed": "M\u00e1r konfigur\u00e1lva van. Csak egy konfigur\u00e1ci\u00f3 lehets\u00e9ges." + }, + "error": { + "already_exists": "M\u00e1r l\u00e9tezik egy kamera ezekkel az URL-be\u00e1ll\u00edt\u00e1sokkal.", + "invalid_still_image": "Az URL nem adott vissza \u00e9rv\u00e9nyes \u00e1ll\u00f3k\u00e9pet", + "no_still_image_or_stream_url": "Legal\u00e1bb egy \u00e1ll\u00f3k\u00e9pet vagy stream URL-c\u00edmet kell megadnia.", + "stream_file_not_found": "F\u00e1jl nem tal\u00e1lhat\u00f3 a streamhez val\u00f3 csatlakoz\u00e1s sor\u00e1n (telep\u00edtve van az ffmpeg?)", + "stream_http_not_found": "HTTP 404 Not found - hiba az adatfolyamhoz val\u00f3 csatlakoz\u00e1s k\u00f6zben", + "stream_io_error": "Bemeneti/kimeneti hiba t\u00f6rt\u00e9nt az adatfolyamhoz val\u00f3 kapcsol\u00f3d\u00e1s k\u00f6zben. Rossz RTSP sz\u00e1ll\u00edt\u00e1si protokoll?", + "stream_no_route_to_host": "Nem tal\u00e1lhat\u00f3 a c\u00edm, mik\u00f6zben a rendszer az adatfolyamhoz pr\u00f3b\u00e1l csatlakozni", + "stream_no_video": "Az adatfolyamban nincs vide\u00f3", + "stream_not_permitted": "A m\u0171velet nem enged\u00e9lyezett, mik\u00f6zben megpr\u00f3b\u00e1l csatlakozni a folyamhoz. Rossz fajta RTSP protokoll?", + "stream_unauthorised": "A hiteles\u00edt\u00e9s meghi\u00fasult, mik\u00f6zben megpr\u00f3b\u00e1lt csatlakozni az adatfolyamhoz", + "timeout": "Id\u0151t\u00fall\u00e9p\u00e9s az URL bet\u00f6lt\u00e9se k\u00f6zben", + "unable_still_load": "Nem siker\u00fclt \u00e9rv\u00e9nyes k\u00e9pet bet\u00f6lteni az \u00e1ll\u00f3k\u00e9p URL-c\u00edm\u00e9r\u0151l (pl. \u00e9rv\u00e9nytelen host, URL vagy hiteles\u00edt\u00e9si hiba). Tov\u00e1bbi inform\u00e1ci\u00f3\u00e9rt tekintse \u00e1t a napl\u00f3t.", + "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" + }, + "step": { + "confirm": { + "description": "El szeretn\u00e9 kezdeni a be\u00e1ll\u00edt\u00e1st?" + }, + "content_type": { + "data": { + "content_type": "Tartalom t\u00edpus" + }, + "description": "Az adatfolyam tartalomt\u00edpua (Content-Type)." + }, + "user": { + "data": { + "authentication": "Hiteles\u00edt\u00e9s", + "content_type": "Tartalom t\u00edpusa", + "framerate": "K\u00e9pkockasebess\u00e9g (Hz)", + "limit_refetch_to_url_change": "Korl\u00e1tozza a visszah\u00edv\u00e1st az url v\u00e1ltoz\u00e1sra", + "password": "Jelsz\u00f3", + "rtsp_transport": "RTSP protokoll", + "still_image_url": "\u00c1ll\u00f3k\u00e9p URL (pl. http://...)", + "stream_source": "Mozg\u00f3k\u00e9p adatfolyam URL (pl. rtsp://...)", + "username": "Felhaszn\u00e1l\u00f3n\u00e9v", + "verify_ssl": "SSL-tan\u00fas\u00edtv\u00e1ny ellen\u0151rz\u00e9se" + }, + "description": "Adja meg a kamer\u00e1hoz val\u00f3 csatlakoz\u00e1s be\u00e1ll\u00edt\u00e1sait." + } + } + }, + "options": { + "error": { + "already_exists": "M\u00e1r l\u00e9tezik egy kamera ezekkel az URL-be\u00e1ll\u00edt\u00e1sokkal.", + "invalid_still_image": "Az URL nem adott vissza \u00e9rv\u00e9nyes \u00e1ll\u00f3k\u00e9pet", + "no_still_image_or_stream_url": "Legal\u00e1bb egy \u00e1ll\u00f3k\u00e9pet vagy stream URL-c\u00edmet kell megadnia.", + "stream_file_not_found": "F\u00e1jl nem tal\u00e1lhat\u00f3 a streamhez val\u00f3 csatlakoz\u00e1s sor\u00e1n (telep\u00edtve van az ffmpeg?)", + "stream_http_not_found": "HTTP 404 Not found - hiba az adatfolyamhoz val\u00f3 csatlakoz\u00e1s k\u00f6zben", + "stream_io_error": "Bemeneti/kimeneti hiba t\u00f6rt\u00e9nt az adatfolyamhoz val\u00f3 kapcsol\u00f3d\u00e1s k\u00f6zben. Rossz RTSP sz\u00e1ll\u00edt\u00e1si protokoll?", + "stream_no_route_to_host": "Nem tal\u00e1lhat\u00f3 a c\u00edm, mik\u00f6zben a rendszer az adatfolyamhoz pr\u00f3b\u00e1l csatlakozni", + "stream_no_video": "Az adatfolyamban nincs vide\u00f3", + "stream_not_permitted": "A m\u0171velet nem enged\u00e9lyezett, mik\u00f6zben megpr\u00f3b\u00e1l csatlakozni a folyamhoz. Rossz fajta RTSP protokoll?", + "stream_unauthorised": "A hiteles\u00edt\u00e9s meghi\u00fasult, mik\u00f6zben megpr\u00f3b\u00e1lt csatlakozni az adatfolyamhoz", + "timeout": "Id\u0151t\u00fall\u00e9p\u00e9s az URL bet\u00f6lt\u00e9se k\u00f6zben", + "unable_still_load": "Nem siker\u00fclt \u00e9rv\u00e9nyes k\u00e9pet bet\u00f6lteni az \u00e1ll\u00f3k\u00e9p URL-c\u00edm\u00e9r\u0151l (pl. \u00e9rv\u00e9nytelen host, URL vagy hiteles\u00edt\u00e9si hiba). Tov\u00e1bbi inform\u00e1ci\u00f3\u00e9rt tekintse \u00e1t a napl\u00f3t.", + "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" + }, + "step": { + "content_type": { + "data": { + "content_type": "Tartalom t\u00edpus" + }, + "description": "Az adatfolyam tartalomt\u00edpua (Content-Type)." + }, + "init": { + "data": { + "authentication": "Hiteles\u00edt\u00e9s", + "content_type": "Tartalom t\u00edpusa", + "framerate": "K\u00e9pkockasebess\u00e9g (Hz)", + "limit_refetch_to_url_change": "Korl\u00e1tozza a visszah\u00edv\u00e1st az url v\u00e1ltoz\u00e1sra", + "password": "Jelsz\u00f3", + "rtsp_transport": "RTSP protokoll", + "still_image_url": "\u00c1ll\u00f3k\u00e9p URL (pl. http://...)", + "stream_source": "Mozg\u00f3k\u00e9p adatfolyam URL (pl. rtsp://...)", + "username": "Felhaszn\u00e1l\u00f3n\u00e9v", + "verify_ssl": "SSL-tan\u00fas\u00edtv\u00e1ny ellen\u0151rz\u00e9se" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/generic/translations/id.json b/homeassistant/components/generic/translations/id.json new file mode 100644 index 00000000000..4b3106ad1df --- /dev/null +++ b/homeassistant/components/generic/translations/id.json @@ -0,0 +1,88 @@ +{ + "config": { + "abort": { + "no_devices_found": "Tidak ada perangkat yang ditemukan di jaringan", + "single_instance_allowed": "Sudah dikonfigurasi. Hanya satu konfigurasi yang diizinkan." + }, + "error": { + "already_exists": "Kamera dengan setelan URL ini sudah ada.", + "invalid_still_image": "URL tidak mengembalikan gambar diam yang valid", + "no_still_image_or_stream_url": "Anda harus menentukan setidaknya gambar diam atau URL streaming", + "stream_file_not_found": "File tidak ditemukan saat mencoba menyambung ke streaming (sudahkah ffmpeg diinstal?)", + "stream_http_not_found": "HTTP 404 Tidak ditemukan saat mencoba menyambung ke streaming", + "stream_io_error": "Kesalahan Input/Output saat mencoba menyambung ke streaming. Apakah protokol transportasi RTSP salah?", + "stream_no_route_to_host": "Tidak dapat menemukan host saat mencoba menyambung ke streaming", + "stream_no_video": "Streaming tidak memiliki video", + "stream_not_permitted": "Operasi tidak diizinkan saat mencoba menyambung ke streaming. Apakah protokol transportasi RTSP salah?", + "stream_unauthorised": "Otorisasi gagal saat mencoba menyambung ke streaming", + "timeout": "Tenggang waktu habis saat memuat URL", + "unable_still_load": "Tidak dapat memuat gambar yang valid dari URL gambar diam (mis. host yang tidak valid, URL, atau kegagalan autentikasi). Tinjau log untuk info lebih lanjut.", + "unknown": "Kesalahan yang tidak diharapkan" + }, + "step": { + "confirm": { + "description": "Ingin memulai penyiapan?" + }, + "content_type": { + "data": { + "content_type": "Jenis Konten" + }, + "description": "Tentukan jenis konten untuk streaming." + }, + "user": { + "data": { + "authentication": "Autentikasi", + "content_type": "Jenis Konten", + "framerate": "Frame Rate (Hz)", + "limit_refetch_to_url_change": "Batasi pengambilan ulang untuk perubahan URL", + "password": "Kata Sandi", + "rtsp_transport": "Protokol transportasi RTSP", + "still_image_url": "URL Gambar Diam (mis. http://...)", + "stream_source": "URL Sumber Streaming (mis. rtsp://...)", + "username": "Nama Pengguna", + "verify_ssl": "Verifikasi sertifikat SSL" + }, + "description": "Masukkan pengaturan untuk terhubung ke kamera." + } + } + }, + "options": { + "error": { + "already_exists": "Kamera dengan setelan URL ini sudah ada.", + "invalid_still_image": "URL tidak mengembalikan gambar diam yang valid", + "no_still_image_or_stream_url": "Anda harus menentukan setidaknya gambar diam atau URL streaming", + "stream_file_not_found": "File tidak ditemukan saat mencoba menyambung ke streaming (sudahkah ffmpeg diinstal?)", + "stream_http_not_found": "HTTP 404 Tidak ditemukan saat mencoba menyambung ke streaming", + "stream_io_error": "Kesalahan Input/Output saat mencoba menyambung ke streaming. Apakah protokol transportasi RTSP salah?", + "stream_no_route_to_host": "Tidak dapat menemukan host saat mencoba menyambung ke streaming", + "stream_no_video": "Streaming tidak memiliki video", + "stream_not_permitted": "Operasi tidak diizinkan saat mencoba menyambung ke streaming. Apakah protokol transportasi RTSP salah?", + "stream_unauthorised": "Otorisasi gagal saat mencoba menyambung ke streaming", + "timeout": "Tenggang waktu habis saat memuat URL", + "unable_still_load": "Tidak dapat memuat gambar yang valid dari URL gambar diam (mis. host yang tidak valid, URL, atau kegagalan autentikasi). Tinjau log untuk info lebih lanjut.", + "unknown": "Kesalahan yang tidak diharapkan" + }, + "step": { + "content_type": { + "data": { + "content_type": "Jenis Konten" + }, + "description": "Tentukan jenis konten untuk streaming." + }, + "init": { + "data": { + "authentication": "Autentikasi", + "content_type": "Jenis Konten", + "framerate": "Frame Rate (Hz)", + "limit_refetch_to_url_change": "Batasi pengambilan ulang untuk perubahan URL", + "password": "Kata Sandi", + "rtsp_transport": "Protokol transportasi RTSP", + "still_image_url": "URL Gambar Diam (mis. http://...)", + "stream_source": "URL Sumber Streaming (mis. rtsp://...)", + "username": "Nama Pengguna", + "verify_ssl": "Verifikasi sertifikat SSL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/generic/translations/it.json b/homeassistant/components/generic/translations/it.json new file mode 100644 index 00000000000..880fcff500b --- /dev/null +++ b/homeassistant/components/generic/translations/it.json @@ -0,0 +1,88 @@ +{ + "config": { + "abort": { + "no_devices_found": "Nessun dispositivo trovato sulla rete", + "single_instance_allowed": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione." + }, + "error": { + "already_exists": "Esiste gi\u00e0 una telecamera con queste impostazioni URL.", + "invalid_still_image": "L'URL non ha restituito un'immagine fissa valida", + "no_still_image_or_stream_url": "Devi specificare almeno un'immagine fissa o un URL di un flusso", + "stream_file_not_found": "File non trovato durante il tentativo di connessione al (\u00e8 installato ffmpeg?)", + "stream_http_not_found": "HTTP 404 Non trovato durante il tentativo di connessione al flusso", + "stream_io_error": "Errore di input/output durante il tentativo di connessione al flusso. Protocollo di trasporto RTSP errato?", + "stream_no_route_to_host": "Impossibile trovare l'host durante il tentativo di connessione al flusso", + "stream_no_video": "Il flusso non ha video", + "stream_not_permitted": "Operazione non consentita durante il tentativo di connessione al . Protocollo di trasporto RTSP errato?", + "stream_unauthorised": "Autorizzazione non riuscita durante il tentativo di connessione al flusso", + "timeout": "Timeout durante il caricamento dell'URL", + "unable_still_load": "Impossibile caricare un'immagine valida dall'URL dell'immagine fissa (ad es. host, URL non valido o errore di autenticazione). Esamina il registro per ulteriori informazioni.", + "unknown": "Errore imprevisto" + }, + "step": { + "confirm": { + "description": "Vuoi iniziare la configurazione?" + }, + "content_type": { + "data": { + "content_type": "Tipo di contenuto" + }, + "description": "Specificare il tipo di contenuto per il flusso." + }, + "user": { + "data": { + "authentication": "Autenticazione", + "content_type": "Tipo di contenuto", + "framerate": "Frequenza fotogrammi (Hz)", + "limit_refetch_to_url_change": "Limita il recupero alla modifica dell'URL", + "password": "Password", + "rtsp_transport": "Protocollo di trasporto RTSP", + "still_image_url": "URL immagine fissa (ad es. http://...)", + "stream_source": "URL sorgente del flusso (ad es. rtsp://...)", + "username": "Nome utente", + "verify_ssl": "Verifica il certificato SSL" + }, + "description": "Inserisci le impostazioni per connetterti alla fotocamera." + } + } + }, + "options": { + "error": { + "already_exists": "Esiste gi\u00e0 una telecamera con queste impostazioni URL.", + "invalid_still_image": "L'URL non ha restituito un'immagine fissa valida", + "no_still_image_or_stream_url": "Devi specificare almeno un'immagine fissa o un URL di un flusso", + "stream_file_not_found": "File non trovato durante il tentativo di connessione al (\u00e8 installato ffmpeg?)", + "stream_http_not_found": "HTTP 404 Non trovato durante il tentativo di connessione al flusso", + "stream_io_error": "Errore di input/output durante il tentativo di connessione al flusso. Protocollo di trasporto RTSP errato?", + "stream_no_route_to_host": "Impossibile trovare l'host durante il tentativo di connessione al flusso", + "stream_no_video": "Il flusso non ha video", + "stream_not_permitted": "Operazione non consentita durante il tentativo di connessione al . Protocollo di trasporto RTSP errato?", + "stream_unauthorised": "Autorizzazione non riuscita durante il tentativo di connessione al flusso", + "timeout": "Timeout durante il caricamento dell'URL", + "unable_still_load": "Impossibile caricare un'immagine valida dall'URL dell'immagine fissa (ad es. host, URL non valido o errore di autenticazione). Esamina il registro per ulteriori informazioni.", + "unknown": "Errore imprevisto" + }, + "step": { + "content_type": { + "data": { + "content_type": "Tipo di contenuto" + }, + "description": "Specificare il tipo di contenuto per il flusso." + }, + "init": { + "data": { + "authentication": "Autenticazione", + "content_type": "Tipo di contenuto", + "framerate": "Frequenza fotogrammi (Hz)", + "limit_refetch_to_url_change": "Limita il recupero alla modifica dell'URL", + "password": "Password", + "rtsp_transport": "Protocollo di trasporto RTSP", + "still_image_url": "URL immagine fissa (ad es. http://...)", + "stream_source": "URL sorgente del flusso (ad es. rtsp://...)", + "username": "Nome utente", + "verify_ssl": "Verifica il certificato SSL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/generic/translations/ja.json b/homeassistant/components/generic/translations/ja.json new file mode 100644 index 00000000000..916142125e6 --- /dev/null +++ b/homeassistant/components/generic/translations/ja.json @@ -0,0 +1,88 @@ +{ + "config": { + "abort": { + "no_devices_found": "\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u4e0a\u306b\u30c7\u30d0\u30a4\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093", + "single_instance_allowed": "\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u5358\u4e00\u306e\u8a2d\u5b9a\u3057\u304b\u3067\u304d\u307e\u305b\u3093\u3002" + }, + "error": { + "already_exists": "\u3053\u306eURL\u8a2d\u5b9a\u306e\u30ab\u30e1\u30e9\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002", + "invalid_still_image": "URL\u304c\u6709\u52b9\u306a\u9759\u6b62\u753b\u50cf\u3092\u8fd4\u3057\u307e\u305b\u3093\u3067\u3057\u305f", + "no_still_image_or_stream_url": "\u9759\u6b62\u753b\u50cf\u3082\u3057\u304f\u306f\u3001\u30b9\u30c8\u30ea\u30fc\u30e0URL\u306e\u3069\u3061\u3089\u304b\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059", + "stream_file_not_found": "\u30b9\u30c8\u30ea\u30fc\u30e0\u306b\u63a5\u7d9a\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308b\u3068\u304d\u306b\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093(ffmpeg\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u307e\u3059\u304b\uff1f)", + "stream_http_not_found": "\u30b9\u30c8\u30ea\u30fc\u30e0\u3078\u306e\u63a5\u7d9a\u6642\u306b\u3001HTTP 404\u3067\u898b\u3064\u304b\u308a\u307e\u305b\u3093", + "stream_io_error": "\u30b9\u30c8\u30ea\u30fc\u30e0\u306b\u63a5\u7d9a\u3057\u3088\u3046\u3068\u3057\u305f\u3068\u304d\u306b\u5165\u51fa\u529b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002RTSP\u30c8\u30e9\u30f3\u30b9\u30dd\u30fc\u30c8\u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u9593\u9055\u3048\u305f\uff1f", + "stream_no_route_to_host": "\u30b9\u30c8\u30ea\u30fc\u30e0\u306b\u63a5\u7d9a\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u304c\u3001\u30db\u30b9\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f", + "stream_no_video": "\u30b9\u30c8\u30ea\u30fc\u30e0\u306b\u52d5\u753b\u304c\u3042\u308a\u307e\u305b\u3093", + "stream_not_permitted": "\u30b9\u30c8\u30ea\u30fc\u30e0\u306b\u63a5\u7d9a\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308b\u9593\u3001\u64cd\u4f5c\u3067\u304d\u307e\u305b\u3093\u3002RTSP\u30c8\u30e9\u30f3\u30b9\u30dd\u30fc\u30c8\u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u9593\u9055\u3048\u305f\uff1f", + "stream_unauthorised": "\u30b9\u30c8\u30ea\u30fc\u30e0\u3078\u306e\u63a5\u7d9a\u6642\u306b\u3001\u8a8d\u8a3c\u306b\u5931\u6557\u3057\u307e\u3057\u305f", + "timeout": "URL\u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8", + "unable_still_load": "\u9759\u6b62\u753b\u306eURL\u304b\u3089\u6709\u52b9\u306a\u753b\u50cf\u3092\u8aad\u307f\u8fbc\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\uff08\u4f8b: \u7121\u52b9\u306a\u30db\u30b9\u30c8\u3001URL\u3001\u307e\u305f\u306f\u8a8d\u8a3c\u5931\u6557)\u3002\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002", + "unknown": "\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc" + }, + "step": { + "confirm": { + "description": "\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3092\u958b\u59cb\u3057\u307e\u3059\u304b\uff1f" + }, + "content_type": { + "data": { + "content_type": "\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u7a2e\u985e" + }, + "description": "\u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u30bf\u30a4\u30d7\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002" + }, + "user": { + "data": { + "authentication": "\u8a8d\u8a3c", + "content_type": "\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u7a2e\u985e", + "framerate": "\u30d5\u30ec\u30fc\u30e0\u30ec\u30fc\u30c8\uff08Hz\uff09", + "limit_refetch_to_url_change": "URL\u5909\u66f4\u6642\u306e\u518d\u53d6\u5f97\u3092\u5236\u9650\u3059\u308b", + "password": "\u30d1\u30b9\u30ef\u30fc\u30c9", + "rtsp_transport": "RTSP\u30c8\u30e9\u30f3\u30b9\u30dd\u30fc\u30c8\u30d7\u30ed\u30c8\u30b3\u30eb", + "still_image_url": "\u9759\u6b62\u753b\u50cf\u306eURL(\u4f8b: http://...)", + "stream_source": "\u30b9\u30c8\u30ea\u30fc\u30e0\u30bd\u30fc\u30b9\u306eURL(\u4f8b: rtsp://...)", + "username": "\u30e6\u30fc\u30b6\u30fc\u540d", + "verify_ssl": "SSL\u8a3c\u660e\u66f8\u3092\u78ba\u8a8d\u3059\u308b" + }, + "description": "\u30ab\u30e1\u30e9\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306e\u8a2d\u5b9a\u3092\u5165\u529b\u3057\u307e\u3059\u3002" + } + } + }, + "options": { + "error": { + "already_exists": "\u3053\u306eURL\u8a2d\u5b9a\u306e\u30ab\u30e1\u30e9\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002", + "invalid_still_image": "URL\u304c\u6709\u52b9\u306a\u9759\u6b62\u753b\u50cf\u3092\u8fd4\u3057\u307e\u305b\u3093\u3067\u3057\u305f", + "no_still_image_or_stream_url": "\u9759\u6b62\u753b\u50cf\u3082\u3057\u304f\u306f\u3001\u30b9\u30c8\u30ea\u30fc\u30e0URL\u306e\u3069\u3061\u3089\u304b\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059", + "stream_file_not_found": "\u30b9\u30c8\u30ea\u30fc\u30e0\u306b\u63a5\u7d9a\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308b\u3068\u304d\u306b\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093(ffmpeg\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u307e\u3059\u304b\uff1f)", + "stream_http_not_found": "\u30b9\u30c8\u30ea\u30fc\u30e0\u3078\u306e\u63a5\u7d9a\u6642\u306b\u3001HTTP 404\u3067\u898b\u3064\u304b\u308a\u307e\u305b\u3093", + "stream_io_error": "\u30b9\u30c8\u30ea\u30fc\u30e0\u306b\u63a5\u7d9a\u3057\u3088\u3046\u3068\u3057\u305f\u3068\u304d\u306b\u5165\u51fa\u529b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002RTSP\u30c8\u30e9\u30f3\u30b9\u30dd\u30fc\u30c8\u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u9593\u9055\u3048\u305f\uff1f", + "stream_no_route_to_host": "\u30b9\u30c8\u30ea\u30fc\u30e0\u306b\u63a5\u7d9a\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u304c\u3001\u30db\u30b9\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f", + "stream_no_video": "\u30b9\u30c8\u30ea\u30fc\u30e0\u306b\u52d5\u753b\u304c\u3042\u308a\u307e\u305b\u3093", + "stream_not_permitted": "\u30b9\u30c8\u30ea\u30fc\u30e0\u306b\u63a5\u7d9a\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308b\u9593\u3001\u64cd\u4f5c\u3067\u304d\u307e\u305b\u3093\u3002RTSP\u30c8\u30e9\u30f3\u30b9\u30dd\u30fc\u30c8\u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u9593\u9055\u3048\u305f\uff1f", + "stream_unauthorised": "\u30b9\u30c8\u30ea\u30fc\u30e0\u3078\u306e\u63a5\u7d9a\u6642\u306b\u3001\u8a8d\u8a3c\u306b\u5931\u6557\u3057\u307e\u3057\u305f", + "timeout": "URL\u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8", + "unable_still_load": "\u9759\u6b62\u753b\u306eURL\u304b\u3089\u6709\u52b9\u306a\u753b\u50cf\u3092\u8aad\u307f\u8fbc\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\uff08\u4f8b: \u7121\u52b9\u306a\u30db\u30b9\u30c8\u3001URL\u3001\u307e\u305f\u306f\u8a8d\u8a3c\u5931\u6557)\u3002\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002", + "unknown": "\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc" + }, + "step": { + "content_type": { + "data": { + "content_type": "\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u7a2e\u985e" + }, + "description": "\u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u30bf\u30a4\u30d7\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002" + }, + "init": { + "data": { + "authentication": "\u8a8d\u8a3c", + "content_type": "\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u7a2e\u985e", + "framerate": "\u30d5\u30ec\u30fc\u30e0\u30ec\u30fc\u30c8\uff08Hz\uff09", + "limit_refetch_to_url_change": "URL\u5909\u66f4\u6642\u306e\u518d\u53d6\u5f97\u3092\u5236\u9650\u3059\u308b", + "password": "\u30d1\u30b9\u30ef\u30fc\u30c9", + "rtsp_transport": "RTSP\u30c8\u30e9\u30f3\u30b9\u30dd\u30fc\u30c8\u30d7\u30ed\u30c8\u30b3\u30eb", + "still_image_url": "\u9759\u6b62\u753b\u50cf\u306eURL(\u4f8b: http://...)", + "stream_source": "\u30b9\u30c8\u30ea\u30fc\u30e0\u30bd\u30fc\u30b9\u306eURL(\u4f8b: rtsp://...)", + "username": "\u30e6\u30fc\u30b6\u30fc\u540d", + "verify_ssl": "SSL\u8a3c\u660e\u66f8\u3092\u78ba\u8a8d\u3059\u308b" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/generic/translations/nl.json b/homeassistant/components/generic/translations/nl.json new file mode 100644 index 00000000000..167374c7aeb --- /dev/null +++ b/homeassistant/components/generic/translations/nl.json @@ -0,0 +1,88 @@ +{ + "config": { + "abort": { + "no_devices_found": "Geen apparaten gevonden op het netwerk", + "single_instance_allowed": "Al geconfigureerd. Slechts een enkele configuratie mogelijk." + }, + "error": { + "already_exists": "Een camera met deze URL instellingen bestaat al.", + "invalid_still_image": "URL heeft geen geldig stilstaand beeld geretourneerd", + "no_still_image_or_stream_url": "U moet ten minste een stilstaand beeld of stream-URL specificeren", + "stream_file_not_found": "Bestand niet gevonden tijdens verbinding met stream (is ffmpeg ge\u00efnstalleerd?)", + "stream_http_not_found": "HTTP 404 Niet gevonden bij poging om verbinding te maken met stream", + "stream_io_error": "Input/Output fout bij het proberen te verbinden met stream. Verkeerde RTSP transport protocol?", + "stream_no_route_to_host": "Kan de host niet vinden terwijl u verbinding probeert te maken met de stream", + "stream_no_video": "Stream heeft geen video", + "stream_not_permitted": "Operatie niet toegestaan bij poging om verbinding te maken met stream. Verkeerd RTSP transport protocol?", + "stream_unauthorised": "Autorisatie mislukt bij poging om verbinding te maken met stream", + "timeout": "Time-out tijdens het laden van URL", + "unable_still_load": "Kan geen geldige afbeelding laden van stilstaande afbeelding URL (b.v. ongeldige host, URL of authenticatie fout). Bekijk het log voor meer informatie.", + "unknown": "Onverwachte fout" + }, + "step": { + "confirm": { + "description": "Wilt u beginnen met instellen?" + }, + "content_type": { + "data": { + "content_type": "Inhoudstype" + }, + "description": "Geef het inhoudstype voor de stream op." + }, + "user": { + "data": { + "authentication": "Authenticatie", + "content_type": "Inhoudstype", + "framerate": "Framesnelheid (Hz)", + "limit_refetch_to_url_change": "Beperk refetch tot url verandering", + "password": "Wachtwoord", + "rtsp_transport": "RTSP-transportprotocol", + "still_image_url": "URL van stilstaande afbeelding (bijv. http://...)", + "stream_source": "Url van streambron (bijv. rtsp://...)", + "username": "Gebruikersnaam", + "verify_ssl": "SSL-certificaat verifi\u00ebren" + }, + "description": "Voer de instellingen in om verbinding te maken met de camera." + } + } + }, + "options": { + "error": { + "already_exists": "Een camera met deze URL instellingen bestaat al.", + "invalid_still_image": "URL heeft geen geldig stilstaand beeld geretourneerd", + "no_still_image_or_stream_url": "U moet ten minste een stilstaand beeld of stream-URL specificeren", + "stream_file_not_found": "Bestand niet gevonden tijdens verbinding met stream (is ffmpeg ge\u00efnstalleerd?)", + "stream_http_not_found": "HTTP 404 Niet gevonden bij poging om verbinding te maken met stream", + "stream_io_error": "Input/Output fout bij het proberen te verbinden met stream. Verkeerde RTSP transport protocol?", + "stream_no_route_to_host": "Kan de host niet vinden terwijl u verbinding probeert te maken met de stream", + "stream_no_video": "Stream heeft geen video", + "stream_not_permitted": "Operatie niet toegestaan bij poging om verbinding te maken met stream. Verkeerd RTSP transport protocol?", + "stream_unauthorised": "Autorisatie mislukt bij poging om verbinding te maken met stream", + "timeout": "Time-out tijdens het laden van URL", + "unable_still_load": "Kan geen geldige afbeelding laden van stilstaande afbeelding URL (b.v. ongeldige host, URL of authenticatie fout). Bekijk het log voor meer informatie.", + "unknown": "Onverwachte fout" + }, + "step": { + "content_type": { + "data": { + "content_type": "Inhoudstype" + }, + "description": "Geef het inhoudstype voor de stream op." + }, + "init": { + "data": { + "authentication": "Authenticatie", + "content_type": "Inhoudstype", + "framerate": "Framesnelheid (Hz)", + "limit_refetch_to_url_change": "Beperk refetch tot url verandering", + "password": "Wachtwoord", + "rtsp_transport": "RTSP-transportprotocol", + "still_image_url": "URL van stilstaande afbeelding (bijv. http://...)", + "stream_source": "Url van streambron (bijv. rtsp://...)", + "username": "Gebruikersnaam", + "verify_ssl": "SSL-certificaat verifi\u00ebren" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/generic/translations/no.json b/homeassistant/components/generic/translations/no.json new file mode 100644 index 00000000000..1f9eedaced4 --- /dev/null +++ b/homeassistant/components/generic/translations/no.json @@ -0,0 +1,88 @@ +{ + "config": { + "abort": { + "no_devices_found": "Ingen enheter funnet p\u00e5 nettverket", + "single_instance_allowed": "Allerede konfigurert. Bare \u00e9n enkelt konfigurasjon er mulig." + }, + "error": { + "already_exists": "Et kamera med disse URL-innstillingene finnes allerede.", + "invalid_still_image": "URL returnerte ikke et gyldig stillbilde", + "no_still_image_or_stream_url": "Du m\u00e5 angi minst en URL-adresse for stillbilde eller dataflyt", + "stream_file_not_found": "Filen ble ikke funnet under fors\u00f8k p\u00e5 \u00e5 koble til str\u00f8m (er ffmpeg installert?)", + "stream_http_not_found": "HTTP 404 Ikke funnet under fors\u00f8k p\u00e5 \u00e5 koble til str\u00f8m", + "stream_io_error": "Inn-/utdatafeil under fors\u00f8k p\u00e5 \u00e5 koble til str\u00f8m. Feil RTSP-transportprotokoll?", + "stream_no_route_to_host": "Kunne ikke finne verten under fors\u00f8k p\u00e5 \u00e5 koble til str\u00f8mmen", + "stream_no_video": "Stream har ingen video", + "stream_not_permitted": "Operasjon er ikke tillatt mens du pr\u00f8ver \u00e5 koble til str\u00f8m. Feil RTSP-transportprotokoll?", + "stream_unauthorised": "Autorisasjonen mislyktes under fors\u00f8k p\u00e5 \u00e5 koble til str\u00f8mmen", + "timeout": "Tidsavbrudd under innlasting av URL", + "unable_still_load": "Kan ikke laste inn gyldig bilde fra URL-adresse for stillbilde (f.eks. ugyldig verts-, URL- eller godkjenningsfeil). Se gjennom loggen hvis du vil ha mer informasjon.", + "unknown": "Uventet feil" + }, + "step": { + "confirm": { + "description": "Vil du starte oppsettet?" + }, + "content_type": { + "data": { + "content_type": "Innholdstype" + }, + "description": "Angi innholdstypen for str\u00f8mmen." + }, + "user": { + "data": { + "authentication": "Godkjenning", + "content_type": "Innholdstype", + "framerate": "Bildefrekvens (Hz)", + "limit_refetch_to_url_change": "Begrens gjenhenting til endring av nettadresse", + "password": "Passord", + "rtsp_transport": "RTSP transportprotokoll", + "still_image_url": "Stillbilde-URL (f.eks. http://...)", + "stream_source": "Str\u00f8mkilde-URL (f.eks. rtsp://...)", + "username": "Brukernavn", + "verify_ssl": "Verifisere SSL-sertifikat" + }, + "description": "Angi innstillingene for \u00e5 koble til kameraet." + } + } + }, + "options": { + "error": { + "already_exists": "Et kamera med disse URL-innstillingene finnes allerede.", + "invalid_still_image": "URL returnerte ikke et gyldig stillbilde", + "no_still_image_or_stream_url": "Du m\u00e5 angi minst en URL-adresse for stillbilde eller dataflyt", + "stream_file_not_found": "Filen ble ikke funnet under fors\u00f8k p\u00e5 \u00e5 koble til str\u00f8m (er ffmpeg installert?)", + "stream_http_not_found": "HTTP 404 Ikke funnet under fors\u00f8k p\u00e5 \u00e5 koble til str\u00f8m", + "stream_io_error": "Inn-/utdatafeil under fors\u00f8k p\u00e5 \u00e5 koble til str\u00f8m. Feil RTSP-transportprotokoll?", + "stream_no_route_to_host": "Kunne ikke finne verten under fors\u00f8k p\u00e5 \u00e5 koble til str\u00f8mmen", + "stream_no_video": "Stream har ingen video", + "stream_not_permitted": "Operasjon er ikke tillatt mens du pr\u00f8ver \u00e5 koble til str\u00f8m. Feil RTSP-transportprotokoll?", + "stream_unauthorised": "Autorisasjonen mislyktes under fors\u00f8k p\u00e5 \u00e5 koble til str\u00f8mmen", + "timeout": "Tidsavbrudd under innlasting av URL", + "unable_still_load": "Kan ikke laste inn gyldig bilde fra URL-adresse for stillbilde (f.eks. ugyldig verts-, URL- eller godkjenningsfeil). Se gjennom loggen hvis du vil ha mer informasjon.", + "unknown": "Uventet feil" + }, + "step": { + "content_type": { + "data": { + "content_type": "Innholdstype" + }, + "description": "Angi innholdstypen for str\u00f8mmen." + }, + "init": { + "data": { + "authentication": "Godkjenning", + "content_type": "Innholdstype", + "framerate": "Bildefrekvens (Hz)", + "limit_refetch_to_url_change": "Begrens gjenhenting til endring av nettadresse", + "password": "Passord", + "rtsp_transport": "RTSP transportprotokoll", + "still_image_url": "Stillbilde-URL (f.eks. http://...)", + "stream_source": "Str\u00f8mkilde-URL (f.eks. rtsp://...)", + "username": "Brukernavn", + "verify_ssl": "Verifisere SSL-sertifikat" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/generic/translations/pl.json b/homeassistant/components/generic/translations/pl.json new file mode 100644 index 00000000000..a791a56c065 --- /dev/null +++ b/homeassistant/components/generic/translations/pl.json @@ -0,0 +1,88 @@ +{ + "config": { + "abort": { + "no_devices_found": "Nie znaleziono urz\u0105dze\u0144 w sieci", + "single_instance_allowed": "Ju\u017c skonfigurowano. Mo\u017cliwa jest tylko jedna konfiguracja." + }, + "error": { + "already_exists": "Kamera z tymi ustawieniami adresu URL ju\u017c istnieje.", + "invalid_still_image": "Adres URL nie zwr\u00f3ci\u0142 prawid\u0142owego obrazu nieruchomego (still image)", + "no_still_image_or_stream_url": "Musisz poda\u0107 przynajmniej nieruchomy obraz (still image) lub adres URL strumienia", + "stream_file_not_found": "Nie znaleziono pliku podczas pr\u00f3by po\u0142\u0105czenia ze strumieniem (czy ffmpeg jest zainstalowany?)", + "stream_http_not_found": "\"HTTP 404 Nie znaleziono\" podczas pr\u00f3by po\u0142\u0105czenia ze strumieniem", + "stream_io_error": "B\u0142\u0105d wej\u015bcia/wyj\u015bcia podczas pr\u00f3by po\u0142\u0105czenia ze strumieniem. Z\u0142y protok\u00f3\u0142 transportowy RTSP?", + "stream_no_route_to_host": "Nie mo\u017cna znale\u017a\u0107 hosta podczas pr\u00f3by po\u0142\u0105czenia ze strumieniem", + "stream_no_video": "Strumie\u0144 nie zawiera wideo", + "stream_not_permitted": "Operacja nie jest dozwolona podczas pr\u00f3by po\u0142\u0105czenia ze strumieniem. Z\u0142y protok\u00f3\u0142 transportowy RTSP?", + "stream_unauthorised": "Autoryzacja nie powiod\u0142a si\u0119 podczas pr\u00f3by po\u0142\u0105czenia ze strumieniem", + "timeout": "Przekroczono limit czasu podczas \u0142adowania adresu URL", + "unable_still_load": "Nie mo\u017cna za\u0142adowa\u0107 prawid\u0142owego obrazu z adresu URL nieruchomego obrazu (np. nieprawid\u0142owy host, adres URL lub b\u0142\u0105d uwierzytelniania). Przejrzyj logi, aby uzyska\u0107 wi\u0119cej informacji.", + "unknown": "Nieoczekiwany b\u0142\u0105d" + }, + "step": { + "confirm": { + "description": "Czy chcesz rozpocz\u0105\u0107 konfiguracj\u0119?" + }, + "content_type": { + "data": { + "content_type": "Typ zawarto\u015bci" + }, + "description": "Okre\u015bl typ zawarto\u015bci strumienia." + }, + "user": { + "data": { + "authentication": "Uwierzytelnianie", + "content_type": "Typ zawarto\u015bci", + "framerate": "Od\u015bwie\u017canie (Hz)", + "limit_refetch_to_url_change": "Ogranicz pobieranie do zmiany adresu URL", + "password": "Has\u0142o", + "rtsp_transport": "Protok\u00f3\u0142 transportowy RTSP", + "still_image_url": "Adres URL obrazu nieruchomego (np. http://...)", + "stream_source": "Adres URL strumienia (np. rtsp://...)", + "username": "Nazwa u\u017cytkownika", + "verify_ssl": "Weryfikacja certyfikatu SSL" + }, + "description": "Wprowad\u017a ustawienia, aby po\u0142\u0105czy\u0107 si\u0119 z kamer\u0105." + } + } + }, + "options": { + "error": { + "already_exists": "Kamera z tymi ustawieniami adresu URL ju\u017c istnieje.", + "invalid_still_image": "Adres URL nie zwr\u00f3ci\u0142 prawid\u0142owego obrazu nieruchomego (still image)", + "no_still_image_or_stream_url": "Musisz poda\u0107 przynajmniej nieruchomy obraz (still image) lub adres URL strumienia", + "stream_file_not_found": "Nie znaleziono pliku podczas pr\u00f3by po\u0142\u0105czenia ze strumieniem (czy ffmpeg jest zainstalowany?)", + "stream_http_not_found": "\"HTTP 404 Nie znaleziono\" podczas pr\u00f3by po\u0142\u0105czenia ze strumieniem", + "stream_io_error": "B\u0142\u0105d wej\u015bcia/wyj\u015bcia podczas pr\u00f3by po\u0142\u0105czenia ze strumieniem. Z\u0142y protok\u00f3\u0142 transportowy RTSP?", + "stream_no_route_to_host": "Nie mo\u017cna znale\u017a\u0107 hosta podczas pr\u00f3by po\u0142\u0105czenia ze strumieniem", + "stream_no_video": "Strumie\u0144 nie zawiera wideo", + "stream_not_permitted": "Operacja nie jest dozwolona podczas pr\u00f3by po\u0142\u0105czenia ze strumieniem. Z\u0142y protok\u00f3\u0142 transportowy RTSP?", + "stream_unauthorised": "Autoryzacja nie powiod\u0142a si\u0119 podczas pr\u00f3by po\u0142\u0105czenia ze strumieniem", + "timeout": "Przekroczono limit czasu podczas \u0142adowania adresu URL", + "unable_still_load": "Nie mo\u017cna za\u0142adowa\u0107 prawid\u0142owego obrazu z adresu URL nieruchomego obrazu (np. nieprawid\u0142owy host, adres URL lub b\u0142\u0105d uwierzytelniania). Przejrzyj logi, aby uzyska\u0107 wi\u0119cej informacji.", + "unknown": "Nieoczekiwany b\u0142\u0105d" + }, + "step": { + "content_type": { + "data": { + "content_type": "Typ zawarto\u015bci" + }, + "description": "Okre\u015bl typ zawarto\u015bci strumienia." + }, + "init": { + "data": { + "authentication": "Uwierzytelnianie", + "content_type": "Typ zawarto\u015bci", + "framerate": "Od\u015bwie\u017canie (Hz)", + "limit_refetch_to_url_change": "Ogranicz pobieranie do zmiany adresu URL", + "password": "Has\u0142o", + "rtsp_transport": "Protok\u00f3\u0142 transportowy RTSP", + "still_image_url": "Adres URL obrazu nieruchomego (np. http://...)", + "stream_source": "Adres URL strumienia (np. rtsp://...)", + "username": "Nazwa u\u017cytkownika", + "verify_ssl": "Weryfikacja certyfikatu SSL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/generic/translations/pt-BR.json b/homeassistant/components/generic/translations/pt-BR.json new file mode 100644 index 00000000000..0e3ce2bd75d --- /dev/null +++ b/homeassistant/components/generic/translations/pt-BR.json @@ -0,0 +1,88 @@ +{ + "config": { + "abort": { + "no_devices_found": "Nenhum dispositivo encontrado na rede", + "single_instance_allowed": "J\u00e1 configurado. Apenas uma configura\u00e7\u00e3o \u00e9 poss\u00edvel." + }, + "error": { + "already_exists": "J\u00e1 existe uma c\u00e2mera com essas configura\u00e7\u00f5es de URL.", + "invalid_still_image": "A URL n\u00e3o retornou uma imagem est\u00e1tica v\u00e1lida", + "no_still_image_or_stream_url": "Voc\u00ea deve especificar pelo menos uma imagem est\u00e1tica ou uma URL de stream", + "stream_file_not_found": "Arquivo n\u00e3o encontrado ao tentar se conectar a stream (o ffmpeg est\u00e1 instalado?)", + "stream_http_not_found": "HTTP 404 n\u00e3o encontrado ao tentar se conectar a stream", + "stream_io_error": "Erro de entrada/sa\u00edda ao tentar se conectar a stream. Protocolo RTSP errado?", + "stream_no_route_to_host": "N\u00e3o foi poss\u00edvel encontrar o host ao tentar se conectar a stream", + "stream_no_video": "A stream n\u00e3o tem v\u00eddeo", + "stream_not_permitted": "Opera\u00e7\u00e3o n\u00e3o permitida ao tentar se conectar a stream. Protocolo RTSP errado?", + "stream_unauthorised": "Falha na autoriza\u00e7\u00e3o ao tentar se conectar a stream", + "timeout": "Tempo limite ao carregar a URL", + "unable_still_load": "N\u00e3o foi poss\u00edvel carregar uma imagem v\u00e1lida do URL da imagem est\u00e1tica (por exemplo, host inv\u00e1lido, URL ou falha de autentica\u00e7\u00e3o). Revise o log para obter mais informa\u00e7\u00f5es.", + "unknown": "Erro inesperado" + }, + "step": { + "confirm": { + "description": "Deseja iniciar a configura\u00e7\u00e3o?" + }, + "content_type": { + "data": { + "content_type": "Tipo de conte\u00fado" + }, + "description": "Especifique o tipo de conte\u00fado para o stream." + }, + "user": { + "data": { + "authentication": "Autentica\u00e7\u00e3o", + "content_type": "Tipo de conte\u00fado", + "framerate": "Taxa de quadros (Hz)", + "limit_refetch_to_url_change": "Limitar a nova busca \u00e0 altera\u00e7\u00e3o de URL", + "password": "Senha", + "rtsp_transport": "Protocolo RTSP", + "still_image_url": "URL da imagem est\u00e1tica (por exemplo, http://...)", + "stream_source": "URL de origem da Stream (por exemplo, rtsp://...)", + "username": "Usu\u00e1rio", + "verify_ssl": "Verifique o certificado SSL" + }, + "description": "Insira as configura\u00e7\u00f5es para se conectar \u00e0 c\u00e2mera." + } + } + }, + "options": { + "error": { + "already_exists": "J\u00e1 existe uma c\u00e2mera com essas configura\u00e7\u00f5es de URL.", + "invalid_still_image": "A URL n\u00e3o retornou uma imagem est\u00e1tica v\u00e1lida", + "no_still_image_or_stream_url": "Voc\u00ea deve especificar pelo menos uma imagem est\u00e1tica ou uma URL de stream", + "stream_file_not_found": "Arquivo n\u00e3o encontrado ao tentar se conectar a stream (o ffmpeg est\u00e1 instalado?)", + "stream_http_not_found": "HTTP 404 n\u00e3o encontrado ao tentar se conectar a stream", + "stream_io_error": "Erro de entrada/sa\u00edda ao tentar se conectar a stream. Protocolo RTSP errado?", + "stream_no_route_to_host": "N\u00e3o foi poss\u00edvel encontrar o host ao tentar se conectar a stream", + "stream_no_video": "A stream n\u00e3o tem v\u00eddeo", + "stream_not_permitted": "Opera\u00e7\u00e3o n\u00e3o permitida ao tentar se conectar a stream. Protocolo RTSP errado?", + "stream_unauthorised": "Falha na autoriza\u00e7\u00e3o ao tentar se conectar a stream", + "timeout": "Tempo limite ao carregar a URL", + "unable_still_load": "N\u00e3o foi poss\u00edvel carregar uma imagem v\u00e1lida do URL da imagem est\u00e1tica (por exemplo, host inv\u00e1lido, URL ou falha de autentica\u00e7\u00e3o). Revise o log para obter mais informa\u00e7\u00f5es.", + "unknown": "Erro inesperado" + }, + "step": { + "content_type": { + "data": { + "content_type": "Tipo de conte\u00fado" + }, + "description": "Especifique o tipo de conte\u00fado para o stream." + }, + "init": { + "data": { + "authentication": "Autentica\u00e7\u00e3o", + "content_type": "Tipo de conte\u00fado", + "framerate": "Taxa de quadros (Hz)", + "limit_refetch_to_url_change": "Limitar a nova busca \u00e0 altera\u00e7\u00e3o de URL", + "password": "Senha", + "rtsp_transport": "Protocolo RTSP", + "still_image_url": "URL da imagem est\u00e1tica (por exemplo, http://...)", + "stream_source": "URL de origem da Stream (por exemplo, rtsp://...)", + "username": "Usu\u00e1rio", + "verify_ssl": "Verifique o certificado SSL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/generic/translations/ru.json b/homeassistant/components/generic/translations/ru.json new file mode 100644 index 00000000000..06f41613a50 --- /dev/null +++ b/homeassistant/components/generic/translations/ru.json @@ -0,0 +1,88 @@ +{ + "config": { + "abort": { + "no_devices_found": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0432 \u0441\u0435\u0442\u0438.", + "single_instance_allowed": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e." + }, + "error": { + "already_exists": "\u041a\u0430\u043c\u0435\u0440\u0430 \u0441 \u0442\u0430\u043a\u0438\u043c URL-\u0430\u0434\u0440\u0435\u0441\u043e\u043c \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.", + "invalid_still_image": "URL-\u0430\u0434\u0440\u0435\u0441 \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435.", + "no_still_image_or_stream_url": "\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043f\u043e\u0442\u043e\u043a\u0430.", + "stream_file_not_found": "\u0424\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043f\u043e\u0442\u043e\u043a\u0443. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043b\u0438 ffmpeg?", + "stream_http_not_found": "HTTP 404 \u041d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043f\u043e\u0442\u043e\u043a\u0443.", + "stream_io_error": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u0432\u043e\u0434\u0430/\u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043f\u043e\u0442\u043e\u043a\u0443. \u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b RTSP?", + "stream_no_route_to_host": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0445\u043e\u0441\u0442 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043f\u043e\u0442\u043e\u043a\u0443.", + "stream_no_video": "\u0412 \u043f\u043e\u0442\u043e\u043a\u0435 \u043d\u0435\u0442 \u0432\u0438\u0434\u0435\u043e.", + "stream_not_permitted": "\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0430 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043f\u043e\u0442\u043e\u043a\u0443. \u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b RTSP?", + "stream_unauthorised": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043f\u043e\u0442\u043e\u043a\u0443.", + "timeout": "\u0418\u0441\u0442\u0435\u043a\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 URL-\u0430\u0434\u0440\u0435\u0441\u0430.", + "unable_still_load": "\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (\u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0445\u043e\u0441\u0442, URL-\u0430\u0434\u0440\u0435\u0441 \u0438\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438). \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0436\u0443\u0440\u043d\u0430\u043b \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.", + "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." + }, + "step": { + "confirm": { + "description": "\u0425\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443?" + }, + "content_type": { + "data": { + "content_type": "\u0422\u0438\u043f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e" + }, + "description": "\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0442\u0438\u043f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0434\u043b\u044f \u043f\u043e\u0442\u043e\u043a\u0430." + }, + "user": { + "data": { + "authentication": "\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f", + "content_type": "\u0422\u0438\u043f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e", + "framerate": "\u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u043a\u0430\u0434\u0440\u043e\u0432 (\u0413\u0446)", + "limit_refetch_to_url_change": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0443\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 URL-\u0430\u0434\u0440\u0435\u0441\u0430", + "password": "\u041f\u0430\u0440\u043e\u043b\u044c", + "rtsp_transport": "\u0422\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b RTSP", + "still_image_url": "URL-\u0430\u0434\u0440\u0435\u0441 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, http://...)", + "stream_source": "URL-\u0430\u0434\u0440\u0435\u0441 \u043f\u043e\u0442\u043e\u043a\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, rtsp://...)", + "username": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", + "verify_ssl": "\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 SSL" + }, + "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043a\u0430\u043c\u0435\u0440\u0435." + } + } + }, + "options": { + "error": { + "already_exists": "\u041a\u0430\u043c\u0435\u0440\u0430 \u0441 \u0442\u0430\u043a\u0438\u043c URL-\u0430\u0434\u0440\u0435\u0441\u043e\u043c \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.", + "invalid_still_image": "URL-\u0430\u0434\u0440\u0435\u0441 \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435.", + "no_still_image_or_stream_url": "\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043f\u043e\u0442\u043e\u043a\u0430.", + "stream_file_not_found": "\u0424\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043f\u043e\u0442\u043e\u043a\u0443. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043b\u0438 ffmpeg?", + "stream_http_not_found": "HTTP 404 \u041d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043f\u043e\u0442\u043e\u043a\u0443.", + "stream_io_error": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u0432\u043e\u0434\u0430/\u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043f\u043e\u0442\u043e\u043a\u0443. \u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b RTSP?", + "stream_no_route_to_host": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0445\u043e\u0441\u0442 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043f\u043e\u0442\u043e\u043a\u0443.", + "stream_no_video": "\u0412 \u043f\u043e\u0442\u043e\u043a\u0435 \u043d\u0435\u0442 \u0432\u0438\u0434\u0435\u043e.", + "stream_not_permitted": "\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0430 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043f\u043e\u0442\u043e\u043a\u0443. \u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b RTSP?", + "stream_unauthorised": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043f\u043e\u0442\u043e\u043a\u0443.", + "timeout": "\u0418\u0441\u0442\u0435\u043a\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 URL-\u0430\u0434\u0440\u0435\u0441\u0430.", + "unable_still_load": "\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (\u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0445\u043e\u0441\u0442, URL-\u0430\u0434\u0440\u0435\u0441 \u0438\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438). \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0436\u0443\u0440\u043d\u0430\u043b \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.", + "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." + }, + "step": { + "content_type": { + "data": { + "content_type": "\u0422\u0438\u043f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e" + }, + "description": "\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0442\u0438\u043f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0434\u043b\u044f \u043f\u043e\u0442\u043e\u043a\u0430." + }, + "init": { + "data": { + "authentication": "\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f", + "content_type": "\u0422\u0438\u043f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e", + "framerate": "\u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u043a\u0430\u0434\u0440\u043e\u0432 (\u0413\u0446)", + "limit_refetch_to_url_change": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0443\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 URL-\u0430\u0434\u0440\u0435\u0441\u0430", + "password": "\u041f\u0430\u0440\u043e\u043b\u044c", + "rtsp_transport": "\u0422\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b RTSP", + "still_image_url": "URL-\u0430\u0434\u0440\u0435\u0441 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, http://...)", + "stream_source": "URL-\u0430\u0434\u0440\u0435\u0441 \u043f\u043e\u0442\u043e\u043a\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, rtsp://...)", + "username": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", + "verify_ssl": "\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 SSL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/generic/translations/tr.json b/homeassistant/components/generic/translations/tr.json new file mode 100644 index 00000000000..c2fb343f227 --- /dev/null +++ b/homeassistant/components/generic/translations/tr.json @@ -0,0 +1,88 @@ +{ + "config": { + "abort": { + "no_devices_found": "A\u011fda cihaz bulunamad\u0131", + "single_instance_allowed": "Zaten yap\u0131land\u0131r\u0131lm\u0131\u015f. Yaln\u0131zca tek bir konfig\u00fcrasyon m\u00fcmk\u00fcnd\u00fcr." + }, + "error": { + "already_exists": "Bu URL ayarlar\u0131na sahip bir kamera zaten var.", + "invalid_still_image": "URL ge\u00e7erli bir hareketsiz resim d\u00f6nd\u00fcrmedi", + "no_still_image_or_stream_url": "En az\u0131ndan bir dura\u011fan resim veya ak\u0131\u015f URL'si belirtmelisiniz", + "stream_file_not_found": "Ak\u0131\u015fa ba\u011flanmaya \u00e7al\u0131\u015f\u0131rken dosya bulunamad\u0131 (ffmpeg y\u00fckl\u00fc m\u00fc?)", + "stream_http_not_found": "HTTP 404 Ak\u0131\u015fa ba\u011flanmaya \u00e7al\u0131\u015f\u0131rken bulunamad\u0131", + "stream_io_error": "Ak\u0131\u015fa ba\u011flanmaya \u00e7al\u0131\u015f\u0131rken Giri\u015f/\u00c7\u0131k\u0131\u015f hatas\u0131. Yanl\u0131\u015f RTSP aktar\u0131m protokol\u00fc?", + "stream_no_route_to_host": "Ak\u0131\u015fa ba\u011flanmaya \u00e7al\u0131\u015f\u0131rken ana bilgisayar bulunamad\u0131", + "stream_no_video": "Ak\u0131\u015fta video yok", + "stream_not_permitted": "Ak\u0131\u015fa ba\u011flanmaya \u00e7al\u0131\u015f\u0131rken i\u015fleme izin verilmiyor. Yanl\u0131\u015f RTSP aktar\u0131m protokol\u00fc?", + "stream_unauthorised": "Ak\u0131\u015fa ba\u011flanmaya \u00e7al\u0131\u015f\u0131rken yetkilendirme ba\u015far\u0131s\u0131z oldu", + "timeout": "URL y\u00fcklenirken zaman a\u015f\u0131m\u0131", + "unable_still_load": "Hareketsiz resim URL'sinden ge\u00e7erli resim y\u00fcklenemiyor (\u00f6r. ge\u00e7ersiz ana bilgisayar, URL veya kimlik do\u011frulama hatas\u0131). Daha fazla bilgi i\u00e7in g\u00fcnl\u00fc\u011f\u00fc inceleyin.", + "unknown": "Beklenmeyen hata" + }, + "step": { + "confirm": { + "description": "Kuruluma ba\u015flamak ister misiniz?" + }, + "content_type": { + "data": { + "content_type": "\u0130\u00e7erik T\u00fcr\u00fc" + }, + "description": "Ak\u0131\u015f i\u00e7in i\u00e7erik t\u00fcr\u00fcn\u00fc belirtin." + }, + "user": { + "data": { + "authentication": "Kimlik Do\u011frulama", + "content_type": "\u0130\u00e7erik T\u00fcr\u00fc", + "framerate": "Kare H\u0131z\u0131 (Hz)", + "limit_refetch_to_url_change": "Yeniden getirmeyi url de\u011fi\u015fikli\u011fiyle s\u0131n\u0131rla", + "password": "Parola", + "rtsp_transport": "RTSP aktar\u0131m protokol\u00fc", + "still_image_url": "Hareketsiz G\u00f6r\u00fcnt\u00fc URL'si (\u00f6rne\u011fin http://...)", + "stream_source": "Ak\u0131\u015f Kayna\u011f\u0131 URL'si (\u00f6r. rtsp://...)", + "username": "Kullan\u0131c\u0131 Ad\u0131", + "verify_ssl": "SSL sertifikas\u0131n\u0131 do\u011frulay\u0131n" + }, + "description": "Kameraya ba\u011flanmak i\u00e7in ayarlar\u0131 girin." + } + } + }, + "options": { + "error": { + "already_exists": "Bu URL ayarlar\u0131na sahip bir kamera zaten var.", + "invalid_still_image": "URL ge\u00e7erli bir hareketsiz resim d\u00f6nd\u00fcrmedi", + "no_still_image_or_stream_url": "En az\u0131ndan bir dura\u011fan resim veya ak\u0131\u015f URL'si belirtmelisiniz", + "stream_file_not_found": "Ak\u0131\u015fa ba\u011flanmaya \u00e7al\u0131\u015f\u0131rken dosya bulunamad\u0131 (ffmpeg y\u00fckl\u00fc m\u00fc?)", + "stream_http_not_found": "HTTP 404 Ak\u0131\u015fa ba\u011flanmaya \u00e7al\u0131\u015f\u0131rken bulunamad\u0131", + "stream_io_error": "Ak\u0131\u015fa ba\u011flanmaya \u00e7al\u0131\u015f\u0131rken Giri\u015f/\u00c7\u0131k\u0131\u015f hatas\u0131. Yanl\u0131\u015f RTSP aktar\u0131m protokol\u00fc?", + "stream_no_route_to_host": "Ak\u0131\u015fa ba\u011flanmaya \u00e7al\u0131\u015f\u0131rken ana bilgisayar bulunamad\u0131", + "stream_no_video": "Ak\u0131\u015fta video yok", + "stream_not_permitted": "Ak\u0131\u015fa ba\u011flanmaya \u00e7al\u0131\u015f\u0131rken i\u015fleme izin verilmiyor. Yanl\u0131\u015f RTSP aktar\u0131m protokol\u00fc?", + "stream_unauthorised": "Ak\u0131\u015fa ba\u011flanmaya \u00e7al\u0131\u015f\u0131rken yetkilendirme ba\u015far\u0131s\u0131z oldu", + "timeout": "URL y\u00fcklenirken zaman a\u015f\u0131m\u0131", + "unable_still_load": "Hareketsiz resim URL'sinden ge\u00e7erli resim y\u00fcklenemiyor (\u00f6r. ge\u00e7ersiz ana bilgisayar, URL veya kimlik do\u011frulama hatas\u0131). Daha fazla bilgi i\u00e7in g\u00fcnl\u00fc\u011f\u00fc inceleyin.", + "unknown": "Beklenmeyen hata" + }, + "step": { + "content_type": { + "data": { + "content_type": "\u0130\u00e7erik T\u00fcr\u00fc" + }, + "description": "Ak\u0131\u015f i\u00e7in i\u00e7erik t\u00fcr\u00fcn\u00fc belirtin." + }, + "init": { + "data": { + "authentication": "Kimlik Do\u011frulama", + "content_type": "\u0130\u00e7erik T\u00fcr\u00fc", + "framerate": "Kare H\u0131z\u0131 (Hz)", + "limit_refetch_to_url_change": "Yeniden getirmeyi url de\u011fi\u015fikli\u011fiyle s\u0131n\u0131rla", + "password": "Parola", + "rtsp_transport": "RTSP aktar\u0131m protokol\u00fc", + "still_image_url": "Hareketsiz G\u00f6r\u00fcnt\u00fc URL'si (\u00f6rne\u011fin http://...)", + "stream_source": "Ak\u0131\u015f Kayna\u011f\u0131 URL'si (\u00f6r. rtsp://...)", + "username": "Kullan\u0131c\u0131 Ad\u0131", + "verify_ssl": "SSL sertifikas\u0131n\u0131 do\u011frulay\u0131n" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/generic/translations/zh-Hant.json b/homeassistant/components/generic/translations/zh-Hant.json new file mode 100644 index 00000000000..1b72dcb0ce4 --- /dev/null +++ b/homeassistant/components/generic/translations/zh-Hant.json @@ -0,0 +1,88 @@ +{ + "config": { + "abort": { + "no_devices_found": "\u7db2\u8def\u4e0a\u627e\u4e0d\u5230\u88dd\u7f6e", + "single_instance_allowed": "\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210\u3001\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u88dd\u7f6e\u3002" + }, + "error": { + "already_exists": "\u5df2\u7d93\u6709\u4f7f\u7528\u76f8\u540c URL \u7684\u651d\u5f71\u6a5f\u3002", + "invalid_still_image": "URL \u56de\u50b3\u4e26\u975e\u6709\u6548\u975c\u614b\u5f71\u50cf", + "no_still_image_or_stream_url": "\u5fc5\u9808\u81f3\u5c11\u6307\u5b9a\u975c\u614b\u5f71\u50cf\u6216\u4e32\u6d41 URL", + "stream_file_not_found": "\u5617\u8a66\u9023\u7dda\u4e32\u6d41\u6642\u51fa\u73fe\u627e\u4e0d\u5230\u6a94\u6848\u932f\u8aa4\uff08\u662f\u5426\u5df2\u5b89\u88dd ffmpeg\uff1f\uff09", + "stream_http_not_found": "\u5617\u8a66\u9023\u7dda\u4e32\u6d41\u6642\u51fa\u73fe HTTP 404 \u672a\u627e\u5230\u932f\u8aa4", + "stream_io_error": "\u5617\u8a66\u9023\u7dda\u4e32\u6d41\u6642\u51fa\u73fe\u8f38\u5165/\u8f38\u51fa\u932f\u8aa4\u3002\u8f38\u5165\u932f\u8aa4\u7684 RTSP \u50b3\u8f38\u5354\u5b9a\uff1f", + "stream_no_route_to_host": "\u5617\u8a66\u9023\u7dda\u4e32\u6d41\u6642\u627e\u4e0d\u5230\u4e3b\u6a5f", + "stream_no_video": "\u4e32\u6d41\u6c92\u6709\u5f71\u50cf", + "stream_not_permitted": "\u5617\u8a66\u4e32\u6d41\u9023\u7dda\u6642\u4e0d\u5141\u8a31\u64cd\u4f5c\u3002\u8f38\u5165\u932f\u8aa4\u7684 RTSP \u50b3\u8f38\u5354\u5b9a\uff1f", + "stream_unauthorised": "\u5617\u8a66\u4e32\u6d41\u9023\u7dda\u6642\u8a8d\u8b49\u5931\u6557", + "timeout": "\u8f09\u5165 URL \u903e\u6642\u6642\u9593", + "unable_still_load": "\u7121\u6cd5\u7531\u8a2d\u5b9a\u975c\u614b\u5f71\u50cf URL \u8f09\u5165\u6709\u6548\u5f71\u50cf\uff08\u4f8b\u5982\uff1a\u7121\u6548\u4e3b\u6a5f\u3001URL \u6216\u8a8d\u8b49\u5931\u6557\uff09\u3002\u8acb\u53c3\u95b1\u65e5\u8a8c\u4ee5\u7372\u5f97\u66f4\u8a73\u7d30\u8a0a\u606f\u3002", + "unknown": "\u672a\u9810\u671f\u932f\u8aa4" + }, + "step": { + "confirm": { + "description": "\u662f\u5426\u8981\u958b\u59cb\u8a2d\u5b9a\uff1f" + }, + "content_type": { + "data": { + "content_type": "\u5167\u5bb9\u985e\u578b" + }, + "description": "\u6307\u5b9a\u4e32\u6d41\u5167\u5bb9\u985e\u5225" + }, + "user": { + "data": { + "authentication": "\u9a57\u8b49", + "content_type": "\u5167\u5bb9\u985e\u578b", + "framerate": "\u5f71\u683c\u7387 (Hz)", + "limit_refetch_to_url_change": "\u9650\u5236 URL \u8b8a\u66f4\u66f4\u65b0", + "password": "\u5bc6\u78bc", + "rtsp_transport": "RTSP \u50b3\u8f38\u5354\u5b9a", + "still_image_url": "\u975c\u614b\u5f71\u50cf URL\uff08\u4f8b\u5982 http://...\uff09", + "stream_source": "\u4e32\u6d41\u4f86\u6e90 URL\uff08\u4f8b\u5982 rtsp://...\uff09", + "username": "\u4f7f\u7528\u8005\u540d\u7a31", + "verify_ssl": "\u78ba\u8a8d SSL \u8a8d\u8b49" + }, + "description": "\u8f38\u5165\u651d\u5f71\u6a5f\u9023\u7dda\u8a2d\u5b9a\u3002" + } + } + }, + "options": { + "error": { + "already_exists": "\u5df2\u7d93\u6709\u4f7f\u7528\u76f8\u540c URL \u7684\u651d\u5f71\u6a5f\u3002", + "invalid_still_image": "URL \u56de\u50b3\u4e26\u975e\u6709\u6548\u975c\u614b\u5f71\u50cf", + "no_still_image_or_stream_url": "\u5fc5\u9808\u81f3\u5c11\u6307\u5b9a\u975c\u614b\u5f71\u50cf\u6216\u4e32\u6d41 URL", + "stream_file_not_found": "\u5617\u8a66\u9023\u7dda\u4e32\u6d41\u6642\u51fa\u73fe\u627e\u4e0d\u5230\u6a94\u6848\u932f\u8aa4\uff08\u662f\u5426\u5df2\u5b89\u88dd ffmpeg\uff1f\uff09", + "stream_http_not_found": "\u5617\u8a66\u9023\u7dda\u4e32\u6d41\u6642\u51fa\u73fe HTTP 404 \u672a\u627e\u5230\u932f\u8aa4", + "stream_io_error": "\u5617\u8a66\u9023\u7dda\u4e32\u6d41\u6642\u51fa\u73fe\u8f38\u5165/\u8f38\u51fa\u932f\u8aa4\u3002\u8f38\u5165\u932f\u8aa4\u7684 RTSP \u50b3\u8f38\u5354\u5b9a\uff1f", + "stream_no_route_to_host": "\u5617\u8a66\u9023\u7dda\u4e32\u6d41\u6642\u627e\u4e0d\u5230\u4e3b\u6a5f", + "stream_no_video": "\u4e32\u6d41\u6c92\u6709\u5f71\u50cf", + "stream_not_permitted": "\u5617\u8a66\u4e32\u6d41\u9023\u7dda\u6642\u4e0d\u5141\u8a31\u64cd\u4f5c\u3002\u8f38\u5165\u932f\u8aa4\u7684 RTSP \u50b3\u8f38\u5354\u5b9a\uff1f", + "stream_unauthorised": "\u5617\u8a66\u4e32\u6d41\u9023\u7dda\u6642\u8a8d\u8b49\u5931\u6557", + "timeout": "\u8f09\u5165 URL \u903e\u6642\u6642\u9593", + "unable_still_load": "\u7121\u6cd5\u7531\u8a2d\u5b9a\u975c\u614b\u5f71\u50cf URL \u8f09\u5165\u6709\u6548\u5f71\u50cf\uff08\u4f8b\u5982\uff1a\u7121\u6548\u4e3b\u6a5f\u3001URL \u6216\u8a8d\u8b49\u5931\u6557\uff09\u3002\u8acb\u53c3\u95b1\u65e5\u8a8c\u4ee5\u7372\u5f97\u66f4\u8a73\u7d30\u8a0a\u606f\u3002", + "unknown": "\u672a\u9810\u671f\u932f\u8aa4" + }, + "step": { + "content_type": { + "data": { + "content_type": "\u5167\u5bb9\u985e\u578b" + }, + "description": "\u6307\u5b9a\u4e32\u6d41\u5167\u5bb9\u985e\u5225" + }, + "init": { + "data": { + "authentication": "\u9a57\u8b49", + "content_type": "\u5167\u5bb9\u985e\u578b", + "framerate": "\u5f71\u683c\u7387 (Hz)", + "limit_refetch_to_url_change": "\u9650\u5236 URL \u8b8a\u66f4\u66f4\u65b0", + "password": "\u5bc6\u78bc", + "rtsp_transport": "RTSP \u50b3\u8f38\u5354\u5b9a", + "still_image_url": "\u975c\u614b\u5f71\u50cf URL\uff08\u4f8b\u5982 http://...\uff09", + "stream_source": "\u4e32\u6d41\u4f86\u6e90 URL\uff08\u4f8b\u5982 rtsp://...\uff09", + "username": "\u4f7f\u7528\u8005\u540d\u7a31", + "verify_ssl": "\u78ba\u8a8d SSL \u8a8d\u8b49" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/gios/translations/hu.json b/homeassistant/components/gios/translations/hu.json index 9454aceb13d..1de37cee96a 100644 --- a/homeassistant/components/gios/translations/hu.json +++ b/homeassistant/components/gios/translations/hu.json @@ -11,7 +11,7 @@ "step": { "user": { "data": { - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "station_id": "A m\u00e9r\u0151\u00e1llom\u00e1s azonos\u00edt\u00f3ja" }, "description": "A GIO\u015a (lengyel k\u00f6rnyezetv\u00e9delmi f\u0151fel\u00fcgyel\u0151) leveg\u0151min\u0151s\u00e9gi integr\u00e1ci\u00f3j\u00e1nak be\u00e1ll\u00edt\u00e1sa. Ha seg\u00edts\u00e9gre van sz\u00fcks\u00e9ged a konfigur\u00e1ci\u00f3val kapcsolatban, l\u00e1togass ide: https://www.home-assistant.io/integrations/gios", diff --git a/homeassistant/components/glances/translations/hu.json b/homeassistant/components/glances/translations/hu.json index d93fa4bb66e..71649b51d34 100644 --- a/homeassistant/components/glances/translations/hu.json +++ b/homeassistant/components/glances/translations/hu.json @@ -11,7 +11,7 @@ "user": { "data": { "host": "C\u00edm", - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "password": "Jelsz\u00f3", "port": "Port", "ssl": "SSL tan\u00fas\u00edtv\u00e1ny haszn\u00e1lata", diff --git a/homeassistant/components/goalzero/translations/ca.json b/homeassistant/components/goalzero/translations/ca.json index 0f9979eb378..3e7d6e714d3 100644 --- a/homeassistant/components/goalzero/translations/ca.json +++ b/homeassistant/components/goalzero/translations/ca.json @@ -20,7 +20,7 @@ "host": "Amfitri\u00f3", "name": "Nom" }, - "description": "En primer lloc, has de descarregar-te l'aplicaci\u00f3 Goal Zero: https://www.goalzero.com/product-features/yeti-app/ \n\nSegueix les instruccions per connectar el Yeti al teu Wi-Fi. Es recomana que la reserva DHCP del router estigui configurada, si no ho est\u00e0, pot ser que el dispositiu no estigui disponible mentre Home Assistant no detecti la nova IP. Consulta el manual del router.", + "description": "Consulta la documentaci\u00f3 per assegurar-te que compleixes tots els requisits.", "title": "Goal Zero Yeti" } } diff --git a/homeassistant/components/goalzero/translations/de.json b/homeassistant/components/goalzero/translations/de.json index 5133488c247..a9f7e3fa887 100644 --- a/homeassistant/components/goalzero/translations/de.json +++ b/homeassistant/components/goalzero/translations/de.json @@ -20,7 +20,7 @@ "host": "Host", "name": "Name" }, - "description": "Zuerst musst du die Goal Zero App herunterladen: https://www.goalzero.com/product-features/yeti-app/ \n\nFolge den Anweisungen, um deinen Yeti mit deinem WLAN-Netzwerk zu verbinden. Eine DHCP-Reservierung auf deinem Router wird empfohlen. Wenn es nicht eingerichtet ist, ist das Ger\u00e4t m\u00f6glicherweise nicht verf\u00fcgbar, bis Home Assistant die neue IP-Adresse erkennt. Schlage dazu im Benutzerhandbuch deines Routers nach.", + "description": "Bitte lies die Dokumentation, um sicherzustellen, dass alle Anforderungen erf\u00fcllt sind.", "title": "Goal Zero Yeti" } } diff --git a/homeassistant/components/goalzero/translations/en.json b/homeassistant/components/goalzero/translations/en.json index 26a92757a4b..fd27892c794 100644 --- a/homeassistant/components/goalzero/translations/en.json +++ b/homeassistant/components/goalzero/translations/en.json @@ -20,7 +20,7 @@ "host": "Host", "name": "Name" }, - "description": "First, you need to download the Goal Zero app: https://www.goalzero.com/product-features/yeti-app/\n\nFollow the instructions to connect your Yeti to your Wi-fi network. DHCP reservation on your router is recommended. If not set up, the device may become unavailable until Home Assistant detects the new ip address. Refer to your router's user manual.", + "description": "Please refer to the documentation to make sure all requirements are met.", "title": "Goal Zero Yeti" } } diff --git a/homeassistant/components/goalzero/translations/et.json b/homeassistant/components/goalzero/translations/et.json index 5d0111aa946..e529f0a3a4e 100644 --- a/homeassistant/components/goalzero/translations/et.json +++ b/homeassistant/components/goalzero/translations/et.json @@ -20,7 +20,7 @@ "host": "", "name": "Nimi" }, - "description": "Alustuseks pead alla laadima rakenduse Goal Zero: https://www.goalzero.com/product-features/yeti-app/\n\nYeti Wifi-v\u00f5rguga \u00fchendamiseks j\u00e4rgi juhiseid. DHCP peab olema ruuteri seadetes seadistatud nii, et hosti IP ei muutuks. Vaata ruuteri kasutusjuhendit.", + "description": "Vaata dokumentatsiooni, et veenduda, et k\u00f5ik n\u00f5uded on t\u00e4idetud.", "title": "" } } diff --git a/homeassistant/components/goalzero/translations/fr.json b/homeassistant/components/goalzero/translations/fr.json index b554ec1ea1d..430ad9927c4 100644 --- a/homeassistant/components/goalzero/translations/fr.json +++ b/homeassistant/components/goalzero/translations/fr.json @@ -20,7 +20,7 @@ "host": "H\u00f4te", "name": "Nom" }, - "description": "Vous devez tout d'abord t\u00e9l\u00e9charger l'application Goal Zero\u00a0: https://www.goalzero.com/product-features/yeti-app/\n\nSuivez les instructions pour connecter votre Yeti \u00e0 votre r\u00e9seau Wi-Fi. Il est recommand\u00e9 d'utiliser la r\u00e9servation DHCP sur votre routeur, sans quoi l'appareil risque de devenir indisponible le temps que Home Assistant d\u00e9tecte la nouvelle adresse IP. Reportez-vous au manuel d'utilisation de votre routeur.", + "description": "Veuillez consulter la documentation afin de vous assurer que toutes les conditions sont respect\u00e9es.", "title": "Goal Zero Yeti" } } diff --git a/homeassistant/components/goalzero/translations/hu.json b/homeassistant/components/goalzero/translations/hu.json index 62c0a1626f9..00196952e0c 100644 --- a/homeassistant/components/goalzero/translations/hu.json +++ b/homeassistant/components/goalzero/translations/hu.json @@ -18,9 +18,9 @@ "user": { "data": { "host": "C\u00edm", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" }, - "description": "El\u0151sz\u00f6r le kell t\u00f6ltenie a Goal Zero alkalmaz\u00e1st: https://www.goalzero.com/product-features/yeti-app/ \n\nK\u00f6vesse az utas\u00edt\u00e1sokat, hogy csatlakoztassa Yeti k\u00e9sz\u00fcl\u00e9k\u00e9t a Wi-Fi h\u00e1l\u00f3zathoz. DHCP foglal\u00e1s aj\u00e1nlott az routeren. Ha nincs be\u00e1ll\u00edtva, akkor az eszk\u00f6z el\u00e9rhetetlenn\u00e9 v\u00e1lhat, am\u00edg a Home Assistant \u00e9szleli az \u00faj IP-c\u00edmet. Olvassa el az router felhaszn\u00e1l\u00f3i k\u00e9zik\u00f6nyv\u00e9t.", + "description": "K\u00e9rj\u00fck, olvassa el a dokument\u00e1ci\u00f3t, hogy megbizonyosodjon arr\u00f3l, hogy minden k\u00f6vetelm\u00e9ny teljes\u00fcl.", "title": "Goal Zero Yeti" } } diff --git a/homeassistant/components/goalzero/translations/id.json b/homeassistant/components/goalzero/translations/id.json index d5897a2d944..d524b13bb0c 100644 --- a/homeassistant/components/goalzero/translations/id.json +++ b/homeassistant/components/goalzero/translations/id.json @@ -20,7 +20,7 @@ "host": "Host", "name": "Nama" }, - "description": "Pertama, Anda perlu mengunduh aplikasi Goal Zero: https://www.goalzero.com/product-features/yeti-app/\n\nIkuti petunjuk untuk menghubungkan Yeti Anda ke jaringan Wi-Fi Anda. Kemudian dapatkan IP host dari router Anda. DHCP harus disetel di pengaturan router Anda untuk perangkat host agar IP host tidak berubah. Lihat manual pengguna router Anda.", + "description": "Rujuk ke dokumentasi untuk memastikan semua persyaratan terpenuhi.", "title": "Goal Zero Yeti" } } diff --git a/homeassistant/components/goalzero/translations/it.json b/homeassistant/components/goalzero/translations/it.json index ad5042cc602..dbd71c82f4a 100644 --- a/homeassistant/components/goalzero/translations/it.json +++ b/homeassistant/components/goalzero/translations/it.json @@ -20,7 +20,7 @@ "host": "Host", "name": "Nome" }, - "description": "Innanzitutto, devi scaricare l'app Goal Zero: https://www.goalzero.com/product-features/yeti-app/ \n\nSegui le istruzioni per connettere il tuo Yeti alla tua rete Wi-Fi. Si consiglia la prenotazione DHCP sul router. Se non configurato, il dispositivo potrebbe non essere disponibile fino a quando Home Assistant non rileva il nuovo indirizzo IP. Fare riferimento al manuale utente del router.", + "description": "Fai riferimento alla documentazione per assicurarti che tutti i requisiti siano soddisfatti.", "title": "Goal Zero Yeti" } } diff --git a/homeassistant/components/goalzero/translations/nl.json b/homeassistant/components/goalzero/translations/nl.json index d73c4d648ed..680ff1a10cc 100644 --- a/homeassistant/components/goalzero/translations/nl.json +++ b/homeassistant/components/goalzero/translations/nl.json @@ -20,7 +20,7 @@ "host": "Host", "name": "Naam" }, - "description": "Eerst moet u de Goal Zero-app downloaden: https://www.goalzero.com/product-features/yeti-app/ \n\n Volg de instructies om Yeti te verbinden met uw wifi-netwerk. DHCP-reservering op uw router wordt aanbevolen. Als het niet is ingesteld, is het apparaat mogelijk niet meer beschikbaar totdat Home Assistant het nieuwe IP-adres detecteert. Raadpleeg de gebruikershandleiding van uw router.", + "description": "Raadpleeg de documentatie om er zeker van te zijn dat aan alle vereisten wordt voldaan.", "title": "Goal Zero Yeti" } } diff --git a/homeassistant/components/goalzero/translations/no.json b/homeassistant/components/goalzero/translations/no.json index 1bc2d6feae1..6bb00952fab 100644 --- a/homeassistant/components/goalzero/translations/no.json +++ b/homeassistant/components/goalzero/translations/no.json @@ -20,7 +20,7 @@ "host": "Vert", "name": "Navn" }, - "description": "F\u00f8rst m\u00e5 du laste ned Goal Zero-appen: https://www.goalzero.com/product-features/yeti-app/\n\nF\u00f8lg instruksjonene for \u00e5 koble Yeti til Wi-Fi-nettverket ditt. DHCP-reservasjon p\u00e5 ruteren anbefales. Hvis den ikke er konfigurert, kan enheten bli utilgjengelig til Home Assistant oppdager den nye IP-adressen. Se brukerh\u00e5ndboken for ruteren.", + "description": "Se dokumentasjonen for \u00e5 sikre at alle krav er oppfylt.", "title": "" } } diff --git a/homeassistant/components/goalzero/translations/pl.json b/homeassistant/components/goalzero/translations/pl.json index 3aba221bc4a..ee8f2022a0d 100644 --- a/homeassistant/components/goalzero/translations/pl.json +++ b/homeassistant/components/goalzero/translations/pl.json @@ -20,7 +20,7 @@ "host": "Nazwa hosta lub adres IP", "name": "Nazwa" }, - "description": "Najpierw musisz pobra\u0107 aplikacj\u0119 Goal Zero: https://www.goalzero.com/product-features/yeti-app/\n\nPost\u0119puj zgodnie z instrukcjami, aby pod\u0142\u0105czy\u0107 Yeti do sieci Wi-Fi. Zaleca si\u0119 rezerwacj\u0119 DHCP w ustawieniach routera. Je\u015bli tego nie ustawisz, urz\u0105dzenie mo\u017ce sta\u0107 si\u0119 niedost\u0119pne, do czasu a\u017c Home Assistant wykryje nowy adres IP. Post\u0119puj wg instrukcji obs\u0142ugi routera.", + "description": "Zapoznaj si\u0119 z dokumentacj\u0105, aby upewni\u0107 si\u0119, \u017ce wszystkie wymagania s\u0105 spe\u0142nione.", "title": "Goal Zero Yeti" } } diff --git a/homeassistant/components/goalzero/translations/pt-BR.json b/homeassistant/components/goalzero/translations/pt-BR.json index 7ecea696702..fa67129b08a 100644 --- a/homeassistant/components/goalzero/translations/pt-BR.json +++ b/homeassistant/components/goalzero/translations/pt-BR.json @@ -20,7 +20,7 @@ "host": "Nome do host", "name": "Nome" }, - "description": "Primeiro, voc\u00ea precisa baixar o aplicativo Goal Zero: https://www.goalzero.com/product-features/yeti-app/ \n\n Siga as instru\u00e7\u00f5es para conectar seu Yeti \u00e0 sua rede Wi-fi. A reserva de DHCP em seu roteador \u00e9 recomendada. Se n\u00e3o estiver configurado, o dispositivo pode ficar indispon\u00edvel at\u00e9 que o Home Assistant detecte o novo endere\u00e7o IP. Consulte o manual do usu\u00e1rio do seu roteador.", + "description": "Consulte a documenta\u00e7\u00e3o para garantir que todos os requisitos sejam atendidos.", "title": "Gol Zero Yeti" } } diff --git a/homeassistant/components/goalzero/translations/ru.json b/homeassistant/components/goalzero/translations/ru.json index 52d8bbcbdc7..ca114f6d92e 100644 --- a/homeassistant/components/goalzero/translations/ru.json +++ b/homeassistant/components/goalzero/translations/ru.json @@ -20,7 +20,7 @@ "host": "\u0425\u043e\u0441\u0442", "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435" }, - "description": "\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Goal Zero: https://www.goalzero.com/product-features/yeti-app/.\n\n\u0421\u043b\u0435\u0434\u0443\u0439\u0442\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c \u043f\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044e Yeti \u043a \u0441\u0435\u0442\u0438 WiFi. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0438\u043c\u0438, \u0447\u0442\u043e\u0431\u044b IP-\u0430\u0434\u0440\u0435\u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u043b\u0441\u044f \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0430\u0442\u044c \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 Home Assistant \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442 \u043d\u043e\u0432\u044b\u0439 IP-\u0430\u0434\u0440\u0435\u0441. \u041e \u0442\u043e\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0437\u043d\u0430\u0442\u044c \u0432 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0412\u0430\u0448\u0435\u0433\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430.", + "description": "\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u044b.", "title": "Goal Zero Yeti" } } diff --git a/homeassistant/components/goalzero/translations/tr.json b/homeassistant/components/goalzero/translations/tr.json index a2c5b4f8986..9be07def514 100644 --- a/homeassistant/components/goalzero/translations/tr.json +++ b/homeassistant/components/goalzero/translations/tr.json @@ -20,7 +20,7 @@ "host": "Sunucu", "name": "Ad" }, - "description": "\u00d6ncelikle Goal Zero uygulamas\u0131n\u0131 indirmeniz gerekiyor: https://www.goalzero.com/product-features/yeti-app/ \n\n Yeti'nizi Wi-fi a\u011f\u0131n\u0131za ba\u011flamak i\u00e7in talimatlar\u0131 izleyin. Y\u00f6nlendiricinizde DHCP rezervasyonu yap\u0131lmas\u0131 \u00f6nerilir. Kurulmazsa, Home Assistant yeni ip adresini alg\u0131layana kadar cihaz kullan\u0131lamayabilir. Y\u00f6nlendiricinizin kullan\u0131m k\u0131lavuzuna bak\u0131n.", + "description": "T\u00fcm gereksinimlerin kar\u015f\u0131land\u0131\u011f\u0131ndan emin olmak i\u00e7in l\u00fctfen belgelere bak\u0131n.", "title": "Goal Zero Yeti" } } diff --git a/homeassistant/components/goalzero/translations/zh-Hant.json b/homeassistant/components/goalzero/translations/zh-Hant.json index 13c49f8d2ac..4f5b01fb9d4 100644 --- a/homeassistant/components/goalzero/translations/zh-Hant.json +++ b/homeassistant/components/goalzero/translations/zh-Hant.json @@ -20,7 +20,7 @@ "host": "\u4e3b\u6a5f\u7aef", "name": "\u540d\u7a31" }, - "description": "\u9996\u5148\u5fc5\u9808\u5148\u4e0b\u8f09 Goal Zero app\uff1ahttps://www.goalzero.com/product-features/yeti-app/\n\n\u8ddf\u96a8\u6307\u793a\u5c07 Yeti \u9023\u7dda\u81f3\u7121\u7dda\u7db2\u8def\u3002\u5efa\u8b70\u65bc\u8def\u7531\u5668\u7684 DHCP \u8a2d\u5b9a\u4e2d\u4fdd\u7559\u56fa\u5b9a IP\uff0c\u5047\u5982\u672a\u8a2d\u5b9a\u3001\u88dd\u7f6e\u53ef\u80fd\u6703\u5728 Home Assistant \u5075\u6e2c\u5230\u65b0 IP \u4e4b\u524d\u8b8a\u6210\u7121\u6cd5\u4f7f\u7528\u3002\u8acb\u53c3\u95b1\u8def\u7531\u5668\u624b\u518a\u4e86\u89e3\u5982\u4f55\u8a2d\u5b9a\u3002", + "description": "\u8acb\u53c3\u8003\u76f8\u95dc\u6587\u4ef6\u4ee5\u4e86\u89e3\u6240\u6709\u5fc5\u8981\u9700\u6c42\u3002", "title": "Goal Zero Yeti" } } diff --git a/homeassistant/components/goodwe/translations/hu.json b/homeassistant/components/goodwe/translations/hu.json index 6f3fa5bbff3..e6086eab7aa 100644 --- a/homeassistant/components/goodwe/translations/hu.json +++ b/homeassistant/components/goodwe/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van" + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve" }, "error": { "connection_error": "Sikertelen csatlakoz\u00e1s" diff --git a/homeassistant/components/google/translations/bg.json b/homeassistant/components/google/translations/bg.json new file mode 100644 index 00000000000..38b08fc3616 --- /dev/null +++ b/homeassistant/components/google/translations/bg.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "\u0410\u043a\u0430\u0443\u043d\u0442\u044a\u0442 \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d", + "missing_configuration": "\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044a\u0442 \u043d\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d. \u041c\u043e\u043b\u044f, \u0441\u043b\u0435\u0434\u0432\u0430\u0439\u0442\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u0442\u0430.", + "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0442\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0432\u0430\u043d\u0435 \u0431\u0435\u0448\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e" + }, + "create_entry": { + "default": "\u0423\u0441\u043f\u0435\u0448\u043d\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u0435\u043d\u043e" + }, + "step": { + "auth": { + "title": "\u0421\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u0430\u043a\u0430\u0443\u043d\u0442 \u0432 Google" + }, + "reauth_confirm": { + "title": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f\u0442\u0430" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/google/translations/ca.json b/homeassistant/components/google/translations/ca.json new file mode 100644 index 00000000000..829ce1413d5 --- /dev/null +++ b/homeassistant/components/google/translations/ca.json @@ -0,0 +1,31 @@ +{ + "config": { + "abort": { + "already_configured": "El compte ja est\u00e0 configurat", + "already_in_progress": "El flux de configuraci\u00f3 ja est\u00e0 en curs", + "code_expired": "El codi d'autenticaci\u00f3 ha caducat o la configuraci\u00f3 de credencials no \u00e9s v\u00e0lida. Torna-ho a provar.", + "invalid_access_token": "Token d'acc\u00e9s inv\u00e0lid", + "missing_configuration": "El component no est\u00e0 configurat. Mira'n la documentaci\u00f3.", + "oauth_error": "S'han rebut dades token inv\u00e0lides.", + "reauth_successful": "Re-autenticaci\u00f3 realitzada correctament" + }, + "create_entry": { + "default": "Autenticaci\u00f3 exitosa" + }, + "progress": { + "exchange": "Per enlla\u00e7ar un compte de Google, v\u00e9s a [{url}]({url}) i introdueix el codi: \n\n{user_code}" + }, + "step": { + "auth": { + "title": "Vinculaci\u00f3 amb compte de Google" + }, + "pick_implementation": { + "title": "Selecciona el m\u00e8tode d'autenticaci\u00f3" + }, + "reauth_confirm": { + "description": "La integraci\u00f3 Google Calendar ha de tornar a autenticar-se amb el teu compte", + "title": "Reautenticaci\u00f3 de la integraci\u00f3" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/google/translations/cs.json b/homeassistant/components/google/translations/cs.json new file mode 100644 index 00000000000..0c11a65f69b --- /dev/null +++ b/homeassistant/components/google/translations/cs.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "already_configured": "\u00da\u010det je ji\u017e nastaven", + "already_in_progress": "Konfigurace ji\u017e prob\u00edh\u00e1", + "invalid_access_token": "Neplatn\u00fd p\u0159\u00edstupov\u00fd token", + "missing_configuration": "Komponenta nen\u00ed nastavena. Postupujte podle dokumentace.", + "oauth_error": "P\u0159ijata neplatn\u00e1 data tokenu.", + "reauth_successful": "Op\u011btovn\u00e9 ov\u011b\u0159en\u00ed bylo \u00fasp\u011b\u0161n\u00e9" + }, + "create_entry": { + "default": "\u00dasp\u011b\u0161n\u011b ov\u011b\u0159eno" + }, + "step": { + "pick_implementation": { + "title": "Vyberte metodu ov\u011b\u0159en\u00ed" + }, + "reauth_confirm": { + "title": "Znovu ov\u011b\u0159it integraci" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/google/translations/de.json b/homeassistant/components/google/translations/de.json new file mode 100644 index 00000000000..1b15c465497 --- /dev/null +++ b/homeassistant/components/google/translations/de.json @@ -0,0 +1,31 @@ +{ + "config": { + "abort": { + "already_configured": "Konto wurde bereits konfiguriert", + "already_in_progress": "Der Konfigurationsablauf wird bereits ausgef\u00fchrt", + "code_expired": "Der Authentifizierungscode ist abgelaufen oder die Anmeldedaten sind ung\u00fcltig, bitte versuche es erneut.", + "invalid_access_token": "Ung\u00fcltiger Zugriffs-Token", + "missing_configuration": "Die Komponente ist nicht konfiguriert. Bitte der Dokumentation folgen.", + "oauth_error": "Ung\u00fcltige Token-Daten empfangen.", + "reauth_successful": "Die erneute Authentifizierung war erfolgreich" + }, + "create_entry": { + "default": "Erfolgreich authentifiziert" + }, + "progress": { + "exchange": "Um dein Google-Konto zu verkn\u00fcpfen, besuche [{url}]({url}) und gib folgenden Code ein:\n\n{user_code}" + }, + "step": { + "auth": { + "title": "Google-Konto verkn\u00fcpfen" + }, + "pick_implementation": { + "title": "W\u00e4hle die Authentifizierungsmethode" + }, + "reauth_confirm": { + "description": "Die Google Kalender-Integration muss dein Konto erneut authentifizieren", + "title": "Integration erneut authentifizieren" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/google/translations/el.json b/homeassistant/components/google/translations/el.json new file mode 100644 index 00000000000..11c78f96a93 --- /dev/null +++ b/homeassistant/components/google/translations/el.json @@ -0,0 +1,31 @@ +{ + "config": { + "abort": { + "already_configured": "\u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03b8\u03b5\u03af", + "already_in_progress": "\u0397 \u03c1\u03bf\u03ae \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7\u03c2 \u03b2\u03c1\u03af\u03c3\u03ba\u03b5\u03c4\u03b1\u03b9 \u03ae\u03b4\u03b7 \u03c3\u03b5 \u03b5\u03be\u03ad\u03bb\u03b9\u03be\u03b7", + "code_expired": "\u039f \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03ad\u03bb\u03b7\u03be\u03b5 \u03ae \u03b7 \u03c1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 \u03c4\u03c9\u03bd \u03b4\u03b9\u03b1\u03c0\u03b9\u03c3\u03c4\u03b5\u03c5\u03c4\u03b7\u03c1\u03af\u03c9\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03ac\u03ba\u03c5\u03c1\u03b7, \u03b4\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac.", + "invalid_access_token": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03b4\u03b9\u03b1\u03ba\u03c1\u03b9\u03c4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", + "missing_configuration": "\u03a4\u03bf \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf \u03b4\u03b5\u03bd \u03ad\u03c7\u03b5\u03b9 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c4\u03b5\u03ba\u03bc\u03b7\u03c1\u03af\u03c9\u03c3\u03b7.", + "oauth_error": "\u039b\u03ae\u03c6\u03b8\u03b7\u03ba\u03b1\u03bd \u03bc\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b1 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03b4\u03b9\u03b1\u03ba\u03c1\u03b9\u03c4\u03b9\u03ba\u03bf\u03cd.", + "reauth_successful": "\u039f \u03b5\u03ba \u03bd\u03ad\u03bf\u03c5 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03ae\u03c4\u03b1\u03bd \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03ae\u03c2" + }, + "create_entry": { + "default": "\u0395\u03c0\u03b9\u03c4\u03c5\u03c7\u03ae\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2" + }, + "progress": { + "exchange": "\u0393\u03b9\u03b1 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc \u03c3\u03b1\u03c2 \u03c3\u03c4\u03bf Google, \u03b5\u03c0\u03b9\u03c3\u03ba\u03b5\u03c6\u03b8\u03b5\u03af\u03c4\u03b5 \u03c4\u03bf [{url}]({url}) \u03ba\u03b1\u03b9 \u03c0\u03bb\u03b7\u03ba\u03c4\u03c1\u03bf\u03bb\u03bf\u03b3\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc:\n\n{user_code}" + }, + "step": { + "auth": { + "title": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd Google" + }, + "pick_implementation": { + "title": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03bc\u03b5\u03b8\u03cc\u03b4\u03bf\u03c5 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2" + }, + "reauth_confirm": { + "description": "\u0397 \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7 Nest \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03bb\u03ad\u03b3\u03be\u03b5\u03b9 \u03b5\u03ba \u03bd\u03ad\u03bf\u03c5 \u03c4\u03b7\u03bd \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1 \u03c4\u03bf\u03c5 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd \u03c3\u03b1\u03c2", + "title": "\u0395\u03c0\u03b1\u03bd\u03b1\u03bb\u03b7\u03c0\u03c4\u03b9\u03ba\u03cc\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7\u03c2" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/google/translations/es.json b/homeassistant/components/google/translations/es.json new file mode 100644 index 00000000000..8072ac95d4b --- /dev/null +++ b/homeassistant/components/google/translations/es.json @@ -0,0 +1,12 @@ +{ + "config": { + "abort": { + "missing_configuration": "El componente no est\u00e1 configurado. Por favor, sigue la documentaci\u00f3n." + }, + "step": { + "auth": { + "title": "Vincular cuenta de Google" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/google/translations/et.json b/homeassistant/components/google/translations/et.json new file mode 100644 index 00000000000..27dfa3f5290 --- /dev/null +++ b/homeassistant/components/google/translations/et.json @@ -0,0 +1,31 @@ +{ + "config": { + "abort": { + "already_configured": "Kasutaja on juba seadistatud", + "already_in_progress": "Seadistamine on juba k\u00e4imas", + "code_expired": "Tuvastuskood on aegunud v\u00f5i mandaadi seadistus on vale, proovi uuesti.", + "invalid_access_token": "Vigane juurdep\u00e4\u00e4sut\u00f5end", + "missing_configuration": "Komponent pole seadistatud. Palun loe dokumentatsiooni.", + "oauth_error": "Saadi sobimatud loaandmed.", + "reauth_successful": "Taastuvastamine \u00f5nnestus" + }, + "create_entry": { + "default": "Tuvastamine \u00f5nnestus" + }, + "progress": { + "exchange": "Google'i konto linkimiseks k\u00fclasta aadressi [ {url} ]( {url} ) ja sisesta kood: \n\n {user_code}" + }, + "step": { + "auth": { + "title": "Google'i konto linkimine" + }, + "pick_implementation": { + "title": "Vali tuvastusmeetod" + }, + "reauth_confirm": { + "description": "Google'i kalendri sidumine peab konto uuesti tuvastama", + "title": "Taastuvasta sidumine" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/google/translations/fr.json b/homeassistant/components/google/translations/fr.json new file mode 100644 index 00000000000..1224ba76c9b --- /dev/null +++ b/homeassistant/components/google/translations/fr.json @@ -0,0 +1,31 @@ +{ + "config": { + "abort": { + "already_configured": "Le compte est d\u00e9j\u00e0 configur\u00e9", + "already_in_progress": "La configuration est d\u00e9j\u00e0 en cours", + "code_expired": "Le code d'authentification a expir\u00e9 ou la configuration des informations d'identification n'est pas valide, veuillez r\u00e9essayer.", + "invalid_access_token": "Jeton d'acc\u00e8s non valide", + "missing_configuration": "Le composant n'est pas configur\u00e9. Veuillez suivre la documentation.", + "oauth_error": "Des donn\u00e9es de jeton non valides ont \u00e9t\u00e9 re\u00e7ues.", + "reauth_successful": "La r\u00e9-authentification a r\u00e9ussi" + }, + "create_entry": { + "default": "Authentification r\u00e9ussie" + }, + "progress": { + "exchange": "Afin d'associer votre compte Google, rendez-vous sur [{url}]({url}) et saisissez le code suivant\u00a0:\n\n{user_code}" + }, + "step": { + "auth": { + "title": "Associer un compte Google" + }, + "pick_implementation": { + "title": "S\u00e9lectionner une m\u00e9thode d'authentification" + }, + "reauth_confirm": { + "description": "L'int\u00e9gration Google Agenda doit r\u00e9-authentifier votre compte", + "title": "R\u00e9-authentifier l'int\u00e9gration" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/google/translations/he.json b/homeassistant/components/google/translations/he.json new file mode 100644 index 00000000000..df5ec28163e --- /dev/null +++ b/homeassistant/components/google/translations/he.json @@ -0,0 +1,27 @@ +{ + "config": { + "abort": { + "already_configured": "\u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05d7\u05e9\u05d1\u05d5\u05df \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4", + "already_in_progress": "\u05d6\u05e8\u05d9\u05de\u05ea \u05d4\u05ea\u05e6\u05d5\u05e8\u05d4 \u05db\u05d1\u05e8 \u05de\u05ea\u05d1\u05e6\u05e2\u05ea", + "invalid_access_token": "\u05d0\u05e1\u05d9\u05de\u05d5\u05df \u05d2\u05d9\u05e9\u05d4 \u05dc\u05d0 \u05d7\u05d5\u05e7\u05d9", + "missing_configuration": "\u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05e8\u05db\u05d9\u05d1 \u05dc\u05d0 \u05e0\u05e7\u05d1\u05e2\u05d4. \u05e0\u05d0 \u05e2\u05e7\u05d5\u05d1 \u05d0\u05d7\u05e8 \u05d4\u05ea\u05d9\u05e2\u05d5\u05d3.", + "oauth_error": "\u05d4\u05ea\u05e7\u05d1\u05dc\u05d5 \u05e0\u05ea\u05d5\u05e0\u05d9 \u05d0\u05e1\u05d9\u05de\u05d5\u05df \u05dc\u05d0 \u05d7\u05d5\u05e7\u05d9\u05d9\u05dd.", + "reauth_successful": "\u05d4\u05d0\u05d9\u05de\u05d5\u05ea \u05de\u05d7\u05d3\u05e9 \u05d4\u05e6\u05dc\u05d9\u05d7" + }, + "create_entry": { + "default": "\u05d0\u05d5\u05de\u05ea \u05d1\u05d4\u05e6\u05dc\u05d7\u05d4" + }, + "step": { + "auth": { + "title": "\u05e7\u05d9\u05e9\u05d5\u05e8 \u05d7\u05e9\u05d1\u05d5\u05df \u05d2\u05d5\u05d2\u05dc" + }, + "pick_implementation": { + "title": "\u05d1\u05d7\u05e8 \u05e9\u05d9\u05d8\u05ea \u05d0\u05d9\u05de\u05d5\u05ea" + }, + "reauth_confirm": { + "description": "\u05e9\u05d9\u05dc\u05d5\u05d1 Nest \u05e6\u05e8\u05d9\u05da \u05dc\u05d0\u05de\u05ea \u05de\u05d7\u05d3\u05e9 \u05d0\u05ea \u05d4\u05d7\u05e9\u05d1\u05d5\u05df \u05e9\u05dc\u05da", + "title": "\u05d0\u05d9\u05de\u05d5\u05ea \u05de\u05d7\u05d3\u05e9 \u05e9\u05dc \u05e9\u05d9\u05dc\u05d5\u05d1" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/google/translations/hu.json b/homeassistant/components/google/translations/hu.json new file mode 100644 index 00000000000..2c552eca30e --- /dev/null +++ b/homeassistant/components/google/translations/hu.json @@ -0,0 +1,31 @@ +{ + "config": { + "abort": { + "already_configured": "A fi\u00f3k m\u00e1r konfigur\u00e1lva van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", + "code_expired": "A hiteles\u00edt\u00e9si k\u00f3d lej\u00e1rt vagy a hiteles\u00edt\u0151 adatok be\u00e1ll\u00edt\u00e1sa \u00e9rv\u00e9nytelen, k\u00e9rj\u00fck, pr\u00f3b\u00e1lja meg \u00fajra.", + "invalid_access_token": "\u00c9rv\u00e9nytelen hozz\u00e1f\u00e9r\u00e9si token", + "missing_configuration": "A komponens nincs konfigur\u00e1lva. K\u00e9rem, k\u00f6vesse a dokument\u00e1ci\u00f3t.", + "oauth_error": "\u00c9rv\u00e9nytelen token adatok \u00e9rkeztek.", + "reauth_successful": "Az \u00fajrahiteles\u00edt\u00e9s sikeres volt." + }, + "create_entry": { + "default": "Sikeres hiteles\u00edt\u00e9s" + }, + "progress": { + "exchange": "Google-fi\u00f3kja \u00f6sszekapcsol\u00e1s\u00e1hoz keresse fel a [{url}]({url}) c\u00edmet, \u00e9s \u00edrja be a k\u00f3dot: \n\n{user_code}" + }, + "step": { + "auth": { + "title": "\u00d6sszekapcsol\u00e1s Google-al" + }, + "pick_implementation": { + "title": "V\u00e1lasszon egy hiteles\u00edt\u00e9si m\u00f3dszert" + }, + "reauth_confirm": { + "description": "A Google Napt\u00e1r integr\u00e1ci\u00f3nak \u00fajra kell hiteles\u00edtenie fi\u00f3kj\u00e1t", + "title": "Integr\u00e1ci\u00f3 \u00fajrahiteles\u00edt\u00e9se" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/google/translations/id.json b/homeassistant/components/google/translations/id.json new file mode 100644 index 00000000000..371fa7551b5 --- /dev/null +++ b/homeassistant/components/google/translations/id.json @@ -0,0 +1,31 @@ +{ + "config": { + "abort": { + "already_configured": "Akun sudah dikonfigurasi", + "already_in_progress": "Alur konfigurasi sedang berlangsung", + "code_expired": "Kode autentikasi kedaluwarsa atau penyiapan kredensial tidak valid, silakan coba lagi.", + "invalid_access_token": "Token akses tidak valid", + "missing_configuration": "Komponen tidak dikonfigurasi. Ikuti petunjuk dalam dokumentasi.", + "oauth_error": "Menerima respons token yang tidak valid.", + "reauth_successful": "Autentikasi ulang berhasil" + }, + "create_entry": { + "default": "Berhasil diautentikasi" + }, + "progress": { + "exchange": "Untuk menautkan akun Google Anda, kunjungi [{url}]({url}) dan masukkan kode:\n\n{user_code}" + }, + "step": { + "auth": { + "title": "Tautkan Akun Google" + }, + "pick_implementation": { + "title": "Pilih Metode Autentikasi" + }, + "reauth_confirm": { + "description": "Integrasi Google Kalender perlu mengautentikasi ulang akun Anda", + "title": "Autentikasi Ulang Integrasi" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/google/translations/it.json b/homeassistant/components/google/translations/it.json new file mode 100644 index 00000000000..4530a690ed6 --- /dev/null +++ b/homeassistant/components/google/translations/it.json @@ -0,0 +1,31 @@ +{ + "config": { + "abort": { + "already_configured": "L'account \u00e8 gi\u00e0 configurato", + "already_in_progress": "Il flusso di configurazione \u00e8 gi\u00e0 in corso", + "code_expired": "Il codice di autenticazione \u00e8 scaduto o la configurazione delle credenziali non \u00e8 valida, riprova.", + "invalid_access_token": "Token di accesso non valido", + "missing_configuration": "Il componente non \u00e8 configurato. Segui la documentazione.", + "oauth_error": "Ricevuti dati token non validi.", + "reauth_successful": "La nuova autenticazione \u00e8 stata eseguita correttamente" + }, + "create_entry": { + "default": "Autenticazione riuscita" + }, + "progress": { + "exchange": "Per collegare il tuo account Google, visita [{url}]({url}) e inserisci il codice: \n\n {user_code}" + }, + "step": { + "auth": { + "title": "Collega l'account Google" + }, + "pick_implementation": { + "title": "Scegli il metodo di autenticazione" + }, + "reauth_confirm": { + "description": "L'integrazione di Google Calendar deve riautenticare il tuo account", + "title": "Autentica nuovamente l'integrazione" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/google/translations/ja.json b/homeassistant/components/google/translations/ja.json new file mode 100644 index 00000000000..7eab5abc6f6 --- /dev/null +++ b/homeassistant/components/google/translations/ja.json @@ -0,0 +1,31 @@ +{ + "config": { + "abort": { + "already_configured": "\u30a2\u30ab\u30a6\u30f3\u30c8\u306f\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059", + "already_in_progress": "\u69cb\u6210\u30d5\u30ed\u30fc\u306f\u3059\u3067\u306b\u9032\u884c\u4e2d\u3067\u3059", + "code_expired": "\u8a8d\u8a3c\u30b3\u30fc\u30c9\u306e\u6709\u52b9\u671f\u9650\u304c\u5207\u308c\u3066\u3044\u308b\u304b\u3001\u8cc7\u683c\u60c5\u5831\u306e\u8a2d\u5b9a\u304c\u7121\u52b9\u3067\u3059\u3002\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002", + "invalid_access_token": "\u7121\u52b9\u306a\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3", + "missing_configuration": "\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002", + "oauth_error": "\u7121\u52b9\u306a\u30c8\u30fc\u30af\u30f3\u30c7\u30fc\u30bf\u3092\u53d7\u4fe1\u3057\u307e\u3057\u305f\u3002", + "reauth_successful": "\u518d\u8a8d\u8a3c\u306b\u6210\u529f\u3057\u307e\u3057\u305f" + }, + "create_entry": { + "default": "\u6b63\u5e38\u306b\u8a8d\u8a3c\u3055\u308c\u307e\u3057\u305f" + }, + "progress": { + "exchange": "Google\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u30ea\u30f3\u30af\u3059\u308b\u306b\u306f\u3001 [{url}]({url}) \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u30b3\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044: \n\n{user_code}" + }, + "step": { + "auth": { + "title": "Google\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u30ea\u30f3\u30af\u3059\u308b" + }, + "pick_implementation": { + "title": "\u8a8d\u8a3c\u65b9\u6cd5\u306e\u9078\u629e" + }, + "reauth_confirm": { + "description": "Nest\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u518d\u8a8d\u8a3c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002", + "title": "\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u518d\u8a8d\u8a3c" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/google/translations/nl.json b/homeassistant/components/google/translations/nl.json new file mode 100644 index 00000000000..e732fd7cd19 --- /dev/null +++ b/homeassistant/components/google/translations/nl.json @@ -0,0 +1,31 @@ +{ + "config": { + "abort": { + "already_configured": "Account is al geconfigureerd", + "already_in_progress": "Configuratie flow is al in bewerking", + "code_expired": "De authenticatiecode is verlopen of de instelling van de inloggegevens is ongeldig, probeer het opnieuw.", + "invalid_access_token": "Ongeldige toegang token", + "missing_configuration": "Het component is niet geconfigureerd. Volg a.u.b. de documentatie", + "oauth_error": "Ongeldige token data ontvangen", + "reauth_successful": "Herauthentiecatie was succesvol" + }, + "create_entry": { + "default": "Authenticatie succesvol" + }, + "progress": { + "exchange": "Om uw Google-account te koppelen, gaat u naar de [ {url} ]( {url} ) en voert u de code in: \n\n {user_code}" + }, + "step": { + "auth": { + "title": "Link Google Account" + }, + "pick_implementation": { + "title": "Kies een authenticatie methode" + }, + "reauth_confirm": { + "description": "De Google Agenda-integratie moet uw account opnieuw verifi\u00ebren", + "title": "Herauthentiseer integratie" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/google/translations/no.json b/homeassistant/components/google/translations/no.json new file mode 100644 index 00000000000..4065583192c --- /dev/null +++ b/homeassistant/components/google/translations/no.json @@ -0,0 +1,31 @@ +{ + "config": { + "abort": { + "already_configured": "Kontoen er allerede konfigurert", + "already_in_progress": "Konfigurasjonsflyten p\u00e5g\u00e5r allerede", + "code_expired": "Autentiseringskoden er utl\u00f8pt eller p\u00e5loggingsoppsettet er ugyldig. Pr\u00f8v p\u00e5 nytt.", + "invalid_access_token": "Ugyldig tilgangstoken", + "missing_configuration": "Komponenten er ikke konfigurert, vennligst f\u00f8lg dokumentasjonen", + "oauth_error": "Mottatt ugyldige token data.", + "reauth_successful": "Godkjenning p\u00e5 nytt var vellykket" + }, + "create_entry": { + "default": "Vellykket godkjenning" + }, + "progress": { + "exchange": "Hvis du vil knytte sammen Google-kontoen din, g\u00e5r du til [{url}]({url}) og skriver inn kode:\n\n{user_code}" + }, + "step": { + "auth": { + "title": "Koble til Google-kontoen" + }, + "pick_implementation": { + "title": "Velg godkjenningsmetode" + }, + "reauth_confirm": { + "description": "Google Kalender-integrasjonen m\u00e5 autentisere kontoen din p\u00e5 nytt", + "title": "Godkjenne integrering p\u00e5 nytt" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/google/translations/pl.json b/homeassistant/components/google/translations/pl.json new file mode 100644 index 00000000000..b4f45c0abe4 --- /dev/null +++ b/homeassistant/components/google/translations/pl.json @@ -0,0 +1,31 @@ +{ + "config": { + "abort": { + "already_configured": "Konto jest ju\u017c skonfigurowane", + "already_in_progress": "Konfiguracja jest ju\u017c w toku", + "code_expired": "Kod uwierzytelniaj\u0105cy wygas\u0142 lub konfiguracja po\u015bwiadcze\u0144 jest nieprawid\u0142owa, spr\u00f3buj ponownie.", + "invalid_access_token": "Niepoprawny token dost\u0119pu", + "missing_configuration": "Komponent nie jest skonfigurowany. Post\u0119puj zgodnie z dokumentacj\u0105.", + "oauth_error": "Otrzymano nieprawid\u0142owe dane tokena.", + "reauth_successful": "Ponowne uwierzytelnienie powiod\u0142o si\u0119" + }, + "create_entry": { + "default": "Pomy\u015blnie uwierzytelniono" + }, + "progress": { + "exchange": "Aby po\u0142\u0105czy\u0107 swoje konto Google, odwied\u017a [{url}]({url}) i wpisz kod: \n\n{user_code}" + }, + "step": { + "auth": { + "title": "Po\u0142\u0105czenie z kontem Google" + }, + "pick_implementation": { + "title": "Wybierz metod\u0119 uwierzytelniania" + }, + "reauth_confirm": { + "description": "Integracja Kalendarz Google wymaga ponownego uwierzytelnienia Twojego konta", + "title": "Ponownie uwierzytelnij integracj\u0119" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/google/translations/pt-BR.json b/homeassistant/components/google/translations/pt-BR.json new file mode 100644 index 00000000000..8ab124f1b5c --- /dev/null +++ b/homeassistant/components/google/translations/pt-BR.json @@ -0,0 +1,31 @@ +{ + "config": { + "abort": { + "already_configured": "A conta j\u00e1 foi configurada", + "already_in_progress": "O fluxo de configura\u00e7\u00e3o j\u00e1 est\u00e1 em andamento", + "code_expired": "O c\u00f3digo de autentica\u00e7\u00e3o expirou ou a configura\u00e7\u00e3o da credencial \u00e9 inv\u00e1lida. Tente novamente.", + "invalid_access_token": "Token de acesso inv\u00e1lido", + "missing_configuration": "O componente n\u00e3o est\u00e1 configurado. Por favor, siga a documenta\u00e7\u00e3o.", + "oauth_error": "Dados de token recebidos inv\u00e1lidos.", + "reauth_successful": "A reautentica\u00e7\u00e3o foi bem-sucedida" + }, + "create_entry": { + "default": "Autenticado com sucesso" + }, + "progress": { + "exchange": "Para vincular sua conta do Google, visite o [{url}]({url}) e insira o c\u00f3digo: \n\n {user_code}" + }, + "step": { + "auth": { + "title": "Vincular Conta do Google" + }, + "pick_implementation": { + "title": "Escolha o m\u00e9todo de autentica\u00e7\u00e3o" + }, + "reauth_confirm": { + "description": "A integra\u00e7\u00e3o do Google Agenda precisa autenticar novamente sua conta", + "title": "Reautenticar Integra\u00e7\u00e3o" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/google/translations/ru.json b/homeassistant/components/google/translations/ru.json new file mode 100644 index 00000000000..a7db4b2f48b --- /dev/null +++ b/homeassistant/components/google/translations/ru.json @@ -0,0 +1,31 @@ +{ + "config": { + "abort": { + "already_configured": "\u042d\u0442\u0430 \u0443\u0447\u0451\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 Home Assistant.", + "already_in_progress": "\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f.", + "code_expired": "\u0421\u0440\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043a\u043e\u0434\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u0441\u0442\u0435\u043a \u0438\u043b\u0438 \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u043d\u0435\u0432\u0435\u0440\u043d\u043e, \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443.", + "invalid_access_token": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430.", + "missing_configuration": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439.", + "oauth_error": "\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u043e\u043a\u0435\u043d\u0430.", + "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e." + }, + "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." + }, + "progress": { + "exchange": "\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u0443\u0447\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c Google, \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 [{url}]({url}) \u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434: \n\n{user_code}" + }, + "step": { + "auth": { + "title": "\u0423\u0447\u0435\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c Google" + }, + "pick_implementation": { + "title": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u043f\u043e\u0441\u043e\u0431 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438" + }, + "reauth_confirm": { + "description": "\u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 Google.", + "title": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/google/translations/tr.json b/homeassistant/components/google/translations/tr.json new file mode 100644 index 00000000000..9d5fc8d2416 --- /dev/null +++ b/homeassistant/components/google/translations/tr.json @@ -0,0 +1,31 @@ +{ + "config": { + "abort": { + "already_configured": "Hesap zaten yap\u0131land\u0131r\u0131lm\u0131\u015f", + "already_in_progress": "Yap\u0131land\u0131rma ak\u0131\u015f\u0131 zaten devam ediyor", + "code_expired": "Kimlik do\u011frulama kodunun s\u00fcresi doldu veya kimlik bilgisi kurulumu ge\u00e7ersiz, l\u00fctfen tekrar deneyin.", + "invalid_access_token": "Ge\u00e7ersiz eri\u015fim anahtar\u0131", + "missing_configuration": "Bile\u015fen yap\u0131land\u0131r\u0131lmam\u0131\u015f. L\u00fctfen belgeleri takip edin.", + "oauth_error": "Ge\u00e7ersiz anahtar verileri al\u0131nd\u0131.", + "reauth_successful": "Yeniden kimlik do\u011frulama ba\u015far\u0131l\u0131 oldu" + }, + "create_entry": { + "default": "Ba\u015far\u0131yla do\u011fruland\u0131" + }, + "progress": { + "exchange": "Google hesab\u0131n\u0131z\u0131 ba\u011flamak i\u00e7in [ {url} ]( {url} ) adresini ziyaret edin ve kodu girin: \n\n {user_code}" + }, + "step": { + "auth": { + "title": "Google Hesab\u0131n\u0131 Ba\u011fla" + }, + "pick_implementation": { + "title": "Kimlik Do\u011frulama Y\u00f6ntemini Se\u00e7" + }, + "reauth_confirm": { + "description": "Google Takvim entegrasyonunun hesab\u0131n\u0131z\u0131 yeniden do\u011frulamas\u0131 gerekiyor", + "title": "Entegrasyonu Yeniden Do\u011frula" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/google/translations/zh-Hant.json b/homeassistant/components/google/translations/zh-Hant.json new file mode 100644 index 00000000000..70e7d81c01e --- /dev/null +++ b/homeassistant/components/google/translations/zh-Hant.json @@ -0,0 +1,31 @@ +{ + "config": { + "abort": { + "already_configured": "\u5e33\u865f\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", + "already_in_progress": "\u8a2d\u5b9a\u5df2\u7d93\u9032\u884c\u4e2d", + "code_expired": "\u8a8d\u8b49\u78bc\u5df2\u904e\u671f\u6216\u6191\u8b49\u8a2d\u5b9a\u7121\u6548\uff0c\u8acb\u518d\u8a66\u4e00\u6b21\u3002", + "invalid_access_token": "\u5b58\u53d6\u6b0a\u6756\u7121\u6548", + "missing_configuration": "\u5143\u4ef6\u5c1a\u672a\u8a2d\u7f6e\uff0c\u8acb\u53c3\u95b1\u6587\u4ef6\u8aaa\u660e\u3002", + "oauth_error": "\u6536\u5230\u7121\u6548\u7684\u6b0a\u6756\u8cc7\u6599\u3002", + "reauth_successful": "\u91cd\u65b0\u8a8d\u8b49\u6210\u529f" + }, + "create_entry": { + "default": "\u5df2\u6210\u529f\u8a8d\u8b49" + }, + "progress": { + "exchange": "\u6b32\u9023\u7d50 Google \u5e33\u865f\u3001\u8acb\u700f\u89bd [{url}]({url}) \u4e26\u8f38\u5165\u4ee3\u78bc\uff1a\n{user_code}" + }, + "step": { + "auth": { + "title": "\u9023\u7d50 Google \u5e33\u865f" + }, + "pick_implementation": { + "title": "\u9078\u64c7\u9a57\u8b49\u6a21\u5f0f" + }, + "reauth_confirm": { + "description": "Google Calendar \u6574\u5408\u9700\u8981\u91cd\u65b0\u8a8d\u8b49\u60a8\u7684\u5e33\u865f", + "title": "\u91cd\u65b0\u8a8d\u8b49\u6574\u5408" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/google_travel_time/translations/hu.json b/homeassistant/components/google_travel_time/translations/hu.json index 85a15a98e58..03cfdc18b59 100644 --- a/homeassistant/components/google_travel_time/translations/hu.json +++ b/homeassistant/components/google_travel_time/translations/hu.json @@ -11,7 +11,7 @@ "data": { "api_key": "Api kucs", "destination": "C\u00e9l", - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "origin": "Eredet" }, "description": "Az eredet \u00e9s a c\u00e9l megad\u00e1sakor megadhat egy vagy t\u00f6bb helyet a pipa karakterrel elv\u00e1lasztva, c\u00edm, sz\u00e9less\u00e9gi / hossz\u00fas\u00e1gi koordin\u00e1t\u00e1k vagy Google helyazonos\u00edt\u00f3 form\u00e1j\u00e1ban. Amikor a helyet megadja egy Google helyazonos\u00edt\u00f3val, akkor az azonos\u00edt\u00f3t el\u0151taggal kell ell\u00e1tni a `hely_azonos\u00edt\u00f3:` sz\u00f3val." diff --git a/homeassistant/components/group/translations/bg.json b/homeassistant/components/group/translations/bg.json index d28a170bcd0..584d48e3f28 100644 --- a/homeassistant/components/group/translations/bg.json +++ b/homeassistant/components/group/translations/bg.json @@ -1,9 +1,116 @@ { "config": { "step": { + "binary_sensor": { + "data": { + "entities": "\u0427\u043b\u0435\u043d\u043e\u0432\u0435", + "name": "\u0418\u043c\u0435" + }, + "title": "\u041d\u043e\u0432\u0430 \u0433\u0440\u0443\u043f\u0430" + }, + "cover": { + "data": { + "title": "\u041d\u043e\u0432\u0430 \u0433\u0440\u0443\u043f\u0430" + } + }, + "fan": { + "data": { + "title": "\u041d\u043e\u0432\u0430 \u0433\u0440\u0443\u043f\u0430" + } + }, + "light": { + "data": { + "all": "\u0412\u0441\u0438\u0447\u043a\u0438 \u043e\u0431\u0435\u043a\u0442\u0438", + "title": "\u041d\u043e\u0432\u0430 \u0433\u0440\u0443\u043f\u0430" + } + }, + "lock": { + "data": { + "entities": "\u0427\u043b\u0435\u043d\u043e\u0432\u0435", + "name": "\u0418\u043c\u0435" + } + }, "media_player": { "data": { - "name": "\u0418\u043c\u0435 \u043d\u0430 \u0433\u0440\u0443\u043f\u0430" + "name": "\u0418\u043c\u0435 \u043d\u0430 \u0433\u0440\u0443\u043f\u0430", + "title": "\u041d\u043e\u0432\u0430 \u0433\u0440\u0443\u043f\u0430" + } + }, + "switch": { + "data": { + "entities": "\u0427\u043b\u0435\u043d\u043e\u0432\u0435", + "name": "\u0418\u043c\u0435" + }, + "title": "\u041d\u043e\u0432\u0430 \u0433\u0440\u0443\u043f\u0430" + }, + "user": { + "title": "\u041d\u043e\u0432\u0430 \u0433\u0440\u0443\u043f\u0430" + } + } + }, + "options": { + "step": { + "binary_sensor": { + "data": { + "all": "\u0412\u0441\u0438\u0447\u043a\u0438 \u043e\u0431\u0435\u043a\u0442\u0438", + "entities": "\u0427\u043b\u0435\u043d\u043e\u0432\u0435" + } + }, + "binary_sensor_options": { + "data": { + "entities": "\u0427\u043b\u0435\u043d\u043e\u0432\u0435" + } + }, + "cover": { + "data": { + "entities": "\u0427\u043b\u0435\u043d\u043e\u0432\u0435" + } + }, + "cover_options": { + "data": { + "entities": "\u0427\u043b\u0435\u043d\u043e\u0432\u0435" + } + }, + "fan": { + "data": { + "entities": "\u0427\u043b\u0435\u043d\u043e\u0432\u0435" + } + }, + "fan_options": { + "data": { + "entities": "\u0427\u043b\u0435\u043d\u043e\u0432\u0435" + } + }, + "light": { + "data": { + "entities": "\u0427\u043b\u0435\u043d\u043e\u0432\u0435" + } + }, + "light_options": { + "data": { + "all": "\u0412\u0441\u0438\u0447\u043a\u0438 \u043e\u0431\u0435\u043a\u0442\u0438", + "entities": "\u0427\u043b\u0435\u043d\u043e\u0432\u0435" + } + }, + "lock": { + "data": { + "entities": "\u0427\u043b\u0435\u043d\u043e\u0432\u0435" + } + }, + "media_player": { + "data": { + "entities": "\u0427\u043b\u0435\u043d\u043e\u0432\u0435" + } + }, + "media_player_options": { + "data": { + "entities": "\u0427\u043b\u0435\u043d\u043e\u0432\u0435" + } + }, + "switch": { + "data": { + "all": "\u0412\u0441\u0438\u0447\u043a\u0438 \u043e\u0431\u0435\u043a\u0442\u0438", + "entities": "\u0427\u043b\u0435\u043d\u043e\u0432\u0435" } } } diff --git a/homeassistant/components/group/translations/ca.json b/homeassistant/components/group/translations/ca.json index b17d98b5084..bd824fc7428 100644 --- a/homeassistant/components/group/translations/ca.json +++ b/homeassistant/components/group/translations/ca.json @@ -5,18 +5,21 @@ "data": { "all": "Totes les entitats", "entities": "Membres", + "hide_members": "Amaga membres", "name": "Nom" }, "description": "Si \"totes les entitats\" est\u00e0 activat, l'estat del grup estar\u00e0 activat (ON) si tots els membres estan activats. Si \"totes les entitats\" est\u00e0 desactivat, l'estat del grup s'activar\u00e0 si hi ha activat qualsevol membre.", - "title": "Nou grup" + "title": "Afegeix grup" }, "cover": { "data": { "entities": "Membres", + "hide_members": "Amaga membres", "name": "Nom", - "title": "Nou grup" + "title": "Afegeix grup" }, - "description": "Selecciona les opcions del grup" + "description": "Selecciona les opcions del grup", + "title": "Afegeix grup" }, "cover_options": { "data": { @@ -27,10 +30,12 @@ "fan": { "data": { "entities": "Membres", + "hide_members": "Amaga membres", "name": "Nom", - "title": "Nou grup" + "title": "Afegeix grup" }, - "description": "Selecciona les opcions del grup" + "description": "Selecciona les opcions del grup", + "title": "Afegeix grup" }, "fan_options": { "data": { @@ -46,11 +51,14 @@ }, "light": { "data": { + "all": "Totes les entitats", "entities": "Membres", + "hide_members": "Amaga membres", "name": "Nom", - "title": "Nou grup" + "title": "Afegeix grup" }, - "description": "Selecciona les opcions del grup" + "description": "Si \"totes les entitats\" est\u00e0 activat, l'estat del grup estar\u00e0 activat (ON) si tots els membres estan activats. Si \"totes les entitats\" est\u00e0 desactivat, l'estat del grup s'activar\u00e0 si hi ha activat qualsevol membre.", + "title": "Afegeix grup" }, "light_options": { "data": { @@ -58,13 +66,23 @@ }, "description": "Selecciona les opcions del grup" }, + "lock": { + "data": { + "entities": "Membres", + "hide_members": "Amaga membres", + "name": "Nom" + }, + "title": "Afegeix grup" + }, "media_player": { "data": { "entities": "Membres", + "hide_members": "Amaga membres", "name": "Nom", - "title": "Nou grup" + "title": "Afegeix grup" }, - "description": "Selecciona les opcions del grup" + "description": "Selecciona les opcions del grup", + "title": "Afegeix grup" }, "media_player_options": { "data": { @@ -72,41 +90,108 @@ }, "description": "Selecciona les opcions del grup" }, + "switch": { + "data": { + "entities": "Membres", + "hide_members": "Amaga membres", + "name": "Nom" + }, + "title": "Afegeix grup" + }, "user": { "data": { "group_type": "Tipus de grup" }, - "title": "Nou grup" + "description": "Els grups et permeten crear una nova entitat que representa m\u00faltiples entitats del mateix tipus.", + "menu_options": { + "binary_sensor": "Grup de sensors binaris", + "cover": "Grup de cobertes", + "fan": "Grup de ventiladors", + "light": "Grup de llums", + "lock": "Grup de panys", + "media_player": "Grup de reproductors multim\u00e8dia", + "switch": "Grup de commutadors" + }, + "title": "Afegeix grup" } } }, "options": { "step": { + "binary_sensor": { + "data": { + "all": "Totes les entitats", + "entities": "Membres", + "hide_members": "Amaga membres" + }, + "description": "Si \"totes les entitats\" est\u00e0 activat, l'estat del grup estar\u00e0 activat (ON) si tots els membres estan activats. Si \"totes les entitats\" est\u00e0 desactivat, l'estat del grup s'activar\u00e0 si hi ha activat qualsevol membre." + }, "binary_sensor_options": { "data": { "all": "Totes les entitats", "entities": "Membres" } }, + "cover": { + "data": { + "entities": "Membres", + "hide_members": "Amaga membres" + } + }, "cover_options": { "data": { "entities": "Membres" } }, + "fan": { + "data": { + "entities": "Membres", + "hide_members": "Amaga membres" + } + }, "fan_options": { "data": { "entities": "Membres" } }, + "light": { + "data": { + "all": "Totes les entitats", + "entities": "Membres", + "hide_members": "Amaga membres" + }, + "description": "Si \"totes les entitats\" est\u00e0 activat, l'estat del grup estar\u00e0 activat (ON) si tots els membres estan activats. Si \"totes les entitats\" est\u00e0 desactivat, l'estat del grup s'activar\u00e0 si hi ha activat qualsevol membre." + }, "light_options": { "data": { + "all": "Totes les entitats", "entities": "Membres" } }, + "lock": { + "data": { + "entities": "Membres", + "hide_members": "Amaga membres" + } + }, + "media_player": { + "data": { + "entities": "Membres", + "hide_members": "Amaga membres" + } + }, "media_player_options": { "data": { "entities": "Membres" } + }, + "switch": { + "data": { + "all": "Totes les entitats", + "entities": "Membres", + "hide_members": "Amaga membres" + }, + "description": "Si \"totes les entitats\" est\u00e0 activat, l'estat del grup estar\u00e0 activat (ON) si tots els membres estan activats. Si \"totes les entitats\" est\u00e0 desactivat, l'estat del grup s'activar\u00e0 si hi ha activat qualsevol membre." } } }, diff --git a/homeassistant/components/group/translations/cs.json b/homeassistant/components/group/translations/cs.json index d35e48058e7..232dbe9e629 100644 --- a/homeassistant/components/group/translations/cs.json +++ b/homeassistant/components/group/translations/cs.json @@ -1,4 +1,200 @@ { + "config": { + "step": { + "binary_sensor": { + "data": { + "all": "V\u0161echny entity", + "entities": "\u010clenov\u00e9", + "hide_members": "Skr\u00fdt \u010dleny", + "name": "Jm\u00e9no" + }, + "description": "Pokud je povoleno \"v\u0161echny entity\", je stav skupiny zapnut\u00fd pouze tehdy, pokud jsou zapnuti v\u0161ichni \u010dlenov\u00e9.\nPokud je mo\u017enost \"v\u0161echny entity\" zak\u00e1z\u00e1na, je stav skupiny zapnut\u00fd, pokud je zapnut\u00fd kter\u00fdkoli \u010dlen.", + "title": "Nov\u00e1 skupina" + }, + "cover": { + "data": { + "entities": "\u010clenov\u00e9", + "hide_members": "Skr\u00fdt \u010dleny", + "name": "Jm\u00e9no", + "title": "Nov\u00e1 skupina" + }, + "description": "Vyberte mo\u017enosti skupiny", + "title": "Nov\u00e1 skupina" + }, + "cover_options": { + "data": { + "entities": "\u010clenov\u00e9 skupiny" + }, + "description": "Vyberte mo\u017enosti skupiny" + }, + "fan": { + "data": { + "entities": "\u010clenov\u00e9", + "hide_members": "Skr\u00fdt \u010dleny", + "name": "Jm\u00e9no", + "title": "Nov\u00e1 skupina" + }, + "description": "Vyberte mo\u017enosti skupiny", + "title": "Nov\u00e1 skupina" + }, + "fan_options": { + "data": { + "entities": "\u010clenov\u00e9 skupiny" + }, + "description": "Vyberte mo\u017enosti skupiny" + }, + "init": { + "data": { + "group_type": "Typ skupiny" + }, + "description": "Vyberte typ skupiny" + }, + "light": { + "data": { + "all": "V\u0161echny entity", + "entities": "\u010clenov\u00e9", + "hide_members": "Skr\u00fdt \u010dleny", + "name": "Jm\u00e9no", + "title": "Nov\u00e1 skupina" + }, + "description": "Pokud je povoleno \"v\u0161echny entity\", je stav skupiny zapnut\u00fd pouze tehdy, pokud jsou zapnuti v\u0161ichni \u010dlenov\u00e9.\nPokud je mo\u017enost \"v\u0161echny entity\" zak\u00e1z\u00e1na, je stav skupiny zapnut\u00fd, pokud je zapnut\u00fd kter\u00fdkoli \u010dlen.", + "title": "Nov\u00e1 skupina" + }, + "light_options": { + "data": { + "entities": "\u010clenov\u00e9 skupiny" + }, + "description": "Vyberte mo\u017enosti skupiny" + }, + "lock": { + "data": { + "entities": "\u010clenov\u00e9", + "hide_members": "Skr\u00fdt \u010dleny", + "name": "Jm\u00e9no" + }, + "title": "Nov\u00e1 skupina" + }, + "media_player": { + "data": { + "entities": "\u010clenov\u00e9", + "hide_members": "Skr\u00fdt \u010dleny", + "name": "Jm\u00e9no", + "title": "Nov\u00e1 skupina" + }, + "description": "Vyberte mo\u017enosti skupiny", + "title": "Nov\u00e1 skupina" + }, + "media_player_options": { + "data": { + "entities": "\u010clenov\u00e9 skupiny" + }, + "description": "Vyberte mo\u017enosti skupiny" + }, + "switch": { + "data": { + "entities": "\u010clenov\u00e9", + "hide_members": "Skr\u00fdt \u010dleny", + "name": "Jm\u00e9no" + }, + "title": "Nov\u00e1 skupina" + }, + "user": { + "data": { + "group_type": "Typ skupiny" + }, + "description": "Vyberte typ skupiny", + "menu_options": { + "binary_sensor": "Skupina bin\u00e1rn\u00edch senzor\u016f", + "cover": "Skupina rolet", + "fan": "Skupina ventil\u00e1tor\u016f", + "light": "Skupina sv\u011btel", + "lock": "Skupina z\u00e1mk\u016f", + "media_player": "Skupina p\u0159ehr\u00e1va\u010d\u016f m\u00e9di\u00ed", + "switch": "Skupina vyp\u00edna\u010d\u016f" + }, + "title": "Nov\u00e1 skupina" + } + } + }, + "options": { + "step": { + "binary_sensor": { + "data": { + "all": "V\u0161echny entity", + "entities": "\u010clenov\u00e9", + "hide_members": "Skr\u00fdt \u010dleny" + }, + "description": "Pokud je povoleno \"v\u0161echny entity\", je stav skupiny zapnut\u00fd pouze tehdy, pokud jsou zapnuti v\u0161ichni \u010dlenov\u00e9.\nPokud je mo\u017enost \"v\u0161echny entity\" zak\u00e1z\u00e1na, je stav skupiny zapnut\u00fd, pokud je zapnut\u00fd kter\u00fdkoli \u010dlen." + }, + "binary_sensor_options": { + "data": { + "all": "V\u0161echny entity", + "entities": "\u010clenov\u00e9" + } + }, + "cover": { + "data": { + "entities": "\u010clenov\u00e9", + "hide_members": "Skr\u00fdt \u010dleny" + } + }, + "cover_options": { + "data": { + "entities": "\u010clenov\u00e9" + } + }, + "fan": { + "data": { + "entities": "\u010clenov\u00e9", + "hide_members": "Skr\u00fdt \u010dleny" + } + }, + "fan_options": { + "data": { + "entities": "\u010clenov\u00e9" + } + }, + "light": { + "data": { + "all": "V\u0161echny entity", + "entities": "\u010clenov\u00e9", + "hide_members": "Skr\u00fdt \u010dleny" + }, + "description": "Pokud je povoleno \"v\u0161echny entity\", je stav skupiny zapnut\u00fd pouze tehdy, pokud jsou zapnuti v\u0161ichni \u010dlenov\u00e9.\nPokud je mo\u017enost \"v\u0161echny entity\" zak\u00e1z\u00e1na, je stav skupiny zapnut\u00fd, pokud je zapnut\u00fd kter\u00fdkoli \u010dlen." + }, + "light_options": { + "data": { + "all": "V\u0161echny entity", + "entities": "\u010clenov\u00e9" + } + }, + "lock": { + "data": { + "entities": "\u010clenov\u00e9", + "hide_members": "Skr\u00fdt \u010dleny" + } + }, + "media_player": { + "data": { + "entities": "\u010clenov\u00e9", + "hide_members": "Skr\u00fdt \u010dleny" + } + }, + "media_player_options": { + "data": { + "entities": "\u010clenov\u00e9" + } + }, + "switch": { + "data": { + "all": "V\u0161echny entity", + "entities": "\u010clenov\u00e9", + "hide_members": "Skr\u00fdt \u010dleny" + }, + "description": "Pokud je povoleno \"v\u0161echny entity\", je stav skupiny zapnut\u00fd pouze tehdy, pokud jsou zapnuti v\u0161ichni \u010dlenov\u00e9.\nPokud je mo\u017enost \"v\u0161echny entity\" zak\u00e1z\u00e1na, je stav skupiny zapnut\u00fd, pokud je zapnut\u00fd kter\u00fdkoli \u010dlen." + } + } + }, "state": { "_": { "closed": "Zav\u0159eno", diff --git a/homeassistant/components/group/translations/de.json b/homeassistant/components/group/translations/de.json index c06dd2a4a8f..aeaedd3a7cc 100644 --- a/homeassistant/components/group/translations/de.json +++ b/homeassistant/components/group/translations/de.json @@ -5,18 +5,21 @@ "data": { "all": "Alle Entit\u00e4ten", "entities": "Mitglieder", + "hide_members": "Mitglieder ausblenden", "name": "Name" }, "description": "Wenn \"alle Entit\u00e4ten\" aktiviert ist, ist der Status der Gruppe nur dann eingeschaltet, wenn alle Mitglieder eingeschaltet sind. Wenn \"alle Entit\u00e4ten\" deaktiviert ist, ist der Status der Gruppe eingeschaltet, wenn irgendein Mitglied eingeschaltet ist.", - "title": "Neue Gruppe" + "title": "Gruppe hinzuf\u00fcgen" }, "cover": { "data": { "entities": "Mitglieder", + "hide_members": "Mitglieder ausblenden", "name": "Name", - "title": "Neue Gruppe" + "title": "Gruppe hinzuf\u00fcgen" }, - "description": "Gruppenoptionen ausw\u00e4hlen" + "description": "Gruppenoptionen ausw\u00e4hlen", + "title": "Gruppe hinzuf\u00fcgen" }, "cover_options": { "data": { @@ -27,10 +30,12 @@ "fan": { "data": { "entities": "Mitglieder", + "hide_members": "Mitglieder ausblenden", "name": "Name", - "title": "Neue Gruppe" + "title": "Gruppe hinzuf\u00fcgen" }, - "description": "Gruppenoptionen ausw\u00e4hlen" + "description": "Gruppenoptionen ausw\u00e4hlen", + "title": "Gruppe hinzuf\u00fcgen" }, "fan_options": { "data": { @@ -46,11 +51,14 @@ }, "light": { "data": { + "all": "Alle Entit\u00e4ten", "entities": "Mitglieder", + "hide_members": "Mitglieder ausblenden", "name": "Name", - "title": "Neue Gruppe" + "title": "Gruppe hinzuf\u00fcgen" }, - "description": "Gruppenoptionen ausw\u00e4hlen" + "description": "Wenn \"alle Entit\u00e4ten\" aktiviert ist, ist der Status der Gruppe nur dann eingeschaltet, wenn alle Mitglieder eingeschaltet sind. Wenn \"alle Entit\u00e4ten\" deaktiviert ist, ist der Status der Gruppe eingeschaltet, wenn irgendein Mitglied eingeschaltet ist.", + "title": "Gruppe hinzuf\u00fcgen" }, "light_options": { "data": { @@ -58,13 +66,23 @@ }, "description": "Gruppenoptionen ausw\u00e4hlen" }, + "lock": { + "data": { + "entities": "Mitglieder", + "hide_members": "Mitglieder ausblenden", + "name": "Name" + }, + "title": "Gruppe hinzuf\u00fcgen" + }, "media_player": { "data": { "entities": "Mitglieder", + "hide_members": "Mitglieder ausblenden", "name": "Name", - "title": "Neue Gruppe" + "title": "Gruppe hinzuf\u00fcgen" }, - "description": "Gruppenoptionen ausw\u00e4hlen" + "description": "Gruppenoptionen ausw\u00e4hlen", + "title": "Gruppe hinzuf\u00fcgen" }, "media_player_options": { "data": { @@ -72,41 +90,108 @@ }, "description": "Gruppenoptionen ausw\u00e4hlen" }, + "switch": { + "data": { + "entities": "Mitglieder", + "hide_members": "Mitglieder ausblenden", + "name": "Name" + }, + "title": "Gruppe hinzuf\u00fcgen" + }, "user": { "data": { "group_type": "Gruppentyp" }, - "title": "Neue Gruppe" + "description": "Mit Gruppen kannst du eine neue Entit\u00e4t erstellen, die mehrere Entit\u00e4ten desselben Typs darstellt.", + "menu_options": { + "binary_sensor": "Bin\u00e4rer Sensor-Gruppe", + "cover": "Abdeckung-Gruppe", + "fan": "L\u00fcfter-Gruppe", + "light": "Licht-Gruppe", + "lock": "Gruppe sperren", + "media_player": "Media-Player-Gruppe", + "switch": "Gruppe wechseln" + }, + "title": "Gruppe hinzuf\u00fcgen" } } }, "options": { "step": { + "binary_sensor": { + "data": { + "all": "Alle Entit\u00e4ten", + "entities": "Mitglieder", + "hide_members": "Mitglieder ausblenden" + }, + "description": "Wenn \"alle Entit\u00e4ten\" aktiviert ist, ist der Status der Gruppe nur dann eingeschaltet, wenn alle Mitglieder eingeschaltet sind. Wenn \"alle Entit\u00e4ten\" deaktiviert ist, ist der Status der Gruppe eingeschaltet, wenn irgendein Mitglied eingeschaltet ist." + }, "binary_sensor_options": { "data": { "all": "Alle Entit\u00e4ten", "entities": "Mitglieder" } }, + "cover": { + "data": { + "entities": "Mitglieder", + "hide_members": "Mitglieder ausblenden" + } + }, "cover_options": { "data": { "entities": "Mitglieder" } }, + "fan": { + "data": { + "entities": "Mitglieder", + "hide_members": "Mitglieder ausblenden" + } + }, "fan_options": { "data": { "entities": "Mitglieder" } }, + "light": { + "data": { + "all": "Alle Entit\u00e4ten", + "entities": "Mitglieder", + "hide_members": "Mitglieder ausblenden" + }, + "description": "Wenn \"alle Entit\u00e4ten\" aktiviert ist, ist der Status der Gruppe nur dann eingeschaltet, wenn alle Mitglieder eingeschaltet sind. Wenn \"alle Entit\u00e4ten\" deaktiviert ist, ist der Status der Gruppe eingeschaltet, wenn irgendein Mitglied eingeschaltet ist." + }, "light_options": { "data": { + "all": "Alle Entit\u00e4ten", "entities": "Mitglieder" } }, + "lock": { + "data": { + "entities": "Mitglieder", + "hide_members": "Mitglieder ausblenden" + } + }, + "media_player": { + "data": { + "entities": "Mitglieder", + "hide_members": "Mitglieder ausblenden" + } + }, "media_player_options": { "data": { "entities": "Mitglieder" } + }, + "switch": { + "data": { + "all": "Alle Entit\u00e4ten", + "entities": "Mitglieder", + "hide_members": "Mitglieder ausblenden" + }, + "description": "Wenn \"alle Entit\u00e4ten\" aktiviert ist, ist der Status der Gruppe nur dann eingeschaltet, wenn alle Mitglieder eingeschaltet sind. Wenn \"alle Entit\u00e4ten\" deaktiviert ist, ist der Status der Gruppe eingeschaltet, wenn irgendein Mitglied eingeschaltet ist." } } }, diff --git a/homeassistant/components/group/translations/el.json b/homeassistant/components/group/translations/el.json index bebfb8f1cb8..edd67034de8 100644 --- a/homeassistant/components/group/translations/el.json +++ b/homeassistant/components/group/translations/el.json @@ -5,6 +5,7 @@ "data": { "all": "\u038c\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2", "entities": "\u039c\u03ad\u03bb\u03b7", + "hide_members": "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03bc\u03b5\u03bb\u03ce\u03bd", "name": "\u038c\u03bd\u03bf\u03bc\u03b1" }, "description": "\u0395\u03ac\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7 \u03b7 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \"\u03cc\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2\", \u03b7 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bc\u03cc\u03bd\u03bf \u03b5\u03ac\u03bd \u03cc\u03bb\u03b1 \u03c4\u03b1 \u03bc\u03ad\u03bb\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b1. \u0395\u03ac\u03bd \u03b7 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \"\u03cc\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2\" \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7, \u03b7 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7 \u03b5\u03ac\u03bd \u03bf\u03c0\u03bf\u03b9\u03bf\u03b4\u03ae\u03c0\u03bf\u03c4\u03b5 \u03bc\u03ad\u03bb\u03bf\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03bf.", @@ -13,10 +14,12 @@ "cover": { "data": { "entities": "\u039c\u03ad\u03bb\u03b7 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2", + "hide_members": "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03bc\u03b5\u03bb\u03ce\u03bd", "name": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2", "title": "\u039d\u03ad\u03b1 \u03bf\u03bc\u03ac\u03b4\u03b1" }, - "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2" + "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2", + "title": "\u039d\u03ad\u03b1 \u03bf\u03bc\u03ac\u03b4\u03b1" }, "cover_options": { "data": { @@ -27,10 +30,12 @@ "fan": { "data": { "entities": "\u039c\u03ad\u03bb\u03b7 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2", + "hide_members": "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03bc\u03b5\u03bb\u03ce\u03bd", "name": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2", "title": "\u039d\u03ad\u03b1 \u03bf\u03bc\u03ac\u03b4\u03b1" }, - "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2" + "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2", + "title": "\u039d\u03ad\u03b1 \u03bf\u03bc\u03ac\u03b4\u03b1" }, "fan_options": { "data": { @@ -46,11 +51,14 @@ }, "light": { "data": { + "all": "\u038c\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2", "entities": "\u039c\u03ad\u03bb\u03b7 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2", + "hide_members": "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03bc\u03b5\u03bb\u03ce\u03bd", "name": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2", "title": "\u039d\u03ad\u03b1 \u03bf\u03bc\u03ac\u03b4\u03b1" }, - "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2" + "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2", + "title": "\u039d\u03ad\u03b1 \u03bf\u03bc\u03ac\u03b4\u03b1" }, "light_options": { "data": { @@ -58,13 +66,23 @@ }, "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2" }, + "lock": { + "data": { + "entities": "\u039c\u03ad\u03bb\u03b7", + "hide_members": "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03bc\u03b5\u03bb\u03ce\u03bd", + "name": "\u038c\u03bd\u03bf\u03bc\u03b1" + }, + "title": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2" + }, "media_player": { "data": { "entities": "\u039c\u03ad\u03bb\u03b7 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2", + "hide_members": "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03bc\u03b5\u03bb\u03ce\u03bd", "name": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2", "title": "\u039d\u03ad\u03b1 \u03bf\u03bc\u03ac\u03b4\u03b1" }, - "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2" + "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2", + "title": "\u039d\u03ad\u03b1 \u03bf\u03bc\u03ac\u03b4\u03b1" }, "media_player_options": { "data": { @@ -72,41 +90,108 @@ }, "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2" }, + "switch": { + "data": { + "entities": "\u039c\u03ad\u03bb\u03b7", + "hide_members": "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03bc\u03b5\u03bb\u03ce\u03bd", + "name": "\u038c\u03bd\u03bf\u03bc\u03b1" + }, + "title": "\u039d\u03ad\u03b1 \u03bf\u03bc\u03ac\u03b4\u03b1" + }, "user": { "data": { "group_type": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2" }, - "title": "\u039d\u03ad\u03b1 \u03bf\u03bc\u03ac\u03b4\u03b1" + "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c4\u03cd\u03c0\u03bf \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2", + "menu_options": { + "binary_sensor": "\u039f\u03bc\u03ac\u03b4\u03b1 \u03b4\u03c5\u03b1\u03b4\u03b9\u03ba\u03ce\u03bd \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03c9\u03bd", + "cover": "\u039f\u03bc\u03ac\u03b4\u03b1 \u03ba\u03b1\u03bb\u03c5\u03bc\u03bc\u03ac\u03c4\u03c9\u03bd", + "fan": "\u039f\u03bc\u03ac\u03b4\u03b1 \u03b1\u03bd\u03b5\u03bc\u03b9\u03c3\u03c4\u03ae\u03c1\u03c9\u03bd", + "light": "\u039f\u03bc\u03ac\u03b4\u03b1 \u03c6\u03ce\u03c4\u03c9\u03bd", + "lock": "\u039f\u03bc\u03ac\u03b4\u03b1 \u03ba\u03bb\u03b5\u03b9\u03b4\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2", + "media_player": "\u039f\u03bc\u03ac\u03b4\u03b1 \u03b1\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2 \u03c0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03c9\u03bd", + "switch": "\u0395\u03bd\u03b1\u03bb\u03bb\u03b1\u03b3\u03ae \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2" + }, + "title": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2" } } }, "options": { "step": { + "binary_sensor": { + "data": { + "all": "\u038c\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2", + "entities": "\u039c\u03ad\u03bb\u03b7", + "hide_members": "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03bc\u03b5\u03bb\u03ce\u03bd" + }, + "description": "\u0395\u03ac\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7 \u03b7 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \"\u03cc\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2\", \u03b7 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bc\u03cc\u03bd\u03bf \u03b5\u03ac\u03bd \u03cc\u03bb\u03b1 \u03c4\u03b1 \u03bc\u03ad\u03bb\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b1. \u0395\u03ac\u03bd \u03b7 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \"\u03cc\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2\" \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7, \u03b7 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7 \u03b5\u03ac\u03bd \u03bf\u03c0\u03bf\u03b9\u03bf\u03b4\u03ae\u03c0\u03bf\u03c4\u03b5 \u03bc\u03ad\u03bb\u03bf\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03bf." + }, "binary_sensor_options": { "data": { "all": "\u038c\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2", "entities": "\u039c\u03ad\u03bb\u03b7" } }, + "cover": { + "data": { + "entities": "\u039c\u03ad\u03bb\u03b7", + "hide_members": "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03bc\u03b5\u03bb\u03ce\u03bd" + } + }, "cover_options": { "data": { "entities": "\u039c\u03ad\u03bb\u03b7" } }, + "fan": { + "data": { + "entities": "\u039c\u03ad\u03bb\u03b7", + "hide_members": "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03bc\u03b5\u03bb\u03ce\u03bd" + } + }, "fan_options": { "data": { "entities": "\u039c\u03ad\u03bb\u03b7" } }, + "light": { + "data": { + "all": "\u038c\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2", + "entities": "\u039c\u03ad\u03bb\u03b7", + "hide_members": "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03bc\u03b5\u03bb\u03ce\u03bd" + }, + "description": "\u0395\u03ac\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7 \u03b7 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \"\u03cc\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2\", \u03b7 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bc\u03cc\u03bd\u03bf \u03b5\u03ac\u03bd \u03cc\u03bb\u03b1 \u03c4\u03b1 \u03bc\u03ad\u03bb\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b1. \u0395\u03ac\u03bd \u03b7 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \"\u03cc\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2\" \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7, \u03b7 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7 \u03b5\u03ac\u03bd \u03bf\u03c0\u03bf\u03b9\u03bf\u03b4\u03ae\u03c0\u03bf\u03c4\u03b5 \u03bc\u03ad\u03bb\u03bf\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03bf." + }, "light_options": { "data": { + "all": "\u038c\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2", "entities": "\u039c\u03ad\u03bb\u03b7" } }, + "lock": { + "data": { + "entities": "\u039c\u03ad\u03bb\u03b7", + "hide_members": "\u0397 \u03c4\u03bf\u03c0\u03bf\u03b8\u03b5\u03c3\u03af\u03b1 \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03b8\u03b5\u03af" + } + }, + "media_player": { + "data": { + "entities": "\u039c\u03ad\u03bb\u03b7", + "hide_members": "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03bc\u03b5\u03bb\u03ce\u03bd" + } + }, "media_player_options": { "data": { "entities": "\u039c\u03ad\u03bb\u03b7" } + }, + "switch": { + "data": { + "all": "\u038c\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2", + "entities": "\u039c\u03ad\u03bb\u03b7", + "hide_members": "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03bc\u03b5\u03bb\u03ce\u03bd" + }, + "description": "\u0395\u03ac\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7 \u03b7 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \"\u03cc\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2\", \u03b7 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bc\u03cc\u03bd\u03bf \u03b5\u03ac\u03bd \u03cc\u03bb\u03b1 \u03c4\u03b1 \u03bc\u03ad\u03bb\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b1. \u0395\u03ac\u03bd \u03b7 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \"\u03cc\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2\" \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7, \u03b7 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03bf\u03bc\u03ac\u03b4\u03b1\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7 \u03b5\u03ac\u03bd \u03bf\u03c0\u03bf\u03b9\u03bf\u03b4\u03ae\u03c0\u03bf\u03c4\u03b5 \u03bc\u03ad\u03bb\u03bf\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03bf." } } }, diff --git a/homeassistant/components/group/translations/en.json b/homeassistant/components/group/translations/en.json index a67d23b812d..f7b3942c696 100644 --- a/homeassistant/components/group/translations/en.json +++ b/homeassistant/components/group/translations/en.json @@ -15,26 +15,57 @@ "data": { "entities": "Members", "hide_members": "Hide members", - "name": "Name" + "name": "Name", + "title": "Add Group" }, + "description": "Select group options", "title": "Add Group" }, + "cover_options": { + "data": { + "entities": "Group members" + }, + "description": "Select group options" + }, "fan": { "data": { "entities": "Members", "hide_members": "Hide members", - "name": "Name" + "name": "Name", + "title": "Add Group" }, + "description": "Select group options", "title": "Add Group" }, + "fan_options": { + "data": { + "entities": "Group members" + }, + "description": "Select group options" + }, + "init": { + "data": { + "group_type": "Group type" + }, + "description": "Select group type" + }, "light": { "data": { + "all": "All entities", "entities": "Members", "hide_members": "Hide members", - "name": "Name" + "name": "Name", + "title": "Add Group" }, + "description": "If \"all entities\" is enabled, the group's state is on only if all members are on. If \"all entities\" is disabled, the group's state is on if any member is on.", "title": "Add Group" }, + "light_options": { + "data": { + "entities": "Group members" + }, + "description": "Select group options" + }, "lock": { "data": { "entities": "Members", @@ -47,10 +78,18 @@ "data": { "entities": "Members", "hide_members": "Hide members", - "name": "Name" + "name": "Name", + "title": "Add Group" }, + "description": "Select group options", "title": "Add Group" }, + "media_player_options": { + "data": { + "entities": "Group members" + }, + "description": "Select group options" + }, "switch": { "data": { "entities": "Members", @@ -60,6 +99,9 @@ "title": "Add Group" }, "user": { + "data": { + "group_type": "Group type" + }, "description": "Groups allow you to create a new entity that represents multiple entities of the same type.", "menu_options": { "binary_sensor": "Binary sensor group", @@ -84,18 +126,34 @@ }, "description": "If \"all entities\" is enabled, the group's state is on only if all members are on. If \"all entities\" is disabled, the group's state is on if any member is on." }, + "binary_sensor_options": { + "data": { + "all": "All entities", + "entities": "Members" + } + }, "cover": { "data": { "entities": "Members", "hide_members": "Hide members" } }, + "cover_options": { + "data": { + "entities": "Members" + } + }, "fan": { "data": { "entities": "Members", "hide_members": "Hide members" } }, + "fan_options": { + "data": { + "entities": "Members" + } + }, "light": { "data": { "all": "All entities", @@ -104,6 +162,12 @@ }, "description": "If \"all entities\" is enabled, the group's state is on only if all members are on. If \"all entities\" is disabled, the group's state is on if any member is on." }, + "light_options": { + "data": { + "all": "All entities", + "entities": "Members" + } + }, "lock": { "data": { "entities": "Members", @@ -116,6 +180,11 @@ "hide_members": "Hide members" } }, + "media_player_options": { + "data": { + "entities": "Members" + } + }, "switch": { "data": { "all": "All entities", diff --git a/homeassistant/components/group/translations/et.json b/homeassistant/components/group/translations/et.json index c45094aeedd..d0d1466e26b 100644 --- a/homeassistant/components/group/translations/et.json +++ b/homeassistant/components/group/translations/et.json @@ -5,6 +5,7 @@ "data": { "all": "K\u00f5ik olemid", "entities": "Liikmed", + "hide_members": "Peida grupi liikmed", "name": "Nimi" }, "description": "Kui \"k\u00f5ik olemid\" on lubatud,on r\u00fchma olek sees ainult siis kui k\u00f5ik liikmed on sisse l\u00fclitatud. Kui \"k\u00f5ik olemid\" on keelatud, on r\u00fchma olek sees kui m\u00f5ni liige on sisse l\u00fclitatud.", @@ -13,10 +14,12 @@ "cover": { "data": { "entities": "Liikmed", + "hide_members": "Peida grupi liikmed", "name": "Nimi", "title": "Uus r\u00fchm" }, - "description": "R\u00fchmasuvandite valimine" + "description": "R\u00fchmasuvandite valimine", + "title": "Uus grupp" }, "cover_options": { "data": { @@ -27,10 +30,12 @@ "fan": { "data": { "entities": "Liikmed", + "hide_members": "Peida grupi liikmed", "name": "Nimi", "title": "Uus r\u00fchm" }, - "description": "R\u00fchmasuvandite valimine" + "description": "R\u00fchmasuvandite valimine", + "title": "Uus grupp" }, "fan_options": { "data": { @@ -46,11 +51,14 @@ }, "light": { "data": { + "all": "K\u00f5ik olemid", "entities": "Liikmed", + "hide_members": "Peida grupi liikmed", "name": "Nimi", "title": "Uus r\u00fchm" }, - "description": "R\u00fchmasuvandite valimine" + "description": "Kui on vlitud \"K\u00f5ik olemid\" siis on grupi olek Sees kui k\u00f5ik olemid on sees. Kui \"K\u00f5ik olemid\" on keelatud siis on grupi olek Sees kui m\u00f5ni olem on sisse l\u00fclitatud.", + "title": "Uus grupp" }, "light_options": { "data": { @@ -58,13 +66,23 @@ }, "description": "R\u00fchmasuvandite valimine" }, + "lock": { + "data": { + "entities": "Liikmed", + "hide_members": "Peida liikmed", + "name": "Nimi" + }, + "title": "Uus grupp" + }, "media_player": { "data": { "entities": "Liikmed", + "hide_members": "Peida grupi liikmed", "name": "Nimi", "title": "Uus r\u00fchm" }, - "description": "R\u00fchmasuvandite valimine" + "description": "R\u00fchmasuvandite valimine", + "title": "Uus grupp" }, "media_player_options": { "data": { @@ -72,41 +90,108 @@ }, "description": "R\u00fchmasuvandite valimine" }, + "switch": { + "data": { + "entities": "Liikmed", + "hide_members": "Peida grupi liikmed", + "name": "Nimi" + }, + "title": "Uus grupp" + }, "user": { "data": { "group_type": "R\u00fchma t\u00fc\u00fcp" }, - "title": "Uus r\u00fchm" + "description": "R\u00fchmad v\u00f5imaldavad luua uue olemi,mis esindab mitut sama t\u00fc\u00fcpi olemit.", + "menu_options": { + "binary_sensor": "Olekuandurite r\u00fchm", + "cover": "Aknakatete r\u00fchm", + "fan": "Ventilaatorite r\u00fchm", + "light": "Valgustite r\u00fchm", + "lock": "Lukusta grupp", + "media_player": "Meediumipleieri r\u00fchm", + "switch": "Grupi vahetamine" + }, + "title": "Lisa grupp" } } }, "options": { "step": { + "binary_sensor": { + "data": { + "all": "K\u00f5ik olemid", + "entities": "Grupi liikmed", + "hide_members": "Peida grupi liikmed" + }, + "description": "Kui \"k\u00f5ik olemid\" on lubatud,on r\u00fchma olek sees ainult siis kui k\u00f5ik liikmed on sisse l\u00fclitatud. Kui \"k\u00f5ik olemid\" on keelatud, on r\u00fchma olek sees kui m\u00f5ni liige on sisse l\u00fclitatud." + }, "binary_sensor_options": { "data": { "all": "K\u00f5ik olemid", "entities": "Liikmed" } }, + "cover": { + "data": { + "entities": "Grupi liikmed", + "hide_members": "Peida grupi liikmed" + } + }, "cover_options": { "data": { "entities": "Liikmed" } }, + "fan": { + "data": { + "entities": "Grupi liikmed", + "hide_members": "Peida grupi liikmed" + } + }, "fan_options": { "data": { "entities": "Liikmed" } }, + "light": { + "data": { + "all": "K\u00f5ik olemid", + "entities": "Grupi liikmed", + "hide_members": "Peida grupi liikmed" + }, + "description": "Kui \"k\u00f5ik olemid\" on lubatud,on r\u00fchma olek sees ainult siis kui k\u00f5ik liikmed on sisse l\u00fclitatud. Kui \"k\u00f5ik olemid\" on keelatud, on r\u00fchma olek sees kui m\u00f5ni liige on sisse l\u00fclitatud." + }, "light_options": { "data": { + "all": "K\u00f5ik olemid", "entities": "Liikmed" } }, + "lock": { + "data": { + "entities": "Liikmed", + "hide_members": "Peida liikmed" + } + }, + "media_player": { + "data": { + "entities": "Grupi liikmed", + "hide_members": "Peida grupi liikmed" + } + }, "media_player_options": { "data": { "entities": "Liikmed" } + }, + "switch": { + "data": { + "all": "K\u00f5ik olemid", + "entities": "Liikmed", + "hide_members": "Peida grupi liikmed" + }, + "description": "Kui \"k\u00f5ik olemid\" on lubatud,on r\u00fchma olek sees ainult siis kui k\u00f5ik liikmed on sisse l\u00fclitatud. Kui \"k\u00f5ik olemid\" on keelatud, on r\u00fchma olek sees kui m\u00f5ni liige on sisse l\u00fclitatud." } } }, diff --git a/homeassistant/components/group/translations/fr.json b/homeassistant/components/group/translations/fr.json index 8e8b5ee4233..e8b74e2f374 100644 --- a/homeassistant/components/group/translations/fr.json +++ b/homeassistant/components/group/translations/fr.json @@ -5,18 +5,21 @@ "data": { "all": "Toutes les entit\u00e9s", "entities": "Membres", + "hide_members": "Cacher les membres", "name": "Nom" }, "description": "Si \u00ab\u00a0toutes les entit\u00e9s\u00a0\u00bb est activ\u00e9, l'\u00e9tat du groupe n'est activ\u00e9 que si tous les membres sont activ\u00e9s. Si \u00ab\u00a0toutes les entit\u00e9s\u00a0\u00bb est d\u00e9sactiv\u00e9, l'\u00e9tat du groupe est activ\u00e9 si au moins un membre est activ\u00e9.", - "title": "Nouveau groupe" + "title": "Ajouter un groupe" }, "cover": { "data": { "entities": "Membres", + "hide_members": "Cacher les membres", "name": "Nom", - "title": "Nouveau groupe" + "title": "Ajouter un groupe" }, - "description": "S\u00e9lectionnez les options du groupe" + "description": "S\u00e9lectionnez les options du groupe", + "title": "Ajouter un groupe" }, "cover_options": { "data": { @@ -27,10 +30,12 @@ "fan": { "data": { "entities": "Membres", + "hide_members": "Cacher les membres", "name": "Nom", - "title": "Nouveau groupe" + "title": "Ajouter un groupe" }, - "description": "S\u00e9lectionnez les options du groupe" + "description": "S\u00e9lectionnez les options du groupe", + "title": "Ajouter un groupe" }, "fan_options": { "data": { @@ -46,11 +51,14 @@ }, "light": { "data": { + "all": "Toutes les entit\u00e9s", "entities": "Membres", + "hide_members": "Cacher les membres", "name": "Nom", - "title": "Nouveau groupe" + "title": "Ajouter un groupe" }, - "description": "S\u00e9lectionnez les options du groupe" + "description": "Si \u00ab\u00a0toutes les entit\u00e9s\u00a0\u00bb est activ\u00e9, l'\u00e9tat du groupe n'est activ\u00e9 que si tous les membres sont activ\u00e9s. Si \u00ab\u00a0toutes les entit\u00e9s\u00a0\u00bb est d\u00e9sactiv\u00e9, l'\u00e9tat du groupe est activ\u00e9 si au moins un membre est activ\u00e9.", + "title": "Ajouter un groupe" }, "light_options": { "data": { @@ -58,13 +66,23 @@ }, "description": "S\u00e9lectionnez les options du groupe" }, + "lock": { + "data": { + "entities": "Membres", + "hide_members": "Cacher les membres", + "name": "Nom" + }, + "title": "Ajouter un groupe" + }, "media_player": { "data": { "entities": "Membres", + "hide_members": "Cacher les membres", "name": "Nom", - "title": "Nouveau groupe" + "title": "Ajouter un groupe" }, - "description": "S\u00e9lectionnez les options du groupe" + "description": "S\u00e9lectionnez les options du groupe", + "title": "Ajouter un groupe" }, "media_player_options": { "data": { @@ -72,41 +90,108 @@ }, "description": "S\u00e9lectionnez les options du groupe" }, + "switch": { + "data": { + "entities": "Membres", + "hide_members": "Cacher les membres", + "name": "Nom" + }, + "title": "Ajouter un groupe" + }, "user": { "data": { "group_type": "Type de groupe" }, - "title": "Nouveau groupe" + "description": "Les groupes vous permettent de cr\u00e9er une nouvelle entit\u00e9 repr\u00e9sentant plusieurs entit\u00e9s d'un m\u00eame type.", + "menu_options": { + "binary_sensor": "Groupe de capteurs binaires", + "cover": "Groupe de fermetures", + "fan": "Groupe de ventilateurs", + "light": "Groupe de lumi\u00e8res", + "lock": "Groupe de verrous", + "media_player": "Groupe de lecteurs multim\u00e9dia", + "switch": "Groupe d'interrupteurs" + }, + "title": "Ajouter un groupe" } } }, "options": { "step": { + "binary_sensor": { + "data": { + "all": "Toutes les entit\u00e9s", + "entities": "Membres", + "hide_members": "Cacher les membres" + }, + "description": "Si \u00ab\u00a0toutes les entit\u00e9s\u00a0\u00bb est activ\u00e9, l'\u00e9tat du groupe n'est activ\u00e9 que si tous les membres sont activ\u00e9s. Si \u00ab\u00a0toutes les entit\u00e9s\u00a0\u00bb est d\u00e9sactiv\u00e9, l'\u00e9tat du groupe est activ\u00e9 si au moins un membre est activ\u00e9." + }, "binary_sensor_options": { "data": { "all": "Toutes les entit\u00e9s", "entities": "Membres" } }, + "cover": { + "data": { + "entities": "Membres", + "hide_members": "Cacher les membres" + } + }, "cover_options": { "data": { "entities": "Membres" } }, + "fan": { + "data": { + "entities": "Membres", + "hide_members": "Cacher les membres" + } + }, "fan_options": { "data": { "entities": "Membres" } }, + "light": { + "data": { + "all": "Toutes les entit\u00e9s", + "entities": "Membres", + "hide_members": "Cacher les membres" + }, + "description": "Si \u00ab\u00a0toutes les entit\u00e9s\u00a0\u00bb est activ\u00e9, l'\u00e9tat du groupe n'est activ\u00e9 que si tous les membres sont activ\u00e9s. Si \u00ab\u00a0toutes les entit\u00e9s\u00a0\u00bb est d\u00e9sactiv\u00e9, l'\u00e9tat du groupe est activ\u00e9 si au moins un membre est activ\u00e9." + }, "light_options": { "data": { + "all": "Toutes les entit\u00e9s", "entities": "Membres" } }, + "lock": { + "data": { + "entities": "Membres", + "hide_members": "Cacher les membres" + } + }, + "media_player": { + "data": { + "entities": "Membres", + "hide_members": "Cacher les membres" + } + }, "media_player_options": { "data": { "entities": "Membres" } + }, + "switch": { + "data": { + "all": "Toutes les entit\u00e9s", + "entities": "Membres", + "hide_members": "Cacher les membres" + }, + "description": "Si \u00ab\u00a0toutes les entit\u00e9s\u00a0\u00bb est activ\u00e9, l'\u00e9tat du groupe n'est activ\u00e9 que si tous les membres sont activ\u00e9s. Si \u00ab\u00a0toutes les entit\u00e9s\u00a0\u00bb est d\u00e9sactiv\u00e9, l'\u00e9tat du groupe est activ\u00e9 si au moins un membre est activ\u00e9." } } }, diff --git a/homeassistant/components/group/translations/he.json b/homeassistant/components/group/translations/he.json index 06c1a8e0fa8..ab7a90cb699 100644 --- a/homeassistant/components/group/translations/he.json +++ b/homeassistant/components/group/translations/he.json @@ -5,6 +5,7 @@ "data": { "all": "\u05db\u05dc \u05d4\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea", "entities": "\u05d7\u05d1\u05e8\u05d9\u05dd", + "hide_members": "\u05d4\u05e1\u05ea\u05e8\u05ea \u05d7\u05d1\u05e8\u05d9\u05dd", "name": "\u05e9\u05dd" }, "description": "\u05d0\u05dd \u05d4\u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \"\u05db\u05dc \u05d4\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea\" \u05d6\u05de\u05d9\u05e0\u05d4, \u05de\u05e6\u05d1 \u05d4\u05e7\u05d1\u05d5\u05e6\u05d4 \u05de\u05d5\u05e4\u05e2\u05dc \u05e8\u05e7 \u05d0\u05dd \u05db\u05dc \u05d4\u05d7\u05d1\u05e8\u05d9\u05dd \u05e4\u05d5\u05e2\u05dc\u05d9\u05dd. \u05d0\u05dd \"\u05db\u05dc \u05d4\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea\" \u05d0\u05d9\u05e0\u05d5 \u05d6\u05de\u05d9\u05df, \u05de\u05e6\u05d1 \u05d4\u05e7\u05d1\u05d5\u05e6\u05d4 \u05de\u05d5\u05e4\u05e2\u05dc \u05d0\u05dd \u05d7\u05d1\u05e8 \u05db\u05dc\u05e9\u05d4\u05d5 \u05e4\u05d5\u05e2\u05dc.", @@ -13,10 +14,12 @@ "cover": { "data": { "entities": "\u05d7\u05d1\u05e8\u05d9\u05dd", + "hide_members": "\u05d4\u05e1\u05ea\u05e8\u05ea \u05d7\u05d1\u05e8\u05d9\u05dd", "name": "\u05e9\u05dd", "title": "\u05e7\u05d1\u05d5\u05e6\u05d4 \u05d7\u05d3\u05e9\u05d4" }, - "description": "\u05d1\u05d7\u05d9\u05e8\u05ea \u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05e7\u05d1\u05d5\u05e6\u05d4" + "description": "\u05d1\u05d7\u05d9\u05e8\u05ea \u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05e7\u05d1\u05d5\u05e6\u05d4", + "title": "\u05e7\u05d1\u05d5\u05e6\u05d4 \u05d7\u05d3\u05e9\u05d4" }, "cover_options": { "data": { @@ -27,10 +30,12 @@ "fan": { "data": { "entities": "\u05d7\u05d1\u05e8\u05d9\u05dd", + "hide_members": "\u05d4\u05e1\u05ea\u05e8\u05ea \u05d7\u05d1\u05e8\u05d9\u05dd", "name": "\u05e9\u05dd", "title": "\u05e7\u05d1\u05d5\u05e6\u05d4 \u05d7\u05d3\u05e9\u05d4" }, - "description": "\u05d1\u05d7\u05d9\u05e8\u05ea \u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05e7\u05d1\u05d5\u05e6\u05d4" + "description": "\u05d1\u05d7\u05d9\u05e8\u05ea \u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05e7\u05d1\u05d5\u05e6\u05d4", + "title": "\u05e7\u05d1\u05d5\u05e6\u05d4 \u05d7\u05d3\u05e9\u05d4" }, "fan_options": { "data": { @@ -46,11 +51,14 @@ }, "light": { "data": { + "all": "\u05db\u05dc \u05d4\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea", "entities": "\u05d7\u05d1\u05e8\u05d9\u05dd", + "hide_members": "\u05d4\u05e1\u05ea\u05e8\u05ea \u05d7\u05d1\u05e8\u05d9\u05dd", "name": "\u05e9\u05dd", "title": "\u05e7\u05d1\u05d5\u05e6\u05d4 \u05d7\u05d3\u05e9\u05d4" }, - "description": "\u05d1\u05d7\u05d9\u05e8\u05ea \u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05e7\u05d1\u05d5\u05e6\u05d4" + "description": "\u05d0\u05dd \u05d4\u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \"\u05db\u05dc \u05d4\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea\" \u05d6\u05de\u05d9\u05e0\u05d4, \u05de\u05e6\u05d1 \u05d4\u05e7\u05d1\u05d5\u05e6\u05d4 \u05de\u05d5\u05e4\u05e2\u05dc \u05e8\u05e7 \u05d0\u05dd \u05db\u05dc \u05d4\u05d7\u05d1\u05e8\u05d9\u05dd \u05e4\u05d5\u05e2\u05dc\u05d9\u05dd. \u05d0\u05dd \"\u05db\u05dc \u05d4\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea\" \u05d0\u05d9\u05e0\u05d5 \u05d6\u05de\u05d9\u05df, \u05de\u05e6\u05d1 \u05d4\u05e7\u05d1\u05d5\u05e6\u05d4 \u05de\u05d5\u05e4\u05e2\u05dc \u05d0\u05dd \u05d7\u05d1\u05e8 \u05db\u05dc\u05e9\u05d4\u05d5 \u05e4\u05d5\u05e2\u05dc.", + "title": "\u05e7\u05d1\u05d5\u05e6\u05d4 \u05d7\u05d3\u05e9\u05d4" }, "light_options": { "data": { @@ -58,13 +66,23 @@ }, "description": "\u05d1\u05d7\u05d9\u05e8\u05ea \u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05e7\u05d1\u05d5\u05e6\u05d4" }, + "lock": { + "data": { + "entities": "\u05d7\u05d1\u05e8\u05d9\u05dd", + "hide_members": "\u05d4\u05e1\u05ea\u05e8\u05ea \u05d7\u05d1\u05e8\u05d9\u05dd", + "name": "\u05e9\u05dd" + }, + "title": "\u05e7\u05d1\u05d5\u05e6\u05d4 \u05d7\u05d3\u05e9\u05d4" + }, "media_player": { "data": { "entities": "\u05d7\u05d1\u05e8\u05d9\u05dd", + "hide_members": "\u05d4\u05e1\u05ea\u05e8\u05ea \u05d7\u05d1\u05e8\u05d9\u05dd", "name": "\u05e9\u05dd", "title": "\u05e7\u05d1\u05d5\u05e6\u05d4 \u05d7\u05d3\u05e9\u05d4" }, - "description": "\u05d1\u05d7\u05d9\u05e8\u05ea \u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05e7\u05d1\u05d5\u05e6\u05d4" + "description": "\u05d1\u05d7\u05d9\u05e8\u05ea \u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05e7\u05d1\u05d5\u05e6\u05d4", + "title": "\u05e7\u05d1\u05d5\u05e6\u05d4 \u05d7\u05d3\u05e9\u05d4" }, "media_player_options": { "data": { @@ -72,47 +90,112 @@ }, "description": "\u05d1\u05d7\u05d9\u05e8\u05ea \u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05e7\u05d1\u05d5\u05e6\u05d4" }, + "switch": { + "data": { + "entities": "\u05d7\u05d1\u05e8\u05d9\u05dd", + "hide_members": "\u05d4\u05e1\u05ea\u05e8\u05ea \u05d7\u05d1\u05e8\u05d9\u05dd", + "name": "\u05e9\u05dd" + }, + "title": "\u05e7\u05d1\u05d5\u05e6\u05d4 \u05d7\u05d3\u05e9\u05d4" + }, "user": { "data": { "group_type": "\u05e1\u05d5\u05d2 \u05e7\u05d1\u05d5\u05e6\u05d4" }, + "description": "\u05e7\u05d1\u05d5\u05e6\u05d5\u05ea \u05de\u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \u05dc\u05da \u05dc\u05d9\u05e6\u05d5\u05e8 \u05d9\u05e9\u05d5\u05ea \u05d7\u05d3\u05e9\u05d4 \u05d4\u05de\u05d9\u05d9\u05e6\u05d2\u05ea \u05d9\u05e9\u05d5\u05d9\u05d5\u05ea \u05de\u05e8\u05d5\u05d1\u05d5\u05ea \u05de\u05d0\u05d5\u05ea\u05d5 \u05e1\u05d5\u05d2.", + "menu_options": { + "binary_sensor": "\u05e7\u05d1\u05d5\u05e6\u05ea \u05d7\u05d9\u05d9\u05e9\u05e0\u05d9\u05dd \u05d1\u05d9\u05e0\u05d0\u05e8\u05d9\u05d9\u05dd", + "cover": "\u05e7\u05d1\u05d5\u05e6\u05ea \u05d5\u05d9\u05dc\u05d5\u05e0\u05d5\u05ea", + "fan": "\u05e7\u05d1\u05d5\u05e6\u05ea \u05d0\u05d9\u05d5\u05d5\u05e8\u05d5\u05e8", + "light": "\u05e7\u05d1\u05d5\u05e6\u05ea \u05ea\u05d0\u05d5\u05e8\u05d4", + "media_player": "\u05e7\u05d1\u05d5\u05e6\u05ea \u05e0\u05d2\u05e0\u05d9 \u05de\u05d3\u05d9\u05d4" + }, "title": "\u05e7\u05d1\u05d5\u05e6\u05d4 \u05d7\u05d3\u05e9\u05d4" } } }, "options": { "step": { + "binary_sensor": { + "data": { + "all": "\u05db\u05dc \u05d4\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea", + "entities": "\u05d7\u05d1\u05e8\u05d9\u05dd", + "hide_members": "\u05d4\u05e1\u05ea\u05e8\u05ea \u05d7\u05d1\u05e8\u05d9\u05dd" + }, + "description": "\u05d0\u05dd \u05d4\u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \"\u05db\u05dc \u05d4\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea\" \u05d6\u05de\u05d9\u05e0\u05d4, \u05de\u05e6\u05d1 \u05d4\u05e7\u05d1\u05d5\u05e6\u05d4 \u05de\u05d5\u05e4\u05e2\u05dc \u05e8\u05e7 \u05d0\u05dd \u05db\u05dc \u05d4\u05d7\u05d1\u05e8\u05d9\u05dd \u05e4\u05d5\u05e2\u05dc\u05d9\u05dd. \u05d0\u05dd \"\u05db\u05dc \u05d4\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea\" \u05d0\u05d9\u05e0\u05d5 \u05d6\u05de\u05d9\u05df, \u05de\u05e6\u05d1 \u05d4\u05e7\u05d1\u05d5\u05e6\u05d4 \u05de\u05d5\u05e4\u05e2\u05dc \u05d0\u05dd \u05d7\u05d1\u05e8 \u05db\u05dc\u05e9\u05d4\u05d5 \u05e4\u05d5\u05e2\u05dc." + }, "binary_sensor_options": { "data": { "all": "\u05db\u05dc \u05d4\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea", "entities": "\u05d7\u05d1\u05e8\u05d9\u05dd" } }, + "cover": { + "data": { + "entities": "\u05d7\u05d1\u05e8\u05d9\u05dd", + "hide_members": "\u05d4\u05e1\u05ea\u05e8\u05ea \u05d7\u05d1\u05e8\u05d9\u05dd" + } + }, "cover_options": { "data": { "entities": "\u05d7\u05d1\u05e8\u05d9\u05dd" } }, + "fan": { + "data": { + "entities": "\u05d7\u05d1\u05e8\u05d9\u05dd", + "hide_members": "\u05d4\u05e1\u05ea\u05e8\u05ea \u05d7\u05d1\u05e8\u05d9\u05dd" + } + }, "fan_options": { "data": { "entities": "\u05d7\u05d1\u05e8\u05d9\u05dd" } }, + "light": { + "data": { + "all": "\u05db\u05dc \u05d4\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea", + "entities": "\u05d7\u05d1\u05e8\u05d9\u05dd", + "hide_members": "\u05d4\u05e1\u05ea\u05e8\u05ea \u05d7\u05d1\u05e8\u05d9\u05dd" + }, + "description": "\u05d0\u05dd \u05d4\u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \"\u05db\u05dc \u05d4\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea\" \u05d6\u05de\u05d9\u05e0\u05d4, \u05de\u05e6\u05d1 \u05d4\u05e7\u05d1\u05d5\u05e6\u05d4 \u05de\u05d5\u05e4\u05e2\u05dc \u05e8\u05e7 \u05d0\u05dd \u05db\u05dc \u05d4\u05d7\u05d1\u05e8\u05d9\u05dd \u05e4\u05d5\u05e2\u05dc\u05d9\u05dd. \u05d0\u05dd \"\u05db\u05dc \u05d4\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea\" \u05d0\u05d9\u05e0\u05d5 \u05d6\u05de\u05d9\u05df, \u05de\u05e6\u05d1 \u05d4\u05e7\u05d1\u05d5\u05e6\u05d4 \u05de\u05d5\u05e4\u05e2\u05dc \u05d0\u05dd \u05d7\u05d1\u05e8 \u05db\u05dc\u05e9\u05d4\u05d5 \u05e4\u05d5\u05e2\u05dc." + }, "light_options": { "data": { + "all": "\u05db\u05dc \u05d4\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea", "entities": "\u05d7\u05d1\u05e8\u05d9\u05dd" } }, + "lock": { + "data": { + "entities": "\u05d7\u05d1\u05e8\u05d9\u05dd", + "hide_members": "\u05d4\u05e1\u05ea\u05e8\u05ea \u05d7\u05d1\u05e8\u05d9\u05dd" + } + }, + "media_player": { + "data": { + "entities": "\u05d7\u05d1\u05e8\u05d9\u05dd", + "hide_members": "\u05d4\u05e1\u05ea\u05e8\u05ea \u05d7\u05d1\u05e8\u05d9\u05dd" + } + }, "media_player_options": { "data": { "entities": "\u05d7\u05d1\u05e8\u05d9\u05dd" } + }, + "switch": { + "data": { + "all": "\u05db\u05dc \u05d4\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea", + "entities": "\u05d7\u05d1\u05e8\u05d9\u05dd", + "hide_members": "\u05d4\u05e1\u05ea\u05e8\u05ea \u05d7\u05d1\u05e8\u05d9\u05dd" + }, + "description": "\u05d0\u05dd \u05d4\u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \"\u05db\u05dc \u05d4\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea\" \u05d6\u05de\u05d9\u05e0\u05d4, \u05de\u05e6\u05d1 \u05d4\u05e7\u05d1\u05d5\u05e6\u05d4 \u05de\u05d5\u05e4\u05e2\u05dc \u05e8\u05e7 \u05d0\u05dd \u05db\u05dc \u05d4\u05d7\u05d1\u05e8\u05d9\u05dd \u05e4\u05d5\u05e2\u05dc\u05d9\u05dd. \u05d0\u05dd \"\u05db\u05dc \u05d4\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea\" \u05d0\u05d9\u05e0\u05d5 \u05d6\u05de\u05d9\u05df, \u05de\u05e6\u05d1 \u05d4\u05e7\u05d1\u05d5\u05e6\u05d4 \u05de\u05d5\u05e4\u05e2\u05dc \u05d0\u05dd \u05d7\u05d1\u05e8 \u05db\u05dc\u05e9\u05d4\u05d5 \u05e4\u05d5\u05e2\u05dc." } } }, "state": { "_": { - "closed": "\u05e1\u05d2\u05d5\u05e8", + "closed": "\u05e0\u05e1\u05d2\u05e8", "home": "\u05d1\u05d1\u05d9\u05ea", "locked": "\u05e0\u05e2\u05d5\u05dc", "not_home": "\u05d1\u05d7\u05d5\u05e5", diff --git a/homeassistant/components/group/translations/hu.json b/homeassistant/components/group/translations/hu.json index 08c7d5e5afb..ba368532cff 100644 --- a/homeassistant/components/group/translations/hu.json +++ b/homeassistant/components/group/translations/hu.json @@ -5,18 +5,21 @@ "data": { "all": "Minden entit\u00e1s", "entities": "A csoport tagjai", - "name": "N\u00e9v" + "hide_members": "Tagok elrejt\u00e9se", + "name": "Elnevez\u00e9s" }, "description": "Ha \u201eMinden entit\u00e1s\u201d enged\u00e9lyezve van, a csoport \u00e1llapota csak akkor van bekapcsolva, ha minden tag \u00e1llapota bekapcsolt. Ha \u201eMinden entit\u00e1s\u201d le van tiltva, a csoport \u00e1llapota akkor van bekapcsolva, ha b\u00e1rmelyik tag bekapcsolt \u00e1llapotban van.", - "title": "\u00daj csoport" + "title": "Csoport hozz\u00e1ad\u00e1sa" }, "cover": { "data": { "entities": "A csoport tagjai", - "name": "Csoport neve", - "title": "\u00daj csoport" + "hide_members": "Tagok elrejt\u00e9se", + "name": "Elnevez\u00e9s", + "title": "Csoport hozz\u00e1ad\u00e1sa" }, - "description": "Csoport be\u00e1ll\u00edt\u00e1sai" + "description": "Csoport be\u00e1ll\u00edt\u00e1sai", + "title": "Csoport hozz\u00e1ad\u00e1sa" }, "cover_options": { "data": { @@ -27,10 +30,12 @@ "fan": { "data": { "entities": "A csoport tagjai", - "name": "A csoport elnevez\u00e9se", - "title": "\u00daj csoport" + "hide_members": "Tagok elrejt\u00e9se", + "name": "Elnevez\u00e9s", + "title": "Csoport hozz\u00e1ad\u00e1sa" }, - "description": "Csoport be\u00e1ll\u00edt\u00e1sai" + "description": "Csoport be\u00e1ll\u00edt\u00e1sai", + "title": "Csoport hozz\u00e1ad\u00e1sa" }, "fan_options": { "data": { @@ -46,11 +51,14 @@ }, "light": { "data": { + "all": "Minden entit\u00e1s", "entities": "A csoport tagjai", - "name": "A csoport elnevez\u00e9se", - "title": "\u00daj csoport" + "hide_members": "Tagok elrejt\u00e9se", + "name": "Elnevez\u00e9s", + "title": "Csoport hozz\u00e1ad\u00e1sa" }, - "description": "Csoport be\u00e1ll\u00edt\u00e1sai" + "description": "Ha \u201eMinden entit\u00e1s\u201d enged\u00e9lyezve van, a csoport \u00e1llapota csak akkor van bekapcsolva, ha minden tag \u00e1llapota bekapcsolt. Ha \u201eMinden entit\u00e1s\u201d le van tiltva, a csoport \u00e1llapota akkor van bekapcsolva, ha b\u00e1rmelyik tag bekapcsolt \u00e1llapotban van.", + "title": "Csoport hozz\u00e1ad\u00e1sa" }, "light_options": { "data": { @@ -58,13 +66,23 @@ }, "description": "Csoport be\u00e1ll\u00edt\u00e1sai" }, + "lock": { + "data": { + "entities": "A csoport tagjai", + "hide_members": "Tagok elrejt\u00e9se", + "name": "Elnevez\u00e9s" + }, + "title": "Csoport hozz\u00e1ad\u00e1sa" + }, "media_player": { "data": { "entities": "A csoport tagjai", - "name": "A csoport elnevez\u00e9se", - "title": "\u00daj csoport" + "hide_members": "Tagok elrejt\u00e9se", + "name": "Elnevez\u00e9s", + "title": "Csoport hozz\u00e1ad\u00e1sa" }, - "description": "Csoport be\u00e1ll\u00edt\u00e1sai" + "description": "Csoport be\u00e1ll\u00edt\u00e1sai", + "title": "Csoport hozz\u00e1ad\u00e1sa" }, "media_player_options": { "data": { @@ -72,41 +90,108 @@ }, "description": "Csoport be\u00e1ll\u00edt\u00e1sai" }, + "switch": { + "data": { + "entities": "A csoport tagjai", + "hide_members": "Tagok elrejt\u00e9se", + "name": "Elnevez\u00e9s" + }, + "title": "Csoport hozz\u00e1ad\u00e1sa" + }, "user": { "data": { "group_type": "Csoport t\u00edpusa" }, - "title": "\u00daj csoport" + "description": "A csoportok lehet\u0151v\u00e9 teszik egy \u00faj entit\u00e1s l\u00e9trehoz\u00e1s\u00e1t, amely t\u00f6bb azonos t\u00edpus\u00fa entit\u00e1st k\u00e9pvisel.", + "menu_options": { + "binary_sensor": "Bin\u00e1ris \u00e9rz\u00e9kel\u0151 csoport", + "cover": "Red\u0151ny csoport", + "fan": "Ventil\u00e1tor csoport", + "light": "L\u00e1mpa csoport", + "lock": "Csoport z\u00e1rol\u00e1sa", + "media_player": "M\u00e9dialej\u00e1tsz\u00f3 csoport", + "switch": "Kapcsol\u00f3csoport" + }, + "title": "Csoport hozz\u00e1ad\u00e1sa" } } }, "options": { "step": { + "binary_sensor": { + "data": { + "all": "Minden entit\u00e1s", + "entities": "A csoport tagjai", + "hide_members": "Tagok elrejt\u00e9se" + }, + "description": "Ha \u201eMinden entit\u00e1s\u201d enged\u00e9lyezve van, a csoport \u00e1llapota csak akkor van bekapcsolva, ha minden tag \u00e1llapota bekapcsolt. Ha \u201eMinden entit\u00e1s\u201d le van tiltva, a csoport \u00e1llapota akkor van bekapcsolva, ha b\u00e1rmelyik tag bekapcsolt \u00e1llapotban van." + }, "binary_sensor_options": { "data": { "all": "Minden entit\u00e1s", "entities": "A csoport tagjai" } }, + "cover": { + "data": { + "entities": "A csoport tagjai", + "hide_members": "Tagok elrejt\u00e9se" + } + }, "cover_options": { "data": { "entities": "A csoport tagjai" } }, + "fan": { + "data": { + "entities": "A csoport tagjai", + "hide_members": "Tagok elrejt\u00e9se" + } + }, "fan_options": { "data": { "entities": "A csoport tagjai" } }, + "light": { + "data": { + "all": "Minden entit\u00e1s", + "entities": "A csoport tagjai", + "hide_members": "Tagok elrejt\u00e9se" + }, + "description": "Ha \u201eMinden entit\u00e1s\u201d enged\u00e9lyezve van, a csoport \u00e1llapota csak akkor van bekapcsolva, ha minden tag \u00e1llapota bekapcsolt. Ha \u201eMinden entit\u00e1s\u201d le van tiltva, a csoport \u00e1llapota akkor van bekapcsolva, ha b\u00e1rmelyik tag bekapcsolt \u00e1llapotban van." + }, "light_options": { "data": { + "all": "Minden entit\u00e1s", "entities": "A csoport tagjai" } }, + "lock": { + "data": { + "entities": "A csoport tagjai", + "hide_members": "Tagok elrejt\u00e9se" + } + }, + "media_player": { + "data": { + "entities": "A csoport tagjai", + "hide_members": "Tagok elrejt\u00e9se" + } + }, "media_player_options": { "data": { "entities": "A csoport tagjai" } + }, + "switch": { + "data": { + "all": "Minden entit\u00e1s", + "entities": "A csoport tagjai", + "hide_members": "Tagok elrejt\u00e9se" + }, + "description": "Ha \u201eMinden entit\u00e1s\u201d enged\u00e9lyezve van, a csoport \u00e1llapota csak akkor van bekapcsolva, ha minden tag \u00e1llapota bekapcsolt. Ha \u201eMinden entit\u00e1s\u201d le van tiltva, a csoport \u00e1llapota akkor van bekapcsolva, ha b\u00e1rmelyik tag bekapcsolt \u00e1llapotban van." } } }, diff --git a/homeassistant/components/group/translations/id.json b/homeassistant/components/group/translations/id.json index 2a92526d644..c0425c5ede6 100644 --- a/homeassistant/components/group/translations/id.json +++ b/homeassistant/components/group/translations/id.json @@ -5,18 +5,21 @@ "data": { "all": "Semua entitas", "entities": "Anggota", + "hide_members": "Sembunyikan anggota", "name": "Nama" }, "description": "Jika \"semua entitas\" diaktifkan, status grup akan menyala jika semua anggota nyala. Jika \"semua entitas\" dinonaktifkan, status grup akan menyala jika ada salah satu atau lebih anggota yang menyala.", - "title": "Grup Baru" + "title": "Tambahkan Grup" }, "cover": { "data": { "entities": "Anggota", + "hide_members": "Sembunyikan anggota", "name": "Nama", - "title": "Grup Baru" + "title": "Tambahkan Grup" }, - "description": "Pilih opsi grup" + "description": "Pilih opsi grup", + "title": "Tambahkan Grup" }, "cover_options": { "data": { @@ -27,10 +30,12 @@ "fan": { "data": { "entities": "Anggota", + "hide_members": "Sembunyikan anggota", "name": "Nama", - "title": "Grup Baru" + "title": "Tambahkan Grup" }, - "description": "Pilih opsi grup" + "description": "Pilih opsi grup", + "title": "Tambahkan Grup" }, "fan_options": { "data": { @@ -46,11 +51,14 @@ }, "light": { "data": { + "all": "Semua entitas", "entities": "Anggota", + "hide_members": "Sembunyikan anggota", "name": "Nama", - "title": "Grup Baru" + "title": "Tambahkan Grup" }, - "description": "Pilih opsi grup" + "description": "Jika \"semua entitas\" diaktifkan, status grup akan menyala jika semua anggota nyala. Jika \"semua entitas\" dinonaktifkan, status grup akan menyala jika ada salah satu atau lebih anggota yang menyala.", + "title": "Tambahkan Grup" }, "light_options": { "data": { @@ -58,13 +66,23 @@ }, "description": "Pilih opsi grup" }, + "lock": { + "data": { + "entities": "Anggota", + "hide_members": "Sembunyikan anggota", + "name": "Nama" + }, + "title": "Tambahkan Grup" + }, "media_player": { "data": { "entities": "Anggota", + "hide_members": "Sembunyikan anggota", "name": "Nama", - "title": "Grup Baru" + "title": "Tambahkan Grup" }, - "description": "Pilih opsi grup" + "description": "Pilih opsi grup", + "title": "Tambahkan Grup" }, "media_player_options": { "data": { @@ -72,41 +90,108 @@ }, "description": "Pilih opsi grup" }, + "switch": { + "data": { + "entities": "Anggota", + "hide_members": "Sembunyikan anggota", + "name": "Nama" + }, + "title": "Tambahkan Grup" + }, "user": { "data": { "group_type": "Jenis grup" }, - "title": "Grup Baru" + "description": "Grup memungkinkan Anda membuat entitas baru yang mewakili beberapa entitas dari jenis yang sama.", + "menu_options": { + "binary_sensor": "Grup sensor biner", + "cover": "Grup penutup", + "fan": "Grup kipas", + "light": "Grup lampu", + "lock": "Grup kunci", + "media_player": "Grup pemutar media", + "switch": "Ganti sakelar" + }, + "title": "Tambahkan Grup" } } }, "options": { "step": { + "binary_sensor": { + "data": { + "all": "Semua entitas", + "entities": "Anggota", + "hide_members": "Sembunyikan anggota" + }, + "description": "Jika \"semua entitas\" diaktifkan, status grup akan menyala jika semua anggota nyala. Jika \"semua entitas\" dinonaktifkan, status grup akan menyala jika ada salah satu atau lebih anggota yang menyala." + }, "binary_sensor_options": { "data": { "all": "Semua entitas", "entities": "Anggota" } }, + "cover": { + "data": { + "entities": "Anggota", + "hide_members": "Sembunyikan anggota" + } + }, "cover_options": { "data": { "entities": "Anggota" } }, + "fan": { + "data": { + "entities": "Anggota", + "hide_members": "Sembunyikan anggota" + } + }, "fan_options": { "data": { "entities": "Anggota" } }, + "light": { + "data": { + "all": "Semua entitas", + "entities": "Anggota", + "hide_members": "Sembunyikan anggota" + }, + "description": "Jika \"semua entitas\" diaktifkan, status grup akan menyala jika semua anggota nyala. Jika \"semua entitas\" dinonaktifkan, status grup akan menyala jika ada salah satu atau lebih anggota yang menyala." + }, "light_options": { "data": { + "all": "Semua entitas", "entities": "Anggota" } }, + "lock": { + "data": { + "entities": "Anggota", + "hide_members": "Sembunyikan anggota" + } + }, + "media_player": { + "data": { + "entities": "Anggota", + "hide_members": "Sembunyikan anggota" + } + }, "media_player_options": { "data": { "entities": "Anggota" } + }, + "switch": { + "data": { + "all": "Semua entitas", + "entities": "Anggota", + "hide_members": "Sembunyikan anggota" + }, + "description": "Jika \"semua entitas\" diaktifkan, status grup akan menyala jika semua anggota nyala. Jika \"semua entitas\" dinonaktifkan, status grup akan menyala jika ada salah satu atau lebih anggota yang menyala." } } }, diff --git a/homeassistant/components/group/translations/it.json b/homeassistant/components/group/translations/it.json index 6dc9ff2cce8..4cbac9145d8 100644 --- a/homeassistant/components/group/translations/it.json +++ b/homeassistant/components/group/translations/it.json @@ -5,18 +5,21 @@ "data": { "all": "Tutte le entit\u00e0", "entities": "Membri", + "hide_members": "Nascondi membri", "name": "Nome" }, "description": "Se \"tutte le entit\u00e0\" \u00e8 abilitata, lo stato del gruppo \u00e8 attivo solo se tutti i membri sono attivi. Se \"tutte le entit\u00e0\" \u00e8 disabilitata, lo stato del gruppo \u00e8 attivo se un membro \u00e8 attivo.", - "title": "Nuovo gruppo" + "title": "Aggiungi gruppo" }, "cover": { "data": { "entities": "Membri", + "hide_members": "Nascondi membri", "name": "Nome", - "title": "Nuovo gruppo" + "title": "Aggiungi gruppo" }, - "description": "Seleziona le opzioni di gruppo" + "description": "Seleziona le opzioni di gruppo", + "title": "Aggiungi gruppo" }, "cover_options": { "data": { @@ -27,10 +30,12 @@ "fan": { "data": { "entities": "Membri", + "hide_members": "Nascondi membri", "name": "Nome", - "title": "Nuovo gruppo" + "title": "Aggiungi gruppo" }, - "description": "Seleziona le opzioni di gruppo" + "description": "Seleziona le opzioni di gruppo", + "title": "Aggiungi gruppo" }, "fan_options": { "data": { @@ -46,11 +51,14 @@ }, "light": { "data": { + "all": "Tutte le entit\u00e0", "entities": "Membri", + "hide_members": "Nascondi membri", "name": "Nome", - "title": "Nuovo gruppo" + "title": "Aggiungi gruppo" }, - "description": "Seleziona le opzioni di gruppo" + "description": "Se \"tutte le entit\u00e0\" \u00e8 abilitata, lo stato del gruppo \u00e8 attivo solo se tutti i membri sono attivi. Se \"tutte le entit\u00e0\" \u00e8 disabilitata, lo stato del gruppo \u00e8 attivo se un membro \u00e8 attivo.", + "title": "Aggiungi gruppo" }, "light_options": { "data": { @@ -58,13 +66,23 @@ }, "description": "Seleziona le opzioni di gruppo" }, + "lock": { + "data": { + "entities": "Membri", + "hide_members": "Nascondi membri", + "name": "Nome" + }, + "title": "Aggiungi gruppo" + }, "media_player": { "data": { "entities": "Membri", + "hide_members": "Nascondi membri", "name": "Nome", - "title": "Nuovo gruppo" + "title": "Aggiungi gruppo" }, - "description": "Seleziona le opzioni di gruppo" + "description": "Seleziona le opzioni di gruppo", + "title": "Aggiungi gruppo" }, "media_player_options": { "data": { @@ -72,41 +90,108 @@ }, "description": "Seleziona le opzioni di gruppo" }, + "switch": { + "data": { + "entities": "Membri", + "hide_members": "Nascondi membri", + "name": "Nome" + }, + "title": "Aggiungi gruppo" + }, "user": { "data": { "group_type": "Tipo di gruppo" }, - "title": "Nuovo gruppo" + "description": "I gruppi consentono di creare una nuova entit\u00e0 che rappresenta pi\u00f9 entit\u00e0 dello stesso tipo.", + "menu_options": { + "binary_sensor": "Gruppo di sensori binari", + "cover": "Gruppo di coperture", + "fan": "Gruppo di ventole", + "light": "Gruppo di luci", + "lock": "Blocca gruppo", + "media_player": "Gruppo di lettori multimediali", + "switch": "Gruppo di interruttori" + }, + "title": "Aggiungi gruppo" } } }, "options": { "step": { + "binary_sensor": { + "data": { + "all": "Tutte le entit\u00e0", + "entities": "Membri", + "hide_members": "Nascondi membri" + }, + "description": "Se \"tutte le entit\u00e0\" \u00e8 abilitata, lo stato del gruppo \u00e8 attivo solo se tutti i membri sono attivi. Se \"tutte le entit\u00e0\" \u00e8 disabilitata, lo stato del gruppo \u00e8 attivo se un membro \u00e8 attivo." + }, "binary_sensor_options": { "data": { "all": "Tutte le entit\u00e0", "entities": "Membri" } }, + "cover": { + "data": { + "entities": "Membri", + "hide_members": "Nascondi membri" + } + }, "cover_options": { "data": { "entities": "Membri" } }, + "fan": { + "data": { + "entities": "Membri", + "hide_members": "Nascondi membri" + } + }, "fan_options": { "data": { "entities": "Membri" } }, + "light": { + "data": { + "all": "Tutte le entit\u00e0", + "entities": "Membri", + "hide_members": "Nascondi membri" + }, + "description": "Se \"tutte le entit\u00e0\" \u00e8 abilitata, lo stato del gruppo \u00e8 attivo solo se tutti i membri sono attivi. Se \"tutte le entit\u00e0\" \u00e8 disabilitata, lo stato del gruppo \u00e8 attivo se un membro \u00e8 attivo." + }, "light_options": { "data": { + "all": "Tutte le entit\u00e0", "entities": "Membri" } }, + "lock": { + "data": { + "entities": "Membri", + "hide_members": "Nascondi membri" + } + }, + "media_player": { + "data": { + "entities": "Membri", + "hide_members": "Nascondi membri" + } + }, "media_player_options": { "data": { "entities": "Membri" } + }, + "switch": { + "data": { + "all": "Tutte le entit\u00e0", + "entities": "Membri", + "hide_members": "Nascondi membri" + }, + "description": "Se \"tutte le entit\u00e0\" \u00e8 abilitata, lo stato del gruppo \u00e8 attivo solo se tutti i membri sono attivi. Se \"tutte le entit\u00e0\" \u00e8 disabilitata, lo stato del gruppo \u00e8 attivo se un membro \u00e8 attivo." } } }, diff --git a/homeassistant/components/group/translations/ja.json b/homeassistant/components/group/translations/ja.json index dac7583169d..55e414927a4 100644 --- a/homeassistant/components/group/translations/ja.json +++ b/homeassistant/components/group/translations/ja.json @@ -5,6 +5,7 @@ "data": { "all": "\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3", "entities": "\u30e1\u30f3\u30d0\u30fc", + "hide_members": "\u30e1\u30f3\u30d0\u30fc\u3092\u975e\u8868\u793a\u306b\u3059\u308b", "name": "\u540d\u524d" }, "description": "\"\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\" \u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u30b0\u30eb\u30fc\u30d7\u306e\u72b6\u614b\u306f\u3001\u3059\u3079\u3066\u306e\u30e1\u30f3\u30d0\u30fc\u304c\u30aa\u30f3\u306e\u5834\u5408\u306b\u306e\u307f\u30aa\u30f3\u306b\u306a\u308a\u307e\u3059\u3002 \"\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\" \u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u3044\u305a\u308c\u304b\u306e\u30e1\u30f3\u30d0\u30fc\u304c\u30aa\u30f3\u3067\u3042\u308c\u3070\u3001\u30b0\u30eb\u30fc\u30d7\u306e\u72b6\u614b\u306f\u30aa\u30f3\u306b\u306a\u308a\u307e\u3059\u3002", @@ -13,10 +14,12 @@ "cover": { "data": { "entities": "\u30b0\u30eb\u30fc\u30d7\u306e\u30e1\u30f3\u30d0\u30fc", + "hide_members": "\u30e1\u30f3\u30d0\u30fc\u3092\u975e\u8868\u793a\u306b\u3059\u308b", "name": "\u30b0\u30eb\u30fc\u30d7\u540d", "title": "\u65b0\u3057\u3044\u30b0\u30eb\u30fc\u30d7" }, - "description": "\u30b0\u30eb\u30fc\u30d7\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9078\u629e" + "description": "\u30b0\u30eb\u30fc\u30d7\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9078\u629e", + "title": "\u65b0\u3057\u3044\u30b0\u30eb\u30fc\u30d7" }, "cover_options": { "data": { @@ -27,10 +30,12 @@ "fan": { "data": { "entities": "\u30b0\u30eb\u30fc\u30d7\u306e\u30e1\u30f3\u30d0\u30fc", + "hide_members": "\u30e1\u30f3\u30d0\u30fc\u3092\u975e\u8868\u793a\u306b\u3059\u308b", "name": "\u30b0\u30eb\u30fc\u30d7\u540d", "title": "\u65b0\u3057\u3044\u30b0\u30eb\u30fc\u30d7" }, - "description": "\u30b0\u30eb\u30fc\u30d7\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9078\u629e" + "description": "\u30b0\u30eb\u30fc\u30d7\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9078\u629e", + "title": "\u65b0\u3057\u3044\u30b0\u30eb\u30fc\u30d7" }, "fan_options": { "data": { @@ -46,11 +51,14 @@ }, "light": { "data": { + "all": "\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3", "entities": "\u30b0\u30eb\u30fc\u30d7\u306e\u30e1\u30f3\u30d0\u30fc", + "hide_members": "\u30e1\u30f3\u30d0\u30fc\u3092\u975e\u8868\u793a\u306b\u3059\u308b", "name": "\u30b0\u30eb\u30fc\u30d7\u540d", "title": "\u65b0\u3057\u3044\u30b0\u30eb\u30fc\u30d7" }, - "description": "\u30b0\u30eb\u30fc\u30d7\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9078\u629e" + "description": "\u30b0\u30eb\u30fc\u30d7\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9078\u629e", + "title": "\u65b0\u3057\u3044\u30b0\u30eb\u30fc\u30d7" }, "light_options": { "data": { @@ -58,13 +66,23 @@ }, "description": "\u30b0\u30eb\u30fc\u30d7\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9078\u629e" }, + "lock": { + "data": { + "entities": "\u30e1\u30f3\u30d0\u30fc", + "hide_members": "\u30e1\u30f3\u30d0\u30fc\u3092\u975e\u8868\u793a\u306b\u3059\u308b", + "name": "\u540d\u524d" + }, + "title": "\u65b0\u3057\u3044\u30b0\u30eb\u30fc\u30d7" + }, "media_player": { "data": { "entities": "\u30b0\u30eb\u30fc\u30d7\u306e\u30e1\u30f3\u30d0\u30fc", + "hide_members": "\u30e1\u30f3\u30d0\u30fc\u3092\u975e\u8868\u793a\u306b\u3059\u308b", "name": "\u30b0\u30eb\u30fc\u30d7\u540d", "title": "\u65b0\u3057\u3044\u30b0\u30eb\u30fc\u30d7" }, - "description": "\u30b0\u30eb\u30fc\u30d7\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9078\u629e" + "description": "\u30b0\u30eb\u30fc\u30d7\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9078\u629e", + "title": "\u65b0\u3057\u3044\u30b0\u30eb\u30fc\u30d7" }, "media_player_options": { "data": { @@ -72,41 +90,108 @@ }, "description": "\u30b0\u30eb\u30fc\u30d7\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9078\u629e" }, + "switch": { + "data": { + "entities": "\u30e1\u30f3\u30d0\u30fc", + "hide_members": "\u30e1\u30f3\u30d0\u30fc\u3092\u975e\u8868\u793a\u306b\u3059\u308b", + "name": "\u540d\u524d" + }, + "title": "\u65b0\u3057\u3044\u30b0\u30eb\u30fc\u30d7" + }, "user": { "data": { "group_type": "\u30b0\u30eb\u30fc\u30d7\u30bf\u30a4\u30d7" }, + "description": "\u30b0\u30eb\u30fc\u30d7\u306e\u7a2e\u985e\u3092\u9078\u629e", + "menu_options": { + "binary_sensor": "\u30d0\u30a4\u30ca\u30ea\u30fc\u30bb\u30f3\u30b5\u30fc\u30b0\u30eb\u30fc\u30d7", + "cover": "\u30ab\u30d0\u30fc\u30b0\u30eb\u30fc\u30d7", + "fan": "\u30d5\u30a1\u30f3\u30b0\u30eb\u30fc\u30d7", + "light": "\u30e9\u30a4\u30c8(Light)\u30b0\u30eb\u30fc\u30d7", + "lock": "\u30ed\u30c3\u30af\u30b0\u30eb\u30fc\u30d7", + "media_player": "\u30e1\u30c7\u30a3\u30a2\u30d7\u30ec\u30fc\u30e4\u30fc\u30b0\u30eb\u30fc\u30d7", + "switch": "\u30b9\u30a4\u30c3\u30c1\u30b0\u30eb\u30fc\u30d7" + }, "title": "\u65b0\u3057\u3044\u30b0\u30eb\u30fc\u30d7" } } }, "options": { "step": { + "binary_sensor": { + "data": { + "all": "\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3", + "entities": "\u30e1\u30f3\u30d0\u30fc", + "hide_members": "\u30e1\u30f3\u30d0\u30fc\u3092\u975e\u8868\u793a\u306b\u3059\u308b" + }, + "description": "\"\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\" \u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u30b0\u30eb\u30fc\u30d7\u306e\u72b6\u614b\u306f\u3001\u3059\u3079\u3066\u306e\u30e1\u30f3\u30d0\u30fc\u304c\u30aa\u30f3\u306e\u5834\u5408\u306b\u306e\u307f\u30aa\u30f3\u306b\u306a\u308a\u307e\u3059\u3002 \"\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\" \u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u3044\u305a\u308c\u304b\u306e\u30e1\u30f3\u30d0\u30fc\u304c\u30aa\u30f3\u3067\u3042\u308c\u3070\u3001\u30b0\u30eb\u30fc\u30d7\u306e\u72b6\u614b\u306f\u30aa\u30f3\u306b\u306a\u308a\u307e\u3059\u3002" + }, "binary_sensor_options": { "data": { "all": "\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3", "entities": "\u30e1\u30f3\u30d0\u30fc" } }, + "cover": { + "data": { + "entities": "\u30e1\u30f3\u30d0\u30fc", + "hide_members": "\u30e1\u30f3\u30d0\u30fc\u3092\u975e\u8868\u793a\u306b\u3059\u308b" + } + }, "cover_options": { "data": { "entities": "\u30e1\u30f3\u30d0\u30fc" } }, + "fan": { + "data": { + "entities": "\u30e1\u30f3\u30d0\u30fc", + "hide_members": "\u30e1\u30f3\u30d0\u30fc\u3092\u975e\u8868\u793a\u306b\u3059\u308b" + } + }, "fan_options": { "data": { "entities": "\u30e1\u30f3\u30d0\u30fc" } }, + "light": { + "data": { + "all": "\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3", + "entities": "\u30e1\u30f3\u30d0\u30fc", + "hide_members": "\u30e1\u30f3\u30d0\u30fc\u3092\u975e\u8868\u793a\u306b\u3059\u308b" + }, + "description": "\"\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\" \u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u30b0\u30eb\u30fc\u30d7\u306e\u72b6\u614b\u306f\u3001\u3059\u3079\u3066\u306e\u30e1\u30f3\u30d0\u30fc\u304c\u30aa\u30f3\u306e\u5834\u5408\u306b\u306e\u307f\u30aa\u30f3\u306b\u306a\u308a\u307e\u3059\u3002 \"\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\" \u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u3044\u305a\u308c\u304b\u306e\u30e1\u30f3\u30d0\u30fc\u304c\u30aa\u30f3\u3067\u3042\u308c\u3070\u3001\u30b0\u30eb\u30fc\u30d7\u306e\u72b6\u614b\u306f\u30aa\u30f3\u306b\u306a\u308a\u307e\u3059\u3002" + }, "light_options": { "data": { + "all": "\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3", "entities": "\u30e1\u30f3\u30d0\u30fc" } }, + "lock": { + "data": { + "entities": "\u30e1\u30f3\u30d0\u30fc", + "hide_members": "\u30e1\u30f3\u30d0\u30fc\u3092\u975e\u8868\u793a\u306b\u3059\u308b" + } + }, + "media_player": { + "data": { + "entities": "\u30e1\u30f3\u30d0\u30fc", + "hide_members": "\u30e1\u30f3\u30d0\u30fc\u3092\u975e\u8868\u793a\u306b\u3059\u308b" + } + }, "media_player_options": { "data": { "entities": "\u30e1\u30f3\u30d0\u30fc" } + }, + "switch": { + "data": { + "all": "\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3", + "entities": "\u30e1\u30f3\u30d0\u30fc", + "hide_members": "\u30e1\u30f3\u30d0\u30fc\u3092\u975e\u8868\u793a\u306b\u3059\u308b" + }, + "description": "\"\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\" \u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u30b0\u30eb\u30fc\u30d7\u306e\u72b6\u614b\u306f\u3001\u3059\u3079\u3066\u306e\u30e1\u30f3\u30d0\u30fc\u304c\u30aa\u30f3\u306e\u5834\u5408\u306b\u306e\u307f\u30aa\u30f3\u306b\u306a\u308a\u307e\u3059\u3002 \"\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\" \u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u3044\u305a\u308c\u304b\u306e\u30e1\u30f3\u30d0\u30fc\u304c\u30aa\u30f3\u3067\u3042\u308c\u3070\u3001\u30b0\u30eb\u30fc\u30d7\u306e\u72b6\u614b\u306f\u30aa\u30f3\u306b\u306a\u308a\u307e\u3059\u3002" } } }, diff --git a/homeassistant/components/group/translations/nl.json b/homeassistant/components/group/translations/nl.json index c636c56f744..e670e2e853a 100644 --- a/homeassistant/components/group/translations/nl.json +++ b/homeassistant/components/group/translations/nl.json @@ -5,18 +5,21 @@ "data": { "all": "Alle entiteiten", "entities": "Leden", + "hide_members": "Verberg leden", "name": "Naam" }, "description": "Als \"alle entiteiten\" is ingeschakeld, is de groep alleen ingeschakeld als alle leden zijn ingeschakeld. Als \"all entities\" is uitgeschakeld, is de groep ingeschakeld als een lid is ingeschakeld.", - "title": "Nieuwe groep" + "title": "Groep toevoegen" }, "cover": { "data": { "entities": "Leden", + "hide_members": "Verberg leden", "name": "Naam", - "title": "Nieuwe groep" + "title": "Groep toevoegen" }, - "description": "Selecteer groepsopties" + "description": "Selecteer groepsopties", + "title": "Groep toevoegen" }, "cover_options": { "data": { @@ -27,10 +30,12 @@ "fan": { "data": { "entities": "Leden", + "hide_members": "Verberg leden", "name": "Naam", - "title": "Nieuwe groep" + "title": "Groep toevoegen" }, - "description": "Selecteer groepsopties" + "description": "Selecteer groepsopties", + "title": "Groep toevoegen" }, "fan_options": { "data": { @@ -46,11 +51,14 @@ }, "light": { "data": { + "all": "Alle entiteiten", "entities": "Leden", + "hide_members": "Verberg leden", "name": "Naam", - "title": "Nieuwe groep" + "title": "Groep toevoegen" }, - "description": "Selecteer groepsopties" + "description": "Als \"alle entiteiten\" is ingeschakeld, is de groep alleen ingeschakeld als alle leden zijn ingeschakeld. Als \"all entities\" is uitgeschakeld, is de groep ingeschakeld als een lid is ingeschakeld.", + "title": "Groep toevoegen" }, "light_options": { "data": { @@ -58,13 +66,23 @@ }, "description": "Selecteer groepsopties" }, + "lock": { + "data": { + "entities": "Leden", + "hide_members": "Verberg leden", + "name": "Naam" + }, + "title": "Groep toevoegen" + }, "media_player": { "data": { "entities": "Leden", + "hide_members": "Verberg leden", "name": "Naam", - "title": "Nieuwe groep" + "title": "Groep toevoegen" }, - "description": "Selecteer groepsopties" + "description": "Selecteer groepsopties", + "title": "Groep toevoegen" }, "media_player_options": { "data": { @@ -72,41 +90,108 @@ }, "description": "Selecteer groepsopties" }, + "switch": { + "data": { + "entities": "Leden", + "hide_members": "Verberg leden", + "name": "Naam" + }, + "title": "Nieuwe groep" + }, "user": { "data": { "group_type": "Groepstype" }, - "title": "Nieuwe groep" + "description": "Met groepen kunt u een nieuwe entiteit cre\u00ebren die meerdere entiteiten van hetzelfde type vertegenwoordigt.", + "menu_options": { + "binary_sensor": "Binaire sensorgroep", + "cover": "Rolluikgroep", + "fan": "Ventilatorgroep", + "light": "Lichtgroep", + "lock": "Groep vergrendelen", + "media_player": "Mediaspelergroep", + "switch": "Groep wisselen" + }, + "title": "Groep toevoegen" } } }, "options": { "step": { + "binary_sensor": { + "data": { + "all": "Alle entiteiten", + "entities": "Leden", + "hide_members": "Verberg leden" + }, + "description": "Als \"alle entiteiten\" is ingeschakeld, is de groep alleen ingeschakeld als alle leden zijn ingeschakeld. Als \"all entities\" is uitgeschakeld, is de groep ingeschakeld als een lid is ingeschakeld." + }, "binary_sensor_options": { "data": { "all": "Alle entiteiten", "entities": "Leden" } }, + "cover": { + "data": { + "entities": "Leden", + "hide_members": "Verberg leden" + } + }, "cover_options": { "data": { "entities": "Leden" } }, + "fan": { + "data": { + "entities": "Leden", + "hide_members": "Verberg leden" + } + }, "fan_options": { "data": { "entities": "Leden" } }, + "light": { + "data": { + "all": "Alle entiteiten", + "entities": "Leden", + "hide_members": "Verberg leden" + }, + "description": "Als \"alle entiteiten\" is ingeschakeld, is de groep alleen ingeschakeld als alle leden zijn ingeschakeld. Als \"all entities\" is uitgeschakeld, is de groep ingeschakeld als een lid is ingeschakeld." + }, "light_options": { "data": { + "all": "Alle entiteiten", "entities": "Leden" } }, + "lock": { + "data": { + "entities": "Leden", + "hide_members": "Verberg leden" + } + }, + "media_player": { + "data": { + "entities": "Leden", + "hide_members": "Verberg leden" + } + }, "media_player_options": { "data": { "entities": "Leden" } + }, + "switch": { + "data": { + "all": "Alle entiteiten", + "entities": "Leden", + "hide_members": "Verberg leden" + }, + "description": "Als \"alle entitieiten\" is ingeschakeld, is de status van de groep alleen ingeschakeld als alle leden zijn ingeschakeld. Als \" alle entititeiten\" is uitgeschakeld, is de status van de groep ingeschakeld als een lid is ingeschakeld." } } }, diff --git a/homeassistant/components/group/translations/no.json b/homeassistant/components/group/translations/no.json index 0046479d686..016a9c8e934 100644 --- a/homeassistant/components/group/translations/no.json +++ b/homeassistant/components/group/translations/no.json @@ -5,18 +5,21 @@ "data": { "all": "Alle enheter", "entities": "Medlemmer", + "hide_members": "Skjul medlemmer", "name": "Navn" }, "description": "Hvis \"alle enheter\" er aktivert, er gruppens tilstand p\u00e5 bare hvis alle medlemmene er p\u00e5. Hvis \"alle enheter\" er deaktivert, er gruppens tilstand p\u00e5 hvis et medlem er p\u00e5.", - "title": "Ny gruppe" + "title": "Legg til gruppe" }, "cover": { "data": { "entities": "Medlemmer", + "hide_members": "Skjul medlemmer", "name": "Navn", - "title": "Ny gruppe" + "title": "Legg til gruppe" }, - "description": "Velg gruppealternativer" + "description": "Velg gruppealternativer", + "title": "Legg til gruppe" }, "cover_options": { "data": { @@ -27,10 +30,12 @@ "fan": { "data": { "entities": "Medlemmer", + "hide_members": "Skjul medlemmer", "name": "Navn", - "title": "Ny gruppe" + "title": "Legg til gruppe" }, - "description": "Velg gruppealternativer" + "description": "Velg gruppealternativer", + "title": "Legg til gruppe" }, "fan_options": { "data": { @@ -46,11 +51,14 @@ }, "light": { "data": { + "all": "Alle enheter", "entities": "Medlemmer", + "hide_members": "Skjul medlemmer", "name": "Navn", - "title": "Ny gruppe" + "title": "Legg til gruppe" }, - "description": "Velg gruppealternativer" + "description": "Hvis \"alle enheter\" er aktivert, er gruppens tilstand p\u00e5 bare hvis alle medlemmene er p\u00e5. Hvis \"alle enheter\" er deaktivert, er gruppens tilstand p\u00e5 hvis et medlem er p\u00e5.", + "title": "Legg til gruppe" }, "light_options": { "data": { @@ -58,13 +66,23 @@ }, "description": "Velg gruppealternativer" }, + "lock": { + "data": { + "entities": "Medlemmer", + "hide_members": "Skjul medlemmer", + "name": "Navn" + }, + "title": "Legg til gruppe" + }, "media_player": { "data": { "entities": "Medlemmer", + "hide_members": "Skjul medlemmer", "name": "Navn", - "title": "Ny gruppe" + "title": "Legg til gruppe" }, - "description": "Velg gruppealternativer" + "description": "Velg gruppealternativer", + "title": "Legg til gruppe" }, "media_player_options": { "data": { @@ -72,41 +90,108 @@ }, "description": "Velg gruppealternativer" }, + "switch": { + "data": { + "entities": "Medlemmer", + "hide_members": "Skjul medlemmer", + "name": "Navn" + }, + "title": "Legg til gruppe" + }, "user": { "data": { "group_type": "Gruppetype" }, - "title": "Ny gruppe" + "description": "Grupper lar deg opprette en ny enhet som representerer flere enheter av samme type.", + "menu_options": { + "binary_sensor": "Bin\u00e6r sensorgruppe", + "cover": "Dekkgruppe", + "fan": "Viftegruppe", + "light": "Lys-gruppen", + "lock": "L\u00e5s gruppe", + "media_player": "Mediespillergruppe", + "switch": "Bytt gruppe" + }, + "title": "Legg til gruppe" } } }, "options": { "step": { + "binary_sensor": { + "data": { + "all": "Alle enheter", + "entities": "Medlemmer", + "hide_members": "Skjul medlemmer" + }, + "description": "Hvis \"alle enheter\" er aktivert, er gruppens tilstand p\u00e5 bare hvis alle medlemmene er p\u00e5. Hvis \"alle enheter\" er deaktivert, er gruppens tilstand p\u00e5 hvis et medlem er p\u00e5." + }, "binary_sensor_options": { "data": { "all": "Alle enheter", "entities": "Medlemmer" } }, + "cover": { + "data": { + "entities": "Medlemmer", + "hide_members": "Skjul medlemmer" + } + }, "cover_options": { "data": { "entities": "Medlemmer" } }, + "fan": { + "data": { + "entities": "Medlemmer", + "hide_members": "Skjul medlemmer" + } + }, "fan_options": { "data": { "entities": "Medlemmer" } }, + "light": { + "data": { + "all": "Alle enheter", + "entities": "Medlemmer", + "hide_members": "Skjul medlemmer" + }, + "description": "Hvis \"alle enheter\" er aktivert, er gruppens tilstand p\u00e5 bare hvis alle medlemmene er p\u00e5. Hvis \"alle enheter\" er deaktivert, er gruppens tilstand p\u00e5 hvis et medlem er p\u00e5." + }, "light_options": { "data": { + "all": "Alle enheter", "entities": "Medlemmer" } }, + "lock": { + "data": { + "entities": "Medlemmer", + "hide_members": "Skjul medlemmer" + } + }, + "media_player": { + "data": { + "entities": "Medlemmer", + "hide_members": "Skjul medlemmer" + } + }, "media_player_options": { "data": { "entities": "Medlemmer" } + }, + "switch": { + "data": { + "all": "Alle enheter", + "entities": "Medlemmer", + "hide_members": "Skjul medlemmer" + }, + "description": "Hvis \"alle enheter\" er aktivert, er gruppens tilstand p\u00e5 bare hvis alle medlemmene er p\u00e5. Hvis \"alle enheter\" er deaktivert, er gruppens tilstand p\u00e5 hvis et medlem er p\u00e5." } } }, diff --git a/homeassistant/components/group/translations/pl.json b/homeassistant/components/group/translations/pl.json index 08595dd8a59..84cbd9f7b4d 100644 --- a/homeassistant/components/group/translations/pl.json +++ b/homeassistant/components/group/translations/pl.json @@ -5,18 +5,21 @@ "data": { "all": "Wszystkie encje", "entities": "Encje", + "hide_members": "Ukryj encje", "name": "Nazwa" }, - "description": "Je\u015bli \u201ewszystkie encje\u201d jest w\u0142\u0105czone, stan grupy jest w\u0142\u0105czony tylko wtedy, gdy wszystkie encje s\u0105 w\u0142\u0105czone. Je\u015bli \u201ewszystkie encje\u201d s\u0105 wy\u0142\u0105czone, stan grupy jest w\u0142\u0105czony, je\u015bli kt\u00f3rakolwiek encja jest w\u0142\u0105czona.", - "title": "Nowa grupa" + "description": "Je\u015bli \u201ewszystkie encje\u201d jest w\u0142\u0105czone, stan grupy jest w\u0142\u0105czony tylko wtedy, gdy wszystkie encje s\u0105 w\u0142\u0105czone. Je\u015bli \u201ewszystkie encje\u201d jest wy\u0142\u0105czone, stan grupy jest w\u0142\u0105czony, je\u015bli kt\u00f3rakolwiek encja jest w\u0142\u0105czona.", + "title": "Dodaj grup\u0119" }, "cover": { "data": { "entities": "Encje", + "hide_members": "Ukryj encje", "name": "Nazwa", - "title": "Nowa grupa" + "title": "Dodaj grup\u0119" }, - "description": "Wybierz opcje grupy" + "description": "Wybierz opcje grupy", + "title": "Dodaj grup\u0119" }, "cover_options": { "data": { @@ -27,10 +30,12 @@ "fan": { "data": { "entities": "Encje", + "hide_members": "Ukryj encje", "name": "Nazwa", - "title": "Nowa grupa" + "title": "Dodaj grup\u0119" }, - "description": "Wybierz opcje grupy" + "description": "Wybierz opcje grupy", + "title": "Dodaj grup\u0119" }, "fan_options": { "data": { @@ -46,11 +51,14 @@ }, "light": { "data": { + "all": "Wszystkie encje", "entities": "Encje", + "hide_members": "Ukryj encje", "name": "Nazwa", - "title": "Nowa grupa" + "title": "Dodaj grup\u0119" }, - "description": "Wybierz opcje grupy" + "description": "Je\u015bli \u201ewszystkie encje\u201d jest w\u0142\u0105czone, stan grupy jest w\u0142\u0105czony tylko wtedy, gdy wszystkie encje s\u0105 w\u0142\u0105czone. Je\u015bli \u201ewszystkie encje\u201d jest wy\u0142\u0105czone, stan grupy jest w\u0142\u0105czony, je\u015bli kt\u00f3rakolwiek encja jest w\u0142\u0105czona.", + "title": "Dodaj grup\u0119" }, "light_options": { "data": { @@ -58,13 +66,23 @@ }, "description": "Wybierz opcje grupy" }, + "lock": { + "data": { + "entities": "Encje", + "hide_members": "Ukryj encje", + "name": "Nazwa" + }, + "title": "Dodaj grup\u0119" + }, "media_player": { "data": { "entities": "Encje", + "hide_members": "Ukryj encje", "name": "Nazwa", - "title": "Nowa grupa" + "title": "Dodaj grup\u0119" }, - "description": "Wybierz opcje grupy" + "description": "Wybierz opcje grupy", + "title": "Dodaj grup\u0119" }, "media_player_options": { "data": { @@ -72,41 +90,108 @@ }, "description": "Wybierz opcje grupy" }, + "switch": { + "data": { + "entities": "Encje", + "hide_members": "Ukryj encje", + "name": "Nazwa" + }, + "title": "Dodaj grup\u0119" + }, "user": { "data": { "group_type": "Rodzaj grupy" }, - "title": "Nowa grupa" + "description": "Grupy umo\u017cliwiaj\u0105 tworzenie nowej encji, kt\u00f3ra reprezentuje wiele encji tego samego typu.", + "menu_options": { + "binary_sensor": "Grupa sensor\u00f3w binarnych", + "cover": "Grupa rolet", + "fan": "Grupa wentylator\u00f3w", + "light": "Grupa \u015bwiate\u0142", + "lock": "Grupa zamk\u00f3w", + "media_player": "Grupa odtwarzaczy multimedialnych", + "switch": "Grupa prze\u0142\u0105cznik\u00f3w" + }, + "title": "Dodaj grup\u0119" } } }, "options": { "step": { + "binary_sensor": { + "data": { + "all": "Wszystkie encje", + "entities": "Encje", + "hide_members": "Ukryj encje" + }, + "description": "Je\u015bli \u201ewszystkie encje\u201d jest w\u0142\u0105czone, stan grupy jest w\u0142\u0105czony tylko wtedy, gdy wszystkie encje s\u0105 w\u0142\u0105czone. Je\u015bli \u201ewszystkie encje\u201d jest wy\u0142\u0105czone, stan grupy jest w\u0142\u0105czony, je\u015bli kt\u00f3rakolwiek encja jest w\u0142\u0105czona." + }, "binary_sensor_options": { "data": { "all": "Wszystkie encje", "entities": "Encje" } }, + "cover": { + "data": { + "entities": "Encje", + "hide_members": "Ukryj encje" + } + }, "cover_options": { "data": { "entities": "Encje" } }, + "fan": { + "data": { + "entities": "Encje", + "hide_members": "Ukryj encje" + } + }, "fan_options": { "data": { "entities": "Encje" } }, + "light": { + "data": { + "all": "Wszystkie encje", + "entities": "Encje", + "hide_members": "Ukryj encje" + }, + "description": "Je\u015bli \u201ewszystkie encje\u201d jest w\u0142\u0105czone, stan grupy jest w\u0142\u0105czony tylko wtedy, gdy wszystkie encje s\u0105 w\u0142\u0105czone. Je\u015bli \u201ewszystkie encje\u201d jest wy\u0142\u0105czone, stan grupy jest w\u0142\u0105czony, je\u015bli kt\u00f3rakolwiek encja jest w\u0142\u0105czona." + }, "light_options": { "data": { + "all": "Wszystkie encje", "entities": "Encje" } }, + "lock": { + "data": { + "entities": "Encje", + "hide_members": "Ukryj encje" + } + }, + "media_player": { + "data": { + "entities": "Encje", + "hide_members": "Ukryj encje" + } + }, "media_player_options": { "data": { "entities": "Encje" } + }, + "switch": { + "data": { + "all": "Wszystkie encje", + "entities": "Encje", + "hide_members": "Ukryj encje" + }, + "description": "Je\u015bli \u201ewszystkie encje\u201d jest w\u0142\u0105czone, stan grupy jest w\u0142\u0105czony tylko wtedy, gdy wszystkie encje s\u0105 w\u0142\u0105czone. Je\u015bli \u201ewszystkie encje\u201d jest wy\u0142\u0105czone, stan grupy jest w\u0142\u0105czony, je\u015bli kt\u00f3rakolwiek encja jest w\u0142\u0105czona." } } }, diff --git a/homeassistant/components/group/translations/pt-BR.json b/homeassistant/components/group/translations/pt-BR.json index 5959ba66da7..0987b41f4ae 100644 --- a/homeassistant/components/group/translations/pt-BR.json +++ b/homeassistant/components/group/translations/pt-BR.json @@ -5,18 +5,21 @@ "data": { "all": "Todas as entidades", "entities": "Membros", + "hide_members": "Ocultar membros", "name": "Nome" }, "description": "Se \"todas as entidades\" estiver habilitada, o estado do grupo estar\u00e1 ativado somente se todos os membros estiverem ativados. Se \"todas as entidades\" estiver desabilitada, o estado do grupo estar\u00e1 ativado se algum membro estiver ativado.", - "title": "Novo grupo" + "title": "Adicionar grupo" }, "cover": { "data": { "entities": "Membros", + "hide_members": "Ocultar membros", "name": "Nome", - "title": "Novo grupo" + "title": "Adicionar grupo" }, - "description": "Selecione as op\u00e7\u00f5es do grupo" + "description": "Selecione as op\u00e7\u00f5es do grupo", + "title": "Adicionar grupo" }, "cover_options": { "data": { @@ -27,10 +30,12 @@ "fan": { "data": { "entities": "Membros", + "hide_members": "Ocultar membros", "name": "Nome", - "title": "Novo grupo" + "title": "Adicionar grupo" }, - "description": "Selecione as op\u00e7\u00f5es do grupo" + "description": "Selecione as op\u00e7\u00f5es do grupo", + "title": "Adicionar grupo" }, "fan_options": { "data": { @@ -46,11 +51,14 @@ }, "light": { "data": { + "all": "Todas as entidades", "entities": "Membros", + "hide_members": "Ocultar membros", "name": "Nome", - "title": "Novo grupo" + "title": "Adicionar grupo" }, - "description": "Selecione as op\u00e7\u00f5es do grupo" + "description": "Se \"todas as entidades\" estiver habilitada, o estado do grupo estar\u00e1 ativado somente se todos os membros estiverem ativados. Se \"todas as entidades\" estiver desabilitada, o estado do grupo estar\u00e1 ativado se algum membro estiver ativado.", + "title": "Adicionar grupo" }, "light_options": { "data": { @@ -58,13 +66,23 @@ }, "description": "Selecione as op\u00e7\u00f5es do grupo" }, + "lock": { + "data": { + "entities": "Membros", + "hide_members": "Ocultar membros", + "name": "Nome" + }, + "title": "Adicionar grupo" + }, "media_player": { "data": { "entities": "Membros", + "hide_members": "Ocultar membros", "name": "Nome", - "title": "Novo grupo" + "title": "Adicionar grupo" }, - "description": "Selecione as op\u00e7\u00f5es do grupo" + "description": "Selecione as op\u00e7\u00f5es do grupo", + "title": "Adicionar grupo" }, "media_player_options": { "data": { @@ -72,41 +90,108 @@ }, "description": "Selecione as op\u00e7\u00f5es do grupo" }, + "switch": { + "data": { + "entities": "Membros", + "hide_members": "Ocultar membros", + "name": "Nome" + }, + "title": "Adicionar grupo" + }, "user": { "data": { "group_type": "Tipo de grupo" }, - "title": "Novo grupo" + "description": "Os grupos permitem que voc\u00ea crie uma nova entidade que representa v\u00e1rias entidades do mesmo tipo.", + "menu_options": { + "binary_sensor": "Grupo de sensores bin\u00e1rios", + "cover": "Grupo de persianas", + "fan": "Grupo de ventiladores", + "light": "Grupo de l\u00e2mpadas", + "lock": "Grupo de fechaduras", + "media_player": "Grupo de reprodutores de m\u00eddia", + "switch": "Grupo de interruptores" + }, + "title": "Adicionar grupo" } } }, "options": { "step": { + "binary_sensor": { + "data": { + "all": "Todas as entidades", + "entities": "Membros", + "hide_members": "Ocultar membros" + }, + "description": "Se \"todas as entidades\" estiver habilitada, o estado do grupo estar\u00e1 ativado somente se todos os membros estiverem ativados. Se \"todas as entidades\" estiver desabilitada, o estado do grupo estar\u00e1 ativado se algum membro estiver ativado." + }, "binary_sensor_options": { "data": { "all": "Todas as entidades", "entities": "Membros" } }, + "cover": { + "data": { + "entities": "Membros", + "hide_members": "Ocultar membros" + } + }, "cover_options": { "data": { "entities": "Membros" } }, + "fan": { + "data": { + "entities": "Membros", + "hide_members": "Ocultar membros" + } + }, "fan_options": { "data": { "entities": "Membros" } }, + "light": { + "data": { + "all": "Todas as entidades", + "entities": "Membros", + "hide_members": "Ocultar membros" + }, + "description": "Se \"todas as entidades\" estiver habilitada, o estado do grupo estar\u00e1 ativado somente se todos os membros estiverem ativados. Se \"todas as entidades\" estiver desabilitada, o estado do grupo estar\u00e1 ativado se algum membro estiver ativado." + }, "light_options": { "data": { + "all": "Todas as entidades", "entities": "Membros" } }, + "lock": { + "data": { + "entities": "Membros", + "hide_members": "Ocultar membros" + } + }, + "media_player": { + "data": { + "entities": "Membros", + "hide_members": "Ocultar membros" + } + }, "media_player_options": { "data": { "entities": "Membros" } + }, + "switch": { + "data": { + "all": "Todas as entidades", + "entities": "Membros", + "hide_members": "Ocultar membros" + }, + "description": "Se \"todas as entidades\" estiver habilitada, o estado do grupo estar\u00e1 ativado somente se todos os membros estiverem ativados. Se \"todas as entidades\" estiver desabilitada, o estado do grupo estar\u00e1 ativado se algum membro estiver ativado." } } }, diff --git a/homeassistant/components/group/translations/ru.json b/homeassistant/components/group/translations/ru.json index baba258b654..0ba6d79900e 100644 --- a/homeassistant/components/group/translations/ru.json +++ b/homeassistant/components/group/translations/ru.json @@ -5,18 +5,21 @@ "data": { "all": "\u0412\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b", "entities": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438", + "hide_members": "\u0421\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432", "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435" }, "description": "\u0415\u0441\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \"\u0412\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b\", \u0433\u0440\u0443\u043f\u043f\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \"\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e\" \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432\u0441\u0435 \u0435\u0451 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0433\u0440\u0443\u043f\u043f\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \"\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e\" \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u0435\u0451 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432.", - "title": "\u041d\u043e\u0432\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430" + "title": "\u0413\u0440\u0443\u043f\u043f\u0430" }, "cover": { "data": { "entities": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438", + "hide_members": "\u0421\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432", "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", - "title": "\u041d\u043e\u0432\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430" + "title": "\u0413\u0440\u0443\u043f\u043f\u0430" }, - "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0433\u0440\u0443\u043f\u043f\u044b." + "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0433\u0440\u0443\u043f\u043f\u044b.", + "title": "\u0413\u0440\u0443\u043f\u043f\u0430" }, "cover_options": { "data": { @@ -27,10 +30,12 @@ "fan": { "data": { "entities": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438", + "hide_members": "\u0421\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432", "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", - "title": "\u041d\u043e\u0432\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430" + "title": "\u0413\u0440\u0443\u043f\u043f\u0430" }, - "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0433\u0440\u0443\u043f\u043f\u044b." + "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0433\u0440\u0443\u043f\u043f\u044b.", + "title": "\u0413\u0440\u0443\u043f\u043f\u0430" }, "fan_options": { "data": { @@ -46,11 +51,14 @@ }, "light": { "data": { + "all": "\u0412\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b", "entities": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438", + "hide_members": "\u0421\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432", "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", - "title": "\u041d\u043e\u0432\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430" + "title": "\u0413\u0440\u0443\u043f\u043f\u0430" }, - "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0433\u0440\u0443\u043f\u043f\u044b." + "description": "\u0415\u0441\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \"\u0412\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b\", \u0433\u0440\u0443\u043f\u043f\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \"\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e\" \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432\u0441\u0435 \u0435\u0451 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0433\u0440\u0443\u043f\u043f\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \"\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e\" \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u0435\u0451 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432.", + "title": "\u0413\u0440\u0443\u043f\u043f\u0430" }, "light_options": { "data": { @@ -58,13 +66,23 @@ }, "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0433\u0440\u0443\u043f\u043f\u044b." }, + "lock": { + "data": { + "entities": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438", + "hide_members": "\u0421\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432", + "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435" + }, + "title": "\u0413\u0440\u0443\u043f\u043f\u0430" + }, "media_player": { "data": { "entities": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438", + "hide_members": "\u0421\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432", "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", - "title": "\u041d\u043e\u0432\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430" + "title": "\u0413\u0440\u0443\u043f\u043f\u0430" }, - "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0433\u0440\u0443\u043f\u043f\u044b." + "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0433\u0440\u0443\u043f\u043f\u044b.", + "title": "\u0413\u0440\u0443\u043f\u043f\u0430" }, "media_player_options": { "data": { @@ -72,41 +90,108 @@ }, "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0433\u0440\u0443\u043f\u043f\u044b." }, + "switch": { + "data": { + "entities": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438", + "hide_members": "\u0421\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432", + "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435" + }, + "title": "\u0413\u0440\u0443\u043f\u043f\u0430" + }, "user": { "data": { "group_type": "\u0422\u0438\u043f \u0433\u0440\u0443\u043f\u043f\u044b" }, - "title": "\u041d\u043e\u0432\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430" + "description": "\u0413\u0440\u0443\u043f\u043f\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430.", + "menu_options": { + "binary_sensor": "\u0413\u0440\u0443\u043f\u043f\u0430 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432", + "cover": "\u0413\u0440\u0443\u043f\u043f\u0430 \u0448\u0442\u043e\u0440 \u0438\u043b\u0438 \u0436\u0430\u043b\u044e\u0437\u0438", + "fan": "\u0413\u0440\u0443\u043f\u043f\u0430 \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432", + "light": "\u0413\u0440\u0443\u043f\u043f\u0430 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f", + "lock": "\u0413\u0440\u0443\u043f\u043f\u0430 \u0437\u0430\u043c\u043a\u043e\u0432", + "media_player": "\u0413\u0440\u0443\u043f\u043f\u0430 \u043c\u0435\u0434\u0438\u0430\u043f\u043b\u0435\u0435\u0440\u043e\u0432", + "switch": "\u0413\u0440\u0443\u043f\u043f\u0430 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0435\u0439" + }, + "title": "\u0413\u0440\u0443\u043f\u043f\u0430" } } }, "options": { "step": { + "binary_sensor": { + "data": { + "all": "\u0412\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b", + "entities": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438", + "hide_members": "\u0421\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432" + }, + "description": "\u0415\u0441\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \"\u0412\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b\", \u0433\u0440\u0443\u043f\u043f\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \"\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e\" \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432\u0441\u0435 \u0435\u0451 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0433\u0440\u0443\u043f\u043f\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \"\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e\" \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u0435\u0451 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432." + }, "binary_sensor_options": { "data": { "all": "\u0412\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b", "entities": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438" } }, + "cover": { + "data": { + "entities": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438", + "hide_members": "\u0421\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432" + } + }, "cover_options": { "data": { "entities": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438" } }, + "fan": { + "data": { + "entities": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438", + "hide_members": "\u0421\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432" + } + }, "fan_options": { "data": { "entities": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438" } }, + "light": { + "data": { + "all": "\u0412\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b", + "entities": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438", + "hide_members": "\u0421\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432" + }, + "description": "\u0415\u0441\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \"\u0412\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b\", \u0433\u0440\u0443\u043f\u043f\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \"\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e\" \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432\u0441\u0435 \u0435\u0451 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0433\u0440\u0443\u043f\u043f\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \"\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e\" \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u0435\u0451 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432." + }, "light_options": { "data": { + "all": "\u0412\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b", "entities": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438" } }, + "lock": { + "data": { + "entities": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438", + "hide_members": "\u0421\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432" + } + }, + "media_player": { + "data": { + "entities": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438", + "hide_members": "\u0421\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432" + } + }, "media_player_options": { "data": { "entities": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438" } + }, + "switch": { + "data": { + "all": "\u0412\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b", + "entities": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438", + "hide_members": "\u0421\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432" + }, + "description": "\u0415\u0441\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \"\u0412\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b\", \u0433\u0440\u0443\u043f\u043f\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \"\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e\" \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432\u0441\u0435 \u0435\u0451 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0433\u0440\u0443\u043f\u043f\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \"\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e\" \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u0435\u0451 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432." } } }, diff --git a/homeassistant/components/group/translations/tr.json b/homeassistant/components/group/translations/tr.json index bbb4600a4ed..354ed29214c 100644 --- a/homeassistant/components/group/translations/tr.json +++ b/homeassistant/components/group/translations/tr.json @@ -1,12 +1,25 @@ { "config": { "step": { + "binary_sensor": { + "data": { + "all": "T\u00fcm varl\u0131klar", + "entities": "\u00dcyeler", + "hide_members": "\u00dcyeleri gizle", + "name": "Ad" + }, + "description": "\"T\u00fcm varl\u0131klar\" etkinle\u015ftirilirse, grubun durumu yaln\u0131zca t\u00fcm \u00fcyeler a\u00e7\u0131ksa a\u00e7\u0131kt\u0131r. \"T\u00fcm varl\u0131klar\" devre d\u0131\u015f\u0131 b\u0131rak\u0131l\u0131rsa, herhangi bir \u00fcye a\u00e7\u0131ksa grubun durumu a\u00e7\u0131kt\u0131r.", + "title": "Grup Ekle" + }, "cover": { "data": { - "entities": "Grup \u00fcyeleri", - "name": "Grup ismi" + "entities": "\u00dcyeler", + "hide_members": "\u00dcyeleri gizle", + "name": "Ad", + "title": "Grup Ekle" }, - "description": "Grup se\u00e7eneklerini se\u00e7in" + "description": "Grup se\u00e7eneklerini se\u00e7in", + "title": "Grup Ekle" }, "cover_options": { "data": { @@ -16,10 +29,13 @@ }, "fan": { "data": { - "entities": "Grup \u00fcyeleri", - "name": "Grup ismi" + "entities": "\u00dcyeler", + "hide_members": "\u00dcyeleri gizle", + "name": "Ad", + "title": "Grup Ekle" }, - "description": "Grup se\u00e7eneklerini se\u00e7in" + "description": "Grup se\u00e7eneklerini se\u00e7in", + "title": "Grup Ekle" }, "fan_options": { "data": { @@ -35,10 +51,14 @@ }, "light": { "data": { - "entities": "Grup \u00fcyeleri", - "name": "Grup ismi" + "all": "T\u00fcm varl\u0131klar", + "entities": "\u00dcyeler", + "hide_members": "\u00dcyeleri gizle", + "name": "Ad", + "title": "Grup Ekle" }, - "description": "Grup se\u00e7eneklerini se\u00e7in" + "description": "\"T\u00fcm varl\u0131klar\" etkinle\u015ftirilirse, grubun durumu yaln\u0131zca t\u00fcm \u00fcyeler a\u00e7\u0131ksa a\u00e7\u0131kt\u0131r. \"T\u00fcm varl\u0131klar\" devre d\u0131\u015f\u0131 b\u0131rak\u0131l\u0131rsa, herhangi bir \u00fcye a\u00e7\u0131ksa grubun durumu a\u00e7\u0131kt\u0131r.", + "title": "Grup Ekle" }, "light_options": { "data": { @@ -46,18 +66,132 @@ }, "description": "Grup se\u00e7eneklerini se\u00e7in" }, + "lock": { + "data": { + "entities": "\u00dcyeler", + "hide_members": "\u00dcyeleri gizle", + "name": "Ad" + }, + "title": "Grup Ekle" + }, "media_player": { "data": { - "entities": "Grup \u00fcyeleri", - "name": "Grup ismi" + "entities": "\u00dcyeler", + "hide_members": "\u00dcyeleri gizle", + "name": "Ad", + "title": "Grup Ekle" }, - "description": "Grup se\u00e7eneklerini se\u00e7in" + "description": "Grup se\u00e7eneklerini se\u00e7in", + "title": "Grup Ekle" }, "media_player_options": { "data": { "entities": "Grup \u00fcyeleri" }, "description": "Grup se\u00e7eneklerini se\u00e7in" + }, + "switch": { + "data": { + "entities": "\u00dcyeler", + "hide_members": "\u00dcyeleri gizle", + "name": "Ad" + }, + "title": "Grup Ekle" + }, + "user": { + "data": { + "group_type": "Grup t\u00fcr\u00fc" + }, + "description": "Gruplar, ayn\u0131 t\u00fcrden birden \u00e7ok varl\u0131\u011f\u0131 temsil eden yeni bir varl\u0131k olu\u015fturman\u0131za olanak tan\u0131r.", + "menu_options": { + "binary_sensor": "\u0130kili sens\u00f6r grubu", + "cover": "Kepenk grubu", + "fan": "Fan grubu", + "light": "I\u015f\u0131k grubu", + "lock": "Grubu kilitle", + "media_player": "Medya oynat\u0131c\u0131 grubu", + "switch": "Grubu de\u011fi\u015ftir" + }, + "title": "Grup Ekle" + } + } + }, + "options": { + "step": { + "binary_sensor": { + "data": { + "all": "T\u00fcm varl\u0131klar", + "entities": "\u00dcyeler", + "hide_members": "\u00dcyeleri gizle" + }, + "description": "\"T\u00fcm varl\u0131klar\" etkinle\u015ftirilirse, grubun durumu yaln\u0131zca t\u00fcm \u00fcyeler a\u00e7\u0131ksa a\u00e7\u0131kt\u0131r. \"T\u00fcm varl\u0131klar\" devre d\u0131\u015f\u0131 b\u0131rak\u0131l\u0131rsa, herhangi bir \u00fcye a\u00e7\u0131ksa grubun durumu a\u00e7\u0131kt\u0131r." + }, + "binary_sensor_options": { + "data": { + "all": "T\u00fcm varl\u0131klar", + "entities": "\u00dcyeler" + } + }, + "cover": { + "data": { + "entities": "\u00dcyeler", + "hide_members": "\u00dcyeleri gizle" + } + }, + "cover_options": { + "data": { + "entities": "\u00dcyeler" + } + }, + "fan": { + "data": { + "entities": "\u00dcyeler", + "hide_members": "\u00dcyeleri gizle" + } + }, + "fan_options": { + "data": { + "entities": "\u00dcyeler" + } + }, + "light": { + "data": { + "all": "T\u00fcm varl\u0131klar", + "entities": "\u00dcyeler", + "hide_members": "\u00dcyeleri gizle" + }, + "description": "\"T\u00fcm varl\u0131klar\" etkinle\u015ftirilirse, grubun durumu yaln\u0131zca t\u00fcm \u00fcyeler a\u00e7\u0131ksa a\u00e7\u0131kt\u0131r. \"T\u00fcm varl\u0131klar\" devre d\u0131\u015f\u0131 b\u0131rak\u0131l\u0131rsa, herhangi bir \u00fcye a\u00e7\u0131ksa grubun durumu a\u00e7\u0131kt\u0131r." + }, + "light_options": { + "data": { + "all": "T\u00fcm varl\u0131klar", + "entities": "\u00dcyeler" + } + }, + "lock": { + "data": { + "entities": "\u00dcyeler", + "hide_members": "\u00dcyeleri gizle" + } + }, + "media_player": { + "data": { + "entities": "\u00dcyeler", + "hide_members": "\u00dcyeleri gizle" + } + }, + "media_player_options": { + "data": { + "entities": "\u00dcyeler" + } + }, + "switch": { + "data": { + "all": "T\u00fcm varl\u0131klar", + "entities": "\u00dcyeler", + "hide_members": "\u00dcyeleri gizle" + }, + "description": "\"T\u00fcm varl\u0131klar\" etkinle\u015ftirilirse, grubun durumu yaln\u0131zca t\u00fcm \u00fcyeler a\u00e7\u0131ksa a\u00e7\u0131kt\u0131r. \"T\u00fcm varl\u0131klar\" devre d\u0131\u015f\u0131 b\u0131rak\u0131l\u0131rsa, herhangi bir \u00fcye a\u00e7\u0131ksa grubun durumu a\u00e7\u0131kt\u0131r." } } }, diff --git a/homeassistant/components/group/translations/zh-Hant.json b/homeassistant/components/group/translations/zh-Hant.json index 9187455ad17..380c2216976 100644 --- a/homeassistant/components/group/translations/zh-Hant.json +++ b/homeassistant/components/group/translations/zh-Hant.json @@ -5,6 +5,7 @@ "data": { "all": "\u6240\u6709\u5be6\u9ad4", "entities": "\u6210\u54e1", + "hide_members": "\u96b1\u85cf\u6210\u54e1", "name": "\u540d\u7a31" }, "description": "\u5047\u5982\u958b\u555f \"\u6240\u6709\u5be6\u9ad4\"\uff0c\u50c5\u65bc\u7576\u6240\u6709\u6210\u54e1\u90fd\u70ba\u958b\u555f\u6642\u3001\u88dd\u614b\u624d\u6703\u986f\u793a\u70ba\u958b\u555f\u3002\u5047\u5982 \"\u6240\u6709\u5be6\u9ad4\" \u70ba\u95dc\u9589\u3001\u5247\u4efb\u4f55\u6210\u54e1\u958b\u59cb\u6642\uff0c\u7686\u6703\u986f\u793a\u70ba\u958b\u555f\u3002", @@ -13,10 +14,12 @@ "cover": { "data": { "entities": "\u6210\u54e1", + "hide_members": "\u96b1\u85cf\u6210\u54e1", "name": "\u540d\u7a31", "title": "\u65b0\u589e\u7fa4\u7d44" }, - "description": "\u9078\u64c7\u7fa4\u7d44\u9078\u9805" + "description": "\u9078\u64c7\u7fa4\u7d44\u9078\u9805", + "title": "\u65b0\u589e\u7fa4\u7d44" }, "cover_options": { "data": { @@ -27,10 +30,12 @@ "fan": { "data": { "entities": "\u6210\u54e1", + "hide_members": "\u96b1\u85cf\u6210\u54e1", "name": "\u540d\u7a31", "title": "\u65b0\u589e\u7fa4\u7d44" }, - "description": "\u9078\u64c7\u7fa4\u7d44\u9078\u9805" + "description": "\u9078\u64c7\u7fa4\u7d44\u9078\u9805", + "title": "\u65b0\u589e\u7fa4\u7d44" }, "fan_options": { "data": { @@ -46,11 +51,14 @@ }, "light": { "data": { + "all": "\u6240\u6709\u5be6\u9ad4", "entities": "\u6210\u54e1", + "hide_members": "\u96b1\u85cf\u6210\u54e1", "name": "\u540d\u7a31", "title": "\u65b0\u589e\u7fa4\u7d44" }, - "description": "\u9078\u64c7\u7fa4\u7d44\u9078\u9805" + "description": "\u5047\u5982\u958b\u555f \"\u6240\u6709\u5be6\u9ad4\"\uff0c\u50c5\u65bc\u7576\u6240\u6709\u6210\u54e1\u90fd\u70ba\u958b\u555f\u6642\u3001\u88dd\u614b\u624d\u6703\u986f\u793a\u70ba\u958b\u555f\u3002\u5047\u5982 \"\u6240\u6709\u5be6\u9ad4\" \u70ba\u95dc\u9589\u3001\u5247\u4efb\u4f55\u6210\u54e1\u958b\u59cb\u6642\uff0c\u7686\u6703\u986f\u793a\u70ba\u958b\u555f\u3002", + "title": "\u65b0\u589e\u7fa4\u7d44" }, "light_options": { "data": { @@ -58,13 +66,23 @@ }, "description": "\u9078\u64c7\u7fa4\u7d44\u9078\u9805" }, + "lock": { + "data": { + "entities": "\u6210\u54e1", + "hide_members": "\u96b1\u85cf\u6210\u54e1", + "name": "\u540d\u7a31" + }, + "title": "\u65b0\u589e\u7fa4\u7d44" + }, "media_player": { "data": { "entities": "\u6210\u54e1", + "hide_members": "\u96b1\u85cf\u6210\u54e1", "name": "\u540d\u7a31", "title": "\u65b0\u589e\u7fa4\u7d44" }, - "description": "\u9078\u64c7\u7fa4\u7d44\u9078\u9805" + "description": "\u9078\u64c7\u7fa4\u7d44\u9078\u9805", + "title": "\u65b0\u589e\u7fa4\u7d44" }, "media_player_options": { "data": { @@ -72,41 +90,108 @@ }, "description": "\u9078\u64c7\u7fa4\u7d44\u9078\u9805" }, + "switch": { + "data": { + "entities": "\u6210\u54e1", + "hide_members": "\u96b1\u85cf\u6210\u54e1", + "name": "\u540d\u7a31" + }, + "title": "\u65b0\u589e\u7fa4\u7d44" + }, "user": { "data": { "group_type": "\u7fa4\u7d44\u985e\u5225" }, + "description": "\u7fa4\u7d44\u5141\u8a31\u4f7f\u7528\u76f8\u540c\u985e\u5225\u7684\u591a\u500b\u5be6\u9ad4\u7d44\u6210\u65b0\u5be6\u9ad4\u3002", + "menu_options": { + "binary_sensor": "\u4e8c\u9032\u4f4d\u611f\u6e2c\u5668\u7fa4\u7d44", + "cover": "\u6372\u7c3e\u7fa4\u7d44", + "fan": "\u98a8\u6247\u7fa4\u7d44", + "light": "\u71c8\u5149\u7fa4\u7d44", + "lock": "\u9580\u9396\u7fa4\u7d44", + "media_player": "\u5a92\u9ad4\u64ad\u653e\u5668\u7fa4\u7d44", + "switch": "\u958b\u95dc\u7fa4\u7d44" + }, "title": "\u65b0\u589e\u7fa4\u7d44" } } }, "options": { "step": { + "binary_sensor": { + "data": { + "all": "\u6240\u6709\u5be6\u9ad4", + "entities": "\u6210\u54e1", + "hide_members": "\u96b1\u85cf\u6210\u54e1" + }, + "description": "\u5047\u5982\u958b\u555f \"\u6240\u6709\u5be6\u9ad4\"\uff0c\u50c5\u65bc\u7576\u6240\u6709\u6210\u54e1\u90fd\u70ba\u958b\u555f\u6642\u3001\u88dd\u614b\u624d\u6703\u986f\u793a\u70ba\u958b\u555f\u3002\u5047\u5982 \"\u6240\u6709\u5be6\u9ad4\" \u70ba\u95dc\u9589\u3001\u5247\u4efb\u4f55\u6210\u54e1\u958b\u59cb\u6642\uff0c\u7686\u6703\u986f\u793a\u70ba\u958b\u555f\u3002" + }, "binary_sensor_options": { "data": { "all": "\u6240\u6709\u5be6\u9ad4", "entities": "\u6210\u54e1" } }, + "cover": { + "data": { + "entities": "\u6210\u54e1", + "hide_members": "\u96b1\u85cf\u6210\u54e1" + } + }, "cover_options": { "data": { "entities": "\u6210\u54e1" } }, + "fan": { + "data": { + "entities": "\u6210\u54e1", + "hide_members": "\u96b1\u85cf\u6210\u54e1" + } + }, "fan_options": { "data": { "entities": "\u6210\u54e1" } }, + "light": { + "data": { + "all": "\u6240\u6709\u5be6\u9ad4", + "entities": "\u6210\u54e1", + "hide_members": "\u96b1\u85cf\u6210\u54e1" + }, + "description": "\u5047\u5982\u958b\u555f \"\u6240\u6709\u5be6\u9ad4\"\uff0c\u50c5\u65bc\u7576\u6240\u6709\u6210\u54e1\u90fd\u70ba\u958b\u555f\u6642\u3001\u88dd\u614b\u624d\u6703\u986f\u793a\u70ba\u958b\u555f\u3002\u5047\u5982 \"\u6240\u6709\u5be6\u9ad4\" \u70ba\u95dc\u9589\u3001\u5247\u4efb\u4f55\u6210\u54e1\u958b\u59cb\u6642\uff0c\u7686\u6703\u986f\u793a\u70ba\u958b\u555f\u3002" + }, "light_options": { "data": { + "all": "\u6240\u6709\u5be6\u9ad4", "entities": "\u6210\u54e1" } }, + "lock": { + "data": { + "entities": "\u6210\u54e1", + "hide_members": "\u96b1\u85cf\u6210\u54e1" + } + }, + "media_player": { + "data": { + "entities": "\u6210\u54e1", + "hide_members": "\u96b1\u85cf\u6210\u54e1" + } + }, "media_player_options": { "data": { "entities": "\u6210\u54e1" } + }, + "switch": { + "data": { + "all": "\u6240\u6709\u5be6\u9ad4", + "entities": "\u6210\u54e1", + "hide_members": "\u96b1\u85cf\u6210\u54e1" + }, + "description": "\u5047\u5982\u958b\u555f \"\u6240\u6709\u5be6\u9ad4\"\uff0c\u50c5\u65bc\u7576\u6240\u6709\u6210\u54e1\u90fd\u70ba\u958b\u555f\u6642\u3001\u88dd\u614b\u624d\u6703\u986f\u793a\u70ba\u958b\u555f\u3002\u5047\u5982 \"\u6240\u6709\u5be6\u9ad4\" \u70ba\u95dc\u9589\u3001\u5247\u4efb\u4f55\u6210\u54e1\u958b\u59cb\u6642\uff0c\u7686\u6703\u986f\u793a\u70ba\u958b\u555f\u3002" } } }, diff --git a/homeassistant/components/growatt_server/translations/hu.json b/homeassistant/components/growatt_server/translations/hu.json index 5b2efc737fe..44d87bf753e 100644 --- a/homeassistant/components/growatt_server/translations/hu.json +++ b/homeassistant/components/growatt_server/translations/hu.json @@ -15,7 +15,7 @@ }, "user": { "data": { - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "password": "Jelsz\u00f3", "url": "URL", "username": "Felhaszn\u00e1l\u00f3n\u00e9v" diff --git a/homeassistant/components/guardian/translations/hu.json b/homeassistant/components/guardian/translations/hu.json index 04b62bb660e..82fd422abf7 100644 --- a/homeassistant/components/guardian/translations/hu.json +++ b/homeassistant/components/guardian/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "cannot_connect": "Sikertelen csatlakoz\u00e1s" }, "step": { diff --git a/homeassistant/components/hangouts/translations/ca.json b/homeassistant/components/hangouts/translations/ca.json index b4114312f3e..8b629201cc1 100644 --- a/homeassistant/components/hangouts/translations/ca.json +++ b/homeassistant/components/hangouts/translations/ca.json @@ -24,7 +24,7 @@ "password": "Contrasenya" }, "description": "Buit", - "title": "Inici de sessi\u00f3 de Google Hangouts" + "title": "Inici de sessi\u00f3 de Google Chat" } } } diff --git a/homeassistant/components/hangouts/translations/de.json b/homeassistant/components/hangouts/translations/de.json index 02481670a09..b26618940be 100644 --- a/homeassistant/components/hangouts/translations/de.json +++ b/homeassistant/components/hangouts/translations/de.json @@ -23,7 +23,7 @@ "password": "Passwort" }, "description": "Leer", - "title": "Google Hangouts Login" + "title": "Google Chat Anmeldung" } } } diff --git a/homeassistant/components/hangouts/translations/et.json b/homeassistant/components/hangouts/translations/et.json index 7d6deb2ef53..96ed8b998ec 100644 --- a/homeassistant/components/hangouts/translations/et.json +++ b/homeassistant/components/hangouts/translations/et.json @@ -24,7 +24,7 @@ "password": "Salas\u00f5na" }, "description": "", - "title": "Google Hangoutsi sisselogimine" + "title": "Google Chat'i sisselogimine" } } } diff --git a/homeassistant/components/hangouts/translations/fr.json b/homeassistant/components/hangouts/translations/fr.json index da674b1c775..78a2517d29a 100644 --- a/homeassistant/components/hangouts/translations/fr.json +++ b/homeassistant/components/hangouts/translations/fr.json @@ -5,9 +5,9 @@ "unknown": "Erreur inattendue" }, "error": { - "invalid_2fa": "Authentification \u00e0 2 facteurs invalide, veuillez r\u00e9essayer.", + "invalid_2fa": "Authentification \u00e0 deux facteurs non valide, veuillez r\u00e9essayer.", "invalid_2fa_method": "M\u00e9thode 2FA non valide (v\u00e9rifiez sur le t\u00e9l\u00e9phone).", - "invalid_login": "Login invalide, veuillez r\u00e9essayer." + "invalid_login": "Identifiant non valide, veuillez r\u00e9essayer." }, "step": { "2fa": { @@ -24,7 +24,7 @@ "password": "Mot de passe" }, "description": "Vide", - "title": "Connexion \u00e0 Google Hangouts" + "title": "Connexion \u00e0 Google Chat" } } } diff --git a/homeassistant/components/hangouts/translations/he.json b/homeassistant/components/hangouts/translations/he.json index 9f0e3b48a62..ad696cad365 100644 --- a/homeassistant/components/hangouts/translations/he.json +++ b/homeassistant/components/hangouts/translations/he.json @@ -21,7 +21,7 @@ "email": "\u05d3\u05d5\u05d0\"\u05dc", "password": "\u05e1\u05d9\u05e1\u05de\u05d4" }, - "title": "\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05dc- Google Hangouts" + "title": "\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05dc\u05e6'\u05d0\u05d8 \u05e9\u05dc \u05d2\u05d5\u05d2\u05dc" } } } diff --git a/homeassistant/components/hangouts/translations/hu.json b/homeassistant/components/hangouts/translations/hu.json index eda0144a818..1ea997aa098 100644 --- a/homeassistant/components/hangouts/translations/hu.json +++ b/homeassistant/components/hangouts/translations/hu.json @@ -24,7 +24,7 @@ "password": "Jelsz\u00f3" }, "description": "\u00dcres", - "title": "Google Hangouts Bejelentkez\u00e9s" + "title": "Google Chat bejelentkez\u00e9s" } } } diff --git a/homeassistant/components/hangouts/translations/id.json b/homeassistant/components/hangouts/translations/id.json index 39c68dda211..2336b211c9e 100644 --- a/homeassistant/components/hangouts/translations/id.json +++ b/homeassistant/components/hangouts/translations/id.json @@ -24,7 +24,7 @@ "password": "Kata Sandi" }, "description": "Kosong", - "title": "Info Masuk Google Hangouts" + "title": "Info Masuk Google Chat" } } } diff --git a/homeassistant/components/hangouts/translations/it.json b/homeassistant/components/hangouts/translations/it.json index 3d9322b1152..76d81a184d9 100644 --- a/homeassistant/components/hangouts/translations/it.json +++ b/homeassistant/components/hangouts/translations/it.json @@ -24,7 +24,7 @@ "password": "Password" }, "description": "Vuoto", - "title": "Accesso a Google Hangouts" + "title": "Accesso a Google Chat" } } } diff --git a/homeassistant/components/hangouts/translations/nl.json b/homeassistant/components/hangouts/translations/nl.json index 456d2193922..276c310da5a 100644 --- a/homeassistant/components/hangouts/translations/nl.json +++ b/homeassistant/components/hangouts/translations/nl.json @@ -24,7 +24,7 @@ "password": "Wachtwoord" }, "description": "Leeg", - "title": "Google Hangouts inlog" + "title": "Google Chat-login" } } } diff --git a/homeassistant/components/hangouts/translations/no.json b/homeassistant/components/hangouts/translations/no.json index d4fe4dbb5a6..751d54c852e 100644 --- a/homeassistant/components/hangouts/translations/no.json +++ b/homeassistant/components/hangouts/translations/no.json @@ -24,7 +24,7 @@ "password": "Passord" }, "description": "", - "title": "Google Hangouts p\u00e5logging" + "title": "Google Chat-p\u00e5logging" } } } diff --git a/homeassistant/components/hangouts/translations/pl.json b/homeassistant/components/hangouts/translations/pl.json index 8fb7e9e64d9..4dafdc5d996 100644 --- a/homeassistant/components/hangouts/translations/pl.json +++ b/homeassistant/components/hangouts/translations/pl.json @@ -24,7 +24,7 @@ "password": "Has\u0142o" }, "description": "Pusty", - "title": "Logowanie do Google Hangouts" + "title": "Logowanie do Google Chat" } } } diff --git a/homeassistant/components/hangouts/translations/pt-BR.json b/homeassistant/components/hangouts/translations/pt-BR.json index c60d9d8ec47..9e4d04cd989 100644 --- a/homeassistant/components/hangouts/translations/pt-BR.json +++ b/homeassistant/components/hangouts/translations/pt-BR.json @@ -24,7 +24,7 @@ "password": "Senha" }, "description": "Vazio", - "title": "Login do Hangouts do Google" + "title": "Login no Google Chat" } } } diff --git a/homeassistant/components/hangouts/translations/ru.json b/homeassistant/components/hangouts/translations/ru.json index d352258ba33..781e1e25eef 100644 --- a/homeassistant/components/hangouts/translations/ru.json +++ b/homeassistant/components/hangouts/translations/ru.json @@ -24,7 +24,7 @@ "password": "\u041f\u0430\u0440\u043e\u043b\u044c" }, "description": "\u043f\u0443\u0441\u0442\u043e", - "title": "Google Hangouts" + "title": "Google Chat" } } } diff --git a/homeassistant/components/hangouts/translations/tr.json b/homeassistant/components/hangouts/translations/tr.json index 84fb80abaf5..5ddf2a64cbb 100644 --- a/homeassistant/components/hangouts/translations/tr.json +++ b/homeassistant/components/hangouts/translations/tr.json @@ -24,7 +24,7 @@ "password": "Parola" }, "description": "Bo\u015f", - "title": "Google Hangouts Giri\u015fi" + "title": "Google Sohbet Giri\u015fi" } } } diff --git a/homeassistant/components/hangouts/translations/zh-Hant.json b/homeassistant/components/hangouts/translations/zh-Hant.json index 678aacc5b62..f9884d5e214 100644 --- a/homeassistant/components/hangouts/translations/zh-Hant.json +++ b/homeassistant/components/hangouts/translations/zh-Hant.json @@ -24,7 +24,7 @@ "password": "\u5bc6\u78bc" }, "description": "\u7a7a\u767d", - "title": "\u767b\u5165 Google Hangouts" + "title": "\u767b\u5165 Google Chat" } } } diff --git a/homeassistant/components/hassio/translations/ja.json b/homeassistant/components/hassio/translations/ja.json index da3409d91cd..b7489852bdb 100644 --- a/homeassistant/components/hassio/translations/ja.json +++ b/homeassistant/components/hassio/translations/ja.json @@ -10,7 +10,7 @@ "installed_addons": "\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6e08\u307f\u306e\u30a2\u30c9\u30aa\u30f3", "supervisor_api": "Supervisor API", "supervisor_version": "Supervisor\u306e\u30d0\u30fc\u30b8\u30e7\u30f3", - "supported": "\u30b5\u30dd\u30fc\u30c8", + "supported": "\u30b5\u30dd\u30fc\u30c8\u306e\u6709\u7121", "update_channel": "\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u30c1\u30e3\u30f3\u30cd\u30eb", "version_api": "\u30d0\u30fc\u30b8\u30e7\u30f3API" } diff --git a/homeassistant/components/home_connect/translations/hu.json b/homeassistant/components/home_connect/translations/hu.json index ca5f3e1e9ae..77b76df14d7 100644 --- a/homeassistant/components/home_connect/translations/hu.json +++ b/homeassistant/components/home_connect/translations/hu.json @@ -2,14 +2,14 @@ "config": { "abort": { "missing_configuration": "A komponens nincs konfigur\u00e1lva. K\u00e9rem, k\u00f6vesse a dokument\u00e1ci\u00f3t.", - "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3t [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lsz." + "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3 [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lhat\u00f3." }, "create_entry": { "default": "Sikeres hiteles\u00edt\u00e9s" }, "step": { "pick_implementation": { - "title": "V\u00e1lassz hiteles\u00edt\u00e9si m\u00f3dszert" + "title": "V\u00e1lasszon egy hiteles\u00edt\u00e9si m\u00f3dszert" } } } diff --git a/homeassistant/components/home_connect/translations/it.json b/homeassistant/components/home_connect/translations/it.json index 3dc834bfd85..74a598757d8 100644 --- a/homeassistant/components/home_connect/translations/it.json +++ b/homeassistant/components/home_connect/translations/it.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "missing_configuration": "Il componente non \u00e8 configurato. Si prega di seguire la documentazione.", + "missing_configuration": "Il componente non \u00e8 configurato. Segui la documentazione.", "no_url_available": "Nessun URL disponibile. Per informazioni su questo errore, [controlla la sezione della guida]({docs_url})" }, "create_entry": { diff --git a/homeassistant/components/home_plus_control/translations/hu.json b/homeassistant/components/home_plus_control/translations/hu.json index 09625a222f2..3dc4b451332 100644 --- a/homeassistant/components/home_plus_control/translations/hu.json +++ b/homeassistant/components/home_plus_control/translations/hu.json @@ -2,10 +2,10 @@ "config": { "abort": { "already_configured": "A fi\u00f3k m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "authorize_url_timeout": "Id\u0151t\u00fall\u00e9p\u00e9s a hiteles\u00edt\u00e9si URL gener\u00e1l\u00e1sa sor\u00e1n.", "missing_configuration": "A komponens nincs konfigur\u00e1lva. K\u00e9rem, k\u00f6vesse a dokument\u00e1ci\u00f3t.", - "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3t [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lsz.", + "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3 [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lhat\u00f3.", "single_instance_allowed": "M\u00e1r konfigur\u00e1lva van. Csak egy konfigur\u00e1ci\u00f3 lehets\u00e9ges." }, "create_entry": { @@ -13,7 +13,7 @@ }, "step": { "pick_implementation": { - "title": "V\u00e1lassz hiteles\u00edt\u00e9si m\u00f3dszert" + "title": "V\u00e1lasszon egy hiteles\u00edt\u00e9si m\u00f3dszert" } } }, diff --git a/homeassistant/components/home_plus_control/translations/it.json b/homeassistant/components/home_plus_control/translations/it.json index 789a7db85eb..e79d22275f7 100644 --- a/homeassistant/components/home_plus_control/translations/it.json +++ b/homeassistant/components/home_plus_control/translations/it.json @@ -4,7 +4,7 @@ "already_configured": "L'account \u00e8 gi\u00e0 configurato", "already_in_progress": "Il flusso di configurazione \u00e8 gi\u00e0 in corso", "authorize_url_timeout": "Tempo scaduto nel generare l'URL di autorizzazione.", - "missing_configuration": "Il componente non \u00e8 configurato. Si prega di seguire la documentazione.", + "missing_configuration": "Il componente non \u00e8 configurato. Segui la documentazione.", "no_url_available": "Nessun URL disponibile. Per informazioni su questo errore, [controlla la sezione della guida]({docs_url})", "single_instance_allowed": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione." }, diff --git a/homeassistant/components/homekit/translations/bg.json b/homeassistant/components/homekit/translations/bg.json index a7aa5bb792b..1a0ba552ae7 100644 --- a/homeassistant/components/homekit/translations/bg.json +++ b/homeassistant/components/homekit/translations/bg.json @@ -17,12 +17,6 @@ "entities": "\u041e\u0431\u0435\u043a\u0442\u0438" } }, - "include_exclude": { - "data": { - "entities": "\u041e\u0431\u0435\u043a\u0442\u0438", - "mode": "\u0420\u0435\u0436\u0438\u043c" - } - }, "init": { "data": { "mode": "\u0420\u0435\u0436\u0438\u043c" diff --git a/homeassistant/components/homekit/translations/ca.json b/homeassistant/components/homekit/translations/ca.json index f347268d90e..f1036cceb25 100644 --- a/homeassistant/components/homekit/translations/ca.json +++ b/homeassistant/components/homekit/translations/ca.json @@ -55,18 +55,9 @@ "description": "S'inclouran totes les entitats de \u201c{domains}\u201d tret que se'n seleccionin d'espec\u00edfiques.", "title": "Selecciona les entitats a incloure" }, - "include_exclude": { - "data": { - "entities": "Entitats", - "mode": "Mode" - }, - "description": "Tria les entitats a incloure. En mode accessori, nom\u00e9s s'inclou una sola entitat. En mode enlla\u00e7 inclusiu, s'inclouran totes les entitats del domini tret de que se'n seleccionin algunes en concret. En mode enlla\u00e7 excusiu, s'inclouran totes les entitats del domini excepte les entitats excloses. Per obtenir el millor rendiment, es crea una inst\u00e0ncia HomeKit per a cada repoductor multim\u00e8dia/TV i c\u00e0mera.", - "title": "Selecciona les entitats a incloure" - }, "init": { "data": { "domains": "Dominis a incloure", - "include_domains": "Dominis a incloure", "include_exclude_mode": "Mode d'inclusi\u00f3", "mode": "Mode de HomeKit" }, diff --git a/homeassistant/components/homekit/translations/cs.json b/homeassistant/components/homekit/translations/cs.json index 765b3c3c1b4..7103e1e3caa 100644 --- a/homeassistant/components/homekit/translations/cs.json +++ b/homeassistant/components/homekit/translations/cs.json @@ -28,18 +28,9 @@ "description": "Zkontrolujte v\u0161echny kamery, kter\u00e9 podporuj\u00ed nativn\u00ed streamy H.264. Pokud kamera nepodporuje stream H.264, syst\u00e9m video p\u0159ek\u00f3duje pro HomeKit na H.264. P\u0159ek\u00f3dov\u00e1n\u00ed vy\u017eaduje v\u00fdkonn\u00fd procesor a je pravd\u011bpodobn\u00e9, \u017ee nebude fungovat na po\u010d\u00edta\u010d\u00edch s jednou z\u00e1kladn\u00ed deskou.", "title": "Vyberte videokodek kamery." }, - "include_exclude": { - "data": { - "entities": "Entity", - "mode": "Re\u017eim" - }, - "description": "Vyberte entity, kter\u00e9 maj\u00ed b\u00fdt vystaveny. V re\u017eimu P\u0159\u00edslu\u0161enstv\u00ed je vystavena pouze jedna entita. V re\u017eimu Zahrnut\u00ed p\u0159emost\u011bn\u00ed budou vystaveny v\u0161echny entity v dom\u00e9n\u011b, pokud nebudou vybr\u00e1ny konkr\u00e9tn\u00ed entity. V re\u017eimu Vylou\u010den\u00ed p\u0159emost\u011bn\u00ed budou vystaveny v\u0161echny entity v dom\u00e9n\u011b krom\u011b vylou\u010den\u00fdch entit.", - "title": "Vyberte entity, kter\u00e9 chcete vystavit" - }, "init": { "data": { "domains": "Dom\u00e9ny, kter\u00e9 maj\u00ed b\u00fdt zahrnuty", - "include_domains": "Dom\u00e9ny, kter\u00e9 maj\u00ed b\u00fdt zahrnuty", "mode": "Re\u017eim" }, "title": "Vyberte dom\u00e9ny, kter\u00e9 chcete vystavit." diff --git a/homeassistant/components/homekit/translations/de.json b/homeassistant/components/homekit/translations/de.json index 24f6fd84eb0..d9c07e4cf21 100644 --- a/homeassistant/components/homekit/translations/de.json +++ b/homeassistant/components/homekit/translations/de.json @@ -55,18 +55,9 @@ "description": "Alle \"{domains}\"-Entit\u00e4ten werden einbezogen, sofern nicht bestimmte Entit\u00e4ten ausgew\u00e4hlt werden.", "title": "W\u00e4hle die einzuschlie\u00dfenden Entit\u00e4ten aus" }, - "include_exclude": { - "data": { - "entities": "Entit\u00e4ten", - "mode": "Modus" - }, - "description": "W\u00e4hle die einzubeziehenden Entit\u00e4ten aus. Im Zubeh\u00f6rmodus wird nur eine einzelne Entit\u00e4t eingeschlossen. Im Bridge-Include-Modus werden alle Entit\u00e4ten in der Dom\u00e4ne eingeschlossen, sofern nicht bestimmte Entit\u00e4ten ausgew\u00e4hlt sind. Im Bridge-Exclude-Modus werden alle Entit\u00e4ten in der Dom\u00e4ne eingeschlossen, au\u00dfer den ausgeschlossenen Entit\u00e4ten. F\u00fcr eine optimale Leistung wird f\u00fcr jeden TV-Media-Player, jede aktivit\u00e4tsbasierte Fernbedienung, jedes Schloss und jede Kamera ein separates HomeKit-Zubeh\u00f6r erstellt.", - "title": "W\u00e4hle die Entit\u00e4ten aus, die aufgenommen werden sollen" - }, "init": { "data": { "domains": "Einzubeziehende Domains", - "include_domains": "Einzubeziehende Domains", "include_exclude_mode": "Inklusionsmodus", "mode": "HomeKit-Modus" }, diff --git a/homeassistant/components/homekit/translations/el.json b/homeassistant/components/homekit/translations/el.json index 632d9aecd76..370617bd5fd 100644 --- a/homeassistant/components/homekit/translations/el.json +++ b/homeassistant/components/homekit/translations/el.json @@ -55,18 +55,9 @@ "description": "\u038c\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \"{domains}\" \u03b8\u03b1 \u03c3\u03c5\u03bc\u03c0\u03b5\u03c1\u03b9\u03bb\u03b7\u03c6\u03b8\u03bf\u03cd\u03bd, \u03b5\u03ba\u03c4\u03cc\u03c2 \u03b5\u03ac\u03bd \u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bf\u03cd\u03bd \u03c3\u03c5\u03b3\u03ba\u03b5\u03ba\u03c1\u03b9\u03bc\u03ad\u03bd\u03b5\u03c2 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2.", "title": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03c0\u03bf\u03c5 \u03b8\u03b1 \u03c3\u03c5\u03bc\u03c0\u03b5\u03c1\u03b9\u03bb\u03b7\u03c6\u03b8\u03bf\u03cd\u03bd" }, - "include_exclude": { - "data": { - "entities": "\u039f\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2", - "mode": "\u039b\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1" - }, - "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03c0\u03bf\u03c5 \u03b8\u03b1 \u03c3\u03c5\u03bc\u03c0\u03b5\u03c1\u03b9\u03bb\u03b7\u03c6\u03b8\u03bf\u03cd\u03bd. \u03a3\u03c4\u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03be\u03b5\u03c3\u03bf\u03c5\u03ac\u03c1, \u03c0\u03b5\u03c1\u03b9\u03bb\u03b1\u03bc\u03b2\u03ac\u03bd\u03b5\u03c4\u03b1\u03b9 \u03bc\u03cc\u03bd\u03bf \u03bc\u03af\u03b1 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1. \u03a3\u03c4\u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 include bridge, \u03b8\u03b1 \u03c3\u03c5\u03bc\u03c0\u03b5\u03c1\u03b9\u03bb\u03b7\u03c6\u03b8\u03bf\u03cd\u03bd \u03cc\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03c4\u03bf\u03c5 \u03c4\u03bf\u03bc\u03ad\u03b1, \u03b5\u03ba\u03c4\u03cc\u03c2 \u03b5\u03ac\u03bd \u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bf\u03cd\u03bd \u03c3\u03c5\u03b3\u03ba\u03b5\u03ba\u03c1\u03b9\u03bc\u03ad\u03bd\u03b5\u03c2 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2. \u03a3\u03c4\u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03c0\u03bf\u03ba\u03bb\u03b5\u03b9\u03c3\u03bc\u03bf\u03cd \u03b3\u03ad\u03c6\u03c5\u03c1\u03b1\u03c2, \u03b8\u03b1 \u03c3\u03c5\u03bc\u03c0\u03b5\u03c1\u03b9\u03bb\u03b7\u03c6\u03b8\u03bf\u03cd\u03bd \u03cc\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03c4\u03bf\u03c5 \u03c4\u03bf\u03bc\u03ad\u03b1 \u03b5\u03ba\u03c4\u03cc\u03c2 \u03b1\u03c0\u03cc \u03c4\u03b9\u03c2 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03c0\u03bf\u03c5 \u03ad\u03c7\u03bf\u03c5\u03bd \u03b1\u03c0\u03bf\u03ba\u03bb\u03b5\u03b9\u03c3\u03c4\u03b5\u03af. \u0393\u03b9\u03b1 \u03ba\u03b1\u03bb\u03cd\u03c4\u03b5\u03c1\u03b7 \u03b1\u03c0\u03cc\u03b4\u03bf\u03c3\u03b7, \u03b8\u03b1 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03b7\u03b8\u03b5\u03af \u03ad\u03bd\u03b1 \u03be\u03b5\u03c7\u03c9\u03c1\u03b9\u03c3\u03c4\u03cc \u03b1\u03be\u03b5\u03c3\u03bf\u03c5\u03ac\u03c1 HomeKit \u03b3\u03b9\u03b1 \u03ba\u03ac\u03b8\u03b5 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03b1\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2 \u03c0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03c9\u03bd tv, \u03c4\u03b7\u03bb\u03b5\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae\u03c1\u03b9\u03bf \u03bc\u03b5 \u03b2\u03ac\u03c3\u03b7 \u03c4\u03b7 \u03b4\u03c1\u03b1\u03c3\u03c4\u03b7\u03c1\u03b9\u03cc\u03c4\u03b7\u03c4\u03b1, \u03ba\u03bb\u03b5\u03b9\u03b4\u03b1\u03c1\u03b9\u03ac \u03ba\u03b1\u03b9 \u03ba\u03ac\u03bc\u03b5\u03c1\u03b1.", - "title": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03bf\u03bd\u03c4\u03bf\u03c4\u03ae\u03c4\u03c9\u03bd \u03c0\u03bf\u03c5 \u03b8\u03b1 \u03c3\u03c5\u03bc\u03c0\u03b5\u03c1\u03b9\u03bb\u03b7\u03c6\u03b8\u03bf\u03cd\u03bd" - }, "init": { "data": { "domains": "\u03a4\u03bf\u03bc\u03b5\u03af\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c3\u03c5\u03bc\u03c0\u03b5\u03c1\u03b9\u03bb\u03b7\u03c6\u03b8\u03bf\u03cd\u03bd", - "include_domains": "\u03a4\u03bf\u03bc\u03b5\u03af\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c3\u03c5\u03bc\u03c0\u03b5\u03c1\u03b9\u03bb\u03b7\u03c6\u03b8\u03bf\u03cd\u03bd", "include_exclude_mode": "\u039b\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03c3\u03c5\u03bc\u03c0\u03b5\u03c1\u03af\u03bb\u03b7\u03c8\u03b7\u03c2", "mode": "\u039b\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 HomeKit" }, diff --git a/homeassistant/components/homekit/translations/en.json b/homeassistant/components/homekit/translations/en.json index 72c6ba9df36..14585b60f1e 100644 --- a/homeassistant/components/homekit/translations/en.json +++ b/homeassistant/components/homekit/translations/en.json @@ -55,18 +55,9 @@ "description": "All \u201c{domains}\u201d entities will be included unless specific entities are selected.", "title": "Select the entities to be included" }, - "include_exclude": { - "data": { - "entities": "Entities", - "mode": "Mode" - }, - "description": "Choose the entities to be included. In accessory mode, only a single entity is included. In bridge include mode, all entities in the domain will be included unless specific entities are selected. In bridge exclude mode, all entities in the domain will be included except for the excluded entities. For best performance, a separate HomeKit accessory will be created for each tv media player, activity based remote, lock, and camera.", - "title": "Select entities to be included" - }, "init": { "data": { "domains": "Domains to include", - "include_domains": "Domains to include", "include_exclude_mode": "Inclusion Mode", "mode": "HomeKit Mode" }, diff --git a/homeassistant/components/homekit/translations/es-419.json b/homeassistant/components/homekit/translations/es-419.json index 2b670f13c7e..459832cac80 100644 --- a/homeassistant/components/homekit/translations/es-419.json +++ b/homeassistant/components/homekit/translations/es-419.json @@ -34,9 +34,6 @@ "title": "Seleccione el c\u00f3dec de video de la c\u00e1mara." }, "init": { - "data": { - "include_domains": "Dominios para incluir" - }, "description": "Las entidades en los \"Dominios para incluir\" se vincular\u00e1n a HomeKit. Podr\u00e1 seleccionar qu\u00e9 entidades excluir de esta lista en la siguiente pantalla.", "title": "Seleccione dominios para puentear." }, diff --git a/homeassistant/components/homekit/translations/es.json b/homeassistant/components/homekit/translations/es.json index cc1925b8095..ef60610a8a1 100644 --- a/homeassistant/components/homekit/translations/es.json +++ b/homeassistant/components/homekit/translations/es.json @@ -40,17 +40,8 @@ "entities": "Entidades" } }, - "include_exclude": { - "data": { - "entities": "Entidades", - "mode": "Modo" - }, - "description": "Selecciona las entidades que deseas exponer. En el modo de accesorio, solo se expone una \u00fanica entidad. En el modo de inclusi\u00f3n de puente, todas las entidades del dominio se expondr\u00e1n a menos que se seleccionen entidades espec\u00edficas. En el modo de exclusi\u00f3n de puentes, todas las entidades del dominio se expondr\u00e1n excepto las entidades excluidas.", - "title": "Seleccionar entidades para exponer" - }, "init": { "data": { - "include_domains": "Dominios para incluir", "mode": "Modo" }, "description": "Las entidades de los \"Dominios que se van a incluir\" se establecer\u00e1n en HomeKit. Podr\u00e1 seleccionar qu\u00e9 entidades excluir de esta lista en la siguiente pantalla.", diff --git a/homeassistant/components/homekit/translations/et.json b/homeassistant/components/homekit/translations/et.json index d0ef2e79f03..671dede46e0 100644 --- a/homeassistant/components/homekit/translations/et.json +++ b/homeassistant/components/homekit/translations/et.json @@ -55,18 +55,9 @@ "description": "Kaasatakse k\u00f5ik olemid {domains}, v\u00e4lja arvatud juhul, kui valitud on konkreetsed olemid.", "title": "Vali kaasatavad olemid" }, - "include_exclude": { - "data": { - "entities": "Olemid", - "mode": "Re\u017eiim" - }, - "description": "Vali kaasatavad olemid. Tarvikute re\u017eiimis on kaasatav ainult \u00fcks olem. Silla re\u017eiimis kaasatakse k\u00f5ik domeeni olemid, v\u00e4lja arvatud juhul, kui valitud on kindlad olemid. Silla v\u00e4listamisre\u017eiimis kaasatakse k\u00f5ik domeeni olemid, v\u00e4lja arvatud v\u00e4listatud olemid. Parima kasutuskogemuse jaoks on eraldi HomeKit seadmed iga TV meediumim\u00e4ngija, luku, juhtpuldi ja kaamera jaoks.", - "title": "Vali kaasatavd olemid" - }, "init": { "data": { "domains": "Kaasa domeenid", - "include_domains": "Kaasatud domeenid", "include_exclude_mode": "Kaasamise re\u017eiim", "mode": "HomeKiti re\u017eiim" }, diff --git a/homeassistant/components/homekit/translations/fr.json b/homeassistant/components/homekit/translations/fr.json index 1977f7e6c18..e4850893bd3 100644 --- a/homeassistant/components/homekit/translations/fr.json +++ b/homeassistant/components/homekit/translations/fr.json @@ -55,18 +55,9 @@ "description": "Toutes les entit\u00e9s \"{domaines}\" seront incluses, sauf si des entit\u00e9s sp\u00e9cifiques sont s\u00e9lectionn\u00e9es.", "title": "S\u00e9lectionnez les entit\u00e9s \u00e0 inclure" }, - "include_exclude": { - "data": { - "entities": "Entit\u00e9s", - "mode": "Mode" - }, - "description": "Choisissez les entit\u00e9s \u00e0 inclure. En mode accessoire, une seule entit\u00e9 est incluse. En mode d'inclusion de pont, toutes les entit\u00e9s du domaine seront incluses \u00e0 moins que des entit\u00e9s sp\u00e9cifiques ne soient s\u00e9lectionn\u00e9es. En mode d'exclusion de pont, toutes les entit\u00e9s du domaine seront incluses \u00e0 l'exception des entit\u00e9s exclues. Pour de meilleures performances, un accessoire HomeKit distinct sera cr\u00e9\u00e9 pour chaque lecteur multim\u00e9dia TV et cam\u00e9ra.", - "title": "S\u00e9lectionnez les entit\u00e9s \u00e0 exposer" - }, "init": { "data": { "domains": "Domaines \u00e0 inclure", - "include_domains": "Domaines \u00e0 inclure", "include_exclude_mode": "Mode d'inclusion", "mode": "Mode HomeKit" }, diff --git a/homeassistant/components/homekit/translations/he.json b/homeassistant/components/homekit/translations/he.json index 22f3515b497..defce6a05a2 100644 --- a/homeassistant/components/homekit/translations/he.json +++ b/homeassistant/components/homekit/translations/he.json @@ -28,17 +28,10 @@ "entities": "\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea" } }, - "include_exclude": { - "data": { - "mode": "\u05de\u05e6\u05d1" - }, - "title": "\u05d1\u05d7\u05e8 \u05d9\u05e9\u05d5\u05d9\u05d5\u05ea \u05e9\u05d9\u05d9\u05db\u05dc\u05dc\u05d5" - }, "init": { "data": { "domains": "\u05ea\u05d7\u05d5\u05de\u05d9\u05dd \u05e9\u05d9\u05e9 \u05dc\u05db\u05dc\u05d5\u05dc", - "include_domains": "\u05ea\u05d7\u05d5\u05de\u05d9\u05dd \u05e9\u05d9\u05e9 \u05dc\u05db\u05dc\u05d5\u05dc", - "mode": "\u05de\u05e6\u05d1" + "mode": "\u05de\u05e6\u05d1 HomeKit" } }, "yaml": { diff --git a/homeassistant/components/homekit/translations/hu.json b/homeassistant/components/homekit/translations/hu.json index 7c3a28abfd4..a1c64f6fac3 100644 --- a/homeassistant/components/homekit/translations/hu.json +++ b/homeassistant/components/homekit/translations/hu.json @@ -55,23 +55,14 @@ "description": "Az \u00f6sszes \"{domains}\" entit\u00e1s beker\u00fcl, kiv\u00e9ve, ha konkr\u00e9t entit\u00e1sok vannak kijel\u00f6lve.", "title": "V\u00e1lassza ki a felvenni k\u00edv\u00e1nt entit\u00e1sokat" }, - "include_exclude": { - "data": { - "entities": "Entit\u00e1sok", - "mode": "M\u00f3d" - }, - "description": "V\u00e1lassza ki a felvenni k\u00edv\u00e1nt entit\u00e1sokat. Kieg\u00e9sz\u00edt\u0151 m\u00f3dban csak egyetlen entit\u00e1s szerepel. H\u00eddbefogad\u00e1si m\u00f3dban a tartom\u00e1ny \u00f6sszes entit\u00e1sa szerepelni fog, hacsak nincsenek kijel\u00f6lve konkr\u00e9t entit\u00e1sok. H\u00eddkiz\u00e1r\u00e1si m\u00f3dban a domain \u00f6sszes entit\u00e1sa szerepelni fog, kiv\u00e9ve a kiz\u00e1rt entit\u00e1sokat. A legjobb teljes\u00edtm\u00e9ny \u00e9rdek\u00e9ben minden TV m\u00e9dialej\u00e1tsz\u00f3hoz, tev\u00e9kenys\u00e9galap\u00fa t\u00e1vir\u00e1ny\u00edt\u00f3hoz, z\u00e1rhoz \u00e9s f\u00e9nyk\u00e9pez\u0151g\u00e9phez k\u00fcl\u00f6n HomeKit tartoz\u00e9kot hoznak l\u00e9tre.", - "title": "V\u00e1lassza ki a felvenni k\u00edv\u00e1nt entit\u00e1sokat" - }, "init": { "data": { "domains": "Felvenni k\u00edv\u00e1nt domainek", - "include_domains": "Felvenni k\u00edv\u00e1nt domainek", "include_exclude_mode": "Felv\u00e9tel m\u00f3dja", "mode": "HomeKit m\u00f3d" }, "description": "A HomeKit konfigur\u00e1lhat\u00f3 \u00fagy, hogy egy h\u00edd vagy egyetlen tartoz\u00e9k l\u00e1that\u00f3 legyen. Kieg\u00e9sz\u00edt\u0151 m\u00f3dban csak egyetlen entit\u00e1s haszn\u00e1lhat\u00f3. A tartoz\u00e9k m\u00f3dra van sz\u00fcks\u00e9g ahhoz, hogy a TV -eszk\u00f6zoszt\u00e1ly\u00fa m\u00e9dialej\u00e1tsz\u00f3k megfelel\u0151en m\u0171k\u00f6djenek. A \u201eTartalmazand\u00f3 tartom\u00e1nyok\u201d entit\u00e1sai szerepelni fognak a HomeKitben. A k\u00f6vetkez\u0151 k\u00e9perny\u0151n kiv\u00e1laszthatja, hogy mely entit\u00e1sokat k\u00edv\u00e1nja felvenni vagy kiz\u00e1rni a list\u00e1b\u00f3l.", - "title": "V\u00e1lassza ki a felvenni k\u00edv\u00e1nt domaineket." + "title": "V\u00e1lassza ki a m\u00f3dot \u00e9s a tartom\u00e1nyokat." }, "yaml": { "description": "Ez a bejegyz\u00e9s YAML-en kereszt\u00fcl vez\u00e9relhet\u0151", diff --git a/homeassistant/components/homekit/translations/id.json b/homeassistant/components/homekit/translations/id.json index 5faedff893b..8293ad9d72c 100644 --- a/homeassistant/components/homekit/translations/id.json +++ b/homeassistant/components/homekit/translations/id.json @@ -55,18 +55,9 @@ "description": "Semua entitas \"{domains}\" akan disertakan kecuali entitas tertentu dipilih.", "title": "Pilih entitas yang akan disertakan" }, - "include_exclude": { - "data": { - "entities": "Entitas", - "mode": "Mode" - }, - "description": "Pilih entitas yang akan disertakan. Dalam mode aksesori, hanya satu entitas yang disertakan. Dalam mode \"bridge include\", semua entitas di domain akan disertakan, kecuali entitas tertentu dipilih. Dalam mode \"bridge exclude\", semua entitas di domain akan disertakan, kecuali untuk entitas tertentu yang dipilih. Untuk kinerja terbaik, aksesori HomeKit terpisah diperlukan untuk masing-masing pemutar media TV, remote berbasis aktivitas, kunci, dan kamera.", - "title": "Pilih entitas untuk disertakan" - }, "init": { "data": { "domains": "Domain yang disertakan", - "include_domains": "Domain yang disertakan", "include_exclude_mode": "Mode Penyertaan", "mode": "Mode HomeKit" }, diff --git a/homeassistant/components/homekit/translations/it.json b/homeassistant/components/homekit/translations/it.json index 186bf989a4e..7acec1af5c3 100644 --- a/homeassistant/components/homekit/translations/it.json +++ b/homeassistant/components/homekit/translations/it.json @@ -55,18 +55,9 @@ "description": "Tutte le entit\u00e0 \"{domini}\" saranno incluse a eccezione delle entit\u00e0 escluse e delle entit\u00e0 categorizzate.", "title": "Seleziona le entit\u00e0 da includere" }, - "include_exclude": { - "data": { - "entities": "Entit\u00e0", - "mode": "Modalit\u00e0" - }, - "description": "Scegli le entit\u00e0 da includere. In modalit\u00e0 accessorio, \u00e8 inclusa una sola entit\u00e0. In modalit\u00e0 di inclusione bridge, tutte le entit\u00e0 nel dominio saranno incluse, a meno che non siano selezionate entit\u00e0 specifiche. In modalit\u00e0 di esclusione bridge, tutte le entit\u00e0 nel dominio saranno incluse, a eccezione delle entit\u00e0 escluse. Per prestazioni ottimali, sar\u00e0 creata una HomeKit separata accessoria per ogni lettore multimediale TV, telecomando basato sulle attivit\u00e0, serratura e videocamera.", - "title": "Seleziona le entit\u00e0 da includere" - }, "init": { "data": { "domains": "Domini da includere", - "include_domains": "Domini da includere", "include_exclude_mode": "Modalit\u00e0 di inclusione", "mode": "Modalit\u00e0 HomeKit" }, diff --git a/homeassistant/components/homekit/translations/ja.json b/homeassistant/components/homekit/translations/ja.json index 6d6b441484f..6bcad37ad61 100644 --- a/homeassistant/components/homekit/translations/ja.json +++ b/homeassistant/components/homekit/translations/ja.json @@ -55,18 +55,9 @@ "description": "\u7279\u5b9a\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u306a\u3044\u9650\u308a\u3001\u3059\u3079\u3066\u306e \u201c{domains}\u201d \u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u304c\u542b\u307e\u308c\u307e\u3059\u3002", "title": "\u542b\u3081\u308b\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u9078\u629e" }, - "include_exclude": { - "data": { - "entities": "\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3", - "mode": "\u30e2\u30fc\u30c9" - }, - "description": "\u542b\u307e\u308c\u308b\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u9078\u629e\u3057\u307e\u3059\u3002\u30a2\u30af\u30bb\u30b5\u30ea \u30e2\u30fc\u30c9\u3067\u306f\u30011\u3064\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306e\u307f\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u30d6\u30ea\u30c3\u30b8\u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u30e2\u30fc\u30c9\u3067\u306f\u3001\u7279\u5b9a\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u306a\u3044\u9650\u308a\u3001\u30c9\u30e1\u30a4\u30f3\u5185\u306e\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u30d6\u30ea\u30c3\u30b8\u9664\u5916\u30e2\u30fc\u30c9\u3067\u306f\u3001\u9664\u5916\u3055\u308c\u305f\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u9664\u3044\u3066\u3001\u30c9\u30e1\u30a4\u30f3\u5185\u306e\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u6700\u9ad8\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5b9f\u73fe\u3059\u308b\u305f\u3081\u306b\u3001\u30c6\u30ec\u30d3\u30e1\u30c7\u30a3\u30a2\u30d7\u30ec\u30fc\u30e4\u30fc\u3001\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\u30d9\u30fc\u30b9\u306e\u30ea\u30e2\u30b3\u30f3(remote)\u3001\u30ed\u30c3\u30af\u3001\u30ab\u30e1\u30e9\u306b\u5bfe\u3057\u3066\u500b\u5225\u306b\u3001HomeKit\u30a2\u30af\u30bb\u30b5\u30ea\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002", - "title": "\u542b\u3081\u308b\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u9078\u629e" - }, "init": { "data": { "domains": "\u542b\u3081\u308b\u30c9\u30e1\u30a4\u30f3", - "include_domains": "\u542b\u3081\u308b\u30c9\u30e1\u30a4\u30f3", "include_exclude_mode": "\u30a4\u30f3\u30af\u30eb\u30fc\u30b8\u30e7\u30f3\u30e2\u30fc\u30c9", "mode": "\u30e2\u30fc\u30c9" }, diff --git a/homeassistant/components/homekit/translations/ka.json b/homeassistant/components/homekit/translations/ka.json index 97787f722fc..63b99f73416 100644 --- a/homeassistant/components/homekit/translations/ka.json +++ b/homeassistant/components/homekit/translations/ka.json @@ -1,14 +1,6 @@ { "options": { "step": { - "include_exclude": { - "data": { - "entities": "\u10dd\u10d1\u10d8\u10d4\u10e5\u10e2\u10d4\u10d1\u10d8", - "mode": "\u10e0\u10d4\u10df\u10db\u10d8" - }, - "description": "\u10e8\u10d4\u10d0\u10e0\u10e9\u10d8\u10d4\u10d7 \u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10d5\u10da\u10d4\u10dc\u10d8 \u10dd\u10d1\u10d8\u10d4\u10e5\u10e2\u10d4\u10d1\u10d8. \u10d0\u10e5\u10e1\u10d4\u10e1\u10e3\u10d0\u10e0\u10d4\u10d1\u10d8\u10e1 \u10e0\u10d4\u10df\u10d8\u10db\u10e8\u10d8 \u10d2\u10d0\u10db\u10dd\u10d5\u10da\u10d4\u10dc\u10d0\u10e1 \u10d4\u10e5\u10d5\u10d4\u10db\u10d3\u10d4\u10d1\u10d0\u10e0\u10d4\u10d1\u10d0 \u10db\u10ee\u10dd\u10da\u10dd\u10d3 \u10d4\u10e0\u10d7\u10d8 \u10dd\u10d1\u10d8\u10d4\u10e5\u10e2\u10d8. \u10d1\u10e0\u10d8\u10ef\u10d8\u10e1 \u10db\u10dd\u10ea\u10e3\u10da\u10dd\u10d1\u10d8\u10e1 \u10e0\u10d4\u10df\u10d8\u10db\u10e8\u10d8 \u10d7\u10e3 \u10e1\u10de\u10d4\u10ea\u10d8\u10e4\u10d8\u10d9\u10e3\u10e0\u10d8 \u10dd\u10d1\u10d8\u10d4\u10e5\u10e2\u10d4\u10d1\u10d8 \u10d0\u10e0 \u10d0\u10e0\u10d8\u10e1 \u10e8\u10d4\u10e0\u10e9\u10d4\u10e3\u10da\u10d8, \u10db\u10d8\u10e1\u10d0\u10ec\u10d5\u10d3\u10dd\u10db\u10d8 \u10d8\u10e5\u10dc\u10d4\u10d1\u10d0 \u10d3\u10dd\u10db\u10d4\u10dc\u10d8\u10e1 \u10e7\u10d5\u10d4\u10da\u10d0 \u10dd\u10d1\u10d8\u10d4\u10e5\u10e2\u10d8. \u10ee\u10d8\u10d3\u10d8\u10e1 \u10d2\u10d0\u10db\u10dd\u10e0\u10d8\u10ea\u10ee\u10d5\u10d8\u10e1 \u10e0\u10d4\u10df\u10d8\u10db\u10e8\u10d8, \u10d3\u10dd\u10db\u10d4\u10dc\u10d8\u10e1 \u10e7\u10d5\u10d4\u10da\u10d0 \u10dd\u10d1\u10d8\u10d4\u10e5\u10e2\u10d8 \u10d8\u10e5\u10dc\u10d4\u10d1\u10d0 \u10dc\u10d8\u10e1\u10d0\u10ec\u10d5\u10d3\u10dd\u10db\u10d8 \u10d2\u10d0\u10db\u10dd\u10e0\u10d8\u10ea\u10ee\u10e3\u10da \u10dd\u10d1\u10d8\u10d4\u10e5\u10e2\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10e0\u10d3\u10d0.", - "title": "\u10d0\u10d8\u10e0\u10e9\u10d8\u10d4\u10d7 \u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10d5\u10da\u10d4\u10dc\u10d8 \u10dd\u10d1\u10d8\u10d4\u10e5\u10e2\u10d4\u10d1\u10d8" - }, "init": { "data": { "mode": "\u10e0\u10d4\u10df\u10d8\u10db\u10d8" diff --git a/homeassistant/components/homekit/translations/ko.json b/homeassistant/components/homekit/translations/ko.json index e93a55db971..cd8cbb81943 100644 --- a/homeassistant/components/homekit/translations/ko.json +++ b/homeassistant/components/homekit/translations/ko.json @@ -33,17 +33,8 @@ "description": "\ub124\uc774\ud2f0\ube0c H.264 \uc2a4\ud2b8\ub9bc\uc744 \uc9c0\uc6d0\ud558\ub294 \ubaa8\ub4e0 \uce74\uba54\ub77c\ub97c \ud655\uc778\ud574\uc8fc\uc138\uc694. \uce74\uba54\ub77c\uac00 H.264 \uc2a4\ud2b8\ub9bc\uc744 \ucd9c\ub825\ud558\uc9c0 \uc54a\uc73c\uba74 \uc2dc\uc2a4\ud15c\uc740 \ube44\ub514\uc624\ub97c HomeKit\uc6a9 H.264 \ud3ec\ub9f7\uc73c\ub85c \ubcc0\ud658\uc2dc\ud0b5\ub2c8\ub2e4. \ud2b8\ub79c\uc2a4\ucf54\ub529 \ubcc0\ud658\uc5d0\ub294 \ub192\uc740 CPU \uc131\ub2a5\uc774 \ud544\uc694\ud558\uba70 Raspberry Pi\uc640 \uac19\uc740 \ub2e8\uc77c \ubcf4\ub4dc \ucef4\ud4e8\ud130\uc5d0\uc11c\ub294 \uc791\ub3d9\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.", "title": "\uce74\uba54\ub77c \ube44\ub514\uc624 \ucf54\ub371 \uc120\ud0dd\ud558\uae30" }, - "include_exclude": { - "data": { - "entities": "\uad6c\uc131\uc694\uc18c", - "mode": "\ubaa8\ub4dc" - }, - "description": "\ud3ec\ud568\ud560 \uad6c\uc131\uc694\uc18c\ub97c \uc120\ud0dd\ud574\uc8fc\uc138\uc694. \uc561\uc138\uc11c\ub9ac \ubaa8\ub4dc\uc5d0\uc11c\ub294 \ub2e8\uc77c \uad6c\uc131\uc694\uc18c\ub9cc \ud3ec\ud568\ub429\ub2c8\ub2e4. \ube0c\ub9ac\uc9c0 \ud3ec\ud568 \ubaa8\ub4dc\uc5d0\uc11c\ub294 \ud2b9\uc815 \uad6c\uc131\uc694\uc18c\ub97c \uc120\ud0dd\ud558\uc9c0 \uc54a\ub294 \ud55c \ub3c4\uba54\uc778\uc758 \ubaa8\ub4e0 \uad6c\uc131\uc694\uc18c\uac00 \ud3ec\ud568\ub429\ub2c8\ub2e4. \ube0c\ub9ac\uc9c0 \uc81c\uc678 \ubaa8\ub4dc\uc5d0\uc11c\ub294 \uc81c\uc678\ub41c \uad6c\uc131\uc694\uc18c\ub97c \uc81c\uc678\ud55c \ub3c4\uba54\uc778\uc758 \ub098\uba38\uc9c0 \uad6c\uc131\uc694\uc18c\uac00 \ud3ec\ud568\ub429\ub2c8\ub2e4. \ucd5c\uc0c1\uc758 \uc131\ub2a5\uc744 \uc704\ud574 \uac01 TV \ubbf8\ub514\uc5b4 \ud50c\ub808\uc774\uc5b4\uc640 \ud65c\ub3d9 \uae30\ubc18 \ub9ac\ubaa8\ucf58, \uc7a0\uae08\uae30\uae30, \uce74\uba54\ub77c\ub294 \ubcc4\ub3c4\uc758 HomeKit \uc561\uc138\uc11c\ub9ac\ub85c \uc0dd\uc131\ub429\ub2c8\ub2e4.", - "title": "\ud3ec\ud568\ud560 \ub3c4\uba54\uc778 \uc120\ud0dd\ud558\uae30" - }, "init": { "data": { - "include_domains": "\ud3ec\ud568\ud560 \ub3c4\uba54\uc778", "mode": "\ubaa8\ub4dc" }, "description": "\ube0c\ub9ac\uc9c0 \ub610\ub294 \ub2e8\uc77c \uc561\uc138\uc11c\ub9ac\ub97c \ub178\ucd9c\ud558\uc5ec HomeKit\ub97c \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc561\uc138\uc11c\ub9ac \ubaa8\ub4dc\uc5d0\uc11c\ub294 \ub2e8\uc77c \uad6c\uc131\uc694\uc18c\ub9cc \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. TV \uae30\uae30 \ud074\ub798\uc2a4\uac00 \uc788\ub294 \ubbf8\ub514\uc5b4 \ud50c\ub808\uc774\uc5b4\uac00 \uc81c\ub300\ub85c \uc791\ub3d9\ud558\ub824\uba74 \uc561\uc138\uc11c\ub9ac \ubaa8\ub4dc\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. \"\ud3ec\ud568\ud560 \ub3c4\uba54\uc778\"\uc758 \uad6c\uc131\uc694\uc18c\uac00 HomeKit\uc5d0 \ud3ec\ud568\ub418\uba70, \ub2e4\uc74c \ud654\uba74\uc5d0\uc11c \uc774 \ubaa9\ub85d\uc5d0 \ud3ec\ud568\ud558\uac70\ub098 \uc81c\uc678\ud560 \uad6c\uc131\uc694\uc18c\ub97c \uc120\ud0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.", diff --git a/homeassistant/components/homekit/translations/lb.json b/homeassistant/components/homekit/translations/lb.json index 6261d4b5ed4..409d860940d 100644 --- a/homeassistant/components/homekit/translations/lb.json +++ b/homeassistant/components/homekit/translations/lb.json @@ -33,17 +33,8 @@ "description": "Iwwerpr\u00e9if all Kamera op nativ H.264 \u00cbnnerst\u00ebtzung. Falls d'Kamera keng H.264 Stream Ausgab huet, transkod\u00e9iert de System de Video op H.264 fir Homekit. Transkod\u00e9iere ben\u00e9idegt eng performant CPU an w\u00e4ert net anst\u00e4nneg op Single Board Computer funktion\u00e9ieren.", "title": "Kamera Video Codec auswielen." }, - "include_exclude": { - "data": { - "entities": "Entit\u00e9iten", - "mode": "Modus" - }, - "description": "Entit\u00e9iten auswielen d\u00e9i expos\u00e9iert solle ginn. Am Acessoire Modus g\u00ebtt n\u00ebmmen eng eenzeg Entit\u00e9it expos\u00e9iert. Am Bridge include Modus, ginn all Entit\u00e9iten vum Domaine expos\u00e9iert ausser spezifesch ausgewielten Entit\u00e9iten. Am Bride Exclude Modus, ginn all Entit\u00e9ite vum Domaine expos\u00e9iert ausser d\u00e9i ausgeschlossen Entit\u00e9iten.", - "title": "Entit\u00e9iten auswielen d\u00e9i expos\u00e9iert solle ginn" - }, "init": { "data": { - "include_domains": "Domaine d\u00e9i solle ageschloss ginn", "mode": "Modus" }, "description": "HomeKit kann entweder als Bridge oder Single Accessoire konfigur\u00e9iert ginn. Am Acessoire Modus ka n\u00ebmmen eng eenzeg Entit\u00e9it benotzt ginn. D\u00ebse Modus ass n\u00e9ideg fir de korretke Betrib vu Medie Spiller vun der TV Klasse. Entit\u00e9ite an der \"Domaine fir z'expos\u00e9ieren\" ginn mat HomeKit expos\u00e9iert. Du kanns am n\u00e4chste Schr\u00ebtt auswielen w\u00e9ieng Entit\u00e9ite aus oder ageschloss solle ginn.", diff --git a/homeassistant/components/homekit/translations/nl.json b/homeassistant/components/homekit/translations/nl.json index 2e16ffde8ef..7f8ab1e2ff8 100644 --- a/homeassistant/components/homekit/translations/nl.json +++ b/homeassistant/components/homekit/translations/nl.json @@ -55,18 +55,9 @@ "description": "Alle \" {domains} \"-entiteiten zullen worden opgenomen, tenzij specifieke entiteiten zijn geselecteerd.", "title": "Selecteer de entiteiten die moeten worden opgenomen" }, - "include_exclude": { - "data": { - "entities": "Entiteiten", - "mode": "Mode" - }, - "description": "Kies de entiteiten die u wilt opnemen. In de accessoiremodus is slechts een enkele entiteit inbegrepen. In de bridge-include-modus worden alle entiteiten in het domein opgenomen, tenzij specifieke entiteiten zijn geselecteerd. In de bridge-uitsluitingsmodus worden alle entiteiten in het domein opgenomen, behalve de uitgesloten entiteiten. Voor de beste prestaties wordt voor elke media speler, activiteit gebaseerde afstandsbediening, slot en camera een afzonderlijke Homekit-accessoire gemaakt.", - "title": "Selecteer de entiteiten die u wilt opnemen" - }, "init": { "data": { "domains": "Domeinen om op te nemen", - "include_domains": "Domeinen om op te nemen", "include_exclude_mode": "Inclusiemodus", "mode": "HomeKit-modus" }, diff --git a/homeassistant/components/homekit/translations/no.json b/homeassistant/components/homekit/translations/no.json index 88e39d0835e..29f775853fd 100644 --- a/homeassistant/components/homekit/translations/no.json +++ b/homeassistant/components/homekit/translations/no.json @@ -55,18 +55,9 @@ "description": "Alle \" {domains} \"-enheter vil bli inkludert med mindre spesifikke enheter er valgt.", "title": "Velg enhetene som skal inkluderes" }, - "include_exclude": { - "data": { - "entities": "Entiteter", - "mode": "Modus" - }, - "description": "Velg entitetene som skal inkluderes. I tilbeh\u00f8rsmodus er bare en enkelt entitet inkludert. I bridge-inkluderingsmodus vil alle entiteter i domenet bli inkludert, med mindre spesifikke entiteter er valgt. I bridge-ekskluderingsmodus vil alle entiteter i domenet bli inkludert, bortsett fra de ekskluderte entitetene. For best ytelse opprettes et eget HomeKit-tilbeh\u00f8r for hver tv-mediaspiller, aktivitetsbasert fjernkontroll, l\u00e5s og kamera.", - "title": "Velg entiteter som skal inkluderes" - }, "init": { "data": { "domains": "Domener \u00e5 inkludere", - "include_domains": "Domener \u00e5 inkludere", "include_exclude_mode": "Inkluderingsmodus", "mode": "HomeKit-modus" }, diff --git a/homeassistant/components/homekit/translations/pl.json b/homeassistant/components/homekit/translations/pl.json index 745f07bdadb..73ed271d636 100644 --- a/homeassistant/components/homekit/translations/pl.json +++ b/homeassistant/components/homekit/translations/pl.json @@ -55,18 +55,9 @@ "description": "Wszystkie encje \"{domains}\" zostan\u0105 uwzgl\u0119dnione, chyba \u017ce zostan\u0105 wybrane konkretne encje.", "title": "Wybierz encje, kt\u00f3re maj\u0105 zosta\u0107 uwzgl\u0119dnione" }, - "include_exclude": { - "data": { - "entities": "Encje", - "mode": "Tryb" - }, - "description": "Wybierz encje, kt\u00f3re maj\u0105 by\u0107 uwzgl\u0119dnione. W trybie \"Akcesorium\" tylko jedna encja jest uwzgl\u0119dniona. W trybie \"Uwzgl\u0119dnij mostek\", wszystkie encje w danej domenie b\u0119d\u0105 uwzgl\u0119dnione, chyba \u017ce wybrane s\u0105 tylko konkretne encje. W trybie \"Wyklucz mostek\", wszystkie encje b\u0119d\u0105 uwzgl\u0119dnione, z wyj\u0105tkiem tych wybranych. Dla najlepszej wydajno\u015bci, zostanie utworzone oddzielne akcesorium HomeKit dla ka\u017cdego tv media playera, aktywno\u015bci pilota, zamka oraz kamery.", - "title": "Wybierz encje, kt\u00f3re maj\u0105 by\u0107 uwzgl\u0119dnione" - }, "init": { "data": { "domains": "Domeny do uwzgl\u0119dnienia", - "include_domains": "Domeny do uwzgl\u0119dnienia", "include_exclude_mode": "Tryb dodawania", "mode": "Tryb HomeKit" }, diff --git a/homeassistant/components/homekit/translations/pt-BR.json b/homeassistant/components/homekit/translations/pt-BR.json index ad8aab120f4..5fcc2748d0c 100644 --- a/homeassistant/components/homekit/translations/pt-BR.json +++ b/homeassistant/components/homekit/translations/pt-BR.json @@ -55,18 +55,9 @@ "description": "Todas as entidades \"{domains}\" ser\u00e3o inclu\u00eddas, a menos que entidades espec\u00edficas sejam selecionadas.", "title": "Selecione as entidades a serem inclu\u00eddas" }, - "include_exclude": { - "data": { - "entities": "Entidades", - "mode": "Modo" - }, - "description": "Escolha as entidades a serem inclu\u00eddas. No modo acess\u00f3rio, apenas uma \u00fanica entidade est\u00e1 inclu\u00edda. No modo de incluir ponte, todas as entidades do dom\u00ednio ser\u00e3o inclu\u00eddas a menos que entidades espec\u00edficas sejam selecionadas. No modo de exclus\u00e3o da ponte, todas as entidades do dom\u00ednio ser\u00e3o inclu\u00eddas, exceto para as entidades exclu\u00eddas. Para melhor desempenho, um acess\u00f3rio HomeKit separado ser\u00e1 criado para cada leitor de m\u00eddia de TV, controle remoto, bloqueio e c\u00e2mera baseados em atividades.", - "title": "Selecione as entidades a serem inclu\u00eddas" - }, "init": { "data": { - "domains": "Dom\u00ednios a serem inclu\u00eddos", - "include_domains": "Dom\u00ednios para incluir", + "domains": "Dom\u00ednios para incluir", "include_exclude_mode": "Modo de inclus\u00e3o", "mode": "Modo HomeKit" }, diff --git a/homeassistant/components/homekit/translations/pt.json b/homeassistant/components/homekit/translations/pt.json index 920beaa98df..3df84b70866 100644 --- a/homeassistant/components/homekit/translations/pt.json +++ b/homeassistant/components/homekit/translations/pt.json @@ -23,16 +23,8 @@ "cameras": { "title": "Selecione o codec de v\u00eddeo da c\u00e2mera." }, - "include_exclude": { - "data": { - "entities": "Entidades", - "mode": "Modo" - }, - "title": "Selecione as entidades a serem expostas" - }, "init": { "data": { - "include_domains": "Dom\u00ednios a incluir", "mode": "Modo" }, "title": "Selecione os dom\u00ednios a serem expostos." diff --git a/homeassistant/components/homekit/translations/ru.json b/homeassistant/components/homekit/translations/ru.json index 6de8ed572c0..81dd9afa302 100644 --- a/homeassistant/components/homekit/translations/ru.json +++ b/homeassistant/components/homekit/translations/ru.json @@ -55,18 +55,9 @@ "description": "\u0411\u0443\u0434\u0443\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u201c{domains}\u201c, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b.", "title": "\u041e\u0431\u044a\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u0441\u043f\u0438\u0441\u043e\u043a" }, - "include_exclude": { - "data": { - "entities": "\u041e\u0431\u044a\u0435\u043a\u0442\u044b", - "mode": "\u0420\u0435\u0436\u0438\u043c" - }, - "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432 HomeKit. \u0412 \u0440\u0435\u0436\u0438\u043c\u0435 \u0430\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043e\u0431\u044a\u0435\u043a\u0442. \u0412 \u0440\u0435\u0436\u0438\u043c\u0435 \u043c\u043e\u0441\u0442\u0430 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u044b \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u0435 \u0434\u043e\u043c\u0435\u043d\u0443, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b. \u0412 \u0440\u0435\u0436\u0438\u043c\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u044b \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u0435 \u0434\u043e\u043c\u0435\u043d\u0443, \u043a\u0440\u043e\u043c\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445. \u0414\u043b\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043c\u0435\u0434\u0438\u0430\u043f\u043b\u0435\u0435\u0440\u044b, \u043f\u0443\u043b\u044c\u0442\u044b \u0414\u0423 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u0437\u0430\u043c\u043a\u0438 \u0438 \u043a\u0430\u043c\u0435\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0430\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u0430.", - "title": "\u0412\u044b\u0431\u043e\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432 HomeKit" - }, "init": { "data": { "domains": "\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0434\u043e\u043c\u0435\u043d\u044b", - "include_domains": "\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0434\u043e\u043c\u0435\u043d\u044b", "include_exclude_mode": "\u0420\u0435\u0436\u0438\u043c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f", "mode": "\u0420\u0435\u0436\u0438\u043c HomeKit" }, diff --git a/homeassistant/components/homekit/translations/sl.json b/homeassistant/components/homekit/translations/sl.json index dcfc2496011..333ec699253 100644 --- a/homeassistant/components/homekit/translations/sl.json +++ b/homeassistant/components/homekit/translations/sl.json @@ -32,17 +32,7 @@ }, "title": "Izberite video kodek kamere." }, - "include_exclude": { - "data": { - "entities": "Entitete", - "mode": "Na\u010din" - }, - "title": "Izberite entitete, ki jih \u017eelite izpostaviti" - }, "init": { - "data": { - "include_domains": "Domene za vklju\u010ditev" - }, "description": "Subjekti v domenah, ki jih \u017eelite vklju\u010diti, bodo prevezani na HomeKit. Na naslednjem zaslonu boste lahko izbrali subjekte, ki jih \u017eelite izklju\u010diti s tega seznama.", "title": "Izberite domene za premostitev." }, diff --git a/homeassistant/components/homekit/translations/sv.json b/homeassistant/components/homekit/translations/sv.json index 0bc23c456ff..be1e79453e8 100644 --- a/homeassistant/components/homekit/translations/sv.json +++ b/homeassistant/components/homekit/translations/sv.json @@ -19,9 +19,6 @@ "title": "V\u00e4lj kamerans videoavkodare." }, "init": { - "data": { - "include_domains": "Dom\u00e4ner att inkludera" - }, "title": "V\u00e4lj dom\u00e4ner som ska inkluderas." } } diff --git a/homeassistant/components/homekit/translations/tr.json b/homeassistant/components/homekit/translations/tr.json index 49d4a2cf1fa..52683302a34 100644 --- a/homeassistant/components/homekit/translations/tr.json +++ b/homeassistant/components/homekit/translations/tr.json @@ -55,18 +55,9 @@ "description": "Belirli varl\u0131klar se\u00e7ilmedi\u011fi s\u00fcrece t\u00fcm \u201c {domains} \u201d varl\u0131klar\u0131 dahil edilecektir.", "title": "Dahil edilecek varl\u0131klar\u0131 se\u00e7in" }, - "include_exclude": { - "data": { - "entities": "Varl\u0131klar", - "mode": "Mod" - }, - "description": "Dahil edilecek varl\u0131klar\u0131 se\u00e7in. Aksesuar modunda yaln\u0131zca tek bir varl\u0131k dahil edilir. K\u00f6pr\u00fc dahil modunda, belirli varl\u0131klar se\u00e7ilmedi\u011fi s\u00fcrece etki alan\u0131ndaki t\u00fcm varl\u0131klar dahil edilecektir. K\u00f6pr\u00fc hari\u00e7 tutma modunda, hari\u00e7 tutulan varl\u0131klar d\u0131\u015f\u0131nda etki alan\u0131ndaki t\u00fcm varl\u0131klar dahil edilecektir. En iyi performans i\u00e7in, her TV medya oynat\u0131c\u0131, aktivite tabanl\u0131 uzaktan kumanda, kilit ve kamera i\u00e7in ayr\u0131 bir HomeKit aksesuar\u0131 olu\u015fturulacakt\u0131r.", - "title": "Dahil edilecek varl\u0131klar\u0131 se\u00e7in" - }, "init": { "data": { "domains": "\u0130\u00e7erecek etki alanlar\u0131", - "include_domains": "\u0130\u00e7erecek etki alanlar\u0131", "include_exclude_mode": "Ekleme Modu", "mode": "HomeKit Modu" }, diff --git a/homeassistant/components/homekit/translations/uk.json b/homeassistant/components/homekit/translations/uk.json index 0210380ad38..52da83cca73 100644 --- a/homeassistant/components/homekit/translations/uk.json +++ b/homeassistant/components/homekit/translations/uk.json @@ -33,17 +33,8 @@ "description": "\u042f\u043a\u0449\u043e \u043a\u0430\u043c\u0435\u0440\u0430 \u043d\u0435 \u0432\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u043e\u0442\u0456\u043a H.264, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u043e\u0432\u0443\u0454 \u0432\u0456\u0434\u0435\u043e \u0432 H.264 \u0434\u043b\u044f HomeKit. \u0422\u0440\u0430\u043d\u0441\u043a\u043e\u0434\u0443\u0432\u0430\u043d\u043d\u044f \u0432\u0438\u043c\u0430\u0433\u0430\u0454 \u0432\u0438\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u043e\u0440\u0430 \u0456 \u043d\u0430\u0432\u0440\u044f\u0434 \u0447\u0438 \u0431\u0443\u0434\u0435 \u043f\u0440\u0430\u0446\u044e\u0432\u0430\u0442\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u043f\u043b\u0430\u0442\u043d\u0438\u0445 \u043a\u043e\u043c\u043f'\u044e\u0442\u0435\u0440\u0430\u0445.", "title": "\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u0432\u0456\u0434\u0435\u043e\u043a\u043e\u0434\u0435\u043a \u043a\u0430\u043c\u0435\u0440\u0438." }, - "include_exclude": { - "data": { - "entities": "\u0421\u0443\u0442\u043d\u043e\u0441\u0442\u0456", - "mode": "\u0420\u0435\u0436\u0438\u043c" - }, - "description": "\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u0441\u0443\u0442\u043d\u043e\u0441\u0442\u0456 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0456 \u0432 HomeKit. \u0423 \u0440\u0435\u0436\u0438\u043c\u0456 \u0430\u043a\u0441\u0435\u0441\u0443\u0430\u0440\u0430 \u043c\u043e\u0436\u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0438 \u043b\u0438\u0448\u0435 \u043e\u0434\u043d\u0443 \u0441\u0443\u0442\u043d\u0456\u0441\u0442\u044c. \u0423 \u0440\u0435\u0436\u0438\u043c\u0456 \u043c\u043e\u0441\u0442\u0430 \u0431\u0443\u0434\u0443\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u0456 \u0432\u0441\u0456 \u0441\u0443\u0442\u043d\u043e\u0441\u0442\u0456, \u0449\u043e \u043d\u0430\u043b\u0435\u0436\u0430\u0442\u044c \u0434\u043e\u043c\u0435\u043d\u0443, \u044f\u043a\u0449\u043e \u043d\u0435 \u0432\u0438\u0431\u0440\u0430\u043d\u0456 \u043f\u0435\u0432\u043d\u0456 \u0441\u0443\u0442\u043d\u043e\u0441\u0442\u0456. \u0423 \u0440\u0435\u0436\u0438\u043c\u0456 \u0432\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044f \u0431\u0443\u0434\u0443\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u0456 \u0432\u0441\u0456 \u0441\u0443\u0442\u043d\u043e\u0441\u0442\u0456, \u0449\u043e \u043d\u0430\u043b\u0435\u0436\u0430\u0442\u044c \u0434\u043e\u043c\u0435\u043d\u0443, \u043a\u0440\u0456\u043c \u0432\u0438\u0431\u0440\u0430\u043d\u0438\u0445.", - "title": "\u0412\u0438\u0431\u0456\u0440 \u0441\u0443\u0442\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0456 \u0432 HomeKit" - }, "init": { "data": { - "include_domains": "\u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u0434\u043e\u043c\u0435\u043d\u0438", "mode": "\u0420\u0435\u0436\u0438\u043c" }, "description": "\u0406\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0456\u044f \u0437 HomeKit \u043c\u043e\u0436\u0435 \u0431\u0443\u0442\u0438 \u0432\u0438\u043a\u043e\u043d\u0430\u043d\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0456 \u043c\u043e\u0441\u0442\u0430 \u0430\u0431\u043e \u044f\u043a \u043e\u043a\u0440\u0435\u043c\u0438\u0439 \u0430\u043a\u0441\u0435\u0441\u0443\u0430\u0440. \u0423 \u0440\u0435\u0436\u0438\u043c\u0456 \u0430\u043a\u0441\u0435\u0441\u0443\u0430\u0440\u0430 \u043c\u043e\u0436\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438\u0441\u044f \u0442\u0456\u043b\u044c\u043a\u0438 \u043e\u0434\u0438\u043d \u043e\u0431'\u0454\u043a\u0442. \u041c\u0435\u0434\u0456\u0430\u043f\u043b\u0435\u0454\u0440\u0438, \u044f\u043a\u0456 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u044e\u0442\u044c\u0441\u044f \u0432 Home Assistant \u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c 'device_class: tv', \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0457 \u0440\u043e\u0431\u043e\u0442\u0438 \u043f\u043e\u0432\u0438\u043d\u043d\u0456 \u0431\u0443\u0442\u0438 \u0456\u043d\u0442\u0435\u0433\u0440\u043e\u0432\u0430\u043d\u0456 \u0432 Homekit \u0432 \u0440\u0435\u0436\u0438\u043c\u0456 \u0430\u043a\u0441\u0435\u0441\u0443\u0430\u0440\u0430. \u041e\u0431'\u0454\u043a\u0442\u0438, \u0449\u043e \u043d\u0430\u043b\u0435\u0436\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u043d\u0438\u043c \u0434\u043e\u043c\u0435\u043d\u0430\u043c, \u0431\u0443\u0434\u0443\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u0456 \u0432 HomeKit. \u041d\u0430 \u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u043c\u0443 \u0435\u0442\u0430\u043f\u0456 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u0412\u0438 \u0437\u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u0431\u0440\u0430\u0442\u0438, \u044f\u043a\u0456 \u043e\u0431'\u0454\u043a\u0442\u0438 \u0432\u0438\u043a\u043b\u044e\u0447\u0438\u0442\u0438 \u0437 \u0446\u0438\u0445 \u0434\u043e\u043c\u0435\u043d\u0456\u0432.", diff --git a/homeassistant/components/homekit/translations/zh-Hans.json b/homeassistant/components/homekit/translations/zh-Hans.json index 3f6d005f045..852979fb12a 100644 --- a/homeassistant/components/homekit/translations/zh-Hans.json +++ b/homeassistant/components/homekit/translations/zh-Hans.json @@ -55,18 +55,9 @@ "description": "\u9664\u975e\u5df2\u9009\u62e9\u4e86\u6307\u5b9a\u7684\u5b9e\u4f53\uff0c\u5426\u5219\u6240\u6709\u201c{domains}\u201d\u7c7b\u578b\u7684\u5b9e\u4f53\u90fd\u5c06\u88ab\u5305\u542b\u3002", "title": "\u9009\u62e9\u8981\u5305\u542b\u7684\u5b9e\u4f53" }, - "include_exclude": { - "data": { - "entities": "\u5b9e\u4f53", - "mode": "\u6a21\u5f0f" - }, - "description": "\u9009\u62e9\u8981\u5f00\u653e\u7684\u5b9e\u4f53\u3002\n\u5728\u914d\u4ef6\u6a21\u5f0f\u4e2d\uff0c\u53ea\u80fd\u5f00\u653e\u4e00\u4e2a\u5b9e\u4f53\u3002\u5728\u6865\u63a5\u5305\u542b\u6a21\u5f0f\u4e2d\uff0c\u5982\u679c\u4e0d\u9009\u62e9\u5305\u542b\u7684\u5b9e\u4f53\uff0c\u57df\u4e2d\u6240\u6709\u5b9e\u4f53\u90fd\u4f1a\u5f00\u653e\u3002\u5728\u6865\u63a5\u6392\u9664\u6a21\u5f0f\u4e2d\uff0c\u5982\u679c\u4e0d\u9009\u62e9\u6392\u9664\u7684\u5b9e\u4f53\uff0c\u57df\u4e2d\u6240\u6709\u5b9e\u4f53\u4e5f\u90fd\u4f1a\u5f00\u653e\u3002\n\u4e3a\u83b7\u5f97\u6700\u4f73\u4f53\u9a8c\uff0c\u5c06\u4f1a\u4e3a\u6bcf\u4e2a\u7535\u89c6\u5a92\u4f53\u64ad\u653e\u5668\u3001\u57fa\u4e8e\u6d3b\u52a8\u7684\u9065\u63a7\u5668\u3001\u9501\u548c\u6444\u50cf\u5934\u521b\u5efa\u5355\u72ec\u7684 HomeKit \u914d\u4ef6\u3002", - "title": "\u9009\u62e9\u8981\u5305\u542b\u7684\u5b9e\u4f53" - }, "init": { "data": { "domains": "\u8981\u5305\u542b\u7684\u57df", - "include_domains": "\u8981\u5305\u542b\u7684\u57df", "include_exclude_mode": "\u5305\u542b\u6a21\u5f0f", "mode": "HomeKit \u6a21\u5f0f" }, diff --git a/homeassistant/components/homekit/translations/zh-Hant.json b/homeassistant/components/homekit/translations/zh-Hant.json index b5aa54c72c4..3ad28a22f45 100644 --- a/homeassistant/components/homekit/translations/zh-Hant.json +++ b/homeassistant/components/homekit/translations/zh-Hant.json @@ -55,18 +55,9 @@ "description": "\u9664\u975e\u9078\u64c7\u7279\u5b9a\u5be6\u9ad4\u5916\uff0c\u5c07\u6703\u5305\u542b\u6240\u6709 \u201c{domains}\u201d \u5167\u5be6\u9ad4\u3002", "title": "\u9078\u64c7\u8981\u5305\u542b\u7684\u5be6\u9ad4" }, - "include_exclude": { - "data": { - "entities": "\u5be6\u9ad4", - "mode": "\u6a21\u5f0f" - }, - "description": "\u9078\u64c7\u8981\u5305\u542b\u7684\u5be6\u9ad4\u3002\u65bc\u914d\u4ef6\u6a21\u5f0f\u4e0b\u3001\u50c5\u6709\u55ae\u4e00\u5be6\u9ad4\u5c07\u6703\u5305\u542b\u3002\u65bc\u6a4b\u63a5\u5305\u542b\u6a21\u5f0f\u4e0b\u3001\u6240\u6709\u7db2\u57df\u7684\u5be6\u9ad4\u90fd\u5c07\u5305\u542b\uff0c\u9664\u975e\u9078\u64c7\u7279\u5b9a\u7684\u5be6\u9ad4\u3002\u65bc\u6a4b\u63a5\u6392\u9664\u6a21\u5f0f\u4e2d\u3001\u6240\u6709\u7db2\u57df\u4e2d\u7684\u5be6\u9ad4\u90fd\u5c07\u5305\u542b\uff0c\u9664\u4e86\u6392\u9664\u7684\u5be6\u9ad4\u3002\u70ba\u53d6\u5f97\u6700\u4f73\u6548\u80fd\u3001\u6bcf\u4e00\u500b\u96fb\u8996\u5a92\u9ad4\u64ad\u653e\u5668\u3001\u9060\u7aef\u9059\u63a7\u5668\u3001\u9580\u9396\u8207\u651d\u5f71\u6a5f\uff0c\u5c07\u65bc Homekit \u914d\u4ef6\u6a21\u5f0f\u9032\u884c\u3002", - "title": "\u9078\u64c7\u8981\u5305\u542b\u7684\u5be6\u9ad4" - }, "init": { "data": { "domains": "\u5305\u542b\u7db2\u57df", - "include_domains": "\u5305\u542b\u7db2\u57df", "include_exclude_mode": "\u5305\u542b\u6a21\u5f0f", "mode": "HomeKit \u6a21\u5f0f" }, diff --git a/homeassistant/components/homekit_controller/translations/hu.json b/homeassistant/components/homekit_controller/translations/hu.json index 6fad9050a20..607c46ede6d 100644 --- a/homeassistant/components/homekit_controller/translations/hu.json +++ b/homeassistant/components/homekit_controller/translations/hu.json @@ -3,7 +3,7 @@ "abort": { "accessory_not_found_error": "Nem adhat\u00f3 hozz\u00e1 p\u00e1ros\u00edt\u00e1s, mert az eszk\u00f6z m\u00e1r nem tal\u00e1lhat\u00f3.", "already_configured": "A tartoz\u00e9k m\u00e1r konfigur\u00e1lva van ezzel a vez\u00e9rl\u0151vel.", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "already_paired": "Ez a tartoz\u00e9k m\u00e1r p\u00e1ros\u00edtva van egy m\u00e1sik eszk\u00f6zzel. \u00c1ll\u00edtsa alaphelyzetbe a tartoz\u00e9kot, majd pr\u00f3b\u00e1lkozzon \u00fajra.", "ignored_model": "A HomeKit t\u00e1mogat\u00e1sa e modelln\u00e9l blokkolva van, mivel a szolg\u00e1ltat\u00e1shoz teljes nat\u00edv integr\u00e1ci\u00f3 \u00e9rhet\u0151 el.", "invalid_config_entry": "Ez az eszk\u00f6z k\u00e9szen \u00e1ll a p\u00e1ros\u00edt\u00e1sra, de m\u00e1r van egy \u00fctk\u00f6z\u0151 konfigur\u00e1ci\u00f3s bejegyz\u00e9s Home Assistantban, amelyet el\u0151sz\u00f6r el kell t\u00e1vol\u00edtani.", diff --git a/homeassistant/components/homematicip_cloud/translations/fr.json b/homeassistant/components/homematicip_cloud/translations/fr.json index 01e1d1ed8c2..dd85878991f 100644 --- a/homeassistant/components/homematicip_cloud/translations/fr.json +++ b/homeassistant/components/homematicip_cloud/translations/fr.json @@ -6,7 +6,7 @@ "unknown": "Erreur inattendue" }, "error": { - "invalid_sgtin_or_pin": "Code SGTIN ou PIN invalide, veuillez r\u00e9essayer.", + "invalid_sgtin_or_pin": "Code SGTIN ou PIN non valide, veuillez r\u00e9essayer.", "press_the_button": "Veuillez appuyer sur le bouton bleu.", "register_failed": "\u00c9chec d'enregistrement. Veuillez r\u00e9essayer.", "timeout_button": "D\u00e9lai d'attente expir\u00e9, veuillez r\u00e9\u00e9ssayer." diff --git a/homeassistant/components/homematicip_cloud/translations/hu.json b/homeassistant/components/homematicip_cloud/translations/hu.json index 2915d442a37..975daa36126 100644 --- a/homeassistant/components/homematicip_cloud/translations/hu.json +++ b/homeassistant/components/homematicip_cloud/translations/hu.json @@ -15,7 +15,7 @@ "init": { "data": { "hapid": "Hozz\u00e1f\u00e9r\u00e9si pont azonos\u00edt\u00f3ja (SGTIN)", - "name": "N\u00e9v (opcion\u00e1lis, minden eszk\u00f6z n\u00e9vel\u0151tagjak\u00e9nt haszn\u00e1latos)", + "name": "Elnevez\u00e9s (opcion\u00e1lis, minden eszk\u00f6z n\u00e9vel\u0151tagjak\u00e9nt haszn\u00e1latos)", "pin": "PIN-k\u00f3d" }, "title": "V\u00e1lasszon HomematicIP hozz\u00e1f\u00e9r\u00e9si pontot" diff --git a/homeassistant/components/homematicip_cloud/translations/it.json b/homeassistant/components/homematicip_cloud/translations/it.json index 55c26532fb5..88a2dcd5fc8 100644 --- a/homeassistant/components/homematicip_cloud/translations/it.json +++ b/homeassistant/components/homematicip_cloud/translations/it.json @@ -6,7 +6,7 @@ "unknown": "Errore imprevisto" }, "error": { - "invalid_sgtin_or_pin": "SGTIN o Codice PIN non valido, si prega di riprovare.", + "invalid_sgtin_or_pin": "SGTIN o Codice PIN non valido, riprova.", "press_the_button": "Premi il pulsante blu.", "register_failed": "Registrazione non riuscita, riprova.", "timeout_button": "Timeout della pressione del pulsante blu, riprovare." diff --git a/homeassistant/components/honeywell/translations/ca.json b/homeassistant/components/honeywell/translations/ca.json index 34da1b89f10..0830d657173 100644 --- a/homeassistant/components/honeywell/translations/ca.json +++ b/homeassistant/components/honeywell/translations/ca.json @@ -9,8 +9,18 @@ "password": "Contrasenya", "username": "Nom d'usuari" }, - "description": "Introdueix les credencials utilitzades per iniciar sessi\u00f3 a mytotalconnectcomfort.com.", - "title": "Honeywell Total Connect Comfort (EUA)" + "description": "Introdueix les credencials utilitzades per iniciar sessi\u00f3 a mytotalconnectcomfort.com." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "away_cool_temperature": "Temperatura freda, mode fora", + "away_heat_temperature": "Temperatura calenta, mode fora" + }, + "description": "Opcions addicionals de configuraci\u00f3 de Honeywell. Les temperatures es configuren en Fahrenheit." } } } diff --git a/homeassistant/components/honeywell/translations/de.json b/homeassistant/components/honeywell/translations/de.json index a146d442eef..6cbceffce51 100644 --- a/homeassistant/components/honeywell/translations/de.json +++ b/homeassistant/components/honeywell/translations/de.json @@ -9,8 +9,18 @@ "password": "Passwort", "username": "Benutzername" }, - "description": "Bitte gib die Anmeldedaten ein, mit denen du dich bei mytotalconnectcomfort.com anmeldest.", - "title": "Honeywell Total Connect Comfort (US)" + "description": "Bitte gib die Anmeldedaten ein, mit denen du dich bei mytotalconnectcomfort.com anmeldest." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "away_cool_temperature": "Abwesend K\u00fchlungstemperatur", + "away_heat_temperature": "Abwesend Heiztemperatur" + }, + "description": "Zus\u00e4tzliche Honeywell-Konfigurationsoptionen. Die Temperaturen werden in Fahrenheit eingestellt." } } } diff --git a/homeassistant/components/honeywell/translations/el.json b/homeassistant/components/honeywell/translations/el.json index 7ad0c5b0181..b3fd654ded8 100644 --- a/homeassistant/components/honeywell/translations/el.json +++ b/homeassistant/components/honeywell/translations/el.json @@ -9,8 +9,18 @@ "password": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", "username": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7" }, - "description": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03b1 \u03b4\u03b9\u03b1\u03c0\u03b9\u03c3\u03c4\u03b5\u03c5\u03c4\u03ae\u03c1\u03b9\u03b1 \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b1\u03c4\u03b5 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03bf mytotalconnectcomfort.com.", - "title": "Honeywell Total Connect Comfort (\u0397\u03a0\u0391)" + "description": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03b1 \u03b4\u03b9\u03b1\u03c0\u03b9\u03c3\u03c4\u03b5\u03c5\u03c4\u03ae\u03c1\u03b9\u03b1 \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b1\u03c4\u03b5 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03bf mytotalconnectcomfort.com." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "away_cool_temperature": "\u0398\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1 \u03c8\u03cd\u03be\u03b7\u03c2 \u03bc\u03b1\u03ba\u03c1\u03b9\u03ac", + "away_heat_temperature": "\u0398\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1 \u03b8\u03b5\u03c1\u03bc\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03bc\u03b1\u03ba\u03c1\u03b9\u03ac" + }, + "description": "\u03a0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03b5\u03c2 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7\u03c2 Honeywell. \u039f\u03b9 \u03b8\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b5\u03c2 \u03bf\u03c1\u03af\u03b6\u03bf\u03bd\u03c4\u03b1\u03b9 \u03c3\u03b5 Fahrenheit." } } } diff --git a/homeassistant/components/honeywell/translations/en.json b/homeassistant/components/honeywell/translations/en.json index 168d3a5b93d..bf47a15be55 100644 --- a/homeassistant/components/honeywell/translations/en.json +++ b/homeassistant/components/honeywell/translations/en.json @@ -9,8 +9,7 @@ "password": "Password", "username": "Username" }, - "description": "Please enter the credentials used to log into mytotalconnectcomfort.com.", - "title": "Honeywell Total Connect Comfort (US)" + "description": "Please enter the credentials used to log into mytotalconnectcomfort.com." } } }, @@ -21,8 +20,7 @@ "away_cool_temperature": "Away cool temperature", "away_heat_temperature": "Away heat temperature" }, - "description": "Additional Honeywell config options. Temperatures are set in Fahrenheit.", - "title": "Honeywell Options" + "description": "Additional Honeywell config options. Temperatures are set in Fahrenheit." } } } diff --git a/homeassistant/components/honeywell/translations/es.json b/homeassistant/components/honeywell/translations/es.json index 9f6c562e888..bdae26b8794 100644 --- a/homeassistant/components/honeywell/translations/es.json +++ b/homeassistant/components/honeywell/translations/es.json @@ -9,8 +9,7 @@ "password": "Contrase\u00f1a", "username": "Usuario" }, - "description": "Por favor, introduzca las credenciales utilizadas para iniciar sesi\u00f3n en mytotalconnectcomfort.com.", - "title": "Honeywell Total Connect Comfort (US)" + "description": "Por favor, introduzca las credenciales utilizadas para iniciar sesi\u00f3n en mytotalconnectcomfort.com." } } } diff --git a/homeassistant/components/honeywell/translations/et.json b/homeassistant/components/honeywell/translations/et.json index 264a1efeca5..6673959ad31 100644 --- a/homeassistant/components/honeywell/translations/et.json +++ b/homeassistant/components/honeywell/translations/et.json @@ -9,8 +9,18 @@ "password": "Salas\u00f5na", "username": "Kasutajanimi" }, - "description": "Sisesta saidile mytotalconnectcomfort.com sisenemiseks kasutatav mandaat.", - "title": "Honeywell Total Connect Comfort (USA)" + "description": "Sisesta saidile mytotalconnectcomfort.com sisenemiseks kasutatav mandaat." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "away_cool_temperature": "Eemaloleku jahutuse temperatuur", + "away_heat_temperature": "Eemaloleku k\u00fctte temperatuur" + }, + "description": "T\u00e4iendavad Honeywelli seadistusv\u00f5imalused. Temperatuurid on Fahrenheiti kraadides." } } } diff --git a/homeassistant/components/honeywell/translations/fr.json b/homeassistant/components/honeywell/translations/fr.json index ac11cf20576..0043e8990f1 100644 --- a/homeassistant/components/honeywell/translations/fr.json +++ b/homeassistant/components/honeywell/translations/fr.json @@ -9,8 +9,18 @@ "password": "Mot de passe", "username": "Nom d'utilisateur" }, - "description": "Veuillez saisir les informations d'identification utilis\u00e9es pour vous connecter \u00e0 mytotalconnectcomfort.com.", - "title": "Honeywell Total Connect Comfort (\u00c9tats-Unis)" + "description": "Veuillez saisir les informations d'identification utilis\u00e9es pour vous connecter \u00e0 mytotalconnectcomfort.com." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "away_cool_temperature": "Temp\u00e9rature de refroidissement en absence", + "away_heat_temperature": "Temp\u00e9rature de chauffage en absence" + }, + "description": "Options de configuration Honeywell suppl\u00e9mentaires. Les temp\u00e9ratures sont exprim\u00e9es en degr\u00e9s Fahrenheit." } } } diff --git a/homeassistant/components/honeywell/translations/hu.json b/homeassistant/components/honeywell/translations/hu.json index 5583dc22f2e..14ba9167ea5 100644 --- a/homeassistant/components/honeywell/translations/hu.json +++ b/homeassistant/components/honeywell/translations/hu.json @@ -9,8 +9,18 @@ "password": "Jelsz\u00f3", "username": "Felhaszn\u00e1l\u00f3n\u00e9v" }, - "description": "K\u00e9rj\u00fck, adja meg a mytotalconnectcomfort.com webhelyre val\u00f3 bejelentkez\u00e9shez haszn\u00e1lt hiteles\u00edt\u0151 adatokat.", - "title": "Honeywell Total Connect Comfort (USA)" + "description": "K\u00e9rj\u00fck, adja meg a mytotalconnectcomfort.com webhelyre val\u00f3 bejelentkez\u00e9shez haszn\u00e1lt hiteles\u00edt\u0151 adatokat." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "away_cool_temperature": "H\u0171t\u00e9si h\u0151m\u00e9r\u00e9s\u00e9klet t\u00e1voll\u00e9ti m\u00f3dban", + "away_heat_temperature": "F\u0171t\u00e9si h\u0151m\u00e9r\u00e9s\u00e9klet t\u00e1voll\u00e9ti m\u00f3dban" + }, + "description": "Tov\u00e1bbi Honeywell konfigur\u00e1ci\u00f3s lehet\u0151s\u00e9gek. A h\u0151m\u00e9rs\u00e9kletek Fahrenheitben vannak be\u00e1ll\u00edtva." } } } diff --git a/homeassistant/components/honeywell/translations/id.json b/homeassistant/components/honeywell/translations/id.json index 62151da1481..5ed95a27a76 100644 --- a/homeassistant/components/honeywell/translations/id.json +++ b/homeassistant/components/honeywell/translations/id.json @@ -9,8 +9,18 @@ "password": "Kata Sandi", "username": "Nama Pengguna" }, - "description": "Masukkan kredensial yang digunakan untuk masuk ke mytotalconnectcomfort.com.", - "title": "Honeywell Total Connect Comfort (AS)" + "description": "Masukkan kredensial yang digunakan untuk masuk ke mytotalconnectcomfort.com." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "away_cool_temperature": "Suhu dingin ketika jauh", + "away_heat_temperature": "Suhu panas ketika jauh" + }, + "description": "Opsi konfigurasi Honeywell tambahan. Suhu diatur dalam Fahrenheit." } } } diff --git a/homeassistant/components/honeywell/translations/it.json b/homeassistant/components/honeywell/translations/it.json index 52c828ddcde..87669762fa2 100644 --- a/homeassistant/components/honeywell/translations/it.json +++ b/homeassistant/components/honeywell/translations/it.json @@ -9,8 +9,18 @@ "password": "Password", "username": "Nome utente" }, - "description": "Inserisci le credenziali utilizzate per accedere a mytotalconnectcomfort.com.", - "title": "Honeywell Total Connect Comfort (USA)" + "description": "Inserisci le credenziali utilizzate per accedere a mytotalconnectcomfort.com." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "away_cool_temperature": "Fuori casa temperatura fresca", + "away_heat_temperature": "Fuori casa temperatura calda" + }, + "description": "Ulteriori opzioni di configurazione di Honeywell. Le temperature sono impostate in Fahrenheit." } } } diff --git a/homeassistant/components/honeywell/translations/ja.json b/homeassistant/components/honeywell/translations/ja.json index 1d3e19750c6..1af30341d33 100644 --- a/homeassistant/components/honeywell/translations/ja.json +++ b/homeassistant/components/honeywell/translations/ja.json @@ -9,8 +9,18 @@ "password": "\u30d1\u30b9\u30ef\u30fc\u30c9", "username": "\u30e6\u30fc\u30b6\u30fc\u540d" }, - "description": "mytotalconnectcomfort.com \u306b\u30ed\u30b0\u30a4\u30f3\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u8a8d\u8a3c\u60c5\u5831\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002", - "title": "Honeywell Total Connect Comfort (US)" + "description": "mytotalconnectcomfort.com \u306b\u30ed\u30b0\u30a4\u30f3\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u8a8d\u8a3c\u60c5\u5831\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "away_cool_temperature": "\u30a2\u30a6\u30a7\u30a4\u30af\u30fc\u30eb(Away cool)\u6e29\u5ea6", + "away_heat_temperature": "\u30a2\u30a6\u30a7\u30a4\u30d2\u30fc\u30c8(Away heat)\u6e29\u5ea6" + }, + "description": "Honeywell\u306e\u8ffd\u52a0\u8a2d\u5b9a\u30aa\u30d7\u30b7\u30e7\u30f3\u3002\u6e29\u5ea6\u306f\u83ef\u6c0f(\u00b0F)\u3067\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002" } } } diff --git a/homeassistant/components/honeywell/translations/nl.json b/homeassistant/components/honeywell/translations/nl.json index 0abd80fa088..9d82ef53b21 100644 --- a/homeassistant/components/honeywell/translations/nl.json +++ b/homeassistant/components/honeywell/translations/nl.json @@ -9,8 +9,18 @@ "password": "Wachtwoord", "username": "Gebruikersnaam" }, - "description": "Voer de inloggegevens in die zijn gebruikt om in te loggen op mytotalconnectcomfort.com.", - "title": "Honeywell Total Connect Comfort (US)" + "description": "Voer de inloggegevens in die zijn gebruikt om in te loggen op mytotalconnectcomfort.com." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "away_cool_temperature": "Afwezig koeltemperatuur", + "away_heat_temperature": "Afwezig warmte temperatuur" + }, + "description": "Extra Honeywell configuratie opties. Temperaturen zijn ingesteld in Fahrenheit." } } } diff --git a/homeassistant/components/honeywell/translations/no.json b/homeassistant/components/honeywell/translations/no.json index 97d31d34961..e35e8a2b278 100644 --- a/homeassistant/components/honeywell/translations/no.json +++ b/homeassistant/components/honeywell/translations/no.json @@ -9,8 +9,18 @@ "password": "Passord", "username": "Brukernavn" }, - "description": "Vennligst skriv inn legitimasjonen som brukes for \u00e5 logge deg p\u00e5 mytotalconnectcomfort.com.", - "title": "Honeywell Total Connect Comfort (USA)" + "description": "Vennligst skriv inn legitimasjonen som brukes for \u00e5 logge deg p\u00e5 mytotalconnectcomfort.com." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "away_cool_temperature": "Borte kj\u00f8lig temperatur", + "away_heat_temperature": "Borte varmetemperatur" + }, + "description": "Ytterligere Honeywell-konfigurasjonsalternativer. Temperaturene er satt i Fahrenheit." } } } diff --git a/homeassistant/components/honeywell/translations/pl.json b/homeassistant/components/honeywell/translations/pl.json index c109565e33a..e484f88cb49 100644 --- a/homeassistant/components/honeywell/translations/pl.json +++ b/homeassistant/components/honeywell/translations/pl.json @@ -9,8 +9,18 @@ "password": "Has\u0142o", "username": "Nazwa u\u017cytkownika" }, - "description": "Wprowad\u017a dane uwierzytelniaj\u0105ce u\u017cywane na mytotalconnectcomfort.com", - "title": "Honeywell Total Connect Comfort (USA)" + "description": "Wprowad\u017a dane uwierzytelniaj\u0105ce u\u017cywane na mytotalconnectcomfort.com" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "away_cool_temperature": "Temperatura ch\u0142odzenia w trybie \"poza domem\"", + "away_heat_temperature": "Temperatura grzania w trybie \"poza domem\"" + }, + "description": "Dodatkowe opcje konfiguracji Honeywell. Temperatury s\u0105 ustawiane w stopniach Fahrenheita." } } } diff --git a/homeassistant/components/honeywell/translations/pt-BR.json b/homeassistant/components/honeywell/translations/pt-BR.json index f16a6c71637..4cae96c5b1b 100644 --- a/homeassistant/components/honeywell/translations/pt-BR.json +++ b/homeassistant/components/honeywell/translations/pt-BR.json @@ -9,8 +9,18 @@ "password": "Senha", "username": "Usu\u00e1rio" }, - "description": "Insira as credenciais usadas para fazer login em mytotalconnectcomfort.com.", - "title": "Honeywell Total Connect Comfort (EUA)" + "description": "Insira as credenciais usadas para fazer login em mytotalconnectcomfort.com." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "away_cool_temperature": "Temperatura de frio ausente", + "away_heat_temperature": "Temperatura de calor ausente" + }, + "description": "Op\u00e7\u00f5es adicionais de configura\u00e7\u00e3o Honeywell. As temperaturas s\u00e3o definidas em Fahrenheit." } } } diff --git a/homeassistant/components/honeywell/translations/ru.json b/homeassistant/components/honeywell/translations/ru.json index 1d775e6c2c7..b370df892f6 100644 --- a/homeassistant/components/honeywell/translations/ru.json +++ b/homeassistant/components/honeywell/translations/ru.json @@ -9,8 +9,18 @@ "password": "\u041f\u0430\u0440\u043e\u043b\u044c", "username": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f" }, - "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0430 \u043d\u0430 mytotalconnectcomfort.com.", - "title": "Honeywell Total Connect Comfort (\u0421\u0428\u0410)" + "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0430 \u043d\u0430 mytotalconnectcomfort.com." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "away_cool_temperature": "\u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u043e\u0445\u043b\u0430\u0436\u0434\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \"\u041d\u0435 \u0434\u043e\u043c\u0430\"", + "away_heat_temperature": "\u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u043d\u0430\u0433\u0440\u0435\u0432\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \"\u041d\u0435 \u0434\u043e\u043c\u0430\"" + }, + "description": "\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Honeywell. \u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0433\u0440\u0430\u0434\u0443\u0441\u0430\u0445 \u0424\u0430\u0440\u0435\u043d\u0433\u0435\u0439\u0442\u0430." } } } diff --git a/homeassistant/components/honeywell/translations/tr.json b/homeassistant/components/honeywell/translations/tr.json index e6eb57aca1f..d0c02e5029f 100644 --- a/homeassistant/components/honeywell/translations/tr.json +++ b/homeassistant/components/honeywell/translations/tr.json @@ -9,8 +9,18 @@ "password": "Parola", "username": "Kullan\u0131c\u0131 Ad\u0131" }, - "description": "L\u00fctfen mytotalconnectcomfort.com'da oturum a\u00e7mak i\u00e7in kullan\u0131lan kimlik bilgilerini girin.", - "title": "Honeywell Toplam Ba\u011flant\u0131 Konforu (ABD)" + "description": "L\u00fctfen mytotalconnectcomfort.com'da oturum a\u00e7mak i\u00e7in kullan\u0131lan kimlik bilgilerini girin." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "away_cool_temperature": "Uzak so\u011futma derecesi", + "away_heat_temperature": "Uzak \u0131s\u0131tma derecesi" + }, + "description": "Ek Honeywell yap\u0131land\u0131rma se\u00e7enekleri. S\u0131cakl\u0131klar Fahrenheit cinsinden ayarlan\u0131r." } } } diff --git a/homeassistant/components/honeywell/translations/zh-Hant.json b/homeassistant/components/honeywell/translations/zh-Hant.json index 906506d41a5..c6a657b13be 100644 --- a/homeassistant/components/honeywell/translations/zh-Hant.json +++ b/homeassistant/components/honeywell/translations/zh-Hant.json @@ -9,8 +9,18 @@ "password": "\u5bc6\u78bc", "username": "\u4f7f\u7528\u8005\u540d\u7a31" }, - "description": "\u8acb\u8f38\u5165\u767b\u5165 mytotalconnectcomfort.com \u4e4b\u6191\u8b49\u3002", - "title": "Honeywell Total Connect Comfort\uff08\u7f8e\u570b\uff09" + "description": "\u8acb\u8f38\u5165\u767b\u5165 mytotalconnectcomfort.com \u4e4b\u6191\u8b49\u3002" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "away_cool_temperature": "\u96e2\u5bb6\u5236\u51b7\u6eab\u5ea6", + "away_heat_temperature": "\u96e2\u5bb6\u52a0\u71b1\u6eab\u5ea6" + }, + "description": "\u9644\u52a0 Honeywell \u8a2d\u5b9a\u9078\u9805\u3002\u6eab\u5ea6\u4ee5\u83ef\u6c0f\u9032\u884c\u8a2d\u5b9a\u3002" } } } diff --git a/homeassistant/components/huawei_lte/translations/hu.json b/homeassistant/components/huawei_lte/translations/hu.json index 36d08438fca..b3cc71d5a9d 100644 --- a/homeassistant/components/huawei_lte/translations/hu.json +++ b/homeassistant/components/huawei_lte/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "not_huawei_lte": "Nem Huawei LTE eszk\u00f6z" }, "error": { diff --git a/homeassistant/components/hue/translations/ca.json b/homeassistant/components/hue/translations/ca.json index 92fb30b15d9..3b192e80b00 100644 --- a/homeassistant/components/hue/translations/ca.json +++ b/homeassistant/components/hue/translations/ca.json @@ -6,6 +6,7 @@ "already_in_progress": "El flux de configuraci\u00f3 ja est\u00e0 en curs", "cannot_connect": "Ha fallat la connexi\u00f3", "discover_timeout": "No s'han pogut descobrir enlla\u00e7os Hue", + "invalid_host": "Amfitri\u00f3 inv\u00e0lid", "no_bridges": "No s'han trobat enlla\u00e7os Philips Hue", "not_hue_bridge": "No \u00e9s un enlla\u00e7 Hue", "unknown": "Error inesperat" diff --git a/homeassistant/components/hue/translations/de.json b/homeassistant/components/hue/translations/de.json index 2f8485aae0c..c28014031cc 100644 --- a/homeassistant/components/hue/translations/de.json +++ b/homeassistant/components/hue/translations/de.json @@ -6,6 +6,7 @@ "already_in_progress": "Der Konfigurationsablauf wird bereits ausgef\u00fchrt", "cannot_connect": "Verbindung fehlgeschlagen", "discover_timeout": "Es k\u00f6nnen keine Hue Bridges erkannt werden", + "invalid_host": "Ung\u00fcltiger Host", "no_bridges": "Keine Philips Hue Bridges erkannt", "not_hue_bridge": "Keine Philips Hue Bridge entdeckt", "unknown": "Unerwarteter Fehler" diff --git a/homeassistant/components/hue/translations/el.json b/homeassistant/components/hue/translations/el.json index 99bdc934929..7d1c2cabd44 100644 --- a/homeassistant/components/hue/translations/el.json +++ b/homeassistant/components/hue/translations/el.json @@ -6,6 +6,7 @@ "already_in_progress": "\u0397 \u03c1\u03bf\u03ae \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7\u03c2 \u03b2\u03c1\u03af\u03c3\u03ba\u03b5\u03c4\u03b1\u03b9 \u03ae\u03b4\u03b7 \u03c3\u03b5 \u03b5\u03be\u03ad\u03bb\u03b9\u03be\u03b7", "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", "discover_timeout": "\u0391\u03b4\u03c5\u03bd\u03b1\u03bc\u03af\u03b1 \u03b5\u03bd\u03c4\u03bf\u03c0\u03b9\u03c3\u03bc\u03bf\u03cd \u03b3\u03b5\u03c6\u03c5\u03c1\u03ce\u03bd Hue", + "invalid_host": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ba\u03b5\u03bd\u03c4\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae\u03c2", "no_bridges": "\u0394\u03b5\u03bd \u03b1\u03bd\u03b1\u03ba\u03b1\u03bb\u03cd\u03c6\u03b8\u03b7\u03ba\u03b1\u03bd \u03b3\u03ad\u03c6\u03c5\u03c1\u03b5\u03c2 Philips Hue", "not_hue_bridge": "\u0394\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b3\u03ad\u03c6\u03c5\u03c1\u03b1 Hue", "unknown": "\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" diff --git a/homeassistant/components/hue/translations/en.json b/homeassistant/components/hue/translations/en.json index 7757aca9373..f617be431b9 100644 --- a/homeassistant/components/hue/translations/en.json +++ b/homeassistant/components/hue/translations/en.json @@ -6,6 +6,7 @@ "already_in_progress": "Configuration flow is already in progress", "cannot_connect": "Failed to connect", "discover_timeout": "Unable to discover Hue bridges", + "invalid_host": "Invalid host", "no_bridges": "No Philips Hue bridges discovered", "not_hue_bridge": "Not a Hue bridge", "unknown": "Unexpected error" diff --git a/homeassistant/components/hue/translations/et.json b/homeassistant/components/hue/translations/et.json index 748c5726dfe..df1288d415d 100644 --- a/homeassistant/components/hue/translations/et.json +++ b/homeassistant/components/hue/translations/et.json @@ -6,6 +6,7 @@ "already_in_progress": "Seadistamine on juba k\u00e4imas", "cannot_connect": "\u00dchendus nurjus", "discover_timeout": "Ei leia Philips Hue sildu", + "invalid_host": "Kehtetu host", "no_bridges": "Philips Hue sildu ei avastatud", "not_hue_bridge": "See pole Hue sild", "unknown": "Ilmnes tundmatu viga" diff --git a/homeassistant/components/hue/translations/fr.json b/homeassistant/components/hue/translations/fr.json index ec9d104aa65..cd07cff9fea 100644 --- a/homeassistant/components/hue/translations/fr.json +++ b/homeassistant/components/hue/translations/fr.json @@ -6,6 +6,7 @@ "already_in_progress": "La configuration est d\u00e9j\u00e0 en cours", "cannot_connect": "\u00c9chec de connexion", "discover_timeout": "D\u00e9tection de ponts Philips Hue impossible", + "invalid_host": "H\u00f4te non valide", "no_bridges": "Aucun pont Philips Hue n'a \u00e9t\u00e9 d\u00e9couvert", "not_hue_bridge": "Pas de pont Hue", "unknown": "Erreur inattendue" diff --git a/homeassistant/components/hue/translations/hu.json b/homeassistant/components/hue/translations/hu.json index 02b8652b253..dd5c13c5f59 100644 --- a/homeassistant/components/hue/translations/hu.json +++ b/homeassistant/components/hue/translations/hu.json @@ -3,9 +3,10 @@ "abort": { "all_configured": "M\u00e1r minden Philips Hue bridge konfigur\u00e1lt", "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "cannot_connect": "Sikertelen csatlakoz\u00e1s", "discover_timeout": "Nem tal\u00e1lhat\u00f3 a Hue bridge", + "invalid_host": "\u00c9rv\u00e9nytelen c\u00edm", "no_bridges": "Nem tal\u00e1lhat\u00f3 Philips Hue bridget", "not_hue_bridge": "Nem egy Hue Bridge", "unknown": "Ismeretlen hiba t\u00f6rt\u00e9nt" diff --git a/homeassistant/components/hue/translations/id.json b/homeassistant/components/hue/translations/id.json index d7178f6d135..d450adfb3c4 100644 --- a/homeassistant/components/hue/translations/id.json +++ b/homeassistant/components/hue/translations/id.json @@ -6,6 +6,7 @@ "already_in_progress": "Alur konfigurasi sedang berlangsung", "cannot_connect": "Gagal terhubung", "discover_timeout": "Tidak dapat menemukan bridge Hue", + "invalid_host": "Host tidak valid", "no_bridges": "Bridge Philips Hue tidak ditemukan", "not_hue_bridge": "Bukan bridge Hue", "unknown": "Kesalahan yang tidak diharapkan" diff --git a/homeassistant/components/hue/translations/it.json b/homeassistant/components/hue/translations/it.json index fdafef01f5b..0c1dfce4c1a 100644 --- a/homeassistant/components/hue/translations/it.json +++ b/homeassistant/components/hue/translations/it.json @@ -6,6 +6,7 @@ "already_in_progress": "Il flusso di configurazione \u00e8 gi\u00e0 in corso", "cannot_connect": "Impossibile connettersi", "discover_timeout": "Impossibile trovare i bridge Hue", + "invalid_host": "Host non valido", "no_bridges": "Nessun bridge di Philips Hue trovato", "not_hue_bridge": "Non \u00e8 un bridge Hue", "unknown": "Errore imprevisto" diff --git a/homeassistant/components/hue/translations/nl.json b/homeassistant/components/hue/translations/nl.json index a7d29534218..56bac6b89d8 100644 --- a/homeassistant/components/hue/translations/nl.json +++ b/homeassistant/components/hue/translations/nl.json @@ -6,6 +6,7 @@ "already_in_progress": "De configuratiestroom is al aan de gang", "cannot_connect": "Kan geen verbinding maken", "discover_timeout": "Hue bridges kunnen niet worden gevonden", + "invalid_host": "Ongeldige host", "no_bridges": "Geen Philips Hue bridges ontdekt", "not_hue_bridge": "Dit is geen Hue bridge", "unknown": "Onverwachte fout" diff --git a/homeassistant/components/hue/translations/no.json b/homeassistant/components/hue/translations/no.json index 08c19a9cc51..9c18003aca0 100644 --- a/homeassistant/components/hue/translations/no.json +++ b/homeassistant/components/hue/translations/no.json @@ -6,6 +6,7 @@ "already_in_progress": "Konfigurasjonsflyten p\u00e5g\u00e5r allerede", "cannot_connect": "Tilkobling mislyktes", "discover_timeout": "Kunne ikke oppdage Hue Bridger", + "invalid_host": "Ugyldig vert", "no_bridges": "Ingen Philips Hue Bridger oppdaget", "not_hue_bridge": "Ikke en Hue bro", "unknown": "Uventet feil" diff --git a/homeassistant/components/hue/translations/pl.json b/homeassistant/components/hue/translations/pl.json index 2bdcbc7e053..abfb6fa2a05 100644 --- a/homeassistant/components/hue/translations/pl.json +++ b/homeassistant/components/hue/translations/pl.json @@ -6,6 +6,7 @@ "already_in_progress": "Konfiguracja jest ju\u017c w toku", "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", "discover_timeout": "Nie mo\u017cna wykry\u0107 \u017cadnych mostk\u00f3w Hue", + "invalid_host": "Nieprawid\u0142owy host", "no_bridges": "Nie wykryto mostk\u00f3w Hue", "not_hue_bridge": "To nie jest mostek Hue", "unknown": "Nieoczekiwany b\u0142\u0105d" diff --git a/homeassistant/components/hue/translations/pt-BR.json b/homeassistant/components/hue/translations/pt-BR.json index 05dec678318..cc97e5e055e 100644 --- a/homeassistant/components/hue/translations/pt-BR.json +++ b/homeassistant/components/hue/translations/pt-BR.json @@ -6,6 +6,7 @@ "already_in_progress": "O fluxo de configura\u00e7\u00e3o j\u00e1 est\u00e1 em andamento", "cannot_connect": "Falha ao conectar", "discover_timeout": "Incapaz de descobrir pontes Hue", + "invalid_host": "Host inv\u00e1lido", "no_bridges": "N\u00e3o h\u00e1 pontes Philips Hue descobertas", "not_hue_bridge": "N\u00e3o \u00e9 uma ponte Hue", "unknown": "Erro inesperado" diff --git a/homeassistant/components/hue/translations/ru.json b/homeassistant/components/hue/translations/ru.json index 8bd5ac77d52..6e470b74f1f 100644 --- a/homeassistant/components/hue/translations/ru.json +++ b/homeassistant/components/hue/translations/ru.json @@ -6,6 +6,7 @@ "already_in_progress": "\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f.", "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", "discover_timeout": "\u0428\u043b\u044e\u0437 Philips Hue \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d.", + "invalid_host": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0445\u043e\u0441\u0442.", "no_bridges": "\u0428\u043b\u044e\u0437\u044b Philips Hue \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b.", "not_hue_bridge": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0448\u043b\u044e\u0437\u043e\u043c Hue.", "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." diff --git a/homeassistant/components/hue/translations/tr.json b/homeassistant/components/hue/translations/tr.json index 8d23af54c66..32ab9bb1887 100644 --- a/homeassistant/components/hue/translations/tr.json +++ b/homeassistant/components/hue/translations/tr.json @@ -6,6 +6,7 @@ "already_in_progress": "Yap\u0131land\u0131rma ak\u0131\u015f\u0131 zaten devam ediyor", "cannot_connect": "Ba\u011flanma hatas\u0131", "discover_timeout": "Hue k\u00f6pr\u00fcleri bulunam\u0131yor", + "invalid_host": "Ge\u00e7ersiz sunucu", "no_bridges": "Philips Hue k\u00f6pr\u00fcs\u00fc bulunamad\u0131", "not_hue_bridge": "Hue k\u00f6pr\u00fcs\u00fc de\u011fil", "unknown": "Beklenmeyen hata" diff --git a/homeassistant/components/hue/translations/zh-Hant.json b/homeassistant/components/hue/translations/zh-Hant.json index 6c37c699340..1816b459a85 100644 --- a/homeassistant/components/hue/translations/zh-Hant.json +++ b/homeassistant/components/hue/translations/zh-Hant.json @@ -6,6 +6,7 @@ "already_in_progress": "\u8a2d\u5b9a\u5df2\u7d93\u9032\u884c\u4e2d", "cannot_connect": "\u9023\u7dda\u5931\u6557", "discover_timeout": "\u7121\u6cd5\u641c\u5c0b\u5230 Hue Bridge", + "invalid_host": "\u4e3b\u6a5f\u7aef\u7121\u6548", "no_bridges": "\u672a\u767c\u73fe\u5230 Philips Hue Bridge", "not_hue_bridge": "\u975e Hue Bridge \u88dd\u7f6e", "unknown": "\u672a\u9810\u671f\u932f\u8aa4" diff --git a/homeassistant/components/humidifier/translations/hu.json b/homeassistant/components/humidifier/translations/hu.json index d8e2ce86a9a..7979334429d 100644 --- a/homeassistant/components/humidifier/translations/hu.json +++ b/homeassistant/components/humidifier/translations/hu.json @@ -13,6 +13,7 @@ "is_on": "{entity_name} be van kapcsolva" }, "trigger_type": { + "changed_states": "{entity_name} be- vagy kikapcsolt", "target_humidity_changed": "{name} k\u00edv\u00e1nt p\u00e1ratartalom megv\u00e1ltozott", "toggled": "{entity_name} \u00e1tkapcsolt", "turned_off": "{entity_name} ki lett kapcsolva", diff --git a/homeassistant/components/hyperion/translations/hu.json b/homeassistant/components/hyperion/translations/hu.json index 750f2380624..aaffa705279 100644 --- a/homeassistant/components/hyperion/translations/hu.json +++ b/homeassistant/components/hyperion/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "A szolg\u00e1ltat\u00e1s m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "auth_new_token_not_granted_error": "Az \u00fajonnan l\u00e9trehozott tokent nem hagyt\u00e1k j\u00f3v\u00e1 a Hyperion felhaszn\u00e1l\u00f3i fel\u00fclet\u00e9n", "auth_new_token_not_work_error": "Nem siker\u00fclt hiteles\u00edteni az \u00fajonnan l\u00e9trehozott token haszn\u00e1lat\u00e1val", "auth_required_error": "Nem siker\u00fclt meghat\u00e1rozni, hogy sz\u00fcks\u00e9ges-e enged\u00e9ly", @@ -27,7 +27,7 @@ "title": "Er\u0151s\u00edtse meg a Hyperion Ambilight szolg\u00e1ltat\u00e1s hozz\u00e1ad\u00e1s\u00e1t" }, "create_token": { - "description": "Az al\u00e1bbiakban v\u00e1lassza a **K\u00fcld\u00e9s** lehet\u0151s\u00e9get \u00faj hiteles\u00edt\u00e9si token k\u00e9r\u00e9s\u00e9hez. A k\u00e9relem j\u00f3v\u00e1hagy\u00e1s\u00e1hoz \u00e1tir\u00e1ny\u00edtunk a Hyperion felhaszn\u00e1l\u00f3i fel\u00fcletre. K\u00e9rj\u00fck, ellen\u0151rizze, hogy a megjelen\u00edtett azonos\u00edt\u00f3 \"{auth_id}\"", + "description": "Az al\u00e1bbiakban v\u00e1lassza a **Mehet** lehet\u0151s\u00e9get \u00faj hiteles\u00edt\u00e9si token k\u00e9r\u00e9s\u00e9hez. A k\u00e9relem j\u00f3v\u00e1hagy\u00e1s\u00e1hoz \u00e1tir\u00e1ny\u00edtunk a Hyperion felhaszn\u00e1l\u00f3i fel\u00fcletre. K\u00e9rj\u00fck, ellen\u0151rizze, hogy a megjelen\u00edtett azonos\u00edt\u00f3 \"{auth_id}\"", "title": "\u00daj hiteles\u00edt\u00e9si token automatikus l\u00e9trehoz\u00e1sa" }, "create_token_external": { diff --git a/homeassistant/components/ifttt/translations/ja.json b/homeassistant/components/ifttt/translations/ja.json index a3a63f532cf..87844be51d4 100644 --- a/homeassistant/components/ifttt/translations/ja.json +++ b/homeassistant/components/ifttt/translations/ja.json @@ -6,7 +6,7 @@ "webhook_not_internet_accessible": "Webhook\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u4fe1\u3059\u308b\u306b\u306f\u3001Home Assistant\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u3001\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002" }, "create_entry": { - "default": "Home Assistant\u306b\u30a4\u30d9\u30f3\u30c8\u3092\u9001\u4fe1\u3059\u308b\u306b\u306f\u3001[IFTTT Webhook applet]({applet_url})\u306e\"Make a web request\"\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\n\n\u4ee5\u4e0b\u306e\u60c5\u5831\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\n- URL: `{webhook_url}`\n- Method(\u65b9\u5f0f): POST\n- Content Type: application/json\n\n\u53d7\u4fe1\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306b\u30aa\u30fc\u30c8\u30e1\u30fc\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001[\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8]({docs_url})\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002" + "default": "Home Assistant\u306b\u30a4\u30d9\u30f3\u30c8\u3092\u9001\u4fe1\u3059\u308b\u306b\u306f\u3001[IFTTT Webhook applet]({applet_url})\u306e\"Make a web request\"\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\n\n\u4ee5\u4e0b\u306e\u60c5\u5831\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\n- URL: `{webhook_url}`\n- Method(\u65b9\u5f0f): POST\n- Content Type(\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u7a2e\u985e): application/json\n\n\u53d7\u4fe1\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306b\u30aa\u30fc\u30c8\u30e1\u30fc\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001[\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8]({docs_url})\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002" }, "step": { "user": { diff --git a/homeassistant/components/insteon/translations/ca.json b/homeassistant/components/insteon/translations/ca.json index 59c711c3dae..9805d03c685 100644 --- a/homeassistant/components/insteon/translations/ca.json +++ b/homeassistant/components/insteon/translations/ca.json @@ -2,13 +2,18 @@ "config": { "abort": { "cannot_connect": "Ha fallat la connexi\u00f3", + "not_insteon_device": "El dispositiu descobert no \u00e9s un dispositiu Insteon", "single_instance_allowed": "Ja configurat. Nom\u00e9s \u00e9s possible una sola configuraci\u00f3." }, "error": { "cannot_connect": "Ha fallat la connexi\u00f3", "select_single": "Selecciona una opci\u00f3." }, + "flow_title": "{name}", "step": { + "confirm_usb": { + "description": "Vols configurar {name}?" + }, "hubv1": { "data": { "host": "Adre\u00e7a IP", diff --git a/homeassistant/components/insteon/translations/de.json b/homeassistant/components/insteon/translations/de.json index 0866f53481f..164fbccceed 100644 --- a/homeassistant/components/insteon/translations/de.json +++ b/homeassistant/components/insteon/translations/de.json @@ -2,13 +2,18 @@ "config": { "abort": { "cannot_connect": "Verbindung fehlgeschlagen", + "not_insteon_device": "Erkanntes Ger\u00e4t ist kein Insteon-Ger\u00e4t", "single_instance_allowed": "Bereits konfiguriert. Nur eine einzige Konfiguration m\u00f6glich." }, "error": { "cannot_connect": "Verbindung fehlgeschlagen", "select_single": "W\u00e4hle eine Option aus." }, + "flow_title": "{name}", "step": { + "confirm_usb": { + "description": "M\u00f6chtest du {name} einrichten?" + }, "hubv1": { "data": { "host": "IP-Adresse", diff --git a/homeassistant/components/insteon/translations/el.json b/homeassistant/components/insteon/translations/el.json index f26c9cba54c..4a4c402ddc0 100644 --- a/homeassistant/components/insteon/translations/el.json +++ b/homeassistant/components/insteon/translations/el.json @@ -2,13 +2,18 @@ "config": { "abort": { "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", + "not_insteon_device": "\u0397 \u03b1\u03bd\u03b1\u03ba\u03b1\u03bb\u03c5\u03c6\u03b8\u03b5\u03af\u03c3\u03b1 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae Insteon", "single_instance_allowed": "\u0388\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af. \u039c\u03cc\u03bd\u03bf \u03bc\u03af\u03b1 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae." }, "error": { "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", "select_single": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03bc\u03af\u03b1 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae." }, + "flow_title": "{name}", "step": { + "confirm_usb": { + "description": "\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf {name};" + }, "hubv1": { "data": { "host": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 IP", diff --git a/homeassistant/components/insteon/translations/en.json b/homeassistant/components/insteon/translations/en.json index 4c4a439b938..f9e64dcf3cf 100644 --- a/homeassistant/components/insteon/translations/en.json +++ b/homeassistant/components/insteon/translations/en.json @@ -2,6 +2,7 @@ "config": { "abort": { "cannot_connect": "Failed to connect", + "not_insteon_device": "Discovered device not an Insteon device", "single_instance_allowed": "Already configured. Only a single configuration possible." }, "error": { diff --git a/homeassistant/components/insteon/translations/et.json b/homeassistant/components/insteon/translations/et.json index 69368300c7e..eff2fd9b9b2 100644 --- a/homeassistant/components/insteon/translations/et.json +++ b/homeassistant/components/insteon/translations/et.json @@ -2,13 +2,18 @@ "config": { "abort": { "cannot_connect": "\u00dchendamine nurjus", + "not_insteon_device": "Avastatud seade ei ole Insteoni seade", "single_instance_allowed": "Juba seadistatud. V\u00f5imalik on ainult \u00fcks seadistamine." }, "error": { "cannot_connect": "\u00dchendamine nurjus", "select_single": "Vali \u00fcks suvand." }, + "flow_title": "{name}", "step": { + "confirm_usb": { + "description": "Kas seadistada {name} ?" + }, "hubv1": { "data": { "host": "IP aagress", diff --git a/homeassistant/components/insteon/translations/fr.json b/homeassistant/components/insteon/translations/fr.json index 2feb3c5d9c9..2bb0e4d2e33 100644 --- a/homeassistant/components/insteon/translations/fr.json +++ b/homeassistant/components/insteon/translations/fr.json @@ -2,13 +2,18 @@ "config": { "abort": { "cannot_connect": "\u00c9chec de connexion", + "not_insteon_device": "L'appareil d\u00e9couvert n'est pas un appareil Insteon", "single_instance_allowed": "D\u00e9j\u00e0 configur\u00e9. Une seule configuration possible." }, "error": { "cannot_connect": "\u00c9chec de connexion", "select_single": "S\u00e9lectionnez une option." }, + "flow_title": "{name}", "step": { + "confirm_usb": { + "description": "Voulez-vous configurer {name}\u00a0?" + }, "hubv1": { "data": { "host": "Adresse IP", diff --git a/homeassistant/components/insteon/translations/he.json b/homeassistant/components/insteon/translations/he.json index 220bbcbb632..68f13ca5a01 100644 --- a/homeassistant/components/insteon/translations/he.json +++ b/homeassistant/components/insteon/translations/he.json @@ -7,6 +7,7 @@ "error": { "cannot_connect": "\u05d4\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05e0\u05db\u05e9\u05dc\u05d4" }, + "flow_title": "{name}", "step": { "hubv1": { "data": { diff --git a/homeassistant/components/insteon/translations/hu.json b/homeassistant/components/insteon/translations/hu.json index f34307a67a4..560c1fc118e 100644 --- a/homeassistant/components/insteon/translations/hu.json +++ b/homeassistant/components/insteon/translations/hu.json @@ -2,13 +2,18 @@ "config": { "abort": { "cannot_connect": "Sikertelen csatlakoz\u00e1s", + "not_insteon_device": "A felfedezett eszk\u00f6z nem egy Insteon", "single_instance_allowed": "M\u00e1r konfigur\u00e1lva van. Csak egy konfigur\u00e1ci\u00f3 lehets\u00e9ges." }, "error": { "cannot_connect": "Sikertelen csatlakoz\u00e1s", "select_single": "V\u00e1lasszon egy lehet\u0151s\u00e9get" }, + "flow_title": "{name}", "step": { + "confirm_usb": { + "description": "Szeretn\u00e9 be\u00e1ll\u00edtani: {name}?" + }, "hubv1": { "data": { "host": "IP c\u00edm", diff --git a/homeassistant/components/insteon/translations/id.json b/homeassistant/components/insteon/translations/id.json index efae5284150..aae7e9f71ac 100644 --- a/homeassistant/components/insteon/translations/id.json +++ b/homeassistant/components/insteon/translations/id.json @@ -2,13 +2,18 @@ "config": { "abort": { "cannot_connect": "Gagal terhubung", + "not_insteon_device": "Perangkat yang ditemukan bukan perangkat Insteon", "single_instance_allowed": "Sudah dikonfigurasi. Hanya satu konfigurasi yang diizinkan." }, "error": { "cannot_connect": "Gagal terhubung", "select_single": "Pilih satu opsi." }, + "flow_title": "{name}", "step": { + "confirm_usb": { + "description": "Ingin menyiapkan {name}?" + }, "hubv1": { "data": { "host": "Alamat IP", diff --git a/homeassistant/components/insteon/translations/it.json b/homeassistant/components/insteon/translations/it.json index 83a4e87d6f6..b47a06c9d7a 100644 --- a/homeassistant/components/insteon/translations/it.json +++ b/homeassistant/components/insteon/translations/it.json @@ -2,13 +2,18 @@ "config": { "abort": { "cannot_connect": "Impossibile connettersi", + "not_insteon_device": "Dispositivo rilevato non \u00e8 un dispositivo Insteon", "single_instance_allowed": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione." }, "error": { "cannot_connect": "Impossibile connettersi", "select_single": "Seleziona un'opzione." }, + "flow_title": "{name}", "step": { + "confirm_usb": { + "description": "Vuoi configurare {name}?" + }, "hubv1": { "data": { "host": "Indirizzo IP", @@ -46,7 +51,7 @@ "options": { "error": { "cannot_connect": "Impossibile connettersi", - "input_error": "Voci non valide, si prega di controllare i valori.", + "input_error": "Voci non valide, controlla i valori.", "select_single": "Seleziona un'opzione." }, "step": { diff --git a/homeassistant/components/insteon/translations/ja.json b/homeassistant/components/insteon/translations/ja.json index d4ddf083f1b..0b8d93518bd 100644 --- a/homeassistant/components/insteon/translations/ja.json +++ b/homeassistant/components/insteon/translations/ja.json @@ -8,7 +8,11 @@ "cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f", "select_single": "\u30aa\u30d7\u30b7\u30e7\u30f3\u30921\u3064\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002" }, + "flow_title": "{name}", "step": { + "confirm_usb": { + "description": "{name} \u3092\u8a2d\u5b9a\u3057\u307e\u3059\u304b\uff1f" + }, "hubv1": { "data": { "host": "IP\u30a2\u30c9\u30ec\u30b9", @@ -61,7 +65,7 @@ }, "add_x10": { "data": { - "housecode": "\u30cf\u30a6\u30b9\u30b3\u30fc\u30c9(a\uff5ep)", + "housecode": "\u30cf\u30a6\u30b9\u30b3\u30fc\u30c9(a - p)", "platform": "\u30d7\u30e9\u30c3\u30c8\u30db\u30fc\u30e0", "steps": "\u8abf\u5149\u30b9\u30c6\u30c3\u30d7(\u30e9\u30a4\u30c8\u30c7\u30d0\u30a4\u30b9\u306e\u307f\u3001\u30c7\u30d5\u30a9\u30eb\u30c822)", "unitcode": "\u30e6\u30cb\u30c3\u30c8\u30b3\u30fc\u30c9(1\u301c16)" diff --git a/homeassistant/components/insteon/translations/nl.json b/homeassistant/components/insteon/translations/nl.json index 63a0bb059d5..207e370e245 100644 --- a/homeassistant/components/insteon/translations/nl.json +++ b/homeassistant/components/insteon/translations/nl.json @@ -2,13 +2,18 @@ "config": { "abort": { "cannot_connect": "Kon niet verbinden", + "not_insteon_device": "Ontdekt apparaat is geen Insteon apparaat", "single_instance_allowed": "Al geconfigureerd. Slechts \u00e9\u00e9n configuratie mogelijk." }, "error": { "cannot_connect": "Kon niet verbinden", "select_single": "Selecteer een optie." }, + "flow_title": "{name}", "step": { + "confirm_usb": { + "description": "Wilt u {name} instellen?" + }, "hubv1": { "data": { "host": "IP-adres", diff --git a/homeassistant/components/insteon/translations/no.json b/homeassistant/components/insteon/translations/no.json index b5d6a2c3105..3716312b00f 100644 --- a/homeassistant/components/insteon/translations/no.json +++ b/homeassistant/components/insteon/translations/no.json @@ -2,13 +2,18 @@ "config": { "abort": { "cannot_connect": "Tilkobling mislyktes", + "not_insteon_device": "Oppdaget enhet, ikke en Insteon-enhet", "single_instance_allowed": "Allerede konfigurert. Bare \u00e9n enkelt konfigurasjon er mulig." }, "error": { "cannot_connect": "Tilkobling mislyktes", "select_single": "Velg ett alternativ." }, + "flow_title": "{name}", "step": { + "confirm_usb": { + "description": "Vil du konfigurere {name}?" + }, "hubv1": { "data": { "host": "IP adresse", diff --git a/homeassistant/components/insteon/translations/pl.json b/homeassistant/components/insteon/translations/pl.json index c4a58e0e09a..6d3b6c4391d 100644 --- a/homeassistant/components/insteon/translations/pl.json +++ b/homeassistant/components/insteon/translations/pl.json @@ -2,13 +2,18 @@ "config": { "abort": { "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", + "not_insteon_device": "Wykryte urz\u0105dzenie nie jest urz\u0105dzeniem Insteon", "single_instance_allowed": "Ju\u017c skonfigurowano. Mo\u017cliwa jest tylko jedna konfiguracja." }, "error": { "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", "select_single": "Wybierz jedn\u0105 z opcji" }, + "flow_title": "{name}", "step": { + "confirm_usb": { + "description": "Czy chcesz skonfigurowa\u0107 {name}?" + }, "hubv1": { "data": { "host": "Adres IP", diff --git a/homeassistant/components/insteon/translations/pt-BR.json b/homeassistant/components/insteon/translations/pt-BR.json index 409ac9d6283..b5487d9260a 100644 --- a/homeassistant/components/insteon/translations/pt-BR.json +++ b/homeassistant/components/insteon/translations/pt-BR.json @@ -2,13 +2,18 @@ "config": { "abort": { "cannot_connect": "Falha ao conectar", + "not_insteon_device": "O dispositivo descoberto n\u00e3o \u00e9 um dispositivo Insteon", "single_instance_allowed": "J\u00e1 configurado. Apenas uma configura\u00e7\u00e3o \u00e9 poss\u00edvel." }, "error": { "cannot_connect": "Falha ao conectar", "select_single": "Selecione uma op\u00e7\u00e3o." }, + "flow_title": "{name}", "step": { + "confirm_usb": { + "description": "Deseja configurar {name}?" + }, "hubv1": { "data": { "host": "Endere\u00e7o IP", diff --git a/homeassistant/components/insteon/translations/ru.json b/homeassistant/components/insteon/translations/ru.json index 69b5354fe87..3151fa35252 100644 --- a/homeassistant/components/insteon/translations/ru.json +++ b/homeassistant/components/insteon/translations/ru.json @@ -2,13 +2,18 @@ "config": { "abort": { "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", + "not_insteon_device": "\u042d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435 Insteon.", "single_instance_allowed": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e." }, "error": { "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", "select_single": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043e\u043f\u0446\u0438\u044e." }, + "flow_title": "{name}", "step": { + "confirm_usb": { + "description": "\u0425\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c {name}?" + }, "hubv1": { "data": { "host": "IP-\u0430\u0434\u0440\u0435\u0441", diff --git a/homeassistant/components/insteon/translations/tr.json b/homeassistant/components/insteon/translations/tr.json index 3cb23de55f7..2f74d6a98ae 100644 --- a/homeassistant/components/insteon/translations/tr.json +++ b/homeassistant/components/insteon/translations/tr.json @@ -2,13 +2,18 @@ "config": { "abort": { "cannot_connect": "Ba\u011flanma hatas\u0131", + "not_insteon_device": "Ke\u015ffedilen cihaz bir Insteon cihaz\u0131 de\u011fil", "single_instance_allowed": "Zaten yap\u0131land\u0131r\u0131lm\u0131\u015f. Yaln\u0131zca tek bir konfig\u00fcrasyon m\u00fcmk\u00fcnd\u00fcr." }, "error": { "cannot_connect": "Ba\u011flanma hatas\u0131", "select_single": "Bir se\u00e7enek belirleyin." }, + "flow_title": "{name}", "step": { + "confirm_usb": { + "description": "{name} kurulumunu yapmak istiyor musunuz?" + }, "hubv1": { "data": { "host": "IP Adresi", diff --git a/homeassistant/components/insteon/translations/zh-Hant.json b/homeassistant/components/insteon/translations/zh-Hant.json index 2176ea67b94..c55a1ea0a5c 100644 --- a/homeassistant/components/insteon/translations/zh-Hant.json +++ b/homeassistant/components/insteon/translations/zh-Hant.json @@ -2,13 +2,18 @@ "config": { "abort": { "cannot_connect": "\u9023\u7dda\u5931\u6557", + "not_insteon_device": "\u6240\u767c\u73fe\u7684\u88dd\u7f6e\u4e26\u975e Insteon \u88dd\u7f6e", "single_instance_allowed": "\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210\u3001\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u88dd\u7f6e\u3002" }, "error": { "cannot_connect": "\u9023\u7dda\u5931\u6557", "select_single": "\u9078\u64c7\u9078\u9805\u3002" }, + "flow_title": "{name}", "step": { + "confirm_usb": { + "description": "\u662f\u5426\u8981\u8a2d\u5b9a {name}\uff1f" + }, "hubv1": { "data": { "host": "IP \u4f4d\u5740", diff --git a/homeassistant/components/vallox/translations/is.json b/homeassistant/components/integration/translations/bg.json similarity index 73% rename from homeassistant/components/vallox/translations/is.json rename to homeassistant/components/integration/translations/bg.json index 6878b2ecf11..35cfa0ad1d7 100644 --- a/homeassistant/components/vallox/translations/is.json +++ b/homeassistant/components/integration/translations/bg.json @@ -3,7 +3,7 @@ "step": { "user": { "data": { - "name": "Nafn" + "name": "\u0418\u043c\u0435" } } } diff --git a/homeassistant/components/integration/translations/ca.json b/homeassistant/components/integration/translations/ca.json new file mode 100644 index 00000000000..bbe5e6e31b4 --- /dev/null +++ b/homeassistant/components/integration/translations/ca.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "method": "M\u00e8tode d'integraci\u00f3", + "name": "Nom", + "round": "Precisi\u00f3", + "source": "Sensor d'entrada", + "unit_prefix": "Prefix m\u00e8tric", + "unit_time": "Unitat de temps" + }, + "data_description": { + "round": "Controla el nombre de d\u00edgits decimals a la sortida.", + "unit_prefix": "La sortida s'escalar\u00e0 segons el prefix m\u00e8tric seleccionat.", + "unit_time": "La sortida s'escalar\u00e0 segons la unitat de temps seleccionada." + }, + "description": "Crea un sensor que calcula la suma de Riemann que estima la integral d'un sensor.", + "title": "Afegeix sensor d'integraci\u00f3 de suma Riemann" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "round": "Precisi\u00f3" + }, + "data_description": { + "round": "Controla el nombre de d\u00edgits decimals a la sortida." + } + }, + "options": { + "data": { + "round": "Precisi\u00f3" + }, + "description": "La precisi\u00f3 controla el nombre de d\u00edgits decimals a la sortida." + } + } + }, + "title": "Integraci\u00f3 - Sensor integral de suma de Riemann" +} \ No newline at end of file diff --git a/homeassistant/components/integration/translations/cs.json b/homeassistant/components/integration/translations/cs.json new file mode 100644 index 00000000000..3e7fdfca729 --- /dev/null +++ b/homeassistant/components/integration/translations/cs.json @@ -0,0 +1,41 @@ +{ + "config": { + "step": { + "user": { + "data": { + "method": "Metoda integrace", + "name": "Jm\u00e9no", + "round": "P\u0159esnost", + "source": "Vstupn\u00ed senzor", + "unit_time": "\u010casov\u00e1 jednotka" + }, + "data_description": { + "round": "Ur\u010duje po\u010det desetinn\u00fdch m\u00edst ve v\u00fdstupu.", + "unit_prefix": "V\u00fdstup bude \u0161k\u00e1lov\u00e1n podle vybran\u00e9ho metrick\u00e9ho prefixu.", + "unit_time": "V\u00fdstup bude \u0161k\u00e1lov\u00e1n podle zvolen\u00e9 \u010dasov\u00e9 jednotky." + }, + "description": "Vytvo\u0159\u00ed senzor, kter\u00fd vypo\u010d\u00edt\u00e1 Riemann\u016fv sou\u010det pro odhad integr\u00e1lu senzoru.", + "title": "P\u0159idat Riemann\u016fv sou\u010dtov\u00fd integr\u00e1ln\u00ed senzor" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "round": "P\u0159esnost" + }, + "data_description": { + "round": "Ur\u010duje po\u010det desetinn\u00fdch m\u00edst ve v\u00fdstupu." + } + }, + "options": { + "data": { + "round": "P\u0159esnost" + }, + "description": "P\u0159esnost ur\u010duje po\u010det desetinn\u00fdch m\u00edst ve v\u00fdstupu." + } + } + }, + "title": "Integrace - Riemann\u016fv sou\u010dtov\u00fd integr\u00e1ln\u00ed senzor" +} \ No newline at end of file diff --git a/homeassistant/components/integration/translations/de.json b/homeassistant/components/integration/translations/de.json new file mode 100644 index 00000000000..3013fa9d039 --- /dev/null +++ b/homeassistant/components/integration/translations/de.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "method": "Integrationsmethode", + "name": "Name", + "round": "Genauigkeit", + "source": "Eingangssensor", + "unit_prefix": "Metrisches Pr\u00e4fix", + "unit_time": "Zeiteinheit" + }, + "data_description": { + "round": "Steuert die Anzahl der Dezimalstellen in der Ausgabe.", + "unit_prefix": "Die Ausgabe wird entsprechend dem gew\u00e4hlten metrischen Pr\u00e4fix skaliert.", + "unit_time": "Die Ausgabe wird entsprechend der gew\u00e4hlten Zeiteinheit skaliert." + }, + "description": "Erstelle einen Sensor, der eine Riemann-Summe berechnet, um das Integral eines Sensors zu sch\u00e4tzen.", + "title": "Riemann-Summenintegralsensor hinzuf\u00fcgen" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "round": "Genauigkeit" + }, + "data_description": { + "round": "Steuert die Anzahl der Dezimalstellen in der Ausgabe." + } + }, + "options": { + "data": { + "round": "Genauigkeit" + }, + "description": "Die Genauigkeit steuert die Anzahl der Dezimalstellen in der Ausgabe." + } + } + }, + "title": "Integration - Riemann-Summenintegralsensor" +} \ No newline at end of file diff --git a/homeassistant/components/integration/translations/el.json b/homeassistant/components/integration/translations/el.json new file mode 100644 index 00000000000..e366137fce1 --- /dev/null +++ b/homeassistant/components/integration/translations/el.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "method": "\u039c\u03ad\u03b8\u03bf\u03b4\u03bf\u03c2 \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7\u03c2", + "name": "\u038c\u03bd\u03bf\u03bc\u03b1", + "round": "\u0391\u03ba\u03c1\u03af\u03b2\u03b5\u03b9\u03b1", + "source": "\u0391\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5", + "unit_prefix": "\u039c\u03b5\u03c4\u03c1\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03b8\u03b5\u03bc\u03b1", + "unit_time": "\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7\u03c2" + }, + "data_description": { + "round": "\u0395\u03bb\u03ad\u03b3\u03c7\u03b5\u03b9 \u03c4\u03bf\u03bd \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc \u03c4\u03c9\u03bd \u03b4\u03b5\u03ba\u03b1\u03b4\u03b9\u03ba\u03ce\u03bd \u03c8\u03b7\u03c6\u03af\u03c9\u03bd \u03c3\u03c4\u03b7\u03bd \u03ad\u03be\u03bf\u03b4\u03bf.", + "unit_prefix": "\u0397 \u03ad\u03be\u03bf\u03b4\u03bf\u03c2 \u03b8\u03b1 \u03ba\u03bb\u03b9\u03bc\u03b1\u03ba\u03ce\u03bd\u03b5\u03c4\u03b1\u03b9 \u03c3\u03cd\u03bc\u03c6\u03c9\u03bd\u03b1 \u03bc\u03b5 \u03c4\u03bf \u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03bf \u03bc\u03b5\u03c4\u03c1\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03b8\u03b5\u03bc\u03b1.", + "unit_time": "\u0397 \u03ad\u03be\u03bf\u03b4\u03bf\u03c2 \u03b8\u03b1 \u03ba\u03bb\u03b9\u03bc\u03b1\u03ba\u03c9\u03b8\u03b5\u03af \u03c3\u03cd\u03bc\u03c6\u03c9\u03bd\u03b1 \u03bc\u03b5 \u03c4\u03b7\u03bd \u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03b7 \u03bc\u03bf\u03bd\u03ac\u03b4\u03b1 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c5." + }, + "description": "\u0397 \u03b1\u03ba\u03c1\u03af\u03b2\u03b5\u03b9\u03b1 \u03b5\u03bb\u03ad\u03b3\u03c7\u03b5\u03b9 \u03c4\u03bf\u03bd \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc \u03c4\u03c9\u03bd \u03b4\u03b5\u03ba\u03b1\u03b4\u03b9\u03ba\u03ce\u03bd \u03c8\u03b7\u03c6\u03af\u03c9\u03bd \u03c3\u03c4\u03b7\u03bd \u03ad\u03be\u03bf\u03b4\u03bf.\n\u03a4\u03bf \u03ac\u03b8\u03c1\u03bf\u03b9\u03c3\u03bc\u03b1 \u03b8\u03b1 \u03ba\u03bb\u03b9\u03bc\u03b1\u03ba\u03ce\u03bd\u03b5\u03c4\u03b1\u03b9 \u03c3\u03cd\u03bc\u03c6\u03c9\u03bd\u03b1 \u03bc\u03b5 \u03c4\u03bf \u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03bf \u03bc\u03b5\u03c4\u03c1\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03b8\u03b5\u03bc\u03b1 \u03ba\u03b1\u03b9 \u03c4\u03bf \u03c7\u03c1\u03cc\u03bd\u03bf \u03bf\u03bb\u03bf\u03ba\u03bb\u03ae\u03c1\u03c9\u03c3\u03b7\u03c2.", + "title": "\u039d\u03ad\u03bf\u03c2 \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2 \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7\u03c2" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "round": "\u0391\u03ba\u03c1\u03af\u03b2\u03b5\u03b9\u03b1" + }, + "data_description": { + "round": "\u0395\u03bb\u03ad\u03b3\u03c7\u03b5\u03b9 \u03c4\u03bf\u03bd \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc \u03c4\u03c9\u03bd \u03b4\u03b5\u03ba\u03b1\u03b4\u03b9\u03ba\u03ce\u03bd \u03c8\u03b7\u03c6\u03af\u03c9\u03bd \u03c3\u03c4\u03b7\u03bd \u03ad\u03be\u03bf\u03b4\u03bf." + } + }, + "options": { + "data": { + "round": "\u0391\u03ba\u03c1\u03af\u03b2\u03b5\u03b9\u03b1" + }, + "description": "\u0397 \u03b1\u03ba\u03c1\u03af\u03b2\u03b5\u03b9\u03b1 \u03b5\u03bb\u03ad\u03b3\u03c7\u03b5\u03b9 \u03c4\u03bf\u03bd \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc \u03c4\u03c9\u03bd \u03b4\u03b5\u03ba\u03b1\u03b4\u03b9\u03ba\u03ce\u03bd \u03c8\u03b7\u03c6\u03af\u03c9\u03bd \u03c3\u03c4\u03b7\u03bd \u03ad\u03be\u03bf\u03b4\u03bf." + } + } + }, + "title": "\u039f\u03bb\u03bf\u03ba\u03bb\u03ae\u03c1\u03c9\u03c3\u03b7 - A\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2 \u03bf\u03bb\u03bf\u03ba\u03bb\u03b7\u03c1\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2 \u03b1\u03b8\u03c1\u03bf\u03af\u03c3\u03bc\u03b1\u03c4\u03bf\u03c2 Riemann" +} \ No newline at end of file diff --git a/homeassistant/components/integration/translations/en.json b/homeassistant/components/integration/translations/en.json index 1ee047b447f..3174eab3f69 100644 --- a/homeassistant/components/integration/translations/en.json +++ b/homeassistant/components/integration/translations/en.json @@ -29,6 +29,12 @@ "data_description": { "round": "Controls the number of decimal digits in the output." } + }, + "options": { + "data": { + "round": "Precision" + }, + "description": "Precision controls the number of decimal digits in the output." } } }, diff --git a/homeassistant/components/integration/translations/et.json b/homeassistant/components/integration/translations/et.json new file mode 100644 index 00000000000..31901bbb6f6 --- /dev/null +++ b/homeassistant/components/integration/translations/et.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "method": "Integreerimismeetod", + "name": "Nimi", + "round": "T\u00e4psus", + "source": "Sisendandur", + "unit_prefix": "M\u00f5\u00f5diku eesliide", + "unit_time": "Aja\u00fchik" + }, + "data_description": { + "round": "K\u00fcmnendkohtade arv v\u00e4ljundis.", + "unit_prefix": "V\u00e4ljund skaleeritakse vastavalt valitud m\u00f5\u00f5diku prefiksile.", + "unit_time": "V\u00e4ljund skaleeritakse vastavalt valitud aja\u00fchikule." + }, + "description": "Looge andur, mis arvutab anduri integraali hindamiseks Riemanni summa.", + "title": "Lisa Riemanni summa integraalandur" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "round": "T\u00e4psus" + }, + "data_description": { + "round": "M\u00e4\u00e4rab k\u00fcmnendkohtade arvu v\u00e4ljundis." + } + }, + "options": { + "data": { + "round": "T\u00e4psus" + }, + "description": "T\u00e4psus reguleerib k\u00fcmnendkohtade arvu v\u00e4ljundis." + } + } + }, + "title": "Sidumine - Riemanni integraalsumma andur" +} \ No newline at end of file diff --git a/homeassistant/components/integration/translations/fr.json b/homeassistant/components/integration/translations/fr.json new file mode 100644 index 00000000000..33b5ab86e7f --- /dev/null +++ b/homeassistant/components/integration/translations/fr.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "method": "M\u00e9thode de calcul de l'int\u00e9grale", + "name": "Nom", + "round": "Pr\u00e9cision", + "source": "Capteur d'entr\u00e9e", + "unit_prefix": "Pr\u00e9fixe m\u00e9trique", + "unit_time": "Unit\u00e9 de temps" + }, + "data_description": { + "round": "Contr\u00f4le le nombre de chiffres d\u00e9cimaux dans la sortie.", + "unit_prefix": "La sortie sera mise \u00e0 l'\u00e9chelle en fonction du pr\u00e9fixe m\u00e9trique s\u00e9lectionn\u00e9.", + "unit_time": "La sortie sera mise \u00e0 l'\u00e9chelle en fonction de l'unit\u00e9 de temps s\u00e9lectionn\u00e9e." + }, + "description": "Cr\u00e9ez un capteur qui calcule une somme de Riemann afin d'estimer l'int\u00e9grale d'un autre capteur.", + "title": "Ajouter un capteur d'int\u00e9grale de Riemann" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "round": "Pr\u00e9cision" + }, + "data_description": { + "round": "Contr\u00f4le le nombre de chiffres d\u00e9cimaux dans la sortie." + } + }, + "options": { + "data": { + "round": "Pr\u00e9cision" + }, + "description": "La pr\u00e9cision contr\u00f4le le nombre de chiffres d\u00e9cimaux dans la sortie." + } + } + }, + "title": "Int\u00e9grale \u2013\u00a0Capteur d'int\u00e9grale de Riemann" +} \ No newline at end of file diff --git a/homeassistant/components/integration/translations/he.json b/homeassistant/components/integration/translations/he.json new file mode 100644 index 00000000000..4061da5f233 --- /dev/null +++ b/homeassistant/components/integration/translations/he.json @@ -0,0 +1,40 @@ +{ + "config": { + "step": { + "user": { + "data": { + "method": "\u05e9\u05d9\u05d8\u05ea \u05e9\u05d9\u05dc\u05d5\u05d1", + "name": "\u05e9\u05dd", + "round": "\u05d3\u05d9\u05d5\u05e7", + "source": "\u05d7\u05d9\u05d9\u05e9\u05df \u05e7\u05dc\u05d8", + "unit_prefix": "\u05e7\u05d9\u05d3\u05d5\u05de\u05ea \u05de\u05d8\u05e8\u05d9\u05ea", + "unit_time": "\u05d6\u05de\u05df \u05e9\u05d9\u05dc\u05d5\u05d1" + }, + "data_description": { + "round": "\u05e9\u05dc\u05d9\u05d8\u05d4 \u05d1\u05de\u05e1\u05e4\u05e8 \u05d4\u05e1\u05e4\u05e8\u05d5\u05ea \u05d4\u05e2\u05e9\u05e8\u05d5\u05e0\u05d9\u05d5\u05ea \u05d1\u05e4\u05dc\u05d8." + }, + "description": "\u05d3\u05d9\u05d5\u05e7 \u05e9\u05d5\u05dc\u05d8 \u05d1\u05de\u05e1\u05e4\u05e8 \u05d4\u05e1\u05e4\u05e8\u05d5\u05ea \u05d4\u05e2\u05e9\u05e8\u05d5\u05e0\u05d9\u05d5\u05ea \u05d1\u05e4\u05dc\u05d8.\n\u05d4\u05e1\u05db\u05d5\u05dd \u05d9\u05e9\u05ea\u05e0\u05d4 \u05d1\u05d4\u05ea\u05d0\u05dd \u05dc\u05e7\u05d9\u05d3\u05d5\u05de\u05ea \u05d4\u05de\u05d8\u05e8\u05d9\u05ea \u05e9\u05e0\u05d1\u05d7\u05e8\u05d4 \u05d5\u05d6\u05de\u05df \u05d4\u05e9\u05d9\u05dc\u05d5\u05d1.", + "title": "\u05d7\u05d9\u05d9\u05e9\u05df \u05e9\u05d9\u05dc\u05d5\u05d1 \u05d7\u05d3\u05e9" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "round": "\u05d3\u05d9\u05d5\u05e7" + }, + "data_description": { + "round": "\u05e9\u05dc\u05d9\u05d8\u05d4 \u05d1\u05de\u05e1\u05e4\u05e8 \u05d4\u05e1\u05e4\u05e8\u05d5\u05ea \u05d4\u05e2\u05e9\u05e8\u05d5\u05e0\u05d9\u05d5\u05ea \u05d1\u05e4\u05dc\u05d8." + } + }, + "options": { + "data": { + "round": "\u05d3\u05d9\u05d5\u05e7" + }, + "description": "\u05d3\u05d9\u05d5\u05e7 \u05e9\u05d5\u05dc\u05d8 \u05d1\u05de\u05e1\u05e4\u05e8 \u05d4\u05e1\u05e4\u05e8\u05d5\u05ea \u05d4\u05e2\u05e9\u05e8\u05d5\u05e0\u05d9\u05d5\u05ea \u05d1\u05e4\u05dc\u05d8." + } + } + }, + "title": "\u05e9\u05d9\u05dc\u05d5\u05d1 - \u05d7\u05d9\u05d9\u05e9\u05df \u05e1\u05db\u05d5\u05dd \u05d0\u05d9\u05e0\u05d8\u05d2\u05e8\u05dc\u05d9 \u05e9\u05dc \u05e8\u05d9\u05de\u05df" +} \ No newline at end of file diff --git a/homeassistant/components/integration/translations/hu.json b/homeassistant/components/integration/translations/hu.json new file mode 100644 index 00000000000..c892e858b3f --- /dev/null +++ b/homeassistant/components/integration/translations/hu.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "method": "Integr\u00e1ci\u00f3s m\u00f3dszer", + "name": "Elnevez\u00e9s", + "round": "Pontoss\u00e1g", + "source": "Forr\u00e1s \u00e9rz\u00e9kel\u0151", + "unit_prefix": "M\u00e9rt\u00e9kegys\u00e9g el\u0151tag", + "unit_time": "Id\u0151egys\u00e9g" + }, + "data_description": { + "round": "Az eredm\u00e9ny tizedesjegyeinek sz\u00e1ma.", + "unit_prefix": "A kimenet a kiv\u00e1lasztott m\u00e9rt\u00e9kegys\u00e9gnek megfelel\u0151en lesz sk\u00e1l\u00e1zva.", + "unit_time": "A kimenet a kiv\u00e1lasztott id\u0151egys\u00e9gnek megfelel\u0151en lesz sk\u00e1l\u00e1zva." + }, + "description": "Hozzon l\u00e9tre egy \u00faj \u00e9rz\u00e9kel\u0151t, amely Riemann-integr\u00e1lt sz\u00e1mol egy m\u00e1sik, megl\u00e9v\u0151 \u00e9rz\u00e9kel\u0151 alapj\u00e1n.", + "title": "Riemann-integr\u00e1l \u00e9rz\u00e9kel\u0151 l\u00e9trehoz\u00e1sa" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "round": "Pontoss\u00e1g" + }, + "data_description": { + "round": "Az eredm\u00e9ny tizedesjegyeinek sz\u00e1ma." + } + }, + "options": { + "data": { + "round": "Pontoss\u00e1g" + }, + "description": "A pontoss\u00e1g hat\u00e1rozza meg az eredm\u00e9ny tizedesjegyeinek sz\u00e1m\u00e1t." + } + } + }, + "title": "Integr\u00e1ci\u00f3 - Riemann-integr\u00e1l" +} \ No newline at end of file diff --git a/homeassistant/components/integration/translations/id.json b/homeassistant/components/integration/translations/id.json new file mode 100644 index 00000000000..d585a4409e9 --- /dev/null +++ b/homeassistant/components/integration/translations/id.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "method": "Metode integrasi", + "name": "Nama", + "round": "Presisi", + "source": "Sensor input", + "unit_prefix": "Prefiks metrik", + "unit_time": "Unit waktu" + }, + "data_description": { + "round": "Mengontrol jumlah digit desimal dalam output.", + "unit_prefix": "Output akan diskalakan sesuai dengan prefiks metrik yang dipilih.", + "unit_time": "Output akan diskalakan sesuai dengan unit waktu dipilih." + }, + "description": "Buat sensor yang menghitung jumlah Riemann untuk memperkirakan integral dari sebuah sensor.", + "title": "Tambahkan sensor integral penjumlahan Riemann" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "round": "Presisi" + }, + "data_description": { + "round": "Mengontrol jumlah digit desimal dalam output." + } + }, + "options": { + "data": { + "round": "Presisi" + }, + "description": "Presisi mengontrol jumlah digit desimal pada output." + } + } + }, + "title": "Integrasi - Sensor jumlah integral Riemann" +} \ No newline at end of file diff --git a/homeassistant/components/integration/translations/it.json b/homeassistant/components/integration/translations/it.json new file mode 100644 index 00000000000..a1904f45cd1 --- /dev/null +++ b/homeassistant/components/integration/translations/it.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "method": "Metodo di integrazione", + "name": "Nome", + "round": "Precisione", + "source": "Sensore di ingresso", + "unit_prefix": "Prefisso metrico", + "unit_time": "Unit\u00e0 di tempo" + }, + "data_description": { + "round": "Controlla il numero di cifre decimali nell'output.", + "unit_prefix": "L'output sar\u00e0 ridimensionato in base al prefisso della metrica selezionato.", + "unit_time": "L'output verr\u00e0 ridimensionato in base all'unit\u00e0 di tempo selezionata." + }, + "description": "Crea un sensore che calcoli una somma di Riemann per stimare l'integrale di un sensore.", + "title": "Aggiungi il sensore integrale della somma di Riemann" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "round": "Precisione" + }, + "data_description": { + "round": "Controlla il numero di cifre decimali nell'output." + } + }, + "options": { + "data": { + "round": "Precisione" + }, + "description": "Precisione controlla il numero di cifre decimali nell'uscita." + } + } + }, + "title": "Integrazione - Sensore integrale di somma Riemann" +} \ No newline at end of file diff --git a/homeassistant/components/integration/translations/ja.json b/homeassistant/components/integration/translations/ja.json new file mode 100644 index 00000000000..5fac6ba692b --- /dev/null +++ b/homeassistant/components/integration/translations/ja.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "method": "\u7a4d\u7b97\u65b9\u6cd5", + "name": "\u540d\u524d", + "round": "\u7cbe\u5ea6", + "source": "\u5165\u529b\u30bb\u30f3\u30b5\u30fc", + "unit_prefix": "\u30e1\u30c8\u30ea\u30c3\u30af\u63a5\u982d\u8f9e", + "unit_time": "\u7a4d\u7b97\u6642\u9593" + }, + "data_description": { + "round": "\u51fa\u529b\u5024\u306e\u5c0f\u6570\u70b9\u4ee5\u4e0b\u306e\u6841\u6570\u3002", + "unit_prefix": "\u51fa\u529b\u306f\u3001\u9078\u629e\u3055\u308c\u305f\u5358\u4f4d\u306e\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u306b\u5f93\u3063\u3066\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002", + "unit_time": "\u51fa\u529b\u306f\u3001\u9078\u629e\u3055\u308c\u305f\u6642\u9593\u5358\u4f4d\u306b\u5f93\u3063\u3066\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002" + }, + "description": "\u7cbe\u5ea6\u306f\u3001\u51fa\u529b\u306e\u5c0f\u6570\u70b9\u4ee5\u4e0b\u306e\u6841\u6570\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002\n\u5408\u8a08\u306f\u3001\u9078\u629e\u3055\u308c\u305f\u5358\u4f4d\u306e\u30d7\u30ea\u30d5\u30a3\u30c3\u30af\u30b9\u3068\u7a4d\u5206\u6642\u9593\u306b\u5f93\u3063\u3066\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002", + "title": "\u65b0\u3057\u3044\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u30bb\u30f3\u30b5\u30fc" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "round": "\u7cbe\u5ea6" + }, + "data_description": { + "round": "\u51fa\u529b\u5024\u306e\u5c0f\u6570\u70b9\u4ee5\u4e0b\u306e\u6841\u6570\u3002" + } + }, + "options": { + "data": { + "round": "\u7cbe\u5ea6" + }, + "description": "\u7cbe\u5ea6\u306f\u3001\u51fa\u529b\u306e\u5c0f\u6570\u70b9\u4ee5\u4e0b\u306e\u6841\u6570\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002" + } + } + }, + "title": "\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3 - \u30ea\u30fc\u30de\u30f3\u548c\u7a4d\u5206\u30bb\u30f3\u30b5\u30fc" +} \ No newline at end of file diff --git a/homeassistant/components/integration/translations/nl.json b/homeassistant/components/integration/translations/nl.json new file mode 100644 index 00000000000..8753ee30ea7 --- /dev/null +++ b/homeassistant/components/integration/translations/nl.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "method": "Integratie methode", + "name": "Naam", + "round": "Precisie", + "source": "Invoer sensor", + "unit_prefix": "Metrisch voorvoegsel", + "unit_time": "Tijdseenheid" + }, + "data_description": { + "round": "Regelt het aantal decimale cijfers in de uitvoer.", + "unit_prefix": "De uitvoer wordt geschaald volgens het geselecteerde metrische voorvoegsel.", + "unit_time": "De output wordt geschaald volgens de geselecteerde tijdseenheid." + }, + "description": "Maak een sensor die een Riemann som berekent om de integraal van een sensor te schatten.", + "title": "Riemann som integrale sensor toevoegen" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "round": "Precisie" + }, + "data_description": { + "round": "Regelt het aantal decimale cijfers in de uitvoer." + } + }, + "options": { + "data": { + "round": "Precisie" + }, + "description": "Precisie bepaalt het aantal decimale cijfers in de uitvoer." + } + } + }, + "title": "Integratie - Riemann som integrale sensor" +} \ No newline at end of file diff --git a/homeassistant/components/integration/translations/no.json b/homeassistant/components/integration/translations/no.json new file mode 100644 index 00000000000..aafa60b5811 --- /dev/null +++ b/homeassistant/components/integration/translations/no.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "method": "Integrasjonsmetode", + "name": "Navn", + "round": "Presisjon", + "source": "Inngangssensor", + "unit_prefix": "Metrisk prefiks", + "unit_time": "Tidsenhet" + }, + "data_description": { + "round": "Styrer antall desimaler i utdataene.", + "unit_prefix": "Utdataene skaleres i henhold til det valgte metriske prefikset.", + "unit_time": "Utgangen vil bli skalert i henhold til den valgte tidsenheten." + }, + "description": "Lag en sensor som beregner en Riemann-sum for \u00e5 estimere integralet til en sensor.", + "title": "Legg til Riemann sum integral sensor" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "round": "Presisjon" + }, + "data_description": { + "round": "Styrer antall desimaler i utdataene." + } + }, + "options": { + "data": { + "round": "Presisjon" + }, + "description": "Presisjon styrer antall desimaler i utdataene." + } + } + }, + "title": "Integrasjon - Riemann sum integral sensor" +} \ No newline at end of file diff --git a/homeassistant/components/integration/translations/pl.json b/homeassistant/components/integration/translations/pl.json new file mode 100644 index 00000000000..7971d97129c --- /dev/null +++ b/homeassistant/components/integration/translations/pl.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "method": "Metoda integracji", + "name": "Nazwa", + "round": "Precyzja", + "source": "Sensor wej\u015bciowy", + "unit_prefix": "Prefiks metryczny", + "unit_time": "Jednostka czasu" + }, + "data_description": { + "round": "Kontroluje liczb\u0119 cyfr dziesi\u0119tnych w danych wyj\u015bciowych.", + "unit_prefix": "Dane wyj\u015bciowe b\u0119d\u0105 skalowane zgodnie z wybranym prefiksem metrycznym.", + "unit_time": "Dane wyj\u015bciowe b\u0119d\u0105 skalowane zgodnie z wybran\u0105 jednostk\u0105 czasu." + }, + "description": "Utw\u00f3rz sensor, kt\u00f3ry oblicza sum\u0119 Riemanna, aby oszacowa\u0107 ca\u0142k\u0119 sensora.", + "title": "Dodaj sensor ca\u0142kuj\u0105cy sum\u0119 Riemanna" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "round": "Precyzja" + }, + "data_description": { + "round": "Kontroluje liczb\u0119 cyfr dziesi\u0119tnych w danych wyj\u015bciowych." + } + }, + "options": { + "data": { + "round": "Precyzja" + }, + "description": "Precyzja kontroluje liczb\u0119 cyfr dziesi\u0119tnych w danych wyj\u015bciowych." + } + } + }, + "title": "Integracja - czujnik ca\u0142kuj\u0105cy sum\u0119 Riemanna" +} \ No newline at end of file diff --git a/homeassistant/components/integration/translations/pt-BR.json b/homeassistant/components/integration/translations/pt-BR.json new file mode 100644 index 00000000000..ae512b93fd4 --- /dev/null +++ b/homeassistant/components/integration/translations/pt-BR.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "method": "M\u00e9todo de integra\u00e7\u00e3o", + "name": "Nome", + "round": "Precis\u00e3o", + "source": "Sensor fonte", + "unit_prefix": "Prefixo m\u00e9trico", + "unit_time": "Unidade de tempo" + }, + "data_description": { + "round": "Controla o n\u00famero de d\u00edgitos decimais na sa\u00edda.", + "unit_prefix": "A sa\u00edda ser\u00e1 dimensionada de acordo com o prefixo m\u00e9trico selecionado.", + "unit_time": "A sa\u00edda ser\u00e1 dimensionada de acordo com a unidade de tempo selecionada." + }, + "description": "Crie um sensor que calcule uma soma de Riemann para estimar a integral de um sensor.", + "title": "Adicionar sensor de soma de Riemann" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "round": "Precis\u00e3o" + }, + "data_description": { + "round": "Controla o n\u00famero de d\u00edgitos decimais na sa\u00edda." + } + }, + "options": { + "data": { + "round": "Precis\u00e3o" + }, + "description": "A precis\u00e3o controla o n\u00famero de d\u00edgitos decimais na sa\u00edda." + } + } + }, + "title": "Integra\u00e7\u00e3o - Sensor de soma de Riemann" +} \ No newline at end of file diff --git a/homeassistant/components/integration/translations/ru.json b/homeassistant/components/integration/translations/ru.json new file mode 100644 index 00000000000..67891293d7b --- /dev/null +++ b/homeassistant/components/integration/translations/ru.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "method": "\u041c\u0435\u0442\u043e\u0434 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438", + "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", + "round": "\u041e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435", + "source": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0441\u0435\u043d\u0441\u043e\u0440", + "unit_prefix": "\u041f\u0440\u0435\u0444\u0438\u043a\u0441 \u043c\u0435\u0442\u0440\u0438\u043a\u0438", + "unit_time": "\u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438" + }, + "data_description": { + "round": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u043a\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u044f\u0442\u043e\u0439.", + "unit_prefix": "\u0414\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c \u043c\u0435\u0442\u0440\u0438\u043a\u0438.", + "unit_time": "\u0414\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0435\u0434\u0438\u043d\u0438\u0446\u0435\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u0438." + }, + "description": "\u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0441\u0443\u043c\u043c\u0443 \u0420\u0438\u043c\u0430\u043d\u0430 \u0434\u043b\u044f \u043e\u0446\u0435\u043d\u043a\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u0430 \u0441\u0435\u043d\u0441\u043e\u0440\u0430.", + "title": "\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u043b \u0420\u0438\u043c\u0430\u043d\u0430" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "round": "\u041e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435" + }, + "data_description": { + "round": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u043a\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u044f\u0442\u043e\u0439." + } + }, + "options": { + "data": { + "round": "\u041e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435" + }, + "description": "\u041e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u043a\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u044f\u0442\u043e\u0439." + } + } + }, + "title": "\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u043b \u0420\u0438\u043c\u0430\u043d\u0430" +} \ No newline at end of file diff --git a/homeassistant/components/integration/translations/tr.json b/homeassistant/components/integration/translations/tr.json new file mode 100644 index 00000000000..de99ebd3633 --- /dev/null +++ b/homeassistant/components/integration/translations/tr.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "method": "Entegrasyon y\u00f6ntemi", + "name": "Ad", + "round": "Hassas", + "source": "Giri\u015f sens\u00f6r\u00fc", + "unit_prefix": "Metrik \u00f6neki", + "unit_time": "Zaman birimi" + }, + "data_description": { + "round": "\u00c7\u0131kt\u0131daki ondal\u0131k basamak say\u0131s\u0131n\u0131 kontrol eder.", + "unit_prefix": "\u00c7\u0131kt\u0131, se\u00e7ilen metrik \u00f6nekine g\u00f6re \u00f6l\u00e7eklenecektir.", + "unit_time": "\u00c7\u0131kt\u0131, se\u00e7ilen zaman birimine g\u00f6re \u00f6l\u00e7eklenecektir." + }, + "description": "Bir sens\u00f6r\u00fcn integralini tahmin etmek i\u00e7in bir Riemann toplam\u0131n\u0131 hesaplayan bir sens\u00f6r olu\u015fturun.", + "title": "Riemann toplam integral sens\u00f6r\u00fcn\u00fc ekleyin" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "round": "Hassas" + }, + "data_description": { + "round": "\u00c7\u0131kt\u0131daki ondal\u0131k basamak say\u0131s\u0131n\u0131 kontrol eder." + } + }, + "options": { + "data": { + "round": "Hassas" + }, + "description": "Kesinlik, \u00e7\u0131kt\u0131daki ondal\u0131k basamak say\u0131s\u0131n\u0131 kontrol eder." + } + } + }, + "title": "Entegrasyon - Riemann toplam integral sens\u00f6r\u00fc" +} \ No newline at end of file diff --git a/homeassistant/components/integration/translations/zh-Hans.json b/homeassistant/components/integration/translations/zh-Hans.json new file mode 100644 index 00000000000..f7ebea98f4a --- /dev/null +++ b/homeassistant/components/integration/translations/zh-Hans.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "method": "\u79ef\u5206\u65b9\u6cd5", + "name": "\u540d\u79f0", + "round": "\u7cbe\u5ea6", + "source": "\u8f93\u5165\u4f20\u611f\u5668", + "unit_prefix": "\u5355\u4f4d\u524d\u7f00", + "unit_time": "\u65f6\u95f4\u5355\u4f4d" + }, + "data_description": { + "round": "\u63a7\u5236\u8f93\u51fa\u7684\u5c0f\u6570\u4f4d\u6570\u3002", + "unit_prefix": "\u8f93\u51fa\u503c\u5c06\u6839\u636e\u6240\u9009\u7684\u5355\u4f4d\u524d\u7f00\u8fdb\u884c\u7f29\u653e\u3002", + "unit_time": "\u8f93\u51fa\u503c\u5c06\u6839\u636e\u6240\u9009\u7684\u65f6\u95f4\u5355\u4f4d\u8fdb\u884c\u7f29\u653e\u3002" + }, + "description": "\u521b\u5efa\u4f20\u611f\u5668\u6765\u8ba1\u7b97\u53e6\u4e00\u4e2a\u4f20\u611f\u5668\u7684\u5b9a\u79ef\u5206\u3002", + "title": "\u6dfb\u52a0\u5b9a\u79ef\u5206\u4f20\u611f\u5668" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "round": "\u7cbe\u5ea6" + }, + "data_description": { + "round": "\u63a7\u5236\u8f93\u51fa\u7684\u5c0f\u6570\u4f4d\u6570\u3002" + } + }, + "options": { + "data": { + "round": "\u7cbe\u5ea6" + }, + "description": "\u7cbe\u5ea6\u63a7\u5236\u8f93\u51fa\u7684\u5c0f\u6570\u4f4d\u6570\u3002" + } + } + }, + "title": "\u5b9a\u79ef\u5206\u4f20\u611f\u5668" +} \ No newline at end of file diff --git a/homeassistant/components/integration/translations/zh-Hant.json b/homeassistant/components/integration/translations/zh-Hant.json new file mode 100644 index 00000000000..2adbb3edc28 --- /dev/null +++ b/homeassistant/components/integration/translations/zh-Hant.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "method": "\u6574\u5408\u65b9\u5f0f", + "name": "\u540d\u7a31", + "round": "\u6e96\u78ba\u5ea6", + "source": "\u8f38\u5165\u611f\u6e2c\u5668", + "unit_prefix": "\u516c\u5236\u524d\u7db4", + "unit_time": "\u6642\u9593\u55ae\u4f4d" + }, + "data_description": { + "round": "\u63a7\u5236\u8f38\u51fa\u4e2d\u7684\u5c0f\u6578\u4f4d\u6578\u3002", + "unit_prefix": "\u8f38\u51fa\u5c07\u53d7\u6240\u9078\u64c7\u516c\u5236\u524d\u7db4\u800c\u8b8a\u5316\u3002", + "unit_time": "\u8f38\u51fa\u5c07\u53d7\u6240\u9078\u64c7\u6642\u9593\u55ae\u4f4d\u800c\u8b8a\u5316\u3002" + }, + "description": "\u65b0\u589e\u9810\u4f30\u8a08\u7b97\u9ece\u66fc\u548c\u7a4d\u5206\u611f\u6e2c\u5668\u6574\u5408\u4e4b\u611f\u6e2c\u5668\u3002", + "title": "\u65b0\u589e\u9ece\u66fc\u548c\u7a4d\u5206\u611f\u6e2c\u5668\u6574\u5408" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "round": "\u6e96\u78ba\u5ea6" + }, + "data_description": { + "round": "\u63a7\u5236\u8f38\u51fa\u4e2d\u7684\u5c0f\u6578\u4f4d\u6578\u3002" + } + }, + "options": { + "data": { + "round": "\u6e96\u78ba\u5ea6" + }, + "description": "\u7cbe\u6e96\u5ea6\u63a7\u5236\u8f38\u51fa\u4e2d\u7684\u5c0f\u6578\u4f4d\u6578\u3002" + } + } + }, + "title": "\u6574\u5408 - \u9ece\u66fc\u548c\u7a4d\u5206\u611f\u6e2c\u5668" +} \ No newline at end of file diff --git a/homeassistant/components/intellifire/translations/bg.json b/homeassistant/components/intellifire/translations/bg.json index cbf1e2ae7c9..1a8dd460097 100644 --- a/homeassistant/components/intellifire/translations/bg.json +++ b/homeassistant/components/intellifire/translations/bg.json @@ -7,7 +7,22 @@ "cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435", "unknown": "\u041d\u0435\u043e\u0447\u0430\u043a\u0432\u0430\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430" }, + "flow_title": "{serial} ({host})", "step": { + "dhcp_confirm": { + "description": "\u0418\u0441\u043a\u0430\u0442\u0435 \u043b\u0438 \u0434\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u0435 {host}\n\u0421\u0435\u0440\u0438\u0435\u043d: {serial}?" + }, + "manual_device_entry": { + "data": { + "host": "\u0425\u043e\u0441\u0442" + }, + "description": "\u041b\u043e\u043a\u0430\u043b\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f" + }, + "pick_device": { + "data": { + "host": "\u0425\u043e\u0441\u0442" + } + }, "user": { "data": { "host": "\u0425\u043e\u0441\u0442" diff --git a/homeassistant/components/intellifire/translations/ca.json b/homeassistant/components/intellifire/translations/ca.json index 3673c1c60c6..9894ec4920a 100644 --- a/homeassistant/components/intellifire/translations/ca.json +++ b/homeassistant/components/intellifire/translations/ca.json @@ -1,13 +1,40 @@ { "config": { "abort": { - "already_configured": "El dispositiu ja est\u00e0 configurat" + "already_configured": "El dispositiu ja est\u00e0 configurat", + "not_intellifire_device": "No \u00e9s un dispositiu IntelliFire.", + "reauth_successful": "Re-autenticaci\u00f3 realitzada correctament" }, "error": { + "api_error": "Ha fallat l'inici de sessi\u00f3", "cannot_connect": "Ha fallat la connexi\u00f3", + "iftapi_connect": "S'ha produ\u00eft un error en connectar a iftapi.net", "unknown": "Error inesperat" }, + "flow_title": "{serial} ({host})", "step": { + "api_config": { + "data": { + "password": "Contrasenya", + "username": "Correu electr\u00f2nic" + } + }, + "dhcp_confirm": { + "description": "Vols configurar {host}\nS\u00e8rie: {serial}?" + }, + "manual_device_entry": { + "data": { + "host": "Amfitri\u00f3 (adre\u00e7a IP)" + }, + "description": "Configuraci\u00f3 local" + }, + "pick_device": { + "data": { + "host": "Amfitri\u00f3" + }, + "description": "S'han descobert els dispositius IntelliFire seg\u00fcents. Selecciona el que vulguis configurar.", + "title": "Selecci\u00f3 de dispositiu" + }, "user": { "data": { "host": "Amfitri\u00f3" diff --git a/homeassistant/components/intellifire/translations/cs.json b/homeassistant/components/intellifire/translations/cs.json index 5eac883adf0..48dbc509ea8 100644 --- a/homeassistant/components/intellifire/translations/cs.json +++ b/homeassistant/components/intellifire/translations/cs.json @@ -7,7 +7,18 @@ "cannot_connect": "Nepoda\u0159ilo se p\u0159ipojit", "unknown": "Neo\u010dek\u00e1van\u00e1 chyba" }, + "flow_title": "{serial} ({host})", "step": { + "manual_device_entry": { + "data": { + "host": "Hostitel" + } + }, + "pick_device": { + "data": { + "host": "Hostitel" + } + }, "user": { "data": { "host": "Hostitel" diff --git a/homeassistant/components/intellifire/translations/de.json b/homeassistant/components/intellifire/translations/de.json index 6abbe1b2b27..f1c37a8a475 100644 --- a/homeassistant/components/intellifire/translations/de.json +++ b/homeassistant/components/intellifire/translations/de.json @@ -1,13 +1,40 @@ { "config": { "abort": { - "already_configured": "Ger\u00e4t ist bereits konfiguriert" + "already_configured": "Ger\u00e4t ist bereits konfiguriert", + "not_intellifire_device": "Kein IntelliFire-Ger\u00e4t.", + "reauth_successful": "Die erneute Authentifizierung war erfolgreich" }, "error": { + "api_error": "Login fehlgeschlagen", "cannot_connect": "Verbindung fehlgeschlagen", + "iftapi_connect": "Fehler beim Verbinden mit iftapi.net", "unknown": "Unerwarteter Fehler" }, + "flow_title": "{serial} ({host})", "step": { + "api_config": { + "data": { + "password": "Passwort", + "username": "E-Mail" + } + }, + "dhcp_confirm": { + "description": "M\u00f6chtest du {host} einrichten\nSeriennummer: {serial}?" + }, + "manual_device_entry": { + "data": { + "host": "Host (IP-Adresse)" + }, + "description": "Lokale Konfiguration" + }, + "pick_device": { + "data": { + "host": "Host" + }, + "description": "Die folgenden IntelliFire-Ger\u00e4te wurden gefunden. Bitte w\u00e4hle aus, welche du konfigurieren m\u00f6chtest.", + "title": "Ger\u00e4teauswahl" + }, "user": { "data": { "host": "Host" diff --git a/homeassistant/components/intellifire/translations/el.json b/homeassistant/components/intellifire/translations/el.json index c7b88a9b3d8..fa72581a4a6 100644 --- a/homeassistant/components/intellifire/translations/el.json +++ b/homeassistant/components/intellifire/translations/el.json @@ -1,13 +1,40 @@ { "config": { "abort": { - "already_configured": "\u0397 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03b8\u03b5\u03af" + "already_configured": "\u0397 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03b8\u03b5\u03af", + "not_intellifire_device": "\u0394\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae IntelliFire.", + "reauth_successful": "\u039f \u03b5\u03ba \u03bd\u03ad\u03bf\u03c5 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03ae\u03c4\u03b1\u03bd \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03ae\u03c2" }, "error": { + "api_error": "\u0397 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5", "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", + "iftapi_connect": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 \u03c3\u03c4\u03bf iftapi.net", "unknown": "\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" }, + "flow_title": "{serial} ({host})", "step": { + "api_config": { + "data": { + "password": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", + "username": "Email" + } + }, + "dhcp_confirm": { + "description": "\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf {host}\nSerial: {serial}?" + }, + "manual_device_entry": { + "data": { + "host": "\u039a\u03b5\u03bd\u03c4\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae\u03c2" + }, + "description": "\u03a4\u03bf\u03c0\u03b9\u03ba\u03ae \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7" + }, + "pick_device": { + "data": { + "host": "\u039a\u03b5\u03bd\u03c4\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae\u03c2" + }, + "description": "\u0391\u03bd\u03b1\u03ba\u03b1\u03bb\u03cd\u03c6\u03b8\u03b7\u03ba\u03b1\u03bd \u03bf\u03b9 \u03b1\u03ba\u03cc\u03bb\u03bf\u03c5\u03b8\u03b5\u03c2 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ad\u03c2 IntelliFire. \u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c0\u03bf\u03b9\u03b1 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03ce\u03c3\u03b5\u03c4\u03b5.", + "title": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2" + }, "user": { "data": { "host": "\u039a\u03b5\u03bd\u03c4\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae\u03c2" diff --git a/homeassistant/components/intellifire/translations/en.json b/homeassistant/components/intellifire/translations/en.json index d7c157d8917..f0c317efb93 100644 --- a/homeassistant/components/intellifire/translations/en.json +++ b/homeassistant/components/intellifire/translations/en.json @@ -7,18 +7,17 @@ }, "error": { "api_error": "Login failed", - "cannot_connect": "Could not connect to a fireplace endpoint at url: http://{host}/poll\nVerify IP address and try again", - "iftapi_connect": "Error conecting to iftapi.net" + "cannot_connect": "Failed to connect", + "iftapi_connect": "Error conecting to iftapi.net", + "unknown": "Unexpected error" }, "flow_title": "{serial} ({host})", "step": { "api_config": { "data": { "password": "Password", - "username": "Username (Email)" - }, - "description": "IntelliFire will need to reach out to [iftapi.net](https://iftapi.net/webaccess/login.html) in order to obtain an API key. Once it has obtained this API key, the rest of its interactions will occur completely within the local network. If the API key were to expire it would again need to reach out to https://iftapi.net/webaccess/login.html\n\nUsername and Password are the same information used in your IntelliFire Android/iOS application. ", - "title": "IntelliFire - API Configuration" + "username": "Email" + } }, "dhcp_confirm": { "description": "Do you want to setup {host}\nSerial: {serial}?" @@ -35,6 +34,11 @@ }, "description": "The following IntelliFire devices were discovered. Please select which you wish to configure.", "title": "Device Selection" + }, + "user": { + "data": { + "host": "Host" + } } } } diff --git a/homeassistant/components/intellifire/translations/et.json b/homeassistant/components/intellifire/translations/et.json index 939fa44224f..53c87f112a7 100644 --- a/homeassistant/components/intellifire/translations/et.json +++ b/homeassistant/components/intellifire/translations/et.json @@ -1,13 +1,40 @@ { "config": { "abort": { - "already_configured": "Seade on juba h\u00e4\u00e4lestatud" + "already_configured": "Seade on juba h\u00e4\u00e4lestatud", + "not_intellifire_device": "See pole IntelliFire seade.", + "reauth_successful": "Taastuvastamine \u00f5nnestus" }, "error": { + "api_error": "Sisselogimine nurjus", "cannot_connect": "\u00dchendamine nurjus", + "iftapi_connect": "\u00dchendumine iftapi.net'iga nurjus", "unknown": "Ootamatu t\u00f5rge" }, + "flow_title": "{serial} ({host})", "step": { + "api_config": { + "data": { + "password": "Salas\u00f5na", + "username": "E-posti aadress" + } + }, + "dhcp_confirm": { + "description": "Kas h\u00e4\u00e4lestada {host}\nSeerianumber: {serial}?" + }, + "manual_device_entry": { + "data": { + "host": "Host (IP aadress)" + }, + "description": "Kohalik konfiguratsioon" + }, + "pick_device": { + "data": { + "host": "Host" + }, + "description": "Avastati j\u00e4rgmised IntelliFire seadmed. Palun vali millist soovid seadistada.", + "title": "Seadme valik" + }, "user": { "data": { "host": "Host" diff --git a/homeassistant/components/intellifire/translations/fr.json b/homeassistant/components/intellifire/translations/fr.json index 3b0762be825..5c478358345 100644 --- a/homeassistant/components/intellifire/translations/fr.json +++ b/homeassistant/components/intellifire/translations/fr.json @@ -1,13 +1,40 @@ { "config": { "abort": { - "already_configured": "L'appareil est d\u00e9j\u00e0 configur\u00e9" + "already_configured": "L'appareil est d\u00e9j\u00e0 configur\u00e9", + "not_intellifire_device": "N'est pas un appareil IntelliFire.", + "reauth_successful": "La r\u00e9-authentification a r\u00e9ussi" }, "error": { + "api_error": "La connexion a \u00e9chou\u00e9", "cannot_connect": "\u00c9chec de connexion", + "iftapi_connect": "Erreur lors de la connexion \u00e0 iftapi.net", "unknown": "Erreur inattendue" }, + "flow_title": "{serial} ({host})", "step": { + "api_config": { + "data": { + "password": "Mot de passe", + "username": "Courriel" + } + }, + "dhcp_confirm": { + "description": "Voulez-vous configurer {host}\nNum\u00e9ro de s\u00e9rie\u00a0: {serial}\u00a0?" + }, + "manual_device_entry": { + "data": { + "host": "H\u00f4te (adresse IP)" + }, + "description": "Configuration locale" + }, + "pick_device": { + "data": { + "host": "H\u00f4te" + }, + "description": "Les appareils IntelliFire suivants ont \u00e9t\u00e9 d\u00e9couverts. Veuillez s\u00e9lectionner celui que vous souhaitez configurer.", + "title": "S\u00e9lection de l'appareil" + }, "user": { "data": { "host": "H\u00f4te" diff --git a/homeassistant/components/intellifire/translations/he.json b/homeassistant/components/intellifire/translations/he.json index 1699e0f8e19..e4b64392380 100644 --- a/homeassistant/components/intellifire/translations/he.json +++ b/homeassistant/components/intellifire/translations/he.json @@ -1,13 +1,30 @@ { "config": { "abort": { - "already_configured": "\u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05d4\u05ea\u05e7\u05df \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4" + "already_configured": "\u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05d4\u05ea\u05e7\u05df \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4", + "reauth_successful": "\u05d4\u05d0\u05d9\u05de\u05d5\u05ea \u05de\u05d7\u05d3\u05e9 \u05d4\u05e6\u05dc\u05d9\u05d7" }, "error": { "cannot_connect": "\u05d4\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05e0\u05db\u05e9\u05dc\u05d4", "unknown": "\u05e9\u05d2\u05d9\u05d0\u05d4 \u05d1\u05dc\u05ea\u05d9 \u05e6\u05e4\u05d5\u05d9\u05d4" }, "step": { + "api_config": { + "data": { + "password": "\u05e1\u05d9\u05e1\u05de\u05d4", + "username": "\u05d3\u05d5\u05d0\"\u05dc" + } + }, + "manual_device_entry": { + "data": { + "host": "\u05de\u05d0\u05e8\u05d7" + } + }, + "pick_device": { + "data": { + "host": "\u05de\u05d0\u05e8\u05d7" + } + }, "user": { "data": { "host": "\u05de\u05d0\u05e8\u05d7" diff --git a/homeassistant/components/intellifire/translations/hu.json b/homeassistant/components/intellifire/translations/hu.json index c46c7b02f5a..f5d11abe4c0 100644 --- a/homeassistant/components/intellifire/translations/hu.json +++ b/homeassistant/components/intellifire/translations/hu.json @@ -1,13 +1,40 @@ { "config": { "abort": { - "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van" + "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", + "not_intellifire_device": "Nem egy IntelliFire eszk\u00f6z.", + "reauth_successful": "Az \u00fajrahiteles\u00edt\u00e9s sikeres volt." }, "error": { + "api_error": "A bejelentkez\u00e9s sikertelen", "cannot_connect": "Sikertelen csatlakoz\u00e1s", + "iftapi_connect": "Hiba az iftapi.net-hez val\u00f3 csatlakoz\u00e1sban", "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" }, + "flow_title": "{serial} ({host})", "step": { + "api_config": { + "data": { + "password": "Jelsz\u00f3", + "username": "E-mail" + } + }, + "dhcp_confirm": { + "description": "Szeretn\u00e9 be\u00e1ll\u00edtani: {host}\nGy\u00e1ri sz\u00e1m: {serial}?" + }, + "manual_device_entry": { + "data": { + "host": "IP C\u00edm" + }, + "description": "Helyi konfigur\u00e1ci\u00f3" + }, + "pick_device": { + "data": { + "host": "C\u00edm" + }, + "description": "A k\u00f6vetkez\u0151 IntelliFire eszk\u00f6z\u00f6k \u00e9szlelve. K\u00e9rj\u00fck, v\u00e1lassza ki, melyiket szeretn\u00e9 konfigur\u00e1lni.", + "title": "Eszk\u00f6z v\u00e1laszt\u00e1sa" + }, "user": { "data": { "host": "C\u00edm" diff --git a/homeassistant/components/intellifire/translations/id.json b/homeassistant/components/intellifire/translations/id.json index c04f83e4b59..07ec946b6ba 100644 --- a/homeassistant/components/intellifire/translations/id.json +++ b/homeassistant/components/intellifire/translations/id.json @@ -1,13 +1,40 @@ { "config": { "abort": { - "already_configured": "Perangkat sudah dikonfigurasi" + "already_configured": "Perangkat sudah dikonfigurasi", + "not_intellifire_device": "Bukan Perangkat IntelliFire.", + "reauth_successful": "Autentikasi ulang berhasil" }, "error": { + "api_error": "Gagal masuk", "cannot_connect": "Gagal terhubung", + "iftapi_connect": "Kesalahan saat menyambung ke iftapi.net", "unknown": "Kesalahan yang tidak diharapkan" }, + "flow_title": "{serial} ({host})", "step": { + "api_config": { + "data": { + "password": "Kata Sandi", + "username": "Email" + } + }, + "dhcp_confirm": { + "description": "Ingin menyiapkan {host}\nSerial: ({serial})?" + }, + "manual_device_entry": { + "data": { + "host": "Host (Alamat IP)" + }, + "description": "Konfigurasi Lokal" + }, + "pick_device": { + "data": { + "host": "Host" + }, + "description": "Perangkat IntelliFire berikut ditemukan. Pilih yang ingin dikonfigurasikan.", + "title": "Pemilihan Perangkat" + }, "user": { "data": { "host": "Host" diff --git a/homeassistant/components/intellifire/translations/it.json b/homeassistant/components/intellifire/translations/it.json index e8bfd780908..8689840c82c 100644 --- a/homeassistant/components/intellifire/translations/it.json +++ b/homeassistant/components/intellifire/translations/it.json @@ -1,13 +1,40 @@ { "config": { "abort": { - "already_configured": "Il dispositivo \u00e8 gi\u00e0 configurato" + "already_configured": "Il dispositivo \u00e8 gi\u00e0 configurato", + "not_intellifire_device": "Non \u00e8 un dispositivo IntelliFire.", + "reauth_successful": "La nuova autenticazione \u00e8 stata eseguita correttamente" }, "error": { + "api_error": "Accesso non riuscito", "cannot_connect": "Impossibile connettersi", + "iftapi_connect": "Errore durante la connessione a iftapi.net", "unknown": "Errore imprevisto" }, + "flow_title": "{serial} ({host})", "step": { + "api_config": { + "data": { + "password": "Password", + "username": "Email" + } + }, + "dhcp_confirm": { + "description": "Vuoi configurare {host}\n Seriale: {serial}?" + }, + "manual_device_entry": { + "data": { + "host": "Host (indirizzo IP)" + }, + "description": "Configurazione locale" + }, + "pick_device": { + "data": { + "host": "Host" + }, + "description": "Sono stati rilevati i seguenti dispositivi IntelliFire. Seleziona quello che desideri configurare.", + "title": "Selezione del dispositivo" + }, "user": { "data": { "host": "Host" diff --git a/homeassistant/components/intellifire/translations/ja.json b/homeassistant/components/intellifire/translations/ja.json index 718b4432290..c623f0f59cf 100644 --- a/homeassistant/components/intellifire/translations/ja.json +++ b/homeassistant/components/intellifire/translations/ja.json @@ -1,13 +1,40 @@ { "config": { "abort": { - "already_configured": "\u30c7\u30d0\u30a4\u30b9\u306f\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059" + "already_configured": "\u30c7\u30d0\u30a4\u30b9\u306f\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059", + "not_intellifire_device": "IntelliFire\u30c7\u30d0\u30a4\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002", + "reauth_successful": "\u518d\u8a8d\u8a3c\u306b\u6210\u529f\u3057\u307e\u3057\u305f" }, "error": { + "api_error": "\u30ed\u30b0\u30a4\u30f3\u306b\u5931\u6557\u3057\u307e\u3057\u305f", "cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f", + "iftapi_connect": "iftapi.net\u3078\u306e\u63a5\u7d9a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f", "unknown": "\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc" }, + "flow_title": "{serial} ({host})", "step": { + "api_config": { + "data": { + "password": "\u30d1\u30b9\u30ef\u30fc\u30c9", + "username": "E\u30e1\u30fc\u30eb" + } + }, + "dhcp_confirm": { + "description": "{host} \u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u307e\u3059\u304b\uff1f\n\u30b7\u30ea\u30a2\u30eb: {serial}\uff1f" + }, + "manual_device_entry": { + "data": { + "host": "\u30db\u30b9\u30c8" + }, + "description": "\u30ed\u30fc\u30ab\u30eb\u8a2d\u5b9a" + }, + "pick_device": { + "data": { + "host": "\u30db\u30b9\u30c8" + }, + "description": "\u4ee5\u4e0b\u306eIntelliFire\u30c7\u30d0\u30a4\u30b9\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002\u8a2d\u5b9a\u3057\u305f\u3044\u3082\u306e\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002", + "title": "\u30c7\u30d0\u30a4\u30b9\u306e\u9078\u629e" + }, "user": { "data": { "host": "\u30db\u30b9\u30c8" diff --git a/homeassistant/components/intellifire/translations/nl.json b/homeassistant/components/intellifire/translations/nl.json index 735a4df572f..a4f2b1c304a 100644 --- a/homeassistant/components/intellifire/translations/nl.json +++ b/homeassistant/components/intellifire/translations/nl.json @@ -1,13 +1,40 @@ { "config": { "abort": { - "already_configured": "Apparaat is al geconfigureerd" + "already_configured": "Apparaat is al geconfigureerd", + "not_intellifire_device": "Niet een IntelliFire apparaat.", + "reauth_successful": "Herauthenticatie was succesvol" }, "error": { + "api_error": "Inloggen mislukt", "cannot_connect": "Kan geen verbinding maken", + "iftapi_connect": "Fout bij het verbinden met iftapi.net", "unknown": "Onverwachte fout" }, + "flow_title": "{serial} ({host})", "step": { + "api_config": { + "data": { + "password": "Wachtwoord", + "username": "E-mail" + } + }, + "dhcp_confirm": { + "description": "Wilt u {host} instellen\n Serieel: {serial} ?" + }, + "manual_device_entry": { + "data": { + "host": "Host (IP-adres)" + }, + "description": "Lokale configuratie" + }, + "pick_device": { + "data": { + "host": "Host" + }, + "description": "De volgende IntelliFire-apparaten zijn ontdekt. Selecteer welke u wilt configureren.", + "title": "Apparaat selectie" + }, "user": { "data": { "host": "Host" diff --git a/homeassistant/components/intellifire/translations/no.json b/homeassistant/components/intellifire/translations/no.json index 12ee27af925..8175a085f30 100644 --- a/homeassistant/components/intellifire/translations/no.json +++ b/homeassistant/components/intellifire/translations/no.json @@ -1,13 +1,40 @@ { "config": { "abort": { - "already_configured": "Enheten er allerede konfigurert" + "already_configured": "Enheten er allerede konfigurert", + "not_intellifire_device": "Ikke en IntelliFire-enhet.", + "reauth_successful": "Godkjenning p\u00e5 nytt var vellykket" }, "error": { + "api_error": "Innlogging feilet", "cannot_connect": "Tilkobling mislyktes", + "iftapi_connect": "Feil ved tilkobling til iftapi.net", "unknown": "Uventet feil" }, + "flow_title": "{serial} ( {host} )", "step": { + "api_config": { + "data": { + "password": "Passord", + "username": "E-post" + } + }, + "dhcp_confirm": { + "description": "Vil du konfigurere {host}\n Serienummer: {serial} ?" + }, + "manual_device_entry": { + "data": { + "host": "Vert (IP-adresse)" + }, + "description": "Lokal konfigurasjon" + }, + "pick_device": { + "data": { + "host": "Vert" + }, + "description": "F\u00f8lgende IntelliFire-enheter ble oppdaget. Velg hvilken du \u00f8nsker \u00e5 konfigurere.", + "title": "Enhetsvalg" + }, "user": { "data": { "host": "Vert" diff --git a/homeassistant/components/intellifire/translations/pl.json b/homeassistant/components/intellifire/translations/pl.json index d455990b1f0..f63be88814f 100644 --- a/homeassistant/components/intellifire/translations/pl.json +++ b/homeassistant/components/intellifire/translations/pl.json @@ -1,13 +1,40 @@ { "config": { "abort": { - "already_configured": "Urz\u0105dzenie jest ju\u017c skonfigurowane" + "already_configured": "Urz\u0105dzenie jest ju\u017c skonfigurowane", + "not_intellifire_device": "To nie jest urz\u0105dzenie IntelliFire.", + "reauth_successful": "Ponowne uwierzytelnienie powiod\u0142o si\u0119" }, "error": { + "api_error": "Logowanie nie powiod\u0142o si\u0119", "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", + "iftapi_connect": "B\u0142\u0105d po\u0142\u0105czenia z iftapi.net", "unknown": "Nieoczekiwany b\u0142\u0105d" }, + "flow_title": "{serial} ({host})", "step": { + "api_config": { + "data": { + "password": "Has\u0142o", + "username": "Adres e-mail" + } + }, + "dhcp_confirm": { + "description": "Czy chcesz skonfigurowa\u0107 {host}\nNumer seryjny: {serial}?" + }, + "manual_device_entry": { + "data": { + "host": "Nazwa hosta lub adres IP" + }, + "description": "Konfiguracja lokalna" + }, + "pick_device": { + "data": { + "host": "Nazwa hosta lub adres IP" + }, + "description": "Wykryto nast\u0119puj\u0105ce urz\u0105dzenia IntelliFire. Wybierz, kt\u00f3re chcesz skonfigurowa\u0107.", + "title": "Wyb\u00f3r urz\u0105dzenia" + }, "user": { "data": { "host": "Nazwa hosta lub adres IP" diff --git a/homeassistant/components/intellifire/translations/pt-BR.json b/homeassistant/components/intellifire/translations/pt-BR.json index ff6ede166a9..babcc22bd97 100644 --- a/homeassistant/components/intellifire/translations/pt-BR.json +++ b/homeassistant/components/intellifire/translations/pt-BR.json @@ -1,13 +1,40 @@ { "config": { "abort": { - "already_configured": "Dispositivo j\u00e1 est\u00e1 configurado" + "already_configured": "Dispositivo j\u00e1 est\u00e1 configurado", + "not_intellifire_device": "N\u00e3o \u00e9 um dispositivo IntelliFire.", + "reauth_successful": "A reautentica\u00e7\u00e3o foi bem-sucedida" }, "error": { + "api_error": "Login falhou", "cannot_connect": "Falha ao conectar", + "iftapi_connect": "Erro ao conectar ao iftapi.net", "unknown": "Erro inesperado" }, + "flow_title": "{serial} ({host})", "step": { + "api_config": { + "data": { + "password": "Senha", + "username": "Email" + } + }, + "dhcp_confirm": { + "description": "Voc\u00ea deseja configurar {host}\nSerial: {serial}?" + }, + "manual_device_entry": { + "data": { + "host": "Host (endere\u00e7o IP)" + }, + "description": "Configura\u00e7\u00e3o local" + }, + "pick_device": { + "data": { + "host": "Nome do host" + }, + "description": "Os seguintes dispositivos IntelliFire foram descobertos. Por favor, selecione o que voc\u00ea deseja configura.", + "title": "Sele\u00e7\u00e3o de dispositivo" + }, "user": { "data": { "host": "Nome do host" diff --git a/homeassistant/components/intellifire/translations/ru.json b/homeassistant/components/intellifire/translations/ru.json index ffde0514cde..b48cd06b592 100644 --- a/homeassistant/components/intellifire/translations/ru.json +++ b/homeassistant/components/intellifire/translations/ru.json @@ -1,13 +1,40 @@ { "config": { "abort": { - "already_configured": "\u042d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 Home Assistant." + "already_configured": "\u042d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 Home Assistant.", + "not_intellifire_device": "\u041d\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e IntelliFire.", + "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e." }, "error": { + "api_error": "\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435 \u0443\u0434\u0430\u043b\u0430\u0441\u044c.", "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", + "iftapi_connect": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043a iftapi.net", "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." }, + "flow_title": "{serial} ({host})", "step": { + "api_config": { + "data": { + "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" + } + }, + "dhcp_confirm": { + "description": "\u0425\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c {host}\n\u0421\u0435\u0440\u0438\u0439\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440: {serial}?" + }, + "manual_device_entry": { + "data": { + "host": "\u0425\u043e\u0441\u0442 (IP-\u0430\u0434\u0440\u0435\u0441)" + }, + "description": "\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f." + }, + "pick_device": { + "data": { + "host": "\u0425\u043e\u0441\u0442" + }, + "description": "\u0411\u044b\u043b\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 IntelliFire. \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435, \u043a\u0430\u043a\u043e\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c.", + "title": "\u0412\u044b\u0431\u043e\u0440 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430" + }, "user": { "data": { "host": "\u0425\u043e\u0441\u0442" diff --git a/homeassistant/components/intellifire/translations/tr.json b/homeassistant/components/intellifire/translations/tr.json index 05846c9d760..3a22e7c3680 100644 --- a/homeassistant/components/intellifire/translations/tr.json +++ b/homeassistant/components/intellifire/translations/tr.json @@ -1,13 +1,40 @@ { "config": { "abort": { - "already_configured": "Cihaz zaten yap\u0131land\u0131r\u0131lm\u0131\u015f" + "already_configured": "Cihaz zaten yap\u0131land\u0131r\u0131lm\u0131\u015f", + "not_intellifire_device": "IntelliFire Cihaz\u0131 de\u011fil.", + "reauth_successful": "Yeniden kimlik do\u011frulama ba\u015far\u0131l\u0131 oldu" }, "error": { + "api_error": "Oturum a\u00e7ma ba\u015far\u0131s\u0131z oldu", "cannot_connect": "Ba\u011flanma hatas\u0131", + "iftapi_connect": "iftapi.net'e ba\u011flan\u0131rken hata olu\u015ftu", "unknown": "Beklenmeyen hata" }, + "flow_title": "{serial} ({host})", "step": { + "api_config": { + "data": { + "password": "Parola", + "username": "E-posta" + } + }, + "dhcp_confirm": { + "description": "Kurulumu yapmak {host} ister misiniz?\nSeri No: {serial}?" + }, + "manual_device_entry": { + "data": { + "host": "Sunucu (IP Adresi)" + }, + "description": "Yerel Yap\u0131land\u0131rma" + }, + "pick_device": { + "data": { + "host": "Sunucu" + }, + "description": "A\u015fa\u011f\u0131daki IntelliFire cihazlar\u0131 ke\u015ffedildi. L\u00fctfen yap\u0131land\u0131rmak istedi\u011finizi se\u00e7in.", + "title": "Cihaz Se\u00e7imi" + }, "user": { "data": { "host": "Sunucu" diff --git a/homeassistant/components/intellifire/translations/zh-Hant.json b/homeassistant/components/intellifire/translations/zh-Hant.json index 9847ae248f7..107f9cca74c 100644 --- a/homeassistant/components/intellifire/translations/zh-Hant.json +++ b/homeassistant/components/intellifire/translations/zh-Hant.json @@ -1,13 +1,40 @@ { "config": { "abort": { - "already_configured": "\u88dd\u7f6e\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210" + "already_configured": "\u88dd\u7f6e\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", + "not_intellifire_device": "\u975e IntelliFire \u88dd\u7f6e\u3002", + "reauth_successful": "\u91cd\u65b0\u8a8d\u8b49\u6210\u529f" }, "error": { + "api_error": "\u767b\u5165\u5931\u6557", "cannot_connect": "\u9023\u7dda\u5931\u6557", + "iftapi_connect": "\u9023\u7dda\u81f3 iftapi.net \u932f\u8aa4", "unknown": "\u672a\u9810\u671f\u932f\u8aa4" }, + "flow_title": "{serial} ({host})", "step": { + "api_config": { + "data": { + "password": "\u5bc6\u78bc", + "username": "\u96fb\u5b50\u90f5\u4ef6" + } + }, + "dhcp_confirm": { + "description": "\u662f\u5426\u8981\u8a2d\u5b9a {host}\n\u5e8f\u865f\uff1a{serial}\uff1f" + }, + "manual_device_entry": { + "data": { + "host": "\u4e3b\u6a5f\uff08IP \u4f4d\u5740\uff09" + }, + "description": "\u672c\u5730\u7aef\u8a2d\u5b9a" + }, + "pick_device": { + "data": { + "host": "\u4e3b\u6a5f\u7aef" + }, + "description": "\u641c\u5c0b\u5230\u4ee5\u4e0b IntelliFire \u88dd\u7f6e\uff0c\u8acb\u9078\u64c7\u6240\u8981\u8a2d\u5b9a\u7684\u88dd\u7f6e\u3002", + "title": "\u88dd\u7f6e\u9078\u64c7" + }, "user": { "data": { "host": "\u4e3b\u6a5f\u7aef" diff --git a/homeassistant/components/iotawatt/translations/hu.json b/homeassistant/components/iotawatt/translations/hu.json index 52d46f97a84..5f5d30136da 100644 --- a/homeassistant/components/iotawatt/translations/hu.json +++ b/homeassistant/components/iotawatt/translations/hu.json @@ -11,7 +11,7 @@ "password": "Jelsz\u00f3", "username": "Felhaszn\u00e1l\u00f3n\u00e9v" }, - "description": "Az IoTawatt eszk\u00f6z hiteles\u00edt\u00e9st ig\u00e9nyel. K\u00e9rj\u00fck, adja meg felhaszn\u00e1l\u00f3nev\u00e9t \u00e9s jelszav\u00e1t, majd kattintson a K\u00fcld\u00e9s gombra." + "description": "Az IoTawatt eszk\u00f6z hiteles\u00edt\u00e9st ig\u00e9nyel. K\u00e9rj\u00fck, adja meg felhaszn\u00e1l\u00f3nev\u00e9t \u00e9s jelszav\u00e1t, majd folytassa." }, "user": { "data": { diff --git a/homeassistant/components/iotawatt/translations/id.json b/homeassistant/components/iotawatt/translations/id.json index ef50c938292..bddda73fa50 100644 --- a/homeassistant/components/iotawatt/translations/id.json +++ b/homeassistant/components/iotawatt/translations/id.json @@ -11,7 +11,7 @@ "password": "Kata Sandi", "username": "Nama Pengguna" }, - "description": "Perangkat IoTawatt memerlukan otentikasi. Masukkan nama pengguna dan kata sandi dan klik tombol Kirim." + "description": "Perangkat IoTawatt memerlukan autentikasi. Masukkan nama pengguna dan kata sandi dan klik tombol Kirim." }, "user": { "data": { diff --git a/homeassistant/components/ipma/translations/hu.json b/homeassistant/components/ipma/translations/hu.json index 00ba66d2dd7..16653645052 100644 --- a/homeassistant/components/ipma/translations/hu.json +++ b/homeassistant/components/ipma/translations/hu.json @@ -9,7 +9,7 @@ "latitude": "Sz\u00e9less\u00e9g", "longitude": "Hossz\u00fas\u00e1g", "mode": "M\u00f3d", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" }, "description": "Portug\u00e1l Atmoszf\u00e9ra Int\u00e9zet", "title": "Elhelyezked\u00e9s" diff --git a/homeassistant/components/ipp/translations/it.json b/homeassistant/components/ipp/translations/it.json index c5a2a613eeb..96319641c6b 100644 --- a/homeassistant/components/ipp/translations/it.json +++ b/homeassistant/components/ipp/translations/it.json @@ -6,7 +6,7 @@ "connection_upgrade": "Impossibile connettersi alla stampante a causa della necessit\u00e0 dell'aggiornamento della connessione.", "ipp_error": "Si \u00e8 verificato un errore IPP.", "ipp_version_error": "Versione IPP non supportata dalla stampante.", - "parse_error": "Impossibile analizza la risposta dalla stampante.", + "parse_error": "Impossibile analizzare la risposta dalla stampante.", "unique_id_required": "Identificazione univoca del dispositivo mancante necessaria per l'individuazione." }, "error": { diff --git a/homeassistant/components/ipp/translations/pl.json b/homeassistant/components/ipp/translations/pl.json index b44904095de..b2eb67a6d93 100644 --- a/homeassistant/components/ipp/translations/pl.json +++ b/homeassistant/components/ipp/translations/pl.json @@ -24,7 +24,7 @@ "verify_ssl": "Weryfikacja certyfikatu SSL" }, "description": "Skonfiguruj drukark\u0119 za pomoc\u0105 protoko\u0142u IPP (Internet Printing Protocol), aby zintegrowa\u0107 j\u0105 z Home Assistantem.", - "title": "Po\u0142\u0105cz swoj\u0105 drukark\u0119" + "title": "Po\u0142\u0105czenie z Twoj\u0105 drukark\u0105" }, "zeroconf_confirm": { "description": "Czy chcesz doda\u0107 drukark\u0119 o nazwie `{name}` do Home Assistanta?", diff --git a/homeassistant/components/iss/translations/hu.json b/homeassistant/components/iss/translations/hu.json index 1d75dd9ed3f..bfe593e9592 100644 --- a/homeassistant/components/iss/translations/hu.json +++ b/homeassistant/components/iss/translations/hu.json @@ -9,7 +9,7 @@ "data": { "show_on_map": "Megjelenjen a t\u00e9rk\u00e9pen?" }, - "description": "Szeretn\u00e9 konfigur\u00e1lni a Nemzetk\u00f6zi \u0170r\u00e1llom\u00e1st?" + "description": "Szeretn\u00e9 konfigur\u00e1lni a Nemzetk\u00f6zi \u0170r\u00e1llom\u00e1st (ISS)?" } } }, diff --git a/homeassistant/components/iss/translations/pt-BR.json b/homeassistant/components/iss/translations/pt-BR.json index 5e34b2eec1b..c69fefed0c5 100644 --- a/homeassistant/components/iss/translations/pt-BR.json +++ b/homeassistant/components/iss/translations/pt-BR.json @@ -7,7 +7,7 @@ "step": { "user": { "data": { - "show_on_map": "Mostrar no mapa?" + "show_on_map": "Mostrar no mapa" }, "description": "Deseja configurar a Esta\u00e7\u00e3o Espacial Internacional (ISS)?" } @@ -17,7 +17,7 @@ "step": { "init": { "data": { - "show_on_map": "Mostrar no mapa?" + "show_on_map": "Mostrar no mapa" } } } diff --git a/homeassistant/components/kaleidescape/translations/cs.json b/homeassistant/components/kaleidescape/translations/cs.json new file mode 100644 index 00000000000..deb0693b00d --- /dev/null +++ b/homeassistant/components/kaleidescape/translations/cs.json @@ -0,0 +1,13 @@ +{ + "config": { + "abort": { + "already_configured": "Za\u0159\u00edzen\u00ed je ji\u017e nastaveno", + "already_in_progress": "Konfigurace ji\u017e prob\u00edh\u00e1", + "unknown": "Neo\u010dek\u00e1van\u00e1 chyba" + }, + "error": { + "cannot_connect": "Nepoda\u0159ilo se p\u0159ipojit" + }, + "flow_title": "{model} ({name})" + } +} \ No newline at end of file diff --git a/homeassistant/components/kaleidescape/translations/hu.json b/homeassistant/components/kaleidescape/translations/hu.json index 953de8119ed..cd8b00e18a3 100644 --- a/homeassistant/components/kaleidescape/translations/hu.json +++ b/homeassistant/components/kaleidescape/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt", "unsupported": "Nem t\u00e1mogatott eszk\u00f6z" }, diff --git a/homeassistant/components/knx/translations/bg.json b/homeassistant/components/knx/translations/bg.json index 43f72f49867..3cbc8b57b0b 100644 --- a/homeassistant/components/knx/translations/bg.json +++ b/homeassistant/components/knx/translations/bg.json @@ -5,7 +5,8 @@ "single_instance_allowed": "\u0412\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e. \u0412\u044a\u0437\u043c\u043e\u0436\u043d\u0430 \u0435 \u0441\u0430\u043c\u043e \u0435\u0434\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f." }, "error": { - "cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435" + "cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435", + "invalid_ip_address": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d IPv4 \u0430\u0434\u0440\u0435\u0441." }, "step": { "manual_tunnel": { @@ -14,11 +15,23 @@ "local_ip": "\u041b\u043e\u043a\u0430\u043b\u0435\u043d IP (\u043e\u0441\u0442\u0430\u0432\u0435\u0442\u0435 \u043f\u0440\u0430\u0437\u043d\u043e, \u0430\u043a\u043e \u043d\u0435 \u0441\u0442\u0435 \u0441\u0438\u0433\u0443\u0440\u043d\u0438)", "port": "\u041f\u043e\u0440\u0442", "tunneling_type": "KNX \u0442\u0443\u043d\u0435\u043b\u0435\u043d \u0442\u0438\u043f" + }, + "data_description": { + "local_ip": "\u041e\u0441\u0442\u0430\u0432\u0435\u0442\u0435 \u043f\u0440\u0430\u0437\u043d\u043e, \u0437\u0430 \u0434\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u043e\u0442\u043a\u0440\u0438\u0432\u0430\u043d\u0435." } }, "routing": { "data": { "local_ip": "\u041b\u043e\u043a\u0430\u043b\u0435\u043d IP \u0430\u0434\u0440\u0435\u0441 (\u043e\u0441\u0442\u0430\u0432\u0435\u0442\u0435 \u043f\u0440\u0430\u0437\u043d\u043e, \u0430\u043a\u043e \u043d\u0435 \u0441\u0442\u0435 \u0441\u0438\u0433\u0443\u0440\u043d\u0438)" + }, + "data_description": { + "local_ip": "\u041e\u0441\u0442\u0430\u0432\u0435\u0442\u0435 \u043f\u0440\u0430\u0437\u043d\u043e, \u0437\u0430 \u0434\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u043e\u0442\u043a\u0440\u0438\u0432\u0430\u043d\u0435." + } + }, + "secure_manual": { + "data": { + "user_id": "\u0418\u0414 \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f", + "user_password": "\u041f\u0430\u0440\u043e\u043b\u0430 \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f" } } } @@ -28,6 +41,9 @@ "init": { "data": { "local_ip": "\u041b\u043e\u043a\u0430\u043b\u0435\u043d IP \u0430\u0434\u0440\u0435\u0441 (\u043e\u0441\u0442\u0430\u0432\u0435\u0442\u0435 \u043f\u0440\u0430\u0437\u043d\u043e, \u0430\u043a\u043e \u043d\u0435 \u0441\u0442\u0435 \u0441\u0438\u0433\u0443\u0440\u043d\u0438)" + }, + "data_description": { + "local_ip": "\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 `0.0.0.0` \u0437\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u043e\u0442\u043a\u0440\u0438\u0432\u0430\u043d\u0435." } }, "tunnel": { diff --git a/homeassistant/components/knx/translations/ca.json b/homeassistant/components/knx/translations/ca.json index dd553f293be..b79887e1586 100644 --- a/homeassistant/components/knx/translations/ca.json +++ b/homeassistant/components/knx/translations/ca.json @@ -5,29 +5,73 @@ "single_instance_allowed": "Ja configurat. Nom\u00e9s \u00e9s possible una sola configuraci\u00f3." }, "error": { - "cannot_connect": "Ha fallat la connexi\u00f3" + "cannot_connect": "Ha fallat la connexi\u00f3", + "file_not_found": "No s'ha trobat el fitxer `.knxkeys` especificat a la ruta config/.storage/knx/", + "invalid_individual_address": "El valor no coincideix amb el patr\u00f3 d'adre\u00e7a KNX individual.\n'area.line.device'", + "invalid_ip_address": "Adre\u00e7a IPv4 inv\u00e0lida.", + "invalid_signature": "La contrasenya per desxifrar el fitxer `.knxkeys` \u00e9s incorrecta." }, "step": { "manual_tunnel": { "data": { "host": "Amfitri\u00f3", "individual_address": "Adre\u00e7a individual de la connexi\u00f3", - "local_ip": "IP local de Home Assistant (deixa-ho en blanc si no n'est\u00e0s segur/a)", + "local_ip": "IP local de Home Assistant", "port": "Port", "route_back": "Encaminament de retorn / Mode NAT", "tunneling_type": "Tipus de t\u00fanel KNX" }, + "data_description": { + "host": "Adre\u00e7a IP del dispositiu de tunelitzaci\u00f3 KNX/IP.", + "local_ip": "Deixa-ho en blanc per utilitzar el descobriment autom\u00e0tic.", + "port": "Port del dispositiu de tunelitzaci\u00f3 KNX/IP." + }, "description": "Introdueix la informaci\u00f3 de connexi\u00f3 del dispositiu de t\u00fanel." }, "routing": { "data": { - "individual_address": "Adre\u00e7a individual de la connexi\u00f3 d'encaminament", - "local_ip": "IP local de Home Assistant (deixa-ho en blanc si no n'est\u00e0s segur/a)", - "multicast_group": "Grup de multidifusi\u00f3 utilitzat per a l'encaminament", - "multicast_port": "Port de multidifusi\u00f3 utilitzat per a l'encaminament" + "individual_address": "Adre\u00e7a individual", + "local_ip": "IP local de Home Assistant", + "multicast_group": "Grup multidifusi\u00f3", + "multicast_port": "Port multidifusi\u00f3" + }, + "data_description": { + "individual_address": "Adre\u00e7a KNX per utilitzar amb Home Assistant, p. ex. `0.0.4`", + "local_ip": "Deixa-ho en blanc per utilitzar el descobriment autom\u00e0tic." }, "description": "Configura les opcions d'encaminament." }, + "secure_knxkeys": { + "data": { + "knxkeys_filename": "Nom del teu fitxer `.knxkeys` (inclosa l'extensi\u00f3)", + "knxkeys_password": "Contrasenya per desxifrar el fitxer `.knxkeys`." + }, + "data_description": { + "knxkeys_filename": "S'espera que el fitxer es trobi al teu directori de configuraci\u00f3 a `.storage/knx/`.\nA Home Assistant aix\u00f2 estaria a `/config/.storage/knx/`\nExemple: `el_meu_projecte.knxkeys`", + "knxkeys_password": "S'ha definit durant l'exportaci\u00f3 del fitxer des d'ETS." + }, + "description": "Introdueix la informaci\u00f3 del teu fitxer `.knxkeys`." + }, + "secure_manual": { + "data": { + "device_authentication": "Contrasenya d'autenticaci\u00f3 del dispositiu", + "user_id": "ID d'usuari", + "user_password": "Contrasenya d'usuari" + }, + "data_description": { + "device_authentication": "S'estableix al panell 'IP' de la interf\u00edcie d'ETS.", + "user_id": "Sovint \u00e9s el n\u00famero del t\u00fanel +1. Per tant, 'T\u00fanel 2' tindria l'ID d'usuari '3'.", + "user_password": "Contrasenya per a la connexi\u00f3 t\u00fanel espec\u00edfica configurada al panell 'Propietats' del t\u00fanel a ETS." + }, + "description": "Introdueix la informaci\u00f3 de seguretat IP (IP Secure)." + }, + "secure_tunneling": { + "description": "Selecciona com vols configurar KNX/IP Secure.", + "menu_options": { + "secure_knxkeys": "Utilitza un fitxer `.knxkeys` que contingui les claus de seguretat IP (IP Secure)", + "secure_manual": "Configura manualment les claus de seguretat IP (IP Secure)" + } + }, "tunnel": { "data": { "gateway": "Connexi\u00f3 t\u00fanel KNX" @@ -48,11 +92,19 @@ "data": { "connection_type": "Tipus de connexi\u00f3 KNX", "individual_address": "Adre\u00e7a individual predeterminada", - "local_ip": "IP local de Home Assistant (utilitza 0.0.0.0 per a detecci\u00f3 autom\u00e0tica)", - "multicast_group": "Grup de multidifusi\u00f3 utilitzat per a encaminament i descobriment", - "multicast_port": "Port de multidifusi\u00f3 utilitzat per a encaminament i descobriment", - "rate_limit": "Telegrames de sortida m\u00e0xims per segon", - "state_updater": "Habilita la lectura global d'estats del bus KNX" + "local_ip": "IP local de Home Assistant", + "multicast_group": "Grup multidifusi\u00f3", + "multicast_port": "Port multidifusi\u00f3", + "rate_limit": "Freq\u00fc\u00e8ncia m\u00e0xima", + "state_updater": "Actualitzador d'estat" + }, + "data_description": { + "individual_address": "Adre\u00e7a KNX per utilitzar amb Home Assistant, p. ex. `0.0.4`", + "local_ip": "Utilitza `0.0.0.0` per al descobriment autom\u00e0tic.", + "multicast_group": "Utilitzada per a l'encaminament i el descobriment. Per defecte: `224.0.23.12`", + "multicast_port": "Utilitzat per a l'encaminament i el descobriment. Per defecte: `3671`", + "rate_limit": "Telegrames de sortida m\u00e0xims per segon.\nRecomanat: de 20 a 40", + "state_updater": "Activa o desactiva globalment la lectura d'estats del bus KNX. Si est\u00e0 desactivat, Home Assistant no obtindr\u00e0 activament els estats del bus KNX, les opcions d'entitat `sync_state` no tindran cap efecte." } }, "tunnel": { @@ -62,6 +114,10 @@ "port": "Port", "route_back": "Encaminament de retorn / Mode NAT", "tunneling_type": "Tipus de t\u00fanel KNX" + }, + "data_description": { + "host": "Adre\u00e7a IP del dispositiu de tunelitzaci\u00f3 KNX/IP.", + "port": "Port del dispositiu de tunelitzaci\u00f3 KNX/IP." } } } diff --git a/homeassistant/components/knx/translations/de.json b/homeassistant/components/knx/translations/de.json index 2f7795153dc..588a853a8b6 100644 --- a/homeassistant/components/knx/translations/de.json +++ b/homeassistant/components/knx/translations/de.json @@ -5,34 +5,78 @@ "single_instance_allowed": "Bereits konfiguriert. Nur eine einzige Konfiguration m\u00f6glich." }, "error": { - "cannot_connect": "Verbindung fehlgeschlagen" + "cannot_connect": "Verbindung fehlgeschlagen", + "file_not_found": "Die angegebene `.knxkeys`-Datei wurde im Pfad config/.storage/knx/ nicht gefunden.", + "invalid_individual_address": "Wert ist keine g\u00fcltige physikalische Adresse. 'Bereich.Linie.Teilnehmer'", + "invalid_ip_address": "Ung\u00fcltige IPv4 Adresse.", + "invalid_signature": "Das Passwort zum Entschl\u00fcsseln der `.knxkeys`-Datei ist ung\u00fcltig." }, "step": { "manual_tunnel": { "data": { "host": "Host", "individual_address": "Physikalische Adresse f\u00fcr die Verbindung", - "local_ip": "Lokale IP von Home Assistant (f\u00fcr automatische Erkennung leer lassen)", + "local_ip": "Lokale IP von Home Assistant", "port": "Port", "route_back": "Route Back / NAT-Modus", "tunneling_type": "KNX Tunneling Typ" }, - "description": "Bitte gib die Verbindungsinformationen deines Tunnelger\u00e4ts ein." + "data_description": { + "host": "IP-Adresse der KNX/IP-Tunneling Schnittstelle.", + "local_ip": "Lasse das Feld leer, um die automatische Erkennung zu verwenden.", + "port": "Port der KNX/IP-Tunneling Schnittstelle." + }, + "description": "Bitte gib die Verbindungsinformationen deiner Tunnel-Schnittstelle ein." }, "routing": { "data": { - "individual_address": "Physikalische Adresse f\u00fcr die Routingverbindung", - "local_ip": "Lokale IP von Home Assistant (f\u00fcr automatische Erkennung leer lassen)", - "multicast_group": "Die f\u00fcr das Routing verwendete Multicast-Gruppe", - "multicast_port": "Der f\u00fcr das Routing verwendete Multicast-Port" + "individual_address": "Physikalische Adresse", + "local_ip": "Lokale IP von Home Assistant", + "multicast_group": "Multicast-Gruppe", + "multicast_port": "Multicast-Port" + }, + "data_description": { + "individual_address": "Physikalische Adresse, die von Home Assistant verwendet werden soll, z. B. \u201e0.0.4\u201c.", + "local_ip": "Lasse das Feld leer, um die automatische Erkennung zu verwenden." }, "description": "Bitte konfiguriere die Routing-Optionen." }, + "secure_knxkeys": { + "data": { + "knxkeys_filename": "Der Dateiname deiner `.knxkeys`-Datei (einschlie\u00dflich Erweiterung)", + "knxkeys_password": "Das Passwort zum Entschl\u00fcsseln der `.knxkeys`-Datei" + }, + "data_description": { + "knxkeys_filename": "Die Datei wird in deinem Konfigurationsverzeichnis unter `.storage/knx/` erwartet.\nIm Home Assistant OS w\u00e4re dies `/config/.storage/knx/`\nBeispiel: `my_project.knxkeys`", + "knxkeys_password": "Dies wurde beim Exportieren der Datei aus ETS gesetzt." + }, + "description": "Bitte gib die Informationen f\u00fcr deine `.knxkeys`-Datei ein." + }, + "secure_manual": { + "data": { + "device_authentication": "Ger\u00e4te-Authentifizierungscode", + "user_id": "Benutzer-ID", + "user_password": "Benutzer-Passwort" + }, + "data_description": { + "device_authentication": "Dies wird im Feld \"IP\" der Schnittstelle in ETS eingestellt.", + "user_id": "Dies ist oft die Tunnelnummer +1. \u201eTunnel 2\u201c h\u00e4tte also die Benutzer-ID \u201e3\u201c.", + "user_password": "Passwort f\u00fcr die spezifische Tunnelverbindung, die im Bereich \u201eEigenschaften\u201c des Tunnels in ETS festgelegt wurde." + }, + "description": "Bitte gib deine IP-Secure Informationen ein." + }, + "secure_tunneling": { + "description": "W\u00e4hle aus, wie du KNX/IP-Secure konfigurieren m\u00f6chtest.", + "menu_options": { + "secure_knxkeys": "Verwende eine `.knxkeys`-Datei, die IP-Secure-Schl\u00fcssel enth\u00e4lt", + "secure_manual": "IP-Secure Schl\u00fcssel manuell konfigurieren" + } + }, "tunnel": { "data": { "gateway": "KNX Tunnel Verbindung" }, - "description": "Bitte w\u00e4hle ein Gateway aus der Liste aus." + "description": "Bitte w\u00e4hle eine Schnittstelle aus der Liste aus." }, "type": { "data": { @@ -48,11 +92,19 @@ "data": { "connection_type": "KNX-Verbindungstyp", "individual_address": "Standard physikalische Adresse", - "local_ip": "Lokale IP von Home Assistant (verwende 0.0.0.0 f\u00fcr automatische Erkennung)", - "multicast_group": "Multicast-Gruppe f\u00fcr Routing und Discovery", - "multicast_port": "Multicast-Port f\u00fcr Routing und Discovery", - "rate_limit": "Maximal ausgehende Telegramme pro Sekunde", - "state_updater": "Lesen von Zust\u00e4nden von dem KNX Bus global freigeben" + "local_ip": "Lokale IP von Home Assistant", + "multicast_group": "Multicast-Gruppe", + "multicast_port": "Multicast-Port", + "rate_limit": "Telegrammdrossel", + "state_updater": "Status-Updater" + }, + "data_description": { + "individual_address": "Physikalische Adresse, die von Home Assistant verwendet werden soll, z.\u00a0B. \u201e0.0.4\u201c.", + "local_ip": "Verwende \"0.0.0.0\" f\u00fcr die automatische Erkennung.", + "multicast_group": "Wird f\u00fcr Routing und Netzwerkerkennung verwendet. Standard: `224.0.23.12`", + "multicast_port": "Wird f\u00fcr Routing und Netzwerkerkennung verwendet. Standard: \u201e3671\u201c.", + "rate_limit": "Maximal gesendete Telegramme pro Sekunde.\nEmpfohlen: 20 bis 40", + "state_updater": "Aktiviere oder deaktiviere global das Lesen von Zust\u00e4nden vom KNX-Bus. Wenn deaktiviert, ruft Home Assistant nicht aktiv Zust\u00e4nde vom KNX-Bus ab, \u201esync_state\u201c-Entity-Optionen haben keine Auswirkung." } }, "tunnel": { @@ -62,6 +114,10 @@ "port": "Port", "route_back": "Route Back / NAT-Modus", "tunneling_type": "KNX Tunneling Typ" + }, + "data_description": { + "host": "IP-Adresse der KNX/IP-Tunneling Schnittstelle.", + "port": "Port der KNX/IP-Tunneling Schnittstelle." } } } diff --git a/homeassistant/components/knx/translations/el.json b/homeassistant/components/knx/translations/el.json index 75be33560ca..81dd03f73fa 100644 --- a/homeassistant/components/knx/translations/el.json +++ b/homeassistant/components/knx/translations/el.json @@ -5,7 +5,11 @@ "single_instance_allowed": "\u0388\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af. \u039c\u03cc\u03bd\u03bf \u03bc\u03af\u03b1 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae." }, "error": { - "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2" + "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", + "file_not_found": "\u03a4\u03bf \u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf knxkeys \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae config/.storage/knx/", + "invalid_individual_address": "\u0397 \u03c4\u03b9\u03bc\u03ae \u03b4\u03b5\u03bd \u03c4\u03b1\u03b9\u03c1\u03b9\u03ac\u03b6\u03b5\u03b9 \u03bc\u03b5 \u03c4\u03bf \u03bc\u03bf\u03c4\u03af\u03b2\u03bf \u03b3\u03b9\u03b1 \u03c4\u03b7 \u03bc\u03b5\u03bc\u03bf\u03bd\u03c9\u03bc\u03ad\u03bd\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 KNX.\n \"area.line.device\"", + "invalid_ip_address": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 IPv4.", + "invalid_signature": "\u039f \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03b1\u03c0\u03bf\u03ba\u03c1\u03c5\u03c0\u03c4\u03bf\u03b3\u03c1\u03ac\u03c6\u03b7\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 knxkeys \u03b5\u03af\u03bd\u03b1\u03b9 \u03bb\u03ac\u03b8\u03bf\u03c2." }, "step": { "manual_tunnel": { @@ -17,6 +21,11 @@ "route_back": "\u039b\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 Route Back / NAT", "tunneling_type": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03c3\u03ae\u03c1\u03b1\u03b3\u03b3\u03b1\u03c2 KNX" }, + "data_description": { + "host": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 IP \u03c4\u03b7\u03c2 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2 \u03b4\u03b9\u03bf\u03c7\u03ad\u03c4\u03b5\u03c5\u03c3\u03b7\u03c2 KNX/IP.", + "local_ip": "\u0391\u03c6\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf \u03ba\u03b5\u03bd\u03cc \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03b1\u03bd\u03b1\u03ba\u03ac\u03bb\u03c5\u03c8\u03b7.", + "port": "\u0398\u03cd\u03c1\u03b1 \u03c4\u03b7\u03c2 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2 \u03b4\u03b9\u03bf\u03c7\u03ad\u03c4\u03b5\u03c5\u03c3\u03b7\u03c2 KNX/IP." + }, "description": "\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 \u03c4\u03b7\u03c2 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2 \u03c3\u03ae\u03c1\u03b1\u03b3\u03b3\u03ac\u03c2 \u03c3\u03b1\u03c2." }, "routing": { @@ -26,8 +35,43 @@ "multicast_group": "\u0397 \u03bf\u03bc\u03ac\u03b4\u03b1 \u03c0\u03bf\u03bb\u03bb\u03b1\u03c0\u03bb\u03ae\u03c2 \u03b5\u03ba\u03c0\u03bf\u03bc\u03c0\u03ae\u03c2 \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03b3\u03b9\u03b1 \u03c4\u03b7 \u03b4\u03c1\u03bf\u03bc\u03bf\u03bb\u03cc\u03b3\u03b7\u03c3\u03b7", "multicast_port": "\u0397 \u03b8\u03cd\u03c1\u03b1 \u03c0\u03bf\u03bb\u03bb\u03b1\u03c0\u03bb\u03ae\u03c2 \u03b4\u03b9\u03b1\u03bd\u03bf\u03bc\u03ae\u03c2 \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03b3\u03b9\u03b1 \u03c4\u03b7 \u03b4\u03c1\u03bf\u03bc\u03bf\u03bb\u03cc\u03b3\u03b7\u03c3\u03b7" }, + "data_description": { + "individual_address": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 KNX \u03c0\u03bf\u03c5 \u03b8\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af \u03b1\u03c0\u03cc \u03c4\u03bf Home Assistant, \u03c0.\u03c7. `0.0.4`.", + "local_ip": "\u0391\u03c6\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf \u03ba\u03b5\u03bd\u03cc \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03b1\u03bd\u03b1\u03ba\u03ac\u03bb\u03c5\u03c8\u03b7." + }, "description": "\u0394\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03ce\u03c3\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 \u03b4\u03c1\u03bf\u03bc\u03bf\u03bb\u03cc\u03b3\u03b7\u03c3\u03b7\u03c2." }, + "secure_knxkeys": { + "data": { + "knxkeys_filename": "\u03a4\u03bf \u03c0\u03bb\u03ae\u03c1\u03b5\u03c2 \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c4\u03bf\u03c5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 knxkeys \u03c3\u03b1\u03c2", + "knxkeys_password": "\u039f \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03b1\u03c0\u03bf\u03ba\u03c1\u03c5\u03c0\u03c4\u03bf\u03b3\u03c1\u03ac\u03c6\u03b7\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 knxkeys" + }, + "data_description": { + "knxkeys_filename": "\u03a4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03b1\u03bd\u03b1\u03bc\u03ad\u03bd\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03b2\u03c1\u03b5\u03b8\u03b5\u03af \u03c3\u03c4\u03bf\u03bd \u03ba\u03b1\u03c4\u03ac\u03bb\u03bf\u03b3\u03bf \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c9\u03bd \u03c3\u03c4\u03bf `.storage/knx/`.\n \u03a3\u03c4\u03bf Home Assistant OS \u03b1\u03c5\u03c4\u03cc \u03b8\u03b1 \u03ae\u03c4\u03b1\u03bd `/config/.storage/knx/`\n \u03a0\u03b1\u03c1\u03ac\u03b4\u03b5\u03b9\u03b3\u03bc\u03b1: `my_project.knxkeys`", + "knxkeys_password": "\u0391\u03c5\u03c4\u03cc \u03bf\u03c1\u03af\u03c3\u03c4\u03b7\u03ba\u03b5 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b5\u03be\u03b1\u03b3\u03c9\u03b3\u03ae \u03c4\u03bf\u03c5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 \u03b1\u03c0\u03cc \u03c4\u03bf ETS." + }, + "description": "\u0395\u03b9\u03c3\u03b1\u03b3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf knxkeys \u03c3\u03b1\u03c2." + }, + "secure_manual": { + "data": { + "device_authentication": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2", + "user_id": "\u0391\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7", + "user_password": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7" + }, + "data_description": { + "device_authentication": "\u0391\u03c5\u03c4\u03cc \u03bf\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9 \u03c3\u03c4\u03bf\u03bd \u03c0\u03af\u03bd\u03b1\u03ba\u03b1 \u00abIP\u00bb \u03c4\u03b7\u03c2 \u03b4\u03b9\u03b5\u03c0\u03b1\u03c6\u03ae\u03c2 \u03c3\u03c4\u03bf ETS.", + "user_id": "\u0391\u03c5\u03c4\u03cc \u03b5\u03af\u03bd\u03b1\u03b9 \u03c3\u03c5\u03c7\u03bd\u03ac \u03c4\u03bf \u03bd\u03bf\u03cd\u03bc\u03b5\u03c1\u03bf +1 \u03c4\u03b7\u03c2 \u03c3\u03ae\u03c1\u03b1\u03b3\u03b3\u03b1\u03c2. \u0388\u03c4\u03c3\u03b9, \u03b7 '\u03a3\u03ae\u03c1\u03b1\u03b3\u03b3\u03b1 2' \u03b8\u03b1 \u03ad\u03c7\u03b5\u03b9 User-ID '3'.", + "user_password": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03b7 \u03c3\u03c5\u03b3\u03ba\u03b5\u03ba\u03c1\u03b9\u03bc\u03ad\u03bd\u03b7 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c3\u03ae\u03c1\u03b1\u03b3\u03b3\u03b1\u03c2 \u03c0\u03bf\u03c5 \u03ad\u03c7\u03b5\u03b9 \u03bf\u03c1\u03b9\u03c3\u03c4\u03b5\u03af \u03c3\u03c4\u03bf\u03bd \u03c0\u03af\u03bd\u03b1\u03ba\u03b1 \"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2\" \u03c4\u03b7\u03c2 \u03c3\u03ae\u03c1\u03b1\u03b3\u03b3\u03b1\u03c2 \u03c3\u03c4\u03bf ETS." + }, + "description": "\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 IP secure." + }, + "secure_tunneling": { + "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c0\u03ce\u03c2 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf IP Secure.", + "menu_options": { + "secure_knxkeys": "\u0394\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03ce\u03c3\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf knxkeys \u03c0\u03bf\u03c5 \u03c0\u03b5\u03c1\u03b9\u03ad\u03c7\u03b5\u03b9 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 IP secure", + "secure_manual": "\u0394\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 IP secure \u03c7\u03b5\u03b9\u03c1\u03bf\u03ba\u03af\u03bd\u03b7\u03c4\u03b1" + } + }, "tunnel": { "data": { "gateway": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c3\u03ae\u03c1\u03b1\u03b3\u03b3\u03b1\u03c2 KNX" @@ -47,12 +91,20 @@ "init": { "data": { "connection_type": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 KNX", - "individual_address": "\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03b7 \u03b1\u03c4\u03bf\u03bc\u03b9\u03ba\u03ae \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7", + "individual_address": "\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03b7 \u03c6\u03c5\u03c3\u03b9\u03ba\u03ae \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7", "local_ip": "\u03a4\u03bf\u03c0\u03b9\u03ba\u03ae IP \u03c4\u03bf\u03c5 Home Assistant (\u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 0.0.0.0.0 \u03b3\u03b9\u03b1 \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03b1\u03bd\u03af\u03c7\u03bd\u03b5\u03c5\u03c3\u03b7)", "multicast_group": "\u039f\u03bc\u03ac\u03b4\u03b1 \u03c0\u03bf\u03bb\u03bb\u03b1\u03c0\u03bb\u03ae\u03c2 \u03b4\u03b9\u03b1\u03bd\u03bf\u03bc\u03ae\u03c2 \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03b3\u03b9\u03b1 \u03b4\u03c1\u03bf\u03bc\u03bf\u03bb\u03cc\u03b3\u03b7\u03c3\u03b7 \u03ba\u03b1\u03b9 \u03b1\u03bd\u03b1\u03ba\u03ac\u03bb\u03c5\u03c8\u03b7", "multicast_port": "\u0398\u03cd\u03c1\u03b1 \u03c0\u03bf\u03bb\u03bb\u03b1\u03c0\u03bb\u03ae\u03c2 \u03b4\u03b9\u03b1\u03bd\u03bf\u03bc\u03ae\u03c2 \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03b3\u03b9\u03b1 \u03b4\u03c1\u03bf\u03bc\u03bf\u03bb\u03cc\u03b3\u03b7\u03c3\u03b7 \u03ba\u03b1\u03b9 \u03b1\u03bd\u03b1\u03ba\u03ac\u03bb\u03c5\u03c8\u03b7", "rate_limit": "\u039c\u03ad\u03b3\u03b9\u03c3\u03c4\u03b1 \u03b5\u03be\u03b5\u03c1\u03c7\u03cc\u03bc\u03b5\u03bd\u03b1 \u03c4\u03b7\u03bb\u03b5\u03b3\u03c1\u03b1\u03c6\u03ae\u03bc\u03b1\u03c4\u03b1 \u03b1\u03bd\u03ac \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03bf", "state_updater": "\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03ba\u03b1\u03b8\u03bf\u03bb\u03b9\u03ba\u03ac \u03c4\u03b9\u03c2 \u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2 \u03b1\u03bd\u03ac\u03b3\u03bd\u03c9\u03c3\u03b7\u03c2 \u03b1\u03c0\u03cc \u03c4\u03bf KNX Bus" + }, + "data_description": { + "individual_address": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 KNX \u03c0\u03bf\u03c5 \u03b8\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af \u03b1\u03c0\u03cc \u03c4\u03bf Home Assistant, \u03c0.\u03c7. `0.0.4`.", + "local_ip": "\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 `0.0.0.0.0` \u03b3\u03b9\u03b1 \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03b1\u03bd\u03af\u03c7\u03bd\u03b5\u03c5\u03c3\u03b7.", + "multicast_group": "\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03b3\u03b9\u03b1 \u03b4\u03c1\u03bf\u03bc\u03bf\u03bb\u03cc\u03b3\u03b7\u03c3\u03b7 \u03ba\u03b1\u03b9 \u03b1\u03bd\u03b1\u03ba\u03ac\u03bb\u03c5\u03c8\u03b7. \u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae: `224.0.23.12`", + "multicast_port": "\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03b3\u03b9\u03b1 \u03b4\u03c1\u03bf\u03bc\u03bf\u03bb\u03cc\u03b3\u03b7\u03c3\u03b7 \u03ba\u03b1\u03b9 \u03b1\u03bd\u03b1\u03ba\u03ac\u03bb\u03c5\u03c8\u03b7. \u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae: `3671`", + "rate_limit": "\u039c\u03ad\u03b3\u03b9\u03c3\u03c4\u03b1 \u03b5\u03be\u03b5\u03c1\u03c7\u03cc\u03bc\u03b5\u03bd\u03b1 \u03c4\u03b7\u03bb\u03b5\u03b3\u03c1\u03b1\u03c6\u03ae\u03bc\u03b1\u03c4\u03b1 \u03b1\u03bd\u03ac \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03bf.\n \u03a0\u03c1\u03bf\u03c4\u03b5\u03af\u03bd\u03b5\u03c4\u03b1\u03b9: 20 \u03ad\u03c9\u03c2 40", + "state_updater": "\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03ae \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03b1\u03bd\u03ac\u03b3\u03bd\u03c9\u03c3\u03b7\u03c2 \u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03ac\u03c3\u03b5\u03c9\u03bd \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03b4\u03af\u03b1\u03c5\u03bb\u03bf KNX. \u038c\u03c4\u03b1\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03bf, \u03c4\u03bf Home Assistant \u03b4\u03b5\u03bd \u03b8\u03b1 \u03b1\u03bd\u03b1\u03ba\u03c4\u03ac \u03b5\u03bd\u03b5\u03c1\u03b3\u03ac \u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2 \u03b1\u03c0\u03cc \u03c4\u03bf KNX Bus, \u03bf\u03b9 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 `sync_state` \u03b4\u03b5\u03bd \u03b8\u03b1 \u03ad\u03c7\u03bf\u03c5\u03bd \u03ba\u03b1\u03bc\u03af\u03b1 \u03b5\u03c0\u03af\u03b4\u03c1\u03b1\u03c3\u03b7." } }, "tunnel": { @@ -62,6 +114,10 @@ "port": "\u0398\u03cd\u03c1\u03b1", "route_back": "\u039b\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 Route Back / NAT", "tunneling_type": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03c3\u03ae\u03c1\u03b1\u03b3\u03b3\u03b1\u03c2 KNX" + }, + "data_description": { + "host": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 IP \u03c4\u03b7\u03c2 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2 \u03b4\u03b9\u03bf\u03c7\u03ad\u03c4\u03b5\u03c5\u03c3\u03b7\u03c2 KNX/IP.", + "port": "\u0398\u03cd\u03c1\u03b1 \u03c4\u03b7\u03c2 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2 \u03b4\u03b9\u03bf\u03c7\u03ad\u03c4\u03b5\u03c5\u03c3\u03b7\u03c2 KNX/IP." } } } diff --git a/homeassistant/components/knx/translations/en.json b/homeassistant/components/knx/translations/en.json index 538f6b6a5c6..ba073eba888 100644 --- a/homeassistant/components/knx/translations/en.json +++ b/homeassistant/components/knx/translations/en.json @@ -7,7 +7,7 @@ "error": { "cannot_connect": "Failed to connect", "file_not_found": "The specified `.knxkeys` file was not found in the path config/.storage/knx/", - "invalid_individual_address": "Value does not match pattern for KNX individual address.\n'..'", + "invalid_individual_address": "Value does not match pattern for KNX individual address.\n'area.line.device'", "invalid_ip_address": "Invalid IPv4 address.", "invalid_signature": "The password to decrypt the `.knxkeys` file is wrong." }, @@ -15,8 +15,10 @@ "manual_tunnel": { "data": { "host": "Host", + "individual_address": "Individual address for the connection", "local_ip": "Local IP of Home Assistant", "port": "Port", + "route_back": "Route Back / NAT Mode", "tunneling_type": "KNX Tunneling Type" }, "data_description": { @@ -108,7 +110,9 @@ "tunnel": { "data": { "host": "Host", + "local_ip": "Local IP (leave empty if unsure)", "port": "Port", + "route_back": "Route Back / NAT Mode", "tunneling_type": "KNX Tunneling Type" }, "data_description": { diff --git a/homeassistant/components/knx/translations/et.json b/homeassistant/components/knx/translations/et.json index e9417cdac37..c4410d490e4 100644 --- a/homeassistant/components/knx/translations/et.json +++ b/homeassistant/components/knx/translations/et.json @@ -5,29 +5,73 @@ "single_instance_allowed": "Juba seadistatud. Lubatud on ainult \u00fcks sidumine." }, "error": { - "cannot_connect": "\u00dchendamine nurjus" + "cannot_connect": "\u00dchendamine nurjus", + "file_not_found": "M\u00e4\u00e4ratud faili \".knxkeys\" ei leitud asukohas config/.storage/knx/", + "invalid_individual_address": "V\u00e4\u00e4rtus ei \u00fchti KNX-i individuaalse aadressi mustriga.\n 'area.line.device'", + "invalid_ip_address": "Kehtetu IPv4 aadress.", + "invalid_signature": "Parool faili `.knxkeys` dekr\u00fcpteerimiseks on vale." }, "step": { "manual_tunnel": { "data": { "host": "Host", "individual_address": "\u00dchenduse individuaalne aadress", - "local_ip": "Home Assistanti kohalik IP (automaatseks tuvastuseks j\u00e4ta t\u00fchjaks)", + "local_ip": "Home Assistanti kohalik IP aadress", "port": "Port", "route_back": "Marsruudi tagasitee / NAT-re\u017eiim", "tunneling_type": "KNX tunneli t\u00fc\u00fcp" }, + "data_description": { + "host": "KNX/IP tunneldusseadme IP-aadress.", + "local_ip": "Automaatse avastamise kasutamiseks j\u00e4ta t\u00fchjaks.", + "port": "KNX/IP-tunneldusseadme port." + }, "description": "Sisesta tunneldamisseadme \u00fchenduse teave." }, "routing": { "data": { - "individual_address": "Marsruutimis\u00fchenduse individuaalne aadress", - "local_ip": "Home Assistanti kohalik IP (automaatseks tuvastuseks j\u00e4ta t\u00fchjaks)", - "multicast_group": "Marsruutimiseks kasutatav multisaater\u00fchm", - "multicast_port": "Marsruutimiseks kasutatav multisaateport" + "individual_address": "Individuaalne aadress", + "local_ip": "Home Assistanti kohalik IP aadress", + "multicast_group": "Multicast grupp", + "multicast_port": "Mulicasti port" + }, + "data_description": { + "individual_address": "Home Assistantis kasutatav KNX-aadress, nt \"0.0.4\".", + "local_ip": "Automaatse avastamise kasutamiseks j\u00e4ta t\u00fchjaks." }, "description": "Konfigureeri marsruutimissuvandid." }, + "secure_knxkeys": { + "data": { + "knxkeys_filename": "`.nxkeys` faili t\u00e4ielik nimi (koos laiendiga)", + "knxkeys_password": "Parool `.knxkeys` faili dekr\u00fcpteerimiseks" + }, + "data_description": { + "knxkeys_filename": "Eeldatakse, et fail asub konfiguratsioonikataloogis kaustas \".storage/knx/\".\nHome Assistant OS-is oleks see `/config/.storage/knx/`\n N\u00e4ide: \"minu_projekt.knxkeys\".", + "knxkeys_password": "See m\u00e4\u00e4rati faili eksportimisel ETSist." + }, + "description": "Sisesta oma `.knxkeys` faili teave." + }, + "secure_manual": { + "data": { + "device_authentication": "Seadme autentimise parool", + "user_id": "Kasutaja ID", + "user_password": "Kasutaja salas\u00f5na" + }, + "data_description": { + "device_authentication": "See m\u00e4\u00e4ratakse ETSi liidese IP-paneelil.", + "user_id": "See on sageli tunneli number +1. Nii et tunnel 2 oleks kasutaja ID-ga 3.", + "user_password": "Konkreetse tunneli\u00fchenduse parool, mis on m\u00e4\u00e4ratud ETS-i tunneli paneelil \u201eAtribuudid\u201d." + }, + "description": "Sisesta IP Secure teave." + }, + "secure_tunneling": { + "description": "Vali kuidas soovid KNX/IP Secure'i seadistada.", + "menu_options": { + "secure_knxkeys": "Kasuta knxkeys fail, mis sisaldab IP Secure teavet.", + "secure_manual": "IP Secure v\u00f5tmete k\u00e4sitsi seadistamine" + } + }, "tunnel": { "data": { "gateway": "KNX tunneli \u00fchendus" @@ -48,11 +92,19 @@ "data": { "connection_type": "KNX \u00fchenduse t\u00fc\u00fcp", "individual_address": "Vaikimisi individuaalne aadress", - "local_ip": "Home Assistanti kohalik IP (sisesta 0.0.0.0 automaatseks tuvastuseks)", - "multicast_group": "Marsruutimiseks ja avastamiseks kasutatav multisaategrupp", - "multicast_port": "Marsruutimiseks ja avastamiseks kasutatav multisaateport", - "rate_limit": "Maksimaalne v\u00e4ljaminevate teavituste arv sekundis", - "state_updater": "Luba globaalselt seisundi lugemine KNX-siinilt" + "local_ip": "Home Assistanti kohalik IP aadress", + "multicast_group": "Multicast grupp", + "multicast_port": "Mulicasti port", + "rate_limit": "Teavituste m\u00e4\u00e4r", + "state_updater": "Oleku uuendaja" + }, + "data_description": { + "individual_address": "Home Assistantis kasutatav KNX-aadress, nt \"0.0.4\".", + "local_ip": "Automaatse tuvastamise jaoks kasuta `0.0.0.0.0`.", + "multicast_group": "Kasutatakse marsruutimiseks ja avastamiseks. Vaikimisi: \"224.0.23.12\"", + "multicast_port": "Kasutatakse marsruutimiseks ja avastamiseks. Vaikev\u00e4\u00e4rtus: \"3671\"", + "rate_limit": "Maksimaalne v\u00e4ljaminevate telegrammide arv sekundis.\nSoovitatav: 20 kuni 40", + "state_updater": "KNX siini lugemisolekute globaalne lubamine v\u00f5i keelamine. Kui see on keelatud, ei too Home Assistant aktiivselt olekuid KNX siinilt, olemi s\u00fcnkroonimisoleku valikudi ei m\u00f5juta." } }, "tunnel": { @@ -62,6 +114,10 @@ "port": "Port", "route_back": "Marsruudi tagasitee / NAT-re\u017eiim", "tunneling_type": "KNX tunneli t\u00fc\u00fcp" + }, + "data_description": { + "host": "KNX/IP tunneldusseadme IP-aadress.", + "port": "KNX/IP-tunneldusseadme port." } } } diff --git a/homeassistant/components/knx/translations/fr.json b/homeassistant/components/knx/translations/fr.json index 31221e900cd..c75fd76debb 100644 --- a/homeassistant/components/knx/translations/fr.json +++ b/homeassistant/components/knx/translations/fr.json @@ -5,29 +5,73 @@ "single_instance_allowed": "D\u00e9j\u00e0 configur\u00e9. Une seule configuration possible." }, "error": { - "cannot_connect": "\u00c9chec de connexion" + "cannot_connect": "\u00c9chec de connexion", + "file_not_found": "Le fichier `.knxkeys` sp\u00e9cifi\u00e9 n'a pas \u00e9t\u00e9 trouv\u00e9 dans config/.storage/knx/", + "invalid_individual_address": "La valeur de l'adresse individuelle KNX ne correspond pas au mod\u00e8le.\n'area.line.device'", + "invalid_ip_address": "Adresse IPv4 non valide.", + "invalid_signature": "Le mot de passe pour d\u00e9chiffrer le fichier `.knxkeys` est erron\u00e9." }, "step": { "manual_tunnel": { "data": { "host": "H\u00f4te", "individual_address": "Adresse individuelle pour la connexion", - "local_ip": "IP locale (laisser vide en cas de doute)", + "local_ip": "IP locale de Home Assistant", "port": "Port", "route_back": "Retour/Mode NAT", "tunneling_type": "Type de tunnel KNX" }, + "data_description": { + "host": "Adresse IP de l'appareil de tunnel KNX/IP.", + "local_ip": "Laissez le champ vide pour utiliser la d\u00e9couverte automatique.", + "port": "Port de l'appareil de tunnel KNX/IP." + }, "description": "Veuillez saisir les informations de connexion de votre appareil de cr\u00e9ation de tunnel." }, "routing": { "data": { - "individual_address": "Adresse individuelle pour la connexion de routage", - "local_ip": "IP locale (laisser vide en cas de doute)", - "multicast_group": "Le groupe multicast utilis\u00e9 pour le routage", - "multicast_port": "Le port multicast utilis\u00e9 pour le routage" + "individual_address": "Adresse individuelle", + "local_ip": "IP locale de Home Assistant", + "multicast_group": "Groupe multicast", + "multicast_port": "Port multicast" + }, + "data_description": { + "individual_address": "Adresse KNX que Home Assistant doit utiliser, par exemple `0.0.4`.", + "local_ip": "Laissez le champ vide pour utiliser la d\u00e9couverte automatique." }, "description": "Veuillez configurer les options de routage." }, + "secure_knxkeys": { + "data": { + "knxkeys_filename": "Le nom de votre fichier `.knxkeys` (extension incluse)", + "knxkeys_password": "Le mot de passe pour d\u00e9chiffrer le fichier `.knxkeys`" + }, + "data_description": { + "knxkeys_filename": "Le fichier devrait se trouver dans votre r\u00e9pertoire de configuration dans `.storage/knx/`.\nSous Home Assistant OS, il s'agirait de `/config/.storage/knx/`\nPar exemple\u00a0: `my_project.knxkeys`", + "knxkeys_password": "D\u00e9fini lors de l'exportation du fichier depuis ETS." + }, + "description": "Veuillez saisir les informations relatives \u00e0 votre fichier `.knxkeys`." + }, + "secure_manual": { + "data": { + "device_authentication": "Mot de passe d'authentification de l'appareil", + "user_id": "ID de l'utilisateur", + "user_password": "Mot de passe de l'utilisateur" + }, + "data_description": { + "device_authentication": "D\u00e9fini dans le panneau \u00ab\u00a0IP\u00a0\u00bb de l'interface dans ETS.", + "user_id": "G\u00e9n\u00e9ralement le num\u00e9ro du tunnel +\u00a01. Par exemple, \u00ab\u00a0Tunnel 2\u00a0\u00bb aurait l'ID utilisateur \u00ab\u00a03\u00a0\u00bb.", + "user_password": "Mot de passe pour la connexion de tunnel sp\u00e9cifique, d\u00e9fini dans le panneau \u00ab\u00a0Propri\u00e9t\u00e9s\u00a0\u00bb du tunnel dans ETS." + }, + "description": "Veuillez saisir vos informations de s\u00e9curit\u00e9 IP." + }, + "secure_tunneling": { + "description": "S\u00e9lectionnez la mani\u00e8re dont vous souhaitez configurer la s\u00e9curit\u00e9 IP de KNX.", + "menu_options": { + "secure_knxkeys": "Utiliser un fichier `.knxkeys` contenant les cl\u00e9s de s\u00e9curit\u00e9 IP", + "secure_manual": "Configurer manuellement les cl\u00e9s de s\u00e9curit\u00e9 IP" + } + }, "tunnel": { "data": { "gateway": "Connexion tunnel KNX" @@ -48,11 +92,19 @@ "data": { "connection_type": "Type de connexion KNX", "individual_address": "Adresse individuelle par d\u00e9faut", - "local_ip": "IP locale de Home Assistant (utilisez 0.0.0.0 pour la d\u00e9tection automatique)", - "multicast_group": "Groupe de multidiffusion utilis\u00e9 pour le routage et la d\u00e9couverte", - "multicast_port": "Port de multidiffusion utilis\u00e9 pour le routage et la d\u00e9couverte", - "rate_limit": "Nombre maximal de t\u00e9l\u00e9grammes sortants par seconde", - "state_updater": "Activer globalement la lecture des \u00e9tats depuis le bus KNX" + "local_ip": "IP locale de Home Assistant", + "multicast_group": "Groupe multicast", + "multicast_port": "Port multicast", + "rate_limit": "Limite d'envoi", + "state_updater": "Mises \u00e0 jour d'\u00e9tat" + }, + "data_description": { + "individual_address": "Adresse KNX que Home Assistant doit utiliser, par exemple `0.0.4`.", + "local_ip": "Utilisez `0.0.0.0` pour la d\u00e9couverte automatique.", + "multicast_group": "Utilis\u00e9 pour le routage et la d\u00e9couverte. Valeur par d\u00e9faut\u00a0: `224.0.23.12`", + "multicast_port": "Utilis\u00e9 pour le routage et la d\u00e9couverte. Valeur par d\u00e9faut\u00a0: `3671`", + "rate_limit": "Nombre maximal de t\u00e9l\u00e9grammes sortants par seconde.\nValeur recommand\u00e9e\u00a0: entre 20 et 40", + "state_updater": "Active ou d\u00e9sactive globalement la lecture des \u00e9tats depuis le bus KNX. Lorsqu'elle est d\u00e9sactiv\u00e9e, Home Assistant ne r\u00e9cup\u00e8re pas activement les \u00e9tats depuis le bus KNX et les options d'entit\u00e9 `sync_state` n'ont aucun effet." } }, "tunnel": { @@ -62,6 +114,10 @@ "port": "Port", "route_back": "Retour/Mode NAT", "tunneling_type": "Type de tunnel KNX" + }, + "data_description": { + "host": "Adresse IP de l'appareil de tunnel KNX/IP.", + "port": "Port de l'appareil de tunnel KNX/IP." } } } diff --git a/homeassistant/components/knx/translations/hu.json b/homeassistant/components/knx/translations/hu.json index 13bd4650378..02b8b0a0465 100644 --- a/homeassistant/components/knx/translations/hu.json +++ b/homeassistant/components/knx/translations/hu.json @@ -5,29 +5,73 @@ "single_instance_allowed": "M\u00e1r konfigur\u00e1lva van. Csak egy konfigur\u00e1ci\u00f3 lehets\u00e9ges." }, "error": { - "cannot_connect": "Sikertelen csatlakoz\u00e1s" + "cannot_connect": "Sikertelen csatlakoz\u00e1s", + "file_not_found": "A megadott '.knxkeys' f\u00e1jl nem tal\u00e1lhat\u00f3 a config/.storage/knx/ el\u00e9r\u00e9si \u00fatvonalon.", + "invalid_individual_address": "Az \u00e9rt\u00e9k nem felel meg a KNX egyedi c\u00edm mint\u00e1j\u00e1nak.\n'area.line.device'", + "invalid_ip_address": "\u00c9rv\u00e9nytelen IPv4-c\u00edm.", + "invalid_signature": "A '.knxkeys' f\u00e1jl visszafejt\u00e9s\u00e9hez haszn\u00e1lt jelsz\u00f3 helytelen." }, "step": { "manual_tunnel": { "data": { "host": "C\u00edm", "individual_address": "A kapcsolat egy\u00e9ni c\u00edme", - "local_ip": "Helyi IP c\u00edm (hagyja \u00fcresen, ha nem biztos benne)", + "local_ip": "Home Assistant lok\u00e1lis IP c\u00edme", "port": "Port", "route_back": "\u00datvonal (route) vissza / NAT m\u00f3d", "tunneling_type": "KNX alag\u00fat t\u00edpusa" }, + "data_description": { + "host": "A KNX/IP tunnel eszk\u00f6z IP-c\u00edme.", + "local_ip": "Az automatikus felder\u00edt\u00e9s haszn\u00e1lat\u00e1hoz hagyja \u00fcresen.", + "port": "A KNX/IP tunnel eszk\u00f6z portsz\u00e1ma." + }, "description": "Adja meg az alag\u00fatkezel\u0151 (tunneling) eszk\u00f6z csatlakoz\u00e1si adatait." }, "routing": { "data": { - "individual_address": "Az \u00fatv\u00e1laszt\u00e1si (routing) kapcsolat egy\u00e9ni c\u00edme", - "local_ip": "Helyi IP c\u00edm (hagyja \u00fcresen, ha nem biztos benne)", - "multicast_group": "Az \u00fatv\u00e1laszt\u00e1shoz haszn\u00e1lt multicast csoport", - "multicast_port": "Az \u00fatv\u00e1laszt\u00e1shoz haszn\u00e1lt multicast portsz\u00e1m" + "individual_address": "Egy\u00e9ni c\u00edm", + "local_ip": "Home Assistant lok\u00e1lis IP c\u00edme", + "multicast_group": "Multicast csoport", + "multicast_port": "Multicast portsz\u00e1m" + }, + "data_description": { + "individual_address": "A Home Assistant \u00e1ltal haszn\u00e1land\u00f3 KNX-c\u00edm, pl. \"0.0.4\".", + "local_ip": "Az automatikus felder\u00edt\u00e9s haszn\u00e1lat\u00e1hoz hagyja \u00fcresen." }, "description": "K\u00e9rem, konfigur\u00e1lja az \u00fatv\u00e1laszt\u00e1si (routing) be\u00e1ll\u00edt\u00e1sokat." }, + "secure_knxkeys": { + "data": { + "knxkeys_filename": "A '.knxkeys' f\u00e1jl teljes neve (kiterjeszt\u00e9ssel)", + "knxkeys_password": "A '.knxkeys' f\u00e1jl visszafejt\u00e9s\u00e9hez sz\u00fcks\u00e9ges jelsz\u00f3" + }, + "data_description": { + "knxkeys_filename": "A f\u00e1jl a `.storage/knx/` konfigur\u00e1ci\u00f3s k\u00f6nyvt\u00e1r\u00e1ban helyezend\u0151.\nHome Assistant oper\u00e1ci\u00f3s rendszer eset\u00e9n ez a k\u00f6vetkez\u0151 lenne: `/config/.storage/knx/`\nP\u00e9lda: \"my_project.knxkeys\".", + "knxkeys_password": "Ez a be\u00e1ll\u00edt\u00e1s a f\u00e1jl ETS-b\u0151l t\u00f6rt\u00e9n\u0151 export\u00e1l\u00e1sakor t\u00f6rt\u00e9nt." + }, + "description": "K\u00e9rj\u00fck, adja meg a '.knxkeys' f\u00e1jl adatait." + }, + "secure_manual": { + "data": { + "device_authentication": "Eszk\u00f6z hiteles\u00edt\u00e9si jelsz\u00f3", + "user_id": "Felhaszn\u00e1l\u00f3i azonos\u00edt\u00f3", + "user_password": "Felhaszn\u00e1l\u00f3i jelsz\u00f3" + }, + "data_description": { + "device_authentication": "Ezt az ETS-ben az interf\u00e9sz \"IP\" panelj\u00e9n kell be\u00e1ll\u00edtani.", + "user_id": "Ez gyakran a tunnel sz\u00e1ma +1. Teh\u00e1t a \"Tunnel 2\" felhaszn\u00e1l\u00f3i azonos\u00edt\u00f3ja \"3\".", + "user_password": "Jelsz\u00f3 az adott tunnelhez, amely a tunnel \u201eProperties\u201d panelj\u00e9n van be\u00e1ll\u00edtva az ETS-ben." + }, + "description": "K\u00e9rj\u00fck, adja meg az IP secure adatokat." + }, + "secure_tunneling": { + "description": "V\u00e1lassza ki, hogyan szeretn\u00e9 konfigur\u00e1lni az KNX/IP secure-t.", + "menu_options": { + "secure_knxkeys": "IP secure kulcsokat tartalmaz\u00f3 '.knxkeys' f\u00e1jl haszn\u00e1lata", + "secure_manual": "IP secure kulcsok manu\u00e1lis be\u00e1ll\u00edt\u00e1sa" + } + }, "tunnel": { "data": { "gateway": "KNX alag\u00fat (tunnel) kapcsolat" @@ -48,11 +92,19 @@ "data": { "connection_type": "KNX csatlakoz\u00e1s t\u00edpusa", "individual_address": "Alap\u00e9rtelmezett egy\u00e9ni c\u00edm", - "local_ip": "Helyi IP c\u00edm (hagyja \u00fcresen, ha nem biztos benne)", - "multicast_group": "\u00datv\u00e1laszt\u00e1shoz \u00e9s felder\u00edt\u00e9shez haszn\u00e1lt multicast csoport", - "multicast_port": "\u00datv\u00e1laszt\u00e1shoz \u00e9s felder\u00edt\u00e9shez haszn\u00e1lt multicast portsz\u00e1m\n", - "rate_limit": "Maxim\u00e1lis kimen\u0151 \u00fczenet darabsz\u00e1m m\u00e1sodpercenk\u00e9nt", - "state_updater": "Glob\u00e1lisan enged\u00e9lyezi az \u00e1llapotok olvas\u00e1s\u00e1t a KNX buszr\u00f3l." + "local_ip": "Home Assistant lok\u00e1lis IP c\u00edme", + "multicast_group": "Multicast csoport", + "multicast_port": "Multicast portsz\u00e1m", + "rate_limit": "Lek\u00e9r\u00e9si korl\u00e1toz\u00e1s", + "state_updater": "\u00c1llapot friss\u00edt\u0151" + }, + "data_description": { + "individual_address": "A Home Assistant \u00e1ltal haszn\u00e1land\u00f3 KNX-c\u00edm, pl. \"0.0.4\".", + "local_ip": "Haszn\u00e1lja a `0.0.0.0` c\u00edmet az automatikus felder\u00edt\u00e9shez.", + "multicast_group": "\u00datv\u00e1laszt\u00e1shoz \u00e9s felder\u00edt\u00e9shez haszn\u00e1latos. Alap\u00e9rtelmezett: `224.0.23.12`.", + "multicast_port": "\u00datv\u00e1laszt\u00e1shoz \u00e9s felder\u00edt\u00e9shez haszn\u00e1latos. Alap\u00e9rtelmezett: `3671`", + "rate_limit": "Maxim\u00e1lis kimen\u0151 \u00fczenet m\u00e1sodpercenk\u00e9nt.\nAj\u00e1nlott: 20 \u00e9s 40 k\u00f6z\u00f6tt", + "state_updater": "Glob\u00e1lisan enged\u00e9lyezze vagy tiltsa le az olvas\u00e1si \u00e1llapotokat a KNX-buszr\u00f3l. Ha le van tiltva, a Home Assistant nem fogja akt\u00edvan lek\u00e9rni az \u00e1llapotokat a KNX-buszr\u00f3l, a \"sync_state\" entit\u00e1sopci\u00f3knak nincs hat\u00e1sa." } }, "tunnel": { @@ -62,6 +114,10 @@ "port": "Port", "route_back": "\u00datvonal (route) vissza / NAT m\u00f3d", "tunneling_type": "KNX alag\u00fat t\u00edpusa" + }, + "data_description": { + "host": "A KNX/IP tunnel eszk\u00f6z IP-c\u00edme.", + "port": "A KNX/IP tunnel eszk\u00f6z portsz\u00e1ma." } } } diff --git a/homeassistant/components/knx/translations/id.json b/homeassistant/components/knx/translations/id.json index 1cdb614a3cc..92d812c1b1b 100644 --- a/homeassistant/components/knx/translations/id.json +++ b/homeassistant/components/knx/translations/id.json @@ -5,29 +5,73 @@ "single_instance_allowed": "Sudah dikonfigurasi. Hanya satu konfigurasi yang diizinkan." }, "error": { - "cannot_connect": "Gagal terhubung" + "cannot_connect": "Gagal terhubung", + "file_not_found": "File `.knxkeys` yang ditentukan tidak ditemukan di jalur config/.storage/knx/", + "invalid_individual_address": "Nilai tidak cocok dengan pola untuk alamat individual KNX.\n'area.line.device'", + "invalid_ip_address": "Alamat IPv4 tidak valid", + "invalid_signature": "Kata sandi untuk mendekripsi file `.knxkeys` salah." }, "step": { "manual_tunnel": { "data": { "host": "Host", "individual_address": "Alamat individu untuk koneksi", - "local_ip": "IP lokal Home Assistant (kosongkan jika tidak yakin)", + "local_ip": "IP lokal Home Assistant", "port": "Port", "route_back": "Dirutekan Kembali/Mode NAT", "tunneling_type": "Jenis Tunnel KNX" }, + "data_description": { + "host": "Alamat IP perangkat tunneling KNX/IP.", + "local_ip": "Kosongkan untuk menggunakan penemuan otomatis.", + "port": "Port perangkat tunneling KNX/IP." + }, "description": "Masukkan informasi koneksi untuk perangkat tunneling Anda." }, "routing": { "data": { - "individual_address": "Alamat individu untuk koneksi routing", - "local_ip": "IP lokal Home Assistant (kosongkan jika tidak yakin)", - "multicast_group": "Grup multicast yang digunakan untuk routing", - "multicast_port": "Port multicast yang digunakan untuk routing" + "individual_address": "Alamat individual", + "local_ip": "IP lokal Home Assistant", + "multicast_group": "Grup multicast", + "multicast_port": "Port multicast" + }, + "data_description": { + "individual_address": "Alamat KNX yang akan digunakan oleh Home Assistant, misalnya `0.0.4`", + "local_ip": "Kosongkan untuk menggunakan penemuan otomatis." }, "description": "Konfigurasikan opsi routing." }, + "secure_knxkeys": { + "data": { + "knxkeys_filename": "Nama file '.knxkeys' Anda (termasuk ekstensi)", + "knxkeys_password": "Kata sandi untuk mendekripsi file `.knxkeys`" + }, + "data_description": { + "knxkeys_filename": "File diharapkan dapat ditemukan di direktori konfigurasi Anda di `.storage/knx/`.\nDi Home Assistant OS ini akan menjadi `/config/.storage/knx/`\nContoh: `proyek_saya.knxkeys`", + "knxkeys_password": "Ini disetel saat mengekspor file dari ETS." + }, + "description": "Masukkan informasi untuk file `.knxkeys` Anda." + }, + "secure_manual": { + "data": { + "device_authentication": "Kata sandi autentikasi perangkat", + "user_id": "ID pengguna", + "user_password": "Kata sandi pengguna" + }, + "data_description": { + "device_authentication": "Ini diatur dalam panel 'IP' dalam antarmuka di ETS.", + "user_id": "Ini sering kali merupakan tunnel nomor +1. Jadi 'Tunnel 2' akan memiliki User-ID '3'.", + "user_password": "Kata sandi untuk koneksi tunnel tertentu yang diatur di panel 'Properties' tunnel di ETS." + }, + "description": "Masukkan informasi IP aman Anda." + }, + "secure_tunneling": { + "description": "Pilih cara Anda ingin mengonfigurasi KNX/IP Secure.", + "menu_options": { + "secure_knxkeys": "Gunakan file `.knxkeys` yang berisi kunci aman IP", + "secure_manual": "Konfigurasikan kunci aman IP secara manual" + } + }, "tunnel": { "data": { "gateway": "Koneksi Tunnel KNX" @@ -48,11 +92,19 @@ "data": { "connection_type": "Jenis Koneksi KNX", "individual_address": "Alamat individu default", - "local_ip": "IP lokal Home Assistant (gunakan 0.0.0.0 untuk deteksi otomatis)", - "multicast_group": "Grup multicast yang digunakan untuk routing dan penemuan", - "multicast_port": "Port multicast yang digunakan untuk routing dan penemuan", - "rate_limit": "Jumlah maksimal telegram keluar per detik", - "state_updater": "Aktifkan status membaca secara global dari KNX Bus" + "local_ip": "IP lokal Home Assistant", + "multicast_group": "Grup multicast", + "multicast_port": "Port multicast", + "rate_limit": "Batas data", + "state_updater": "Pembaruan status" + }, + "data_description": { + "individual_address": "Alamat KNX yang akan digunakan oleh Home Assistant, misalnya `0.0.4`", + "local_ip": "Gunakan `0.0.0.0` untuk penemuan otomatis.", + "multicast_group": "Digunakan untuk perutean dan penemuan. Bawaan: `224.0.23.12`", + "multicast_port": "Digunakan untuk perutean dan penemuan. Bawaan: `3671`", + "rate_limit": "Telegram keluar maksimum per detik.\nDirekomendasikan: 20 hingga 40", + "state_updater": "Secara global mengaktifkan atau menonaktifkan status pembacaan dari KNX Bus. Saat dinonaktifkan, Home Assistant tidak akan secara aktif mengambil status dari KNX Bus, opsi entitas 'sync_state' tidak akan berpengaruh." } }, "tunnel": { @@ -62,6 +114,10 @@ "port": "Port", "route_back": "Dirutekan Kembali/Mode NAT", "tunneling_type": "Jenis Tunnel KNX" + }, + "data_description": { + "host": "Alamat IP perangkat tunneling KNX/IP.", + "port": "Port perangkat tunneling KNX/IP." } } } diff --git a/homeassistant/components/knx/translations/it.json b/homeassistant/components/knx/translations/it.json index ad4e9f34610..c05bdba3944 100644 --- a/homeassistant/components/knx/translations/it.json +++ b/homeassistant/components/knx/translations/it.json @@ -5,29 +5,73 @@ "single_instance_allowed": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione." }, "error": { - "cannot_connect": "Impossibile connettersi" + "cannot_connect": "Impossibile connettersi", + "file_not_found": "Il file `.knxkeys` specificato non \u00e8 stato trovato nel percorso config/.storage/knx/", + "invalid_individual_address": "Il valore non corrisponde al modello per l'indirizzo individuale KNX. 'area.line.device'", + "invalid_ip_address": "Indirizzo IPv4 non valido.", + "invalid_signature": "La password per decifrare il file `.knxkeys` \u00e8 errata." }, "step": { "manual_tunnel": { "data": { "host": "Host", "individual_address": "Indirizzo individuale per la connessione", - "local_ip": "IP locale di Home Assistant (lascia vuoto per il rilevamento automatico)", + "local_ip": "IP locale di Home Assistant", "port": "Porta", "route_back": "Torna indietro / Modalit\u00e0 NAT", "tunneling_type": "Tipo tunnel KNX" }, + "data_description": { + "host": "Indirizzo IP del dispositivo di tunneling KNX/IP.", + "local_ip": "Lascia vuoto per usare il rilevamento automatico.", + "port": "Porta del dispositivo di tunneling KNX/IP." + }, "description": "Inserisci le informazioni di connessione del tuo dispositivo di tunneling." }, "routing": { "data": { - "individual_address": "Indirizzo individuale per la connessione di routing", - "local_ip": "IP locale di Home Assistant (lascia vuoto per il rilevamento automatico)", - "multicast_group": "Il gruppo multicast utilizzato per il routing", - "multicast_port": "La porta multicast usata per il routing" + "individual_address": "Indirizzo individuale", + "local_ip": "IP locale di Home Assistant", + "multicast_group": "Gruppo multicast", + "multicast_port": "Porta multicast" + }, + "data_description": { + "individual_address": "Indirizzo KNX che deve essere utilizzato da Home Assistant, ad es. `0.0.4`", + "local_ip": "Lasciare vuoto per usare il rilevamento automatico." }, "description": "Configura le opzioni di instradamento." }, + "secure_knxkeys": { + "data": { + "knxkeys_filename": "Il nome del file `.knxkeys` (inclusa l'estensione)", + "knxkeys_password": "La password per decifrare il file `.knxkeys`" + }, + "data_description": { + "knxkeys_filename": "Il file dovrebbe essere trovato nella tua cartella di configurazione in `.storage/knx/`.\n Nel sistema operativo Home Assistant questo sarebbe `/config/.storage/knx/`\n Esempio: `mio_progetto.knxkeys`", + "knxkeys_password": "Questo \u00e8 stato impostato durante l'esportazione del file da ETS." + }, + "description": "Inserisci le informazioni per il tuo file `.knxkeys`." + }, + "secure_manual": { + "data": { + "device_authentication": "Password di autenticazione del dispositivo", + "user_id": "ID utente", + "user_password": "Password utente" + }, + "data_description": { + "device_authentication": "Questo \u00e8 impostato nel pannello 'IP' dell'interfaccia in ETS.", + "user_id": "Questo \u00e8 spesso il tunnel numero +1. Quindi \"Tunnel 2\" avrebbe l'ID utente \"3\".", + "user_password": "Password per la connessione specifica del tunnel impostata nel pannello 'Propriet\u00e0' del tunnel in ETS." + }, + "description": "Inserisci le tue informazioni di sicurezza IP." + }, + "secure_tunneling": { + "description": "Seleziona come vuoi configurare KNX/IP Secure.", + "menu_options": { + "secure_knxkeys": "Utilizza un file `.knxkeys` contenente chiavi di sicurezza IP", + "secure_manual": "Configura manualmente le chiavi di sicurezza IP" + } + }, "tunnel": { "data": { "gateway": "Connessione tunnel KNX" @@ -48,11 +92,19 @@ "data": { "connection_type": "Tipo di connessione KNX", "individual_address": "Indirizzo individuale predefinito", - "local_ip": "IP locale di Home Assistant (usare 0.0.0.0 per il rilevamento automatico)", - "multicast_group": "Gruppo multicast utilizzato per il routing e il rilevamento", - "multicast_port": "Porta multicast utilizzata per il routing e il rilevamento", - "rate_limit": "Numero massimo di telegrammi in uscita al secondo", - "state_updater": "Abilita globalmente la lettura degli stati dal bus KNX" + "local_ip": "IP locale di Home Assistant", + "multicast_group": "Gruppo multicast", + "multicast_port": "Porta multicast", + "rate_limit": "Limite di tariffa", + "state_updater": "Aggiornatore di stato" + }, + "data_description": { + "individual_address": "Indirizzo KNX che deve essere utilizzato da Home Assistant, ad es. `0.0.4`", + "local_ip": "Usa `0.0.0.0` per il rilevamento automatico.", + "multicast_group": "Utilizzato per l'instradamento e il rilevamento. Predefinito: `224.0.23.12`", + "multicast_port": "Utilizzato per l'instradamento e il rilevamento. Predefinito: `3671`", + "rate_limit": "Numero massimo di telegrammi in uscita al secondo.\n Consigliato: da 20 a 40", + "state_updater": "Abilita o disabilita globalmente gli stati di lettura dal bus KNX. Se disabilitato, Home Assistant non recuperer\u00e0 attivamente gli stati dal bus KNX, le opzioni dell'entit\u00e0 `sync_state` non avranno alcun effetto." } }, "tunnel": { @@ -62,6 +114,10 @@ "port": "Porta", "route_back": "Torna indietro / Modalit\u00e0 NAT", "tunneling_type": "Tipo tunnel KNX" + }, + "data_description": { + "host": "Indirizzo IP del dispositivo di tunneling KNX/IP.", + "port": "Porta del dispositivo di tunneling KNX/IP." } } } diff --git a/homeassistant/components/knx/translations/ja.json b/homeassistant/components/knx/translations/ja.json index a4744a41a2c..52eed8780b8 100644 --- a/homeassistant/components/knx/translations/ja.json +++ b/homeassistant/components/knx/translations/ja.json @@ -5,7 +5,11 @@ "single_instance_allowed": "\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u5358\u4e00\u306e\u8a2d\u5b9a\u3057\u304b\u3067\u304d\u307e\u305b\u3093\u3002" }, "error": { - "cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f" + "cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f", + "file_not_found": "\u6307\u5b9a\u3055\u308c\u305f'.knxkeys'\u30d5\u30a1\u30a4\u30eb\u304c\u3001\u30d1\u30b9: config/.storage/knx/ \u306b\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f", + "invalid_individual_address": "\u5024\u304cKNX\u500b\u5225\u30a2\u30c9\u30ec\u30b9\u306e\u30d1\u30bf\u30fc\u30f3\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002\n'area.line.device'", + "invalid_ip_address": "IPv4\u30a2\u30c9\u30ec\u30b9\u304c\u7121\u52b9\u3067\u3059\u3002", + "invalid_signature": "'.knxkeys'\u30d5\u30a1\u30a4\u30eb\u3092\u5fa9\u53f7\u5316\u3059\u308b\u305f\u3081\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u9593\u9055\u3063\u3066\u3044\u307e\u3059\u3002" }, "step": { "manual_tunnel": { @@ -17,6 +21,11 @@ "route_back": "\u30eb\u30fc\u30c8\u30d0\u30c3\u30af / NAT\u30e2\u30fc\u30c9", "tunneling_type": "KNX\u30c8\u30f3\u30cd\u30ea\u30f3\u30b0\u30bf\u30a4\u30d7" }, + "data_description": { + "host": "KNX/IP\u30c8\u30f3\u30cd\u30ea\u30f3\u30b0\u30c7\u30d0\u30a4\u30b9\u306eIP\u30a2\u30c9\u30ec\u30b9\u3002", + "local_ip": "\u81ea\u52d5\u691c\u51fa\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u7a7a\u767d\u306e\u307e\u307e\u306b\u3057\u307e\u3059\u3002", + "port": "KNX/IP\u30c8\u30f3\u30cd\u30ea\u30f3\u30b0\u30c7\u30d0\u30a4\u30b9\u306e\u30dd\u30fc\u30c8\u3002" + }, "description": "\u30c8\u30f3\u30cd\u30ea\u30f3\u30b0\u30c7\u30d0\u30a4\u30b9\u306e\u63a5\u7d9a\u60c5\u5831\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002" }, "routing": { @@ -26,8 +35,43 @@ "multicast_group": "\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306b\u4f7f\u7528\u3059\u308b\u30de\u30eb\u30c1\u30ad\u30e3\u30b9\u30c8\u30b0\u30eb\u30fc\u30d7", "multicast_port": "\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306b\u4f7f\u7528\u3059\u308b\u30de\u30eb\u30c1\u30ad\u30e3\u30b9\u30c8\u30dd\u30fc\u30c8" }, + "data_description": { + "individual_address": "Home Assistant\u304c\u4f7f\u7528\u3059\u308bKNX\u30a2\u30c9\u30ec\u30b9\u3001\u4f8b. `0.0.4`", + "local_ip": "\u81ea\u52d5\u691c\u51fa\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u7a7a\u767d\u306e\u307e\u307e\u306b\u3057\u307e\u3059\u3002" + }, "description": "\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002" }, + "secure_knxkeys": { + "data": { + "knxkeys_filename": "'.knxkeys'\u30d5\u30a1\u30a4\u30eb\u306e\u30d5\u30a1\u30a4\u30eb\u540d(\u62e1\u5f35\u5b50\u3092\u542b\u3080)", + "knxkeys_password": "'.knxkeys'\u30d5\u30a1\u30a4\u30eb\u3092\u5fa9\u53f7\u5316\u3059\u308b\u305f\u3081\u306e\u30d1\u30b9\u30ef\u30fc\u30c9" + }, + "data_description": { + "knxkeys_filename": "\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001config\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e `.storage/knx/` \u306b\u3042\u308b\u306f\u305a\u3067\u3059\u3002\nHome Assistant OS\u306e\u5834\u5408\u3001\u3053\u308c\u306f\u3001`/config/.storage/knx/` \u306b\u306a\u308a\u307e\u3059\n\u4f8b: `my_project.knxkeys`", + "knxkeys_password": "\u3053\u308c\u306f\u3001ETS\u304b\u3089\u30d5\u30a1\u30a4\u30eb\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u3068\u304d\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002" + }, + "description": "'.knxkeys'\u30d5\u30a1\u30a4\u30eb\u306e\u60c5\u5831\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002" + }, + "secure_manual": { + "data": { + "device_authentication": "\u30c7\u30d0\u30a4\u30b9\u8a8d\u8a3c\u30d1\u30b9\u30ef\u30fc\u30c9", + "user_id": "\u30e6\u30fc\u30b6\u30fcID", + "user_password": "\u30e6\u30fc\u30b6\u30fc\u30d1\u30b9\u30ef\u30fc\u30c9" + }, + "data_description": { + "device_authentication": "\u3053\u308c\u306f\u3001ETS\u306e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e 'IP' \u30d1\u30cd\u30eb\u3067\u8a2d\u5b9a\u3057\u307e\u3059\u3002", + "user_id": "\u591a\u304f\u306e\u5834\u5408\u3001\u3053\u308c\u306f\u30c8\u30f3\u30cd\u30eb\u756a\u53f7+1\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001 '\u30c8\u30f3\u30cd\u30eb2' \u306e\u30e6\u30fc\u30b6\u30fcID\u306f\u3001'3 '\u306b\u306a\u308a\u307e\u3059\u3002", + "user_password": "ETS\u306e\u30c8\u30f3\u30cd\u30eb\u306e\u3001'\u30d7\u30ed\u30d1\u30c6\u30a3' \u30d1\u30cd\u30eb\u3067\u8a2d\u5b9a\u3055\u308c\u305f\u7279\u5b9a\u306e\u30c8\u30f3\u30cd\u30eb\u63a5\u7d9a\u7528\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3002" + }, + "description": "IP\u30bb\u30ad\u30e5\u30a2\u60c5\u5831\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002" + }, + "secure_tunneling": { + "description": "IP\u30bb\u30ad\u30e5\u30a2\u306e\u8a2d\u5b9a\u65b9\u6cd5\u3092\u9078\u629e\u3057\u307e\u3059\u3002", + "menu_options": { + "secure_knxkeys": "IP\u30bb\u30ad\u30e5\u30a2\u60c5\u5831\u3092\u542b\u3080knxkeys\u30d5\u30a1\u30a4\u30eb\u3092\u8a2d\u5b9a\u3057\u307e\u3059", + "secure_manual": "IP\u30bb\u30ad\u30e5\u30a2\u3092\u624b\u52d5\u3067\u8a2d\u5b9a\u3059\u308b" + } + }, "tunnel": { "data": { "gateway": "KNX\u30c8\u30f3\u30cd\u30eb\u63a5\u7d9a" @@ -53,6 +97,14 @@ "multicast_port": "\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u691c\u51fa(discovery)\u306b\u4f7f\u7528\u3055\u308c\u308b\u30de\u30eb\u30c1\u30ad\u30e3\u30b9\u30c8\u30dd\u30fc\u30c8", "rate_limit": "1 \u79d2\u3042\u305f\u308a\u306e\u6700\u5927\u9001\u4fe1\u96fb\u5831(telegrams )\u6570", "state_updater": "KNX\u30d0\u30b9\u304b\u3089\u306e\u8aad\u307f\u53d6\u308a\u72b6\u614b\u3092\u30b0\u30ed\u30fc\u30d0\u30eb\u306b\u6709\u52b9\u306b\u3059\u308b" + }, + "data_description": { + "individual_address": "Home Assistant\u304c\u4f7f\u7528\u3059\u308bKNX\u30a2\u30c9\u30ec\u30b9\u3001\u4f8b. `0.0.4`", + "local_ip": "\u81ea\u52d5\u691c\u51fa\u306b\u306f\u3001`0.0.0.0` \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002", + "multicast_group": "\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u691c\u51fa\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8t: `224.0.23.12`", + "multicast_port": "\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u691c\u51fa\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8: `3671`", + "rate_limit": "1\u79d2\u3042\u305f\u308a\u306e\u6700\u5927\u9001\u4fe1\u30c6\u30ec\u30b0\u30e9\u30e0\u3002\n\u63a8\u5968: 20\uff5e40", + "state_updater": "KNX Bus\u304b\u3089\u306e\u72b6\u614b\u306e\u8aad\u307f\u53d6\u308a\u3092\u30b0\u30ed\u30fc\u30d0\u30eb\u306b\u6709\u52b9\u307e\u305f\u306f\u7121\u52b9\u306b\u3057\u307e\u3059\u3002\u7121\u52b9\u306b\u3059\u308b\u3068\u3001Home Assistant\u306f\u3001KNX Bus\u304b\u3089\u30a2\u30af\u30c6\u30a3\u30d6\u306b\u72b6\u614b\u3092\u53d6\u5f97\u3057\u306a\u304f\u306a\u308b\u306e\u3067\u3001`sync_state`\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u610f\u5473\u3092\u6301\u305f\u306a\u304f\u306a\u308a\u307e\u3059\u3002" } }, "tunnel": { @@ -62,6 +114,10 @@ "port": "\u30dd\u30fc\u30c8", "route_back": "\u30eb\u30fc\u30c8\u30d0\u30c3\u30af / NAT\u30e2\u30fc\u30c9", "tunneling_type": "KNX\u30c8\u30f3\u30cd\u30ea\u30f3\u30b0\u30bf\u30a4\u30d7" + }, + "data_description": { + "host": "KNX/IP\u30c8\u30f3\u30cd\u30ea\u30f3\u30b0\u30c7\u30d0\u30a4\u30b9\u306eIP\u30a2\u30c9\u30ec\u30b9\u3002", + "port": "KNX/IP\u30c8\u30f3\u30cd\u30ea\u30f3\u30b0\u30c7\u30d0\u30a4\u30b9\u306e\u30dd\u30fc\u30c8\u3002" } } } diff --git a/homeassistant/components/knx/translations/nl.json b/homeassistant/components/knx/translations/nl.json index 9b68bd02d2f..f40b9d7729f 100644 --- a/homeassistant/components/knx/translations/nl.json +++ b/homeassistant/components/knx/translations/nl.json @@ -5,29 +5,73 @@ "single_instance_allowed": "Al geconfigureerd. Slechts een enkele configuratie mogelijk." }, "error": { - "cannot_connect": "Kan geen verbinding maken" + "cannot_connect": "Kan geen verbinding maken", + "file_not_found": "Het opgegeven `.knxkeys`-bestand is niet gevonden in het pad config/.storage/knx/", + "invalid_individual_address": "Waarde komt niet overeen met patroon voor KNX individueel adres.\n\"area.line.device", + "invalid_ip_address": "Ongeldig IPv4-adres.", + "invalid_signature": "Het wachtwoord om het `.knxkeys`-bestand te decoderen is verkeerd." }, "step": { "manual_tunnel": { "data": { "host": "Host", "individual_address": "Individueel adres voor de verbinding", - "local_ip": "Lokaal IP van Home Assistant (leeg laten voor automatische detectie)", + "local_ip": "Lokale IP van Home Assistant", "port": "Poort", "route_back": "Route Back / NAT Mode", "tunneling_type": "KNX Tunneling Type" }, + "data_description": { + "host": "IP adres van het KNX/IP tunneling apparaat.", + "local_ip": "Leeg laten om auto-discovery te gebruiken.", + "port": "Poort van het KNX/IP-tunnelapparaat." + }, "description": "Voer de verbindingsinformatie van uw tunneling-apparaat in." }, "routing": { "data": { - "individual_address": "Individueel adres voor de routing verbinding", - "local_ip": "Lokaal IP van Home Assistant (leeg laten voor automatische detectie)", - "multicast_group": "De multicast groep gebruikt voor de routing", - "multicast_port": "De multicast-poort gebruikt voor de routing" + "individual_address": "Individueel adres", + "local_ip": "Lokale IP van Home Assistant", + "multicast_group": "Multicast-groep", + "multicast_port": "Multicast-poort" + }, + "data_description": { + "individual_address": "KNX-adres te gebruiken door Home Assistant, bijv. `0.0.4`", + "local_ip": "Leeg laten om auto-discovery te gebruiken." }, "description": "Configureer de routing opties" }, + "secure_knxkeys": { + "data": { + "knxkeys_filename": "De bestandsnaam van uw `.knxkeys` bestand (inclusief extensie)", + "knxkeys_password": "Het wachtwoord om het bestand `.knxkeys` te ontcijferen" + }, + "data_description": { + "knxkeys_filename": "Het bestand zal naar verwachting worden gevonden in uw configuratiemap in '.storage/knx/'.\nIn Home Assistant OS zou dit '/config/.storage/knx/' zijn.\nVoorbeeld: 'my_project.knxkeys'", + "knxkeys_password": "Dit werd ingesteld bij het exporteren van het bestand van ETS." + }, + "description": "Voer de informatie voor uw `.knxkeys` bestand in." + }, + "secure_manual": { + "data": { + "device_authentication": "Wachtwoord voor apparaatverificatie", + "user_id": "User ID", + "user_password": "Gebruikerswachtwoord" + }, + "data_description": { + "device_authentication": "Dit wordt ingesteld in het \"IP\"-paneel van de interface in ETS.", + "user_id": "Dit is vaak tunnelnummer +1. Dus 'Tunnel 2' zou User-ID '3' hebben.", + "user_password": "Wachtwoord voor de specifieke tunnelverbinding, ingesteld in het paneel \"Eigenschappen\" van de tunnel in ETS." + }, + "description": "Voer uw beveiligde IP-gegevens in." + }, + "secure_tunneling": { + "description": "Kies hoe u KNX/IP Secure wilt configureren.", + "menu_options": { + "secure_knxkeys": "Gebruik een `.knxkeys` bestand met IP beveiligde sleutels", + "secure_manual": "IP-beveiligingssleutels handmatig configureren" + } + }, "tunnel": { "data": { "gateway": "KNX Tunnel Connection" @@ -48,11 +92,19 @@ "data": { "connection_type": "KNX-verbindingstype", "individual_address": "Standaard individueel adres", - "local_ip": "Lokaal IP van Home Assistant (gebruik 0.0.0.0 voor automatische detectie)", - "multicast_group": "Multicast groep gebruikt voor routing en ontdekking", - "multicast_port": "Multicast poort gebruikt voor routing en ontdekking", - "rate_limit": "Maximaal aantal uitgaande telegrammen per seconde", - "state_updater": "Globaal vrijgeven van het lezen van de KNX bus" + "local_ip": "Lokale IP van Home Assistant", + "multicast_group": "Multicast-groep", + "multicast_port": "Multicast-poort", + "rate_limit": "Rate limit", + "state_updater": "Statusupdater" + }, + "data_description": { + "individual_address": "KNX-adres dat door Home Assistant moet worden gebruikt, bijv. `0.0.4`", + "local_ip": "Gebruik `0.0.0.0` voor auto-discovery.", + "multicast_group": "Gebruikt voor routing en discovery. Standaard: `224.0.23.12`.", + "multicast_port": "Gebruikt voor routing en discovery. Standaard: `3671`", + "rate_limit": "Maximaal aantal uitgaande telegrammen per seconde.\nAanbevolen: 20 tot 40", + "state_updater": "Globaal in- of uitschakelen van het lezen van de status van de KNX bus. Indien uitgeschakeld, zal Home Assistant niet actief de status van de KNX Bus ophalen, `sync_state` entiteitsopties zullen geen effect hebben." } }, "tunnel": { @@ -62,6 +114,10 @@ "port": "Poort", "route_back": "Route Back / NAT Mode", "tunneling_type": "KNX Tunneling Type" + }, + "data_description": { + "host": "IP adres van het KNX/IP tunneling apparaat.", + "port": "Poort van het KNX/IP-tunnelapparaat." } } } diff --git a/homeassistant/components/knx/translations/no.json b/homeassistant/components/knx/translations/no.json index 231945d5233..f5d03e3160c 100644 --- a/homeassistant/components/knx/translations/no.json +++ b/homeassistant/components/knx/translations/no.json @@ -5,29 +5,73 @@ "single_instance_allowed": "Allerede konfigurert. Bare \u00e9n enkelt konfigurasjon er mulig." }, "error": { - "cannot_connect": "Tilkobling mislyktes" + "cannot_connect": "Tilkobling mislyktes", + "file_not_found": "Den angitte `.knxkeys`-filen ble ikke funnet i banen config/.storage/knx/", + "invalid_individual_address": "Verdien samsvarer ikke med m\u00f8nsteret for individuelle KNX-adresser.\n 'area.line.device'", + "invalid_ip_address": "Ugyldig IPv4-adresse.", + "invalid_signature": "Passordet for \u00e5 dekryptere `.knxkeys`-filen er feil." }, "step": { "manual_tunnel": { "data": { "host": "Vert", "individual_address": "Individuell adresse for tilkoblingen", - "local_ip": "Lokal IP for Home Assistant (la st\u00e5 tomt for automatisk gjenkjenning)", + "local_ip": "Lokal IP for hjemmeassistent", "port": "Port", "route_back": "Rute tilbake / NAT-modus", "tunneling_type": "KNX tunneltype" }, + "data_description": { + "host": "IP-adressen til KNX/IP-tunnelenheten.", + "local_ip": "La st\u00e5 tomt for \u00e5 bruke automatisk oppdagelse.", + "port": "Port p\u00e5 KNX/IP-tunnelenheten." + }, "description": "Vennligst skriv inn tilkoblingsinformasjonen til tunnelenheten din." }, "routing": { "data": { - "individual_address": "Individuell adresse for ruteforbindelsen", - "local_ip": "Lokal IP for Home Assistant (la st\u00e5 tomt for automatisk gjenkjenning)", - "multicast_group": "Multicast-gruppen som brukes til ruting", - "multicast_port": "Multicast-porten som brukes til ruting" + "individual_address": "Individuell adresse", + "local_ip": "Lokal IP for hjemmeassistent", + "multicast_group": "Multicast gruppe", + "multicast_port": "Multicast port" + }, + "data_description": { + "individual_address": "KNX-adresse som skal brukes av Home Assistant, f.eks. `0.0.4`", + "local_ip": "La st\u00e5 tomt for \u00e5 bruke automatisk oppdagelse." }, "description": "Vennligst konfigurer rutealternativene." }, + "secure_knxkeys": { + "data": { + "knxkeys_filename": "Filnavnet til `.knxkeys`-filen (inkludert utvidelse)", + "knxkeys_password": "Passordet for \u00e5 dekryptere `.knxkeys`-filen" + }, + "data_description": { + "knxkeys_filename": "Filen forventes \u00e5 bli funnet i konfigurasjonskatalogen din i `.storage/knx/`.\n I Home Assistant OS vil dette v\u00e6re `/config/.storage/knx/`\n Eksempel: `mitt_prosjekt.knxkeys`", + "knxkeys_password": "Dette ble satt ved eksport av filen fra ETS." + }, + "description": "Vennligst skriv inn informasjonen for `.knxkeys`-filen." + }, + "secure_manual": { + "data": { + "device_authentication": "Passord for enhetsgodkjenning", + "user_id": "bruker-ID", + "user_password": "Brukerpassord" + }, + "data_description": { + "device_authentication": "Dette settes i 'IP'-panelet til grensesnittet i ETS.", + "user_id": "Dette er ofte tunnelnummer +1. S\u00e5 'Tunnel 2' ville ha bruker-ID '3'.", + "user_password": "Passord for den spesifikke tunnelforbindelsen satt i 'Egenskaper'-panelet i tunnelen i ETS." + }, + "description": "Vennligst skriv inn din sikre IP-informasjon." + }, + "secure_tunneling": { + "description": "Velg hvordan du vil konfigurere KNX/IP Secure.", + "menu_options": { + "secure_knxkeys": "Bruk en `.knxkeys`-fil som inneholder IP-sikre n\u00f8kler", + "secure_manual": "Konfigurer IP-sikre n\u00f8kler manuelt" + } + }, "tunnel": { "data": { "gateway": "KNX Tunneltilkobling" @@ -48,11 +92,19 @@ "data": { "connection_type": "KNX tilkoblingstype", "individual_address": "Standard individuell adresse", - "local_ip": "Lokal IP for Home Assistant (bruk 0.0.0.0 for automatisk deteksjon)", - "multicast_group": "Multicast-gruppe brukt til ruting og oppdagelse", - "multicast_port": "Multicast-port som brukes til ruting og oppdagelse", - "rate_limit": "Maksimalt utg\u00e5ende telegrammer per sekund", - "state_updater": "Aktiver lesetilstander globalt fra KNX-bussen" + "local_ip": "Lokal IP for hjemmeassistent", + "multicast_group": "Multicast gruppe", + "multicast_port": "Multicast port", + "rate_limit": "Satsgrense", + "state_updater": "Statens oppdatering" + }, + "data_description": { + "individual_address": "KNX-adresse som skal brukes av Home Assistant, f.eks. `0.0.4`", + "local_ip": "Bruk `0.0.0.0` for automatisk oppdagelse.", + "multicast_group": "Brukes til ruting og oppdagelse. Standard: `224.0.23.12`", + "multicast_port": "Brukes til ruting og oppdagelse. Standard: `3671`", + "rate_limit": "Maksimalt utg\u00e5ende telegrammer per sekund.\n Anbefalt: 20 til 40", + "state_updater": "Globalt aktiver eller deaktiver lesetilstander fra KNX-bussen. N\u00e5r den er deaktivert, vil ikke Home Assistant aktivt hente statuser fra KNX-bussen, \"sync_state\"-enhetsalternativer vil ikke ha noen effekt." } }, "tunnel": { @@ -62,6 +114,10 @@ "port": "Port", "route_back": "Rute tilbake / NAT-modus", "tunneling_type": "KNX tunneltype" + }, + "data_description": { + "host": "IP-adressen til KNX/IP-tunnelenheten.", + "port": "Port p\u00e5 KNX/IP-tunnelenheten." } } } diff --git a/homeassistant/components/knx/translations/pl.json b/homeassistant/components/knx/translations/pl.json index 8a30af3fd59..e0821090f29 100644 --- a/homeassistant/components/knx/translations/pl.json +++ b/homeassistant/components/knx/translations/pl.json @@ -5,29 +5,73 @@ "single_instance_allowed": "Ju\u017c skonfigurowano. Mo\u017cliwa jest tylko jedna konfiguracja." }, "error": { - "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia" + "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", + "file_not_found": "Podany plik '.knxkeys' nie zosta\u0142 znaleziony w \u015bcie\u017cce config/.storage/knx/", + "invalid_individual_address": "Warto\u015b\u0107 nie pasuje do wzorca dla indywidualnego adresu KNX.\n 'obszar.linia.urz\u0105dzenie'", + "invalid_ip_address": "Nieprawid\u0142owy adres IPv4.", + "invalid_signature": "Has\u0142o do odszyfrowania pliku '.knxkeys' jest nieprawid\u0142owe." }, "step": { "manual_tunnel": { "data": { "host": "Nazwa hosta lub adres IP", "individual_address": "Indywidualny adres dla po\u0142\u0105czenia", - "local_ip": "Lokalny adres IP Home Assistant (pozostaw puste w celu automatycznego wykrywania)", + "local_ip": "Lokalny adres IP Home Assistanta", "port": "Port", "route_back": "Tryb Route Back / NAT", "tunneling_type": "Typ tunelowania KNX" }, + "data_description": { + "host": "Adres IP urz\u0105dzenia tuneluj\u0105cego KNX/IP.", + "local_ip": "Pozostaw puste, aby u\u017cy\u0107 automatycznego wykrywania.", + "port": "Port urz\u0105dzenia tuneluj\u0105cego KNX/IP." + }, "description": "Prosz\u0119 wprowadzi\u0107 informacje o po\u0142\u0105czeniu urz\u0105dzenia tuneluj\u0105cego." }, "routing": { "data": { - "individual_address": "Indywidualny adres dla po\u0142\u0105czenia routingowego", - "local_ip": "Lokalny adres IP Home Assistant (pozostaw puste w celu automatycznego wykrywania)", - "multicast_group": "Grupa multicast u\u017cyta do routingu", - "multicast_port": "Port multicast u\u017cyty do routingu" + "individual_address": "Adres indywidualny", + "local_ip": "Lokalny adres IP Home Assistanta", + "multicast_group": "Grupa multicast", + "multicast_port": "Port multicast" + }, + "data_description": { + "individual_address": "Adres KNX u\u017cywany przez Home Assistanta, np. `0.0.4`", + "local_ip": "Pozostaw puste, aby u\u017cy\u0107 automatycznego wykrywania." }, "description": "Prosz\u0119 skonfigurowa\u0107 opcje routingu." }, + "secure_knxkeys": { + "data": { + "knxkeys_filename": "Nazwa pliku `.knxkeys` (wraz z rozszerzeniem)", + "knxkeys_password": "Has\u0142o do odszyfrowania pliku `.knxkeys`" + }, + "data_description": { + "knxkeys_filename": "Plik powinien znajdowa\u0107 si\u0119 w katalogu konfiguracyjnym w `.storage/knx/`.\nW systemie Home Assistant OS b\u0119dzie to `/config/.storage/knx/`\nPrzyk\u0142ad: `m\u00f3j_projekt.knxkeys`", + "knxkeys_password": "Zosta\u0142o to ustawione podczas eksportowania pliku z ETS." + }, + "description": "Wprowad\u017a informacje dotycz\u0105ce pliku `.knxkeys`." + }, + "secure_manual": { + "data": { + "device_authentication": "Has\u0142o uwierzytelniania urz\u0105dzenia", + "user_id": "Identyfikator u\u017cytkownika", + "user_password": "Has\u0142o u\u017cytkownika" + }, + "data_description": { + "device_authentication": "Jest to ustawiane w panelu \u201eIP\u201d interfejsu w ETS.", + "user_id": "Cz\u0119sto jest to numer tunelu plus 1. Tak wi\u0119c \u201eTunnel 2\u201d mia\u0142by identyfikator u\u017cytkownika \u201e3\u201d.", + "user_password": "Has\u0142o dla konkretnego po\u0142\u0105czenia tunelowego ustawione w panelu \u201eW\u0142a\u015bciwo\u015bci\u201d tunelu w ETS." + }, + "description": "Wprowad\u017a informacje o IP secure." + }, + "secure_tunneling": { + "description": "Wybierz, jak chcesz skonfigurowa\u0107 KNX/IP secure.", + "menu_options": { + "secure_knxkeys": "U\u017cyj pliku `.knxkeys` zawieraj\u0105cego klucze IP secure", + "secure_manual": "R\u0119czna konfiguracja kluczy IP secure" + } + }, "tunnel": { "data": { "gateway": "Po\u0142\u0105czenie tunelowe KNX" @@ -48,11 +92,19 @@ "data": { "connection_type": "Typ po\u0142\u0105czenia KNX", "individual_address": "Domy\u015blny adres indywidualny", - "local_ip": "Lokalny adres IP Home Assistant (u\u017cyj 0.0.0.0 w celu automatycznego wykrywania)", - "multicast_group": "Grupa multicast u\u017cywana do routingu i wykrywania", - "multicast_port": "Port multicast u\u017cywany do routingu i wykrywania", - "rate_limit": "Maksymalna liczba wychodz\u0105cych wiadomo\u015bci na sekund\u0119", - "state_updater": "Zezw\u00f3l globalnie na odczyt stan\u00f3w z magistrali KNX" + "local_ip": "Lokalny adres IP Home Assistanta", + "multicast_group": "Grupa multicast", + "multicast_port": "Port multicast", + "rate_limit": "Limit", + "state_updater": "Aktualizator stanu" + }, + "data_description": { + "individual_address": "Adres KNX u\u017cywany przez Home Assistanta, np. `0.0.4`", + "local_ip": "U\u017cyj `0.0.0.0` do automatycznego wykrywania.", + "multicast_group": "U\u017cywany do routingu i wykrywania. Domy\u015blnie: `224.0.23.12`", + "multicast_port": "U\u017cywany do routingu i wykrywania. Domy\u015blnie: `3671`", + "rate_limit": "Maksymalna liczba wychodz\u0105cych wiadomo\u015bci na sekund\u0119.\nZalecane: od 20 do 40", + "state_updater": "Globalnie w\u0142\u0105czaj lub wy\u0142\u0105czaj odczytywanie stan\u00f3w z magistrali KNX. Po wy\u0142\u0105czeniu, Home Assistant nie b\u0119dzie aktywnie pobiera\u0107 stan\u00f3w z magistrali KNX, opcje encji `sync_state` nie b\u0119d\u0105 mia\u0142y \u017cadnego efektu." } }, "tunnel": { @@ -62,6 +114,10 @@ "port": "Port", "route_back": "Tryb Route Back / NAT", "tunneling_type": "Typ tunelowania KNX" + }, + "data_description": { + "host": "Adres IP urz\u0105dzenia tuneluj\u0105cego KNX/IP.", + "port": "Port urz\u0105dzenia tuneluj\u0105cego KNX/IP." } } } diff --git a/homeassistant/components/knx/translations/pt-BR.json b/homeassistant/components/knx/translations/pt-BR.json index 0e8e3402961..950cedc0721 100644 --- a/homeassistant/components/knx/translations/pt-BR.json +++ b/homeassistant/components/knx/translations/pt-BR.json @@ -5,29 +5,73 @@ "single_instance_allowed": "J\u00e1 configurado. Apenas uma configura\u00e7\u00e3o \u00e9 poss\u00edvel." }, "error": { - "cannot_connect": "Falha ao conectar" + "cannot_connect": "Falha ao conectar", + "file_not_found": "O arquivo `.knxkeys` especificado n\u00e3o foi encontrado no caminho config/.storage/knx/", + "invalid_individual_address": "O valor n\u00e3o corresponde ao padr\u00e3o do endere\u00e7o individual KNX.\n '\u00e1rea.linha.dispositivo'", + "invalid_ip_address": "Endere\u00e7o IPv4 inv\u00e1lido.", + "invalid_signature": "A senha para descriptografar o arquivo `.knxkeys` est\u00e1 errada." }, "step": { "manual_tunnel": { "data": { "host": "Nome do host", "individual_address": "Endere\u00e7o individual para a conex\u00e3o", - "local_ip": "IP local do Home Assistant (deixe em branco para detec\u00e7\u00e3o autom\u00e1tica)", + "local_ip": "IP local do Home Assistant", "port": "Porta", "route_back": "Modo Rota de Retorno / NAT", "tunneling_type": "Tipo de t\u00fanel KNX" }, + "data_description": { + "host": "Endere\u00e7o IP do dispositivo de tunelamento KNX/IP.", + "local_ip": "Deixe em branco para usar a descoberta autom\u00e1tica.", + "port": "Porta do dispositivo de tunelamento KNX/IP." + }, "description": "Por favor, digite as informa\u00e7\u00f5es de conex\u00e3o do seu dispositivo de tunelamento." }, "routing": { "data": { - "individual_address": "Endere\u00e7o individual para a conex\u00e3o de roteamento", - "local_ip": "IP local do Home Assistant (deixe vazio para detec\u00e7\u00e3o autom\u00e1tica)", - "multicast_group": "O grupo multicast usado para roteamento", - "multicast_port": "A porta multicast usada para roteamento" + "individual_address": "Endere\u00e7o individual", + "local_ip": "IP local do Home Assistant", + "multicast_group": "Grupo multicast", + "multicast_port": "Porta multicast" + }, + "data_description": { + "individual_address": "Endere\u00e7o KNX a ser usado pelo Home Assistant, por exemplo, `0.0.4`", + "local_ip": "Deixe em branco para usar a descoberta autom\u00e1tica." }, "description": "Por favor, configure as op\u00e7\u00f5es de roteamento." }, + "secure_knxkeys": { + "data": { + "knxkeys_filename": "O nome do seu arquivo `.knxkeys` (incluindo extens\u00e3o)", + "knxkeys_password": "A senha para descriptografar o arquivo `.knxkeys`" + }, + "data_description": { + "knxkeys_filename": "Espera-se que o arquivo seja encontrado em seu diret\u00f3rio de configura\u00e7\u00e3o em `.storage/knx/`.\n No sistema operacional Home Assistant seria `/config/.storage/knx/`\n Exemplo: `my_project.knxkeys`", + "knxkeys_password": "Isso foi definido ao exportar o arquivo do ETS." + }, + "description": "Por favor, insira as informa\u00e7\u00f5es para o seu arquivo `.knxkeys`." + }, + "secure_manual": { + "data": { + "device_authentication": "Senha de autentica\u00e7\u00e3o do dispositivo", + "user_id": "ID do usu\u00e1rio", + "user_password": "Senha do usu\u00e1rio" + }, + "data_description": { + "device_authentication": "Isso \u00e9 definido no painel 'IP' da interface no ETS.", + "user_id": "Isso geralmente \u00e9 o n\u00famero do t\u00fanel +1. Portanto, 'T\u00fanel 2' teria o ID de usu\u00e1rio '3'.", + "user_password": "Senha para a conex\u00e3o de t\u00fanel espec\u00edfica definida no painel 'Propriedades' do t\u00fanel no ETS." + }, + "description": "Por favor, insira suas informa\u00e7\u00f5es seguras de IP." + }, + "secure_tunneling": { + "description": "Selecione como deseja configurar o KNX/IP Secure.", + "menu_options": { + "secure_knxkeys": "Use um arquivo `.knxkeys` contendo chaves seguras de IP", + "secure_manual": "Configurar manualmente as chaves de seguran\u00e7a IP" + } + }, "tunnel": { "data": { "gateway": "Conex\u00e3o do t\u00fanel KNX" @@ -48,11 +92,19 @@ "data": { "connection_type": "Tipo de conex\u00e3o KNX", "individual_address": "Endere\u00e7o individual padr\u00e3o", - "local_ip": "IP local do Home Assistant (use 0.0.0.0 para detec\u00e7\u00e3o autom\u00e1tica)", - "multicast_group": "Grupo multicast usado para roteamento e descoberta", - "multicast_port": "Porta multicast usada para roteamento e descoberta", - "rate_limit": "M\u00e1ximo de telegramas de sa\u00edda por segundo", - "state_updater": "Permitir globalmente estados de leitura a partir do KNX Bus" + "local_ip": "IP local do Home Assistant", + "multicast_group": "Grupo multicast", + "multicast_port": "Porta multicast", + "rate_limit": "Taxa limite", + "state_updater": "Atualizador de estado" + }, + "data_description": { + "individual_address": "Endere\u00e7o KNX a ser usado pelo Home Assistant, por exemplo, `0.0.4`", + "local_ip": "Use `0.0.0.0` para descoberta autom\u00e1tica.", + "multicast_group": "Usado para roteamento e descoberta. Padr\u00e3o: `224.0.23.12`", + "multicast_port": "Usado para roteamento e descoberta. Padr\u00e3o: `3671`", + "rate_limit": "M\u00e1ximo de telegramas de sa\u00edda por segundo.\n Recomendado: 20 a 40", + "state_updater": "Habilite ou desabilite globalmente os estados de leitura do barramento KNX. Quando desativado, o Home Assistant n\u00e3o recuperar\u00e1 ativamente os estados do barramento KNX, as op\u00e7\u00f5es de entidade `sync_state` n\u00e3o ter\u00e3o efeito." } }, "tunnel": { @@ -62,6 +114,10 @@ "port": "Porta", "route_back": "Modo Rota de Retorno / NAT", "tunneling_type": "Tipo de t\u00fanel KNX" + }, + "data_description": { + "host": "Endere\u00e7o IP do dispositivo de tunelamento KNX/IP.", + "port": "Porta do dispositivo de tunelamento KNX/IP." } } } diff --git a/homeassistant/components/knx/translations/ru.json b/homeassistant/components/knx/translations/ru.json index 6c1a41dac91..14b9f919aa2 100644 --- a/homeassistant/components/knx/translations/ru.json +++ b/homeassistant/components/knx/translations/ru.json @@ -5,29 +5,73 @@ "single_instance_allowed": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e." }, "error": { - "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f." + "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", + "file_not_found": "\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b `.knxkeys` \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d \u0432 config/.storage/knx/", + "invalid_individual_address": "\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u0443 \u0434\u043b\u044f \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 KNX 'area.line.device'.", + "invalid_ip_address": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 IPv4.", + "invalid_signature": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438 \u0444\u0430\u0439\u043b\u0430 `.knxkeys`." }, "step": { "manual_tunnel": { "data": { "host": "\u0425\u043e\u0441\u0442", "individual_address": "\u0418\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f", - "local_ip": "\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 IP-\u0430\u0434\u0440\u0435\u0441 Home Assistant (\u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u043e\u043b\u0435 \u043f\u0443\u0441\u0442\u044b\u043c \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f)", + "local_ip": "\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 IP-\u0430\u0434\u0440\u0435\u0441 Home Assistant", "port": "\u041f\u043e\u0440\u0442", "route_back": "\u041e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 / \u0440\u0435\u0436\u0438\u043c NAT", "tunneling_type": "\u0422\u0438\u043f \u0442\u0443\u043d\u043d\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f KNX" }, + "data_description": { + "host": "IP-\u0430\u0434\u0440\u0435\u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0443\u043d\u043d\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f KNX/IP.", + "local_ip": "\u041e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0443\u0441\u0442\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435.", + "port": "\u041f\u043e\u0440\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0443\u043d\u043d\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f KNX/IP." + }, "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438." }, "routing": { "data": { - "individual_address": "\u0418\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0434\u043b\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f", - "local_ip": "\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 IP-\u0430\u0434\u0440\u0435\u0441 Home Assistant (\u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u043e\u043b\u0435 \u043f\u0443\u0441\u0442\u044b\u043c \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f)", - "multicast_group": "\u0413\u0440\u0443\u043f\u043f\u0430 \u043c\u043d\u043e\u0433\u043e\u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0439 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u0434\u043b\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438", - "multicast_port": "\u041f\u043e\u0440\u0442 \u043c\u043d\u043e\u0433\u043e\u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0439 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438" + "individual_address": "\u0418\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441", + "local_ip": "\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 IP-\u0430\u0434\u0440\u0435\u0441 Home Assistant", + "multicast_group": "\u0413\u0440\u0443\u043f\u043f\u0430 \u043c\u043d\u043e\u0433\u043e\u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0439 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438", + "multicast_port": "\u041f\u043e\u0440\u0442 \u043c\u043d\u043e\u0433\u043e\u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0439 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438" + }, + "data_description": { + "individual_address": "\u0410\u0434\u0440\u0435\u0441 KNX, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f Home Assistant, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `0.0.4`", + "local_ip": "\u041e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0443\u0441\u0442\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435." }, "description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438." }, + "secure_knxkeys": { + "data": { + "knxkeys_filename": "\u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430 `.knxkeys` (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435)", + "knxkeys_password": "\u041f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438 \u0444\u0430\u0439\u043b\u0430 `.knxkeys`" + }, + "data_description": { + "knxkeys_filename": "\u041e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0439\u0434\u0435\u043d \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 `.storage/knx/`.\n\u0415\u0441\u043b\u0438 \u0412\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 Home Assistant OS \u044d\u0442\u043e\u0442 \u043f\u0443\u0442\u044c \u0431\u0443\u0434\u0435\u0442 `/config/.storage/knx/`\n\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: `my_project.knxkeys`", + "knxkeys_password": "\u042d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0431\u044b\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043f\u0440\u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0435 \u0444\u0430\u0439\u043b\u0430 \u0438\u0437 ETS." + }, + "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0444\u0430\u0439\u043b\u0435 `.knxkeys`." + }, + "secure_manual": { + "data": { + "device_authentication": "\u041f\u0430\u0440\u043e\u043b\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430", + "user_id": "ID \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", + "user_password": "\u041f\u0430\u0440\u043e\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f" + }, + "data_description": { + "device_authentication": "\u042d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 'IP' \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 ETS.", + "user_id": "\u0427\u0430\u0441\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u0442\u0443\u043d\u043d\u0435\u043b\u044f +1. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, 'Tunnel 2' \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c User-ID '3'.", + "user_password": "\u041f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0442\u0443\u043d\u043d\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 'Properties' \u0442\u0443\u043d\u043d\u0435\u043b\u044f \u0432 ETS." + }, + "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e IP Secure." + }, + "secure_tunneling": { + "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 KNX/IP Secure.", + "menu_options": { + "secure_knxkeys": "\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b `.knxkeys`, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043a\u043b\u044e\u0447\u0438 IP secure", + "secure_manual": "\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u043b\u044e\u0447\u0438 IP Secure \u0432\u0440\u0443\u0447\u043d\u0443\u044e" + } + }, "tunnel": { "data": { "gateway": "\u0422\u0443\u043d\u043d\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f KNX" @@ -48,11 +92,19 @@ "data": { "connection_type": "\u0422\u0438\u043f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f KNX", "individual_address": "\u0418\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e", - "local_ip": "\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 IP-\u0430\u0434\u0440\u0435\u0441 Home Assistant (0.0.0.0 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f)", - "multicast_group": "\u0413\u0440\u0443\u043f\u043f\u0430 \u043c\u043d\u043e\u0433\u043e\u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0439 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u0434\u043b\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f", - "multicast_port": "\u041f\u043e\u0440\u0442 \u043c\u043d\u043e\u0433\u043e\u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0439 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f", - "rate_limit": "\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443", - "state_updater": "\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0441 \u0448\u0438\u043d\u044b KNX" + "local_ip": "\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 IP-\u0430\u0434\u0440\u0435\u0441 Home Assistant", + "multicast_group": "\u0413\u0440\u0443\u043f\u043f\u0430 \u043c\u043d\u043e\u0433\u043e\u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0439 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438", + "multicast_port": "\u041f\u043e\u0440\u0442 \u043c\u043d\u043e\u0433\u043e\u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0439 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438", + "rate_limit": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438", + "state_updater": "\u0421\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f" + }, + "data_description": { + "individual_address": "\u0410\u0434\u0440\u0435\u0441 KNX, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f Home Assistant, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `0.0.4`", + "local_ip": "\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 `0.0.0.0` \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f.", + "multicast_group": "\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: `224.0.23.12`", + "multicast_port": "\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: `3671`", + "rate_limit": "\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443.\n\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f: \u043e\u0442 20 \u0434\u043e 40", + "state_updater": "\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438\u0437 \u0448\u0438\u043d\u044b KNX. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d, Home Assistant \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438\u0437 \u0448\u0438\u043d\u044b KNX, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u0430 sync_state \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430." } }, "tunnel": { @@ -62,6 +114,10 @@ "port": "\u041f\u043e\u0440\u0442", "route_back": "\u041e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 / \u0440\u0435\u0436\u0438\u043c NAT", "tunneling_type": "\u0422\u0438\u043f \u0442\u0443\u043d\u043d\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f KNX" + }, + "data_description": { + "host": "IP-\u0430\u0434\u0440\u0435\u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0443\u043d\u043d\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f KNX/IP.", + "port": "\u041f\u043e\u0440\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0443\u043d\u043d\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f KNX/IP." } } } diff --git a/homeassistant/components/knx/translations/tr.json b/homeassistant/components/knx/translations/tr.json index 6267038a6e0..c10f35ca48f 100644 --- a/homeassistant/components/knx/translations/tr.json +++ b/homeassistant/components/knx/translations/tr.json @@ -5,29 +5,73 @@ "single_instance_allowed": "Zaten yap\u0131land\u0131r\u0131lm\u0131\u015f. Yaln\u0131zca tek bir konfig\u00fcrasyon m\u00fcmk\u00fcnd\u00fcr." }, "error": { - "cannot_connect": "Ba\u011flanma hatas\u0131" + "cannot_connect": "Ba\u011flanma hatas\u0131", + "file_not_found": "Belirtilen `.knxkeys` dosyas\u0131 config/.storage/knx/ yolunda bulunamad\u0131", + "invalid_individual_address": "De\u011fer, KNX bireysel adresi i\u00e7in modelle e\u015fle\u015fmiyor.\n 'alan.hat.cihaz'", + "invalid_ip_address": "Ge\u00e7ersiz IPv4 adresi.", + "invalid_signature": "`.knxkeys` dosyas\u0131n\u0131n \u015fifresini \u00e7\u00f6zmek i\u00e7in \u015fifre yanl\u0131\u015f." }, "step": { "manual_tunnel": { "data": { "host": "Sunucu", "individual_address": "Ba\u011flant\u0131 i\u00e7in bireysel adres", - "local_ip": "Home Assistant Yerel IP'si (otomatik alg\u0131lama i\u00e7in bo\u015f b\u0131rak\u0131n)", + "local_ip": "Home Asistan\u0131n\u0131n Yerel IP'si", "port": "Port", "route_back": "Geri Y\u00f6nlendirme / NAT Modu", "tunneling_type": "KNX T\u00fcnel Tipi" }, + "data_description": { + "host": "KNX/IP t\u00fcnelleme cihaz\u0131n\u0131n IP adresi.", + "local_ip": "Otomatik bulmay\u0131 kullanmak i\u00e7in bo\u015f b\u0131rak\u0131n.", + "port": "KNX/IP t\u00fcnelleme cihaz\u0131n\u0131n ba\u011flant\u0131 noktas\u0131." + }, "description": "L\u00fctfen t\u00fcnel cihaz\u0131n\u0131z\u0131n ba\u011flant\u0131 bilgilerini girin." }, "routing": { "data": { - "individual_address": "Y\u00f6nlendirme ba\u011flant\u0131s\u0131 i\u00e7in bireysel adres", - "local_ip": "Home Assistant Yerel IP'si (otomatik alg\u0131lama i\u00e7in bo\u015f b\u0131rak\u0131n)", - "multicast_group": "Y\u00f6nlendirme i\u00e7in kullan\u0131lan \u00e7ok noktaya yay\u0131n grubu", - "multicast_port": "Y\u00f6nlendirme i\u00e7in kullan\u0131lan \u00e7ok noktaya yay\u0131n ba\u011flant\u0131 noktas\u0131" + "individual_address": "Bireysel adres", + "local_ip": "Home Asistan\u0131n\u0131n Yerel IP'si", + "multicast_group": "\u00c7ok noktaya yay\u0131n grubu", + "multicast_port": "\u00c7ok noktaya yay\u0131n ba\u011flant\u0131 noktas\u0131" + }, + "data_description": { + "individual_address": "Home Assistant taraf\u0131ndan kullan\u0131lacak KNX adresi, \u00f6r. \"0.0.4\"", + "local_ip": "Otomatik bulmay\u0131 kullanmak i\u00e7in bo\u015f b\u0131rak\u0131n." }, "description": "L\u00fctfen y\u00f6nlendirme se\u00e7eneklerini yap\u0131land\u0131r\u0131n." }, + "secure_knxkeys": { + "data": { + "knxkeys_filename": "`.knxkeys` dosyan\u0131z\u0131n dosya ad\u0131 (uzant\u0131 dahil)", + "knxkeys_password": "`.knxkeys` dosyas\u0131n\u0131n \u015fifresini \u00e7\u00f6zmek i\u00e7in \u015fifre" + }, + "data_description": { + "knxkeys_filename": "Dosyan\u0131n yap\u0131land\u0131rma dizininizde `.storage/knx/` i\u00e7inde bulunmas\u0131 bekleniyor.\n Home Assistant OS'de bu, `/config/.storage/knx/` olacakt\u0131r.\n \u00d6rnek: \"my_project.knxkeys\"", + "knxkeys_password": "Bu, dosyay\u0131 ETS'den d\u0131\u015fa aktar\u0131rken ayarland\u0131." + }, + "description": "L\u00fctfen `.knxkeys` dosyan\u0131z i\u00e7in bilgileri girin." + }, + "secure_manual": { + "data": { + "device_authentication": "Cihaz do\u011frulama \u015fifresi", + "user_id": "Kullan\u0131c\u0131 Kimli\u011fi", + "user_password": "Kullan\u0131c\u0131 \u015fifresi" + }, + "data_description": { + "device_authentication": "Bu, ETS'deki aray\u00fcz\u00fcn 'IP' panelinde ayarlan\u0131r.", + "user_id": "Bu genellikle t\u00fcnel numaras\u0131 +1'dir. Yani 'T\u00fcnel 2' Kullan\u0131c\u0131 Kimli\u011fi '3' olacakt\u0131r.", + "user_password": "ETS'de t\u00fcnelin '\u00d6zellikler' panelinde ayarlanan belirli t\u00fcnel ba\u011flant\u0131s\u0131 i\u00e7in \u015fifre." + }, + "description": "L\u00fctfen IP g\u00fcvenli bilgilerinizi giriniz." + }, + "secure_tunneling": { + "description": "KNX/IP Secure'u nas\u0131l yap\u0131land\u0131rmak istedi\u011finizi se\u00e7in.", + "menu_options": { + "secure_knxkeys": "IP g\u00fcvenli anahtarlar\u0131 i\u00e7eren bir \".knxkeys\" dosyas\u0131 kullan\u0131n", + "secure_manual": "IP g\u00fcvenli anahtarlar\u0131n\u0131 manuel olarak yap\u0131land\u0131r\u0131n" + } + }, "tunnel": { "data": { "gateway": "KNX T\u00fcnel Ba\u011flant\u0131s\u0131" @@ -48,11 +92,19 @@ "data": { "connection_type": "KNX Ba\u011flant\u0131 T\u00fcr\u00fc", "individual_address": "Varsay\u0131lan bireysel adres", - "local_ip": "Home Assistant Yerel IP'si (otomatik alg\u0131lama i\u00e7in 0.0.0.0 kullan\u0131n)", - "multicast_group": "Y\u00f6nlendirme ve ke\u015fif i\u00e7in kullan\u0131lan \u00e7ok noktaya yay\u0131n grubu", - "multicast_port": "Y\u00f6nlendirme ve ke\u015fif i\u00e7in kullan\u0131lan \u00e7ok noktaya yay\u0131n ba\u011flant\u0131 noktas\u0131", - "rate_limit": "Saniyede maksimum giden telegram say\u0131s\u0131", - "state_updater": "KNX Veri Yolu'ndan okuma durumlar\u0131n\u0131 genel olarak etkinle\u015ftirin" + "local_ip": "Home Asistan\u0131n\u0131n Yerel IP'si", + "multicast_group": "\u00c7ok noktaya yay\u0131n grubu", + "multicast_port": "\u00c7ok noktaya yay\u0131n ba\u011flant\u0131 noktas\u0131", + "rate_limit": "H\u0131z s\u0131n\u0131r\u0131", + "state_updater": "Durum g\u00fcncelleyici" + }, + "data_description": { + "individual_address": "Home Assistant taraf\u0131ndan kullan\u0131lacak KNX adresi, \u00f6r. \"0.0.4\"", + "local_ip": "Otomatik ke\u015fif i\u00e7in \"0.0.0.0\"\u0131 kullan\u0131n.", + "multicast_group": "Y\u00f6nlendirme ve ke\u015fif i\u00e7in kullan\u0131l\u0131r. Varsay\u0131lan: \"224.0.23.12\"", + "multicast_port": "Y\u00f6nlendirme ve ke\u015fif i\u00e7in kullan\u0131l\u0131r. Varsay\u0131lan: \"3671\"", + "rate_limit": "Saniyede maksimum giden telegram say\u0131s\u0131.\n \u00d6nerilen: 20 ila 40", + "state_updater": "KNX Bus'tan okuma durumlar\u0131n\u0131 k\u00fcresel olarak etkinle\u015ftirin veya devre d\u0131\u015f\u0131 b\u0131rak\u0131n. Devre d\u0131\u015f\u0131 b\u0131rak\u0131ld\u0131\u011f\u0131nda, Home Assistant KNX Bus'tan durumlar\u0131 aktif olarak almaz, 'sync_state' varl\u0131k se\u00e7eneklerinin hi\u00e7bir etkisi olmaz." } }, "tunnel": { @@ -62,6 +114,10 @@ "port": "Port", "route_back": "Geri Y\u00f6nlendirme / NAT Modu", "tunneling_type": "KNX T\u00fcnel Tipi" + }, + "data_description": { + "host": "KNX/IP t\u00fcnelleme cihaz\u0131n\u0131n IP adresi.", + "port": "KNX/IP t\u00fcnelleme cihaz\u0131n\u0131n ba\u011flant\u0131 noktas\u0131." } } } diff --git a/homeassistant/components/knx/translations/zh-Hant.json b/homeassistant/components/knx/translations/zh-Hant.json index b6c09456fb3..8f740b85f6d 100644 --- a/homeassistant/components/knx/translations/zh-Hant.json +++ b/homeassistant/components/knx/translations/zh-Hant.json @@ -5,29 +5,73 @@ "single_instance_allowed": "\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210\u3001\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u88dd\u7f6e\u3002" }, "error": { - "cannot_connect": "\u9023\u7dda\u5931\u6557" + "cannot_connect": "\u9023\u7dda\u5931\u6557", + "file_not_found": "\u8def\u5f91 config/.storage/knx/ \u5167\u627e\u4e0d\u5230\u6307\u5b9a `.knxkeys` \u6a94\u6848", + "invalid_individual_address": "\u6578\u503c\u8207 KNX \u500b\u5225\u4f4d\u5740\u4e0d\u76f8\u7b26\u3002\n'area.line.device'", + "invalid_ip_address": "IPv4 \u4f4d\u5740\u7121\u6548\u3002", + "invalid_signature": "\u52a0\u5bc6 `.knxkeys` \u6a94\u6848\u5bc6\u78bc\u932f\u8aa4\u3002" }, "step": { "manual_tunnel": { "data": { "host": "\u4e3b\u6a5f\u7aef", "individual_address": "\u9023\u7dda\u500b\u5225\u4f4d\u5740", - "local_ip": "Home Assistant \u672c\u5730\u7aef IP\uff08\u4fdd\u7559\u7a7a\u767d\u4ee5\u81ea\u52d5\u5075\u6e2c\uff09", + "local_ip": "Home Assistant \u672c\u5730\u7aef IP", "port": "\u901a\u8a0a\u57e0", "route_back": "\u8def\u7531\u8fd4\u56de / NAT \u6a21\u5f0f", "tunneling_type": "KNX \u901a\u9053\u985e\u5225" }, + "data_description": { + "host": "KNX/IP \u901a\u9053\u88dd\u7f6e IP \u4f4d\u5740\u3002", + "local_ip": "\u4fdd\u6301\u7a7a\u767d\u4ee5\u4f7f\u7528\u81ea\u52d5\u641c\u7d22\u3002", + "port": "KNX/IP \u901a\u9053\u88dd\u7f6e\u901a\u8a0a\u57e0\u3002" + }, "description": "\u8acb\u8f38\u5165\u901a\u9053\u88dd\u7f6e\u7684\u9023\u7dda\u8cc7\u8a0a\u3002" }, "routing": { "data": { - "individual_address": "\u8def\u7531\u9023\u7dda\u500b\u5225\u4f4d\u5740", - "local_ip": "Home Assistant \u672c\u5730\u7aef IP\uff08\u4fdd\u7559\u7a7a\u767d\u4ee5\u81ea\u52d5\u5075\u6e2c\uff09", - "multicast_group": "\u4f7f\u7528\u65bc\u8def\u7531\u7684 Multicast \u7fa4\u7d44", - "multicast_port": "\u4f7f\u7528\u65bc\u8def\u7531\u7684 Multicast \u901a\u8a0a\u57e0" + "individual_address": "\u500b\u5225\u4f4d\u5740", + "local_ip": "Home Assistant \u672c\u5730\u7aef IP", + "multicast_group": "Multicast \u7fa4\u7d44", + "multicast_port": "Multicast \u901a\u8a0a\u57e0" + }, + "data_description": { + "individual_address": "Home Assistant \u6240\u4f7f\u7528\u4e4b KNX \u4f4d\u5740\u3002\u4f8b\u5982\uff1a`0.0.4`", + "local_ip": "\u4fdd\u6301\u7a7a\u767d\u4ee5\u4f7f\u7528\u81ea\u52d5\u641c\u7d22\u3002" }, "description": "\u8acb\u8a2d\u5b9a\u8def\u7531\u9078\u9805\u3002" }, + "secure_knxkeys": { + "data": { + "knxkeys_filename": "`.knxkeys` \u6a94\u6848\u5168\u540d\uff08\u5305\u542b\u526f\u6a94\u540d\uff09", + "knxkeys_password": "\u52a0\u5bc6 `.knxkeys` \u6a94\u6848\u5bc6\u78bc" + }, + "data_description": { + "knxkeys_filename": "\u6a94\u6848\u61c9\u8a72\u4f4d\u65bc\u8a2d\u5b9a\u8cc7\u6599\u593e `.storage/knx/` \u5167\u3002\n\u82e5\u70ba Home Assistant OS\u3001\u5247\u61c9\u8a72\u70ba `/config/.storage/knx/`\n\u4f8b\u5982\uff1a`my_project.knxkeys`", + "knxkeys_password": "\u81ea ETS \u532f\u51fa\u6a94\u6848\u4e2d\u9032\u884c\u8a2d\u5b9a\u3002" + }, + "description": "\u8acb\u8f38\u5165 `.knxkeys` \u6a94\u6848\u8cc7\u8a0a\u3002" + }, + "secure_manual": { + "data": { + "device_authentication": "\u88dd\u7f6e\u8a8d\u8b49\u5bc6\u78bc", + "user_id": "\u4f7f\u7528\u8005 ID", + "user_password": "\u4f7f\u7528\u8005\u5bc6\u78bc" + }, + "data_description": { + "device_authentication": "\u65bc EST \u4ecb\u9762\u4e2d 'IP' \u9762\u677f\u9032\u884c\u8a2d\u5b9a\u3002", + "user_id": "\u901a\u5e38\u70ba\u901a\u9053\u6578 +1\u3002\u56e0\u6b64 'Tunnel 2' \u5c07\u5177\u6709\u4f7f\u7528\u8005 ID '3'\u3002", + "user_password": "\u65bc ETS \u901a\u9053 'Properties' \u9762\u677f\u53ef\u8a2d\u5b9a\u6307\u5b9a\u901a\u9053\u9023\u7dda\u5bc6\u78bc\u3002" + }, + "description": "\u8acb\u8f38\u5165 IP \u52a0\u5bc6\u8cc7\u8a0a\u3002" + }, + "secure_tunneling": { + "description": "\u9078\u64c7\u5982\u4f55\u8a2d\u5b9a KNX/IP \u52a0\u5bc6\u3002", + "menu_options": { + "secure_knxkeys": "\u4f7f\u7528\u5305\u542b IP \u52a0\u5bc6\u91d1\u8000\u7684 knxkeys \u6a94\u6848", + "secure_manual": "\u624b\u52d5\u8a2d\u5b9a IP \u52a0\u5bc6\u91d1\u8000" + } + }, "tunnel": { "data": { "gateway": "KNX \u901a\u9053\u9023\u7dda" @@ -48,11 +92,19 @@ "data": { "connection_type": "KNX \u9023\u7dda\u985e\u5225", "individual_address": "\u9810\u8a2d\u500b\u5225\u4f4d\u5740", - "local_ip": "Home Assistant \u672c\u5730\u7aef IP\uff08\u586b\u5165 0.0.0.0 \u555f\u7528\u81ea\u52d5\u5075\u6e2c\uff09", - "multicast_group": "\u4f7f\u7528\u65bc\u8def\u7531\u8207\u641c\u7d22\u7684 Multicast \u7fa4\u7d44", - "multicast_port": "\u4f7f\u7528\u65bc\u8def\u7531\u8207\u641c\u7d22\u7684 Multicast \u901a\u8a0a\u57e0", - "rate_limit": "\u6700\u5927\u6bcf\u79d2\u767c\u51fa Telegram", - "state_updater": "\u7531 KNX Bus \u8b80\u53d6\u72c0\u614b\u5168\u555f\u7528" + "local_ip": "Home Assistant \u672c\u5730\u7aef IP", + "multicast_group": "Multicast \u7fa4\u7d44", + "multicast_port": "Multicast \u901a\u8a0a\u57e0", + "rate_limit": "\u983b\u7387\u9650\u5236", + "state_updater": "\u88dd\u614b\u66f4\u65b0\u5668" + }, + "data_description": { + "individual_address": "Home Assistant \u6240\u4f7f\u7528\u4e4b KNX \u4f4d\u5740\u3002\u4f8b\u5982\uff1a`0.0.4`", + "local_ip": "\u4f7f\u7528 `0.0.0.0` \u9032\u884c\u81ea\u52d5\u641c\u7d22\u3002", + "multicast_group": "\u4f7f\u7528\u65bc\u8def\u7531\u8207\u81ea\u52d5\u641c\u7d22\u3002\u9810\u8a2d\u503c\uff1a`224.0.23.12`", + "multicast_port": "\u4f7f\u7528\u65bc\u8def\u7531\u8207\u81ea\u52d5\u641c\u7d22\u3002\u9810\u8a2d\u503c\uff1a`3671`", + "rate_limit": "\u6bcf\u79d2\u6700\u5927 Telegram \u767c\u9001\u91cf\u3002\u5efa\u8b70\uff1a20 - 40", + "state_updater": "\u5168\u5c40\u958b\u555f\u6216\u95dc\u9589\u81ea KNX Bus \u8b80\u53d6\u72c0\u614b\u3002\u7576\u95dc\u9589\u6642\u3001Home Assistant \u5c07\u4e0d\u6703\u4e3b\u52d5\u5f9e KNX Bus \u7372\u53d6\u72c0\u614b\uff0c`sync_state` \u5be6\u9ad4\u9078\u9805\u5c07\u4e0d\u5177\u6548\u679c\u3002" } }, "tunnel": { @@ -62,6 +114,10 @@ "port": "\u901a\u8a0a\u57e0", "route_back": "\u8def\u7531\u8fd4\u56de / NAT \u6a21\u5f0f", "tunneling_type": "KNX \u901a\u9053\u985e\u5225" + }, + "data_description": { + "host": "KNX/IP \u901a\u9053\u88dd\u7f6e IP \u4f4d\u5740\u3002", + "port": "KNX/IP \u901a\u9053\u88dd\u7f6e\u901a\u8a0a\u57e0\u3002" } } } diff --git a/homeassistant/components/konnected/translations/fr.json b/homeassistant/components/konnected/translations/fr.json index 2ddd335fa9e..4b84efa351d 100644 --- a/homeassistant/components/konnected/translations/fr.json +++ b/homeassistant/components/konnected/translations/fr.json @@ -97,7 +97,7 @@ "options_switch": { "data": { "activation": "Sortie lorsque activ\u00e9", - "momentary": "Dur\u00e9e de l'impulsion (ms) (facultatif)", + "momentary": "Dur\u00e9e de l'impulsion (en millisecondes, facultatif)", "more_states": "Configurer des \u00e9tats suppl\u00e9mentaires pour cette zone", "name": "Nom (facultatif)", "pause": "Pause entre les impulsions (ms) (facultatif)", diff --git a/homeassistant/components/konnected/translations/hu.json b/homeassistant/components/konnected/translations/hu.json index e634727593b..c40b1823424 100644 --- a/homeassistant/components/konnected/translations/hu.json +++ b/homeassistant/components/konnected/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "cannot_connect": "Sikertelen csatlakoz\u00e1s", "not_konn_panel": "Nem felismert Konnected.io eszk\u00f6z", "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" @@ -41,7 +41,7 @@ "options_binary": { "data": { "inverse": "Invert\u00e1lja a nyitott/z\u00e1rt \u00e1llapotot", - "name": "N\u00e9v (nem k\u00f6telez\u0151)", + "name": "Elnevez\u00e9s (nem k\u00f6telez\u0151)", "type": "Bin\u00e1ris \u00e9rz\u00e9kel\u0151 t\u00edpusa" }, "description": "{zone} opci\u00f3k", @@ -49,7 +49,7 @@ }, "options_digital": { "data": { - "name": "N\u00e9v (nem k\u00f6telez\u0151)", + "name": "Elnevez\u00e9s (nem k\u00f6telez\u0151)", "poll_interval": "Lek\u00e9rdez\u00e9si id\u0151k\u00f6z (perc) (opcion\u00e1lis)", "type": "\u00c9rz\u00e9kel\u0151 t\u00edpusa" }, @@ -99,7 +99,7 @@ "activation": "Kimenet bekapcsolt \u00e1llapotban", "momentary": "Impulzus id\u0151tartama (ms) (opcion\u00e1lis)", "more_states": "Tov\u00e1bbi \u00e1llapotok konfigur\u00e1l\u00e1sa ehhez a z\u00f3n\u00e1hoz", - "name": "N\u00e9v (nem k\u00f6telez\u0151)", + "name": "Elnevez\u00e9s (nem k\u00f6telez\u0151)", "pause": "Sz\u00fcnet impulzusok k\u00f6z\u00f6tt (ms) (opcion\u00e1lis)", "repeat": "Ism\u00e9tl\u00e9si id\u0151k (-1 = v\u00e9gtelen) (opcion\u00e1lis)" }, diff --git a/homeassistant/components/konnected/translations/it.json b/homeassistant/components/konnected/translations/it.json index 81127f0dff2..682a27b50d0 100644 --- a/homeassistant/components/konnected/translations/it.json +++ b/homeassistant/components/konnected/translations/it.json @@ -34,8 +34,8 @@ }, "error": { "bad_host": "URL host API di sostituzione non valido", - "one": "Pi\u00f9", - "other": "Altri" + "one": "Vuoto", + "other": "Vuoti" }, "step": { "options_binary": { @@ -92,7 +92,7 @@ "override_api_host": "Sovrascrivi l'URL predefinito del pannello host API di Home Assistant" }, "description": "Seleziona il comportamento desiderato per il tuo pannello", - "title": "Configura Altro" + "title": "Configura altro" }, "options_switch": { "data": { diff --git a/homeassistant/components/konnected/translations/pt-BR.json b/homeassistant/components/konnected/translations/pt-BR.json index b49b487ab0d..e3079fc50f7 100644 --- a/homeassistant/components/konnected/translations/pt-BR.json +++ b/homeassistant/components/konnected/translations/pt-BR.json @@ -102,7 +102,7 @@ "repeat": "Intervalo para repetir (-1=infinito) (opcional)" }, "description": "Selecione as op\u00e7\u00f5es para o switch conectado a {zone}: estado {state}", - "title": "Configurar o switch de sa\u00edda" + "title": "Configure o interruptor de sa\u00edda" } } } diff --git a/homeassistant/components/kostal_plenticore/translations/ca.json b/homeassistant/components/kostal_plenticore/translations/ca.json index 2ce39d904a6..fe22d6e3acd 100644 --- a/homeassistant/components/kostal_plenticore/translations/ca.json +++ b/homeassistant/components/kostal_plenticore/translations/ca.json @@ -16,6 +16,5 @@ } } } - }, - "title": "Inversor solar Kostal Plenticore" + } } \ No newline at end of file diff --git a/homeassistant/components/kostal_plenticore/translations/de.json b/homeassistant/components/kostal_plenticore/translations/de.json index dfd568f937c..095487fff3f 100644 --- a/homeassistant/components/kostal_plenticore/translations/de.json +++ b/homeassistant/components/kostal_plenticore/translations/de.json @@ -16,6 +16,5 @@ } } } - }, - "title": "Kostal Plenticore Solar-Wechselrichter" + } } \ No newline at end of file diff --git a/homeassistant/components/kostal_plenticore/translations/el.json b/homeassistant/components/kostal_plenticore/translations/el.json index 518070a76ef..c29ca36535e 100644 --- a/homeassistant/components/kostal_plenticore/translations/el.json +++ b/homeassistant/components/kostal_plenticore/translations/el.json @@ -16,6 +16,5 @@ } } } - }, - "title": "\u0397\u03bb\u03b9\u03b1\u03ba\u03cc\u03c2 \u03bc\u03b5\u03c4\u03b1\u03c4\u03c1\u03bf\u03c0\u03ad\u03b1\u03c2 Kostal Plenticore" + } } \ No newline at end of file diff --git a/homeassistant/components/kostal_plenticore/translations/en.json b/homeassistant/components/kostal_plenticore/translations/en.json index a058336b077..f9334da7aad 100644 --- a/homeassistant/components/kostal_plenticore/translations/en.json +++ b/homeassistant/components/kostal_plenticore/translations/en.json @@ -16,6 +16,5 @@ } } } - }, - "title": "Kostal Plenticore Solar Inverter" + } } \ No newline at end of file diff --git a/homeassistant/components/kostal_plenticore/translations/es.json b/homeassistant/components/kostal_plenticore/translations/es.json index e763acfbe4d..66eed9e0642 100644 --- a/homeassistant/components/kostal_plenticore/translations/es.json +++ b/homeassistant/components/kostal_plenticore/translations/es.json @@ -16,6 +16,5 @@ } } } - }, - "title": "Inversor solar Kostal Plenticore" + } } \ No newline at end of file diff --git a/homeassistant/components/kostal_plenticore/translations/et.json b/homeassistant/components/kostal_plenticore/translations/et.json index c96935d5db8..6b090a0c959 100644 --- a/homeassistant/components/kostal_plenticore/translations/et.json +++ b/homeassistant/components/kostal_plenticore/translations/et.json @@ -16,6 +16,5 @@ } } } - }, - "title": "" + } } \ No newline at end of file diff --git a/homeassistant/components/kostal_plenticore/translations/fr.json b/homeassistant/components/kostal_plenticore/translations/fr.json index 66888e8879b..c0f59229275 100644 --- a/homeassistant/components/kostal_plenticore/translations/fr.json +++ b/homeassistant/components/kostal_plenticore/translations/fr.json @@ -16,6 +16,5 @@ } } } - }, - "title": "Onduleur solaire Kostal Plenticore" + } } \ No newline at end of file diff --git a/homeassistant/components/kostal_plenticore/translations/hu.json b/homeassistant/components/kostal_plenticore/translations/hu.json index 3ffe413a82b..10e87e8deca 100644 --- a/homeassistant/components/kostal_plenticore/translations/hu.json +++ b/homeassistant/components/kostal_plenticore/translations/hu.json @@ -16,6 +16,5 @@ } } } - }, - "title": "Kostal Plenticore szol\u00e1r inverter" + } } \ No newline at end of file diff --git a/homeassistant/components/kostal_plenticore/translations/id.json b/homeassistant/components/kostal_plenticore/translations/id.json index c249355f8ca..90c843f5d4d 100644 --- a/homeassistant/components/kostal_plenticore/translations/id.json +++ b/homeassistant/components/kostal_plenticore/translations/id.json @@ -16,6 +16,5 @@ } } } - }, - "title": "Solar Inverter Kostal Plenticore" + } } \ No newline at end of file diff --git a/homeassistant/components/kostal_plenticore/translations/it.json b/homeassistant/components/kostal_plenticore/translations/it.json index 8e46b765fe0..b2b7b688bc4 100644 --- a/homeassistant/components/kostal_plenticore/translations/it.json +++ b/homeassistant/components/kostal_plenticore/translations/it.json @@ -16,6 +16,5 @@ } } } - }, - "title": "Inverter solare Kostal Plenticore" + } } \ No newline at end of file diff --git a/homeassistant/components/kostal_plenticore/translations/ja.json b/homeassistant/components/kostal_plenticore/translations/ja.json index 8a16c8c918e..0526d7f7729 100644 --- a/homeassistant/components/kostal_plenticore/translations/ja.json +++ b/homeassistant/components/kostal_plenticore/translations/ja.json @@ -16,6 +16,5 @@ } } } - }, - "title": "Kostal Plenticore Solar Inverter" + } } \ No newline at end of file diff --git a/homeassistant/components/kostal_plenticore/translations/nl.json b/homeassistant/components/kostal_plenticore/translations/nl.json index 83a77fb6e0d..05bdafd606b 100644 --- a/homeassistant/components/kostal_plenticore/translations/nl.json +++ b/homeassistant/components/kostal_plenticore/translations/nl.json @@ -16,6 +16,5 @@ } } } - }, - "title": "Kostal Plenticore omvormer voor zonne-energie" + } } \ No newline at end of file diff --git a/homeassistant/components/kostal_plenticore/translations/no.json b/homeassistant/components/kostal_plenticore/translations/no.json index 0f0d77a83e6..b79a6b1795c 100644 --- a/homeassistant/components/kostal_plenticore/translations/no.json +++ b/homeassistant/components/kostal_plenticore/translations/no.json @@ -16,6 +16,5 @@ } } } - }, - "title": "Kostal Plenticore Solar Inverter" + } } \ No newline at end of file diff --git a/homeassistant/components/kostal_plenticore/translations/pl.json b/homeassistant/components/kostal_plenticore/translations/pl.json index 781bddfc979..c9025af7205 100644 --- a/homeassistant/components/kostal_plenticore/translations/pl.json +++ b/homeassistant/components/kostal_plenticore/translations/pl.json @@ -16,6 +16,5 @@ } } } - }, - "title": "Inwerter solarny Kostal Plenticore" + } } \ No newline at end of file diff --git a/homeassistant/components/kostal_plenticore/translations/pt-BR.json b/homeassistant/components/kostal_plenticore/translations/pt-BR.json index a670c5a41be..b829ba6e92b 100644 --- a/homeassistant/components/kostal_plenticore/translations/pt-BR.json +++ b/homeassistant/components/kostal_plenticore/translations/pt-BR.json @@ -16,6 +16,5 @@ } } } - }, - "title": "Inversor Solar Kostal Plenticore" + } } \ No newline at end of file diff --git a/homeassistant/components/kostal_plenticore/translations/ru.json b/homeassistant/components/kostal_plenticore/translations/ru.json index d272fd0f304..02ecda0034c 100644 --- a/homeassistant/components/kostal_plenticore/translations/ru.json +++ b/homeassistant/components/kostal_plenticore/translations/ru.json @@ -16,6 +16,5 @@ } } } - }, - "title": "Kostal Plenticore Solar Inverter" + } } \ No newline at end of file diff --git a/homeassistant/components/kostal_plenticore/translations/tr.json b/homeassistant/components/kostal_plenticore/translations/tr.json index f0742d20e78..78ade55a949 100644 --- a/homeassistant/components/kostal_plenticore/translations/tr.json +++ b/homeassistant/components/kostal_plenticore/translations/tr.json @@ -16,6 +16,5 @@ } } } - }, - "title": "Kostal Plenticore Solar \u0130nverter" + } } \ No newline at end of file diff --git a/homeassistant/components/kostal_plenticore/translations/zh-Hant.json b/homeassistant/components/kostal_plenticore/translations/zh-Hant.json index f115cf74c89..fa1b3d064be 100644 --- a/homeassistant/components/kostal_plenticore/translations/zh-Hant.json +++ b/homeassistant/components/kostal_plenticore/translations/zh-Hant.json @@ -16,6 +16,5 @@ } } } - }, - "title": "Kostal Plenticore \u592a\u967d\u80fd\u63db\u6d41\u5668" + } } \ No newline at end of file diff --git a/homeassistant/components/kraken/translations/it.json b/homeassistant/components/kraken/translations/it.json index 4b646be7a8d..2fabbc9ad5c 100644 --- a/homeassistant/components/kraken/translations/it.json +++ b/homeassistant/components/kraken/translations/it.json @@ -4,14 +4,14 @@ "already_configured": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione." }, "error": { - "one": "Pi\u00f9", - "other": "Altri" + "one": "Vuoto", + "other": "Vuoti" }, "step": { "user": { "data": { - "one": "Pi\u00f9", - "other": "Altri" + "one": "Vuoto", + "other": "Vuoti" }, "description": "Vuoi iniziare la configurazione?" } diff --git a/homeassistant/components/light/translations/hu.json b/homeassistant/components/light/translations/hu.json index 0be84e20763..986fd5d1787 100644 --- a/homeassistant/components/light/translations/hu.json +++ b/homeassistant/components/light/translations/hu.json @@ -13,6 +13,7 @@ "is_on": "{entity_name} fel van kapcsolva" }, "trigger_type": { + "changed_states": "{entity_name} be- vagy kikapcsolt", "toggled": "{entity_name} \u00e1tkapcsolt", "turned_off": "{entity_name} le lett kapcsolva", "turned_on": "{entity_name} fel lett kapcsolva" diff --git a/homeassistant/components/logi_circle/translations/hu.json b/homeassistant/components/logi_circle/translations/hu.json index f79ab3944dc..947f11e4907 100644 --- a/homeassistant/components/logi_circle/translations/hu.json +++ b/homeassistant/components/logi_circle/translations/hu.json @@ -8,12 +8,12 @@ }, "error": { "authorize_url_timeout": "Id\u0151t\u00fall\u00e9p\u00e9s a hiteles\u00edt\u00e9si URL gener\u00e1l\u00e1sa sor\u00e1n.", - "follow_link": "K\u00e9rem, k\u00f6vesse a hivatkoz\u00e1st \u00e9s hiteles\u00edtse mag\u00e1t miel\u0151tt megnyomn\u00e1 a K\u00fcld\u00e9s gombot", + "follow_link": "K\u00e9rem, k\u00f6vesse a hivatkoz\u00e1st \u00e9s hiteles\u00edtse mag\u00e1t miel\u0151tt folytatn\u00e1", "invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s" }, "step": { "auth": { - "description": "K\u00e9rj\u00fck, k\u00f6vesse az al\u00e1bbi linket, \u00e9s ** Fogadja el ** a LogiCircle -fi\u00f3kj\u00e1hoz val\u00f3 hozz\u00e1f\u00e9r\u00e9st, majd t\u00e9rjen vissza, \u00e9s nyomja meg az al\u00e1bbi ** K\u00fcld\u00e9s ** gombot. \n\n [Link]({authorization_url})", + "description": "K\u00e9rj\u00fck, k\u00f6vesse az al\u00e1bbi linket, \u00e9s ** Fogadja el ** a LogiCircle -fi\u00f3kj\u00e1hoz val\u00f3 hozz\u00e1f\u00e9r\u00e9st, majd t\u00e9rjen vissza, \u00e9s nyomja meg az al\u00e1bbi **Mehet** gombot. \n\n [Link]({authorization_url})", "title": "Hiteles\u00edt\u00e9s a LogiCircle seg\u00edts\u00e9g\u00e9vel" }, "user": { diff --git a/homeassistant/components/logi_circle/translations/it.json b/homeassistant/components/logi_circle/translations/it.json index 1299c4c53e4..fe17a15cae3 100644 --- a/homeassistant/components/logi_circle/translations/it.json +++ b/homeassistant/components/logi_circle/translations/it.json @@ -4,7 +4,7 @@ "already_configured": "L'account \u00e8 gi\u00e0 configurato", "external_error": "Si \u00e8 verificata un'eccezione da un altro flusso.", "external_setup": "Logi Circle configurato con successo da un altro flusso.", - "missing_configuration": "Il componente non \u00e8 configurato. Si prega di seguire la documentazione." + "missing_configuration": "Il componente non \u00e8 configurato. Segui la documentazione." }, "error": { "authorize_url_timeout": "Tempo scaduto nel generare l'URL di autorizzazione.", diff --git a/homeassistant/components/lookin/translations/hu.json b/homeassistant/components/lookin/translations/hu.json index ab18b579bd4..b6db30f8d99 100644 --- a/homeassistant/components/lookin/translations/hu.json +++ b/homeassistant/components/lookin/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "cannot_connect": "Sikertelen csatlakoz\u00e1s", "no_devices_found": "Nem tal\u00e1lhat\u00f3 eszk\u00f6z a h\u00e1l\u00f3zaton" }, @@ -15,7 +15,7 @@ "step": { "device_name": { "data": { - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" } }, "discovery_confirm": { diff --git a/homeassistant/components/luftdaten/translations/hu.json b/homeassistant/components/luftdaten/translations/hu.json index f7a241533da..7439546f796 100644 --- a/homeassistant/components/luftdaten/translations/hu.json +++ b/homeassistant/components/luftdaten/translations/hu.json @@ -9,7 +9,7 @@ "user": { "data": { "show_on_map": "Megjelen\u00edt\u00e9s a t\u00e9rk\u00e9pen", - "station_id": "Luftdaten \u00e9rz\u00e9kel\u0151 ID" + "station_id": "\u00c9rz\u00e9kel\u0151 azonos\u00edt\u00f3" }, "title": "Luftdaten be\u00e1ll\u00edt\u00e1sa" } diff --git a/homeassistant/components/luftdaten/translations/pt-BR.json b/homeassistant/components/luftdaten/translations/pt-BR.json index b4cdaf000ab..82b1f09735b 100644 --- a/homeassistant/components/luftdaten/translations/pt-BR.json +++ b/homeassistant/components/luftdaten/translations/pt-BR.json @@ -8,7 +8,7 @@ "step": { "user": { "data": { - "show_on_map": "Mostrar no mapa?", + "show_on_map": "Mostrar no mapa", "station_id": "ID do Sensor Luftdaten" }, "title": "Definir Luftdaten" diff --git a/homeassistant/components/lutron_caseta/translations/pl.json b/homeassistant/components/lutron_caseta/translations/pl.json index bc4f9d61f39..47e6a07e146 100644 --- a/homeassistant/components/lutron_caseta/translations/pl.json +++ b/homeassistant/components/lutron_caseta/translations/pl.json @@ -23,7 +23,7 @@ "host": "Nazwa hosta lub adres IP" }, "description": "Wprowad\u017a adres IP urz\u0105dzenia", - "title": "Po\u0142\u0105cz si\u0119 automatycznie z mostkiem" + "title": "Automatyczne po\u0142\u0105czenie z mostkiem" } } }, diff --git a/homeassistant/components/lyric/translations/hu.json b/homeassistant/components/lyric/translations/hu.json index 7586310c8a7..b7eac97525c 100644 --- a/homeassistant/components/lyric/translations/hu.json +++ b/homeassistant/components/lyric/translations/hu.json @@ -10,7 +10,7 @@ }, "step": { "pick_implementation": { - "title": "V\u00e1lassz hiteles\u00edt\u00e9si m\u00f3dszert" + "title": "V\u00e1lasszon egy hiteles\u00edt\u00e9si m\u00f3dszert" }, "reauth_confirm": { "description": "A Lyric integr\u00e1ci\u00f3nak \u00fajra hiteles\u00edtenie kell a fi\u00f3kj\u00e1t.", diff --git a/homeassistant/components/lyric/translations/it.json b/homeassistant/components/lyric/translations/it.json index c544598079e..6fb3fb44275 100644 --- a/homeassistant/components/lyric/translations/it.json +++ b/homeassistant/components/lyric/translations/it.json @@ -2,7 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "Tempo scaduto nel generare l'URL di autorizzazione.", - "missing_configuration": "Il componente non \u00e8 configurato. Si prega di seguire la documentazione.", + "missing_configuration": "Il componente non \u00e8 configurato. Segui la documentazione.", "reauth_successful": "La nuova autenticazione \u00e8 stata eseguita correttamente" }, "create_entry": { diff --git a/homeassistant/components/mailgun/translations/ja.json b/homeassistant/components/mailgun/translations/ja.json index 58818dd99de..34c6ced3f38 100644 --- a/homeassistant/components/mailgun/translations/ja.json +++ b/homeassistant/components/mailgun/translations/ja.json @@ -6,7 +6,7 @@ "webhook_not_internet_accessible": "Webhook\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u4fe1\u3059\u308b\u306b\u306f\u3001Home Assistant\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u3001\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002" }, "create_entry": { - "default": "Home Assistant\u306b\u30a4\u30d9\u30f3\u30c8\u3092\u9001\u4fe1\u3059\u308b\u306b\u306f\u3001[Webhooks with Mailgun]({mailgun_url})\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\n\n\u4ee5\u4e0b\u306e\u60c5\u5831\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\n- URL: `{webhook_url}`\n- Method(\u65b9\u5f0f): POST\n- Content Type: application/x-www-fjsorm-urlencoded\n\n\u53d7\u4fe1\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306b\u30aa\u30fc\u30c8\u30e1\u30fc\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001[\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8]({docs_url})\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002" + "default": "Home Assistant\u306b\u30a4\u30d9\u30f3\u30c8\u3092\u9001\u4fe1\u3059\u308b\u306b\u306f\u3001[Webhooks with Mailgun]({mailgun_url})\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\n\n\u4ee5\u4e0b\u306e\u60c5\u5831\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\n- URL: `{webhook_url}`\n- Method(\u65b9\u5f0f): POST\n- Content Type(\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u7a2e\u985e): application/x-www-fjsorm-urlencoded\n\n\u53d7\u4fe1\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306b\u30aa\u30fc\u30c8\u30e1\u30fc\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001[\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8]({docs_url})\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002" }, "step": { "user": { diff --git a/homeassistant/components/mazda/translations/ca.json b/homeassistant/components/mazda/translations/ca.json index 17ef370b007..2289ba3986c 100644 --- a/homeassistant/components/mazda/translations/ca.json +++ b/homeassistant/components/mazda/translations/ca.json @@ -17,10 +17,8 @@ "password": "Contrasenya", "region": "Regi\u00f3" }, - "description": "Introdueix el correu electr\u00f2nic i la contrasenya que utilitzes per iniciar sessi\u00f3 a l'aplicaci\u00f3 de m\u00f2bil MyMazda.", - "title": "Serveis connectats de Mazda - Afegeix un compte" + "description": "Introdueix el correu electr\u00f2nic i la contrasenya que utilitzes per iniciar sessi\u00f3 a l'aplicaci\u00f3 de m\u00f2bil MyMazda." } } - }, - "title": "Serveis connectats de Mazda" + } } \ No newline at end of file diff --git a/homeassistant/components/mazda/translations/de.json b/homeassistant/components/mazda/translations/de.json index 58409ec9b8a..ba116a6fe2c 100644 --- a/homeassistant/components/mazda/translations/de.json +++ b/homeassistant/components/mazda/translations/de.json @@ -17,10 +17,8 @@ "password": "Passwort", "region": "Region" }, - "description": "Bitte gib die E-Mail-Adresse und das Passwort ein, die du f\u00fcr die Anmeldung bei der MyMazda Mobile App verwendest.", - "title": "Mazda Connected Services - Konto hinzuf\u00fcgen" + "description": "Bitte gib die E-Mail-Adresse und das Passwort ein, die du f\u00fcr die Anmeldung bei der MyMazda Mobile App verwendest." } } - }, - "title": "Mazda Connected Services" + } } \ No newline at end of file diff --git a/homeassistant/components/mazda/translations/el.json b/homeassistant/components/mazda/translations/el.json index c95e8ad4747..7fbf538de63 100644 --- a/homeassistant/components/mazda/translations/el.json +++ b/homeassistant/components/mazda/translations/el.json @@ -17,10 +17,8 @@ "password": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", "region": "\u03a0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae" }, - "description": "\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b7\u03bb\u03b5\u03ba\u03c4\u03c1\u03bf\u03bd\u03b9\u03ba\u03bf\u03cd \u03c4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b5\u03af\u03bf\u03c5 \u03ba\u03b1\u03b9 \u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b5 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae MyMazda \u03b3\u03b9\u03b1 \u03ba\u03b9\u03bd\u03b7\u03c4\u03ac.", - "title": "Mazda Connected Services - \u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd" + "description": "\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b7\u03bb\u03b5\u03ba\u03c4\u03c1\u03bf\u03bd\u03b9\u03ba\u03bf\u03cd \u03c4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b5\u03af\u03bf\u03c5 \u03ba\u03b1\u03b9 \u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b5 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae MyMazda \u03b3\u03b9\u03b1 \u03ba\u03b9\u03bd\u03b7\u03c4\u03ac." } } - }, - "title": "Mazda Connected Services" + } } \ No newline at end of file diff --git a/homeassistant/components/mazda/translations/en.json b/homeassistant/components/mazda/translations/en.json index b483947aaa0..9130a1b6334 100644 --- a/homeassistant/components/mazda/translations/en.json +++ b/homeassistant/components/mazda/translations/en.json @@ -17,10 +17,8 @@ "password": "Password", "region": "Region" }, - "description": "Please enter the email address and password you use to log into the MyMazda mobile app.", - "title": "Mazda Connected Services - Add Account" + "description": "Please enter the email address and password you use to log into the MyMazda mobile app." } } - }, - "title": "Mazda Connected Services" + } } \ No newline at end of file diff --git a/homeassistant/components/mazda/translations/es.json b/homeassistant/components/mazda/translations/es.json index a9ffa26787c..f0ba0f4da49 100644 --- a/homeassistant/components/mazda/translations/es.json +++ b/homeassistant/components/mazda/translations/es.json @@ -17,10 +17,8 @@ "password": "Contrase\u00f1a", "region": "Regi\u00f3n" }, - "description": "Introduce la direcci\u00f3n de correo electr\u00f3nico y la contrase\u00f1a que utilizas para iniciar sesi\u00f3n en la aplicaci\u00f3n m\u00f3vil MyMazda.", - "title": "Servicios Conectados de Mazda - A\u00f1adir cuenta" + "description": "Introduce la direcci\u00f3n de correo electr\u00f3nico y la contrase\u00f1a que utilizas para iniciar sesi\u00f3n en la aplicaci\u00f3n m\u00f3vil MyMazda." } } - }, - "title": "Servicios Conectados de Mazda" + } } \ No newline at end of file diff --git a/homeassistant/components/mazda/translations/et.json b/homeassistant/components/mazda/translations/et.json index 39ead99765c..1b6cac11093 100644 --- a/homeassistant/components/mazda/translations/et.json +++ b/homeassistant/components/mazda/translations/et.json @@ -17,10 +17,8 @@ "password": "Salas\u00f5na", "region": "Piirkond" }, - "description": "Sisesta e-posti aadress ja salas\u00f5na mida kasutad MyMazda mobiilirakendusse sisselogimiseks.", - "title": "Mazda Connected Services - lisa konto" + "description": "Sisesta e-posti aadress ja salas\u00f5na mida kasutad MyMazda mobiilirakendusse sisselogimiseks." } } - }, - "title": "Mazda Connected Services" + } } \ No newline at end of file diff --git a/homeassistant/components/mazda/translations/fr.json b/homeassistant/components/mazda/translations/fr.json index 8024852de46..d42ab5453c4 100644 --- a/homeassistant/components/mazda/translations/fr.json +++ b/homeassistant/components/mazda/translations/fr.json @@ -17,10 +17,8 @@ "password": "Mot de passe", "region": "R\u00e9gion" }, - "description": "Veuillez saisir l'adresse e-mail et le mot de passe que vous utilisez pour vous connecter \u00e0 l'application mobile MyMazda.", - "title": "Services connect\u00e9s Mazda - Ajouter un compte" + "description": "Veuillez saisir l'adresse e-mail et le mot de passe que vous utilisez pour vous connecter \u00e0 l'application mobile MyMazda." } } - }, - "title": "Services connect\u00e9s Mazda" + } } \ No newline at end of file diff --git a/homeassistant/components/mazda/translations/hu.json b/homeassistant/components/mazda/translations/hu.json index ec62b456021..42afc763687 100644 --- a/homeassistant/components/mazda/translations/hu.json +++ b/homeassistant/components/mazda/translations/hu.json @@ -17,10 +17,8 @@ "password": "Jelsz\u00f3", "region": "R\u00e9gi\u00f3" }, - "description": "K\u00e9rj\u00fck, adja meg azt az e-mail c\u00edmet \u00e9s jelsz\u00f3t, amelyet a MyMazda mobilalkalmaz\u00e1sba val\u00f3 bejelentkez\u00e9shez haszn\u00e1lt.", - "title": "Mazda Connected Services - Fi\u00f3k hozz\u00e1ad\u00e1sa" + "description": "K\u00e9rj\u00fck, adja meg azt az e-mail c\u00edmet \u00e9s jelsz\u00f3t, amelyet a MyMazda mobilalkalmaz\u00e1sba val\u00f3 bejelentkez\u00e9shez haszn\u00e1lt." } } - }, - "title": "Mazda Connected Services" + } } \ No newline at end of file diff --git a/homeassistant/components/mazda/translations/id.json b/homeassistant/components/mazda/translations/id.json index fdcc736162e..cd4f73f23f6 100644 --- a/homeassistant/components/mazda/translations/id.json +++ b/homeassistant/components/mazda/translations/id.json @@ -17,10 +17,8 @@ "password": "Kata Sandi", "region": "Wilayah" }, - "description": "Masukkan alamat email dan kata sandi yang digunakan untuk masuk ke aplikasi seluler MyMazda.", - "title": "Mazda Connected Services - Tambahkan Akun" + "description": "Masukkan alamat email dan kata sandi yang digunakan untuk masuk ke aplikasi seluler MyMazda." } } - }, - "title": "Mazda Connected Services" + } } \ No newline at end of file diff --git a/homeassistant/components/mazda/translations/it.json b/homeassistant/components/mazda/translations/it.json index 21d003b030b..920e2b5ce3c 100644 --- a/homeassistant/components/mazda/translations/it.json +++ b/homeassistant/components/mazda/translations/it.json @@ -17,10 +17,8 @@ "password": "Password", "region": "Area geografica" }, - "description": "Inserisci l'indirizzo email e la password che utilizzi per accedere all'app mobile MyMazda.", - "title": "Mazda Connected Services - Aggiungi account" + "description": "Inserisci l'indirizzo email e la password che utilizzi per accedere all'app mobile MyMazda." } } - }, - "title": "Mazda Connected Services" + } } \ No newline at end of file diff --git a/homeassistant/components/mazda/translations/ja.json b/homeassistant/components/mazda/translations/ja.json index 3bf5b7f88b3..690f5a097de 100644 --- a/homeassistant/components/mazda/translations/ja.json +++ b/homeassistant/components/mazda/translations/ja.json @@ -17,10 +17,8 @@ "password": "\u30d1\u30b9\u30ef\u30fc\u30c9", "region": "\u30ea\u30fc\u30b8\u30e7\u30f3" }, - "description": "MyMazda\u30e2\u30d0\u30a4\u30eb\u30a2\u30d7\u30ea\u306b\u30ed\u30b0\u30a4\u30f3\u3059\u308b\u969b\u306b\u4f7f\u7528\u3059\u308b\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002", - "title": "\u30de\u30c4\u30c0 \u30b3\u30cd\u30af\u30c6\u30c3\u30c9\u30b5\u30fc\u30d3\u30b9 - \u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u8ffd\u52a0" + "description": "MyMazda\u30e2\u30d0\u30a4\u30eb\u30a2\u30d7\u30ea\u306b\u30ed\u30b0\u30a4\u30f3\u3059\u308b\u969b\u306b\u4f7f\u7528\u3059\u308b\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002" } } - }, - "title": "\u30de\u30c4\u30c0 \u30b3\u30cd\u30af\u30c6\u30c3\u30c9\u30b5\u30fc\u30d3\u30b9" + } } \ No newline at end of file diff --git a/homeassistant/components/mazda/translations/ko.json b/homeassistant/components/mazda/translations/ko.json index 6023a053a7e..b95170c6bbd 100644 --- a/homeassistant/components/mazda/translations/ko.json +++ b/homeassistant/components/mazda/translations/ko.json @@ -17,10 +17,8 @@ "password": "\ube44\ubc00\ubc88\ud638", "region": "\uc9c0\uc5ed" }, - "description": "MyMazda \ubaa8\ubc14\uc77c \uc571\uc5d0 \ub85c\uadf8\uc778\ud558\uae30 \uc704\ud574 \uc0ac\uc6a9\ud558\ub294 \uc774\uba54\uc77c \uc8fc\uc18c\uc640 \ube44\ubc00\ubc88\ud638\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694.", - "title": "Mazda Connected Services - \uacc4\uc815 \ucd94\uac00\ud558\uae30" + "description": "MyMazda \ubaa8\ubc14\uc77c \uc571\uc5d0 \ub85c\uadf8\uc778\ud558\uae30 \uc704\ud574 \uc0ac\uc6a9\ud558\ub294 \uc774\uba54\uc77c \uc8fc\uc18c\uc640 \ube44\ubc00\ubc88\ud638\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694." } } - }, - "title": "Mazda Connected Services" + } } \ No newline at end of file diff --git a/homeassistant/components/mazda/translations/nl.json b/homeassistant/components/mazda/translations/nl.json index 3370fe29bb8..f7532b9fc45 100644 --- a/homeassistant/components/mazda/translations/nl.json +++ b/homeassistant/components/mazda/translations/nl.json @@ -17,10 +17,8 @@ "password": "Wachtwoord", "region": "Regio" }, - "description": "Voer het e-mailadres en wachtwoord in dat u gebruikt om in te loggen op de MyMazda mobiele app.", - "title": "Mazda Connected Services - Account toevoegen" + "description": "Voer het e-mailadres en wachtwoord in dat u gebruikt om in te loggen op de MyMazda mobiele app." } } - }, - "title": "Mazda Connected Services" + } } \ No newline at end of file diff --git a/homeassistant/components/mazda/translations/no.json b/homeassistant/components/mazda/translations/no.json index 3f4db47d2b0..875e21e8c04 100644 --- a/homeassistant/components/mazda/translations/no.json +++ b/homeassistant/components/mazda/translations/no.json @@ -17,10 +17,8 @@ "password": "Passord", "region": "Region" }, - "description": "Vennligst skriv inn e-postadressen og passordet du bruker for \u00e5 logge p\u00e5 MyMazda-mobilappen.", - "title": "Mazda Connected Services - Legg til konto" + "description": "Vennligst skriv inn e-postadressen og passordet du bruker for \u00e5 logge p\u00e5 MyMazda-mobilappen." } } - }, - "title": "Mazda Connected Services" + } } \ No newline at end of file diff --git a/homeassistant/components/mazda/translations/pl.json b/homeassistant/components/mazda/translations/pl.json index fdd1a8c5ce9..d4aea82b6c1 100644 --- a/homeassistant/components/mazda/translations/pl.json +++ b/homeassistant/components/mazda/translations/pl.json @@ -17,10 +17,8 @@ "password": "Has\u0142o", "region": "Region" }, - "description": "Wprowad\u017a adres e-mail i has\u0142o, kt\u00f3rych u\u017cywasz do logowania si\u0119 do aplikacji mobilnej MyMazda.", - "title": "Mazda Connected Services - Dodawanie konta" + "description": "Wprowad\u017a adres e-mail i has\u0142o, kt\u00f3rych u\u017cywasz do logowania si\u0119 do aplikacji mobilnej MyMazda." } } - }, - "title": "Mazda Connected Services" + } } \ No newline at end of file diff --git a/homeassistant/components/mazda/translations/pt-BR.json b/homeassistant/components/mazda/translations/pt-BR.json index 7b28450bfd0..5dcfd6d59ab 100644 --- a/homeassistant/components/mazda/translations/pt-BR.json +++ b/homeassistant/components/mazda/translations/pt-BR.json @@ -17,10 +17,8 @@ "password": "Senha", "region": "Regi\u00e3o" }, - "description": "Digite o endere\u00e7o de e-mail e senha que voc\u00ea usa para entrar no aplicativo MyMazda.", - "title": "Mazda Connected Services - Adicionar conta" + "description": "Digite o endere\u00e7o de e-mail e senha que voc\u00ea usa para entrar no aplicativo MyMazda." } } - }, - "title": "Servi\u00e7os conectados Mazda" + } } \ No newline at end of file diff --git a/homeassistant/components/mazda/translations/ru.json b/homeassistant/components/mazda/translations/ru.json index cf949416274..4d5082bcc49 100644 --- a/homeassistant/components/mazda/translations/ru.json +++ b/homeassistant/components/mazda/translations/ru.json @@ -17,10 +17,8 @@ "password": "\u041f\u0430\u0440\u043e\u043b\u044c", "region": "\u0420\u0435\u0433\u0438\u043e\u043d" }, - "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0438 \u043f\u0430\u0440\u043e\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0412\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0430 \u0432 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 MyMazda.", - "title": "Mazda Connected Services" + "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0438 \u043f\u0430\u0440\u043e\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0412\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0430 \u0432 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 MyMazda." } } - }, - "title": "Mazda Connected Services" + } } \ No newline at end of file diff --git a/homeassistant/components/mazda/translations/tr.json b/homeassistant/components/mazda/translations/tr.json index 6c574d1de0b..788cee66b00 100644 --- a/homeassistant/components/mazda/translations/tr.json +++ b/homeassistant/components/mazda/translations/tr.json @@ -17,10 +17,8 @@ "password": "Parola", "region": "B\u00f6lge" }, - "description": "L\u00fctfen MyMazda mobil uygulamas\u0131na giri\u015f yapmak i\u00e7in kulland\u0131\u011f\u0131n\u0131z e-posta adresini ve \u015fifreyi giriniz.", - "title": "Mazda Connected Services - Hesap Ekle" + "description": "L\u00fctfen MyMazda mobil uygulamas\u0131na giri\u015f yapmak i\u00e7in kulland\u0131\u011f\u0131n\u0131z e-posta adresini ve \u015fifreyi giriniz." } } - }, - "title": "Mazda Connected Services" + } } \ No newline at end of file diff --git a/homeassistant/components/mazda/translations/zh-Hant.json b/homeassistant/components/mazda/translations/zh-Hant.json index 0c0e3f0fd8c..bb52f321766 100644 --- a/homeassistant/components/mazda/translations/zh-Hant.json +++ b/homeassistant/components/mazda/translations/zh-Hant.json @@ -17,10 +17,8 @@ "password": "\u5bc6\u78bc", "region": "\u5340\u57df" }, - "description": "\u8acb\u8f38\u5165\u767b\u5165MyMazda \u884c\u52d5 App \u4e4b Email \u5730\u5740\u8207\u5bc6\u78bc\u3002", - "title": "Mazda Connected \u670d\u52d9 - \u65b0\u589e\u5e33\u865f" + "description": "\u8acb\u8f38\u5165\u767b\u5165MyMazda \u884c\u52d5 App \u4e4b Email \u5730\u5740\u8207\u5bc6\u78bc\u3002" } } - }, - "title": "Mazda Connected \u670d\u52d9" + } } \ No newline at end of file diff --git a/homeassistant/components/meater/translations/bg.json b/homeassistant/components/meater/translations/bg.json new file mode 100644 index 00000000000..e5396fbc999 --- /dev/null +++ b/homeassistant/components/meater/translations/bg.json @@ -0,0 +1,17 @@ +{ + "config": { + "error": { + "invalid_auth": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0432\u0430\u043d\u0435", + "unknown_auth_error": "\u041d\u0435\u043e\u0447\u0430\u043a\u0432\u0430\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430" + }, + "step": { + "user": { + "data": { + "password": "\u041f\u0430\u0440\u043e\u043b\u0430", + "username": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e \u0438\u043c\u0435" + }, + "description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0430\u043a\u0430\u0443\u043d\u0442\u0430 \u0441\u0438 \u0432 Meater Cloud." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/meater/translations/ca.json b/homeassistant/components/meater/translations/ca.json new file mode 100644 index 00000000000..0174767bc52 --- /dev/null +++ b/homeassistant/components/meater/translations/ca.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "invalid_auth": "Autenticaci\u00f3 inv\u00e0lida", + "service_unavailable_error": "L'API no est\u00e0 disponible actualment, torna-ho a provar m\u00e9s tard.", + "unknown_auth_error": "Error inesperat" + }, + "step": { + "user": { + "data": { + "password": "Contrasenya", + "username": "Nom d'usuari" + }, + "description": "Configura el teu compte de Meater Cloud." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/meater/translations/cs.json b/homeassistant/components/meater/translations/cs.json new file mode 100644 index 00000000000..72c98504526 --- /dev/null +++ b/homeassistant/components/meater/translations/cs.json @@ -0,0 +1,16 @@ +{ + "config": { + "error": { + "invalid_auth": "Neplatn\u00e9 ov\u011b\u0159en\u00ed", + "unknown_auth_error": "Neo\u010dek\u00e1van\u00e1 chyba" + }, + "step": { + "user": { + "data": { + "password": "Heslo", + "username": "U\u017eivatelsk\u00e9 jm\u00e9no" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/meater/translations/de.json b/homeassistant/components/meater/translations/de.json new file mode 100644 index 00000000000..ed143e26b4c --- /dev/null +++ b/homeassistant/components/meater/translations/de.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "invalid_auth": "Ung\u00fcltige Authentifizierung", + "service_unavailable_error": "Die API ist derzeit nicht verf\u00fcgbar. Bitte versuche es sp\u00e4ter erneut.", + "unknown_auth_error": "Unerwarteter Fehler" + }, + "step": { + "user": { + "data": { + "password": "Passwort", + "username": "Benutzername" + }, + "description": "Richte dein Meater Cloud-Konto ein." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/meater/translations/el.json b/homeassistant/components/meater/translations/el.json new file mode 100644 index 00000000000..2d02110dd49 --- /dev/null +++ b/homeassistant/components/meater/translations/el.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "invalid_auth": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", + "service_unavailable_error": "\u03a4\u03bf API \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03c0\u03c1\u03bf\u03c2 \u03c4\u03bf \u03c0\u03b1\u03c1\u03cc\u03bd \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03bf, \u03b4\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac \u03b1\u03c1\u03b3\u03cc\u03c4\u03b5\u03c1\u03b1.", + "unknown_auth_error": "\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" + }, + "step": { + "user": { + "data": { + "password": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", + "username": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7" + }, + "description": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03c4\u03b5 \u03c4\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc \u03c3\u03b1\u03c2 \u03c3\u03c4\u03bf Meater Cloud." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/meater/translations/et.json b/homeassistant/components/meater/translations/et.json new file mode 100644 index 00000000000..55328467d3a --- /dev/null +++ b/homeassistant/components/meater/translations/et.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "invalid_auth": "Tuvastamine nurjus", + "service_unavailable_error": "API pole praegu saadaval, proovi hiljem uuesti.", + "unknown_auth_error": "Ootamatu t\u00f5rge" + }, + "step": { + "user": { + "data": { + "password": "Salas\u00f5na", + "username": "Kasutajanimi" + }, + "description": "Seadista Meater Cloudi konto." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/meater/translations/fr.json b/homeassistant/components/meater/translations/fr.json new file mode 100644 index 00000000000..9940cb6e24b --- /dev/null +++ b/homeassistant/components/meater/translations/fr.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "invalid_auth": "Authentification non valide", + "service_unavailable_error": "L'API est actuellement indisponible, veuillez r\u00e9essayer ult\u00e9rieurement.", + "unknown_auth_error": "Erreur inattendue" + }, + "step": { + "user": { + "data": { + "password": "Mot de passe", + "username": "Nom d'utilisateur" + }, + "description": "Configurez votre compte Meater Cloud." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/meater/translations/he.json b/homeassistant/components/meater/translations/he.json new file mode 100644 index 00000000000..f1376b2cf0d --- /dev/null +++ b/homeassistant/components/meater/translations/he.json @@ -0,0 +1,16 @@ +{ + "config": { + "error": { + "invalid_auth": "\u05d0\u05d9\u05de\u05d5\u05ea \u05dc\u05d0 \u05d7\u05d5\u05e7\u05d9", + "unknown_auth_error": "\u05e9\u05d2\u05d9\u05d0\u05d4 \u05d1\u05dc\u05ea\u05d9 \u05e6\u05e4\u05d5\u05d9\u05d4" + }, + "step": { + "user": { + "data": { + "password": "\u05e1\u05d9\u05e1\u05de\u05d4", + "username": "\u05e9\u05dd \u05de\u05e9\u05ea\u05de\u05e9" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/meater/translations/hu.json b/homeassistant/components/meater/translations/hu.json new file mode 100644 index 00000000000..fd55bae3bdd --- /dev/null +++ b/homeassistant/components/meater/translations/hu.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s", + "service_unavailable_error": "Az API jelenleg nem el\u00e9rhet\u0151, k\u00e9rj\u00fck, pr\u00f3b\u00e1lja meg k\u00e9s\u0151bb \u00fajra.", + "unknown_auth_error": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" + }, + "step": { + "user": { + "data": { + "password": "Jelsz\u00f3", + "username": "Felhaszn\u00e1l\u00f3n\u00e9v" + }, + "description": "\u00c1ll\u00edtsa be a Meater Cloud fi\u00f3kj\u00e1t." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/meater/translations/id.json b/homeassistant/components/meater/translations/id.json new file mode 100644 index 00000000000..5d9e28c583c --- /dev/null +++ b/homeassistant/components/meater/translations/id.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "invalid_auth": "Autentikasi tidak valid", + "service_unavailable_error": "API saat ini tidak tersedia, harap coba lagi nanti.", + "unknown_auth_error": "Kesalahan yang tidak diharapkan" + }, + "step": { + "user": { + "data": { + "password": "Kata Sandi", + "username": "Nama Pengguna" + }, + "description": "Siapkan akun Meater Cloud Anda." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/meater/translations/it.json b/homeassistant/components/meater/translations/it.json new file mode 100644 index 00000000000..fe3bc189ef6 --- /dev/null +++ b/homeassistant/components/meater/translations/it.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "invalid_auth": "Autenticazione non valida", + "service_unavailable_error": "L'API non \u00e8 attualmente disponibile, riprova pi\u00f9 tardi.", + "unknown_auth_error": "Errore imprevisto" + }, + "step": { + "user": { + "data": { + "password": "Password", + "username": "Nome utente" + }, + "description": "Configura il tuo account Meater Cloud." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/meater/translations/ja.json b/homeassistant/components/meater/translations/ja.json new file mode 100644 index 00000000000..db4dd2e9c6b --- /dev/null +++ b/homeassistant/components/meater/translations/ja.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "invalid_auth": "\u7121\u52b9\u306a\u8a8d\u8a3c", + "service_unavailable_error": "\u73fe\u5728API\u304c\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002\u5f8c\u3067\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002", + "unknown_auth_error": "\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc" + }, + "step": { + "user": { + "data": { + "password": "\u30d1\u30b9\u30ef\u30fc\u30c9", + "username": "\u30e6\u30fc\u30b6\u30fc\u540d" + }, + "description": "Meater Cloud\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/meater/translations/nl.json b/homeassistant/components/meater/translations/nl.json new file mode 100644 index 00000000000..a87175c7574 --- /dev/null +++ b/homeassistant/components/meater/translations/nl.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "invalid_auth": "Ongeldige authenticatie", + "service_unavailable_error": "De API is momenteel niet beschikbaar, probeer het later opnieuw.", + "unknown_auth_error": "Onverwachte fout" + }, + "step": { + "user": { + "data": { + "password": "Wachtwoord", + "username": "Gebruikersnaam" + }, + "description": "Stel uw Meater Cloud-account in." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/meater/translations/no.json b/homeassistant/components/meater/translations/no.json new file mode 100644 index 00000000000..60bec4e6864 --- /dev/null +++ b/homeassistant/components/meater/translations/no.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "invalid_auth": "Ugyldig godkjenning", + "service_unavailable_error": "API-en er for \u00f8yeblikket utilgjengelig, pr\u00f8v igjen senere.", + "unknown_auth_error": "Uventet feil" + }, + "step": { + "user": { + "data": { + "password": "Passord", + "username": "Brukernavn" + }, + "description": "Sett opp din Meater Cloud-konto." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/meater/translations/pl.json b/homeassistant/components/meater/translations/pl.json new file mode 100644 index 00000000000..1816069dd34 --- /dev/null +++ b/homeassistant/components/meater/translations/pl.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "invalid_auth": "Niepoprawne uwierzytelnienie", + "service_unavailable_error": "Interfejs API jest obecnie niedost\u0119pny, spr\u00f3buj ponownie p\u00f3\u017aniej.", + "unknown_auth_error": "Nieoczekiwany b\u0142\u0105d" + }, + "step": { + "user": { + "data": { + "password": "Has\u0142o", + "username": "Nazwa u\u017cytkownika" + }, + "description": "Skonfiguruj swoje konto w Meater Cloud." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/meater/translations/pt-BR.json b/homeassistant/components/meater/translations/pt-BR.json new file mode 100644 index 00000000000..103f3f76986 --- /dev/null +++ b/homeassistant/components/meater/translations/pt-BR.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida", + "service_unavailable_error": "A API est\u00e1 indispon\u00edvel no momento. Tente novamente mais tarde.", + "unknown_auth_error": "Erro inesperado" + }, + "step": { + "user": { + "data": { + "password": "Senha", + "username": "Usu\u00e1rio" + }, + "description": "Configure sua conta Meeater Cloud." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/meater/translations/ru.json b/homeassistant/components/meater/translations/ru.json new file mode 100644 index 00000000000..a56f2f8ebbe --- /dev/null +++ b/homeassistant/components/meater/translations/ru.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "invalid_auth": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.", + "service_unavailable_error": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f API \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d. \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043f\u043e\u0437\u0436\u0435.", + "unknown_auth_error": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." + }, + "step": { + "user": { + "data": { + "password": "\u041f\u0430\u0440\u043e\u043b\u044c", + "username": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f" + }, + "description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Home Assistant \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 Meater Cloud." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/meater/translations/tr.json b/homeassistant/components/meater/translations/tr.json new file mode 100644 index 00000000000..03f77d2ed51 --- /dev/null +++ b/homeassistant/components/meater/translations/tr.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "invalid_auth": "Ge\u00e7ersiz kimlik do\u011frulama", + "service_unavailable_error": "API \u015fu anda kullan\u0131lam\u0131yor, l\u00fctfen daha sonra tekrar deneyin.", + "unknown_auth_error": "Beklenmeyen hata" + }, + "step": { + "user": { + "data": { + "password": "Parola", + "username": "Kullan\u0131c\u0131 Ad\u0131" + }, + "description": "Meater Cloud hesab\u0131n\u0131z\u0131 kurun." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/meater/translations/zh-Hant.json b/homeassistant/components/meater/translations/zh-Hant.json new file mode 100644 index 00000000000..b04f4a54076 --- /dev/null +++ b/homeassistant/components/meater/translations/zh-Hant.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548", + "service_unavailable_error": "API \u76ee\u524d\u7121\u6cd5\u4f7f\u7528\uff0c\u8acb\u7a0d\u5019\u518d\u8a66\u3002", + "unknown_auth_error": "\u672a\u9810\u671f\u932f\u8aa4" + }, + "step": { + "user": { + "data": { + "password": "\u5bc6\u78bc", + "username": "\u4f7f\u7528\u8005\u540d\u7a31" + }, + "description": "\u8a2d\u5b9a Meater Cloud \u5e33\u865f\u3002" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/media_player/translations/de.json b/homeassistant/components/media_player/translations/de.json index 653533ba03a..d6468920628 100644 --- a/homeassistant/components/media_player/translations/de.json +++ b/homeassistant/components/media_player/translations/de.json @@ -1,6 +1,7 @@ { "device_automation": { "condition_type": { + "is_buffering": "{entity_name} puffert", "is_idle": "{entity_name} ist unt\u00e4tig", "is_off": "{entity_name} ist ausgeschaltet", "is_on": "{entity_name} ist eingeschaltet", @@ -8,6 +9,7 @@ "is_playing": "{entity_name} spielt" }, "trigger_type": { + "buffering": "{entity_name} beginnt mit dem Puffern", "changed_states": "{entity_name} hat den Status ge\u00e4ndert", "idle": "{entity_name} wird inaktiv", "paused": "{entity_name} ist angehalten", @@ -18,6 +20,7 @@ }, "state": { "_": { + "buffering": "Puffern", "idle": "Unt\u00e4tig", "off": "Aus", "on": "An", diff --git a/homeassistant/components/media_player/translations/el.json b/homeassistant/components/media_player/translations/el.json index 242de3e829a..d7819069e26 100644 --- a/homeassistant/components/media_player/translations/el.json +++ b/homeassistant/components/media_player/translations/el.json @@ -1,6 +1,7 @@ { "device_automation": { "condition_type": { + "is_buffering": "{entity_name} \u03be\u03b5\u03ba\u03b9\u03bd\u03ac\u03b5\u03b9 \u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03c3\u03c9\u03c1\u03b9\u03bd\u03ae \u03b1\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7", "is_idle": "{entity_name} \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03b4\u03c1\u03b1\u03bd\u03ad\u03c2", "is_off": "{entity_name} \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03bf", "is_on": "{entity_name} \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03bf", @@ -8,6 +9,7 @@ "is_playing": "{entity_name} \u03c0\u03b1\u03af\u03b6\u03b5\u03b9" }, "trigger_type": { + "buffering": "{entity_name} \u03be\u03b5\u03ba\u03b9\u03bd\u03ac\u03b5\u03b9 \u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03c3\u03c9\u03c1\u03b9\u03bd\u03ae \u03b1\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7", "changed_states": "\u03a4\u03bf {entity_name} \u03ac\u03bb\u03bb\u03b1\u03be\u03b5 \u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2", "idle": "{entity_name} \u03b3\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03b1\u03b4\u03c1\u03b1\u03bd\u03ad\u03c2", "paused": "{entity_name} \u03c4\u03ad\u03b8\u03b7\u03ba\u03b5 \u03c3\u03b5 \u03c0\u03b1\u03cd\u03c3\u03b7", @@ -18,6 +20,7 @@ }, "state": { "_": { + "buffering": "\u03a0\u03c1\u03bf\u03c3\u03c9\u03c1\u03b9\u03bd\u03ae \u03b1\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7", "idle": "\u03a3\u03b5 \u03b1\u03b4\u03c1\u03ac\u03bd\u03b5\u03b9\u03b1", "off": "\u0391\u03bd\u03b5\u03bd\u03b5\u03c1\u03b3\u03cc", "on": "\u0395\u03bd\u03b5\u03c1\u03b3\u03cc", diff --git a/homeassistant/components/media_player/translations/et.json b/homeassistant/components/media_player/translations/et.json index 5461600c9d5..ae3293e951f 100644 --- a/homeassistant/components/media_player/translations/et.json +++ b/homeassistant/components/media_player/translations/et.json @@ -1,6 +1,7 @@ { "device_automation": { "condition_type": { + "is_buffering": "{entity_name} puhverdab", "is_idle": "{entity_name} on j\u00f5udeolekus", "is_off": "{entity_name} on v\u00e4lja l\u00fclitatud", "is_on": "{entity_name} on sisse l\u00fclitatud", @@ -8,6 +9,7 @@ "is_playing": "{entity_name} m\u00e4ngib" }, "trigger_type": { + "buffering": "{entity_name} alustab puhverdamist", "changed_states": "{entity_name} muutis olekut", "idle": "{entity_name} muutub j\u00f5udeolekusse", "paused": "{entity_name} on pausil", @@ -18,6 +20,7 @@ }, "state": { "_": { + "buffering": "Puhverdamine", "idle": "Ootel", "off": "V\u00e4ljas", "on": "Sees", diff --git a/homeassistant/components/media_player/translations/fr.json b/homeassistant/components/media_player/translations/fr.json index 17a6cbf92b3..d6c41bf5e09 100644 --- a/homeassistant/components/media_player/translations/fr.json +++ b/homeassistant/components/media_player/translations/fr.json @@ -1,6 +1,7 @@ { "device_automation": { "condition_type": { + "is_buffering": "{entity_name} est en train de mettre en m\u00e9moire tampon", "is_idle": "{entity_name} est inactif", "is_off": "{entity_name} est d\u00e9sactiv\u00e9", "is_on": "{entity_name} est activ\u00e9", @@ -8,6 +9,7 @@ "is_playing": "{entity_name} joue" }, "trigger_type": { + "buffering": "{entity_name} commence \u00e0 mettre en m\u00e9moire tampon", "changed_states": "{entity_name} a chang\u00e9 d'\u00e9tat", "idle": "{entity_name} devient inactif", "paused": "{entity_name} est mis en pause", @@ -18,6 +20,7 @@ }, "state": { "_": { + "buffering": "Mise en m\u00e9moire tampon", "idle": "Inactif", "off": "D\u00e9sactiv\u00e9", "on": "Activ\u00e9", diff --git a/homeassistant/components/media_player/translations/hu.json b/homeassistant/components/media_player/translations/hu.json index 83b5dc4e122..3a885c70b64 100644 --- a/homeassistant/components/media_player/translations/hu.json +++ b/homeassistant/components/media_player/translations/hu.json @@ -1,6 +1,7 @@ { "device_automation": { "condition_type": { + "is_buffering": "{entity_name} pufferel", "is_idle": "{entity_name} t\u00e9tlen", "is_off": "{entity_name} ki van kapcsolva", "is_on": "{entity_name} be van kapcsolva", @@ -8,6 +9,8 @@ "is_playing": "{entity_name} lej\u00e1tszik" }, "trigger_type": { + "buffering": "{entity_name} pufferelni kezd", + "changed_states": "{entity_name} \u00e1llapota megv\u00e1ltozott", "idle": "{entity_name} t\u00e9tlenn\u00e9 v\u00e1lik", "paused": "{entity_name} sz\u00fcneteltetve van", "playing": "{entity_name} megkezdi a lej\u00e1tsz\u00e1st", @@ -17,6 +20,7 @@ }, "state": { "_": { + "buffering": "Pufferel\u00e9s", "idle": "T\u00e9tlen", "off": "Ki", "on": "Be", diff --git a/homeassistant/components/media_player/translations/id.json b/homeassistant/components/media_player/translations/id.json index 9446d1e9e89..469687f9110 100644 --- a/homeassistant/components/media_player/translations/id.json +++ b/homeassistant/components/media_player/translations/id.json @@ -1,6 +1,7 @@ { "device_automation": { "condition_type": { + "is_buffering": "{entity_name} sedang buffering", "is_idle": "{entity_name} siaga", "is_off": "{entity_name} mati", "is_on": "{entity_name} nyala", @@ -8,6 +9,7 @@ "is_playing": "{entity_name} sedang memutar" }, "trigger_type": { + "buffering": "{entity_name} mulai buffering", "changed_states": "{entity_name} mengubah status", "idle": "{entity_name} menjadi siaga", "paused": "{entity_name} dijeda", @@ -18,6 +20,7 @@ }, "state": { "_": { + "buffering": "Buffering", "idle": "Siaga", "off": "Mati", "on": "Nyala", diff --git a/homeassistant/components/media_player/translations/it.json b/homeassistant/components/media_player/translations/it.json index 7c075420aba..5fe897a9a3f 100644 --- a/homeassistant/components/media_player/translations/it.json +++ b/homeassistant/components/media_player/translations/it.json @@ -1,6 +1,7 @@ { "device_automation": { "condition_type": { + "is_buffering": "{entity_name} \u00e8 in buffering", "is_idle": "{entity_name} \u00e8 inattivo", "is_off": "{entity_name} \u00e8 spento", "is_on": "{entity_name} \u00e8 acceso", @@ -8,6 +9,7 @@ "is_playing": "{entity_name} \u00e8 in esecuzione" }, "trigger_type": { + "buffering": "{entity_name} avvia il buffering", "changed_states": "{entity_name} ha cambiato stato", "idle": "{entity_name} diventa inattivo", "paused": "{entity_name} \u00e8 in pausa", @@ -18,6 +20,7 @@ }, "state": { "_": { + "buffering": "Riempimento buffer", "idle": "Inattivo", "off": "Spento", "on": "Acceso", diff --git a/homeassistant/components/media_player/translations/nl.json b/homeassistant/components/media_player/translations/nl.json index 5fae215f4f9..23fe64d452a 100644 --- a/homeassistant/components/media_player/translations/nl.json +++ b/homeassistant/components/media_player/translations/nl.json @@ -1,6 +1,7 @@ { "device_automation": { "condition_type": { + "is_buffering": "{entity_name} is aan het bufferen", "is_idle": "{entity_name} is niet actief", "is_off": "{entity_name} is uitgeschakeld", "is_on": "{entity_name} is ingeschakeld", @@ -8,6 +9,7 @@ "is_playing": "{entity_name} wordt afgespeeld" }, "trigger_type": { + "buffering": "{entity_name} start met bufferen", "changed_states": "{entity_name} veranderde van status", "idle": "{entity_name} wordt inactief", "paused": "{entity_name} is gepauzeerd", @@ -18,6 +20,7 @@ }, "state": { "_": { + "buffering": "Bufferen", "idle": "Inactief", "off": "Uit", "on": "Aan", diff --git a/homeassistant/components/media_player/translations/no.json b/homeassistant/components/media_player/translations/no.json index c51920a67bd..d7dd387b4e3 100644 --- a/homeassistant/components/media_player/translations/no.json +++ b/homeassistant/components/media_player/translations/no.json @@ -1,6 +1,7 @@ { "device_automation": { "condition_type": { + "is_buffering": "{entity_name} bufre", "is_idle": "{entity_name} er inaktiv", "is_off": "{entity_name} er sl\u00e5tt av", "is_on": "{entity_name} er sl\u00e5tt p\u00e5", @@ -8,6 +9,7 @@ "is_playing": "{entity_name} spiller n\u00e5" }, "trigger_type": { + "buffering": "{entity_name} starter bufring", "changed_states": "{entity_name} endret tilstander", "idle": "{entity_name} blir inaktiv", "paused": "{entity_name} er satt p\u00e5 pause", @@ -18,6 +20,7 @@ }, "state": { "_": { + "buffering": "Bufring", "idle": "Inaktiv", "off": "Av", "on": "P\u00e5", diff --git a/homeassistant/components/media_player/translations/pl.json b/homeassistant/components/media_player/translations/pl.json index 08c664a909d..886cb07f93f 100644 --- a/homeassistant/components/media_player/translations/pl.json +++ b/homeassistant/components/media_player/translations/pl.json @@ -1,6 +1,7 @@ { "device_automation": { "condition_type": { + "is_buffering": "{entity_name} buforuje", "is_idle": "odtwarzacz {entity_name} jest nieaktywny", "is_off": "odtwarzacz {entity_name} jest wy\u0142\u0105czony", "is_on": "odtwarzacz {entity_name} jest w\u0142\u0105czony", @@ -8,6 +9,7 @@ "is_playing": "{entity_name} odtwarza media" }, "trigger_type": { + "buffering": "{entity_name} rozpocznie buforowanie", "changed_states": "{entity_name} zmieni\u0142o stan", "idle": "odtwarzacz {entity_name} stanie si\u0119 bezczynny", "paused": "odtwarzacz {entity_name} zostanie wstrzymany", @@ -18,6 +20,7 @@ }, "state": { "_": { + "buffering": "Buforowanie", "idle": "nieaktywny", "off": "wy\u0142.", "on": "w\u0142.", diff --git a/homeassistant/components/media_player/translations/pt-BR.json b/homeassistant/components/media_player/translations/pt-BR.json index 147f66ec0e7..332d4d0bcb4 100644 --- a/homeassistant/components/media_player/translations/pt-BR.json +++ b/homeassistant/components/media_player/translations/pt-BR.json @@ -1,6 +1,7 @@ { "device_automation": { "condition_type": { + "is_buffering": "{entity_name} est\u00e1 em buffer", "is_idle": "{entity_name} est\u00e1 ocioso", "is_off": "{entity_name} est\u00e1 desligado", "is_on": "{entity_name} est\u00e1 ligado", @@ -8,6 +9,7 @@ "is_playing": "{entity_name} est\u00e1 reproduzindo" }, "trigger_type": { + "buffering": "{entity_name} inicia o armazenamento em buffer", "changed_states": "{entity_name} ligado ou desligado", "idle": "{entity_name} ficar ocioso", "paused": "{entity_name} for pausado", @@ -18,6 +20,7 @@ }, "state": { "_": { + "buffering": "Carregando", "idle": "Ocioso", "off": "Desligado", "on": "Ligado", diff --git a/homeassistant/components/media_player/translations/zh-Hant.json b/homeassistant/components/media_player/translations/zh-Hant.json index b4e8442ea8d..99e55cc328c 100644 --- a/homeassistant/components/media_player/translations/zh-Hant.json +++ b/homeassistant/components/media_player/translations/zh-Hant.json @@ -1,6 +1,7 @@ { "device_automation": { "condition_type": { + "is_buffering": "{entity_name} \u7de9\u885d\u4e2d", "is_idle": "{entity_name}\u9592\u7f6e", "is_off": "{entity_name}\u95dc\u9589", "is_on": "{entity_name}\u958b\u555f", @@ -8,6 +9,7 @@ "is_playing": "{entity_name}\u6b63\u5728\u64ad\u653e" }, "trigger_type": { + "buffering": "{entity_name} \u958b\u59cb\u7de9\u885d", "changed_states": "{entity_name}\u5df2\u8b8a\u66f4\u72c0\u614b", "idle": "{entity_name}\u8b8a\u6210\u9592\u7f6e", "paused": "{entity_name}\u5df2\u66ab\u505c", @@ -18,6 +20,7 @@ }, "state": { "_": { + "buffering": "\u7de9\u885d", "idle": "\u9592\u7f6e", "off": "\u95dc\u9589", "on": "\u958b\u555f", diff --git a/homeassistant/components/met/translations/hu.json b/homeassistant/components/met/translations/hu.json index 38c84a3f8dc..ffa19641cd1 100644 --- a/homeassistant/components/met/translations/hu.json +++ b/homeassistant/components/met/translations/hu.json @@ -12,7 +12,7 @@ "elevation": "Magass\u00e1g", "latitude": "Sz\u00e9less\u00e9g", "longitude": "Hossz\u00fas\u00e1g", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" }, "description": "Meteorol\u00f3giai int\u00e9zet", "title": "Elhelyezked\u00e9s" diff --git a/homeassistant/components/met_eireann/translations/hu.json b/homeassistant/components/met_eireann/translations/hu.json index b70aa2dcf67..8ce232f26a9 100644 --- a/homeassistant/components/met_eireann/translations/hu.json +++ b/homeassistant/components/met_eireann/translations/hu.json @@ -9,7 +9,7 @@ "elevation": "Magass\u00e1g", "latitude": "Sz\u00e9less\u00e9g", "longitude": "Hossz\u00fas\u00e1g", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" }, "description": "Adja meg tart\u00f3zkod\u00e1si hely\u00e9t a Met \u00c9ireann Public Weather Forecast API id\u0151j\u00e1r\u00e1si adatainak haszn\u00e1lat\u00e1hoz", "title": "Elhelyezked\u00e9s" diff --git a/homeassistant/components/meteo_france/translations/bg.json b/homeassistant/components/meteo_france/translations/bg.json index c426ae62387..d4a3ab09c9d 100644 --- a/homeassistant/components/meteo_france/translations/bg.json +++ b/homeassistant/components/meteo_france/translations/bg.json @@ -9,14 +9,12 @@ "data": { "city": "\u0413\u0440\u0430\u0434" }, - "description": "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0432\u0430\u0448\u0438\u044f \u0433\u0440\u0430\u0434 \u043e\u0442 \u0441\u043f\u0438\u0441\u044a\u043a\u0430", - "title": "M\u00e9t\u00e9o-France" + "description": "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0432\u0430\u0448\u0438\u044f \u0433\u0440\u0430\u0434 \u043e\u0442 \u0441\u043f\u0438\u0441\u044a\u043a\u0430" }, "user": { "data": { "city": "\u0413\u0440\u0430\u0434" - }, - "title": "M\u00e9t\u00e9o-France" + } } } } diff --git a/homeassistant/components/meteo_france/translations/ca.json b/homeassistant/components/meteo_france/translations/ca.json index 3fb28025f99..af3ee56159c 100644 --- a/homeassistant/components/meteo_france/translations/ca.json +++ b/homeassistant/components/meteo_france/translations/ca.json @@ -12,15 +12,13 @@ "data": { "city": "Ciutat" }, - "description": "Tria una ciutat de la llista", - "title": "M\u00e9t\u00e9o-France" + "description": "Tria una ciutat de la llista" }, "user": { "data": { "city": "Ciutat" }, - "description": "Introdueix el codi postal (nom\u00e9s recomanat per Fran\u00e7a) o nom de la ciutat", - "title": "M\u00e9t\u00e9o-France" + "description": "Introdueix el codi postal (nom\u00e9s recomanat per Fran\u00e7a) o nom de la ciutat" } } }, @@ -28,7 +26,7 @@ "step": { "init": { "data": { - "mode": "Mode de predicci\u00f3" + "mode": "Mode previsi\u00f3" } } } diff --git a/homeassistant/components/meteo_france/translations/cs.json b/homeassistant/components/meteo_france/translations/cs.json index d1c8f632220..0f05ce14ffc 100644 --- a/homeassistant/components/meteo_france/translations/cs.json +++ b/homeassistant/components/meteo_france/translations/cs.json @@ -12,15 +12,13 @@ "data": { "city": "M\u011bsto" }, - "description": "Vyberte m\u011bsto ze seznamu", - "title": "M\u00e9t\u00e9o-France" + "description": "Vyberte m\u011bsto ze seznamu" }, "user": { "data": { "city": "M\u011bsto" }, - "description": "Zadejte PS\u010c (pouze pro Francii, doporu\u010deno) nebo jm\u00e9no m\u011bsta.", - "title": "M\u00e9t\u00e9o-France" + "description": "Zadejte PS\u010c (pouze pro Francii, doporu\u010deno) nebo jm\u00e9no m\u011bsta." } } }, diff --git a/homeassistant/components/meteo_france/translations/da.json b/homeassistant/components/meteo_france/translations/da.json index d0fe7cba892..35c26b38083 100644 --- a/homeassistant/components/meteo_france/translations/da.json +++ b/homeassistant/components/meteo_france/translations/da.json @@ -9,8 +9,7 @@ "data": { "city": "By" }, - "description": "Indtast postnummer (kun for Frankrig, anbefalet) eller bynavn", - "title": "M\u00e9t\u00e9o-France" + "description": "Indtast postnummer (kun for Frankrig, anbefalet) eller bynavn" } } } diff --git a/homeassistant/components/meteo_france/translations/de.json b/homeassistant/components/meteo_france/translations/de.json index 04d038cb65d..ae0d7ab2f14 100644 --- a/homeassistant/components/meteo_france/translations/de.json +++ b/homeassistant/components/meteo_france/translations/de.json @@ -12,15 +12,13 @@ "data": { "city": "Stadt" }, - "description": "W\u00e4hle deine Stadt aus der Liste", - "title": "M\u00e9t\u00e9o-France" + "description": "W\u00e4hle deine Stadt aus der Liste" }, "user": { "data": { "city": "Stadt" }, - "description": "Gib die Postleitzahl (nur f\u00fcr Frankreich empfohlen) oder den St\u00e4dtenamen ein", - "title": "M\u00e9t\u00e9o-France" + "description": "Gib die Postleitzahl (nur f\u00fcr Frankreich empfohlen) oder den St\u00e4dtenamen ein" } } }, diff --git a/homeassistant/components/meteo_france/translations/el.json b/homeassistant/components/meteo_france/translations/el.json index 3dfad5a493d..038279abece 100644 --- a/homeassistant/components/meteo_france/translations/el.json +++ b/homeassistant/components/meteo_france/translations/el.json @@ -12,15 +12,13 @@ "data": { "city": "\u03a0\u03cc\u03bb\u03b7" }, - "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c0\u03cc\u03bb\u03b7 \u03c3\u03b1\u03c2 \u03b1\u03c0\u03cc \u03c4\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1", - "title": "M\u00e9t\u00e9o-France" + "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c0\u03cc\u03bb\u03b7 \u03c3\u03b1\u03c2 \u03b1\u03c0\u03cc \u03c4\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1" }, "user": { "data": { "city": "\u03a0\u03cc\u03bb\u03b7" }, - "description": "\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf\u03bd \u03c4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b9\u03ba\u03cc \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1 (\u03bc\u03cc\u03bd\u03bf \u03b3\u03b9\u03b1 \u03c4\u03b7 \u0393\u03b1\u03bb\u03bb\u03af\u03b1, \u03c3\u03c5\u03bd\u03b9\u03c3\u03c4\u03ac\u03c4\u03b1\u03b9) \u03ae \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c4\u03b7\u03c2 \u03c0\u03cc\u03bb\u03b7\u03c2.", - "title": "M\u00e9t\u00e9o-France" + "description": "\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf\u03bd \u03c4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b9\u03ba\u03cc \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1 (\u03bc\u03cc\u03bd\u03bf \u03b3\u03b9\u03b1 \u03c4\u03b7 \u0393\u03b1\u03bb\u03bb\u03af\u03b1, \u03c3\u03c5\u03bd\u03b9\u03c3\u03c4\u03ac\u03c4\u03b1\u03b9) \u03ae \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c4\u03b7\u03c2 \u03c0\u03cc\u03bb\u03b7\u03c2." } } }, diff --git a/homeassistant/components/meteo_france/translations/en.json b/homeassistant/components/meteo_france/translations/en.json index b1c4a7c0216..96302d7105b 100644 --- a/homeassistant/components/meteo_france/translations/en.json +++ b/homeassistant/components/meteo_france/translations/en.json @@ -12,15 +12,13 @@ "data": { "city": "City" }, - "description": "Choose your city from the list", - "title": "M\u00e9t\u00e9o-France" + "description": "Choose your city from the list" }, "user": { "data": { "city": "City" }, - "description": "Enter the postal code (only for France, recommended) or city name", - "title": "M\u00e9t\u00e9o-France" + "description": "Enter the postal code (only for France, recommended) or city name" } } }, diff --git a/homeassistant/components/meteo_france/translations/es-419.json b/homeassistant/components/meteo_france/translations/es-419.json index 471b965a824..e2c2feb5ed0 100644 --- a/homeassistant/components/meteo_france/translations/es-419.json +++ b/homeassistant/components/meteo_france/translations/es-419.json @@ -9,8 +9,7 @@ "data": { "city": "Ciudad" }, - "description": "Ingrese el c\u00f3digo postal (solo para Francia, recomendado) o el nombre de la ciudad", - "title": "M\u00e9t\u00e9o-Francia" + "description": "Ingrese el c\u00f3digo postal (solo para Francia, recomendado) o el nombre de la ciudad" } } } diff --git a/homeassistant/components/meteo_france/translations/es.json b/homeassistant/components/meteo_france/translations/es.json index 31d221eba09..8843d301779 100644 --- a/homeassistant/components/meteo_france/translations/es.json +++ b/homeassistant/components/meteo_france/translations/es.json @@ -12,15 +12,13 @@ "data": { "city": "Ciudad" }, - "description": "Elige tu ciudad de la lista", - "title": "M\u00e9t\u00e9o-France" + "description": "Elige tu ciudad de la lista" }, "user": { "data": { "city": "Ciudad" }, - "description": "Introduzca el c\u00f3digo postal (solo para Francia, recomendado) o el nombre de la ciudad", - "title": "M\u00e9t\u00e9o-France" + "description": "Introduzca el c\u00f3digo postal (solo para Francia, recomendado) o el nombre de la ciudad" } } }, diff --git a/homeassistant/components/meteo_france/translations/et.json b/homeassistant/components/meteo_france/translations/et.json index c23d2107f54..98c739fbcff 100644 --- a/homeassistant/components/meteo_france/translations/et.json +++ b/homeassistant/components/meteo_france/translations/et.json @@ -12,15 +12,13 @@ "data": { "city": "Linn" }, - "description": "Vali loendist oma linn", - "title": "" + "description": "Vali loendist oma linn" }, "user": { "data": { "city": "Linn" }, - "description": "Sisesta sihtnumber (ainult Prantsusmaa, soovitatav) v\u00f5i linna nimi", - "title": "" + "description": "Sisesta sihtnumber (ainult Prantsusmaa, soovitatav) v\u00f5i linna nimi" } } }, diff --git a/homeassistant/components/meteo_france/translations/fr.json b/homeassistant/components/meteo_france/translations/fr.json index 1121dd02b17..a2c543ee1fa 100644 --- a/homeassistant/components/meteo_france/translations/fr.json +++ b/homeassistant/components/meteo_france/translations/fr.json @@ -12,15 +12,13 @@ "data": { "city": "Ville" }, - "description": "Choisissez votre ville dans la liste", - "title": "M\u00e9t\u00e9o-France" + "description": "Choisissez votre ville dans la liste" }, "user": { "data": { "city": "Ville" }, - "description": "Entrez le code postal (uniquement pour la France, recommand\u00e9) ou le nom de la ville", - "title": "M\u00e9t\u00e9o-France" + "description": "Entrez le code postal (uniquement pour la France, recommand\u00e9) ou le nom de la ville" } } }, diff --git a/homeassistant/components/meteo_france/translations/hu.json b/homeassistant/components/meteo_france/translations/hu.json index 8034f6d0586..b9c2485a30b 100644 --- a/homeassistant/components/meteo_france/translations/hu.json +++ b/homeassistant/components/meteo_france/translations/hu.json @@ -12,15 +12,13 @@ "data": { "city": "V\u00e1ros" }, - "description": "V\u00e1lassza ki a v\u00e1rost a list\u00e1b\u00f3l", - "title": "M\u00e9t\u00e9o-France" + "description": "V\u00e1lassza ki a v\u00e1rost a list\u00e1b\u00f3l" }, "user": { "data": { "city": "V\u00e1ros" }, - "description": "\u00cdrja be az ir\u00e1ny\u00edt\u00f3sz\u00e1mot (csak Franciaorsz\u00e1g eset\u00e9ben aj\u00e1nlott) vagy a v\u00e1ros nev\u00e9t", - "title": "M\u00e9t\u00e9o-France" + "description": "\u00cdrja be az ir\u00e1ny\u00edt\u00f3sz\u00e1mot (csak Franciaorsz\u00e1g eset\u00e9ben aj\u00e1nlott) vagy a v\u00e1ros nev\u00e9t" } } }, diff --git a/homeassistant/components/meteo_france/translations/id.json b/homeassistant/components/meteo_france/translations/id.json index 07d8450e873..5c7d90710b5 100644 --- a/homeassistant/components/meteo_france/translations/id.json +++ b/homeassistant/components/meteo_france/translations/id.json @@ -12,15 +12,13 @@ "data": { "city": "Kota" }, - "description": "Pilih kota Anda dari daftar", - "title": "M\u00e9t\u00e9o-France" + "description": "Pilih kota Anda dari daftar" }, "user": { "data": { "city": "Kota" }, - "description": "Masukkan kode pos (hanya untuk Prancis, disarankan) atau nama kota", - "title": "M\u00e9t\u00e9o-France" + "description": "Masukkan kode pos (hanya untuk Prancis, disarankan) atau nama kota" } } }, diff --git a/homeassistant/components/meteo_france/translations/it.json b/homeassistant/components/meteo_france/translations/it.json index 37588fb4a32..78bad9d7dfd 100644 --- a/homeassistant/components/meteo_france/translations/it.json +++ b/homeassistant/components/meteo_france/translations/it.json @@ -12,15 +12,13 @@ "data": { "city": "Citt\u00e0" }, - "description": "Scegli la tua citt\u00e0 dall'elenco", - "title": "M\u00e9t\u00e9o-France" + "description": "Scegli la tua citt\u00e0 dall'elenco" }, "user": { "data": { "city": "Citt\u00e0" }, - "description": "Inserisci il codice postale (solo per la Francia, consigliato) o il nome della citt\u00e0", - "title": "M\u00e9t\u00e9o-France" + "description": "Inserisci il codice postale (solo per la Francia, consigliato) o il nome della citt\u00e0" } } }, diff --git a/homeassistant/components/meteo_france/translations/ja.json b/homeassistant/components/meteo_france/translations/ja.json index 2fa1f60225e..8e6b37cd53d 100644 --- a/homeassistant/components/meteo_france/translations/ja.json +++ b/homeassistant/components/meteo_france/translations/ja.json @@ -12,15 +12,13 @@ "data": { "city": "\u90fd\u5e02" }, - "description": "\u30ea\u30b9\u30c8\u304b\u3089\u3042\u306a\u305f\u306e\u90fd\u5e02\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044", - "title": "M\u00e9t\u00e9o-France" + "description": "\u30ea\u30b9\u30c8\u304b\u3089\u3042\u306a\u305f\u306e\u90fd\u5e02\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044" }, "user": { "data": { "city": "\u90fd\u5e02" }, - "description": "\u90f5\u4fbf\u756a\u53f7(\u30d5\u30e9\u30f3\u30b9\u306e\u307f\u3001\u63a8\u5968) \u307e\u305f\u306f\u3001\u5e02\u533a\u753a\u6751\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044", - "title": "M\u00e9t\u00e9o-France" + "description": "\u90f5\u4fbf\u756a\u53f7(\u30d5\u30e9\u30f3\u30b9\u306e\u307f\u3001\u63a8\u5968) \u307e\u305f\u306f\u3001\u5e02\u533a\u753a\u6751\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044" } } }, diff --git a/homeassistant/components/meteo_france/translations/ko.json b/homeassistant/components/meteo_france/translations/ko.json index 83cda0e4dcf..f977d7d6915 100644 --- a/homeassistant/components/meteo_france/translations/ko.json +++ b/homeassistant/components/meteo_france/translations/ko.json @@ -12,15 +12,13 @@ "data": { "city": "\ub3c4\uc2dc" }, - "description": "\ubaa9\ub85d\uc5d0\uc11c \ub3c4\uc2dc\ub97c \uc120\ud0dd\ud574\uc8fc\uc138\uc694", - "title": "\ud504\ub791\uc2a4 \uae30\uc0c1\uccad (M\u00e9t\u00e9o-France)" + "description": "\ubaa9\ub85d\uc5d0\uc11c \ub3c4\uc2dc\ub97c \uc120\ud0dd\ud574\uc8fc\uc138\uc694" }, "user": { "data": { "city": "\ub3c4\uc2dc" }, - "description": "\uc6b0\ud3b8\ubc88\ud638 (\ud504\ub791\uc2a4) \ub610\ub294 \ub3c4\uc2dc \uc774\ub984\uc744 \uc785\ub825\ud574\uc8fc\uc138\uc694", - "title": "\ud504\ub791\uc2a4 \uae30\uc0c1\uccad (M\u00e9t\u00e9o-France)" + "description": "\uc6b0\ud3b8\ubc88\ud638 (\ud504\ub791\uc2a4) \ub610\ub294 \ub3c4\uc2dc \uc774\ub984\uc744 \uc785\ub825\ud574\uc8fc\uc138\uc694" } } }, diff --git a/homeassistant/components/meteo_france/translations/lb.json b/homeassistant/components/meteo_france/translations/lb.json index 310d53b1d8f..ea204d6092e 100644 --- a/homeassistant/components/meteo_france/translations/lb.json +++ b/homeassistant/components/meteo_france/translations/lb.json @@ -12,15 +12,13 @@ "data": { "city": "Stad" }, - "description": "Wiel deng Stad aus der L\u00ebscht aus", - "title": "M\u00e9t\u00e9o-France" + "description": "Wiel deng Stad aus der L\u00ebscht aus" }, "user": { "data": { "city": "Stad" }, - "description": "Gitt de Postcode an (n\u00ebmme fir Frankr\u00e4ich, recommand\u00e9iert) oder den Numm vun der Stad", - "title": "M\u00e9t\u00e9o-France" + "description": "Gitt de Postcode an (n\u00ebmme fir Frankr\u00e4ich, recommand\u00e9iert) oder den Numm vun der Stad" } } }, diff --git a/homeassistant/components/meteo_france/translations/nl.json b/homeassistant/components/meteo_france/translations/nl.json index 11b0f567776..5e36e0585c7 100644 --- a/homeassistant/components/meteo_france/translations/nl.json +++ b/homeassistant/components/meteo_france/translations/nl.json @@ -12,15 +12,13 @@ "data": { "city": "Stad" }, - "description": "Kies uw stad uit de lijst", - "title": "M\u00e9t\u00e9o-France" + "description": "Kies uw stad uit de lijst" }, "user": { "data": { "city": "Stad" }, - "description": "Vul de postcode (alleen voor Frankrijk, aanbevolen) of de plaatsnaam in", - "title": "M\u00e9t\u00e9o-France" + "description": "Vul de postcode (alleen voor Frankrijk, aanbevolen) of de plaatsnaam in" } } }, diff --git a/homeassistant/components/meteo_france/translations/no.json b/homeassistant/components/meteo_france/translations/no.json index e323d5426da..dea58523260 100644 --- a/homeassistant/components/meteo_france/translations/no.json +++ b/homeassistant/components/meteo_france/translations/no.json @@ -12,15 +12,13 @@ "data": { "city": "By" }, - "description": "Velg din by fra listen", - "title": "" + "description": "Velg din by fra listen" }, "user": { "data": { "city": "By" }, - "description": "Fyll inn postnummeret (bare for Frankrike, anbefalt) eller bynavn", - "title": "" + "description": "Fyll inn postnummeret (bare for Frankrike, anbefalt) eller bynavn" } } }, diff --git a/homeassistant/components/meteo_france/translations/pl.json b/homeassistant/components/meteo_france/translations/pl.json index 0030aa83865..c826a92ac41 100644 --- a/homeassistant/components/meteo_france/translations/pl.json +++ b/homeassistant/components/meteo_france/translations/pl.json @@ -12,15 +12,13 @@ "data": { "city": "Miasto" }, - "description": "Wybierz swoje miasto z listy", - "title": "M\u00e9t\u00e9o-France" + "description": "Wybierz swoje miasto z listy" }, "user": { "data": { "city": "Miasto" }, - "description": "Wprowad\u017a kod pocztowy (tylko dla Francji, zalecane) lub nazw\u0119 miasta", - "title": "M\u00e9t\u00e9o-France" + "description": "Wprowad\u017a kod pocztowy (tylko dla Francji, zalecane) lub nazw\u0119 miasta" } } }, diff --git a/homeassistant/components/meteo_france/translations/pt-BR.json b/homeassistant/components/meteo_france/translations/pt-BR.json index 456c6eef17c..9d5bb35f586 100644 --- a/homeassistant/components/meteo_france/translations/pt-BR.json +++ b/homeassistant/components/meteo_france/translations/pt-BR.json @@ -12,15 +12,13 @@ "data": { "city": "Cidade" }, - "description": "Escolha sua cidade na lista", - "title": "M\u00e9t\u00e9o-France" + "description": "Escolha sua cidade na lista" }, "user": { "data": { "city": "Cidade" }, - "description": "Insira o c\u00f3digo postal (somente para a Fran\u00e7a, recomendado) ou o nome da cidade", - "title": "M\u00e9t\u00e9o-France" + "description": "Insira o c\u00f3digo postal (somente para a Fran\u00e7a, recomendado) ou o nome da cidade" } } }, diff --git a/homeassistant/components/meteo_france/translations/pt.json b/homeassistant/components/meteo_france/translations/pt.json index f53975ecf00..d059033bdcb 100644 --- a/homeassistant/components/meteo_france/translations/pt.json +++ b/homeassistant/components/meteo_france/translations/pt.json @@ -8,8 +8,7 @@ "user": { "data": { "city": "Cidade" - }, - "title": "" + } } } } diff --git a/homeassistant/components/meteo_france/translations/ru.json b/homeassistant/components/meteo_france/translations/ru.json index 6f42dae3b49..6ef7a82849e 100644 --- a/homeassistant/components/meteo_france/translations/ru.json +++ b/homeassistant/components/meteo_france/translations/ru.json @@ -12,15 +12,13 @@ "data": { "city": "\u0413\u043e\u0440\u043e\u0434" }, - "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0433\u043e\u0440\u043e\u0434 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430", - "title": "M\u00e9t\u00e9o-France" + "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0433\u043e\u0440\u043e\u0434 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430" }, "user": { "data": { "city": "\u0413\u043e\u0440\u043e\u0434" }, - "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0424\u0440\u0430\u043d\u0446\u0438\u0438) \u0438\u043b\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0433\u043e\u0440\u043e\u0434\u0430", - "title": "M\u00e9t\u00e9o-France" + "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0424\u0440\u0430\u043d\u0446\u0438\u0438) \u0438\u043b\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0433\u043e\u0440\u043e\u0434\u0430" } } }, diff --git a/homeassistant/components/meteo_france/translations/sl.json b/homeassistant/components/meteo_france/translations/sl.json index 912748ada8f..6acfeb28e08 100644 --- a/homeassistant/components/meteo_france/translations/sl.json +++ b/homeassistant/components/meteo_france/translations/sl.json @@ -9,8 +9,7 @@ "data": { "city": "Mesto" }, - "description": "Vnesite po\u0161tno \u0161tevilko (samo za Francijo) ali ime mesta", - "title": "M\u00e9t\u00e9o-France" + "description": "Vnesite po\u0161tno \u0161tevilko (samo za Francijo) ali ime mesta" } } } diff --git a/homeassistant/components/meteo_france/translations/sv.json b/homeassistant/components/meteo_france/translations/sv.json index 70fb537fc82..f7f1a68478f 100644 --- a/homeassistant/components/meteo_france/translations/sv.json +++ b/homeassistant/components/meteo_france/translations/sv.json @@ -14,8 +14,7 @@ "data": { "city": "Stad" }, - "description": "Ange postnumret (endast f\u00f6r Frankrike, rekommenderat) eller ortsnamn", - "title": "M\u00e9t\u00e9o-France" + "description": "Ange postnumret (endast f\u00f6r Frankrike, rekommenderat) eller ortsnamn" } } } diff --git a/homeassistant/components/meteo_france/translations/tr.json b/homeassistant/components/meteo_france/translations/tr.json index 4793dbb4fe7..38e60b14b8e 100644 --- a/homeassistant/components/meteo_france/translations/tr.json +++ b/homeassistant/components/meteo_france/translations/tr.json @@ -12,15 +12,13 @@ "data": { "city": "\u015eehir" }, - "description": "Listeden \u015fehrinizi se\u00e7in", - "title": "M\u00e9t\u00e9o-Fransa" + "description": "Listeden \u015fehrinizi se\u00e7in" }, "user": { "data": { "city": "\u015eehir" }, - "description": "Posta kodunu (yaln\u0131zca Fransa i\u00e7in, \u00f6nerilir) veya \u015fehir ad\u0131n\u0131 girin", - "title": "M\u00e9t\u00e9o-Fransa" + "description": "Posta kodunu (yaln\u0131zca Fransa i\u00e7in, \u00f6nerilir) veya \u015fehir ad\u0131n\u0131 girin" } } }, diff --git a/homeassistant/components/meteo_france/translations/uk.json b/homeassistant/components/meteo_france/translations/uk.json index a84c230e218..124aacb9d67 100644 --- a/homeassistant/components/meteo_france/translations/uk.json +++ b/homeassistant/components/meteo_france/translations/uk.json @@ -12,15 +12,13 @@ "data": { "city": "\u041c\u0456\u0441\u0442\u043e" }, - "description": "\u041e\u0431\u0435\u0440\u0456\u0442\u044c \u043c\u0456\u0441\u0442\u043e \u0437\u0456 \u0441\u043f\u0438\u0441\u043a\u0443", - "title": "M\u00e9t\u00e9o-France" + "description": "\u041e\u0431\u0435\u0440\u0456\u0442\u044c \u043c\u0456\u0441\u0442\u043e \u0437\u0456 \u0441\u043f\u0438\u0441\u043a\u0443" }, "user": { "data": { "city": "\u041c\u0456\u0441\u0442\u043e" }, - "description": "\u0412\u0432\u0435\u0434\u0456\u0442\u044c \u043f\u043e\u0448\u0442\u043e\u0432\u0438\u0439 \u0456\u043d\u0434\u0435\u043a\u0441 (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0454\u0442\u044c\u0441\u044f \u0442\u0456\u043b\u044c\u043a\u0438 \u0434\u043b\u044f \u0424\u0440\u0430\u043d\u0446\u0456\u0457) \u0430\u0431\u043e \u043d\u0430\u0437\u0432\u0443 \u043c\u0456\u0441\u0442\u0430", - "title": "M\u00e9t\u00e9o-France" + "description": "\u0412\u0432\u0435\u0434\u0456\u0442\u044c \u043f\u043e\u0448\u0442\u043e\u0432\u0438\u0439 \u0456\u043d\u0434\u0435\u043a\u0441 (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0454\u0442\u044c\u0441\u044f \u0442\u0456\u043b\u044c\u043a\u0438 \u0434\u043b\u044f \u0424\u0440\u0430\u043d\u0446\u0456\u0457) \u0430\u0431\u043e \u043d\u0430\u0437\u0432\u0443 \u043c\u0456\u0441\u0442\u0430" } } }, diff --git a/homeassistant/components/meteo_france/translations/zh-Hant.json b/homeassistant/components/meteo_france/translations/zh-Hant.json index 32d92956d73..2f1aa7fe89e 100644 --- a/homeassistant/components/meteo_france/translations/zh-Hant.json +++ b/homeassistant/components/meteo_france/translations/zh-Hant.json @@ -12,15 +12,13 @@ "data": { "city": "\u57ce\u5e02\u540d\u7a31" }, - "description": "\u7531\u5217\u8868\u4e2d\u9078\u64c7\u57ce\u5e02", - "title": "M\u00e9t\u00e9o-France" + "description": "\u7531\u5217\u8868\u4e2d\u9078\u64c7\u57ce\u5e02" }, "user": { "data": { "city": "\u57ce\u5e02\u540d\u7a31" }, - "description": "\u8f38\u5165\u90f5\u905e\u5340\u865f\uff08\u50c5\u652f\u63f4\u6cd5\u570b\uff09\u6216\u57ce\u5e02\u540d\u7a31", - "title": "M\u00e9t\u00e9o-France" + "description": "\u8f38\u5165\u90f5\u905e\u5340\u865f\uff08\u50c5\u652f\u63f4\u6cd5\u570b\uff09\u6216\u57ce\u5e02\u540d\u7a31" } } }, diff --git a/homeassistant/components/meteoclimatic/translations/bg.json b/homeassistant/components/meteoclimatic/translations/bg.json index 63b0e7be8b7..4bac01649f7 100644 --- a/homeassistant/components/meteoclimatic/translations/bg.json +++ b/homeassistant/components/meteoclimatic/translations/bg.json @@ -6,11 +6,6 @@ }, "error": { "not_found": "\u041d\u044f\u043c\u0430 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u043c\u0440\u0435\u0436\u0430\u0442\u0430" - }, - "step": { - "user": { - "title": "Meteoclimatic" - } } } } \ No newline at end of file diff --git a/homeassistant/components/meteoclimatic/translations/ca.json b/homeassistant/components/meteoclimatic/translations/ca.json index 5f672d87535..e7d760253e7 100644 --- a/homeassistant/components/meteoclimatic/translations/ca.json +++ b/homeassistant/components/meteoclimatic/translations/ca.json @@ -12,8 +12,9 @@ "data": { "code": "Codi d'estaci\u00f3" }, - "description": "Introdueix el codi d'estaci\u00f3 meteorol\u00f2gica (per exemple, ESCAT4300000043206B)", - "title": "Meteoclimatic" + "data_description": { + "code": "T\u00e9 el format com ESCAT4300000043206B" + } } } } diff --git a/homeassistant/components/meteoclimatic/translations/de.json b/homeassistant/components/meteoclimatic/translations/de.json index c9b9ea90e61..7365dba674d 100644 --- a/homeassistant/components/meteoclimatic/translations/de.json +++ b/homeassistant/components/meteoclimatic/translations/de.json @@ -12,8 +12,9 @@ "data": { "code": "Stationscode" }, - "description": "Gib den Code der Meteoclimatic-Station ein (z. B. ESCAT4300000043206B)", - "title": "Meteoclimatic" + "data_description": { + "code": "Sieht aus wie ESCAT4300000043206B" + } } } } diff --git a/homeassistant/components/meteoclimatic/translations/el.json b/homeassistant/components/meteoclimatic/translations/el.json index 085e6fe1643..01854a07830 100644 --- a/homeassistant/components/meteoclimatic/translations/el.json +++ b/homeassistant/components/meteoclimatic/translations/el.json @@ -12,8 +12,9 @@ "data": { "code": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c3\u03c4\u03b1\u03b8\u03bc\u03bf\u03cd" }, - "description": "\u0395\u03b9\u03c3\u03b1\u03b3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c3\u03c4\u03b1\u03b8\u03bc\u03bf\u03cd Meteoclimatic (\u03c0.\u03c7. ESCAT4300000043206B)", - "title": "Meteoclimatic" + "data_description": { + "code": "\u039c\u03bf\u03b9\u03ac\u03b6\u03b5\u03b9 \u03bc\u03b5 ESCAT4300000043206B" + } } } } diff --git a/homeassistant/components/meteoclimatic/translations/en.json b/homeassistant/components/meteoclimatic/translations/en.json index a066971be25..50a4795410d 100644 --- a/homeassistant/components/meteoclimatic/translations/en.json +++ b/homeassistant/components/meteoclimatic/translations/en.json @@ -12,8 +12,9 @@ "data": { "code": "Station code" }, - "description": "Enter the Meteoclimatic station code (e.g., ESCAT4300000043206B)", - "title": "Meteoclimatic" + "data_description": { + "code": "Looks like ESCAT4300000043206B" + } } } } diff --git a/homeassistant/components/meteoclimatic/translations/es.json b/homeassistant/components/meteoclimatic/translations/es.json index ab84e6604e3..027f85c60df 100644 --- a/homeassistant/components/meteoclimatic/translations/es.json +++ b/homeassistant/components/meteoclimatic/translations/es.json @@ -11,9 +11,7 @@ "user": { "data": { "code": "C\u00f3digo de la estaci\u00f3n" - }, - "description": "Introduzca el c\u00f3digo de la estaci\u00f3n Meteoclimatic (por ejemplo, ESCAT4300000043206B)", - "title": "Meteoclimatic" + } } } } diff --git a/homeassistant/components/meteoclimatic/translations/et.json b/homeassistant/components/meteoclimatic/translations/et.json index e019a4a0e12..886de9279f9 100644 --- a/homeassistant/components/meteoclimatic/translations/et.json +++ b/homeassistant/components/meteoclimatic/translations/et.json @@ -12,8 +12,9 @@ "data": { "code": "Jaama kood" }, - "description": "Sisesta Meteoclimatic jaama kood (nt ESCAT4300000043206B)", - "title": "Meteoclimatic" + "data_description": { + "code": "N\u00e4eb v\u00e4lja nagu ESCAT4300000043206B" + } } } } diff --git a/homeassistant/components/meteoclimatic/translations/fr.json b/homeassistant/components/meteoclimatic/translations/fr.json index ae087db2e6e..95151d8f553 100644 --- a/homeassistant/components/meteoclimatic/translations/fr.json +++ b/homeassistant/components/meteoclimatic/translations/fr.json @@ -12,8 +12,9 @@ "data": { "code": "Code de la station" }, - "description": "Entrer le code de la station m\u00e9t\u00e9orologique (par exemple, ESCAT4300000043206)", - "title": "M\u00e9t\u00e9oclimatique" + "data_description": { + "code": "Ressemble \u00e0 ESCAT4300000043206B" + } } } } diff --git a/homeassistant/components/meteoclimatic/translations/gl.json b/homeassistant/components/meteoclimatic/translations/gl.json deleted file mode 100644 index be1629dd6e4..00000000000 --- a/homeassistant/components/meteoclimatic/translations/gl.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "config": { - "step": { - "user": { - "description": "Introduza o c\u00f3digo da estaci\u00f3n Meteoclimatic (por exemplo, ESCAT4300000043206B)" - } - } - } -} \ No newline at end of file diff --git a/homeassistant/components/meteoclimatic/translations/hu.json b/homeassistant/components/meteoclimatic/translations/hu.json index 582c78f263d..d9583656eb2 100644 --- a/homeassistant/components/meteoclimatic/translations/hu.json +++ b/homeassistant/components/meteoclimatic/translations/hu.json @@ -12,8 +12,9 @@ "data": { "code": "\u00c1llom\u00e1s k\u00f3dja" }, - "description": "Adja meg a meteorol\u00f3giai \u00e1llom\u00e1s k\u00f3dj\u00e1t (pl. ESCAT4300000043206B)", - "title": "Meteoklimatikus" + "data_description": { + "code": "\u00dagy n\u00e9z ki, mint ESCAT4300000043206B" + } } } } diff --git a/homeassistant/components/meteoclimatic/translations/id.json b/homeassistant/components/meteoclimatic/translations/id.json index 4e23dad8dc4..3f8221f059a 100644 --- a/homeassistant/components/meteoclimatic/translations/id.json +++ b/homeassistant/components/meteoclimatic/translations/id.json @@ -12,8 +12,9 @@ "data": { "code": "Kode stasiun" }, - "description": "Masukkan kode stasiun Meteoclimatic (misalnya, ESCAT4300000043206B)", - "title": "Meteoclimatic" + "data_description": { + "code": "Sepertinya ESCAT4300000043206B" + } } } } diff --git a/homeassistant/components/meteoclimatic/translations/it.json b/homeassistant/components/meteoclimatic/translations/it.json index fcdfa25c496..f069b393a1b 100644 --- a/homeassistant/components/meteoclimatic/translations/it.json +++ b/homeassistant/components/meteoclimatic/translations/it.json @@ -12,8 +12,9 @@ "data": { "code": "Codice della stazione" }, - "description": "Immettere il codice della stazione Meteoclimatic (ad esempio ESCAT4300000043206B)", - "title": "Meteoclimatic" + "data_description": { + "code": "Assomiglia a ECAT4300000043206B" + } } } } diff --git a/homeassistant/components/meteoclimatic/translations/ja.json b/homeassistant/components/meteoclimatic/translations/ja.json index 0274ff70e88..adae157aeee 100644 --- a/homeassistant/components/meteoclimatic/translations/ja.json +++ b/homeassistant/components/meteoclimatic/translations/ja.json @@ -12,8 +12,9 @@ "data": { "code": "\u30b9\u30c6\u30fc\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9" }, - "description": "Meteoclimatic\u30b9\u30c6\u30fc\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9\u3092\u5165\u529b(\u4f8b: ESCAT4300000043206B)", - "title": "Meteoclimatic" + "data_description": { + "code": "ESCAT4300000043206B\u306e\u3088\u3046\u306b\u898b\u3048\u307e\u3059" + } } } } diff --git a/homeassistant/components/meteoclimatic/translations/nl.json b/homeassistant/components/meteoclimatic/translations/nl.json index dd2a318ec37..c6f7151ade6 100644 --- a/homeassistant/components/meteoclimatic/translations/nl.json +++ b/homeassistant/components/meteoclimatic/translations/nl.json @@ -12,8 +12,9 @@ "data": { "code": "Station code" }, - "description": "Voer de code van het meteoklimatologische station in (bv. ESCAT4300000043206B)", - "title": "Meteoclimatic" + "data_description": { + "code": "Lijkt op ESCAT43000043206B" + } } } } diff --git a/homeassistant/components/meteoclimatic/translations/no.json b/homeassistant/components/meteoclimatic/translations/no.json index 0e6e080d146..1bcf4ae09fe 100644 --- a/homeassistant/components/meteoclimatic/translations/no.json +++ b/homeassistant/components/meteoclimatic/translations/no.json @@ -12,8 +12,9 @@ "data": { "code": "Stasjonskode" }, - "description": "Angi Meteoclimatic stasjonskode (f.eks. ESCAT4300000043206B)", - "title": "Meteoclimatic" + "data_description": { + "code": "Ser ut som ESCAT4300000043206B" + } } } } diff --git a/homeassistant/components/meteoclimatic/translations/pl.json b/homeassistant/components/meteoclimatic/translations/pl.json index c4539bd6c8b..aab41ba7d12 100644 --- a/homeassistant/components/meteoclimatic/translations/pl.json +++ b/homeassistant/components/meteoclimatic/translations/pl.json @@ -12,8 +12,9 @@ "data": { "code": "Kod stacji" }, - "description": "Wpisz kod stacji Meteoclimatic (np. ESCAT4300000043206B)", - "title": "Meteoclimatic" + "data_description": { + "code": "Wygl\u0105da jak ESCAT4300000043206B" + } } } } diff --git a/homeassistant/components/meteoclimatic/translations/pt-BR.json b/homeassistant/components/meteoclimatic/translations/pt-BR.json index c81109b8939..88223d4b177 100644 --- a/homeassistant/components/meteoclimatic/translations/pt-BR.json +++ b/homeassistant/components/meteoclimatic/translations/pt-BR.json @@ -12,8 +12,9 @@ "data": { "code": "C\u00f3digo da esta\u00e7\u00e3o" }, - "description": "Digite o c\u00f3digo da esta\u00e7\u00e3o Meteoclim\u00e1tica (por exemplo, ESCAT4300000043206B)", - "title": "Meteoclimatic" + "data_description": { + "code": "\u00c9 parecido com isso ESCAT4300000043206B" + } } } } diff --git a/homeassistant/components/meteoclimatic/translations/pt.json b/homeassistant/components/meteoclimatic/translations/pt.json deleted file mode 100644 index 71eded9f5de..00000000000 --- a/homeassistant/components/meteoclimatic/translations/pt.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "config": { - "step": { - "user": { - "description": "Introduza o c\u00f3digo da esta\u00e7\u00e3o Meteoclimatic (por exemplo, ESCAT4300000043206B)" - } - } - } -} \ No newline at end of file diff --git a/homeassistant/components/meteoclimatic/translations/ru.json b/homeassistant/components/meteoclimatic/translations/ru.json index 14df114c903..79421f0f325 100644 --- a/homeassistant/components/meteoclimatic/translations/ru.json +++ b/homeassistant/components/meteoclimatic/translations/ru.json @@ -12,8 +12,9 @@ "data": { "code": "\u041a\u043e\u0434 \u0441\u0442\u0430\u043d\u0446\u0438\u0438" }, - "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u0434 \u0441\u0442\u0430\u043d\u0446\u0438\u0438 Meteoclimatic (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, ESCAT4300000043206B)", - "title": "Meteoclimatic" + "data_description": { + "code": "\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, ESCAT4300000043206B" + } } } } diff --git a/homeassistant/components/meteoclimatic/translations/tr.json b/homeassistant/components/meteoclimatic/translations/tr.json index a56fe984e2e..5221bc971c0 100644 --- a/homeassistant/components/meteoclimatic/translations/tr.json +++ b/homeassistant/components/meteoclimatic/translations/tr.json @@ -12,8 +12,9 @@ "data": { "code": "\u0130stasyon kodu" }, - "description": "Meteoclimatic istasyon kodunu girin (\u00f6rne\u011fin, ESCAT4300000043206B)", - "title": "Meteoclimatic" + "data_description": { + "code": "ESCAT4300000043206B'ye benziyor" + } } } } diff --git a/homeassistant/components/meteoclimatic/translations/zh-Hant.json b/homeassistant/components/meteoclimatic/translations/zh-Hant.json index d5c3793be7d..7aa165509f2 100644 --- a/homeassistant/components/meteoclimatic/translations/zh-Hant.json +++ b/homeassistant/components/meteoclimatic/translations/zh-Hant.json @@ -12,8 +12,9 @@ "data": { "code": "\u6c23\u8c61\u7ad9\u4ee3\u78bc" }, - "description": "\u8f38\u5165 Meteoclimatic \u6c23\u8c61\u7ad9\u4ee3\u78bc\uff08\u4f8b\u5982 ESCAT4300000043206B\uff09", - "title": "Meteoclimatic" + "data_description": { + "code": "\u770b\u8d77\u4f86\u985e\u4f3c ESCAT4300000043206B" + } } } } diff --git a/homeassistant/components/mikrotik/translations/hu.json b/homeassistant/components/mikrotik/translations/hu.json index 3e5281fc06a..c15ba2f07aa 100644 --- a/homeassistant/components/mikrotik/translations/hu.json +++ b/homeassistant/components/mikrotik/translations/hu.json @@ -12,7 +12,7 @@ "user": { "data": { "host": "C\u00edm", - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "password": "Jelsz\u00f3", "port": "Port", "username": "Felhaszn\u00e1l\u00f3n\u00e9v", diff --git a/homeassistant/components/vallox/translations/sk.json b/homeassistant/components/min_max/translations/bg.json similarity index 73% rename from homeassistant/components/vallox/translations/sk.json rename to homeassistant/components/min_max/translations/bg.json index af15f92c2f2..35cfa0ad1d7 100644 --- a/homeassistant/components/vallox/translations/sk.json +++ b/homeassistant/components/min_max/translations/bg.json @@ -3,7 +3,7 @@ "step": { "user": { "data": { - "name": "N\u00e1zov" + "name": "\u0418\u043c\u0435" } } } diff --git a/homeassistant/components/min_max/translations/ca.json b/homeassistant/components/min_max/translations/ca.json new file mode 100644 index 00000000000..b114e8ecf40 --- /dev/null +++ b/homeassistant/components/min_max/translations/ca.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "entity_ids": "Entitats d'entrada", + "name": "Nom", + "round_digits": "Precisi\u00f3", + "type": "Caracter\u00edstica estad\u00edstica" + }, + "data_description": { + "round_digits": "Controla el nombre de d\u00edgits decimals quan la caracter\u00edstica estad\u00edstica \u00e9s la mitjana o la mediana." + }, + "description": "Crea un sensor que calcula el m\u00ednim, m\u00e0xim, la mitjana o la mediana d'una llista de sensors d'entrada.", + "title": "Afegeix sensor m\u00edn / m\u00e0x / mitjana / mediana" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "entity_ids": "Entitats d'entrada", + "round_digits": "Precisi\u00f3", + "type": "Caracter\u00edstica estad\u00edstica" + }, + "data_description": { + "round_digits": "Controla el nombre de d\u00edgits decimals quan la caracter\u00edstica estad\u00edstica \u00e9s la mitjana o la mediana." + } + }, + "options": { + "data": { + "entity_ids": "Entitats d'entrada", + "round_digits": "Precisi\u00f3", + "type": "Caracter\u00edstica estad\u00edstica" + }, + "description": "Crea un sensor que calcula el m\u00ednim, m\u00e0xim, la mitjana o la mediana d'una llista de sensors d'entrada." + } + } + }, + "title": "Sensor m\u00edn / m\u00e0x / mitjana / mediana" +} \ No newline at end of file diff --git a/homeassistant/components/min_max/translations/cs.json b/homeassistant/components/min_max/translations/cs.json new file mode 100644 index 00000000000..a969a39234a --- /dev/null +++ b/homeassistant/components/min_max/translations/cs.json @@ -0,0 +1,34 @@ +{ + "config": { + "step": { + "user": { + "data": { + "entity_ids": "Vstupn\u00ed entity", + "name": "Jm\u00e9no", + "round_digits": "P\u0159esnost", + "type": "Statistika" + }, + "description": "P\u0159esnost ur\u010duje po\u010det desetinn\u00fdch m\u00edst, kdy\u017e je statistikou pr\u016fm\u011br nebo medi\u00e1n." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "entity_ids": "Vstupn\u00ed entity", + "round_digits": "P\u0159esnost", + "type": "Statistika" + } + }, + "options": { + "data": { + "entity_ids": "Vstupn\u00ed entity", + "round_digits": "P\u0159esnost", + "type": "Statistika" + }, + "description": "P\u0159esnost ur\u010duje po\u010det desetinn\u00fdch m\u00edst, kdy\u017e je statistikou pr\u016fm\u011br nebo medi\u00e1n." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/min_max/translations/de.json b/homeassistant/components/min_max/translations/de.json new file mode 100644 index 00000000000..c8b9d5ddf63 --- /dev/null +++ b/homeassistant/components/min_max/translations/de.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "entity_ids": "Eingabe-Entit\u00e4ten", + "name": "Name", + "round_digits": "Genauigkeit", + "type": "Statistisches Merkmal" + }, + "data_description": { + "round_digits": "Steuert die Anzahl der Dezimalstellen in der Ausgabe, wenn das Statistikmerkmal Mittelwert oder Median ist." + }, + "description": "Erstelle einen Sensor, der einen Mindest-, H\u00f6chst-, Mittel- oder Medianwert aus einer Liste von Eingabesensoren berechnet.", + "title": "Min/Max/Mittelwert/Median-Sensor hinzuf\u00fcgen" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "entity_ids": "Eingabe-Entit\u00e4ten", + "round_digits": "Genauigkeit", + "type": "Statistisches Merkmal" + }, + "data_description": { + "round_digits": "Steuert die Anzahl der Dezimalstellen in der Ausgabe, wenn das Statistikmerkmal Mittelwert oder Median ist." + } + }, + "options": { + "data": { + "entity_ids": "Eingabe-Entit\u00e4ten", + "round_digits": "Genauigkeit", + "type": "Statistisches Merkmal" + }, + "description": "Erstelle einen Sensor, der einen Mindest-, H\u00f6chst-, Mittel- oder Medianwert aus einer Liste von Eingabesensoren berechnet." + } + } + }, + "title": "Min / Max / Mittelwert / Mediansensor" +} \ No newline at end of file diff --git a/homeassistant/components/min_max/translations/el.json b/homeassistant/components/min_max/translations/el.json new file mode 100644 index 00000000000..218c46fd683 --- /dev/null +++ b/homeassistant/components/min_max/translations/el.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "entity_ids": "\u039f\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5", + "name": "\u039f\u03bd\u03bf\u03bc\u03b1", + "round_digits": "\u0391\u03ba\u03c1\u03af\u03b2\u03b5\u03b9\u03b1", + "type": "\u03a3\u03c4\u03b1\u03c4\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03b7\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc" + }, + "data_description": { + "round_digits": "\u0395\u03bb\u03ad\u03b3\u03c7\u03b5\u03b9 \u03c4\u03bf\u03bd \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc \u03c4\u03c9\u03bd \u03b4\u03b5\u03ba\u03b1\u03b4\u03b9\u03ba\u03ce\u03bd \u03c8\u03b7\u03c6\u03af\u03c9\u03bd \u03c3\u03c4\u03b7\u03bd \u03ad\u03be\u03bf\u03b4\u03bf \u03cc\u03c4\u03b1\u03bd \u03c4\u03bf \u03c3\u03c4\u03b1\u03c4\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03b7\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03b5\u03af\u03bd\u03b1\u03b9 \u03bc\u03ad\u03c3\u03bf\u03c2 \u03ae \u03b4\u03b9\u03ac\u03bc\u03b5\u03c3\u03bf\u03c2." + }, + "description": "\u0397 \u03b1\u03ba\u03c1\u03af\u03b2\u03b5\u03b9\u03b1 \u03b5\u03bb\u03ad\u03b3\u03c7\u03b5\u03b9 \u03c4\u03bf\u03bd \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc \u03c4\u03c9\u03bd \u03b4\u03b5\u03ba\u03b1\u03b4\u03b9\u03ba\u03ce\u03bd \u03c8\u03b7\u03c6\u03af\u03c9\u03bd \u03cc\u03c4\u03b1\u03bd \u03c4\u03bf \u03c3\u03c4\u03b1\u03c4\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03b7\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03b5\u03af\u03bd\u03b1\u03b9 \u03bf \u03bc\u03ad\u03c3\u03bf\u03c2 \u03cc\u03c1\u03bf\u03c2 \u03ae \u03b7 \u03b4\u03b9\u03ac\u03bc\u03b5\u03c3\u03bf\u03c2.", + "title": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1 min / max / mean / median" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "entity_ids": "\u039f\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5", + "round_digits": "\u0391\u03ba\u03c1\u03af\u03b2\u03b5\u03b9\u03b1", + "type": "\u03a3\u03c4\u03b1\u03c4\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03b7\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc" + }, + "data_description": { + "round_digits": "\u0395\u03bb\u03ad\u03b3\u03c7\u03b5\u03b9 \u03c4\u03bf\u03bd \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc \u03c4\u03c9\u03bd \u03b4\u03b5\u03ba\u03b1\u03b4\u03b9\u03ba\u03ce\u03bd \u03c8\u03b7\u03c6\u03af\u03c9\u03bd \u03c3\u03c4\u03b7\u03bd \u03ad\u03be\u03bf\u03b4\u03bf \u03cc\u03c4\u03b1\u03bd \u03c4\u03bf \u03c3\u03c4\u03b1\u03c4\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03b7\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03b5\u03af\u03bd\u03b1\u03b9 \u03bc\u03ad\u03c3\u03bf\u03c2 \u03ae \u03b4\u03b9\u03ac\u03bc\u03b5\u03c3\u03bf\u03c2." + } + }, + "options": { + "data": { + "entity_ids": "\u039f\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5", + "round_digits": "\u0391\u03ba\u03c1\u03af\u03b2\u03b5\u03b9\u03b1", + "type": "\u03a3\u03c4\u03b1\u03c4\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03b7\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc" + }, + "description": "\u0397 \u03b1\u03ba\u03c1\u03af\u03b2\u03b5\u03b9\u03b1 \u03b5\u03bb\u03ad\u03b3\u03c7\u03b5\u03b9 \u03c4\u03bf\u03bd \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc \u03c4\u03c9\u03bd \u03b4\u03b5\u03ba\u03b1\u03b4\u03b9\u03ba\u03ce\u03bd \u03c8\u03b7\u03c6\u03af\u03c9\u03bd \u03cc\u03c4\u03b1\u03bd \u03c4\u03bf \u03c3\u03c4\u03b1\u03c4\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03b7\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03b5\u03af\u03bd\u03b1\u03b9 \u03bf \u03bc\u03ad\u03c3\u03bf\u03c2 \u03cc\u03c1\u03bf\u03c2 \u03ae \u03b7 \u03b4\u03b9\u03ac\u03bc\u03b5\u03c3\u03bf\u03c2." + } + } + }, + "title": "\u0395\u03bb\u03ac\u03c7\u03b9\u03c3\u03c4\u03bf\u03c2 / \u03bc\u03ad\u03b3\u03b9\u03c3\u03c4\u03bf\u03c2 / \u03bc\u03ad\u03c3\u03bf\u03c2 / \u03b4\u03b9\u03ac\u03bc\u03b5\u03c3\u03bf\u03c2 \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2" +} \ No newline at end of file diff --git a/homeassistant/components/min_max/translations/en.json b/homeassistant/components/min_max/translations/en.json index 8cc0d41c419..b5b6eb5d731 100644 --- a/homeassistant/components/min_max/translations/en.json +++ b/homeassistant/components/min_max/translations/en.json @@ -27,6 +27,14 @@ "data_description": { "round_digits": "Controls the number of decimal digits in the output when the statistics characteristic is mean or median." } + }, + "options": { + "data": { + "entity_ids": "Input entities", + "round_digits": "Precision", + "type": "Statistic characteristic" + }, + "description": "Create a sensor that calculates a min, max, mean or median value from a list of input sensors." } } }, diff --git a/homeassistant/components/min_max/translations/et.json b/homeassistant/components/min_max/translations/et.json new file mode 100644 index 00000000000..2f1689e8577 --- /dev/null +++ b/homeassistant/components/min_max/translations/et.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "entity_ids": "Sisendolemid", + "name": "Nimi", + "round_digits": "T\u00e4psus", + "type": "Statistiline tunnus" + }, + "data_description": { + "round_digits": "M\u00e4\u00e4rab k\u00fcmnendkohtade arvu v\u00e4ljundis kui statistika tunnus on keskmine v\u00f5i mediaan." + }, + "description": "Loo andur mis arvutab sisendandurite loendist minimaalse, maksimaalse, keskmise v\u00f5i mediaanv\u00e4\u00e4rtuse.", + "title": "Lisa min / max / keskmine / mediaanandur" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "entity_ids": "Sisendolemid", + "round_digits": "T\u00e4psus", + "type": "Statistiline omadus" + }, + "data_description": { + "round_digits": "M\u00e4\u00e4rab k\u00fcmnendkohtade arvu v\u00e4ljundis kui statistika tunnus on keskmine v\u00f5i mediaan." + } + }, + "options": { + "data": { + "entity_ids": "Sisendolemid", + "round_digits": "T\u00e4psus", + "type": "Statistiline tunnus" + }, + "description": "T\u00e4psus kontrollib k\u00fcmnendnumbrite arvu kui statistika tunnus on keskmine v\u00f5i mediaan." + } + } + }, + "title": "Min / max / keskmine / mediaanandur" +} \ No newline at end of file diff --git a/homeassistant/components/min_max/translations/fr.json b/homeassistant/components/min_max/translations/fr.json new file mode 100644 index 00000000000..b42ccf0bb2a --- /dev/null +++ b/homeassistant/components/min_max/translations/fr.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "entity_ids": "Entit\u00e9s d'entr\u00e9e", + "name": "Nom", + "round_digits": "Pr\u00e9cision", + "type": "Indicateur statistique" + }, + "data_description": { + "round_digits": "Contr\u00f4le le nombre de chiffres d\u00e9cimaux de la sortie lorsque l'indicateur statistique est la moyenne ou la m\u00e9diane." + }, + "description": "Cr\u00e9ez un capteur qui calcule une valeur minimale, maximale, moyenne ou m\u00e9diane \u00e0 partir d'une liste de capteurs d'entr\u00e9e.", + "title": "Ajouter un capteur de valeur minimale, maximale, moyenne ou m\u00e9diane" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "entity_ids": "Entit\u00e9s d'entr\u00e9e", + "round_digits": "Pr\u00e9cision", + "type": "Indicateur statistique" + }, + "data_description": { + "round_digits": "Contr\u00f4le le nombre de chiffres d\u00e9cimaux de la sortie lorsque l'indicateur statistique est la moyenne ou la m\u00e9diane." + } + }, + "options": { + "data": { + "entity_ids": "Entit\u00e9s d'entr\u00e9e", + "round_digits": "Pr\u00e9cision", + "type": "Indicateur statistique" + }, + "description": "Cr\u00e9ez un capteur qui calcule une valeur minimale, maximale, moyenne ou m\u00e9diane \u00e0 partir d'une liste de capteurs d'entr\u00e9e." + } + } + }, + "title": "Capteur de valeur minimale, maximale, moyenne ou m\u00e9diane" +} \ No newline at end of file diff --git a/homeassistant/components/min_max/translations/he.json b/homeassistant/components/min_max/translations/he.json new file mode 100644 index 00000000000..267e38f0ce2 --- /dev/null +++ b/homeassistant/components/min_max/translations/he.json @@ -0,0 +1,37 @@ +{ + "config": { + "step": { + "user": { + "data": { + "entity_ids": "\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea \u05e7\u05dc\u05d8", + "round_digits": "\u05d3\u05d9\u05d5\u05e7", + "type": "\u05de\u05d0\u05e4\u05d9\u05d9\u05df \u05e1\u05d8\u05d8\u05d9\u05e1\u05d8\u05d9\u05e7\u05d4" + }, + "data_description": { + "round_digits": "\u05e9\u05d5\u05dc\u05d8 \u05d1\u05de\u05e1\u05e4\u05e8 \u05d4\u05e1\u05e4\u05e8\u05d5\u05ea \u05d4\u05e2\u05e9\u05e8\u05d5\u05e0\u05d9\u05d5\u05ea \u05d1\u05e4\u05dc\u05d8 \u05db\u05d0\u05e9\u05e8 \u05de\u05d0\u05e4\u05d9\u05d9\u05df \u05d4\u05e1\u05d8\u05d8\u05d9\u05e1\u05d8\u05d9\u05e7\u05d4 \u05d4\u05d5\u05d0 \u05de\u05de\u05d5\u05e6\u05e2 \u05d0\u05d5 \u05d7\u05e6\u05d9\u05d5\u05e0\u05d9." + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "entity_ids": "\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea \u05e7\u05dc\u05d8", + "round_digits": "\u05d3\u05d9\u05d5\u05e7", + "type": "\u05de\u05d0\u05e4\u05d9\u05d9\u05df \u05e1\u05d8\u05d8\u05d9\u05e1\u05d8\u05d9\u05e7\u05d4" + }, + "data_description": { + "round_digits": "\u05e9\u05d5\u05dc\u05d8 \u05d1\u05de\u05e1\u05e4\u05e8 \u05d4\u05e1\u05e4\u05e8\u05d5\u05ea \u05d4\u05e2\u05e9\u05e8\u05d5\u05e0\u05d9\u05d5\u05ea \u05d1\u05e4\u05dc\u05d8 \u05db\u05d0\u05e9\u05e8 \u05de\u05d0\u05e4\u05d9\u05d9\u05df \u05d4\u05e1\u05d8\u05d8\u05d9\u05e1\u05d8\u05d9\u05e7\u05d4 \u05d4\u05d5\u05d0 \u05de\u05de\u05d5\u05e6\u05e2 \u05d0\u05d5 \u05d7\u05e6\u05d9\u05d5\u05e0\u05d9." + } + }, + "options": { + "data": { + "entity_ids": "\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea \u05e7\u05dc\u05d8", + "round_digits": "\u05d3\u05d9\u05d5\u05e7", + "type": "\u05de\u05d0\u05e4\u05d9\u05d9\u05df \u05e1\u05d8\u05d8\u05d9\u05e1\u05d8\u05d9\u05e7\u05d4" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/min_max/translations/hu.json b/homeassistant/components/min_max/translations/hu.json new file mode 100644 index 00000000000..98d021dbb31 --- /dev/null +++ b/homeassistant/components/min_max/translations/hu.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "entity_ids": "Forr\u00e1s entit\u00e1sok", + "name": "Elnevez\u00e9s", + "round_digits": "Pontoss\u00e1g", + "type": "Statisztikai jellemz\u0151" + }, + "data_description": { + "round_digits": "Szab\u00e1lyozza a tizedesjegyek sz\u00e1m\u00e1t, amikor a statisztikai jellemz\u0151 az \u00e1tlag vagy a medi\u00e1n." + }, + "description": "A pontoss\u00e1g a tizedesjegyek sz\u00e1m\u00e1t szab\u00e1lyozza, ha a statisztikai jellemz\u0151 az \u00e1tlag vagy a medi\u00e1n.", + "title": "Min / max / \u00e1tlag / medi\u00e1n \u00e9rz\u00e9kel\u0151 hozz\u00e1ad\u00e1sa" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "entity_ids": "Forr\u00e1s entit\u00e1sok", + "round_digits": "Pontoss\u00e1g", + "type": "Statisztikai jellemz\u0151" + }, + "data_description": { + "round_digits": "Szab\u00e1lyozza a tizedesjegyek sz\u00e1m\u00e1t, amikor a statisztikai jellemz\u0151 az \u00e1tlag vagy a medi\u00e1n." + } + }, + "options": { + "data": { + "entity_ids": "Forr\u00e1s entit\u00e1sok", + "round_digits": "Pontoss\u00e1g", + "type": "Statisztikai jellemz\u0151" + }, + "description": "A pontoss\u00e1g a tizedesjegyek sz\u00e1m\u00e1t szab\u00e1lyozza, ha a statisztikai jellemz\u0151 az \u00e1tlag vagy a medi\u00e1n." + } + } + }, + "title": "Min / max / \u00e1tlag / medi\u00e1n \u00e9rz\u00e9kel\u0151" +} \ No newline at end of file diff --git a/homeassistant/components/min_max/translations/id.json b/homeassistant/components/min_max/translations/id.json new file mode 100644 index 00000000000..32ccfd2596d --- /dev/null +++ b/homeassistant/components/min_max/translations/id.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "entity_ids": "Entitas input", + "name": "Nama", + "round_digits": "Presisi", + "type": "Karakteristik statistik" + }, + "data_description": { + "round_digits": "Mengontrol jumlah digit desimal dalam output ketika karakteristik statistik adalah rata-rata atau median." + }, + "description": "Buat sensor yang menghitung nilai min, maks, rata-rata, atau median dari sejumlah sensor input.", + "title": "Tambahkan sensor min/maks/rata-rata/median" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "entity_ids": "Entitas input", + "round_digits": "Presisi", + "type": "Karakteristik statistik" + }, + "data_description": { + "round_digits": "Mengontrol jumlah digit desimal dalam output ketika karakteristik statistik adalah rata-rata atau median." + } + }, + "options": { + "data": { + "entity_ids": "Entitas input", + "round_digits": "Presisi", + "type": "Karakteristik statistik" + }, + "description": "Buat sensor yang menghitung nilai min, maks, rata-rata, atau median dari sejumlah sensor input." + } + } + }, + "title": "Sensor min/maks/rata-rata/median" +} \ No newline at end of file diff --git a/homeassistant/components/min_max/translations/it.json b/homeassistant/components/min_max/translations/it.json new file mode 100644 index 00000000000..49c715a7507 --- /dev/null +++ b/homeassistant/components/min_max/translations/it.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "entity_ids": "Entit\u00e0 di ingresso", + "name": "Nome", + "round_digits": "Precisione", + "type": "Caratteristica statistica" + }, + "data_description": { + "round_digits": "Controlla il numero di cifre decimali nell'output quando la caratteristica statistica \u00e8 media o mediana." + }, + "description": "Crea un sensore che calcoli un valore minimo, massimo, medio o mediano da un elenco di sensori di input.", + "title": "Aggiungi sensore min / max / media / mediana" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "entity_ids": "Entit\u00e0 di ingresso", + "round_digits": "Precisione", + "type": "Caratteristica statistica" + }, + "data_description": { + "round_digits": "Controlla il numero di cifre decimali nell'output quando la caratteristica statistica \u00e8 media o mediana." + } + }, + "options": { + "data": { + "entity_ids": "Entit\u00e0 di ingresso", + "round_digits": "Precisione", + "type": "Caratteristica statistica" + }, + "description": "Crea un sensore che calcoli un valore minimo, massimo, medio o mediano da un elenco di sensori di input." + } + } + }, + "title": "Sensore min / max / media / mediana" +} \ No newline at end of file diff --git a/homeassistant/components/min_max/translations/ja.json b/homeassistant/components/min_max/translations/ja.json new file mode 100644 index 00000000000..c853a7c389e --- /dev/null +++ b/homeassistant/components/min_max/translations/ja.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "entity_ids": "\u5165\u529b\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3", + "name": "\u540d\u524d", + "round_digits": "\u7cbe\u5ea6", + "type": "\u7d71\u8a08\u7684\u7279\u6027" + }, + "data_description": { + "round_digits": "\u7d71\u8a08\u7684\u7279\u6027\u304c\u5e73\u5747\u5024\u307e\u305f\u306f\u4e2d\u592e\u5024\u306e\u5834\u5408\u306b\u3001\u51fa\u529b\u306b\u542b\u307e\u308c\u308b\u5c0f\u6570\u70b9\u4ee5\u4e0b\u306e\u6841\u6570\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002" + }, + "description": "\u7d71\u8a08\u7684\u7279\u6027\u304c\u5e73\u5747\u307e\u305f\u306f\u4e2d\u592e\u5024\u306a\u5834\u5408\u306e\u7cbe\u5ea6\u3067\u3001\u5c0f\u6570\u70b9\u4ee5\u4e0b\u306e\u6841\u6570\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002", + "title": "\u6700\u5c0f/\u6700\u5927/\u5e73\u5747/\u4e2d\u592e\u5024 \u30bb\u30f3\u30b5\u30fc\u3092\u8ffd\u52a0" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "entity_ids": "\u5165\u529b\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3", + "round_digits": "\u7cbe\u5ea6", + "type": "\u7d71\u8a08\u7684\u7279\u6027" + }, + "data_description": { + "round_digits": "\u7d71\u8a08\u7684\u7279\u6027\u304c\u5e73\u5747\u5024\u307e\u305f\u306f\u4e2d\u592e\u5024\u306e\u5834\u5408\u306b\u3001\u51fa\u529b\u306b\u542b\u307e\u308c\u308b\u5c0f\u6570\u70b9\u4ee5\u4e0b\u306e\u6841\u6570\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002" + } + }, + "options": { + "data": { + "entity_ids": "\u5165\u529b\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3", + "round_digits": "\u7cbe\u5ea6", + "type": "\u7d71\u8a08\u7684\u7279\u6027" + }, + "description": "\u7d71\u8a08\u7684\u7279\u6027\u304c\u5e73\u5747\u307e\u305f\u306f\u4e2d\u592e\u5024\u306a\u5834\u5408\u306e\u7cbe\u5ea6\u3067\u3001\u5c0f\u6570\u70b9\u4ee5\u4e0b\u306e\u6841\u6570\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002" + } + } + }, + "title": "\u6700\u5c0f/\u6700\u5927/\u5e73\u5747/\u4e2d\u592e\u5024 \u30bb\u30f3\u30b5\u30fc" +} \ No newline at end of file diff --git a/homeassistant/components/min_max/translations/nl.json b/homeassistant/components/min_max/translations/nl.json new file mode 100644 index 00000000000..36f09f97d54 --- /dev/null +++ b/homeassistant/components/min_max/translations/nl.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "entity_ids": "Entiteiten invoeren", + "name": "Naam", + "round_digits": "Precisie", + "type": "statistisch kenmerk" + }, + "data_description": { + "round_digits": "Regelt het aantal decimale cijfers in de uitvoer wanneer de statistische eigenschap gemiddelde of mediaan is." + }, + "description": "Maak een sensor die een min, max, gemiddelde of mediaanwaarde berekent uit een lijst van invoersensoren.", + "title": "Voeg min / max / gemiddelde / mediaan sensor toe" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "entity_ids": "Entiteiten invoeren", + "round_digits": "Precisie", + "type": "statistisch kenmerk" + }, + "data_description": { + "round_digits": "Regelt het aantal decimale cijfers in de uitvoer wanneer de statistische eigenschap gemiddelde of mediaan is." + } + }, + "options": { + "data": { + "entity_ids": "Invoer entiteiten", + "round_digits": "Precisie", + "type": "Statistische karakteristieken" + }, + "description": "Precisie bepaalt het aantal decimale cijfers wanneer het statistische kenmerk gemiddelde of mediaan is." + } + } + }, + "title": "Min / max / gemiddelde / mediaan sensor" +} \ No newline at end of file diff --git a/homeassistant/components/min_max/translations/no.json b/homeassistant/components/min_max/translations/no.json new file mode 100644 index 00000000000..798430cec03 --- /dev/null +++ b/homeassistant/components/min_max/translations/no.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "entity_ids": "Inndataenheter", + "name": "Navn", + "round_digits": "Presisjon", + "type": "Statistisk karakteristikk" + }, + "data_description": { + "round_digits": "Styrer antall desimaler i utdata n\u00e5r statistikkkarakteristikken er gjennomsnitt eller median." + }, + "description": "Lag en sensor som beregner en min, maks, middelverdi eller medianverdi fra en liste over inngangssensorer.", + "title": "Legg til min / maks / gjennomsnitt / median sensor" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "entity_ids": "Inndataenheter", + "round_digits": "Presisjon", + "type": "Statistisk karakteristikk" + }, + "data_description": { + "round_digits": "Styrer antall desimaler i utdata n\u00e5r statistikkkarakteristikken er gjennomsnitt eller median." + } + }, + "options": { + "data": { + "entity_ids": "Inndataenheter", + "round_digits": "Presisjon", + "type": "Statistisk karakteristikk" + }, + "description": "Lag en sensor som beregner en min, maks, middelverdi eller medianverdi fra en liste over inngangssensorer." + } + } + }, + "title": "Min / maks / gjennomsnitt / median sensor" +} \ No newline at end of file diff --git a/homeassistant/components/min_max/translations/pl.json b/homeassistant/components/min_max/translations/pl.json new file mode 100644 index 00000000000..0a29ad78339 --- /dev/null +++ b/homeassistant/components/min_max/translations/pl.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "entity_ids": "Encje wej\u015bciowe", + "name": "Nazwa", + "round_digits": "Precyzja", + "type": "Charakterystyka statystyczna" + }, + "data_description": { + "round_digits": "Kontroluje liczb\u0119 cyfr dziesi\u0119tnych w danych wyj\u015bciowych, gdy charakterystyka statystyki jest \u015bredni\u0105 lub median\u0105." + }, + "description": "Utw\u00f3rz sensor, kt\u00f3ry oblicza warto\u015b\u0107 minimaln\u0105, maksymaln\u0105, \u015bredni\u0105 lub median\u0119 z listy sensor\u00f3w wej\u015bciowych.", + "title": "Dodawanie sensora min / maks / \u015brednia / mediana" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "entity_ids": "Encje wej\u015bciowe", + "round_digits": "Precyzja", + "type": "Charakterystyka statystyczna" + }, + "data_description": { + "round_digits": "Kontroluje liczb\u0119 cyfr dziesi\u0119tnych w danych wyj\u015bciowych, gdy charakterystyka statystyki jest \u015bredni\u0105 lub median\u0105." + } + }, + "options": { + "data": { + "entity_ids": "Encje wej\u015bciowe", + "round_digits": "Precyzja", + "type": "Charakterystyka statystyczna" + }, + "description": "Utw\u00f3rz sensor, kt\u00f3ry oblicza warto\u015b\u0107 minimaln\u0105, maksymaln\u0105, \u015bredni\u0105 lub median\u0119 z listy sensor\u00f3w wej\u015bciowych." + } + } + }, + "title": "Sensor min./maks./\u015brednia/mediana" +} \ No newline at end of file diff --git a/homeassistant/components/min_max/translations/pt-BR.json b/homeassistant/components/min_max/translations/pt-BR.json new file mode 100644 index 00000000000..9c1c77c304a --- /dev/null +++ b/homeassistant/components/min_max/translations/pt-BR.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "entity_ids": "Entidades de entrada", + "name": "Nome", + "round_digits": "Precis\u00e3o", + "type": "Caracter\u00edstica estat\u00edstica" + }, + "data_description": { + "round_digits": "Controla o n\u00famero de d\u00edgitos decimais na sa\u00edda quando a caracter\u00edstica estat\u00edstica \u00e9 m\u00e9dia ou mediana." + }, + "description": "Crie um sensor que calcula um valor m\u00ednimo, m\u00e1ximo, m\u00e9dio ou mediano de uma lista de sensores de entrada.", + "title": "Adicionar sensor de m\u00ednima / m\u00e1xima / m\u00e9dia / mediana" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "entity_ids": "Entidades de entrada", + "round_digits": "Precis\u00e3o", + "type": "Caracter\u00edstica estat\u00edstica" + }, + "data_description": { + "round_digits": "Controla o n\u00famero de d\u00edgitos decimais na sa\u00edda quando a caracter\u00edstica estat\u00edstica \u00e9 m\u00e9dia ou mediana." + } + }, + "options": { + "data": { + "entity_ids": "Entidades de entrada", + "round_digits": "Precis\u00e3o", + "type": "Caracter\u00edstica estat\u00edstica" + }, + "description": "Crie um sensor que calcula um valor m\u00ednimo, m\u00e1ximo, m\u00e9dio ou mediano de uma lista de sensores de entrada." + } + } + }, + "title": "Sensor m\u00edn./m\u00e1x./m\u00e9dio/mediano" +} \ No newline at end of file diff --git a/homeassistant/components/min_max/translations/ru.json b/homeassistant/components/min_max/translations/ru.json new file mode 100644 index 00000000000..551660fcabb --- /dev/null +++ b/homeassistant/components/min_max/translations/ru.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "entity_ids": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b", + "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", + "round_digits": "\u041e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435", + "type": "\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430" + }, + "data_description": { + "round_digits": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u043a\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u044f\u0442\u043e\u0439, \u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u0438\u043b\u0438 \u043c\u0435\u0434\u0438\u0430\u043d\u043d\u043e\u0439." + }, + "description": "\u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435, \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0438\u043b\u0438 \u043c\u0435\u0434\u0438\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432.", + "title": "\u041c\u0438\u043d\u0438\u043c\u0443\u043c / \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c / \u0441\u0440\u0435\u0434\u043d\u0435\u0435 / \u043c\u0435\u0434\u0438\u0430\u043d\u0430" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "entity_ids": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b", + "round_digits": "\u041e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435", + "type": "\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430" + }, + "data_description": { + "round_digits": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u043a\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u044f\u0442\u043e\u0439, \u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u0438\u043b\u0438 \u043c\u0435\u0434\u0438\u0430\u043d\u043d\u043e\u0439." + } + }, + "options": { + "data": { + "entity_ids": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b", + "round_digits": "\u041e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435", + "type": "\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430" + }, + "description": "\u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435, \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0438\u043b\u0438 \u043c\u0435\u0434\u0438\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432." + } + } + }, + "title": "\u041d\u043e\u0432\u044b\u0439 \u0441\u0435\u043d\u0441\u043e\u0440" +} \ No newline at end of file diff --git a/homeassistant/components/min_max/translations/sv.json b/homeassistant/components/min_max/translations/sv.json new file mode 100644 index 00000000000..d39c277daff --- /dev/null +++ b/homeassistant/components/min_max/translations/sv.json @@ -0,0 +1,11 @@ +{ + "options": { + "step": { + "init": { + "data": { + "round_digits": "Precision" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/min_max/translations/tr.json b/homeassistant/components/min_max/translations/tr.json new file mode 100644 index 00000000000..7f192888615 --- /dev/null +++ b/homeassistant/components/min_max/translations/tr.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "entity_ids": "Giri\u015f varl\u0131klar\u0131", + "name": "Ad", + "round_digits": "Hassas", + "type": "\u0130statistik \u00f6zelli\u011fi" + }, + "data_description": { + "round_digits": "\u0130statistik \u00f6zelli\u011fi ortalama veya medyan oldu\u011funda \u00e7\u0131kt\u0131daki ondal\u0131k basamak say\u0131s\u0131n\u0131 kontrol eder." + }, + "description": "Giri\u015f sens\u00f6rleri listesinden minimum, maksimum, ortalama veya medyan de\u011feri hesaplayan bir sens\u00f6r olu\u015fturun.", + "title": "Min / maks / ortalama / medyan sens\u00f6r\u00fc ekle" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "entity_ids": "Giri\u015f varl\u0131klar\u0131", + "round_digits": "Hassas", + "type": "\u0130statistik \u00f6zelli\u011fi" + }, + "data_description": { + "round_digits": "\u0130statistik \u00f6zelli\u011fi ortalama veya medyan oldu\u011funda \u00e7\u0131kt\u0131daki ondal\u0131k basamak say\u0131s\u0131n\u0131 kontrol eder." + } + }, + "options": { + "data": { + "entity_ids": "Giri\u015f varl\u0131klar\u0131", + "round_digits": "Hassas", + "type": "\u0130statistik \u00f6zelli\u011fi" + }, + "description": "Giri\u015f sens\u00f6rleri listesinden minimum, maksimum, ortalama veya medyan de\u011feri hesaplayan bir sens\u00f6r olu\u015fturun." + } + } + }, + "title": "Min / maks / ortalama / medyan sens\u00f6r" +} \ No newline at end of file diff --git a/homeassistant/components/min_max/translations/zh-Hans.json b/homeassistant/components/min_max/translations/zh-Hans.json new file mode 100644 index 00000000000..ca5555bbd0a --- /dev/null +++ b/homeassistant/components/min_max/translations/zh-Hans.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "entity_ids": "\u8f93\u5165\u5b9e\u4f53", + "name": "\u540d\u79f0", + "round_digits": "\u7cbe\u5ea6", + "type": "\u7edf\u8ba1\u9879" + }, + "data_description": { + "round_digits": "\u5f53\u7edf\u8ba1\u9879\u4e3a\u5e73\u5747\u503c\u6216\u4e2d\u4f4d\u6570\u65f6\uff0c\u63a7\u5236\u8f93\u51fa\u7684\u5c0f\u6570\u4f4d\u6570\u3002" + }, + "description": "\u521b\u5efa\u4f20\u611f\u5668\u6765\u8ba1\u7b97\u591a\u4e2a\u8f93\u5165\u4f20\u611f\u5668\u503c\u7684\u6700\u5927\u503c\u3001\u6700\u5c0f\u503c\u3001\u5e73\u5747\u503c\u3001\u6216\u4e2d\u4f4d\u6570\u3002", + "title": "\u6dfb\u52a0\u6700\u5927\u503c/\u6700\u5c0f\u503c/\u5e73\u5747\u503c/\u4e2d\u4f4d\u6570\u4f20\u611f\u5668" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "entity_ids": "\u8f93\u5165\u5b9e\u4f53", + "round_digits": "\u7cbe\u5ea6", + "type": "\u7edf\u8ba1\u9879" + }, + "data_description": { + "round_digits": "\u5f53\u7edf\u8ba1\u9879\u4e3a\u5e73\u5747\u503c\u6216\u4e2d\u4f4d\u6570\u65f6\uff0c\u63a7\u5236\u8f93\u51fa\u7684\u5c0f\u6570\u4f4d\u6570\u3002" + } + }, + "options": { + "data": { + "entity_ids": "\u8f93\u5165\u5b9e\u4f53", + "round_digits": "\u7cbe\u5ea6", + "type": "\u7edf\u8ba1\u9879" + }, + "description": "\u521b\u5efa\u4f20\u611f\u5668\u6765\u8ba1\u7b97\u591a\u4e2a\u8f93\u5165\u4f20\u611f\u5668\u503c\u7684\u6700\u5927\u503c\u3001\u6700\u5c0f\u503c\u3001\u5e73\u5747\u503c\u3001\u6216\u4e2d\u4f4d\u6570\u3002" + } + } + }, + "title": "\u6700\u5927\u503c/\u6700\u5c0f\u503c/\u5e73\u5747\u503c/\u4e2d\u4f4d\u6570\u4f20\u611f\u5668" +} \ No newline at end of file diff --git a/homeassistant/components/min_max/translations/zh-Hant.json b/homeassistant/components/min_max/translations/zh-Hant.json new file mode 100644 index 00000000000..b0166e26cac --- /dev/null +++ b/homeassistant/components/min_max/translations/zh-Hant.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "entity_ids": "\u8f38\u5165\u5be6\u9ad4", + "name": "\u540d\u7a31", + "round_digits": "\u6e96\u78ba\u5ea6", + "type": "\u7d71\u8a08\u7279\u5fb5" + }, + "data_description": { + "round_digits": "\u7576\u7d71\u8a08\u7279\u5fb5\u70ba\u5e73\u5747\u503c\u6216\u4e2d\u503c\u6642\u3001\u63a7\u5236\u8f38\u51fa\u5c0f\u6578\u4f4d\u6578\u3002" + }, + "description": "\u65b0\u589e\u81ea\u8f38\u5165\u611f\u6e2c\u5668\u4e86\u8868\u4e2d\uff0c\u8a08\u7b97\u6700\u4f4e\u3001\u6700\u9ad8\u3001\u5e73\u5747\u503c\u6216\u4e2d\u503c\u611f\u6e2c\u5668\u3002", + "title": "\u65b0\u589e\u6700\u5c0f\u503c / \u6700\u5927\u503c / \u5e73\u5747\u503c / \u4e2d\u503c\u611f\u6e2c\u5668" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "entity_ids": "\u8f38\u5165\u5be6\u9ad4", + "round_digits": "\u6e96\u78ba\u5ea6", + "type": "\u7d71\u8a08\u7279\u5fb5" + }, + "data_description": { + "round_digits": "\u7576\u7d71\u8a08\u7279\u5fb5\u70ba\u5e73\u5747\u503c\u6216\u4e2d\u503c\u6642\u3001\u63a7\u5236\u8f38\u51fa\u5c0f\u6578\u4f4d\u6578\u3002" + } + }, + "options": { + "data": { + "entity_ids": "\u8f38\u5165\u5be6\u9ad4", + "round_digits": "\u6e96\u78ba\u5ea6", + "type": "\u7d71\u8a08\u7279\u5fb5" + }, + "description": "\u65b0\u589e\u81ea\u8f38\u5165\u611f\u6e2c\u5668\u4e86\u8868\u4e2d\uff0c\u8a08\u7b97\u6700\u4f4e\u3001\u6700\u9ad8\u3001\u5e73\u5747\u503c\u6216\u4e2d\u503c\u611f\u6e2c\u5668\u3002" + } + } + }, + "title": "\u6700\u5c0f\u503c / \u6700\u5927\u503c / \u5e73\u5747\u503c / \u4e2d\u503c\u611f\u6e2c\u5668" +} \ No newline at end of file diff --git a/homeassistant/components/minecraft_server/translations/hu.json b/homeassistant/components/minecraft_server/translations/hu.json index 02c2a06d8ab..00fff153254 100644 --- a/homeassistant/components/minecraft_server/translations/hu.json +++ b/homeassistant/components/minecraft_server/translations/hu.json @@ -12,7 +12,7 @@ "user": { "data": { "host": "C\u00edm", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" }, "description": "\u00c1ll\u00edtsa be a Minecraft Server p\u00e9ld\u00e1nyt, hogy lehet\u0151v\u00e9 tegye a megfigyel\u00e9st.", "title": "Kapcsold \u00f6ssze a Minecraft szervered" diff --git a/homeassistant/components/minecraft_server/translations/pl.json b/homeassistant/components/minecraft_server/translations/pl.json index fed8d250a90..88b5dd869e4 100644 --- a/homeassistant/components/minecraft_server/translations/pl.json +++ b/homeassistant/components/minecraft_server/translations/pl.json @@ -15,7 +15,7 @@ "name": "Nazwa" }, "description": "Skonfiguruj instancj\u0119 serwera Minecraft, aby umo\u017cliwi\u0107 monitorowanie.", - "title": "Po\u0142\u0105cz sw\u00f3j serwer Minecraft" + "title": "Po\u0142\u0105czenie z Twoim serwerem Minecraft" } } } diff --git a/homeassistant/components/mjpeg/translations/fr.json b/homeassistant/components/mjpeg/translations/fr.json index f54c60631a6..405cbc8bf51 100644 --- a/homeassistant/components/mjpeg/translations/fr.json +++ b/homeassistant/components/mjpeg/translations/fr.json @@ -13,6 +13,7 @@ "mjpeg_url": "URL MJPEG", "name": "Nom", "password": "Mot de passe", + "still_image_url": "URL de l'image fixe", "username": "Nom d'utilisateur", "verify_ssl": "V\u00e9rifier le certificat SSL" } @@ -31,6 +32,7 @@ "mjpeg_url": "URL MJPEG", "name": "Nom", "password": "Mot de passe", + "still_image_url": "URL de l'image fixe", "username": "Nom d'utilisateur", "verify_ssl": "V\u00e9rifier le certificat SSL" } diff --git a/homeassistant/components/mjpeg/translations/hu.json b/homeassistant/components/mjpeg/translations/hu.json index 0a87f484887..f3029663306 100644 --- a/homeassistant/components/mjpeg/translations/hu.json +++ b/homeassistant/components/mjpeg/translations/hu.json @@ -11,7 +11,7 @@ "user": { "data": { "mjpeg_url": "MJPEG URL-c\u00edme", - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "password": "Jelsz\u00f3", "still_image_url": "\u00c1ll\u00f3k\u00e9p URL-c\u00edme", "username": "Felhaszn\u00e1l\u00f3n\u00e9v", @@ -30,7 +30,7 @@ "init": { "data": { "mjpeg_url": "MJPEG URL-c\u00edme", - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "password": "Jelsz\u00f3", "still_image_url": "\u00c1ll\u00f3k\u00e9p URL-c\u00edme", "username": "Felhaszn\u00e1l\u00f3n\u00e9v", diff --git a/homeassistant/components/modem_callerid/translations/hu.json b/homeassistant/components/modem_callerid/translations/hu.json index 3a75df30a7d..2a53c24d902 100644 --- a/homeassistant/components/modem_callerid/translations/hu.json +++ b/homeassistant/components/modem_callerid/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "no_devices_found": "Nem tal\u00e1lhat\u00f3 egy\u00e9b eszk\u00f6z" }, "error": { @@ -15,7 +15,7 @@ }, "user": { "data": { - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "port": "Port" }, "description": "Ez egy integr\u00e1ci\u00f3 a CX93001 hangmodemmel t\u00f6rt\u00e9n\u0151 vezet\u00e9kes h\u00edv\u00e1sokhoz. Ez k\u00e9pes lek\u00e9rdezni a h\u00edv\u00f3azonos\u00edt\u00f3 inform\u00e1ci\u00f3t a bej\u00f6v\u0151 h\u00edv\u00e1s visszautas\u00edt\u00e1s\u00e1nak lehet\u0151s\u00e9g\u00e9vel.", diff --git a/homeassistant/components/modern_forms/translations/et.json b/homeassistant/components/modern_forms/translations/et.json index ee325440c13..7140888db84 100644 --- a/homeassistant/components/modern_forms/translations/et.json +++ b/homeassistant/components/modern_forms/translations/et.json @@ -19,7 +19,7 @@ "description": "Seadista Modern Forms'i ventilaator sidumiseks Home Assistantiga." }, "zeroconf_confirm": { - "description": "Kas lisada Modern Forms'i ventilaator nimega `{nimi}` Home Assistanti?", + "description": "Kas lisada Modern Forms'i ventilaator nimega `{name}` Home Assistanti?", "title": "Leitud Modern Forms ventilaator" } } diff --git a/homeassistant/components/moon/translations/cs.json b/homeassistant/components/moon/translations/cs.json new file mode 100644 index 00000000000..f1c26a20f6e --- /dev/null +++ b/homeassistant/components/moon/translations/cs.json @@ -0,0 +1,13 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Ji\u017e nastaveno. Je mo\u017en\u00e1 pouze jedin\u00e1 konfigurace." + }, + "step": { + "user": { + "description": "Chcete za\u010d\u00edt nastavovat?" + } + } + }, + "title": "M\u011bs\u00edc" +} \ No newline at end of file diff --git a/homeassistant/components/moon/translations/sensor.fi.json b/homeassistant/components/moon/translations/sensor.fi.json index f7788972044..a35afac10d6 100644 --- a/homeassistant/components/moon/translations/sensor.fi.json +++ b/homeassistant/components/moon/translations/sensor.fi.json @@ -4,7 +4,11 @@ "first_quarter": "Ensimm\u00e4inen nelj\u00e4nnes", "full_moon": "T\u00e4ysikuu", "last_quarter": "Viimeinen nelj\u00e4nnes", - "new_moon": "Uusikuu" + "new_moon": "Uusikuu", + "waning_crescent": "V\u00e4henev\u00e4 sirppi", + "waning_gibbous": "V\u00e4henev\u00e4 kuperakuu", + "waxing_crescent": "Kasvava sirppi", + "waxing_gibbous": "Kasvava kuperakuu" } } } \ No newline at end of file diff --git a/homeassistant/components/motion_blinds/translations/ca.json b/homeassistant/components/motion_blinds/translations/ca.json index 1db1976cbd3..18cc8f892d6 100644 --- a/homeassistant/components/motion_blinds/translations/ca.json +++ b/homeassistant/components/motion_blinds/translations/ca.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "El dispositiu ja est\u00e0 configurat", + "already_configured": "El dispositiu ja est\u00e0 configurat, la configuraci\u00f3 de connexi\u00f3 s'ha actualitzat", "already_in_progress": "El flux de configuraci\u00f3 ja est\u00e0 en curs", "connection_error": "Ha fallat la connexi\u00f3" }, @@ -9,7 +9,7 @@ "discovery_error": "No s'ha pogut descobrir cap Motion Gateway", "invalid_interface": "Interf\u00edcie de xarxa no v\u00e0lida" }, - "flow_title": "Motion Blinds", + "flow_title": "{short_mac} ({ip_address})", "step": { "connect": { "data": { diff --git a/homeassistant/components/motion_blinds/translations/de.json b/homeassistant/components/motion_blinds/translations/de.json index a4758c85d4b..c5ced3ddd55 100644 --- a/homeassistant/components/motion_blinds/translations/de.json +++ b/homeassistant/components/motion_blinds/translations/de.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "Ger\u00e4t ist bereits konfiguriert", + "already_configured": "Ger\u00e4t ist bereits konfiguriert, Verbindungseinstellungen werden aktualisiert", "already_in_progress": "Der Konfigurationsablauf wird bereits ausgef\u00fchrt", "connection_error": "Verbindung fehlgeschlagen" }, @@ -9,7 +9,7 @@ "discovery_error": "Motion-Gateway konnte nicht gefunden werden", "invalid_interface": "Ung\u00fcltige Netzwerkschnittstelle" }, - "flow_title": "Jalousien", + "flow_title": "{short_mac} ({ip_address})", "step": { "connect": { "data": { diff --git a/homeassistant/components/motion_blinds/translations/en.json b/homeassistant/components/motion_blinds/translations/en.json index 4033a8f2016..92931ee27ab 100644 --- a/homeassistant/components/motion_blinds/translations/en.json +++ b/homeassistant/components/motion_blinds/translations/en.json @@ -6,13 +6,15 @@ "connection_error": "Failed to connect" }, "error": { - "discovery_error": "Failed to discover a Motion Gateway" + "discovery_error": "Failed to discover a Motion Gateway", + "invalid_interface": "Invalid network interface" }, "flow_title": "{short_mac} ({ip_address})", "step": { "connect": { "data": { - "api_key": "API Key" + "api_key": "API Key", + "interface": "The network interface to use" }, "description": "You will need the 16 character API Key, see https://www.home-assistant.io/integrations/motion_blinds/#retrieving-the-key for instructions", "title": "Motion Blinds" diff --git a/homeassistant/components/motion_blinds/translations/et.json b/homeassistant/components/motion_blinds/translations/et.json index 7091c402a2e..935e345ea3a 100644 --- a/homeassistant/components/motion_blinds/translations/et.json +++ b/homeassistant/components/motion_blinds/translations/et.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "Seade on juba h\u00e4\u00e4lestatud", + "already_configured": "Seade on juba h\u00e4\u00e4lestatud, \u00fchenduse s\u00e4tted on v\u00e4rskendatud", "already_in_progress": "Seadistamine on juba k\u00e4imas", "connection_error": "\u00dchendamine nurjus" }, @@ -9,7 +9,7 @@ "discovery_error": "Motion Gateway avastamine nurjus", "invalid_interface": "Sobimatu v\u00f5rguliides" }, - "flow_title": "", + "flow_title": "{short_mac} ({ip_address})", "step": { "connect": { "data": { diff --git a/homeassistant/components/motion_blinds/translations/fr.json b/homeassistant/components/motion_blinds/translations/fr.json index 75fb1daa9be..09cf93fde60 100644 --- a/homeassistant/components/motion_blinds/translations/fr.json +++ b/homeassistant/components/motion_blinds/translations/fr.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "L'appareil est d\u00e9j\u00e0 configur\u00e9", + "already_configured": "L'appareil est d\u00e9j\u00e0 configur\u00e9, les param\u00e8tres de connexion ont \u00e9t\u00e9 mis \u00e0 jour", "already_in_progress": "La configuration est d\u00e9j\u00e0 en cours", "connection_error": "\u00c9chec de connexion" }, @@ -9,7 +9,7 @@ "discovery_error": "Impossible de d\u00e9couvrir une Motion Gateway", "invalid_interface": "Interface r\u00e9seau non valide" }, - "flow_title": "Stores de mouvement", + "flow_title": "{short_mac} ({ip_address})", "step": { "connect": { "data": { diff --git a/homeassistant/components/motion_blinds/translations/he.json b/homeassistant/components/motion_blinds/translations/he.json index 0876de6504a..ce6f3d2918e 100644 --- a/homeassistant/components/motion_blinds/translations/he.json +++ b/homeassistant/components/motion_blinds/translations/he.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "\u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05d4\u05ea\u05e7\u05df \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4", + "already_configured": "\u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05d4\u05ea\u05e7\u05df \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4 \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05d4\u05d7\u05d9\u05d1\u05d5\u05e8 \u05e2\u05d5\u05d3\u05db\u05e0\u05d5", "already_in_progress": "\u05d6\u05e8\u05d9\u05de\u05ea \u05d4\u05ea\u05e6\u05d5\u05e8\u05d4 \u05db\u05d1\u05e8 \u05de\u05ea\u05d1\u05e6\u05e2\u05ea", "connection_error": "\u05d4\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05e0\u05db\u05e9\u05dc\u05d4" }, diff --git a/homeassistant/components/motion_blinds/translations/hu.json b/homeassistant/components/motion_blinds/translations/hu.json index 9d0f41db143..64334c54a28 100644 --- a/homeassistant/components/motion_blinds/translations/hu.json +++ b/homeassistant/components/motion_blinds/translations/hu.json @@ -1,15 +1,15 @@ { "config": { "abort": { - "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van, a csatlakoz\u00e1si be\u00e1ll\u00edt\u00e1sai friss\u00edtve vannak", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "connection_error": "Sikertelen csatlakoz\u00e1s" }, "error": { "discovery_error": "Nem siker\u00fclt felfedezni a Motion Gateway-t", "invalid_interface": "\u00c9rv\u00e9nytelen h\u00e1l\u00f3zati interf\u00e9sz" }, - "flow_title": "Mozg\u00f3 red\u0151ny", + "flow_title": "{short_mac} ({ip_address})", "step": { "connect": { "data": { @@ -17,7 +17,7 @@ "interface": "A haszn\u00e1lni k\u00edv\u00e1nt h\u00e1l\u00f3zati interf\u00e9sz" }, "description": "Sz\u00fcks\u00e9ge lesz a 16 karakteres API kulcsra, \u00fatmutat\u00e1s\u00e9rt l\u00e1sd: https://www.home-assistant.io/integrations/motion_blinds/#retrieving-the-key", - "title": "Mozg\u00f3 red\u0151ny" + "title": "Red\u0151ny/rol\u00f3" }, "select": { "data": { @@ -32,7 +32,7 @@ "host": "IP c\u00edm" }, "description": "Csatlakozzon a Motion Gateway-hez, ha az IP-c\u00edm nincs be\u00e1ll\u00edtva, akkor az automatikus felder\u00edt\u00e9st haszn\u00e1lja", - "title": "Mozg\u00f3 red\u0151ny" + "title": "Red\u0151ny/rol\u00f3" } } }, @@ -43,7 +43,7 @@ "wait_for_push": "Multicast adatokra v\u00e1rakoz\u00e1s friss\u00edt\u00e9skor" }, "description": "Opcion\u00e1lis be\u00e1ll\u00edt\u00e1sok megad\u00e1sa", - "title": "Motion Blinds" + "title": "Red\u0151ny/rol\u00f3" } } } diff --git a/homeassistant/components/motion_blinds/translations/id.json b/homeassistant/components/motion_blinds/translations/id.json index 269470110ec..d576ced8c0a 100644 --- a/homeassistant/components/motion_blinds/translations/id.json +++ b/homeassistant/components/motion_blinds/translations/id.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "Perangkat sudah dikonfigurasi", + "already_configured": "Perangkat sudah dikonfigurasi, pengaturan koneksi diperbarui", "already_in_progress": "Alur konfigurasi sedang berlangsung", "connection_error": "Gagal terhubung" }, @@ -9,7 +9,7 @@ "discovery_error": "Gagal menemukan Motion Gateway", "invalid_interface": "Antarmuka jaringan tidak valid" }, - "flow_title": "Motion Blinds", + "flow_title": "{short_mac} ({ip_address})", "step": { "connect": { "data": { diff --git a/homeassistant/components/motion_blinds/translations/it.json b/homeassistant/components/motion_blinds/translations/it.json index 6a9cef8a0af..0871ce07bf8 100644 --- a/homeassistant/components/motion_blinds/translations/it.json +++ b/homeassistant/components/motion_blinds/translations/it.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "Il dispositivo \u00e8 gi\u00e0 configurato", + "already_configured": "Il dispositivo \u00e8 gi\u00e0 configurato, le impostazioni di connessione sono aggiornate", "already_in_progress": "Il flusso di configurazione \u00e8 gi\u00e0 in corso", "connection_error": "Impossibile connettersi" }, @@ -9,7 +9,7 @@ "discovery_error": "Impossibile rilevare un Motion Gateway", "invalid_interface": "Interfaccia di rete non valida" }, - "flow_title": "Tende Motion", + "flow_title": "{short_mac} ({ip_address})", "step": { "connect": { "data": { diff --git a/homeassistant/components/motion_blinds/translations/nl.json b/homeassistant/components/motion_blinds/translations/nl.json index 3d3d078b814..6cb69b06b87 100644 --- a/homeassistant/components/motion_blinds/translations/nl.json +++ b/homeassistant/components/motion_blinds/translations/nl.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "Apparaat is al geconfigureerd", + "already_configured": "Apparaat is al geconfigureerd, verbindingsinstellingen zijn bijgewerkt", "already_in_progress": "De configuratiestroom is al aan de gang", "connection_error": "Kan geen verbinding maken" }, @@ -9,7 +9,7 @@ "discovery_error": "Kan geen Motion Gateway vinden", "invalid_interface": "Ongeldige netwerkinterface" }, - "flow_title": "Motion Blinds", + "flow_title": "{short_mac} ({ip_address})", "step": { "connect": { "data": { diff --git a/homeassistant/components/motion_blinds/translations/no.json b/homeassistant/components/motion_blinds/translations/no.json index 242a6647da9..d6c4708ea8c 100644 --- a/homeassistant/components/motion_blinds/translations/no.json +++ b/homeassistant/components/motion_blinds/translations/no.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "Enheten er allerede konfigurert", + "already_configured": "Enheten er allerede konfigurert , tilkoblingsinnstillingene er oppdatert", "already_in_progress": "Konfigurasjonsflyten p\u00e5g\u00e5r allerede", "connection_error": "Tilkobling mislyktes" }, @@ -9,7 +9,7 @@ "discovery_error": "Kunne ikke oppdage en Motion Gateway", "invalid_interface": "Ugyldig nettverksgrensesnitt" }, - "flow_title": "Motion Blinds", + "flow_title": "{short_mac} ( {ip_address} )", "step": { "connect": { "data": { diff --git a/homeassistant/components/motion_blinds/translations/pl.json b/homeassistant/components/motion_blinds/translations/pl.json index 6161b6aa3da..2a042859b88 100644 --- a/homeassistant/components/motion_blinds/translations/pl.json +++ b/homeassistant/components/motion_blinds/translations/pl.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "Urz\u0105dzenie jest ju\u017c skonfigurowane", + "already_configured": "Urz\u0105dzenie jest ju\u017c skonfigurowane, ustawienia po\u0142\u0105czenia zosta\u0142y zaktualizowane", "already_in_progress": "Konfiguracja jest ju\u017c w toku", "connection_error": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia" }, @@ -9,7 +9,7 @@ "discovery_error": "Nie uda\u0142o si\u0119 wykry\u0107 bramki ruchu", "invalid_interface": "Nieprawid\u0142owy interfejs sieciowy" }, - "flow_title": "Rolety Motion", + "flow_title": "{short_mac} ({ip_address})", "step": { "connect": { "data": { diff --git a/homeassistant/components/motion_blinds/translations/pt-BR.json b/homeassistant/components/motion_blinds/translations/pt-BR.json index dcabdbd16e5..01658cea852 100644 --- a/homeassistant/components/motion_blinds/translations/pt-BR.json +++ b/homeassistant/components/motion_blinds/translations/pt-BR.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "Dispositivo j\u00e1 est\u00e1 configurado", + "already_configured": "Dispositivo j\u00e1 est\u00e1 configurado, as configura\u00e7\u00f5es de conex\u00e3o s\u00e3o atualizadas", "already_in_progress": "O fluxo de configura\u00e7\u00e3o j\u00e1 est\u00e1 em andamento", "connection_error": "Falha ao conectar" }, @@ -9,7 +9,7 @@ "discovery_error": "Falha ao descobrir um Motion Gateway", "invalid_interface": "Interface de rede inv\u00e1lida" }, - "flow_title": "Cortinas de movimento", + "flow_title": "{short_mac} ({ip_address})", "step": { "connect": { "data": { diff --git a/homeassistant/components/motion_blinds/translations/ru.json b/homeassistant/components/motion_blinds/translations/ru.json index 83fe77ff9eb..e7a4492bd54 100644 --- a/homeassistant/components/motion_blinds/translations/ru.json +++ b/homeassistant/components/motion_blinds/translations/ru.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "\u042d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 Home Assistant.", + "already_configured": "\u042d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 Home Assistant. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b.", "already_in_progress": "\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f.", "connection_error": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f." }, @@ -9,7 +9,7 @@ "discovery_error": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u0448\u043b\u044e\u0437 Motion.", "invalid_interface": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441." }, - "flow_title": "Motion Blinds", + "flow_title": "{short_mac} ({ip_address})", "step": { "connect": { "data": { diff --git a/homeassistant/components/motion_blinds/translations/tr.json b/homeassistant/components/motion_blinds/translations/tr.json index c9a0efe2538..824569ce173 100644 --- a/homeassistant/components/motion_blinds/translations/tr.json +++ b/homeassistant/components/motion_blinds/translations/tr.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "Cihaz zaten yap\u0131land\u0131r\u0131lm\u0131\u015f", + "already_configured": "Cihaz zaten yap\u0131land\u0131r\u0131lm\u0131\u015f , ba\u011flant\u0131 ayarlar\u0131 g\u00fcncellendi", "already_in_progress": "Yap\u0131land\u0131rma ak\u0131\u015f\u0131 zaten devam ediyor", "connection_error": "Ba\u011flanma hatas\u0131" }, @@ -9,7 +9,7 @@ "discovery_error": "Motion Gateway bulunamad\u0131", "invalid_interface": "Ge\u00e7ersiz a\u011f aray\u00fcz\u00fc" }, - "flow_title": "Hareketli Panjurlar", + "flow_title": "{short_mac} ({ip_address})", "step": { "connect": { "data": { diff --git a/homeassistant/components/motion_blinds/translations/zh-Hant.json b/homeassistant/components/motion_blinds/translations/zh-Hant.json index df300e0511f..e7fa565ba36 100644 --- a/homeassistant/components/motion_blinds/translations/zh-Hant.json +++ b/homeassistant/components/motion_blinds/translations/zh-Hant.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "\u88dd\u7f6e\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", + "already_configured": "\u88dd\u7f6e\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210\u3001\u9023\u7dda\u8a2d\u5b9a\u5df2\u66f4\u65b0", "already_in_progress": "\u8a2d\u5b9a\u5df2\u7d93\u9032\u884c\u4e2d", "connection_error": "\u9023\u7dda\u5931\u6557" }, @@ -9,7 +9,7 @@ "discovery_error": "\u641c\u7d22 Motion \u9598\u9053\u5668\u5931\u6557", "invalid_interface": "\u7db2\u8def\u4ecb\u9762\u7121\u6548" }, - "flow_title": "Motion Blinds", + "flow_title": "{short_mac} ({ip_address})", "step": { "connect": { "data": { diff --git a/homeassistant/components/nam/translations/hu.json b/homeassistant/components/nam/translations/hu.json index f0cf505163c..e0aa942afd8 100644 --- a/homeassistant/components/nam/translations/hu.json +++ b/homeassistant/components/nam/translations/hu.json @@ -11,7 +11,7 @@ "invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s", "unknown": "V\u00e1ratlan hiba" }, - "flow_title": "{name}", + "flow_title": "{host}", "step": { "confirm_discovery": { "description": "Szeretn\u00e9 be\u00e1ll\u00edtani Nettigo Air Monitor-ot a {host} c\u00edmen?" diff --git a/homeassistant/components/nanoleaf/translations/fr.json b/homeassistant/components/nanoleaf/translations/fr.json index 5893635580b..5a9a8022ecb 100644 --- a/homeassistant/components/nanoleaf/translations/fr.json +++ b/homeassistant/components/nanoleaf/translations/fr.json @@ -24,5 +24,13 @@ } } } + }, + "device_automation": { + "trigger_type": { + "swipe_down": "Balayer vers le bas", + "swipe_left": "Balayer vers la gauche", + "swipe_right": "Balayer vers la droite", + "swipe_up": "Balayer vers le haut" + } } } \ No newline at end of file diff --git a/homeassistant/components/nanoleaf/translations/hu.json b/homeassistant/components/nanoleaf/translations/hu.json index c67c4f958de..03ed5c92828 100644 --- a/homeassistant/components/nanoleaf/translations/hu.json +++ b/homeassistant/components/nanoleaf/translations/hu.json @@ -15,7 +15,7 @@ "flow_title": "{name}", "step": { "link": { - "description": "Nyomja meg \u00e9s tartsa lenyomva a Nanoleaf bekapcsol\u00f3gombj\u00e1t 5 m\u00e1sodpercig, am\u00edg a gomb LED-je villogni nem kezd, majd kattintson a **K\u00fcld\u00e9s** gombra 30 m\u00e1sodpercen bel\u00fcl.", + "description": "Nyomja meg \u00e9s tartsa lenyomva a Nanoleaf bekapcsol\u00f3gombj\u00e1t 5 m\u00e1sodpercig, am\u00edg a gomb LED-je villogni nem kezd, majd kattintson a **Mehet** gombra 30 m\u00e1sodpercen bel\u00fcl.", "title": "Nanoleaf link" }, "user": { diff --git a/homeassistant/components/neato/translations/hu.json b/homeassistant/components/neato/translations/hu.json index 281c5cd61a9..255378eda35 100644 --- a/homeassistant/components/neato/translations/hu.json +++ b/homeassistant/components/neato/translations/hu.json @@ -4,7 +4,7 @@ "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", "authorize_url_timeout": "Id\u0151t\u00fall\u00e9p\u00e9s a hiteles\u00edt\u00e9si URL gener\u00e1l\u00e1sa sor\u00e1n.", "missing_configuration": "A komponens nincs konfigur\u00e1lva. K\u00e9rem, k\u00f6vesse a dokument\u00e1ci\u00f3t.", - "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3t [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lsz.", + "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3 [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lhat\u00f3.", "reauth_successful": "Az \u00fajrahiteles\u00edt\u00e9s sikeres volt." }, "create_entry": { @@ -12,7 +12,7 @@ }, "step": { "pick_implementation": { - "title": "V\u00e1lassz hiteles\u00edt\u00e9si m\u00f3dszert" + "title": "V\u00e1lasszon egy hiteles\u00edt\u00e9si m\u00f3dszert" }, "reauth_confirm": { "title": "El szeretn\u00e9 kezdeni a be\u00e1ll\u00edt\u00e1st?" diff --git a/homeassistant/components/neato/translations/it.json b/homeassistant/components/neato/translations/it.json index 51d9119eb2c..000625a0294 100644 --- a/homeassistant/components/neato/translations/it.json +++ b/homeassistant/components/neato/translations/it.json @@ -3,7 +3,7 @@ "abort": { "already_configured": "Il dispositivo \u00e8 gi\u00e0 configurato", "authorize_url_timeout": "Tempo scaduto nel generare l'URL di autorizzazione.", - "missing_configuration": "Il componente non \u00e8 configurato. Si prega di seguire la documentazione.", + "missing_configuration": "Il componente non \u00e8 configurato. Segui la documentazione.", "no_url_available": "Nessun URL disponibile. Per informazioni su questo errore, [controlla la sezione della guida]({docs_url})", "reauth_successful": "La nuova autenticazione \u00e8 stata eseguita correttamente" }, diff --git a/homeassistant/components/nest/translations/hu.json b/homeassistant/components/nest/translations/hu.json index 2bb9d2dbaec..1f98e162a7b 100644 --- a/homeassistant/components/nest/translations/hu.json +++ b/homeassistant/components/nest/translations/hu.json @@ -4,7 +4,7 @@ "authorize_url_timeout": "Id\u0151t\u00fall\u00e9p\u00e9s az \u00e9rv\u00e9nyes\u00edt\u00e9si url gener\u00e1l\u00e1sa sor\u00e1n.", "invalid_access_token": "\u00c9rv\u00e9nytelen hozz\u00e1f\u00e9r\u00e9si token", "missing_configuration": "A komponens nincs konfigur\u00e1lva. K\u00e9rem, k\u00f6vesse a dokument\u00e1ci\u00f3t.", - "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3t [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lsz.", + "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3 [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lhat\u00f3.", "reauth_successful": "Az \u00fajrahiteles\u00edt\u00e9s sikeres volt.", "single_instance_allowed": "M\u00e1r konfigur\u00e1lva van. Csak egy konfigur\u00e1ci\u00f3 lehets\u00e9ges.", "unknown_authorize_url_generation": "Ismeretlen hiba t\u00f6rt\u00e9nt a hiteles\u00edt\u00e9si link gener\u00e1l\u00e1sa sor\u00e1n." @@ -33,7 +33,7 @@ "data": { "flow_impl": "Szolg\u00e1ltat\u00f3" }, - "description": "V\u00e1lassz hiteles\u00edt\u00e9si m\u00f3dszert", + "description": "V\u00e1lasszon egy hiteles\u00edt\u00e9si m\u00f3dszert", "title": "Hiteles\u00edt\u00e9si Szolg\u00e1ltat\u00f3" }, "link": { @@ -44,7 +44,7 @@ "title": "Nest fi\u00f3k \u00f6sszekapcsol\u00e1sa" }, "pick_implementation": { - "title": "V\u00e1lassz hiteles\u00edt\u00e9si m\u00f3dszert" + "title": "V\u00e1lasszon egy hiteles\u00edt\u00e9si m\u00f3dszert" }, "pubsub": { "data": { @@ -54,7 +54,7 @@ "title": "Google Cloud konfigur\u00e1l\u00e1sa" }, "reauth_confirm": { - "description": "A Nest integr\u00e1ci\u00f3nak \u00fajra kell hiteles\u00edtenie a fi\u00f3kodat", + "description": "A Nest integr\u00e1ci\u00f3nak \u00fajra kell hiteles\u00edtenie a fi\u00f3kj\u00e1t", "title": "Integr\u00e1ci\u00f3 \u00fajrahiteles\u00edt\u00e9se" } } diff --git a/homeassistant/components/nest/translations/it.json b/homeassistant/components/nest/translations/it.json index 7c92631351e..5942414bcf3 100644 --- a/homeassistant/components/nest/translations/it.json +++ b/homeassistant/components/nest/translations/it.json @@ -3,7 +3,7 @@ "abort": { "authorize_url_timeout": "Tempo scaduto nel generare l'URL di autorizzazione.", "invalid_access_token": "Token di accesso non valido", - "missing_configuration": "Il componente non \u00e8 configurato. Si prega di seguire la documentazione.", + "missing_configuration": "Il componente non \u00e8 configurato. Segui la documentazione.", "no_url_available": "Nessun URL disponibile. Per informazioni su questo errore, [controlla la sezione della guida]({docs_url})", "reauth_successful": "La nuova autenticazione \u00e8 stata eseguita correttamente", "single_instance_allowed": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione.", diff --git a/homeassistant/components/nest/translations/pl.json b/homeassistant/components/nest/translations/pl.json index c81e5f180b9..5e9b9895db4 100644 --- a/homeassistant/components/nest/translations/pl.json +++ b/homeassistant/components/nest/translations/pl.json @@ -27,7 +27,7 @@ "code": "Token dost\u0119pu" }, "description": "Aby po\u0142\u0105czy\u0107 swoje konto Google, [authorize your account]({url}). \n\nPo autoryzacji skopiuj i wklej podany poni\u017cej token uwierzytelniaj\u0105cy.", - "title": "Po\u0142\u0105cz z kontem Google" + "title": "Po\u0142\u0105czenie z kontem Google" }, "init": { "data": { diff --git a/homeassistant/components/netatmo/translations/hu.json b/homeassistant/components/netatmo/translations/hu.json index ae781d86ca8..51c46edbe86 100644 --- a/homeassistant/components/netatmo/translations/hu.json +++ b/homeassistant/components/netatmo/translations/hu.json @@ -3,7 +3,7 @@ "abort": { "authorize_url_timeout": "Id\u0151t\u00fall\u00e9p\u00e9s a hiteles\u00edt\u00e9si URL gener\u00e1l\u00e1sa sor\u00e1n.", "missing_configuration": "A komponens nincs konfigur\u00e1lva. K\u00e9rem, k\u00f6vesse a dokument\u00e1ci\u00f3t.", - "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3t [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lsz.", + "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3 [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lhat\u00f3.", "reauth_successful": "Az \u00fajrahiteles\u00edt\u00e9s sikeres volt.", "single_instance_allowed": "M\u00e1r konfigur\u00e1lva van. Csak egy konfigur\u00e1ci\u00f3 lehets\u00e9ges." }, @@ -12,7 +12,7 @@ }, "step": { "pick_implementation": { - "title": "V\u00e1lassz hiteles\u00edt\u00e9si m\u00f3dszert" + "title": "V\u00e1lasszon egy hiteles\u00edt\u00e9si m\u00f3dszert" }, "reauth_confirm": { "description": "A Netatmo integr\u00e1ci\u00f3nak \u00fajra kell hiteles\u00edtenie a fi\u00f3kj\u00e1t.", diff --git a/homeassistant/components/netatmo/translations/it.json b/homeassistant/components/netatmo/translations/it.json index e26cd64705f..b2210a4375c 100644 --- a/homeassistant/components/netatmo/translations/it.json +++ b/homeassistant/components/netatmo/translations/it.json @@ -2,7 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "Tempo scaduto nel generare l'URL di autorizzazione.", - "missing_configuration": "Il componente non \u00e8 configurato. Si prega di seguire la documentazione.", + "missing_configuration": "Il componente non \u00e8 configurato. Segui la documentazione.", "no_url_available": "Nessun URL disponibile. Per informazioni su questo errore, [controlla la sezione della guida]({docs_url})", "reauth_successful": "La nuova autenticazione \u00e8 stata eseguita correttamente", "single_instance_allowed": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione." diff --git a/homeassistant/components/netatmo/translations/pt-BR.json b/homeassistant/components/netatmo/translations/pt-BR.json index 32cc610f596..b47c0ea3646 100644 --- a/homeassistant/components/netatmo/translations/pt-BR.json +++ b/homeassistant/components/netatmo/translations/pt-BR.json @@ -52,7 +52,7 @@ "lon_ne": "Longitude nordeste", "lon_sw": "Longitude sudoeste", "mode": "C\u00e1lculo", - "show_on_map": "Mostrar no mapa?" + "show_on_map": "Mostrar no mapa" }, "description": "Configure um sensor meteorol\u00f3gico p\u00fablico para uma \u00e1rea.", "title": "Sensor meteorol\u00f3gico p\u00fablico Netatmo" diff --git a/homeassistant/components/nfandroidtv/translations/ca.json b/homeassistant/components/nfandroidtv/translations/ca.json index 861ad41a39b..0eda4938d9d 100644 --- a/homeassistant/components/nfandroidtv/translations/ca.json +++ b/homeassistant/components/nfandroidtv/translations/ca.json @@ -13,7 +13,7 @@ "host": "Amfitri\u00f3", "name": "Nom" }, - "description": "Aquesta integraci\u00f3 necessita l'aplicaci\u00f3 Notificacions per a Android TV. \n\nPer Android TV: https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google\nPer Fire TV: https://www.amazon.com/Christian-Fees-Notifications-for-Fire/dp/B00OESCXEK \n\nHauries de configurar o b\u00e9 una reserva DHCP al router (consulta el manual del teu rounter) o b\u00e9 adre\u00e7a IP est\u00e0tica al dispositiu. Si no o fas, el disositiu acabar\u00e0 deixant d'estar disponible.", + "description": "Consulta la documentaci\u00f3 per assegurar-te que compleixes tots els requisits.", "title": "Notificacions per a Android TV / Fire TV" } } diff --git a/homeassistant/components/nfandroidtv/translations/de.json b/homeassistant/components/nfandroidtv/translations/de.json index b3adce9ac07..d9df9058d13 100644 --- a/homeassistant/components/nfandroidtv/translations/de.json +++ b/homeassistant/components/nfandroidtv/translations/de.json @@ -13,7 +13,7 @@ "host": "Host", "name": "Name" }, - "description": "Diese Integration erfordert die App \"Benachrichtigungen f\u00fcr Android TV\".\n\nF\u00fcr Android TV: https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google\nF\u00fcr Fire TV: https://www.amazon.com/Christian-Fees-Notifications-for-Fire/dp/B00OESCXEK\n\nDu solltest entweder eine DHCP-Reservierung auf deinem Router (siehe Benutzerhandbuch deines Routers) oder eine statische IP-Adresse auf dem Ger\u00e4t einrichten. Andernfalls wird das Ger\u00e4t irgendwann nicht mehr verf\u00fcgbar sein.", + "description": "Bitte lies die Dokumentation, um sicherzustellen, dass alle Anforderungen erf\u00fcllt sind.", "title": "Benachrichtigungen f\u00fcr Android TV / Fire TV" } } diff --git a/homeassistant/components/nfandroidtv/translations/en.json b/homeassistant/components/nfandroidtv/translations/en.json index f117428df35..3c1383b91b8 100644 --- a/homeassistant/components/nfandroidtv/translations/en.json +++ b/homeassistant/components/nfandroidtv/translations/en.json @@ -13,7 +13,7 @@ "host": "Host", "name": "Name" }, - "description": "This integration requires the Notifications for Android TV app.\n\nFor Android TV: https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google\nFor Fire TV: https://www.amazon.com/Christian-Fees-Notifications-for-Fire/dp/B00OESCXEK\n\nYou should set up either DHCP reservation on your router (refer to your router's user manual) or a static IP address on the device. If not, the device will eventually become unavailable.", + "description": "Please refer to the documentation to make sure all requirements are met.", "title": "Notifications for Android TV / Fire TV" } } diff --git a/homeassistant/components/nfandroidtv/translations/et.json b/homeassistant/components/nfandroidtv/translations/et.json index f2405ab1421..f567795b608 100644 --- a/homeassistant/components/nfandroidtv/translations/et.json +++ b/homeassistant/components/nfandroidtv/translations/et.json @@ -13,7 +13,7 @@ "host": "Host", "name": "Nimi" }, - "description": "See sidumine n\u00f5uab Android TV rakenduse Notifications for Android TV kasutamist.\n\nAndroid TV jaoks: https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google\nFire TV jaoks: https://www.amazon.com/Christian-Fees-Notifications-for-Fire/dp/B00OESCXEK\n\nPead seadma ruuterile kas DHCP-reservatsiooni (vt ruuteri kasutusjuhendit) v\u00f5i seadme staatilise IP-aadressi. Vastasel juhul muutub seade l\u00f5puks k\u00e4ttesaamatuks.", + "description": "Vaata dokumentatsiooni, et veenduda, et k\u00f5ik n\u00f5uded on t\u00e4idetud.", "title": "Android TV / Fire TV teavitused" } } diff --git a/homeassistant/components/nfandroidtv/translations/fr.json b/homeassistant/components/nfandroidtv/translations/fr.json index 6d00852889b..7c69bbc6ac0 100644 --- a/homeassistant/components/nfandroidtv/translations/fr.json +++ b/homeassistant/components/nfandroidtv/translations/fr.json @@ -13,7 +13,7 @@ "host": "H\u00f4te", "name": "Nom" }, - "description": "Cette int\u00e9gration n\u00e9cessite l'application Notifications pour Android TV. \n\nPour Android TV\u00a0: https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google\nPour Fire TV\u00a0: https://www.amazon.com/Christian-Fees-Notifications-for-Fire/dp/B00OESCXEK \n\nVous devez configurer soit une r\u00e9servation DHCP sur votre routeur (reportez-vous au manuel d'utilisation de votre routeur) soit une adresse IP statique sur l'appareil. Sinon, l'appareil finira par devenir indisponible.", + "description": "Veuillez consulter la documentation afin de vous assurer que toutes les conditions sont respect\u00e9es.", "title": "Notifications pour Android TV / Fire TV" } } diff --git a/homeassistant/components/nfandroidtv/translations/he.json b/homeassistant/components/nfandroidtv/translations/he.json index dc4d71c70ca..65eefcd05b4 100644 --- a/homeassistant/components/nfandroidtv/translations/he.json +++ b/homeassistant/components/nfandroidtv/translations/he.json @@ -13,7 +13,7 @@ "host": "\u05de\u05d0\u05e8\u05d7", "name": "\u05e9\u05dd" }, - "description": "\u05e9\u05d9\u05dc\u05d5\u05d1 \u05d6\u05d4 \u05d3\u05d5\u05e8\u05e9 \u05d0\u05ea \u05d4\u05e9\u05d9\u05de\u05d5\u05e9 \u05d1\u05d9\u05d9\u05e9\u05d5\u05dd \u05d4\u05ea\u05e8\u05d0\u05d5\u05ea \u05e2\u05d1\u05d5\u05e8 \u05d8\u05dc\u05d5\u05d5\u05d9\u05d6\u05d9\u05ea \u05d0\u05e0\u05d3\u05e8\u05d5\u05d0\u05d9\u05d3.\n\n\u05e2\u05d1\u05d5\u05e8 \u05d8\u05dc\u05d5\u05d5\u05d9\u05d6\u05d9\u05d9\u05ea \u05d0\u05e0\u05d3\u05e8\u05d5\u05d0\u05d9\u05d3: https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google\n\u05e2\u05d1\u05d5\u05d3 \u05d8\u05dc\u05d5\u05d5\u05d9\u05d6\u05d9\u05ea \u05d0\u05de\u05d6\u05d5\u05df: https://www.amazon.com/Christian-Fees-Notifications-for-Fire/dp/B00OESCXEK\n\n\u05e2\u05dc\u05d9\u05da \u05dc\u05d4\u05d2\u05d3\u05d9\u05e8 \u05d4\u05d6\u05de\u05e0\u05ea DHCP \u05d1\u05e0\u05ea\u05d1 \u05e9\u05dc\u05da (\u05e2\u05d9\u05d9\u05df \u05d1\u05de\u05d3\u05e8\u05d9\u05da \u05dc\u05de\u05e9\u05ea\u05de\u05e9 \u05e9\u05dc \u05d4\u05e0\u05ea\u05d1) \u05d0\u05d5 \u05db\u05ea\u05d5\u05d1\u05ea IP \u05e1\u05d8\u05d8\u05d9\u05ea \u05d1\u05de\u05db\u05e9\u05d9\u05e8. \u05d0\u05dd \u05dc\u05d0, \u05d4\u05d4\u05ea\u05e7\u05df \u05d9\u05d4\u05e4\u05d5\u05da \u05d1\u05e1\u05d5\u05e4\u05d5 \u05e9\u05dc \u05d3\u05d1\u05e8 \u05dc\u05dc\u05d0 \u05d6\u05de\u05d9\u05df.", + "description": "\u05e0\u05d0 \u05dc\u05e2\u05d9\u05d9\u05df \u05d1\u05ea\u05d9\u05e2\u05d5\u05d3 \u05db\u05d3\u05d9 \u05dc\u05d5\u05d5\u05d3\u05d0 \u05e9\u05db\u05dc \u05d4\u05d3\u05e8\u05d9\u05e9\u05d5\u05ea \u05de\u05ea\u05e7\u05d9\u05d9\u05de\u05d5\u05ea.", "title": "\u05d4\u05ea\u05e8\u05d0\u05d5\u05ea \u05e2\u05d1\u05d5\u05e8 \u05d8\u05dc\u05d5\u05d5\u05d9\u05d6\u05d9\u05d9\u05ea \u05d0\u05e0\u05d3\u05e8\u05d5\u05d0\u05d9\u05d3 / \u05d8\u05dc\u05d5\u05d5\u05d9\u05d6\u05d9\u05d9\u05ea \u05d0\u05de\u05d6\u05d5\u05df" } } diff --git a/homeassistant/components/nfandroidtv/translations/hu.json b/homeassistant/components/nfandroidtv/translations/hu.json index c0dc8d679d6..0c8d0567483 100644 --- a/homeassistant/components/nfandroidtv/translations/hu.json +++ b/homeassistant/components/nfandroidtv/translations/hu.json @@ -11,9 +11,9 @@ "user": { "data": { "host": "C\u00edm", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" }, - "description": "Ehhez az integr\u00e1ci\u00f3hoz az \u00c9rtes\u00edt\u00e9sek az Android TV alkalmaz\u00e1shoz sz\u00fcks\u00e9ges. \n\nAndroid TV eset\u00e9n: https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google\nA Fire TV eset\u00e9ben: https://www.amazon.com/Christian-Fees-Notifications-for-Fire/dp/B00OESCXEK \n\nBe kell \u00e1ll\u00edtania a DHCP -foglal\u00e1st az \u00fatv\u00e1laszt\u00f3n (l\u00e1sd az \u00fatv\u00e1laszt\u00f3 felhaszn\u00e1l\u00f3i k\u00e9zik\u00f6nyv\u00e9t), vagy egy statikus IP -c\u00edmet az eszk\u00f6z\u00f6n. Ha nem, az eszk\u00f6z v\u00e9g\u00fcl el\u00e9rhetetlenn\u00e9 v\u00e1lik.", + "description": "K\u00e9rj\u00fck, olvassa el a dokument\u00e1ci\u00f3t, hogy megbizonyosodjon arr\u00f3l, hogy minden k\u00f6vetelm\u00e9ny teljes\u00fcl.", "title": "\u00c9rtes\u00edt\u00e9sek Android TV / Fire TV eset\u00e9n" } } diff --git a/homeassistant/components/nfandroidtv/translations/id.json b/homeassistant/components/nfandroidtv/translations/id.json index fd70679d5a4..de4ded1e98a 100644 --- a/homeassistant/components/nfandroidtv/translations/id.json +++ b/homeassistant/components/nfandroidtv/translations/id.json @@ -13,7 +13,7 @@ "host": "Host", "name": "Nama" }, - "description": "Integrasi ini memerlukan aplikasi Notifikasi untuk Android TV.\n\nUntuk Android TV: https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google\nUntuk Fire TV: https://www.amazon.com/Christian-Fees-Notifications-for-Fire/dp/B00OESCXEK\n\nAnda harus mengatur reservasi DHCP di router Anda (lihat manual pengguna router Anda) atau alamat IP statis pada perangkat. Jika tidak, perangkat akhirnya akan menjadi tidak tersedia.", + "description": "Rujuk ke dokumentasi untuk memastikan semua persyaratan terpenuhi.", "title": "Notifikasi untuk Android TV/Fire TV" } } diff --git a/homeassistant/components/nfandroidtv/translations/it.json b/homeassistant/components/nfandroidtv/translations/it.json index 6251a31e3bc..83eea49b419 100644 --- a/homeassistant/components/nfandroidtv/translations/it.json +++ b/homeassistant/components/nfandroidtv/translations/it.json @@ -13,7 +13,7 @@ "host": "Host", "name": "Nome" }, - "description": "Questa integrazione richiede l'app Notifiche per Android TV. \n\nPer Android TV: https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google\nPer Fire TV: https://www.amazon.com/Christian-Fees-Notifications-for-Fire/dp/B00OESCXEK \n\nDovresti configurare la prenotazione DHCP sul router (fai riferimento al manuale utente del router) o un indirizzo IP statico sul dispositivo. In caso contrario, il dispositivo alla fine non sar\u00e0 pi\u00f9 disponibile.", + "description": "Fai riferimento alla documentazione per assicurarti che tutti i requisiti siano soddisfatti.", "title": "Notifiche per Android TV / Fire TV" } } diff --git a/homeassistant/components/nfandroidtv/translations/nl.json b/homeassistant/components/nfandroidtv/translations/nl.json index acd936abe70..10c9f44a94a 100644 --- a/homeassistant/components/nfandroidtv/translations/nl.json +++ b/homeassistant/components/nfandroidtv/translations/nl.json @@ -13,7 +13,7 @@ "host": "Host", "name": "Naam" }, - "description": "Voor deze integratie is de app Notifications for Android TV vereist.\n\nVoor Android TV: https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google\nVoor Fire TV: https://www.amazon.com/Christian-Fees-Notifications-for-Fire/dp/B00OESCXEK\n\nU moet een DHCP-reservering op uw router instellen (raadpleeg de gebruikershandleiding van uw router) of een statisch IP-adres op het apparaat instellen. Zo niet, dan zal het apparaat uiteindelijk onbeschikbaar worden.", + "description": "Raadpleeg de documentatie om er zeker van te zijn dat aan alle vereisten is voldaan.", "title": "Meldingen voor Android TV / Fire TV" } } diff --git a/homeassistant/components/nfandroidtv/translations/no.json b/homeassistant/components/nfandroidtv/translations/no.json index e8aea574c96..8d59ca40b0d 100644 --- a/homeassistant/components/nfandroidtv/translations/no.json +++ b/homeassistant/components/nfandroidtv/translations/no.json @@ -13,7 +13,7 @@ "host": "Vert", "name": "Navn" }, - "description": "Denne integrasjonen krever Notifications for Android TV -appen. \n\n For Android TV: https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google\n For Fire TV: https://www.amazon.com/Christian-Fees-Notifications-for-Fire/dp/B00OESCXEK \n\n Du b\u00f8r konfigurere enten DHCP -reservasjon p\u00e5 ruteren din (se brukerh\u00e5ndboken til ruteren din) eller en statisk IP -adresse p\u00e5 enheten. Hvis ikke, vil enheten til slutt bli utilgjengelig.", + "description": "Se dokumentasjonen for \u00e5 sikre at alle krav er oppfylt.", "title": "Varsler for Android TV / Fire TV" } } diff --git a/homeassistant/components/nfandroidtv/translations/pl.json b/homeassistant/components/nfandroidtv/translations/pl.json index 4dd742b7c1f..a42335ceb10 100644 --- a/homeassistant/components/nfandroidtv/translations/pl.json +++ b/homeassistant/components/nfandroidtv/translations/pl.json @@ -13,7 +13,7 @@ "host": "Nazwa hosta lub adres IP", "name": "Nazwa" }, - "description": "Ta integracja wymaga aplikacji Powiadomienia dla Androida TV. \n\nAndroid TV: https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google\nFire TV: https://www.amazon.com/Christian-Fees-Notifications-for-Fire/dp/B00OESCXEK \n\nNale\u017cy skonfigurowa\u0107 rezerwacj\u0119 DHCP na routerze (patrz instrukcja obs\u0142ugi routera) lub ustawi\u0107 statyczny adres IP na urz\u0105dzeniu. Je\u015bli tego nie zrobisz, urz\u0105dzenie ostatecznie stanie si\u0119 niedost\u0119pne.", + "description": "Zapoznaj si\u0119 z dokumentacj\u0105, aby upewni\u0107 si\u0119, \u017ce wszystkie wymagania s\u0105 spe\u0142nione.", "title": "Powiadomienia dla Android TV / Fire TV" } } diff --git a/homeassistant/components/nfandroidtv/translations/pt-BR.json b/homeassistant/components/nfandroidtv/translations/pt-BR.json index 43b7a296c21..f4488408b42 100644 --- a/homeassistant/components/nfandroidtv/translations/pt-BR.json +++ b/homeassistant/components/nfandroidtv/translations/pt-BR.json @@ -13,7 +13,7 @@ "host": "Nome do host", "name": "Nome" }, - "description": "Essa integra\u00e7\u00e3o requer as Notifica\u00e7\u00f5es para o aplicativo Android TV.\n\nPara Android TV: https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google\nPara Fire TV: https://www.amazon.com/Christian-Fees-Notifications-for-Fire/dp/B00OESCXEK\n\nVoc\u00ea deve configurar a reserva DHCP no roteador (consulte o manual do usu\u00e1rio do roteador) ou um endere\u00e7o IP est\u00e1tico no dispositivo. Se n\u00e3o, o dispositivo acabar\u00e1 por ficar indispon\u00edvel.", + "description": "Consulte a documenta\u00e7\u00e3o para garantir que todos os requisitos sejam atendidos.", "title": "Notifica\u00e7\u00f5es para Android TV / Fire TV" } } diff --git a/homeassistant/components/nfandroidtv/translations/ru.json b/homeassistant/components/nfandroidtv/translations/ru.json index ce0d4651dfc..12451d4735b 100644 --- a/homeassistant/components/nfandroidtv/translations/ru.json +++ b/homeassistant/components/nfandroidtv/translations/ru.json @@ -13,7 +13,7 @@ "host": "\u0425\u043e\u0441\u0442", "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435" }, - "description": "\u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \"Notifications for Android TV\". \n\n\u0414\u043b\u044f Android TV: https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google\n\u0414\u043b\u044f Fire TV: https://www.amazon.com/Christian-Fees-Notifications-for-Fire/dp/B00OESCXEK \n\n\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 DHCP \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0435 (\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043a \u0412\u0430\u0448\u0435\u043c\u0443 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0443) \u0438\u043b\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 IP-\u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0430\u0442\u044c \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c.", + "description": "\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u044b.", "title": "Notifications for Android TV / Fire TV" } } diff --git a/homeassistant/components/nfandroidtv/translations/tr.json b/homeassistant/components/nfandroidtv/translations/tr.json index b894cf83687..835e61eea66 100644 --- a/homeassistant/components/nfandroidtv/translations/tr.json +++ b/homeassistant/components/nfandroidtv/translations/tr.json @@ -13,7 +13,7 @@ "host": "Sunucu", "name": "Ad" }, - "description": "Bu entegrasyon, Android TV i\u00e7in Bildirimler uygulamas\u0131n\u0131 gerektirir. \n\n Android TV i\u00e7in: https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google\n Fire TV i\u00e7in: https://www.amazon.com/Christian-Fees-Notifications-for-Fire/dp/B00OESCXEK \n\n Y\u00f6nlendiricinizde DHCP rezervasyonu (y\u00f6nlendiricinizin kullan\u0131m k\u0131lavuzuna bak\u0131n) veya cihazda statik bir IP adresi ayarlamal\u0131s\u0131n\u0131z. Aksi takdirde, cihaz sonunda kullan\u0131lamaz hale gelecektir.", + "description": "T\u00fcm gereksinimlerin kar\u015f\u0131land\u0131\u011f\u0131ndan emin olmak i\u00e7in l\u00fctfen belgelere bak\u0131n.", "title": "Android TV / Fire TV i\u00e7in Bildirimler" } } diff --git a/homeassistant/components/nfandroidtv/translations/zh-Hant.json b/homeassistant/components/nfandroidtv/translations/zh-Hant.json index b16d55a44bd..755ccdfeec8 100644 --- a/homeassistant/components/nfandroidtv/translations/zh-Hant.json +++ b/homeassistant/components/nfandroidtv/translations/zh-Hant.json @@ -13,7 +13,7 @@ "host": "\u4e3b\u6a5f\u7aef", "name": "\u540d\u7a31" }, - "description": "\u6b64\u6574\u5408\u9700\u8981\u5b89\u88dd Notifications for Android TV App\u3002\n\nAndroid TV \u7248\u672c\uff1ahttps://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google\nFire TV \u7248\u672c\uff1ahttps://www.amazon.com/Christian-Fees-Notifications-for-Fire/dp/B00OESCXEK\n\n\u8acb\u65bc\u8def\u7531\u5668\uff08\u8acb\u53c3\u8003\u8def\u7531\u5668\u624b\u518a\uff09\u4e2d\u8a2d\u5b9a\u4fdd\u7559\u88dd\u7f6e DHCP IP \u6216\u975c\u614b IP\u3002\u5047\u5982\u672a\u9032\u884c\u6b64\u8a2d\u5b9a\uff0c\u88dd\u7f6e\u53ef\u80fd\u6703\u8b8a\u6210\u4e0d\u53ef\u7528\u3002", + "description": "\u8acb\u53c3\u8003\u76f8\u95dc\u6587\u4ef6\u4ee5\u4e86\u89e3\u6240\u6709\u5fc5\u8981\u9700\u6c42\u3002", "title": "Android TV / Fire TV \u901a\u77e5" } } diff --git a/homeassistant/components/nina/translations/zh-Hant.json b/homeassistant/components/nina/translations/zh-Hant.json index 0ba4436722d..212c65070d8 100644 --- a/homeassistant/components/nina/translations/zh-Hant.json +++ b/homeassistant/components/nina/translations/zh-Hant.json @@ -5,22 +5,22 @@ }, "error": { "cannot_connect": "\u9023\u7dda\u5931\u6557", - "no_selection": "\u8acb\u81f3\u5c11\u9078\u64c7\u4e00\u500b\u57ce\u5e02/\u570b\u5bb6", + "no_selection": "\u8acb\u81f3\u5c11\u9078\u64c7\u4e00\u500b\u57ce\u5e02/\u7e23\u5e02", "unknown": "\u672a\u9810\u671f\u932f\u8aa4" }, "step": { "user": { "data": { - "_a_to_d": "\u57ce\u5e02/\u570b\u5bb6\uff08A-D\uff09", - "_e_to_h": "\u57ce\u5e02/\u570b\u5bb6\uff08E-H\uff09", - "_i_to_l": "\u57ce\u5e02/\u570b\u5bb6\uff08I-L\uff09", - "_m_to_q": "\u57ce\u5e02/\u570b\u5bb6\uff08M-Q\uff09", - "_r_to_u": "\u57ce\u5e02/\u570b\u5bb6\uff08R-U\uff09", - "_v_to_z": "\u57ce\u5e02/\u570b\u5bb6\uff08V-Z\uff09", + "_a_to_d": "\u57ce\u5e02/\u7e23\u5e02\uff08A-D\uff09", + "_e_to_h": "\u57ce\u5e02/\u7e23\u5e02\uff08E-H\uff09", + "_i_to_l": "\u57ce\u5e02/\u7e23\u5e02\uff08I-L\uff09", + "_m_to_q": "\u57ce\u5e02/\u7e23\u5e02\uff08M-Q\uff09", + "_r_to_u": "\u57ce\u5e02/\u7e23\u5e02\uff08R-U\uff09", + "_v_to_z": "\u57ce\u5e02/\u7e23\u5e02\uff08V-Z\uff09", "corona_filter": "\u79fb\u9664 Corona \u8b66\u544a", - "slots": "\u6bcf\u500b\u57ce\u5e02/\u570b\u5bb6\u6700\u5927\u8b66\u544a\u503c" + "slots": "\u6bcf\u500b\u57ce\u5e02/\u7e23\u5e02\u6700\u5927\u8b66\u544a\u503c" }, - "title": "\u9078\u64c7\u57ce\u5e02/\u570b\u5bb6" + "title": "\u9078\u64c7\u57ce\u5e02/\u7e23\u5e02" } } } diff --git a/homeassistant/components/nmap_tracker/translations/en.json b/homeassistant/components/nmap_tracker/translations/en.json index ae4175e0f14..ee615b87e91 100644 --- a/homeassistant/components/nmap_tracker/translations/en.json +++ b/homeassistant/components/nmap_tracker/translations/en.json @@ -30,7 +30,8 @@ "home_interval": "Minimum number of minutes between scans of active devices (preserve battery)", "hosts": "Network addresses (comma separated) to scan", "interval_seconds": "Scan interval", - "scan_options": "Raw configurable scan options for Nmap" + "scan_options": "Raw configurable scan options for Nmap", + "track_new_devices": "Track new devices" }, "description": "Configure hosts to be scanned by Nmap. Network address and excludes can be IP Addresses (192.168.1.1), IP Networks (192.168.0.0/24) or IP Ranges (192.168.1.0-32)." } diff --git a/homeassistant/components/nmap_tracker/translations/et.json b/homeassistant/components/nmap_tracker/translations/et.json index 538f1127448..ac23cb7004f 100644 --- a/homeassistant/components/nmap_tracker/translations/et.json +++ b/homeassistant/components/nmap_tracker/translations/et.json @@ -9,9 +9,9 @@ "step": { "user": { "data": { - "exclude": "V\u00f5rguaadressid (komadega eraldatud), mis tuleb skaneerimisest v\u00e4lja j\u00e4tta", + "exclude": "V\u00f5rguaadressid (komadega eraldatud) mis tuleb skaneerimisest v\u00e4lja j\u00e4tta", "home_interval": "Minimaalne minutite arv aktiivsete seadmete skaneerimise vahel (aku s\u00e4ilitamine)", - "hosts": "Skaneeritavad v\u00f5rgu aadressid (komadega eraldatud)", + "hosts": "V\u00f5rgu aadressid (komadega eraldatud)", "scan_options": "Nmapi algseadistavad skaneerimisvalikud" }, "description": "Konfigureeri hostid, mida Nmap skannib. V\u00f5rguaadress ja v\u00e4ljaj\u00e4etud v\u00f5ivad olla IP-aadressid (192.168.1.1), IP-v\u00f5rgud (192.168.0.0/24) v\u00f5i IP-vahemikud (192.168.1.0-32)." diff --git a/homeassistant/components/nmap_tracker/translations/hu.json b/homeassistant/components/nmap_tracker/translations/hu.json index 7385f12b3df..f54cf208e92 100644 --- a/homeassistant/components/nmap_tracker/translations/hu.json +++ b/homeassistant/components/nmap_tracker/translations/hu.json @@ -9,9 +9,9 @@ "step": { "user": { "data": { - "exclude": "H\u00e1l\u00f3zati c\u00edmek (vessz\u0151vel elv\u00e1lasztva), amelyeket kiz\u00e1r\u00e1sra ker\u00fclnek a vizsg\u00e1latb\u00f3l", + "exclude": "H\u00e1l\u00f3zati c\u00edmek (vessz\u0151vel elv\u00e1lasztva), amelyeket kiz\u00e1r\u00e1sra ker\u00fclnek a keres\u00e9sb\u0151l", "home_interval": "Minim\u00e1lis percsz\u00e1m az akt\u00edv eszk\u00f6z\u00f6k vizsg\u00e1lata k\u00f6z\u00f6tt (akkumul\u00e1tor k\u00edm\u00e9l\u00e9se)", - "hosts": "H\u00e1l\u00f3zati c\u00edmek (vessz\u0151vel elv\u00e1lasztva) a beolvas\u00e1shoz", + "hosts": "H\u00e1l\u00f3zati c\u00edmek (vessz\u0151vel elv\u00e1lasztva) a keres\u00e9shez", "scan_options": "Nyersen konfigur\u00e1lhat\u00f3 szkennel\u00e9si lehet\u0151s\u00e9gek az Nmap sz\u00e1m\u00e1ra" }, "description": "\u00c1ll\u00edtsa be a hogy milyen c\u00edmeket szkenneljen az Nmap. A h\u00e1l\u00f3zati c\u00edm lehet IP-c\u00edm (pl. 192.168.1.1), IP-h\u00e1l\u00f3zat (pl. 192.168.0.0/24) vagy IP-tartom\u00e1ny (pl. 192.168.1.0-32)." diff --git a/homeassistant/components/nmap_tracker/translations/no.json b/homeassistant/components/nmap_tracker/translations/no.json index acd25607c4f..1de32bed121 100644 --- a/homeassistant/components/nmap_tracker/translations/no.json +++ b/homeassistant/components/nmap_tracker/translations/no.json @@ -11,7 +11,7 @@ "data": { "exclude": "Nettverksadresser (kommaseparert) for \u00e5 ekskludere fra skanning", "home_interval": "Minimum antall minutter mellom skanninger av aktive enheter (lagre batteri)", - "hosts": "Nettverksadresser (kommaseparert) for \u00e5 skanne", + "hosts": "Nettverksadresser (atskilt med komma) som skal skannes", "scan_options": "R\u00e5 konfigurerbare skannealternativer for Nmap" }, "description": "Konfigurer verter som skal skannes av Nmap. Nettverksadresse og ekskluderer kan v\u00e6re IP-adresser (192.168.1.1), IP-nettverk (192.168.0.0/24) eller IP-omr\u00e5der (192.168.1.0-32)." @@ -28,7 +28,7 @@ "consider_home": "Sekunder \u00e5 vente til du merker en enhetssporing som ikke hjemme etter at den ikke er blitt sett.", "exclude": "Nettverksadresser (kommaseparert) for \u00e5 ekskludere fra skanning", "home_interval": "Minimum antall minutter mellom skanninger av aktive enheter (lagre batteri)", - "hosts": "Nettverksadresser (kommaseparert) for \u00e5 skanne", + "hosts": "Nettverksadresser (atskilt med komma) som skal skannes", "interval_seconds": "Skanneintervall", "scan_options": "R\u00e5 konfigurerbare skannealternativer for Nmap", "track_new_devices": "Spor nye enheter" diff --git a/homeassistant/components/nmap_tracker/translations/pt-BR.json b/homeassistant/components/nmap_tracker/translations/pt-BR.json index bf058495cb9..a80213ce5d6 100644 --- a/homeassistant/components/nmap_tracker/translations/pt-BR.json +++ b/homeassistant/components/nmap_tracker/translations/pt-BR.json @@ -9,9 +9,9 @@ "step": { "user": { "data": { - "exclude": "Endere\u00e7os de rede (separados por v\u00edrgula) para excluir do escaneamento", + "exclude": "Endere\u00e7os de rede (separados por v\u00edrgula) para excluir da verifica\u00e7\u00e3o", "home_interval": "N\u00famero m\u00ednimo de minutos entre escaneamento de dispositivos ativos (preservar bateria)", - "hosts": "Endere\u00e7os de rede (separados por v\u00edrgula) para escanear", + "hosts": "Endere\u00e7os de rede (separados por v\u00edrgula) para digitalizar", "scan_options": "Op\u00e7\u00f5es de escaneamento bruto configur\u00e1veis para Nmap" }, "description": "Configure os hosts a serem verificados pelo Nmap. O endere\u00e7o de rede e as exclus\u00f5es podem ser endere\u00e7os IP (192.168.1.1), redes IP (192.168.0.0/24) ou intervalos de IP (192.168.1.0-32)." @@ -26,14 +26,14 @@ "init": { "data": { "consider_home": "Segundos para esperar at\u00e9 marcar um rastreador de dispositivo como fora de casa depois de n\u00e3o ser visto.", - "exclude": "Endere\u00e7os de rede (separados por v\u00edrgula) para excluir do escaneamento", + "exclude": "Endere\u00e7os de rede (separados por v\u00edrgula) para excluir da verifica\u00e7\u00e3o", "home_interval": "N\u00famero m\u00ednimo de minutos entre escaneamento de dispositivos ativos (preservar bateria)", - "hosts": "Endere\u00e7os de rede (separados por v\u00edrgula) para escanear", + "hosts": "Endere\u00e7os de rede (separados por v\u00edrgula) para digitalizar", "interval_seconds": "Intervalo de varredura", - "scan_options": "Op\u00e7\u00f5es de varredura configur\u00e1veis brutas para Nmap", + "scan_options": "Op\u00e7\u00f5es de escaneamento bruto configur\u00e1veis para Nmap", "track_new_devices": "Rastrear novos dispositivos" }, - "description": "Configure hosts a serem digitalizados pelo Nmap. O endere\u00e7o de rede e exclus\u00f5es podem ser Endere\u00e7os IP (192.168.1.1), Redes IP (192.168.0.0/24) ou Faixas IP (192.168.1.0-32)." + "description": "Configure os hosts a serem verificados pelo Nmap. O endere\u00e7o de rede e as exclus\u00f5es podem ser endere\u00e7os IP (192.168.1.1), redes IP (192.168.0.0/24) ou intervalos de IP (192.168.1.0-32)." } } }, diff --git a/homeassistant/components/nmap_tracker/translations/tr.json b/homeassistant/components/nmap_tracker/translations/tr.json index 2d277e979b3..8e5dadb8100 100644 --- a/homeassistant/components/nmap_tracker/translations/tr.json +++ b/homeassistant/components/nmap_tracker/translations/tr.json @@ -9,7 +9,7 @@ "step": { "user": { "data": { - "exclude": "Taraman\u0131n d\u0131\u015f\u0131nda tutulacak a\u011f adresleri (virg\u00fcl ayr\u0131lm\u0131\u015f)", + "exclude": "Tarama d\u0131\u015f\u0131nda b\u0131rak\u0131lacak a\u011f adresleri (virg\u00fclle ayr\u0131lm\u0131\u015f)", "home_interval": "Aktif cihazlar\u0131n taranmas\u0131 aras\u0131ndaki minimum dakika say\u0131s\u0131 (pilden tasarruf edin)", "hosts": "Taranacak a\u011f adresleri (virg\u00fclle ayr\u0131lm\u0131\u015f)", "scan_options": "Nmap i\u00e7in ham yap\u0131land\u0131r\u0131labilir tarama se\u00e7enekleri" @@ -26,7 +26,7 @@ "init": { "data": { "consider_home": "Bir cihaz izleyicisi g\u00f6r\u00fclmedikten sonra evde de\u011fil olarak i\u015faretlenene kadar beklemek i\u00e7in saniyeler kald\u0131.", - "exclude": "Taraman\u0131n d\u0131\u015f\u0131nda tutulacak a\u011f adresleri (virg\u00fcl ayr\u0131lm\u0131\u015f)", + "exclude": "Tarama d\u0131\u015f\u0131nda b\u0131rak\u0131lacak a\u011f adresleri (virg\u00fclle ayr\u0131lm\u0131\u015f)", "home_interval": "Aktif cihazlar\u0131n taranmas\u0131 aras\u0131ndaki minimum dakika say\u0131s\u0131 (pilden tasarruf edin)", "hosts": "Taranacak a\u011f adresleri (virg\u00fclle ayr\u0131lm\u0131\u015f)", "interval_seconds": "Tarama aral\u0131\u011f\u0131", diff --git a/homeassistant/components/nzbget/translations/hu.json b/homeassistant/components/nzbget/translations/hu.json index 6db44f83c28..928d054707b 100644 --- a/homeassistant/components/nzbget/translations/hu.json +++ b/homeassistant/components/nzbget/translations/hu.json @@ -12,7 +12,7 @@ "user": { "data": { "host": "C\u00edm", - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "password": "Jelsz\u00f3", "port": "Port", "ssl": "SSL tan\u00fas\u00edtv\u00e1ny haszn\u00e1lata", diff --git a/homeassistant/components/ondilo_ico/translations/hu.json b/homeassistant/components/ondilo_ico/translations/hu.json index a6979721779..91e05b319b6 100644 --- a/homeassistant/components/ondilo_ico/translations/hu.json +++ b/homeassistant/components/ondilo_ico/translations/hu.json @@ -9,7 +9,7 @@ }, "step": { "pick_implementation": { - "title": "V\u00e1lassz hiteles\u00edt\u00e9si m\u00f3dszert" + "title": "V\u00e1lasszon egy hiteles\u00edt\u00e9si m\u00f3dszert" } } } diff --git a/homeassistant/components/ondilo_ico/translations/it.json b/homeassistant/components/ondilo_ico/translations/it.json index 42536508716..f1e5fe58fb1 100644 --- a/homeassistant/components/ondilo_ico/translations/it.json +++ b/homeassistant/components/ondilo_ico/translations/it.json @@ -2,7 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "Tempo scaduto nel generare l'URL di autorizzazione.", - "missing_configuration": "Il componente non \u00e8 configurato. Si prega di seguire la documentazione." + "missing_configuration": "Il componente non \u00e8 configurato. Segui la documentazione." }, "create_entry": { "default": "Autenticazione riuscita" diff --git a/homeassistant/components/onewire/translations/es.json b/homeassistant/components/onewire/translations/es.json index a2d8da218ba..d789e46875f 100644 --- a/homeassistant/components/onewire/translations/es.json +++ b/homeassistant/components/onewire/translations/es.json @@ -22,5 +22,10 @@ "title": "Configurar 1 cable" } } + }, + "options": { + "error": { + "device_not_selected": "Seleccionar los dispositivos a configurar" + } } } \ No newline at end of file diff --git a/homeassistant/components/onewire/translations/fr.json b/homeassistant/components/onewire/translations/fr.json index 0c75fb23ad1..08e3d3cf18b 100644 --- a/homeassistant/components/onewire/translations/fr.json +++ b/homeassistant/components/onewire/translations/fr.json @@ -29,7 +29,8 @@ }, "step": { "ack_no_options": { - "description": "Il n'y a pas d'option pour l'impl\u00e9mentation de SysBus" + "description": "Il n'y a pas d'option pour l'impl\u00e9mentation de SysBus", + "title": "Options de bus syst\u00e8me OneWire" }, "configure_device": { "data": { diff --git a/homeassistant/components/onewire/translations/nl.json b/homeassistant/components/onewire/translations/nl.json index cc310900d92..3ea1fd8e13c 100644 --- a/homeassistant/components/onewire/translations/nl.json +++ b/homeassistant/components/onewire/translations/nl.json @@ -29,6 +29,10 @@ }, "step": { "ack_no_options": { + "data": { + "one": "Leeg", + "other": "Ander" + }, "description": "Er zijn geen opties voor de SysBus implementatie", "title": "OneWire SysBus opties" }, diff --git a/homeassistant/components/onvif/translations/hu.json b/homeassistant/components/onvif/translations/hu.json index 6b777b76ab0..3754243a740 100644 --- a/homeassistant/components/onvif/translations/hu.json +++ b/homeassistant/components/onvif/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "no_h264": "Nem voltak el\u00e9rhet\u0151 H264 streamek. Ellen\u0151rizze a profil konfigur\u00e1ci\u00f3j\u00e1t a k\u00e9sz\u00fcl\u00e9ken.", "no_mac": "Nem siker\u00fclt konfigur\u00e1lni az egyedi azonos\u00edt\u00f3t az ONVIF eszk\u00f6zh\u00f6z.", "onvif_error": "Hiba t\u00f6rt\u00e9nt az ONVIF eszk\u00f6z be\u00e1ll\u00edt\u00e1sakor. Tov\u00e1bbi inform\u00e1ci\u00f3k\u00e9rt ellen\u0151rizze a napl\u00f3kat." @@ -21,7 +21,7 @@ "configure": { "data": { "host": "C\u00edm", - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "password": "Jelsz\u00f3", "port": "Port", "username": "Felhaszn\u00e1l\u00f3n\u00e9v" @@ -44,7 +44,7 @@ "manual_input": { "data": { "host": "C\u00edm", - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "port": "Port" }, "title": "ONVIF eszk\u00f6z konfigur\u00e1l\u00e1sa" @@ -53,7 +53,7 @@ "data": { "auto": "Automatikus keres\u00e9s" }, - "description": "A K\u00fcld\u00e9s gombra kattintva olyan ONVIF-eszk\u00f6z\u00f6ket keres\u00fcnk a h\u00e1l\u00f3zat\u00e1ban, amelyek t\u00e1mogatj\u00e1k az S profilt.\n\nEgyes gy\u00e1rt\u00f3k alap\u00e9rtelmez\u00e9s szerint elkezdt\u00e9k letiltani az ONVIF-et. Ellen\u0151rizze, hogy az ONVIF enged\u00e9lyezve van-e a kamera konfigur\u00e1ci\u00f3j\u00e1ban.", + "description": "A k\u00f6vetkez\u0151 l\u00e9p\u00e9sben olyan ONVIF-eszk\u00f6z\u00f6ket keres\u00fcnk a h\u00e1l\u00f3zat\u00e1ban, amelyek t\u00e1mogatj\u00e1k az S profilt.\n\nEgyes gy\u00e1rt\u00f3k alap\u00e9rtelmez\u00e9s szerint elkezdt\u00e9k letiltani az ONVIF-et. Ellen\u0151rizze, hogy az ONVIF enged\u00e9lyezve van-e a kamera konfigur\u00e1ci\u00f3j\u00e1ban.", "title": "ONVIF eszk\u00f6z be\u00e1ll\u00edt\u00e1sa" } } diff --git a/homeassistant/components/open_meteo/translations/ca.json b/homeassistant/components/open_meteo/translations/ca.json index 4fb1a502b6f..a401eeaa99e 100644 --- a/homeassistant/components/open_meteo/translations/ca.json +++ b/homeassistant/components/open_meteo/translations/ca.json @@ -5,7 +5,7 @@ "data": { "zone": "Zona" }, - "description": "Selecciona la ubicaci\u00f3 que s'utilitzar\u00e0 per a la predicci\u00f3 meteorol\u00f2gica" + "description": "Selecciona la ubicaci\u00f3 que s'utilitzar\u00e0 per a la previsi\u00f3 meteorol\u00f2gica" } } } diff --git a/homeassistant/components/opentherm_gw/translations/hu.json b/homeassistant/components/opentherm_gw/translations/hu.json index 3127dc523ce..e2a284d7dd1 100644 --- a/homeassistant/components/opentherm_gw/translations/hu.json +++ b/homeassistant/components/opentherm_gw/translations/hu.json @@ -10,7 +10,7 @@ "data": { "device": "El\u00e9r\u00e9si \u00fat vagy URL", "id": "ID", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" }, "title": "OpenTherm \u00e1tj\u00e1r\u00f3" } diff --git a/homeassistant/components/openweathermap/translations/ca.json b/homeassistant/components/openweathermap/translations/ca.json index b3b1ebbb85e..f304a8d4f9f 100644 --- a/homeassistant/components/openweathermap/translations/ca.json +++ b/homeassistant/components/openweathermap/translations/ca.json @@ -15,9 +15,9 @@ "latitude": "Latitud", "longitude": "Longitud", "mode": "Mode", - "name": "Nom de la integraci\u00f3" + "name": "Nom" }, - "description": "Configura la integraci\u00f3 OpenWeatherMap. Per generar la clau API, ves a https://openweathermap.org/appid", + "description": "Per generar la clau API, v\u00e9s a https://openweathermap.org/appid", "title": "OpenWeatherMap" } } diff --git a/homeassistant/components/openweathermap/translations/de.json b/homeassistant/components/openweathermap/translations/de.json index 615a642a859..f74065ca1a1 100644 --- a/homeassistant/components/openweathermap/translations/de.json +++ b/homeassistant/components/openweathermap/translations/de.json @@ -15,9 +15,9 @@ "latitude": "Breitengrad", "longitude": "L\u00e4ngengrad", "mode": "Modus", - "name": "Name der Integration" + "name": "Name" }, - "description": "Richte die OpenWeatherMap-Integration ein. Zum Generieren des API-Schl\u00fcssels gehe auf https://openweathermap.org/appid", + "description": "Um den API-Schl\u00fcssel zu generieren, besuche https://openweathermap.org/appid", "title": "OpenWeatherMap" } } diff --git a/homeassistant/components/openweathermap/translations/en.json b/homeassistant/components/openweathermap/translations/en.json index 57feaccf6b4..55f8d0a2338 100644 --- a/homeassistant/components/openweathermap/translations/en.json +++ b/homeassistant/components/openweathermap/translations/en.json @@ -15,9 +15,9 @@ "latitude": "Latitude", "longitude": "Longitude", "mode": "Mode", - "name": "Name of the integration" + "name": "Name" }, - "description": "Set up OpenWeatherMap integration. To generate API key go to https://openweathermap.org/appid", + "description": "To generate API key go to https://openweathermap.org/appid", "title": "OpenWeatherMap" } } diff --git a/homeassistant/components/openweathermap/translations/et.json b/homeassistant/components/openweathermap/translations/et.json index e548c07236e..0d991c99e3f 100644 --- a/homeassistant/components/openweathermap/translations/et.json +++ b/homeassistant/components/openweathermap/translations/et.json @@ -15,9 +15,9 @@ "latitude": "Laiuskraad", "longitude": "Pikkuskraad", "mode": "Re\u017eiim", - "name": "Sidumise nimi" + "name": "Nimi" }, - "description": "Seadista OpenWeatherMapi sidumine. API-v\u00f5tme loomiseks mine aadressile https://openweathermap.org/appid", + "description": "API-v\u00f5tme loomiseks mine aadressile https://openweathermap.org/appid", "title": "OpenWeatherMap" } } diff --git a/homeassistant/components/openweathermap/translations/fr.json b/homeassistant/components/openweathermap/translations/fr.json index efa76d4d7e4..387c3eefb28 100644 --- a/homeassistant/components/openweathermap/translations/fr.json +++ b/homeassistant/components/openweathermap/translations/fr.json @@ -15,9 +15,9 @@ "latitude": "Latitude", "longitude": "Longitude", "mode": "Mode", - "name": "Nom de l'int\u00e9gration" + "name": "Nom" }, - "description": "Configurez l'int\u00e9gration OpenWeatherMap. Pour g\u00e9n\u00e9rer la cl\u00e9 API, acc\u00e9dez \u00e0 https://openweathermap.org/appid", + "description": "Pour g\u00e9n\u00e9rer une cl\u00e9 d'API, rendez-vous sur https://openweathermap.org/appid", "title": "OpenWeatherMap" } } diff --git a/homeassistant/components/openweathermap/translations/he.json b/homeassistant/components/openweathermap/translations/he.json index ca5e388ea98..cadadeb1865 100644 --- a/homeassistant/components/openweathermap/translations/he.json +++ b/homeassistant/components/openweathermap/translations/he.json @@ -15,7 +15,7 @@ "latitude": "\u05e7\u05d5 \u05e8\u05d5\u05d7\u05d1", "longitude": "\u05e7\u05d5 \u05d0\u05d5\u05e8\u05da", "mode": "\u05de\u05e6\u05d1", - "name": "\u05e9\u05dd \u05d4\u05e9\u05d9\u05dc\u05d5\u05d1" + "name": "\u05e9\u05dd" }, "title": "\u05de\u05e4\u05ea OpenWeather" } diff --git a/homeassistant/components/openweathermap/translations/hu.json b/homeassistant/components/openweathermap/translations/hu.json index 99932ff5c68..f5a7dade833 100644 --- a/homeassistant/components/openweathermap/translations/hu.json +++ b/homeassistant/components/openweathermap/translations/hu.json @@ -15,9 +15,9 @@ "latitude": "Sz\u00e9less\u00e9g", "longitude": "Hossz\u00fas\u00e1g", "mode": "M\u00f3d", - "name": "Az integr\u00e1ci\u00f3 neve" + "name": "Elnevez\u00e9s" }, - "description": "Az OpenWeatherMap integr\u00e1ci\u00f3 be\u00e1ll\u00edt\u00e1sa. Az API kulcs l\u00e9trehoz\u00e1s\u00e1hoz l\u00e1togasson el a https://openweathermap.org/appid oldalra", + "description": "Az API-kulcs l\u00e9trehoz\u00e1s\u00e1hoz keresse fel a https://openweathermap.org/appid webhelyet", "title": "OpenWeatherMap" } } diff --git a/homeassistant/components/openweathermap/translations/id.json b/homeassistant/components/openweathermap/translations/id.json index 61d2713f42a..d8ea0344cea 100644 --- a/homeassistant/components/openweathermap/translations/id.json +++ b/homeassistant/components/openweathermap/translations/id.json @@ -15,9 +15,9 @@ "latitude": "Lintang", "longitude": "Bujur", "mode": "Mode", - "name": "Nama integrasi" + "name": "Nama" }, - "description": "Siapkan integrasi OpenWeatherMap. Untuk membuat kunci API, buka https://openweathermap.org/appid", + "description": "Untuk membuat kunci API, buka https://openweathermap.org/appid", "title": "OpenWeatherMap" } } diff --git a/homeassistant/components/openweathermap/translations/it.json b/homeassistant/components/openweathermap/translations/it.json index ffe49a466dc..133fa704109 100644 --- a/homeassistant/components/openweathermap/translations/it.json +++ b/homeassistant/components/openweathermap/translations/it.json @@ -15,9 +15,9 @@ "latitude": "Latitudine", "longitude": "Logitudine", "mode": "Modalit\u00e0", - "name": "Nome dell'integrazione" + "name": "Nome" }, - "description": "Configura l'integrazione di OpenWeatherMap. Per generare la chiave API, vai su https://openweathermap.org/appid", + "description": "Per generare la chiave API, vai su https://openweathermap.org/appid", "title": "OpenWeatherMap" } } diff --git a/homeassistant/components/openweathermap/translations/nl.json b/homeassistant/components/openweathermap/translations/nl.json index 04f3c503353..1c72f10c6d9 100644 --- a/homeassistant/components/openweathermap/translations/nl.json +++ b/homeassistant/components/openweathermap/translations/nl.json @@ -15,9 +15,9 @@ "latitude": "Breedtegraad", "longitude": "Lengtegraad", "mode": "Mode", - "name": "Naam van de integratie" + "name": "Naam" }, - "description": "Stel OpenWeatherMap-integratie in. Ga naar https://openweathermap.org/appid om een API-sleutel te genereren", + "description": "Om een API sleutel te genereren ga naar https://openweathermap.org/appid", "title": "OpenWeatherMap" } } diff --git a/homeassistant/components/openweathermap/translations/no.json b/homeassistant/components/openweathermap/translations/no.json index 7982628fe62..d751553465a 100644 --- a/homeassistant/components/openweathermap/translations/no.json +++ b/homeassistant/components/openweathermap/translations/no.json @@ -15,9 +15,9 @@ "latitude": "Breddegrad", "longitude": "Lengdegrad", "mode": "Modus", - "name": "Navn p\u00e5 integrasjon" + "name": "Navn" }, - "description": "Sett opp OpenWeatherMap-integrasjon. For \u00e5 generere API-n\u00f8kkel, g\u00e5 til https://openweathermap.org/appid", + "description": "For \u00e5 generere API-n\u00f8kkel, g\u00e5 til https://openweathermap.org/appid", "title": "OpenWeatherMap" } } diff --git a/homeassistant/components/openweathermap/translations/pl.json b/homeassistant/components/openweathermap/translations/pl.json index b3f31831f09..de8d857f168 100644 --- a/homeassistant/components/openweathermap/translations/pl.json +++ b/homeassistant/components/openweathermap/translations/pl.json @@ -15,9 +15,9 @@ "latitude": "Szeroko\u015b\u0107 geograficzna", "longitude": "D\u0142ugo\u015b\u0107 geograficzna", "mode": "Tryb", - "name": "Nazwa integracji" + "name": "Nazwa" }, - "description": "Konfiguracja integracji OpenWeatherMap. Aby wygenerowa\u0107 klucz API, przejd\u017a do https://openweathermap.org/appid", + "description": "Aby wygenerowa\u0107 klucz API, przejd\u017a do https://openweathermap.org/appid", "title": "OpenWeatherMap" } } diff --git a/homeassistant/components/openweathermap/translations/pt-BR.json b/homeassistant/components/openweathermap/translations/pt-BR.json index dd88767bb61..795db96f36f 100644 --- a/homeassistant/components/openweathermap/translations/pt-BR.json +++ b/homeassistant/components/openweathermap/translations/pt-BR.json @@ -15,9 +15,9 @@ "latitude": "Latitude", "longitude": "Longitude", "mode": "Modo", - "name": "Nome da integra\u00e7\u00e3o" + "name": "Nome" }, - "description": "Configure a integra\u00e7\u00e3o do OpenWeatherMap. Para gerar a chave de API, acesse https://openweathermap.org/appid", + "description": "Para gerar a chave de API, acesse https://openweathermap.org/appid", "title": "OpenWeatherMap" } } diff --git a/homeassistant/components/openweathermap/translations/ru.json b/homeassistant/components/openweathermap/translations/ru.json index 1a22b38d546..a0724e90f01 100644 --- a/homeassistant/components/openweathermap/translations/ru.json +++ b/homeassistant/components/openweathermap/translations/ru.json @@ -17,7 +17,7 @@ "mode": "\u0420\u0435\u0436\u0438\u043c", "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435" }, - "description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Home Assistant \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 OpenWeatherMap. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0430 API, \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 https://openweathermap.org/appid.", + "description": "\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0430 API, \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 https://openweathermap.org/appid.", "title": "OpenWeatherMap" } } diff --git a/homeassistant/components/openweathermap/translations/tr.json b/homeassistant/components/openweathermap/translations/tr.json index 83109869e39..6458852712e 100644 --- a/homeassistant/components/openweathermap/translations/tr.json +++ b/homeassistant/components/openweathermap/translations/tr.json @@ -15,9 +15,9 @@ "latitude": "Enlem", "longitude": "Boylam", "mode": "Mod", - "name": "Cihaz\u0131n ad\u0131" + "name": "Ad" }, - "description": "OpenWeatherMap entegrasyonunu ayarlay\u0131n. API anahtar\u0131 olu\u015fturmak i\u00e7in https://openweathermap.org/appid adresine gidin.", + "description": "API anahtar\u0131 olu\u015fturmak i\u00e7in https://openweathermap.org/appid adresine gidin.", "title": "OpenWeatherMap" } } diff --git a/homeassistant/components/openweathermap/translations/zh-Hant.json b/homeassistant/components/openweathermap/translations/zh-Hant.json index 653fb373af3..fcebc12fe31 100644 --- a/homeassistant/components/openweathermap/translations/zh-Hant.json +++ b/homeassistant/components/openweathermap/translations/zh-Hant.json @@ -15,9 +15,9 @@ "latitude": "\u7def\u5ea6", "longitude": "\u7d93\u5ea6", "mode": "\u6a21\u5f0f", - "name": "\u6574\u5408\u540d\u7a31" + "name": "\u540d\u7a31" }, - "description": "\u6b32\u8a2d\u5b9a OpenWeatherMap \u6574\u5408\u3002\u8acb\u81f3 https://openweathermap.org/appid \u7522\u751f API \u91d1\u9470", + "description": "\u8acb\u81f3 https://openweathermap.org/appid \u4ee5\u7522\u751f API \u91d1\u9470", "title": "OpenWeatherMap" } } diff --git a/homeassistant/components/overkiz/translations/ca.json b/homeassistant/components/overkiz/translations/ca.json index 1e1bccd1fb7..d3a5a38edc3 100644 --- a/homeassistant/components/overkiz/translations/ca.json +++ b/homeassistant/components/overkiz/translations/ca.json @@ -9,6 +9,7 @@ "cannot_connect": "Ha fallat la connexi\u00f3", "invalid_auth": "Autenticaci\u00f3 inv\u00e0lida", "server_in_maintenance": "El servidor est\u00e0 inoperatiu per manteniment", + "too_many_attempts": "Massa intents amb un 'token' inv\u00e0lid, bloquejat temporalment", "too_many_requests": "Massa sol\u00b7licituds, torna-ho a provar m\u00e9s tard", "unknown": "Error inesperat" }, diff --git a/homeassistant/components/overkiz/translations/de.json b/homeassistant/components/overkiz/translations/de.json index 84d09f9116b..09cce8ea63f 100644 --- a/homeassistant/components/overkiz/translations/de.json +++ b/homeassistant/components/overkiz/translations/de.json @@ -9,6 +9,7 @@ "cannot_connect": "Verbindung fehlgeschlagen", "invalid_auth": "Ung\u00fcltige Authentifizierung", "server_in_maintenance": "Server ist wegen Wartungsarbeiten au\u00dfer Betrieb", + "too_many_attempts": "Zu viele Versuche mit einem ung\u00fcltigen Token, vor\u00fcbergehend gesperrt", "too_many_requests": "Zu viele Anfragen, versuche es sp\u00e4ter erneut.", "unknown": "Unerwarteter Fehler" }, diff --git a/homeassistant/components/overkiz/translations/el.json b/homeassistant/components/overkiz/translations/el.json index 9f7ad60cb09..924ecc3219d 100644 --- a/homeassistant/components/overkiz/translations/el.json +++ b/homeassistant/components/overkiz/translations/el.json @@ -9,6 +9,7 @@ "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", "invalid_auth": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", "server_in_maintenance": "\u039f \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03ba\u03c4\u03cc\u03c2 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03c3\u03c5\u03bd\u03c4\u03ae\u03c1\u03b7\u03c3\u03b7", + "too_many_attempts": "\u03a0\u03ac\u03c1\u03b1 \u03c0\u03bf\u03bb\u03bb\u03ad\u03c2 \u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b5\u03b9\u03b5\u03c2 \u03bc\u03b5 \u03bc\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03b4\u03b9\u03b1\u03ba\u03c1\u03b9\u03c4\u03b9\u03ba\u03cc, \u03c0\u03c1\u03bf\u03c3\u03c9\u03c1\u03b9\u03bd\u03ac \u03b1\u03c0\u03bf\u03ba\u03bb\u03b5\u03b9\u03c3\u03bc\u03ad\u03bd\u03b5\u03c2", "too_many_requests": "\u03a0\u03ac\u03c1\u03b1 \u03c0\u03bf\u03bb\u03bb\u03ac \u03b1\u03b9\u03c4\u03ae\u03bc\u03b1\u03c4\u03b1, \u03c0\u03c1\u03bf\u03c3\u03c0\u03b1\u03b8\u03ae\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac \u03b1\u03c1\u03b3\u03cc\u03c4\u03b5\u03c1\u03b1", "unknown": "\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" }, diff --git a/homeassistant/components/overkiz/translations/et.json b/homeassistant/components/overkiz/translations/et.json index c19d9c39ca9..3cbfcb6af80 100644 --- a/homeassistant/components/overkiz/translations/et.json +++ b/homeassistant/components/overkiz/translations/et.json @@ -9,6 +9,7 @@ "cannot_connect": "\u00dchendamine nurjus", "invalid_auth": "Tuvastamine nurjus", "server_in_maintenance": "Server on hoolduse t\u00f5ttu maas", + "too_many_attempts": "Liiga palju katseid kehtetu v\u00f5tmega, ajutiselt keelatud", "too_many_requests": "Liiga palju p\u00e4ringuid, proovi hiljem uuesti", "unknown": "Ootamatu t\u00f5rge" }, diff --git a/homeassistant/components/overkiz/translations/fr.json b/homeassistant/components/overkiz/translations/fr.json index f6a56db80a5..c919301d541 100644 --- a/homeassistant/components/overkiz/translations/fr.json +++ b/homeassistant/components/overkiz/translations/fr.json @@ -9,6 +9,7 @@ "cannot_connect": "\u00c9chec de connexion", "invalid_auth": "Authentification non valide", "server_in_maintenance": "Le serveur est ferm\u00e9 pour maintenance", + "too_many_attempts": "Trop de tentatives avec un jeton non valide\u00a0: banni temporairement", "too_many_requests": "Trop de demandes, r\u00e9essayez plus tard.", "unknown": "Erreur inattendue" }, diff --git a/homeassistant/components/overkiz/translations/hu.json b/homeassistant/components/overkiz/translations/hu.json index ef7cacaaf96..b6810749bd3 100644 --- a/homeassistant/components/overkiz/translations/hu.json +++ b/homeassistant/components/overkiz/translations/hu.json @@ -9,6 +9,7 @@ "cannot_connect": "Sikertelen csatlakoz\u00e1s", "invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s", "server_in_maintenance": "A szerver karbantart\u00e1s miatt nem el\u00e9rhet\u0151", + "too_many_attempts": "T\u00fal sok pr\u00f3b\u00e1lkoz\u00e1s \u00e9rv\u00e9nytelen tokennel, ideiglenesen kitiltva", "too_many_requests": "T\u00fal sok a k\u00e9r\u00e9s, pr\u00f3b\u00e1lja meg k\u00e9s\u0151bb \u00fajra.", "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" }, diff --git a/homeassistant/components/overkiz/translations/id.json b/homeassistant/components/overkiz/translations/id.json index becbae65f9e..c58b66b10a7 100644 --- a/homeassistant/components/overkiz/translations/id.json +++ b/homeassistant/components/overkiz/translations/id.json @@ -9,6 +9,7 @@ "cannot_connect": "Gagal terhubung", "invalid_auth": "Autentikasi tidak valid", "server_in_maintenance": "Server sedang dalam masa pemeliharaan", + "too_many_attempts": "Terlalu banyak percobaan dengan token yang tidak valid, untuk sementara diblokir", "too_many_requests": "Terlalu banyak permintaan, coba lagi nanti.", "unknown": "Kesalahan yang tidak diharapkan" }, diff --git a/homeassistant/components/overkiz/translations/it.json b/homeassistant/components/overkiz/translations/it.json index 00898513f1f..3dcc4e94e10 100644 --- a/homeassistant/components/overkiz/translations/it.json +++ b/homeassistant/components/overkiz/translations/it.json @@ -9,6 +9,7 @@ "cannot_connect": "Impossibile connettersi", "invalid_auth": "Autenticazione non valida", "server_in_maintenance": "Il server \u00e8 inattivo per manutenzione", + "too_many_attempts": "Troppi tentativi con un token non valido, temporaneamente bandito", "too_many_requests": "Troppe richieste, riprova pi\u00f9 tardi.", "unknown": "Errore imprevisto" }, diff --git a/homeassistant/components/overkiz/translations/ja.json b/homeassistant/components/overkiz/translations/ja.json index e978a8f36f2..357408847fd 100644 --- a/homeassistant/components/overkiz/translations/ja.json +++ b/homeassistant/components/overkiz/translations/ja.json @@ -9,6 +9,7 @@ "cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f", "invalid_auth": "\u7121\u52b9\u306a\u8a8d\u8a3c", "server_in_maintenance": "\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u306e\u305f\u3081\u30b5\u30fc\u30d0\u30fc\u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u307e\u3059", + "too_many_attempts": "\u7121\u52b9\u306a\u30c8\u30fc\u30af\u30f3\u306b\u3088\u308b\u8a66\u884c\u56de\u6570\u304c\u591a\u3059\u304e\u305f\u305f\u3081\u3001\u4e00\u6642\u7684\u306b\u7981\u6b62\u3055\u308c\u307e\u3057\u305f\u3002", "too_many_requests": "\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u591a\u3059\u304e\u307e\u3059\u3002\u3057\u3070\u3089\u304f\u3057\u3066\u304b\u3089\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002", "unknown": "\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc" }, diff --git a/homeassistant/components/overkiz/translations/nl.json b/homeassistant/components/overkiz/translations/nl.json index d33dd5bb44c..5057f12afa6 100644 --- a/homeassistant/components/overkiz/translations/nl.json +++ b/homeassistant/components/overkiz/translations/nl.json @@ -9,6 +9,7 @@ "cannot_connect": "Kan geen verbinding maken", "invalid_auth": "Ongeldige authenticatie", "server_in_maintenance": "Server is offline wegens onderhoud", + "too_many_attempts": "Te veel pogingen met een ongeldig token, tijdelijk verbannen", "too_many_requests": "Te veel verzoeken, probeer het later opnieuw.", "unknown": "Onverwachte fout" }, diff --git a/homeassistant/components/overkiz/translations/no.json b/homeassistant/components/overkiz/translations/no.json index ed691aa388f..e0d52e0fc0e 100644 --- a/homeassistant/components/overkiz/translations/no.json +++ b/homeassistant/components/overkiz/translations/no.json @@ -9,6 +9,7 @@ "cannot_connect": "Tilkobling mislyktes", "invalid_auth": "Ugyldig godkjenning", "server_in_maintenance": "serveren er nede for vedlikehold", + "too_many_attempts": "For mange fors\u00f8k med et ugyldig token, midlertidig utestengt", "too_many_requests": "For mange foresp\u00f8rsler. Pr\u00f8v igjen senere", "unknown": "Uventet feil" }, diff --git a/homeassistant/components/overkiz/translations/pl.json b/homeassistant/components/overkiz/translations/pl.json index 6881d7edb5b..7044dc717fd 100644 --- a/homeassistant/components/overkiz/translations/pl.json +++ b/homeassistant/components/overkiz/translations/pl.json @@ -9,6 +9,7 @@ "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", "invalid_auth": "Niepoprawne uwierzytelnienie", "server_in_maintenance": "Serwer wy\u0142\u0105czony z powodu przerwy technicznej", + "too_many_attempts": "Zbyt wiele pr\u00f3b z nieprawid\u0142owym tokenem, konto tymczasowo zablokowane", "too_many_requests": "Zbyt wiele \u017c\u0105da\u0144, spr\u00f3buj ponownie p\u00f3\u017aniej.", "unknown": "Nieoczekiwany b\u0142\u0105d" }, diff --git a/homeassistant/components/overkiz/translations/pt-BR.json b/homeassistant/components/overkiz/translations/pt-BR.json index 2f2c335ebd5..123b2a83d42 100644 --- a/homeassistant/components/overkiz/translations/pt-BR.json +++ b/homeassistant/components/overkiz/translations/pt-BR.json @@ -9,6 +9,7 @@ "cannot_connect": "Falha ao conectar", "invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida", "server_in_maintenance": "O servidor est\u00e1 fora de servi\u00e7o para manuten\u00e7\u00e3o", + "too_many_attempts": "Muitas tentativas com um token inv\u00e1lido, banido temporariamente", "too_many_requests": "Muitas solicita\u00e7\u00f5es, tente novamente mais tarde", "unknown": "Erro inesperado" }, diff --git a/homeassistant/components/overkiz/translations/ru.json b/homeassistant/components/overkiz/translations/ru.json index 611c4784902..53f08e1dbd6 100644 --- a/homeassistant/components/overkiz/translations/ru.json +++ b/homeassistant/components/overkiz/translations/ru.json @@ -9,6 +9,7 @@ "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", "invalid_auth": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.", "server_in_maintenance": "\u0421\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435\u043c.", + "too_many_attempts": "\u0421\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0441 \u043d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0442\u043e\u043a\u0435\u043d\u043e\u043c, \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043e.", "too_many_requests": "\u0421\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043f\u043e\u0437\u0436\u0435.", "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." }, diff --git a/homeassistant/components/overkiz/translations/tr.json b/homeassistant/components/overkiz/translations/tr.json index 8e6a232db7f..1d04fbbd3cc 100644 --- a/homeassistant/components/overkiz/translations/tr.json +++ b/homeassistant/components/overkiz/translations/tr.json @@ -9,6 +9,7 @@ "cannot_connect": "Ba\u011flanma hatas\u0131", "invalid_auth": "Ge\u00e7ersiz kimlik do\u011frulama", "server_in_maintenance": "Sunucu bak\u0131m nedeniyle kapal\u0131", + "too_many_attempts": "Ge\u00e7ersiz anahtarla \u00e7ok fazla deneme, ge\u00e7ici olarak yasakland\u0131", "too_many_requests": "\u00c7ok fazla istek var, daha sonra tekrar deneyin", "unknown": "Beklenmeyen hata" }, diff --git a/homeassistant/components/overkiz/translations/zh-Hant.json b/homeassistant/components/overkiz/translations/zh-Hant.json index 04c2fc2b07a..ab265301761 100644 --- a/homeassistant/components/overkiz/translations/zh-Hant.json +++ b/homeassistant/components/overkiz/translations/zh-Hant.json @@ -9,6 +9,7 @@ "cannot_connect": "\u9023\u7dda\u5931\u6557", "invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548", "server_in_maintenance": "\u4f3a\u670d\u5668\u7dad\u8b77\u4e2d", + "too_many_attempts": "\u4f7f\u7528\u7121\u6548\u6b0a\u6756\u5617\u8a66\u6b21\u6578\u904e\u591a\uff0c\u66ab\u6642\u906d\u5230\u5c01\u9396", "too_many_requests": "\u8acb\u6c42\u6b21\u6578\u904e\u591a\uff0c\u8acb\u7a0d\u5f8c\u91cd\u8a66\u3002", "unknown": "\u672a\u9810\u671f\u932f\u8aa4" }, diff --git a/homeassistant/components/owntracks/translations/cs.json b/homeassistant/components/owntracks/translations/cs.json index d242a1275f1..a564efb190f 100644 --- a/homeassistant/components/owntracks/translations/cs.json +++ b/homeassistant/components/owntracks/translations/cs.json @@ -1,6 +1,7 @@ { "config": { "abort": { + "cloud_not_connected": "Nen\u00ed p\u0159ipojeno k Home Assistant Cloud.", "single_instance_allowed": "Ji\u017e nastaveno. Je mo\u017en\u00e1 pouze jedin\u00e1 konfigurace." }, "create_entry": { diff --git a/homeassistant/components/p1_monitor/translations/hu.json b/homeassistant/components/p1_monitor/translations/hu.json index f9025022c6d..b0c30613234 100644 --- a/homeassistant/components/p1_monitor/translations/hu.json +++ b/homeassistant/components/p1_monitor/translations/hu.json @@ -8,7 +8,7 @@ "user": { "data": { "host": "C\u00edm", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" }, "description": "\u00c1ll\u00edtsa be a P1 monitort az Otthoni asszisztenssel val\u00f3 integr\u00e1ci\u00f3hoz." } diff --git a/homeassistant/components/panasonic_viera/translations/hu.json b/homeassistant/components/panasonic_viera/translations/hu.json index e373a352a45..7fd4d2524da 100644 --- a/homeassistant/components/panasonic_viera/translations/hu.json +++ b/homeassistant/components/panasonic_viera/translations/hu.json @@ -20,7 +20,7 @@ "user": { "data": { "host": "IP c\u00edm", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" }, "description": "Adja meg a Panasonic Viera TV-hez tartoz\u00f3 IP c\u00edmet", "title": "A TV be\u00e1ll\u00edt\u00e1sa" diff --git a/homeassistant/components/peco/translations/bg.json b/homeassistant/components/peco/translations/bg.json new file mode 100644 index 00000000000..80a7cc489a9 --- /dev/null +++ b/homeassistant/components/peco/translations/bg.json @@ -0,0 +1,7 @@ +{ + "config": { + "abort": { + "already_configured": "\u0423\u0441\u043b\u0443\u0433\u0430\u0442\u0430 \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0430" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/peco/translations/ca.json b/homeassistant/components/peco/translations/ca.json new file mode 100644 index 00000000000..1cca8a08a7f --- /dev/null +++ b/homeassistant/components/peco/translations/ca.json @@ -0,0 +1,16 @@ +{ + "config": { + "abort": { + "already_configured": "El servei ja est\u00e0 configurat" + }, + "step": { + "user": { + "data": { + "county": "Comtat" + }, + "description": "Trieu el teu comtat a continuaci\u00f3.", + "title": "Comptador d'interrupcions PECO" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/peco/translations/cs.json b/homeassistant/components/peco/translations/cs.json new file mode 100644 index 00000000000..8440070c91a --- /dev/null +++ b/homeassistant/components/peco/translations/cs.json @@ -0,0 +1,7 @@ +{ + "config": { + "abort": { + "already_configured": "Slu\u017eba je ji\u017e nastavena" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/peco/translations/de.json b/homeassistant/components/peco/translations/de.json new file mode 100644 index 00000000000..4eb10b3e5e9 --- /dev/null +++ b/homeassistant/components/peco/translations/de.json @@ -0,0 +1,16 @@ +{ + "config": { + "abort": { + "already_configured": "Der Dienst ist bereits konfiguriert" + }, + "step": { + "user": { + "data": { + "county": "Bundesland" + }, + "description": "Bitte w\u00e4hle unten dein Bundesland aus.", + "title": "PECO-St\u00f6rungsz\u00e4hler" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/peco/translations/el.json b/homeassistant/components/peco/translations/el.json new file mode 100644 index 00000000000..6b47cc3ccc1 --- /dev/null +++ b/homeassistant/components/peco/translations/el.json @@ -0,0 +1,16 @@ +{ + "config": { + "abort": { + "already_configured": "\u0397 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af" + }, + "step": { + "user": { + "data": { + "county": "\u039a\u03bf\u03bc\u03b7\u03c4\u03b5\u03af\u03b1" + }, + "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c4\u03b7\u03bd \u03ba\u03bf\u03bc\u03b7\u03c4\u03b5\u03af\u03b1 \u03c3\u03b1\u03c2 \u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9.", + "title": "\u039c\u03b5\u03c4\u03c1\u03b7\u03c4\u03ae\u03c2 \u03b4\u03b9\u03b1\u03ba\u03bf\u03c0\u03ce\u03bd PECO" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/peco/translations/en.json b/homeassistant/components/peco/translations/en.json index 6f7ff2b0b12..60483a1d65c 100644 --- a/homeassistant/components/peco/translations/en.json +++ b/homeassistant/components/peco/translations/en.json @@ -7,7 +7,9 @@ "user": { "data": { "county": "County" - } + }, + "description": "Please choose your county below.", + "title": "PECO Outage Counter" } } } diff --git a/homeassistant/components/peco/translations/et.json b/homeassistant/components/peco/translations/et.json new file mode 100644 index 00000000000..117d0502ca3 --- /dev/null +++ b/homeassistant/components/peco/translations/et.json @@ -0,0 +1,16 @@ +{ + "config": { + "abort": { + "already_configured": "Teenus on juba h\u00e4\u00e4lestatud" + }, + "step": { + "user": { + "data": { + "county": "Maakond" + }, + "description": "Vali allpool oma maakond.", + "title": "PECO katkestuste loendur" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/peco/translations/fr.json b/homeassistant/components/peco/translations/fr.json new file mode 100644 index 00000000000..e78f828f1af --- /dev/null +++ b/homeassistant/components/peco/translations/fr.json @@ -0,0 +1,16 @@ +{ + "config": { + "abort": { + "already_configured": "Le service est d\u00e9j\u00e0 configur\u00e9" + }, + "step": { + "user": { + "data": { + "county": "Comt\u00e9" + }, + "description": "Veuillez choisir votre comt\u00e9 ci-dessous.", + "title": "Compteur de pannes PECO" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/peco/translations/he.json b/homeassistant/components/peco/translations/he.json new file mode 100644 index 00000000000..48a6eeeea33 --- /dev/null +++ b/homeassistant/components/peco/translations/he.json @@ -0,0 +1,7 @@ +{ + "config": { + "abort": { + "already_configured": "\u05e9\u05d9\u05e8\u05d5\u05ea \u05d6\u05d4 \u05db\u05d1\u05e8 \u05de\u05d5\u05d2\u05d3\u05e8" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/peco/translations/hu.json b/homeassistant/components/peco/translations/hu.json new file mode 100644 index 00000000000..2e1e3482eb5 --- /dev/null +++ b/homeassistant/components/peco/translations/hu.json @@ -0,0 +1,16 @@ +{ + "config": { + "abort": { + "already_configured": "A szolg\u00e1ltat\u00e1s m\u00e1r konfigur\u00e1lva van" + }, + "step": { + "user": { + "data": { + "county": "Megye" + }, + "description": "K\u00e9rj\u00fck, v\u00e1lassza ki az al\u00e1bbiakban a megy\u00e9t.", + "title": "PECO kimarad\u00e1s sz\u00e1ml\u00e1l\u00f3" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/peco/translations/id.json b/homeassistant/components/peco/translations/id.json new file mode 100644 index 00000000000..0879348f593 --- /dev/null +++ b/homeassistant/components/peco/translations/id.json @@ -0,0 +1,16 @@ +{ + "config": { + "abort": { + "already_configured": "Layanan sudah dikonfigurasi" + }, + "step": { + "user": { + "data": { + "county": "Kota/kabupaten" + }, + "description": "Pilih kota/kabupaten Anda di bawah ini.", + "title": "Penghitung Pemadaman PECO" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/peco/translations/it.json b/homeassistant/components/peco/translations/it.json new file mode 100644 index 00000000000..a7b76c27f43 --- /dev/null +++ b/homeassistant/components/peco/translations/it.json @@ -0,0 +1,16 @@ +{ + "config": { + "abort": { + "already_configured": "Il servizio \u00e8 gi\u00e0 configurato" + }, + "step": { + "user": { + "data": { + "county": "Provincia" + }, + "description": "Scegli la tua provincia qui sotto.", + "title": "Contatore interruzioni PECO" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/peco/translations/ja.json b/homeassistant/components/peco/translations/ja.json new file mode 100644 index 00000000000..139e1f77bd9 --- /dev/null +++ b/homeassistant/components/peco/translations/ja.json @@ -0,0 +1,16 @@ +{ + "config": { + "abort": { + "already_configured": "\u30b5\u30fc\u30d3\u30b9\u306f\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059" + }, + "step": { + "user": { + "data": { + "county": "\u90e1" + }, + "description": "\u4ee5\u4e0b\u304b\u3089\u304a\u4f4f\u307e\u3044\u306e\u56fd\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002", + "title": "PECO Outage\u30ab\u30a6\u30f3\u30bf\u30fc" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/peco/translations/nl.json b/homeassistant/components/peco/translations/nl.json new file mode 100644 index 00000000000..8e98f5077e4 --- /dev/null +++ b/homeassistant/components/peco/translations/nl.json @@ -0,0 +1,16 @@ +{ + "config": { + "abort": { + "already_configured": "Service is al geconfigureerd" + }, + "step": { + "user": { + "data": { + "county": "County" + }, + "description": "Kies hieronder uw county", + "title": "PECO Uitval Teller" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/peco/translations/no.json b/homeassistant/components/peco/translations/no.json new file mode 100644 index 00000000000..00f9c025114 --- /dev/null +++ b/homeassistant/components/peco/translations/no.json @@ -0,0 +1,16 @@ +{ + "config": { + "abort": { + "already_configured": "Tjenesten er allerede konfigurert" + }, + "step": { + "user": { + "data": { + "county": "fylke" + }, + "description": "Velg ditt fylke nedenfor.", + "title": "PECO avbruddsteller" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/peco/translations/pl.json b/homeassistant/components/peco/translations/pl.json new file mode 100644 index 00000000000..bdd8a7ffb7c --- /dev/null +++ b/homeassistant/components/peco/translations/pl.json @@ -0,0 +1,16 @@ +{ + "config": { + "abort": { + "already_configured": "Us\u0142uga jest ju\u017c skonfigurowana" + }, + "step": { + "user": { + "data": { + "county": "Hrabstwo" + }, + "description": "Wybierz swoje hrabstwo poni\u017cej.", + "title": "Licznik awarii PECO" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/peco/translations/pt-BR.json b/homeassistant/components/peco/translations/pt-BR.json new file mode 100644 index 00000000000..845baf5b479 --- /dev/null +++ b/homeassistant/components/peco/translations/pt-BR.json @@ -0,0 +1,16 @@ +{ + "config": { + "abort": { + "already_configured": "O servi\u00e7o j\u00e1 est\u00e1 configurado" + }, + "step": { + "user": { + "data": { + "county": "Munic\u00edpio" + }, + "description": "Por favor, escolha seu munic\u00edpio abaixo.", + "title": "Contador de Interrup\u00e7\u00e3o PECO" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/peco/translations/ru.json b/homeassistant/components/peco/translations/ru.json new file mode 100644 index 00000000000..6c2c8d85cc6 --- /dev/null +++ b/homeassistant/components/peco/translations/ru.json @@ -0,0 +1,16 @@ +{ + "config": { + "abort": { + "already_configured": "\u042d\u0442\u0430 \u0441\u043b\u0443\u0436\u0431\u0430 \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 Home Assistant." + }, + "step": { + "user": { + "data": { + "county": "\u041e\u043a\u0440\u0443\u0433" + }, + "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0432\u043e\u0439 \u043e\u043a\u0440\u0443\u0433.", + "title": "\u0421\u0447\u0435\u0442\u0447\u0438\u043a \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 PECO" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/peco/translations/tr.json b/homeassistant/components/peco/translations/tr.json new file mode 100644 index 00000000000..6a76e600789 --- /dev/null +++ b/homeassistant/components/peco/translations/tr.json @@ -0,0 +1,16 @@ +{ + "config": { + "abort": { + "already_configured": "Hizmet zaten yap\u0131land\u0131r\u0131lm\u0131\u015f" + }, + "step": { + "user": { + "data": { + "county": "\u0130l\u00e7e" + }, + "description": "L\u00fctfen a\u015fa\u011f\u0131dan il\u00e7enizi se\u00e7iniz.", + "title": "PECO Kesinti Sayac\u0131" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/peco/translations/zh-Hant.json b/homeassistant/components/peco/translations/zh-Hant.json new file mode 100644 index 00000000000..94318397f6f --- /dev/null +++ b/homeassistant/components/peco/translations/zh-Hant.json @@ -0,0 +1,16 @@ +{ + "config": { + "abort": { + "already_configured": "\u670d\u52d9\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210" + }, + "step": { + "user": { + "data": { + "county": "\u7e23\u5e02" + }, + "description": "\u8acb\u9078\u64c7\u7e23\u5e02\u3002", + "title": "PECO Outage \u8a08\u6578\u5668" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/pi_hole/translations/hu.json b/homeassistant/components/pi_hole/translations/hu.json index 71321c4cf85..e55c7d543e3 100644 --- a/homeassistant/components/pi_hole/translations/hu.json +++ b/homeassistant/components/pi_hole/translations/hu.json @@ -17,7 +17,7 @@ "api_key": "API kulcs", "host": "C\u00edm", "location": "Elhelyezked\u00e9s", - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "port": "Port", "ssl": "SSL tan\u00fas\u00edtv\u00e1ny haszn\u00e1lata", "statistics_only": "Csak statisztik\u00e1k", diff --git a/homeassistant/components/plaato/translations/cs.json b/homeassistant/components/plaato/translations/cs.json index 4d736d1c695..5e3c9682226 100644 --- a/homeassistant/components/plaato/translations/cs.json +++ b/homeassistant/components/plaato/translations/cs.json @@ -2,6 +2,7 @@ "config": { "abort": { "already_configured": "\u00da\u010det je ji\u017e nastaven", + "cloud_not_connected": "Nen\u00ed p\u0159ipojeno k Home Assistant Cloud.", "single_instance_allowed": "Ji\u017e nastaveno. Je mo\u017en\u00e1 pouze jedin\u00e1 konfigurace.", "webhook_not_internet_accessible": "V\u00e1\u0161 Home Assistant mus\u00ed b\u00fdt p\u0159\u00edstupn\u00fd z internetu, aby mohl p\u0159ij\u00edmat zpr\u00e1vy webhook." }, diff --git a/homeassistant/components/plant/translations/zh-Hant.json b/homeassistant/components/plant/translations/zh-Hant.json index af06d09eef6..052086d04eb 100644 --- a/homeassistant/components/plant/translations/zh-Hant.json +++ b/homeassistant/components/plant/translations/zh-Hant.json @@ -1,7 +1,7 @@ { "state": { "_": { - "ok": "\u5065\u5eb7", + "ok": "\u6b63\u5e38", "problem": "\u7570\u5e38" } }, diff --git a/homeassistant/components/plex/translations/hu.json b/homeassistant/components/plex/translations/hu.json index d3aabedc58d..3be797cc04f 100644 --- a/homeassistant/components/plex/translations/hu.json +++ b/homeassistant/components/plex/translations/hu.json @@ -3,7 +3,7 @@ "abort": { "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 konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "reauth_successful": "Az \u00fajrahiteles\u00edt\u00e9s sikeres volt.", "token_request_timeout": "Token k\u00e9r\u00e9sre sz\u00e1nt id\u0151 lej\u00e1rt", "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" diff --git a/homeassistant/components/plugwise/translations/ca.json b/homeassistant/components/plugwise/translations/ca.json index c29fa230519..85f7c357803 100644 --- a/homeassistant/components/plugwise/translations/ca.json +++ b/homeassistant/components/plugwise/translations/ca.json @@ -6,6 +6,7 @@ "error": { "cannot_connect": "Ha fallat la connexi\u00f3", "invalid_auth": "Autenticaci\u00f3 inv\u00e0lida", + "invalid_setup": "Afegeix l'Adam en lloc de l'Anna; consulta la documentaci\u00f3 de la integraci\u00f3 Plugwise de Home Assistant per a m\u00e9s informaci\u00f3.", "unknown": "Error inesperat" }, "flow_title": "{name}", diff --git a/homeassistant/components/plugwise/translations/de.json b/homeassistant/components/plugwise/translations/de.json index a5c11645d6f..f6ce5fb1b2d 100644 --- a/homeassistant/components/plugwise/translations/de.json +++ b/homeassistant/components/plugwise/translations/de.json @@ -6,6 +6,7 @@ "error": { "cannot_connect": "Verbindung fehlgeschlagen", "invalid_auth": "Ung\u00fcltige Authentifizierung", + "invalid_setup": "F\u00fcge deinen Adam anstelle deiner Anna hinzu. Weitere Informationen findest du in der Dokumentation zur Integration von Home Assistant Plugwise.", "unknown": "Unerwarteter Fehler" }, "flow_title": "{name}", diff --git a/homeassistant/components/plugwise/translations/el.json b/homeassistant/components/plugwise/translations/el.json index a891a74d3ad..8407cb38cb1 100644 --- a/homeassistant/components/plugwise/translations/el.json +++ b/homeassistant/components/plugwise/translations/el.json @@ -6,6 +6,7 @@ "error": { "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", "invalid_auth": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", + "invalid_setup": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03c4\u03b5 \u03c4\u03bf\u03bd Adam \u03c3\u03b1\u03c2 \u03b1\u03bd\u03c4\u03af \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd Anna \u03c3\u03b1\u03c2, \u03b1\u03bd\u03b1\u03c4\u03c1\u03ad\u03be\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd \u03c4\u03b5\u03ba\u03bc\u03b7\u03c1\u03af\u03c9\u03c3\u03b7 \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 Home Assistant Plugwise \u03b3\u03b9\u03b1 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2", "unknown": "\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" }, "flow_title": "{name}", diff --git a/homeassistant/components/plugwise/translations/en.json b/homeassistant/components/plugwise/translations/en.json index 3ee5551fd83..616e450cb11 100644 --- a/homeassistant/components/plugwise/translations/en.json +++ b/homeassistant/components/plugwise/translations/en.json @@ -6,6 +6,7 @@ "error": { "cannot_connect": "Failed to connect", "invalid_auth": "Invalid authentication", + "invalid_setup": "Add your Adam instead of your Anna, see the Home Assistant Plugwise integration documentation for more information", "unknown": "Unexpected error" }, "flow_title": "{name}", diff --git a/homeassistant/components/plugwise/translations/et.json b/homeassistant/components/plugwise/translations/et.json index 029b334f7c4..f863dd30b19 100644 --- a/homeassistant/components/plugwise/translations/et.json +++ b/homeassistant/components/plugwise/translations/et.json @@ -6,6 +6,7 @@ "error": { "cannot_connect": "\u00dchendamine nurjus", "invalid_auth": "Tuvastamine nurjus", + "invalid_setup": "Lisa oma Anna asemel oma Adam, lisateabe saamiseks vaata Home Assistant Plugwise'i sidumise dokumentatsiooni", "unknown": "Tundmatu viga" }, "flow_title": "{name}", diff --git a/homeassistant/components/plugwise/translations/fr.json b/homeassistant/components/plugwise/translations/fr.json index c6098db43f0..baa6074e68a 100644 --- a/homeassistant/components/plugwise/translations/fr.json +++ b/homeassistant/components/plugwise/translations/fr.json @@ -6,6 +6,7 @@ "error": { "cannot_connect": "\u00c9chec de connexion", "invalid_auth": "Authentification non valide", + "invalid_setup": "Ajoutez votre Adam au lieu de votre Anna\u00a0; consultez la documentation de l'int\u00e9gration Plugwise de Home Assistant pour plus d'informations", "unknown": "Erreur inattendue" }, "flow_title": "{name}", diff --git a/homeassistant/components/plugwise/translations/hu.json b/homeassistant/components/plugwise/translations/hu.json index 4d588c84277..265a99186ba 100644 --- a/homeassistant/components/plugwise/translations/hu.json +++ b/homeassistant/components/plugwise/translations/hu.json @@ -6,6 +6,7 @@ "error": { "cannot_connect": "Sikertelen csatlakoz\u00e1s", "invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s", + "invalid_setup": "Adja hozz\u00e1 Adamot Anna helyett. Tov\u00e1bbi inform\u00e1ci\u00f3\u00e9rt tekintse meg a Home Assistant Plugwise integr\u00e1ci\u00f3s dokument\u00e1ci\u00f3j\u00e1t", "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" }, "flow_title": "{name}", diff --git a/homeassistant/components/plugwise/translations/id.json b/homeassistant/components/plugwise/translations/id.json index f3eeb0926ba..8878a4e775d 100644 --- a/homeassistant/components/plugwise/translations/id.json +++ b/homeassistant/components/plugwise/translations/id.json @@ -6,6 +6,7 @@ "error": { "cannot_connect": "Gagal terhubung", "invalid_auth": "Autentikasi tidak valid", + "invalid_setup": "Tambahkan Adam Anda, alih-alih Anna. Baca dokumentasi integrasi Plugwise Home Assistant untuk informasi lebih lanjut", "unknown": "Kesalahan yang tidak diharapkan" }, "flow_title": "{name}", diff --git a/homeassistant/components/plugwise/translations/it.json b/homeassistant/components/plugwise/translations/it.json index e60b91a106b..9e051a29e13 100644 --- a/homeassistant/components/plugwise/translations/it.json +++ b/homeassistant/components/plugwise/translations/it.json @@ -6,6 +6,7 @@ "error": { "cannot_connect": "Impossibile connettersi", "invalid_auth": "Autenticazione non valida", + "invalid_setup": "Aggiungi il tuo Adam invece di Anna, consulta la documentazione sull'integrazione di Home Assistant Plugwise per ulteriori informazioni", "unknown": "Errore imprevisto" }, "flow_title": "{name}", diff --git a/homeassistant/components/plugwise/translations/ja.json b/homeassistant/components/plugwise/translations/ja.json index cc3810edcd3..f15d62d38d1 100644 --- a/homeassistant/components/plugwise/translations/ja.json +++ b/homeassistant/components/plugwise/translations/ja.json @@ -6,6 +6,7 @@ "error": { "cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f", "invalid_auth": "\u7121\u52b9\u306a\u8a8d\u8a3c", + "invalid_setup": "Anna\u306e\u4ee3\u308f\u308a\u306b\u3001Adam\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001Home Assistant Plugwise\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002", "unknown": "\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc" }, "flow_title": "{name}", diff --git a/homeassistant/components/plugwise/translations/nl.json b/homeassistant/components/plugwise/translations/nl.json index 160cf182d3d..d295695016f 100644 --- a/homeassistant/components/plugwise/translations/nl.json +++ b/homeassistant/components/plugwise/translations/nl.json @@ -6,6 +6,7 @@ "error": { "cannot_connect": "Kan geen verbinding maken", "invalid_auth": "Ongeldige authenticatie", + "invalid_setup": "Voeg je Adam toe in plaats van je Anna, zie de Home Assistant Plugwise integratiedocumentatie voor meer informatie", "unknown": "Onverwachte fout" }, "flow_title": "{name}", diff --git a/homeassistant/components/plugwise/translations/no.json b/homeassistant/components/plugwise/translations/no.json index 58ee9d4aed8..d8ce2d8956a 100644 --- a/homeassistant/components/plugwise/translations/no.json +++ b/homeassistant/components/plugwise/translations/no.json @@ -6,6 +6,7 @@ "error": { "cannot_connect": "Tilkobling mislyktes", "invalid_auth": "Ugyldig godkjenning", + "invalid_setup": "Legg til din Adam i stedet for din Anna, se integrasjonsdokumentasjonen for Home Assistant Plugwise for mer informasjon", "unknown": "Uventet feil" }, "flow_title": "{name}", diff --git a/homeassistant/components/plugwise/translations/pl.json b/homeassistant/components/plugwise/translations/pl.json index 5d0bdd0f4e6..c4a2efe95c3 100644 --- a/homeassistant/components/plugwise/translations/pl.json +++ b/homeassistant/components/plugwise/translations/pl.json @@ -6,6 +6,7 @@ "error": { "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", "invalid_auth": "Niepoprawne uwierzytelnienie", + "invalid_setup": "Dodaj urz\u0105dzenie Adam zamiast Anna. Zobacz dokumentacj\u0119 integracji Plugwise dla Home Assistant, aby uzyska\u0107 wi\u0119cej informacji.", "unknown": "Nieoczekiwany b\u0142\u0105d" }, "flow_title": "{name}", diff --git a/homeassistant/components/plugwise/translations/pt-BR.json b/homeassistant/components/plugwise/translations/pt-BR.json index f53f6c7c379..35a08d93114 100644 --- a/homeassistant/components/plugwise/translations/pt-BR.json +++ b/homeassistant/components/plugwise/translations/pt-BR.json @@ -6,6 +6,7 @@ "error": { "cannot_connect": "Falha ao conectar", "invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida", + "invalid_setup": "Adicione seu Adam em vez de sua Anna, consulte a documenta\u00e7\u00e3o de integra\u00e7\u00e3o do Home Assistant Plugwise para obter mais informa\u00e7\u00f5es", "unknown": "Erro inesperado" }, "flow_title": "{name}", diff --git a/homeassistant/components/plugwise/translations/ru.json b/homeassistant/components/plugwise/translations/ru.json index c7b28d5b415..62b7c1e27d3 100644 --- a/homeassistant/components/plugwise/translations/ru.json +++ b/homeassistant/components/plugwise/translations/ru.json @@ -6,6 +6,7 @@ "error": { "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", "invalid_auth": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.", + "invalid_setup": "\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 Adam \u0432\u043c\u0435\u0441\u0442\u043e Anna. \u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439 \u043f\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 Plugwise \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.", "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." }, "flow_title": "{name}", diff --git a/homeassistant/components/plugwise/translations/tr.json b/homeassistant/components/plugwise/translations/tr.json index 4c752efbd4a..ae756bf15d4 100644 --- a/homeassistant/components/plugwise/translations/tr.json +++ b/homeassistant/components/plugwise/translations/tr.json @@ -6,6 +6,7 @@ "error": { "cannot_connect": "Ba\u011flanma hatas\u0131", "invalid_auth": "Ge\u00e7ersiz kimlik do\u011frulama", + "invalid_setup": "Anna'n\u0131z yerine Adam'\u0131n\u0131z\u0131 ekleyin, daha fazla bilgi i\u00e7in Home Assistant Plugwise entegrasyon belgelerine bak\u0131n", "unknown": "Beklenmeyen hata" }, "flow_title": "{name}", diff --git a/homeassistant/components/plugwise/translations/zh-Hant.json b/homeassistant/components/plugwise/translations/zh-Hant.json index 0a1e21a12ed..57a7add22e0 100644 --- a/homeassistant/components/plugwise/translations/zh-Hant.json +++ b/homeassistant/components/plugwise/translations/zh-Hant.json @@ -6,6 +6,7 @@ "error": { "cannot_connect": "\u9023\u7dda\u5931\u6557", "invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548", + "invalid_setup": "\u65b0\u589e Adam \u800c\u975e Anna\u3001\u8acb\u53c3\u95b1 Home Assistant Plugwise \u6574\u5408\u8aaa\u660e\u6587\u4ef6\u4ee5\u4e86\u89e3\u66f4\u8a73\u7d30\u8cc7\u6599", "unknown": "\u672a\u9810\u671f\u932f\u8aa4" }, "flow_title": "{name}", diff --git a/homeassistant/components/point/translations/hu.json b/homeassistant/components/point/translations/hu.json index c582bbfc7cd..27c35a1966f 100644 --- a/homeassistant/components/point/translations/hu.json +++ b/homeassistant/components/point/translations/hu.json @@ -11,12 +11,12 @@ "default": "Sikeres hiteles\u00edt\u00e9s" }, "error": { - "follow_link": "K\u00e9rem, k\u00f6vesse a hivatkoz\u00e1st \u00e9s hiteles\u00edtse mag\u00e1t miel\u0151tt megnyomn\u00e1 a K\u00fcld\u00e9s gombot", + "follow_link": "K\u00e9rem, k\u00f6vesse a hivatkoz\u00e1st \u00e9s hiteles\u00edtse mag\u00e1t miel\u0151tt folytatn\u00e1", "no_token": "\u00c9rv\u00e9nytelen hozz\u00e1f\u00e9r\u00e9si token" }, "step": { "auth": { - "description": "K\u00e9rem k\u00f6vesse az al\u00e1bbi linket \u00e9s a **Fogadja el** a hozz\u00e1f\u00e9r\u00e9st a Minut fi\u00f3kj\u00e1hoz, majd t\u00e9rjen vissza \u00e9s nyomja meg a **K\u00fcld\u00e9s ** gombot. \n\n [Link]({authorization_url})", + "description": "K\u00e9rem k\u00f6vesse az al\u00e1bbi linket \u00e9s a **Fogadja el** a hozz\u00e1f\u00e9r\u00e9st a Minut fi\u00f3kj\u00e1hoz, majd t\u00e9rjen vissza \u00e9s nyomja meg a **Mehet** gombot. \n\n [Link]({authorization_url})", "title": "Point hiteles\u00edt\u00e9se" }, "user": { @@ -24,7 +24,7 @@ "flow_impl": "Szolg\u00e1ltat\u00f3" }, "description": "El szeretn\u00e9 kezdeni a be\u00e1ll\u00edt\u00e1st?", - "title": "V\u00e1lassz hiteles\u00edt\u00e9si m\u00f3dszert" + "title": "V\u00e1lasszon egy hiteles\u00edt\u00e9si m\u00f3dszert" } } } diff --git a/homeassistant/components/point/translations/it.json b/homeassistant/components/point/translations/it.json index 8a35f7acdf3..c527666e132 100644 --- a/homeassistant/components/point/translations/it.json +++ b/homeassistant/components/point/translations/it.json @@ -4,7 +4,7 @@ "already_setup": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione.", "authorize_url_timeout": "Tempo scaduto nel generare l'URL di autorizzazione.", "external_setup": "Point configurato correttamente da un altro flusso.", - "no_flows": "Il componente non \u00e8 configurato. Si prega di seguire la documentazione.", + "no_flows": "Il componente non \u00e8 configurato. Segui la documentazione.", "unknown_authorize_url_generation": "Errore sconosciuto durante la generazione di un URL di autorizzazione." }, "create_entry": { diff --git a/homeassistant/components/powerwall/translations/de.json b/homeassistant/components/powerwall/translations/de.json index 17f85254208..e68254918fb 100644 --- a/homeassistant/components/powerwall/translations/de.json +++ b/homeassistant/components/powerwall/translations/de.json @@ -15,7 +15,7 @@ "step": { "confirm_discovery": { "description": "M\u00f6chtest du {name} ({ip_address}) einrichten?", - "title": "Powerwall verbinden" + "title": "Stelle eine Verbindung zur Powerwall her" }, "reauth_confim": { "data": { diff --git a/homeassistant/components/powerwall/translations/es.json b/homeassistant/components/powerwall/translations/es.json index 767f77e58bd..5d82ecda8e5 100644 --- a/homeassistant/components/powerwall/translations/es.json +++ b/homeassistant/components/powerwall/translations/es.json @@ -13,6 +13,9 @@ "flow_title": "Powerwall de Tesla ({ip_address})", "step": { "reauth_confim": { + "data": { + "password": "Contrase\u00f1a" + }, "title": "Reautorizar la powerwall" }, "user": { diff --git a/homeassistant/components/ps4/translations/ca.json b/homeassistant/components/ps4/translations/ca.json index 53d45e5104d..6486c154360 100644 --- a/homeassistant/components/ps4/translations/ca.json +++ b/homeassistant/components/ps4/translations/ca.json @@ -25,6 +25,9 @@ "name": "Nom", "region": "Regi\u00f3" }, + "data_description": { + "code": "V\u00e9s a 'Configuraci\u00f3' de la teva consola PlayStation 4. A continuaci\u00f3, v\u00e9s a 'Configuraci\u00f3 de connexi\u00f3 de l'aplicaci\u00f3 m\u00f2bil' i selecciona 'Afegeix un dispositiu' per obtenir el PIN." + }, "description": "Introdueix la informaci\u00f3 de la teva PlayStation 4. Per al Codi PIN, ves a 'Configuraci\u00f3' a la consola de la PlayStation 4. Despr\u00e9s navega fins a 'Configuraci\u00f3 de la connexi\u00f3 de l'aplicaci\u00f3 m\u00f2bil' i selecciona 'Afegir dispositiu'. Introdueix el Codi PIN que es mostra. Consulta la [documentaci\u00f3](https://www.home-assistant.io/components/ps4/) per a m\u00e9s informaci\u00f3.", "title": "PlayStation 4" }, @@ -33,6 +36,9 @@ "ip_address": "Adre\u00e7a IP (deixa-ho en blanc si fas servir la detecci\u00f3 autom\u00e0tica).", "mode": "Mode de configuraci\u00f3" }, + "data_description": { + "ip_address": "Deixa-ho en blanc si selecciones el descobriment autom\u00e0tic." + }, "description": "Selecciona el mode de configuraci\u00f3. El camp de l'Adre\u00e7a IP es pot deixar en blanc si selecciones descobriment autom\u00e0tic (els dispositius es descobriran autom\u00e0ticament).", "title": "PlayStation 4" } diff --git a/homeassistant/components/ps4/translations/de.json b/homeassistant/components/ps4/translations/de.json index c177c5d81cc..22a50cdf3e3 100644 --- a/homeassistant/components/ps4/translations/de.json +++ b/homeassistant/components/ps4/translations/de.json @@ -25,6 +25,9 @@ "name": "Name", "region": "Region" }, + "data_description": { + "code": "Navigiere auf deiner PlayStation 4-Konsole zu \"Einstellungen\". Navigiere dann zu \"Mobile App-Verbindungseinstellungen\" und w\u00e4hle \"Ger\u00e4t hinzuf\u00fcgen\", um den Pin zu erhalten." + }, "description": "Gib deine PlayStation 4-Informationen ein. Navigiere f\u00fcr den PIN-Code auf der PlayStation 4-Konsole zu \"Einstellungen\". Navigiere dann zu \"Mobile App-Verbindungseinstellungen\" und w\u00e4hle \"Ger\u00e4t hinzuf\u00fcgen\" aus. Gib die angezeigte PIN-Code ein. Weitere Informationen findest du in der [Dokumentation](https://www.home-assistant.io/components/ps4/).", "title": "PlayStation 4" }, @@ -33,6 +36,9 @@ "ip_address": "IP-Adresse (Leer lassen, wenn automatische Erkennung verwendet wird).", "mode": "Konfigurationsmodus" }, + "data_description": { + "ip_address": "Lasse das Feld leer, wenn du die automatische Erkennung ausw\u00e4hlst." + }, "description": "W\u00e4hle den Modus f\u00fcr die Konfiguration aus. Das Feld IP-Adresse kann leer bleiben, wenn die automatische Erkennung ausgew\u00e4hlt wird, da Ger\u00e4te automatisch erkannt werden.", "title": "PlayStation 4" } diff --git a/homeassistant/components/ps4/translations/el.json b/homeassistant/components/ps4/translations/el.json index 5bc6b4a7b0e..f3899b682f3 100644 --- a/homeassistant/components/ps4/translations/el.json +++ b/homeassistant/components/ps4/translations/el.json @@ -25,6 +25,9 @@ "name": "\u038c\u03bd\u03bf\u03bc\u03b1", "region": "\u03a0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae" }, + "data_description": { + "code": "\u03a0\u03bb\u03bf\u03b7\u03b3\u03b7\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03b9\u03c2 \"\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2\" \u03c3\u03c4\u03b7\u03bd \u03ba\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1 PlayStation 4. \u03a3\u03c4\u03b7 \u03c3\u03c5\u03bd\u03ad\u03c7\u03b5\u03b9\u03b1, \u03c0\u03bb\u03bf\u03b7\u03b3\u03b7\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03bf 'Mobile App Connection Settings' \u03ba\u03b1\u03b9 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 'Add Device' \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03bb\u03ac\u03b2\u03b5\u03c4\u03b5 \u03c4\u03bf pin." + }, "description": "\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03c4\u03bf\u03c5 PlayStation 4. \u0393\u03b9\u03b1 \u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 PIN, \u03bc\u03b5\u03c4\u03b1\u03b2\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03b9\u03c2 \"\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2\" \u03c3\u03c4\u03b7\u03bd \u03ba\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1 PlayStation 4. \u03a3\u03c4\u03b7 \u03c3\u03c5\u03bd\u03ad\u03c7\u03b5\u03b9\u03b1, \u03c0\u03bb\u03bf\u03b7\u03b3\u03b7\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03bf 'Mobile App Connection Settings' (\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ce\u03bd \u03b3\u03b9\u03b1 \u03ba\u03b9\u03bd\u03b7\u03c4\u03ac) \u03ba\u03b1\u03b9 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 'Add Device' (\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2). \u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf \u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 PIN \u03c0\u03bf\u03c5 \u03b5\u03bc\u03c6\u03b1\u03bd\u03af\u03b6\u03b5\u03c4\u03b1\u03b9. \u0391\u03bd\u03b1\u03c4\u03c1\u03ad\u03be\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd [\u03c4\u03b5\u03ba\u03bc\u03b7\u03c1\u03af\u03c9\u03c3\u03b7](https://www.home-assistant.io/components/ps4/) \u03b3\u03b9\u03b1 \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03b5\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2.", "title": "PlayStation 4" }, @@ -33,6 +36,9 @@ "ip_address": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 IP (\u0391\u03c6\u03ae\u03c3\u03c4\u03b5 \u03ba\u03b5\u03bd\u03cc \u03b5\u03ac\u03bd \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b5 \u03c4\u03b7\u03bd \u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u0391\u03bd\u03b1\u03ba\u03ac\u03bb\u03c5\u03c8\u03b7).", "mode": "\u039b\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7\u03c2" }, + "data_description": { + "ip_address": "\u0391\u03c6\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf \u03ba\u03b5\u03bd\u03cc \u03b5\u03ac\u03bd \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03b1\u03bd\u03b1\u03ba\u03ac\u03bb\u03c5\u03c8\u03b7." + }, "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c4\u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7\u03c2. \u03a4\u03bf \u03c0\u03b5\u03b4\u03af\u03bf \u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 IP \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03c0\u03b1\u03c1\u03b1\u03bc\u03b5\u03af\u03bd\u03b5\u03b9 \u03ba\u03b5\u03bd\u03cc \u03b5\u03ac\u03bd \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03b5\u03c4\u03b5 Auto Discovery, \u03ba\u03b1\u03b8\u03ce\u03c2 \u03bf\u03b9 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ad\u03c2 \u03b8\u03b1 \u03b5\u03bd\u03c4\u03bf\u03c0\u03b9\u03c3\u03c4\u03bf\u03cd\u03bd \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b1.", "title": "PlayStation 4" } diff --git a/homeassistant/components/ps4/translations/en.json b/homeassistant/components/ps4/translations/en.json index 12b154f48de..1c8640efe2e 100644 --- a/homeassistant/components/ps4/translations/en.json +++ b/homeassistant/components/ps4/translations/en.json @@ -25,6 +25,9 @@ "name": "Name", "region": "Region" }, + "data_description": { + "code": "Navigate to 'Settings' on your PlayStation 4 console. Then navigate to 'Mobile App Connection Settings' and select 'Add Device' to get the pin." + }, "description": "Enter your PlayStation 4 information. For PIN Code, navigate to 'Settings' on your PlayStation 4 console. Then navigate to 'Mobile App Connection Settings' and select 'Add Device'. Enter the PIN Code that is displayed. Refer to the [documentation](https://www.home-assistant.io/components/ps4/) for additional info.", "title": "PlayStation 4" }, @@ -33,6 +36,9 @@ "ip_address": "IP Address (Leave empty if using Auto Discovery).", "mode": "Config Mode" }, + "data_description": { + "ip_address": "Leave blank if selecting auto-discovery." + }, "description": "Select mode for configuration. The IP Address field can be left blank if selecting Auto Discovery, as devices will be automatically discovered.", "title": "PlayStation 4" } diff --git a/homeassistant/components/ps4/translations/et.json b/homeassistant/components/ps4/translations/et.json index ddc6f0b73a9..83ef7a6f14c 100644 --- a/homeassistant/components/ps4/translations/et.json +++ b/homeassistant/components/ps4/translations/et.json @@ -25,6 +25,9 @@ "name": "Nimi", "region": "Piirkond" }, + "data_description": { + "code": "Navigeeri oma PlayStation 4 konsoolis jaotisse \u201eSeaded\u201d. Seej\u00e4rel navigeeri jaotisse \"Mobiilirakenduse \u00fchenduse s\u00e4tted\" ja vali PIN-koodi saamiseks \"Lisa seade\"." + }, "description": "Sisesta oma PlayStation 4 teave. PIN koodi saamiseks mine PlayStation 4 konsooli \u201eSeaded\u201d. Seej\u00e4rel liigu jaotisse \u201eMobiilirakenduse \u00fchenduse seaded\u201d ja vali \u201eLisa seade\u201d. SisestaPIN kood . Lisateavet leiad [dokumentatsioonist] (https://www.home-assistant.io/components/ps4/).", "title": "" }, @@ -33,6 +36,9 @@ "ip_address": "IP-aadress (J\u00e4tke t\u00fchjaks, kui kasutate automaatset tuvastamist)", "mode": "Seadistuste re\u017eiim" }, + "data_description": { + "ip_address": "Automaatse avastamise valimiseks j\u00e4ta v\u00e4li t\u00fchjaks." + }, "description": "Valikonfigureerimise re\u017eiim. V\u00e4lja IP-aadress saab automaatse tuvastamise valimisel t\u00fchjaks j\u00e4tta, kuna seadmed avastatakse automaatselt.", "title": "" } diff --git a/homeassistant/components/ps4/translations/fr.json b/homeassistant/components/ps4/translations/fr.json index 8fc216fd20b..8bc2575d246 100644 --- a/homeassistant/components/ps4/translations/fr.json +++ b/homeassistant/components/ps4/translations/fr.json @@ -25,6 +25,9 @@ "name": "Nom", "region": "R\u00e9gion" }, + "data_description": { + "code": "Acc\u00e9dez aux \u00ab\u00a0Param\u00e8tres\u00a0\u00bb sur votre console PlayStation\u00a04, puis acc\u00e9dez \u00e0 \u00ab\u00a0Param\u00e8tres de connexion de l'application mobile\u00a0\u00bb et s\u00e9lectionnez \u00ab\u00a0Ajouter un appareil\u00a0\u00bb afin d'obtenir le code PIN." + }, "description": "Saisissez les informations de votre PlayStation\u00a04. Pour le Code PIN, acc\u00e9dez aux \u00ab\u00a0Param\u00e8tres\u00a0\u00bb sur votre console PlayStation\u00a04, puis acc\u00e9dez \u00e0 \u00ab\u00a0Param\u00e8tres de connexion de l'application mobile\u00a0\u00bb et s\u00e9lectionnez \u00ab\u00a0Ajouter un appareil\u00a0\u00bb. Entrez le Code PIN affich\u00e9. Consultez la [documentation](https://www.home-assistant.io/components/ps4/) pour plus d'informations.", "title": "PlayStation 4" }, @@ -33,6 +36,9 @@ "ip_address": "Adresse IP (laissez vide si vous utilisez la d\u00e9couverte automatique).", "mode": "Mode de configuration" }, + "data_description": { + "ip_address": "Laissez le champ vide si vous s\u00e9lectionnez la d\u00e9couverte automatique." + }, "description": "S\u00e9lectionnez le mode de configuration. Le champ Adresse IP peut \u00eatre laiss\u00e9 vide si vous s\u00e9lectionnez D\u00e9couverte automatique, car les appareils seront automatiquement d\u00e9couverts.", "title": "PlayStation 4" } diff --git a/homeassistant/components/ps4/translations/hu.json b/homeassistant/components/ps4/translations/hu.json index 753ea60b282..24da7fc15f5 100644 --- a/homeassistant/components/ps4/translations/hu.json +++ b/homeassistant/components/ps4/translations/hu.json @@ -4,27 +4,30 @@ "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", "credential_error": "Hiba t\u00f6rt\u00e9nt a hiteles\u00edt\u0151 adatok beolvas\u00e1sa sor\u00e1n.", "no_devices_found": "Nem tal\u00e1lhat\u00f3 eszk\u00f6z a h\u00e1l\u00f3zaton", - "port_987_bind_error": "Nem siker\u00fclt a 987. porthoz kapcsol\u00f3dni. Tov\u00e1bbi inform\u00e1ci\u00f3 a [dokument\u00e1ci\u00f3ban] tal\u00e1lhat\u00f3 (https://www.home-assistant.io/components/ps4/).", - "port_997_bind_error": "Nem siker\u00fclt a 997-es porthoz kapcsol\u00f3dni. Tov\u00e1bbi inform\u00e1ci\u00f3 a [dokument\u00e1ci\u00f3ban] tal\u00e1lhat\u00f3 (https://www.home-assistant.io/components/ps4/)." + "port_987_bind_error": "Nem siker\u00fclt a 987. portot lefoglalni. Tov\u00e1bbi inform\u00e1ci\u00f3 a [dokument\u00e1ci\u00f3ban] tal\u00e1lhat\u00f3 (https://www.home-assistant.io/components/ps4/).", + "port_997_bind_error": "Nem siker\u00fclt a 997. portot lefoglalni. Tov\u00e1bbi inform\u00e1ci\u00f3 a [dokument\u00e1ci\u00f3ban] tal\u00e1lhat\u00f3 (https://www.home-assistant.io/components/ps4/)." }, "error": { "cannot_connect": "Sikertelen csatlakoz\u00e1s", - "credential_timeout": "Id\u0151t\u00fall\u00e9p\u00e9s. Az \u00fajraind\u00edt\u00e1shoz nyomja meg a K\u00fcld\u00e9s gombot.", + "credential_timeout": "Id\u0151t\u00fall\u00e9p\u00e9s. Az \u00fajraind\u00edt\u00e1shoz nyomja meg a Mehet gombot.", "login_failed": "Nem siker\u00fclt p\u00e1ros\u00edtani a PlayStation 4-gyel. Ellen\u0151rizze, hogy a PIN-k\u00f3d helyes-e.", "no_ipaddress": "\u00cdrja be a konfigur\u00e1lni k\u00edv\u00e1nt PlayStation 4 IP c\u00edm\u00e9t" }, "step": { "creds": { - "description": "Hiteles\u00edt\u0151 adatok sz\u00fcks\u00e9gesek. Nyomja meg a \u201eK\u00fcld\u00e9s\u201d gombot, majd a PS4 2. k\u00e9perny\u0151 alkalmaz\u00e1sban friss\u00edtse az eszk\u00f6z\u00f6ket, \u00e9s a folytat\u00e1shoz v\u00e1lassza a \u201eHome-Assistant\u201d eszk\u00f6zt.", + "description": "Hiteles\u00edt\u0151 adatok sz\u00fcks\u00e9gesek. Nyomja meg a \u201eMehet\u201d gombot, majd a PS4 2. k\u00e9perny\u0151 alkalmaz\u00e1sban friss\u00edtse az eszk\u00f6z\u00f6ket, \u00e9s a folytat\u00e1shoz v\u00e1lassza a \u201eHome-Assistant\u201d eszk\u00f6zt.", "title": "PlayStation 4" }, "link": { "data": { "code": "PIN-k\u00f3d", "ip_address": "IP c\u00edm", - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "region": "R\u00e9gi\u00f3" }, + "data_description": { + "code": "Keresse meg a PlayStation 4 konzol \"Be\u00e1ll\u00edt\u00e1sok\" gombj\u00e1t. Ezut\u00e1n keresse meg a \"Mobilalkalmaz\u00e1s-kapcsolat be\u00e1ll\u00edt\u00e1sai\" lehet\u0151s\u00e9get, \u00e9s v\u00e1lassza az \"Eszk\u00f6z hozz\u00e1ad\u00e1sa\" lehet\u0151s\u00e9get a pin lek\u00e9r\u00e9s\u00e9hez." + }, "description": "Adja meg a PlayStation 4 adatait. A PIN-k\u00f3d eset\u00e9ben keresse meg a PlayStation 4 konzol \u201eBe\u00e1ll\u00edt\u00e1sok\u201d elem\u00e9t. Ezut\u00e1n keresse meg a \u201eMobilalkalmaz\u00e1s-kapcsolat be\u00e1ll\u00edt\u00e1sai\u201d elemet, \u00e9s v\u00e1lassza az \u201eEszk\u00f6z hozz\u00e1ad\u00e1sa\u201d lehet\u0151s\u00e9get. \u00cdrja be a megjelen\u0151 PIN-k\u00f3d . Tov\u00e1bbi inform\u00e1ci\u00f3k a [dokument\u00e1ci\u00f3ban] tal\u00e1lhat\u00f3k (https://www.home-assistant.io/components/ps4/).", "title": "PlayStation 4" }, @@ -33,6 +36,9 @@ "ip_address": "IP c\u00edm (Hagyja \u00fcresen az Automatikus Felder\u00edt\u00e9s haszn\u00e1lat\u00e1hoz).", "mode": "Konfigur\u00e1ci\u00f3s m\u00f3d" }, + "data_description": { + "ip_address": "Az automatikus felder\u00edt\u00e9s haszn\u00e1lat\u00e1hoz hagyja \u00fcresen" + }, "description": "V\u00e1lassza ki a m\u00f3dot a konfigur\u00e1l\u00e1shoz. Az IP c\u00edm mez\u0151 \u00fcresen maradhat, ha az Automatikus felder\u00edt\u00e9s lehet\u0151s\u00e9get v\u00e1lasztja, mivel az eszk\u00f6z\u00f6k automatikusan felfedez\u0151dnek.", "title": "PlayStation 4" } diff --git a/homeassistant/components/ps4/translations/id.json b/homeassistant/components/ps4/translations/id.json index aab31564e16..beb15fb5c4c 100644 --- a/homeassistant/components/ps4/translations/id.json +++ b/homeassistant/components/ps4/translations/id.json @@ -25,6 +25,9 @@ "name": "Nama", "region": "Wilayah" }, + "data_description": { + "code": "Navigasikan ke 'Pengaturan' di konsol PlayStation 4 Anda. Kemudian navigasikan ke 'Pengaturan Koneksi Aplikasi Seluler' dan pilih 'Tambahkan Perangkat' untuk mendapatkan PIN." + }, "description": "Masukkan informasi PlayStation 4 Anda. Untuk Kode PIN, buka 'Pengaturan' di konsol PlayStation 4 Anda. Kemudian buka 'Pengaturan Koneksi Aplikasi Seluler' dan pilih 'Tambah Perangkat'. Masukkan Kode PIN yang ditampilkan. Lihat [dokumentasi] (https://www.home-assistant.io/components/ps4/) untuk info lebih lanjut.", "title": "PlayStation 4" }, @@ -33,6 +36,9 @@ "ip_address": "Alamat IP (Kosongkan jika menggunakan Penemuan Otomatis).", "mode": "Mode Konfigurasi" }, + "data_description": { + "ip_address": "Kosongkan jika memilih penemuan otomatis." + }, "description": "Pilih mode untuk konfigurasi. Alamat IP dapat dikosongkan jika memilih Penemuan Otomatis karena perangkat akan ditemukan secara otomatis.", "title": "PlayStation 4" } diff --git a/homeassistant/components/ps4/translations/it.json b/homeassistant/components/ps4/translations/it.json index 8df24f24afb..3faca963317 100644 --- a/homeassistant/components/ps4/translations/it.json +++ b/homeassistant/components/ps4/translations/it.json @@ -25,6 +25,9 @@ "name": "Nome", "region": "Area geografica" }, + "data_description": { + "code": "Vai a 'Impostazioni' sulla tua console PlayStation 4. Quindi vai su 'Impostazioni connessione app mobili' e seleziona 'Aggiungi dispositivo' per ottenere il pin." + }, "description": "Inserisci le informazioni per la tua PlayStation 4. Per il codice PIN, vai a \"Impostazioni\" sulla PlayStation 4. Quindi vai a 'Impostazioni di connessione Mobile App' e seleziona 'Aggiungi dispositivo'. Immettere il codice PIN visualizzato. Fai riferimento alla [documentazione](https://www.home-assistant.io/components/ps4/) per ulteriori informazioni.", "title": "PlayStation 4" }, @@ -33,6 +36,9 @@ "ip_address": "Indirizzo IP (Lascia vuoto se stai usando il rilevamento automatico).", "mode": "Modalit\u00e0 di configurazione" }, + "data_description": { + "ip_address": "Lascia vuoto se selezioni il rilevamento automatico." + }, "description": "Seleziona la modalit\u00e0 per la configurazione. Il campo per l'indirizzo IP pu\u00f2 essere lasciato vuoto se si seleziona il rilevamento automatico, poich\u00e9 i dispositivi saranno rilevati automaticamente.", "title": "PlayStation 4" } diff --git a/homeassistant/components/ps4/translations/ja.json b/homeassistant/components/ps4/translations/ja.json index 6b1a162b387..92be62f7229 100644 --- a/homeassistant/components/ps4/translations/ja.json +++ b/homeassistant/components/ps4/translations/ja.json @@ -25,6 +25,9 @@ "name": "\u540d\u524d", "region": "\u30ea\u30fc\u30b8\u30e7\u30f3" }, + "data_description": { + "code": "PlayStation 4\u672c\u4f53\u306e' \u8a2d\u5b9a' \u306b\u79fb\u52d5\u3057\u307e\u3059\u3002\u6b21\u306b\u3001' \u30e2\u30d0\u30a4\u30eb\u30a2\u30d7\u30ea\u63a5\u7d9a\u8a2d\u5b9a' \u306b\u79fb\u52d5\u3057\u3001' \u30c7\u30d0\u30a4\u30b9\u306e\u8ffd\u52a0' \u3092\u9078\u629e\u3057\u3066\u3001\u30d4\u30f3\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002" + }, "description": "PlayStation4\u306e\u60c5\u5831\u3092\u5165\u529b\u3057\u307e\u3059\u3002 PIN\u30b3\u30fc\u30c9(PIN CodePIN Code)\u306e\u5834\u5408\u306f\u3001PlayStation4\u672c\u4f53\u306e '\u8a2d\u5b9a' \u306b\u79fb\u52d5\u3057\u307e\u3059\u3002\u6b21\u306b\u3001'\u30e2\u30d0\u30a4\u30eb\u30a2\u30d7\u30ea\u63a5\u7d9a\u8a2d\u5b9a' \u306b\u79fb\u52d5\u3057\u3066\u3001'\u30c7\u30d0\u30a4\u30b9\u306e\u8ffd\u52a0' \u3092\u9078\u629e\u3057\u307e\u3059\u3002\u8868\u793a\u3055\u308c\u305f PIN\u30b3\u30fc\u30c9(PIN CodePIN Code) \u3092\u5165\u529b\u3057\u307e\u3059\u3002\u8a73\u7d30\u306f\u3001[\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8](https://www.home-assistant.io/components/ps4/) \u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002", "title": "Play Station 4" }, @@ -33,6 +36,9 @@ "ip_address": "IP\u30a2\u30c9\u30ec\u30b9(\u81ea\u52d5\u691c\u51fa\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u7a7a\u306e\u307e\u307e\u306b\u3057\u307e\u3059)", "mode": "\u30b3\u30f3\u30d5\u30a3\u30b0\u30e2\u30fc\u30c9" }, + "data_description": { + "ip_address": "\u81ea\u52d5\u691c\u51fa\u3092\u9078\u629e\u3059\u308b\u5834\u5408\u306f\u3001\u7a7a\u767d\u306e\u307e\u307e\u306b\u3057\u307e\u3059\u3002" + }, "description": "\u30b3\u30f3\u30d5\u30a3\u30ae\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u30e2\u30fc\u30c9\u3092\u9078\u629e\u3057\u307e\u3059\u3002\u81ea\u52d5\u691c\u51fa\u3092\u9078\u629e\u3059\u308b\u3068\u3001IP\u30a2\u30c9\u30ec\u30b9\u306e\u6b04\u304c\u7a7a\u767d\u306e\u307e\u307e\u3067\u3082\u30c7\u30d0\u30a4\u30b9\u306f\u81ea\u52d5\u7684\u306b\u691c\u51fa\u3055\u308c\u307e\u3059\u3002", "title": "Play Station 4" } diff --git a/homeassistant/components/ps4/translations/nl.json b/homeassistant/components/ps4/translations/nl.json index db59c7ab30a..1a6ddd26f7f 100644 --- a/homeassistant/components/ps4/translations/nl.json +++ b/homeassistant/components/ps4/translations/nl.json @@ -25,6 +25,9 @@ "name": "Naam", "region": "Regio" }, + "data_description": { + "code": "Navigeer naar 'Instellingen' op je PlayStation 4-systeem. Navigeer vervolgens naar 'Instellingen mobiele app-verbinding' en selecteer 'Apparaat toevoegen' om de pin te krijgen." + }, "description": "Voer je PlayStation 4-informatie in. Voor PIN-code navigeer je naar 'Instellingen' op je PlayStation 4-console. Ga vervolgens naar 'Verbindingsinstellingen mobiele app' en selecteer 'Apparaat toevoegen'. Voer de PIN-code in die wordt weergegeven. Raadpleeg de [documentatie](https://www.home-assistant.io/components/ps4/) voor meer informatie.", "title": "PlayStation 4" }, @@ -33,6 +36,9 @@ "ip_address": "IP-adres (leeg laten indien Auto Discovery wordt gebruikt).", "mode": "Configuratiemodus" }, + "data_description": { + "ip_address": "Leeg laten indien u auto-discovery selecteert." + }, "description": "Selecteer modus voor configuratie. Het veld IP-adres kan leeg worden gelaten als Auto Discovery wordt geselecteerd, omdat apparaten dan automatisch worden ontdekt.", "title": "PlayStation 4" } diff --git a/homeassistant/components/ps4/translations/no.json b/homeassistant/components/ps4/translations/no.json index 185b0e031c5..69332862a33 100644 --- a/homeassistant/components/ps4/translations/no.json +++ b/homeassistant/components/ps4/translations/no.json @@ -25,6 +25,9 @@ "name": "Navn", "region": "" }, + "data_description": { + "code": "Naviger til \"Innstillinger\" p\u00e5 PlayStation 4-konsollen. Naviger deretter til \"Mobile App Connection Settings\" og velg \"Add Device\" for \u00e5 hente pinnen." + }, "description": "Skriv inn PlayStation 4-informasjonen din. For PIN kode , naviger til 'Innstillinger' p\u00e5 PlayStation 4-konsollen. Naviger deretter til 'Innstillinger for tilkobling av mobilapp' og velg 'Legg til enhet'. Skriv inn PIN kode som vises. Se [dokumentasjon] (https://www.home-assistant.io/components/ps4/) for mer informasjon.", "title": "" }, @@ -33,6 +36,9 @@ "ip_address": "IP adresse (La v\u00e6re tom hvis du bruker automatisk oppdagelse)", "mode": "Konfigureringsmodus" }, + "data_description": { + "ip_address": "La st\u00e5 tomt hvis du velger automatisk oppdagelse." + }, "description": "Velg modus for konfigurasjon. Feltet IP adresse kan st\u00e5 tomt hvis du velger automatisk oppdagelse, da enheter automatisk blir oppdaget.", "title": "" } diff --git a/homeassistant/components/ps4/translations/pl.json b/homeassistant/components/ps4/translations/pl.json index 9840363630d..af4d36b9bf2 100644 --- a/homeassistant/components/ps4/translations/pl.json +++ b/homeassistant/components/ps4/translations/pl.json @@ -25,6 +25,9 @@ "name": "Nazwa", "region": "Region" }, + "data_description": { + "code": "Przejd\u017a do \u201eUstawienia\u201d na konsoli PlayStation 4. Nast\u0119pnie przejd\u017a do \u201eUstawienia po\u0142\u0105czenia aplikacji mobilnej\u201d i wybierz \u201eDodaj urz\u0105dzenie\u201d, aby uzyska\u0107 kod PIN." + }, "description": "Wprowad\u017a informacje o PlayStation 4. Aby uzyska\u0107 'PIN', przejd\u017a do 'Ustawienia' na konsoli PlayStation 4. Nast\u0119pnie przejd\u017a do 'Ustawienia po\u0142\u0105czenia aplikacji mobilnej' i wybierz 'Dodaj urz\u0105dzenie'. Wprowad\u017a wy\u015bwietlony kod PIN. Zapoznaj si\u0119 z [dokumentacj\u0105](https://www.home-assistant.io/components/ps4/), by pozna\u0107 szczeg\u00f3\u0142y.", "title": "PlayStation 4" }, @@ -33,6 +36,9 @@ "ip_address": "Adres IP (pozostaw puste, je\u015bli u\u017cywasz wykrywania)", "mode": "Tryb konfiguracji" }, + "data_description": { + "ip_address": "Pozostaw puste, je\u015bli wybierasz automatyczne wykrywanie." + }, "description": "Wybierz tryb konfiguracji. Pole adresu IP mo\u017cna pozostawi\u0107 puste, je\u015bli wybierzesz opcj\u0119 Auto Discovery, poniewa\u017c urz\u0105dzenia zostan\u0105 automatycznie wykryte.", "title": "PlayStation 4" } diff --git a/homeassistant/components/ps4/translations/pt-BR.json b/homeassistant/components/ps4/translations/pt-BR.json index 7938cbb6241..12d54264f78 100644 --- a/homeassistant/components/ps4/translations/pt-BR.json +++ b/homeassistant/components/ps4/translations/pt-BR.json @@ -25,6 +25,9 @@ "name": "Nome", "region": "Regi\u00e3o" }, + "data_description": { + "code": "Navegue at\u00e9 'Configura\u00e7\u00f5es' em seu console PlayStation 4. Em seguida, navegue at\u00e9 'Configura\u00e7\u00f5es de conex\u00e3o do aplicativo m\u00f3vel' e selecione 'Adicionar dispositivo' para obter o PIN." + }, "description": "Digite suas informa\u00e7\u00f5es do PlayStation 4. Para C\u00f3digo PIN, navegue at\u00e9 'Configura\u00e7\u00f5es' no seu console PlayStation 4. Em seguida, navegue at\u00e9 \"Configura\u00e7\u00f5es de conex\u00e3o de aplicativos m\u00f3veis\" e selecione \"Adicionar dispositivo\". Digite o C\u00f3digo PIN exibido. Consulte a [documenta\u00e7\u00e3o] (https://www.home-assistant.io/components/ps4/) para informa\u00e7\u00f5es adicionais.", "title": "Playstation 4" }, @@ -33,6 +36,9 @@ "ip_address": "Endere\u00e7o IP (Deixe em branco se estiver usando a Detec\u00e7\u00e3o autom\u00e1tica).", "mode": "Modo de configura\u00e7\u00e3o" }, + "data_description": { + "ip_address": "Deixe em branco se selecionar a descoberta autom\u00e1tica." + }, "description": "Selecione o modo para configura\u00e7\u00e3o. O campo Endere\u00e7o IP pode ser deixado em branco se selecionar Detec\u00e7\u00e3o Autom\u00e1tica, pois os dispositivos ser\u00e3o descobertos automaticamente.", "title": "Playstation 4" } diff --git a/homeassistant/components/ps4/translations/ru.json b/homeassistant/components/ps4/translations/ru.json index ea42e260ec8..646346095b0 100644 --- a/homeassistant/components/ps4/translations/ru.json +++ b/homeassistant/components/ps4/translations/ru.json @@ -25,6 +25,9 @@ "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", "region": "\u0420\u0435\u0433\u0438\u043e\u043d" }, + "data_description": { + "code": "\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f PIN-\u043a\u043e\u0434\u0430 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043a \u043f\u0443\u043d\u043a\u0442\u0443 **\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438** \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 PlayStation 4. \u0417\u0430\u0442\u0435\u043c \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 **\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f** \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 **\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e**." + }, "description": "\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f PIN-\u043a\u043e\u0434\u0430 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043a \u043f\u0443\u043d\u043a\u0442\u0443 **\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438** \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 PlayStation 4. \u0417\u0430\u0442\u0435\u043c \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 **\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f** \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 **\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e**. \u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 [\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439](https://www.home-assistant.io/components/ps4/) \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.", "title": "PlayStation 4" }, @@ -33,6 +36,9 @@ "ip_address": "IP-\u0430\u0434\u0440\u0435\u0441 (\u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0443\u0441\u0442\u044b\u043c \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0440\u0435\u0436\u0438\u043c\u0430 \u0430\u0432\u0442\u043e\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f)", "mode": "\u0420\u0435\u0436\u0438\u043c" }, + "data_description": { + "ip_address": "\u041e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0443\u0441\u0442\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435" + }, "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0438\u043f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u041f\u043e\u043b\u0435 'IP-\u0430\u0434\u0440\u0435\u0441' \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c, \u0435\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043e 'Auto Discovery', \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.", "title": "PlayStation 4" } diff --git a/homeassistant/components/ps4/translations/tr.json b/homeassistant/components/ps4/translations/tr.json index 8243e179a98..a2e8149db7d 100644 --- a/homeassistant/components/ps4/translations/tr.json +++ b/homeassistant/components/ps4/translations/tr.json @@ -25,6 +25,9 @@ "name": "Ad", "region": "B\u00f6lge" }, + "data_description": { + "code": "PlayStation 4 konsolunuzda 'Ayarlar'a gidin. Ard\u0131ndan, \"Mobil Uygulama Ba\u011flant\u0131 Ayarlar\u0131\"na gidin ve PIN'i almak i\u00e7in \"Cihaz Ekle\"yi se\u00e7in." + }, "description": "PlayStation 4 bilgilerinizi girin. PIN Kodu i\u00e7in PlayStation 4 konsolunuzda 'Ayarlar'a gidin. Ard\u0131ndan \"Mobil Uygulama Ba\u011flant\u0131 Ayarlar\u0131\"na gidin ve \"Cihaz Ekle\"yi se\u00e7in. PIN Kodu kodunu girin. Ek bilgi i\u00e7in [belgelere](https://www.home-assistant.io/components/ps4/) bak\u0131n.", "title": "PlayStation 4" }, @@ -33,6 +36,9 @@ "ip_address": "IP Adresi (Otomatik Ke\u015fif kullan\u0131l\u0131yorsa bo\u015f b\u0131rak\u0131n).", "mode": "Yap\u0131land\u0131rma Modu" }, + "data_description": { + "ip_address": "Otomatik bulma se\u00e7iliyorsa bo\u015f b\u0131rak\u0131n." + }, "description": "Yap\u0131land\u0131rma i\u00e7in modu se\u00e7in. IP Adresi alan\u0131, Otomatik Ke\u015fif se\u00e7ildi\u011finde cihazlar otomatik olarak ke\u015ffedilece\u011finden bo\u015f b\u0131rak\u0131labilir.", "title": "PlayStation 4" } diff --git a/homeassistant/components/ps4/translations/zh-Hant.json b/homeassistant/components/ps4/translations/zh-Hant.json index e9c8dac2a26..ae7e86377d8 100644 --- a/homeassistant/components/ps4/translations/zh-Hant.json +++ b/homeassistant/components/ps4/translations/zh-Hant.json @@ -25,6 +25,9 @@ "name": "\u540d\u7a31", "region": "\u5340\u57df" }, + "data_description": { + "code": "\u5207\u63db\u81f3 PlayStation 4 \u4e3b\u6a5f\u7684\u300c\u8a2d\u5b9a\u300d\u5167\uff0c\u4e26\u65bc\u300c\u884c\u52d5\u7a0b\u5f0f\u9023\u7dda\u8a2d\u5b9a\uff08Mobile App Connection Settings\uff09\u300d\u4e2d\u9078\u64c7\u300c\u65b0\u589e\u88dd\u7f6e\u300d\u4ee5\u53d6\u5f97 PIN \u78bc\u3002" + }, "description": "\u8f38\u5165\u60a8\u7684 PlayStation 4 \u8cc7\u8a0a\uff0c\u300cPIN \u78bc\u300d\u65bc PlayStation 4 \u4e3b\u6a5f\u7684\u300c\u8a2d\u5b9a\u300d\u5167\uff0c\u4e26\u65bc\u300c\u884c\u52d5\u7a0b\u5f0f\u9023\u7dda\u8a2d\u5b9a\uff08Mobile App Connection Settings\uff09\u300d\u4e2d\u9078\u64c7\u300c\u65b0\u589e\u88dd\u7f6e\u300d\u3002\u8f38\u5165\u6240\u986f\u793a\u7684 PIN \u78bc\u3002\u8acb\u53c3\u8003 [documentation](https://www.home-assistant.io/components/ps4/) \u4ee5\u7372\u5f97\u66f4\u591a\u8cc7\u8a0a\u3002", "title": "PlayStation 4" }, @@ -33,6 +36,9 @@ "ip_address": "IP \u4f4d\u5740\uff08\u5982\u679c\u4f7f\u7528\u81ea\u52d5\u641c\u7d22\u65b9\u5f0f\uff0c\u8acb\u4fdd\u7559\u7a7a\u767d\uff09\u3002", "mode": "\u8a2d\u5b9a\u6a21\u5f0f" }, + "data_description": { + "ip_address": "\u5047\u5982\u9078\u64c7\u4f7f\u7528\u81ea\u52d5\u641c\u7d22\u8acb\u4fdd\u6301\u7a7a\u767d" + }, "description": "\u9078\u64c7\u6a21\u5f0f\u4ee5\u9032\u884c\u8a2d\u5b9a\u3002\u5047\u5982\u9078\u64c7\u81ea\u52d5\u641c\u7d22\u6a21\u5f0f\u7684\u8a71\uff0c\u7531\u65bc\u6703\u81ea\u52d5\u9032\u884c\u88dd\u7f6e\u641c\u5c0b\uff0cIP \u4f4d\u5740\u53ef\u4fdd\u7559\u70ba\u7a7a\u767d\u3002", "title": "PlayStation 4" } diff --git a/homeassistant/components/pure_energie/translations/cs.json b/homeassistant/components/pure_energie/translations/cs.json new file mode 100644 index 00000000000..76dabdfb963 --- /dev/null +++ b/homeassistant/components/pure_energie/translations/cs.json @@ -0,0 +1,19 @@ +{ + "config": { + "abort": { + "already_configured": "Za\u0159\u00edzen\u00ed je ji\u017e nastaveno", + "cannot_connect": "Nepoda\u0159ilo se p\u0159ipojit" + }, + "error": { + "cannot_connect": "Nepoda\u0159ilo se p\u0159ipojit" + }, + "flow_title": "{model} ({host})", + "step": { + "user": { + "data": { + "host": "Hostitel" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/pure_energie/translations/fr.json b/homeassistant/components/pure_energie/translations/fr.json index 7ab74aae074..e121c7f655c 100644 --- a/homeassistant/components/pure_energie/translations/fr.json +++ b/homeassistant/components/pure_energie/translations/fr.json @@ -13,6 +13,10 @@ "data": { "host": "H\u00f4te" } + }, + "zeroconf_confirm": { + "description": "Voulez-vous ajouter Pure Energie Meter (`{model}`) \u00e0 Home Assistant\u00a0?", + "title": "D\u00e9couverte de l'appareil Pure Energie Meter" } } } diff --git a/homeassistant/components/pvpc_hourly_pricing/translations/ja.json b/homeassistant/components/pvpc_hourly_pricing/translations/ja.json index 919186d0e62..d88ee379678 100644 --- a/homeassistant/components/pvpc_hourly_pricing/translations/ja.json +++ b/homeassistant/components/pvpc_hourly_pricing/translations/ja.json @@ -9,7 +9,7 @@ "name": "\u30bb\u30f3\u30b5\u30fc\u540d", "power": "\u5951\u7d04\u96fb\u529b (kW)", "power_p3": "\u8c37\u9593(valley period) P3 (kW)\u306e\u5951\u7d04\u96fb\u529b", - "tariff": "\u5730\u57df\u5225\u9069\u7528\u95a2\u7a0e" + "tariff": "\u5730\u57df\u5225\u9069\u7528\u95a2\u7a0e(Applicable tariff)" }, "description": "\u3053\u306e\u30bb\u30f3\u30b5\u30fc\u306f\u3001\u516c\u5f0fAPI\u3092\u4f7f\u7528\u3057\u3066\u3001\u30b9\u30da\u30a4\u30f3\u3067\u306e[\u96fb\u6c17\u306e\u6642\u9593\u4fa1\u683c((hourly pricing of electricity)PVPC)](https://www.esios.ree.es/es/pvpc) \u3092\u53d6\u5f97\u3057\u307e\u3059\u3002\n\u3088\u308a\u6b63\u78ba\u306a\u8aac\u660e\u306b\u3064\u3044\u3066\u306f\u3001[\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3 \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8](https://www.home-assistant.io/integrations/pvpc_hourly_pricing/) \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u304f\u3060\u3055\u3044\u3002", "title": "\u30bb\u30f3\u30b5\u30fc\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7" @@ -22,7 +22,7 @@ "data": { "power": "\u5951\u7d04\u96fb\u529b (kW)", "power_p3": "\u8c37\u9593(valley period) P3 (kW)\u306e\u5951\u7d04\u96fb\u529b", - "tariff": "\u5730\u57df\u5225\u9069\u7528\u95a2\u7a0e" + "tariff": "\u5730\u57df\u5225\u9069\u7528\u95a2\u7a0e(Applicable tariff)" }, "description": "\u3053\u306e\u30bb\u30f3\u30b5\u30fc\u306f\u3001\u516c\u5f0fAPI\u3092\u4f7f\u7528\u3057\u3066\u3001\u30b9\u30da\u30a4\u30f3\u3067\u306e[\u96fb\u6c17\u306e\u6642\u9593\u4fa1\u683c(hourly pricing of electricity)PVPC)](https://www.esios.ree.es/es/pvpc) \u3092\u53d6\u5f97\u3057\u307e\u3059\u3002\n\u3088\u308a\u6b63\u78ba\u306a\u8aac\u660e\u306b\u3064\u3044\u3066\u306f\u3001[\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3 \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8](https://www.home-assistant.io/integrations/pvpc_hourly_pricing/) \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u304f\u3060\u3055\u3044\u3002", "title": "\u30bb\u30f3\u30b5\u30fc\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7" diff --git a/homeassistant/components/qnap_qsw/translations/de.json b/homeassistant/components/qnap_qsw/translations/de.json new file mode 100644 index 00000000000..ad2599e24c4 --- /dev/null +++ b/homeassistant/components/qnap_qsw/translations/de.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "Ger\u00e4t ist bereits konfiguriert", + "invalid_id": "Ger\u00e4t hat eine ung\u00fcltige eindeutige ID zur\u00fcckgegeben" + }, + "error": { + "cannot_connect": "Verbindung fehlgeschlagen", + "invalid_auth": "Ung\u00fcltige Authentifizierung" + }, + "step": { + "user": { + "data": { + "password": "Passwort", + "url": "URL", + "username": "Benutzername" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/qnap_qsw/translations/el.json b/homeassistant/components/qnap_qsw/translations/el.json new file mode 100644 index 00000000000..1bea5dcc9d7 --- /dev/null +++ b/homeassistant/components/qnap_qsw/translations/el.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "\u0397 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03b8\u03b5\u03af", + "invalid_id": "\u0397 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03b5\u03c0\u03ad\u03c3\u03c4\u03c1\u03b5\u03c8\u03b5 \u03ad\u03bd\u03b1 \u03bc\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03bc\u03bf\u03bd\u03b1\u03b4\u03b9\u03ba\u03cc \u03b1\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc" + }, + "error": { + "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", + "invalid_auth": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2" + }, + "step": { + "user": { + "data": { + "password": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", + "url": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL", + "username": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/qnap_qsw/translations/en.json b/homeassistant/components/qnap_qsw/translations/en.json index 2d0180d1670..b6f68f2f062 100644 --- a/homeassistant/components/qnap_qsw/translations/en.json +++ b/homeassistant/components/qnap_qsw/translations/en.json @@ -11,9 +11,9 @@ "step": { "user": { "data": { + "password": "Password", "url": "URL", - "username": "Username", - "password": "Password" + "username": "Username" } } } diff --git a/homeassistant/components/qnap_qsw/translations/et.json b/homeassistant/components/qnap_qsw/translations/et.json new file mode 100644 index 00000000000..eb7ddb6dbe7 --- /dev/null +++ b/homeassistant/components/qnap_qsw/translations/et.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "Seade on juba h\u00e4\u00e4lestatud", + "invalid_id": "Seade tagastas kehtetu kordumatu ID" + }, + "error": { + "cannot_connect": "\u00dchendamine nurjus", + "invalid_auth": "Tuvastamine nurjus" + }, + "step": { + "user": { + "data": { + "password": "Salas\u00f5na", + "url": "URL", + "username": "Kasutajanimi" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/qnap_qsw/translations/fr.json b/homeassistant/components/qnap_qsw/translations/fr.json new file mode 100644 index 00000000000..2631bcdfc87 --- /dev/null +++ b/homeassistant/components/qnap_qsw/translations/fr.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "L'appareil est d\u00e9j\u00e0 configur\u00e9", + "invalid_id": "L'appareil a renvoy\u00e9 un ID unique non valide" + }, + "error": { + "cannot_connect": "\u00c9chec de connexion", + "invalid_auth": "Authentification non valide" + }, + "step": { + "user": { + "data": { + "password": "Mot de passe", + "url": "URL", + "username": "Nom d'utilisateur" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/qnap_qsw/translations/hu.json b/homeassistant/components/qnap_qsw/translations/hu.json new file mode 100644 index 00000000000..c41ba084d95 --- /dev/null +++ b/homeassistant/components/qnap_qsw/translations/hu.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", + "invalid_id": "A k\u00e9sz\u00fcl\u00e9k \u00e9rv\u00e9nytelen egyedi azonos\u00edt\u00f3t k\u00fcld\u00f6tt vissza" + }, + "error": { + "cannot_connect": "Sikertelen csatlakoz\u00e1s", + "invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s" + }, + "step": { + "user": { + "data": { + "password": "Jelsz\u00f3", + "url": "URL", + "username": "Felhaszn\u00e1l\u00f3n\u00e9v" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/qnap_qsw/translations/id.json b/homeassistant/components/qnap_qsw/translations/id.json new file mode 100644 index 00000000000..b34bcd046d9 --- /dev/null +++ b/homeassistant/components/qnap_qsw/translations/id.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "Perangkat sudah dikonfigurasi", + "invalid_id": "Perangkat mengembalikan ID unik yang tidak valid" + }, + "error": { + "cannot_connect": "Gagal terhubung", + "invalid_auth": "Autentikasi tidak valid" + }, + "step": { + "user": { + "data": { + "password": "Kata Sandi", + "url": "URL", + "username": "Nama Pengguna" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/qnap_qsw/translations/it.json b/homeassistant/components/qnap_qsw/translations/it.json new file mode 100644 index 00000000000..0759ef4ca8a --- /dev/null +++ b/homeassistant/components/qnap_qsw/translations/it.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "Il dispositivo \u00e8 gi\u00e0 configurato", + "invalid_id": "Il dispositivo ha restituito un ID univoco non valido" + }, + "error": { + "cannot_connect": "Impossibile connettersi", + "invalid_auth": "Autenticazione non valida" + }, + "step": { + "user": { + "data": { + "password": "Password", + "url": "URL", + "username": "Nome utente" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/qnap_qsw/translations/nl.json b/homeassistant/components/qnap_qsw/translations/nl.json new file mode 100644 index 00000000000..10ec94f589d --- /dev/null +++ b/homeassistant/components/qnap_qsw/translations/nl.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "Apparaat is al geconfigureerd", + "invalid_id": "Het apparaat heeft een ongeldige unieke ID teruggestuurd" + }, + "error": { + "cannot_connect": "Kan geen verbinding maken", + "invalid_auth": "Ongeldige authenticatie" + }, + "step": { + "user": { + "data": { + "password": "Wachtwoord", + "url": "URL", + "username": "Gebruikersnaam" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/qnap_qsw/translations/no.json b/homeassistant/components/qnap_qsw/translations/no.json new file mode 100644 index 00000000000..9eff9c22080 --- /dev/null +++ b/homeassistant/components/qnap_qsw/translations/no.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "Enheten er allerede konfigurert", + "invalid_id": "Enheten returnerte en ugyldig unik ID" + }, + "error": { + "cannot_connect": "Tilkobling mislyktes", + "invalid_auth": "Ugyldig godkjenning" + }, + "step": { + "user": { + "data": { + "password": "Passord", + "url": "URL", + "username": "Brukernavn" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/qnap_qsw/translations/pl.json b/homeassistant/components/qnap_qsw/translations/pl.json new file mode 100644 index 00000000000..e90d527a7a7 --- /dev/null +++ b/homeassistant/components/qnap_qsw/translations/pl.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "Urz\u0105dzenie jest ju\u017c skonfigurowane", + "invalid_id": "Urz\u0105dzenie zwr\u00f3ci\u0142o nieprawid\u0142owy unikalny identyfikator" + }, + "error": { + "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", + "invalid_auth": "Niepoprawne uwierzytelnienie" + }, + "step": { + "user": { + "data": { + "password": "Has\u0142o", + "url": "URL", + "username": "Nazwa u\u017cytkownika" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/qnap_qsw/translations/pt-BR.json b/homeassistant/components/qnap_qsw/translations/pt-BR.json new file mode 100644 index 00000000000..b9829d78944 --- /dev/null +++ b/homeassistant/components/qnap_qsw/translations/pt-BR.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "Dispositivo j\u00e1 est\u00e1 configurado", + "invalid_id": "O dispositivo retornou um ID exclusivo inv\u00e1lido" + }, + "error": { + "cannot_connect": "Falha ao conectar", + "invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida" + }, + "step": { + "user": { + "data": { + "password": "Senha", + "url": "URL", + "username": "Usu\u00e1rio" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/qnap_qsw/translations/ru.json b/homeassistant/components/qnap_qsw/translations/ru.json new file mode 100644 index 00000000000..ae3869552d0 --- /dev/null +++ b/homeassistant/components/qnap_qsw/translations/ru.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "\u042d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 Home Assistant.", + "invalid_id": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0432\u0435\u0440\u043d\u0443\u043b\u043e \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 ID." + }, + "error": { + "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", + "invalid_auth": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438." + }, + "step": { + "user": { + "data": { + "password": "\u041f\u0430\u0440\u043e\u043b\u044c", + "url": "URL-\u0430\u0434\u0440\u0435\u0441", + "username": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/qnap_qsw/translations/zh-Hant.json b/homeassistant/components/qnap_qsw/translations/zh-Hant.json new file mode 100644 index 00000000000..f29c42d6eb6 --- /dev/null +++ b/homeassistant/components/qnap_qsw/translations/zh-Hant.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "\u88dd\u7f6e\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", + "invalid_id": "\u88dd\u7f6e\u56de\u8986\u4e86\u7121\u6548\u7684\u552f\u4e00 ID" + }, + "error": { + "cannot_connect": "\u9023\u7dda\u5931\u6557", + "invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548" + }, + "step": { + "user": { + "data": { + "password": "\u5bc6\u78bc", + "url": "\u7db2\u5740", + "username": "\u4f7f\u7528\u8005\u540d\u7a31" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/radio_browser/translations/cs.json b/homeassistant/components/radio_browser/translations/cs.json new file mode 100644 index 00000000000..19f5d1e1587 --- /dev/null +++ b/homeassistant/components/radio_browser/translations/cs.json @@ -0,0 +1,7 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Ji\u017e nastaveno. Je mo\u017en\u00e1 pouze jedin\u00e1 konfigurace." + } + } +} \ No newline at end of file diff --git a/homeassistant/components/radio_browser/translations/fr.json b/homeassistant/components/radio_browser/translations/fr.json index 807ba246694..de1e4f25261 100644 --- a/homeassistant/components/radio_browser/translations/fr.json +++ b/homeassistant/components/radio_browser/translations/fr.json @@ -2,6 +2,11 @@ "config": { "abort": { "single_instance_allowed": "D\u00e9j\u00e0 configur\u00e9. Une seule configuration possible." + }, + "step": { + "user": { + "description": "Voulez-vous ajouter le navigateur radio \u00e0 Home Assistant\u00a0?" + } } } } \ No newline at end of file diff --git a/homeassistant/components/radio_browser/translations/he.json b/homeassistant/components/radio_browser/translations/he.json index d0c3523da94..89c5e30a440 100644 --- a/homeassistant/components/radio_browser/translations/he.json +++ b/homeassistant/components/radio_browser/translations/he.json @@ -2,6 +2,11 @@ "config": { "abort": { "single_instance_allowed": "\u05ea\u05e6\u05d5\u05e8\u05ea\u05d5 \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4. \u05e8\u05e7 \u05ea\u05e6\u05d5\u05e8\u05d4 \u05d0\u05d7\u05ea \u05d0\u05e4\u05e9\u05e8\u05d9\u05ea." + }, + "step": { + "user": { + "description": "\u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05d3\u05e4\u05d3\u05e4\u05df \u05e8\u05d3\u05d9\u05d5 \u05d0\u05dc Home Assistant?" + } } } } \ No newline at end of file diff --git a/homeassistant/components/remote/translations/hu.json b/homeassistant/components/remote/translations/hu.json index 2291d4f8b94..52b24f79f08 100644 --- a/homeassistant/components/remote/translations/hu.json +++ b/homeassistant/components/remote/translations/hu.json @@ -10,6 +10,7 @@ "is_on": "{entity_name} be van kapcsolva" }, "trigger_type": { + "changed_states": "{entity_name} be- vagy kikapcsolt", "toggled": "{entity_name} \u00e1tkapcsolt", "turned_off": "{entity_name} ki lett kapcsolva", "turned_on": "{entity_name} be lett kapcsolva" diff --git a/homeassistant/components/roku/translations/hu.json b/homeassistant/components/roku/translations/hu.json index 256a8d45997..c28b0a712ea 100644 --- a/homeassistant/components/roku/translations/hu.json +++ b/homeassistant/components/roku/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" }, "error": { diff --git a/homeassistant/components/roku/translations/it.json b/homeassistant/components/roku/translations/it.json index 8c2d9d4e84a..9f42c49c74f 100644 --- a/homeassistant/components/roku/translations/it.json +++ b/homeassistant/components/roku/translations/it.json @@ -12,16 +12,16 @@ "step": { "discovery_confirm": { "data": { - "one": "Pi\u00f9", - "other": "Altri" + "one": "Vuoto", + "other": "Vuoti" }, "description": "Vuoi configurare {name}?", "title": "Roku" }, "ssdp_confirm": { "data": { - "one": "Pi\u00f9", - "other": "Altri" + "one": "Vuoto", + "other": "Vuoti" }, "description": "Vuoi impostare {name}?", "title": "Roku" diff --git a/homeassistant/components/roomba/translations/pl.json b/homeassistant/components/roomba/translations/pl.json index c56c00a98b0..d2d76bee5ff 100644 --- a/homeassistant/components/roomba/translations/pl.json +++ b/homeassistant/components/roomba/translations/pl.json @@ -16,7 +16,7 @@ "host": "Nazwa hosta lub adres IP" }, "description": "Wybierz Roomb\u0119 lub Braava", - "title": "Po\u0142\u0105cz si\u0119 automatycznie z urz\u0105dzeniem" + "title": "Automatyczne po\u0142\u0105czenie z urz\u0105dzeniem" }, "link": { "description": "Naci\u015bnij i przytrzymaj przycisk Home na {name} a\u017c urz\u0105dzenie wygeneruje d\u017awi\u0119k (oko\u0142o dwie sekundy), a nast\u0119pnie zatwierd\u017a w ci\u0105gu 30 sekund.", @@ -46,7 +46,7 @@ "password": "Has\u0142o" }, "description": "Wybierz Roomb\u0119 lub Braava", - "title": "Po\u0142\u0105cz si\u0119 automatycznie z urz\u0105dzeniem" + "title": "Automatyczne po\u0142\u0105czenie z urz\u0105dzeniem" } } }, diff --git a/homeassistant/components/roon/translations/ca.json b/homeassistant/components/roon/translations/ca.json index f05ac1a4acb..3f601ded490 100644 --- a/homeassistant/components/roon/translations/ca.json +++ b/homeassistant/components/roon/translations/ca.json @@ -8,6 +8,13 @@ "unknown": "Error inesperat" }, "step": { + "fallback": { + "data": { + "host": "Amfitri\u00f3", + "port": "Port" + }, + "description": "No s'ha pogut descobrir el servidor Roon, introdueix l'amfitri\u00f3 i el port." + }, "link": { "description": "Has d'autoritzar Home Assistant a Roon. Despr\u00e9s de fer clic a envia, ves a l'aplicaci\u00f3 Roon Core, obre la Configuraci\u00f3 i activa Home Assistant a la pestanya d'Extensions.", "title": "Autoritza Home Assistant a Roon" diff --git a/homeassistant/components/roon/translations/de.json b/homeassistant/components/roon/translations/de.json index 4eadf9c363a..e41fe77c3cd 100644 --- a/homeassistant/components/roon/translations/de.json +++ b/homeassistant/components/roon/translations/de.json @@ -8,6 +8,13 @@ "unknown": "Unerwarteter Fehler" }, "step": { + "fallback": { + "data": { + "host": "Host", + "port": "Port" + }, + "description": "Der Roon-Server konnte nicht gefunden werden, bitte gib deinen Hostnamen und Port ein." + }, "link": { "description": "Du musst den Home Assistant in Roon autorisieren. Nachdem du auf \"Submit\" geklickt hast, gehe zur Roon Core-Anwendung, \u00f6ffne die Einstellungen und aktiviere HomeAssistant auf der Registerkarte \"Extensions\".", "title": "HomeAssistant in Roon autorisieren" diff --git a/homeassistant/components/roon/translations/el.json b/homeassistant/components/roon/translations/el.json index e88cbed685c..63cda0821b1 100644 --- a/homeassistant/components/roon/translations/el.json +++ b/homeassistant/components/roon/translations/el.json @@ -8,6 +8,13 @@ "unknown": "\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" }, "step": { + "fallback": { + "data": { + "host": "\u039a\u03b5\u03bd\u03c4\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae\u03c2", + "port": "\u0398\u03cd\u03c1\u03b1" + }, + "description": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03cc\u03c2 \u03bf \u03b5\u03bd\u03c4\u03bf\u03c0\u03b9\u03c3\u03bc\u03cc\u03c2 \u03c4\u03bf\u03c5 \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae Roon, \u03b5\u03b9\u03c3\u03b1\u03b3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03ba\u03b5\u03bd\u03c4\u03c1\u03b9\u03ba\u03bf\u03cd \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae \u03ba\u03b1\u03b9 \u03c4\u03b7 \u03b8\u03cd\u03c1\u03b1 \u03c3\u03b1\u03c2." + }, "link": { "description": "\u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03bf\u03c4\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf Home Assistant \u03c3\u03c4\u03bf Roon. \u0391\u03c6\u03bf\u03cd \u03ba\u03ac\u03bd\u03b5\u03c4\u03b5 \u03ba\u03bb\u03b9\u03ba \u03c3\u03c4\u03b7\u03bd \u03c5\u03c0\u03bf\u03b2\u03bf\u03bb\u03ae, \u03bc\u03b5\u03c4\u03b1\u03b2\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae Roon Core, \u03b1\u03bd\u03bf\u03af\u03be\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03ba\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf HomeAssistant \u03c3\u03c4\u03b7\u03bd \u03ba\u03b1\u03c1\u03c4\u03ad\u03bb\u03b1 \u0395\u03c0\u03b5\u03ba\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2.", "title": "\u0395\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03bf\u03c4\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf HomeAssistant \u03c3\u03c4\u03bf Roon" diff --git a/homeassistant/components/roon/translations/en.json b/homeassistant/components/roon/translations/en.json index d1f86fbce5f..b0affedc026 100644 --- a/homeassistant/components/roon/translations/en.json +++ b/homeassistant/components/roon/translations/en.json @@ -8,6 +8,13 @@ "unknown": "Unexpected error" }, "step": { + "fallback": { + "data": { + "host": "Host", + "port": "Port" + }, + "description": "Could not discover Roon server, please enter your Hostname and Port." + }, "link": { "description": "You must authorize Home Assistant in Roon. After you click submit, go to the Roon Core application, open Settings and enable HomeAssistant on the Extensions tab.", "title": "Authorize HomeAssistant in Roon" diff --git a/homeassistant/components/roon/translations/et.json b/homeassistant/components/roon/translations/et.json index bbdf2b5edc5..d091f8e4064 100644 --- a/homeassistant/components/roon/translations/et.json +++ b/homeassistant/components/roon/translations/et.json @@ -8,6 +8,13 @@ "unknown": "Tundmatu viga" }, "step": { + "fallback": { + "data": { + "host": "Host", + "port": "Port" + }, + "description": "Rooni serverit ei leitud, sisesta hostinimi ja port." + }, "link": { "description": "Pead Roonis koduabilise volitama. Kui oled kl\u00f5psanud nuppu Esita, mine rakendusse Roon Core, ava Seaded ja luba vahekaardil Laiendused Home Assistant.", "title": "Volita HomeAssistant Roonis" diff --git a/homeassistant/components/roon/translations/fr.json b/homeassistant/components/roon/translations/fr.json index b0fb3e6784b..7af98de188a 100644 --- a/homeassistant/components/roon/translations/fr.json +++ b/homeassistant/components/roon/translations/fr.json @@ -8,6 +8,13 @@ "unknown": "Erreur inattendue" }, "step": { + "fallback": { + "data": { + "host": "H\u00f4te", + "port": "Port" + }, + "description": "Impossible de trouver le serveur Roon, veuillez saisir le nom de l'h\u00f4te et le port." + }, "link": { "description": "Vous devez autoriser Home Assistant dans Roon. Apr\u00e8s avoir cliqu\u00e9 sur soumettre, acc\u00e9dez \u00e0 l'application Roon Core, ouvrez Param\u00e8tres et activez Home Assistant dans l'onglet Extensions.", "title": "Autoriser Home Assistant dans Roon" diff --git a/homeassistant/components/roon/translations/he.json b/homeassistant/components/roon/translations/he.json index 9d3230d257e..05781910772 100644 --- a/homeassistant/components/roon/translations/he.json +++ b/homeassistant/components/roon/translations/he.json @@ -8,6 +8,12 @@ "unknown": "\u05e9\u05d2\u05d9\u05d0\u05d4 \u05d1\u05dc\u05ea\u05d9 \u05e6\u05e4\u05d5\u05d9\u05d4" }, "step": { + "fallback": { + "data": { + "host": "\u05de\u05d0\u05e8\u05d7", + "port": "\u05e4\u05ea\u05d7\u05d4" + } + }, "link": { "description": "\u05e2\u05dc\u05d9\u05da \u05dc\u05d0\u05e9\u05e8 \u05dc-Home Assistant \u05d1-Roon. \u05dc\u05d0\u05d7\u05e8 \u05e9\u05ea\u05dc\u05d7\u05e5 \u05e2\u05dc \u05e9\u05dc\u05d7, \u05e2\u05d1\u05d5\u05e8 \u05dc\u05d9\u05d9\u05e9\u05d5\u05dd Roon Core, \u05e4\u05ea\u05d7 \u05d0\u05ea \u05d4\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05d5\u05d4\u05e4\u05e2\u05dc \u05d0\u05ea HomeAssistant \u05d1\u05db\u05e8\u05d8\u05d9\u05e1\u05d9\u05d9\u05d4 \u05d4\u05e8\u05d7\u05d1\u05d5\u05ea." }, diff --git a/homeassistant/components/roon/translations/hu.json b/homeassistant/components/roon/translations/hu.json index 7d2b63f0f4b..3a9bcf3f522 100644 --- a/homeassistant/components/roon/translations/hu.json +++ b/homeassistant/components/roon/translations/hu.json @@ -8,15 +8,24 @@ "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" }, "step": { + "fallback": { + "data": { + "host": "C\u00edm", + "port": "Port" + }, + "description": "Nem siker\u00fclt felfedezni a Roon-kiszolg\u00e1l\u00f3t. K\u00e9rj\u00fck, adja meg g\u00e9p c\u00edm\u00e9t \u00e9s portj\u00e1t." + }, "link": { - "description": "Enged\u00e9lyeznie kell az Home Assistantot a Roonban. Miut\u00e1n r\u00e1kattintott a K\u00fcld\u00e9s gombra, nyissa meg a Roon Core alkalmaz\u00e1st, nyissa meg a Be\u00e1ll\u00edt\u00e1sokat, \u00e9s enged\u00e9lyezze a Home Assistant funkci\u00f3t a B\u0151v\u00edtm\u00e9nyek lapon.", + "description": "Enged\u00e9lyeznie kell az Home Assistantot a Roonban. Miut\u00e1n r\u00e1kattintott a Mehet gombra, nyissa meg a Roon Core alkalmaz\u00e1st, nyissa meg a Be\u00e1ll\u00edt\u00e1sokat, \u00e9s enged\u00e9lyezze a Home Assistant funkci\u00f3t a B\u0151v\u00edtm\u00e9nyek lapon.", "title": "Enged\u00e9lyezze a Home Assistant alkalmaz\u00e1st Roon-ban" }, "user": { "data": { "host": "C\u00edm" }, - "description": "A Roon szerver nem tal\u00e1lhat\u00f3, adja meg a hosztnev\u00e9t vagy c\u00edm\u00e9t" + "description": "A Roon szerver nem tal\u00e1lhat\u00f3, adja meg a hosztnev\u00e9t vagy c\u00edm\u00e9t", + "one": "\u00dcres", + "other": "\u00dcres" } } } diff --git a/homeassistant/components/roon/translations/id.json b/homeassistant/components/roon/translations/id.json index 96b26640320..85c1519e7be 100644 --- a/homeassistant/components/roon/translations/id.json +++ b/homeassistant/components/roon/translations/id.json @@ -8,6 +8,13 @@ "unknown": "Kesalahan yang tidak diharapkan" }, "step": { + "fallback": { + "data": { + "host": "Host", + "port": "Port" + }, + "description": "Tidak dapat menemukan server Roon, masukkan Nama Host dan Port Anda." + }, "link": { "description": "Anda harus mengotorisasi Home Assistant di Roon. Setelah Anda mengeklik kirim, buka aplikasi Roon Core, buka Pengaturan dan aktifkan HomeAssistant pada tab Ekstensi.", "title": "Otorisasi HomeAssistant di Roon" diff --git a/homeassistant/components/roon/translations/it.json b/homeassistant/components/roon/translations/it.json index ac5922e1e56..3236ebd0bb2 100644 --- a/homeassistant/components/roon/translations/it.json +++ b/homeassistant/components/roon/translations/it.json @@ -8,6 +8,13 @@ "unknown": "Errore imprevisto" }, "step": { + "fallback": { + "data": { + "host": "Host", + "port": "Porta" + }, + "description": "Impossibile scoprire il server Roon, inserisci il tuo nome host e la porta." + }, "link": { "description": "Devi autorizzare l'Assistente Home in Roon. Dopo aver fatto clic su Invia, passa all'applicazione Roon Core, apri Impostazioni e abilita HomeAssistant nella scheda Estensioni.", "title": "Autorizza HomeAssistant in Roon" @@ -16,7 +23,9 @@ "data": { "host": "Host" }, - "description": "Impossibile individuare il server Roon, inserire l'hostname o l'IP." + "description": "Impossibile individuare il server Roon, inserire l'hostname o l'IP.", + "one": "Vuoto", + "other": "Vuoti" } } } diff --git a/homeassistant/components/roon/translations/ja.json b/homeassistant/components/roon/translations/ja.json index dba8ccc9237..400d982d27c 100644 --- a/homeassistant/components/roon/translations/ja.json +++ b/homeassistant/components/roon/translations/ja.json @@ -8,6 +8,13 @@ "unknown": "\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc" }, "step": { + "fallback": { + "data": { + "host": "\u30db\u30b9\u30c8", + "port": "\u30dd\u30fc\u30c8" + }, + "description": "Roon\u30b5\u30fc\u30d0\u30fc\u3092\u691c\u51fa\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30db\u30b9\u30c8\u540d\u3068\u30dd\u30fc\u30c8\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002" + }, "link": { "description": "Roon\u3067Home Assistant\u3092\u8a8d\u8a3c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u9001\u4fe1(submit) \u3092\u30af\u30ea\u30c3\u30af\u3057\u305f\u5f8c\u3001Roon Core\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u3001\u8a2d\u5b9a(Settings )\u3092\u958b\u304d\u3001\u6a5f\u80fd\u62e1\u5f35\u30bf\u30d6(extensions tab)\u3067Home Assistant\u3092\u6709\u52b9(enable )\u306b\u3057\u307e\u3059\u3002", "title": "Roon\u3067HomeAssistant\u3092\u8a8d\u8a3c\u3059\u308b" diff --git a/homeassistant/components/roon/translations/nl.json b/homeassistant/components/roon/translations/nl.json index df8fa80b4dd..9aafadc918b 100644 --- a/homeassistant/components/roon/translations/nl.json +++ b/homeassistant/components/roon/translations/nl.json @@ -8,6 +8,13 @@ "unknown": "Onverwachte fout" }, "step": { + "fallback": { + "data": { + "host": "Host", + "port": "Poort" + }, + "description": "Kon de Roon server niet vinden, voer uw Hostnaam en Poort in." + }, "link": { "description": "U moet Home Assistant autoriseren in Roon. Nadat je op verzenden hebt geklikt, ga je naar de Roon Core-applicatie, open je Instellingen en schakel je Home Assistant in op het tabblad Extensies.", "title": "Autoriseer Home Assistant in Roon" diff --git a/homeassistant/components/roon/translations/no.json b/homeassistant/components/roon/translations/no.json index 2558c2c27c7..11eb60a04ce 100644 --- a/homeassistant/components/roon/translations/no.json +++ b/homeassistant/components/roon/translations/no.json @@ -8,6 +8,13 @@ "unknown": "Uventet feil" }, "step": { + "fallback": { + "data": { + "host": "Vert", + "port": "Port" + }, + "description": "Kunne ikke finne Roon-serveren, skriv inn vertsnavnet og porten." + }, "link": { "description": "Du m\u00e5 godkjenne Home Assistant i Roon. N\u00e5r du klikker send inn, g\u00e5r du til Roon Core-programmet, \u00e5pner innstillingene og aktiverer Home Assistant p\u00e5 utvidelser-fanen.", "title": "Autoriser Home Assistant i Roon" diff --git a/homeassistant/components/roon/translations/pl.json b/homeassistant/components/roon/translations/pl.json index fab5fb9657e..b45a7fcb562 100644 --- a/homeassistant/components/roon/translations/pl.json +++ b/homeassistant/components/roon/translations/pl.json @@ -8,6 +8,13 @@ "unknown": "Nieoczekiwany b\u0142\u0105d" }, "step": { + "fallback": { + "data": { + "host": "Nazwa hosta lub adres IP", + "port": "Port" + }, + "description": "Nie mo\u017cna wykry\u0107 serwera Roon, wprowad\u017a nazw\u0119 hosta i port." + }, "link": { "description": "Musisz autoryzowa\u0107 Home Assistant w Roon. Po klikni\u0119ciu przycisku \"Zatwierd\u017a\", przejd\u017a do aplikacji Roon Core, otw\u00f3rz \"Ustawienia\" i w\u0142\u0105cz Home Assistant w karcie \"Rozszerzenia\" (Extensions).", "title": "Autoryzuj Home Assistant w Roon" diff --git a/homeassistant/components/roon/translations/pt-BR.json b/homeassistant/components/roon/translations/pt-BR.json index a96222b15f3..85628df4a7c 100644 --- a/homeassistant/components/roon/translations/pt-BR.json +++ b/homeassistant/components/roon/translations/pt-BR.json @@ -8,6 +8,13 @@ "unknown": "Erro inesperado" }, "step": { + "fallback": { + "data": { + "host": "Nome do host", + "port": "Porta" + }, + "description": "N\u00e3o foi poss\u00edvel descobrir o servidor Roon, digite seu nome de host e porta." + }, "link": { "description": "Voc\u00ea deve autorizar o Home Assistant no Roon. Depois de clicar em enviar, v\u00e1 para o aplicativo Roon principal, abra Configura\u00e7\u00f5es e habilite o HomeAssistant na aba Extens\u00f5es.", "title": "Autorizar HomeAssistant no Roon" diff --git a/homeassistant/components/roon/translations/ru.json b/homeassistant/components/roon/translations/ru.json index 1bcb07c7695..cc89dc2d2dd 100644 --- a/homeassistant/components/roon/translations/ru.json +++ b/homeassistant/components/roon/translations/ru.json @@ -8,6 +8,13 @@ "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." }, "step": { + "fallback": { + "data": { + "host": "\u0425\u043e\u0441\u0442", + "port": "\u041f\u043e\u0440\u0442" + }, + "description": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 Roon, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u043c\u044f \u0445\u043e\u0441\u0442\u0430 \u0438 \u043f\u043e\u0440\u0442." + }, "link": { "description": "\u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043a\u043d\u043e\u043f\u043a\u0438 \u00ab\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c\u00bb \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Roon Core, \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u00ab\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u00bb \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 HomeAssistant \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u00ab\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u00bb.", "title": "Roon" diff --git a/homeassistant/components/roon/translations/tr.json b/homeassistant/components/roon/translations/tr.json index 75fedf6383e..c18df90b9b8 100644 --- a/homeassistant/components/roon/translations/tr.json +++ b/homeassistant/components/roon/translations/tr.json @@ -8,6 +8,13 @@ "unknown": "Beklenmeyen hata" }, "step": { + "fallback": { + "data": { + "host": "Sunucu", + "port": "Port" + }, + "description": "Roon sunucusu bulunamad\u0131, l\u00fctfen Ana Bilgisayar Ad\u0131n\u0131z\u0131 ve Ba\u011flant\u0131 Noktan\u0131z\u0131 girin." + }, "link": { "description": "Roon'da HomeAssistant\u0131 yetkilendirmelisiniz. G\u00f6nder'e t\u0131klad\u0131ktan sonra, Roon Core uygulamas\u0131na gidin, Ayarlar'\u0131 a\u00e7\u0131n ve Uzant\u0131lar sekmesinde HomeAssistant'\u0131 etkinle\u015ftirin.", "title": "Roon'da HomeAssistant'\u0131 Yetkilendirme" diff --git a/homeassistant/components/roon/translations/zh-Hant.json b/homeassistant/components/roon/translations/zh-Hant.json index f8f52d11b1c..f887b2d9847 100644 --- a/homeassistant/components/roon/translations/zh-Hant.json +++ b/homeassistant/components/roon/translations/zh-Hant.json @@ -8,6 +8,13 @@ "unknown": "\u672a\u9810\u671f\u932f\u8aa4" }, "step": { + "fallback": { + "data": { + "host": "\u4e3b\u6a5f\u7aef", + "port": "\u901a\u8a0a\u57e0" + }, + "description": "\u627e\u4e0d\u5230 Roon \u4f3a\u670d\u5668\uff0c\u8acb\u8f38\u5165\u4e3b\u6a5f\u540d\u7a31\u53ca\u901a\u8a0a\u57e0\u3002" + }, "link": { "description": "\u5fc5\u9808\u65bc Roon \u4e2d\u8a8d\u8b49 Home Assistant\u3002\u9ede\u9078\u50b3\u9001\u5f8c\u3001\u958b\u555f Roon Core \u61c9\u7528\u7a0b\u5f0f\u3001\u6253\u958b\u8a2d\u5b9a\u4e26\u65bc\u64f4\u5145\uff08Extensions\uff09\u4e2d\u555f\u7528 HomeAssistant\u3002", "title": "\u65bc Roon \u4e2d\u8a8d\u8b49 HomeAssistant" diff --git a/homeassistant/components/rtsp_to_webrtc/translations/hu.json b/homeassistant/components/rtsp_to_webrtc/translations/hu.json index 75c471a6710..5da10dd88e4 100644 --- a/homeassistant/components/rtsp_to_webrtc/translations/hu.json +++ b/homeassistant/components/rtsp_to_webrtc/translations/hu.json @@ -2,7 +2,8 @@ "config": { "abort": { "server_failure": "Az RTSPtoWebRTC szerver hib\u00e1t jelzett vissza. Tov\u00e1bbi inform\u00e1ci\u00f3k\u00e9rt ellen\u0151rizze a napl\u00f3kat.", - "server_unreachable": "Nem lehet kommunik\u00e1lni az RTSPtoWebRTC szerverrel. Tov\u00e1bbi inform\u00e1ci\u00f3k\u00e9rt ellen\u0151rizze a napl\u00f3kat." + "server_unreachable": "Nem lehet kommunik\u00e1lni az RTSPtoWebRTC szerverrel. Tov\u00e1bbi inform\u00e1ci\u00f3k\u00e9rt ellen\u0151rizze a napl\u00f3kat.", + "single_instance_allowed": "M\u00e1r konfigur\u00e1lva van. Csak egy konfigur\u00e1ci\u00f3 lehets\u00e9ges." }, "error": { "invalid_url": "\u00c9rv\u00e9nyes RTSPtoWebRTC szerver URL-nek kell lennie, pl. https://example.com", diff --git a/homeassistant/components/sabnzbd/translations/de.json b/homeassistant/components/sabnzbd/translations/de.json new file mode 100644 index 00000000000..9f128f2878f --- /dev/null +++ b/homeassistant/components/sabnzbd/translations/de.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "cannot_connect": "Verbindung fehlgeschlagen", + "invalid_api_key": "Ung\u00fcltiger API-Schl\u00fcssel" + }, + "step": { + "user": { + "data": { + "api_key": "API-Schl\u00fcssel", + "name": "Name", + "path": "Pfad", + "url": "URL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sabnzbd/translations/el.json b/homeassistant/components/sabnzbd/translations/el.json new file mode 100644 index 00000000000..f3d461e3dee --- /dev/null +++ b/homeassistant/components/sabnzbd/translations/el.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", + "invalid_api_key": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03ba\u03bb\u03b5\u03b9\u03b4\u03af API" + }, + "step": { + "user": { + "data": { + "api_key": "\u039a\u03bb\u03b5\u03b9\u03b4\u03af API", + "name": "\u038c\u03bd\u03bf\u03bc\u03b1", + "path": "\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae", + "url": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sabnzbd/translations/en.json b/homeassistant/components/sabnzbd/translations/en.json index 2336ba4e198..4e857c42b64 100644 --- a/homeassistant/components/sabnzbd/translations/en.json +++ b/homeassistant/components/sabnzbd/translations/en.json @@ -9,11 +9,9 @@ "data": { "api_key": "API Key", "name": "Name", - "url": "URL", - "path": "Path" - }, - "description": "If you need help with the configuration have a look here: https://www.home-assistant.io/integrations/sabnzbd/", - "title": "Sabnzbd" + "path": "Path", + "url": "URL" + } } } } diff --git a/homeassistant/components/sabnzbd/translations/et.json b/homeassistant/components/sabnzbd/translations/et.json new file mode 100644 index 00000000000..b940ab99569 --- /dev/null +++ b/homeassistant/components/sabnzbd/translations/et.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "cannot_connect": "\u00dchendamine nurjus", + "invalid_api_key": "Kehtetu API v\u00f5ti" + }, + "step": { + "user": { + "data": { + "api_key": "API v\u00f5ti", + "name": "Nimi", + "path": "Rada", + "url": "URL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sabnzbd/translations/fr.json b/homeassistant/components/sabnzbd/translations/fr.json new file mode 100644 index 00000000000..9809ccf8a0b --- /dev/null +++ b/homeassistant/components/sabnzbd/translations/fr.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "cannot_connect": "\u00c9chec de connexion", + "invalid_api_key": "Cl\u00e9 d'API non valide" + }, + "step": { + "user": { + "data": { + "api_key": "Cl\u00e9 d'API", + "name": "Nom", + "path": "Chemin d'acc\u00e8s", + "url": "URL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sabnzbd/translations/hu.json b/homeassistant/components/sabnzbd/translations/hu.json new file mode 100644 index 00000000000..0136c11fc88 --- /dev/null +++ b/homeassistant/components/sabnzbd/translations/hu.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "cannot_connect": "Sikertelen csatlakoz\u00e1s", + "invalid_api_key": "\u00c9rv\u00e9nytelen API kulcs" + }, + "step": { + "user": { + "data": { + "api_key": "API kulcs", + "name": "Elnevez\u00e9s", + "path": "\u00datvonal", + "url": "URL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sabnzbd/translations/id.json b/homeassistant/components/sabnzbd/translations/id.json new file mode 100644 index 00000000000..caa7e73815e --- /dev/null +++ b/homeassistant/components/sabnzbd/translations/id.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "cannot_connect": "Gagal terhubung", + "invalid_api_key": "Kunci API tidak valid" + }, + "step": { + "user": { + "data": { + "api_key": "Kunci API", + "name": "Nama", + "path": "Jalur", + "url": "URL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sabnzbd/translations/it.json b/homeassistant/components/sabnzbd/translations/it.json new file mode 100644 index 00000000000..48f2dea100c --- /dev/null +++ b/homeassistant/components/sabnzbd/translations/it.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "cannot_connect": "Impossibile connettersi", + "invalid_api_key": "Chiave API non valida" + }, + "step": { + "user": { + "data": { + "api_key": "Chiave API", + "name": "Nome", + "path": "Percorso", + "url": "URL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sabnzbd/translations/nl.json b/homeassistant/components/sabnzbd/translations/nl.json new file mode 100644 index 00000000000..c737cd0d07e --- /dev/null +++ b/homeassistant/components/sabnzbd/translations/nl.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "cannot_connect": "Kan geen verbinding maken", + "invalid_api_key": "Ongeldige API-sleutel" + }, + "step": { + "user": { + "data": { + "api_key": "API-sleutel", + "name": "Naam", + "path": "Pad", + "url": "URL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sabnzbd/translations/no.json b/homeassistant/components/sabnzbd/translations/no.json new file mode 100644 index 00000000000..4da8a925a29 --- /dev/null +++ b/homeassistant/components/sabnzbd/translations/no.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "cannot_connect": "Tilkobling mislyktes", + "invalid_api_key": "Ugyldig API-n\u00f8kkel" + }, + "step": { + "user": { + "data": { + "api_key": "API-n\u00f8kkel", + "name": "Navn", + "path": "Sti", + "url": "URL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sabnzbd/translations/pl.json b/homeassistant/components/sabnzbd/translations/pl.json new file mode 100644 index 00000000000..b083df2b8dc --- /dev/null +++ b/homeassistant/components/sabnzbd/translations/pl.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", + "invalid_api_key": "Nieprawid\u0142owy klucz API" + }, + "step": { + "user": { + "data": { + "api_key": "Klucz API", + "name": "Nazwa", + "path": "\u015acie\u017cka", + "url": "URL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sabnzbd/translations/pt-BR.json b/homeassistant/components/sabnzbd/translations/pt-BR.json new file mode 100644 index 00000000000..b9015b40b14 --- /dev/null +++ b/homeassistant/components/sabnzbd/translations/pt-BR.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "cannot_connect": "Falha ao conectar", + "invalid_api_key": "Chave de API inv\u00e1lida" + }, + "step": { + "user": { + "data": { + "api_key": "Chave da API", + "name": "Nome", + "path": "Caminho", + "url": "URL" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sabnzbd/translations/zh-Hant.json b/homeassistant/components/sabnzbd/translations/zh-Hant.json new file mode 100644 index 00000000000..018952ba66c --- /dev/null +++ b/homeassistant/components/sabnzbd/translations/zh-Hant.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "cannot_connect": "\u9023\u7dda\u5931\u6557", + "invalid_api_key": "API \u91d1\u9470\u7121\u6548" + }, + "step": { + "user": { + "data": { + "api_key": "API \u91d1\u9470", + "name": "\u540d\u7a31", + "path": "\u8def\u5f91", + "url": "\u7db2\u5740" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/samsungtv/translations/bg.json b/homeassistant/components/samsungtv/translations/bg.json index 332b6b62236..2246b4ad954 100644 --- a/homeassistant/components/samsungtv/translations/bg.json +++ b/homeassistant/components/samsungtv/translations/bg.json @@ -6,11 +6,17 @@ "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0442\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0432\u0430\u043d\u0435 \u0431\u0435\u0448\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e", "unknown": "\u041d\u0435\u043e\u0447\u0430\u043a\u0432\u0430\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430" }, + "error": { + "invalid_pin": "\u041f\u0418\u041d \u043a\u043e\u0434\u044a\u0442 \u0435 \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d, \u043c\u043e\u043b\u044f, \u043e\u043f\u0438\u0442\u0430\u0439\u0442\u0435 \u043e\u0442\u043d\u043e\u0432\u043e." + }, "flow_title": "{device}", "step": { "confirm": { "title": "Samsung TV" }, + "encrypted_pairing": { + "description": "\u041c\u043e\u043b\u044f, \u0432\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u041f\u0418\u041d \u043a\u043e\u0434\u0430, \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u043d\u0430 {device}." + }, "user": { "data": { "host": "\u0425\u043e\u0441\u0442", diff --git a/homeassistant/components/samsungtv/translations/ca.json b/homeassistant/components/samsungtv/translations/ca.json index e701bdb1d92..95738ae65d9 100644 --- a/homeassistant/components/samsungtv/translations/ca.json +++ b/homeassistant/components/samsungtv/translations/ca.json @@ -12,7 +12,8 @@ "unknown": "Error inesperat" }, "error": { - "auth_missing": "Home Assistant no est\u00e0 autenticat per connectar-se amb aquest televisor Samsung. V\u00e9s a la configuraci\u00f3 de dispositius externs del televisor per autoritzar Home Assistant." + "auth_missing": "Home Assistant no est\u00e0 autenticat per connectar-se amb aquest televisor Samsung. V\u00e9s a la configuraci\u00f3 de dispositius externs del televisor per autoritzar Home Assistant.", + "invalid_pin": "El PIN \u00e9s inv\u00e0lid; torna-ho a provar." }, "flow_title": "{device}", "step": { @@ -20,8 +21,17 @@ "description": "Vols configurar {device}? Si mai abans has connectat Home Assistant hauries de veure una finestra emergent a la pantalla del televisor demanant autenticaci\u00f3.", "title": "Televisor Samsung" }, + "encrypted_pairing": { + "description": "Introdueix el PIN que es mostra a {device}." + }, + "pairing": { + "description": "Vols configurar {device}? Si mai abans has connectat Home Assistant hauries de veure una finestra emergent a la pantalla del televisor demanant autenticaci\u00f3." + }, "reauth_confirm": { - "description": "Despr\u00e9s d'enviar, tens 30 segons per acceptar la finestra emergent de {device} que sol\u00b7licita autoritzaci\u00f3." + "description": "Despr\u00e9s d'enviar, tens 30 segons per acceptar o introduir el PIN a la finestra emergent de {device} que sol\u00b7licita autoritzaci\u00f3." + }, + "reauth_confirm_encrypted": { + "description": "Introdueix el PIN que es mostra a {device}." }, "user": { "data": { diff --git a/homeassistant/components/samsungtv/translations/cs.json b/homeassistant/components/samsungtv/translations/cs.json index d45c9247b4e..4c2241d4caa 100644 --- a/homeassistant/components/samsungtv/translations/cs.json +++ b/homeassistant/components/samsungtv/translations/cs.json @@ -19,6 +19,15 @@ "description": "Chcete nastavit {device}? Pokud jste Home Assistant doposud nikdy nep\u0159ipojili, m\u011bla by se v\u00e1m na televizi zobrazit \u017e\u00e1dost o povolen\u00ed.", "title": "Samsung TV" }, + "encrypted_pairing": { + "description": "Zadejte pros\u00edm PIN zobrazen\u00fd na {device}." + }, + "pairing": { + "description": "Chcete nastavit {device}? Pokud jste Home Assistant doposud nikdy nep\u0159ipojili, m\u011bla by se v\u00e1m na televizi zobrazit \u017e\u00e1dost o povolen\u00ed." + }, + "reauth_confirm_encrypted": { + "description": "Zadejte pros\u00edm PIN zobrazen\u00fd na {device}." + }, "user": { "data": { "host": "Hostitel", diff --git a/homeassistant/components/samsungtv/translations/de.json b/homeassistant/components/samsungtv/translations/de.json index ec5b791626a..bfacbcd4b3c 100644 --- a/homeassistant/components/samsungtv/translations/de.json +++ b/homeassistant/components/samsungtv/translations/de.json @@ -12,7 +12,8 @@ "unknown": "Unerwarteter Fehler" }, "error": { - "auth_missing": "Home Assistant ist nicht berechtigt, eine Verbindung zu diesem Samsung TV herzustellen. \u00dcberpr\u00fcfe den Ger\u00e4teverbindungsmanager in den Einstellungen deines Fernsehger\u00e4ts, um Home Assistant zu autorisieren." + "auth_missing": "Home Assistant ist nicht berechtigt, eine Verbindung zu diesem Samsung TV herzustellen. \u00dcberpr\u00fcfe den Ger\u00e4teverbindungsmanager in den Einstellungen deines Fernsehger\u00e4ts, um Home Assistant zu autorisieren.", + "invalid_pin": "PIN ist ung\u00fcltig, bitte versuche es erneut." }, "flow_title": "{device}", "step": { @@ -20,8 +21,17 @@ "description": "M\u00f6chtest du Samsung TV {device} einrichten? Wenn du noch nie eine Verbindung zum Home Assistant hergestellt hast, solltest du eine Meldung auf deinem Fernseher sehen, die nach einer Autorisierung fragt. Manuelle Konfigurationen f\u00fcr dieses Fernsehger\u00e4t werden \u00fcberschrieben.", "title": "Samsung TV" }, + "encrypted_pairing": { + "description": "Bitte gib die PIN ein, die auf {device} angezeigt wird." + }, + "pairing": { + "description": "M\u00f6chtest du Samsung TV {device} einrichten? Wenn du noch nie eine Verbindung zum Home Assistant hergestellt hast, solltest du eine Meldung auf deinem Fernseher sehen, die nach einer Autorisierung fragt. Manuelle Konfigurationen f\u00fcr dieses Fernsehger\u00e4t werden \u00fcberschrieben." + }, "reauth_confirm": { - "description": "Akzeptiere nach dem Absenden die Meldung auf {device}, das eine Autorisierung innerhalb von 30 Sekunden anfordert." + "description": "Akzeptiere nach dem Absenden das Popup-Fenster auf {device}, das dich auffordert, sich innerhalb von 30 Sekunden zu autorisieren, oder gib die PIN ein." + }, + "reauth_confirm_encrypted": { + "description": "Bitte gib die PIN ein, die auf {device} angezeigt wird." }, "user": { "data": { diff --git a/homeassistant/components/samsungtv/translations/el.json b/homeassistant/components/samsungtv/translations/el.json index aa2ec61978b..0e6c4df03bc 100644 --- a/homeassistant/components/samsungtv/translations/el.json +++ b/homeassistant/components/samsungtv/translations/el.json @@ -12,17 +12,27 @@ "unknown": "\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" }, "error": { - "auth_missing": "\u03a4\u03bf Home Assistant \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03bf\u03c4\u03b7\u03bc\u03ad\u03bd\u03bf \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ae \u03c4\u03b7\u03bd \u03c4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03b7 Samsung. \u0395\u03bb\u03ad\u03b3\u03be\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03c4\u03b7\u03c2 \u0394\u03b9\u03b1\u03c7\u03b5\u03af\u03c1\u03b9\u03c3\u03b7\u03c2 \u03b5\u03be\u03c9\u03c4\u03b5\u03c1\u03b9\u03ba\u03ce\u03bd \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ce\u03bd \u03c4\u03b7\u03c2 \u03c4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03ae\u03c2 \u03c3\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03bf\u03c4\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf Home Assistant." + "auth_missing": "\u03a4\u03bf Home Assistant \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03bf\u03c4\u03b7\u03bc\u03ad\u03bd\u03bf \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ae \u03c4\u03b7\u03bd \u03c4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03b7 Samsung. \u0395\u03bb\u03ad\u03b3\u03be\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03c4\u03b7\u03c2 \u0394\u03b9\u03b1\u03c7\u03b5\u03af\u03c1\u03b9\u03c3\u03b7\u03c2 \u03b5\u03be\u03c9\u03c4\u03b5\u03c1\u03b9\u03ba\u03ce\u03bd \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ce\u03bd \u03c4\u03b7\u03c2 \u03c4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03ae\u03c2 \u03c3\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03bf\u03c4\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf Home Assistant.", + "invalid_pin": "\u03a4\u03bf PIN \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf, \u03b4\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac." }, "flow_title": "{device}", "step": { "confirm": { - "description": "\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7 {device}; \u0395\u03ac\u03bd \u03b4\u03b5\u03bd \u03ad\u03c7\u03b5\u03c4\u03b5 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03b5\u03b9 \u03c0\u03bf\u03c4\u03ad \u03c4\u03bf Home Assistant \u03c0\u03c1\u03b9\u03bd, \u03b8\u03b1 \u03b4\u03b5\u03af\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03b1\u03bd\u03b1\u03b4\u03c5\u03cc\u03bc\u03b5\u03bd\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf \u03c3\u03c4\u03b7\u03bd \u03c4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03ae \u03c3\u03b1\u03c2 \u03c0\u03bf\u03c5 \u03b6\u03b7\u03c4\u03ac \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03cc\u03c4\u03b7\u03c3\u03b7.", + "description": "\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf {device}; \u0395\u03ac\u03bd \u03b4\u03b5\u03bd \u03ad\u03c7\u03b5\u03c4\u03b5 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03b5\u03b9 \u03c0\u03bf\u03c4\u03ad \u03c4\u03bf Home Assistant \u03c0\u03c1\u03b9\u03bd, \u03b8\u03b1 \u03b4\u03b5\u03af\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03b1\u03bd\u03b1\u03b4\u03c5\u03cc\u03bc\u03b5\u03bd\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf \u03c3\u03c4\u03b7\u03bd \u03c4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03ae \u03c3\u03b1\u03c2 \u03c0\u03bf\u03c5 \u03b6\u03b7\u03c4\u03ac \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03cc\u03c4\u03b7\u03c3\u03b7.", "title": "Samsung TV" }, + "encrypted_pairing": { + "description": "\u0395\u03b9\u03c3\u03b1\u03b3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf PIN \u03c0\u03bf\u03c5 \u03b5\u03bc\u03c6\u03b1\u03bd\u03af\u03b6\u03b5\u03c4\u03b1\u03b9 \u03c3\u03c4\u03b7 {device}." + }, + "pairing": { + "description": "\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf {device}; \u0395\u03ac\u03bd \u03b4\u03b5\u03bd \u03ad\u03c7\u03b5\u03c4\u03b5 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03b5\u03b9 \u03c0\u03bf\u03c4\u03ad \u03c4\u03bf Home Assistant \u03c0\u03c1\u03b9\u03bd, \u03b8\u03b1 \u03b4\u03b5\u03af\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03b1\u03bd\u03b1\u03b4\u03c5\u03cc\u03bc\u03b5\u03bd\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf \u03c3\u03c4\u03b7\u03bd \u03c4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03ae \u03c3\u03b1\u03c2 \u03c0\u03bf\u03c5 \u03b6\u03b7\u03c4\u03ac \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03cc\u03c4\u03b7\u03c3\u03b7." + }, "reauth_confirm": { "description": "\u039c\u03b5\u03c4\u03ac \u03c4\u03b7\u03bd \u03c5\u03c0\u03bf\u03b2\u03bf\u03bb\u03ae, \u03b1\u03c0\u03bf\u03b4\u03b5\u03c7\u03c4\u03b5\u03af\u03c4\u03b5 \u03c4\u03bf \u03b1\u03bd\u03b1\u03b4\u03c5\u03cc\u03bc\u03b5\u03bd\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf \u03c3\u03c4\u03b7 {device} \u03c0\u03bf\u03c5 \u03b6\u03b7\u03c4\u03ac \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03cc\u03c4\u03b7\u03c3\u03b7 \u03b5\u03bd\u03c4\u03cc\u03c2 30 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03bf\u03bb\u03ad\u03c0\u03c4\u03c9\u03bd." }, + "reauth_confirm_encrypted": { + "description": "\u0395\u03b9\u03c3\u03b1\u03b3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf PIN \u03c0\u03bf\u03c5 \u03b5\u03bc\u03c6\u03b1\u03bd\u03af\u03b6\u03b5\u03c4\u03b1\u03b9 \u03c3\u03c4\u03b7 {device}." + }, "user": { "data": { "host": "\u039a\u03b5\u03bd\u03c4\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae\u03c2", diff --git a/homeassistant/components/samsungtv/translations/en.json b/homeassistant/components/samsungtv/translations/en.json index c4e0e181090..827f9992e46 100644 --- a/homeassistant/components/samsungtv/translations/en.json +++ b/homeassistant/components/samsungtv/translations/en.json @@ -6,6 +6,7 @@ "auth_missing": "Home Assistant is not authorized to connect to this Samsung TV. Check your TV's External Device Manager settings to authorize Home Assistant.", "cannot_connect": "Failed to connect", "id_missing": "This Samsung device doesn't have a SerialNumber.", + "missing_config_entry": "This Samsung device doesn't have a configuration entry.", "not_supported": "This Samsung device is currently not supported.", "reauth_successful": "Re-authentication was successful", "unknown": "Unexpected error" @@ -17,7 +18,8 @@ "flow_title": "{device}", "step": { "confirm": { - "description": "Do you want to set up {device}? If you never connected Home Assistant before you should see a popup on your TV asking for authorization." + "description": "Do you want to set up {device}? If you never connected Home Assistant before you should see a popup on your TV asking for authorization.", + "title": "Samsung TV" }, "encrypted_pairing": { "description": "Please enter the PIN displayed on {device}." diff --git a/homeassistant/components/samsungtv/translations/et.json b/homeassistant/components/samsungtv/translations/et.json index 47360f4ed06..94e9db78ec2 100644 --- a/homeassistant/components/samsungtv/translations/et.json +++ b/homeassistant/components/samsungtv/translations/et.json @@ -12,7 +12,8 @@ "unknown": "Tundmatu t\u00f5rge" }, "error": { - "auth_missing": "Tuvastamine nurjus" + "auth_missing": "Tuvastamine nurjus", + "invalid_pin": "PIN on kehtetu, proovi uuesti." }, "flow_title": "{devicel}", "step": { @@ -20,8 +21,17 @@ "description": "Kas soovid seadistada {devicel} ? Kui seda pole kunagi enne Home Assistantiga \u00fchendatud, n\u00e4ed oma teleris h\u00fcpikakent, mis k\u00fcsib tuvastamist.", "title": "" }, + "encrypted_pairing": { + "description": "Sisesta seadmes {device} kuvatav PIN-kood." + }, + "pairing": { + "description": "Kas h\u00e4\u00e4lestada seade {device}? Kui varem pole Home Assistantiga \u00fchendutud peaks teler kuvama h\u00fcpikakna tuvastusteabe sisestamiseks." + }, "reauth_confirm": { - "description": "P\u00e4rast esitamist n\u00f5ustu {device} h\u00fcpikaknaga, mis taotleb autoriseerimist 30 sekundi jooksul." + "description": "P\u00e4rast esitamist n\u00f5ustu {device} h\u00fcpikaknaga, mis taotleb autoriseerimist 30 sekundi jooksul v\u00f5i sisesta PIN." + }, + "reauth_confirm_encrypted": { + "description": "Sisesta seadmes {device} kuvatav PIN-kood." }, "user": { "data": { diff --git a/homeassistant/components/samsungtv/translations/fr.json b/homeassistant/components/samsungtv/translations/fr.json index 1d9bebb5569..438336f2818 100644 --- a/homeassistant/components/samsungtv/translations/fr.json +++ b/homeassistant/components/samsungtv/translations/fr.json @@ -12,16 +12,26 @@ "unknown": "Erreur inattendue" }, "error": { - "auth_missing": "Home Assistant n'est pas autoris\u00e9 \u00e0 se connecter \u00e0 ce t\u00e9l\u00e9viseur Samsung. Veuillez v\u00e9rifier les param\u00e8tres de votre t\u00e9l\u00e9viseur pour autoriser Home Assistant." + "auth_missing": "Home Assistant n'est pas autoris\u00e9 \u00e0 se connecter \u00e0 ce t\u00e9l\u00e9viseur Samsung. Veuillez v\u00e9rifier les param\u00e8tres de votre t\u00e9l\u00e9viseur pour autoriser Home Assistant.", + "invalid_pin": "Le code PIN n'est pas valide, veuillez r\u00e9essayer." }, "flow_title": "{device}", "step": { "confirm": { - "description": "Voulez vous installer la TV {device} Samsung? Si vous n'avez jamais connect\u00e9 Home Assistant avant, vous devriez voir une fen\u00eatre contextuelle sur votre t\u00e9l\u00e9viseur demandant une authentification. Les configurations manuelles de ce t\u00e9l\u00e9viseur seront \u00e9cras\u00e9es.", + "description": "Voulez-vous configurer {device}\u00a0? Si vous n'avez jamais connect\u00e9 Home Assistant auparavant, une fen\u00eatre contextuelle d'autorisation devrait appara\u00eetre sur votre t\u00e9l\u00e9viseur.", "title": "TV Samsung" }, + "encrypted_pairing": { + "description": "Veuillez saisir le code PIN affich\u00e9 sur {device}." + }, + "pairing": { + "description": "Voulez-vous configurer {device}\u00a0? Si vous n'avez jamais connect\u00e9 Home Assistant auparavant, une fen\u00eatre contextuelle d'autorisation devrait appara\u00eetre sur votre t\u00e9l\u00e9viseur." + }, "reauth_confirm": { - "description": "Apr\u00e8s avoir soumis, acceptez la fen\u00eatre contextuelle sur {device} demandant l'autorisation dans les 30 secondes." + "description": "Une fois envoy\u00e9, acceptez la fen\u00eatre contextuelle de demande d'autorisation sur {device} dans les 30\u00a0secondes ou saisissez le code PIN." + }, + "reauth_confirm_encrypted": { + "description": "Veuillez saisir le code PIN affich\u00e9 sur {device}." }, "user": { "data": { diff --git a/homeassistant/components/samsungtv/translations/hu.json b/homeassistant/components/samsungtv/translations/hu.json index a85f295317d..dc42596e290 100644 --- a/homeassistant/components/samsungtv/translations/hu.json +++ b/homeassistant/components/samsungtv/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "auth_missing": "Home Assistant nem jogosult csatlakozni ehhez a Samsung TV-hez. Ellen\u0151rizze a TV be\u00e1ll\u00edt\u00e1sait Home Assistant enged\u00e9lyez\u00e9s\u00e9hez.", "cannot_connect": "Sikertelen csatlakoz\u00e1s", "id_missing": "Ennek a Samsung eszk\u00f6znek nincs sorsz\u00e1ma.", @@ -12,7 +12,8 @@ "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" }, "error": { - "auth_missing": "Home Assistant nem jogosult csatlakozni ehhez a Samsung TV-hez. Ellen\u0151rizze a TV be\u00e1ll\u00edt\u00e1sait Home Assistant enged\u00e9lyez\u00e9s\u00e9hez." + "auth_missing": "Home Assistant nem jogosult csatlakozni ehhez a Samsung TV-hez. Ellen\u0151rizze a TV be\u00e1ll\u00edt\u00e1sait Home Assistant enged\u00e9lyez\u00e9s\u00e9hez.", + "invalid_pin": "A PIN k\u00f3d \u00e9rv\u00e9nytelen, k\u00e9rj\u00fck, pr\u00f3b\u00e1lja meg \u00fajra." }, "flow_title": "{device}", "step": { @@ -20,13 +21,22 @@ "description": "Szeretn\u00e9 be\u00e1ll\u00edtani {device} k\u00e9sz\u00fcl\u00e9k\u00e9t? Ha kor\u00e1bban m\u00e9g sosem csatlakoztatta Home Assistanthoz, akkor meg kell jelennie egy felugr\u00f3 ablaknak a TV k\u00e9perny\u0151j\u00e9n, ami j\u00f3v\u00e1hagy\u00e1sra v\u00e1r.", "title": "Samsung TV" }, + "encrypted_pairing": { + "description": "K\u00e9rj\u00fck, adja meg az eszk\u00f6z\u00f6n megjelen\u0151 PIN-k\u00f3dot: {device}" + }, + "pairing": { + "description": "Szeretn\u00e9 be\u00e1ll\u00edtani {device} k\u00e9sz\u00fcl\u00e9k\u00e9t? Ha kor\u00e1bban m\u00e9g sosem csatlakoztatta Home Assistanthoz, akkor meg kell jelennie egy felugr\u00f3 ablaknak a TV k\u00e9perny\u0151j\u00e9n, ami j\u00f3v\u00e1hagy\u00e1sra v\u00e1r." + }, "reauth_confirm": { - "description": "A bek\u00fcld\u00e9s ut\u00e1n, fogadja el a {device} felugr\u00f3 ablak\u00e1ban l\u00e1that\u00f3 \u00fczenetet, mely 30 m\u00e1sodpercig \u00e1ll rendelkez\u00e9sre." + "description": "A bek\u00fcld\u00e9s ut\u00e1n, fogadja el a {device} felugr\u00f3 ablak\u00e1ban l\u00e1that\u00f3 \u00fczenetet, mely 30 m\u00e1sodpercig \u00e1ll rendelkez\u00e9sre, vagy adja meg a PIN k\u00f3dot." + }, + "reauth_confirm_encrypted": { + "description": "K\u00e9rj\u00fck, adja meg az eszk\u00f6z\u00f6n megjelen\u0151 PIN-k\u00f3dot: {device}" }, "user": { "data": { "host": "C\u00edm", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" }, "description": "\u00cdrja be a Samsung TV adatait. Ha m\u00e9g soha nem csatlakozott Home Assistanthoz, akkor meg kell jelennie egy felugr\u00f3 ablaknak a TV k\u00e9perny\u0151j\u00e9n, ahol meg kell adni az enged\u00e9lyt." } diff --git a/homeassistant/components/samsungtv/translations/id.json b/homeassistant/components/samsungtv/translations/id.json index 0714af37146..394cfc41ae1 100644 --- a/homeassistant/components/samsungtv/translations/id.json +++ b/homeassistant/components/samsungtv/translations/id.json @@ -12,7 +12,8 @@ "unknown": "Kesalahan yang tidak diharapkan" }, "error": { - "auth_missing": "Home Assistant tidak diizinkan untuk tersambung ke TV Samsung ini. Periksa Manajer Perangkat Eksternal TV Anda untuk mengotorisasi Home Assistant." + "auth_missing": "Home Assistant tidak diizinkan untuk tersambung ke TV Samsung ini. Periksa Manajer Perangkat Eksternal TV Anda untuk mengotorisasi Home Assistant.", + "invalid_pin": "PIN tidak valid, silakan coba lagi." }, "flow_title": "{device}", "step": { @@ -20,8 +21,17 @@ "description": "Apakah Anda ingin menyiapkan {device}? Jika Anda belum pernah menyambungkan Home Assistant sebelumnya, Anda akan melihat dialog di TV yang meminta otorisasi.", "title": "TV Samsung" }, + "encrypted_pairing": { + "description": "Masukkan PIN yang ditampilkan di {device} ." + }, + "pairing": { + "description": "Apakah Anda ingin menyiapkan {device}? Jika Anda belum pernah menyambungkan Home Assistant sebelumnya, Anda akan melihat dialog di TV yang meminta otorisasi." + }, "reauth_confirm": { - "description": "Setelah mengirimkan, setujui pada popup di {device} yang meminta otorisasi dalam waktu 30 detik." + "description": "Setelah mengirimkan, setujui pada popup di {device} yang meminta otorisasi dalam waktu 30 detik atau masukkan PIN." + }, + "reauth_confirm_encrypted": { + "description": "Masukkan PIN yang ditampilkan di {device} ." }, "user": { "data": { diff --git a/homeassistant/components/samsungtv/translations/it.json b/homeassistant/components/samsungtv/translations/it.json index 51f9b4e2ef9..6bfc26fb445 100644 --- a/homeassistant/components/samsungtv/translations/it.json +++ b/homeassistant/components/samsungtv/translations/it.json @@ -12,7 +12,8 @@ "unknown": "Errore imprevisto" }, "error": { - "auth_missing": "Home Assistant non \u00e8 autorizzato a connettersi a questo televisore Samsung. Controlla le impostazioni di Gestione dispositivi esterni della tua TV per autorizzare Home Assistant." + "auth_missing": "Home Assistant non \u00e8 autorizzato a connettersi a questo televisore Samsung. Controlla le impostazioni di Gestione dispositivi esterni della tua TV per autorizzare Home Assistant.", + "invalid_pin": "Il PIN non \u00e8 valido, riprova." }, "flow_title": "{device}", "step": { @@ -20,8 +21,17 @@ "description": "Vuoi configurare {device}? Se non hai mai collegato Home Assistant, dovresti vedere un popup sulla tua TV che chiede l'autorizzazione.", "title": "Samsung TV" }, + "encrypted_pairing": { + "description": "Digita il PIN visualizzato su {device}." + }, + "pairing": { + "description": "Vuoi configurare {device}? Se non hai mai collegato Home Assistant, dovresti vedere un popup sulla tua TV che chiede l'autorizzazione." + }, "reauth_confirm": { - "description": "Dopo l'invio, accetta il popup su {device} richiedendo l'autorizzazione entro 30 secondi." + "description": "Dopo l'invio, accetta la notifica su {device} richiedendo l'autorizzazione entro 30 secondi o digita il PIN." + }, + "reauth_confirm_encrypted": { + "description": "Digita il PIN visualizzato su {device}." }, "user": { "data": { diff --git a/homeassistant/components/samsungtv/translations/ja.json b/homeassistant/components/samsungtv/translations/ja.json index 0cfad60efcb..d1b5670e25c 100644 --- a/homeassistant/components/samsungtv/translations/ja.json +++ b/homeassistant/components/samsungtv/translations/ja.json @@ -12,7 +12,8 @@ "unknown": "\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc" }, "error": { - "auth_missing": "Home Assistant\u306f\u3001\u3053\u306eSamsungTV\u3078\u306e\u63a5\u7d9a\u3092\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30c6\u30ec\u30d3\u306e\u5916\u90e8\u30c7\u30d0\u30a4\u30b9\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u306e\u8a2d\u5b9a\u3092\u78ba\u8a8d\u3057\u3066\u3001Home Assistant\u3092\u8a8d\u8a3c\u3057\u307e\u3059\u3002" + "auth_missing": "Home Assistant\u306f\u3001\u3053\u306eSamsungTV\u3078\u306e\u63a5\u7d9a\u3092\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30c6\u30ec\u30d3\u306e\u5916\u90e8\u30c7\u30d0\u30a4\u30b9\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u306e\u8a2d\u5b9a\u3092\u78ba\u8a8d\u3057\u3066\u3001Home Assistant\u3092\u8a8d\u8a3c\u3057\u307e\u3059\u3002", + "invalid_pin": "PIN\u304c\u7121\u52b9\u3067\u3059\u3002\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002" }, "flow_title": "{device}", "step": { @@ -20,9 +21,18 @@ "description": "{device} \u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u307e\u3059\u304b\uff1f\u3053\u308c\u307e\u3067\u306bHome Assistant\u3092\u4e00\u5ea6\u3082\u63a5\u7d9a\u3057\u305f\u3053\u3068\u304c\u306a\u3044\u5834\u5408\u306f\u3001\u30c6\u30ec\u30d3\u306b\u8a8d\u8a3c\u3092\u6c42\u3081\u308b\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002", "title": "Samsung TV" }, + "encrypted_pairing": { + "description": "{device} \u306b\u8868\u793a\u3055\u308c\u3066\u3044\u308bPIN\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002" + }, + "pairing": { + "description": "{device} \u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u307e\u3059\u304b\uff1f\u3053\u308c\u307e\u3067\u306bHome Assistant\u3092\u4e00\u5ea6\u3082\u63a5\u7d9a\u3057\u305f\u3053\u3068\u304c\u306a\u3044\u5834\u5408\u306f\u3001\u30c6\u30ec\u30d3\u306b\u8a8d\u8a3c\u3092\u6c42\u3081\u308b\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002" + }, "reauth_confirm": { "description": "\u9001\u4fe1(submit)\u3001\u8a8d\u8a3c\u3092\u8981\u6c42\u3059\u308b {device} \u306e\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3092\u300130\u79d2\u4ee5\u5185\u306b\u53d7\u3051\u5165\u308c\u307e\u3059\u3002" }, + "reauth_confirm_encrypted": { + "description": "{device} \u306b\u8868\u793a\u3055\u308c\u3066\u3044\u308bPIN\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002" + }, "user": { "data": { "host": "\u30db\u30b9\u30c8", diff --git a/homeassistant/components/samsungtv/translations/nl.json b/homeassistant/components/samsungtv/translations/nl.json index 692c70642d6..b75f9b5970e 100644 --- a/homeassistant/components/samsungtv/translations/nl.json +++ b/homeassistant/components/samsungtv/translations/nl.json @@ -12,7 +12,8 @@ "unknown": "Onverwachte fout" }, "error": { - "auth_missing": "Home Assistant is niet gemachtigd om verbinding te maken met deze Samsung TV. Controleer de instellingen van Extern apparaatbeheer van uw tv om Home Assistant te machtigen." + "auth_missing": "Home Assistant is niet gemachtigd om verbinding te maken met deze Samsung TV. Controleer de instellingen van Extern apparaatbeheer van uw tv om Home Assistant te machtigen.", + "invalid_pin": "Pincode is ongeldig, probeer het opnieuw." }, "flow_title": "{device}", "step": { @@ -20,8 +21,17 @@ "description": "Wilt u Samsung TV {device} instellen? Als u nooit eerder Home Assistant hebt verbonden dan zou u een popup op uw TV moeten zien waarin u om toestemming wordt vraagt. Handmatige configuraties voor deze TV worden overschreven", "title": "Samsung TV" }, + "encrypted_pairing": { + "description": "Voer de pincode in die wordt weergegeven op {device} ." + }, + "pairing": { + "description": "Wil je {device} instellen? Als je de Home Assistant nog nooit eerder hebt aangesloten, zou je een pop-up op je tv moeten zien die om autorisatie vraagt." + }, "reauth_confirm": { - "description": "Na het indienen, accepteer binnen 30 seconden de pop-up op {device} om autorisatie toe te staan." + "description": "Na het indienen, accepteer binnen 30 seconden de pop-up op {device} om autorisatie toe te staan of voer PIN in." + }, + "reauth_confirm_encrypted": { + "description": "Voer de pincode in die wordt weergegeven op {device} ." }, "user": { "data": { diff --git a/homeassistant/components/samsungtv/translations/no.json b/homeassistant/components/samsungtv/translations/no.json index 7b7108cbf77..2125b407f29 100644 --- a/homeassistant/components/samsungtv/translations/no.json +++ b/homeassistant/components/samsungtv/translations/no.json @@ -12,7 +12,8 @@ "unknown": "Uventet feil" }, "error": { - "auth_missing": "Home Assistant er ikke autorisert til \u00e5 koble til denne Samsung TV-en. Sjekk TV-ens innstillinger for ekstern enhetsbehandling for \u00e5 autorisere Home Assistant." + "auth_missing": "Home Assistant er ikke autorisert til \u00e5 koble til denne Samsung TV-en. Sjekk TV-ens innstillinger for ekstern enhetsbehandling for \u00e5 autorisere Home Assistant.", + "invalid_pin": "PIN-koden er ugyldig, pr\u00f8v igjen." }, "flow_title": "{device}", "step": { @@ -20,8 +21,17 @@ "description": "Vil du konfigurere {device} ? Hvis du aldri har koblet til Home Assistant f\u00f8r, b\u00f8r du se en popup p\u00e5 TV-en din som ber om autorisasjon.", "title": "" }, + "encrypted_pairing": { + "description": "Vennligst skriv inn PIN-koden som vises p\u00e5 {device} ." + }, + "pairing": { + "description": "Vil du konfigurere {device} ? Hvis du aldri har koblet til Home Assistant f\u00f8r, b\u00f8r du se en popup p\u00e5 TV-en din som ber om autorisasjon." + }, "reauth_confirm": { - "description": "Etter innsending, godta popup-vinduet p\u00e5 {device} ber om autorisasjon innen 30 sekunder." + "description": "Etter innsending, godta popup-vinduet p\u00e5 {device} ber om autorisasjon innen 30 sekunder eller angi PIN-kode." + }, + "reauth_confirm_encrypted": { + "description": "Vennligst skriv inn PIN-koden som vises p\u00e5 {device} ." }, "user": { "data": { diff --git a/homeassistant/components/samsungtv/translations/pl.json b/homeassistant/components/samsungtv/translations/pl.json index 1f810248f92..015f048dc60 100644 --- a/homeassistant/components/samsungtv/translations/pl.json +++ b/homeassistant/components/samsungtv/translations/pl.json @@ -12,7 +12,8 @@ "unknown": "Nieoczekiwany b\u0142\u0105d" }, "error": { - "auth_missing": "Home Assistant nie ma uprawnie\u0144 do po\u0142\u0105czenia si\u0119 z tym telewizorem Samsung. Sprawd\u017a ustawienia \"Mened\u017cera urz\u0105dze\u0144 zewn\u0119trznych\", aby autoryzowa\u0107 Home Assistant." + "auth_missing": "Home Assistant nie ma uprawnie\u0144 do po\u0142\u0105czenia si\u0119 z tym telewizorem Samsung. Sprawd\u017a ustawienia \"Mened\u017cera urz\u0105dze\u0144 zewn\u0119trznych\", aby autoryzowa\u0107 Home Assistant.", + "invalid_pin": "Nieprawid\u0142owy kod PIN, spr\u00f3buj ponownie." }, "flow_title": "{device}", "step": { @@ -20,8 +21,17 @@ "description": "Czy chcesz skonfigurowa\u0107 {device}? Je\u015bli nigdy wcze\u015bniej nie \u0142\u0105czy\u0142e\u015b go z Home Assistantem, na jego ekranie powinna pojawi\u0107 si\u0119 pro\u015bba o uwierzytelnienie.", "title": "Samsung TV" }, + "encrypted_pairing": { + "description": "Wprowad\u017a kod PIN wy\u015bwietlony na {device}." + }, + "pairing": { + "description": "Czy chcesz skonfigurowa\u0107 {device}? Je\u015bli nigdy wcze\u015bniej nie \u0142\u0105czy\u0142e\u015b go z Home Assistantem, na jego ekranie powinna pojawi\u0107 si\u0119 pro\u015bba o uwierzytelnienie." + }, "reauth_confirm": { - "description": "Po wys\u0142aniu \u017c\u0105dania, zaakceptuj wyskakuj\u0105ce okienko na {device} z pro\u015bb\u0105 o autoryzacj\u0119 w ci\u0105gu 30 sekund." + "description": "Po wys\u0142aniu \u017c\u0105dania, zaakceptuj wyskakuj\u0105ce okienko na {device} z pro\u015bb\u0105 o autoryzacj\u0119 w ci\u0105gu 30 sekund lub wprowad\u017a PIN." + }, + "reauth_confirm_encrypted": { + "description": "Wprowad\u017a kod PIN wy\u015bwietlony na {device}." }, "user": { "data": { diff --git a/homeassistant/components/samsungtv/translations/pt-BR.json b/homeassistant/components/samsungtv/translations/pt-BR.json index 407e9d94d0a..dbb4b50fe93 100644 --- a/homeassistant/components/samsungtv/translations/pt-BR.json +++ b/homeassistant/components/samsungtv/translations/pt-BR.json @@ -12,7 +12,8 @@ "unknown": "Erro inesperado" }, "error": { - "auth_missing": "O Home Assistant n\u00e3o est\u00e1 autorizado a se conectar a esta TV Samsung. Verifique as configura\u00e7\u00f5es do Gerenciador de dispositivos externos da sua TV para autorizar o Home Assistant." + "auth_missing": "O Home Assistant n\u00e3o est\u00e1 autorizado a se conectar a esta TV Samsung. Verifique as configura\u00e7\u00f5es do Gerenciador de dispositivos externos da sua TV para autorizar o Home Assistant.", + "invalid_pin": "O PIN \u00e9 inv\u00e1lido, tente novamente." }, "flow_title": "{device}", "step": { @@ -20,8 +21,17 @@ "description": "Deseja configurar {device}? Se voc\u00ea nunca conectou o Home Assistant antes, aparecer\u00e1 um pop-up na sua TV pedindo autoriza\u00e7\u00e3o.", "title": "TV Samsung" }, + "encrypted_pairing": { + "description": "Insira o PIN exibido em {device}." + }, + "pairing": { + "description": "Deseja configurar {device}? Se voc\u00ea nunca conectou o Home Assistant antes, aparecer\u00e1 um pop-up na sua TV pedindo autoriza\u00e7\u00e3o." + }, "reauth_confirm": { - "description": "Ap\u00f3s o envio, aceite o pop-up em {device} solicitando autoriza\u00e7\u00e3o em 30 segundos." + "description": "Ap\u00f3s o envio, aceite o pop-up em {device} solicitando autoriza\u00e7\u00e3o em 30 segundos ou insira o PIN." + }, + "reauth_confirm_encrypted": { + "description": "Insira o PIN exibido em {device}." }, "user": { "data": { diff --git a/homeassistant/components/samsungtv/translations/ru.json b/homeassistant/components/samsungtv/translations/ru.json index 111b30c5488..ee73070cf0e 100644 --- a/homeassistant/components/samsungtv/translations/ru.json +++ b/homeassistant/components/samsungtv/translations/ru.json @@ -12,7 +12,8 @@ "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." }, "error": { - "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 Samsung TV. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 External Device Manager \u0412\u0430\u0448\u0435\u0433\u043e \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u0430." + "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 Samsung TV. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 External Device Manager \u0412\u0430\u0448\u0435\u0433\u043e \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u0430.", + "invalid_pin": "PIN-\u043a\u043e\u0434 \u043d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u0435\u043d, \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443." }, "flow_title": "{device}", "step": { @@ -20,8 +21,17 @@ "description": "\u0425\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c {device}? \u0415\u0441\u043b\u0438 \u0412\u044b \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u043b\u0438 \u044d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043a Home Assistant, \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u043a\u043d\u043e \u0441 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438.", "title": "\u0422\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440 Samsung" }, + "encrypted_pairing": { + "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 PIN-\u043a\u043e\u0434, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 \u043d\u0430 {device}." + }, + "pairing": { + "description": "\u0425\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c {device}? \u0415\u0441\u043b\u0438 \u0412\u044b \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u043b\u0438 \u044d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043a Home Assistant, \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u043a\u043d\u043e \u0441 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438." + }, "reauth_confirm": { - "description": "\u041f\u043e\u0441\u043b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u044d\u0442\u043e\u0439 \u0444\u043e\u0440\u043c\u044b, \u043f\u0440\u0438\u043c\u0438\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u043e \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u043c \u043e\u043a\u043d\u0435 \u043d\u0430 {device} \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 30 \u0441\u0435\u043a\u0443\u043d\u0434." + "description": "\u041f\u043e\u0441\u043b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u044d\u0442\u043e\u0439 \u0444\u043e\u0440\u043c\u044b, \u043f\u0440\u0438\u043c\u0438\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u043e \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u043c \u043e\u043a\u043d\u0435 \u043d\u0430 {device} \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 30 \u0441\u0435\u043a\u0443\u043d\u0434 \u0438\u043b\u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 PIN-\u043a\u043e\u0434." + }, + "reauth_confirm_encrypted": { + "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 PIN-\u043a\u043e\u0434, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 \u043d\u0430 {device}." }, "user": { "data": { diff --git a/homeassistant/components/samsungtv/translations/tr.json b/homeassistant/components/samsungtv/translations/tr.json index 399f135bbe8..668b321e26d 100644 --- a/homeassistant/components/samsungtv/translations/tr.json +++ b/homeassistant/components/samsungtv/translations/tr.json @@ -12,7 +12,8 @@ "unknown": "Beklenmeyen hata" }, "error": { - "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." + "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.", + "invalid_pin": "PIN ge\u00e7ersiz, l\u00fctfen tekrar deneyin." }, "flow_title": "{device}", "step": { @@ -20,8 +21,17 @@ "description": "{device} kurulumunu yapmak istiyor musunuz? Home Assistant'\u0131 daha \u00f6nce hi\u00e7 ba\u011flamad\u0131ysan\u0131z, TV'nizde yetki isteyen bir a\u00e7\u0131l\u0131r pencere g\u00f6rmelisiniz.", "title": "Samsung TV" }, + "encrypted_pairing": { + "description": "L\u00fctfen {device} \u00fczerinde g\u00f6r\u00fcnt\u00fclenen PIN'i girin." + }, + "pairing": { + "description": "{device} kurulumunu yapmak istiyor musunuz? Home Assistant'\u0131 daha \u00f6nce hi\u00e7 ba\u011flamad\u0131ysan\u0131z, TV'nizde yetki isteyen bir a\u00e7\u0131l\u0131r pencere g\u00f6rmelisiniz." + }, "reauth_confirm": { - "description": "G\u00f6nderdikten sonra, 30 saniye i\u00e7inde yetkilendirme isteyen {device} \u00fczerindeki a\u00e7\u0131l\u0131r pencereyi kabul edin." + "description": "G\u00f6nderdikten sonra, 30 saniye i\u00e7inde yetkilendirme isteyen {device} \u00fczerindeki a\u00e7\u0131l\u0131r pencereyi kabul edin veya PIN'i girin." + }, + "reauth_confirm_encrypted": { + "description": "L\u00fctfen {device} \u00fczerinde g\u00f6r\u00fcnt\u00fclenen PIN'i girin." }, "user": { "data": { diff --git a/homeassistant/components/samsungtv/translations/zh-Hant.json b/homeassistant/components/samsungtv/translations/zh-Hant.json index ba828665cea..8f30090dd24 100644 --- a/homeassistant/components/samsungtv/translations/zh-Hant.json +++ b/homeassistant/components/samsungtv/translations/zh-Hant.json @@ -12,7 +12,8 @@ "unknown": "\u672a\u9810\u671f\u932f\u8aa4" }, "error": { - "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\u5916\u90e8\u88dd\u7f6e\u7ba1\u7406\u54e1\u8a2d\u5b9a\u4ee5\u9032\u884c\u9a57\u8b49\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\u5916\u90e8\u88dd\u7f6e\u7ba1\u7406\u54e1\u8a2d\u5b9a\u4ee5\u9032\u884c\u9a57\u8b49\u3002", + "invalid_pin": "PIN \u78bc\u7121\u6548\uff0c\u8acb\u518d\u8a66\u4e00\u6b21\u3002" }, "flow_title": "{device}", "step": { @@ -20,8 +21,17 @@ "description": "\u662f\u5426\u8981\u8a2d\u5b9a {device}\uff1f\u5047\u5982\u60a8\u4e4b\u524d\u672a\u66fe\u9023\u7dda\u81f3 Home Assistant\uff0c\u61c9\u8a72\u6703\u65bc\u96fb\u8996\u4e0a\u6536\u5230\u9a57\u8b49\u8a0a\u606f\u3002", "title": "\u4e09\u661f\u96fb\u8996" }, + "encrypted_pairing": { + "description": "\u8acb\u8f38\u5165\u986f\u793a\u65bc {device} \u4e0a\u7684 PIN \u78bc\u3002" + }, + "pairing": { + "description": "\u662f\u5426\u8981\u8a2d\u5b9a {device}\uff1f\u5047\u5982\u60a8\u4e4b\u524d\u672a\u66fe\u9023\u7dda\u81f3 Home Assistant\uff0c\u61c9\u8a72\u6703\u65bc\u96fb\u8996\u4e0a\u6536\u5230\u9a57\u8b49\u8a0a\u606f\u3002" + }, "reauth_confirm": { - "description": "\u50b3\u9001\u5f8c\u3001\u8acb\u65bc 30 \u79d2\u5167\u540c\u610f {device} \u4e0a\u9396\u986f\u793a\u7684\u5f48\u51fa\u8996\u7a97\u6388\u6b0a\u8a31\u53ef\u3002" + "description": "\u50b3\u9001\u5f8c\u3001\u8acb\u65bc 30 \u79d2\u5167\u540c\u610f {device} \u4e0a\u9396\u986f\u793a\u7684\u5f48\u51fa\u8996\u7a97\u6388\u6b0a\u8a31\u53ef\u6216\u8f38\u5165 PIN\u3002" + }, + "reauth_confirm_encrypted": { + "description": "\u8acb\u8f38\u5165\u986f\u793a\u65bc {device} \u4e0a\u7684 PIN \u78bc\u3002" }, "user": { "data": { diff --git a/homeassistant/components/screenlogic/translations/fr.json b/homeassistant/components/screenlogic/translations/fr.json index 62f26aae2b6..458deec97de 100644 --- a/homeassistant/components/screenlogic/translations/fr.json +++ b/homeassistant/components/screenlogic/translations/fr.json @@ -20,7 +20,7 @@ "data": { "selected_gateway": "Passerelle" }, - "description": "Les passerelles ScreenLogic suivantes ont \u00e9t\u00e9 d\u00e9couvertes. S\u2019il vous pla\u00eet s\u00e9lectionner un \u00e0 configurer, ou choisissez de configurer manuellement une passerelle ScreenLogic.", + "description": "Les passerelles ScreenLogic suivantes ont \u00e9t\u00e9 d\u00e9couvertes. Veuillez s\u00e9lectionner celle \u00e0 configurer. Vous pouvez \u00e9galement choisir de configurer une passerelle ScreenLogic manuellement.", "title": "ScreenLogic" } } diff --git a/homeassistant/components/season/translations/cs.json b/homeassistant/components/season/translations/cs.json new file mode 100644 index 00000000000..17ff202bb38 --- /dev/null +++ b/homeassistant/components/season/translations/cs.json @@ -0,0 +1,14 @@ +{ + "config": { + "abort": { + "already_configured": "Slu\u017eba je ji\u017e nastavena" + }, + "step": { + "user": { + "data": { + "type": "Typ definice sez\u00f3ny" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sense/translations/cs.json b/homeassistant/components/sense/translations/cs.json index 59984b18992..aa5613d3ab4 100644 --- a/homeassistant/components/sense/translations/cs.json +++ b/homeassistant/components/sense/translations/cs.json @@ -1,7 +1,8 @@ { "config": { "abort": { - "already_configured": "Za\u0159\u00edzen\u00ed je ji\u017e nastaveno" + "already_configured": "Za\u0159\u00edzen\u00ed je ji\u017e nastaveno", + "reauth_successful": "Op\u011btovn\u00e9 ov\u011b\u0159en\u00ed bylo \u00fasp\u011b\u0161n\u00e9" }, "error": { "cannot_connect": "Nepoda\u0159ilo se p\u0159ipojit", @@ -9,6 +10,12 @@ "unknown": "Neo\u010dek\u00e1van\u00e1 chyba" }, "step": { + "reauth_validate": { + "data": { + "password": "Heslo" + }, + "title": "Znovu ov\u011b\u0159it integraci" + }, "user": { "data": { "email": "E-mail", diff --git a/homeassistant/components/sense/translations/fr.json b/homeassistant/components/sense/translations/fr.json index 000240517b9..ece97b4df4f 100644 --- a/homeassistant/components/sense/translations/fr.json +++ b/homeassistant/components/sense/translations/fr.json @@ -14,6 +14,7 @@ "data": { "password": "Mot de passe" }, + "description": "L'int\u00e9gration Sense doit r\u00e9-authentifier votre compte {email}.", "title": "R\u00e9-authentifier l'int\u00e9gration" }, "user": { @@ -27,7 +28,8 @@ "validation": { "data": { "code": "Code de v\u00e9rification" - } + }, + "title": "Authentification multi-facteurs Sense" } } } diff --git a/homeassistant/components/sensibo/translations/hu.json b/homeassistant/components/sensibo/translations/hu.json index 802b718cc82..065a7b982ed 100644 --- a/homeassistant/components/sensibo/translations/hu.json +++ b/homeassistant/components/sensibo/translations/hu.json @@ -20,7 +20,7 @@ "user": { "data": { "api_key": "API kulcs", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" } } } diff --git a/homeassistant/components/sensor/translations/pl.json b/homeassistant/components/sensor/translations/pl.json index 05c0a69708c..b6e93865425 100644 --- a/homeassistant/components/sensor/translations/pl.json +++ b/homeassistant/components/sensor/translations/pl.json @@ -7,8 +7,8 @@ "is_carbon_monoxide": "obecny poziom st\u0119\u017cenia tlenku w\u0119gla w {entity_name}", "is_current": "obecne nat\u0119\u017cenie pr\u0105du {entity_name}", "is_energy": "obecna energia {entity_name}", - "is_frequency": "Obecna cz\u0119stotliwo\u015b\u0107 {entity_name}", - "is_gas": "Obecny poziom gazu {entity_name}", + "is_frequency": "obecna cz\u0119stotliwo\u015b\u0107 {entity_name}", + "is_gas": "obecny poziom gazu {entity_name}", "is_humidity": "obecna wilgotno\u015b\u0107 {entity_name}", "is_illuminance": "obecne nat\u0119\u017cenie o\u015bwietlenia {entity_name}", "is_nitrogen_dioxide": "obecny poziom st\u0119\u017cenia dwutlenku azotu {entity_name}", diff --git a/homeassistant/components/sentry/translations/ca.json b/homeassistant/components/sentry/translations/ca.json index 25d5a5bf37e..d83abb16f1e 100644 --- a/homeassistant/components/sentry/translations/ca.json +++ b/homeassistant/components/sentry/translations/ca.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "dsn": "DSN" + "dsn": "Sentry DSN" }, "description": "Introdueix el DSN de Sentry", "title": "Sentry" diff --git a/homeassistant/components/sentry/translations/de.json b/homeassistant/components/sentry/translations/de.json index 62aca6a65e9..d408af0d885 100644 --- a/homeassistant/components/sentry/translations/de.json +++ b/homeassistant/components/sentry/translations/de.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "dsn": "DSN" + "dsn": "Sentry-DSN" }, "description": "Gib deine Sentry-DSN ein", "title": "Sentry" diff --git a/homeassistant/components/sentry/translations/en.json b/homeassistant/components/sentry/translations/en.json index f00116c85d9..16bdac6b510 100644 --- a/homeassistant/components/sentry/translations/en.json +++ b/homeassistant/components/sentry/translations/en.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "dsn": "DSN" + "dsn": "Sentry DSN" }, "description": "Enter your Sentry DSN", "title": "Sentry" diff --git a/homeassistant/components/sentry/translations/et.json b/homeassistant/components/sentry/translations/et.json index 5c501b2b0aa..01386fa97e6 100644 --- a/homeassistant/components/sentry/translations/et.json +++ b/homeassistant/components/sentry/translations/et.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "dsn": "" + "dsn": "Sentry DSN" }, "description": "Sisesta oma Sentry DSN", "title": "" diff --git a/homeassistant/components/sentry/translations/fr.json b/homeassistant/components/sentry/translations/fr.json index acad5566ec3..6850bfe8a71 100644 --- a/homeassistant/components/sentry/translations/fr.json +++ b/homeassistant/components/sentry/translations/fr.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "dsn": "DSN" + "dsn": "DSN Sentry" }, "description": "Entrez votre DSN Sentry", "title": "Sentry" diff --git a/homeassistant/components/sentry/translations/he.json b/homeassistant/components/sentry/translations/he.json index 3383895686e..2a89b9e5556 100644 --- a/homeassistant/components/sentry/translations/he.json +++ b/homeassistant/components/sentry/translations/he.json @@ -9,7 +9,7 @@ "step": { "user": { "data": { - "dsn": "DSN" + "dsn": "Sentry DSN" } } } diff --git a/homeassistant/components/sentry/translations/hu.json b/homeassistant/components/sentry/translations/hu.json index 9c28d57eb5d..0535657c3d0 100644 --- a/homeassistant/components/sentry/translations/hu.json +++ b/homeassistant/components/sentry/translations/hu.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "dsn": "DSN" + "dsn": "Sentry DSN" }, "description": "Adja meg a Sentry DSN-t", "title": "Sentry" diff --git a/homeassistant/components/sentry/translations/id.json b/homeassistant/components/sentry/translations/id.json index b2004e8e3d5..5f81eb1a445 100644 --- a/homeassistant/components/sentry/translations/id.json +++ b/homeassistant/components/sentry/translations/id.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "dsn": "DSN" + "dsn": "Sentry DSN" }, "description": "Masukkan DSN Sentry Anda", "title": "Sentry" diff --git a/homeassistant/components/sentry/translations/it.json b/homeassistant/components/sentry/translations/it.json index 9e3e6974883..10a0d1bad2b 100644 --- a/homeassistant/components/sentry/translations/it.json +++ b/homeassistant/components/sentry/translations/it.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "dsn": "DSN" + "dsn": "DSN Sentry" }, "description": "Inserisci il tuo DSN Sentry", "title": "Sentry" diff --git a/homeassistant/components/sentry/translations/nl.json b/homeassistant/components/sentry/translations/nl.json index 50af985b47c..67be245ffde 100644 --- a/homeassistant/components/sentry/translations/nl.json +++ b/homeassistant/components/sentry/translations/nl.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "dsn": "DSN" + "dsn": "Sentry DSN" }, "description": "Voer uw Sentry DSN in", "title": "Sentry" diff --git a/homeassistant/components/sentry/translations/no.json b/homeassistant/components/sentry/translations/no.json index 31f4ef30d12..c3bb4acd26e 100644 --- a/homeassistant/components/sentry/translations/no.json +++ b/homeassistant/components/sentry/translations/no.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "dsn": "DSN" + "dsn": "Sentry DSN" }, "description": "Fyll inn din Sentry DNS", "title": "" diff --git a/homeassistant/components/sentry/translations/pl.json b/homeassistant/components/sentry/translations/pl.json index 8d1bc2092aa..be5d008dcff 100644 --- a/homeassistant/components/sentry/translations/pl.json +++ b/homeassistant/components/sentry/translations/pl.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "dsn": "DSN" + "dsn": "Sentry DSN" }, "description": "Wprowad\u017a DSN Sentry", "title": "Sentry" diff --git a/homeassistant/components/sentry/translations/pt-BR.json b/homeassistant/components/sentry/translations/pt-BR.json index 21f1e3ef91a..c489de8ee6d 100644 --- a/homeassistant/components/sentry/translations/pt-BR.json +++ b/homeassistant/components/sentry/translations/pt-BR.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "dsn": "DSN" + "dsn": "Sentinela DSN" }, "description": "Digite seu DSN Sentry", "title": "Sentry" diff --git a/homeassistant/components/sentry/translations/ru.json b/homeassistant/components/sentry/translations/ru.json index eb6cbd0310c..6a7192a5385 100644 --- a/homeassistant/components/sentry/translations/ru.json +++ b/homeassistant/components/sentry/translations/ru.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "dsn": "DSN" + "dsn": "Sentry DSN" }, "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0412\u0430\u0448 DSN Sentry", "title": "Sentry" diff --git a/homeassistant/components/sentry/translations/tr.json b/homeassistant/components/sentry/translations/tr.json index fa3f39e9cde..6369f727d17 100644 --- a/homeassistant/components/sentry/translations/tr.json +++ b/homeassistant/components/sentry/translations/tr.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "dsn": "DSN" + "dsn": "Sentry DSN" }, "description": "Sentry DSN'nizi girin", "title": "Sentry" diff --git a/homeassistant/components/sentry/translations/zh-Hant.json b/homeassistant/components/sentry/translations/zh-Hant.json index 04fe4682a42..6d4615db892 100644 --- a/homeassistant/components/sentry/translations/zh-Hant.json +++ b/homeassistant/components/sentry/translations/zh-Hant.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "dsn": "DSN" + "dsn": "Sentry DSN" }, "description": "\u8f38\u5165 Sentry DSN", "title": "Sentry" diff --git a/homeassistant/components/senz/translations/bg.json b/homeassistant/components/senz/translations/bg.json new file mode 100644 index 00000000000..ddd6040e9cf --- /dev/null +++ b/homeassistant/components/senz/translations/bg.json @@ -0,0 +1,7 @@ +{ + "config": { + "abort": { + "already_configured": "\u0410\u043a\u0430\u0443\u043d\u0442\u044a\u0442 \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/senz/translations/ca.json b/homeassistant/components/senz/translations/ca.json new file mode 100644 index 00000000000..20b2ceceddd --- /dev/null +++ b/homeassistant/components/senz/translations/ca.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "El compte ja est\u00e0 configurat", + "already_in_progress": "El flux de configuraci\u00f3 ja est\u00e0 en curs", + "authorize_url_timeout": "Temps d'espera esgotat durant la generaci\u00f3 de l'URL d'autoritzaci\u00f3.", + "missing_configuration": "El component no est\u00e0 configurat. Mira'n la documentaci\u00f3.", + "no_url_available": "No hi ha cap URL disponible. Per a m\u00e9s informaci\u00f3 sobre aquest error, [consulta la secci\u00f3 d'ajuda]({docs_url})", + "oauth_error": "S'han rebut dades token inv\u00e0lides." + }, + "create_entry": { + "default": "Autenticaci\u00f3 exitosa" + }, + "step": { + "pick_implementation": { + "title": "Selecciona el m\u00e8tode d'autenticaci\u00f3" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/senz/translations/de.json b/homeassistant/components/senz/translations/de.json new file mode 100644 index 00000000000..16c6d8a883d --- /dev/null +++ b/homeassistant/components/senz/translations/de.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "Konto wurde bereits konfiguriert", + "already_in_progress": "Der Konfigurationsablauf wird bereits ausgef\u00fchrt", + "authorize_url_timeout": "Zeit\u00fcberschreitung beim Erstellen der Authorisierungs-URL.", + "missing_configuration": "Diese Komponente ist nicht konfiguriert. Bitte in der Anleitung nachlesen.", + "no_url_available": "Keine URL verf\u00fcgbar. Informationen zu diesem Fehler findest du [im Hilfebereich]({docs_url}).", + "oauth_error": "Ung\u00fcltige Token-Daten empfangen." + }, + "create_entry": { + "default": "Anmeldung erfolgreich" + }, + "step": { + "pick_implementation": { + "title": "Art der Anmeldung ausw\u00e4hlen" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/senz/translations/el.json b/homeassistant/components/senz/translations/el.json new file mode 100644 index 00000000000..cd34896da39 --- /dev/null +++ b/homeassistant/components/senz/translations/el.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "\u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03b8\u03b5\u03af", + "already_in_progress": "\u0397 \u03c1\u03bf\u03ae \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7\u03c2 \u03b2\u03c1\u03af\u03c3\u03ba\u03b5\u03c4\u03b1\u03b9 \u03ae\u03b4\u03b7 \u03c3\u03b5 \u03b5\u03be\u03ad\u03bb\u03b9\u03be\u03b7", + "authorize_url_timeout": "\u039b\u03ae\u03be\u03b7 \u03c7\u03c1\u03bf\u03bd\u03b9\u03ba\u03bf\u03cd \u03bf\u03c1\u03af\u03bf\u03c5 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1\u03c2 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7\u03c2 URL \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03cc\u03c4\u03b7\u03c3\u03b7\u03c2.", + "missing_configuration": "\u03a4\u03bf \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf \u03b4\u03b5\u03bd \u03ad\u03c7\u03b5\u03b9 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c4\u03b5\u03ba\u03bc\u03b7\u03c1\u03af\u03c9\u03c3\u03b7.", + "no_url_available": "\u0394\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL. \u0393\u03b9\u03b1 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03c3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1, [\u03b5\u03bb\u03ad\u03b3\u03be\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b5\u03bd\u03cc\u03c4\u03b7\u03c4\u03b1 \u03b2\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1\u03c2] ( {docs_url} )", + "oauth_error": "\u039b\u03ae\u03c6\u03b8\u03b7\u03ba\u03b1\u03bd \u03bc\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b1 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03b4\u03b9\u03b1\u03ba\u03c1\u03b9\u03c4\u03b9\u03ba\u03bf\u03cd." + }, + "create_entry": { + "default": "\u0395\u03c0\u03b9\u03c4\u03c5\u03c7\u03ae\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2" + }, + "step": { + "pick_implementation": { + "title": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03bc\u03b5\u03b8\u03cc\u03b4\u03bf\u03c5 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/senz/translations/et.json b/homeassistant/components/senz/translations/et.json new file mode 100644 index 00000000000..1ea0537a1b7 --- /dev/null +++ b/homeassistant/components/senz/translations/et.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "Kasutaja on juba seadistatud", + "already_in_progress": "Seadistamine on juba k\u00e4imas", + "authorize_url_timeout": "Kinnitus-URLi loomise ajal\u00f5pp", + "missing_configuration": "Komponent pole seadistatud. Palun loe dokumentatsiooni.", + "no_url_available": "URL pole saadaval. Selle t\u00f5rke kohta teabe saamiseks vaata [spikrijaotis]({docs_url})", + "oauth_error": "Saadi sobimatud loaandmed." + }, + "create_entry": { + "default": "Tuvastamine \u00f5nnestus" + }, + "step": { + "pick_implementation": { + "title": "Vali tuvastusmeetod" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/senz/translations/fr.json b/homeassistant/components/senz/translations/fr.json new file mode 100644 index 00000000000..3190eb10b6d --- /dev/null +++ b/homeassistant/components/senz/translations/fr.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "Le compte est d\u00e9j\u00e0 configur\u00e9", + "already_in_progress": "La configuration est d\u00e9j\u00e0 en cours", + "authorize_url_timeout": "D\u00e9lai de g\u00e9n\u00e9ration de l'URL d'authentification expir\u00e9.", + "missing_configuration": "Le composant n'est pas configur\u00e9. Veuillez suivre la documentation.", + "no_url_available": "Aucune URL disponible. Pour plus d'informations sur cette erreur, [consultez la section d'aide]({docs_url})", + "oauth_error": "Des donn\u00e9es de jeton non valides ont \u00e9t\u00e9 re\u00e7ues." + }, + "create_entry": { + "default": "Authentification r\u00e9ussie" + }, + "step": { + "pick_implementation": { + "title": "S\u00e9lectionner une m\u00e9thode d'authentification" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/senz/translations/he.json b/homeassistant/components/senz/translations/he.json new file mode 100644 index 00000000000..fcac267c910 --- /dev/null +++ b/homeassistant/components/senz/translations/he.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "\u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05d7\u05e9\u05d1\u05d5\u05df \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4", + "already_in_progress": "\u05d6\u05e8\u05d9\u05de\u05ea \u05d4\u05ea\u05e6\u05d5\u05e8\u05d4 \u05db\u05d1\u05e8 \u05de\u05ea\u05d1\u05e6\u05e2\u05ea", + "authorize_url_timeout": "\u05e4\u05e1\u05e7 \u05d6\u05de\u05df \u05dc\u05d9\u05e6\u05d9\u05e8\u05ea \u05db\u05ea\u05d5\u05d1\u05ea URL \u05dc\u05d0\u05d9\u05e9\u05d5\u05e8.", + "missing_configuration": "\u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05e8\u05db\u05d9\u05d1 \u05dc\u05d0 \u05e0\u05e7\u05d1\u05e2\u05d4. \u05e0\u05d0 \u05e2\u05e7\u05d5\u05d1 \u05d0\u05d7\u05e8 \u05d4\u05ea\u05d9\u05e2\u05d5\u05d3.", + "no_url_available": "\u05d0\u05d9\u05df \u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05ea\u05e8 \u05d6\u05de\u05d9\u05e0\u05d4. \u05e7\u05d1\u05dc\u05ea \u05de\u05d9\u05d3\u05e2 \u05e2\u05dc \u05e9\u05d2\u05d9\u05d0\u05d4 \u05d6\u05d5, [\u05e2\u05d9\u05d9\u05df \u05d1\u05e1\u05e2\u05d9\u05e3 \u05d4\u05e2\u05d6\u05e8\u05d4] ({docs_url})", + "oauth_error": "\u05d4\u05ea\u05e7\u05d1\u05dc\u05d5 \u05e0\u05ea\u05d5\u05e0\u05d9 \u05d0\u05e1\u05d9\u05de\u05d5\u05df \u05dc\u05d0 \u05d7\u05d5\u05e7\u05d9\u05d9\u05dd." + }, + "create_entry": { + "default": "\u05d0\u05d5\u05de\u05ea \u05d1\u05d4\u05e6\u05dc\u05d7\u05d4" + }, + "step": { + "pick_implementation": { + "title": "\u05d1\u05d7\u05e8 \u05e9\u05d9\u05d8\u05ea \u05d0\u05d9\u05de\u05d5\u05ea" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/senz/translations/hu.json b/homeassistant/components/senz/translations/hu.json new file mode 100644 index 00000000000..a3b07f0d3ef --- /dev/null +++ b/homeassistant/components/senz/translations/hu.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "A fi\u00f3k m\u00e1r konfigur\u00e1lva van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", + "authorize_url_timeout": "Id\u0151t\u00fall\u00e9p\u00e9s a hiteles\u00edt\u00e9si URL gener\u00e1l\u00e1sa sor\u00e1n.", + "missing_configuration": "A komponens nincs konfigur\u00e1lva. K\u00e9rem, k\u00f6vesse a dokument\u00e1ci\u00f3t.", + "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3 [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lhat\u00f3.", + "oauth_error": "\u00c9rv\u00e9nytelen token adatok \u00e9rkeztek." + }, + "create_entry": { + "default": "Sikeres hiteles\u00edt\u00e9s" + }, + "step": { + "pick_implementation": { + "title": "V\u00e1lasszon egy hiteles\u00edt\u00e9si m\u00f3dszert" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/senz/translations/id.json b/homeassistant/components/senz/translations/id.json new file mode 100644 index 00000000000..a2fdf8837bd --- /dev/null +++ b/homeassistant/components/senz/translations/id.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "Akun sudah dikonfigurasi", + "already_in_progress": "Alur konfigurasi sedang berlangsung", + "authorize_url_timeout": "Tenggang waktu pembuatan URL otorisasi habis.", + "missing_configuration": "Komponen tidak dikonfigurasi. Ikuti petunjuk dalam dokumentasi.", + "no_url_available": "Tidak ada URL yang tersedia. Untuk informasi tentang kesalahan ini, [lihat bagian bantuan]({docs_url})", + "oauth_error": "Menerima respons token yang tidak valid." + }, + "create_entry": { + "default": "Berhasil diautentikasi" + }, + "step": { + "pick_implementation": { + "title": "Pilih Metode Autentikasi" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/senz/translations/it.json b/homeassistant/components/senz/translations/it.json new file mode 100644 index 00000000000..c92ebb2a57c --- /dev/null +++ b/homeassistant/components/senz/translations/it.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "L'account \u00e8 gi\u00e0 configurato", + "already_in_progress": "Il flusso di configurazione \u00e8 gi\u00e0 in corso", + "authorize_url_timeout": "Tempo scaduto nel generare l'URL di autorizzazione.", + "missing_configuration": "Il componente non \u00e8 configurato. Segui la documentazione.", + "no_url_available": "Nessun URL disponibile. Per informazioni su questo errore, [controlla la sezione della guida]({docs_url})", + "oauth_error": "Ricevuti dati token non validi." + }, + "create_entry": { + "default": "Autenticazione riuscita" + }, + "step": { + "pick_implementation": { + "title": "Scegli il metodo di autenticazione" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/senz/translations/ja.json b/homeassistant/components/senz/translations/ja.json new file mode 100644 index 00000000000..b6aa94ef30c --- /dev/null +++ b/homeassistant/components/senz/translations/ja.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "\u30a2\u30ab\u30a6\u30f3\u30c8\u306f\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059", + "already_in_progress": "\u69cb\u6210\u30d5\u30ed\u30fc\u306f\u3059\u3067\u306b\u9032\u884c\u4e2d\u3067\u3059", + "authorize_url_timeout": "\u8a8d\u8a3cURL\u306e\u751f\u6210\u304c\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3057\u307e\u3057\u305f\u3002", + "missing_configuration": "\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002", + "no_url_available": "\u4f7f\u7528\u53ef\u80fd\u306aURL\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u3053\u306e\u30a8\u30e9\u30fc\u306e\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001[\u30d8\u30eb\u30d7\u30bb\u30af\u30b7\u30e7\u30f3\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044]({docs_url})", + "oauth_error": "\u7121\u52b9\u306a\u30c8\u30fc\u30af\u30f3\u30c7\u30fc\u30bf\u3092\u53d7\u4fe1\u3057\u307e\u3057\u305f\u3002" + }, + "create_entry": { + "default": "\u6b63\u5e38\u306b\u8a8d\u8a3c\u3055\u308c\u307e\u3057\u305f" + }, + "step": { + "pick_implementation": { + "title": "\u8a8d\u8a3c\u65b9\u6cd5\u306e\u9078\u629e" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/senz/translations/nl.json b/homeassistant/components/senz/translations/nl.json new file mode 100644 index 00000000000..0f50cb0f918 --- /dev/null +++ b/homeassistant/components/senz/translations/nl.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "Account is al geconfigureerd", + "already_in_progress": "De configuratiestroom is al aan de gang", + "authorize_url_timeout": "Time-out tijdens genereren autorisatie url.", + "missing_configuration": "De component is niet geconfigureerd. Gelieve de documentatie volgen.", + "no_url_available": "Geen URL beschikbaar. Voor informatie over deze fout, [check de helpsectie]({docs_url})", + "oauth_error": "Ongeldige token data ontvangen." + }, + "create_entry": { + "default": "Succesvol geauthenticeerd" + }, + "step": { + "pick_implementation": { + "title": "Kies een authenticatie methode" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/senz/translations/no.json b/homeassistant/components/senz/translations/no.json new file mode 100644 index 00000000000..6c384bb2e15 --- /dev/null +++ b/homeassistant/components/senz/translations/no.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "Kontoen er allerede konfigurert", + "already_in_progress": "Konfigurasjonsflyten p\u00e5g\u00e5r allerede", + "authorize_url_timeout": "Tidsavbrudd ved oppretting av godkjenningsadresse", + "missing_configuration": "Komponenten er ikke konfigurert. Venligst f\u00f8lg dokumentasjonen.", + "no_url_available": "Ingen URL tilgengelig. For mer informasjon om denne feilen, [sjekk hjelp seksjonen]({docs_url})", + "oauth_error": "Mottatt ugyldige token data." + }, + "create_entry": { + "default": "Vellykket Autentisering" + }, + "step": { + "pick_implementation": { + "title": "Velg Autentiserings metode" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/senz/translations/pl.json b/homeassistant/components/senz/translations/pl.json new file mode 100644 index 00000000000..d58148cb8fa --- /dev/null +++ b/homeassistant/components/senz/translations/pl.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "Konto jest ju\u017c skonfigurowane", + "already_in_progress": "Konfiguracja jest ju\u017c w toku", + "authorize_url_timeout": "Przekroczono limit czasu generowania URL autoryzacji", + "missing_configuration": "Komponent nie jest skonfigurowany. Post\u0119puj zgodnie z dokumentacj\u0105.", + "no_url_available": "Brak dost\u0119pnego adresu URL. Aby uzyska\u0107 informacje na temat tego b\u0142\u0119du, [sprawd\u017a sekcj\u0119 pomocy] ({docs_url})", + "oauth_error": "Otrzymano nieprawid\u0142owe dane tokena." + }, + "create_entry": { + "default": "Pomy\u015blnie uwierzytelniono" + }, + "step": { + "pick_implementation": { + "title": "Wybierz metod\u0119 uwierzytelniania" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/senz/translations/pt-BR.json b/homeassistant/components/senz/translations/pt-BR.json new file mode 100644 index 00000000000..7e3ff2f64a9 --- /dev/null +++ b/homeassistant/components/senz/translations/pt-BR.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "A conta j\u00e1 foi configurada", + "already_in_progress": "O fluxo de configura\u00e7\u00e3o j\u00e1 est\u00e1 em andamento", + "authorize_url_timeout": "Tempo limite gerando URL de autoriza\u00e7\u00e3o.", + "missing_configuration": "O componente n\u00e3o est\u00e1 configurado. Por favor, siga a documenta\u00e7\u00e3o.", + "no_url_available": "N\u00e3o h\u00e1 URL dispon\u00edvel. Para obter informa\u00e7\u00f5es sobre esse erro, [verifique a se\u00e7\u00e3o de ajuda]({docs_url})", + "oauth_error": "Dados de token recebidos inv\u00e1lidos." + }, + "create_entry": { + "default": "Autenticado com sucesso" + }, + "step": { + "pick_implementation": { + "title": "Escolha o m\u00e9todo de autentica\u00e7\u00e3o" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/senz/translations/ru.json b/homeassistant/components/senz/translations/ru.json new file mode 100644 index 00000000000..2f572831b5b --- /dev/null +++ b/homeassistant/components/senz/translations/ru.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "\u042d\u0442\u0430 \u0443\u0447\u0451\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 Home Assistant.", + "already_in_progress": "\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f.", + "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": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439.", + "no_url_available": "URL-\u0430\u0434\u0440\u0435\u0441 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d. \u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 [\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439]({docs_url}) \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431 \u044d\u0442\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0435.", + "oauth_error": "\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u043e\u043a\u0435\u043d\u0430." + }, + "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." + }, + "step": { + "pick_implementation": { + "title": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u043f\u043e\u0441\u043e\u0431 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/senz/translations/tr.json b/homeassistant/components/senz/translations/tr.json new file mode 100644 index 00000000000..3f6fa6f27ba --- /dev/null +++ b/homeassistant/components/senz/translations/tr.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "Hesap zaten yap\u0131land\u0131r\u0131lm\u0131\u015f", + "already_in_progress": "Yap\u0131land\u0131rma ak\u0131\u015f\u0131 zaten devam ediyor", + "authorize_url_timeout": "Yetkilendirme URL'si olu\u015ftururken zaman a\u015f\u0131m\u0131.", + "missing_configuration": "Bile\u015fen yap\u0131land\u0131r\u0131lmam\u0131\u015f. L\u00fctfen belgeleri takip edin.", + "no_url_available": "Kullan\u0131labilir URL yok. Bu hata hakk\u0131nda bilgi i\u00e7in [yard\u0131m b\u00f6l\u00fcm\u00fcne bak\u0131n]({docs_url})", + "oauth_error": "Ge\u00e7ersiz anahtar verileri al\u0131nd\u0131." + }, + "create_entry": { + "default": "Ba\u015far\u0131yla do\u011fruland\u0131" + }, + "step": { + "pick_implementation": { + "title": "Kimlik Do\u011frulama Y\u00f6ntemini Se\u00e7" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/senz/translations/zh-Hant.json b/homeassistant/components/senz/translations/zh-Hant.json new file mode 100644 index 00000000000..3bf08cf34c7 --- /dev/null +++ b/homeassistant/components/senz/translations/zh-Hant.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "\u5e33\u865f\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", + "already_in_progress": "\u8a2d\u5b9a\u5df2\u7d93\u9032\u884c\u4e2d", + "authorize_url_timeout": "\u7522\u751f\u8a8d\u8b49 URL \u6642\u903e\u6642\u3002", + "missing_configuration": "\u5143\u4ef6\u5c1a\u672a\u8a2d\u7f6e\uff0c\u8acb\u53c3\u95b1\u6587\u4ef6\u8aaa\u660e\u3002", + "no_url_available": "\u6c92\u6709\u53ef\u7528\u7684\u7db2\u5740\u3002\u95dc\u65bc\u6b64\u932f\u8aa4\u66f4\u8a73\u7d30\u8a0a\u606f\uff0c[\u9ede\u9078\u5354\u52a9\u7ae0\u7bc0]({docs_url})", + "oauth_error": "\u6536\u5230\u7121\u6548\u7684\u6b0a\u6756\u8cc7\u6599\u3002" + }, + "create_entry": { + "default": "\u5df2\u6210\u529f\u8a8d\u8b49" + }, + "step": { + "pick_implementation": { + "title": "\u9078\u64c7\u9a57\u8b49\u6a21\u5f0f" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/simplisafe/translations/bg.json b/homeassistant/components/simplisafe/translations/bg.json index 21cdaabf9a2..9d32e18ae5c 100644 --- a/homeassistant/components/simplisafe/translations/bg.json +++ b/homeassistant/components/simplisafe/translations/bg.json @@ -9,11 +9,6 @@ "unknown": "\u041d\u0435\u043e\u0447\u0430\u043a\u0432\u0430\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430" }, "step": { - "input_auth_code": { - "data": { - "auth_code": "\u041a\u043e\u0434 \u0437\u0430 \u043e\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f" - } - }, "reauth_confirm": { "data": { "password": "\u041f\u0430\u0440\u043e\u043b\u0430" diff --git a/homeassistant/components/simplisafe/translations/ca.json b/homeassistant/components/simplisafe/translations/ca.json index 3ab643b534f..7c590a052b1 100644 --- a/homeassistant/components/simplisafe/translations/ca.json +++ b/homeassistant/components/simplisafe/translations/ca.json @@ -12,15 +12,7 @@ "unknown": "Error inesperat" }, "step": { - "input_auth_code": { - "data": { - "auth_code": "Codi d'autoritzaci\u00f3" - }, - "description": "Introdueix el codi d'autoritzaci\u00f3 de l'URL de l'aplicaci\u00f3 web SimpliSafe:", - "title": "Acabament d'autoritzaci\u00f3" - }, "mfa": { - "description": "Consulta el correu i busca-hi un missatge amb un enlla\u00e7 de SimpliSafe. Despr\u00e9s de verificar l'enlla\u00e7, torna aqu\u00ed per completar la instal\u00b7laci\u00f3 de la integraci\u00f3.", "title": "Autenticaci\u00f3 multi-factor SimpliSafe" }, "reauth_confirm": { diff --git a/homeassistant/components/simplisafe/translations/cs.json b/homeassistant/components/simplisafe/translations/cs.json index bbb47121fbc..152c0282216 100644 --- a/homeassistant/components/simplisafe/translations/cs.json +++ b/homeassistant/components/simplisafe/translations/cs.json @@ -11,7 +11,6 @@ }, "step": { "mfa": { - "description": "Zkontrolujte, zda v\u00e1m do e-mail p\u0159i\u0161el odkaz od SimpliSafe. Po ov\u011b\u0159en\u00ed odkazu se vra\u0165te sem a dokon\u010dete instalaci integrace.", "title": "V\u00edcefaktorov\u00e9 ov\u011b\u0159ov\u00e1n\u00ed SimpliSafe" }, "reauth_confirm": { diff --git a/homeassistant/components/simplisafe/translations/de.json b/homeassistant/components/simplisafe/translations/de.json index 1ee4802e77f..51083565770 100644 --- a/homeassistant/components/simplisafe/translations/de.json +++ b/homeassistant/components/simplisafe/translations/de.json @@ -6,38 +6,37 @@ "wrong_account": "Die angegebenen Benutzeranmeldeinformationen stimmen nicht mit diesem SimpliSafe-Konto \u00fcberein." }, "error": { + "2fa_timed_out": "Zeit\u00fcberschreitung beim Warten auf Zwei-Faktor-Authentifizierung", "identifier_exists": "Konto bereits registriert", "invalid_auth": "Ung\u00fcltige Authentifizierung", "still_awaiting_mfa": "Immernoch warten auf MFA-E-Mail-Klick", "unknown": "Unerwarteter Fehler" }, "step": { - "input_auth_code": { - "data": { - "auth_code": "Autorisierungscode" - }, - "description": "Gib den Autorisierungscode von der URL der SimpliSafe-Webanwendung ein:", - "title": "Autorisierung abschlie\u00dfen" - }, "mfa": { - "description": "Pr\u00fcfe deine E-Mail auf einen Link von SimpliSafe. Kehre nach der Verifizierung des Links hierher zur\u00fcck, um die Installation der Integration abzuschlie\u00dfen.", "title": "SimpliSafe Multi-Faktor-Authentifizierung" }, "reauth_confirm": { "data": { "password": "Passwort" }, - "description": "Dein Zugriffstoken ist abgelaufen oder wurde widerrufen. Gib dein Passwort ein, um dein Konto erneut zu verkn\u00fcpfen.", + "description": "Bitte gib das Passwort f\u00fcr {username} erneut ein.", "title": "Integration erneut authentifizieren" }, + "sms_2fa": { + "data": { + "code": "Code" + }, + "description": "Gib den Code f\u00fcr die Zwei-Faktor-Authentifizierung ein, den du per SMS erhalten hast." + }, "user": { "data": { "auth_code": "Autorisierungscode", "code": "Code (wird in der Benutzeroberfl\u00e4che von Home Assistant verwendet)", "password": "Passwort", - "username": "E-Mail" + "username": "Benutzername" }, - "description": "SimpliSafe authentifiziert sich bei Home Assistant \u00fcber die SimpliSafe Web-App. Aufgrund technischer Beschr\u00e4nkungen gibt es am Ende dieses Prozesses einen manuellen Schritt; bitte stelle sicher, dass du die [Dokumentation]({docs_url}) liest, bevor du beginnst.\n\n1. Klicke [hier]({url}), um die SimpliSafe-Webanwendung zu \u00f6ffnen und deine Anmeldedaten einzugeben.\n\n2. Wenn der Anmeldevorgang abgeschlossen ist, kehre hierher zur\u00fcck und gib unten stehenden Autorisierungscode ein.", + "description": "Gib deinen Benutzernamen und Passwort ein.", "title": "Gib deine Informationen ein" } } diff --git a/homeassistant/components/simplisafe/translations/el.json b/homeassistant/components/simplisafe/translations/el.json index d35c59bcc40..880097c6cef 100644 --- a/homeassistant/components/simplisafe/translations/el.json +++ b/homeassistant/components/simplisafe/translations/el.json @@ -6,21 +6,14 @@ "wrong_account": "\u03a4\u03b1 \u03b4\u03b9\u03b1\u03c0\u03b9\u03c3\u03c4\u03b5\u03c5\u03c4\u03ae\u03c1\u03b9\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03c0\u03bf\u03c5 \u03c0\u03b1\u03c1\u03ad\u03c7\u03bf\u03bd\u03c4\u03b1\u03b9 \u03b4\u03b5\u03bd \u03c4\u03b1\u03b9\u03c1\u03b9\u03ac\u03b6\u03bf\u03c5\u03bd \u03bc\u03b5 \u03b1\u03c5\u03c4\u03cc\u03bd \u03c4\u03bf\u03bd \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc SimpliSafe." }, "error": { + "2fa_timed_out": "\u0388\u03bb\u03b7\u03be\u03b5 \u03c4\u03bf \u03c7\u03c1\u03bf\u03bd\u03b9\u03ba\u03cc \u03cc\u03c1\u03b9\u03bf \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b1\u03bd\u03b1\u03bc\u03bf\u03bd\u03ae \u03b3\u03b9\u03b1 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03b4\u03cd\u03bf \u03c0\u03b1\u03c1\u03b1\u03b3\u03cc\u03bd\u03c4\u03c9\u03bd", "identifier_exists": "\u039b\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 \u03ae\u03b4\u03b7 \u03ba\u03b1\u03c4\u03b1\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c2", "invalid_auth": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", "still_awaiting_mfa": "\u0391\u03bd\u03b1\u03bc\u03ad\u03bd\u03b5\u03c4\u03b1\u03b9 \u03b1\u03ba\u03cc\u03bc\u03b7 \u03ba\u03bb\u03b9\u03ba \u03c3\u03c4\u03bf email \u03c4\u03bf\u03c5 \u03a5\u03c0\u03bf\u03c5\u03c1\u03b3\u03b5\u03af\u03bf\u03c5 \u039f\u03b9\u03ba\u03bf\u03bd\u03bf\u03bc\u03b9\u03ba\u03ce\u03bd", "unknown": "\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" }, "step": { - "input_auth_code": { - "data": { - "auth_code": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03cc\u03c4\u03b7\u03c3\u03b7\u03c2" - }, - "description": "\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03cc\u03c4\u03b7\u03c3\u03b7\u03c2 \u03b1\u03c0\u03cc \u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03c4\u03b7\u03c2 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae\u03c2 SimpliSafe web:", - "title": "\u039f\u03bb\u03bf\u03ba\u03bb\u03ae\u03c1\u03c9\u03c3\u03b7 \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03cc\u03c4\u03b7\u03c3\u03b7\u03c2" - }, "mfa": { - "description": "\u0395\u03bb\u03ad\u03b3\u03be\u03c4\u03b5 \u03c4\u03bf email \u03c3\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03ad\u03bd\u03b1\u03bd \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd SimpliSafe. \u0391\u03c6\u03bf\u03cd \u03b5\u03c0\u03b1\u03bb\u03b7\u03b8\u03b5\u03cd\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf, \u03b5\u03c0\u03b9\u03c3\u03c4\u03c1\u03ad\u03c8\u03c4\u03b5 \u03b5\u03b4\u03ce \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03bf\u03bb\u03bf\u03ba\u03bb\u03b7\u03c1\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b5\u03b3\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7\u03c2.", "title": "\u03a0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03c0\u03bf\u03bb\u03bb\u03b1\u03c0\u03bb\u03ce\u03bd \u03c0\u03b1\u03c1\u03b1\u03b3\u03cc\u03bd\u03c4\u03c9\u03bd SimpliSafe" }, "reauth_confirm": { @@ -30,6 +23,12 @@ "description": "\u0397 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03ae \u03c3\u03b1\u03c2 \u03ad\u03c7\u03b5\u03b9 \u03bb\u03ae\u03be\u03b5\u03b9 \u03ae \u03b1\u03bd\u03b1\u03ba\u03bb\u03b7\u03b8\u03b5\u03af. \u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03ae\u03c2 \u03c3\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03b5\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac \u03c4\u03bf\u03bd \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc \u03c3\u03b1\u03c2.", "title": "\u0395\u03c0\u03b1\u03bd\u03b1\u03bb\u03b7\u03c0\u03c4\u03b9\u03ba\u03cc\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7\u03c2" }, + "sms_2fa": { + "data": { + "code": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2" + }, + "description": "\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03b4\u03cd\u03bf \u03c0\u03b1\u03c1\u03b1\u03b3\u03cc\u03bd\u03c4\u03c9\u03bd \u03c0\u03bf\u03c5 \u03c3\u03b1\u03c2 \u03b5\u03c3\u03c4\u03ac\u03bb\u03b7 \u03bc\u03ad\u03c3\u03c9 SMS." + }, "user": { "data": { "auth_code": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03cc\u03c4\u03b7\u03c3\u03b7\u03c2", diff --git a/homeassistant/components/simplisafe/translations/en.json b/homeassistant/components/simplisafe/translations/en.json index 5dd146d757b..5d8cc4b4e1c 100644 --- a/homeassistant/components/simplisafe/translations/en.json +++ b/homeassistant/components/simplisafe/translations/en.json @@ -2,14 +2,20 @@ "config": { "abort": { "already_configured": "This SimpliSafe account is already in use.", - "reauth_successful": "Re-authentication was successful" + "reauth_successful": "Re-authentication was successful", + "wrong_account": "The user credentials provided do not match this SimpliSafe account." }, "error": { "2fa_timed_out": "Timed out while waiting for two-factor authentication", + "identifier_exists": "Account already registered", "invalid_auth": "Invalid authentication", + "still_awaiting_mfa": "Still awaiting MFA email click", "unknown": "Unexpected error" }, "step": { + "mfa": { + "title": "SimpliSafe Multi-Factor Authentication" + }, "reauth_confirm": { "data": { "password": "Password" @@ -25,10 +31,13 @@ }, "user": { "data": { + "auth_code": "Authorization Code", + "code": "Code (used in Home Assistant UI)", "password": "Password", "username": "Username" }, - "description": "Input your username and password." + "description": "Input your username and password.", + "title": "Fill in your information." } } }, diff --git a/homeassistant/components/simplisafe/translations/es.json b/homeassistant/components/simplisafe/translations/es.json index 690e01206d3..d4b066890f1 100644 --- a/homeassistant/components/simplisafe/translations/es.json +++ b/homeassistant/components/simplisafe/translations/es.json @@ -12,15 +12,7 @@ "unknown": "Error inesperado" }, "step": { - "input_auth_code": { - "data": { - "auth_code": "C\u00f3digo de Autorizaci\u00f3n" - }, - "description": "Introduzca el c\u00f3digo de autorizaci\u00f3n desde la URL de la aplicaci\u00f3n web de SimpliSafe:", - "title": "Terminar Autorizaci\u00f3n" - }, "mfa": { - "description": "Comprueba tu correo electr\u00f3nico para obtener un enlace desde SimpliSafe. Despu\u00e9s de verificar el enlace, vulve aqu\u00ed para completar la instalaci\u00f3n de la integraci\u00f3n.", "title": "Autenticaci\u00f3n Multi-Factor SimpliSafe" }, "reauth_confirm": { diff --git a/homeassistant/components/simplisafe/translations/et.json b/homeassistant/components/simplisafe/translations/et.json index 97e59415123..83c441de9f9 100644 --- a/homeassistant/components/simplisafe/translations/et.json +++ b/homeassistant/components/simplisafe/translations/et.json @@ -6,38 +6,37 @@ "wrong_account": "Esitatud kasutaja mandaadid ei \u00fchti selle SimpliSafe kontoga." }, "error": { + "2fa_timed_out": "Kahefaktoriline autentimine aegus", "identifier_exists": "Konto on juba registreeritud", "invalid_auth": "Tuvastamise viga", "still_awaiting_mfa": "Ootan endiselt MFA e-posti klikki", "unknown": "Tundmatu viga" }, "step": { - "input_auth_code": { - "data": { - "auth_code": "Tuvastuskood" - }, - "description": "Sisesta tuvastuskood SimpliSafe veebirakenduse URL-ist:", - "title": "L\u00f5peta tuvastamine" - }, "mfa": { - "description": "Kontrolli oma e-posti: link SimpliSafe-lt. P\u00e4rast lingi kontrollimist naase siia, et viia l\u00f5pule sidumise installimine.", "title": "SimpliSafe mitmeastmeline autentimine" }, "reauth_confirm": { "data": { "password": "Salas\u00f5na" }, - "description": "Juurdep\u00e4\u00e4suluba on aegunud v\u00f5i on see t\u00fchistatud. Konto taassidumiseks sisesta salas\u00f5na.", + "description": "Taassisesta salas\u00f5na kasutajanimele {username}.", "title": "Taastuvasta SimpliSafe'i konto" }, + "sms_2fa": { + "data": { + "code": "Kood" + }, + "description": "Sisesta SMS-iga saadetud kahefaktoriline autentimiskood." + }, "user": { "data": { "auth_code": "Tuvastuskood", "code": "Kood (kasutatakse Home Assistant'i kasutajaliideses)", "password": "Salas\u00f5na", - "username": "E-post" + "username": "Kasutajanimi" }, - "description": "SimpliSafe autendib Home Assistantiga SimpliSafe'i veebirakenduse kaudu. Tehniliste piirangute t\u00f5ttu on selle protsessi l\u00f5pus k\u00e4sitsi samm; enne alustamist loe kindlasti [dokumentatsioon]( {docs_url} \n\n 1. SimpliSafe'i veebirakenduse avamiseks ja oma mandaatide sisestamiseks kl\u00f5psa [siin]( {url} \n\n 2. Kui sisselogimisprotsess on l\u00f5ppenud, naase siia ja sisesta alltoodud tuvastuskood.", + "description": "Sisesta kasutajatunnus ja salas\u00f5na", "title": "Sisesta oma teave." } } diff --git a/homeassistant/components/simplisafe/translations/fr.json b/homeassistant/components/simplisafe/translations/fr.json index d50ac11f851..5ed837d405a 100644 --- a/homeassistant/components/simplisafe/translations/fr.json +++ b/homeassistant/components/simplisafe/translations/fr.json @@ -6,38 +6,37 @@ "wrong_account": "Les informations d'identification d'utilisateur fournies ne correspondent pas \u00e0 ce compte SimpliSafe." }, "error": { + "2fa_timed_out": "D\u00e9lai d'attente de l'authentification \u00e0 deux facteurs expir\u00e9", "identifier_exists": "Compte d\u00e9j\u00e0 enregistr\u00e9", "invalid_auth": "Authentification non valide", "still_awaiting_mfa": "En attente de clic sur le message \u00e9lectronique d'authentification multi facteur", "unknown": "Erreur inattendue" }, "step": { - "input_auth_code": { - "data": { - "auth_code": "Code d'autorisation" - }, - "description": "Saisissez le code d'autorisation \u00e0 partir de l'URL de l'application Web SimpliSafe\u00a0:", - "title": "Terminer l'autorisation" - }, "mfa": { - "description": "V\u00e9rifiez votre messagerie pour un lien de SimpliSafe. Apr\u00e8s avoir v\u00e9rifi\u00e9 le lien, revenez ici pour terminer l'installation de l'int\u00e9gration.", "title": "Authentification multi facteur SimpliSafe" }, "reauth_confirm": { "data": { "password": "Mot de passe" }, - "description": "Votre jeton d'acc\u00e8s a expir\u00e9 ou a \u00e9t\u00e9 r\u00e9voqu\u00e9. Entrez votre mot de passe pour r\u00e9 associer votre compte.", + "description": "Veuillez de nouveau saisir le mot de passe pour {username}.", "title": "R\u00e9-authentifier l'int\u00e9gration" }, + "sms_2fa": { + "data": { + "code": "Code" + }, + "description": "Saisissez le code d'authentification \u00e0 deux facteurs qui vous a \u00e9t\u00e9 envoy\u00e9 par SMS." + }, "user": { "data": { "auth_code": "Code d'autorisation", "code": "Code (utilis\u00e9 dans l'interface Home Assistant)", "password": "Mot de passe", - "username": "Courriel" + "username": "Nom d'utilisateur" }, - "description": "SimpliSafe s'authentifie avec Home Assistant via l'application Web SimpliSafe. En raison de limitations techniques, il y a une \u00e9tape manuelle \u00e0 la fin de ce processus ; veuillez vous assurer de lire la [documentation]( {docs_url} ) avant de commencer. \n\n 1. Cliquez sur [ici]( {url} ) pour ouvrir l'application Web SimpliSafe et saisissez vos informations d'identification. \n\n 2. Une fois le processus de connexion termin\u00e9, revenez ici et saisissez le code d'autorisation ci-dessous.", + "description": "Saisissez votre nom d'utilisateur et votre mot de passe.", "title": "Veuillez saisir vos informations" } } diff --git a/homeassistant/components/simplisafe/translations/hu.json b/homeassistant/components/simplisafe/translations/hu.json index 69881266c4f..e1b8769f4b6 100644 --- a/homeassistant/components/simplisafe/translations/hu.json +++ b/homeassistant/components/simplisafe/translations/hu.json @@ -6,38 +6,37 @@ "wrong_account": "A megadott felhaszn\u00e1l\u00f3i hiteles\u00edt\u0151 adatok nem j\u00f3k ehhez a SimpliSafe fi\u00f3khoz." }, "error": { + "2fa_timed_out": "A k\u00e9tfaktoros hiteles\u00edt\u00e9sre val\u00f3 v\u00e1rakoz\u00e1s ideje lej\u00e1rt", "identifier_exists": "Fi\u00f3k m\u00e1r regisztr\u00e1lva van", "invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s", "still_awaiting_mfa": "M\u00e9g v\u00e1r az MFA e-mail kattint\u00e1sra", "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" }, "step": { - "input_auth_code": { - "data": { - "auth_code": "Enged\u00e9lyez\u00e9si k\u00f3d" - }, - "description": "Adja meg a SimpliSafe webes alkalmaz\u00e1s URL-c\u00edm\u00e9n tal\u00e1lhat\u00f3 enged\u00e9lyez\u00e9si k\u00f3dot:", - "title": "Enged\u00e9lyez\u00e9s befejez\u00e9se" - }, "mfa": { - "description": "Ellen\u0151rizze e-mailj\u00e9ben a SimpliSafe linkj\u00e9t. A link ellen\u0151rz\u00e9se ut\u00e1n t\u00e9rjen vissza ide, \u00e9s fejezze be az integr\u00e1ci\u00f3 telep\u00edt\u00e9s\u00e9t.", "title": "SimpliSafe t\u00f6bbt\u00e9nyez\u0151s hiteles\u00edt\u00e9s" }, "reauth_confirm": { "data": { "password": "Jelsz\u00f3" }, - "description": "Hozz\u00e1f\u00e9r\u00e9se lej\u00e1rt vagy visszavont\u00e1k. Adja meg jelszav\u00e1t a fi\u00f3k \u00fajb\u00f3li \u00f6sszekapcsol\u00e1s\u00e1hoz.", + "description": "K\u00e9rem, adja meg ism\u00e9t {username} jelszav\u00e1t.", "title": "Integr\u00e1ci\u00f3 \u00fajrahiteles\u00edt\u00e9se" }, + "sms_2fa": { + "data": { + "code": "K\u00f3d" + }, + "description": "\u00cdrja be a k\u00e9tfaktoros hiteles\u00edt\u00e9si k\u00f3dot, amelyet SMS-ben k\u00fcldtek \u00d6nnek." + }, "user": { "data": { "auth_code": "Enged\u00e9lyez\u00e9si k\u00f3d", "code": "K\u00f3d (a Home Assistant felhaszn\u00e1l\u00f3i fel\u00fclet\u00e9n haszn\u00e1latos)", "password": "Jelsz\u00f3", - "username": "E-mail" + "username": "Felhaszn\u00e1l\u00f3n\u00e9v" }, - "description": "A SimpliSafe rendszere webalkalmaz\u00e1son kereszt\u00fcl hiteles\u00edt\u00e9si mag\u00e1t. A technikai korl\u00e1toz\u00e1sok miatt a folyamat v\u00e9g\u00e9n van egy k\u00e9zi l\u00e9p\u00e9s; k\u00e9rj\u00fck, indul\u00e1s el\u0151tt olvassa el a [dokument\u00e1ci\u00f3t]({docs_url}).\n\n1. Ha k\u00e9szen \u00e1ll, kattintson [ide]({url}) a SimpliSafe webalkalmaz\u00e1s megnyit\u00e1s\u00e1hoz \u00e9s a hiteles\u00edt\u0151 adatok bevitel\u00e9hez. \n\n2. Amikor a folyamat befejez\u0151d\u00f6tt, t\u00e9rjen vissza ide, \u00e9s \u00edrja be a k\u00f3dot.", + "description": "Adja meg felhaszn\u00e1l\u00f3nev\u00e9t \u00e9s jelszav\u00e1t.", "title": "T\u00f6ltse ki az adatait" } } diff --git a/homeassistant/components/simplisafe/translations/id.json b/homeassistant/components/simplisafe/translations/id.json index 743af691714..ad0ad01be63 100644 --- a/homeassistant/components/simplisafe/translations/id.json +++ b/homeassistant/components/simplisafe/translations/id.json @@ -6,38 +6,37 @@ "wrong_account": "Kredensial pengguna yang diberikan tidak cocok dengan akun SimpliSafe ini." }, "error": { + "2fa_timed_out": "Tenggang waktu habis saat menunggu autentikasi dua faktor", "identifier_exists": "Akun sudah terdaftar", "invalid_auth": "Autentikasi tidak valid", "still_awaiting_mfa": "Masih menunggu pengeklikan dari email MFA", "unknown": "Kesalahan yang tidak diharapkan" }, "step": { - "input_auth_code": { - "data": { - "auth_code": "Kode Otorisasi" - }, - "description": "Masukkan kode otorisasi dari URL aplikasi web SimpliSafe:", - "title": "Selesaikan Otorisasi" - }, "mfa": { - "description": "Periksa email Anda untuk mendapatkan tautan dari SimpliSafe. Setelah memverifikasi tautan, kembali ke sini untuk menyelesaikan instalasi integrasi.", "title": "Autentikasi Multi-Faktor SimpliSafe" }, "reauth_confirm": { "data": { "password": "Kata Sandi" }, - "description": "Akses Anda telah kedaluwarsa atau dicabut. Masukkan kata sandi Anda untuk menautkan kembali akun Anda.", + "description": "Masukkan kembali kata sandi untuk {username}.", "title": "Autentikasi Ulang Integrasi" }, + "sms_2fa": { + "data": { + "code": "Kode" + }, + "description": "Masukkan kode autentikasi dua faktor yang dikirimkan kepada Anda melalui SMS." + }, "user": { "data": { "auth_code": "Kode Otorisasi", "code": "Kode (digunakan di antarmuka Home Assistant)", "password": "Kata Sandi", - "username": "Email" + "username": "Nama Pengguna" }, - "description": "SimpliSafe mengautentikasi dengan Home Assistant melalui aplikasi web. Karena keterbatasan teknis, ada langkah manual di akhir proses ini; pastikan Anda membaca [dokumentasi] ({docs_url}) sebelum memulai.\n\n1. Klik [di sini]({url}) untuk membuka aplikasi web SimpliSafe dan masukkan kredensial Anda. \n\n2. Setelah proses masuk selesai, kembali ke sini dan klik masukkan kode otorisasi di bawah ini.", + "description": "Masukkan nama pengguna dan kata sandi Anda.", "title": "Isi informasi Anda." } } diff --git a/homeassistant/components/simplisafe/translations/it.json b/homeassistant/components/simplisafe/translations/it.json index 0221536698c..ad9e491ab9a 100644 --- a/homeassistant/components/simplisafe/translations/it.json +++ b/homeassistant/components/simplisafe/translations/it.json @@ -6,38 +6,37 @@ "wrong_account": "Le credenziali utente fornite non corrispondono a questo account SimpliSafe." }, "error": { + "2fa_timed_out": "Timeout durante l'attesa dell'autenticazione a due fattori", "identifier_exists": "Account gi\u00e0 registrato", "invalid_auth": "Autenticazione non valida", "still_awaiting_mfa": "Ancora in attesa del clic sull'email MFA", "unknown": "Errore imprevisto" }, "step": { - "input_auth_code": { - "data": { - "auth_code": "Codice di autorizzazione" - }, - "description": "Immettere il codice di autorizzazione dall'URL dell'app web SimpliSafe:", - "title": "Completa l'autorizzazione" - }, "mfa": { - "description": "Controlla la tua email per trovare un collegamento da SimpliSafe. Dopo aver verificato il collegamento, torna qui per completare l'installazione dell'integrazione.", "title": "Autenticazione a pi\u00f9 fattori (MFA) SimpliSafe " }, "reauth_confirm": { "data": { "password": "Password" }, - "description": "Il tuo accesso \u00e8 scaduto o revocato. Inserisci la password per ricollegare il tuo account.", + "description": "Digita nuovamente la password per {username}.", "title": "Autentica nuovamente l'integrazione" }, + "sms_2fa": { + "data": { + "code": "Codice" + }, + "description": "Digita il codice di autenticazione a due fattori che ti \u00e8 stato inviato tramite SMS." + }, "user": { "data": { "auth_code": "Codice di autorizzazione", "code": "Codice (utilizzato nell'Interfaccia Utente di Home Assistant)", "password": "Password", - "username": "Email" + "username": "Nome utente" }, - "description": "SimpliSafe si autentica con Home Assistant tramite l'app Web SimpliSafe. A causa di limitazioni tecniche, alla fine di questo processo \u00e8 previsto un passaggio manuale; assicurati di leggere la [documentazione]({docs_url}) prima di iniziare. \n\n 1. Fai clic su [qui]({url}) per aprire l'app Web SimpliSafe e inserire le tue credenziali. \n\n 2. Quando il processo di accesso \u00e8 completo, torna qui e inserisci il codice di autorizzazione di seguito.", + "description": "Digita il tuo nome utente e password.", "title": "Inserisci le tue informazioni." } } diff --git a/homeassistant/components/simplisafe/translations/ja.json b/homeassistant/components/simplisafe/translations/ja.json index 925ae801a0d..74b0b20c65e 100644 --- a/homeassistant/components/simplisafe/translations/ja.json +++ b/homeassistant/components/simplisafe/translations/ja.json @@ -12,15 +12,7 @@ "unknown": "\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc" }, "step": { - "input_auth_code": { - "data": { - "auth_code": "\u8a8d\u8a3c\u30b3\u30fc\u30c9" - }, - "description": "SimpliSafe Web\u30a2\u30d7\u30ea\u306eURL\u304b\u3089\u8a8d\u8a3c\u30b3\u30fc\u30c9\u3092\u5165\u529b:", - "title": "\u627f\u8a8d\u7d42\u4e86" - }, "mfa": { - "description": "SimpliSafe\u304b\u3089\u306e\u30ea\u30f3\u30af\u306b\u3064\u3044\u3066\u306f\u30e1\u30fc\u30eb\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30ea\u30f3\u30af\u3092\u78ba\u8a8d\u3057\u305f\u3089\u3001\u3053\u3053\u306b\u623b\u3063\u3066\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u5b8c\u4e86\u3057\u307e\u3059\u3002", "title": "SimpliSafe\u591a\u8981\u7d20\u8a8d\u8a3c" }, "reauth_confirm": { diff --git a/homeassistant/components/simplisafe/translations/ko.json b/homeassistant/components/simplisafe/translations/ko.json index 194fa6cecf4..5c98e8abaa6 100644 --- a/homeassistant/components/simplisafe/translations/ko.json +++ b/homeassistant/components/simplisafe/translations/ko.json @@ -12,7 +12,6 @@ }, "step": { "mfa": { - "description": "\uc774\uba54\uc77c\uc5d0\uc11c SimpliSafe\uc758 \ub9c1\ud06c\ub97c \ud655\uc778\ud574\uc8fc\uc138\uc694. \ub9c1\ud06c\ub97c \ud655\uc778\ud55c \ud6c4 \uc5ec\uae30\ub85c \ub3cc\uc544\uc640 \ud1b5\ud569 \uad6c\uc131\uc694\uc18c\uc758 \uc124\uce58\ub97c \uc644\ub8cc\ud574\uc8fc\uc138\uc694.", "title": "SimpliSafe \ub2e4\ub2e8\uacc4 \uc778\uc99d" }, "reauth_confirm": { diff --git a/homeassistant/components/simplisafe/translations/lb.json b/homeassistant/components/simplisafe/translations/lb.json index 225c4457a10..080d8afd394 100644 --- a/homeassistant/components/simplisafe/translations/lb.json +++ b/homeassistant/components/simplisafe/translations/lb.json @@ -12,7 +12,6 @@ }, "step": { "mfa": { - "description": "Kuck den E-Mailen fir ee Link vun SimpliSafe. Nodeem de Link opgeruff gouf, komm heihinner zer\u00e9ck fir d'Installatioun vun der Integratioun ofzeschl\u00e9issen.", "title": "SimpliSafe Multi-Faktor Authentifikatioun" }, "reauth_confirm": { diff --git a/homeassistant/components/simplisafe/translations/nl.json b/homeassistant/components/simplisafe/translations/nl.json index 3380746db25..33bc10ac85d 100644 --- a/homeassistant/components/simplisafe/translations/nl.json +++ b/homeassistant/components/simplisafe/translations/nl.json @@ -6,38 +6,37 @@ "wrong_account": "De opgegeven gebruikersgegevens komen niet overeen met deze SimpliSafe-account." }, "error": { + "2fa_timed_out": "Timed out tijdens het wachten op twee-factor authenticatie", "identifier_exists": "Account bestaat al", "invalid_auth": "Ongeldige authenticatie", "still_awaiting_mfa": "Wacht nog steeds op MFA-e-mailklik", "unknown": "Onverwachte fout" }, "step": { - "input_auth_code": { - "data": { - "auth_code": "Autorisatie Code" - }, - "description": "Voer de autorisatiecode in van de SimpliSafe web app URL:", - "title": "Autorisatie voltooien" - }, "mfa": { - "description": "Controleer uw e-mail voor een link van SimpliSafe. Nadat u de link hebt geverifieerd, kom hier terug om de installatie van de integratie te voltooien.", "title": "SimpliSafe Multi-Factor Authenticatie" }, "reauth_confirm": { "data": { "password": "Wachtwoord" }, - "description": "Uw toegangstoken is verlopen of ingetrokken. Voer uw wachtwoord in om uw account opnieuw te koppelen.", + "description": "Voer het wachtwoord voor {username} opnieuw in.", "title": "Verifieer de integratie opnieuw" }, + "sms_2fa": { + "data": { + "code": "Code" + }, + "description": "Voer de twee-factor authenticatiecode in die u heeft ontvangen via SMS" + }, "user": { "data": { "auth_code": "Autorisatie Code", "code": "Code (gebruikt in Home Assistant)", "password": "Wachtwoord", - "username": "E-mail" + "username": "Gebruikersnaam" }, - "description": "SimpliSafe verifieert met Home Assistant via de SimpliSafe web app. Vanwege technische beperkingen is er een handmatige stap aan het einde van dit proces; zorg ervoor dat u de [documentatie]({docs_url}) leest voordat u begint.\n\n1. Klik op [hier]({url}) om de SimpliSafe web app te openen en voer uw referenties in.\n\n2. Wanneer het aanmeldingsproces is voltooid, gaat u hier terug en voert u de onderstaande autorisatiecode in.", + "description": "Voer uw gebruikersnaam en wachtwoord in.", "title": "Vul uw gegevens in" } } diff --git a/homeassistant/components/simplisafe/translations/no.json b/homeassistant/components/simplisafe/translations/no.json index 2ac57586f0b..6527f2e4ae2 100644 --- a/homeassistant/components/simplisafe/translations/no.json +++ b/homeassistant/components/simplisafe/translations/no.json @@ -6,38 +6,37 @@ "wrong_account": "Brukerlegitimasjonen som er oppgitt, samsvarer ikke med denne SimpliSafe -kontoen." }, "error": { + "2fa_timed_out": "Tidsavbrutt mens du ventet p\u00e5 tofaktorautentisering", "identifier_exists": "Konto er allerede registrert", "invalid_auth": "Ugyldig godkjenning", "still_awaiting_mfa": "Forventer fortsatt MFA-e-postklikk", "unknown": "Uventet feil" }, "step": { - "input_auth_code": { - "data": { - "auth_code": "Autorisasjonskode" - }, - "description": "Skriv inn autorisasjonskoden fra SimpliSafe -webappens URL:", - "title": "Fullf\u00f8r autorisasjon" - }, "mfa": { - "description": "Sjekk e-posten din for en lenke fra SimpliSafe. Etter \u00e5 ha bekreftet lenken, g\u00e5 tilbake hit for \u00e5 fullf\u00f8re installasjonen av integrasjonen.", "title": "SimpliSafe flertrinnsbekreftelse" }, "reauth_confirm": { "data": { "password": "Passord" }, - "description": "Tilgangen din har utl\u00f8pt eller blitt tilbakekalt. Skriv inn passordet ditt for \u00e5 koble kontoen din til p\u00e5 nytt.", + "description": "Vennligst skriv inn passordet for {username} p\u00e5 nytt.", "title": "Godkjenne integrering p\u00e5 nytt" }, + "sms_2fa": { + "data": { + "code": "Kode" + }, + "description": "Skriv inn tofaktorautentiseringskoden sendt til deg via SMS." + }, "user": { "data": { "auth_code": "Autorisasjonskode", "code": "Kode (brukt i Home Assistant brukergrensesnittet)", "password": "Passord", - "username": "E-post" + "username": "Brukernavn" }, - "description": "SimpliSafe autentiserer med Home Assistant via SimpliSafe-nettappen. P\u00e5 grunn av tekniske begrensninger er det et manuelt trinn p\u00e5 slutten av denne prosessen; s\u00f8rg for at du leser [dokumentasjonen]( {docs_url} ) f\u00f8r du starter. \n\n 1. Klikk [her]( {url} ) for \u00e5 \u00e5pne SimpliSafe-nettappen og angi legitimasjonen din. \n\n 2. N\u00e5r p\u00e5loggingsprosessen er fullf\u00f8rt, g\u00e5 tilbake hit og skriv inn autorisasjonskoden nedenfor.", + "description": "Skriv inn brukernavn og passord.", "title": "Fyll ut informasjonen din." } } diff --git a/homeassistant/components/simplisafe/translations/pl.json b/homeassistant/components/simplisafe/translations/pl.json index e95f99c1d2b..21f38d5bff5 100644 --- a/homeassistant/components/simplisafe/translations/pl.json +++ b/homeassistant/components/simplisafe/translations/pl.json @@ -6,38 +6,37 @@ "wrong_account": "Podane dane uwierzytelniaj\u0105ce u\u017cytkownika nie pasuj\u0105 do tego konta SimpliSafe." }, "error": { + "2fa_timed_out": "Przekroczono limit czasu oczekiwania na uwierzytelnianie dwusk\u0142adnikowe", "identifier_exists": "Konto jest ju\u017c zarejestrowane", "invalid_auth": "Niepoprawne uwierzytelnienie", "still_awaiting_mfa": "Wci\u0105\u017c nie potwierdzono linka w e-mailu od SimpliSafe", "unknown": "Nieoczekiwany b\u0142\u0105d" }, "step": { - "input_auth_code": { - "data": { - "auth_code": "Kod autoryzacji" - }, - "description": "Wprowad\u017a kod autoryzacyjny z adresu URL aplikacji internetowej SimpliSafe:", - "title": "Zako\u0144cz autoryzacj\u0119" - }, "mfa": { - "description": "Sprawd\u017a e-mail od SimpliSafe. Po zweryfikowaniu linka, wr\u00f3\u0107 tutaj, aby doko\u0144czy\u0107 instalacj\u0119 integracji.", "title": "Uwierzytelnianie wielosk\u0142adnikowe SimpliSafe" }, "reauth_confirm": { "data": { "password": "Has\u0142o" }, - "description": "Tw\u00f3j dost\u0119p wygas\u0142 lub zosta\u0142 uniewa\u017cniony. Wprowad\u017a has\u0142o, aby ponownie po\u0142\u0105czy\u0107 swoje konto.", + "description": "Wprowad\u017a ponownie has\u0142o dla u\u017cytkownika {username}.", "title": "Ponownie uwierzytelnij integracj\u0119" }, + "sms_2fa": { + "data": { + "code": "Kod" + }, + "description": "Wprowad\u017a kod uwierzytelniania dwusk\u0142adnikowego, kt\u00f3ry zosta\u0142 wys\u0142any do Ciebie SMS-em." + }, "user": { "data": { "auth_code": "Kod autoryzacji", "code": "Kod (u\u017cywany w interfejsie Home Assistant)", "password": "Has\u0142o", - "username": "Adres e-mail" + "username": "Nazwa u\u017cytkownika" }, - "description": "SimpliSafe uwierzytelnia si\u0119 z Home Assistantem za po\u015brednictwem aplikacji internetowej SimpliSafe. Ze wzgl\u0119du na ograniczenia techniczne na ko\u0144cu tego procesu znajduje si\u0119 r\u0119czny krok; upewnij si\u0119, \u017ce przed rozpocz\u0119ciem przeczyta\u0142e\u015b [dokumentacj\u0119]( {docs_url} ).\n\n1. Kliknij [tutaj]( {url} ), aby otworzy\u0107 aplikacj\u0119 internetow\u0105 SimpliSafe i wprowadzi\u0107 swoje dane uwierzytelniaj\u0105ce. \n\n2. Po zako\u0144czeniu procesu logowania wr\u00f3\u0107 tutaj i wprowad\u017a poni\u017cszy kod autoryzacyjny.", + "description": "Wprowad\u017a swoj\u0105 nazw\u0119 u\u017cytkownika i has\u0142o.", "title": "Wprowad\u017a dane" } } diff --git a/homeassistant/components/simplisafe/translations/pt-BR.json b/homeassistant/components/simplisafe/translations/pt-BR.json index d1473074cca..1dec82ec74d 100644 --- a/homeassistant/components/simplisafe/translations/pt-BR.json +++ b/homeassistant/components/simplisafe/translations/pt-BR.json @@ -6,38 +6,37 @@ "wrong_account": "As credenciais de usu\u00e1rio fornecidas n\u00e3o correspondem a esta conta SimpliSafe." }, "error": { + "2fa_timed_out": "Expirou enquanto aguardava a autentica\u00e7\u00e3o de dois fatores", "identifier_exists": "Conta j\u00e1 cadastrada", "invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida", "still_awaiting_mfa": "Ainda aguardando clique no e-mail da MFA", "unknown": "Erro inesperado" }, "step": { - "input_auth_code": { - "data": { - "auth_code": "C\u00f3digo de Autoriza\u00e7\u00e3o" - }, - "description": "Insira o c\u00f3digo de autoriza\u00e7\u00e3o do URL do aplicativo Web SimpliSafe:", - "title": "Concluir autoriza\u00e7\u00e3o" - }, "mfa": { - "description": "Verifique seu e-mail para obter um link do SimpliSafe. Ap\u00f3s verificar o link, volte aqui para concluir a instala\u00e7\u00e3o da integra\u00e7\u00e3o.", "title": "Autentica\u00e7\u00e3o SimpliSafe multifator" }, "reauth_confirm": { "data": { "password": "Senha" }, - "description": "Seu acesso expirou ou foi revogado. Digite sua senha para vincular novamente sua conta.", + "description": "Por favor, digite novamente a senha para {username} .", "title": "Reautenticar Integra\u00e7\u00e3o" }, + "sms_2fa": { + "data": { + "code": "C\u00f3digo" + }, + "description": "Insira o c\u00f3digo de autentica\u00e7\u00e3o de dois fatores enviado a voc\u00ea via SMS." + }, "user": { "data": { "auth_code": "C\u00f3digo de autoriza\u00e7\u00e3o", "code": "C\u00f3digo (usado na IU do Home Assistant)", "password": "Senha", - "username": "Email" + "username": "Usu\u00e1rio" }, - "description": "O SimpliSafe autentica com o Home Assistant por meio do aplicativo da Web SimpliSafe. Por limita\u00e7\u00f5es t\u00e9cnicas, existe uma etapa manual ao final deste processo; certifique-se de ler a [documenta\u00e7\u00e3o]( {docs_url} ) antes de come\u00e7ar. \n\n 1. Clique [aqui]( {url} ) para abrir o aplicativo da web SimpliSafe e insira suas credenciais. \n\n 2. Quando o processo de login estiver conclu\u00eddo, retorne aqui e insira o c\u00f3digo de autoriza\u00e7\u00e3o abaixo.", + "description": "Insira seu nome de usu\u00e1rio e senha.", "title": "Preencha suas informa\u00e7\u00f5es." } } diff --git a/homeassistant/components/simplisafe/translations/ru.json b/homeassistant/components/simplisafe/translations/ru.json index 306a0180d88..f2907bd6c47 100644 --- a/homeassistant/components/simplisafe/translations/ru.json +++ b/homeassistant/components/simplisafe/translations/ru.json @@ -12,15 +12,7 @@ "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." }, "step": { - "input_auth_code": { - "data": { - "auth_code": "\u041a\u043e\u0434 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438" - }, - "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u0434 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0437 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f SimpliSafe:", - "title": "\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438" - }, "mfa": { - "description": "\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u0432\u043e\u044e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443\u044e \u043f\u043e\u0447\u0442\u0443 \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043e\u0442 SimpliSafe. \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0435 \u0441\u0441\u044b\u043b\u043a\u0443, \u0432\u0435\u0440\u043d\u0438\u0442\u0435\u0441\u044c \u0441\u044e\u0434\u0430, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438.", "title": "\u0414\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f SimpliSafe" }, "reauth_confirm": { diff --git a/homeassistant/components/simplisafe/translations/sl.json b/homeassistant/components/simplisafe/translations/sl.json index bbbe8034d06..6f326bc5b68 100644 --- a/homeassistant/components/simplisafe/translations/sl.json +++ b/homeassistant/components/simplisafe/translations/sl.json @@ -8,13 +8,6 @@ "identifier_exists": "Ra\u010dun je \u017ee registriran" }, "step": { - "input_auth_code": { - "data": { - "auth_code": "Avtorizacijska koda" - }, - "description": "Vnesite avtorizacijsko kodo iz URL-ja spletne aplikacije SimpliSafe:", - "title": "Dokon\u010daj avtorizacijo" - }, "user": { "data": { "code": "Koda (uporablja se v uporabni\u0161kem vmesniku Home Assistant)", diff --git a/homeassistant/components/simplisafe/translations/tr.json b/homeassistant/components/simplisafe/translations/tr.json index 721502ca0b1..255207833c7 100644 --- a/homeassistant/components/simplisafe/translations/tr.json +++ b/homeassistant/components/simplisafe/translations/tr.json @@ -12,15 +12,7 @@ "unknown": "Beklenmeyen hata" }, "step": { - "input_auth_code": { - "data": { - "auth_code": "Yetkilendirme Kodu" - }, - "description": "SimpliSafe web uygulamas\u0131 URL'sinden yetkilendirme kodunu girin:", - "title": "Yetkilendirmeyi Bitir" - }, "mfa": { - "description": "SimpliSafe'den bir ba\u011flant\u0131 i\u00e7in e-postan\u0131z\u0131 kontrol edin. Ba\u011flant\u0131y\u0131 do\u011frulad\u0131ktan sonra, entegrasyonun kurulumunu tamamlamak i\u00e7in buraya geri d\u00f6n\u00fcn.", "title": "SimpliSafe \u00c7ok Fakt\u00f6rl\u00fc Kimlik Do\u011frulama" }, "reauth_confirm": { diff --git a/homeassistant/components/simplisafe/translations/uk.json b/homeassistant/components/simplisafe/translations/uk.json index 0a51f129e5f..8ca29743c5b 100644 --- a/homeassistant/components/simplisafe/translations/uk.json +++ b/homeassistant/components/simplisafe/translations/uk.json @@ -12,7 +12,6 @@ }, "step": { "mfa": { - "description": "\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u0442\u0435 \u0441\u0432\u043e\u044e \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443 \u043f\u043e\u0448\u0442\u0443 \u043d\u0430 \u043d\u0430\u044f\u0432\u043d\u0456\u0441\u0442\u044c \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u0432\u0456\u0434 SimpliSafe. \u041f\u0456\u0441\u043b\u044f \u0442\u043e\u0433\u043e \u044f\u043a \u0432\u0456\u0434\u043a\u0440\u0438\u0454\u0442\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f, \u043f\u043e\u0432\u0435\u0440\u043d\u0456\u0442\u044c\u0441\u044f \u0441\u044e\u0434\u0438, \u0449\u043e\u0431 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0456\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0456\u0457.", "title": "\u0414\u0432\u043e\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u044f SimpliSafe" }, "reauth_confirm": { diff --git a/homeassistant/components/simplisafe/translations/zh-Hant.json b/homeassistant/components/simplisafe/translations/zh-Hant.json index ae22f8c8f0d..1b10153ab05 100644 --- a/homeassistant/components/simplisafe/translations/zh-Hant.json +++ b/homeassistant/components/simplisafe/translations/zh-Hant.json @@ -6,38 +6,37 @@ "wrong_account": "\u6240\u4ee5\u63d0\u4f9b\u7684\u6191\u8b49\u8207 Simplisafe \u5e33\u865f\u4e0d\u7b26\u3002" }, "error": { + "2fa_timed_out": "\u7b49\u5f85\u5169\u6b65\u9a5f\u9a57\u8b49\u78bc\u903e\u6642", "identifier_exists": "\u5e33\u865f\u5df2\u8a3b\u518a", "invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548", "still_awaiting_mfa": "\u4ecd\u5728\u7b49\u5019\u9ede\u64ca\u591a\u6b65\u9a5f\u8a8d\u8b49\u90f5\u4ef6", "unknown": "\u672a\u9810\u671f\u932f\u8aa4" }, "step": { - "input_auth_code": { - "data": { - "auth_code": "\u8a8d\u8b49\u78bc" - }, - "description": "\u8f38\u5165\u7531 SimpliSafe \u7db2\u9801 App URL \u6240\u53d6\u5f97\u4e4b\u8a8d\u8b49\u78bc\uff1a", - "title": "\u5b8c\u6210\u8a8d\u8b49" - }, "mfa": { - "description": "\u8acb\u6aa2\u67e5\u4f86\u81ea SimpliSafe \u7684\u90f5\u4ef6\u4ee5\u53d6\u5f97\u9023\u7d50\u3002\u78ba\u8a8d\u9023\u7d50\u5f8c\uff0c\u518d\u56de\u5230\u6b64\u8655\u4ee5\u5b8c\u6210\u6574\u5408\u5b89\u88dd\u3002", "title": "SimpliSafe \u591a\u6b65\u9a5f\u9a57\u8b49" }, "reauth_confirm": { "data": { "password": "\u5bc6\u78bc" }, - "description": "\u5b58\u53d6\u6b0a\u9650\u5df2\u7d93\u904e\u671f\u6216\u53d6\u6d88\uff0c\u8acb\u8f38\u5165\u5bc6\u78bc\u4ee5\u91cd\u65b0\u9023\u7d50\u5e33\u865f\u3002", + "description": "\u8acb\u8f38\u5165\u5e33\u865f {username} \u5bc6\u78bc\u3002", "title": "\u91cd\u65b0\u8a8d\u8b49\u6574\u5408" }, + "sms_2fa": { + "data": { + "code": "\u9a57\u8b49\u78bc" + }, + "description": "\u8f38\u5165\u7c21\u8a0a\u6240\u6536\u5230\u7684\u5169\u6b65\u9a5f\u9a57\u8b49\u78bc\u3002" + }, "user": { "data": { "auth_code": "\u8a8d\u8b49\u78bc", "code": "\u9a57\u8b49\u78bc\uff08\u4f7f\u7528\u65bc Home Assistant UI\uff09", "password": "\u5bc6\u78bc", - "username": "\u96fb\u5b50\u90f5\u4ef6" + "username": "\u4f7f\u7528\u8005\u540d\u7a31" }, - "description": "SimpliSafe \u70ba\u900f\u904e Web App \u65b9\u5f0f\u7684\u8a8d\u8b49\u6a5f\u5236\u3002\u7531\u65bc\u6280\u8853\u9650\u5236\u3001\u65bc\u6b64\u904e\u7a0b\u7d50\u675f\u6642\u5c07\u6703\u6709\u4e00\u6b65\u624b\u52d5\u968e\u6bb5\uff1b\u65bc\u958b\u59cb\u524d\u3001\u8acb\u78ba\u5b9a\u53c3\u95b1 [\u76f8\u95dc\u6587\u4ef6]({docs_url})\u3002\n\n1. \u9ede\u9078 [\u6b64\u8655] ({url}) \u4ee5\u958b\u555f SimpliSafe Web App \u4e26\u8f38\u5165\u9a57\u8b49\u3002\n\n2. \u7576\u767b\u5165\u5b8c\u6210\u5f8c\u3001\u56de\u5230\u6b64\u8655\u65bc\u4e0b\u65b9\u8f38\u5165\u8a8d\u8b49\u78bc\u3002", + "description": "\u8f38\u5165\u4f7f\u7528\u8005\u540d\u7a31\u8207\u5bc6\u78bc\u3002", "title": "\u586b\u5beb\u8cc7\u8a0a\u3002" } } diff --git a/homeassistant/components/sleepiq/translations/fr.json b/homeassistant/components/sleepiq/translations/fr.json index 9c43b00feba..f40576959bb 100644 --- a/homeassistant/components/sleepiq/translations/fr.json +++ b/homeassistant/components/sleepiq/translations/fr.json @@ -13,6 +13,7 @@ "data": { "password": "Mot de passe" }, + "description": "L'int\u00e9gration SleepIQ doit r\u00e9-authentifier votre compte {username}.", "title": "R\u00e9-authentifier l'int\u00e9gration" }, "user": { diff --git a/homeassistant/components/slimproto/translations/de.json b/homeassistant/components/slimproto/translations/de.json new file mode 100644 index 00000000000..69b89b76225 --- /dev/null +++ b/homeassistant/components/slimproto/translations/de.json @@ -0,0 +1,7 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Bereits konfiguriert. Nur eine einzige Konfiguration m\u00f6glich." + } + } +} \ No newline at end of file diff --git a/homeassistant/components/slimproto/translations/el.json b/homeassistant/components/slimproto/translations/el.json new file mode 100644 index 00000000000..df583a2f8f8 --- /dev/null +++ b/homeassistant/components/slimproto/translations/el.json @@ -0,0 +1,7 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "\u0388\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af. \u039c\u03cc\u03bd\u03bf \u03bc\u03af\u03b1 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae." + } + } +} \ No newline at end of file diff --git a/homeassistant/components/slimproto/translations/en.json b/homeassistant/components/slimproto/translations/en.json index fcefa6de190..2d579aab7c8 100644 --- a/homeassistant/components/slimproto/translations/en.json +++ b/homeassistant/components/slimproto/translations/en.json @@ -1,11 +1,7 @@ { - "config": { - "abort": { - "single_instance_allowed": "Already configured. Only a single configuration possible." - }, - "step": { - "user": { - } - } - } + "config": { + "abort": { + "single_instance_allowed": "Already configured. Only a single configuration possible." + } + } } \ No newline at end of file diff --git a/homeassistant/components/slimproto/translations/et.json b/homeassistant/components/slimproto/translations/et.json new file mode 100644 index 00000000000..e8b5eae4149 --- /dev/null +++ b/homeassistant/components/slimproto/translations/et.json @@ -0,0 +1,7 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Juba seadistatud. V\u00f5imalik on ainult \u00fcks seadistamine." + } + } +} \ No newline at end of file diff --git a/homeassistant/components/slimproto/translations/fr.json b/homeassistant/components/slimproto/translations/fr.json new file mode 100644 index 00000000000..807ba246694 --- /dev/null +++ b/homeassistant/components/slimproto/translations/fr.json @@ -0,0 +1,7 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "D\u00e9j\u00e0 configur\u00e9. Une seule configuration possible." + } + } +} \ No newline at end of file diff --git a/homeassistant/components/slimproto/translations/hu.json b/homeassistant/components/slimproto/translations/hu.json new file mode 100644 index 00000000000..edd3c258b81 --- /dev/null +++ b/homeassistant/components/slimproto/translations/hu.json @@ -0,0 +1,13 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "M\u00e1r konfigur\u00e1lva van. Csak egy konfigur\u00e1ci\u00f3 lehets\u00e9ges." + }, + "step": { + "user": { + "one": "\u00dcres", + "other": "\u00dcres" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/slimproto/translations/id.json b/homeassistant/components/slimproto/translations/id.json new file mode 100644 index 00000000000..3a870e47986 --- /dev/null +++ b/homeassistant/components/slimproto/translations/id.json @@ -0,0 +1,7 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Sudah dikonfigurasi. Hanya satu konfigurasi yang diizinkan." + } + } +} \ No newline at end of file diff --git a/homeassistant/components/slimproto/translations/it.json b/homeassistant/components/slimproto/translations/it.json new file mode 100644 index 00000000000..42bc1ef9f7d --- /dev/null +++ b/homeassistant/components/slimproto/translations/it.json @@ -0,0 +1,13 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione." + }, + "step": { + "user": { + "one": "Vuoto", + "other": "Vuoti" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/slimproto/translations/nl.json b/homeassistant/components/slimproto/translations/nl.json new file mode 100644 index 00000000000..79aaec23123 --- /dev/null +++ b/homeassistant/components/slimproto/translations/nl.json @@ -0,0 +1,7 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Al geconfigureerd. Slechts een enkele configuratie mogelijk." + } + } +} \ No newline at end of file diff --git a/homeassistant/components/slimproto/translations/no.json b/homeassistant/components/slimproto/translations/no.json new file mode 100644 index 00000000000..aa380f0385a --- /dev/null +++ b/homeassistant/components/slimproto/translations/no.json @@ -0,0 +1,7 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Allerede konfigurert. Bare \u00e9n enkelt konfigurasjon er mulig." + } + } +} \ No newline at end of file diff --git a/homeassistant/components/slimproto/translations/pl.json b/homeassistant/components/slimproto/translations/pl.json new file mode 100644 index 00000000000..96fba53c20f --- /dev/null +++ b/homeassistant/components/slimproto/translations/pl.json @@ -0,0 +1,7 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Ju\u017c skonfigurowano. Mo\u017cliwa jest tylko jedna konfiguracja." + } + } +} \ No newline at end of file diff --git a/homeassistant/components/slimproto/translations/pt-BR.json b/homeassistant/components/slimproto/translations/pt-BR.json new file mode 100644 index 00000000000..9ab59f40649 --- /dev/null +++ b/homeassistant/components/slimproto/translations/pt-BR.json @@ -0,0 +1,7 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "J\u00e1 configurado. Apenas uma configura\u00e7\u00e3o \u00e9 poss\u00edvel." + } + } +} \ No newline at end of file diff --git a/homeassistant/components/slimproto/translations/zh-Hant.json b/homeassistant/components/slimproto/translations/zh-Hant.json new file mode 100644 index 00000000000..942e17282bb --- /dev/null +++ b/homeassistant/components/slimproto/translations/zh-Hant.json @@ -0,0 +1,7 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210\u3001\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u88dd\u7f6e\u3002" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/smappee/translations/hu.json b/homeassistant/components/smappee/translations/hu.json index 9c3d90ac43e..712cbd0951d 100644 --- a/homeassistant/components/smappee/translations/hu.json +++ b/homeassistant/components/smappee/translations/hu.json @@ -7,7 +7,7 @@ "cannot_connect": "Sikertelen csatlakoz\u00e1s", "invalid_mdns": "Nem t\u00e1mogatott eszk\u00f6z a Smappee integr\u00e1ci\u00f3hoz.", "missing_configuration": "A komponens nincs konfigur\u00e1lva. K\u00e9rem, k\u00f6vesse a dokument\u00e1ci\u00f3t.", - "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3t [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lsz." + "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3 [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lhat\u00f3." }, "flow_title": "{name}", "step": { @@ -24,7 +24,7 @@ "description": "Adja meg a c\u00edmet a Smappee helyi integr\u00e1ci\u00f3j\u00e1nak elind\u00edt\u00e1s\u00e1hoz" }, "pick_implementation": { - "title": "V\u00e1lassz hiteles\u00edt\u00e9si m\u00f3dszert" + "title": "V\u00e1lasszon egy hiteles\u00edt\u00e9si m\u00f3dszert" }, "zeroconf_confirm": { "description": "Hozz\u00e1 szeretn\u00e9 adni a \"{serialnumber} serialnumber}\" sorozatsz\u00e1m\u00fa Smappee -eszk\u00f6zt az HomeAssistanthoz?", diff --git a/homeassistant/components/smappee/translations/it.json b/homeassistant/components/smappee/translations/it.json index 3a493371b16..7c18d944ab7 100644 --- a/homeassistant/components/smappee/translations/it.json +++ b/homeassistant/components/smappee/translations/it.json @@ -6,7 +6,7 @@ "authorize_url_timeout": "Tempo scaduto nel generare l'URL di autorizzazione.", "cannot_connect": "Impossibile connettersi", "invalid_mdns": "Dispositivo non supportato per l'integrazione Smappee.", - "missing_configuration": "Il componente non \u00e8 configurato. Si prega di seguire la documentazione.", + "missing_configuration": "Il componente non \u00e8 configurato. Segui la documentazione.", "no_url_available": "Nessun URL disponibile. Per informazioni su questo errore, [controlla la sezione della guida]({docs_url})" }, "flow_title": "{name}", diff --git a/homeassistant/components/smartthings/translations/it.json b/homeassistant/components/smartthings/translations/it.json index 4f2006e52c3..258abb0da8d 100644 --- a/homeassistant/components/smartthings/translations/it.json +++ b/homeassistant/components/smartthings/translations/it.json @@ -19,8 +19,8 @@ "data": { "access_token": "Token di accesso" }, - "description": "Inserisci un SmartThings [Personal Access Token]({token_url}) che \u00e8 stato creato secondo le [istruzioni]({component_url}). Questo sar\u00e0 utilizzato per creare l'integrazione Home Assistant all'interno del tuo account SmartThings.", - "title": "Inserisci il Token di Accesso Personale" + "description": "Inserisci un [token di accesso personale]({token_url}) che \u00e8 stato creato secondo le [istruzioni]({component_url}). Questo sar\u00e0 utilizzato per creare l'integrazione Home Assistant all'interno del tuo account SmartThings.", + "title": "Inserisci il token di accesso personale" }, "select_location": { "data": { diff --git a/homeassistant/components/smhi/translations/hu.json b/homeassistant/components/smhi/translations/hu.json index 425cf927631..e83ea03a193 100644 --- a/homeassistant/components/smhi/translations/hu.json +++ b/homeassistant/components/smhi/translations/hu.json @@ -1,5 +1,8 @@ { "config": { + "abort": { + "already_configured": "A fi\u00f3k m\u00e1r konfigur\u00e1lva van" + }, "error": { "name_exists": "A n\u00e9v m\u00e1r l\u00e9tezik", "wrong_location": "Csak sv\u00e9dorsz\u00e1gi helysz\u00edn megengedett" @@ -9,7 +12,7 @@ "data": { "latitude": "Sz\u00e9less\u00e9g", "longitude": "Hossz\u00fas\u00e1g", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" }, "title": "Helysz\u00edn Sv\u00e9dorsz\u00e1gban" } diff --git a/homeassistant/components/solax/translations/es.json b/homeassistant/components/solax/translations/es.json new file mode 100644 index 00000000000..4728aed6395 --- /dev/null +++ b/homeassistant/components/solax/translations/es.json @@ -0,0 +1,7 @@ +{ + "config": { + "error": { + "unknown": "Error inesperado" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/soma/translations/it.json b/homeassistant/components/soma/translations/it.json index c3cd51e6351..00d454e2c96 100644 --- a/homeassistant/components/soma/translations/it.json +++ b/homeassistant/components/soma/translations/it.json @@ -4,7 +4,7 @@ "already_setup": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione.", "authorize_url_timeout": "Tempo scaduto nel generare l'URL di autorizzazione.", "connection_error": "Impossibile connettersi", - "missing_configuration": "Il componente Soma non \u00e8 configurato. Si prega di seguire la documentazione.", + "missing_configuration": "Il componente Soma non \u00e8 configurato. Segui la documentazione.", "result_error": "SOMA Connect ha risposto con stato di errore." }, "create_entry": { diff --git a/homeassistant/components/somfy/translations/hu.json b/homeassistant/components/somfy/translations/hu.json index 06b0894faf1..96b873b2c42 100644 --- a/homeassistant/components/somfy/translations/hu.json +++ b/homeassistant/components/somfy/translations/hu.json @@ -3,7 +3,7 @@ "abort": { "authorize_url_timeout": "Id\u0151t\u00fall\u00e9p\u00e9s a hiteles\u00edt\u00e9si URL gener\u00e1l\u00e1sa sor\u00e1n.", "missing_configuration": "A komponens nincs konfigur\u00e1lva. K\u00e9rem, k\u00f6vesse a dokument\u00e1ci\u00f3t.", - "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3t [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lsz.", + "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3 [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lhat\u00f3.", "single_instance_allowed": "M\u00e1r konfigur\u00e1lva van. Csak egy konfigur\u00e1ci\u00f3 lehets\u00e9ges." }, "create_entry": { @@ -11,7 +11,7 @@ }, "step": { "pick_implementation": { - "title": "V\u00e1lassz hiteles\u00edt\u00e9si m\u00f3dszert" + "title": "V\u00e1lasszon egy hiteles\u00edt\u00e9si m\u00f3dszert" } } } diff --git a/homeassistant/components/somfy/translations/it.json b/homeassistant/components/somfy/translations/it.json index 1c6650232dc..0201e1e2569 100644 --- a/homeassistant/components/somfy/translations/it.json +++ b/homeassistant/components/somfy/translations/it.json @@ -2,7 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "Tempo scaduto nel generare l'URL di autorizzazione.", - "missing_configuration": "Il componente non \u00e8 configurato. Si prega di seguire la documentazione.", + "missing_configuration": "Il componente non \u00e8 configurato. Segui la documentazione.", "no_url_available": "Nessun URL disponibile. Per informazioni su questo errore, [controlla la sezione della guida]({docs_url})", "single_instance_allowed": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione." }, diff --git a/homeassistant/components/sonarr/translations/cs.json b/homeassistant/components/sonarr/translations/cs.json index 00ff1611319..9be2106b4e2 100644 --- a/homeassistant/components/sonarr/translations/cs.json +++ b/homeassistant/components/sonarr/translations/cs.json @@ -21,6 +21,7 @@ "host": "Hostitel", "port": "Port", "ssl": "Pou\u017e\u00edv\u00e1 SSL certifik\u00e1t", + "url": "URL", "verify_ssl": "Ov\u011b\u0159it certifik\u00e1t SSL" } } diff --git a/homeassistant/components/sonarr/translations/hu.json b/homeassistant/components/sonarr/translations/hu.json index c3cc2ac0f6c..5aabd38a974 100644 --- a/homeassistant/components/sonarr/translations/hu.json +++ b/homeassistant/components/sonarr/translations/hu.json @@ -12,7 +12,7 @@ "flow_title": "{name}", "step": { "reauth_confirm": { - "description": "A Sonarr integr\u00e1ci\u00f3t manu\u00e1lisan kell hiteles\u00edteni: {host}", + "description": "A Sonarr-integr\u00e1ci\u00f3t manu\u00e1lisan \u00fajra kell hiteles\u00edteni a Sonarr API-n\u00e1l: {url}", "title": "Integr\u00e1ci\u00f3 \u00fajrahiteles\u00edt\u00e9se" }, "user": { diff --git a/homeassistant/components/spotify/translations/hu.json b/homeassistant/components/spotify/translations/hu.json index 136e6185b46..f387ff6bb3a 100644 --- a/homeassistant/components/spotify/translations/hu.json +++ b/homeassistant/components/spotify/translations/hu.json @@ -3,7 +3,7 @@ "abort": { "authorize_url_timeout": "Id\u0151t\u00fall\u00e9p\u00e9s az \u00e9rv\u00e9nyes\u00edt\u00e9si URL gener\u00e1l\u00e1sa sor\u00e1n.", "missing_configuration": "A Spotify integr\u00e1ci\u00f3 nincs konfigur\u00e1lva. K\u00e9rj\u00fck, k\u00f6vesse a dokument\u00e1ci\u00f3t.", - "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3t [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lsz.", + "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3 [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lhat\u00f3.", "reauth_account_mismatch": "A Spotify-fi\u00f3kkal hiteles\u00edtett fi\u00f3k nem egyezik meg az \u00faj hiteles\u00edt\u00e9shez sz\u00fcks\u00e9ges fi\u00f3kkal." }, "create_entry": { @@ -11,7 +11,7 @@ }, "step": { "pick_implementation": { - "title": "V\u00e1lassz hiteles\u00edt\u00e9si m\u00f3dszert" + "title": "V\u00e1lasszon egy hiteles\u00edt\u00e9si m\u00f3dszert" }, "reauth_confirm": { "description": "A Spotify integr\u00e1ci\u00f3nak \u00fajra hiteles\u00edtenie kell a Spotify fi\u00f3kot: {account}", diff --git a/homeassistant/components/spotify/translations/it.json b/homeassistant/components/spotify/translations/it.json index d40fa60b4d4..445b7a233e4 100644 --- a/homeassistant/components/spotify/translations/it.json +++ b/homeassistant/components/spotify/translations/it.json @@ -2,7 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "Tempo scaduto nella generazione dell'URL di autorizzazione.", - "missing_configuration": "L'integrazione di Spotify non \u00e8 configurata. Si prega di seguire la documentazione.", + "missing_configuration": "L'integrazione di Spotify non \u00e8 configurata. Segui la documentazione.", "no_url_available": "Nessun URL disponibile. Per informazioni su questo errore, [controlla la sezione della guida]({docs_url})", "reauth_account_mismatch": "L'account Spotify con cui sei autenticato non corrisponde all'account necessario per la nuova autenticazione." }, diff --git a/homeassistant/components/sql/translations/ca.json b/homeassistant/components/sql/translations/ca.json new file mode 100644 index 00000000000..d69f22ca855 --- /dev/null +++ b/homeassistant/components/sql/translations/ca.json @@ -0,0 +1,55 @@ +{ + "config": { + "abort": { + "already_configured": "El compte ja est\u00e0 configurat" + }, + "error": { + "db_url_invalid": "URL de la base de dades inv\u00e0lid", + "query_invalid": "Consulta SQL inv\u00e0lida", + "value_template_invalid": "Plantilla de valor inv\u00e0lida" + }, + "step": { + "user": { + "data": { + "column": "Columna", + "db_url": "URL de la base de dades", + "query": "Selecciona la consulta", + "unit_of_measurement": "Unitat de mesura", + "value_template": "Plantilla de valor" + }, + "data_description": { + "column": "Columna de resposta de la consulta per presentar com a estat", + "db_url": "URL de la base de dades, deixa-ho en blanc per utilitzar la predeterminada de HA", + "query": "Consulta a executar, ha de comen\u00e7ar per 'SELECT'", + "unit_of_measurement": "Unitat de mesura (opcional)", + "value_template": "Plantilla de valor (opcional)" + } + } + } + }, + "options": { + "error": { + "db_url_invalid": "URL de la base de dades inv\u00e0lid", + "query_invalid": "Consulta SQL inv\u00e0lida", + "value_template_invalid": "Plantilla de valor inv\u00e0lida" + }, + "step": { + "init": { + "data": { + "column": "Columna", + "db_url": "URL de la base de dades", + "query": "Selecciona la consulta", + "unit_of_measurement": "Unitat de mesura", + "value_template": "Plantilla de valor" + }, + "data_description": { + "column": "Columna de resposta de la consulta per presentar com a estat", + "db_url": "URL de la base de dades, deixa-ho en blanc per utilitzar la predeterminada de HA", + "query": "Consulta a executar, ha de comen\u00e7ar per 'SELECT'", + "unit_of_measurement": "Unitat de mesura (opcional)", + "value_template": "Plantilla de valor (opcional)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sql/translations/de.json b/homeassistant/components/sql/translations/de.json new file mode 100644 index 00000000000..2207997133d --- /dev/null +++ b/homeassistant/components/sql/translations/de.json @@ -0,0 +1,55 @@ +{ + "config": { + "abort": { + "already_configured": "Konto wurde bereits konfiguriert" + }, + "error": { + "db_url_invalid": "Datenbank-URL ung\u00fcltig", + "query_invalid": "SQL-Abfrage ung\u00fcltig", + "value_template_invalid": "Wertvorlage ung\u00fcltig" + }, + "step": { + "user": { + "data": { + "column": "Spalte", + "db_url": "Datenbank-URL", + "query": "Abfrage ausw\u00e4hlen", + "unit_of_measurement": "Ma\u00dfeinheit", + "value_template": "Wertvorlage" + }, + "data_description": { + "column": "Spalte f\u00fcr die zur\u00fcckgegebene Abfrage, die als Status angezeigt werden soll", + "db_url": "Datenbank-URL, leer lassen, um die Standard-HA-Datenbank zu verwenden", + "query": "Auszuf\u00fchrende Abfrage, muss mit 'SELECT' beginnen", + "unit_of_measurement": "Ma\u00dfeinheit (optional)", + "value_template": "Wertvorlage (optional)" + } + } + } + }, + "options": { + "error": { + "db_url_invalid": "Datenbank-URL ung\u00fcltig", + "query_invalid": "SQL-Abfrage ung\u00fcltig", + "value_template_invalid": "Wertvorlage ung\u00fcltig" + }, + "step": { + "init": { + "data": { + "column": "Spalte", + "db_url": "Datenbank-URL", + "query": "Abfrage ausw\u00e4hlen", + "unit_of_measurement": "Ma\u00dfeinheit", + "value_template": "Wertvorlage" + }, + "data_description": { + "column": "Spalte f\u00fcr die zur\u00fcckgegebene Abfrage, die als Status angezeigt werden soll", + "db_url": "Datenbank-URL, leer lassen, um die Standard-HA-Datenbank zu verwenden", + "query": "Auszuf\u00fchrende Abfrage, muss mit 'SELECT' beginnen", + "unit_of_measurement": "Ma\u00dfeinheit (optional)", + "value_template": "Wertvorlage (optional)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sql/translations/el.json b/homeassistant/components/sql/translations/el.json new file mode 100644 index 00000000000..4f19401a8f3 --- /dev/null +++ b/homeassistant/components/sql/translations/el.json @@ -0,0 +1,55 @@ +{ + "config": { + "abort": { + "already_configured": "\u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03b8\u03b5\u03af" + }, + "error": { + "db_url_invalid": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03b2\u03ac\u03c3\u03b7\u03c2 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd", + "query_invalid": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03b5\u03c1\u03ce\u03c4\u03b7\u03bc\u03b1 SQL", + "value_template_invalid": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03c0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf \u03c4\u03b9\u03bc\u03ae\u03c2" + }, + "step": { + "user": { + "data": { + "column": "\u03a3\u03c4\u03ae\u03bb\u03b7", + "db_url": "URL \u03b2\u03ac\u03c3\u03b7\u03c2 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd", + "query": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03b5\u03c1\u03c9\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2", + "unit_of_measurement": "\u039c\u03bf\u03bd\u03ac\u03b4\u03b1 \u03bc\u03ad\u03c4\u03c1\u03b7\u03c3\u03b7\u03c2", + "value_template": "\u03a0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf \u03b1\u03be\u03af\u03b1\u03c2" + }, + "data_description": { + "column": "\u03a3\u03c4\u03ae\u03bb\u03b7 \u03b3\u03b9\u03b1 \u03c4\u03bf \u03b5\u03c0\u03b9\u03c3\u03c4\u03c1\u03b5\u03c6\u03cc\u03bc\u03b5\u03bd\u03bf \u03b5\u03c1\u03ce\u03c4\u03b7\u03bc\u03b1 \u03c0\u03bf\u03c5 \u03b8\u03b1 \u03c0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03b1\u03c3\u03c4\u03b5\u03af \u03c9\u03c2 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7", + "db_url": "URL \u03c4\u03b7\u03c2 \u03b2\u03ac\u03c3\u03b7\u03c2 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd, \u03b1\u03c6\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf \u03ba\u03b5\u03bd\u03cc \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03b7 \u03b2\u03ac\u03c3\u03b7 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd HA", + "query": "\u03a4\u03bf \u03b5\u03c1\u03ce\u03c4\u03b7\u03bc\u03b1 \u03c0\u03bf\u03c5 \u03b8\u03b1 \u03b5\u03ba\u03c4\u03b5\u03bb\u03b5\u03c3\u03c4\u03b5\u03af \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03be\u03b5\u03ba\u03b9\u03bd\u03ac \u03bc\u03b5 'SELECT'", + "unit_of_measurement": "\u039c\u03bf\u03bd\u03ac\u03b4\u03b1 \u03bc\u03ad\u03c4\u03c1\u03b7\u03c3\u03b7\u03c2 (\u03c0\u03c1\u03bf\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc)", + "value_template": "\u03a0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf \u03c4\u03b9\u03bc\u03ae\u03c2 (\u03c0\u03c1\u03bf\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc)" + } + } + } + }, + "options": { + "error": { + "db_url_invalid": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03b2\u03ac\u03c3\u03b7\u03c2 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd", + "query_invalid": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03b5\u03c1\u03ce\u03c4\u03b7\u03bc\u03b1 SQL", + "value_template_invalid": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03c0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf \u03c4\u03b9\u03bc\u03ae\u03c2" + }, + "step": { + "init": { + "data": { + "column": "\u03a3\u03c4\u03ae\u03bb\u03b7", + "db_url": "URL \u03b2\u03ac\u03c3\u03b7\u03c2 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd", + "query": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03b5\u03c1\u03c9\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2", + "unit_of_measurement": "\u039c\u03bf\u03bd\u03ac\u03b4\u03b1 \u03bc\u03ad\u03c4\u03c1\u03b7\u03c3\u03b7\u03c2", + "value_template": "\u03a0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf \u03c4\u03b9\u03bc\u03ae\u03c2" + }, + "data_description": { + "column": "\u03a3\u03c4\u03ae\u03bb\u03b7 \u03b3\u03b9\u03b1 \u03c4\u03bf \u03b5\u03c0\u03b9\u03c3\u03c4\u03c1\u03b5\u03c6\u03cc\u03bc\u03b5\u03bd\u03bf \u03b5\u03c1\u03ce\u03c4\u03b7\u03bc\u03b1 \u03c0\u03bf\u03c5 \u03b8\u03b1 \u03c0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03b1\u03c3\u03c4\u03b5\u03af \u03c9\u03c2 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7", + "db_url": "URL \u03c4\u03b7\u03c2 \u03b2\u03ac\u03c3\u03b7\u03c2 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd, \u03b1\u03c6\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf \u03ba\u03b5\u03bd\u03cc \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03b7 \u03b2\u03ac\u03c3\u03b7 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd HA", + "query": "\u03a4\u03bf \u03b5\u03c1\u03ce\u03c4\u03b7\u03bc\u03b1 \u03c0\u03bf\u03c5 \u03b8\u03b1 \u03b5\u03ba\u03c4\u03b5\u03bb\u03b5\u03c3\u03c4\u03b5\u03af \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03be\u03b5\u03ba\u03b9\u03bd\u03ac \u03bc\u03b5 'SELECT'", + "unit_of_measurement": "\u039c\u03bf\u03bd\u03ac\u03b4\u03b1 \u03bc\u03ad\u03c4\u03c1\u03b7\u03c3\u03b7\u03c2 (\u03c0\u03c1\u03bf\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc)", + "value_template": "\u03a0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf \u03c4\u03b9\u03bc\u03ae\u03c2 (\u03c0\u03c1\u03bf\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sql/translations/en.json b/homeassistant/components/sql/translations/en.json index 2d3bf3c1999..3b1fc223c00 100644 --- a/homeassistant/components/sql/translations/en.json +++ b/homeassistant/components/sql/translations/en.json @@ -18,9 +18,9 @@ "value_template": "Value Template" }, "data_description": { + "column": "Column for returned query to present as state", "db_url": "Database URL, leave empty to use default HA database", "query": "Query to run, needs to start with 'SELECT'", - "column": "Column for returned query to present as state", "unit_of_measurement": "Unit of Measure (optional)", "value_template": "Value Template (optional)" } @@ -43,9 +43,9 @@ "value_template": "Value Template" }, "data_description": { + "column": "Column for returned query to present as state", "db_url": "Database URL, leave empty to use default HA database", "query": "Query to run, needs to start with 'SELECT'", - "column": "Column for returned query to present as state", "unit_of_measurement": "Unit of Measure (optional)", "value_template": "Value Template (optional)" } diff --git a/homeassistant/components/sql/translations/et.json b/homeassistant/components/sql/translations/et.json new file mode 100644 index 00000000000..b1f7339aba2 --- /dev/null +++ b/homeassistant/components/sql/translations/et.json @@ -0,0 +1,55 @@ +{ + "config": { + "abort": { + "already_configured": "Kasutaja on juba seadistatud" + }, + "error": { + "db_url_invalid": "Andmebaasi URL on vigane", + "query_invalid": "SQL-p\u00e4ring on kehtetu", + "value_template_invalid": "V\u00e4\u00e4rtuse mall on kehtetu" + }, + "step": { + "user": { + "data": { + "column": "Veerg", + "db_url": "Andmebaasi URL", + "query": "Vali p\u00e4ring", + "unit_of_measurement": "M\u00f5\u00f5t\u00fchik", + "value_template": "V\u00e4\u00e4rtuse mall" + }, + "data_description": { + "column": "Tagastatud p\u00e4ringu veerg olekuna esitamiseks", + "db_url": "Andmebaasi URL, j\u00e4ta t\u00fchjaks, et kasutada HA vaikeandmebaasi", + "query": "K\u00e4ivitatav p\u00e4ring peab algama 'SELECT'-iga.", + "unit_of_measurement": "M\u00f5\u00f5t\u00fchik (valikuline)", + "value_template": "V\u00e4\u00e4rtuse mall (valikuline)" + } + } + } + }, + "options": { + "error": { + "db_url_invalid": "Andmebaasi URL on vigane", + "query_invalid": "V\u00e4\u00e4rtuse mall on kehtetu", + "value_template_invalid": "V\u00e4\u00e4rtuse mall on kehtetu" + }, + "step": { + "init": { + "data": { + "column": "Veerg", + "db_url": "Andmebaasi URL", + "query": "Vali p\u00e4ring", + "unit_of_measurement": "M\u00f5\u00f5t\u00fchik", + "value_template": "Tagastatud p\u00e4ringu veerg olekuna esitamiseks" + }, + "data_description": { + "column": "Tagastatud p\u00e4ringu veerg olekuna esitamiseks", + "db_url": "Andmebaasi URL, j\u00e4ta t\u00fchjaks, et kasutada HA vaikeandmebaasi", + "query": "K\u00e4ivitatav p\u00e4ring peab algama 'SELECT'-iga.", + "unit_of_measurement": "M\u00f5\u00f5t\u00fchik (valikuline)", + "value_template": "V\u00e4\u00e4rtuse mall (valikuline)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sql/translations/fr.json b/homeassistant/components/sql/translations/fr.json new file mode 100644 index 00000000000..078fdc44d24 --- /dev/null +++ b/homeassistant/components/sql/translations/fr.json @@ -0,0 +1,55 @@ +{ + "config": { + "abort": { + "already_configured": "Le compte est d\u00e9j\u00e0 configur\u00e9" + }, + "error": { + "db_url_invalid": "URL de la base de donn\u00e9es non valide", + "query_invalid": "Requ\u00eate SQL non valide", + "value_template_invalid": "Mod\u00e8le de valeur non valide" + }, + "step": { + "user": { + "data": { + "column": "Colonne", + "db_url": "URL de la base de donn\u00e9es", + "query": "Requ\u00eate de s\u00e9lection", + "unit_of_measurement": "Unit\u00e9 de mesure", + "value_template": "Mod\u00e8le de valeur" + }, + "data_description": { + "column": "La colonne de la r\u00e9ponse \u00e0 la requ\u00eate \u00e0 pr\u00e9senter en tant qu'\u00e9tat", + "db_url": "L'URL de la base de donn\u00e9es, laisser vide pour utiliser la base de donn\u00e9es HA par d\u00e9faut", + "query": "La requ\u00eate \u00e0 ex\u00e9cuter, doit commencer par \u00ab\u00a0SELECT\u00a0\u00bb", + "unit_of_measurement": "Unit\u00e9 de mesure (facultatif)", + "value_template": "Mod\u00e8le de valeur (facultatif)" + } + } + } + }, + "options": { + "error": { + "db_url_invalid": "URL de la base de donn\u00e9es non valide", + "query_invalid": "Requ\u00eate SQL non valide", + "value_template_invalid": "Mod\u00e8le de valeur non valide" + }, + "step": { + "init": { + "data": { + "column": "Colonne", + "db_url": "URL de la base de donn\u00e9es", + "query": "Requ\u00eate de s\u00e9lection", + "unit_of_measurement": "Unit\u00e9 de mesure", + "value_template": "Mod\u00e8le de valeur" + }, + "data_description": { + "column": "La colonne de la r\u00e9ponse \u00e0 la requ\u00eate \u00e0 pr\u00e9senter en tant qu'\u00e9tat", + "db_url": "L'URL de la base de donn\u00e9es, laisser vide pour utiliser la base de donn\u00e9es HA par d\u00e9faut", + "query": "La requ\u00eate \u00e0 ex\u00e9cuter, doit commencer par \u00ab\u00a0SELECT\u00a0\u00bb", + "unit_of_measurement": "Unit\u00e9 de mesure (facultatif)", + "value_template": "Mod\u00e8le de valeur (facultatif)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sql/translations/hu.json b/homeassistant/components/sql/translations/hu.json new file mode 100644 index 00000000000..cf125215ae3 --- /dev/null +++ b/homeassistant/components/sql/translations/hu.json @@ -0,0 +1,55 @@ +{ + "config": { + "abort": { + "already_configured": "A fi\u00f3k m\u00e1r konfigur\u00e1lva van" + }, + "error": { + "db_url_invalid": "\u00c9rv\u00e9nytelen adatb\u00e1zis URL-c\u00edm", + "query_invalid": "\u00c9rv\u00e9nytelen SQL-lek\u00e9rdez\u00e9s", + "value_template_invalid": "\u00c9rv\u00e9nytelen \u00e9rt\u00e9ksablon" + }, + "step": { + "user": { + "data": { + "column": "Oszlop", + "db_url": "Adatb\u00e1zis URL", + "query": "Lek\u00e9rdez\u00e9s kijel\u00f6l\u00e9se", + "unit_of_measurement": "M\u00e9rt\u00e9kegys\u00e9g", + "value_template": "\u00c9rt\u00e9ksablon" + }, + "data_description": { + "column": "\u00c1llapotk\u00e9nt megjelen\u00edtend\u0151, lek\u00e9rdezett oszlop", + "db_url": "Adatb\u00e1zis URL-c\u00edme, hagyja \u00fcresen az alap\u00e9rtelmezett HA-adatb\u00e1zis haszn\u00e1lat\u00e1hoz", + "query": "A futtatand\u00f3 lek\u00e9rdez\u00e9snek 'SELECT'-el kell kezd\u0151dnie.", + "unit_of_measurement": "M\u00e9rt\u00e9kegys\u00e9g (nem k\u00f6telez\u0151)", + "value_template": "\u00c9rt\u00e9ksablon (nem k\u00f6telez\u0151)" + } + } + } + }, + "options": { + "error": { + "db_url_invalid": "\u00c9rv\u00e9nytelen adatb\u00e1zis URL-c\u00edm", + "query_invalid": "\u00c9rv\u00e9nytelen SQL-lek\u00e9rdez\u00e9s", + "value_template_invalid": "\u00c9rv\u00e9nytelen \u00e9rt\u00e9ksablon" + }, + "step": { + "init": { + "data": { + "column": "Oszlop", + "db_url": "Adatb\u00e1zis URL", + "query": "Lek\u00e9rdez\u00e9s kijel\u00f6l\u00e9se", + "unit_of_measurement": "M\u00e9rt\u00e9kegys\u00e9g", + "value_template": "\u00c9rt\u00e9ksablon" + }, + "data_description": { + "column": "\u00c1llapotk\u00e9nt megjelen\u00edtend\u0151, lek\u00e9rdezett oszlop", + "db_url": "Adatb\u00e1zis URL-c\u00edme, hagyja \u00fcresen az alap\u00e9rtelmezett HA-adatb\u00e1zis haszn\u00e1lat\u00e1hoz", + "query": "A futtatand\u00f3 lek\u00e9rdez\u00e9snek 'SELECT'-el kell kezd\u0151dnie.", + "unit_of_measurement": "M\u00e9rt\u00e9kegys\u00e9g (nem k\u00f6telez\u0151)", + "value_template": "\u00c9rt\u00e9ksablon (nem k\u00f6telez\u0151)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sql/translations/id.json b/homeassistant/components/sql/translations/id.json new file mode 100644 index 00000000000..9cd3574c6c9 --- /dev/null +++ b/homeassistant/components/sql/translations/id.json @@ -0,0 +1,55 @@ +{ + "config": { + "abort": { + "already_configured": "Akun sudah dikonfigurasi" + }, + "error": { + "db_url_invalid": "URL database tidak valid", + "query_invalid": "Kueri SQL tidak valid", + "value_template_invalid": "Templat Nilai tidak valid" + }, + "step": { + "user": { + "data": { + "column": "Kolom", + "db_url": "URL Database", + "query": "Kueri Select", + "unit_of_measurement": "Satuan Ukuran", + "value_template": "Templat Nilai" + }, + "data_description": { + "column": "Kolom pada kueri yang dikembalikan untuk ditampilkan sebagai status", + "db_url": "URL database, kosongkan untuk menggunakan database HA default", + "query": "Kueri untuk dijalankan, perlu dimulai dengan 'SELECT'", + "unit_of_measurement": "Satuan Ukuran (opsional)", + "value_template": "Template Nilai (opsional)" + } + } + } + }, + "options": { + "error": { + "db_url_invalid": "URL database tidak valid", + "query_invalid": "Kueri SQL tidak valid", + "value_template_invalid": "Templat Nilai tidak valid" + }, + "step": { + "init": { + "data": { + "column": "Kolom", + "db_url": "URL Database", + "query": "Kueri Select", + "unit_of_measurement": "Satuan Ukuran", + "value_template": "Templat Nilai" + }, + "data_description": { + "column": "Kolom pada kueri yang dikembalikan untuk ditampilkan sebagai status", + "db_url": "URL database, kosongkan untuk menggunakan database HA default", + "query": "Kueri untuk dijalankan, perlu dimulai dengan 'SELECT'", + "unit_of_measurement": "Satuan Ukuran (opsional)", + "value_template": "Template Nilai (opsional)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sql/translations/it.json b/homeassistant/components/sql/translations/it.json new file mode 100644 index 00000000000..01672eb5a51 --- /dev/null +++ b/homeassistant/components/sql/translations/it.json @@ -0,0 +1,55 @@ +{ + "config": { + "abort": { + "already_configured": "L'account \u00e8 gi\u00e0 configurato" + }, + "error": { + "db_url_invalid": "URL database non valido", + "query_invalid": "Query SQL non valida", + "value_template_invalid": "Modello di valore non valido" + }, + "step": { + "user": { + "data": { + "column": "Colonna", + "db_url": "URL del database", + "query": "Query Select", + "unit_of_measurement": "Unit\u00e0 di misura", + "value_template": "Modello di valore" + }, + "data_description": { + "column": "Colonna per la query restituita da presentare come stato", + "db_url": "URL del database, lascia vuoto per utilizzare il database predefinito di Home Assistant", + "query": "Query da eseguire, deve iniziare con 'SELECT'", + "unit_of_measurement": "Unit\u00e0 di misura (opzionale)", + "value_template": "Modello di valore (opzionale)" + } + } + } + }, + "options": { + "error": { + "db_url_invalid": "URL database non valido", + "query_invalid": "Query SQL non valida", + "value_template_invalid": "Modello di valore non valido" + }, + "step": { + "init": { + "data": { + "column": "Colonna", + "db_url": "URL del database", + "query": "Query Select", + "unit_of_measurement": "Unit\u00e0 di misura", + "value_template": "Modello di valore" + }, + "data_description": { + "column": "Colonna per la query restituita da presentare come stato", + "db_url": "URL del database, lascia vuoto per utilizzare il database predefinito di Home Assistant", + "query": "Query da eseguire, deve iniziare con 'SELECT'", + "unit_of_measurement": "Unit\u00e0 di misura (opzionale)", + "value_template": "Modello di valore (opzionale)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sql/translations/nl.json b/homeassistant/components/sql/translations/nl.json new file mode 100644 index 00000000000..ee6ad3503bb --- /dev/null +++ b/homeassistant/components/sql/translations/nl.json @@ -0,0 +1,53 @@ +{ + "config": { + "abort": { + "already_configured": "Account is al geconfigureerd" + }, + "error": { + "db_url_invalid": "Database URL ongeldig", + "query_invalid": "SQL Query ongeldig", + "value_template_invalid": "Waarde Template ongeldig" + }, + "step": { + "user": { + "data": { + "column": "Kolom", + "db_url": "Database URL", + "query": "Selecteer Query", + "unit_of_measurement": "Meeteenheid", + "value_template": "Waarde Template" + }, + "data_description": { + "column": "Kolom voor teruggestuurde query om als status te presenteren", + "db_url": "Database URL, leeg laten om de standaard HA database te gebruiken", + "unit_of_measurement": "Meeteenheid (optioneel)", + "value_template": "Waarde Template (optioneel)" + } + } + } + }, + "options": { + "error": { + "db_url_invalid": "Database URL ongeldig", + "query_invalid": "SQL Query ongeldig", + "value_template_invalid": "Waarde Template ongeldig" + }, + "step": { + "init": { + "data": { + "column": "Kolom", + "db_url": "Database URL", + "query": "Selecteer Query", + "unit_of_measurement": "Meeteenheid", + "value_template": "Waarde Template" + }, + "data_description": { + "column": "Kolom voor teruggestuurde query om als status te presenteren", + "db_url": "Database URL, leeg laten om de standaard HA database te gebruiken", + "unit_of_measurement": "Meeteenheid (optioneel)", + "value_template": "Waarde Template (optioneel)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sql/translations/no.json b/homeassistant/components/sql/translations/no.json new file mode 100644 index 00000000000..292486d3c0f --- /dev/null +++ b/homeassistant/components/sql/translations/no.json @@ -0,0 +1,55 @@ +{ + "config": { + "abort": { + "already_configured": "Kontoen er allerede konfigurert" + }, + "error": { + "db_url_invalid": "Database-URL er ugyldig", + "query_invalid": "SQL-sp\u00f8rringen er ugyldig", + "value_template_invalid": "Verdimalen er ugyldig" + }, + "step": { + "user": { + "data": { + "column": "Kolonne", + "db_url": "Database URL", + "query": "Velg Sp\u00f8rring", + "unit_of_measurement": "M\u00e5leenhet", + "value_template": "Verdimal" + }, + "data_description": { + "column": "Kolonne for returnert foresp\u00f8rsel for \u00e5 presentere som tilstand", + "db_url": "Database-URL, la st\u00e5 tom for \u00e5 bruke standard HA-database", + "query": "Sp\u00f8rsm\u00e5let skal kj\u00f8res, m\u00e5 starte med \"SELECT\"", + "unit_of_measurement": "M\u00e5leenhet (valgfritt)", + "value_template": "Verdimal (valgfritt)" + } + } + } + }, + "options": { + "error": { + "db_url_invalid": "Database-URL er ugyldig", + "query_invalid": "SQL-sp\u00f8rringen er ugyldig", + "value_template_invalid": "Verdimalen er ugyldig" + }, + "step": { + "init": { + "data": { + "column": "Kolonne", + "db_url": "Database URL", + "query": "Velg Sp\u00f8rring", + "unit_of_measurement": "M\u00e5leenhet", + "value_template": "Verdimal" + }, + "data_description": { + "column": "Kolonne for returnert foresp\u00f8rsel for \u00e5 presentere som tilstand", + "db_url": "Database-URL, la st\u00e5 tom for \u00e5 bruke standard HA-database", + "query": "Sp\u00f8rsm\u00e5let skal kj\u00f8res, m\u00e5 starte med \"SELECT\"", + "unit_of_measurement": "M\u00e5leenhet (valgfritt)", + "value_template": "Verdimal (valgfritt)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sql/translations/pl.json b/homeassistant/components/sql/translations/pl.json new file mode 100644 index 00000000000..0e8cb47b148 --- /dev/null +++ b/homeassistant/components/sql/translations/pl.json @@ -0,0 +1,55 @@ +{ + "config": { + "abort": { + "already_configured": "Konto jest ju\u017c skonfigurowane" + }, + "error": { + "db_url_invalid": "Nieprawid\u0142owy adres URL bazy danych", + "query_invalid": "Nieprawid\u0142owe zapytanie SQL", + "value_template_invalid": "Nieprawid\u0142owy szablon warto\u015bci" + }, + "step": { + "user": { + "data": { + "column": "Kolumna", + "db_url": "Adres URL bazy danych", + "query": "Wybierz zapytanie", + "unit_of_measurement": "Jednostka miary", + "value_template": "Szablon warto\u015bci" + }, + "data_description": { + "column": "Kolumna dla zwr\u00f3conego zapytania do przedstawienia jako stan", + "db_url": "Adres URL bazy danych, pozostaw puste, aby u\u017cy\u0107 domy\u015blnej bazy danych HA", + "query": "Zapytanie do uruchomienia, musi zaczyna\u0107 si\u0119 od \u201eSELECT\u201d", + "unit_of_measurement": "Jednostka miary (opcjonalnie)", + "value_template": "Szablon warto\u015bci (opcjonalnie)" + } + } + } + }, + "options": { + "error": { + "db_url_invalid": "Nieprawid\u0142owy adres URL bazy danych", + "query_invalid": "Nieprawid\u0142owe zapytanie SQL", + "value_template_invalid": "Nieprawid\u0142owy szablon warto\u015bci" + }, + "step": { + "init": { + "data": { + "column": "Kolumna", + "db_url": "Adres URL bazy danych", + "query": "Wybierz zapytanie", + "unit_of_measurement": "Jednostka miary", + "value_template": "Szablon warto\u015bci" + }, + "data_description": { + "column": "Kolumna dla zwr\u00f3conego zapytania do przedstawienia jako stan", + "db_url": "Adres URL bazy danych, pozostaw puste, aby u\u017cy\u0107 domy\u015blnej bazy danych HA", + "query": "Zapytanie do uruchomienia, musi zaczyna\u0107 si\u0119 od \u201eSELECT\u201d", + "unit_of_measurement": "Jednostka miary (opcjonalnie)", + "value_template": "Szablon warto\u015bci (opcjonalnie)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sql/translations/pt-BR.json b/homeassistant/components/sql/translations/pt-BR.json new file mode 100644 index 00000000000..10df43c7e1f --- /dev/null +++ b/homeassistant/components/sql/translations/pt-BR.json @@ -0,0 +1,55 @@ +{ + "config": { + "abort": { + "already_configured": "A conta j\u00e1 foi configurada" + }, + "error": { + "db_url_invalid": "URL do banco de dados inv\u00e1lida", + "query_invalid": "Consulta SQL inv\u00e1lida", + "value_template_invalid": "Modelo do valor inv\u00e1lido" + }, + "step": { + "user": { + "data": { + "column": "Coluna", + "db_url": "URL do banco de dados", + "query": "Selecionar consulta", + "unit_of_measurement": "Unidade de medida", + "value_template": "Modelo do valor" + }, + "data_description": { + "column": "Coluna para a consulta retornada para apresentar como estado", + "db_url": "URL do banco de dados, deixe em branco para usar o banco de dados padr\u00e3o", + "query": "Consulte para ser executada, precisa come\u00e7ar com 'SELECT'", + "unit_of_measurement": "Unidade de medida (opcional)", + "value_template": "Modelo do valor (opcional)" + } + } + } + }, + "options": { + "error": { + "db_url_invalid": "URL do banco de dados inv\u00e1lida", + "query_invalid": "Consulta SQL inv\u00e1lida", + "value_template_invalid": "Modelo do valor inv\u00e1lido" + }, + "step": { + "init": { + "data": { + "column": "Coluna", + "db_url": "URL do banco de dados", + "query": "Selecionar consulta", + "unit_of_measurement": "Unidade de medida", + "value_template": "Modelo do valor" + }, + "data_description": { + "column": "Coluna para a consulta retornada para apresentar como estado", + "db_url": "URL do banco de dados, deixe em branco para usar o banco de dados padr\u00e3o", + "query": "Consulte para ser executada, precisa come\u00e7ar com 'SELECT'", + "unit_of_measurement": "Unidade de medida (opcional)", + "value_template": "Modelo do valor (opcional)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sql/translations/ru.json b/homeassistant/components/sql/translations/ru.json new file mode 100644 index 00000000000..8f8e0741583 --- /dev/null +++ b/homeassistant/components/sql/translations/ru.json @@ -0,0 +1,55 @@ +{ + "config": { + "abort": { + "already_configured": "\u042d\u0442\u0430 \u0443\u0447\u0451\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 Home Assistant." + }, + "error": { + "db_url_invalid": "\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445.", + "query_invalid": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 SQL-\u0437\u0430\u043f\u0440\u043e\u0441.", + "value_template_invalid": "\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f." + }, + "step": { + "user": { + "data": { + "column": "\u0421\u0442\u043e\u043b\u0431\u0435\u0446", + "db_url": "URL-\u0430\u0434\u0440\u0435\u0441 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445", + "query": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441", + "unit_of_measurement": "\u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f", + "value_template": "\u0428\u0430\u0431\u043b\u043e\u043d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f" + }, + "data_description": { + "column": "\u0421\u0442\u043e\u043b\u0431\u0435\u0446 \u0434\u043b\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 \u0432\u0438\u0434\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f", + "db_url": "URL-\u0430\u0434\u0440\u0435\u0441 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u041e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0443\u0441\u0442\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 HA \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e", + "query": "\u0417\u0430\u043f\u0440\u043e\u0441 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441 'SELECT'", + "unit_of_measurement": "\u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)", + "value_template": "\u0428\u0430\u0431\u043b\u043e\u043d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)" + } + } + } + }, + "options": { + "error": { + "db_url_invalid": "\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445.", + "query_invalid": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 SQL-\u0437\u0430\u043f\u0440\u043e\u0441.", + "value_template_invalid": "\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f." + }, + "step": { + "init": { + "data": { + "column": "\u0421\u0442\u043e\u043b\u0431\u0435\u0446", + "db_url": "URL-\u0430\u0434\u0440\u0435\u0441 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445", + "query": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441", + "unit_of_measurement": "\u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f", + "value_template": "\u0428\u0430\u0431\u043b\u043e\u043d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f" + }, + "data_description": { + "column": "\u0421\u0442\u043e\u043b\u0431\u0435\u0446 \u0434\u043b\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 \u0432\u0438\u0434\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f", + "db_url": "URL-\u0430\u0434\u0440\u0435\u0441 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u041e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0443\u0441\u0442\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 HA \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e", + "query": "\u0417\u0430\u043f\u0440\u043e\u0441 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441 'SELECT'", + "unit_of_measurement": "\u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)", + "value_template": "\u0428\u0430\u0431\u043b\u043e\u043d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sql/translations/tr.json b/homeassistant/components/sql/translations/tr.json new file mode 100644 index 00000000000..edbce58d65a --- /dev/null +++ b/homeassistant/components/sql/translations/tr.json @@ -0,0 +1,55 @@ +{ + "config": { + "abort": { + "already_configured": "Hesap zaten yap\u0131land\u0131r\u0131lm\u0131\u015f" + }, + "error": { + "db_url_invalid": "Veritaban\u0131 URL'si ge\u00e7ersiz", + "query_invalid": "SQL Sorgusu ge\u00e7ersiz", + "value_template_invalid": "De\u011fer \u015eablonu ge\u00e7ersiz" + }, + "step": { + "user": { + "data": { + "column": "S\u00fctun", + "db_url": "Veritaban\u0131 URL'si", + "query": "Sorgu Se\u00e7", + "unit_of_measurement": "\u00d6l\u00e7\u00fc Birimi", + "value_template": "De\u011fer \u015eablonu" + }, + "data_description": { + "column": "D\u00f6nd\u00fcr\u00fclen sorgunun durum olarak sunulmas\u0131 i\u00e7in s\u00fctun", + "db_url": "Veritaban\u0131 URL'si, varsay\u0131lan HA veritaban\u0131n\u0131 kullanmak i\u00e7in bo\u015f b\u0131rak\u0131n", + "query": "\u00c7al\u0131\u015ft\u0131r\u0131lacak sorgu, 'SE\u00c7' ile ba\u015flamal\u0131d\u0131r", + "unit_of_measurement": "\u00d6l\u00e7\u00fc Birimi (iste\u011fe ba\u011fl\u0131)", + "value_template": "De\u011fer \u015eablonu (iste\u011fe ba\u011fl\u0131)" + } + } + } + }, + "options": { + "error": { + "db_url_invalid": "Veritaban\u0131 URL'si ge\u00e7ersiz", + "query_invalid": "SQL Sorgusu ge\u00e7ersiz", + "value_template_invalid": "De\u011fer \u015eablonu ge\u00e7ersiz" + }, + "step": { + "init": { + "data": { + "column": "S\u00fctun", + "db_url": "Veritaban\u0131 URL'si", + "query": "Sorgu Se\u00e7", + "unit_of_measurement": "\u00d6l\u00e7\u00fc Birimi", + "value_template": "De\u011fer \u015eablonu" + }, + "data_description": { + "column": "D\u00f6nd\u00fcr\u00fclen sorgunun durum olarak sunulmas\u0131 i\u00e7in s\u00fctun", + "db_url": "Veritaban\u0131 URL'si, varsay\u0131lan HA veritaban\u0131n\u0131 kullanmak i\u00e7in bo\u015f b\u0131rak\u0131n", + "query": "\u00c7al\u0131\u015ft\u0131r\u0131lacak sorgu, 'SE\u00c7' ile ba\u015flamal\u0131d\u0131r", + "unit_of_measurement": "\u00d6l\u00e7\u00fc Birimi (iste\u011fe ba\u011fl\u0131)", + "value_template": "De\u011fer \u015eablonu (iste\u011fe ba\u011fl\u0131)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sql/translations/zh-Hant.json b/homeassistant/components/sql/translations/zh-Hant.json new file mode 100644 index 00000000000..801d973049d --- /dev/null +++ b/homeassistant/components/sql/translations/zh-Hant.json @@ -0,0 +1,55 @@ +{ + "config": { + "abort": { + "already_configured": "\u5e33\u865f\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210" + }, + "error": { + "db_url_invalid": "\u8cc7\u6599\u5eab URL \u7121\u6548", + "query_invalid": "SQL \u67e5\u8a62\u7121\u6548", + "value_template_invalid": "\u6578\u503c\u6a21\u677f\u7121\u6548" + }, + "step": { + "user": { + "data": { + "column": "\u6b04\u4f4d", + "db_url": "\u8cc7\u6599\u5eab URL", + "query": "\u9078\u64c7\u67e5\u8a62", + "unit_of_measurement": "\u6e2c\u91cf\u55ae\u4f4d", + "value_template": "\u6578\u503c\u6a21\u677f" + }, + "data_description": { + "column": "\u67e5\u8a62\u56de\u8986\u6b04\u4f4d\u70ba\u72c0\u614b", + "db_url": "\u8cc7\u6599\u5eab URL\u3001\u4fdd\u7559\u7a7a\u767d\u4ee5\u4f7f\u7528\u9810\u8a2d HA \u8cc7\u6599\u5eab", + "query": "\u57f7\u884c\u7684\u67e5\u8a62\u3001\u9700\u8981\u4ee5 'SELECT' \u4f5c\u70ba\u958b\u982d", + "unit_of_measurement": "\u6e2c\u91cf\u55ae\u4f4d\uff08\u9078\u9805\uff09", + "value_template": "\u6578\u503c\u6a21\u677f\uff08\u9078\u9805\uff09" + } + } + } + }, + "options": { + "error": { + "db_url_invalid": "\u8cc7\u6599\u5eab URL \u7121\u6548", + "query_invalid": "SQL \u67e5\u8a62\u7121\u6548", + "value_template_invalid": "\u6578\u503c\u6a21\u677f\u7121\u6548" + }, + "step": { + "init": { + "data": { + "column": "\u6b04\u4f4d", + "db_url": "\u8cc7\u6599\u5eab URL", + "query": "\u9078\u64c7\u67e5\u8a62", + "unit_of_measurement": "\u6e2c\u91cf\u55ae\u4f4d", + "value_template": "\u6578\u503c\u6a21\u677f" + }, + "data_description": { + "column": "\u67e5\u8a62\u56de\u8986\u6b04\u4f4d\u70ba\u72c0\u614b", + "db_url": "\u8cc7\u6599\u5eab URL\u3001\u4fdd\u7559\u7a7a\u767d\u4ee5\u4f7f\u7528\u9810\u8a2d HA \u8cc7\u6599\u5eab", + "query": "\u57f7\u884c\u7684\u67e5\u8a62\u3001\u9700\u8981\u4ee5 'SELECT' \u4f5c\u70ba\u958b\u982d", + "unit_of_measurement": "\u6e2c\u91cf\u55ae\u4f4d\uff08\u9078\u9805\uff09", + "value_template": "\u6578\u503c\u6a21\u677f\uff08\u9078\u9805\uff09" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/ca.json b/homeassistant/components/srp_energy/translations/ca.json index c6617e617d4..45a2d2fa943 100644 --- a/homeassistant/components/srp_energy/translations/ca.json +++ b/homeassistant/components/srp_energy/translations/ca.json @@ -19,6 +19,5 @@ } } } - }, - "title": "SRP Energy" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/cs.json b/homeassistant/components/srp_energy/translations/cs.json index 74b4bd53090..74045d75b2e 100644 --- a/homeassistant/components/srp_energy/translations/cs.json +++ b/homeassistant/components/srp_energy/translations/cs.json @@ -18,6 +18,5 @@ } } } - }, - "title": "SRP Energy" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/de.json b/homeassistant/components/srp_energy/translations/de.json index a7992cac9b1..d1975b8f59d 100644 --- a/homeassistant/components/srp_energy/translations/de.json +++ b/homeassistant/components/srp_energy/translations/de.json @@ -19,6 +19,5 @@ } } } - }, - "title": "SRP Energy" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/el.json b/homeassistant/components/srp_energy/translations/el.json index 4583eb47823..99a5f1ea850 100644 --- a/homeassistant/components/srp_energy/translations/el.json +++ b/homeassistant/components/srp_energy/translations/el.json @@ -19,6 +19,5 @@ } } } - }, - "title": "SRP Energy" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/en.json b/homeassistant/components/srp_energy/translations/en.json index 99926b18b4f..a031e56022e 100644 --- a/homeassistant/components/srp_energy/translations/en.json +++ b/homeassistant/components/srp_energy/translations/en.json @@ -19,6 +19,5 @@ } } } - }, - "title": "SRP Energy" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/es.json b/homeassistant/components/srp_energy/translations/es.json index 849c5019d3b..ebd4583fe43 100644 --- a/homeassistant/components/srp_energy/translations/es.json +++ b/homeassistant/components/srp_energy/translations/es.json @@ -19,6 +19,5 @@ } } } - }, - "title": "SRP Energy" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/et.json b/homeassistant/components/srp_energy/translations/et.json index 558bb4a19ed..52f3de847fb 100644 --- a/homeassistant/components/srp_energy/translations/et.json +++ b/homeassistant/components/srp_energy/translations/et.json @@ -19,6 +19,5 @@ } } } - }, - "title": "" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/fr.json b/homeassistant/components/srp_energy/translations/fr.json index b8544d4d469..93c6ade07c4 100644 --- a/homeassistant/components/srp_energy/translations/fr.json +++ b/homeassistant/components/srp_energy/translations/fr.json @@ -19,6 +19,5 @@ } } } - }, - "title": "\u00c9nergie SRP" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/hu.json b/homeassistant/components/srp_energy/translations/hu.json index 4d617e09cfc..b032f24e5fc 100644 --- a/homeassistant/components/srp_energy/translations/hu.json +++ b/homeassistant/components/srp_energy/translations/hu.json @@ -19,6 +19,5 @@ } } } - }, - "title": "SRP Energy" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/id.json b/homeassistant/components/srp_energy/translations/id.json index fefcbff2ecb..113e07b987f 100644 --- a/homeassistant/components/srp_energy/translations/id.json +++ b/homeassistant/components/srp_energy/translations/id.json @@ -19,6 +19,5 @@ } } } - }, - "title": "SRP Energy" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/it.json b/homeassistant/components/srp_energy/translations/it.json index d5ccf02d74c..f81b5e2e1a4 100644 --- a/homeassistant/components/srp_energy/translations/it.json +++ b/homeassistant/components/srp_energy/translations/it.json @@ -19,6 +19,5 @@ } } } - }, - "title": "SRP Energy" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/ja.json b/homeassistant/components/srp_energy/translations/ja.json index 432c553910b..805a500502b 100644 --- a/homeassistant/components/srp_energy/translations/ja.json +++ b/homeassistant/components/srp_energy/translations/ja.json @@ -19,6 +19,5 @@ } } } - }, - "title": "SRP Energy" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/ka.json b/homeassistant/components/srp_energy/translations/ka.json index f4e15ad5d9e..3aec1ed2f43 100644 --- a/homeassistant/components/srp_energy/translations/ka.json +++ b/homeassistant/components/srp_energy/translations/ka.json @@ -19,6 +19,5 @@ } } } - }, - "title": "SRP Energy" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/ko.json b/homeassistant/components/srp_energy/translations/ko.json index b329cf1f2b1..bb0d912111e 100644 --- a/homeassistant/components/srp_energy/translations/ko.json +++ b/homeassistant/components/srp_energy/translations/ko.json @@ -19,6 +19,5 @@ } } } - }, - "title": "SRP Energy" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/nl.json b/homeassistant/components/srp_energy/translations/nl.json index 3cf2298b348..ce4ac90c223 100644 --- a/homeassistant/components/srp_energy/translations/nl.json +++ b/homeassistant/components/srp_energy/translations/nl.json @@ -19,6 +19,5 @@ } } } - }, - "title": "SRP Energy" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/no.json b/homeassistant/components/srp_energy/translations/no.json index 5505e140cd3..51bb1c7fd18 100644 --- a/homeassistant/components/srp_energy/translations/no.json +++ b/homeassistant/components/srp_energy/translations/no.json @@ -19,6 +19,5 @@ } } } - }, - "title": "SRP Energy" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/pl.json b/homeassistant/components/srp_energy/translations/pl.json index f89165a9065..eec873b6820 100644 --- a/homeassistant/components/srp_energy/translations/pl.json +++ b/homeassistant/components/srp_energy/translations/pl.json @@ -19,6 +19,5 @@ } } } - }, - "title": "SRP Energy" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/pt-BR.json b/homeassistant/components/srp_energy/translations/pt-BR.json index b0dbfe9c6d0..e7613d468a3 100644 --- a/homeassistant/components/srp_energy/translations/pt-BR.json +++ b/homeassistant/components/srp_energy/translations/pt-BR.json @@ -19,6 +19,5 @@ } } } - }, - "title": "SRP Energy" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/ru.json b/homeassistant/components/srp_energy/translations/ru.json index a492fa7dfb2..a94e18aa20a 100644 --- a/homeassistant/components/srp_energy/translations/ru.json +++ b/homeassistant/components/srp_energy/translations/ru.json @@ -19,6 +19,5 @@ } } } - }, - "title": "SRP Energy" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/tr.json b/homeassistant/components/srp_energy/translations/tr.json index ead8238d82c..0c815f97186 100644 --- a/homeassistant/components/srp_energy/translations/tr.json +++ b/homeassistant/components/srp_energy/translations/tr.json @@ -19,6 +19,5 @@ } } } - }, - "title": "SRP Enerji" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/uk.json b/homeassistant/components/srp_energy/translations/uk.json index 144e40f15bb..2d4b399947f 100644 --- a/homeassistant/components/srp_energy/translations/uk.json +++ b/homeassistant/components/srp_energy/translations/uk.json @@ -19,6 +19,5 @@ } } } - }, - "title": "SRP Energy" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/zh-Hans.json b/homeassistant/components/srp_energy/translations/zh-Hans.json index 36016f3e217..b0b26b02261 100644 --- a/homeassistant/components/srp_energy/translations/zh-Hans.json +++ b/homeassistant/components/srp_energy/translations/zh-Hans.json @@ -8,6 +8,5 @@ } } } - }, - "title": "SRP Energy" + } } \ No newline at end of file diff --git a/homeassistant/components/srp_energy/translations/zh-Hant.json b/homeassistant/components/srp_energy/translations/zh-Hant.json index adbf635100c..bed1cd5c3c1 100644 --- a/homeassistant/components/srp_energy/translations/zh-Hant.json +++ b/homeassistant/components/srp_energy/translations/zh-Hant.json @@ -19,6 +19,5 @@ } } } - }, - "title": "SRP Energy" + } } \ No newline at end of file diff --git a/homeassistant/components/steam_online/translations/de.json b/homeassistant/components/steam_online/translations/de.json new file mode 100644 index 00000000000..17950e14e24 --- /dev/null +++ b/homeassistant/components/steam_online/translations/de.json @@ -0,0 +1,36 @@ +{ + "config": { + "abort": { + "already_configured": "Der Dienst ist bereits konfiguriert", + "reauth_successful": "Die erneute Authentifizierung war erfolgreich" + }, + "error": { + "cannot_connect": "Verbindung fehlgeschlagen", + "invalid_account": "Ung\u00fcltige Konto-ID", + "invalid_auth": "Ung\u00fcltige Authentifizierung", + "unknown": "Unerwarteter Fehler" + }, + "step": { + "reauth_confirm": { + "description": "Die Steam-Integration muss manuell erneut authentifiziert werden \n\nDeinen Schl\u00fcssel findest du hier: https://steamcommunity.com/dev/apikey", + "title": "Integration erneut authentifizieren" + }, + "user": { + "data": { + "account": "Steam-Konto-ID", + "api_key": "API-Schl\u00fcssel" + }, + "description": "Verwende https://steamid.io, um deine Steam-Konto-ID zu finden" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "accounts": "Namen der zu \u00fcberwachenden Konten" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/steam_online/translations/el.json b/homeassistant/components/steam_online/translations/el.json new file mode 100644 index 00000000000..0f598dbc395 --- /dev/null +++ b/homeassistant/components/steam_online/translations/el.json @@ -0,0 +1,36 @@ +{ + "config": { + "abort": { + "already_configured": "\u0397 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af", + "reauth_successful": "\u039f \u03b5\u03ba \u03bd\u03ad\u03bf\u03c5 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03ae\u03c4\u03b1\u03bd \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03ae\u03c2" + }, + "error": { + "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", + "invalid_account": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03b1\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd", + "invalid_auth": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", + "unknown": "\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" + }, + "step": { + "reauth_confirm": { + "description": "\u0397 \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7 Steam \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03c0\u03b1\u03bb\u03b7\u03b8\u03b5\u03c5\u03c4\u03b5\u03af \u03be\u03b1\u03bd\u03ac \u03bc\u03b5 \u03bc\u03b7 \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03bf \u03c4\u03c1\u03cc\u03c0\u03bf \n\n \u039c\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03b2\u03c1\u03b5\u03af\u03c4\u03b5 \u03c4\u03bf \u03ba\u03bb\u03b5\u03b9\u03b4\u03af \u03c3\u03b1\u03c2 \u03b5\u03b4\u03ce: https://steamcommunity.com/dev/apikey", + "title": "\u0395\u03c0\u03b1\u03bd\u03b1\u03bb\u03b7\u03c0\u03c4\u03b9\u03ba\u03cc\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7\u03c2" + }, + "user": { + "data": { + "account": "\u0391\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd Steam", + "api_key": "\u039a\u03bb\u03b5\u03b9\u03b4\u03af API" + }, + "description": "\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf https://steamid.io \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b2\u03c1\u03b5\u03af\u03c4\u03b5 \u03c4\u03bf \u03b1\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c4\u03bf\u03c5 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd \u03c3\u03b1\u03c2 \u03c3\u03c4\u03bf Steam" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "accounts": "\u039f\u03bd\u03cc\u03bc\u03b1\u03c4\u03b1 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03ce\u03bd \u03c0\u03c1\u03bf\u03c2 \u03c0\u03b1\u03c1\u03b1\u03ba\u03bf\u03bb\u03bf\u03cd\u03b8\u03b7\u03c3\u03b7" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/steam_online/translations/en.json b/homeassistant/components/steam_online/translations/en.json index 69d80890d5a..8b34a85922d 100644 --- a/homeassistant/components/steam_online/translations/en.json +++ b/homeassistant/components/steam_online/translations/en.json @@ -6,22 +6,22 @@ }, "error": { "cannot_connect": "Failed to connect", - "invalid_auth": "Invalid authentication", "invalid_account": "Invalid account ID", + "invalid_auth": "Invalid authentication", "unknown": "Unexpected error" }, "step": { + "reauth_confirm": { + "description": "The Steam integration needs to be manually re-authenticated\n\nYou can find your key here: https://steamcommunity.com/dev/apikey", + "title": "Reauthenticate Integration" + }, "user": { "data": { - "api_key": "API Key", - "account": "Steam account ID" + "account": "Steam account ID", + "api_key": "API Key" }, - "description": "Documentation: https://www.home-assistant.io/integrations/steam_online\n\nUse https://steamid.io/ to find your Steam account ID" - }, - "reauth_confirm": { - "title": "Reauthenticate Integration", - "description": "The Steam integration needs to be manually re-authenticated\n\nYou can find your key here: https://steamcommunity.com/dev/apikey" - } + "description": "Use https://steamid.io to find your Steam account ID" + } } }, "options": { diff --git a/homeassistant/components/steam_online/translations/et.json b/homeassistant/components/steam_online/translations/et.json new file mode 100644 index 00000000000..8d501ccf50d --- /dev/null +++ b/homeassistant/components/steam_online/translations/et.json @@ -0,0 +1,36 @@ +{ + "config": { + "abort": { + "already_configured": "Teenus on juba h\u00e4\u00e4lestatud", + "reauth_successful": "Taastuvastamine \u00f5nnestus" + }, + "error": { + "cannot_connect": "\u00dchendamine nurjus", + "invalid_account": "Kehtetu konto ID", + "invalid_auth": "Tuvastamine nurjus", + "unknown": "Ootamatu t\u00f5rge" + }, + "step": { + "reauth_confirm": { + "description": "Steami sidumine tuleb uuesti autentida\n\nV\u00f5tme leiad siit: https://steamcommunity.com/dev/apikey", + "title": "Taastuvasta sidumine" + }, + "user": { + "data": { + "account": "Steami konto ID", + "api_key": "API v\u00f5ti" + }, + "description": "Kasuta https://steamid.io, et leida oma Steam'i konto ID" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "accounts": "J\u00e4lgitavate kontode nimed" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/steam_online/translations/fr.json b/homeassistant/components/steam_online/translations/fr.json new file mode 100644 index 00000000000..5ee6892eef7 --- /dev/null +++ b/homeassistant/components/steam_online/translations/fr.json @@ -0,0 +1,36 @@ +{ + "config": { + "abort": { + "already_configured": "Le service est d\u00e9j\u00e0 configur\u00e9", + "reauth_successful": "La r\u00e9-authentification a r\u00e9ussi" + }, + "error": { + "cannot_connect": "\u00c9chec de connexion", + "invalid_account": "ID de compte non valide", + "invalid_auth": "Authentification non valide", + "unknown": "Erreur inattendue" + }, + "step": { + "reauth_confirm": { + "description": "L'int\u00e9gration Steam doit \u00eatre r\u00e9-authentifi\u00e9e manuellement\n\nVous pouvez trouver votre cl\u00e9 ici\u00a0: https://steamcommunity.com/dev/apikey", + "title": "R\u00e9-authentifier l'int\u00e9gration" + }, + "user": { + "data": { + "account": "ID de compte Steam", + "api_key": "Cl\u00e9 d'API" + }, + "description": "Utilisez https://steamid.io pour trouver l'ID de votre compte Steam" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "accounts": "Noms des comptes \u00e0 surveiller" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/steam_online/translations/hu.json b/homeassistant/components/steam_online/translations/hu.json new file mode 100644 index 00000000000..9bd0976345e --- /dev/null +++ b/homeassistant/components/steam_online/translations/hu.json @@ -0,0 +1,36 @@ +{ + "config": { + "abort": { + "already_configured": "A szolg\u00e1ltat\u00e1s m\u00e1r konfigur\u00e1lva van", + "reauth_successful": "Az \u00fajrahiteles\u00edt\u00e9s sikeres volt." + }, + "error": { + "cannot_connect": "Sikertelen csatlakoz\u00e1s", + "invalid_account": "\u00c9rv\u00e9nytelen fi\u00f3kazonos\u00edt\u00f3", + "invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s", + "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" + }, + "step": { + "reauth_confirm": { + "description": "A Steam integr\u00e1ci\u00f3t manu\u00e1lisan \u00fajra kell hiteles\u00edteni .\n\nA kulcs itt tal\u00e1lhat\u00f3: https://steamcommunity.com/dev/apikey", + "title": "Integr\u00e1ci\u00f3 \u00fajrahiteles\u00edt\u00e9se" + }, + "user": { + "data": { + "account": "Steam fi\u00f3k azonos\u00edt\u00f3ja", + "api_key": "API kulcs" + }, + "description": "A https://steamid.io haszn\u00e1lat\u00e1val kaphat\u00f3 meg a Steam fi\u00f3kazonos\u00edt\u00f3" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "accounts": "A nyomon k\u00f6vetend\u0151 fi\u00f3kok nevei" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/steam_online/translations/id.json b/homeassistant/components/steam_online/translations/id.json new file mode 100644 index 00000000000..07d708067fc --- /dev/null +++ b/homeassistant/components/steam_online/translations/id.json @@ -0,0 +1,36 @@ +{ + "config": { + "abort": { + "already_configured": "Layanan sudah dikonfigurasi", + "reauth_successful": "Autentikasi ulang berhasil" + }, + "error": { + "cannot_connect": "Gagal terhubung", + "invalid_account": "ID akun tidak valid", + "invalid_auth": "Autentikasi tidak valid", + "unknown": "Kesalahan yang tidak diharapkan" + }, + "step": { + "reauth_confirm": { + "description": "Integrasi Steam perlu diautentikasi ulang secara manual \n\n Anda dapat menemukan kunci Anda di sini: https://steamcommunity.com/dev/apikey", + "title": "Autentikasi Ulang Integrasi" + }, + "user": { + "data": { + "account": "ID akun Steam", + "api_key": "Kunci API" + }, + "description": "Gunakan https://steamid.io untuk menemukan ID akun Steam Anda" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "accounts": "Nama akun yang akan dipantau" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/steam_online/translations/it.json b/homeassistant/components/steam_online/translations/it.json new file mode 100644 index 00000000000..71036870961 --- /dev/null +++ b/homeassistant/components/steam_online/translations/it.json @@ -0,0 +1,36 @@ +{ + "config": { + "abort": { + "already_configured": "Il servizio \u00e8 gi\u00e0 configurato", + "reauth_successful": "La nuova autenticazione \u00e8 stata eseguita correttamente" + }, + "error": { + "cannot_connect": "Impossibile connettersi", + "invalid_account": "ID account non valido", + "invalid_auth": "Autenticazione non valida", + "unknown": "Errore imprevisto" + }, + "step": { + "reauth_confirm": { + "description": "L'integrazione di Steam richiede una nuova autenticazione manuale \n\nPuoi trovare la tua chiave qui: https://steamcommunity.com/dev/apikey", + "title": "Autentica nuovamente l'integrazione" + }, + "user": { + "data": { + "account": "ID dell'account Steam", + "api_key": "Chiave API" + }, + "description": "Usa https://steamid.io per trovare l'ID del tuo account Steam" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "accounts": "Nomi degli account da monitorare" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/steam_online/translations/nl.json b/homeassistant/components/steam_online/translations/nl.json new file mode 100644 index 00000000000..20600463f6a --- /dev/null +++ b/homeassistant/components/steam_online/translations/nl.json @@ -0,0 +1,36 @@ +{ + "config": { + "abort": { + "already_configured": "Service is al geconfigureerd", + "reauth_successful": "Herauthenticatie was succesvol" + }, + "error": { + "cannot_connect": "Kan geen verbinding maken", + "invalid_account": "Ongeldige account ID", + "invalid_auth": "Ongeldige authenticatie", + "unknown": "Onverwachte fout" + }, + "step": { + "reauth_confirm": { + "description": "De Steam-integratie moet handmatig opnieuw worden geauthenticeerd.\n\nU vind uw API-sleutel hier: https://steamcommunity.com/dev/apikey", + "title": "Verifieer de integratie opnieuw" + }, + "user": { + "data": { + "account": "Steam Account-ID", + "api_key": "API-sleutel" + }, + "description": "Gebruik https://steamid.io om je Steam Account-ID te vinden." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "accounts": "Namen van de accounts die gemonitord moeten worden" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/steam_online/translations/no.json b/homeassistant/components/steam_online/translations/no.json new file mode 100644 index 00000000000..7e0122dfe18 --- /dev/null +++ b/homeassistant/components/steam_online/translations/no.json @@ -0,0 +1,36 @@ +{ + "config": { + "abort": { + "already_configured": "Tjenesten er allerede konfigurert", + "reauth_successful": "Godkjenning p\u00e5 nytt var vellykket" + }, + "error": { + "cannot_connect": "Tilkobling mislyktes", + "invalid_account": "Ugyldig konto-ID", + "invalid_auth": "Ugyldig godkjenning", + "unknown": "Uventet feil" + }, + "step": { + "reauth_confirm": { + "description": "Steam-integrasjonen m\u00e5 re-autentiseres manuelt \n\n Du finner n\u00f8kkelen din her: https://steamcommunity.com/dev/apikey", + "title": "Godkjenne integrering p\u00e5 nytt" + }, + "user": { + "data": { + "account": "Steam-konto-ID", + "api_key": "API-n\u00f8kkel" + }, + "description": "Bruk https://steamid.io for \u00e5 finne din Steam-konto-ID" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "accounts": "Navn p\u00e5 kontoer som skal overv\u00e5kes" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/steam_online/translations/pl.json b/homeassistant/components/steam_online/translations/pl.json new file mode 100644 index 00000000000..09c95bca9c4 --- /dev/null +++ b/homeassistant/components/steam_online/translations/pl.json @@ -0,0 +1,36 @@ +{ + "config": { + "abort": { + "already_configured": "Us\u0142uga jest ju\u017c skonfigurowana", + "reauth_successful": "Ponowne uwierzytelnienie powiod\u0142o si\u0119" + }, + "error": { + "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", + "invalid_account": "Niepoprawny identyfikator konta", + "invalid_auth": "Niepoprawne uwierzytelnienie", + "unknown": "Nieoczekiwany b\u0142\u0105d" + }, + "step": { + "reauth_confirm": { + "description": "Integracja Steam musi zosta\u0107 ponownie uwierzytelniona r\u0119cznie\n\nSw\u00f3j klucz znajdziesz tutaj: https://steamcommunity.com/dev/apikey", + "title": "Ponownie uwierzytelnij integracj\u0119" + }, + "user": { + "data": { + "account": "Identyfikator konta Steam", + "api_key": "Klucz API" + }, + "description": "U\u017cyj https://steamid.io, aby znale\u017a\u0107 sw\u00f3j identyfikator konta Steam" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "accounts": "Nazwy kont, kt\u00f3re maj\u0105 by\u0107 monitorowane" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/steam_online/translations/pt-BR.json b/homeassistant/components/steam_online/translations/pt-BR.json new file mode 100644 index 00000000000..93ff3e00dc5 --- /dev/null +++ b/homeassistant/components/steam_online/translations/pt-BR.json @@ -0,0 +1,36 @@ +{ + "config": { + "abort": { + "already_configured": "O servi\u00e7o j\u00e1 est\u00e1 configurado", + "reauth_successful": "A reautentica\u00e7\u00e3o foi bem-sucedida" + }, + "error": { + "cannot_connect": "Falha ao conectar", + "invalid_account": "ID de conta inv\u00e1lido", + "invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida", + "unknown": "Erro inesperado" + }, + "step": { + "reauth_confirm": { + "description": "A integra\u00e7\u00e3o da Steam precisa ser autenticada manualmente\n\nVoc\u00ea pode encontrar sua chave aqui: https://steamcommunity.com/dev/apikey", + "title": "Reautenticar Integra\u00e7\u00e3o" + }, + "user": { + "data": { + "account": "ID da conta Steam", + "api_key": "Chave da API" + }, + "description": "Use https://steamid.io para encontrar o ID da sua conta Steam" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "accounts": "Nomes das contas a serem monitoradas" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/steam_online/translations/ru.json b/homeassistant/components/steam_online/translations/ru.json new file mode 100644 index 00000000000..990226036d9 --- /dev/null +++ b/homeassistant/components/steam_online/translations/ru.json @@ -0,0 +1,25 @@ +{ + "config": { + "abort": { + "already_configured": "\u042d\u0442\u0430 \u0441\u043b\u0443\u0436\u0431\u0430 \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 Home Assistant.", + "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e." + }, + "error": { + "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", + "invalid_account": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438.", + "invalid_auth": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.", + "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." + }, + "step": { + "reauth_confirm": { + "description": "\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0441\u0432\u043e\u0439 \u043a\u043b\u044e\u0447 \u0437\u0434\u0435\u0441\u044c: https://steamcommunity.com/dev/apikey", + "title": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f" + }, + "user": { + "data": { + "account": "\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 Steam" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/steam_online/translations/zh-Hant.json b/homeassistant/components/steam_online/translations/zh-Hant.json new file mode 100644 index 00000000000..775c9710592 --- /dev/null +++ b/homeassistant/components/steam_online/translations/zh-Hant.json @@ -0,0 +1,36 @@ +{ + "config": { + "abort": { + "already_configured": "\u670d\u52d9\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", + "reauth_successful": "\u91cd\u65b0\u8a8d\u8b49\u6210\u529f" + }, + "error": { + "cannot_connect": "\u9023\u7dda\u5931\u6557", + "invalid_account": "\u5e33\u865f ID \u7121\u6548", + "invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548", + "unknown": "\u672a\u9810\u671f\u932f\u8aa4" + }, + "step": { + "reauth_confirm": { + "description": "Steam \u6574\u5408\u9700\u8981\u624b\u52d5\u91cd\u65b0\u8a8d\u8b49\n\n\u53ef\u4ee5\u65bc\u5f8c\u65b9\u7db2\u5740\u627e\u5230\u91d1\u9470\uff1ahttps://steamcommunity.com/dev/apikey", + "title": "\u91cd\u65b0\u8a8d\u8b49\u6574\u5408" + }, + "user": { + "data": { + "account": "Steam \u5e33\u865f ID", + "api_key": "API \u91d1\u9470" + }, + "description": "\u4f7f\u7528 https://steamid.io \u4ee5\u78ba\u8a8d\u60a8\u7684 Steam \u5e33\u865f ID" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "accounts": "\u6240\u8981\u76e3\u63a7\u7684\u5e33\u865f\u540d\u7a31" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/steamist/translations/hu.json b/homeassistant/components/steamist/translations/hu.json index 50cf36394cc..66448b03ab2 100644 --- a/homeassistant/components/steamist/translations/hu.json +++ b/homeassistant/components/steamist/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "cannot_connect": "Sikertelen csatlakoz\u00e1s", "no_devices_found": "Nem tal\u00e1lhat\u00f3 eszk\u00f6z a h\u00e1l\u00f3zaton", "not_steamist_device": "Nem egy seamist k\u00e9sz\u00fcl\u00e9k" diff --git a/homeassistant/components/subaru/translations/ca.json b/homeassistant/components/subaru/translations/ca.json index 6b83af06bb8..31ea78bcd46 100644 --- a/homeassistant/components/subaru/translations/ca.json +++ b/homeassistant/components/subaru/translations/ca.json @@ -6,9 +6,12 @@ }, "error": { "bad_pin_format": "El PIN ha de tenir 4 d\u00edgits", + "bad_validation_code_format": "El codi de validaci\u00f3 ha de tenir 6 d\u00edgits", "cannot_connect": "Ha fallat la connexi\u00f3", "incorrect_pin": "PIN incorrecte", - "invalid_auth": "Autenticaci\u00f3 inv\u00e0lida" + "incorrect_validation_code": "Codi de validaci\u00f3 inv\u00e0lid", + "invalid_auth": "Autenticaci\u00f3 inv\u00e0lida", + "two_factor_request_failed": "La sol\u00b7licitud de codi 2FA ha fallat. Torna-ho a provar" }, "step": { "pin": { @@ -18,6 +21,20 @@ "description": "Introdueix el teu PIN de MySubaru\nNOTA: tots els vehicles associats a un compte han de tenir el mateix PIN", "title": "Configuraci\u00f3 de Subaru Starlink" }, + "two_factor": { + "data": { + "contact_method": "Selecciona un m\u00e8tode de contacte:" + }, + "description": "Autenticaci\u00f3 de dos factors requerida", + "title": "Configuraci\u00f3 de Subaru Starlink" + }, + "two_factor_validate": { + "data": { + "validation_code": "Codi de validaci\u00f3" + }, + "description": "Introdueix el codi de validaci\u00f3 rebut", + "title": "Configuraci\u00f3 de Subaru Starlink" + }, "user": { "data": { "country": "Selecciona un pa\u00eds", diff --git a/homeassistant/components/subaru/translations/de.json b/homeassistant/components/subaru/translations/de.json index 4f10a4266ae..2156df0d1a8 100644 --- a/homeassistant/components/subaru/translations/de.json +++ b/homeassistant/components/subaru/translations/de.json @@ -6,9 +6,12 @@ }, "error": { "bad_pin_format": "Die PIN sollte 4-stellig sein", + "bad_validation_code_format": "Der Validierungscode sollte 6-stellig sein", "cannot_connect": "Verbindung fehlgeschlagen", "incorrect_pin": "Falsche PIN", - "invalid_auth": "Ung\u00fcltige Authentifizierung" + "incorrect_validation_code": "Falscher Validierungscode", + "invalid_auth": "Ung\u00fcltige Authentifizierung", + "two_factor_request_failed": "Anfrage f\u00fcr 2FA-Code fehlgeschlagen, bitte versuche es erneut" }, "step": { "pin": { @@ -18,6 +21,20 @@ "description": "Bitte gib deinen MySubaru-PIN ein\nHINWEIS: Alle Fahrzeuge im Konto m\u00fcssen dieselbe PIN haben", "title": "Subaru Starlink Konfiguration" }, + "two_factor": { + "data": { + "contact_method": "Bitte w\u00e4hle eine Kontaktmethode:" + }, + "description": "Zwei-Faktor-Authentifizierung erforderlich", + "title": "Subaru Starlink Konfiguration" + }, + "two_factor_validate": { + "data": { + "validation_code": "Validierungscode" + }, + "description": "Bitte gib den erhaltenen Validierungscode ein", + "title": "Subaru Starlink Konfiguration" + }, "user": { "data": { "country": "Land ausw\u00e4hlen", diff --git a/homeassistant/components/subaru/translations/el.json b/homeassistant/components/subaru/translations/el.json index 30ff37ccc1e..0376e95225b 100644 --- a/homeassistant/components/subaru/translations/el.json +++ b/homeassistant/components/subaru/translations/el.json @@ -6,9 +6,12 @@ }, "error": { "bad_pin_format": "\u03a4\u03bf PIN \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 4 \u03c8\u03b7\u03c6\u03af\u03b1", + "bad_validation_code_format": "\u039f \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b5\u03c0\u03b9\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7\u03c2 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 6 \u03c8\u03b7\u03c6\u03af\u03c9\u03bd", "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", "incorrect_pin": "\u039b\u03b1\u03bd\u03b8\u03b1\u03c3\u03bc\u03ad\u03bd\u03bf PIN", - "invalid_auth": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2" + "incorrect_validation_code": "\u0395\u03c3\u03c6\u03b1\u03bb\u03bc\u03ad\u03bd\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b5\u03c0\u03b9\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7\u03c2", + "invalid_auth": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", + "two_factor_request_failed": "\u03a4\u03bf \u03b1\u03af\u03c4\u03b7\u03bc\u03b1 \u03b3\u03b9\u03b1 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc 2FA \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5, \u03b4\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac" }, "step": { "pin": { @@ -18,6 +21,20 @@ "description": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf PIN \u03c3\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03bf MySubaru\n\u03a3\u0397\u039c\u0395\u0399\u03a9\u03a3\u0397: \u038c\u03bb\u03b1 \u03c4\u03b1 \u03bf\u03c7\u03ae\u03bc\u03b1\u03c4\u03b1 \u03c3\u03c4\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03ad\u03c7\u03bf\u03c5\u03bd \u03c4\u03bf\u03bd \u03af\u03b4\u03b9\u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc PIN", "title": "\u0394\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 Subaru Starlink" }, + "two_factor": { + "data": { + "contact_method": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03bc\u03b9\u03b1 \u03bc\u03ad\u03b8\u03bf\u03b4\u03bf \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03af\u03b1\u03c2:" + }, + "description": "\u0391\u03c0\u03b1\u03b9\u03c4\u03b5\u03af\u03c4\u03b1\u03b9 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03b4\u03cd\u03bf \u03c0\u03b1\u03c1\u03b1\u03b3\u03cc\u03bd\u03c4\u03c9\u03bd", + "title": "\u0394\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 Subaru Starlink" + }, + "two_factor_validate": { + "data": { + "validation_code": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b5\u03c0\u03b9\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7\u03c2" + }, + "description": "\u0395\u03b9\u03c3\u03b1\u03b3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03b5\u03c0\u03b9\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7\u03c2 \u03c0\u03bf\u03c5 \u03b5\u03bb\u03ae\u03c6\u03b8\u03b7", + "title": "\u0394\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 Subaru Starlink" + }, "user": { "data": { "country": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03c7\u03ce\u03c1\u03b1\u03c2", diff --git a/homeassistant/components/subaru/translations/en.json b/homeassistant/components/subaru/translations/en.json index 722363d4d74..ca2ad3c2c92 100644 --- a/homeassistant/components/subaru/translations/en.json +++ b/homeassistant/components/subaru/translations/en.json @@ -6,9 +6,12 @@ }, "error": { "bad_pin_format": "PIN should be 4 digits", + "bad_validation_code_format": "Validation code should be 6 digits", "cannot_connect": "Failed to connect", "incorrect_pin": "Incorrect PIN", - "invalid_auth": "Invalid authentication" + "incorrect_validation_code": "Incorrect validation code", + "invalid_auth": "Invalid authentication", + "two_factor_request_failed": "Request for 2FA code failed, please try again" }, "step": { "pin": { @@ -18,6 +21,20 @@ "description": "Please enter your MySubaru PIN\nNOTE: All vehicles in account must have the same PIN", "title": "Subaru Starlink Configuration" }, + "two_factor": { + "data": { + "contact_method": "Please select a contact method:" + }, + "description": "Two factor authentication required", + "title": "Subaru Starlink Configuration" + }, + "two_factor_validate": { + "data": { + "validation_code": "Validation code" + }, + "description": "Please enter validation code received", + "title": "Subaru Starlink Configuration" + }, "user": { "data": { "country": "Select country", diff --git a/homeassistant/components/subaru/translations/et.json b/homeassistant/components/subaru/translations/et.json index e7390b3b77f..acfa5055402 100644 --- a/homeassistant/components/subaru/translations/et.json +++ b/homeassistant/components/subaru/translations/et.json @@ -6,9 +6,12 @@ }, "error": { "bad_pin_format": "PIN-kood peaks olema 4-kohaline", + "bad_validation_code_format": "Kinnituskood peaks olema 6 kohaline", "cannot_connect": "\u00dchendamine nurjus", "incorrect_pin": "Vale PIN-kood", - "invalid_auth": "Vigane autentimine" + "incorrect_validation_code": "Vale kinnituskood", + "invalid_auth": "Vigane autentimine", + "two_factor_request_failed": "2FA koodi taotlus nurjus, proovi uuesti" }, "step": { "pin": { @@ -18,6 +21,20 @@ "description": "Sisesta oma MySubaru PIN-kood\n M\u00c4RKUS. K\u00f5igil kontol olevatel s\u00f5idukitel peab olema sama PIN-kood", "title": "Subaru Starlinki konfiguratsioon" }, + "two_factor": { + "data": { + "contact_method": "Vali kontaktimeetod" + }, + "description": "N\u00f5utav on kaheastmeline autentimine", + "title": "Subaru Starlink s\u00e4tted" + }, + "two_factor_validate": { + "data": { + "validation_code": "Kinnituskood" + }, + "description": "Sisesta saadud kinnituskood", + "title": "Subaru Starlink s\u00e4tted" + }, "user": { "data": { "country": "Vali riik", diff --git a/homeassistant/components/subaru/translations/fr.json b/homeassistant/components/subaru/translations/fr.json index fafcf81157b..a2b7159a6be 100644 --- a/homeassistant/components/subaru/translations/fr.json +++ b/homeassistant/components/subaru/translations/fr.json @@ -6,9 +6,12 @@ }, "error": { "bad_pin_format": "Le code PIN doit \u00eatre compos\u00e9 de 4 chiffres", + "bad_validation_code_format": "Le code de validation doit \u00eatre compos\u00e9 de six chiffres", "cannot_connect": "\u00c9chec de connexion", "incorrect_pin": "PIN incorrect", - "invalid_auth": "Authentification non valide" + "incorrect_validation_code": "Code de validation incorrect", + "invalid_auth": "Authentification non valide", + "two_factor_request_failed": "La demande de code 2FA a \u00e9chou\u00e9, veuillez r\u00e9essayer" }, "step": { "pin": { @@ -18,6 +21,20 @@ "description": "Veuillez entrer votre NIP MySubaru\nREMARQUE : Tous les v\u00e9hicules en compte doivent avoir le m\u00eame NIP", "title": "Configuration de Subaru Starlink" }, + "two_factor": { + "data": { + "contact_method": "Veuillez s\u00e9lectionner une m\u00e9thode de contact\u00a0:" + }, + "description": "Authentification \u00e0 deux facteurs requise", + "title": "Configuration Subaru Starlink" + }, + "two_factor_validate": { + "data": { + "validation_code": "Code de validation" + }, + "description": "Veuillez saisir le code de validation re\u00e7u", + "title": "Configuration Subaru Starlink" + }, "user": { "data": { "country": "Choisissez le pays", diff --git a/homeassistant/components/subaru/translations/hu.json b/homeassistant/components/subaru/translations/hu.json index a54ddd57c39..42f9f6bb2c9 100644 --- a/homeassistant/components/subaru/translations/hu.json +++ b/homeassistant/components/subaru/translations/hu.json @@ -6,9 +6,12 @@ }, "error": { "bad_pin_format": "A PIN-nek 4 sz\u00e1mjegy\u0171nek kell lennie", + "bad_validation_code_format": "Az \u00e9rv\u00e9nyes\u00edt\u0151 k\u00f3dnak 6 sz\u00e1mjegyb\u0151l kell \u00e1llnia", "cannot_connect": "Sikertelen csatlakoz\u00e1s", "incorrect_pin": "Helytelen PIN", - "invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s" + "incorrect_validation_code": "Helytelen \u00e9rv\u00e9nyes\u00edt\u00e9si k\u00f3d", + "invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s", + "two_factor_request_failed": "A k\u00e9tfaktoros hiteles\u00edt\u00e9si k\u00f3d lek\u00e9r\u00e9se sikertelen, k\u00e9rj\u00fck, pr\u00f3b\u00e1lja meg \u00fajra" }, "step": { "pin": { @@ -18,9 +21,23 @@ "description": "K\u00e9rj\u00fck, adja meg MySubaru PIN-k\u00f3dj\u00e1t\n MEGJEGYZ\u00c9S: A sz\u00e1ml\u00e1n szerepl\u0151 \u00f6sszes j\u00e1rm\u0171nek azonos PIN-k\u00f3ddal kell rendelkeznie", "title": "Subaru Starlink konfigur\u00e1ci\u00f3" }, + "two_factor": { + "data": { + "contact_method": "V\u00e1lasszon kapcsolatfelv\u00e9teli m\u00f3dot:" + }, + "description": "K\u00e9tfaktoros hiteles\u00edt\u00e9s sz\u00fcks\u00e9ges", + "title": "Subaru Starlink konfigur\u00e1ci\u00f3" + }, + "two_factor_validate": { + "data": { + "validation_code": "\u00c9rv\u00e9nyes\u00edt\u00e9si k\u00f3d" + }, + "description": "K\u00e9rj\u00fck, adja meg az \u00e9rv\u00e9nyes\u00edt\u00e9si k\u00f3dot", + "title": "Subaru Starlink konfigur\u00e1ci\u00f3" + }, "user": { "data": { - "country": "V\u00e1lassz orsz\u00e1got", + "country": "V\u00e1lasszon orsz\u00e1got", "password": "Jelsz\u00f3", "username": "Felhaszn\u00e1l\u00f3n\u00e9v" }, diff --git a/homeassistant/components/subaru/translations/id.json b/homeassistant/components/subaru/translations/id.json index 2a44ec16b92..cf0d37a0c30 100644 --- a/homeassistant/components/subaru/translations/id.json +++ b/homeassistant/components/subaru/translations/id.json @@ -6,9 +6,12 @@ }, "error": { "bad_pin_format": "PIN harus terdiri dari 4 angka", + "bad_validation_code_format": "Kode validasi harus terdiri dari 6 angka", "cannot_connect": "Gagal terhubung", "incorrect_pin": "PIN salah", - "invalid_auth": "Autentikasi tidak valid" + "incorrect_validation_code": "Kode validasi salah", + "invalid_auth": "Autentikasi tidak valid", + "two_factor_request_failed": "Permintaan kode 2FA gagal, silakan coba lagi" }, "step": { "pin": { @@ -18,6 +21,20 @@ "description": "Masukkan PIN MySubaru Anda\nCATATAN: Semua kendaraan dalam akun harus memiliki PIN yang sama", "title": "Konfigurasi Subaru Starlink" }, + "two_factor": { + "data": { + "contact_method": "Pilih metode kontak:" + }, + "description": "Diperlukan autentikasi dua faktor", + "title": "Konfigurasi Subaru Starlink" + }, + "two_factor_validate": { + "data": { + "validation_code": "Kode validasi" + }, + "description": "Masukkan kode validasi yang diterima", + "title": "Konfigurasi Subaru Starlink" + }, "user": { "data": { "country": "Pilih negara", diff --git a/homeassistant/components/subaru/translations/it.json b/homeassistant/components/subaru/translations/it.json index a6752b810eb..ea8399dbdc5 100644 --- a/homeassistant/components/subaru/translations/it.json +++ b/homeassistant/components/subaru/translations/it.json @@ -6,9 +6,12 @@ }, "error": { "bad_pin_format": "Il PIN deve essere di 4 cifre", + "bad_validation_code_format": "Il codice di convalida deve essere di 6 cifre", "cannot_connect": "Impossibile connettersi", "incorrect_pin": "PIN errato", - "invalid_auth": "Autenticazione non valida" + "incorrect_validation_code": "Codice di convalida errato", + "invalid_auth": "Autenticazione non valida", + "two_factor_request_failed": "Richiesta di codice 2FA non riuscita, riprova" }, "step": { "pin": { @@ -18,6 +21,20 @@ "description": "Inserisci il tuo PIN MySubaru\nNOTA: tutti i veicoli nell'account devono avere lo stesso PIN", "title": "Configurazione Subaru Starlink" }, + "two_factor": { + "data": { + "contact_method": "Seleziona un metodo di contatto:" + }, + "description": "Autenticazione a due fattori richiesta", + "title": "Configurazione Subaru Starlink" + }, + "two_factor_validate": { + "data": { + "validation_code": "Codice di validazione" + }, + "description": "Inserisci il codice di convalida ricevuto", + "title": "Configurazione Subaru Starlink" + }, "user": { "data": { "country": "Seleziona il paese", diff --git a/homeassistant/components/subaru/translations/ja.json b/homeassistant/components/subaru/translations/ja.json index b8949709464..8dcba4b4b23 100644 --- a/homeassistant/components/subaru/translations/ja.json +++ b/homeassistant/components/subaru/translations/ja.json @@ -6,9 +6,12 @@ }, "error": { "bad_pin_format": "PIN\u306f4\u6841\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059", + "bad_validation_code_format": "\u691c\u8a3c\u30b3\u30fc\u30c9\u306f6\u6841\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059", "cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f", "incorrect_pin": "PIN\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093", - "invalid_auth": "\u7121\u52b9\u306a\u8a8d\u8a3c" + "incorrect_validation_code": "\u691c\u8a3c\u30b3\u30fc\u30c9\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093", + "invalid_auth": "\u7121\u52b9\u306a\u8a8d\u8a3c", + "two_factor_request_failed": "2FA\u30b3\u30fc\u30c9\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044" }, "step": { "pin": { @@ -18,6 +21,20 @@ "description": "MySubaru PIN\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\n\u6ce8: \u30a2\u30ab\u30a6\u30f3\u30c8\u5185\u306e\u3059\u3079\u3066\u306e\u8eca\u4e21\u306f\u3001\u540c\u3058PIN\u3092\u6301\u3063\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059", "title": "Subaru Starlink\u306e\u8a2d\u5b9a" }, + "two_factor": { + "data": { + "contact_method": "\u9023\u7d61\u65b9\u6cd5\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\uff1a" + }, + "description": "\u4e8c\u8981\u7d20\u8a8d\u8a3c\u304c\u5fc5\u8981", + "title": "Subaru Starlink\u306e\u8a2d\u5b9a" + }, + "two_factor_validate": { + "data": { + "validation_code": "\u691c\u8a3c\u30b3\u30fc\u30c9" + }, + "description": "\u53d7\u3051\u53d6\u3063\u305f\u691c\u8a3c\u30b3\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044", + "title": "Subaru Starlink\u306e\u8a2d\u5b9a" + }, "user": { "data": { "country": "\u56fd\u3092\u9078\u629e", diff --git a/homeassistant/components/subaru/translations/nl.json b/homeassistant/components/subaru/translations/nl.json index 931ed6f967f..256180d444b 100644 --- a/homeassistant/components/subaru/translations/nl.json +++ b/homeassistant/components/subaru/translations/nl.json @@ -6,9 +6,12 @@ }, "error": { "bad_pin_format": "De pincode moet uit 4 cijfers bestaan", + "bad_validation_code_format": "De validatiecode moet uit 6 cijfers bestaan", "cannot_connect": "Kan geen verbinding maken", "incorrect_pin": "Onjuiste PIN", - "invalid_auth": "Ongeldige authenticatie" + "incorrect_validation_code": "Onjuiste validatiecode", + "invalid_auth": "Ongeldige authenticatie", + "two_factor_request_failed": "Verzoek om 2FA code mislukt, probeer opnieuw" }, "step": { "pin": { @@ -18,6 +21,20 @@ "description": "Voer uw MySubaru-pincode in\n OPMERKING: Alle voertuigen in een account moeten dezelfde pincode hebben", "title": "Subaru Starlink Configuratie" }, + "two_factor": { + "data": { + "contact_method": "Selecteer een contactmethode:" + }, + "description": "Tweefactorauthenticatie vereist", + "title": "Subaru Starlink-configuratie" + }, + "two_factor_validate": { + "data": { + "validation_code": "Validatiecode" + }, + "description": "Voer de ontvangen validatiecode in", + "title": "Subaru Starlink-configuratie" + }, "user": { "data": { "country": "Selecteer land", diff --git a/homeassistant/components/subaru/translations/no.json b/homeassistant/components/subaru/translations/no.json index 6ac200ec131..3e3a78949db 100644 --- a/homeassistant/components/subaru/translations/no.json +++ b/homeassistant/components/subaru/translations/no.json @@ -6,9 +6,12 @@ }, "error": { "bad_pin_format": "PIN-koden skal best\u00e5 av fire sifre", + "bad_validation_code_format": "Valideringskoden skal v\u00e6re p\u00e5 6 sifre", "cannot_connect": "Tilkobling mislyktes", "incorrect_pin": "Feil PIN", - "invalid_auth": "Ugyldig godkjenning" + "incorrect_validation_code": "Feil valideringskode", + "invalid_auth": "Ugyldig godkjenning", + "two_factor_request_failed": "Foresp\u00f8rsel om 2FA-kode mislyktes, pr\u00f8v igjen" }, "step": { "pin": { @@ -18,6 +21,20 @@ "description": "Vennligst skriv inn MySubaru PIN-koden\n MERKNAD: Alle kj\u00f8ret\u00f8yer som er kontoen m\u00e5 ha samme PIN-kode", "title": "Subaru Starlink-konfigurasjon" }, + "two_factor": { + "data": { + "contact_method": "Velg en kontaktmetode:" + }, + "description": "Tofaktorautentisering kreves", + "title": "Subaru Starlink-konfigurasjon" + }, + "two_factor_validate": { + "data": { + "validation_code": "Valideringskode" + }, + "description": "Vennligst skriv inn valideringskode mottatt", + "title": "Subaru Starlink-konfigurasjon" + }, "user": { "data": { "country": "Velg land", diff --git a/homeassistant/components/subaru/translations/pl.json b/homeassistant/components/subaru/translations/pl.json index b0d491d475e..679e5779507 100644 --- a/homeassistant/components/subaru/translations/pl.json +++ b/homeassistant/components/subaru/translations/pl.json @@ -6,9 +6,12 @@ }, "error": { "bad_pin_format": "PIN powinien sk\u0142ada\u0107 si\u0119 z 4 cyfr", + "bad_validation_code_format": "Kod weryfikacyjny powinien mie\u0107 6 cyfr", "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", "incorrect_pin": "Nieprawid\u0142owy PIN", - "invalid_auth": "Niepoprawne uwierzytelnienie" + "incorrect_validation_code": "Nieprawid\u0142owy kod weryfikacyjny", + "invalid_auth": "Niepoprawne uwierzytelnienie", + "two_factor_request_failed": "\u017b\u0105danie kodu 2FA nie powiod\u0142o si\u0119, spr\u00f3buj ponownie" }, "step": { "pin": { @@ -18,6 +21,20 @@ "description": "Wprowad\u017a sw\u00f3j PIN dla MySubaru\nUWAGA: Wszystkie pojazdy na koncie musz\u0105 mie\u0107 ten sam kod PIN", "title": "Konfiguracja Subaru Starlink" }, + "two_factor": { + "data": { + "contact_method": "Prosz\u0119 wybra\u0107 spos\u00f3b kontaktu:" + }, + "description": "Wymagane uwierzytelnianie dwusk\u0142adnikowe", + "title": "Konfiguracja Subaru Starlink" + }, + "two_factor_validate": { + "data": { + "validation_code": "Kod weryfikacyjny" + }, + "description": "Wprowad\u017a otrzymany kod weryfikacyjny", + "title": "Konfiguracja Subaru Starlink" + }, "user": { "data": { "country": "Wybierz kraj", diff --git a/homeassistant/components/subaru/translations/pt-BR.json b/homeassistant/components/subaru/translations/pt-BR.json index e88a9e883c0..e53a16fa33f 100644 --- a/homeassistant/components/subaru/translations/pt-BR.json +++ b/homeassistant/components/subaru/translations/pt-BR.json @@ -6,9 +6,12 @@ }, "error": { "bad_pin_format": "O PIN deve ter 4 d\u00edgitos", + "bad_validation_code_format": "O c\u00f3digo de valida\u00e7\u00e3o deve ter 6 d\u00edgitos", "cannot_connect": "Falha ao conectar", "incorrect_pin": "PIN incorreto", - "invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida" + "incorrect_validation_code": "C\u00f3digo de valida\u00e7\u00e3o incorreto", + "invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida", + "two_factor_request_failed": "Falha na solicita\u00e7\u00e3o do c\u00f3digo 2FA, por favor tente novamente" }, "step": { "pin": { @@ -18,6 +21,20 @@ "description": "Por favor, digite seu PIN MySubaru\n NOTA: Todos os ve\u00edculos em conta devem ter o mesmo PIN", "title": "Configura\u00e7\u00e3o do Subaru Starlink" }, + "two_factor": { + "data": { + "contact_method": "Selecione um m\u00e9todo de contato:" + }, + "description": "Autentica\u00e7\u00e3o de dois fatores necess\u00e1ria", + "title": "Configura\u00e7\u00e3o do Subaru Starlink" + }, + "two_factor_validate": { + "data": { + "validation_code": "C\u00f3digo de valida\u00e7\u00e3o" + }, + "description": "Insira o c\u00f3digo de valida\u00e7\u00e3o recebido", + "title": "Configura\u00e7\u00e3o do Subaru Starlink" + }, "user": { "data": { "country": "Selecione o pa\u00eds", diff --git a/homeassistant/components/subaru/translations/ru.json b/homeassistant/components/subaru/translations/ru.json index 87f56f8ac8a..45eddd02bc1 100644 --- a/homeassistant/components/subaru/translations/ru.json +++ b/homeassistant/components/subaru/translations/ru.json @@ -6,9 +6,12 @@ }, "error": { "bad_pin_format": "PIN-\u043a\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 4 \u0446\u0438\u0444\u0440.", + "bad_validation_code_format": "\u041a\u043e\u0434 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 6 \u0446\u0438\u0444\u0440.", "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", "incorrect_pin": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 PIN-\u043a\u043e\u0434.", - "invalid_auth": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438." + "incorrect_validation_code": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f.", + "invalid_auth": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.", + "two_factor_request_failed": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043a\u043e\u0434 2FA. \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443." }, "step": { "pin": { @@ -18,6 +21,20 @@ "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 PIN-\u043a\u043e\u0434 MySubaru.\n\u0412\u0441\u0435 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u0438 \u0432 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 PIN-\u043a\u043e\u0434.", "title": "Subaru Starlink" }, + "two_factor": { + "data": { + "contact_method": "\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u0432\u044f\u0437\u0438:" + }, + "description": "\u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f", + "title": "Subaru Starlink" + }, + "two_factor_validate": { + "data": { + "validation_code": "\u041a\u043e\u0434 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f" + }, + "description": "\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f.", + "title": "Subaru Starlink" + }, "user": { "data": { "country": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0443", diff --git a/homeassistant/components/subaru/translations/tr.json b/homeassistant/components/subaru/translations/tr.json index 5724bd4f2c3..3b9f1acc60e 100644 --- a/homeassistant/components/subaru/translations/tr.json +++ b/homeassistant/components/subaru/translations/tr.json @@ -6,9 +6,12 @@ }, "error": { "bad_pin_format": "PIN 4 haneli olmal\u0131d\u0131r", + "bad_validation_code_format": "Do\u011frulama kodu 6 basamakl\u0131 olmal\u0131d\u0131r", "cannot_connect": "Ba\u011flanma hatas\u0131", "incorrect_pin": "Yanl\u0131\u015f PIN", - "invalid_auth": "Ge\u00e7ersiz kimlik do\u011frulama" + "incorrect_validation_code": "Yanl\u0131\u015f do\u011frulama kodu", + "invalid_auth": "Ge\u00e7ersiz kimlik do\u011frulama", + "two_factor_request_failed": "2FA kodu iste\u011fi ba\u015far\u0131s\u0131z oldu, l\u00fctfen tekrar deneyin" }, "step": { "pin": { @@ -18,6 +21,20 @@ "description": "L\u00fctfen MySubaru PIN'inizi girin\n NOT: Hesaptaki t\u00fcm ara\u00e7lar ayn\u0131 PIN'e sahip olmal\u0131d\u0131r", "title": "Subaru Starlink Yap\u0131land\u0131rmas\u0131" }, + "two_factor": { + "data": { + "contact_method": "L\u00fctfen bir ileti\u015fim y\u00f6ntemi se\u00e7in:" + }, + "description": "\u0130ki fakt\u00f6rl\u00fc kimlik do\u011frulama gerekli", + "title": "Subaru Starlink Yap\u0131land\u0131rmas\u0131" + }, + "two_factor_validate": { + "data": { + "validation_code": "Do\u011frulama kodu" + }, + "description": "L\u00fctfen al\u0131nan do\u011frulama kodunu girin", + "title": "Subaru Starlink Yap\u0131land\u0131rmas\u0131" + }, "user": { "data": { "country": "\u00dclkeyi se\u00e7", diff --git a/homeassistant/components/subaru/translations/zh-Hant.json b/homeassistant/components/subaru/translations/zh-Hant.json index 6264f01791e..2e4a22423e0 100644 --- a/homeassistant/components/subaru/translations/zh-Hant.json +++ b/homeassistant/components/subaru/translations/zh-Hant.json @@ -6,9 +6,12 @@ }, "error": { "bad_pin_format": "PIN \u78bc\u61c9\u8a72\u70ba 4 \u4f4d\u6578\u5b57", + "bad_validation_code_format": "\u9a57\u8b49\u78bc\u5fc5\u9808\u5305\u542b 6 \u4f4d\u6578\u5b57", "cannot_connect": "\u9023\u7dda\u5931\u6557", "incorrect_pin": "PIN \u78bc\u932f\u8aa4", - "invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548" + "incorrect_validation_code": "\u9a57\u8b49\u78bc\u7121\u6548", + "invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548", + "two_factor_request_failed": "\u6240\u9700\u96d9\u91cd\u8a8d\u8b49\u5931\u6557\uff0c\u8acb\u518d\u8a66\u4e00\u6b21" }, "step": { "pin": { @@ -18,6 +21,20 @@ "description": "\u8acb\u8f38\u5165 MySubaru PIN \u78bc\n\u6ce8\u610f\uff1a\u6240\u4ee5\u5e33\u865f\u5167\u8eca\u8f1b\u90fd\u5fc5\u9808\u4f7f\u7528\u76f8\u540c PIN \u78bc", "title": "Subaru Starlink \u8a2d\u5b9a" }, + "two_factor": { + "data": { + "contact_method": "\u8acb\u9078\u64c7\u806f\u7d61\u65b9\u5f0f\uff1a" + }, + "description": "\u9700\u8981\u96d9\u91cd\u8a8d\u8b49\u78bc", + "title": "Subaru Starlink \u8a2d\u5b9a" + }, + "two_factor_validate": { + "data": { + "validation_code": "\u9a57\u8b49\u78bc" + }, + "description": "\u8acb\u8f38\u5165\u6240\u6536\u5230\u7684\u9a57\u8b49\u78bc", + "title": "Subaru Starlink \u8a2d\u5b9a" + }, "user": { "data": { "country": "\u9078\u64c7\u570b\u5bb6", diff --git a/homeassistant/components/sun/translations/bg.json b/homeassistant/components/sun/translations/bg.json index 7b6c5241cd2..81ead95c95f 100644 --- a/homeassistant/components/sun/translations/bg.json +++ b/homeassistant/components/sun/translations/bg.json @@ -1,4 +1,9 @@ { + "config": { + "abort": { + "single_instance_allowed": "\u0412\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e. \u0412\u044a\u0437\u043c\u043e\u0436\u043d\u0430 \u0435 \u0441\u0430\u043c\u043e \u0435\u0434\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f." + } + }, "state": { "_": { "above_horizon": "\u041d\u0430\u0434 \u0445\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430", diff --git a/homeassistant/components/sun/translations/ca.json b/homeassistant/components/sun/translations/ca.json index 5a49afefc5d..00a37d8b2b3 100644 --- a/homeassistant/components/sun/translations/ca.json +++ b/homeassistant/components/sun/translations/ca.json @@ -1,4 +1,14 @@ { + "config": { + "abort": { + "single_instance_allowed": "Ja configurat. Nom\u00e9s \u00e9s possible una sola configuraci\u00f3." + }, + "step": { + "user": { + "description": "Vols comen\u00e7ar la configuraci\u00f3?" + } + } + }, "state": { "_": { "above_horizon": "Sobre l'horitz\u00f3", diff --git a/homeassistant/components/sun/translations/cs.json b/homeassistant/components/sun/translations/cs.json index fe13d3e4fb0..b4a01f4473e 100644 --- a/homeassistant/components/sun/translations/cs.json +++ b/homeassistant/components/sun/translations/cs.json @@ -1,4 +1,14 @@ { + "config": { + "abort": { + "single_instance_allowed": "Ji\u017e nastaveno. Je mo\u017en\u00e1 pouze jedin\u00e1 konfigurace." + }, + "step": { + "user": { + "description": "Chcete za\u010d\u00edt nastavovat?" + } + } + }, "state": { "_": { "above_horizon": "Nad obzorem", diff --git a/homeassistant/components/sun/translations/de.json b/homeassistant/components/sun/translations/de.json index 6b81cf14f76..405c9dac6d4 100644 --- a/homeassistant/components/sun/translations/de.json +++ b/homeassistant/components/sun/translations/de.json @@ -1,4 +1,14 @@ { + "config": { + "abort": { + "single_instance_allowed": "Bereits konfiguriert. Nur eine einzige Konfiguration m\u00f6glich." + }, + "step": { + "user": { + "description": "M\u00f6chtest Du mit der Einrichtung beginnen?" + } + } + }, "state": { "_": { "above_horizon": "\u00dcber dem Horizont", diff --git a/homeassistant/components/sun/translations/el.json b/homeassistant/components/sun/translations/el.json index 5079c2476aa..fa3d87d574b 100644 --- a/homeassistant/components/sun/translations/el.json +++ b/homeassistant/components/sun/translations/el.json @@ -1,4 +1,14 @@ { + "config": { + "abort": { + "single_instance_allowed": "\u0388\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af. \u039c\u03cc\u03bd\u03bf \u03bc\u03af\u03b1 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae." + }, + "step": { + "user": { + "description": "\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03be\u03b5\u03ba\u03b9\u03bd\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7 \u03c1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7;" + } + } + }, "state": { "_": { "above_horizon": "\u03a0\u03ac\u03bd\u03c9 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03bf\u03c1\u03af\u03b6\u03bf\u03bd\u03c4\u03b1", diff --git a/homeassistant/components/sun/translations/en.json b/homeassistant/components/sun/translations/en.json index 2278e262bb8..367fdab917c 100644 --- a/homeassistant/components/sun/translations/en.json +++ b/homeassistant/components/sun/translations/en.json @@ -1,4 +1,14 @@ { + "config": { + "abort": { + "single_instance_allowed": "Already configured. Only a single configuration possible." + }, + "step": { + "user": { + "description": "Do you want to start set up?" + } + } + }, "state": { "_": { "above_horizon": "Above horizon", diff --git a/homeassistant/components/sun/translations/et.json b/homeassistant/components/sun/translations/et.json index 1a4020215f0..d2fe374ddfc 100644 --- a/homeassistant/components/sun/translations/et.json +++ b/homeassistant/components/sun/translations/et.json @@ -1,4 +1,14 @@ { + "config": { + "abort": { + "single_instance_allowed": "Juba seadistatud. V\u00f5imalik on ainult \u00fcks seadistamine." + }, + "step": { + "user": { + "description": "Kas soovid alustada seadistamist?" + } + } + }, "state": { "_": { "above_horizon": "T\u00f5usnud", diff --git a/homeassistant/components/sun/translations/fr.json b/homeassistant/components/sun/translations/fr.json index a878c8022b1..b743a33499d 100644 --- a/homeassistant/components/sun/translations/fr.json +++ b/homeassistant/components/sun/translations/fr.json @@ -1,4 +1,14 @@ { + "config": { + "abort": { + "single_instance_allowed": "D\u00e9j\u00e0 configur\u00e9. Une seule configuration possible." + }, + "step": { + "user": { + "description": "Voulez-vous commencer la configuration\u00a0?" + } + } + }, "state": { "_": { "above_horizon": "Au-dessus de l'horizon", diff --git a/homeassistant/components/sun/translations/he.json b/homeassistant/components/sun/translations/he.json index 26a2def7d00..2c851de857e 100644 --- a/homeassistant/components/sun/translations/he.json +++ b/homeassistant/components/sun/translations/he.json @@ -1,4 +1,14 @@ { + "config": { + "abort": { + "single_instance_allowed": "\u05ea\u05e6\u05d5\u05e8\u05ea\u05d5 \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4. \u05e8\u05e7 \u05ea\u05e6\u05d5\u05e8\u05d4 \u05d0\u05d7\u05ea \u05d0\u05e4\u05e9\u05e8\u05d9\u05ea." + }, + "step": { + "user": { + "description": "\u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05ea\u05d7\u05d9\u05dc \u05d1\u05d4\u05d2\u05d3\u05e8\u05d4?" + } + } + }, "state": { "_": { "above_horizon": "\u05de\u05e2\u05dc \u05d4\u05d0\u05d5\u05e4\u05e7", diff --git a/homeassistant/components/sun/translations/hu.json b/homeassistant/components/sun/translations/hu.json index 2275d61b35a..402320f02f9 100644 --- a/homeassistant/components/sun/translations/hu.json +++ b/homeassistant/components/sun/translations/hu.json @@ -1,4 +1,14 @@ { + "config": { + "abort": { + "single_instance_allowed": "M\u00e1r konfigur\u00e1lva van. Csak egy konfigur\u00e1ci\u00f3 lehets\u00e9ges." + }, + "step": { + "user": { + "description": "El szeretn\u00e9 kezdeni a be\u00e1ll\u00edt\u00e1st?" + } + } + }, "state": { "_": { "above_horizon": "L\u00e1t\u00f3hat\u00e1r felett", diff --git a/homeassistant/components/sun/translations/id.json b/homeassistant/components/sun/translations/id.json index df6c960e67d..789a42556e9 100644 --- a/homeassistant/components/sun/translations/id.json +++ b/homeassistant/components/sun/translations/id.json @@ -1,4 +1,14 @@ { + "config": { + "abort": { + "single_instance_allowed": "Sudah dikonfigurasi. Hanya satu konfigurasi yang diizinkan." + }, + "step": { + "user": { + "description": "Ingin memulai penyiapan?" + } + } + }, "state": { "_": { "above_horizon": "Terbit", diff --git a/homeassistant/components/sun/translations/it.json b/homeassistant/components/sun/translations/it.json index fe2c65461cd..48f0e4a8d90 100644 --- a/homeassistant/components/sun/translations/it.json +++ b/homeassistant/components/sun/translations/it.json @@ -1,4 +1,14 @@ { + "config": { + "abort": { + "single_instance_allowed": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione." + }, + "step": { + "user": { + "description": "Vuoi iniziare la configurazione?" + } + } + }, "state": { "_": { "above_horizon": "Sopra l'orizzonte", diff --git a/homeassistant/components/sun/translations/ja.json b/homeassistant/components/sun/translations/ja.json index 758beba9dbf..8188e950389 100644 --- a/homeassistant/components/sun/translations/ja.json +++ b/homeassistant/components/sun/translations/ja.json @@ -1,4 +1,14 @@ { + "config": { + "abort": { + "single_instance_allowed": "\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u5358\u4e00\u306e\u8a2d\u5b9a\u3057\u304b\u3067\u304d\u307e\u305b\u3093\u3002" + }, + "step": { + "user": { + "description": "\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3092\u958b\u59cb\u3057\u307e\u3059\u304b\uff1f" + } + } + }, "state": { "_": { "above_horizon": "\u5730\u5e73\u7dda\u3088\u308a\u4e0a", diff --git a/homeassistant/components/sun/translations/nl.json b/homeassistant/components/sun/translations/nl.json index 6abe34481fa..8c284e4e43d 100644 --- a/homeassistant/components/sun/translations/nl.json +++ b/homeassistant/components/sun/translations/nl.json @@ -1,4 +1,14 @@ { + "config": { + "abort": { + "single_instance_allowed": "Al geconfigureerd. Slechts een enkele configuratie mogelijk." + }, + "step": { + "user": { + "description": "Wilt u beginnen met instellen?" + } + } + }, "state": { "_": { "above_horizon": "Boven de horizon", diff --git a/homeassistant/components/sun/translations/no.json b/homeassistant/components/sun/translations/no.json index 8597fea2ce5..18bb6e25545 100644 --- a/homeassistant/components/sun/translations/no.json +++ b/homeassistant/components/sun/translations/no.json @@ -1,4 +1,14 @@ { + "config": { + "abort": { + "single_instance_allowed": "Allerede konfigurert. Bare \u00e9n enkelt konfigurasjon er mulig." + }, + "step": { + "user": { + "description": "Vil du starte oppsettet?" + } + } + }, "state": { "_": { "above_horizon": "Over horisonten", diff --git a/homeassistant/components/sun/translations/pl.json b/homeassistant/components/sun/translations/pl.json index 1f00babd1fd..7e95dd568c6 100644 --- a/homeassistant/components/sun/translations/pl.json +++ b/homeassistant/components/sun/translations/pl.json @@ -1,4 +1,14 @@ { + "config": { + "abort": { + "single_instance_allowed": "Ju\u017c skonfigurowano. Mo\u017cliwa jest tylko jedna konfiguracja." + }, + "step": { + "user": { + "description": "Czy chcesz rozpocz\u0105\u0107 konfiguracj\u0119?" + } + } + }, "state": { "_": { "above_horizon": "nad horyzontem", diff --git a/homeassistant/components/sun/translations/pt-BR.json b/homeassistant/components/sun/translations/pt-BR.json index 2f060112a0c..fe965b08372 100644 --- a/homeassistant/components/sun/translations/pt-BR.json +++ b/homeassistant/components/sun/translations/pt-BR.json @@ -1,4 +1,14 @@ { + "config": { + "abort": { + "single_instance_allowed": "J\u00e1 configurado. Apenas uma configura\u00e7\u00e3o \u00e9 poss\u00edvel." + }, + "step": { + "user": { + "description": "Deseja iniciar a configura\u00e7\u00e3o?" + } + } + }, "state": { "_": { "above_horizon": "Acima do horizonte", diff --git a/homeassistant/components/sun/translations/ru.json b/homeassistant/components/sun/translations/ru.json index 7ddf3165aa9..2eca13058de 100644 --- a/homeassistant/components/sun/translations/ru.json +++ b/homeassistant/components/sun/translations/ru.json @@ -1,4 +1,14 @@ { + "config": { + "abort": { + "single_instance_allowed": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e." + }, + "step": { + "user": { + "description": "\u0425\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443?" + } + } + }, "state": { "_": { "above_horizon": "\u041d\u0430\u0434 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u043e\u043c", diff --git a/homeassistant/components/sun/translations/tr.json b/homeassistant/components/sun/translations/tr.json index 50634454b98..cff510523fa 100644 --- a/homeassistant/components/sun/translations/tr.json +++ b/homeassistant/components/sun/translations/tr.json @@ -1,4 +1,14 @@ { + "config": { + "abort": { + "single_instance_allowed": "Zaten yap\u0131land\u0131r\u0131lm\u0131\u015f. Yaln\u0131zca tek bir konfig\u00fcrasyon m\u00fcmk\u00fcnd\u00fcr." + }, + "step": { + "user": { + "description": "Kuruluma ba\u015flamak ister misiniz?" + } + } + }, "state": { "_": { "above_horizon": "G\u00fcnd\u00fcz", diff --git a/homeassistant/components/sun/translations/zh-Hant.json b/homeassistant/components/sun/translations/zh-Hant.json index 4b8da898c70..e3b7cfb9c54 100644 --- a/homeassistant/components/sun/translations/zh-Hant.json +++ b/homeassistant/components/sun/translations/zh-Hant.json @@ -1,4 +1,14 @@ { + "config": { + "abort": { + "single_instance_allowed": "\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210\u3001\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u88dd\u7f6e\u3002" + }, + "step": { + "user": { + "description": "\u662f\u5426\u8981\u958b\u59cb\u8a2d\u5b9a\uff1f" + } + } + }, "state": { "_": { "above_horizon": "\u65e5\u51fa\u6771\u6d77", diff --git a/homeassistant/components/switch/translations/cs.json b/homeassistant/components/switch/translations/cs.json index fe398d9b72e..a7b7f35033e 100644 --- a/homeassistant/components/switch/translations/cs.json +++ b/homeassistant/components/switch/translations/cs.json @@ -1,4 +1,14 @@ { + "config": { + "step": { + "init": { + "data": { + "entity_id": "Entita vyp\u00edna\u010de" + }, + "description": "Vyberte vyp\u00edna\u010d pro sv\u011btlo." + } + } + }, "device_automation": { "action_type": { "toggle": "P\u0159epnout {entity_name}", diff --git a/homeassistant/components/switch/translations/el.json b/homeassistant/components/switch/translations/el.json index 2067276af42..986ee7cff92 100644 --- a/homeassistant/components/switch/translations/el.json +++ b/homeassistant/components/switch/translations/el.json @@ -28,8 +28,8 @@ }, "state": { "_": { - "off": "\u039a\u03bb\u03b5\u03b9\u03c3\u03c4\u03cc\u03c2", - "on": "\u0391\u03bd\u03bf\u03b9\u03c7\u03c4\u03cc\u03c2" + "off": "\u039a\u03bb\u03b5\u03b9\u03c3\u03c4\u03cc", + "on": "\u0391\u03bd\u03bf\u03b9\u03c7\u03c4\u03cc" } }, "title": "\u0394\u03b9\u03b1\u03ba\u03cc\u03c0\u03c4\u03b7\u03c2" diff --git a/homeassistant/components/switch/translations/hu.json b/homeassistant/components/switch/translations/hu.json index 423a48f345d..2dff00040ca 100644 --- a/homeassistant/components/switch/translations/hu.json +++ b/homeassistant/components/switch/translations/hu.json @@ -20,6 +20,7 @@ "is_on": "{entity_name} be van kapcsolva" }, "trigger_type": { + "changed_states": "{entity_name} be- vagy kikapcsolt", "toggled": "{entity_name} \u00e1tkapcsolt", "turned_off": "{entity_name} ki lett kapcsolva", "turned_on": "{entity_name} be lett kapcsolva" diff --git a/homeassistant/components/switch/translations/pt-BR.json b/homeassistant/components/switch/translations/pt-BR.json index 6f7f076332a..0d24cd74bfe 100644 --- a/homeassistant/components/switch/translations/pt-BR.json +++ b/homeassistant/components/switch/translations/pt-BR.json @@ -3,9 +3,9 @@ "step": { "init": { "data": { - "entity_id": "Entidade de switch" + "entity_id": "Entidade de interruptor" }, - "description": "Selecione o switch para o interruptor de luz." + "description": "Selecione o interruptor para a l\u00e2mpada." } } }, diff --git a/homeassistant/components/switch_as_x/translations/bg.json b/homeassistant/components/switch_as_x/translations/bg.json new file mode 100644 index 00000000000..f5c2a6e0433 --- /dev/null +++ b/homeassistant/components/switch_as_x/translations/bg.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "user": { + "data": { + "target_domain": "\u0422\u0438\u043f" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/switch_as_x/translations/ca.json b/homeassistant/components/switch_as_x/translations/ca.json index 07d6288d33e..f48a744066c 100644 --- a/homeassistant/components/switch_as_x/translations/ca.json +++ b/homeassistant/components/switch_as_x/translations/ca.json @@ -1,14 +1,20 @@ { "config": { "step": { - "init": { + "config": { + "user": { + "entity_id": "Entitat d'interruptor" + } + }, + "user": { "data": { - "entity_id": "Entitat d'interruptor", - "target_domain": "Tipus" + "entity_id": "Commutador", + "target_domain": "Nou tipus" }, - "title": "Converteix un interruptor en \u2026" + "description": "Tria un commutador que vulguis que aparegui a Home Assistant com a llum, coberta o qualsevol altra cosa. El commutador original s'amagar\u00e0.", + "title": "Canvia el tipus de dispositiu commutador" } } }, - "title": "Interruptor com a X" + "title": "Canvia el tipus de dispositiu d'un commutador" } \ No newline at end of file diff --git a/homeassistant/components/switch_as_x/translations/cs.json b/homeassistant/components/switch_as_x/translations/cs.json new file mode 100644 index 00000000000..11f8471a62a --- /dev/null +++ b/homeassistant/components/switch_as_x/translations/cs.json @@ -0,0 +1,18 @@ +{ + "config": { + "step": { + "config": { + "user": { + "entity_id": "Entita vyp\u00edna\u010de" + } + }, + "user": { + "data": { + "target_domain": "Typ" + }, + "title": "Ud\u011blejte vyp\u00edna\u010dem ..." + } + } + }, + "title": "Zm\u011bna typy vyp\u00edna\u010de" +} \ No newline at end of file diff --git a/homeassistant/components/switch_as_x/translations/de.json b/homeassistant/components/switch_as_x/translations/de.json index 63a99ad40e2..1125f4f5a8f 100644 --- a/homeassistant/components/switch_as_x/translations/de.json +++ b/homeassistant/components/switch_as_x/translations/de.json @@ -1,14 +1,20 @@ { "config": { "step": { - "init": { + "config": { + "user": { + "entity_id": "Switch-Entit\u00e4t" + } + }, + "user": { "data": { - "entity_id": "Switch-Entit\u00e4t", - "target_domain": "Typ" + "entity_id": "Schalter", + "target_domain": "Neuer Typ" }, - "title": "Mache einen Schalter zu..." + "description": "W\u00e4hle einen Schalter, der im Home Assistant als Licht, Abdeckung oder sonstiges angezeigt werden soll. Der urspr\u00fcngliche Schalter wird ausgeblendet.", + "title": "Switch-Ger\u00e4tetyp \u00e4ndern" } } }, - "title": "Schalter als X" + "title": "Ger\u00e4tetyp eines Schalters \u00e4ndern" } \ No newline at end of file diff --git a/homeassistant/components/switch_as_x/translations/el.json b/homeassistant/components/switch_as_x/translations/el.json index 1fb546c13b7..ed10f241927 100644 --- a/homeassistant/components/switch_as_x/translations/el.json +++ b/homeassistant/components/switch_as_x/translations/el.json @@ -1,11 +1,17 @@ { "config": { "step": { - "init": { + "config": { + "user": { + "entity_id": "\u039f\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1 \u03b4\u03b9\u03b1\u03ba\u03cc\u03c0\u03c4\u03b7" + } + }, + "user": { "data": { - "entity_id": "\u039f\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1 \u03b4\u03b9\u03b1\u03ba\u03cc\u03c0\u03c4\u03b7", + "entity_id": "\u0394\u03b9\u03b1\u03ba\u03cc\u03c0\u03c4\u03b7\u03c2", "target_domain": "\u03a4\u03cd\u03c0\u03bf\u03c2" }, + "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03ad\u03bd\u03b1\u03bd \u03b4\u03b9\u03b1\u03ba\u03cc\u03c0\u03c4\u03b7 \u03c0\u03bf\u03c5 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03b5\u03bc\u03c6\u03b1\u03bd\u03af\u03b6\u03b5\u03c4\u03b1\u03b9 \u03c3\u03c4\u03bf Home Assistant \u03c9\u03c2 \u03c6\u03c9\u03c2, \u03ba\u03ac\u03bb\u03c5\u03bc\u03bc\u03b1 \u03ae \u03bf\u03c4\u03b9\u03b4\u03ae\u03c0\u03bf\u03c4\u03b5 \u03ac\u03bb\u03bb\u03bf. \u039f \u03b1\u03c1\u03c7\u03b9\u03ba\u03cc\u03c2 \u03b4\u03b9\u03b1\u03ba\u03cc\u03c0\u03c4\u03b7\u03c2 \u03b8\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03ba\u03c1\u03c5\u03bc\u03bc\u03ad\u03bd\u03bf\u03c2.", "title": "\u039a\u03ac\u03bd\u03c4\u03b5 \u03ad\u03bd\u03b1\u03bd \u03b4\u03b9\u03b1\u03ba\u03cc\u03c0\u03c4\u03b7 \u03ad\u03bd\u03b1 ..." } } diff --git a/homeassistant/components/switch_as_x/translations/en.json b/homeassistant/components/switch_as_x/translations/en.json index 7709a27cf35..4253f0506ef 100644 --- a/homeassistant/components/switch_as_x/translations/en.json +++ b/homeassistant/components/switch_as_x/translations/en.json @@ -1,12 +1,18 @@ { "config": { "step": { + "config": { + "user": { + "entity_id": "Switch entity" + } + }, "user": { "data": { "entity_id": "Switch", "target_domain": "New Type" }, - "description": "Pick a switch that you want to show up in Home Assistant as a light, cover or anything else. The original switch will be hidden." + "description": "Pick a switch that you want to show up in Home Assistant as a light, cover or anything else. The original switch will be hidden.", + "title": "Change switch device type" } } }, diff --git a/homeassistant/components/switch_as_x/translations/et.json b/homeassistant/components/switch_as_x/translations/et.json index 9e18ddced09..9d5a5839fbf 100644 --- a/homeassistant/components/switch_as_x/translations/et.json +++ b/homeassistant/components/switch_as_x/translations/et.json @@ -1,14 +1,20 @@ { "config": { "step": { - "init": { + "config": { + "user": { + "entity_id": "L\u00fcliti olem" + } + }, + "user": { "data": { - "entity_id": "L\u00fcliti olem", - "target_domain": "T\u00fc\u00fcp" + "entity_id": "L\u00fcliti", + "target_domain": "Uus t\u00fc\u00fcp" }, - "title": "Tee l\u00fcliti ..." + "description": "Vali l\u00fcliti mida soovid Home Assistantis valgustina, avakattena v\u00f5i millegi muuna kuvada. Algne l\u00fcliti peidetakse.", + "title": "Muuda l\u00fclitusseadme t\u00fc\u00fcpi" } } }, - "title": "L\u00fclita kui X" + "title": "Muuda l\u00fcliti t\u00fc\u00fcpi" } \ No newline at end of file diff --git a/homeassistant/components/switch_as_x/translations/fr.json b/homeassistant/components/switch_as_x/translations/fr.json index 4b5bd6beebe..fa14bd80885 100644 --- a/homeassistant/components/switch_as_x/translations/fr.json +++ b/homeassistant/components/switch_as_x/translations/fr.json @@ -1,14 +1,20 @@ { "config": { "step": { - "init": { + "config": { + "user": { + "entity_id": "Entit\u00e9 du commutateur" + } + }, + "user": { "data": { - "entity_id": "Entit\u00e9 du commutateur", - "target_domain": "Type" + "entity_id": "Interrupteur", + "target_domain": "Nouveau type" }, - "title": "Transformer un commutateur en \u2026" + "description": "Choisissez un interrupteur que vous voulez faire appara\u00eetre dans Home Assistant comme une lumi\u00e8re, une fermeture ou autre. L'interrupteur original sera cach\u00e9.", + "title": "Modifier le type d'appareil de l'interrupteur" } } }, - "title": "Commutateur en tant que X" + "title": "Modifier le type d'appareil d'un commutateur" } \ No newline at end of file diff --git a/homeassistant/components/switch_as_x/translations/he.json b/homeassistant/components/switch_as_x/translations/he.json index 8ca833876fe..39889dab709 100644 --- a/homeassistant/components/switch_as_x/translations/he.json +++ b/homeassistant/components/switch_as_x/translations/he.json @@ -1,8 +1,8 @@ { "config": { "step": { - "init": { - "data": { + "config": { + "user": { "entity_id": "\u05d9\u05e9\u05d5\u05ea \u05de\u05ea\u05d2" } } diff --git a/homeassistant/components/switch_as_x/translations/hu.json b/homeassistant/components/switch_as_x/translations/hu.json index b3ea0af39fd..0d919f5ecd3 100644 --- a/homeassistant/components/switch_as_x/translations/hu.json +++ b/homeassistant/components/switch_as_x/translations/hu.json @@ -1,14 +1,20 @@ { "config": { "step": { - "init": { + "config": { + "user": { + "entity_id": "Kapcsol\u00f3 entit\u00e1s" + } + }, + "user": { "data": { - "entity_id": "Kapcsol\u00f3 entit\u00e1s", - "target_domain": "T\u00edpus" + "entity_id": "Kapcsol\u00f3", + "target_domain": "\u00daj t\u00edpus" }, - "title": "Kapcsol\u00f3 mint..." + "description": "V\u00e1lassza ki azt a kapcsol\u00f3t, amelyet meg szeretne jelen\u00edteni a Home Assistantban l\u00e1mpak\u00e9nt, red\u0151nyk\u00e9nt vagy b\u00e1rmi m\u00e1sk\u00e9nt. Az eredeti kapcsol\u00f3 el lesz rejtve.", + "title": "Kapcsol\u00f3 eszk\u00f6zt\u00edpus m\u00f3dos\u00edt\u00e1sa" } } }, - "title": "Kapcsol\u00f3 mint X" + "title": "Kapcsol\u00f3 mint m\u00e1s eszk\u00f6z" } \ No newline at end of file diff --git a/homeassistant/components/switch_as_x/translations/id.json b/homeassistant/components/switch_as_x/translations/id.json index 1a5cce08f01..47d31e26c03 100644 --- a/homeassistant/components/switch_as_x/translations/id.json +++ b/homeassistant/components/switch_as_x/translations/id.json @@ -1,14 +1,20 @@ { "config": { "step": { - "init": { + "config": { + "user": { + "entity_id": "Entitas saklar" + } + }, + "user": { "data": { - "entity_id": "Entitas saklar", - "target_domain": "Jenis" + "entity_id": "Sakelar", + "target_domain": "Tipe Baru" }, - "title": "Jadikan saklar sebagai\u2026" + "description": "Pilih sakelar yang ingin Anda tampilkan di Home Assistant sebagai lampu, penutup, atau apa pun. Sakelar asli akan disembunyikan.", + "title": "Ubah jenis perangkat sakelar" } } }, - "title": "Saklar sebagai X" + "title": "Ubah jenis perangkat sakelar" } \ No newline at end of file diff --git a/homeassistant/components/switch_as_x/translations/it.json b/homeassistant/components/switch_as_x/translations/it.json index 1ef154b0578..4706b4d9ece 100644 --- a/homeassistant/components/switch_as_x/translations/it.json +++ b/homeassistant/components/switch_as_x/translations/it.json @@ -1,14 +1,20 @@ { "config": { "step": { - "init": { + "config": { + "user": { + "entity_id": "Cambia entit\u00e0" + } + }, + "user": { "data": { - "entity_id": "Cambia entit\u00e0", - "target_domain": "Tipo" + "entity_id": "Interruttore", + "target_domain": "Nuovo tipo" }, - "title": "Rendi un interruttore un..." + "description": "Scegli un interruttore che vuoi mostrare in Home Assistant come luce, copertura o qualsiasi altra cosa. L'interruttore originale sar\u00e0 nascosto.", + "title": "Cambia tipo di dispositivo dell'interruttore" } } }, - "title": "Interruttore come X" + "title": "Cambia il tipo di dispositivo di un interruttore" } \ No newline at end of file diff --git a/homeassistant/components/switch_as_x/translations/ja.json b/homeassistant/components/switch_as_x/translations/ja.json index 44ceaecdd75..434e1b588d5 100644 --- a/homeassistant/components/switch_as_x/translations/ja.json +++ b/homeassistant/components/switch_as_x/translations/ja.json @@ -1,11 +1,17 @@ { "config": { "step": { - "init": { + "config": { + "user": { + "entity_id": "\u30b9\u30a4\u30c3\u30c1\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3" + } + }, + "user": { "data": { - "entity_id": "\u30b9\u30a4\u30c3\u30c1\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3", + "entity_id": "\u30b9\u30a4\u30c3\u30c1", "target_domain": "\u30bf\u30a4\u30d7" }, + "description": "Home Assistant\u306b\u3001\u30e9\u30a4\u30c8\u3084\u30ab\u30d0\u30fc\u306a\u3069\u306e\u8868\u793a\u3055\u305b\u305f\u3044\u30b9\u30a4\u30c3\u30c1\u3092\u9078\u3073\u307e\u3059\u3002\u5143\u306e\u30b9\u30a4\u30c3\u30c1\u306f\u975e\u8868\u793a\u306b\u306a\u308a\u307e\u3059\u3002", "title": "\u30b9\u30a4\u30c3\u30c1\u3092..." } } diff --git a/homeassistant/components/switch_as_x/translations/nl.json b/homeassistant/components/switch_as_x/translations/nl.json index b1712904a76..4fcea818b9a 100644 --- a/homeassistant/components/switch_as_x/translations/nl.json +++ b/homeassistant/components/switch_as_x/translations/nl.json @@ -1,14 +1,20 @@ { "config": { "step": { - "init": { + "config": { + "user": { + "entity_id": "Entiteit wijzigen" + } + }, + "user": { "data": { - "entity_id": "Entiteit wijzigen", - "target_domain": "Type" + "entity_id": "Schakelaar", + "target_domain": "Nieuw type" }, - "title": "Schakel een..." + "description": "Kies een schakelaar die u in Home Assistant wilt laten verschijnen als licht, klep of iets anders. De oorspronkelijke schakelaar wordt verborgen.", + "title": "Type schakelapparaat wijzigen" } } }, - "title": "Schakelen als X" + "title": "Apparaattype van een schakelaar wijzigen" } \ No newline at end of file diff --git a/homeassistant/components/switch_as_x/translations/no.json b/homeassistant/components/switch_as_x/translations/no.json index 09d8d4e813e..5958c87f201 100644 --- a/homeassistant/components/switch_as_x/translations/no.json +++ b/homeassistant/components/switch_as_x/translations/no.json @@ -1,14 +1,20 @@ { "config": { "step": { - "init": { + "config": { + "user": { + "entity_id": "Bytt enhet" + } + }, + "user": { "data": { - "entity_id": "Bytt enhet", - "target_domain": "Type" + "entity_id": "Bryter", + "target_domain": "Ny type" }, - "title": "Gj\u00f8r en bryter til en ..." + "description": "Velg en bryter du vil vise i Home Assistant som lys, deksel eller noe annet. Den opprinnelige bryteren vil v\u00e6re skjult.", + "title": "Endre bryterenhetstype" } } }, - "title": "Bryter som X" + "title": "Endre enhetstype for en bryter" } \ No newline at end of file diff --git a/homeassistant/components/switch_as_x/translations/pl.json b/homeassistant/components/switch_as_x/translations/pl.json index c3f9af2601d..7491ef0d7fc 100644 --- a/homeassistant/components/switch_as_x/translations/pl.json +++ b/homeassistant/components/switch_as_x/translations/pl.json @@ -1,14 +1,20 @@ { "config": { "step": { - "init": { + "config": { + "user": { + "entity_id": "Encja prze\u0142\u0105cznika" + } + }, + "user": { "data": { - "entity_id": "Encja prze\u0142\u0105cznika", - "target_domain": "Rodzaj" + "entity_id": "Prze\u0142\u0105cznik", + "target_domain": "Nowy rodzaj" }, - "title": "Zmie\u0144 prze\u0142\u0105cznik na ..." + "description": "Wybierz prze\u0142\u0105cznik, kt\u00f3ry chcesz pokaza\u0107 w Home Assistant jako \u015bwiat\u0142o, rolet\u0119 lub cokolwiek innego. Oryginalny prze\u0142\u0105cznik zostanie ukryty.", + "title": "Zmiana typu urz\u0105dzenia prze\u0142\u0105czaj\u0105cego" } } }, - "title": "Prze\u0142\u0105cznik jako \"X\"" + "title": "Zmiana typu urz\u0105dzenia w prze\u0142\u0105czniku" } \ No newline at end of file diff --git a/homeassistant/components/switch_as_x/translations/pt-BR.json b/homeassistant/components/switch_as_x/translations/pt-BR.json index e8ccabe7841..bf8bc276781 100644 --- a/homeassistant/components/switch_as_x/translations/pt-BR.json +++ b/homeassistant/components/switch_as_x/translations/pt-BR.json @@ -1,14 +1,20 @@ { "config": { "step": { - "init": { + "config": { + "user": { + "entity_id": "Entidade de interruptor" + } + }, + "user": { "data": { - "entity_id": "Entidade de interruptor", - "target_domain": "Tipo" + "entity_id": "Interruptor", + "target_domain": "Novo tipo" }, - "title": "Fa\u00e7a um interruptor um ..." + "description": "Escolha um interruptor que voc\u00ea deseja que apare\u00e7a no Home Assistant como luz, cortina ou qualquer outra coisa. A op\u00e7\u00e3o original ficar\u00e1 oculta.", + "title": "Alterar o tipo de dispositivo do interruptor" } } }, - "title": "Switch as X" + "title": "Alterar o tipo de dispositivo de um interruptor" } \ No newline at end of file diff --git a/homeassistant/components/switch_as_x/translations/pt.json b/homeassistant/components/switch_as_x/translations/pt.json index 558030dc42d..70f238e0a08 100644 --- a/homeassistant/components/switch_as_x/translations/pt.json +++ b/homeassistant/components/switch_as_x/translations/pt.json @@ -1,7 +1,7 @@ { "config": { "step": { - "init": { + "user": { "data": { "target_domain": "Tipo" } diff --git a/homeassistant/components/switch_as_x/translations/ru.json b/homeassistant/components/switch_as_x/translations/ru.json index b4136768f03..3074365dd76 100644 --- a/homeassistant/components/switch_as_x/translations/ru.json +++ b/homeassistant/components/switch_as_x/translations/ru.json @@ -1,14 +1,20 @@ { "config": { "step": { - "init": { + "config": { + "user": { + "entity_id": "\u0412\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c" + } + }, + "user": { "data": { "entity_id": "\u0412\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c", - "target_domain": "\u0422\u0438\u043f" + "target_domain": "\u041d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f" }, - "title": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u043a\u0430\u043a \u2026" + "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0432 Home Assistant \u043a\u0430\u043a \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435, \u0448\u0442\u043e\u0440\u044b \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0435\u0449\u0451. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0440\u044b\u0442.", + "title": "\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u0438\u043f \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f" } } }, - "title": "\u0412\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u043a\u0430\u043a \u2026" + "title": "\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f" } \ No newline at end of file diff --git a/homeassistant/components/switch_as_x/translations/sv.json b/homeassistant/components/switch_as_x/translations/sv.json index 835de2f5a7f..96419c39bf1 100644 --- a/homeassistant/components/switch_as_x/translations/sv.json +++ b/homeassistant/components/switch_as_x/translations/sv.json @@ -1,9 +1,13 @@ { "config": { "step": { - "init": { + "config": { + "user": { + "entity_id": "Kontakt-entitet" + } + }, + "user": { "data": { - "entity_id": "Kontakt-entitet", "target_domain": "Typ" }, "title": "G\u00f6r en kontakt till ..." diff --git a/homeassistant/components/switch_as_x/translations/tr.json b/homeassistant/components/switch_as_x/translations/tr.json new file mode 100644 index 00000000000..b793be6baf0 --- /dev/null +++ b/homeassistant/components/switch_as_x/translations/tr.json @@ -0,0 +1,20 @@ +{ + "config": { + "step": { + "config": { + "user": { + "entity_id": "Varl\u0131\u011f\u0131 de\u011fi\u015ftir" + } + }, + "user": { + "data": { + "entity_id": "Anahtar", + "target_domain": "Yeni T\u00fcr" + }, + "description": "Home Assistant'ta \u0131\u015f\u0131k, \u00f6rt\u00fc veya ba\u015fka bir \u015fey olarak g\u00f6r\u00fcnmesini istedi\u011finiz bir anahtar se\u00e7in. Orijinal anahtar gizlenecektir.", + "title": "Anahtar cihaz t\u00fcr\u00fcn\u00fc de\u011fi\u015ftir" + } + } + }, + "title": "Bir anahtar\u0131n cihaz t\u00fcr\u00fcn\u00fc de\u011fi\u015ftirme" +} \ No newline at end of file diff --git a/homeassistant/components/switch_as_x/translations/zh-Hans.json b/homeassistant/components/switch_as_x/translations/zh-Hans.json new file mode 100644 index 00000000000..e765a436849 --- /dev/null +++ b/homeassistant/components/switch_as_x/translations/zh-Hans.json @@ -0,0 +1,20 @@ +{ + "config": { + "step": { + "config": { + "user": { + "entity_id": "\u5f00\u5173\u5b9e\u4f53" + } + }, + "user": { + "data": { + "entity_id": "\u5f00\u5173", + "target_domain": "\u65b0\u7c7b\u578b" + }, + "description": "\u9009\u62e9\u4e00\u4e2a\u5f00\u5173\uff0c\u8ba9\u5b83\u5728 Home Assistant \u4e2d\u663e\u793a\u4e3a\u706f\u3001\u5377\u5e18\u7b49\u5404\u79cd\u7c7b\u578b\u3002\u539f\u6765\u7684\u5f00\u5173\u5c06\u88ab\u9690\u85cf\u3002", + "title": "\u66f4\u6539\u5f00\u5173\u7684\u8bbe\u5907\u7c7b\u578b" + } + } + }, + "title": "\u66f4\u6539\u5f00\u5173\u7684\u8bbe\u5907\u7c7b\u578b" +} \ No newline at end of file diff --git a/homeassistant/components/switch_as_x/translations/zh-Hant.json b/homeassistant/components/switch_as_x/translations/zh-Hant.json index 231f5b58eff..bd6a1e15ba0 100644 --- a/homeassistant/components/switch_as_x/translations/zh-Hant.json +++ b/homeassistant/components/switch_as_x/translations/zh-Hant.json @@ -1,14 +1,20 @@ { "config": { "step": { - "init": { + "config": { + "user": { + "entity_id": "\u958b\u95dc\u5be6\u9ad4" + } + }, + "user": { "data": { - "entity_id": "\u958b\u95dc\u5be6\u9ad4", - "target_domain": "\u985e\u5225" + "entity_id": "\u958b\u95dc", + "target_domain": "\u65b0\u589e\u985e\u5225" }, - "title": "\u5c07\u958b\u95dc\u8a2d\u5b9a\u70ba ..." + "description": "\u9078\u64c7\u6240\u8981\u65bc Home Assistant \u4e2d\u986f\u793a\u70ba\u71c8\u5149\u7684\u958b\u95dc\u3001\u7a97\u7c3e\u6216\u5176\u4ed6\u5be6\u9ad4\u3002\u539f\u59cb\u958b\u95dc\u5c07\u6703\u9032\u884c\u96b1\u85cf\u3002", + "title": "\u8b8a\u66f4\u958b\u95dc\u985e\u5225" } } }, - "title": "\u958b\u95dc\u8a2d\u70ba X" + "title": "\u8b8a\u66f4\u958b\u95dc\u985e\u5225" } \ No newline at end of file diff --git a/homeassistant/components/switchbot/translations/fr.json b/homeassistant/components/switchbot/translations/fr.json index 41b52f253ac..aca51b4e4c4 100644 --- a/homeassistant/components/switchbot/translations/fr.json +++ b/homeassistant/components/switchbot/translations/fr.json @@ -29,7 +29,7 @@ "retry_count": "Nombre de nouvelles tentatives", "retry_timeout": "D\u00e9lai d'attente entre les tentatives", "scan_timeout": "Dur\u00e9e de la recherche de donn\u00e9es publicitaires", - "update_time": "Dur\u00e9e (en secondes) entre deux mises \u00e0 jour" + "update_time": "Intervalle de temps entre deux mises \u00e0 jour (en secondes)" } } } diff --git a/homeassistant/components/switchbot/translations/hu.json b/homeassistant/components/switchbot/translations/hu.json index 5af1acb5d35..2b80fbedbd8 100644 --- a/homeassistant/components/switchbot/translations/hu.json +++ b/homeassistant/components/switchbot/translations/hu.json @@ -17,7 +17,7 @@ "user": { "data": { "mac": "Eszk\u00f6z MAC-c\u00edme", - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "password": "Jelsz\u00f3" }, "title": "Switchbot eszk\u00f6z be\u00e1ll\u00edt\u00e1sa" diff --git a/homeassistant/components/switchbot/translations/it.json b/homeassistant/components/switchbot/translations/it.json index 68071ec94e5..f589046d4db 100644 --- a/homeassistant/components/switchbot/translations/it.json +++ b/homeassistant/components/switchbot/translations/it.json @@ -9,8 +9,8 @@ }, "error": { "cannot_connect": "Impossibile connettersi", - "one": "Pi\u00f9", - "other": "Altri" + "one": "Vuoto", + "other": "Vuoti" }, "flow_title": "{name}", "step": { diff --git a/homeassistant/components/syncthing/translations/ca.json b/homeassistant/components/syncthing/translations/ca.json index a10b5d8c134..e6a1625159d 100644 --- a/homeassistant/components/syncthing/translations/ca.json +++ b/homeassistant/components/syncthing/translations/ca.json @@ -17,6 +17,5 @@ } } } - }, - "title": "Syncthing" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthing/translations/de.json b/homeassistant/components/syncthing/translations/de.json index 06db3e89b97..a753ae08cd9 100644 --- a/homeassistant/components/syncthing/translations/de.json +++ b/homeassistant/components/syncthing/translations/de.json @@ -17,6 +17,5 @@ } } } - }, - "title": "Syncthing" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthing/translations/el.json b/homeassistant/components/syncthing/translations/el.json index 7d8c1e635df..d31063f30d3 100644 --- a/homeassistant/components/syncthing/translations/el.json +++ b/homeassistant/components/syncthing/translations/el.json @@ -17,6 +17,5 @@ } } } - }, - "title": "Syncthing" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthing/translations/en.json b/homeassistant/components/syncthing/translations/en.json index 68efde737f2..e25581817a9 100644 --- a/homeassistant/components/syncthing/translations/en.json +++ b/homeassistant/components/syncthing/translations/en.json @@ -17,6 +17,5 @@ } } } - }, - "title": "Syncthing" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthing/translations/es.json b/homeassistant/components/syncthing/translations/es.json index 550c1874010..e39a1436c2a 100644 --- a/homeassistant/components/syncthing/translations/es.json +++ b/homeassistant/components/syncthing/translations/es.json @@ -17,6 +17,5 @@ } } } - }, - "title": "Syncthing" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthing/translations/et.json b/homeassistant/components/syncthing/translations/et.json index 12922ad3f6d..06addc30e2f 100644 --- a/homeassistant/components/syncthing/translations/et.json +++ b/homeassistant/components/syncthing/translations/et.json @@ -17,6 +17,5 @@ } } } - }, - "title": "Syncthing" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthing/translations/fr.json b/homeassistant/components/syncthing/translations/fr.json index f0d93986445..75589f10740 100644 --- a/homeassistant/components/syncthing/translations/fr.json +++ b/homeassistant/components/syncthing/translations/fr.json @@ -17,6 +17,5 @@ } } } - }, - "title": "Synchroniser" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthing/translations/he.json b/homeassistant/components/syncthing/translations/he.json index 7e87dacd7e5..5df905492f0 100644 --- a/homeassistant/components/syncthing/translations/he.json +++ b/homeassistant/components/syncthing/translations/he.json @@ -16,6 +16,5 @@ } } } - }, - "title": "\u05e1\u05d9\u05e0\u05db\u05e8\u05d5\u05df" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthing/translations/hu.json b/homeassistant/components/syncthing/translations/hu.json index 59ed4021b3f..90aca8becea 100644 --- a/homeassistant/components/syncthing/translations/hu.json +++ b/homeassistant/components/syncthing/translations/hu.json @@ -17,6 +17,5 @@ } } } - }, - "title": "Szinkroniz\u00e1l\u00e1s" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthing/translations/id.json b/homeassistant/components/syncthing/translations/id.json index d8f2a76c41d..db83504f4af 100644 --- a/homeassistant/components/syncthing/translations/id.json +++ b/homeassistant/components/syncthing/translations/id.json @@ -17,6 +17,5 @@ } } } - }, - "title": "Syncthing" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthing/translations/it.json b/homeassistant/components/syncthing/translations/it.json index 0973a3ccf92..061be57e295 100644 --- a/homeassistant/components/syncthing/translations/it.json +++ b/homeassistant/components/syncthing/translations/it.json @@ -17,6 +17,5 @@ } } } - }, - "title": "Syncthing" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthing/translations/ja.json b/homeassistant/components/syncthing/translations/ja.json index 482087ed730..2a725cbf3cc 100644 --- a/homeassistant/components/syncthing/translations/ja.json +++ b/homeassistant/components/syncthing/translations/ja.json @@ -17,6 +17,5 @@ } } } - }, - "title": "Syncthing" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthing/translations/nl.json b/homeassistant/components/syncthing/translations/nl.json index 358490c6c83..4f66222ada8 100644 --- a/homeassistant/components/syncthing/translations/nl.json +++ b/homeassistant/components/syncthing/translations/nl.json @@ -17,6 +17,5 @@ } } } - }, - "title": "Syncthing" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthing/translations/no.json b/homeassistant/components/syncthing/translations/no.json index 9fdb9f5f305..00a4de27e7f 100644 --- a/homeassistant/components/syncthing/translations/no.json +++ b/homeassistant/components/syncthing/translations/no.json @@ -17,6 +17,5 @@ } } } - }, - "title": "Synkronisering" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthing/translations/pl.json b/homeassistant/components/syncthing/translations/pl.json index e4e2619f1eb..367b1522930 100644 --- a/homeassistant/components/syncthing/translations/pl.json +++ b/homeassistant/components/syncthing/translations/pl.json @@ -17,6 +17,5 @@ } } } - }, - "title": "Syncthing" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthing/translations/pt-BR.json b/homeassistant/components/syncthing/translations/pt-BR.json index 08f66569d93..d7f246e1aa6 100644 --- a/homeassistant/components/syncthing/translations/pt-BR.json +++ b/homeassistant/components/syncthing/translations/pt-BR.json @@ -17,6 +17,5 @@ } } } - }, - "title": "Sincroniza\u00e7\u00e3o" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthing/translations/ru.json b/homeassistant/components/syncthing/translations/ru.json index 337b0214c6b..60897aade50 100644 --- a/homeassistant/components/syncthing/translations/ru.json +++ b/homeassistant/components/syncthing/translations/ru.json @@ -17,6 +17,5 @@ } } } - }, - "title": "Syncthing" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthing/translations/sv.json b/homeassistant/components/syncthing/translations/sv.json index 7862919ad54..9be5ea00256 100644 --- a/homeassistant/components/syncthing/translations/sv.json +++ b/homeassistant/components/syncthing/translations/sv.json @@ -9,6 +9,5 @@ } } } - }, - "title": "Synkronisering" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthing/translations/tr.json b/homeassistant/components/syncthing/translations/tr.json index eeeb7e02c3c..e490274eb25 100644 --- a/homeassistant/components/syncthing/translations/tr.json +++ b/homeassistant/components/syncthing/translations/tr.json @@ -17,6 +17,5 @@ } } } - }, - "title": "E\u015fitleme" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthing/translations/zh-Hans.json b/homeassistant/components/syncthing/translations/zh-Hans.json index 87d3db5c83f..96af1e51799 100644 --- a/homeassistant/components/syncthing/translations/zh-Hans.json +++ b/homeassistant/components/syncthing/translations/zh-Hans.json @@ -17,6 +17,5 @@ } } } - }, - "title": "Syncthing" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthing/translations/zh-Hant.json b/homeassistant/components/syncthing/translations/zh-Hant.json index f06c16ac157..6b6bc948c5f 100644 --- a/homeassistant/components/syncthing/translations/zh-Hant.json +++ b/homeassistant/components/syncthing/translations/zh-Hant.json @@ -17,6 +17,5 @@ } } } - }, - "title": "Syncthing" + } } \ No newline at end of file diff --git a/homeassistant/components/syncthru/translations/hu.json b/homeassistant/components/syncthru/translations/hu.json index a5b645200db..3de6022dcb6 100644 --- a/homeassistant/components/syncthru/translations/hu.json +++ b/homeassistant/components/syncthru/translations/hu.json @@ -12,13 +12,13 @@ "step": { "confirm": { "data": { - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "url": "Webes fel\u00fclet URL-je" } }, "user": { "data": { - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "url": "Webes fel\u00fclet URL-je" } } diff --git a/homeassistant/components/system_bridge/translations/ca.json b/homeassistant/components/system_bridge/translations/ca.json index aac2e139db0..b17295d59e0 100644 --- a/homeassistant/components/system_bridge/translations/ca.json +++ b/homeassistant/components/system_bridge/translations/ca.json @@ -27,6 +27,5 @@ "description": "Introdueix les dades de connexi\u00f3." } } - }, - "title": "Enlla\u00e7 de sistema" + } } \ No newline at end of file diff --git a/homeassistant/components/system_bridge/translations/de.json b/homeassistant/components/system_bridge/translations/de.json index dc85589dd32..0ea5a0abd3a 100644 --- a/homeassistant/components/system_bridge/translations/de.json +++ b/homeassistant/components/system_bridge/translations/de.json @@ -27,6 +27,5 @@ "description": "Bitte gib Verbindungsdaten ein." } } - }, - "title": "System-Br\u00fccke" + } } \ No newline at end of file diff --git a/homeassistant/components/system_bridge/translations/el.json b/homeassistant/components/system_bridge/translations/el.json index 5576af325de..cc15d636f72 100644 --- a/homeassistant/components/system_bridge/translations/el.json +++ b/homeassistant/components/system_bridge/translations/el.json @@ -27,6 +27,5 @@ "description": "\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03c4\u03b7\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03ae\u03c2 \u03c3\u03b1\u03c2." } } - }, - "title": "\u0393\u03ad\u03c6\u03c5\u03c1\u03b1 \u03c3\u03c5\u03c3\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2" + } } \ No newline at end of file diff --git a/homeassistant/components/system_bridge/translations/en.json b/homeassistant/components/system_bridge/translations/en.json index 3ebcfc6959e..dc94dfe2ac6 100644 --- a/homeassistant/components/system_bridge/translations/en.json +++ b/homeassistant/components/system_bridge/translations/en.json @@ -27,6 +27,5 @@ "description": "Please enter your connection details." } } - }, - "title": "System Bridge" + } } \ No newline at end of file diff --git a/homeassistant/components/system_bridge/translations/es.json b/homeassistant/components/system_bridge/translations/es.json index 2b7a859fcd1..d7fba5e7c32 100644 --- a/homeassistant/components/system_bridge/translations/es.json +++ b/homeassistant/components/system_bridge/translations/es.json @@ -27,6 +27,5 @@ "description": "Por favor, introduce tus datos de conexi\u00f3n." } } - }, - "title": "Pasarela del sistema" + } } \ No newline at end of file diff --git a/homeassistant/components/system_bridge/translations/et.json b/homeassistant/components/system_bridge/translations/et.json index 3724895f147..69f32524c3b 100644 --- a/homeassistant/components/system_bridge/translations/et.json +++ b/homeassistant/components/system_bridge/translations/et.json @@ -27,6 +27,5 @@ "description": "Sisesta oma \u00fchenduse \u00fcksikasjad." } } - }, - "title": "S\u00fcsteemi sild" + } } \ No newline at end of file diff --git a/homeassistant/components/system_bridge/translations/fr.json b/homeassistant/components/system_bridge/translations/fr.json index cbcad2d0330..e04dca1b751 100644 --- a/homeassistant/components/system_bridge/translations/fr.json +++ b/homeassistant/components/system_bridge/translations/fr.json @@ -27,6 +27,5 @@ "description": "Veuillez saisir vos informations de connexion." } } - }, - "title": "Pont syst\u00e8me" + } } \ No newline at end of file diff --git a/homeassistant/components/system_bridge/translations/he.json b/homeassistant/components/system_bridge/translations/he.json index 5eb235ffb8f..ed758978398 100644 --- a/homeassistant/components/system_bridge/translations/he.json +++ b/homeassistant/components/system_bridge/translations/he.json @@ -27,6 +27,5 @@ "description": "\u05e0\u05d0 \u05d4\u05d6\u05df \u05d0\u05ea \u05e4\u05e8\u05d8\u05d9 \u05d4\u05d7\u05d9\u05d1\u05d5\u05e8 \u05e9\u05dc\u05da." } } - }, - "title": "\u05d2\u05e9\u05e8 \u05d4\u05de\u05e2\u05e8\u05db\u05ea" + } } \ No newline at end of file diff --git a/homeassistant/components/system_bridge/translations/hu.json b/homeassistant/components/system_bridge/translations/hu.json index 8fdacd8718f..c570cd2e3c2 100644 --- a/homeassistant/components/system_bridge/translations/hu.json +++ b/homeassistant/components/system_bridge/translations/hu.json @@ -27,6 +27,5 @@ "description": "K\u00e9rj\u00fck, adja meg kapcsolati adatait." } } - }, - "title": "Rendszer h\u00edd" + } } \ No newline at end of file diff --git a/homeassistant/components/system_bridge/translations/id.json b/homeassistant/components/system_bridge/translations/id.json index 9995253cbca..7cc07ebb2e1 100644 --- a/homeassistant/components/system_bridge/translations/id.json +++ b/homeassistant/components/system_bridge/translations/id.json @@ -27,6 +27,5 @@ "description": "Masukkan detail koneksi Anda." } } - }, - "title": "Jembatan Sistem" + } } \ No newline at end of file diff --git a/homeassistant/components/system_bridge/translations/it.json b/homeassistant/components/system_bridge/translations/it.json index 2b6885edc44..7257d92ed7a 100644 --- a/homeassistant/components/system_bridge/translations/it.json +++ b/homeassistant/components/system_bridge/translations/it.json @@ -27,6 +27,5 @@ "description": "Inserisci i dettagli della tua connessione." } } - }, - "title": "Bridge di sistema" + } } \ No newline at end of file diff --git a/homeassistant/components/system_bridge/translations/ja.json b/homeassistant/components/system_bridge/translations/ja.json index 48ee7fc2378..8358130359f 100644 --- a/homeassistant/components/system_bridge/translations/ja.json +++ b/homeassistant/components/system_bridge/translations/ja.json @@ -27,6 +27,5 @@ "description": "\u63a5\u7d9a\u306e\u8a73\u7d30\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002" } } - }, - "title": "\u30b7\u30b9\u30c6\u30e0\u30d6\u30ea\u30c3\u30b8" + } } \ No newline at end of file diff --git a/homeassistant/components/system_bridge/translations/nl.json b/homeassistant/components/system_bridge/translations/nl.json index eefadebda35..c419123e50d 100644 --- a/homeassistant/components/system_bridge/translations/nl.json +++ b/homeassistant/components/system_bridge/translations/nl.json @@ -27,6 +27,5 @@ "description": "Voer uw verbindingsgegevens in." } } - }, - "title": "System Bridge" + } } \ No newline at end of file diff --git a/homeassistant/components/system_bridge/translations/no.json b/homeassistant/components/system_bridge/translations/no.json index 5651dd7cb67..22ab7f91a57 100644 --- a/homeassistant/components/system_bridge/translations/no.json +++ b/homeassistant/components/system_bridge/translations/no.json @@ -27,6 +27,5 @@ "description": "Vennligst skriv inn tilkoblingsdetaljene dine." } } - }, - "title": "System Bridge" + } } \ No newline at end of file diff --git a/homeassistant/components/system_bridge/translations/pl.json b/homeassistant/components/system_bridge/translations/pl.json index 0ae579842d6..6c3a1561b5d 100644 --- a/homeassistant/components/system_bridge/translations/pl.json +++ b/homeassistant/components/system_bridge/translations/pl.json @@ -27,6 +27,5 @@ "description": "Wprowad\u017a dane po\u0142\u0105czenia." } } - }, - "title": "Mostek System" + } } \ No newline at end of file diff --git a/homeassistant/components/system_bridge/translations/pt-BR.json b/homeassistant/components/system_bridge/translations/pt-BR.json index ed1bcd01ded..6b86e19ab35 100644 --- a/homeassistant/components/system_bridge/translations/pt-BR.json +++ b/homeassistant/components/system_bridge/translations/pt-BR.json @@ -27,6 +27,5 @@ "description": "Por favor, insira os detalhes da sua conex\u00e3o." } } - }, - "title": "Ponte do sistema" + } } \ No newline at end of file diff --git a/homeassistant/components/system_bridge/translations/ru.json b/homeassistant/components/system_bridge/translations/ru.json index be2cddfdc69..c18bd977413 100644 --- a/homeassistant/components/system_bridge/translations/ru.json +++ b/homeassistant/components/system_bridge/translations/ru.json @@ -27,6 +27,5 @@ "description": "\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f." } } - }, - "title": "System Bridge" + } } \ No newline at end of file diff --git a/homeassistant/components/system_bridge/translations/tr.json b/homeassistant/components/system_bridge/translations/tr.json index 17e43680cca..15259c306a8 100644 --- a/homeassistant/components/system_bridge/translations/tr.json +++ b/homeassistant/components/system_bridge/translations/tr.json @@ -27,6 +27,5 @@ "description": "L\u00fctfen ba\u011flant\u0131 bilgilerinizi giriniz." } } - }, - "title": "System Bridge" + } } \ No newline at end of file diff --git a/homeassistant/components/system_bridge/translations/zh-Hant.json b/homeassistant/components/system_bridge/translations/zh-Hant.json index 5f45cc5dfcd..cca10d161b1 100644 --- a/homeassistant/components/system_bridge/translations/zh-Hant.json +++ b/homeassistant/components/system_bridge/translations/zh-Hant.json @@ -27,6 +27,5 @@ "description": "\u8acb\u8f38\u5165\u9023\u7dda\u8a0a\u606f\u3002" } } - }, - "title": "System Bridge" + } } \ No newline at end of file diff --git a/homeassistant/components/system_health/translations/pt-BR.json b/homeassistant/components/system_health/translations/pt-BR.json index eb6f66e8784..15f9774cb16 100644 --- a/homeassistant/components/system_health/translations/pt-BR.json +++ b/homeassistant/components/system_health/translations/pt-BR.json @@ -1,3 +1,3 @@ { - "title": "Integridade Do Sistema" + "title": "Integridade do Sistema" } \ No newline at end of file diff --git a/homeassistant/components/tado/translations/ca.json b/homeassistant/components/tado/translations/ca.json index 935b58483d7..c34d937cf7f 100644 --- a/homeassistant/components/tado/translations/ca.json +++ b/homeassistant/components/tado/translations/ca.json @@ -23,9 +23,9 @@ "step": { "init": { "data": { - "fallback": "Activa el mode salvaguarda." + "fallback": "Tria el mode alternatiu." }, - "description": "El mode salvaguarda canviar\u00e0 a Planificaci\u00f3 Intel\u00b7ligent en el proper canvi de programaci\u00f3 o quan s'ajusti manualment una zona.", + "description": "El mode alternatiu et permet triar quan passar al mode alternatiu d'horari intel\u00b7ligent des de la teva zona manual. (NEXT_TIME_BLOCK:= Canvia al pr\u00f2xim canvi de l'horari intel\u00b7ligent; MANUAL:= No canvia fins que es cancel\u00b7la; TADO_DEFAULT:= Canvia en funci\u00f3 de la configuraci\u00f3 de l'app Tado).", "title": "Ajusta les opcions de Tado" } } diff --git a/homeassistant/components/tado/translations/de.json b/homeassistant/components/tado/translations/de.json index dec90a46aef..73f068949c3 100644 --- a/homeassistant/components/tado/translations/de.json +++ b/homeassistant/components/tado/translations/de.json @@ -23,9 +23,9 @@ "step": { "init": { "data": { - "fallback": "Aktiviert den Fallback-Modus." + "fallback": "Aktiviere den Fallback-Modus." }, - "description": "Der Fallback-Modus wechselt beim n\u00e4chsten Zeitplanwechsel nach dem manuellen Anpassen einer Zone zu Smart Schedule.", + "description": "Mit dem Fallback-Modus kannst du festlegen, wann von deinem manuellen Zonen-Overlay auf den intelligenten Zeitplan umgeschaltet werden soll. (NEXT_TIME_BLOCK:= Wechsel bei der n\u00e4chsten Smart Schedule-\u00c4nderung; MANUAL:= Kein Wechsel, bis du abbrichst; TADO_DEFAULT:= Wechsel basierend auf deiner Einstellung in der Tado-App).", "title": "Passe die Tado-Optionen an." } } diff --git a/homeassistant/components/tado/translations/en.json b/homeassistant/components/tado/translations/en.json index 4e0df459437..30d090c77a1 100644 --- a/homeassistant/components/tado/translations/en.json +++ b/homeassistant/components/tado/translations/en.json @@ -23,9 +23,9 @@ "step": { "init": { "data": { - "fallback": "Enable fallback mode." + "fallback": "Choose fallback mode." }, - "description": "Fallback mode will switch to Smart Schedule at next schedule switch after manually adjusting a zone.", + "description": "Fallback mode lets you choose when to fallback to Smart Schedule from your manual zone overlay. (NEXT_TIME_BLOCK:= Change at next Smart Schedule change; MANUAL:= Dont change until you cancel; TADO_DEFAULT:= Change based on your setting in Tado App).", "title": "Adjust Tado options." } } diff --git a/homeassistant/components/tado/translations/et.json b/homeassistant/components/tado/translations/et.json index 6a201b4fd2d..cb8cf14ad3b 100644 --- a/homeassistant/components/tado/translations/et.json +++ b/homeassistant/components/tado/translations/et.json @@ -23,9 +23,9 @@ "step": { "init": { "data": { - "fallback": "Luba varure\u017eiim." + "fallback": "Vali varure\u017eiim." }, - "description": "P\u00e4rast tsooni k\u00e4sitsi reguleerimist l\u00fclitub varure\u017eiim j\u00e4rgmisel ajakava l\u00fclitil nutikasse ajakavasse.", + "description": "Varure\u017eiim v\u00f5imaldab valida millal naasta nutikale ajakavale k\u00e4sitsi tsooni \u00fclekattega. (NEXT_TIME_BLOCK:= Muuda j\u00e4rgmisel nutika ajakava muudatusel; MANUAL:= \u00c4ra muuda enne kui oled t\u00fchistanud; TADO_DEFAULT:= Muuda, l\u00e4htudes Tado rakenduse seadistustest).", "title": "Kohanda Tado suvandeid." } } diff --git a/homeassistant/components/tado/translations/fr.json b/homeassistant/components/tado/translations/fr.json index 2e10dc38a2e..a3ff3a9fabf 100644 --- a/homeassistant/components/tado/translations/fr.json +++ b/homeassistant/components/tado/translations/fr.json @@ -23,9 +23,9 @@ "step": { "init": { "data": { - "fallback": "Activer le mode restreint." + "fallback": "Choisissez le mode de retour." }, - "description": "Le mode de repli passera au programme intelligent au prochain changement de programme apr\u00e8s avoir ajust\u00e9 manuellement une zone.", + "description": "Le mode de retour vous permet de choisir le moment du retour \u00e0 la programmation intelligente depuis votre zone de superposition manuelle. (NEXT_TIME_BLOCK\u00a0:= Modifier au prochain changement de programmation intelligente\u00a0; MANUAL\u00a0:= Ne pas modifier jusqu'\u00e0 annulation manuelle\u00a0; TADO_DEFAULT\u00a0:= Modifier en fonction de vos param\u00e8tres dans l'application Tado).", "title": "Ajustez les options de Tado." } } diff --git a/homeassistant/components/tado/translations/hu.json b/homeassistant/components/tado/translations/hu.json index dfde73ce428..8a96591e429 100644 --- a/homeassistant/components/tado/translations/hu.json +++ b/homeassistant/components/tado/translations/hu.json @@ -23,9 +23,9 @@ "step": { "init": { "data": { - "fallback": "A tartal\u00e9k m\u00f3d enged\u00e9lyez\u00e9se." + "fallback": "A tartal\u00e9k m\u00f3d be\u00e1ll\u00edt\u00e1sa." }, - "description": "A tartal\u00e9k m\u00f3d intelligens \u00fctemez\u00e9sre v\u00e1lt a k\u00f6vetkez\u0151 \u00fctemez\u00e9s kapcsol\u00f3n\u00e1l, miut\u00e1n manu\u00e1lisan be\u00e1ll\u00edtotta a z\u00f3n\u00e1t.", + "description": "A tartal\u00e9k m\u00f3dban kiv\u00e1laszthatja, hogy mikor t\u00e9rjen vissza Smart Schedule-ra a k\u00e9zi m\u00f3db\u00f3l. (NEXT_TIME_BLOCK:= V\u00e1ltoz\u00e1s a k\u00f6vetkez\u0151 intelligens \u00fctemez\u00e9s m\u00f3dos\u00edt\u00e1s\u00e1n\u00e1l; MANUAL:= Ne m\u00f3dos\u00edtsa, am\u00edg le nem mondja; TADO_DEFAULT:= V\u00e1ltoz\u00e1s a Tado App be\u00e1ll\u00edt\u00e1sai alapj\u00e1n).", "title": "\u00c1ll\u00edtsa be a Tado-t." } } diff --git a/homeassistant/components/tado/translations/id.json b/homeassistant/components/tado/translations/id.json index e6a00f9ee07..c3bd3d305e6 100644 --- a/homeassistant/components/tado/translations/id.json +++ b/homeassistant/components/tado/translations/id.json @@ -23,9 +23,9 @@ "step": { "init": { "data": { - "fallback": "Aktifkan mode alternatif." + "fallback": "Pilih mode alternatif" }, - "description": "Mode fallback akan beralih ke Smart Schedule pada pergantian jadwal berikutnya setelah menyesuaikan zona secara manual.", + "description": "Mode alternatif memungkinkan Anda memilih kapan harus berubah ke Smart Schedule dari overlay zona manual Anda. (NEXT_TIME_BLOCK:= Ubah pada perubahan Smart Schedule berikutnya; MANUAL:= Jangan ubah sampai Anda membatalkan; TADO_DEFAULT:= Ubah berdasarkan pengaturan Anda di Aplikasi Tado).", "title": "Sesuaikan opsi Tado." } } diff --git a/homeassistant/components/tado/translations/it.json b/homeassistant/components/tado/translations/it.json index 34c9dfe597d..6c42534b32a 100644 --- a/homeassistant/components/tado/translations/it.json +++ b/homeassistant/components/tado/translations/it.json @@ -23,9 +23,9 @@ "step": { "init": { "data": { - "fallback": "Abilita la modalit\u00e0 di ripiego." + "fallback": "Scegli la modalit\u00e0 di ripiego." }, - "description": "La modalit\u00e0 di ripiego passer\u00e0 a Smart Schedule al prossimo cambio di programma dopo aver regolato manualmente una zona.", + "description": "La modalit\u00e0 di ripiego ti consente di scegliere quando eseguire il ripiego alla pianificazione intelligente dalla sovrapposizione manuale delle zone. (NEXT_TIME_BLOCK:= Modifica alla successiva modifica della pianificazione intelligente; MANUAL:= Non modificare fino all'annullamento; TADO_DEFAULT:= Modifica in base alle tue impostazioni nell'applicazione Tado).", "title": "Regola le opzioni di Tado." } } diff --git a/homeassistant/components/tado/translations/nl.json b/homeassistant/components/tado/translations/nl.json index 3b6d914b71c..43b969b69eb 100644 --- a/homeassistant/components/tado/translations/nl.json +++ b/homeassistant/components/tado/translations/nl.json @@ -23,9 +23,9 @@ "step": { "init": { "data": { - "fallback": "Schakel de terugvalmodus in." + "fallback": "Kies de terugvalmodus." }, - "description": "De fallback-modus schakelt over naar Smart Schedule bij de volgende schemaschakeling na het handmatig aanpassen van een zone.", + "description": "Met de terugvalmodus kunt u kiezen wanneer u wilt terugvallen op Smart Schedule vanuit uw handmatige zoneoverlay. (NEXT_TIME_BLOCK:= Verander bij de volgende wijziging van Smart Schedule; MANUAL:= Verander niet tot je annuleert; TADO_DEFAULT:= Verander op basis van je instelling in Tado App).", "title": "Pas Tado-opties aan." } } diff --git a/homeassistant/components/tado/translations/no.json b/homeassistant/components/tado/translations/no.json index 4b6db19e0af..f2ef0b7de6e 100644 --- a/homeassistant/components/tado/translations/no.json +++ b/homeassistant/components/tado/translations/no.json @@ -23,9 +23,9 @@ "step": { "init": { "data": { - "fallback": "Aktiver tilbakefallsmodus." + "fallback": "Velg reservemodus." }, - "description": "Fallback-modus bytter til Smart Schedule ved neste planbryter etter manuell justering av en sone.", + "description": "Reservemodus lar deg velge n\u00e5r du vil falle tilbake til Smart Schedule fra det manuelle soneoverlegget ditt. (NEXT_TIME_BLOCK:= Endre ved neste Smart Schedule-endring; MANUAL:= Ikke endre f\u00f8r du avbryter; TADO_DEFAULT:= Endre basert p\u00e5 innstillingen din i Tado-appen).", "title": "Juster Tado-alternativene." } } diff --git a/homeassistant/components/tado/translations/pl.json b/homeassistant/components/tado/translations/pl.json index 4f109fc9e98..d88fb939530 100644 --- a/homeassistant/components/tado/translations/pl.json +++ b/homeassistant/components/tado/translations/pl.json @@ -23,9 +23,9 @@ "step": { "init": { "data": { - "fallback": "W\u0142\u0105cz tryb awaryjny." + "fallback": "Wybierz tryb awaryjny." }, - "description": "Tryb rezerwowy prze\u0142\u0105czy si\u0119 na inteligentny harmonogram przy nast\u0119pnym prze\u0142\u0105czeniu z harmonogramu po r\u0119cznym dostosowaniu strefy.", + "description": "Tryb awaryjny pozwala wybra\u0107, kiedy wr\u00f3ci\u0107 do inteligentnego harmonogramu z r\u0119cznej nak\u0142adki strefy. (NEXT_TIME_BLOCK:= Zmie\u0144 przy nast\u0119pnej zmianie inteligentnego harmonogramu; MANUAL:= Nie zmieniaj, dop\u00f3ki nie anulujesz; TADO_DEFAULT:= Zmie\u0144 na podstawie ustawie\u0144 w aplikacji Tado).", "title": "Dostosuj opcje Tado" } } diff --git a/homeassistant/components/tado/translations/pt-BR.json b/homeassistant/components/tado/translations/pt-BR.json index 68cf24fe5df..e0c11a94830 100644 --- a/homeassistant/components/tado/translations/pt-BR.json +++ b/homeassistant/components/tado/translations/pt-BR.json @@ -23,9 +23,9 @@ "step": { "init": { "data": { - "fallback": "Ative o modo de fallback." + "fallback": "Escolha o modo de fallback." }, - "description": "O modo Fallback mudar\u00e1 para Smart Schedule na pr\u00f3xima troca de agendamento ap\u00f3s ajustar manualmente uma zona.", + "description": "O modo fallback permite que voc\u00ea escolha quando fazer fallback para o Smart Schedule a partir de sua sobreposi\u00e7\u00e3o de zona manual. (NEXT_TIME_BLOCK:= Altere na pr\u00f3xima altera\u00e7\u00e3o do Smart Schedule; MANUAL:= N\u00e3o altere at\u00e9 cancelar; TADO_DEFAULT:= Altere com base na sua configura\u00e7\u00e3o no Tado App).", "title": "Ajuste as op\u00e7\u00f5es do Tado." } } diff --git a/homeassistant/components/tado/translations/ru.json b/homeassistant/components/tado/translations/ru.json index 18e9ddff67b..af2e96ae5ef 100644 --- a/homeassistant/components/tado/translations/ru.json +++ b/homeassistant/components/tado/translations/ru.json @@ -23,9 +23,9 @@ "step": { "init": { "data": { - "fallback": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0435\u0436\u0438\u043c Fallback" + "fallback": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c." }, - "description": "\u0420\u0435\u0436\u0438\u043c Fallback \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f \u043d\u0430 Smart Schedule \u043f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u0440\u0443\u0447\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u043e\u043d\u044b.", + "description": "\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0438\u0437 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0437\u043e\u043d\u044b. (NEXT_TIME_BLOCK:= \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0441\u043c\u0430\u0440\u0442-\u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f; MANUAL:= \u041d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c, \u043f\u043e\u043a\u0430 \u0412\u044b \u043d\u0435 \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u0435; TADO_DEFAULT:= \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0412\u0430\u0448\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 Tado).", "title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Tado" } } diff --git a/homeassistant/components/tado/translations/tr.json b/homeassistant/components/tado/translations/tr.json index 30fc86b8e6a..76e4c25eefb 100644 --- a/homeassistant/components/tado/translations/tr.json +++ b/homeassistant/components/tado/translations/tr.json @@ -23,9 +23,9 @@ "step": { "init": { "data": { - "fallback": "Geri d\u00f6n\u00fc\u015f modunu etkinle\u015ftirin." + "fallback": "Geri d\u00f6n\u00fc\u015f modunu se\u00e7in." }, - "description": "Geri d\u00f6n\u00fc\u015f modu, bir b\u00f6lgeyi manuel olarak ayarlad\u0131ktan sonra bir sonraki program anahtar\u0131nda Ak\u0131ll\u0131 Programa ge\u00e7ecektir.", + "description": "Geri d\u00f6n\u00fc\u015f modu, manuel b\u00f6lge yerle\u015fiminizden Ak\u0131ll\u0131 Programa ne zaman geri d\u00f6nece\u011finizi se\u00e7menizi sa\u011flar. (NEXT_TIME_BLOCK:= Sonraki Ak\u0131ll\u0131 Program de\u011fi\u015fikli\u011finde de\u011fi\u015ftirin; MANUAL:= \u0130ptal edene kadar de\u011fi\u015ftirmeyin; TADO_DEFAULT:= Tado Uygulamas\u0131ndaki ayar\u0131n\u0131za g\u00f6re de\u011fi\u015ftirin).", "title": "Tado se\u00e7eneklerini ayarlay\u0131n." } } diff --git a/homeassistant/components/tado/translations/zh-Hant.json b/homeassistant/components/tado/translations/zh-Hant.json index e7f1f41ce3b..794496d7994 100644 --- a/homeassistant/components/tado/translations/zh-Hant.json +++ b/homeassistant/components/tado/translations/zh-Hant.json @@ -23,9 +23,9 @@ "step": { "init": { "data": { - "fallback": "\u958b\u555f\u5f8c\u964d\u6a21\u5f0f" + "fallback": "\u9078\u64c7\u5f8c\u964d\u6a21\u5f0f\u3002" }, - "description": "\u5f8c\u964d\u6a21\u5f0f\u5c07\u6703\u65bc\u624b\u52d5\u8abf\u6574\u5340\u57df\u5f8c\uff0c\u4e0b\u4e00\u6b21\u898f\u5283\u5207\u63db\u6642\u3001\u5207\u63db\u5230\u667a\u80fd\u884c\u7a0b\u3002", + "description": "\u5f8c\u964d\u6a21\u5f0f\u8b93\u60a8\u9078\u64c7\u7576\u81ea\u624b\u52d5\u8abf\u6574\u5340\u57df\u5f8c\u3001\u5207\u63db\u5230\u667a\u80fd\u6a21\u5f0f\u3002\uff08NEXT_TIME_BLOCK:= \u65bc\u4e0b\u6b21\u667a\u80fd\u6a21\u5f0f\u8b8a\u66f4\u6642\u8b8a\u66f4; MANUAL:= \u76f4\u5230\u53d6\u6d88\u524d\u4e0d\u8981\u8b8a\u66f4; TADO_DEFAULT:= \u57fa\u65bc Tado App \u4e2d\u8a2d\u5b9a\u8b8a\u66f4)\u3002", "title": "\u8abf\u6574 Tado \u9078\u9805\u3002" } } diff --git a/homeassistant/components/tailscale/translations/ca.json b/homeassistant/components/tailscale/translations/ca.json index d111da767f2..a339ce6a22b 100644 --- a/homeassistant/components/tailscale/translations/ca.json +++ b/homeassistant/components/tailscale/translations/ca.json @@ -19,7 +19,7 @@ "api_key": "Clau API", "tailnet": "Tailnet" }, - "description": "Per autenticar-te amb Tailscale, has de crear una clau API a https://login.tailscale.com/admin/settings/authkeys. \n\nLa Tailnet \u00e9s el nom de la teva xarxa Tailscale. La pots trobar a l'extrem superior esquerre del tauler d'administraci\u00f3 de Tailscale (al costat del logotip de Tailscale)." + "description": "Aquesta integraci\u00f3 monitoritza la teva xarxa Tailscale, per\u00f2 NO fa que Home Assistant sigui accessible a trav\u00e9s de la VPN de Tailscale.\n\nPer autenticar-te amb Tailscale, has de crear una clau API a {authkeys_url}. \n\nTailnet \u00e9s el nom de la teva xarxa Tailscale. La pots trobar a l'extrem superior esquerre del tauler d'administraci\u00f3 de Tailscale (al costat del logotip de Tailscale)." } } } diff --git a/homeassistant/components/tailscale/translations/de.json b/homeassistant/components/tailscale/translations/de.json index 9fbcceaa674..fca05d46a6e 100644 --- a/homeassistant/components/tailscale/translations/de.json +++ b/homeassistant/components/tailscale/translations/de.json @@ -19,7 +19,7 @@ "api_key": "API-Schl\u00fcssel", "tailnet": "Tailnet" }, - "description": "Um sich bei Tailscale zu authentifizieren, musst du einen API-Schl\u00fcssel unter https://login.tailscale.com/admin/settings/authkeys erstellen.\n\nEin Tailnet ist der Name Ihres Tailscale-Netzwerks. Sie finden ihn in der linken oberen Ecke des Tailscale Admin Panels (neben dem Tailscale Logo)." + "description": "Diese Integration \u00fcberwacht dein Tailscale-Netzwerk, sie macht deinen Home Assistant **nicht** \u00fcber Tailscale VPN zug\u00e4nglich. \n\nUm sich bei Tailscale zu authentifizieren, musst du einen API-Schl\u00fcssel unter {authkeys_url} erstellen.\n\nEin Tailnet ist der Name deines Tailscale-Netzwerks. Du findest es oben links im Tailscale Admin Panel (neben dem Tailscale Logo)." } } } diff --git a/homeassistant/components/tailscale/translations/et.json b/homeassistant/components/tailscale/translations/et.json index d542c930ecd..1f8a677f2af 100644 --- a/homeassistant/components/tailscale/translations/et.json +++ b/homeassistant/components/tailscale/translations/et.json @@ -19,7 +19,7 @@ "api_key": "API v\u00f5ti", "tailnet": "Tailnet" }, - "description": "Tailscale'iga autentimiseks pead looma API v\u00f5tme aadressil https://login.tailscale.com/admin/settings/authkeys. \n\n Tailnet on Tailscale v\u00f5rgu nimi. Leiad selle Tailscale halduspaneeli vasakus \u00fclanurgas (Tailscale logo k\u00f5rval)." + "description": "See sidumine j\u00e4lgib Tailscale v\u00f5rku, see **EI TEE** seda Home Assistantile juurdep\u00e4\u00e4setavaks Tailscale VPN-i kaudu. \n\n Tailscale'iga autentimiseks pead looma API v\u00f5tme aadressil {authkeys_url} . \n\n Tailnet on Tailscale v\u00f5rgu nimi. Leiadselle Tailscale halduspaneeli vasakus \u00fclanurgas (Tailscale logo k\u00f5rval)." } } } diff --git a/homeassistant/components/tailscale/translations/fr.json b/homeassistant/components/tailscale/translations/fr.json index 1163ec2d151..c879c2a72e7 100644 --- a/homeassistant/components/tailscale/translations/fr.json +++ b/homeassistant/components/tailscale/translations/fr.json @@ -19,7 +19,7 @@ "api_key": "Cl\u00e9 d'API", "tailnet": "Tailnet" }, - "description": "Pour vous authentifier avec Tailscale, vous devrez cr\u00e9er une cl\u00e9 API sur https://login.tailscale.com/admin/settings/authkeys. \n\n Un Tailnet est le nom de votre r\u00e9seau Tailscale. Vous pouvez le trouver dans le coin sup\u00e9rieur gauche du panneau d'administration Tailscale (\u00e0 c\u00f4t\u00e9 du logo Tailscale)." + "description": "Cette int\u00e9gration permet de surveiller votre r\u00e9seau Tailscale\u00a0; elle **NE REND PAS** votre instance Home Assistant accessible via le VPN Tailscale.\n\nAfin de vous authentifier aupr\u00e8s de Tailscale, vous devez cr\u00e9er une cl\u00e9 d'API sur {authkeys_url}.\n\nUn Tailnet est le nom de votre r\u00e9seau Tailscale. Vous pouvez le trouver dans le coin sup\u00e9rieur gauche du panneau d'administration Tailscale (\u00e0 c\u00f4t\u00e9 du logo Tailscale)." } } } diff --git a/homeassistant/components/tailscale/translations/hu.json b/homeassistant/components/tailscale/translations/hu.json index ec727cbc00f..bbc41483704 100644 --- a/homeassistant/components/tailscale/translations/hu.json +++ b/homeassistant/components/tailscale/translations/hu.json @@ -19,7 +19,7 @@ "api_key": "API kulcs", "tailnet": "Tailnet" }, - "description": "A Tailscale-rel val\u00f3 hiteles\u00edt\u00e9shez l\u00e9tre kell hoznia egy API-kulcsot a https://login.tailscale.com/admin/settings/authkeys oldalon.\n\nTailnet az \u00f6n tailscale h\u00e1l\u00f3zat\u00e1nak neve. Megtal\u00e1lhat\u00f3 a bal fels\u0151 sarokban a Tailscale Admin panelen (a Tailscale log\u00f3 mellett)." + "description": "Ez az integr\u00e1ci\u00f3 figyeli a Tailscale h\u00e1l\u00f3zat\u00e1t, \u00e9s **NEM** teszi el\u00e9rhet\u0151v\u00e9 az otthoni asszisztenst a Tailscale VPN-en kereszt\u00fcl. \n\nA Tailscale-n\u00e1l t\u00f6rt\u00e9n\u0151 hiteles\u00edt\u00e9shez l\u00e9tre kell hoznia egy API-kulcsot a {authkeys_url} c\u00edmen.\n\nA Tailnet az \u00d6n Tailscale h\u00e1l\u00f3zat\u00e1nak neve. Ezt a Tailscale Admin Panel bal fels\u0151 sark\u00e1ban tal\u00e1lja (a Tailscale log\u00f3 mellett)." } } } diff --git a/homeassistant/components/tailscale/translations/id.json b/homeassistant/components/tailscale/translations/id.json index d88a47fa82e..53b82c440aa 100644 --- a/homeassistant/components/tailscale/translations/id.json +++ b/homeassistant/components/tailscale/translations/id.json @@ -19,7 +19,7 @@ "api_key": "Kunci API", "tailnet": "Tailnet" }, - "description": "Untuk mengautentikasi dengan Tailscale, Anda harus membuat kunci API di https://login.tailscale.com/admin/settings/authkeys. \n\nTailnet adalah nama jaringan Tailscale Anda. Anda dapat menemukannya di pojok kiri atas di Panel Admin Tailscale (di samping logo Tailscale)." + "description": "Integrasi ini memantau jaringan Tailscale Anda, integrasi ini **TIDAK** membuat Home Assistant dapat diakses melalui Tailscale VPN. \n\nUntuk mengautentikasi dengan Tailscale, Anda harus membuat kunci API di {authkeys_url} . \n\nTailnet adalah nama jaringan Tailscale Anda. Anda dapat menemukannya di sudut kiri atas di Panel Admin Tailscale (di samping logo Tailscale)." } } } diff --git a/homeassistant/components/tailscale/translations/it.json b/homeassistant/components/tailscale/translations/it.json index 0dfe90b8f2e..dba31833cf9 100644 --- a/homeassistant/components/tailscale/translations/it.json +++ b/homeassistant/components/tailscale/translations/it.json @@ -19,7 +19,7 @@ "api_key": "Chiave API", "tailnet": "Tailnet" }, - "description": "Per autenticarti con Tailscale dovrai creare una chiave API su https://login.tailscale.com/admin/settings/authkeys. \n\nUna Tailnet \u00e8 il nome della tua rete Tailscale. Puoi trovarlo nell'angolo in alto a sinistra nel pannello di amministrazione di Tailscale (accanto al logo Tailscale)." + "description": "Questa integrazione monitora la tua rete Tailscale, **NON** rende il tuo Home Assistant accessibile tramite Tailscale VPN. \n\nPer autenticarti con Tailscale dovrai creare una chiave API in {authkeys_url}. \n\nUn Tailnet \u00e8 il nome della tua rete Tailscale. Puoi trovarlo nell'angolo in alto a sinistra del pannello di amministrazione di Tailscale (accanto al logo di Tailscale)." } } } diff --git a/homeassistant/components/tailscale/translations/nl.json b/homeassistant/components/tailscale/translations/nl.json index 5e46f4f0511..1a59a3ca029 100644 --- a/homeassistant/components/tailscale/translations/nl.json +++ b/homeassistant/components/tailscale/translations/nl.json @@ -19,7 +19,7 @@ "api_key": "API-sleutel", "tailnet": "Tailnet" }, - "description": "Om te authenticeren met Tailscale moet je een API-sleutel maken op https://login.tailscale.com/admin/settings/authkeys. \n\n Een Tailnet is de naam van uw Tailscale-netwerk. Je vindt het in de linkerbovenhoek in het Tailscale Admin Panel (naast het Tailscale-logo)." + "description": "Deze integratie controleert uw Tailscale netwerk, het maakt uw Home Assistant **NIET** toegankelijk via Tailscale VPN. \n\nOm te authenticeren met Tailscale moet u een API sleutel aanmaken op {authkeys_url}.\n\nEen Tailnet is de naam van uw Tailscale netwerk. U kunt het vinden in de linkerbovenhoek in het Tailscale Admin Panel (naast het Tailscale logo)." } } } diff --git a/homeassistant/components/tailscale/translations/no.json b/homeassistant/components/tailscale/translations/no.json index 627facd8f66..5c1ae4c6bc0 100644 --- a/homeassistant/components/tailscale/translations/no.json +++ b/homeassistant/components/tailscale/translations/no.json @@ -19,7 +19,7 @@ "api_key": "API-n\u00f8kkel", "tailnet": "Tailnet" }, - "description": "For \u00e5 autentisere med Tailscale m\u00e5 du opprette en API-n\u00f8kkel p\u00e5 https://login.tailscale.com/admin/settings/authkeys. \n\n Et Tailnet er navnet p\u00e5 Tailscale-nettverket ditt. Du finner den i \u00f8verste venstre hj\u00f8rne i Tailscale Admin Panel (ved siden av Tailscale-logoen)." + "description": "Denne integrasjonen overv\u00e5ker Tailscale-nettverket ditt, det ** GJ\u00d8R IKKE ** gj\u00f8r hjemmeassistenten din tilgjengelig via Tailscale VPN. \n\nHvis du vil godkjenne med Tailscale, m\u00e5 du opprette en API-n\u00f8kkel p\u00e5 {authkeys_url}.\n\nEt Tailnet er navnet p\u00e5 Tailscale-nettverket. Du finner den \u00f8verst til venstre i Tailscale Admin Panel (ved siden av Tailscale-logoen)." } } } diff --git a/homeassistant/components/tailscale/translations/pl.json b/homeassistant/components/tailscale/translations/pl.json index 579d8de83e1..ef5f1a4dabf 100644 --- a/homeassistant/components/tailscale/translations/pl.json +++ b/homeassistant/components/tailscale/translations/pl.json @@ -19,7 +19,7 @@ "api_key": "Klucz API", "tailnet": "Tailnet" }, - "description": "Aby uwierzytelni\u0107 si\u0119 w Tailscale, musisz utworzy\u0107 klucz API na stronie https://login.tailscale.com/admin/settings/authkeys.\n\nTailnet to nazwa Twojej sieci Tailscale. Mo\u017cna j\u0105 znale\u017a\u0107 w lewym g\u00f3rnym rogu w panelu administracyjnym Tailscale (obok loga Tailscale)." + "description": "Ta integracja monitoruje Twoj\u0105 sie\u0107 Tailscale, a **NIE SPRAWIA**, \u017ce Tw\u00f3j Home Assistant jest dost\u0119pny przez Tailscale VPN.\n\nAby uwierzytelni\u0107 si\u0119 w Tailscale, musisz utworzy\u0107 klucz API na stronie {authkeys_url}.\n\nTailnet to nazwa Twojej sieci Tailscale. Mo\u017cna j\u0105 znale\u017a\u0107 w lewym g\u00f3rnym rogu w panelu administracyjnym Tailscale (obok loga Tailscale)." } } } diff --git a/homeassistant/components/tailscale/translations/pt-BR.json b/homeassistant/components/tailscale/translations/pt-BR.json index ddbdda9d5a6..edd55ea6e87 100644 --- a/homeassistant/components/tailscale/translations/pt-BR.json +++ b/homeassistant/components/tailscale/translations/pt-BR.json @@ -19,7 +19,7 @@ "api_key": "Chave da API", "tailnet": "Tailnet" }, - "description": "Para autenticar com o Tailscale, voc\u00ea precisar\u00e1 criar uma chave de API em https://login.tailscale.com/admin/settings/authkeys. \n\nTailnet \u00e9 o nome da sua rede Tailscale. Voc\u00ea pode encontr\u00e1-lo no canto superior esquerdo no painel de administra\u00e7\u00e3o do Tailscale (ao lado do logotipo do Tailscale)." + "description": "Esta integra\u00e7\u00e3o monitora sua rede Tailscale, **N\u00c3O** torna seu Home Assistant acess\u00edvel via Tailscale VPN. \n\n Para autenticar com o Tailscale, voc\u00ea precisar\u00e1 criar uma chave de API em {authkeys_url} . \n\n Um Tailnet \u00e9 o nome da sua rede Tailscale. Voc\u00ea pode encontr\u00e1-lo no canto superior esquerdo no painel de administra\u00e7\u00e3o do Tailscale (ao lado do logotipo do Tailscale)." } } } diff --git a/homeassistant/components/tailscale/translations/ru.json b/homeassistant/components/tailscale/translations/ru.json index 1b97b0998e7..c05e3a09eac 100644 --- a/homeassistant/components/tailscale/translations/ru.json +++ b/homeassistant/components/tailscale/translations/ru.json @@ -19,7 +19,7 @@ "api_key": "\u041a\u043b\u044e\u0447 API", "tailnet": "Tailnet" }, - "description": "\u0414\u043b\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u044e\u0447 API \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 https://login.tailscale.com/admin/settings/authkeys. \n\nTailnet \u2014 \u044d\u0442\u043e \u0438\u043c\u044f \u0412\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u0438 Tailscale. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0435\u0433\u043e \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u043b\u0435\u0432\u043e\u043c \u0443\u0433\u043b\u0443 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 Tailscale (\u0440\u044f\u0434\u043e\u043c \u0441 \u043b\u043e\u0433\u043e\u0442\u0438\u043f\u043e\u043c Tailscale)." + "description": "\u042d\u0442\u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0412\u0430\u0448\u0443 \u0441\u0435\u0442\u044c Tailscale, \u043e\u043d\u0430 **\u041d\u0415** \u0434\u0435\u043b\u0430\u0435\u0442 \u0412\u0430\u0448 Home Assistant \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0447\u0435\u0440\u0435\u0437 Tailscale VPN. \n\n\u0414\u043b\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u044e\u0447 API \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 {authkeys_url}. \n\nTailnet \u2014 \u044d\u0442\u043e \u0438\u043c\u044f \u0412\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u0438 Tailscale. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0435\u0433\u043e \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u043b\u0435\u0432\u043e\u043c \u0443\u0433\u043b\u0443 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 Tailscale (\u0440\u044f\u0434\u043e\u043c \u0441 \u043b\u043e\u0433\u043e\u0442\u0438\u043f\u043e\u043c Tailscale)." } } } diff --git a/homeassistant/components/tailscale/translations/tr.json b/homeassistant/components/tailscale/translations/tr.json index 680acd65d70..784bda86b7d 100644 --- a/homeassistant/components/tailscale/translations/tr.json +++ b/homeassistant/components/tailscale/translations/tr.json @@ -19,7 +19,7 @@ "api_key": "API Anahtar\u0131", "tailnet": "Tailnet" }, - "description": "Tailscale ile kimlik do\u011frulamas\u0131 yapmak i\u00e7in https://login.tailscale.com/admin/settings/authkeys adresinde bir API anahtar\u0131 olu\u015fturman\u0131z gerekir. \n\n Kuyruk a\u011f\u0131, Kuyruk \u00f6l\u00e7e\u011fi a\u011f\u0131n\u0131z\u0131n ad\u0131d\u0131r. Bunu, Tailscale Y\u00f6netici Panelinin sol \u00fcst k\u00f6\u015fesinde (Tailscale logosunun yan\u0131nda) bulabilirsiniz." + "description": "Bu entegrasyon, Tailscale a\u011f\u0131n\u0131z\u0131 izler, ancak Ev Asistan\u0131n\u0131z\u0131 Tailscale VPN arac\u0131l\u0131\u011f\u0131yla eri\u015filebilir k\u0131lmaz. \n\n Tailscale ile kimlik do\u011frulamas\u0131 yapmak i\u00e7in {authkeys_url} adresinde bir API anahtar\u0131 olu\u015fturman\u0131z gerekir. \n\n Kuyruk a\u011f\u0131, Kuyruk \u00f6l\u00e7e\u011fi a\u011f\u0131n\u0131z\u0131n ad\u0131d\u0131r. Bunu, Tailscale Y\u00f6netici Panelinin sol \u00fcst k\u00f6\u015fesinde (Tailscale logosunun yan\u0131nda) bulabilirsiniz." } } } diff --git a/homeassistant/components/tailscale/translations/zh-Hant.json b/homeassistant/components/tailscale/translations/zh-Hant.json index 5ed5f1deb8f..316168fa67a 100644 --- a/homeassistant/components/tailscale/translations/zh-Hant.json +++ b/homeassistant/components/tailscale/translations/zh-Hant.json @@ -19,7 +19,7 @@ "api_key": "API \u91d1\u9470", "tailnet": "Tailnet" }, - "description": "\u6b32\u4f7f\u7528 Tailscale \u8a8d\u8b49\u3001\u5c07\u9700\u8981\u65bc https://login.tailscale.com/admin/settings/authkeys \u65b0\u589e\u4e00\u7d44 API \u91d1\u9470 \n\nTailnet \u70ba Tailscale \u7db2\u8def\u7684\u540d\u7a31\uff0c\u53ef\u4ee5\u65bc Tailscale \u7ba1\u7406\u9762\u677f\uff08Tailscale Logo \u65c1\uff09\u7684\u5de6\u4e0a\u65b9\u627e\u5230\u6b64\u8cc7\u8a0a\u3002" + "description": "\u6574\u5408\u5c07\u76e3\u63a7 Tailscale \u7db2\u8def\uff0c**\u4e26\u975e** \u8b93\u60a8\u7684 Home Assistant \u900f\u904e Tailscale VPN \u5b58\u53d6\u3002 \n\n\u6b32\u4f7f\u7528 Tailscale \u8a8d\u8b49\u3001\u5c07\u9700\u8981\u65bc {authkeys_url} \u65b0\u589e\u4e00\u7d44 API \u91d1\u9470\u3002\n\nTailnet \u70ba Tailscale \u7db2\u8def\u7684\u540d\u7a31\uff0c\u53ef\u4ee5\u65bc Tailscale \u7ba1\u7406\u9762\u677f\uff08Tailscale Logo \u65c1\uff09\u7684\u5de6\u4e0a\u65b9\u627e\u5230\u6b64\u8cc7\u8a0a\u3002" } } } diff --git a/homeassistant/components/tankerkoenig/translations/bg.json b/homeassistant/components/tankerkoenig/translations/bg.json new file mode 100644 index 00000000000..700c4f3000b --- /dev/null +++ b/homeassistant/components/tankerkoenig/translations/bg.json @@ -0,0 +1,29 @@ +{ + "config": { + "abort": { + "already_configured": "\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0442\u043e \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e" + }, + "error": { + "invalid_auth": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0432\u0430\u043d\u0435" + }, + "step": { + "user": { + "data": { + "api_key": "API \u043a\u043b\u044e\u0447", + "fuel_types": "\u0412\u0438\u0434\u043e\u0432\u0435 \u0433\u043e\u0440\u0438\u0432\u043e", + "location": "\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435", + "radius": "\u0420\u0430\u0434\u0438\u0443\u0441 \u043d\u0430 \u0442\u044a\u0440\u0441\u0435\u043d\u0435" + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "scan_interval": "\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043d\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tankerkoenig/translations/ca.json b/homeassistant/components/tankerkoenig/translations/ca.json new file mode 100644 index 00000000000..676bb1ccb55 --- /dev/null +++ b/homeassistant/components/tankerkoenig/translations/ca.json @@ -0,0 +1,41 @@ +{ + "config": { + "abort": { + "already_configured": "La ubicaci\u00f3 ja est\u00e0 configurada" + }, + "error": { + "invalid_auth": "Autenticaci\u00f3 inv\u00e0lida", + "no_stations": "No s'ha pogut trobar cap estaci\u00f3 a l'abast." + }, + "step": { + "select_station": { + "data": { + "stations": "Estacions" + }, + "description": "S'han trobat {stations_count} estacions dins el radi", + "title": "Selecciona les estacions a afegir" + }, + "user": { + "data": { + "api_key": "Clau API", + "fuel_types": "Tipus de combustible", + "location": "Ubicaci\u00f3", + "name": "Nom de la regi\u00f3", + "radius": "Radi de cerca", + "stations": "Estacions de servei addicionals" + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "scan_interval": "Interval d'actualitzaci\u00f3", + "show_on_map": "Mostra les estacions al mapa" + }, + "title": "Opcions de Tankerkoenig" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tankerkoenig/translations/de.json b/homeassistant/components/tankerkoenig/translations/de.json new file mode 100644 index 00000000000..3c2a5f1ec72 --- /dev/null +++ b/homeassistant/components/tankerkoenig/translations/de.json @@ -0,0 +1,41 @@ +{ + "config": { + "abort": { + "already_configured": "Standort ist bereits konfiguriert" + }, + "error": { + "invalid_auth": "Ung\u00fcltige Authentifizierung", + "no_stations": "Konnte keine Station in Reichweite finden." + }, + "step": { + "select_station": { + "data": { + "stations": "Stationen" + }, + "description": "{stations_count} Stationen im Umkreis gefunden", + "title": "W\u00e4hle Stationen zum Hinzuf\u00fcgen aus" + }, + "user": { + "data": { + "api_key": "API-Schl\u00fcssel", + "fuel_types": "Kraftstoffarten", + "location": "Standort", + "name": "Name der Region", + "radius": "Suchradius", + "stations": "Zus\u00e4tzliche Tankstellen" + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "scan_interval": "Update-Intervall", + "show_on_map": "Stationen auf der Karte anzeigen" + }, + "title": "Tankerkoenig Optionen" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tankerkoenig/translations/el.json b/homeassistant/components/tankerkoenig/translations/el.json new file mode 100644 index 00000000000..7f814b9760c --- /dev/null +++ b/homeassistant/components/tankerkoenig/translations/el.json @@ -0,0 +1,41 @@ +{ + "config": { + "abort": { + "already_configured": "\u0397 \u03c4\u03bf\u03c0\u03bf\u03b8\u03b5\u03c3\u03af\u03b1 \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03b8\u03b5\u03af" + }, + "error": { + "invalid_auth": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", + "no_stations": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b5\u03cd\u03c1\u03b5\u03c3\u03b7 \u03c3\u03c4\u03b1\u03b8\u03bc\u03bf\u03cd \u03b5\u03bd\u03c4\u03cc\u03c2 \u03b5\u03bc\u03b2\u03ad\u03bb\u03b5\u03b9\u03b1\u03c2." + }, + "step": { + "select_station": { + "data": { + "stations": "\u03a3\u03c4\u03b1\u03b8\u03bc\u03bf\u03af" + }, + "description": "\u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd {stations_count} \u03c3\u03c4\u03b1\u03b8\u03bc\u03bf\u03af \u03c3\u03b5 \u03b1\u03ba\u03c4\u03af\u03bd\u03b1", + "title": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c3\u03c4\u03b1\u03b8\u03bc\u03bf\u03cd\u03c2 \u03b3\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7" + }, + "user": { + "data": { + "api_key": "\u039a\u03bb\u03b5\u03b9\u03b4\u03af API", + "fuel_types": "\u03a4\u03cd\u03c0\u03bf\u03b9 \u03ba\u03b1\u03c5\u03c3\u03af\u03bc\u03c9\u03bd", + "location": "\u03a4\u03bf\u03c0\u03bf\u03b8\u03b5\u03c3\u03af\u03b1", + "name": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae\u03c2", + "radius": "\u0391\u03ba\u03c4\u03af\u03bd\u03b1 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2", + "stations": "\u03a0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03b1 \u03c0\u03c1\u03b1\u03c4\u03ae\u03c1\u03b9\u03b1 \u03ba\u03b1\u03c5\u03c3\u03af\u03bc\u03c9\u03bd" + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "scan_interval": "\u0394\u03b9\u03ac\u03c3\u03c4\u03b7\u03bc\u03b1 \u03b5\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7\u03c2", + "show_on_map": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c3\u03c4\u03b1\u03b8\u03bc\u03ce\u03bd \u03c3\u03c4\u03bf \u03c7\u03ac\u03c1\u03c4\u03b7" + }, + "title": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 Tankerkoenig" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tankerkoenig/translations/et.json b/homeassistant/components/tankerkoenig/translations/et.json new file mode 100644 index 00000000000..c15e4b78ddf --- /dev/null +++ b/homeassistant/components/tankerkoenig/translations/et.json @@ -0,0 +1,41 @@ +{ + "config": { + "abort": { + "already_configured": "Asukoht on juba m\u00e4\u00e4ratud" + }, + "error": { + "invalid_auth": "Tuvastamine nurjus", + "no_stations": "Piirkonnas ei leitud \u00fchtegi tanklat" + }, + "step": { + "select_station": { + "data": { + "stations": "Tanklad" + }, + "description": "piirkonnas on leitud {stations_count} tanklat", + "title": "Vali lisatavad tanklad" + }, + "user": { + "data": { + "api_key": "API v\u00f5ti", + "fuel_types": "K\u00fctuse liigid", + "location": "Asukoht", + "name": "Piirkonna nimi", + "radius": "Otsingu raadius", + "stations": "T\u00e4iendavad tanklad" + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "scan_interval": "V\u00e4rskendamise intervall", + "show_on_map": "N\u00e4ita jaamu kaardil" + }, + "title": "Tankerkoenig valikud" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tankerkoenig/translations/fr.json b/homeassistant/components/tankerkoenig/translations/fr.json new file mode 100644 index 00000000000..1a52eee5d39 --- /dev/null +++ b/homeassistant/components/tankerkoenig/translations/fr.json @@ -0,0 +1,41 @@ +{ + "config": { + "abort": { + "already_configured": "L'emplacement est d\u00e9j\u00e0 configur\u00e9" + }, + "error": { + "invalid_auth": "Authentification non valide", + "no_stations": "Aucune station-service n'a \u00e9t\u00e9 trouv\u00e9e dans le rayon indiqu\u00e9." + }, + "step": { + "select_station": { + "data": { + "stations": "Stations-services" + }, + "description": "{stations_count}\u00a0stations-services trouv\u00e9es dans le rayon", + "title": "S\u00e9lectionnez les stations-services \u00e0 ajouter" + }, + "user": { + "data": { + "api_key": "Cl\u00e9 d'API", + "fuel_types": "Types de carburant", + "location": "Emplacement", + "name": "Nom de la r\u00e9gion", + "radius": "Rayon de recherche", + "stations": "Stations-services suppl\u00e9mentaires" + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "scan_interval": "Intervalle de mise \u00e0 jour", + "show_on_map": "Afficher les stations-services sur la carte" + }, + "title": "Options Tankerkoenig" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tankerkoenig/translations/he.json b/homeassistant/components/tankerkoenig/translations/he.json new file mode 100644 index 00000000000..9ccb9aecfe6 --- /dev/null +++ b/homeassistant/components/tankerkoenig/translations/he.json @@ -0,0 +1,18 @@ +{ + "config": { + "abort": { + "already_configured": "\u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05de\u05d9\u05e7\u05d5\u05dd \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4" + }, + "error": { + "invalid_auth": "\u05d0\u05d9\u05de\u05d5\u05ea \u05dc\u05d0 \u05d7\u05d5\u05e7\u05d9" + }, + "step": { + "user": { + "data": { + "api_key": "\u05de\u05e4\u05ea\u05d7 API", + "location": "\u05de\u05d9\u05e7\u05d5\u05dd" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tankerkoenig/translations/hu.json b/homeassistant/components/tankerkoenig/translations/hu.json new file mode 100644 index 00000000000..e2c31e9e354 --- /dev/null +++ b/homeassistant/components/tankerkoenig/translations/hu.json @@ -0,0 +1,41 @@ +{ + "config": { + "abort": { + "already_configured": "A hely m\u00e1r konfigur\u00e1lva van" + }, + "error": { + "invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s", + "no_stations": "Nem tal\u00e1lhat\u00f3 \u00e1llom\u00e1s a hat\u00f3t\u00e1vols\u00e1gon bel\u00fcl." + }, + "step": { + "select_station": { + "data": { + "stations": "\u00c1llom\u00e1sok" + }, + "description": "{stations_count} \u00e1llom\u00e1s tal\u00e1lhat\u00f3 a hat\u00f3t\u00e1vols\u00e1gon bel\u00fcl", + "title": "Hozz\u00e1adand\u00f3 \u00e1llom\u00e1sok kiv\u00e1laszt\u00e1sa" + }, + "user": { + "data": { + "api_key": "API kulcs", + "fuel_types": "\u00dczemanyag t\u00edpusok", + "location": "Elhelyezked\u00e9s", + "name": "R\u00e9gi\u00f3 neve", + "radius": "Keres\u00e9s hat\u00f3t\u00e1vols\u00e1ga", + "stations": "Tov\u00e1bbi \u00fczemanyagt\u00f6lt\u0151 \u00e1llom\u00e1sok" + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "scan_interval": "Friss\u00edt\u00e9si id\u0151k\u00f6z", + "show_on_map": "\u00c1llom\u00e1sok megjelen\u00edt\u00e9se a t\u00e9rk\u00e9pen" + }, + "title": "Tankerkoenig be\u00e1ll\u00edt\u00e1sok" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tankerkoenig/translations/id.json b/homeassistant/components/tankerkoenig/translations/id.json new file mode 100644 index 00000000000..cddeb02b17f --- /dev/null +++ b/homeassistant/components/tankerkoenig/translations/id.json @@ -0,0 +1,41 @@ +{ + "config": { + "abort": { + "already_configured": "Lokasi sudah dikonfigurasi" + }, + "error": { + "invalid_auth": "Autentikasi tidak valid", + "no_stations": "Tidak dapat menemukan SPBU dalam jangkauan." + }, + "step": { + "select_station": { + "data": { + "stations": "SPBU" + }, + "description": "ditemukan {stations_count} SPBU dalam radius", + "title": "Pilih SPBU untuk ditambahkan" + }, + "user": { + "data": { + "api_key": "Kunci API", + "fuel_types": "Jenis bahan bakar", + "location": "Lokasi", + "name": "Nama wilayah", + "radius": "Radius pencarian", + "stations": "SPBU tambahan" + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "scan_interval": "Interval pembaruan", + "show_on_map": "Tampilkan SPBU di peta" + }, + "title": "Opsi Tankerkoenig" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tankerkoenig/translations/it.json b/homeassistant/components/tankerkoenig/translations/it.json new file mode 100644 index 00000000000..e24c353d4f1 --- /dev/null +++ b/homeassistant/components/tankerkoenig/translations/it.json @@ -0,0 +1,41 @@ +{ + "config": { + "abort": { + "already_configured": "La posizione \u00e8 gi\u00e0 configurata" + }, + "error": { + "invalid_auth": "Autenticazione non valida", + "no_stations": "Impossibile trovare nessuna stazione nel raggio d'azione." + }, + "step": { + "select_station": { + "data": { + "stations": "Stazioni" + }, + "description": "trovato {stations_count} stazioni nel raggio", + "title": "Seleziona le stazioni da aggiungere" + }, + "user": { + "data": { + "api_key": "Chiave API", + "fuel_types": "Tipi di carburante", + "location": "Posizione", + "name": "Nome della regione", + "radius": "Raggio di ricerca", + "stations": "Stazioni di servizio aggiuntive" + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "scan_interval": "Intervallo di aggiornamento", + "show_on_map": "Mostra stazioni sulla mappa" + }, + "title": "Opzioni Tankerkoenig" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tankerkoenig/translations/ja.json b/homeassistant/components/tankerkoenig/translations/ja.json new file mode 100644 index 00000000000..687e05322d5 --- /dev/null +++ b/homeassistant/components/tankerkoenig/translations/ja.json @@ -0,0 +1,41 @@ +{ + "config": { + "abort": { + "already_configured": "\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059" + }, + "error": { + "invalid_auth": "\u7121\u52b9\u306a\u8a8d\u8a3c", + "no_stations": "\u7bc4\u56f2\u5185\u306b\u30b9\u30c6\u30fc\u30b7\u30e7\u30f3\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002" + }, + "step": { + "select_station": { + "data": { + "stations": "\u30b9\u30c6\u30fc\u30b7\u30e7\u30f3" + }, + "description": "\u534a\u5f84\u5185\u306b {stations_count} \u500b\u306e\u30b9\u30c6\u30fc\u30b7\u30e7\u30f3\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f", + "title": "\u8ffd\u52a0\u3059\u308b\u30b9\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u9078\u629e\u3057\u307e\u3059" + }, + "user": { + "data": { + "api_key": "API\u30ad\u30fc", + "fuel_types": "\u71c3\u6599\u306e\u7a2e\u985e", + "location": "\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3", + "name": "\u5730\u57df\u540d", + "radius": "\u691c\u7d22\u534a\u5f84", + "stations": "\u8ffd\u52a0\u306e\u71c3\u6599\u30b9\u30c6\u30fc\u30b7\u30e7\u30f3" + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "scan_interval": "\u66f4\u65b0\u9593\u9694", + "show_on_map": "\u5730\u56f3\u4e0a\u306b\u30b9\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u8868\u793a\u3059\u308b" + }, + "title": "Tankerkoenig\u30aa\u30d7\u30b7\u30e7\u30f3" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tankerkoenig/translations/nl.json b/homeassistant/components/tankerkoenig/translations/nl.json new file mode 100644 index 00000000000..96de058ad74 --- /dev/null +++ b/homeassistant/components/tankerkoenig/translations/nl.json @@ -0,0 +1,41 @@ +{ + "config": { + "abort": { + "already_configured": "Locatie is al geconfigureerd." + }, + "error": { + "invalid_auth": "Ongeldige authenticatie", + "no_stations": "Kon geen station in bereik vinden." + }, + "step": { + "select_station": { + "data": { + "stations": "Stations" + }, + "description": "{stations_count} gevonden in radius", + "title": "Selecteer stations om toe te voegen" + }, + "user": { + "data": { + "api_key": "API-sleutel", + "fuel_types": "Brandstofsoorten", + "location": "Locatie", + "name": "Regionaam", + "radius": "Zoekradius", + "stations": "Extra tankstations" + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "scan_interval": "Update Interval", + "show_on_map": "Toon stations op kaart" + }, + "title": "Tankerkoenig opties" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tankerkoenig/translations/no.json b/homeassistant/components/tankerkoenig/translations/no.json new file mode 100644 index 00000000000..9d0b6ddab52 --- /dev/null +++ b/homeassistant/components/tankerkoenig/translations/no.json @@ -0,0 +1,41 @@ +{ + "config": { + "abort": { + "already_configured": "Plasseringen er allerede konfigurert" + }, + "error": { + "invalid_auth": "Ugyldig godkjenning", + "no_stations": "Kunne ikke finne noen stasjon innen rekkevidde." + }, + "step": { + "select_station": { + "data": { + "stations": "Stasjoner" + }, + "description": "fant {stations_count} stasjoner i radius", + "title": "Velg stasjoner du vil legge til" + }, + "user": { + "data": { + "api_key": "API-n\u00f8kkel", + "fuel_types": "Drivstofftyper", + "location": "Plassering", + "name": "Navn p\u00e5 omr\u00e5de", + "radius": "Radius for s\u00f8k", + "stations": "Flere bensinstasjoner" + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "scan_interval": "Oppdateringsintervall", + "show_on_map": "Vis stasjoner p\u00e5 kart" + }, + "title": "Tankerkoenig alternativer" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tankerkoenig/translations/pl.json b/homeassistant/components/tankerkoenig/translations/pl.json new file mode 100644 index 00000000000..e13ae2c4783 --- /dev/null +++ b/homeassistant/components/tankerkoenig/translations/pl.json @@ -0,0 +1,41 @@ +{ + "config": { + "abort": { + "already_configured": "Lokalizacja jest ju\u017c skonfigurowana" + }, + "error": { + "invalid_auth": "Niepoprawne uwierzytelnienie", + "no_stations": "Nie mo\u017cna znale\u017a\u0107 \u017cadnej stacji w zasi\u0119gu." + }, + "step": { + "select_station": { + "data": { + "stations": "Stacje" + }, + "description": "liczba znalezionych stacji w promieniu: {stations_count}", + "title": "Wybierz stacje do dodania" + }, + "user": { + "data": { + "api_key": "Klucz API", + "fuel_types": "Rodzaje paliw", + "location": "Lokalizacja", + "name": "Nazwa regionu", + "radius": "Promie\u0144 wyszukiwania", + "stations": "Dodatkowe stacje paliw" + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "scan_interval": "Cz\u0119stotliwo\u015b\u0107 aktualizacji", + "show_on_map": "Poka\u017c stacje na mapie" + }, + "title": "Opcje Tankerkoenig" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tankerkoenig/translations/pt-BR.json b/homeassistant/components/tankerkoenig/translations/pt-BR.json new file mode 100644 index 00000000000..b24e0b1dca8 --- /dev/null +++ b/homeassistant/components/tankerkoenig/translations/pt-BR.json @@ -0,0 +1,41 @@ +{ + "config": { + "abort": { + "already_configured": "Localiza\u00e7\u00e3o j\u00e1 est\u00e1 configurada" + }, + "error": { + "invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida", + "no_stations": "N\u00e3o foi poss\u00edvel encontrar nenhum posto ao alcance." + }, + "step": { + "select_station": { + "data": { + "stations": "Postos de combustiveis" + }, + "description": "encontrou {stations_count} postos no raio", + "title": "Selecione postos para adicionar" + }, + "user": { + "data": { + "api_key": "Chave da API", + "fuel_types": "Tipos de combust\u00edvel", + "location": "Localiza\u00e7\u00e3o", + "name": "Nome da regi\u00e3o", + "radius": "Raio de pesquisa", + "stations": "Postos de combust\u00edvel adicionais" + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "scan_interval": "Intervalo de atualiza\u00e7\u00e3o", + "show_on_map": "Mostrar postos no mapa" + }, + "title": "Op\u00e7\u00f5es de Tankerkoenig" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tankerkoenig/translations/ru.json b/homeassistant/components/tankerkoenig/translations/ru.json new file mode 100644 index 00000000000..bf61fddc0c5 --- /dev/null +++ b/homeassistant/components/tankerkoenig/translations/ru.json @@ -0,0 +1,41 @@ +{ + "config": { + "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": { + "invalid_auth": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.", + "no_stations": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u0432 \u0440\u0430\u0434\u0438\u0443\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f." + }, + "step": { + "select_station": { + "data": { + "stations": "\u0421\u0442\u0430\u043d\u0446\u0438\u0438" + }, + "description": "\u041d\u0430\u0439\u0434\u0435\u043d\u043e {stations_count} \u0441\u0442\u0430\u043d\u0446\u0438\u0439 \u0432 \u0440\u0430\u0434\u0438\u0443\u0441\u0435.", + "title": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0442\u0430\u043d\u0446\u0438\u0438" + }, + "user": { + "data": { + "api_key": "\u041a\u043b\u044e\u0447 API", + "fuel_types": "\u0412\u0438\u0434\u044b \u0442\u043e\u043f\u043b\u0438\u0432\u0430", + "location": "\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435", + "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u043e\u043d\u0430", + "radius": "\u0420\u0430\u0434\u0438\u0443\u0441 \u043f\u043e\u0438\u0441\u043a\u0430", + "stations": "\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u044b\u0435 \u0441\u0442\u0430\u043d\u0446\u0438\u0438" + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "scan_interval": "\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f", + "show_on_map": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u043d\u0430 \u043a\u0430\u0440\u0442\u0435" + }, + "title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Tankerkoenig" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tankerkoenig/translations/tr.json b/homeassistant/components/tankerkoenig/translations/tr.json new file mode 100644 index 00000000000..2d88d2fa670 --- /dev/null +++ b/homeassistant/components/tankerkoenig/translations/tr.json @@ -0,0 +1,41 @@ +{ + "config": { + "abort": { + "already_configured": "Konum zaten yap\u0131land\u0131r\u0131lm\u0131\u015f" + }, + "error": { + "invalid_auth": "Ge\u00e7ersiz kimlik do\u011frulama", + "no_stations": "Menzilde herhangi bir istasyon bulunamad\u0131." + }, + "step": { + "select_station": { + "data": { + "stations": "\u0130stasyonlar" + }, + "description": "yar\u0131\u00e7ap i\u00e7inde {stations_count} istasyon bulundu", + "title": "Eklenecek istasyonlar\u0131 se\u00e7in" + }, + "user": { + "data": { + "api_key": "API Anahtar\u0131", + "fuel_types": "Yak\u0131t t\u00fcrleri", + "location": "Konum", + "name": "B\u00f6lge ad\u0131", + "radius": "Yar\u0131\u00e7ap\u0131 ara\u015ft\u0131r", + "stations": "Ek yak\u0131t istasyonlar\u0131" + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "scan_interval": "G\u00fcncelle\u015ftirme aral\u0131\u011f\u0131", + "show_on_map": "\u0130stasyonlar\u0131 haritada g\u00f6ster" + }, + "title": "Tankerkoenig se\u00e7enekleri" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tankerkoenig/translations/zh-Hant.json b/homeassistant/components/tankerkoenig/translations/zh-Hant.json new file mode 100644 index 00000000000..059d07ccdc6 --- /dev/null +++ b/homeassistant/components/tankerkoenig/translations/zh-Hant.json @@ -0,0 +1,41 @@ +{ + "config": { + "abort": { + "already_configured": "\u5ea7\u6a19\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210" + }, + "error": { + "invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548", + "no_stations": "\u7bc4\u570d\u5167\u627e\u4e0d\u5230\u4efb\u4f55\u52a0\u6cb9\u7ad9\u3002" + }, + "step": { + "select_station": { + "data": { + "stations": "\u52a0\u6cb9\u7ad9" + }, + "description": "\u65bc\u534a\u5f91\u5167\u627e\u5230 {stations_count} \u5ea7\u52a0\u6cb9\u7ad9", + "title": "\u9078\u64c7\u65b0\u589e\u52a0\u6cb9\u7ad9" + }, + "user": { + "data": { + "api_key": "API \u91d1\u9470", + "fuel_types": "\u71c3\u6599\u985e\u5225", + "location": "\u5ea7\u6a19", + "name": "\u5340\u57df\u540d\u7a31", + "radius": "\u641c\u5c0b\u534a\u5f91", + "stations": "\u5176\u4ed6\u52a0\u6cb9\u7ad9" + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "scan_interval": "\u66f4\u65b0\u983b\u7387", + "show_on_map": "\u65bc\u5730\u5716\u986f\u793a\u52a0\u6cb9\u7ad9" + }, + "title": "Tankerkoenig \u9078\u9805" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tautulli/translations/de.json b/homeassistant/components/tautulli/translations/de.json new file mode 100644 index 00000000000..bb1e2bc8c95 --- /dev/null +++ b/homeassistant/components/tautulli/translations/de.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "reauth_successful": "Die erneute Authentifizierung war erfolgreich", + "single_instance_allowed": "Bereits konfiguriert. Nur eine einzige Konfiguration m\u00f6glich." + }, + "error": { + "cannot_connect": "Verbindung fehlgeschlagen", + "invalid_auth": "Ung\u00fcltige Authentifizierung", + "unknown": "Unerwarteter Fehler" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API-Schl\u00fcssel" + }, + "description": "Um deinen API-Schl\u00fcssel zu finden, \u00f6ffne die Tautulli-Webseite und navigiere zu Einstellungen und dann zu Webinterface. Der API-Schl\u00fcssel befindet sich unten auf dieser Seite.", + "title": "Tautulli erneut authentifizieren" + }, + "user": { + "data": { + "api_key": "API-Schl\u00fcssel", + "url": "URL", + "verify_ssl": "SSL-Zertifikat \u00fcberpr\u00fcfen" + }, + "description": "Um deinen API-Schl\u00fcssel zu finden, \u00f6ffne die Tautulli-Webseite und navigiere zu Einstellungen und dann zu Webinterface. Der API-Schl\u00fcssel befindet sich unten auf dieser Seite.\n\nBeispiel f\u00fcr die URL: ```http://192.168.0.10:8181`` mit 8181 als Standard-Port." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tautulli/translations/el.json b/homeassistant/components/tautulli/translations/el.json new file mode 100644 index 00000000000..a83662fb6e6 --- /dev/null +++ b/homeassistant/components/tautulli/translations/el.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "reauth_successful": "\u039f \u03b5\u03ba \u03bd\u03ad\u03bf\u03c5 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03ae\u03c4\u03b1\u03bd \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03ae\u03c2", + "single_instance_allowed": "\u0388\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af. \u039c\u03cc\u03bd\u03bf \u03bc\u03af\u03b1 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae." + }, + "error": { + "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", + "invalid_auth": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", + "unknown": "\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "\u039a\u03bb\u03b5\u03b9\u03b4\u03af API" + }, + "description": "\u0393\u03b9\u03b1 \u03bd\u03b1 \u03b2\u03c1\u03b5\u03af\u03c4\u03b5 \u03c4\u03bf \u03ba\u03bb\u03b5\u03b9\u03b4\u03af API, \u03b1\u03bd\u03bf\u03af\u03be\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b9\u03c3\u03c4\u03bf\u03c3\u03b5\u03bb\u03af\u03b4\u03b1 Tautulli \u03ba\u03b1\u03b9 \u03bc\u03b5\u03c4\u03b1\u03b2\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03b9\u03c2 \u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03ba\u03b1\u03b9 \u03bc\u03b5\u03c4\u03ac \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03c0\u03b1\u03c6\u03ae \u0399\u03c3\u03c4\u03bf\u03cd. \u03a4\u03bf \u03ba\u03bb\u03b5\u03b9\u03b4\u03af API \u03b8\u03b1 \u03b2\u03c1\u03af\u03c3\u03ba\u03b5\u03c4\u03b1\u03b9 \u03c3\u03c4\u03bf \u03ba\u03ac\u03c4\u03c9 \u03bc\u03ad\u03c1\u03bf\u03c2 \u03b1\u03c5\u03c4\u03ae\u03c2 \u03c4\u03b7\u03c2 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1\u03c2.", + "title": "\u0395\u03c0\u03b1\u03bd\u03b1\u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03c4\u03bf\u03c5 Tautulli" + }, + "user": { + "data": { + "api_key": "\u039a\u03bb\u03b5\u03b9\u03b4\u03af API", + "url": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL", + "verify_ssl": "\u0395\u03c0\u03b1\u03bb\u03b7\u03b8\u03b5\u03cd\u03c3\u03c4\u03b5 \u03c4\u03bf \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03cc SSL" + }, + "description": "\u0393\u03b9\u03b1 \u03bd\u03b1 \u03b2\u03c1\u03b5\u03af\u03c4\u03b5 \u03c4\u03bf \u03ba\u03bb\u03b5\u03b9\u03b4\u03af API, \u03b1\u03bd\u03bf\u03af\u03be\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b9\u03c3\u03c4\u03bf\u03c3\u03b5\u03bb\u03af\u03b4\u03b1 Tautulli \u03ba\u03b1\u03b9 \u03bc\u03b5\u03c4\u03b1\u03b2\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03b9\u03c2 \u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03ba\u03b1\u03b9 \u03bc\u03b5\u03c4\u03ac \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03c0\u03b1\u03c6\u03ae \u0399\u03c3\u03c4\u03bf\u03cd. \u03a4\u03bf \u03ba\u03bb\u03b5\u03b9\u03b4\u03af API \u03b8\u03b1 \u03b2\u03c1\u03af\u03c3\u03ba\u03b5\u03c4\u03b1\u03b9 \u03c3\u03c4\u03bf \u03ba\u03ac\u03c4\u03c9 \u03bc\u03ad\u03c1\u03bf\u03c2 \u03b1\u03c5\u03c4\u03ae\u03c2 \u03c4\u03b7\u03c2 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1\u03c2. \n\n \u03a0\u03b1\u03c1\u03ac\u03b4\u03b5\u03b9\u03b3\u03bc\u03b1 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7\u03c2 URL: ```http://192.168.0.10:8181``` \u03bc\u03b5 \u03c4\u03bf 8181 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b7 \u03c0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03b7 \u03b8\u03cd\u03c1\u03b1." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tautulli/translations/en.json b/homeassistant/components/tautulli/translations/en.json index 90ce8c7bbfc..c24497cfbd9 100644 --- a/homeassistant/components/tautulli/translations/en.json +++ b/homeassistant/components/tautulli/translations/en.json @@ -1,31 +1,30 @@ { - "config": { - "step": { - "user": { - "description": "To find your API key, open the Tautulli webpage and navigate to Settings and then to Web interface. The API key will be at the bottom of that page.\n\nExample of the URL: ```http://192.168.0.10:8181``` with 8181 being the default port.", - "data": { - "api_key": "Api Key", - "url": "URL", - "verify_ssl": "Verify SSL certificate" + "config": { + "abort": { + "reauth_successful": "Re-authentication was successful", + "single_instance_allowed": "Already configured. Only a single configuration possible." + }, + "error": { + "cannot_connect": "Failed to connect", + "invalid_auth": "Invalid authentication", + "unknown": "Unexpected error" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API Key" + }, + "description": "To find your API key, open the Tautulli webpage and navigate to Settings and then to Web interface. The API key will be at the bottom of that page.", + "title": "Re-authenticate Tautulli" + }, + "user": { + "data": { + "api_key": "API Key", + "url": "URL", + "verify_ssl": "Verify SSL certificate" + }, + "description": "To find your API key, open the Tautulli webpage and navigate to Settings and then to Web interface. The API key will be at the bottom of that page.\n\nExample of the URL: ```http://192.168.0.10:8181``` with 8181 being the default port." + } } - }, - "reauth_confirm": { - "title": "Re-authenticate Tautulli", - "description": "To find your API key, open the Tautulli webpage and navigate to Settings and then to Web interface. The API key will be at the bottom of that page.", - "data": { - "api_key": "Api Key" - } - } - }, - "error": { - "cannot_connect": "Failed to connect", - "invalid_auth": "Invalid authentication", - "unknown": "Unexpected error" - }, - "abort": { - "single_instance_allowed": "Already configured. Only a single configuration possible.", - "reauth_successful": "Re-authentication was successful" } - } -} - \ No newline at end of file +} \ No newline at end of file diff --git a/homeassistant/components/tautulli/translations/et.json b/homeassistant/components/tautulli/translations/et.json new file mode 100644 index 00000000000..bc690db7a28 --- /dev/null +++ b/homeassistant/components/tautulli/translations/et.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "reauth_successful": "Taastuvastamine \u00f5nnestus", + "single_instance_allowed": "Juba seadistatud. V\u00f5imalik on ainult \u00fcks seadistamine." + }, + "error": { + "cannot_connect": "\u00dchendamine nurjus", + "invalid_auth": "Tuvastamine nurjus", + "unknown": "Ootamatu t\u00f5rge" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API v\u00f5ti" + }, + "description": "API-v\u00f5tme leidmiseks ava Tautulli veebileht ja navigeeri jaotisse Seaded ja seej\u00e4rel veebiliidesesse. API v\u00f5ti asub selle lehe allosas.", + "title": "Taastuvasta Tautulli" + }, + "user": { + "data": { + "api_key": "API v\u00f5ti", + "url": "URL", + "verify_ssl": "Kontrolli SSL sertifikaati" + }, + "description": "API-v\u00f5tme leidmiseks ava Tautulli veebileht ja navigeeri jaotisse Seaded ja seej\u00e4rel veebiliidesesse. API v\u00f5ti asub selle lehe allosas. \n\n URL-i n\u00e4ide: ```http://192.168.0.10:8181```, vaikeportiks on 8181." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tautulli/translations/fr.json b/homeassistant/components/tautulli/translations/fr.json new file mode 100644 index 00000000000..05b66af0972 --- /dev/null +++ b/homeassistant/components/tautulli/translations/fr.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "reauth_successful": "La r\u00e9-authentification a r\u00e9ussi", + "single_instance_allowed": "D\u00e9j\u00e0 configur\u00e9. Une seule configuration possible." + }, + "error": { + "cannot_connect": "\u00c9chec de connexion", + "invalid_auth": "Authentification non valide", + "unknown": "Erreur inattendue" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "Cl\u00e9 d'API" + }, + "description": "Pour trouver votre cl\u00e9 d'API, ouvrez la page web de Tautulli et acc\u00e9dez aux param\u00e8tres puis \u00e0 l'interface web. La cl\u00e9 d'API se trouve au bas de cette page.", + "title": "R\u00e9-authentifier Tautulli" + }, + "user": { + "data": { + "api_key": "Cl\u00e9 d'API", + "url": "URL", + "verify_ssl": "V\u00e9rifier le certificat SSL" + }, + "description": "Pour trouver votre cl\u00e9 d'API, ouvrez la page web de Tautulli et acc\u00e9dez aux param\u00e8tres puis \u00e0 l'interface web. La cl\u00e9 d'API se trouve au bas de cette page.\n\nExemple d'URL\u00a0: ```http://192.168.0.10:8181``` o\u00f9 8181 est le port par d\u00e9faut." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tautulli/translations/hu.json b/homeassistant/components/tautulli/translations/hu.json new file mode 100644 index 00000000000..b654081ecd1 --- /dev/null +++ b/homeassistant/components/tautulli/translations/hu.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "reauth_successful": "Az \u00fajrahiteles\u00edt\u00e9s sikeres volt.", + "single_instance_allowed": "M\u00e1r konfigur\u00e1lva van. Csak egy konfigur\u00e1ci\u00f3 lehets\u00e9ges." + }, + "error": { + "cannot_connect": "Sikertelen csatlakoz\u00e1s", + "invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s", + "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API kulcs" + }, + "description": "Az API-kulcs megkeres\u00e9s\u00e9hez nyissa meg a Tautulli weblapot, \u00e9s keresse meg a Be\u00e1ll\u00edt\u00e1sok, majd a webes fel\u00fcletet. Az API-kulcs az oldal alj\u00e1n lesz.", + "title": "Tautulli \u00fajrahiteles\u00edt\u00e9se" + }, + "user": { + "data": { + "api_key": "API kulcs", + "url": "URL", + "verify_ssl": "SSL-tan\u00fas\u00edtv\u00e1ny ellen\u0151rz\u00e9se" + }, + "description": "Az API-kulcs megtal\u00e1l\u00e1s\u00e1hoz nyissa meg a Tautulli weboldalt, \u00e9s navig\u00e1ljon a Be\u00e1ll\u00edt\u00e1sok, majd a Webes fel\u00fcletre. Az API-kulcs az oldal alj\u00e1n tal\u00e1lhat\u00f3. \n\nP\u00e9lda az URL-re: ```http://192.168.0.10:8181```, ahol a 8181 az alap\u00e9rtelmezett port." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tautulli/translations/id.json b/homeassistant/components/tautulli/translations/id.json new file mode 100644 index 00000000000..c2042dacffa --- /dev/null +++ b/homeassistant/components/tautulli/translations/id.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "reauth_successful": "Autentikasi ulang berhasil", + "single_instance_allowed": "Sudah dikonfigurasi. Hanya satu konfigurasi yang diizinkan." + }, + "error": { + "cannot_connect": "Gagal terhubung", + "invalid_auth": "Autentikasi tidak valid", + "unknown": "Kesalahan yang tidak diharapkan" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "Kunci API" + }, + "description": "Untuk menemukan kunci API Anda, buka halaman web Tautulli dan navigasikan ke Pengaturan lalu ke antarmuka Web. Kunci API akan berada di bagian bawah halaman tersebut.", + "title": "Autentikasi Ulang Tautulli" + }, + "user": { + "data": { + "api_key": "Kunci API", + "url": "URL", + "verify_ssl": "Verifikasi sertifikat SSL" + }, + "description": "Untuk menemukan kunci API Anda, buka halaman web Tautulli dan navigasikan ke Pengaturan lalu ke antarmuka Web. Kunci API akan berada di bagian bawah halaman tersebut.\n\nContoh URL: ```http://192.168.0.10:8181``` dengan 8181 sebagai port default." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tautulli/translations/it.json b/homeassistant/components/tautulli/translations/it.json new file mode 100644 index 00000000000..7dcfb1dd057 --- /dev/null +++ b/homeassistant/components/tautulli/translations/it.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "reauth_successful": "La nuova autenticazione \u00e8 stata eseguita correttamente", + "single_instance_allowed": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione." + }, + "error": { + "cannot_connect": "Impossibile connettersi", + "invalid_auth": "Autenticazione non valida", + "unknown": "Errore imprevisto" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "Chiave API" + }, + "description": "Per trovare la tua chiave API, apri la pagina web di Tautulli e vai su Impostazioni e poi su Interfaccia web. La chiave API sar\u00e0 in fondo a quella pagina.", + "title": "Autentica nuovamente Tautulli" + }, + "user": { + "data": { + "api_key": "Chiave API", + "url": "URL", + "verify_ssl": "Verifica il certificato SSL" + }, + "description": "Per trovare la tua chiave API, apri la pagina web di Tautulli e vai su Impostazioni e poi su Interfaccia web. La chiave API sar\u00e0 in fondo a quella pagina. \n\n Esempio dell'URL: ```http://192.168.0.10:8181``` con 8181 come porta predefinita." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tautulli/translations/nl.json b/homeassistant/components/tautulli/translations/nl.json new file mode 100644 index 00000000000..eeecbd56477 --- /dev/null +++ b/homeassistant/components/tautulli/translations/nl.json @@ -0,0 +1,28 @@ +{ + "config": { + "abort": { + "reauth_successful": "Herauthenticatie was succesvol", + "single_instance_allowed": "Al geconfigureerd. Slechts een enkele configuratie mogelijk." + }, + "error": { + "cannot_connect": "Kan geen verbinding maken", + "invalid_auth": "Ongeldige authenticatie", + "unknown": "Onverwachte fout" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API-sleutel" + }, + "title": "Herauthenticeer Tautulli" + }, + "user": { + "data": { + "api_key": "API-sleutel", + "url": "URL", + "verify_ssl": "SSL-certificaat verifi\u00ebren" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tautulli/translations/no.json b/homeassistant/components/tautulli/translations/no.json new file mode 100644 index 00000000000..cd6667b26fe --- /dev/null +++ b/homeassistant/components/tautulli/translations/no.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "reauth_successful": "Godkjenning p\u00e5 nytt var vellykket", + "single_instance_allowed": "Allerede konfigurert. Bare \u00e9n enkelt konfigurasjon er mulig." + }, + "error": { + "cannot_connect": "Tilkobling mislyktes", + "invalid_auth": "Ugyldig godkjenning", + "unknown": "Uventet feil" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API-n\u00f8kkel" + }, + "description": "For \u00e5 finne API-n\u00f8kkelen din, \u00e5pne Tautulli-nettsiden og naviger til Innstillinger og deretter til nettgrensesnitt. API-n\u00f8kkelen vil v\u00e6re nederst p\u00e5 siden.", + "title": "Autentiser Tautulli p\u00e5 nytt" + }, + "user": { + "data": { + "api_key": "API-n\u00f8kkel", + "url": "URL", + "verify_ssl": "Verifisere SSL-sertifikat" + }, + "description": "For \u00e5 finne API-n\u00f8kkelen din, \u00e5pne Tautulli-nettsiden og naviger til Innstillinger og deretter til nettgrensesnitt. API-n\u00f8kkelen vil v\u00e6re nederst p\u00e5 siden. \n\n Eksempel p\u00e5 URL: ```http://192.168.0.10:8181``` med 8181 som standardport." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tautulli/translations/pl.json b/homeassistant/components/tautulli/translations/pl.json new file mode 100644 index 00000000000..25684ac6b3c --- /dev/null +++ b/homeassistant/components/tautulli/translations/pl.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "reauth_successful": "Ponowne uwierzytelnienie powiod\u0142o si\u0119", + "single_instance_allowed": "Ju\u017c skonfigurowano. Mo\u017cliwa jest tylko jedna konfiguracja." + }, + "error": { + "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", + "invalid_auth": "Niepoprawne uwierzytelnienie", + "unknown": "Nieoczekiwany b\u0142\u0105d" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "Klucz API" + }, + "description": "Aby znale\u017a\u0107 klucz API, otw\u00f3rz stron\u0119 Tautulli i przejd\u017a do \"Settings\", a nast\u0119pnie do \"Web interface\". Klucz API b\u0119dzie znajdowa\u0107 si\u0119 na dole tej strony.", + "title": "Ponowne uwierzytelnienie Tautulli" + }, + "user": { + "data": { + "api_key": "Klucz API", + "url": "URL", + "verify_ssl": "Weryfikacja certyfikatu SSL" + }, + "description": "Aby znale\u017a\u0107 klucz API, otw\u00f3rz stron\u0119 Tautulli i przejd\u017a do \"Settings\", a nast\u0119pnie do \"Web interface\". Klucz API b\u0119dzie znajdowa\u0107 si\u0119 na dole tej strony. \n\nPrzyk\u0142ad adresu URL: \"http://192.168.0.10:8181\" z portem domy\u015blnym 8181." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tautulli/translations/pt-BR.json b/homeassistant/components/tautulli/translations/pt-BR.json new file mode 100644 index 00000000000..45c5b508f96 --- /dev/null +++ b/homeassistant/components/tautulli/translations/pt-BR.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "reauth_successful": "A reautentica\u00e7\u00e3o foi bem-sucedida", + "single_instance_allowed": "J\u00e1 configurado. Apenas uma configura\u00e7\u00e3o \u00e9 poss\u00edvel." + }, + "error": { + "cannot_connect": "Falha ao conectar", + "invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida", + "unknown": "Erro inesperado" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "Chave da API" + }, + "description": "Para encontrar sua chave de API, abra a p\u00e1gina da Web do Tautulli e navegue at\u00e9 Configura\u00e7\u00f5es e, em seguida, para a interface da Web. A chave da API estar\u00e1 na parte inferior dessa p\u00e1gina.", + "title": "Re-autenticar Tautulli" + }, + "user": { + "data": { + "api_key": "Chave da API", + "url": "URL", + "verify_ssl": "Verifique o certificado SSL" + }, + "description": "Para encontrar sua chave de API, abra a p\u00e1gina da Web do Tautulli e navegue at\u00e9 Configura\u00e7\u00f5es e, em seguida, para a interface da Web. A chave da API estar\u00e1 na parte inferior dessa p\u00e1gina. \n\n Exemplo da URL: ```http://192.168.0.10:8181``` com 8181 sendo a porta padr\u00e3o." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tautulli/translations/ru.json b/homeassistant/components/tautulli/translations/ru.json new file mode 100644 index 00000000000..fc5e6584157 --- /dev/null +++ b/homeassistant/components/tautulli/translations/ru.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e.", + "single_instance_allowed": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e." + }, + "error": { + "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", + "invalid_auth": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.", + "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "\u041a\u043b\u044e\u0447 API" + }, + "description": "\u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u043a\u043b\u044e\u0447 API, \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 Tautulli \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u00ab\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u00bb, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432 \u00ab\u0412\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u00bb. \u041a\u043b\u044e\u0447 API \u0431\u0443\u0434\u0435\u0442 \u0432\u043d\u0438\u0437\u0443 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.", + "title": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0444\u0438\u043b\u044f" + }, + "user": { + "data": { + "api_key": "\u041a\u043b\u044e\u0447 API", + "url": "URL-\u0430\u0434\u0440\u0435\u0441", + "verify_ssl": "\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 SSL" + }, + "description": "\u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u0441\u0432\u043e\u0439 \u043a\u043b\u044e\u0447 API, \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 Tautulli \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u00ab\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u00bb, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432 \u00ab\u0412\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u00bb. \u041a\u043b\u044e\u0447 API \u0431\u0443\u0434\u0435\u0442 \u0432\u043d\u0438\u0437\u0443 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \n\n\u041f\u0440\u0438\u043c\u0435\u0440 URL-\u0430\u0434\u0440\u0435\u0441\u0430: ```http://192.168.0.10:8181```, \u0433\u0434\u0435 8181 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0440\u0442\u043e\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tautulli/translations/zh-Hant.json b/homeassistant/components/tautulli/translations/zh-Hant.json new file mode 100644 index 00000000000..aed9ce361ee --- /dev/null +++ b/homeassistant/components/tautulli/translations/zh-Hant.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "reauth_successful": "\u91cd\u65b0\u8a8d\u8b49\u6210\u529f", + "single_instance_allowed": "\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210\u3001\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u88dd\u7f6e\u3002" + }, + "error": { + "cannot_connect": "\u9023\u7dda\u5931\u6557", + "invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548", + "unknown": "\u672a\u9810\u671f\u932f\u8aa4" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API \u91d1\u9470" + }, + "description": "\u8981\u53d6\u5f97 API \u91d1\u9470\uff0c\u958b\u555f Tautulli \u7db2\u9801\u3001\u4e26\u700f\u89bd\u8a2d\u5b9a\u4e2d\u7684\u7db2\u7ad9\u4ecb\u9762\uff08Web interface\uff09\u3002\u53ef\u4ee5\u65bc\u9801\u9762\u4e0b\u65b9\u627e\u5230 API \u91d1\u9470\u3002", + "title": "\u91cd\u65b0\u8a8d\u8b49 Tautulli" + }, + "user": { + "data": { + "api_key": "API \u91d1\u9470", + "url": "\u7db2\u5740", + "verify_ssl": "\u78ba\u8a8d SSL \u8a8d\u8b49" + }, + "description": "\u8981\u53d6\u5f97 API \u91d1\u9470\uff0c\u958b\u555f Tautulli \u7db2\u9801\u3001\u4e26\u700f\u89bd\u8a2d\u5b9a\u4e2d\u7684\u7db2\u7ad9\u4ecb\u9762\uff08Web interface\uff09\u3002\u53ef\u4ee5\u65bc\u9801\u9762\u4e0b\u65b9\u627e\u5230 API \u91d1\u9470\u3002\n\nURL \u7bc4\u4f8b\uff1a```http://192.168.0.10:8181``` \u4e26\u4ee5 8181 \u70ba\u9810\u8a2d\u901a\u8a0a\u57e0\u3002" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tellduslive/translations/hu.json b/homeassistant/components/tellduslive/translations/hu.json index a07259b67f9..2844415f630 100644 --- a/homeassistant/components/tellduslive/translations/hu.json +++ b/homeassistant/components/tellduslive/translations/hu.json @@ -11,7 +11,7 @@ }, "step": { "auth": { - "description": "A TelldusLive-fi\u00f3k \u00f6sszekapcsol\u00e1sa:\n 1. Kattintson az al\u00e1bbi linkre\n 2. Jelentkezzen be a Telldus Live szolg\u00e1ltat\u00e1sba\n 3. Enged\u00e9lyezzeie kell **{app_name}** (kattintson a ** Yes ** gombra).\n 4. J\u00f6jj\u00f6n vissza ide, \u00e9s kattintson a ** K\u00fcld\u00e9s ** gombra. \n\n [Link TelldusLive-fi\u00f3k]({auth_url})", + "description": "A TelldusLive-fi\u00f3k \u00f6sszekapcsol\u00e1sa:\n 1. Kattintson az al\u00e1bbi linkre\n 2. Jelentkezzen be a Telldus Live szolg\u00e1ltat\u00e1sba\n 3. Enged\u00e9lyezzeie kell **{app_name}** (kattintson a **Yes** gombra).\n 4. J\u00f6jj\u00f6n vissza ide, \u00e9s kattintson a **Mehet** gombra. \n\n [Link TelldusLive-fi\u00f3k]({auth_url})", "title": "Hiteles\u00edtsen a TelldusLive-on" }, "user": { diff --git a/homeassistant/components/tesla_wall_connector/translations/ca.json b/homeassistant/components/tesla_wall_connector/translations/ca.json index 7f0056f3413..ff92037845f 100644 --- a/homeassistant/components/tesla_wall_connector/translations/ca.json +++ b/homeassistant/components/tesla_wall_connector/translations/ca.json @@ -16,15 +16,5 @@ "title": "Configuraci\u00f3 de Tesla Wall Connector" } } - }, - "options": { - "step": { - "init": { - "data": { - "scan_interval": "Freq\u00fc\u00e8ncia d'actualitzaci\u00f3" - }, - "title": "Configuraci\u00f3 d'opcions de Tesla Wall Connector" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/tesla_wall_connector/translations/de.json b/homeassistant/components/tesla_wall_connector/translations/de.json index 3500fc1aa7b..3fac77da9b1 100644 --- a/homeassistant/components/tesla_wall_connector/translations/de.json +++ b/homeassistant/components/tesla_wall_connector/translations/de.json @@ -16,15 +16,5 @@ "title": "Tesla Wall Connector konfigurieren" } } - }, - "options": { - "step": { - "init": { - "data": { - "scan_interval": "Aktualisierungsfrequenz" - }, - "title": "Optionen f\u00fcr Tesla Wall Connector konfigurieren" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/tesla_wall_connector/translations/el.json b/homeassistant/components/tesla_wall_connector/translations/el.json index 3a835ab5d57..c007cd83f2a 100644 --- a/homeassistant/components/tesla_wall_connector/translations/el.json +++ b/homeassistant/components/tesla_wall_connector/translations/el.json @@ -16,15 +16,5 @@ "title": "\u0394\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5 Tesla Wall Connector" } } - }, - "options": { - "step": { - "init": { - "data": { - "scan_interval": "\u03a3\u03c5\u03c7\u03bd\u03cc\u03c4\u03b7\u03c4\u03b1 \u03b5\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7\u03c2" - }, - "title": "\u0394\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ce\u03bd \u03b3\u03b9\u03b1 \u03c4\u03bf Tesla Wall Connector" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/tesla_wall_connector/translations/en.json b/homeassistant/components/tesla_wall_connector/translations/en.json index 79a3005299f..436cc06ffb4 100644 --- a/homeassistant/components/tesla_wall_connector/translations/en.json +++ b/homeassistant/components/tesla_wall_connector/translations/en.json @@ -16,15 +16,5 @@ "title": "Configure Tesla Wall Connector" } } - }, - "options": { - "step": { - "init": { - "data": { - "scan_interval": "Update frequency" - }, - "title": "Configure options for Tesla Wall Connector" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/tesla_wall_connector/translations/es.json b/homeassistant/components/tesla_wall_connector/translations/es.json index 0e531ec1c01..34cdf425528 100644 --- a/homeassistant/components/tesla_wall_connector/translations/es.json +++ b/homeassistant/components/tesla_wall_connector/translations/es.json @@ -16,15 +16,5 @@ "title": "Configurar el conector de pared Tesla" } } - }, - "options": { - "step": { - "init": { - "data": { - "scan_interval": "Frecuencia de actualizaci\u00f3n" - }, - "title": "Configurar las opciones del conector de pared Tesla" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/tesla_wall_connector/translations/et.json b/homeassistant/components/tesla_wall_connector/translations/et.json index a13b447d542..877e80759e6 100644 --- a/homeassistant/components/tesla_wall_connector/translations/et.json +++ b/homeassistant/components/tesla_wall_connector/translations/et.json @@ -16,15 +16,5 @@ "title": "Tesla Wall Connector'i seadistamine" } } - }, - "options": { - "step": { - "init": { - "data": { - "scan_interval": "V\u00e4rskendussagedus" - }, - "title": "Tesla Wall Connector'i seadistamise valikud" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/tesla_wall_connector/translations/fr.json b/homeassistant/components/tesla_wall_connector/translations/fr.json index 6cf4aacf7d3..679b5f4b489 100644 --- a/homeassistant/components/tesla_wall_connector/translations/fr.json +++ b/homeassistant/components/tesla_wall_connector/translations/fr.json @@ -16,15 +16,5 @@ "title": "Configurer le connecteur mural Tesla" } } - }, - "options": { - "step": { - "init": { - "data": { - "scan_interval": "Fr\u00e9quence de mise \u00e0 jour" - }, - "title": "Configurer les options pour le connecteur mural Tesla" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/tesla_wall_connector/translations/hu.json b/homeassistant/components/tesla_wall_connector/translations/hu.json index 951d4de5a86..ef490721c43 100644 --- a/homeassistant/components/tesla_wall_connector/translations/hu.json +++ b/homeassistant/components/tesla_wall_connector/translations/hu.json @@ -16,15 +16,5 @@ "title": "Tesla Wall Connector konfigur\u00e1l\u00e1sa" } } - }, - "options": { - "step": { - "init": { - "data": { - "scan_interval": "Friss\u00edt\u00e9si gyakoris\u00e1g" - }, - "title": "Tesla Wall Connector konfigur\u00e1l\u00e1sa" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/tesla_wall_connector/translations/id.json b/homeassistant/components/tesla_wall_connector/translations/id.json index 6214e3d153f..3ff19213a6c 100644 --- a/homeassistant/components/tesla_wall_connector/translations/id.json +++ b/homeassistant/components/tesla_wall_connector/translations/id.json @@ -16,15 +16,5 @@ "title": "Konfigurasikan Konektor Dinding Tesla" } } - }, - "options": { - "step": { - "init": { - "data": { - "scan_interval": "Frekuensi pembaruan" - }, - "title": "Konfigurasikan opsi untuk Konektor Dinding Tesla" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/tesla_wall_connector/translations/it.json b/homeassistant/components/tesla_wall_connector/translations/it.json index 5f79a0ee9e0..c67ff4c8cd0 100644 --- a/homeassistant/components/tesla_wall_connector/translations/it.json +++ b/homeassistant/components/tesla_wall_connector/translations/it.json @@ -16,15 +16,5 @@ "title": "Configura Tesla Wall Connector" } } - }, - "options": { - "step": { - "init": { - "data": { - "scan_interval": "Frequenza di aggiornamento" - }, - "title": "Configura le opzioni per Tesla Wall Connector" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/tesla_wall_connector/translations/ja.json b/homeassistant/components/tesla_wall_connector/translations/ja.json index 5370b0b161a..2eb8c3e695b 100644 --- a/homeassistant/components/tesla_wall_connector/translations/ja.json +++ b/homeassistant/components/tesla_wall_connector/translations/ja.json @@ -16,15 +16,5 @@ "title": "Tesla Wall Connector\u306e\u8a2d\u5b9a" } } - }, - "options": { - "step": { - "init": { - "data": { - "scan_interval": "\u66f4\u65b0\u983b\u5ea6" - }, - "title": "Tesla Wall Connector\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/tesla_wall_connector/translations/nl.json b/homeassistant/components/tesla_wall_connector/translations/nl.json index b6182cdcf5a..f766433231b 100644 --- a/homeassistant/components/tesla_wall_connector/translations/nl.json +++ b/homeassistant/components/tesla_wall_connector/translations/nl.json @@ -16,15 +16,5 @@ "title": "Configureer Tesla Wall Connector" } } - }, - "options": { - "step": { - "init": { - "data": { - "scan_interval": "Update frequentie" - }, - "title": "Configureer opties voor Tesla Wall Connector" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/tesla_wall_connector/translations/no.json b/homeassistant/components/tesla_wall_connector/translations/no.json index ed6b4c30cfd..7c5c10de679 100644 --- a/homeassistant/components/tesla_wall_connector/translations/no.json +++ b/homeassistant/components/tesla_wall_connector/translations/no.json @@ -16,15 +16,5 @@ "title": "Konfigurer Tesla Wall Connector" } } - }, - "options": { - "step": { - "init": { - "data": { - "scan_interval": "Oppdateringsfrekvens" - }, - "title": "Konfigurer alternativer for Tesla Wall Connector" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/tesla_wall_connector/translations/pl.json b/homeassistant/components/tesla_wall_connector/translations/pl.json index 6ee749485ee..59ff982a024 100644 --- a/homeassistant/components/tesla_wall_connector/translations/pl.json +++ b/homeassistant/components/tesla_wall_connector/translations/pl.json @@ -16,15 +16,5 @@ "title": "Konfiguracja z\u0142\u0105cza \u015bciennego Tesla" } } - }, - "options": { - "step": { - "init": { - "data": { - "scan_interval": "Cz\u0119stotliwo\u015b\u0107 aktualizacji" - }, - "title": "Konfiguracja opcji dla z\u0142\u0105cza \u015bciennego Tesla" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/tesla_wall_connector/translations/pt-BR.json b/homeassistant/components/tesla_wall_connector/translations/pt-BR.json index da2c9d50f34..8b38c7654e3 100644 --- a/homeassistant/components/tesla_wall_connector/translations/pt-BR.json +++ b/homeassistant/components/tesla_wall_connector/translations/pt-BR.json @@ -16,15 +16,5 @@ "title": "Configurar o conector de parede Tesla" } } - }, - "options": { - "step": { - "init": { - "data": { - "scan_interval": "Frequ\u00eancia de atualiza\u00e7\u00e3o" - }, - "title": "Configurar op\u00e7\u00f5es para o Tesla Wall Connector" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/tesla_wall_connector/translations/ru.json b/homeassistant/components/tesla_wall_connector/translations/ru.json index 0fc1ef88790..7af1aa27a6b 100644 --- a/homeassistant/components/tesla_wall_connector/translations/ru.json +++ b/homeassistant/components/tesla_wall_connector/translations/ru.json @@ -16,15 +16,5 @@ "title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Tesla Wall Connector" } } - }, - "options": { - "step": { - "init": { - "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\u0430 Tesla Wall Connector" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/tesla_wall_connector/translations/tr.json b/homeassistant/components/tesla_wall_connector/translations/tr.json index b409c4ddc33..89d926e7eab 100644 --- a/homeassistant/components/tesla_wall_connector/translations/tr.json +++ b/homeassistant/components/tesla_wall_connector/translations/tr.json @@ -16,15 +16,5 @@ "title": "Tesla Duvar Ba\u011flant\u0131s\u0131n\u0131 Yap\u0131land\u0131r\u0131n" } } - }, - "options": { - "step": { - "init": { - "data": { - "scan_interval": "G\u00fcncelleme s\u0131kl\u0131\u011f\u0131" - }, - "title": "Tesla Duvar Konekt\u00f6r\u00fc i\u00e7in se\u00e7enekleri yap\u0131land\u0131r\u0131n" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/tesla_wall_connector/translations/zh-Hans.json b/homeassistant/components/tesla_wall_connector/translations/zh-Hans.json index 21ee02edbf0..22533320802 100644 --- a/homeassistant/components/tesla_wall_connector/translations/zh-Hans.json +++ b/homeassistant/components/tesla_wall_connector/translations/zh-Hans.json @@ -16,15 +16,5 @@ "title": "\u914d\u7f6e Tesla \u58c1\u6302\u5f0f\u5145\u7535\u8fde\u63a5\u5668" } } - }, - "options": { - "step": { - "init": { - "data": { - "scan_interval": "\u66f4\u65b0\u9891\u7387" - }, - "title": "Tesla \u58c1\u6302\u5f0f\u5145\u7535\u8fde\u63a5\u5668\u914d\u7f6e\u9009\u9879" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/tesla_wall_connector/translations/zh-Hant.json b/homeassistant/components/tesla_wall_connector/translations/zh-Hant.json index 69de7dd2eb3..7e1a967689c 100644 --- a/homeassistant/components/tesla_wall_connector/translations/zh-Hant.json +++ b/homeassistant/components/tesla_wall_connector/translations/zh-Hant.json @@ -16,15 +16,5 @@ "title": "\u8a2d\u5b9a\u7279\u65af\u62c9\u58c1\u639b\u5f0f\u5145\u96fb\u5ea7" } } - }, - "options": { - "step": { - "init": { - "data": { - "scan_interval": "\u66f4\u65b0\u983b\u7387" - }, - "title": "\u7279\u65af\u62c9\u58c1\u639b\u5f0f\u5145\u96fb\u5ea7\u8a2d\u5b9a\u9078\u9805" - } - } } } \ No newline at end of file diff --git a/homeassistant/components/threshold/translations/bg.json b/homeassistant/components/threshold/translations/bg.json new file mode 100644 index 00000000000..05bbb89437a --- /dev/null +++ b/homeassistant/components/threshold/translations/bg.json @@ -0,0 +1,22 @@ +{ + "config": { + "step": { + "user": { + "data": { + "hysteresis": "\u0425\u0438\u0441\u0442\u0435\u0440\u0435\u0437\u0438\u0441", + "name": "\u0418\u043c\u0435" + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "hysteresis": "\u0425\u0438\u0441\u0442\u0435\u0440\u0435\u0437\u0438\u0441", + "name": "\u0418\u043c\u0435" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/threshold/translations/ca.json b/homeassistant/components/threshold/translations/ca.json new file mode 100644 index 00000000000..b33bd8a04ed --- /dev/null +++ b/homeassistant/components/threshold/translations/ca.json @@ -0,0 +1,40 @@ +{ + "config": { + "error": { + "need_lower_upper": "Els l\u00edmits inferior i superior no poden estar tots dos buits" + }, + "step": { + "user": { + "data": { + "entity_id": "Sensor d'entrada", + "hysteresis": "Hist\u00e8resi", + "lower": "L\u00edmit inferior", + "mode": "Mode llindar", + "name": "Nom", + "upper": "L\u00edmit superior" + }, + "description": "Crea un sensor binari que s'activa o es desactiva en funci\u00f3 del valor d'un sensor\n\nNom\u00e9s amb l\u00edmit inferior configurat - S'activa quan el valor del sensor d'entrada est\u00e0 per sota del l\u00edmit.\nNom\u00e9s amb l\u00edmit superior configurat - S'activa quan el valor del sensor d'entrada est\u00e0 per sobre del l\u00edmit.\nAmbd\u00f3s l\u00edmits configurats - S'activa quan el valor del sensor d'entrada est\u00e0 dins l'interval entre els l\u00edmits [inferior .. superior].", + "title": "Afegeix sensor de llindar" + } + } + }, + "options": { + "error": { + "need_lower_upper": "Els l\u00edmits inferior i superior no poden estar tots dos buits" + }, + "step": { + "init": { + "data": { + "entity_id": "Sensor d'entrada", + "hysteresis": "Hist\u00e8resi", + "lower": "L\u00edmit inferior", + "mode": "Mode llindar", + "name": "Nom", + "upper": "L\u00edmit superior" + }, + "description": "Nom\u00e9s amb l\u00edmit inferior configurat - S'activa quan el valor del sensor d'entrada est\u00e0 per sota del l\u00edmit.\nNom\u00e9s amb l\u00edmit superior configurat - S'activa quan el valor del sensor d'entrada est\u00e0 per sobre del l\u00edmit.\nAmbd\u00f3s l\u00edmits configurats - S'activa quan el valor del sensor d'entrada est\u00e0 dins l'interval entre els l\u00edmits [inferior .. superior]." + } + } + }, + "title": "Sensor de llindar" +} \ No newline at end of file diff --git a/homeassistant/components/threshold/translations/de.json b/homeassistant/components/threshold/translations/de.json new file mode 100644 index 00000000000..579dd4f49b0 --- /dev/null +++ b/homeassistant/components/threshold/translations/de.json @@ -0,0 +1,40 @@ +{ + "config": { + "error": { + "need_lower_upper": "Untere und obere Grenze k\u00f6nnen nicht beide leer sein" + }, + "step": { + "user": { + "data": { + "entity_id": "Eingangssensor", + "hysteresis": "Hysterese", + "lower": "Untere Grenze", + "mode": "Schwellenwertmodus", + "name": "Name", + "upper": "Obergrenze" + }, + "description": "Erstellen eines bin\u00e4ren Sensors, der sich je nach Wert eines Sensors ein- und ausschaltet\n\nNur unterer Grenzwert konfiguriert - Einschalten, wenn der Wert des Eingangssensors kleiner als der untere Grenzwert ist.\nNur oberer Grenzwert konfiguriert - Einschalten, wenn der Wert des Eingangssensors gr\u00f6\u00dfer als der obere Grenzwert ist.\nSowohl untere als auch obere Grenze konfiguriert - Einschalten, wenn der Wert des Eingangssensors im Bereich [untere Grenze ... obere Grenze] liegt.", + "title": "Schwellenwertsensor hinzuf\u00fcgen" + } + } + }, + "options": { + "error": { + "need_lower_upper": "Untere und obere Grenze k\u00f6nnen nicht beide leer sein" + }, + "step": { + "init": { + "data": { + "entity_id": "Eingangssensor", + "hysteresis": "Hysterese", + "lower": "Untere Grenze", + "mode": "Schwellenwertmodus", + "name": "Name", + "upper": "Obergrenze" + }, + "description": "Nur unterer Grenzwert konfiguriert - Einschalten, wenn der Wert des Eingangssensors kleiner als der untere Grenzwert ist.\nNur oberer Grenzwert konfiguriert - Einschalten, wenn der Wert des Eingangssensors gr\u00f6\u00dfer als der obere Grenzwert ist.\nSowohl unterer als auch oberer Grenzwert konfiguriert - Einschalten, wenn der Wert des Eingangssensors im Bereich [unterer Grenzwert ... oberer Grenzwert] liegt." + } + } + }, + "title": "Schwellenwertsensor" +} \ No newline at end of file diff --git a/homeassistant/components/threshold/translations/el.json b/homeassistant/components/threshold/translations/el.json new file mode 100644 index 00000000000..2ad5f25e5f8 --- /dev/null +++ b/homeassistant/components/threshold/translations/el.json @@ -0,0 +1,40 @@ +{ + "config": { + "error": { + "need_lower_upper": "\u03a4\u03b1 \u03ba\u03ac\u03c4\u03c9 \u03ba\u03b1\u03b9 \u03ac\u03bd\u03c9 \u03cc\u03c1\u03b9\u03b1 \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03bf\u03cd\u03bd \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03ba\u03b1\u03b9 \u03c4\u03b1 \u03b4\u03cd\u03bf \u03ba\u03b5\u03bd\u03ac" + }, + "step": { + "user": { + "data": { + "entity_id": "\u0391\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5", + "hysteresis": "\u03a5\u03c3\u03c4\u03ad\u03c1\u03b7\u03c3\u03b7", + "lower": "\u039a\u03ac\u03c4\u03c9 \u03cc\u03c1\u03b9\u03bf", + "mode": "\u039b\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03bf\u03c1\u03af\u03bf\u03c5", + "name": "\u038c\u03bd\u03bf\u03bc\u03b1", + "upper": "\u0386\u03bd\u03c9 \u03cc\u03c1\u03b9\u03bf" + }, + "description": "\u0394\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03ce\u03c3\u03c4\u03b5 \u03c0\u03cc\u03c4\u03b5 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03bf \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2. \n\n \u039c\u03cc\u03bd\u03bf \u03c4\u03bf \u03ba\u03b1\u03c4\u03ce\u03c4\u03b5\u03c1\u03bf \u03cc\u03c1\u03b9\u03bf \u03ad\u03c7\u03b5\u03b9 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af - \u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03cc\u03c4\u03b1\u03bd \u03b7 \u03c4\u03b9\u03bc\u03ae \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5 \u03b5\u03af\u03bd\u03b1\u03b9 \u03bc\u03b9\u03ba\u03c1\u03cc\u03c4\u03b5\u03c1\u03b7 \u03b1\u03c0\u03cc \u03c4\u03bf \u03ba\u03b1\u03c4\u03ce\u03c4\u03b5\u03c1\u03bf \u03cc\u03c1\u03b9\u03bf.\n \u039c\u03cc\u03bd\u03bf \u03c4\u03bf \u03b1\u03bd\u03ce\u03c4\u03b5\u03c1\u03bf \u03cc\u03c1\u03b9\u03bf \u03ad\u03c7\u03b5\u03b9 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03b8\u03b5\u03af - \u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03cc\u03c4\u03b1\u03bd \u03b7 \u03c4\u03b9\u03bc\u03ae \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5 \u03b5\u03af\u03bd\u03b1\u03b9 \u03bc\u03b5\u03b3\u03b1\u03bb\u03cd\u03c4\u03b5\u03c1\u03b7 \u03b1\u03c0\u03cc \u03c4\u03bf \u03b1\u03bd\u03ce\u03c4\u03b5\u03c1\u03bf \u03cc\u03c1\u03b9\u03bf.\n \u0394\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03ba\u03b1\u03c4\u03ce\u03c4\u03b5\u03c1\u03bf\u03c5 \u03ba\u03b1\u03b9 \u03ac\u03bd\u03c9 \u03bf\u03c1\u03af\u03bf\u03c5 - \u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03cc\u03c4\u03b1\u03bd \u03b7 \u03c4\u03b9\u03bc\u03ae \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c3\u03c4\u03bf \u03b5\u03cd\u03c1\u03bf\u03c2 [\u03ba\u03ac\u03c4\u03c9 \u03cc\u03c1\u03b9\u03bf .. \u03ac\u03bd\u03c9 \u03cc\u03c1\u03b9\u03bf].", + "title": "\u039d\u03ad\u03bf\u03c2 \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2 \u03bf\u03c1\u03af\u03bf\u03c5" + } + } + }, + "options": { + "error": { + "need_lower_upper": "\u03a4\u03b1 \u03ba\u03ac\u03c4\u03c9 \u03ba\u03b1\u03b9 \u03ac\u03bd\u03c9 \u03cc\u03c1\u03b9\u03b1 \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03bf\u03cd\u03bd \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03ba\u03b1\u03b9 \u03c4\u03b1 \u03b4\u03cd\u03bf \u03ba\u03b5\u03bd\u03ac" + }, + "step": { + "init": { + "data": { + "entity_id": "\u0391\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5", + "hysteresis": "\u03a5\u03c3\u03c4\u03ad\u03c1\u03b7\u03c3\u03b7", + "lower": "\u039a\u03ac\u03c4\u03c9 \u03cc\u03c1\u03b9\u03bf", + "mode": "\u039b\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03bf\u03c1\u03af\u03bf\u03c5", + "name": "\u038c\u03bd\u03bf\u03bc\u03b1", + "upper": "\u0386\u03bd\u03c9 \u03cc\u03c1\u03b9\u03bf" + }, + "description": "\u0394\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03ce\u03c3\u03c4\u03b5 \u03c0\u03cc\u03c4\u03b5 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03bf \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2. \n\n \u039c\u03cc\u03bd\u03bf \u03c4\u03bf \u03ba\u03b1\u03c4\u03ce\u03c4\u03b5\u03c1\u03bf \u03cc\u03c1\u03b9\u03bf \u03ad\u03c7\u03b5\u03b9 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af - \u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03cc\u03c4\u03b1\u03bd \u03b7 \u03c4\u03b9\u03bc\u03ae \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5 \u03b5\u03af\u03bd\u03b1\u03b9 \u03bc\u03b9\u03ba\u03c1\u03cc\u03c4\u03b5\u03c1\u03b7 \u03b1\u03c0\u03cc \u03c4\u03bf \u03ba\u03b1\u03c4\u03ce\u03c4\u03b5\u03c1\u03bf \u03cc\u03c1\u03b9\u03bf.\n \u039c\u03cc\u03bd\u03bf \u03c4\u03bf \u03b1\u03bd\u03ce\u03c4\u03b5\u03c1\u03bf \u03cc\u03c1\u03b9\u03bf \u03ad\u03c7\u03b5\u03b9 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03b8\u03b5\u03af - \u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03cc\u03c4\u03b1\u03bd \u03b7 \u03c4\u03b9\u03bc\u03ae \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5 \u03b5\u03af\u03bd\u03b1\u03b9 \u03bc\u03b5\u03b3\u03b1\u03bb\u03cd\u03c4\u03b5\u03c1\u03b7 \u03b1\u03c0\u03cc \u03c4\u03bf \u03b1\u03bd\u03ce\u03c4\u03b5\u03c1\u03bf \u03cc\u03c1\u03b9\u03bf.\n \u0394\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03ba\u03b1\u03c4\u03ce\u03c4\u03b5\u03c1\u03bf\u03c5 \u03ba\u03b1\u03b9 \u03ac\u03bd\u03c9 \u03bf\u03c1\u03af\u03bf\u03c5 - \u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03cc\u03c4\u03b1\u03bd \u03b7 \u03c4\u03b9\u03bc\u03ae \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c3\u03c4\u03bf \u03b5\u03cd\u03c1\u03bf\u03c2 [\u03ba\u03ac\u03c4\u03c9 \u03cc\u03c1\u03b9\u03bf .. \u03ac\u03bd\u03c9 \u03cc\u03c1\u03b9\u03bf]." + } + } + }, + "title": "\u0391\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2 \u03bf\u03c1\u03af\u03bf\u03c5" +} \ No newline at end of file diff --git a/homeassistant/components/threshold/translations/en.json b/homeassistant/components/threshold/translations/en.json index 461ca244353..66a2bb33ddb 100644 --- a/homeassistant/components/threshold/translations/en.json +++ b/homeassistant/components/threshold/translations/en.json @@ -9,6 +9,7 @@ "entity_id": "Input sensor", "hysteresis": "Hysteresis", "lower": "Lower limit", + "mode": "Threshold mode", "name": "Name", "upper": "Upper limit" }, @@ -27,6 +28,7 @@ "entity_id": "Input sensor", "hysteresis": "Hysteresis", "lower": "Lower limit", + "mode": "Threshold mode", "name": "Name", "upper": "Upper limit" }, diff --git a/homeassistant/components/threshold/translations/et.json b/homeassistant/components/threshold/translations/et.json new file mode 100644 index 00000000000..7a41c0bfc3f --- /dev/null +++ b/homeassistant/components/threshold/translations/et.json @@ -0,0 +1,40 @@ +{ + "config": { + "error": { + "need_lower_upper": "Alam- ja \u00fclempiir ei saa korraga puududa" + }, + "step": { + "user": { + "data": { + "entity_id": "Sisendandur", + "hysteresis": "H\u00fcsterees", + "lower": "Alampiir", + "mode": "L\u00e4vendi kasutamine", + "name": "Nimi", + "upper": "\u00dclempiir" + }, + "description": "Loo olekuandur mis l\u00fcltub sisse v\u00f5i v\u00e4lja vastavalt m\u00e4\u00e4ratud ajale.\n\nAinult alampiir - l\u00fclitu sisse kui anduri v\u00e4\u00e4rtus on alla almpiiri.\nAinult \u00fclempiir - l\u00fclitu sisse kui anduri v\u00e4\u00e4rtus on \u00fcle \u00fclempiiri.\nAlam- ja \u00fclempiir m\u00f5lemad m\u00e4\u00e4ratud - l\u00fclitu sisse kui anduri v\u00e4\u00e4rtus on vahemikus [alampiir .. \u00fclempiir]", + "title": "Lisa uus l\u00e4vendiandur" + } + } + }, + "options": { + "error": { + "need_lower_upper": "Alam- ja \u00fclempiir ei saa korraga puududa" + }, + "step": { + "init": { + "data": { + "entity_id": "Sisendandur", + "hysteresis": "H\u00fcsterees", + "lower": "Alampiir", + "mode": "L\u00e4vendi kasutamine", + "name": "Nimi", + "upper": "\u00dclempiir" + }, + "description": "Ainult alampiir - l\u00fclitu sisse kui anduri v\u00e4\u00e4rtus on alla almpiiri.\nAinult \u00fclempiir - l\u00fclitu sisse kui anduri v\u00e4\u00e4rtus on \u00fcle \u00fclempiiri.\nAlam- ja \u00fclempiir m\u00f5lemad m\u00e4\u00e4ratud - l\u00fclitu sisse kui anduri v\u00e4\u00e4rtus on vahemikus [alampiir .. \u00fclempiir]" + } + } + }, + "title": "L\u00e4vendiandur" +} \ No newline at end of file diff --git a/homeassistant/components/threshold/translations/fr.json b/homeassistant/components/threshold/translations/fr.json new file mode 100644 index 00000000000..29bc21e9cd5 --- /dev/null +++ b/homeassistant/components/threshold/translations/fr.json @@ -0,0 +1,40 @@ +{ + "config": { + "error": { + "need_lower_upper": "Les limites inf\u00e9rieure et sup\u00e9rieure ne peuvent pas \u00eatre toutes les deux vides" + }, + "step": { + "user": { + "data": { + "entity_id": "Capteur d'entr\u00e9e", + "hysteresis": "Hyst\u00e9r\u00e9sis", + "lower": "Limite inf\u00e9rieure", + "mode": "Mode de seuil", + "name": "Nom", + "upper": "Limite sup\u00e9rieure" + }, + "description": "Cr\u00e9ez un capteur binaire qui s'active et se d\u00e9sactive en fonction de la valeur d'un autre capteur.\n\nSi seule la limite inf\u00e9rieure est configur\u00e9e, le capteur est activ\u00e9 lorsque la valeur du capteur d'entr\u00e9e est inf\u00e9rieure \u00e0 cette limite.\nSi seule la limite sup\u00e9rieure est configur\u00e9e, le capteur est activ\u00e9 lorsque la valeur du capteur d'entr\u00e9e est sup\u00e9rieure \u00e0 cette limite.\nSi les deux limites sont configur\u00e9es, le capteur est activ\u00e9 lorsque la valeur du capteur d'entr\u00e9e est comprise entre les limites inf\u00e9rieure et sup\u00e9rieure.", + "title": "Ajouter un capteur de seuil" + } + } + }, + "options": { + "error": { + "need_lower_upper": "Les limites inf\u00e9rieure et sup\u00e9rieure ne peuvent pas \u00eatre toutes les deux vides" + }, + "step": { + "init": { + "data": { + "entity_id": "Capteur d'entr\u00e9e", + "hysteresis": "Hyst\u00e9r\u00e9sis", + "lower": "Limite inf\u00e9rieure", + "mode": "Mode de seuil", + "name": "Nom", + "upper": "Limite sup\u00e9rieure" + }, + "description": "Si seule la limite inf\u00e9rieure est configur\u00e9e, le capteur est activ\u00e9 lorsque la valeur du capteur d'entr\u00e9e est inf\u00e9rieure \u00e0 cette limite.\nSi seule la limite sup\u00e9rieure est configur\u00e9e, le capteur est activ\u00e9 lorsque la valeur du capteur d'entr\u00e9e est sup\u00e9rieure \u00e0 cette limite.\nSi les deux limites sont configur\u00e9es, le capteur est activ\u00e9 lorsque la valeur du capteur d'entr\u00e9e est comprise entre les limites inf\u00e9rieure et sup\u00e9rieure." + } + } + }, + "title": "Capteur de seuil" +} \ No newline at end of file diff --git a/homeassistant/components/threshold/translations/hu.json b/homeassistant/components/threshold/translations/hu.json new file mode 100644 index 00000000000..944a13680d3 --- /dev/null +++ b/homeassistant/components/threshold/translations/hu.json @@ -0,0 +1,40 @@ +{ + "config": { + "error": { + "need_lower_upper": "Az als\u00f3 \u00e9s a fels\u0151 hat\u00e1r\u00e9rt\u00e9k nem lehet \u00fcres" + }, + "step": { + "user": { + "data": { + "entity_id": "Forr\u00e1s \u00e9rz\u00e9kel\u0151", + "hysteresis": "Hiszter\u00e9zis", + "lower": "Als\u00f3 hat\u00e1r", + "mode": "K\u00fcsz\u00f6b\u00e9rt\u00e9k m\u00f3d", + "name": "Elnevez\u00e9s", + "upper": "Fels\u0151 hat\u00e1r" + }, + "description": "Itt \u00e1ll\u00edthatja be, hogy az \u00e9rz\u00e9kel\u0151 mikor kapcsoljon be \u00e9s mikor kapcsoljon ki.\n\nCsak als\u00f3 hat\u00e1r\u00e9rt\u00e9k konfigur\u00e1lva - Bekapcsol\u00e1s, amikor a forr\u00e1s \u00e9rz\u00e9kel\u0151 \u00e9rt\u00e9ke kisebb, mint az als\u00f3 hat\u00e1r\u00e9rt\u00e9k.\nCsak fels\u0151 hat\u00e1r\u00e9rt\u00e9k konfigur\u00e1lva - Bekapcsol, ha a forr\u00e1s \u00e9rz\u00e9kel\u0151 \u00e9rt\u00e9ke nagyobb, mint a fels\u0151 hat\u00e1r\u00e9rt\u00e9k.\nAls\u00f3 \u00e9s fels\u0151 hat\u00e1r\u00e9rt\u00e9k konfigur\u00e1lva - Bekapcsol\u00e1s, ha a forr\u00e1s \u00e9rz\u00e9kel\u0151 \u00e9rt\u00e9ke az als\u00f3 hat\u00e1r\u00e9rt\u00e9k \u00e9s fels\u0151 hat\u00e1r\u00e9rt\u00e9k k\u00f6z\u00f6tti tartom\u00e1nyban van.", + "title": "\u00daj k\u00fcsz\u00f6b\u00e9rt\u00e9k-\u00e9rz\u00e9kel\u0151" + } + } + }, + "options": { + "error": { + "need_lower_upper": "Az als\u00f3 \u00e9s a fels\u0151 hat\u00e1r\u00e9rt\u00e9k nem lehet \u00fcres" + }, + "step": { + "init": { + "data": { + "entity_id": "Forr\u00e1s \u00e9rz\u00e9kel\u0151", + "hysteresis": "Hiszter\u00e9zis", + "lower": "Als\u00f3 hat\u00e1r", + "mode": "K\u00fcsz\u00f6b\u00e9rt\u00e9k m\u00f3d", + "name": "Elnevez\u00e9s", + "upper": "Fels\u0151 hat\u00e1r" + }, + "description": "Itt \u00e1ll\u00edthatja be, hogy az \u00e9rz\u00e9kel\u0151 mikor kapcsoljon be \u00e9s mikor kapcsoljon ki.\n\nCsak als\u00f3 hat\u00e1r\u00e9rt\u00e9k konfigur\u00e1lva - Bekapcsol\u00e1s, amikor a forr\u00e1s \u00e9rz\u00e9kel\u0151 \u00e9rt\u00e9ke kisebb, mint az als\u00f3 hat\u00e1r\u00e9rt\u00e9k.\nCsak fels\u0151 hat\u00e1r\u00e9rt\u00e9k konfigur\u00e1lva - Bekapcsol, ha a forr\u00e1s \u00e9rz\u00e9kel\u0151 \u00e9rt\u00e9ke nagyobb, mint a fels\u0151 hat\u00e1r\u00e9rt\u00e9k.\nAls\u00f3 \u00e9s fels\u0151 hat\u00e1r\u00e9rt\u00e9k konfigur\u00e1lva - Bekapcsol\u00e1s, ha a forr\u00e1s \u00e9rz\u00e9kel\u0151 \u00e9rt\u00e9ke az als\u00f3 hat\u00e1r\u00e9rt\u00e9k \u00e9s fels\u0151 hat\u00e1r\u00e9rt\u00e9k k\u00f6z\u00f6tti tartom\u00e1nyban van." + } + } + }, + "title": "K\u00fcsz\u00f6b\u00e9rt\u00e9k \u00e9rz\u00e9kel\u0151" +} \ No newline at end of file diff --git a/homeassistant/components/threshold/translations/id.json b/homeassistant/components/threshold/translations/id.json new file mode 100644 index 00000000000..7356dd772e1 --- /dev/null +++ b/homeassistant/components/threshold/translations/id.json @@ -0,0 +1,40 @@ +{ + "config": { + "error": { + "need_lower_upper": "Batas bawah dan batas atas tidak boleh kosong sekaligus" + }, + "step": { + "user": { + "data": { + "entity_id": "Sensor input", + "hysteresis": "Histeresis", + "lower": "Batas bawah", + "mode": "Mode ambang batas", + "name": "Nama", + "upper": "Batas atas" + }, + "description": "Buat sensor biner yang nyala dan mati tergantung pada nilai sensor \n\nHanya batas bawah yang dikonfigurasi: Nyalakan saat nilai sensor input kurang dari batas bawah.\nHanya batas atas yang dikonfigurasi: Nyalakan saat nilai sensor input lebih besar dari batas atas.\nKedua batas dikonfigurasi: Nyalakan ketika nilai sensor input berada dalam rentang [batas bawah ... batas atas].", + "title": "Tambahkan Sensor Ambang Batas" + } + } + }, + "options": { + "error": { + "need_lower_upper": "Batas bawah dan batas atas tidak boleh kosong sekaligus" + }, + "step": { + "init": { + "data": { + "entity_id": "Sensor input", + "hysteresis": "Histeresis", + "lower": "Batas bawah", + "mode": "Mode ambang batas", + "name": "Nama", + "upper": "Batas atas" + }, + "description": "Hanya batas bawah yang dikonfigurasi: Nyalakan saat nilai sensor input kurang dari batas bawah.\nHanya batas atas yang dikonfigurasi: Nyalakan saat nilai sensor input lebih besar dari batas atas.\nKedua batas dikonfigurasi: Nyalakan ketika nilai sensor input berada dalam rentang [batas bawah ... batas atas]." + } + } + }, + "title": "Sensor Ambang Batas" +} \ No newline at end of file diff --git a/homeassistant/components/threshold/translations/it.json b/homeassistant/components/threshold/translations/it.json new file mode 100644 index 00000000000..6bc62dce765 --- /dev/null +++ b/homeassistant/components/threshold/translations/it.json @@ -0,0 +1,40 @@ +{ + "config": { + "error": { + "need_lower_upper": "I limiti inferiore e superiore non possono essere entrambi vuoti" + }, + "step": { + "user": { + "data": { + "entity_id": "Sensore di ingresso", + "hysteresis": "Isteresi", + "lower": "Limite inferiore", + "mode": "Modalit\u00e0 soglia", + "name": "Nome", + "upper": "Limite superiore" + }, + "description": "Crea un sensore binario che si accende e si spegne a seconda del valore di un sensore \n\nSolo limite inferiore configurato - si accende quando il valore del sensore di ingresso \u00e8 inferiore al limite inferiore.\nSolo limite superiore configurato - si accende quando il valore del sensore di ingresso \u00e8 maggiore del limite superiore.\nSia il limite inferiore che quello superiore configurati - si accende quando il valore del sensore di ingresso \u00e8 compreso nell'intervallo [limite inferiore .. limite superiore].", + "title": "Aggiungi sensore di soglia" + } + } + }, + "options": { + "error": { + "need_lower_upper": "I limiti inferiore e superiore non possono essere entrambi vuoti" + }, + "step": { + "init": { + "data": { + "entity_id": "Sensore di ingresso", + "hysteresis": "Isteresi", + "lower": "Limite inferiore", + "mode": "Modalit\u00e0 soglia", + "name": "Nome", + "upper": "Limite superiore" + }, + "description": "Solo limite inferiore configurato - si accende quando il valore del sensore di ingresso \u00e8 inferiore al limite inferiore.\nSolo limite superiore configurato - si accende quando il valore del sensore di ingresso \u00e8 maggiore del limite superiore.\nSia il limite inferiore che quello superiore configurati - si accende quando il valore del sensore di ingresso \u00e8 compreso nell'intervallo [limite inferiore .. limite superiore]." + } + } + }, + "title": "Sensore di soglia" +} \ No newline at end of file diff --git a/homeassistant/components/threshold/translations/ja.json b/homeassistant/components/threshold/translations/ja.json new file mode 100644 index 00000000000..7d5a6cc2ce7 --- /dev/null +++ b/homeassistant/components/threshold/translations/ja.json @@ -0,0 +1,40 @@ +{ + "config": { + "error": { + "need_lower_upper": "\u4e0b\u9650\u3068\u4e0a\u9650\u306e\u4e21\u65b9\u3092\u7a7a\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093" + }, + "step": { + "user": { + "data": { + "entity_id": "\u5165\u529b\u30bb\u30f3\u30b5\u30fc", + "hysteresis": "\u30d2\u30b9\u30c6\u30ea\u30b7\u30b9", + "lower": "\u4e0b\u9650\u5024", + "mode": "\u3057\u304d\u3044\u5024\u30e2\u30fc\u30c9", + "name": "\u540d\u524d", + "upper": "\u4e0a\u9650\u5024" + }, + "description": "\u30bb\u30f3\u30b5\u30fc\u306e\u30aa\u30f3\u3068\u30aa\u30d5\u3092\u5207\u308a\u66ff\u3048\u308b\u30bf\u30a4\u30df\u30f3\u30b0\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\n\n\u4e0b\u9650\u306e\u307f\u8a2d\u5b9a - \u5165\u529b\u30bb\u30f3\u30b5\u30fc\u306e\u5024\u304c\u4e0b\u9650\u5024\u3088\u308a\u5c0f\u3055\u3044\u3068\u304d\u306b\u30aa\u30f3\u306b\u3057\u307e\u3059\u3002\n\u4e0a\u9650\u306e\u307f\u8a2d\u5b9a - \u5165\u529b\u30bb\u30f3\u30b5\u30fc\u306e\u5024\u304c\u4e0a\u9650\u5024\u3088\u308a\u5927\u304d\u3044\u3068\u304d\u306b\u30aa\u30f3\u306b\u3057\u307e\u3059\u3002\n\u4e0b\u9650\u3068\u4e0a\u9650\u306e\u4e21\u65b9\u3092\u8a2d\u5b9a - \u5165\u529b\u30bb\u30f3\u30b5\u30fc\u306e\u5024\u304c[\u4e0b\u9650..\u4e0a\u9650]\u306e\u7bc4\u56f2\u306b\u3042\u308b\u3068\u304d\u306b\u30aa\u30f3\u306b\u3057\u307e\u3059\u3002", + "title": "\u65b0\u3057\u3044\u3057\u304d\u3044\u5024\u30bb\u30f3\u30b5\u30fc" + } + } + }, + "options": { + "error": { + "need_lower_upper": "\u4e0b\u9650\u3068\u4e0a\u9650\u306e\u4e21\u65b9\u3092\u7a7a\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093" + }, + "step": { + "init": { + "data": { + "entity_id": "\u5165\u529b\u30bb\u30f3\u30b5\u30fc", + "hysteresis": "\u30d2\u30b9\u30c6\u30ea\u30b7\u30b9", + "lower": "\u4e0b\u9650\u5024", + "mode": "\u3057\u304d\u3044\u5024\u30e2\u30fc\u30c9", + "name": "\u540d\u524d", + "upper": "\u4e0a\u9650\u5024" + }, + "description": "\u30bb\u30f3\u30b5\u30fc\u306e\u30aa\u30f3\u3068\u30aa\u30d5\u3092\u5207\u308a\u66ff\u3048\u308b\u30bf\u30a4\u30df\u30f3\u30b0\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\n\n\u4e0b\u9650\u306e\u307f\u8a2d\u5b9a - \u5165\u529b\u30bb\u30f3\u30b5\u30fc\u306e\u5024\u304c\u4e0b\u9650\u5024\u3088\u308a\u5c0f\u3055\u3044\u3068\u304d\u306b\u30aa\u30f3\u306b\u3057\u307e\u3059\u3002\n\u4e0a\u9650\u306e\u307f\u8a2d\u5b9a - \u5165\u529b\u30bb\u30f3\u30b5\u30fc\u306e\u5024\u304c\u4e0a\u9650\u5024\u3088\u308a\u5927\u304d\u3044\u3068\u304d\u306b\u30aa\u30f3\u306b\u3057\u307e\u3059\u3002\n\u4e0b\u9650\u3068\u4e0a\u9650\u306e\u4e21\u65b9\u3092\u8a2d\u5b9a - \u5165\u529b\u30bb\u30f3\u30b5\u30fc\u306e\u5024\u304c[\u4e0b\u9650..\u4e0a\u9650]\u306e\u7bc4\u56f2\u306b\u3042\u308b\u3068\u304d\u306b\u30aa\u30f3\u306b\u3057\u307e\u3059\u3002" + } + } + }, + "title": "\u3057\u304d\u3044\u5024\u30bb\u30f3\u30b5\u30fc" +} \ No newline at end of file diff --git a/homeassistant/components/threshold/translations/nl.json b/homeassistant/components/threshold/translations/nl.json new file mode 100644 index 00000000000..73af8fcc8b7 --- /dev/null +++ b/homeassistant/components/threshold/translations/nl.json @@ -0,0 +1,40 @@ +{ + "config": { + "error": { + "need_lower_upper": "Onder- en bovengrens kunnen niet beide leeg zijn" + }, + "step": { + "user": { + "data": { + "entity_id": "Invoer sensor", + "hysteresis": "Hyseterise", + "lower": "Ondergrens", + "mode": "Drempelmodus", + "name": "Naam", + "upper": "Bovengrens" + }, + "description": "Maak een binaire sensor die aan en uit gaat afhankelijk van de waarde van een sensor\n\nAlleen ondergrens geconfigureerd - Schakelt in wanneer de waarde van de ingangssensor kleiner is dan de ondergrens.\nAlleen bovengrens geconfigureerd - Schakelt in wanneer de waarde van de ingangssensor groter is dan de bovengrens.\nZowel ondergrens als bovengrens ingesteld - Schakelt in wanneer de waarde van de ingangssensor binnen het bereik [ondergrens ... bovengrens] ligt.", + "title": "Drempelsensor toevoegen" + } + } + }, + "options": { + "error": { + "need_lower_upper": "Onder- en bovengrens kunnen niet beide leeg zijn" + }, + "step": { + "init": { + "data": { + "entity_id": "Invoer sensor", + "hysteresis": "Hyseterise", + "lower": "Ondergrens", + "mode": "Drempelmodus", + "name": "Naam", + "upper": "Bovengrens" + }, + "description": "Alleen ondergrens geconfigureerd - Schakelt in wanneer de waarde van de ingangssensor lager is dan de ondergrens.\nAlleen bovengrens geconfigureerd - Schakelt in wanneer de waarde van de ingangssensor groter is dan de bovengrens.\nZowel ondergrens als bovengrens ingesteld - Schakelt in wanneer de waarde van de ingangssensor binnen het bereik [ondergrens ... bovengrens] ligt." + } + } + }, + "title": "Drempelsensor" +} \ No newline at end of file diff --git a/homeassistant/components/threshold/translations/no.json b/homeassistant/components/threshold/translations/no.json new file mode 100644 index 00000000000..66c8461d8cc --- /dev/null +++ b/homeassistant/components/threshold/translations/no.json @@ -0,0 +1,40 @@ +{ + "config": { + "error": { + "need_lower_upper": "Nedre og \u00f8vre grense kan ikke begge v\u00e6re tomme" + }, + "step": { + "user": { + "data": { + "entity_id": "Inngangssensor", + "hysteresis": "Hysterese", + "lower": "Nedre grense", + "mode": "Terskelverdi-modus", + "name": "Navn", + "upper": "\u00d8vre grense" + }, + "description": "Lag en bin\u00e6r sensor som sl\u00e5s av og p\u00e5 avhengig av verdien til en sensor \n\n Kun nedre grense konfigurert - Sl\u00e5 p\u00e5 n\u00e5r inngangssensorens verdi er mindre enn den nedre grensen.\n Bare \u00f8vre grense konfigurert - Sl\u00e5 p\u00e5 n\u00e5r inngangssensorens verdi er st\u00f8rre enn den \u00f8vre grensen.\n B\u00e5de nedre og \u00f8vre grense konfigurert - Sl\u00e5 p\u00e5 n\u00e5r inngangssensorens verdi er innenfor omr\u00e5det [nedre grense .. \u00f8vre grense].", + "title": "Legg til terskelsensor" + } + } + }, + "options": { + "error": { + "need_lower_upper": "Nedre og \u00f8vre grense kan ikke begge v\u00e6re tomme" + }, + "step": { + "init": { + "data": { + "entity_id": "Inngangssensor", + "hysteresis": "Hysterese", + "lower": "Nedre grense", + "mode": "Terskelverdi-modus", + "name": "Navn", + "upper": "\u00d8vre grense" + }, + "description": "Kun nedre grense konfigurert - Sl\u00e5 p\u00e5 n\u00e5r inngangssensorens verdi er mindre enn den nedre grensen.\n Bare \u00f8vre grense konfigurert - Sl\u00e5 p\u00e5 n\u00e5r inngangssensorens verdi er st\u00f8rre enn den \u00f8vre grensen.\n B\u00e5de nedre og \u00f8vre grense konfigurert - Sl\u00e5 p\u00e5 n\u00e5r inngangssensorens verdi er innenfor omr\u00e5det [nedre grense .. \u00f8vre grense]." + } + } + }, + "title": "Terskelsensor" +} \ No newline at end of file diff --git a/homeassistant/components/threshold/translations/pl.json b/homeassistant/components/threshold/translations/pl.json new file mode 100644 index 00000000000..5db231947c2 --- /dev/null +++ b/homeassistant/components/threshold/translations/pl.json @@ -0,0 +1,40 @@ +{ + "config": { + "error": { + "need_lower_upper": "Dolny i g\u00f3rny limit nie mog\u0105 by\u0107 jednocze\u015bnie puste" + }, + "step": { + "user": { + "data": { + "entity_id": "Sensor wej\u015bciowy", + "hysteresis": "Op\u00f3\u017anienie", + "lower": "Dolny limit", + "mode": "Tryb progowy", + "name": "Nazwa", + "upper": "G\u00f3rny limit" + }, + "description": "Utw\u00f3rz sensor binarny, kt\u00f3ry w\u0142\u0105cza si\u0119 lub wy\u0142\u0105cza w zale\u017cno\u015bci od warto\u015bci sensora.\n\nSkonfigurowano tylko dolny limit - W\u0142\u0105cza si\u0119, gdy warto\u015b\u0107 sensora wej\u015bciowego jest mniejsza ni\u017c dolny limit.\nSkonfigurowano tylko g\u00f3rny limit - W\u0142\u0105cza si\u0119, gdy warto\u015b\u0107 sensora wej\u015bciowego jest wi\u0119ksza ni\u017c g\u00f3rny limit.\nSkonfigurowano dolny i g\u00f3rny limit - W\u0142\u0105cza si\u0119, gdy warto\u015b\u0107 czujnika wej\u015bciowego znajduje si\u0119 w zakresie [dolny limit .. g\u00f3rny limit].", + "title": "Dodaj sensor progowy" + } + } + }, + "options": { + "error": { + "need_lower_upper": "Dolny i g\u00f3rny limit nie mog\u0105 by\u0107 jednocze\u015bnie puste" + }, + "step": { + "init": { + "data": { + "entity_id": "Sensor wej\u015bciowy", + "hysteresis": "Op\u00f3\u017anienie", + "lower": "Dolny limit", + "mode": "Tryb progowy", + "name": "Nazwa", + "upper": "G\u00f3rny limit" + }, + "description": "Skonfigurowano tylko dolny limit - W\u0142\u0105cza si\u0119, gdy warto\u015b\u0107 sensora wej\u015bciowego jest mniejsza ni\u017c dolny limit.\nSkonfigurowano tylko g\u00f3rny limit - W\u0142\u0105cza, gdy warto\u015b\u0107 sensora wej\u015bciowego jest wi\u0119ksza ni\u017c g\u00f3rny limit.\nSkonfigurowano zar\u00f3wno dolny, jak i g\u00f3rny limit - W\u0142\u0105cza, gdy warto\u015b\u0107 sensora wej\u015bciowego znajduje si\u0119 w zakresie [dolny limit .. g\u00f3rny limit]." + } + } + }, + "title": "Sensor progowy" +} \ No newline at end of file diff --git a/homeassistant/components/threshold/translations/pt-BR.json b/homeassistant/components/threshold/translations/pt-BR.json new file mode 100644 index 00000000000..1aa7358086a --- /dev/null +++ b/homeassistant/components/threshold/translations/pt-BR.json @@ -0,0 +1,40 @@ +{ + "config": { + "error": { + "need_lower_upper": "Os limites inferior e superior n\u00e3o podem estar vazios" + }, + "step": { + "user": { + "data": { + "entity_id": "Sensor de entrada", + "hysteresis": "Histerese", + "lower": "Limite inferior", + "mode": "Modo Threshold", + "name": "Nome", + "upper": "Limite superior" + }, + "description": "Crie um sensor bin\u00e1rio que liga e desliga dependendo do valor de um sensor \n\n Somente limite inferior configurado - Liga quando o valor do sensor de entrada for menor que o limite inferior.\n Somente limite superior configurado - Liga quando o valor do sensor de entrada for maior que o limite superior.\n Ambos os limites inferior e superior configurados - Liga quando o valor do sensor de entrada est\u00e1 na faixa [limite inferior .. limite superior].", + "title": "Adicionar sensor Threshold" + } + } + }, + "options": { + "error": { + "need_lower_upper": "Os limites inferior e superior n\u00e3o podem estar vazios" + }, + "step": { + "init": { + "data": { + "entity_id": "Sensor de entrada", + "hysteresis": "Histerese", + "lower": "Limite inferior", + "mode": "Modo Threshold", + "name": "Nome", + "upper": "Limite superior" + }, + "description": "Somente o limite inferior \u00e9 configurado - Liga quando o valor do sensor de entrada for menor que o limite inferior.\nSomente o limite superior \u00e9 configurado - Liga quando o valor do sensor de entrada for maior que o limite superior.\nAmbos os limites inferior e superior s\u00e3o configurados - Liga quando o valor do sensor de entrada est\u00e1 na faixa [limite inferior .. limite superior]." + } + } + }, + "title": "Sensor Threshold" +} \ No newline at end of file diff --git a/homeassistant/components/threshold/translations/ru.json b/homeassistant/components/threshold/translations/ru.json new file mode 100644 index 00000000000..5b8c4546823 --- /dev/null +++ b/homeassistant/components/threshold/translations/ru.json @@ -0,0 +1,40 @@ +{ + "config": { + "error": { + "need_lower_upper": "\u041d\u0438\u0436\u043d\u0438\u0439 \u0438 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u0443\u0441\u0442\u044b\u043c\u0438." + }, + "step": { + "user": { + "data": { + "entity_id": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0441\u0435\u043d\u0441\u043e\u0440", + "hysteresis": "\u0413\u0438\u0441\u0442\u0435\u0440\u0435\u0437\u0438\u0441", + "lower": "\u041d\u0438\u0436\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0435\u043b", + "mode": "\u041f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0436\u0438\u043c", + "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", + "upper": "\u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0435\u043b" + }, + "description": "\u0411\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0441\u0435\u043d\u0441\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0435\u043d\u0441\u043e\u0440\u0430. \n\n\u041d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0438\u0436\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0435\u043b \u2014 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0435\u043d\u0441\u043e\u0440\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 \u043d\u0438\u0436\u043d\u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0435\u043b\u0430.\n\u041d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0435\u043b \u2014 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0435\u043d\u0441\u043e\u0440\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0435\u043b\u0430.\n\u041d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043a\u0430\u043a \u043d\u0438\u0436\u043d\u0438\u0439, \u0442\u0430\u043a \u0438 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0435\u043b \u2014 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0435\u043d\u0441\u043e\u0440\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 [\u043d\u0438\u0436\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0435\u043b \u2026 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0435\u043b].", + "title": "\u041f\u043e\u0440\u043e\u0433\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435" + } + } + }, + "options": { + "error": { + "need_lower_upper": "\u041d\u0438\u0436\u043d\u0438\u0439 \u0438 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u0443\u0441\u0442\u044b\u043c\u0438." + }, + "step": { + "init": { + "data": { + "entity_id": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0441\u0435\u043d\u0441\u043e\u0440", + "hysteresis": "\u0413\u0438\u0441\u0442\u0435\u0440\u0435\u0437\u0438\u0441", + "lower": "\u041d\u0438\u0436\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0435\u043b", + "mode": "\u041f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0436\u0438\u043c", + "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", + "upper": "\u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0435\u043b" + }, + "description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0438\u0436\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0435\u043b \u2014 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0435\u043d\u0441\u043e\u0440\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 \u043d\u0438\u0436\u043d\u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0435\u043b\u0430.\n\u041d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0435\u043b \u2014 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0435\u043d\u0441\u043e\u0440\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0435\u043b\u0430.\n\u041d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0438 \u043d\u0438\u0436\u043d\u0438\u0439 \u0438 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u2014 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0435\u043d\u0441\u043e\u0440\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 [\u043d\u0438\u0436\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0435\u043b \u2026 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0435\u043b]." + } + } + }, + "title": "\u041f\u043e\u0440\u043e\u0433\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435" +} \ No newline at end of file diff --git a/homeassistant/components/threshold/translations/tr.json b/homeassistant/components/threshold/translations/tr.json new file mode 100644 index 00000000000..0cb338ef681 --- /dev/null +++ b/homeassistant/components/threshold/translations/tr.json @@ -0,0 +1,40 @@ +{ + "config": { + "error": { + "need_lower_upper": "Alt ve \u00fcst limitlerin ikisi de bo\u015f olamaz" + }, + "step": { + "user": { + "data": { + "entity_id": "Giri\u015f sens\u00f6r\u00fc", + "hysteresis": "Histeresis", + "lower": "Alt s\u0131n\u0131r", + "mode": "E\u015fik modu", + "name": "Ad", + "upper": "\u00dcst s\u0131n\u0131r" + }, + "description": "Bir sens\u00f6r\u00fcn de\u011ferine ba\u011fl\u0131 olarak a\u00e7\u0131l\u0131p kapanan bir ikili sens\u00f6r olu\u015fturun \n\n Yaln\u0131zca alt limit konfig\u00fcre edildi - Giri\u015f sens\u00f6r\u00fcn\u00fcn de\u011feri alt limitten d\u00fc\u015f\u00fck oldu\u011funda a\u00e7\u0131n.\n Yaln\u0131zca \u00fcst limit konfig\u00fcre edildi - Giri\u015f sens\u00f6r\u00fcn\u00fcn de\u011feri \u00fcst limitten b\u00fcy\u00fck oldu\u011funda a\u00e7\u0131n.\n Hem alt hem de \u00fcst limit konfig\u00fcre edildi - Giri\u015f sens\u00f6r\u00fcn\u00fcn de\u011feri [alt limit .. \u00fcst limit] aral\u0131\u011f\u0131nda oldu\u011funda a\u00e7\u0131n.", + "title": "E\u015fik Sens\u00f6r\u00fc Ekle" + } + } + }, + "options": { + "error": { + "need_lower_upper": "Alt ve \u00fcst limitlerin ikisi de bo\u015f olamaz" + }, + "step": { + "init": { + "data": { + "entity_id": "Giri\u015f sens\u00f6r\u00fc", + "hysteresis": "Histeresis", + "lower": "Alt s\u0131n\u0131r", + "mode": "E\u015fik modu", + "name": "Ad", + "upper": "\u00dcst s\u0131n\u0131r" + }, + "description": "Yaln\u0131zca alt limit konfig\u00fcre edildi - Giri\u015f sens\u00f6r\u00fcn\u00fcn de\u011feri alt limitten d\u00fc\u015f\u00fck oldu\u011funda a\u00e7\u0131n.\n Yaln\u0131zca \u00fcst limit konfig\u00fcre edildi - Giri\u015f sens\u00f6r\u00fcn\u00fcn de\u011feri \u00fcst limitten b\u00fcy\u00fck oldu\u011funda a\u00e7\u0131n.\n Hem alt hem de \u00fcst limit konfig\u00fcre edildi - Giri\u015f sens\u00f6r\u00fcn\u00fcn de\u011feri [alt limit .. \u00fcst limit] aral\u0131\u011f\u0131nda oldu\u011funda a\u00e7\u0131n." + } + } + }, + "title": "E\u015fik Sens\u00f6r\u00fc" +} \ No newline at end of file diff --git a/homeassistant/components/threshold/translations/zh-Hans.json b/homeassistant/components/threshold/translations/zh-Hans.json new file mode 100644 index 00000000000..35bc919f0d1 --- /dev/null +++ b/homeassistant/components/threshold/translations/zh-Hans.json @@ -0,0 +1,40 @@ +{ + "config": { + "error": { + "need_lower_upper": "\u4e0b\u9650\u548c\u4e0a\u9650\u4e0d\u80fd\u540c\u65f6\u4e3a\u7a7a" + }, + "step": { + "user": { + "data": { + "entity_id": "\u8f93\u5165\u4f20\u611f\u5668", + "hysteresis": "\u9632\u6296\u8303\u56f4", + "lower": "\u4e0b\u9650", + "mode": "\u9608\u503c\u6a21\u5f0f", + "name": "\u540d\u79f0", + "upper": "\u4e0a\u9650" + }, + "description": "\u521b\u5efa\u6839\u636e\u5176\u4ed6\u4f20\u611f\u5668\u7684\u503c\u6539\u53d8\u5f00\u5173\u72b6\u6001\u7684\u4e8c\u5143\u4f20\u611f\u5668\u3002\n\n\u5982\u679c\u53ea\u914d\u7f6e\u4e0b\u9650\uff0c\u5219\u5f53\u8f93\u5165\u4f20\u611f\u5668\u7684\u503c\u4f4e\u4e8e\u4e0b\u9650\u65f6\u4e3a\u5f00\u3002\n\u5982\u679c\u53ea\u914d\u7f6e\u4e0a\u9650\uff0c\u5219\u5f53\u8f93\u5165\u4f20\u611f\u5668\u7684\u503c\u9ad8\u4e8e\u4e0a\u7ebf\u65f6\u4e3a\u5f00\u3002\n\u5982\u679c\u540c\u65f6\u914d\u7f6e\u4e0a\u9650\u548c\u4e0b\u9650\uff0c\u5219\u5f53\u8f93\u5165\u4f20\u611f\u5668\u7684\u503c\u4ecb\u4e8e\u4e0a\u9650\u548c\u4e0b\u9650\u4e4b\u95f4\uff08\u542b\u4e0a\u9650\u548c\u4e0b\u9650\uff09\u65f6\u4e3a\u5f00\u3002", + "title": "\u6dfb\u52a0\u9608\u503c\u4f20\u611f\u5668" + } + } + }, + "options": { + "error": { + "need_lower_upper": "\u4e0b\u9650\u548c\u4e0a\u9650\u4e0d\u80fd\u540c\u65f6\u4e3a\u7a7a" + }, + "step": { + "init": { + "data": { + "entity_id": "\u8f93\u5165\u4f20\u611f\u5668", + "hysteresis": "\u9632\u6296\u8303\u56f4", + "lower": "\u4e0b\u9650", + "mode": "\u9608\u503c\u6a21\u5f0f", + "name": "\u540d\u79f0", + "upper": "\u4e0a\u9650" + }, + "description": "\u5982\u679c\u53ea\u914d\u7f6e\u4e0b\u9650\uff0c\u5219\u5f53\u8f93\u5165\u4f20\u611f\u5668\u7684\u503c\u4f4e\u4e8e\u4e0b\u9650\u65f6\u4e3a\u5f00\u3002\n\u5982\u679c\u53ea\u914d\u7f6e\u4e0a\u9650\uff0c\u5219\u5f53\u8f93\u5165\u4f20\u611f\u5668\u7684\u503c\u9ad8\u4e8e\u4e0a\u9650\u65f6\u4e3a\u5f00\u3002\n\u5982\u679c\u540c\u65f6\u914d\u7f6e\u4e0a\u9650\u548c\u4e0b\u9650\uff0c\u5219\u5f53\u8f93\u5165\u4f20\u611f\u5668\u7684\u503c\u4ecb\u4e8e\u4e0a\u9650\u548c\u4e0b\u9650\u4e4b\u95f4\uff08\u542b\u4e0a\u9650\u548c\u4e0b\u9650\uff09\u65f6\u4e3a\u5f00\u3002" + } + } + }, + "title": "\u9608\u503c\u4f20\u611f\u5668" +} \ No newline at end of file diff --git a/homeassistant/components/threshold/translations/zh-Hant.json b/homeassistant/components/threshold/translations/zh-Hant.json new file mode 100644 index 00000000000..66bdfe6915a --- /dev/null +++ b/homeassistant/components/threshold/translations/zh-Hant.json @@ -0,0 +1,40 @@ +{ + "config": { + "error": { + "need_lower_upper": "\u4e0a\u4e0b\u9650\u4e0d\u53ef\u540c\u6642\u70ba\u7a7a\u767d" + }, + "step": { + "user": { + "data": { + "entity_id": "\u8f38\u5165\u611f\u6e2c\u5668", + "hysteresis": "\u9072\u6eef", + "lower": "\u4e0b\u9650", + "mode": "\u81e8\u754c\u9ede\u5f0f", + "name": "\u540d\u7a31", + "upper": "\u4e0a\u9650" + }, + "description": "\u65b0\u589e\u6839\u64da\u6578\u503c\u6c7a\u5b9a\u958b\u95dc\u4e4b\u4e8c\u9032\u4f4d\u611f\u6e2c\u5668\u3002\n\n\u50c5\u8a2d\u5b9a\u4e0b\u9650 - \u7576\u8f38\u5165\u611f\u6e2c\u5668\u6578\u503c\u4f4e\u65bc\u4e0b\u9650\u6642\u3001\u958b\u555f\u3002\n\u50c5\u8a2d\u5b9a\u4e0a\u9650 - \u7576\u8f38\u5165\u611f\u6e2c\u5668\u6578\u503c\u9ad8\u65bc\u4e0a\u9650\u6642\u3001\u958b\u555f\u3002\n\u540c\u6642\u8a2d\u5b9a\u4e0a\u4e0b\u9650 - \u7576\u8f38\u5165\u611f\u6e2c\u5668\u6578\u503c\u65bc\u7bc4\u570d\u5167 [\u4e0b\u9650 .. \u4e0a\u9650] \u6642\u958b\u555f\u3002", + "title": "\u65b0\u589e\u81e8\u754c\u611f\u6e2c\u5668" + } + } + }, + "options": { + "error": { + "need_lower_upper": "\u4e0a\u4e0b\u9650\u4e0d\u53ef\u540c\u6642\u70ba\u7a7a\u767d" + }, + "step": { + "init": { + "data": { + "entity_id": "\u8f38\u5165\u611f\u6e2c\u5668", + "hysteresis": "\u9072\u6eef", + "lower": "\u4e0b\u9650", + "mode": "\u81e8\u754c\u9ede\u5f0f", + "name": "\u540d\u7a31", + "upper": "\u4e0a\u9650" + }, + "description": "\u50c5\u8a2d\u5b9a\u4e0b\u9650 - \u7576\u8f38\u5165\u611f\u6e2c\u5668\u6578\u503c\u4f4e\u65bc\u4e0b\u9650\u6642\u3001\u958b\u555f\u3002\n\u50c5\u8a2d\u5b9a\u4e0a\u9650 - \u7576\u8f38\u5165\u611f\u6e2c\u5668\u6578\u503c\u9ad8\u65bc\u4e0a\u9650\u6642\u3001\u958b\u555f\u3002\n\u540c\u6642\u8a2d\u5b9a\u4e0a\u4e0b\u9650 - \u7576\u8f38\u5165\u611f\u6e2c\u5668\u6578\u503c\u65bc\u7bc4\u570d\u5167 [\u4e0b\u9650 .. \u4e0a\u9650] \u6642\u958b\u555f\u3002" + } + } + }, + "title": "\u81e8\u754c\u611f\u6e2c\u5668" +} \ No newline at end of file diff --git a/homeassistant/components/tod/translations/bg.json b/homeassistant/components/tod/translations/bg.json new file mode 100644 index 00000000000..35cfa0ad1d7 --- /dev/null +++ b/homeassistant/components/tod/translations/bg.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "user": { + "data": { + "name": "\u0418\u043c\u0435" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tod/translations/ca.json b/homeassistant/components/tod/translations/ca.json new file mode 100644 index 00000000000..3908cb7761f --- /dev/null +++ b/homeassistant/components/tod/translations/ca.json @@ -0,0 +1,31 @@ +{ + "config": { + "step": { + "user": { + "data": { + "after": "Activa despr\u00e9s de", + "after_time": "Temps d'activaci\u00f3", + "before": "Desactiva despr\u00e9s de", + "before_time": "Temps de desactivaci\u00f3", + "name": "Nom" + }, + "description": "Crea un sensor binari que s'activa o es desactiva en funci\u00f3 de l'hora.", + "title": "Afegeix sensor temps del dia" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "after": "Activa despr\u00e9s de", + "after_time": "Temps d'activaci\u00f3", + "before": "Desactiva despr\u00e9s de", + "before_time": "Temps de desactivaci\u00f3" + }, + "description": "Crea un sensor binari que s'activa o es desactiva en funci\u00f3 de l'hora." + } + } + }, + "title": "Sensor temps del dia" +} \ No newline at end of file diff --git a/homeassistant/components/tod/translations/de.json b/homeassistant/components/tod/translations/de.json new file mode 100644 index 00000000000..eeb3d4dd8f9 --- /dev/null +++ b/homeassistant/components/tod/translations/de.json @@ -0,0 +1,31 @@ +{ + "config": { + "step": { + "user": { + "data": { + "after": "Angeschaltet nach", + "after_time": "Einschaltzeit", + "before": "Ausgeschaltet nach", + "before_time": "Ausschaltzeit", + "name": "Name" + }, + "description": "Erstelle einen bin\u00e4ren Sensor, der sich je nach Uhrzeit ein- oder ausschaltet.", + "title": "Tageszeitsensor hinzuf\u00fcgen" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "after": "Angeschaltet nach", + "after_time": "Einschaltzeit", + "before": "Ausgeschaltet nach", + "before_time": "Ausschaltzeit" + }, + "description": "Erstelle einen bin\u00e4ren Sensor, der sich je nach Uhrzeit ein- oder ausschaltet." + } + } + }, + "title": "Tageszeitensensor" +} \ No newline at end of file diff --git a/homeassistant/components/tod/translations/el.json b/homeassistant/components/tod/translations/el.json new file mode 100644 index 00000000000..ffa426365a4 --- /dev/null +++ b/homeassistant/components/tod/translations/el.json @@ -0,0 +1,31 @@ +{ + "config": { + "step": { + "user": { + "data": { + "after": "\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03bc\u03b5\u03c4\u03ac", + "after_time": "\u0395\u03bd\u03c4\u03cc\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c5", + "before": "\u0391\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03bc\u03b5\u03c4\u03ac", + "before_time": "\u0395\u03ba\u03c4\u03cc\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c5", + "name": "\u038c\u03bd\u03bf\u03bc\u03b1" + }, + "description": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03c4\u03b5 \u03c0\u03cc\u03c4\u03b5 \u03bf \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2 \u03b8\u03b1 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9.", + "title": "\u0391\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2 New Times of the Day" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "after": "\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03bc\u03b5\u03c4\u03ac", + "after_time": "\u0395\u03bd\u03c4\u03cc\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c5", + "before": "\u0391\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03bc\u03b5\u03c4\u03ac", + "before_time": "\u0395\u03ba\u03c4\u03cc\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c5" + }, + "description": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03c4\u03b5 \u03c0\u03cc\u03c4\u03b5 \u03bf \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2 \u03b8\u03b1 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9." + } + } + }, + "title": "\u0391\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2 Times of the Day" +} \ No newline at end of file diff --git a/homeassistant/components/tod/translations/en.json b/homeassistant/components/tod/translations/en.json index 2ecb2c695c8..ced14151519 100644 --- a/homeassistant/components/tod/translations/en.json +++ b/homeassistant/components/tod/translations/en.json @@ -3,7 +3,9 @@ "step": { "user": { "data": { + "after": "On after", "after_time": "On time", + "before": "Off after", "before_time": "Off time", "name": "Name" }, @@ -16,9 +18,12 @@ "step": { "init": { "data": { + "after": "On after", "after_time": "On time", + "before": "Off after", "before_time": "Off time" - } + }, + "description": "Create a binary sensor that turns on or off depending on the time." } } }, diff --git a/homeassistant/components/tod/translations/et.json b/homeassistant/components/tod/translations/et.json new file mode 100644 index 00000000000..06b40e0ce72 --- /dev/null +++ b/homeassistant/components/tod/translations/et.json @@ -0,0 +1,31 @@ +{ + "config": { + "step": { + "user": { + "data": { + "after": "Kestus sissel\u00fclitumisest", + "after_time": "Seesoleku aeg", + "before": "Kestus v\u00e4ljal\u00fclitumisest", + "before_time": "V\u00e4ljasoleku aeg", + "name": "Nimi" + }, + "description": "Loo olekuandur mis l\u00fcltub sisse v\u00f5i v\u00e4lja vastavalt m\u00e4\u00e4ratud ajale.", + "title": "Lisa \u00f6\u00f6p\u00e4eva andur" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "after": "Kestus sissel\u00fclitumisest", + "after_time": "Seesoleku aeg", + "before": "Kestus v\u00e4ljal\u00fclitumisest", + "before_time": "V\u00e4ljasoleku aeg" + }, + "description": "Vali millal andur on sisse v\u00f5i v\u00e4lja l\u00fclitatud." + } + } + }, + "title": "\u00d6\u00f6p\u00e4eva andur" +} \ No newline at end of file diff --git a/homeassistant/components/tod/translations/fr.json b/homeassistant/components/tod/translations/fr.json new file mode 100644 index 00000000000..799e286343b --- /dev/null +++ b/homeassistant/components/tod/translations/fr.json @@ -0,0 +1,31 @@ +{ + "config": { + "step": { + "user": { + "data": { + "after": "Activ\u00e9 apr\u00e8s", + "after_time": "Heure d'activation", + "before": "D\u00e9sactiv\u00e9 apr\u00e8s", + "before_time": "Heure de d\u00e9sactivation", + "name": "Nom" + }, + "description": "Cr\u00e9ez un capteur binaire qui s'active et se d\u00e9sactive en fonction de l'heure.", + "title": "Ajouter un capteur de moment de la journ\u00e9e" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "after": "Activ\u00e9 apr\u00e8s", + "after_time": "Heure d'activation", + "before": "D\u00e9sactiv\u00e9 apr\u00e8s", + "before_time": "Heure de d\u00e9sactivation" + }, + "description": "Cr\u00e9ez un capteur binaire qui s'active et se d\u00e9sactive en fonction de l'heure." + } + } + }, + "title": "Capteur de moment de la journ\u00e9e" +} \ No newline at end of file diff --git a/homeassistant/components/tod/translations/he.json b/homeassistant/components/tod/translations/he.json new file mode 100644 index 00000000000..b10f9e2b1ca --- /dev/null +++ b/homeassistant/components/tod/translations/he.json @@ -0,0 +1,30 @@ +{ + "config": { + "step": { + "user": { + "data": { + "after": "\u05d4\u05e4\u05e2\u05dc\u05d4 \u05dc\u05d0\u05d7\u05e8", + "after_time": "\u05d6\u05de\u05df \u05d4\u05e4\u05e2\u05dc\u05d4", + "before": "\u05db\u05d9\u05d1\u05d5\u05d9 \u05dc\u05d0\u05d7\u05e8", + "before_time": "\u05d6\u05de\u05df \u05db\u05d9\u05d1\u05d5\u05d9", + "name": "\u05e9\u05dd" + }, + "description": "\u05d9\u05e6\u05d9\u05e8\u05ea \u05d7\u05d9\u05d9\u05e9\u05df \u05d1\u05d9\u05e0\u05d0\u05e8\u05d9 \u05d4\u05de\u05d5\u05e4\u05e2\u05dc \u05d0\u05d5 \u05e0\u05db\u05d1\u05d4 \u05d1\u05d4\u05ea\u05d0\u05dd \u05dc\u05d6\u05de\u05df.", + "title": "\u05d4\u05d5\u05e1\u05e4\u05ea \u05d7\u05d9\u05d9\u05e9\u05df \u05e9\u05e2\u05d5\u05ea \u05d1\u05d9\u05d5\u05dd" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "after": "\u05d4\u05e4\u05e2\u05dc\u05d4 \u05dc\u05d0\u05d7\u05e8", + "after_time": "\u05d6\u05de\u05df \u05d4\u05e4\u05e2\u05dc\u05d4", + "before": "\u05db\u05d9\u05d1\u05d5\u05d9 \u05dc\u05d0\u05d7\u05e8", + "before_time": "\u05d6\u05de\u05df \u05db\u05d9\u05d1\u05d5\u05d9" + }, + "description": "\u05d9\u05e6\u05d9\u05e8\u05ea \u05d7\u05d9\u05d9\u05e9\u05df \u05d1\u05d9\u05e0\u05d0\u05e8\u05d9 \u05d4\u05de\u05d5\u05e4\u05e2\u05dc \u05d0\u05d5 \u05e0\u05db\u05d1\u05d4 \u05d1\u05d4\u05ea\u05d0\u05dd \u05dc\u05d6\u05de\u05df." + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tod/translations/hu.json b/homeassistant/components/tod/translations/hu.json new file mode 100644 index 00000000000..28af029f230 --- /dev/null +++ b/homeassistant/components/tod/translations/hu.json @@ -0,0 +1,31 @@ +{ + "config": { + "step": { + "user": { + "data": { + "after": "BE ut\u00e1n", + "after_time": "BE id\u0151pont", + "before": "KI ut\u00e1n", + "before_time": "KI id\u0151pont", + "name": "Elnevez\u00e9s" + }, + "description": "\u00c1ll\u00edtsa be, hogy az \u00e9rz\u00e9kel\u0151 mikor kapcsoljon be \u00e9s ki.", + "title": "I\u0151pontok \u00e9rz\u00e9kel\u0151 hozz\u00e1ad\u00e1sa" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "after": "BE ut\u00e1n", + "after_time": "BE id\u0151pont", + "before": "KI ut\u00e1n", + "before_time": "KI id\u0151pont" + }, + "description": "\u00c1ll\u00edtsa be, hogy az \u00e9rz\u00e9kel\u0151 mikor kapcsoljon be \u00e9s ki." + } + } + }, + "title": "I\u0151pontok \u00e9rz\u00e9kel\u0151" +} \ No newline at end of file diff --git a/homeassistant/components/tod/translations/id.json b/homeassistant/components/tod/translations/id.json new file mode 100644 index 00000000000..2ceef6c3a40 --- /dev/null +++ b/homeassistant/components/tod/translations/id.json @@ -0,0 +1,31 @@ +{ + "config": { + "step": { + "user": { + "data": { + "after": "Nyala setelah", + "after_time": "Nyala pada", + "before": "Mati setelah", + "before_time": "Mati pada", + "name": "Nama" + }, + "description": "Buat sensor biner yang nyala atau mati tergantung waktu.", + "title": "Tambahkan Sensor Waktu Pada Hari Ini" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "after": "Nyala setelah", + "after_time": "Nyala pada", + "before": "Mati setelah", + "before_time": "Mati pada" + }, + "description": "Buat sensor biner yang nyala atau mati tergantung waktu." + } + } + }, + "title": "Sensor Waktu Pada Hari Ini" +} \ No newline at end of file diff --git a/homeassistant/components/tod/translations/it.json b/homeassistant/components/tod/translations/it.json new file mode 100644 index 00000000000..072cc80f5ff --- /dev/null +++ b/homeassistant/components/tod/translations/it.json @@ -0,0 +1,31 @@ +{ + "config": { + "step": { + "user": { + "data": { + "after": "Acceso dopo", + "after_time": "Ora di accensione", + "before": "Spento dopo", + "before_time": "Ora di spegnimento", + "name": "Nome" + }, + "description": "Crea un sensore binario che si accende o si spegne a seconda dell'ora.", + "title": "Aggiungi sensore delle ore del giorno" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "after": "Acceso dopo", + "after_time": "Ora di accensione", + "before": "Spento dopo", + "before_time": "Ora di spegnimento" + }, + "description": "Crea un sensore binario che si accende o si spegne a seconda dell'ora." + } + } + }, + "title": "Sensore ore del giorno" +} \ No newline at end of file diff --git a/homeassistant/components/tod/translations/ja.json b/homeassistant/components/tod/translations/ja.json new file mode 100644 index 00000000000..a497f3e3c98 --- /dev/null +++ b/homeassistant/components/tod/translations/ja.json @@ -0,0 +1,31 @@ +{ + "config": { + "step": { + "user": { + "data": { + "after": "\u5f8c\u306b\u30aa\u30f3(On after)", + "after_time": "\u30aa\u30f3\u30bf\u30a4\u30e0(On time)", + "before": "\u30aa\u30d5\u5f8c(Off after)", + "before_time": "\u30aa\u30d5\u30bf\u30a4\u30e0(Off time)", + "name": "\u540d\u524d" + }, + "description": "\u30bb\u30f3\u30b5\u30fc\u306e\u30aa\u30f3\u3068\u30aa\u30d5\u3092\u5207\u308a\u66ff\u3048\u308b\u30bf\u30a4\u30df\u30f3\u30b0\u3092\u69cb\u6210\u3057\u307e\u3059\u3002", + "title": "\u65b0\u3057\u3044\u6642\u523b\u30bb\u30f3\u30b5\u30fc" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "after": "\u5f8c\u306b\u30aa\u30f3(On after)", + "after_time": "\u30aa\u30f3\u30bf\u30a4\u30e0(On time)", + "before": "\u30aa\u30d5\u5f8c(Off after)", + "before_time": "\u30aa\u30d5\u30bf\u30a4\u30e0(Off time)" + }, + "description": "\u30bb\u30f3\u30b5\u30fc\u306e\u30aa\u30f3\u3068\u30aa\u30d5\u3092\u5207\u308a\u66ff\u3048\u308b\u30bf\u30a4\u30df\u30f3\u30b0\u3092\u69cb\u6210\u3057\u307e\u3059\u3002" + } + } + }, + "title": "\u6642\u9593\u5e2f\u30bb\u30f3\u30b5\u30fc(Times of the Day Sensor)" +} \ No newline at end of file diff --git a/homeassistant/components/tod/translations/nl.json b/homeassistant/components/tod/translations/nl.json new file mode 100644 index 00000000000..82f06ea3f4f --- /dev/null +++ b/homeassistant/components/tod/translations/nl.json @@ -0,0 +1,31 @@ +{ + "config": { + "step": { + "user": { + "data": { + "after": "Aan na", + "after_time": "Op tijd", + "before": "Uit na", + "before_time": "Uit tijd", + "name": "Naam\n" + }, + "description": "Maak een binaire sensor die afhankelijk van de tijd in- of uitgeschakeld wordt.", + "title": "Tijden van de dag sensor toevoegen" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "after": "Aan na", + "after_time": "Op tijd", + "before": "Uit na", + "before_time": "Uit tijd" + }, + "description": "Maak een binaire sensor die afhankelijk van de tijd in- of uitgeschakeld wordt." + } + } + }, + "title": "Tijd van de dag Sensor" +} \ No newline at end of file diff --git a/homeassistant/components/tod/translations/no.json b/homeassistant/components/tod/translations/no.json new file mode 100644 index 00000000000..a2cbf7e6427 --- /dev/null +++ b/homeassistant/components/tod/translations/no.json @@ -0,0 +1,31 @@ +{ + "config": { + "step": { + "user": { + "data": { + "after": "P\u00e5 etter", + "after_time": "P\u00e5 tide", + "before": "Av etter", + "before_time": "Utenfor arbeidstid", + "name": "Navn" + }, + "description": "Lag en bin\u00e6r sensor som sl\u00e5s av eller p\u00e5 avhengig av tiden.", + "title": "Legg til klokkeslettsensor" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "after": "P\u00e5 etter", + "after_time": "P\u00e5 tide", + "before": "Av etter", + "before_time": "Utenfor arbeidstid" + }, + "description": "Lag en bin\u00e6r sensor som sl\u00e5s av eller p\u00e5 avhengig av tiden." + } + } + }, + "title": "Tidssensor for dagen" +} \ No newline at end of file diff --git a/homeassistant/components/tod/translations/pl.json b/homeassistant/components/tod/translations/pl.json new file mode 100644 index 00000000000..8b03a798f5c --- /dev/null +++ b/homeassistant/components/tod/translations/pl.json @@ -0,0 +1,31 @@ +{ + "config": { + "step": { + "user": { + "data": { + "after": "W\u0142\u0105cz po", + "after_time": "Czas w\u0142\u0105czenia", + "before": "Wy\u0142\u0105cz po", + "before_time": "Czas wy\u0142\u0105czenia", + "name": "Nazwa" + }, + "description": "Utw\u00f3rz sensor binarny, kt\u00f3ry w\u0142\u0105cza si\u0119 lub wy\u0142\u0105cza w zale\u017cno\u015bci od czasu.", + "title": "Dodaj sensor p\u00f3r dnia" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "after": "W\u0142\u0105cz po", + "after_time": "Czas w\u0142\u0105czenia", + "before": "Wy\u0142\u0105cz po", + "before_time": "Czas wy\u0142\u0105czenia" + }, + "description": "Utw\u00f3rz sensor binarny, kt\u00f3ry w\u0142\u0105cza si\u0119 lub wy\u0142\u0105cza w zale\u017cno\u015bci od czasu." + } + } + }, + "title": "Sensor p\u00f3r dnia" +} \ No newline at end of file diff --git a/homeassistant/components/tod/translations/pt-BR.json b/homeassistant/components/tod/translations/pt-BR.json new file mode 100644 index 00000000000..e9784076fd7 --- /dev/null +++ b/homeassistant/components/tod/translations/pt-BR.json @@ -0,0 +1,31 @@ +{ + "config": { + "step": { + "user": { + "data": { + "after": "Ligado depois", + "after_time": "Ligado na hora", + "before": "Desligado depois", + "before_time": "Desligado na hora", + "name": "Nome" + }, + "description": "Crie um sensor bin\u00e1rio que liga ou desliga dependendo do tempo.", + "title": "Adicionar sensor de horas do dia" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "after": "Ligado depois", + "after_time": "Ligado na hora", + "before": "Desligado depois", + "before_time": "Desligado na hora" + }, + "description": "Crie um sensor bin\u00e1rio que liga ou desliga dependendo do tempo." + } + } + }, + "title": "Sensor de horas do dia" +} \ No newline at end of file diff --git a/homeassistant/components/tod/translations/ru.json b/homeassistant/components/tod/translations/ru.json new file mode 100644 index 00000000000..eda3e4efd77 --- /dev/null +++ b/homeassistant/components/tod/translations/ru.json @@ -0,0 +1,31 @@ +{ + "config": { + "step": { + "user": { + "data": { + "after": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435", + "after_time": "\u0412\u0440\u0435\u043c\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f", + "before": "\u0412\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435", + "before_time": "\u0412\u0440\u0435\u043c\u044f \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f", + "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435" + }, + "description": "\u0411\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0441\u0435\u043d\u0441\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0438\u043b\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.", + "title": "\u0412\u0440\u0435\u043c\u044f \u0441\u0443\u0442\u043e\u043a" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "after": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435", + "after_time": "\u0412\u0440\u0435\u043c\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f", + "before": "\u0412\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435", + "before_time": "\u0412\u0440\u0435\u043c\u044f \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f" + }, + "description": "\u0411\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0441\u0435\u043d\u0441\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0438\u043b\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438." + } + } + }, + "title": "\u0412\u0440\u0435\u043c\u044f \u0441\u0443\u0442\u043e\u043a" +} \ No newline at end of file diff --git a/homeassistant/components/tod/translations/tr.json b/homeassistant/components/tod/translations/tr.json new file mode 100644 index 00000000000..e2f04757369 --- /dev/null +++ b/homeassistant/components/tod/translations/tr.json @@ -0,0 +1,31 @@ +{ + "config": { + "step": { + "user": { + "data": { + "after": "Daha sonra", + "after_time": "Vaktinde", + "before": "Sonra kapat", + "before_time": "Kapatma zaman\u0131", + "name": "Ad" + }, + "description": "Zamana ba\u011fl\u0131 olarak a\u00e7\u0131l\u0131p kapanan bir ikili sens\u00f6r olu\u015fturun.", + "title": "G\u00fcn\u00fcn Saatleri Sens\u00f6r\u00fc Ekleyin" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "after": "Daha sonra", + "after_time": "Vaktinde", + "before": "Sonra kapat", + "before_time": "Kapatma zaman\u0131" + }, + "description": "Zamana ba\u011fl\u0131 olarak a\u00e7\u0131l\u0131p kapanan bir ikili sens\u00f6r olu\u015fturun." + } + } + }, + "title": "G\u00fcn\u00fcn Saatleri Sens\u00f6r\u00fc" +} \ No newline at end of file diff --git a/homeassistant/components/tod/translations/zh-Hans.json b/homeassistant/components/tod/translations/zh-Hans.json new file mode 100644 index 00000000000..1c0b6ba1597 --- /dev/null +++ b/homeassistant/components/tod/translations/zh-Hans.json @@ -0,0 +1,31 @@ +{ + "config": { + "step": { + "user": { + "data": { + "after": "\u5728\u6b64\u65f6\u95f4\u540e\u6253\u5f00", + "after_time": "\u6253\u5f00\u65f6\u95f4", + "before": "\u5728\u6b64\u65f6\u95f4\u540e\u5173\u95ed", + "before_time": "\u5173\u95ed\u65f6\u95f4", + "name": "\u540d\u79f0" + }, + "description": "\u521b\u5efa\u6839\u636e\u65f6\u95f4\u6539\u53d8\u5f00\u5173\u72b6\u6001\u7684\u4e8c\u5143\u4f20\u611f\u5668\u3002", + "title": "\u6dfb\u52a0\u65f6\u95f4\u8303\u56f4\u4f20\u611f\u5668" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "after": "\u5728\u6b64\u65f6\u95f4\u540e\u6253\u5f00", + "after_time": "\u6253\u5f00\u65f6\u95f4", + "before": "\u5728\u6b64\u65f6\u95f4\u540e\u5173\u95ed", + "before_time": "\u5173\u95ed\u65f6\u95f4" + }, + "description": "\u521b\u5efa\u6839\u636e\u65f6\u95f4\u6539\u53d8\u5f00\u5173\u72b6\u6001\u7684\u4e8c\u5143\u4f20\u611f\u5668\u3002" + } + } + }, + "title": "\u65f6\u95f4\u8303\u56f4\u4f20\u611f\u5668" +} \ No newline at end of file diff --git a/homeassistant/components/tod/translations/zh-Hant.json b/homeassistant/components/tod/translations/zh-Hant.json new file mode 100644 index 00000000000..0a47c33a318 --- /dev/null +++ b/homeassistant/components/tod/translations/zh-Hant.json @@ -0,0 +1,31 @@ +{ + "config": { + "step": { + "user": { + "data": { + "after": "\u958b\u555f\u6642\u9577\u5f8c", + "after_time": "\u958b\u555f\u6642\u9593", + "before": "\u95dc\u9589\u6642\u9577\u5f8c", + "before_time": "\u95dc\u9589\u6642\u9593", + "name": "\u540d\u7a31" + }, + "description": "\u65b0\u589e\u6839\u64da\u6642\u9593\u6c7a\u5b9a\u958b\u95dc\u4e4b\u6642\u9593\u611f\u6e2c\u5668\u3002", + "title": "\u65b0\u589e\u6bcf\u65e5\u5b9a\u6642\u611f\u6e2c\u5668" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "after": "\u958b\u555f\u6642\u9577\u5f8c", + "after_time": "\u958b\u555f\u6642\u9593", + "before": "\u95dc\u9589\u6642\u9577\u5f8c", + "before_time": "\u95dc\u9589\u6642\u9593" + }, + "description": "\u65b0\u589e\u6839\u64da\u6642\u9593\u6c7a\u5b9a\u958b\u95dc\u4e4b\u6642\u9593\u611f\u6e2c\u5668\u3002" + } + } + }, + "title": "\u6bcf\u65e5\u5b9a\u6642\u611f\u6e2c\u5668" +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/bg.json b/homeassistant/components/tomorrowio/translations/bg.json new file mode 100644 index 00000000000..783408dab84 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/bg.json @@ -0,0 +1,20 @@ +{ + "config": { + "error": { + "cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435", + "invalid_api_key": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d API \u043a\u043b\u044e\u0447", + "unknown": "\u041d\u0435\u043e\u0447\u0430\u043a\u0432\u0430\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430" + }, + "step": { + "user": { + "data": { + "api_key": "API \u043a\u043b\u044e\u0447", + "latitude": "\u0413\u0435\u043e\u0433\u0440\u0430\u0444\u0441\u043a\u0430 \u0448\u0438\u0440\u0438\u043d\u0430", + "location": "\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435", + "longitude": "\u0413\u0435\u043e\u0433\u0440\u0430\u0444\u0441\u043a\u0430 \u0434\u044a\u043b\u0436\u0438\u043d\u0430", + "name": "\u0418\u043c\u0435" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/ca.json b/homeassistant/components/tomorrowio/translations/ca.json new file mode 100644 index 00000000000..fc351430ffb --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/ca.json @@ -0,0 +1,33 @@ +{ + "config": { + "error": { + "cannot_connect": "Ha fallat la connexi\u00f3", + "invalid_api_key": "Clau API inv\u00e0lida", + "rate_limited": "Freq\u00fc\u00e8ncia limitada temporalment, torna-ho a provar m\u00e9s tard.", + "unknown": "Error inesperat" + }, + "step": { + "user": { + "data": { + "api_key": "Clau API", + "latitude": "Latitud", + "location": "Ubicaci\u00f3", + "longitude": "Longitud", + "name": "Nom" + }, + "description": "Per obtenir una clau API, registra't a [Tomorrow.io](https://app.tomorrow.io/signup)." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "timestep": "Min. entre previsions de NowCast" + }, + "description": "Si decideixes activar l'entitat de previsi\u00f3 `nowcast`, podr\u00e0s configurar l'interval en minuts entre cada previsi\u00f3. El nombre de previsions proporcionades dep\u00e8n d'aquest interval de minuts.", + "title": "Actualitza les opcions de Tomorrow.io" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/cs.json b/homeassistant/components/tomorrowio/translations/cs.json new file mode 100644 index 00000000000..6b50656cd00 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/cs.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "user": { + "data": { + "location": "Um\u00edst\u011bn\u00ed" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/de.json b/homeassistant/components/tomorrowio/translations/de.json new file mode 100644 index 00000000000..03739ce5c2f --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/de.json @@ -0,0 +1,33 @@ +{ + "config": { + "error": { + "cannot_connect": "Verbindung fehlgeschlagen", + "invalid_api_key": "Ung\u00fcltiger API-Schl\u00fcssel", + "rate_limited": "Aktuelle Aktualisierungsrate gedrosselt, bitte versuche es sp\u00e4ter erneut.", + "unknown": "Unerwarteter Fehler" + }, + "step": { + "user": { + "data": { + "api_key": "API-Schl\u00fcssel", + "latitude": "Breitengrad", + "location": "Standort", + "longitude": "L\u00e4ngengrad", + "name": "Name" + }, + "description": "Um einen API-Schl\u00fcssel zu erhalten, melde dich bei [Tomorrow.io] (https://app.tomorrow.io/signup) an." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "timestep": "Minuten zwischen den NowCast Kurzvorhersagen" + }, + "description": "Wenn du die Vorhersage-Entitit\u00e4t \"Kurzvorhersage\" aktivierst, kannst du die Anzahl der Minuten zwischen den einzelnen Vorhersagen konfigurieren. Die Anzahl der bereitgestellten Vorhersagen h\u00e4ngt von der Anzahl der zwischen den Vorhersagen gew\u00e4hlten Minuten ab.", + "title": "Tomorrow.io Optionen aktualisieren" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/el.json b/homeassistant/components/tomorrowio/translations/el.json new file mode 100644 index 00000000000..28e3f56c379 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/el.json @@ -0,0 +1,33 @@ +{ + "config": { + "error": { + "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", + "invalid_api_key": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03ba\u03bb\u03b5\u03b9\u03b4\u03af API", + "rate_limited": "\u0391\u03c5\u03c4\u03ae\u03bd \u03c4\u03b7 \u03c3\u03c4\u03b9\u03b3\u03bc\u03ae \u03b7 \u03c4\u03b9\u03bc\u03ae \u03b5\u03af\u03bd\u03b1\u03b9 \u03c0\u03b5\u03c1\u03b9\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03b7, \u03b4\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac \u03b1\u03c1\u03b3\u03cc\u03c4\u03b5\u03c1\u03b1.", + "unknown": "\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" + }, + "step": { + "user": { + "data": { + "api_key": "\u039a\u03bb\u03b5\u03b9\u03b4\u03af API", + "latitude": "\u0393\u03b5\u03c9\u03b3\u03c1\u03b1\u03c6\u03b9\u03ba\u03cc \u03c0\u03bb\u03ac\u03c4\u03bf\u03c2", + "location": "\u03a4\u03bf\u03c0\u03bf\u03b8\u03b5\u03c3\u03af\u03b1", + "longitude": "\u0393\u03b5\u03c9\u03b3\u03c1\u03b1\u03c6\u03b9\u03ba\u03cc \u03bc\u03ae\u03ba\u03bf\u03c2", + "name": "\u038c\u03bd\u03bf\u03bc\u03b1" + }, + "description": "\u0393\u03b9\u03b1 \u03bd\u03b1 \u03bb\u03ac\u03b2\u03b5\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03ba\u03bb\u03b5\u03b9\u03b4\u03af API, \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03bf [Tomorrow.io](https://app.tomorrow.io/signup)." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "timestep": "\u0395\u03bb\u03ac\u03c7. \u039c\u03b5\u03c4\u03b1\u03be\u03cd NowCast Forecasts" + }, + "description": "\u0395\u03ac\u03bd \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1 \u03c0\u03c1\u03cc\u03b2\u03bb\u03b5\u03c8\u03b7\u03c2 \"nowcast\", \u03bc\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf\u03bd \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc \u03c4\u03c9\u03bd \u03bb\u03b5\u03c0\u03c4\u03ce\u03bd \u03bc\u03b5\u03c4\u03b1\u03be\u03cd \u03ba\u03ac\u03b8\u03b5 \u03c0\u03c1\u03cc\u03b2\u03bb\u03b5\u03c8\u03b7\u03c2. \u039f \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03c4\u03c9\u03bd \u03c0\u03b1\u03c1\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03c9\u03bd \u03c0\u03c1\u03bf\u03b2\u03bb\u03ad\u03c8\u03b5\u03c9\u03bd \u03b5\u03be\u03b1\u03c1\u03c4\u03ac\u03c4\u03b1\u03b9 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc \u03c4\u03c9\u03bd \u03bb\u03b5\u03c0\u03c4\u03ce\u03bd \u03c0\u03bf\u03c5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03b3\u03bf\u03bd\u03c4\u03b1\u03b9 \u03bc\u03b5\u03c4\u03b1\u03be\u03cd \u03c4\u03c9\u03bd \u03c0\u03c1\u03bf\u03b2\u03bb\u03ad\u03c8\u03b5\u03c9\u03bd.", + "title": "\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ce\u03bd Tomorrow.io" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/en.json b/homeassistant/components/tomorrowio/translations/en.json index 7c653b00574..103f1c81679 100644 --- a/homeassistant/components/tomorrowio/translations/en.json +++ b/homeassistant/components/tomorrowio/translations/en.json @@ -11,6 +11,7 @@ "data": { "api_key": "API Key", "latitude": "Latitude", + "location": "Location", "longitude": "Longitude", "name": "Name" }, diff --git a/homeassistant/components/tomorrowio/translations/et.json b/homeassistant/components/tomorrowio/translations/et.json new file mode 100644 index 00000000000..7ac38239349 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/et.json @@ -0,0 +1,33 @@ +{ + "config": { + "error": { + "cannot_connect": "\u00dchendamine nurjus", + "invalid_api_key": "Vigane API v\u00f5ti", + "rate_limited": "Hetkel on m\u00e4\u00e4r piiratud, proovi hiljem uuesti.", + "unknown": "Ootamatu t\u00f5rge" + }, + "step": { + "user": { + "data": { + "api_key": "API v\u00f5ti", + "latitude": "Laiuskraad", + "location": "Asukoht", + "longitude": "Pikkuskraad", + "name": "Nimi" + }, + "description": "API v\u00f5tme saamiseks registreeru aadressil [Tomorrow.io](https://app.tomorrow.io/signup)." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "timestep": "Minuteid NowCasti prognooside vahel" + }, + "description": "Kui otsustad lubada olemi \"nowcast\", saad seadistada iga prognoosi vahelise minutite arvu. Esitatud prognooside arv s\u00f5ltub prognooside vahel valitud minutite arvust.", + "title": "V\u00e4rskenda Tomorrow.io valikuid" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/fr.json b/homeassistant/components/tomorrowio/translations/fr.json new file mode 100644 index 00000000000..bcb97eb3fc5 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/fr.json @@ -0,0 +1,33 @@ +{ + "config": { + "error": { + "cannot_connect": "\u00c9chec de connexion", + "invalid_api_key": "Cl\u00e9 d'API non valide", + "rate_limited": "Nombre maximal de tentatives de connexion d\u00e9pass\u00e9, veuillez r\u00e9essayer ult\u00e9rieurement.", + "unknown": "Erreur inattendue" + }, + "step": { + "user": { + "data": { + "api_key": "Cl\u00e9 d'API", + "latitude": "Latitude", + "location": "Emplacement", + "longitude": "Longitude", + "name": "Nom" + }, + "description": "Pour obtenir une cl\u00e9 d'API, inscrivez-vous sur [Tomorrow.io](https://app.tomorrow.io/signup)." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "timestep": "Min. entre les pr\u00e9visions NowCast" + }, + "description": "Si vous choisissez d'activer l'entit\u00e9 de pr\u00e9vision \u00ab\u00a0nowcast\u00a0\u00bb, vous pouvez configurer le nombre de minutes entre chaque pr\u00e9vision. Le nombre de pr\u00e9visions fournies d\u00e9pend du nombre de minutes choisies entre les pr\u00e9visions.", + "title": "Mettre \u00e0 jour les options de Tomorrow.io" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/he.json b/homeassistant/components/tomorrowio/translations/he.json new file mode 100644 index 00000000000..20b48520f18 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/he.json @@ -0,0 +1,20 @@ +{ + "config": { + "error": { + "cannot_connect": "\u05d4\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05e0\u05db\u05e9\u05dc\u05d4", + "invalid_api_key": "\u05de\u05e4\u05ea\u05d7 API \u05dc\u05d0 \u05d7\u05d5\u05e7\u05d9", + "unknown": "\u05e9\u05d2\u05d9\u05d0\u05d4 \u05d1\u05dc\u05ea\u05d9 \u05e6\u05e4\u05d5\u05d9\u05d4" + }, + "step": { + "user": { + "data": { + "api_key": "\u05de\u05e4\u05ea\u05d7 API", + "latitude": "\u05e7\u05d5 \u05e8\u05d5\u05d7\u05d1", + "location": "\u05de\u05d9\u05e7\u05d5\u05dd", + "longitude": "\u05e7\u05d5 \u05d0\u05d5\u05e8\u05da", + "name": "\u05e9\u05dd" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/hu.json b/homeassistant/components/tomorrowio/translations/hu.json new file mode 100644 index 00000000000..8f90392234e --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/hu.json @@ -0,0 +1,33 @@ +{ + "config": { + "error": { + "cannot_connect": "Sikertelen csatlakoz\u00e1s", + "invalid_api_key": "\u00c9rv\u00e9nytelen API kulcs", + "rate_limited": "Jelenleg korl\u00e1tozott a hozz\u00e1f\u00e9r\u00e9s, k\u00e9rj\u00fck, pr\u00f3b\u00e1lja meg k\u00e9s\u0151bb \u00fajra.", + "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" + }, + "step": { + "user": { + "data": { + "api_key": "API kulcs", + "latitude": "Sz\u00e9less\u00e9g", + "location": "Elhelyezked\u00e9s", + "longitude": "Hossz\u00fas\u00e1g", + "name": "Elnevez\u00e9s" + }, + "description": "API-kulcs beszerz\u00e9s\u00e9hez regisztr\u00e1ljon a [Tomorrow.io] (https://app.tomorrow.io/signup) oldalon." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "timestep": "Percek NowCast el\u0151rejelz\u00e9sek k\u00f6z\u00f6tt" + }, + "description": "Ha enged\u00e9lyezi a 'nowcast' id\u0151j\u00e1r\u00e1st, be\u00e1ll\u00edthatja az egyes el\u0151rejelz\u00e9sek k\u00f6z\u00f6tt eltelt percek sz\u00e1m\u00e1t. Az el\u0151rejelz\u00e9sek sz\u00e1ma az el\u0151rejelz\u00e9sek k\u00f6z\u00f6tt v\u00e1lasztott percek sz\u00e1m\u00e1t\u00f3l f\u00fcgg.", + "title": "Tomorrow.io be\u00e1ll\u00edt\u00e1sok friss\u00edt\u00e9se" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/id.json b/homeassistant/components/tomorrowio/translations/id.json new file mode 100644 index 00000000000..b428648e799 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/id.json @@ -0,0 +1,33 @@ +{ + "config": { + "error": { + "cannot_connect": "Gagal terhubung", + "invalid_api_key": "Kunci API tidak valid", + "rate_limited": "Saat ini tingkatnya dibatasi, coba lagi nanti.", + "unknown": "Kesalahan yang tidak diharapkan" + }, + "step": { + "user": { + "data": { + "api_key": "Kunci API", + "latitude": "Lintang", + "location": "Lokasi", + "longitude": "Bujur", + "name": "Nama" + }, + "description": "Untuk mendapatkan kunci API, daftar di [Tomorrow.io](https://app.tomorrow.io/signup)." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "timestep": "Jarak Interval Prakiraan NowCast dalam Menit" + }, + "description": "Jika Anda memilih untuk mengaktifkan entitas prakiraan 'nowcast', Anda dapat mengonfigurasi jumlah menit antar-prakiraan. Jumlah prakiraan yang diberikan tergantung pada jumlah menit yang dipilih antar-prakiraan.", + "title": "Perbarui Opsi Tomorrow.io" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/it.json b/homeassistant/components/tomorrowio/translations/it.json new file mode 100644 index 00000000000..9a79896a3d8 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/it.json @@ -0,0 +1,33 @@ +{ + "config": { + "error": { + "cannot_connect": "Impossibile connettersi", + "invalid_api_key": "Chiave API non valida", + "rate_limited": "Attualmente la tariffa \u00e8 limitata, riprova pi\u00f9 tardi.", + "unknown": "Errore imprevisto" + }, + "step": { + "user": { + "data": { + "api_key": "Chiave API", + "latitude": "Latitudine", + "location": "Posizione", + "longitude": "Logitudine", + "name": "Nome" + }, + "description": "Per ottenere una chiave API, registrati su [Tomorrow.io](https://app.tomorrow.io/signup)." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "timestep": "Min. tra le previsioni di NowCast" + }, + "description": "Se scegli di abilitare l'entit\u00e0 di previsione `nowcast`, puoi configurare il numero di minuti tra ciascuna previsione. Il numero di previsioni fornite dipende dal numero di minuti scelti tra le previsioni.", + "title": "Aggiorna le opzioni di Tomorrow.io" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/ja.json b/homeassistant/components/tomorrowio/translations/ja.json new file mode 100644 index 00000000000..17d31f74214 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/ja.json @@ -0,0 +1,33 @@ +{ + "config": { + "error": { + "cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f", + "invalid_api_key": "\u7121\u52b9\u306aAPI\u30ad\u30fc", + "rate_limited": "\u73fe\u5728\u30ec\u30fc\u30c8\u304c\u5236\u9650\u3055\u308c\u3066\u3044\u307e\u3059\u306e\u3067\u3001\u5f8c\u3067\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002", + "unknown": "\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc" + }, + "step": { + "user": { + "data": { + "api_key": "API\u30ad\u30fc", + "latitude": "\u7def\u5ea6", + "location": "\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3", + "longitude": "\u7d4c\u5ea6", + "name": "\u540d\u524d" + }, + "description": "API\u30ad\u30fc\u3092\u53d6\u5f97\u3059\u308b\u306b\u306f\u3001 [Tomorrow.io](https://app.tomorrow.io/signup) \u306b\u30b5\u30a4\u30f3\u30a2\u30c3\u30d7\u3057\u3066\u304f\u3060\u3055\u3044\u3002" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "timestep": "\u6700\u5c0f: Between NowCast Forecasts" + }, + "description": "`nowcast` forecast(\u4e88\u6e2c) \u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u6709\u52b9\u306b\u3059\u308b\u3053\u3068\u3092\u9078\u629e\u3057\u305f\u5834\u5408\u3001\u5404\u4e88\u6e2c\u9593\u306e\u5206\u6570\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u63d0\u4f9b\u3055\u308c\u308bforecast(\u4e88\u6e2c)\u306e\u6570\u306f\u3001forecast(\u4e88\u6e2c)\u306e\u9593\u306b\u9078\u629e\u3057\u305f\u5206\u6570\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002", + "title": "Tomorrow.io\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u66f4\u65b0" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/nl.json b/homeassistant/components/tomorrowio/translations/nl.json new file mode 100644 index 00000000000..d1efb7d75c3 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/nl.json @@ -0,0 +1,33 @@ +{ + "config": { + "error": { + "cannot_connect": "Kan geen verbinding maken", + "invalid_api_key": "Ongeldige API-sleutel", + "rate_limited": "Aantal aanvragen bereikt, probeer later opnieuw", + "unknown": "Onverwachte fout" + }, + "step": { + "user": { + "data": { + "api_key": "API-sleutel", + "latitude": "Breedtegraad", + "location": "Locatie", + "longitude": "Lengtegraad", + "name": "Naam" + }, + "description": "Om een API sleutel te krijgen, meld je aan bij [Tomorrow.io](https://app.tomorrow.io/signup)." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "timestep": "Min. Tussen NowCast Voorspellingen" + }, + "description": "Indien u ervoor kiest om de `nowcast` voorspellingsentiteit in te schakelen, kan u het aantal minuten tussen elke voorspelling configureren. Het aantal voorspellingen hangt af van het aantal gekozen minuten tussen de voorspellingen.", + "title": "Update Tomorrow.io Opties" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/no.json b/homeassistant/components/tomorrowio/translations/no.json new file mode 100644 index 00000000000..bf366895a70 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/no.json @@ -0,0 +1,33 @@ +{ + "config": { + "error": { + "cannot_connect": "Tilkobling mislyktes", + "invalid_api_key": "Ugyldig API-n\u00f8kkel", + "rate_limited": "For \u00f8yeblikket prisbegrenset, pr\u00f8v igjen senere.", + "unknown": "Uventet feil" + }, + "step": { + "user": { + "data": { + "api_key": "API-n\u00f8kkel", + "latitude": "Breddegrad", + "location": "Plassering", + "longitude": "Lengdegrad", + "name": "Navn" + }, + "description": "For \u00e5 f\u00e5 en API-n\u00f8kkel, registrer deg p\u00e5 [Tomorrow.io](https://app.tomorrow.io/signup)." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "timestep": "Min. Mellom NowCast-prognoser" + }, + "description": "Hvis du velger \u00e5 aktivere prognoseenheten \"nowcast\", kan du konfigurere antall minutter mellom hver prognose. Antallet prognoser som gis avhenger av antall minutter valgt mellom prognosene.", + "title": "Oppdater Tomorrow.io-alternativer" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/pl.json b/homeassistant/components/tomorrowio/translations/pl.json new file mode 100644 index 00000000000..4637a553aa4 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/pl.json @@ -0,0 +1,33 @@ +{ + "config": { + "error": { + "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", + "invalid_api_key": "Nieprawid\u0142owy klucz API", + "rate_limited": "Przekroczono limit, spr\u00f3buj ponownie p\u00f3\u017aniej.", + "unknown": "Nieoczekiwany b\u0142\u0105d" + }, + "step": { + "user": { + "data": { + "api_key": "Klucz API", + "latitude": "Szeroko\u015b\u0107 geograficzna", + "location": "Lokalizacja", + "longitude": "D\u0142ugo\u015b\u0107 geograficzna", + "name": "Nazwa" + }, + "description": "Aby uzyska\u0107 klucz API, zarejestruj si\u0119 na [Tomorrow.io](https://app.tomorrow.io/signup)." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "timestep": "Czas (min) mi\u0119dzy prognozami NowCast" + }, + "description": "Je\u015bli zdecydujesz si\u0119 w\u0142\u0105czy\u0107 encj\u0119 prognozy \u201enowcast\u201d, mo\u017cesz skonfigurowa\u0107 liczb\u0119 minut mi\u0119dzy ka\u017cd\u0105 prognoz\u0105. Liczba dostarczonych prognoz zale\u017cy od liczby minut wybranych mi\u0119dzy prognozami.", + "title": "Zaktualizuj opcje Tomorrow.io" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/pt-BR.json b/homeassistant/components/tomorrowio/translations/pt-BR.json new file mode 100644 index 00000000000..83f78e31b8e --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/pt-BR.json @@ -0,0 +1,33 @@ +{ + "config": { + "error": { + "cannot_connect": "Falha ao conectar", + "invalid_api_key": "Chave de API inv\u00e1lida", + "rate_limited": "Taxa atualmente limitada. Tente novamente mais tarde.", + "unknown": "Erro inesperado" + }, + "step": { + "user": { + "data": { + "api_key": "Chave da API", + "latitude": "Latitude", + "location": "Localiza\u00e7\u00e3o", + "longitude": "Longitude", + "name": "Nome" + }, + "description": "Para obter uma chave de API, inscreva-se em [Tomorrow.io](https://app.tomorrow.io/signup)." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "timestep": "Min. Entre Previs\u00f5es NowCast" + }, + "description": "Se voc\u00ea optar por ativar a entidade de previs\u00e3o `nowcast`, poder\u00e1 configurar o n\u00famero de minutos entre cada previs\u00e3o. O n\u00famero de previs\u00f5es fornecidas depende do n\u00famero de minutos escolhidos entre as previs\u00f5es.", + "title": "Atualizar op\u00e7\u00f5es do Tomorrow.io" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/ru.json b/homeassistant/components/tomorrowio/translations/ru.json new file mode 100644 index 00000000000..08e24c5a47a --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/ru.json @@ -0,0 +1,33 @@ +{ + "config": { + "error": { + "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", + "invalid_api_key": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 API.", + "rate_limited": "\u041f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043f\u044b\u0442\u043e\u043a, \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043f\u043e\u0437\u0436\u0435.", + "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." + }, + "step": { + "user": { + "data": { + "api_key": "\u041a\u043b\u044e\u0447 API", + "latitude": "\u0428\u0438\u0440\u043e\u0442\u0430", + "location": "\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435", + "longitude": "\u0414\u043e\u043b\u0433\u043e\u0442\u0430", + "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435" + }, + "description": "\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043b\u044e\u0447 API, \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0439\u0442\u0435\u0441\u044c \u043d\u0430 [Tomorrow.io](https://app.tomorrow.io/signup)." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "timestep": "\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430\u043c\u0438 NowCast (\u0432 \u043c\u0438\u043d\u0443\u0442\u0430\u0445)" + }, + "description": "\u0415\u0441\u043b\u0438 \u0412\u044b \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0435 \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430 'nowcast', \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430. \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u043e\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430\u043c\u0438.", + "title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Tomorrow.io" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/sensor.bg.json b/homeassistant/components/tomorrowio/translations/sensor.bg.json new file mode 100644 index 00000000000..1a5c2989702 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/sensor.bg.json @@ -0,0 +1,8 @@ +{ + "state": { + "tomorrowio__precipitation_type": { + "rain": "\u0414\u044a\u0436\u0434", + "snow": "\u0421\u043d\u044f\u0433" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/sensor.ca.json b/homeassistant/components/tomorrowio/translations/sensor.ca.json new file mode 100644 index 00000000000..161978d1919 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/sensor.ca.json @@ -0,0 +1,27 @@ +{ + "state": { + "tomorrowio__health_concern": { + "good": "Bo", + "hazardous": "Perill\u00f3s", + "moderate": "Moderat", + "unhealthy": "Poc saludable", + "unhealthy_for_sensitive_groups": "No saludable per a grups sensibles", + "very_unhealthy": "Gens saludable" + }, + "tomorrowio__pollen_index": { + "high": "Alt", + "low": "Baix", + "medium": "Mitj\u00e0", + "none": "Cap", + "very_high": "Molt alt", + "very_low": "Molt baix" + }, + "tomorrowio__precipitation_type": { + "freezing_rain": "Pluja congelada", + "ice_pellets": "Gran\u00eds", + "none": "Cap", + "rain": "Pluja", + "snow": "Neu" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/sensor.de.json b/homeassistant/components/tomorrowio/translations/sensor.de.json new file mode 100644 index 00000000000..801833520f7 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/sensor.de.json @@ -0,0 +1,27 @@ +{ + "state": { + "tomorrowio__health_concern": { + "good": "Gut", + "hazardous": "Gef\u00e4hrlich", + "moderate": "M\u00e4\u00dfig", + "unhealthy": "Ungesund", + "unhealthy_for_sensitive_groups": "Ungesund f\u00fcr sensible Gruppen", + "very_unhealthy": "Sehr ungesund" + }, + "tomorrowio__pollen_index": { + "high": "Hoch", + "low": "Niedrig", + "medium": "Mittel", + "none": "Keiner", + "very_high": "Sehr hoch", + "very_low": "Sehr niedrig" + }, + "tomorrowio__precipitation_type": { + "freezing_rain": "Gefrierender Regen", + "ice_pellets": "Graupel", + "none": "Keiner", + "rain": "Regen", + "snow": "Schnee" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/sensor.el.json b/homeassistant/components/tomorrowio/translations/sensor.el.json new file mode 100644 index 00000000000..fd4ca22f8d0 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/sensor.el.json @@ -0,0 +1,27 @@ +{ + "state": { + "tomorrowio__health_concern": { + "good": "\u039a\u03b1\u03bb\u03cc", + "hazardous": "\u0395\u03c0\u03b9\u03ba\u03af\u03bd\u03b4\u03c5\u03bd\u03bf", + "moderate": "\u039c\u03ad\u03c4\u03c1\u03b9\u03bf", + "unhealthy": "\u0391\u03bd\u03b8\u03c5\u03b3\u03b9\u03b5\u03b9\u03bd\u03cc", + "unhealthy_for_sensitive_groups": "\u0391\u03bd\u03b8\u03c5\u03b3\u03b9\u03b5\u03b9\u03bd\u03cc \u03b3\u03b9\u03b1 \u03b5\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b5\u03c2 \u03bf\u03bc\u03ac\u03b4\u03b5\u03c2", + "very_unhealthy": "\u03a0\u03bf\u03bb\u03cd \u0391\u03bd\u03b8\u03c5\u03b3\u03b9\u03b5\u03b9\u03bd\u03cc" + }, + "tomorrowio__pollen_index": { + "high": "\u03a5\u03c8\u03b7\u03bb\u03cc", + "low": "\u03a7\u03b1\u03bc\u03b7\u03bb\u03cc", + "medium": "\u039c\u03b5\u03c3\u03b1\u03af\u03bf", + "none": "\u03a4\u03af\u03c0\u03bf\u03c4\u03b1", + "very_high": "\u03a0\u03bf\u03bb\u03cd \u03c5\u03c8\u03b7\u03bb\u03cc", + "very_low": "\u03a0\u03bf\u03bb\u03cd \u03c7\u03b1\u03bc\u03b7\u03bb\u03cc" + }, + "tomorrowio__precipitation_type": { + "freezing_rain": "\u03a0\u03b1\u03b3\u03c9\u03bc\u03ad\u03bd\u03b7 \u03b2\u03c1\u03bf\u03c7\u03ae", + "ice_pellets": "\u03a7\u03b1\u03bb\u03ac\u03b6\u03b9", + "none": "\u03a4\u03af\u03c0\u03bf\u03c4\u03b1", + "rain": "\u0392\u03c1\u03bf\u03c7\u03ae", + "snow": "\u03a7\u03b9\u03cc\u03bd\u03b9" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/sensor.et.json b/homeassistant/components/tomorrowio/translations/sensor.et.json new file mode 100644 index 00000000000..56482b21e12 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/sensor.et.json @@ -0,0 +1,27 @@ +{ + "state": { + "tomorrowio__health_concern": { + "good": "Hea", + "hazardous": "Ohtlik", + "moderate": "M\u00f5\u00f5dukas", + "unhealthy": "Ebatervislik", + "unhealthy_for_sensitive_groups": "Ebatervislik riskir\u00fchmale", + "very_unhealthy": "V\u00e4ga ebatervislik" + }, + "tomorrowio__pollen_index": { + "high": "K\u00f5rge", + "low": "Madal", + "medium": "Keskmine", + "none": "Saastet pole", + "very_high": "V\u00e4ga k\u00f5rge", + "very_low": "V\u00e4ga madal" + }, + "tomorrowio__precipitation_type": { + "freezing_rain": "J\u00e4\u00e4vihm", + "ice_pellets": "J\u00e4\u00e4kruubid", + "none": "Sademeid pole", + "rain": "Vihm", + "snow": "Lumi" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/sensor.fr.json b/homeassistant/components/tomorrowio/translations/sensor.fr.json new file mode 100644 index 00000000000..c0e2ee8747d --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/sensor.fr.json @@ -0,0 +1,27 @@ +{ + "state": { + "tomorrowio__health_concern": { + "good": "Bon", + "hazardous": "Dangereux", + "moderate": "Mod\u00e9r\u00e9", + "unhealthy": "Malsain", + "unhealthy_for_sensitive_groups": "Malsain pour les groupes sensibles", + "very_unhealthy": "Tr\u00e8s malsain" + }, + "tomorrowio__pollen_index": { + "high": "\u00c9lev\u00e9", + "low": "Faible", + "medium": "Moyen", + "none": "Nul", + "very_high": "Tr\u00e8s \u00e9lev\u00e9", + "very_low": "Tr\u00e8s faible" + }, + "tomorrowio__precipitation_type": { + "freezing_rain": "Pluie vergla\u00e7ante", + "ice_pellets": "Gr\u00e9sil", + "none": "Aucune", + "rain": "Pluie", + "snow": "Neige" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/sensor.hu.json b/homeassistant/components/tomorrowio/translations/sensor.hu.json new file mode 100644 index 00000000000..3377ecb47dd --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/sensor.hu.json @@ -0,0 +1,27 @@ +{ + "state": { + "tomorrowio__health_concern": { + "good": "J\u00f3", + "hazardous": "Vesz\u00e9lyes", + "moderate": "M\u00e9rs\u00e9kelt", + "unhealthy": "Eg\u00e9szs\u00e9gtelen", + "unhealthy_for_sensitive_groups": "Eg\u00e9szs\u00e9gtelen \u00e9rz\u00e9keny csoportok sz\u00e1m\u00e1ra", + "very_unhealthy": "Nagyon eg\u00e9szs\u00e9gtelen" + }, + "tomorrowio__pollen_index": { + "high": "Magas", + "low": "Alacsony", + "medium": "K\u00f6zepes", + "none": "Nincs", + "very_high": "Nagyon magas", + "very_low": "Nagyon alacsony" + }, + "tomorrowio__precipitation_type": { + "freezing_rain": "Havas es\u0151", + "ice_pellets": "\u00d3nos es\u0151", + "none": "Nincs", + "rain": "Es\u0151", + "snow": "Havaz\u00e1s" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/sensor.id.json b/homeassistant/components/tomorrowio/translations/sensor.id.json new file mode 100644 index 00000000000..6323cf6beef --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/sensor.id.json @@ -0,0 +1,27 @@ +{ + "state": { + "tomorrowio__health_concern": { + "good": "Bagus", + "hazardous": "Berbahaya", + "moderate": "Sedang", + "unhealthy": "Tidak Sehat", + "unhealthy_for_sensitive_groups": "Tidak Sehat untuk Kelompok Sensitif", + "very_unhealthy": "Sangat Tidak Sehat" + }, + "tomorrowio__pollen_index": { + "high": "Tinggi", + "low": "Rendah", + "medium": "Sedang", + "none": "Tidak Ada", + "very_high": "Sangat Tinggi", + "very_low": "Sangat Rendah" + }, + "tomorrowio__precipitation_type": { + "freezing_rain": "Hujan Beku", + "ice_pellets": "Hujan Es", + "none": "Tidak Ada", + "rain": "Hujan", + "snow": "Salju" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/sensor.it.json b/homeassistant/components/tomorrowio/translations/sensor.it.json new file mode 100644 index 00000000000..b8f281a462c --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/sensor.it.json @@ -0,0 +1,27 @@ +{ + "state": { + "tomorrowio__health_concern": { + "good": "Buono", + "hazardous": "Pericoloso", + "moderate": "Moderato", + "unhealthy": "Malsano", + "unhealthy_for_sensitive_groups": "Malsano per i gruppi sensibili", + "very_unhealthy": "Molto malsano" + }, + "tomorrowio__pollen_index": { + "high": "Alto", + "low": "Basso", + "medium": "Medio", + "none": "Nessuno", + "very_high": "Molto alto", + "very_low": "Molto basso" + }, + "tomorrowio__precipitation_type": { + "freezing_rain": "Pioggia gelata", + "ice_pellets": "Grandine", + "none": "Nessuna", + "rain": "Pioggia", + "snow": "Neve" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/sensor.ja.json b/homeassistant/components/tomorrowio/translations/sensor.ja.json new file mode 100644 index 00000000000..286be339435 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/sensor.ja.json @@ -0,0 +1,27 @@ +{ + "state": { + "tomorrowio__health_concern": { + "good": "\u826f\u3044", + "hazardous": "\u5371\u967a", + "moderate": "\u9069\u5ea6", + "unhealthy": "\u4e0d\u5065\u5eb7", + "unhealthy_for_sensitive_groups": "\u654f\u611f\u306a\u30b0\u30eb\u30fc\u30d7\u306b\u3068\u3063\u3066\u4e0d\u5065\u5eb7", + "very_unhealthy": "\u3068\u3066\u3082\u4e0d\u5065\u5eb7" + }, + "tomorrowio__pollen_index": { + "high": "\u9ad8", + "low": "\u4f4e", + "medium": "\u4e2d", + "none": "\u306a\u3057", + "very_high": "\u975e\u5e38\u306b\u9ad8\u3044", + "very_low": "\u3068\u3066\u3082\u4f4e\u3044" + }, + "tomorrowio__precipitation_type": { + "freezing_rain": "\u51cd\u3066\u3064\u304f\u96e8", + "ice_pellets": "\u51cd\u96e8", + "none": "\u306a\u3057", + "rain": "\u96e8", + "snow": "\u96ea" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/sensor.nl.json b/homeassistant/components/tomorrowio/translations/sensor.nl.json new file mode 100644 index 00000000000..5ca31721f94 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/sensor.nl.json @@ -0,0 +1,27 @@ +{ + "state": { + "tomorrowio__health_concern": { + "good": "Goed", + "hazardous": "Gevaarlijk", + "moderate": "Gematigd", + "unhealthy": "Ongezond", + "unhealthy_for_sensitive_groups": "Ongezond voor gevoelige groepen", + "very_unhealthy": "Zeer ongezond" + }, + "tomorrowio__pollen_index": { + "high": "Hoog", + "low": "Laag", + "medium": "Medium", + "none": "Geen", + "very_high": "Zeer Hoog", + "very_low": "Zeer Laag" + }, + "tomorrowio__precipitation_type": { + "freezing_rain": "IJzel", + "ice_pellets": "Hagel", + "none": "Geen", + "rain": "Regen", + "snow": "Sneeuw" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/sensor.no.json b/homeassistant/components/tomorrowio/translations/sensor.no.json new file mode 100644 index 00000000000..2eeabe5b569 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/sensor.no.json @@ -0,0 +1,27 @@ +{ + "state": { + "tomorrowio__health_concern": { + "good": "Bra", + "hazardous": "Farlig", + "moderate": "Moderat", + "unhealthy": "Usunt", + "unhealthy_for_sensitive_groups": "Usunt for sensitive grupper", + "very_unhealthy": "Veldig usunt" + }, + "tomorrowio__pollen_index": { + "high": "H\u00f8y", + "low": "Lav", + "medium": "Medium", + "none": "Ingen", + "very_high": "Veldig h\u00f8y", + "very_low": "Veldig lav" + }, + "tomorrowio__precipitation_type": { + "freezing_rain": "Underkj\u00f8lt regn", + "ice_pellets": "Is tapper", + "none": "Ingen", + "rain": "Regn", + "snow": "Sn\u00f8" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/sensor.pl.json b/homeassistant/components/tomorrowio/translations/sensor.pl.json new file mode 100644 index 00000000000..7140524fc0b --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/sensor.pl.json @@ -0,0 +1,27 @@ +{ + "state": { + "tomorrowio__health_concern": { + "good": "dobre", + "hazardous": "niebezpieczne", + "moderate": "umiarkowane", + "unhealthy": "niezdrowe", + "unhealthy_for_sensitive_groups": "niezdrowe dla wra\u017cliwych grup", + "very_unhealthy": "bardzo niezdrowe" + }, + "tomorrowio__pollen_index": { + "high": "wysoki", + "low": "niski", + "medium": "\u015bredni", + "none": "brak", + "very_high": "bardzo wysoki", + "very_low": "bardzo niski" + }, + "tomorrowio__precipitation_type": { + "freezing_rain": "marzn\u0105cy deszcz", + "ice_pellets": "granulki lodu", + "none": "brak", + "rain": "deszcz", + "snow": "\u015bnieg" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/sensor.pt-BR.json b/homeassistant/components/tomorrowio/translations/sensor.pt-BR.json new file mode 100644 index 00000000000..b63572d731d --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/sensor.pt-BR.json @@ -0,0 +1,27 @@ +{ + "state": { + "tomorrowio__health_concern": { + "good": "Bom", + "hazardous": "Perigoso", + "moderate": "Moderado", + "unhealthy": "Insalubre", + "unhealthy_for_sensitive_groups": "Insalubre para grupos sens\u00edveis", + "very_unhealthy": "Muito Insalubre" + }, + "tomorrowio__pollen_index": { + "high": "Alto", + "low": "Baixo", + "medium": "M\u00e9dio", + "none": "Nenhum", + "very_high": "Muito alto", + "very_low": "Muito baixo" + }, + "tomorrowio__precipitation_type": { + "freezing_rain": "Chuva congelante", + "ice_pellets": "Pelotas de Gelo", + "none": "Nenhum", + "rain": "Chuva", + "snow": "Neve" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/sensor.ru.json b/homeassistant/components/tomorrowio/translations/sensor.ru.json new file mode 100644 index 00000000000..f9be80a4bad --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/sensor.ru.json @@ -0,0 +1,27 @@ +{ + "state": { + "tomorrowio__health_concern": { + "good": "\u0425\u043e\u0440\u043e\u0448\u043e", + "hazardous": "\u041e\u043f\u0430\u0441\u043d\u043e", + "moderate": "\u0421\u0440\u0435\u0434\u043d\u0435", + "unhealthy": "\u0412\u0440\u0435\u0434\u043d\u043e", + "unhealthy_for_sensitive_groups": "\u0412\u0440\u0435\u0434\u043d\u043e \u0434\u043b\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u044b\u0445 \u0433\u0440\u0443\u043f\u043f", + "very_unhealthy": "\u041e\u0447\u0435\u043d\u044c \u0432\u0440\u0435\u0434\u043d\u043e" + }, + "tomorrowio__pollen_index": { + "high": "\u0412\u044b\u0441\u043e\u043a\u0438\u0439", + "low": "\u041d\u0438\u0437\u043a\u0438\u0439", + "medium": "\u0421\u0440\u0435\u0434\u043d\u0438\u0439", + "none": "\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442", + "very_high": "\u041e\u0447\u0435\u043d\u044c \u0432\u044b\u0441\u043e\u043a\u0438\u0439", + "very_low": "\u041e\u0447\u0435\u043d\u044c \u043d\u0438\u0437\u043a\u0438\u0439" + }, + "tomorrowio__precipitation_type": { + "freezing_rain": "\u041b\u0435\u0434\u044f\u043d\u043e\u0439 \u0434\u043e\u0436\u0434\u044c", + "ice_pellets": "\u041b\u0435\u0434\u044f\u043d\u0430\u044f \u043a\u0440\u0443\u043f\u0430", + "none": "\u0411\u0435\u0437 \u043e\u0441\u0430\u0434\u043a\u043e\u0432", + "rain": "\u0414\u043e\u0436\u0434\u044c", + "snow": "\u0421\u043d\u0435\u0433" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/sensor.tr.json b/homeassistant/components/tomorrowio/translations/sensor.tr.json new file mode 100644 index 00000000000..553d72f6178 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/sensor.tr.json @@ -0,0 +1,27 @@ +{ + "state": { + "tomorrowio__health_concern": { + "good": "\u0130yi", + "hazardous": "Tehlikeli", + "moderate": "Il\u0131ml\u0131", + "unhealthy": "Sa\u011fl\u0131ks\u0131z", + "unhealthy_for_sensitive_groups": "Hassas Gruplar \u0130\u00e7in Sa\u011fl\u0131ks\u0131z", + "very_unhealthy": "\u00c7ok Sa\u011fl\u0131ks\u0131z" + }, + "tomorrowio__pollen_index": { + "high": "Y\u00fcksek", + "low": "D\u00fc\u015f\u00fck", + "medium": "Orta", + "none": "Hi\u00e7biri", + "very_high": "\u00c7ok Y\u00fcksek", + "very_low": "\u00c7ok D\u00fc\u015f\u00fck" + }, + "tomorrowio__precipitation_type": { + "freezing_rain": "Dondurucu Ya\u011fmur", + "ice_pellets": "Buz Peletleri", + "none": "Hi\u00e7biri", + "rain": "Ya\u011fmur", + "snow": "Kar" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/sensor.zh-Hant.json b/homeassistant/components/tomorrowio/translations/sensor.zh-Hant.json new file mode 100644 index 00000000000..6cc5c1a42dd --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/sensor.zh-Hant.json @@ -0,0 +1,27 @@ +{ + "state": { + "tomorrowio__health_concern": { + "good": "\u826f\u597d", + "hazardous": "\u5371\u96aa", + "moderate": "\u4e2d\u7b49", + "unhealthy": "\u4e0d\u5065\u5eb7", + "unhealthy_for_sensitive_groups": "\u5c0d\u654f\u611f\u65cf\u7fa4\u4e0d\u5065\u5eb7", + "very_unhealthy": "\u975e\u5e38\u4e0d\u5065\u5eb7" + }, + "tomorrowio__pollen_index": { + "high": "\u9ad8", + "low": "\u4f4e", + "medium": "\u4e2d", + "none": "\u7121", + "very_high": "\u6975\u9ad8", + "very_low": "\u6975\u4f4e" + }, + "tomorrowio__precipitation_type": { + "freezing_rain": "\u51cd\u96e8", + "ice_pellets": "\u51b0\u73e0", + "none": "\u7121", + "rain": "\u4e0b\u96e8", + "snow": "\u4e0b\u96ea" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/tr.json b/homeassistant/components/tomorrowio/translations/tr.json new file mode 100644 index 00000000000..4193428459c --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/tr.json @@ -0,0 +1,33 @@ +{ + "config": { + "error": { + "cannot_connect": "Ba\u011flanma hatas\u0131", + "invalid_api_key": "Ge\u00e7ersiz API anahtar\u0131", + "rate_limited": "\u015eu anda oran s\u0131n\u0131rl\u0131, l\u00fctfen daha sonra tekrar deneyin.", + "unknown": "Beklenmeyen hata" + }, + "step": { + "user": { + "data": { + "api_key": "API Anahtar\u0131", + "latitude": "Enlem", + "location": "Konum", + "longitude": "Boylam", + "name": "Ad" + }, + "description": "API anahtar\u0131 almak i\u00e7in [Tomorrow.io](https://app.tomorrow.io/signup) adresinden kaydolun." + } + } + }, + "options": { + "step": { + "init": { + "data": { + "timestep": "NowCast Tahminleri Aras\u0131nda Min." + }, + "description": "\"\u015eimdi yay\u0131n\" tahmin varl\u0131\u011f\u0131n\u0131 etkinle\u015ftirmeyi se\u00e7erseniz, her tahmin aras\u0131ndaki dakika say\u0131s\u0131n\u0131 yap\u0131land\u0131rabilirsiniz. Sa\u011flanan tahminlerin say\u0131s\u0131, tahminler aras\u0131nda se\u00e7ilen dakika say\u0131s\u0131na ba\u011fl\u0131d\u0131r.", + "title": "Tomorrow.io Se\u00e7eneklerini G\u00fcncelleyin" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tomorrowio/translations/zh-Hant.json b/homeassistant/components/tomorrowio/translations/zh-Hant.json new file mode 100644 index 00000000000..bf7043b0225 --- /dev/null +++ b/homeassistant/components/tomorrowio/translations/zh-Hant.json @@ -0,0 +1,33 @@ +{ + "config": { + "error": { + "cannot_connect": "\u9023\u7dda\u5931\u6557", + "invalid_api_key": "API \u91d1\u9470\u7121\u6548", + "rate_limited": "\u9054\u5230\u9650\u5236\u983b\u7387\u3001\u8acb\u7a0d\u5019\u518d\u8a66\u3002", + "unknown": "\u672a\u9810\u671f\u932f\u8aa4" + }, + "step": { + "user": { + "data": { + "api_key": "API \u91d1\u9470", + "latitude": "\u7def\u5ea6", + "location": "\u5ea7\u6a19", + "longitude": "\u7d93\u5ea6", + "name": "\u540d\u7a31" + }, + "description": "\u8acb\u53c3\u95b1\u7db2\u5740\u4ee5\u4e86\u89e3\u5982\u4f55\u53d6\u5f97 API \u91d1\u9470\uff1a[Tomorrow.io](https://app.tomorrow.io/signup)\u3002" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "timestep": "NowCast \u9810\u5831\u9593\u9694\u5206\u9418" + }, + "description": "\u5047\u5982\u9078\u64c7\u958b\u555f `nowcast` \u9810\u5831\u5be6\u9ad4\u3001\u5c07\u53ef\u4ee5\u8a2d\u5b9a\u9810\u5831\u983b\u7387\u9593\u9694\u5206\u9418\u6578\u3002\u6839\u64da\u6240\u8f38\u5165\u7684\u9593\u9694\u6642\u9593\u5c07\u6c7a\u5b9a\u9810\u5831\u7684\u6578\u76ee\u3002", + "title": "\u66f4\u65b0 Tomorrow.io \u9078\u9805" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/toon/translations/hu.json b/homeassistant/components/toon/translations/hu.json index b1a69144dd5..a9192ed013a 100644 --- a/homeassistant/components/toon/translations/hu.json +++ b/homeassistant/components/toon/translations/hu.json @@ -5,7 +5,7 @@ "authorize_url_timeout": "Id\u0151t\u00fall\u00e9p\u00e9s a hiteles\u00edt\u00e9si URL gener\u00e1l\u00e1sa sor\u00e1n.", "missing_configuration": "A komponens nincs konfigur\u00e1lva. K\u00e9rem, k\u00f6vesse a dokument\u00e1ci\u00f3t.", "no_agreements": "Ennek a fi\u00f3knak nincsenek Toon kijelz\u0151i.", - "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3t [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lsz.", + "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3 [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lhat\u00f3.", "unknown_authorize_url_generation": "Ismeretlen hiba t\u00f6rt\u00e9nt a hiteles\u00edt\u00e9si link gener\u00e1l\u00e1sa sor\u00e1n." }, "step": { diff --git a/homeassistant/components/toon/translations/it.json b/homeassistant/components/toon/translations/it.json index 724c61dba3c..9125bac09db 100644 --- a/homeassistant/components/toon/translations/it.json +++ b/homeassistant/components/toon/translations/it.json @@ -3,7 +3,7 @@ "abort": { "already_configured": "L'accordo selezionato \u00e8 gi\u00e0 configurato.", "authorize_url_timeout": "Tempo scaduto nel generare l'URL di autorizzazione.", - "missing_configuration": "Il componente non \u00e8 configurato. Si prega di seguire la documentazione.", + "missing_configuration": "Il componente non \u00e8 configurato. Segui la documentazione.", "no_agreements": "Questo account non ha display Toon.", "no_url_available": "Nessun URL disponibile. Per informazioni su questo errore, [controlla la sezione della guida]({docs_url})", "unknown_authorize_url_generation": "Errore sconosciuto durante la generazione di un URL di autorizzazione." diff --git a/homeassistant/components/tplink/translations/it.json b/homeassistant/components/tplink/translations/it.json index 3fd30d8d12c..6ab46615373 100644 --- a/homeassistant/components/tplink/translations/it.json +++ b/homeassistant/components/tplink/translations/it.json @@ -25,7 +25,7 @@ "data": { "host": "Host" }, - "description": "Se si lascia vuoto l'host, l'individuazione verr\u00e0 utilizzata per trovare i dispositivi." + "description": "Se si lascia vuoto l'host, l'individuazione sar\u00e0 utilizzata per trovare i dispositivi." } } } diff --git a/homeassistant/components/tradfri/translations/hu.json b/homeassistant/components/tradfri/translations/hu.json index 01bb51b0af3..03a8ddd8fa6 100644 --- a/homeassistant/components/tradfri/translations/hu.json +++ b/homeassistant/components/tradfri/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van" + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve" }, "error": { "cannot_authenticate": "Sikertelen hiteles\u00edt\u00e9s. A Gateway egy m\u00e1sik eszk\u00f6zzel van p\u00e1ros\u00edtva, mint p\u00e9ld\u00e1ul a Homekittel?", diff --git a/homeassistant/components/trafikverket_ferry/translations/de.json b/homeassistant/components/trafikverket_ferry/translations/de.json new file mode 100644 index 00000000000..298a0e1711c --- /dev/null +++ b/homeassistant/components/trafikverket_ferry/translations/de.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "already_configured": "Konto wurde bereits konfiguriert", + "reauth_successful": "Die erneute Authentifizierung war erfolgreich" + }, + "error": { + "cannot_connect": "Verbindung fehlgeschlagen", + "incorrect_api_key": "Ung\u00fcltiger API-Schl\u00fcssel f\u00fcr ausgew\u00e4hltes Konto", + "invalid_auth": "Ung\u00fcltige Authentifizierung", + "invalid_route": "Konnte keine Route mit den angegebenen Informationen finden" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API-Schl\u00fcssel" + } + }, + "user": { + "data": { + "api_key": "API-Schl\u00fcssel", + "from": "Vom Hafen", + "time": "Zeit", + "to": "Zum Hafen", + "weekday": "Wochentage" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_ferry/translations/el.json b/homeassistant/components/trafikverket_ferry/translations/el.json new file mode 100644 index 00000000000..552e8ad0160 --- /dev/null +++ b/homeassistant/components/trafikverket_ferry/translations/el.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "already_configured": "\u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03b8\u03b5\u03af", + "reauth_successful": "\u039f \u03b5\u03ba \u03bd\u03ad\u03bf\u03c5 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03ae\u03c4\u03b1\u03bd \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03ae\u03c2" + }, + "error": { + "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", + "incorrect_api_key": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03ba\u03bb\u03b5\u03b9\u03b4\u03af API \u03b3\u03b9\u03b1 \u03c4\u03bf\u03bd \u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc", + "invalid_auth": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", + "invalid_route": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b5\u03cd\u03c1\u03b5\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae\u03c2 \u03bc\u03b5 \u03c4\u03b9\u03c2 \u03c0\u03b1\u03c1\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03b5\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "\u039a\u03bb\u03b5\u03b9\u03b4\u03af API" + } + }, + "user": { + "data": { + "api_key": "\u039a\u03bb\u03b5\u03b9\u03b4\u03af API", + "from": "\u0391\u03c0\u03cc \u03c4\u03bf \u039b\u03b9\u03bc\u03ac\u03bd\u03b9", + "time": "\u038f\u03c1\u03b1", + "to": "\u03a0\u03c1\u03bf\u03c2 \u039b\u03b9\u03bc\u03ac\u03bd\u03b9", + "weekday": "\u0395\u03c1\u03b3\u03ac\u03c3\u03b9\u03bc\u03b5\u03c2" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_ferry/translations/et.json b/homeassistant/components/trafikverket_ferry/translations/et.json new file mode 100644 index 00000000000..ec791013788 --- /dev/null +++ b/homeassistant/components/trafikverket_ferry/translations/et.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "already_configured": "Konto on juba h\u00e4\u00e4lestatud", + "reauth_successful": "Taastuvastamine \u00f5nnestus" + }, + "error": { + "cannot_connect": "\u00dchendamine nurjus", + "incorrect_api_key": "Valitud konto API-v\u00f5ti on kehtetu", + "invalid_auth": "Tuvastamine nurjus", + "invalid_route": "Esitatud teabega marsruuti ei leitud" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API v\u00f5ti" + } + }, + "user": { + "data": { + "api_key": "API v\u00f5ti", + "from": "Sadamast", + "time": "Kellaaeg", + "to": "Sadamasse", + "weekday": "N\u00e4dalap\u00e4ev" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_ferry/translations/fr.json b/homeassistant/components/trafikverket_ferry/translations/fr.json new file mode 100644 index 00000000000..4288f56908f --- /dev/null +++ b/homeassistant/components/trafikverket_ferry/translations/fr.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "already_configured": "Le compte est d\u00e9j\u00e0 configur\u00e9", + "reauth_successful": "La r\u00e9-authentification a r\u00e9ussi" + }, + "error": { + "cannot_connect": "\u00c9chec de connexion", + "incorrect_api_key": "Cl\u00e9 d'API non valide pour le compte s\u00e9lectionn\u00e9", + "invalid_auth": "Authentification non valide", + "invalid_route": "Impossible de trouver un itin\u00e9raire avec les informations fournies" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "Cl\u00e9 d'API" + } + }, + "user": { + "data": { + "api_key": "Cl\u00e9 d'API", + "from": "Port de d\u00e9part", + "time": "Heure", + "to": "Port d'arriv\u00e9e", + "weekday": "Jours de la semaine" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_ferry/translations/hu.json b/homeassistant/components/trafikverket_ferry/translations/hu.json new file mode 100644 index 00000000000..88b2b2ebfa7 --- /dev/null +++ b/homeassistant/components/trafikverket_ferry/translations/hu.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "already_configured": "A fi\u00f3k m\u00e1r konfigur\u00e1lva van", + "reauth_successful": "Az \u00fajrahiteles\u00edt\u00e9s sikeres volt." + }, + "error": { + "cannot_connect": "Sikertelen csatlakoz\u00e1s", + "incorrect_api_key": "\u00c9rv\u00e9nytelen API-kulcs a megadott fi\u00f3khoz", + "invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s", + "invalid_route": "Nem tal\u00e1lhat\u00f3 \u00fatvonal a megadott inform\u00e1ci\u00f3k alapj\u00e1n" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API kulcs" + } + }, + "user": { + "data": { + "api_key": "API kulcs", + "from": "Kik\u00f6t\u0151b\u0151l", + "time": "Id\u0151pont", + "to": "Kik\u00f6t\u0151be", + "weekday": "H\u00e9tk\u00f6znap" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_ferry/translations/id.json b/homeassistant/components/trafikverket_ferry/translations/id.json new file mode 100644 index 00000000000..1d476f2c0e1 --- /dev/null +++ b/homeassistant/components/trafikverket_ferry/translations/id.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "already_configured": "Akun sudah dikonfigurasi", + "reauth_successful": "Autentikasi ulang berhasil" + }, + "error": { + "cannot_connect": "Gagal terhubung", + "incorrect_api_key": "Kunci API tidak valid untuk akun yang dipilih", + "invalid_auth": "Autentikasi tidak valid", + "invalid_route": "Tidak dapat menemukan rute dengan informasi yang ditentukan" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "Kunci API" + } + }, + "user": { + "data": { + "api_key": "Kunci API", + "from": "Dari Pelabuhan", + "time": "Waktu", + "to": "Ke Pelabuhan", + "weekday": "Hari kerja" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_ferry/translations/it.json b/homeassistant/components/trafikverket_ferry/translations/it.json new file mode 100644 index 00000000000..160953d9f82 --- /dev/null +++ b/homeassistant/components/trafikverket_ferry/translations/it.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "already_configured": "L'account \u00e8 gi\u00e0 configurato", + "reauth_successful": "La nuova autenticazione \u00e8 stata eseguita correttamente" + }, + "error": { + "cannot_connect": "Impossibile connettersi", + "incorrect_api_key": "Chiave API non valida per l'account selezionato", + "invalid_auth": "Autenticazione non valida", + "invalid_route": "Impossibile trovare il percorso con le informazioni fornite" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "Chiave API" + } + }, + "user": { + "data": { + "api_key": "Chiave API", + "from": "Dal porto", + "time": "Orario", + "to": "Al porto", + "weekday": "Giorni della settimana" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_ferry/translations/nl.json b/homeassistant/components/trafikverket_ferry/translations/nl.json new file mode 100644 index 00000000000..f84232839c8 --- /dev/null +++ b/homeassistant/components/trafikverket_ferry/translations/nl.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "already_configured": "Account is al geconfigureerd", + "reauth_successful": "Herauthenticatie was succesvol" + }, + "error": { + "cannot_connect": "Kan geen verbinding maken", + "incorrect_api_key": "Ongeldige API-sleutel voor geselecteerde account", + "invalid_auth": "Ongeldige authenticatie", + "invalid_route": "Kon geen route vinden met verstrekte informatie" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API-sleutel" + } + }, + "user": { + "data": { + "api_key": "API-sleutel", + "from": "Van de haven", + "time": "Tijd", + "to": "Naar de haven", + "weekday": "Weekdagen" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_ferry/translations/no.json b/homeassistant/components/trafikverket_ferry/translations/no.json new file mode 100644 index 00000000000..4cc6286d78f --- /dev/null +++ b/homeassistant/components/trafikverket_ferry/translations/no.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "already_configured": "Kontoen er allerede konfigurert", + "reauth_successful": "Godkjenning p\u00e5 nytt var vellykket" + }, + "error": { + "cannot_connect": "Tilkobling mislyktes", + "incorrect_api_key": "Ugyldig API-n\u00f8kkel for valgt konto", + "invalid_auth": "Ugyldig godkjenning", + "invalid_route": "Kunne ikke finne rute med oppgitt informasjon" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API-n\u00f8kkel" + } + }, + "user": { + "data": { + "api_key": "API-n\u00f8kkel", + "from": "Fra havnen", + "time": "Tid", + "to": "Til havn", + "weekday": "Hverdager" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_ferry/translations/pl.json b/homeassistant/components/trafikverket_ferry/translations/pl.json new file mode 100644 index 00000000000..5e7d133b1e5 --- /dev/null +++ b/homeassistant/components/trafikverket_ferry/translations/pl.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "already_configured": "Konto jest ju\u017c skonfigurowane", + "reauth_successful": "Ponowne uwierzytelnienie powiod\u0142o si\u0119" + }, + "error": { + "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", + "incorrect_api_key": "Nieprawid\u0142owy klucz API dla wybranego konta", + "invalid_auth": "Niepoprawne uwierzytelnienie", + "invalid_route": "Nie mo\u017cna znale\u017a\u0107 trasy dla podanych informacjami" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "Klucz API" + } + }, + "user": { + "data": { + "api_key": "Klucz API", + "from": "Z portu", + "time": "Czas", + "to": "Do portu", + "weekday": "Dni powszednie" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_ferry/translations/pt-BR.json b/homeassistant/components/trafikverket_ferry/translations/pt-BR.json new file mode 100644 index 00000000000..e2349c181c8 --- /dev/null +++ b/homeassistant/components/trafikverket_ferry/translations/pt-BR.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "already_configured": "A conta j\u00e1 foi configurada", + "reauth_successful": "A reautentica\u00e7\u00e3o foi bem-sucedida" + }, + "error": { + "cannot_connect": "Falha ao conectar", + "incorrect_api_key": "Chave de API inv\u00e1lida para a conta selecionada", + "invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida", + "invalid_route": "N\u00e3o foi poss\u00edvel encontrar a rota com as informa\u00e7\u00f5es fornecidas" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "Chave da API" + } + }, + "user": { + "data": { + "api_key": "Chave da API", + "from": "Do porto", + "time": "Tempo", + "to": "Ao porto", + "weekday": "Dias \u00fateis" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_ferry/translations/ru.json b/homeassistant/components/trafikverket_ferry/translations/ru.json new file mode 100644 index 00000000000..c87b6e941f3 --- /dev/null +++ b/homeassistant/components/trafikverket_ferry/translations/ru.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "already_configured": "\u042d\u0442\u0430 \u0443\u0447\u0451\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 Home Assistant.", + "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e." + }, + "error": { + "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", + "incorrect_api_key": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 API \u0434\u043b\u044f \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438.", + "invalid_auth": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.", + "invalid_route": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0441 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439." + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "\u041a\u043b\u044e\u0447 API" + } + }, + "user": { + "data": { + "api_key": "\u041a\u043b\u044e\u0447 API", + "from": "\u0418\u0437 \u0433\u0430\u0432\u0430\u043d\u0438", + "time": "\u0412\u0440\u0435\u043c\u044f", + "to": "\u0412 \u0433\u0430\u0432\u0430\u043d\u044c", + "weekday": "\u0411\u0443\u0434\u043d\u0438\u0435 \u0434\u043d\u0438" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_ferry/translations/zh-Hant.json b/homeassistant/components/trafikverket_ferry/translations/zh-Hant.json new file mode 100644 index 00000000000..9acd15fdfb1 --- /dev/null +++ b/homeassistant/components/trafikverket_ferry/translations/zh-Hant.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "already_configured": "\u5e33\u865f\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", + "reauth_successful": "\u91cd\u65b0\u8a8d\u8b49\u6210\u529f" + }, + "error": { + "cannot_connect": "\u9023\u7dda\u5931\u6557", + "incorrect_api_key": "\u6240\u9078\u64c7\u5e33\u865f\u4e4b API \u91d1\u9470\u7121\u6548", + "invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548", + "invalid_route": "\u627e\u4e0d\u5230\u63d0\u4f9b\u8cc7\u8a0a\u4e4b\u8def\u7dda" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API \u91d1\u9470" + } + }, + "user": { + "data": { + "api_key": "API \u91d1\u9470", + "from": "\u81ea\u6d77\u6e2f", + "time": "\u6642\u9593", + "to": "\u81f3\u6d77\u6e2f", + "weekday": "\u5e73\u65e5" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_train/translations/bg.json b/homeassistant/components/trafikverket_train/translations/bg.json new file mode 100644 index 00000000000..91bb9c04e35 --- /dev/null +++ b/homeassistant/components/trafikverket_train/translations/bg.json @@ -0,0 +1,24 @@ +{ + "config": { + "abort": { + "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0442\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0432\u0430\u043d\u0435 \u0431\u0435\u0448\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e" + }, + "error": { + "cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435", + "invalid_auth": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0432\u0430\u043d\u0435" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API \u043a\u043b\u044e\u0447" + } + }, + "user": { + "data": { + "api_key": "API \u043a\u043b\u044e\u0447", + "weekday": "\u0414\u043d\u0438" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_train/translations/ca.json b/homeassistant/components/trafikverket_train/translations/ca.json new file mode 100644 index 00000000000..ed9a28841a2 --- /dev/null +++ b/homeassistant/components/trafikverket_train/translations/ca.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "El compte ja est\u00e0 configurat", + "reauth_successful": "Re-autenticaci\u00f3 realitzada correctament" + }, + "error": { + "cannot_connect": "Ha fallat la connexi\u00f3", + "incorrect_api_key": "Clau API inv\u00e0lida per al compte seleccionat", + "invalid_auth": "Autenticaci\u00f3 inv\u00e0lida", + "invalid_station": "No s'ha trobat cap estaci\u00f3 amb el nom especificat", + "invalid_time": "Hora proporcionada inv\u00e0lida", + "more_stations": "S'han trobat m\u00faltiples estacions amb el nom especificat" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "Clau API" + } + }, + "user": { + "data": { + "api_key": "Clau API", + "from": "Des de l'estaci\u00f3", + "time": "Hora (opcional)", + "to": "A l'estaci\u00f3", + "weekday": "Dies" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_train/translations/de.json b/homeassistant/components/trafikverket_train/translations/de.json new file mode 100644 index 00000000000..057a416d70c --- /dev/null +++ b/homeassistant/components/trafikverket_train/translations/de.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "Konto wurde bereits konfiguriert", + "reauth_successful": "Die erneute Authentifizierung war erfolgreich" + }, + "error": { + "cannot_connect": "Verbindung fehlgeschlagen", + "incorrect_api_key": "Ung\u00fcltiger API-Schl\u00fcssel f\u00fcr ausgew\u00e4hltes Konto", + "invalid_auth": "Ung\u00fcltige Authentifizierung", + "invalid_station": "Es konnte kein Bahnhof mit dem angegebenen Namen gefunden werden", + "invalid_time": "Ung\u00fcltige Zeitangabe", + "more_stations": "Mehrere Bahnh\u00f6fe mit dem angegebenen Namen gefunden" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API-Schl\u00fcssel" + } + }, + "user": { + "data": { + "api_key": "API-Schl\u00fcssel", + "from": "Vom Bahnhof", + "time": "Zeit (optional)", + "to": "Zum Bahnhof", + "weekday": "Tage" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_train/translations/el.json b/homeassistant/components/trafikverket_train/translations/el.json new file mode 100644 index 00000000000..1dea0a7a8da --- /dev/null +++ b/homeassistant/components/trafikverket_train/translations/el.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "\u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03b8\u03b5\u03af", + "reauth_successful": "\u039f \u03b5\u03ba \u03bd\u03ad\u03bf\u03c5 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03ae\u03c4\u03b1\u03bd \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03ae\u03c2" + }, + "error": { + "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", + "incorrect_api_key": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03ba\u03bb\u03b5\u03b9\u03b4\u03af API \u03b3\u03b9\u03b1 \u03c4\u03bf\u03bd \u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc", + "invalid_auth": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", + "invalid_station": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b5\u03cd\u03c1\u03b5\u03c3\u03b7 \u03c3\u03c4\u03b1\u03b8\u03bc\u03bf\u03cd \u03bc\u03b5 \u03c4\u03bf \u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1", + "invalid_time": "\u0394\u03cc\u03b8\u03b7\u03ba\u03b5 \u03bc\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03ce\u03c1\u03b1", + "more_stations": "\u0392\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03c0\u03bf\u03bb\u03bb\u03b1\u03c0\u03bb\u03bf\u03af \u03c3\u03c4\u03b1\u03b8\u03bc\u03bf\u03af \u03bc\u03b5 \u03c4\u03bf \u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "\u039a\u03bb\u03b5\u03b9\u03b4\u03af API" + } + }, + "user": { + "data": { + "api_key": "\u039a\u03bb\u03b5\u03b9\u03b4\u03af API", + "from": "\u0391\u03c0\u03cc \u03c3\u03c4\u03b1\u03b8\u03bc\u03cc", + "time": "\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 (\u03c0\u03c1\u03bf\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc)", + "to": "\u03a0\u03c1\u03bf\u03c2 \u03c3\u03c4\u03b1\u03b8\u03bc\u03cc", + "weekday": "\u0397\u03bc\u03ad\u03c1\u03b5\u03c2" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_train/translations/en.json b/homeassistant/components/trafikverket_train/translations/en.json index dc91c2097f3..86969fc7d96 100644 --- a/homeassistant/components/trafikverket_train/translations/en.json +++ b/homeassistant/components/trafikverket_train/translations/en.json @@ -6,26 +6,26 @@ }, "error": { "cannot_connect": "Failed to connect", + "incorrect_api_key": "Invalid API key for selected account", "invalid_auth": "Invalid authentication", "invalid_station": "Could not find a station with the specified name", - "more_stations": "Found multiple stations with the specified name", "invalid_time": "Invalid time provided", - "incorrect_api_key": "Invalid API key for selected account" + "more_stations": "Found multiple stations with the specified name" }, "step": { - "user": { - "data": { - "api_key": "API Key", - "to": "To station", - "from": "From station", - "time": "Time (optional)", - "weekday": "Days" - } - }, "reauth_confirm": { "data": { "api_key": "API Key" } + }, + "user": { + "data": { + "api_key": "API Key", + "from": "From station", + "time": "Time (optional)", + "to": "To station", + "weekday": "Days" + } } } } diff --git a/homeassistant/components/trafikverket_train/translations/et.json b/homeassistant/components/trafikverket_train/translations/et.json new file mode 100644 index 00000000000..9712adacce7 --- /dev/null +++ b/homeassistant/components/trafikverket_train/translations/et.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "Konto on juba seadistatud", + "reauth_successful": "Taastuvastamine \u00f5nnestus" + }, + "error": { + "cannot_connect": "\u00dchendamine nurjus", + "incorrect_api_key": "Valitud konto API-v\u00f5ti on kehtetu", + "invalid_auth": "Tuvastamine nurjus", + "invalid_station": "M\u00e4\u00e4ratud nimega jaama ei leitud.", + "invalid_time": "Esitatud on kehtetu aeg", + "more_stations": "Leiti mitu m\u00e4\u00e4ratud nimega jaama" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API v\u00f5ti" + } + }, + "user": { + "data": { + "api_key": "API v\u00f5ti", + "from": "L\u00e4htejaam", + "time": "Aeg (valikuline)", + "to": "Sihtjaam", + "weekday": "N\u00e4dalap\u00e4evad" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_train/translations/fr.json b/homeassistant/components/trafikverket_train/translations/fr.json new file mode 100644 index 00000000000..357edca46fa --- /dev/null +++ b/homeassistant/components/trafikverket_train/translations/fr.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "Le compte est d\u00e9j\u00e0 configur\u00e9", + "reauth_successful": "La r\u00e9-authentification a r\u00e9ussi" + }, + "error": { + "cannot_connect": "\u00c9chec de connexion", + "incorrect_api_key": "Cl\u00e9 d'API non valide pour le compte s\u00e9lectionn\u00e9", + "invalid_auth": "Authentification non valide", + "invalid_station": "Aucune gare portant le nom sp\u00e9cifi\u00e9 n'a \u00e9t\u00e9 trouv\u00e9e", + "invalid_time": "Heure fournie non valide", + "more_stations": "Plusieurs gares portant le nom sp\u00e9cifi\u00e9 ont \u00e9t\u00e9 trouv\u00e9es" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "Cl\u00e9 d'API" + } + }, + "user": { + "data": { + "api_key": "Cl\u00e9 d'API", + "from": "Gare de d\u00e9part", + "time": "Heure (facultatif)", + "to": "Gare d'arriv\u00e9e", + "weekday": "Jours" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_train/translations/he.json b/homeassistant/components/trafikverket_train/translations/he.json new file mode 100644 index 00000000000..29f4fc720da --- /dev/null +++ b/homeassistant/components/trafikverket_train/translations/he.json @@ -0,0 +1,24 @@ +{ + "config": { + "abort": { + "already_configured": "\u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05d7\u05e9\u05d1\u05d5\u05df \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4", + "reauth_successful": "\u05d4\u05d0\u05d9\u05de\u05d5\u05ea \u05de\u05d7\u05d3\u05e9 \u05d4\u05e6\u05dc\u05d9\u05d7" + }, + "error": { + "cannot_connect": "\u05d4\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05e0\u05db\u05e9\u05dc\u05d4", + "invalid_auth": "\u05d0\u05d9\u05de\u05d5\u05ea \u05dc\u05d0 \u05d7\u05d5\u05e7\u05d9" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "\u05de\u05e4\u05ea\u05d7 API" + } + }, + "user": { + "data": { + "api_key": "\u05de\u05e4\u05ea\u05d7 API" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_train/translations/hu.json b/homeassistant/components/trafikverket_train/translations/hu.json new file mode 100644 index 00000000000..ff4a4ee7142 --- /dev/null +++ b/homeassistant/components/trafikverket_train/translations/hu.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "A fi\u00f3k m\u00e1r konfigur\u00e1lva van", + "reauth_successful": "Az \u00fajrahiteles\u00edt\u00e9s sikeres volt." + }, + "error": { + "cannot_connect": "Sikertelen csatlakoz\u00e1s", + "incorrect_api_key": "\u00c9rv\u00e9nytelen API-kulcs a megadott fi\u00f3khoz", + "invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s", + "invalid_station": "Nem tal\u00e1lhat\u00f3 megadott nev\u0171 \u00e1llom\u00e1s", + "invalid_time": "\u00c9rv\u00e9nytelen megadott id\u0151", + "more_stations": "T\u00f6bb \u00e1llom\u00e1s tal\u00e1lhat\u00f3 a megadott n\u00e9vvel" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API kulcs" + } + }, + "user": { + "data": { + "api_key": "API kulcs", + "from": "\u00c1llom\u00e1sr\u00f3l", + "time": "Id\u0151 (opcion\u00e1lis)", + "to": "\u00c1llom\u00e1sig", + "weekday": "Napok" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_train/translations/id.json b/homeassistant/components/trafikverket_train/translations/id.json new file mode 100644 index 00000000000..4723183257c --- /dev/null +++ b/homeassistant/components/trafikverket_train/translations/id.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "Akun sudah dikonfigurasi", + "reauth_successful": "Autentikasi ulang berhasil" + }, + "error": { + "cannot_connect": "Gagal terhubung", + "incorrect_api_key": "Kunci API tidak valid untuk akun yang dipilih", + "invalid_auth": "Autentikasi tidak valid", + "invalid_station": "Tidak dapat menemukan SPBU dengan nama yang ditentukan", + "invalid_time": "Waktu yang disediakan tidak valid", + "more_stations": "Ditemukan beberapa SPBU dengan nama yang ditentukan" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "Kunci API" + } + }, + "user": { + "data": { + "api_key": "Kunci API", + "from": "Dari stasiun", + "time": "Waktu (opsional)", + "to": "Ke stasiun", + "weekday": "Hari" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_train/translations/it.json b/homeassistant/components/trafikverket_train/translations/it.json new file mode 100644 index 00000000000..fe9c37e8e17 --- /dev/null +++ b/homeassistant/components/trafikverket_train/translations/it.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "L'account \u00e8 gi\u00e0 configurato", + "reauth_successful": "La nuova autenticazione \u00e8 stata eseguita correttamente" + }, + "error": { + "cannot_connect": "Impossibile connettersi", + "incorrect_api_key": "Chiave API non valida per l'account selezionato", + "invalid_auth": "Autenticazione non valida", + "invalid_station": "Impossibile trovare una stazione con il nome specificato", + "invalid_time": "Tempo fornito non valido", + "more_stations": "Trovate pi\u00f9 stazioni con il nome specificato" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "Chiave API" + } + }, + "user": { + "data": { + "api_key": "Chiave API", + "from": "Dalla stazione", + "time": "Tempo (facoltativo)", + "to": "Alla stazione", + "weekday": "Tariffe supportate" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_train/translations/ja.json b/homeassistant/components/trafikverket_train/translations/ja.json new file mode 100644 index 00000000000..ec4b5a4015a --- /dev/null +++ b/homeassistant/components/trafikverket_train/translations/ja.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "\u30a2\u30ab\u30a6\u30f3\u30c8\u306f\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059", + "reauth_successful": "\u518d\u8a8d\u8a3c\u306b\u6210\u529f\u3057\u307e\u3057\u305f" + }, + "error": { + "cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f", + "incorrect_api_key": "\u9078\u629e\u3057\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u306eAPI\u30ad\u30fc\u304c\u7121\u52b9\u3067\u3059", + "invalid_auth": "\u7121\u52b9\u306a\u8a8d\u8a3c", + "invalid_station": "\u6307\u5b9a\u3055\u308c\u305f\u540d\u524d\u306e\u30b9\u30c6\u30fc\u30b7\u30e7\u30f3\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f", + "invalid_time": "\u7121\u52b9\u306a\u6642\u9593\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f", + "more_stations": "\u6307\u5b9a\u3055\u308c\u305f\u540d\u524d\u306e\u30b9\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u8907\u6570\u767a\u898b" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API\u30ad\u30fc" + } + }, + "user": { + "data": { + "api_key": "API\u30ad\u30fc", + "from": "\u30b9\u30c6\u30fc\u30b7\u30e7\u30f3\u304b\u3089", + "time": "\u6642\u9593\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\uff09", + "to": "\u30b9\u30c6\u30fc\u30b7\u30e7\u30f3\u3078", + "weekday": "\u65e5" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_train/translations/nl.json b/homeassistant/components/trafikverket_train/translations/nl.json new file mode 100644 index 00000000000..d076f8b2961 --- /dev/null +++ b/homeassistant/components/trafikverket_train/translations/nl.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "Account is al geconfigureerd", + "reauth_successful": "Herauthenticatie was succesvol" + }, + "error": { + "cannot_connect": "Kan geen verbinding maken", + "incorrect_api_key": "Ongeldige API-sleutel voor geselecteerd account", + "invalid_auth": "Ongeldige authenticatie", + "invalid_station": "Kon geen station vinden met de opgegeven naam", + "invalid_time": "Ongeldige tijd opgegeven", + "more_stations": "Meerdere stations gevonden met de opgegeven naam" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API-sleutel" + } + }, + "user": { + "data": { + "api_key": "API-sleutel", + "from": "Van station", + "time": "Tijd (optioneel)", + "to": "Naar station", + "weekday": "Dagen" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_train/translations/no.json b/homeassistant/components/trafikverket_train/translations/no.json new file mode 100644 index 00000000000..12feb2f6abf --- /dev/null +++ b/homeassistant/components/trafikverket_train/translations/no.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "Kontoen er allerede konfigurert", + "reauth_successful": "Godkjenning p\u00e5 nytt var vellykket" + }, + "error": { + "cannot_connect": "Tilkobling mislyktes", + "incorrect_api_key": "Ugyldig API-n\u00f8kkel for valgt konto", + "invalid_auth": "Ugyldig godkjenning", + "invalid_station": "Kunne ikke finne en stasjon med det angitte navnet", + "invalid_time": "Ugyldig tid oppgitt", + "more_stations": "Fant flere stasjoner med det angitte navnet" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API-n\u00f8kkel" + } + }, + "user": { + "data": { + "api_key": "API-n\u00f8kkel", + "from": "Fra stasjon", + "time": "Tid (valgfritt)", + "to": "Til stasjon", + "weekday": "Dager" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_train/translations/pl.json b/homeassistant/components/trafikverket_train/translations/pl.json new file mode 100644 index 00000000000..0ff0f49c701 --- /dev/null +++ b/homeassistant/components/trafikverket_train/translations/pl.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "Konto jest ju\u017c skonfigurowane", + "reauth_successful": "Ponowne uwierzytelnienie powiod\u0142o si\u0119" + }, + "error": { + "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", + "incorrect_api_key": "Nieprawid\u0142owy klucz API dla wybranego konta", + "invalid_auth": "Niepoprawne uwierzytelnienie", + "invalid_station": "Nie mo\u017cna znale\u017a\u0107 stacji o podanej nazwie", + "invalid_time": "Podano nieprawid\u0142owy czas", + "more_stations": "Znaleziono wiele stacji o podanej nazwie" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "Klucz API" + } + }, + "user": { + "data": { + "api_key": "Klucz API", + "from": "Ze stacji", + "time": "Czas (opcjonalnie)", + "to": "Do stacji", + "weekday": "Dni" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_train/translations/pt-BR.json b/homeassistant/components/trafikverket_train/translations/pt-BR.json new file mode 100644 index 00000000000..43dcf558a18 --- /dev/null +++ b/homeassistant/components/trafikverket_train/translations/pt-BR.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "A conta j\u00e1 foi configurada", + "reauth_successful": "A reautentica\u00e7\u00e3o foi bem-sucedida" + }, + "error": { + "cannot_connect": "Falha ao conectar", + "incorrect_api_key": "Chave de API inv\u00e1lida para a conta selecionada", + "invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida", + "invalid_station": "N\u00e3o foi poss\u00edvel encontrar uma esta\u00e7\u00e3o com o nome especificado", + "invalid_time": "Tempo inv\u00e1lido fornecido", + "more_stations": "Encontrado v\u00e1rias esta\u00e7\u00f5es com o nome especificado" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "Chave da API" + } + }, + "user": { + "data": { + "api_key": "Chave da API", + "from": "Da esta\u00e7\u00e3o", + "time": "Tempo (opcional)", + "to": "Para esta\u00e7\u00e3o", + "weekday": "Dias" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_train/translations/ru.json b/homeassistant/components/trafikverket_train/translations/ru.json new file mode 100644 index 00000000000..27a0b1d6393 --- /dev/null +++ b/homeassistant/components/trafikverket_train/translations/ru.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "\u042d\u0442\u0430 \u0443\u0447\u0451\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 Home Assistant.", + "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e." + }, + "error": { + "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", + "incorrect_api_key": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 API \u0434\u043b\u044f \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438.", + "invalid_auth": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.", + "invalid_station": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0441\u0442\u0430\u043d\u0446\u0438\u044e \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c.", + "invalid_time": "\u0423\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f.", + "more_stations": "\u041d\u0430\u0439\u0434\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u043d\u0446\u0438\u0439 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c." + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "\u041a\u043b\u044e\u0447 API" + } + }, + "user": { + "data": { + "api_key": "\u041a\u043b\u044e\u0447 API", + "from": "\u041e\u0442 \u0441\u0442\u0430\u043d\u0446\u0438\u0438", + "time": "\u0412\u0440\u0435\u043c\u044f (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)", + "to": "\u041d\u0430 \u0441\u0442\u0430\u043d\u0446\u0438\u044e", + "weekday": "\u0414\u043d\u0438" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_train/translations/tr.json b/homeassistant/components/trafikverket_train/translations/tr.json new file mode 100644 index 00000000000..9e7f21b5685 --- /dev/null +++ b/homeassistant/components/trafikverket_train/translations/tr.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "Hesap zaten yap\u0131land\u0131r\u0131lm\u0131\u015f", + "reauth_successful": "Yeniden kimlik do\u011frulama ba\u015far\u0131l\u0131 oldu" + }, + "error": { + "cannot_connect": "Ba\u011flanma hatas\u0131", + "incorrect_api_key": "Se\u00e7ilen hesap i\u00e7in ge\u00e7ersiz API anahtar\u0131", + "invalid_auth": "Ge\u00e7ersiz kimlik do\u011frulama", + "invalid_station": "Belirtilen ada sahip bir istasyon bulunamad\u0131", + "invalid_time": "Ge\u00e7ersiz s\u00fcre sa\u011fland\u0131", + "more_stations": "Belirtilen ada sahip birden fazla istasyon bulundu" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API Anahtar\u0131" + } + }, + "user": { + "data": { + "api_key": "API Anahtar\u0131", + "from": "\u0130stasyondan", + "time": "Zaman (iste\u011fe ba\u011fl\u0131)", + "to": "\u0130stasyona", + "weekday": "G\u00fcn" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/trafikverket_train/translations/zh-Hant.json b/homeassistant/components/trafikverket_train/translations/zh-Hant.json new file mode 100644 index 00000000000..be3d51c19fd --- /dev/null +++ b/homeassistant/components/trafikverket_train/translations/zh-Hant.json @@ -0,0 +1,32 @@ +{ + "config": { + "abort": { + "already_configured": "\u5e33\u865f\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", + "reauth_successful": "\u91cd\u65b0\u8a8d\u8b49\u6210\u529f" + }, + "error": { + "cannot_connect": "\u9023\u7dda\u5931\u6557", + "incorrect_api_key": "\u6240\u9078\u64c7\u5e33\u865f\u4e4b API \u91d1\u9470\u7121\u6548", + "invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548", + "invalid_station": "\u627e\u4e0d\u5230\u8a72\u6307\u5b9a\u540d\u7a31\u4e4b\u8eca\u7ad9", + "invalid_time": "\u63d0\u4f9b\u6642\u9593\u7121\u6548", + "more_stations": "\u6307\u5b9a\u540d\u7a31\u627e\u5230\u591a\u500b\u8eca\u7ad9" + }, + "step": { + "reauth_confirm": { + "data": { + "api_key": "API \u91d1\u9470" + } + }, + "user": { + "data": { + "api_key": "API \u91d1\u9470", + "from": "\u51fa\u767c\u52a0\u6cb9\u7ad9", + "time": "\u6642\u9593\uff08\u9078\u9805\uff09", + "to": "\u62b5\u9054\u52a0\u6cb9\u7ad9", + "weekday": "\u5929" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/transmission/translations/hu.json b/homeassistant/components/transmission/translations/hu.json index 5e3dcfd2b6c..79a60dc2b5b 100644 --- a/homeassistant/components/transmission/translations/hu.json +++ b/homeassistant/components/transmission/translations/hu.json @@ -12,7 +12,7 @@ "user": { "data": { "host": "C\u00edm", - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "password": "Jelsz\u00f3", "port": "Port", "username": "Felhaszn\u00e1l\u00f3n\u00e9v" diff --git a/homeassistant/components/tuya/translations/select.he.json b/homeassistant/components/tuya/translations/select.he.json index f31e63515c8..5a29489bdcc 100644 --- a/homeassistant/components/tuya/translations/select.he.json +++ b/homeassistant/components/tuya/translations/select.he.json @@ -98,7 +98,7 @@ "power_on": "\u05de\u05d5\u05e4\u05e2\u05dc" }, "tuya__vacuum_cistern": { - "closed": "\u05e1\u05d2\u05d5\u05e8", + "closed": "\u05e0\u05e1\u05d2\u05e8", "high": "\u05d2\u05d1\u05d5\u05d4", "low": "\u05e0\u05de\u05d5\u05da", "middle": "\u05d0\u05de\u05e6\u05e2" diff --git a/homeassistant/components/tuya/translations/select.pt-BR.json b/homeassistant/components/tuya/translations/select.pt-BR.json index aed86dfe4ce..90ae768c418 100644 --- a/homeassistant/components/tuya/translations/select.pt-BR.json +++ b/homeassistant/components/tuya/translations/select.pt-BR.json @@ -109,19 +109,19 @@ "small": "Pequeno" }, "tuya__vacuum_mode": { - "bow": "", + "bow": "Bow", "chargego": "Retornar para Base", - "left_bow": "", - "left_spiral": "", + "left_bow": "Bow Left", + "left_spiral": "Spiral Left", "mop": "Esfregar (Mop)", "part": "Parcial", - "partial_bow": "", + "partial_bow": "Bow Partially", "pick_zone": "C\u00f4modos Selecionados", "point": "Ponto", "pose": "Ponto Definido", "random": "Aleat\u00f3rio", - "right_bow": "", - "right_spiral": "", + "right_bow": "Bow Right", + "right_spiral": "Spiral Right", "single": "Simples", "smart": "Autom\u00e1tica", "spiral": "Espiral", diff --git a/homeassistant/components/twentemilieu/translations/bg.json b/homeassistant/components/twentemilieu/translations/bg.json index 8844b6124e0..6ddc25a367e 100644 --- a/homeassistant/components/twentemilieu/translations/bg.json +++ b/homeassistant/components/twentemilieu/translations/bg.json @@ -10,8 +10,7 @@ "house_number": "\u041d\u043e\u043c\u0435\u0440 \u043d\u0430 \u043a\u044a\u0449\u0430", "post_code": "\u041f\u043e\u0449\u0435\u043d\u0441\u043a\u0438 \u043a\u043e\u0434" }, - "description": "\u0421\u044a\u0437\u0434\u0430\u0439\u0442\u0435 Twente Milieu, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u044f\u0449\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u0441\u044a\u0431\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043e\u0442\u043f\u0430\u0434\u044a\u0446\u0438 \u043d\u0430 \u0432\u0430\u0448\u0438\u044f \u0430\u0434\u0440\u0435\u0441.", - "title": "Twente Milieu" + "description": "\u0421\u044a\u0437\u0434\u0430\u0439\u0442\u0435 Twente Milieu, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u044f\u0449\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u0441\u044a\u0431\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043e\u0442\u043f\u0430\u0434\u044a\u0446\u0438 \u043d\u0430 \u0432\u0430\u0448\u0438\u044f \u0430\u0434\u0440\u0435\u0441." } } } diff --git a/homeassistant/components/twentemilieu/translations/ca.json b/homeassistant/components/twentemilieu/translations/ca.json index 6c1469f16c1..c9a3b0bb6cb 100644 --- a/homeassistant/components/twentemilieu/translations/ca.json +++ b/homeassistant/components/twentemilieu/translations/ca.json @@ -14,8 +14,7 @@ "house_number": "N\u00famero de casa", "post_code": "Codi postal" }, - "description": "Configura Twente Milieu amb informaci\u00f3 de la recollida de residus a la teva adre\u00e7a.", - "title": "Twente Milieu" + "description": "Configura Twente Milieu amb informaci\u00f3 de la recollida de residus a la teva adre\u00e7a." } } } diff --git a/homeassistant/components/twentemilieu/translations/cs.json b/homeassistant/components/twentemilieu/translations/cs.json index 2eb6e267b2c..edcb6a22594 100644 --- a/homeassistant/components/twentemilieu/translations/cs.json +++ b/homeassistant/components/twentemilieu/translations/cs.json @@ -12,8 +12,7 @@ "house_letter": "Roz\u0161\u00ed\u0159en\u00ed ozna\u010den\u00ed \u010d\u00edsla domu", "house_number": "\u010c\u00edslo domu", "post_code": "PS\u010c" - }, - "title": "Twente Milieu" + } } } } diff --git a/homeassistant/components/twentemilieu/translations/da.json b/homeassistant/components/twentemilieu/translations/da.json index e1c9b6024ad..6930a37adb4 100644 --- a/homeassistant/components/twentemilieu/translations/da.json +++ b/homeassistant/components/twentemilieu/translations/da.json @@ -10,8 +10,7 @@ "house_number": "Husnummer", "post_code": "Postnummer" }, - "description": "Konfigurer Twente Milieu, der leverer oplysninger om indsamling af affald p\u00e5 din adresse.", - "title": "Twente Milieu" + "description": "Konfigurer Twente Milieu, der leverer oplysninger om indsamling af affald p\u00e5 din adresse." } } } diff --git a/homeassistant/components/twentemilieu/translations/de.json b/homeassistant/components/twentemilieu/translations/de.json index 4ce9ed23ea7..36ea2123bdb 100644 --- a/homeassistant/components/twentemilieu/translations/de.json +++ b/homeassistant/components/twentemilieu/translations/de.json @@ -14,8 +14,7 @@ "house_number": "Hausnummer", "post_code": "Postleitzahl" }, - "description": "Richte Twente Milieu mit Informationen zur Abfallsammlung unter deiner Adresse ein.", - "title": "Twente Milieu" + "description": "Richte Twente Milieu mit Informationen zur Abfallsammlung unter deiner Adresse ein." } } } diff --git a/homeassistant/components/twentemilieu/translations/el.json b/homeassistant/components/twentemilieu/translations/el.json index f4949d3832d..d8cdd9672bd 100644 --- a/homeassistant/components/twentemilieu/translations/el.json +++ b/homeassistant/components/twentemilieu/translations/el.json @@ -14,8 +14,7 @@ "house_number": "\u0391\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03c3\u03c0\u03b9\u03c4\u03b9\u03bf\u03cd", "post_code": "\u03a4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b9\u03ba\u03cc\u03c2 \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1\u03c2" }, - "description": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03c4\u03b5 \u03c4\u03bf Twente Milieu \u03c0\u03b1\u03c1\u03ad\u03c7\u03bf\u03bd\u03c4\u03b1\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03b7 \u03c3\u03c5\u03bb\u03bb\u03bf\u03b3\u03ae \u03b1\u03c0\u03bf\u03b2\u03bb\u03ae\u03c4\u03c9\u03bd \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03ae \u03c3\u03b1\u03c2.", - "title": "Twente Milieu" + "description": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03c4\u03b5 \u03c4\u03bf Twente Milieu \u03c0\u03b1\u03c1\u03ad\u03c7\u03bf\u03bd\u03c4\u03b1\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03b7 \u03c3\u03c5\u03bb\u03bb\u03bf\u03b3\u03ae \u03b1\u03c0\u03bf\u03b2\u03bb\u03ae\u03c4\u03c9\u03bd \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03ae \u03c3\u03b1\u03c2." } } } diff --git a/homeassistant/components/twentemilieu/translations/en.json b/homeassistant/components/twentemilieu/translations/en.json index fdc4023f89b..ac5f9e54b2e 100644 --- a/homeassistant/components/twentemilieu/translations/en.json +++ b/homeassistant/components/twentemilieu/translations/en.json @@ -14,8 +14,7 @@ "house_number": "House number", "post_code": "Postal code" }, - "description": "Set up Twente Milieu providing waste collection information on your address.", - "title": "Twente Milieu" + "description": "Set up Twente Milieu providing waste collection information on your address." } } } diff --git a/homeassistant/components/twentemilieu/translations/es-419.json b/homeassistant/components/twentemilieu/translations/es-419.json index 8adddffd407..7eb541978d3 100644 --- a/homeassistant/components/twentemilieu/translations/es-419.json +++ b/homeassistant/components/twentemilieu/translations/es-419.json @@ -10,8 +10,7 @@ "house_number": "N\u00famero de casa", "post_code": "C\u00f3digo postal" }, - "description": "Configure Twente Milieu proporcionando informaci\u00f3n de recolecci\u00f3n de residuos en su direcci\u00f3n.", - "title": "Twente Milieu" + "description": "Configure Twente Milieu proporcionando informaci\u00f3n de recolecci\u00f3n de residuos en su direcci\u00f3n." } } } diff --git a/homeassistant/components/twentemilieu/translations/es.json b/homeassistant/components/twentemilieu/translations/es.json index cf8410c55ad..259d202a9c3 100644 --- a/homeassistant/components/twentemilieu/translations/es.json +++ b/homeassistant/components/twentemilieu/translations/es.json @@ -14,8 +14,7 @@ "house_number": "N\u00famero de casa", "post_code": "C\u00f3digo postal" }, - "description": "Configure Twente Milieu proporcionando informaci\u00f3n sobre la recolecci\u00f3n de residuos en su direcci\u00f3n.", - "title": "Twente Milieu" + "description": "Configure Twente Milieu proporcionando informaci\u00f3n sobre la recolecci\u00f3n de residuos en su direcci\u00f3n." } } } diff --git a/homeassistant/components/twentemilieu/translations/et.json b/homeassistant/components/twentemilieu/translations/et.json index a77657d19ff..31c8ea6ee95 100644 --- a/homeassistant/components/twentemilieu/translations/et.json +++ b/homeassistant/components/twentemilieu/translations/et.json @@ -14,8 +14,7 @@ "house_number": "Maja number", "post_code": "Sihtnumber" }, - "description": "Seadista Twente Milieu, mis pakub j\u00e4\u00e4tmekogumist teie aadressil.", - "title": "" + "description": "Seadista Twente Milieu, mis pakub j\u00e4\u00e4tmekogumist teie aadressil." } } } diff --git a/homeassistant/components/twentemilieu/translations/fr.json b/homeassistant/components/twentemilieu/translations/fr.json index 6530216a5a4..560fcb89c29 100644 --- a/homeassistant/components/twentemilieu/translations/fr.json +++ b/homeassistant/components/twentemilieu/translations/fr.json @@ -14,8 +14,7 @@ "house_number": "Num\u00e9ro de maison", "post_code": "Code postal" }, - "description": "Configurez Twente Milieu en fournissant des informations sur la collecte des d\u00e9chets sur votre adresse.", - "title": "Twente Milieu" + "description": "Configurez Twente Milieu en fournissant des informations sur la collecte des d\u00e9chets sur votre adresse." } } } diff --git a/homeassistant/components/twentemilieu/translations/hu.json b/homeassistant/components/twentemilieu/translations/hu.json index 637dadb5baf..97a0cc8f022 100644 --- a/homeassistant/components/twentemilieu/translations/hu.json +++ b/homeassistant/components/twentemilieu/translations/hu.json @@ -14,8 +14,7 @@ "house_number": "h\u00e1zsz\u00e1m", "post_code": "ir\u00e1ny\u00edt\u00f3sz\u00e1m" }, - "description": "\u00c1ll\u00edtsa be a Twente Milieu szolg\u00e1ltat\u00e1st, amely hullad\u00e9kgy\u0171jt\u00e9si inform\u00e1ci\u00f3kat biztos\u00edt a c\u00edm\u00e9re.", - "title": "Twente Milieu" + "description": "\u00c1ll\u00edtsa be a Twente Milieu szolg\u00e1ltat\u00e1st, amely hullad\u00e9kgy\u0171jt\u00e9si inform\u00e1ci\u00f3kat biztos\u00edt a c\u00edm\u00e9re." } } } diff --git a/homeassistant/components/twentemilieu/translations/id.json b/homeassistant/components/twentemilieu/translations/id.json index 38746dfd12f..60148dc396c 100644 --- a/homeassistant/components/twentemilieu/translations/id.json +++ b/homeassistant/components/twentemilieu/translations/id.json @@ -14,8 +14,7 @@ "house_number": "Nomor rumah", "post_code": "Kode pos" }, - "description": "Siapkan Twente Milieu untuk memberikan informasi pengumpulan sampah di alamat Anda.", - "title": "Twente Milieu" + "description": "Siapkan Twente Milieu untuk memberikan informasi pengumpulan sampah di alamat Anda." } } } diff --git a/homeassistant/components/twentemilieu/translations/it.json b/homeassistant/components/twentemilieu/translations/it.json index a374885e7aa..7648d24b5e6 100644 --- a/homeassistant/components/twentemilieu/translations/it.json +++ b/homeassistant/components/twentemilieu/translations/it.json @@ -14,8 +14,7 @@ "house_number": "Numero civico", "post_code": "CAP" }, - "description": "Imposta Twente Milieu fornendo le informazioni sulla raccolta dei rifiuti al tuo indirizzo.", - "title": "Twente Milieu" + "description": "Imposta Twente Milieu fornendo le informazioni sulla raccolta dei rifiuti al tuo indirizzo." } } } diff --git a/homeassistant/components/twentemilieu/translations/ja.json b/homeassistant/components/twentemilieu/translations/ja.json index 8ec65b24fb5..5cd78fbba3c 100644 --- a/homeassistant/components/twentemilieu/translations/ja.json +++ b/homeassistant/components/twentemilieu/translations/ja.json @@ -14,8 +14,7 @@ "house_number": "\u5bb6\u5c4b\u756a\u53f7", "post_code": "\u90f5\u4fbf\u756a\u53f7" }, - "description": "\u3042\u306a\u305f\u306e\u4f4f\u6240\u306eTwente Milieu providing waste collection(\u30b4\u30df\u53ce\u96c6\u60c5\u5831)\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7", - "title": "Twente Milieu" + "description": "\u3042\u306a\u305f\u306e\u4f4f\u6240\u306eTwente Milieu providing waste collection(\u30b4\u30df\u53ce\u96c6\u60c5\u5831)\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7" } } } diff --git a/homeassistant/components/twentemilieu/translations/ko.json b/homeassistant/components/twentemilieu/translations/ko.json index a27df565f1b..985650ff15b 100644 --- a/homeassistant/components/twentemilieu/translations/ko.json +++ b/homeassistant/components/twentemilieu/translations/ko.json @@ -14,8 +14,7 @@ "house_number": "\uc9d1 \ubc88\ud638", "post_code": "\uc6b0\ud3b8\ubc88\ud638" }, - "description": "\uc8fc\uc18c\uc5d0 \uc4f0\ub808\uae30 \uc218\uac70 \uc815\ubcf4\ub97c \ub123\uc5b4 Twente Milieu \ub97c \uc124\uc815\ud574\uc8fc\uc138\uc694.", - "title": "Twente Milieu" + "description": "\uc8fc\uc18c\uc5d0 \uc4f0\ub808\uae30 \uc218\uac70 \uc815\ubcf4\ub97c \ub123\uc5b4 Twente Milieu \ub97c \uc124\uc815\ud574\uc8fc\uc138\uc694." } } } diff --git a/homeassistant/components/twentemilieu/translations/lb.json b/homeassistant/components/twentemilieu/translations/lb.json index 98454f62dbb..ca1591417e7 100644 --- a/homeassistant/components/twentemilieu/translations/lb.json +++ b/homeassistant/components/twentemilieu/translations/lb.json @@ -14,8 +14,7 @@ "house_number": "Haus Nummer", "post_code": "Postleitzuel" }, - "description": "Offallsammlung Informatiounen vun Twente Milieu zu \u00e4erer Adresse ariichten.", - "title": "Twente Milieu" + "description": "Offallsammlung Informatiounen vun Twente Milieu zu \u00e4erer Adresse ariichten." } } } diff --git a/homeassistant/components/twentemilieu/translations/nl.json b/homeassistant/components/twentemilieu/translations/nl.json index 54611aa9ab8..575c642a777 100644 --- a/homeassistant/components/twentemilieu/translations/nl.json +++ b/homeassistant/components/twentemilieu/translations/nl.json @@ -14,8 +14,7 @@ "house_number": "Huisnummer", "post_code": "Postcode" }, - "description": "Stel Twente Milieu in voor het inzamelen van afval op uw adres.", - "title": "Twente Milieu" + "description": "Stel Twente Milieu in voor het inzamelen van afval op uw adres." } } } diff --git a/homeassistant/components/twentemilieu/translations/nn.json b/homeassistant/components/twentemilieu/translations/nn.json deleted file mode 100644 index ed333bb9b51..00000000000 --- a/homeassistant/components/twentemilieu/translations/nn.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "config": { - "step": { - "user": { - "title": "Twente Milieu" - } - } - } -} \ No newline at end of file diff --git a/homeassistant/components/twentemilieu/translations/no.json b/homeassistant/components/twentemilieu/translations/no.json index ea7df786247..76a023e44e3 100644 --- a/homeassistant/components/twentemilieu/translations/no.json +++ b/homeassistant/components/twentemilieu/translations/no.json @@ -14,8 +14,7 @@ "house_number": "Husnummer", "post_code": "Postnummer" }, - "description": "Sett opp Twente Milieu som gir informasjon om innsamling av avfall p\u00e5 adressen din.", - "title": "" + "description": "Sett opp Twente Milieu som gir informasjon om innsamling av avfall p\u00e5 adressen din." } } } diff --git a/homeassistant/components/twentemilieu/translations/pl.json b/homeassistant/components/twentemilieu/translations/pl.json index 67f2d2b362b..d7f53bb9bf1 100644 --- a/homeassistant/components/twentemilieu/translations/pl.json +++ b/homeassistant/components/twentemilieu/translations/pl.json @@ -14,8 +14,7 @@ "house_number": "Numer domu", "post_code": "Kod pocztowy" }, - "description": "Skonfiguruj Twente Milieu, dostarczaj\u0105c informacji o zbieraniu odpad\u00f3w pod swoim adresem.", - "title": "Twente Milieu" + "description": "Skonfiguruj Twente Milieu, dostarczaj\u0105c informacji o zbieraniu odpad\u00f3w pod swoim adresem." } } } diff --git a/homeassistant/components/twentemilieu/translations/pt-BR.json b/homeassistant/components/twentemilieu/translations/pt-BR.json index 943b46849b6..8a7fa74b554 100644 --- a/homeassistant/components/twentemilieu/translations/pt-BR.json +++ b/homeassistant/components/twentemilieu/translations/pt-BR.json @@ -14,8 +14,7 @@ "house_number": "N\u00famero da casa", "post_code": "C\u00f3digo postal" }, - "description": "Configure o Twente Milieu, fornecendo informa\u00e7\u00f5es de coleta de lixo em seu endere\u00e7o.", - "title": "Twente Milieu" + "description": "Configure o Twente Milieu, fornecendo informa\u00e7\u00f5es de coleta de lixo em seu endere\u00e7o." } } } diff --git a/homeassistant/components/twentemilieu/translations/ru.json b/homeassistant/components/twentemilieu/translations/ru.json index f7da9b628fd..33748e9d16b 100644 --- a/homeassistant/components/twentemilieu/translations/ru.json +++ b/homeassistant/components/twentemilieu/translations/ru.json @@ -14,8 +14,7 @@ "house_number": "\u041d\u043e\u043c\u0435\u0440 \u0434\u043e\u043c\u0430", "post_code": "\u041f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441" }, - "description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 Twente Milieu \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0432\u044b\u0432\u043e\u0437\u0435 \u043c\u0443\u0441\u043e\u0440\u0430 \u043f\u043e \u0412\u0430\u0448\u0435\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443.", - "title": "Twente Milieu" + "description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 Twente Milieu \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0432\u044b\u0432\u043e\u0437\u0435 \u043c\u0443\u0441\u043e\u0440\u0430 \u043f\u043e \u0412\u0430\u0448\u0435\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443." } } } diff --git a/homeassistant/components/twentemilieu/translations/sl.json b/homeassistant/components/twentemilieu/translations/sl.json index affe8269613..313a5ae5a87 100644 --- a/homeassistant/components/twentemilieu/translations/sl.json +++ b/homeassistant/components/twentemilieu/translations/sl.json @@ -10,8 +10,7 @@ "house_number": "Hi\u0161na \u0161tevilka", "post_code": "Po\u0161tna \u0161tevilka" }, - "description": "Nastavite Twente milieu, ki zagotavlja informacije o zbiranju odpadkov na va\u0161em naslovu.", - "title": "Twente Milieu" + "description": "Nastavite Twente milieu, ki zagotavlja informacije o zbiranju odpadkov na va\u0161em naslovu." } } } diff --git a/homeassistant/components/twentemilieu/translations/sv.json b/homeassistant/components/twentemilieu/translations/sv.json index fa1481f7e10..4e8bb592d05 100644 --- a/homeassistant/components/twentemilieu/translations/sv.json +++ b/homeassistant/components/twentemilieu/translations/sv.json @@ -10,8 +10,7 @@ "house_number": "Husnummer", "post_code": "Postnummer" }, - "description": "St\u00e4ll in Twente Milieu som ger information om avfallshantering p\u00e5 din adress.", - "title": "Twente Milieu" + "description": "St\u00e4ll in Twente Milieu som ger information om avfallshantering p\u00e5 din adress." } } } diff --git a/homeassistant/components/twentemilieu/translations/tr.json b/homeassistant/components/twentemilieu/translations/tr.json index 363128d9c1e..9f03d2c9189 100644 --- a/homeassistant/components/twentemilieu/translations/tr.json +++ b/homeassistant/components/twentemilieu/translations/tr.json @@ -14,8 +14,7 @@ "house_number": "Ev numaras\u0131", "post_code": "Posta kodu" }, - "description": "Adresinizde at\u0131k toplama bilgileri sa\u011flayan Twente Milieu'yu kurun.", - "title": "Twente Milieu" + "description": "Adresinizde at\u0131k toplama bilgileri sa\u011flayan Twente Milieu'yu kurun." } } } diff --git a/homeassistant/components/twentemilieu/translations/uk.json b/homeassistant/components/twentemilieu/translations/uk.json index 435bd79fb85..5fa562a9afa 100644 --- a/homeassistant/components/twentemilieu/translations/uk.json +++ b/homeassistant/components/twentemilieu/translations/uk.json @@ -14,8 +14,7 @@ "house_number": "\u041d\u043e\u043c\u0435\u0440 \u0431\u0443\u0434\u0438\u043d\u043a\u0443", "post_code": "\u041f\u043e\u0448\u0442\u043e\u0432\u0438\u0439 \u0456\u043d\u0434\u0435\u043a\u0441" }, - "description": "\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0439\u0442\u0435 Twente Milieu \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u043c\u0430\u043d\u043d\u044f \u0456\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u0457 \u043f\u0440\u043e \u0432\u0438\u0432\u0435\u0437\u0435\u043d\u043d\u044f \u0441\u043c\u0456\u0442\u0442\u044f \u0437\u0430 \u0412\u0430\u0448\u043e\u044e \u0430\u0434\u0440\u0435\u0441\u043e\u044e.", - "title": "Twente Milieu" + "description": "\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0439\u0442\u0435 Twente Milieu \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u043c\u0430\u043d\u043d\u044f \u0456\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u0457 \u043f\u0440\u043e \u0432\u0438\u0432\u0435\u0437\u0435\u043d\u043d\u044f \u0441\u043c\u0456\u0442\u0442\u044f \u0437\u0430 \u0412\u0430\u0448\u043e\u044e \u0430\u0434\u0440\u0435\u0441\u043e\u044e." } } } diff --git a/homeassistant/components/twentemilieu/translations/zh-Hant.json b/homeassistant/components/twentemilieu/translations/zh-Hant.json index 11cf62d2d60..51373552418 100644 --- a/homeassistant/components/twentemilieu/translations/zh-Hant.json +++ b/homeassistant/components/twentemilieu/translations/zh-Hant.json @@ -14,8 +14,7 @@ "house_number": "\u9580\u724c\u865f\u78bc", "post_code": "\u90f5\u905e\u5340\u865f" }, - "description": "\u8a2d\u5b9a Twente Milieu \u4ee5\u53d6\u5f97\u8a72\u5730\u5740\u5ee2\u68c4\u7269\u56de\u6536\u8cc7\u8a0a\u3002", - "title": "Twente Milieu" + "description": "\u8a2d\u5b9a Twente Milieu \u4ee5\u53d6\u5f97\u8a72\u5730\u5740\u5ee2\u68c4\u7269\u56de\u6536\u8cc7\u8a0a\u3002" } } } diff --git a/homeassistant/components/twilio/translations/cs.json b/homeassistant/components/twilio/translations/cs.json index f45c4bf881e..8572109edcd 100644 --- a/homeassistant/components/twilio/translations/cs.json +++ b/homeassistant/components/twilio/translations/cs.json @@ -1,6 +1,7 @@ { "config": { "abort": { + "cloud_not_connected": "Nen\u00ed p\u0159ipojeno k Home Assistant Cloud.", "single_instance_allowed": "Ji\u017e nastaveno. Je mo\u017en\u00e1 pouze jedin\u00e1 konfigurace.", "webhook_not_internet_accessible": "V\u00e1\u0161 Home Assistant mus\u00ed b\u00fdt p\u0159\u00edstupn\u00fd z internetu, aby mohl p\u0159ij\u00edmat zpr\u00e1vy webhook." }, diff --git a/homeassistant/components/twilio/translations/id.json b/homeassistant/components/twilio/translations/id.json index 06a77bc974e..6c447e22f63 100644 --- a/homeassistant/components/twilio/translations/id.json +++ b/homeassistant/components/twilio/translations/id.json @@ -6,7 +6,7 @@ "webhook_not_internet_accessible": "Instans Home Assistant Anda harus dapat diakses dari internet untuk menerima pesan webhook." }, "create_entry": { - "default": "Untuk mengirim event ke Home Assistant, Anda harus menyiapkan [Webhooks dengan Twilio]({twilio_url}).\n\nIsikan info berikut:\n\n- URL: `{webhook_url}`\n- Method: POST\n- Content-Type: application/x-www-form-urlencoded\n\nBaca [dokumentasi]({docs_url}) tentang cara mengonfigurasi otomasi untuk menangani data masuk." + "default": "Untuk mengirim event ke Home Assistant, Anda harus menyiapkan [Webhooks dengan Twilio]({twilio_url}).\n\nIsi info berikut:\n\n- URL: `{webhook_url}`\n- Method: POST\n- Content-Type: application/x-www-form-urlencoded\n\nBaca [dokumentasi]({docs_url}) tentang cara mengonfigurasi otomasi untuk menangani data masuk." }, "step": { "user": { diff --git a/homeassistant/components/twilio/translations/ja.json b/homeassistant/components/twilio/translations/ja.json index 84ea72878e7..521fee184f2 100644 --- a/homeassistant/components/twilio/translations/ja.json +++ b/homeassistant/components/twilio/translations/ja.json @@ -6,7 +6,7 @@ "webhook_not_internet_accessible": "Webhook\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u4fe1\u3059\u308b\u306b\u306f\u3001Home Assistant\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u3001\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002" }, "create_entry": { - "default": "Home Assistant\u306b\u30a4\u30d9\u30f3\u30c8\u3092\u9001\u4fe1\u3059\u308b\u306b\u306f\u3001[Webhooks with Twilio]({twilio_url})\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\n\n\u4ee5\u4e0b\u306e\u60c5\u5831\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044:\n\n- URL: `{webhook_url}`\n- Method(\u65b9\u5f0f): POST\n- Content Type: application/x-www-form-urlencoded\n\n\u53d7\u4fe1\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306b\u30aa\u30fc\u30c8\u30e1\u30fc\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001[\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8]({docs_url})\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002" + "default": "Home Assistant\u306b\u30a4\u30d9\u30f3\u30c8\u3092\u9001\u4fe1\u3059\u308b\u306b\u306f\u3001[Webhooks with Twilio]({twilio_url})\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\n\n\u4ee5\u4e0b\u306e\u60c5\u5831\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044:\n\n- URL: `{webhook_url}`\n- Method(\u65b9\u5f0f): POST\n- Content Type(\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u7a2e\u985e): application/x-www-form-urlencoded\n\n\u53d7\u4fe1\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306b\u30aa\u30fc\u30c8\u30e1\u30fc\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001[\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8]({docs_url})\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002" }, "step": { "user": { diff --git a/homeassistant/components/twinkly/translations/ca.json b/homeassistant/components/twinkly/translations/ca.json index ecf2c4ed12c..4813f7736f9 100644 --- a/homeassistant/components/twinkly/translations/ca.json +++ b/homeassistant/components/twinkly/translations/ca.json @@ -13,9 +13,7 @@ "user": { "data": { "host": "Amfitri\u00f3" - }, - "description": "Configura la teva tira LED de Twinkly", - "title": "Twinkly" + } } } } diff --git a/homeassistant/components/twinkly/translations/cs.json b/homeassistant/components/twinkly/translations/cs.json index be5b291744b..26afb737dce 100644 --- a/homeassistant/components/twinkly/translations/cs.json +++ b/homeassistant/components/twinkly/translations/cs.json @@ -13,9 +13,7 @@ "user": { "data": { "host": "Hostitel" - }, - "description": "Nastavte sv\u016fj LED p\u00e1sek Twinkly", - "title": "Twinkly" + } } } } diff --git a/homeassistant/components/twinkly/translations/de.json b/homeassistant/components/twinkly/translations/de.json index d31b243f7b9..5d096c5b594 100644 --- a/homeassistant/components/twinkly/translations/de.json +++ b/homeassistant/components/twinkly/translations/de.json @@ -13,9 +13,7 @@ "user": { "data": { "host": "Host" - }, - "description": "Einrichten deiner Twinkly-Led-Kette", - "title": "Twinkly" + } } } } diff --git a/homeassistant/components/twinkly/translations/el.json b/homeassistant/components/twinkly/translations/el.json index 8e0294b87b5..1210c6dc76a 100644 --- a/homeassistant/components/twinkly/translations/el.json +++ b/homeassistant/components/twinkly/translations/el.json @@ -13,9 +13,7 @@ "user": { "data": { "host": "\u039a\u03b5\u03bd\u03c4\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae\u03c2" - }, - "description": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03c4\u03b5 \u03c4\u03bf Twinkly led string \u03c3\u03b1\u03c2", - "title": "Twinkly" + } } } } diff --git a/homeassistant/components/twinkly/translations/en.json b/homeassistant/components/twinkly/translations/en.json index fbb63fbc3e8..720a258161f 100644 --- a/homeassistant/components/twinkly/translations/en.json +++ b/homeassistant/components/twinkly/translations/en.json @@ -13,9 +13,7 @@ "user": { "data": { "host": "Host" - }, - "description": "Set up your Twinkly led string", - "title": "Twinkly" + } } } } diff --git a/homeassistant/components/twinkly/translations/es.json b/homeassistant/components/twinkly/translations/es.json index 691c0afcda6..e18d54adb9e 100644 --- a/homeassistant/components/twinkly/translations/es.json +++ b/homeassistant/components/twinkly/translations/es.json @@ -13,9 +13,7 @@ "user": { "data": { "host": "Host (o direcci\u00f3n IP) de tu dispositivo Twinkly" - }, - "description": "Configura tu tira led Twinkly", - "title": "Twinkly" + } } } } diff --git a/homeassistant/components/twinkly/translations/et.json b/homeassistant/components/twinkly/translations/et.json index bdb4ef3772c..bf902984d26 100644 --- a/homeassistant/components/twinkly/translations/et.json +++ b/homeassistant/components/twinkly/translations/et.json @@ -13,9 +13,7 @@ "user": { "data": { "host": "Host" - }, - "description": "Seadista oma Twinkly LED riba", - "title": "" + } } } } diff --git a/homeassistant/components/twinkly/translations/fr.json b/homeassistant/components/twinkly/translations/fr.json index c5b01400457..cf6fe97ce88 100644 --- a/homeassistant/components/twinkly/translations/fr.json +++ b/homeassistant/components/twinkly/translations/fr.json @@ -13,9 +13,7 @@ "user": { "data": { "host": "H\u00f4te" - }, - "description": "Configurer votre Twinkly", - "title": "Twinkly" + } } } } diff --git a/homeassistant/components/twinkly/translations/hu.json b/homeassistant/components/twinkly/translations/hu.json index 94983ce4893..0ad6208ca16 100644 --- a/homeassistant/components/twinkly/translations/hu.json +++ b/homeassistant/components/twinkly/translations/hu.json @@ -12,10 +12,8 @@ }, "user": { "data": { - "host": "A Twinkly eszk\u00f6z c\u00edme" - }, - "description": "\u00c1ll\u00edtsa be a Twinkly led-karakterl\u00e1nc\u00e1t", - "title": "Twinkly" + "host": "C\u00edm" + } } } } diff --git a/homeassistant/components/twinkly/translations/id.json b/homeassistant/components/twinkly/translations/id.json index 330bcf6ce11..b37e20bf023 100644 --- a/homeassistant/components/twinkly/translations/id.json +++ b/homeassistant/components/twinkly/translations/id.json @@ -13,9 +13,7 @@ "user": { "data": { "host": "Host" - }, - "description": "Siapkan string led Twinkly Anda", - "title": "Twinkly" + } } } } diff --git a/homeassistant/components/twinkly/translations/it.json b/homeassistant/components/twinkly/translations/it.json index a64ecaeb425..fec569379d4 100644 --- a/homeassistant/components/twinkly/translations/it.json +++ b/homeassistant/components/twinkly/translations/it.json @@ -13,9 +13,7 @@ "user": { "data": { "host": "Host" - }, - "description": "Configura la tua stringa led Twinkly", - "title": "Twinkly" + } } } } diff --git a/homeassistant/components/twinkly/translations/ja.json b/homeassistant/components/twinkly/translations/ja.json index e3955e4286f..2ec0d28e0bf 100644 --- a/homeassistant/components/twinkly/translations/ja.json +++ b/homeassistant/components/twinkly/translations/ja.json @@ -13,9 +13,7 @@ "user": { "data": { "host": "Twinkly device\u306e\u30db\u30b9\u30c8(\u307e\u305f\u306fIP\u30a2\u30c9\u30ec\u30b9)" - }, - "description": "Twinkly led string\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7", - "title": "Twinkly" + } } } } diff --git a/homeassistant/components/twinkly/translations/ka.json b/homeassistant/components/twinkly/translations/ka.json index d0d6b61f4cc..293552c37d4 100644 --- a/homeassistant/components/twinkly/translations/ka.json +++ b/homeassistant/components/twinkly/translations/ka.json @@ -10,9 +10,7 @@ "user": { "data": { "host": "\u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 twinkly \u10db\u10dd\u10ec\u10e7\u10dd\u10d1\u10d8\u10da\u10dd\u10d1\u10d8\u10e1 \u10f0\u10dd\u10e1\u10e2\u10d8 (\u10d0\u10dc IP \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8)" - }, - "description": "\u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 Twinkly \u10e8\u10e3\u10e5\u10d3\u10d8\u10dd\u10d3\u10d8\u10e1 \u10da\u10d4\u10dc\u10e2\u10d8\u10e1 \u10d3\u10d0\u10e7\u10d4\u10dc\u10d4\u10d1\u10d0", - "title": "Twinkly" + } } } } diff --git a/homeassistant/components/twinkly/translations/ko.json b/homeassistant/components/twinkly/translations/ko.json index b3b23991e3d..257be47f610 100644 --- a/homeassistant/components/twinkly/translations/ko.json +++ b/homeassistant/components/twinkly/translations/ko.json @@ -10,9 +10,7 @@ "user": { "data": { "host": "Twinkly \uae30\uae30\uc758 \ud638\uc2a4\ud2b8 (\ub610\ub294 IP \uc8fc\uc18c)" - }, - "description": "Twinkly LED \uc904 \uc870\uba85 \uc124\uc815\ud558\uae30", - "title": "Twinkly" + } } } } diff --git a/homeassistant/components/twinkly/translations/nl.json b/homeassistant/components/twinkly/translations/nl.json index 38331177895..b41baa0b403 100644 --- a/homeassistant/components/twinkly/translations/nl.json +++ b/homeassistant/components/twinkly/translations/nl.json @@ -13,9 +13,7 @@ "user": { "data": { "host": "Host" - }, - "description": "Uw Twinkly LED-string instellen", - "title": "Twinkly" + } } } } diff --git a/homeassistant/components/twinkly/translations/no.json b/homeassistant/components/twinkly/translations/no.json index af3b74a9686..72f88054aa7 100644 --- a/homeassistant/components/twinkly/translations/no.json +++ b/homeassistant/components/twinkly/translations/no.json @@ -13,9 +13,7 @@ "user": { "data": { "host": "Vert" - }, - "description": "Sett opp Twinkly-led-strengen", - "title": "Twinkly" + } } } } diff --git a/homeassistant/components/twinkly/translations/pl.json b/homeassistant/components/twinkly/translations/pl.json index 8036d6cc2f6..a9538177101 100644 --- a/homeassistant/components/twinkly/translations/pl.json +++ b/homeassistant/components/twinkly/translations/pl.json @@ -13,9 +13,7 @@ "user": { "data": { "host": "Nazwa hosta lub adres IP" - }, - "description": "Konfiguracja Twinkly", - "title": "Twinkly" + } } } } diff --git a/homeassistant/components/twinkly/translations/pt-BR.json b/homeassistant/components/twinkly/translations/pt-BR.json index 3aff4eb867d..789802f44e9 100644 --- a/homeassistant/components/twinkly/translations/pt-BR.json +++ b/homeassistant/components/twinkly/translations/pt-BR.json @@ -13,9 +13,7 @@ "user": { "data": { "host": "Nome do host" - }, - "description": "Configure sua fita de led Twinkly", - "title": "Twinkly" + } } } } diff --git a/homeassistant/components/twinkly/translations/ru.json b/homeassistant/components/twinkly/translations/ru.json index a7e0ff145cd..d1e06eee9cc 100644 --- a/homeassistant/components/twinkly/translations/ru.json +++ b/homeassistant/components/twinkly/translations/ru.json @@ -13,9 +13,7 @@ "user": { "data": { "host": "\u0425\u043e\u0441\u0442" - }, - "description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043d\u043e\u0439 \u043b\u0435\u043d\u0442\u044b Twinkly", - "title": "Twinkly" + } } } } diff --git a/homeassistant/components/twinkly/translations/tr.json b/homeassistant/components/twinkly/translations/tr.json index 0e78648d811..39bf9b32e55 100644 --- a/homeassistant/components/twinkly/translations/tr.json +++ b/homeassistant/components/twinkly/translations/tr.json @@ -13,9 +13,7 @@ "user": { "data": { "host": "Sunucu" - }, - "description": "Twinkly led dizinizi ayarlay\u0131n", - "title": "Twinkly" + } } } } diff --git a/homeassistant/components/twinkly/translations/uk.json b/homeassistant/components/twinkly/translations/uk.json index bd256d31b03..8f3d6d0cbaa 100644 --- a/homeassistant/components/twinkly/translations/uk.json +++ b/homeassistant/components/twinkly/translations/uk.json @@ -10,9 +10,7 @@ "user": { "data": { "host": "\u0406\u043c'\u044f \u0445\u043e\u0441\u0442\u0430 (\u0430\u0431\u043e IP-\u0430\u0434\u0440\u0435\u0441\u0430) \u0412\u0430\u0448\u043e\u0433\u043e \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u044e Twinkly" - }, - "description": "\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u0441\u0432\u0456\u0442\u043b\u043e\u0434\u0456\u043e\u0434\u043d\u043e\u0457 \u0441\u0442\u0440\u0456\u0447\u043a\u0438 Twinkly", - "title": "Twinkly" + } } } } diff --git a/homeassistant/components/twinkly/translations/zh-Hant.json b/homeassistant/components/twinkly/translations/zh-Hant.json index 77e0a69cf65..d016c286034 100644 --- a/homeassistant/components/twinkly/translations/zh-Hant.json +++ b/homeassistant/components/twinkly/translations/zh-Hant.json @@ -13,9 +13,7 @@ "user": { "data": { "host": "\u4e3b\u6a5f\u7aef" - }, - "description": "\u8a2d\u5b9a Twinkly LED \u71c8\u4e32", - "title": "Twinkly" + } } } } diff --git a/homeassistant/components/unifi/translations/hu.json b/homeassistant/components/unifi/translations/hu.json index 7692342bf89..ea4c7484d44 100644 --- a/homeassistant/components/unifi/translations/hu.json +++ b/homeassistant/components/unifi/translations/hu.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "A vez\u00e9rl\u0151 webhelye m\u00e1r konfigur\u00e1lva van", + "already_configured": "Az UniFi Network webhely m\u00e1r konfigur\u00e1lva van", "configuration_updated": "A konfigur\u00e1ci\u00f3 friss\u00edtve.", "reauth_successful": "Az \u00fajrahiteles\u00edt\u00e9s sikeres volt." }, @@ -39,7 +39,7 @@ "device_tracker": { "data": { "detection_time": "Id\u0151 m\u00e1sodpercben az utols\u00f3 l\u00e1t\u00e1st\u00f3l a t\u00e1vol tart\u00e1sig", - "ignore_wired_bug": "Az UniFi vezet\u00e9kes hibalogika letilt\u00e1sa", + "ignore_wired_bug": "Az UniFi Network vezet\u00e9kes hibalogika letilt\u00e1sa", "ssid_filter": "V\u00e1lassza ki az SSID -ket a vezet\u00e9k n\u00e9lk\u00fcli \u00fcgyfelek nyomon k\u00f6vet\u00e9s\u00e9hez", "track_clients": "K\u00f6vesse nyomon a h\u00e1l\u00f3zati \u00fcgyfeleket", "track_devices": "H\u00e1l\u00f3zati eszk\u00f6z\u00f6k nyomon k\u00f6vet\u00e9se (Ubiquiti eszk\u00f6z\u00f6k)", diff --git a/homeassistant/components/unifi/translations/it.json b/homeassistant/components/unifi/translations/it.json index eeda8a8c9bb..7ddc0fde4fe 100644 --- a/homeassistant/components/unifi/translations/it.json +++ b/homeassistant/components/unifi/translations/it.json @@ -50,8 +50,8 @@ }, "init": { "data": { - "one": "Pi\u00f9", - "other": "Altri" + "one": "Vuoto", + "other": "Vuoti" } }, "simple_options": { diff --git a/homeassistant/components/update/translations/ca.json b/homeassistant/components/update/translations/ca.json index 396e79c14c0..b008c0693c0 100644 --- a/homeassistant/components/update/translations/ca.json +++ b/homeassistant/components/update/translations/ca.json @@ -1,3 +1,10 @@ { + "device_automation": { + "trigger_type": { + "changed_states": "La disponibilitat de l'actualitzaci\u00f3 de {entity_name} canvi\u00ef", + "turned_off": "{entity_name} s'actualitzi", + "turned_on": "{entity_name} tingui una actualitzaci\u00f3 disponible" + } + }, "title": "Actualitza" } \ No newline at end of file diff --git a/homeassistant/components/update/translations/cs.json b/homeassistant/components/update/translations/cs.json new file mode 100644 index 00000000000..39380573af6 --- /dev/null +++ b/homeassistant/components/update/translations/cs.json @@ -0,0 +1,9 @@ +{ + "device_automation": { + "trigger_type": { + "changed_states": "Dostupnost aktualizace {entity_name} zm\u011bn\u011bna", + "turned_off": "{entity_name} se stal aktu\u00e1ln\u00edm", + "turned_on": "{entity_name} m\u00e1 k dispozici aktualizaci" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/update/translations/de.json b/homeassistant/components/update/translations/de.json index 18562d81eaf..bc3e9b19322 100644 --- a/homeassistant/components/update/translations/de.json +++ b/homeassistant/components/update/translations/de.json @@ -1,3 +1,10 @@ { + "device_automation": { + "trigger_type": { + "changed_states": "{entity_name} Update Verf\u00fcgbarkeit ge\u00e4ndert", + "turned_off": "{entity_name} wurde auf den neuesten Stand gebracht", + "turned_on": "F\u00fcr {entity_name} ist ein Update verf\u00fcgbar" + } + }, "title": "Aktualisieren" } \ No newline at end of file diff --git a/homeassistant/components/update/translations/el.json b/homeassistant/components/update/translations/el.json index d687d342ec3..0a4d6190150 100644 --- a/homeassistant/components/update/translations/el.json +++ b/homeassistant/components/update/translations/el.json @@ -1,3 +1,10 @@ { + "device_automation": { + "trigger_type": { + "changed_states": "\u0397 \u03b4\u03b9\u03b1\u03b8\u03b5\u03c3\u03b9\u03bc\u03cc\u03c4\u03b7\u03c4\u03b1 \u03c4\u03b7\u03c2 \u03b5\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7\u03c2 {entity_name} \u03ac\u03bb\u03bb\u03b1\u03be\u03b5", + "turned_off": "{entity_name} \u03b5\u03bd\u03b7\u03bc\u03b5\u03c1\u03ce\u03b8\u03b7\u03ba\u03b5", + "turned_on": "{entity_name} \u03ad\u03c7\u03b5\u03b9 \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b7 \u03bc\u03b9\u03b1 \u03b5\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7" + } + }, "title": "\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7" } \ No newline at end of file diff --git a/homeassistant/components/update/translations/es.json b/homeassistant/components/update/translations/es.json new file mode 100644 index 00000000000..79993c92b20 --- /dev/null +++ b/homeassistant/components/update/translations/es.json @@ -0,0 +1,3 @@ +{ + "title": "Actualizar" +} \ No newline at end of file diff --git a/homeassistant/components/update/translations/et.json b/homeassistant/components/update/translations/et.json index 7db9a98a507..e89acfbe30f 100644 --- a/homeassistant/components/update/translations/et.json +++ b/homeassistant/components/update/translations/et.json @@ -1,3 +1,10 @@ { + "device_automation": { + "trigger_type": { + "changed_states": "Olemi {entity_name} v\u00e4rskenduse saadavus muutus", + "turned_off": "Olem {entity_name} muutus ajakohaseks", + "turned_on": "Olemile {entity_name} on saadaval v\u00e4rskendus" + } + }, "title": "Uuenda" } \ No newline at end of file diff --git a/homeassistant/components/update/translations/fr.json b/homeassistant/components/update/translations/fr.json index 1a49a0cab9f..94d23e72a7a 100644 --- a/homeassistant/components/update/translations/fr.json +++ b/homeassistant/components/update/translations/fr.json @@ -1,3 +1,10 @@ { + "device_automation": { + "trigger_type": { + "changed_states": "La disponibilit\u00e9 d'une mise \u00e0 jour pour {entity_name} a chang\u00e9", + "turned_off": "{entity_name} a \u00e9t\u00e9 mis \u00e0 jour", + "turned_on": "Une mise \u00e0 jour est disponible pour {entity_name}" + } + }, "title": "Mettre \u00e0 jour" } \ No newline at end of file diff --git a/homeassistant/components/update/translations/he.json b/homeassistant/components/update/translations/he.json new file mode 100644 index 00000000000..6c81fac9447 --- /dev/null +++ b/homeassistant/components/update/translations/he.json @@ -0,0 +1,10 @@ +{ + "device_automation": { + "trigger_type": { + "changed_states": "{entity_name} \u05d6\u05de\u05d9\u05e0\u05d5\u05ea \u05d4\u05e2\u05d3\u05db\u05d5\u05df \u05d4\u05e9\u05ea\u05e0\u05ea\u05d4", + "turned_off": "{entity_name} \u05d4\u05e4\u05da \u05dc\u05de\u05e2\u05d5\u05d3\u05db\u05df", + "turned_on": "{entity_name} \u05e7\u05d9\u05d1\u05dc \u05e2\u05d3\u05db\u05d5\u05df \u05d6\u05de\u05d9\u05df" + } + }, + "title": "\u05e2\u05d3\u05db\u05d5\u05df" +} \ No newline at end of file diff --git a/homeassistant/components/update/translations/hu.json b/homeassistant/components/update/translations/hu.json index 1e2ec425a88..7732ee56d62 100644 --- a/homeassistant/components/update/translations/hu.json +++ b/homeassistant/components/update/translations/hu.json @@ -1,3 +1,10 @@ { + "device_automation": { + "trigger_type": { + "changed_states": "{entity_name} friss\u00edt\u00e9s el\u00e9rhet\u0151s\u00e9ge megv\u00e1ltozott", + "turned_off": "{entity_name} naprak\u00e9sz lett", + "turned_on": "{entity_name} kapott egy el\u00e9rhet\u0151 friss\u00edt\u00e9st" + } + }, "title": "Friss\u00edt\u00e9s" } \ No newline at end of file diff --git a/homeassistant/components/update/translations/id.json b/homeassistant/components/update/translations/id.json index 70f495575fa..c4e6c43ab5c 100644 --- a/homeassistant/components/update/translations/id.json +++ b/homeassistant/components/update/translations/id.json @@ -1,3 +1,10 @@ { + "device_automation": { + "trigger_type": { + "changed_states": "Ketersediaan pembaruan {entity_name} berubah", + "turned_off": "{entity_name} menjadi yang terbaru", + "turned_on": "{entity_name} mendapat pembaruan yang tersedia" + } + }, "title": "Versi Baru" } \ No newline at end of file diff --git a/homeassistant/components/update/translations/it.json b/homeassistant/components/update/translations/it.json index 539f0bb4294..97d2b4020df 100644 --- a/homeassistant/components/update/translations/it.json +++ b/homeassistant/components/update/translations/it.json @@ -1,3 +1,10 @@ { + "device_automation": { + "trigger_type": { + "changed_states": "La disponibilit\u00e0 dell'aggiornamento di {entity_name} \u00e8 cambiata", + "turned_off": "{entity_name} \u00e8 stato aggiornato", + "turned_on": "{entity_name} ha un aggiornamento disponibile" + } + }, "title": "Aggiornamento" } \ No newline at end of file diff --git a/homeassistant/components/update/translations/ja.json b/homeassistant/components/update/translations/ja.json index 4cb5e4959a1..63ac9a7ddf5 100644 --- a/homeassistant/components/update/translations/ja.json +++ b/homeassistant/components/update/translations/ja.json @@ -1,3 +1,10 @@ { + "device_automation": { + "trigger_type": { + "changed_states": "{entity_name} \u66f4\u65b0\u306e\u53ef\u7528\u6027(availability)\u304c\u5909\u66f4\u3055\u308c\u307e\u3057\u305f", + "turned_off": "{entity_name} \u304c\u6700\u65b0\u306b\u306a\u308a\u307e\u3057\u305f", + "turned_on": "{entity_name} \u306f\u3001\u5229\u7528\u53ef\u80fd\u306a\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3092\u53d6\u5f97\u3057\u307e\u3057\u305f\u3002" + } + }, "title": "\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8" } \ No newline at end of file diff --git a/homeassistant/components/update/translations/nl.json b/homeassistant/components/update/translations/nl.json index 95b82de3b4d..840fa03da8a 100644 --- a/homeassistant/components/update/translations/nl.json +++ b/homeassistant/components/update/translations/nl.json @@ -1,3 +1,10 @@ { + "device_automation": { + "trigger_type": { + "changed_states": "{entity_name} update beschikbaarheid gewijzigd", + "turned_off": "{entity_name} werd up-to-date", + "turned_on": "{entity_name} heeft een update beschikbaar" + } + }, "title": "Update" } \ No newline at end of file diff --git a/homeassistant/components/update/translations/no.json b/homeassistant/components/update/translations/no.json index e98d60ab4fc..8f292b0b141 100644 --- a/homeassistant/components/update/translations/no.json +++ b/homeassistant/components/update/translations/no.json @@ -1,3 +1,10 @@ { + "device_automation": { + "trigger_type": { + "changed_states": "{entity_name} -oppdateringstilgjengeligheten er endret", + "turned_off": "{entity_name} ble oppdatert", + "turned_on": "{entity_name} har en oppdatering tilgjengelig" + } + }, "title": "Oppdater" } \ No newline at end of file diff --git a/homeassistant/components/update/translations/pl.json b/homeassistant/components/update/translations/pl.json index eff0431a518..ee29b58f8c3 100644 --- a/homeassistant/components/update/translations/pl.json +++ b/homeassistant/components/update/translations/pl.json @@ -1,3 +1,10 @@ { + "device_automation": { + "trigger_type": { + "changed_states": "zmieni si\u0119 dost\u0119pno\u015b\u0107 aktualizacji {entity_name}", + "turned_off": "wykonano aktualizacj\u0119 dla {entity_name}", + "turned_on": "{entity_name} ma dost\u0119pn\u0105 aktualizacj\u0119" + } + }, "title": "Aktualizacja" } \ No newline at end of file diff --git a/homeassistant/components/update/translations/pt-BR.json b/homeassistant/components/update/translations/pt-BR.json index 4003445e2c3..dbdbae4fa88 100644 --- a/homeassistant/components/update/translations/pt-BR.json +++ b/homeassistant/components/update/translations/pt-BR.json @@ -1,3 +1,10 @@ { + "device_automation": { + "trigger_type": { + "changed_states": "{entity_name} disponibilidade de atualiza\u00e7\u00e3o alterada", + "turned_off": "{entity_name} foi atualizado", + "turned_on": "{entity_name} tem uma atualiza\u00e7\u00e3o dispon\u00edvel" + } + }, "title": "Atualiza\u00e7\u00e3o" } \ No newline at end of file diff --git a/homeassistant/components/update/translations/ru.json b/homeassistant/components/update/translations/ru.json index a2ee79efd15..f78b838708e 100644 --- a/homeassistant/components/update/translations/ru.json +++ b/homeassistant/components/update/translations/ru.json @@ -1,3 +1,10 @@ { + "device_automation": { + "trigger_type": { + "changed_states": "\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f {entity_name}", + "turned_off": "{entity_name} \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f", + "turned_on": "\u0421\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 {entity_name}" + } + }, "title": "\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435" } \ No newline at end of file diff --git a/homeassistant/components/update/translations/tr.json b/homeassistant/components/update/translations/tr.json index 30c3c90c437..11d0b3a2c92 100644 --- a/homeassistant/components/update/translations/tr.json +++ b/homeassistant/components/update/translations/tr.json @@ -1,3 +1,10 @@ { + "device_automation": { + "trigger_type": { + "changed_states": "{entity_name} g\u00fcncellemesinin kullan\u0131labilirli\u011fi de\u011fi\u015fti", + "turned_off": "{entity_name} g\u00fcncellendi", + "turned_on": "{entity_name} bir g\u00fcncelleme ald\u0131" + } + }, "title": "G\u00fcncelle" } \ No newline at end of file diff --git a/homeassistant/components/update/translations/zh-Hans.json b/homeassistant/components/update/translations/zh-Hans.json new file mode 100644 index 00000000000..8b7c885cccb --- /dev/null +++ b/homeassistant/components/update/translations/zh-Hans.json @@ -0,0 +1,9 @@ +{ + "device_automation": { + "trigger_type": { + "changed_states": "{entity_name} \u7684\u66f4\u65b0\u53ef\u7528\u6027\u53d8\u5316", + "turned_off": "{entity_name} \u53d8\u4e3a\u6700\u65b0\u72b6\u6001", + "turned_on": "{entity_name} \u6536\u5230\u66f4\u65b0" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/update/translations/zh-Hant.json b/homeassistant/components/update/translations/zh-Hant.json index 46cdfb48f90..492af201404 100644 --- a/homeassistant/components/update/translations/zh-Hant.json +++ b/homeassistant/components/update/translations/zh-Hant.json @@ -1,3 +1,10 @@ { + "device_automation": { + "trigger_type": { + "changed_states": "{entity_name} \u53ef\u7528\u66f4\u65b0\u5df2\u8b8a\u66f4", + "turned_off": "{entity_name} \u5df2\u6700\u65b0", + "turned_on": "{entity_name} \u6709\u66f4\u65b0" + } + }, "title": "\u66f4\u65b0" } \ No newline at end of file diff --git a/homeassistant/components/upnp/translations/it.json b/homeassistant/components/upnp/translations/it.json index ce637bbad08..a57429ac78a 100644 --- a/homeassistant/components/upnp/translations/it.json +++ b/homeassistant/components/upnp/translations/it.json @@ -6,14 +6,14 @@ "no_devices_found": "Nessun dispositivo trovato sulla rete" }, "error": { - "one": "Pi\u00f9", - "other": "Altri" + "one": "Vuoto", + "other": "Vuoti" }, "flow_title": "{name}", "step": { "init": { - "one": "Pi\u00f9", - "other": "Altri" + "one": "Vuoto", + "other": "Vuoti" }, "ssdp_confirm": { "description": "Vuoi configurare questo dispositivo UPnP/IGD?" diff --git a/homeassistant/components/uptime/translations/bg.json b/homeassistant/components/uptime/translations/bg.json new file mode 100644 index 00000000000..1290144ec04 --- /dev/null +++ b/homeassistant/components/uptime/translations/bg.json @@ -0,0 +1,12 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "\u0412\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e. \u0412\u044a\u0437\u043c\u043e\u0436\u043d\u0430 \u0435 \u0441\u0430\u043c\u043e \u0435\u0434\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f." + }, + "step": { + "user": { + "description": "\u0418\u0441\u043a\u0430\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0437\u0430\u043f\u043e\u0447\u043d\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0432\u0430\u043d\u0435\u0442\u043e?" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/uptime/translations/cs.json b/homeassistant/components/uptime/translations/cs.json new file mode 100644 index 00000000000..ce19e127348 --- /dev/null +++ b/homeassistant/components/uptime/translations/cs.json @@ -0,0 +1,12 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Ji\u017e nastaveno. Je mo\u017en\u00e1 pouze jedin\u00e1 konfigurace." + }, + "step": { + "user": { + "description": "Chcete za\u010d\u00edt nastavovat?" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/uptime/translations/id.json b/homeassistant/components/uptime/translations/id.json new file mode 100644 index 00000000000..bf6ea606f2b --- /dev/null +++ b/homeassistant/components/uptime/translations/id.json @@ -0,0 +1,13 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Sudah dikonfigurasi. Hanya satu konfigurasi yang diizinkan." + }, + "step": { + "user": { + "description": "Ingin memulai penyiapan?" + } + } + }, + "title": "Uptime" +} \ No newline at end of file diff --git a/homeassistant/components/uptime/translations/it.json b/homeassistant/components/uptime/translations/it.json index cba8d0a264f..9913180a309 100644 --- a/homeassistant/components/uptime/translations/it.json +++ b/homeassistant/components/uptime/translations/it.json @@ -1,5 +1,8 @@ { "config": { + "abort": { + "single_instance_allowed": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione." + }, "step": { "user": { "description": "Vuoi iniziare la configurazione?" diff --git a/homeassistant/components/uptime/translations/no.json b/homeassistant/components/uptime/translations/no.json new file mode 100644 index 00000000000..9ac16f0a20c --- /dev/null +++ b/homeassistant/components/uptime/translations/no.json @@ -0,0 +1,13 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Allerede konfigurert. Bare \u00e9n enkelt konfigurasjon er mulig." + }, + "step": { + "user": { + "description": "Vil du starte oppsettet?" + } + } + }, + "title": "Oppetid" +} \ No newline at end of file diff --git a/homeassistant/components/uptime/translations/pl.json b/homeassistant/components/uptime/translations/pl.json new file mode 100644 index 00000000000..bca14b2f14c --- /dev/null +++ b/homeassistant/components/uptime/translations/pl.json @@ -0,0 +1,13 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Ju\u017c skonfigurowano. Mo\u017cliwa jest tylko jedna konfiguracja." + }, + "step": { + "user": { + "description": "Czy chcesz rozpocz\u0105\u0107 konfiguracj\u0119?" + } + } + }, + "title": "Uptime" +} \ No newline at end of file diff --git a/homeassistant/components/uptime/translations/pt-BR.json b/homeassistant/components/uptime/translations/pt-BR.json index fdec46961b5..d3dddae8233 100644 --- a/homeassistant/components/uptime/translations/pt-BR.json +++ b/homeassistant/components/uptime/translations/pt-BR.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "single_instance_allowed": "J\u00e1 configurado. Apenas uma \u00fanica configura\u00e7\u00e3o poss\u00edvel." + "single_instance_allowed": "J\u00e1 configurado. Apenas uma configura\u00e7\u00e3o \u00e9 poss\u00edvel." }, "step": { "user": { diff --git a/homeassistant/components/uptime/translations/tr.json b/homeassistant/components/uptime/translations/tr.json new file mode 100644 index 00000000000..ed090a38398 --- /dev/null +++ b/homeassistant/components/uptime/translations/tr.json @@ -0,0 +1,13 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Zaten yap\u0131land\u0131r\u0131lm\u0131\u015f. Yaln\u0131zca tek bir konfig\u00fcrasyon m\u00fcmk\u00fcnd\u00fcr." + }, + "step": { + "user": { + "description": "Kuruluma ba\u015flamak ister misiniz?" + } + } + }, + "title": "\u00c7al\u0131\u015fma S\u00fcresi" +} \ No newline at end of file diff --git a/homeassistant/components/uptimerobot/translations/ca.json b/homeassistant/components/uptimerobot/translations/ca.json index 9ae97109fc1..a6ed19c11f0 100644 --- a/homeassistant/components/uptimerobot/translations/ca.json +++ b/homeassistant/components/uptimerobot/translations/ca.json @@ -9,6 +9,7 @@ "error": { "cannot_connect": "Ha fallat la connexi\u00f3", "invalid_api_key": "Clau API inv\u00e0lida", + "not_main_key": "S'ha detectat un tipus de clau API incorrecta, utilitza la clau API 'principal'", "reauth_failed_matching_account": "La clau API proporcionada no correspon amb l'identificador del compte de la configuraci\u00f3 actual.", "unknown": "Error inesperat" }, @@ -17,14 +18,14 @@ "data": { "api_key": "Clau API" }, - "description": "Has de proporcionar una nova clau API de nom\u00e9s lectura d'UptimeRobot", + "description": "Has de proporcionar una nova clau API 'principal' d'UptimeRobot", "title": "Reautenticaci\u00f3 de la integraci\u00f3" }, "user": { "data": { "api_key": "Clau API" }, - "description": "Has de proporcionar una clau API de nom\u00e9s lectura d'UptimeRobot" + "description": "Has de proporcionar la clau API 'principal' d'UptimeRobot" } } } diff --git a/homeassistant/components/uptimerobot/translations/de.json b/homeassistant/components/uptimerobot/translations/de.json index 3ac63f84de2..ee2af73ea20 100644 --- a/homeassistant/components/uptimerobot/translations/de.json +++ b/homeassistant/components/uptimerobot/translations/de.json @@ -9,6 +9,7 @@ "error": { "cannot_connect": "Verbindung fehlgeschlagen", "invalid_api_key": "Ung\u00fcltiger API-Schl\u00fcssel", + "not_main_key": "Falscher API-Schl\u00fcsseltyp erkannt, verwende den API-Hauptschl\u00fcssel", "reauth_failed_matching_account": "Der von dir angegebene API-Schl\u00fcssel stimmt nicht mit der Konto-ID f\u00fcr die vorhandene Konfiguration \u00fcberein.", "unknown": "Unerwarteter Fehler" }, @@ -17,14 +18,14 @@ "data": { "api_key": "API-Schl\u00fcssel" }, - "description": "Du musst einen neuen schreibgesch\u00fctzten API-Schl\u00fcssel von UptimeRobot bereitstellen", + "description": "Du musst einen neuen Haupt-API-Schl\u00fcssel von UptimeRobot bereitstellen", "title": "Integration erneut authentifizieren" }, "user": { "data": { "api_key": "API-Schl\u00fcssel" }, - "description": "Du musst einen schreibgesch\u00fctzten API-Schl\u00fcssel von UptimeRobot bereitstellen" + "description": "Du musst den Haupt-API-Schl\u00fcssel von UptimeRobot bereitstellen" } } } diff --git a/homeassistant/components/uptimerobot/translations/el.json b/homeassistant/components/uptimerobot/translations/el.json index 2f15a945ab0..98034c40eee 100644 --- a/homeassistant/components/uptimerobot/translations/el.json +++ b/homeassistant/components/uptimerobot/translations/el.json @@ -9,6 +9,7 @@ "error": { "cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", "invalid_api_key": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03ba\u03bb\u03b5\u03b9\u03b4\u03af API", + "not_main_key": "\u0395\u03bd\u03c4\u03bf\u03c0\u03af\u03c3\u03c4\u03b7\u03ba\u03b5 \u03bb\u03b1\u03bd\u03b8\u03b1\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2 \u03c4\u03cd\u03c0\u03bf\u03c2 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03bf\u03cd API, \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf \u03ba\u03bb\u03b5\u03b9\u03b4\u03af 'main' API", "reauth_failed_matching_account": "\u03a4\u03bf \u03ba\u03bb\u03b5\u03b9\u03b4\u03af API \u03c0\u03bf\u03c5 \u03b4\u03ce\u03c3\u03b1\u03c4\u03b5 \u03b4\u03b5\u03bd \u03c4\u03b1\u03b9\u03c1\u03b9\u03ac\u03b6\u03b5\u03b9 \u03bc\u03b5 \u03c4\u03bf \u03b1\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03bf\u03c5\u03c3\u03b1 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7.", "unknown": "\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" }, diff --git a/homeassistant/components/uptimerobot/translations/et.json b/homeassistant/components/uptimerobot/translations/et.json index 9b00c2a5b44..ed2e46b7cc2 100644 --- a/homeassistant/components/uptimerobot/translations/et.json +++ b/homeassistant/components/uptimerobot/translations/et.json @@ -9,6 +9,7 @@ "error": { "cannot_connect": "\u00dchendamine nurjus", "invalid_api_key": "Vigane API v\u00f5ti", + "not_main_key": "Tuvastati vale API-v\u00f5tme t\u00fc\u00fcp, kasuta API peamist v\u00f5tit", "reauth_failed_matching_account": "Sisestatud API v\u00f5ti ei vasta olemasoleva konto ID s\u00e4tetele.", "unknown": "Ootamatu t\u00f5rge" }, @@ -17,14 +18,14 @@ "data": { "api_key": "API v\u00f5ti" }, - "description": "Pead sisestama uue UptimeRoboti kirjutuskaitstud API-v\u00f5tme", + "description": "Pead sisestama uue UptimeRoboti peamise API-v\u00f5tme", "title": "Taastuvasta sidumine" }, "user": { "data": { "api_key": "API v\u00f5ti" }, - "description": "Pead sisestama UptimeRoboti kirjutuskaitstud API-v\u00f5tme" + "description": "Pead sisestama UptimeRoboti peamise API-v\u00f5tme" } } } diff --git a/homeassistant/components/uptimerobot/translations/fr.json b/homeassistant/components/uptimerobot/translations/fr.json index 674180a1d90..ebea3087fc7 100644 --- a/homeassistant/components/uptimerobot/translations/fr.json +++ b/homeassistant/components/uptimerobot/translations/fr.json @@ -9,6 +9,7 @@ "error": { "cannot_connect": "\u00c9chec de connexion", "invalid_api_key": "Cl\u00e9 d'API non valide", + "not_main_key": "Mauvais type de cl\u00e9 d'API d\u00e9tect\u00e9, utilisez la cl\u00e9 d'API \u00ab\u00a0principale\u00a0\u00bb", "reauth_failed_matching_account": "La cl\u00e9 API que vous avez fournie ne correspond pas \u00e0 l\u2019ID de compte pour la configuration existante.", "unknown": "Erreur inattendue" }, @@ -17,14 +18,14 @@ "data": { "api_key": "Cl\u00e9 d'API" }, - "description": "Vous devez fournir une nouvelle cl\u00e9 API en lecture seule \u00e0 partir d'Uptime Robot", + "description": "Vous devez fournir une nouvelle cl\u00e9 d'API \u00ab\u00a0principale\u00a0\u00bb \u00e0 partir d'UptimeRobot", "title": "R\u00e9-authentifier l'int\u00e9gration" }, "user": { "data": { "api_key": "Cl\u00e9 d'API" }, - "description": "Vous devez fournir une cl\u00e9 API en lecture seule \u00e0 partir d'Uptime Robot" + "description": "Vous devez fournir la cl\u00e9 d'API \u00ab\u00a0principale\u00a0\u00bb \u00e0 partir d'UptimeRobot" } } } diff --git a/homeassistant/components/uptimerobot/translations/hu.json b/homeassistant/components/uptimerobot/translations/hu.json index 000851093a5..d17c9bf8ac1 100644 --- a/homeassistant/components/uptimerobot/translations/hu.json +++ b/homeassistant/components/uptimerobot/translations/hu.json @@ -9,6 +9,7 @@ "error": { "cannot_connect": "Nem siker\u00fclt csatlakozni", "invalid_api_key": "\u00c9rv\u00e9nytelen API-kulcs", + "not_main_key": "Nem megfelel\u0151 API-kulcst\u00edpus, haszn\u00e1lja a \"main\" API-kulcsot", "reauth_failed_matching_account": "A megadott API -kulcs nem egyezik a megl\u00e9v\u0151 konfigur\u00e1ci\u00f3 fi\u00f3kazonos\u00edt\u00f3j\u00e1val.", "unknown": "V\u00e1ratlan hiba" }, @@ -17,14 +18,14 @@ "data": { "api_key": "API kulcs" }, - "description": "Meg kell adnia egy \u00faj, csak olvashat\u00f3 API-kulcsot az Uptime Robot-t\u00f3l", + "description": "Meg kell adnia egy \u00faj \u201ef\u0151\u201d API-kulcsot az UptimeRobott\u00f3l", "title": "Integr\u00e1ci\u00f3 \u00fajb\u00f3li hiteles\u00edt\u00e9se" }, "user": { "data": { "api_key": "API kulcs" }, - "description": "Meg kell adnia egy csak olvashat\u00f3 API-kulcsot az Uptime Robot-t\u00f3l" + "description": "Meg kell adnia a \u201ef\u0151\u201d API-kulcsot az UptimeRobott\u00f3l" } } } diff --git a/homeassistant/components/uptimerobot/translations/id.json b/homeassistant/components/uptimerobot/translations/id.json index dac2e7e2814..b92f8f74027 100644 --- a/homeassistant/components/uptimerobot/translations/id.json +++ b/homeassistant/components/uptimerobot/translations/id.json @@ -9,6 +9,7 @@ "error": { "cannot_connect": "Gagal terhubung", "invalid_api_key": "Kunci API tidak valid", + "not_main_key": "Jenis kunci API yang salah terdeteksi, gunakan kunci API 'main'", "reauth_failed_matching_account": "Kunci API yang Anda berikan tidak cocok dengan ID akun untuk konfigurasi yang ada.", "unknown": "Kesalahan yang tidak diharapkan" }, @@ -17,14 +18,14 @@ "data": { "api_key": "Kunci API" }, - "description": "Anda perlu menyediakan kunci API hanya-baca yang baru dari UptimeRobot", + "description": "Anda perlu menyediakan kunci API 'main' yang baru dari UptimeRobot", "title": "Autentikasi Ulang Integrasi" }, "user": { "data": { "api_key": "Kunci API" }, - "description": "Anda perlu menyediakan kunci API hanya-baca dari UptimeRobot" + "description": "Anda perlu menyediakan kunci API 'main' dari UptimeRobot" } } } diff --git a/homeassistant/components/uptimerobot/translations/it.json b/homeassistant/components/uptimerobot/translations/it.json index 3a6c87c5ea9..4359ab682ee 100644 --- a/homeassistant/components/uptimerobot/translations/it.json +++ b/homeassistant/components/uptimerobot/translations/it.json @@ -9,6 +9,7 @@ "error": { "cannot_connect": "Impossibile connettersi", "invalid_api_key": "Chiave API non valida", + "not_main_key": "Rilevato tipo di chiave API errato, utilizza la chiave API 'principale'.", "reauth_failed_matching_account": "La chiave API che hai fornito non corrisponde all'ID account per la configurazione esistente.", "unknown": "Errore imprevisto" }, @@ -17,14 +18,14 @@ "data": { "api_key": "Chiave API" }, - "description": "Devi fornire una nuova chiave API di sola lettura da UptimeRobot", + "description": "Devi fornire una nuova chiave API 'principale' da UptimeRobot", "title": "Autentica nuovamente l'integrazione" }, "user": { "data": { "api_key": "Chiave API" }, - "description": "Devi fornire una chiave API di sola lettura da UptimeRobot" + "description": "Devi fornire la chiave API 'principale' da UptimeRobot" } } } diff --git a/homeassistant/components/uptimerobot/translations/ja.json b/homeassistant/components/uptimerobot/translations/ja.json index d890780eab9..e8c66b5088b 100644 --- a/homeassistant/components/uptimerobot/translations/ja.json +++ b/homeassistant/components/uptimerobot/translations/ja.json @@ -9,6 +9,7 @@ "error": { "cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f", "invalid_api_key": "\u7121\u52b9\u306aAPI\u30ad\u30fc", + "not_main_key": "\u9593\u9055\u3063\u305fAPI\u30ad\u30fc\u30bf\u30a4\u30d7\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002 'main' API\u30ad\u30fc\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044", "reauth_failed_matching_account": "\u6307\u5b9a\u3055\u308c\u305fAPI\u30ad\u30fc\u304c\u3001\u3059\u3067\u306b\u3042\u308b\u8a2d\u5b9a\u306e\u30a2\u30ab\u30a6\u30f3\u30c8ID\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002", "unknown": "\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc" }, diff --git a/homeassistant/components/uptimerobot/translations/nl.json b/homeassistant/components/uptimerobot/translations/nl.json index 3431a9cbfa5..d3ee1f7515a 100644 --- a/homeassistant/components/uptimerobot/translations/nl.json +++ b/homeassistant/components/uptimerobot/translations/nl.json @@ -9,6 +9,7 @@ "error": { "cannot_connect": "Kan geen verbinding maken", "invalid_api_key": "Ongeldige API-sleutel", + "not_main_key": "Verkeerde API sleutel gedetecteerd, gebruik de 'hoofd' API sleutel", "reauth_failed_matching_account": "De API sleutel die u heeft opgegeven komt niet overeen met de account ID voor de bestaande configuratie.", "unknown": "Onverwachte fout" }, @@ -17,14 +18,14 @@ "data": { "api_key": "API-sleutel" }, - "description": "U moet een nieuwe alleen-lezen API-sleutel van UptimeRobot opgeven", + "description": "U moet een nieuwe 'hoofd'-API-sleutel van UptimeRobot opgeven", "title": "Verifieer de integratie opnieuw" }, "user": { "data": { "api_key": "API-sleutel" }, - "description": "U moet een alleen-lezen API-sleutel van UptimeRobot opgeven" + "description": "U moet de 'hoofd' API-sleutel van UptimeRobot opgeven" } } } diff --git a/homeassistant/components/uptimerobot/translations/no.json b/homeassistant/components/uptimerobot/translations/no.json index cbb5066a747..df7a7f8045a 100644 --- a/homeassistant/components/uptimerobot/translations/no.json +++ b/homeassistant/components/uptimerobot/translations/no.json @@ -9,6 +9,7 @@ "error": { "cannot_connect": "Tilkobling mislyktes", "invalid_api_key": "Ugyldig API-n\u00f8kkel", + "not_main_key": "Feil API-n\u00f8kkeltype oppdaget, bruk 'hoved' API-n\u00f8kkelen", "reauth_failed_matching_account": "API-n\u00f8kkelen du oppgav, samsvarer ikke med konto-IDen for eksisterende konfigurasjon.", "unknown": "Uventet feil" }, @@ -17,14 +18,14 @@ "data": { "api_key": "API-n\u00f8kkel" }, - "description": "Du m\u00e5 levere en ny skrivebeskyttet API-n\u00f8kkel fra UptimeRobot", + "description": "Du m\u00e5 oppgi en ny 'hoved' API-n\u00f8kkel fra UptimeRobot", "title": "Godkjenne integrering p\u00e5 nytt" }, "user": { "data": { "api_key": "API-n\u00f8kkel" }, - "description": "Du m\u00e5 levere en skrivebeskyttet API-n\u00f8kkel fra UptimeRobot" + "description": "Du m\u00e5 oppgi \"hoved\" API-n\u00f8kkelen fra UptimeRobot" } } } diff --git a/homeassistant/components/uptimerobot/translations/pl.json b/homeassistant/components/uptimerobot/translations/pl.json index 18c40afec1e..d5698192e6d 100644 --- a/homeassistant/components/uptimerobot/translations/pl.json +++ b/homeassistant/components/uptimerobot/translations/pl.json @@ -9,6 +9,7 @@ "error": { "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", "invalid_api_key": "Nieprawid\u0142owy klucz API", + "not_main_key": "Wykryto nieprawid\u0142owy typ klucza API, u\u017cyj \"g\u0142\u00f3wnego\" klucza API", "reauth_failed_matching_account": "Podany klucz API nie jest zgodny z identyfikatorem konta istniej\u0105cej konfiguracji.", "unknown": "Nieoczekiwany b\u0142\u0105d" }, @@ -17,14 +18,14 @@ "data": { "api_key": "Klucz API" }, - "description": "Musisz poda\u0107 nowy, tylko do odczytu, klucz API od Uptime Robot", + "description": "Musisz poda\u0107 nowy \"g\u0142\u00f3wny\" klucz API od Uptime Robot", "title": "Ponownie uwierzytelnij integracj\u0119" }, "user": { "data": { "api_key": "Klucz API" }, - "description": "Musisz poda\u0107 klucz API (tylko do odczytu) od Uptime Robot" + "description": "Musisz poda\u0107 \"g\u0142\u00f3wny\" klucz API od Uptime Robot" } } } diff --git a/homeassistant/components/uptimerobot/translations/pt-BR.json b/homeassistant/components/uptimerobot/translations/pt-BR.json index 0d9bea96b12..4e905f67b31 100644 --- a/homeassistant/components/uptimerobot/translations/pt-BR.json +++ b/homeassistant/components/uptimerobot/translations/pt-BR.json @@ -9,6 +9,7 @@ "error": { "cannot_connect": "Falha ao conectar", "invalid_api_key": "Chave de API inv\u00e1lida", + "not_main_key": "Tipo de chave de API incorreto detectado, use a chave de API 'principal'", "reauth_failed_matching_account": "A chave de API fornecida n\u00e3o corresponde ao ID da conta da configura\u00e7\u00e3o existente.", "unknown": "Erro inesperado" }, @@ -17,14 +18,14 @@ "data": { "api_key": "Chave da API" }, - "description": "Voc\u00ea precisa fornecer uma nova chave de API somente leitura do UptimeRobot", + "description": "Voc\u00ea precisa fornecer uma nova chave de API 'principal' do UptimeRobot", "title": "Reautenticar Integra\u00e7\u00e3o" }, "user": { "data": { "api_key": "Chave da API" }, - "description": "Voc\u00ea precisa fornecer uma chave de API somente leitura do UptimeRobot" + "description": "Voc\u00ea precisa fornecer a chave de API 'principal' do UptimeRobot" } } } diff --git a/homeassistant/components/uptimerobot/translations/ru.json b/homeassistant/components/uptimerobot/translations/ru.json index fd26dbf969a..4497dc5a362 100644 --- a/homeassistant/components/uptimerobot/translations/ru.json +++ b/homeassistant/components/uptimerobot/translations/ru.json @@ -9,6 +9,7 @@ "error": { "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", "invalid_api_key": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 API.", + "not_main_key": "\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0442\u0438\u043f \u043a\u043b\u044e\u0447\u0430 API, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043b\u044e\u0447 API 'main'.", "reauth_failed_matching_account": "\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 API \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0443 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.", "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." }, @@ -17,14 +18,14 @@ "data": { "api_key": "\u041a\u043b\u044e\u0447 API" }, - "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u044e\u0447 API UptimeRobot \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f", + "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 'main' \u043a\u043b\u044e\u0447 API UptimeRobot.", "title": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f" }, "user": { "data": { "api_key": "\u041a\u043b\u044e\u0447 API" }, - "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043b\u044e\u0447 API UptimeRobot \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f" + "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 'main' \u043a\u043b\u044e\u0447 API UptimeRobot." } } } diff --git a/homeassistant/components/uptimerobot/translations/tr.json b/homeassistant/components/uptimerobot/translations/tr.json index c209afdfd8e..8f7291d57fd 100644 --- a/homeassistant/components/uptimerobot/translations/tr.json +++ b/homeassistant/components/uptimerobot/translations/tr.json @@ -9,6 +9,7 @@ "error": { "cannot_connect": "Ba\u011flanma hatas\u0131", "invalid_api_key": "Ge\u00e7ersiz API anahtar\u0131", + "not_main_key": "Yanl\u0131\u015f API anahtar\u0131 t\u00fcr\u00fc alg\u0131land\u0131, 'ana' API anahtar\u0131n\u0131 kullan\u0131n", "reauth_failed_matching_account": "Sa\u011flad\u0131\u011f\u0131n\u0131z API anahtar\u0131, mevcut yap\u0131land\u0131rman\u0131n hesap kimli\u011fiyle e\u015fle\u015fmiyor.", "unknown": "Beklenmeyen hata" }, @@ -17,14 +18,14 @@ "data": { "api_key": "API Anahtar\u0131" }, - "description": "UptimeRobot'tan yeni bir salt okunur API anahtar\u0131 sa\u011flaman\u0131z gerekiyor", + "description": "UptimeRobot'tan yeni bir 'ana' API anahtar\u0131 sa\u011flaman\u0131z gerekiyor", "title": "Entegrasyonu Yeniden Do\u011frula" }, "user": { "data": { "api_key": "API Anahtar\u0131" }, - "description": "UptimeRobot'tan salt okunur bir API anahtar\u0131 sa\u011flaman\u0131z gerekiyor" + "description": "UptimeRobot'tan 'ana' API anahtar\u0131n\u0131 sa\u011flaman\u0131z gerekiyor" } } } diff --git a/homeassistant/components/uptimerobot/translations/zh-Hant.json b/homeassistant/components/uptimerobot/translations/zh-Hant.json index 8b01cab6d7c..e8edfbf1934 100644 --- a/homeassistant/components/uptimerobot/translations/zh-Hant.json +++ b/homeassistant/components/uptimerobot/translations/zh-Hant.json @@ -9,6 +9,7 @@ "error": { "cannot_connect": "\u9023\u7dda\u5931\u6557", "invalid_api_key": "API \u91d1\u9470\u7121\u6548", + "not_main_key": "\u5075\u6e2c\u5230\u932f\u8aa4\u7684 API \u91d1\u9470\u985e\u578b\u3001\u4f7f\u7528 'main' API \u91d1\u9470", "reauth_failed_matching_account": "\u6240\u63d0\u4f9b\u7684\u91d1\u9470\u8207\u73fe\u6709\u8a2d\u5b9a\u5e33\u865f ID \u4e0d\u7b26\u3002", "unknown": "\u672a\u9810\u671f\u932f\u8aa4" }, @@ -17,14 +18,14 @@ "data": { "api_key": "API \u91d1\u9470" }, - "description": "\u9700\u8981\u63d0\u4f9b\u7531 UptimeRobot \u53d6\u5f97\u4e00\u7d44\u65b0\u7684\u552f\u8b80 API \u91d1\u9470", + "description": "\u5fc5\u9808\u63d0\u4f9b\u7531 UptimeRobot \u53d6\u5f97\u4e00\u7d44\u65b0\u7684 'main' API \u91d1\u9470", "title": "\u91cd\u65b0\u8a8d\u8b49\u6574\u5408" }, "user": { "data": { "api_key": "API \u91d1\u9470" }, - "description": "\u9700\u8981\u63d0\u4f9b\u7531 UptimeRobot \u53d6\u5f97\u552f\u8b80 API \u91d1\u9470" + "description": "\u5fc5\u9808\u63d0\u4f9b\u7531 UptimeRobot \u53d6\u5f97\u4e4b 'main' API \u91d1\u9470" } } } diff --git a/homeassistant/components/utility_meter/translations/bg.json b/homeassistant/components/utility_meter/translations/bg.json new file mode 100644 index 00000000000..35cfa0ad1d7 --- /dev/null +++ b/homeassistant/components/utility_meter/translations/bg.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "user": { + "data": { + "name": "\u0418\u043c\u0435" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/utility_meter/translations/ca.json b/homeassistant/components/utility_meter/translations/ca.json new file mode 100644 index 00000000000..6781fc9533c --- /dev/null +++ b/homeassistant/components/utility_meter/translations/ca.json @@ -0,0 +1,35 @@ +{ + "config": { + "step": { + "user": { + "data": { + "cycle": "Cicle de reinici del comptador", + "delta_values": "Valors delta", + "name": "Nom", + "net_consumption": "Consum net", + "offset": "Despla\u00e7ament del reinici del comptador", + "source": "Sensor d'entrada", + "tariffs": "Tarifes suportades" + }, + "data_description": { + "delta_values": "Activa-ho si els les lectures s\u00f3n valors delta (actual - anterior) en lloc de valors absoluts.", + "net_consumption": "Activa-ho si \u00e9s un comptador net, \u00e9s a dir, pot augmentar i disminuir.", + "offset": "Despla\u00e7a el dia de restabliment mensual del comptador.", + "tariffs": "Llista de tarifes admeses, deixa-la en blanc si utilitzes una \u00fanica tarifa." + }, + "description": "El sensor de comptador permet fer un seguiment dels consums de diversos serveis (per exemple, energia, gas, aigua o calefacci\u00f3) durant un per\u00edode de temps establert, normalment mensual. El sensor comptador tamb\u00e9 permet dividir el consum per tarifes; en aquest cas, es crear\u00e0 un sensor per a cada tarifa i una entitat de selecci\u00f3 que tria la tarifa actual.", + "title": "Afegeix comptador" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "source": "Sensor d'entrada" + } + } + } + }, + "title": "Comptador" +} \ No newline at end of file diff --git a/homeassistant/components/utility_meter/translations/cs.json b/homeassistant/components/utility_meter/translations/cs.json new file mode 100644 index 00000000000..552ce790742 --- /dev/null +++ b/homeassistant/components/utility_meter/translations/cs.json @@ -0,0 +1,35 @@ +{ + "config": { + "step": { + "user": { + "data": { + "cycle": "Cyklus vynulov\u00e1n\u00ed m\u011b\u0159i\u010de", + "delta_values": "Rozd\u00edlov\u00e9 hodnoty", + "name": "Jm\u00e9no", + "net_consumption": "\u010cist\u00e1 spot\u0159eba", + "offset": "Posun vynulov\u00e1n\u00ed m\u011b\u0159i\u010de", + "source": "Vstupn\u00ed senzor", + "tariffs": "Podporovan\u00e9 tarify" + }, + "data_description": { + "delta_values": "Povolte, pokud jsou zdrojov\u00e9 hodnoty rozd\u00edlov\u00e9 hodnoty od posledn\u00edho ode\u010dtu nam\u00edsto absolutn\u00edch hodnot.", + "net_consumption": "Povolte, pokud je zdroj \u010dist\u00fdm m\u011b\u0159i\u010dem, co\u017e znamen\u00e1, \u017ee se m\u016f\u017ee zvy\u0161ovat i sni\u017eovat.", + "offset": "Posunut\u00ed dne m\u011bs\u00ed\u010dn\u00edho vynulov\u00e1n\u00ed m\u011b\u0159i\u010de.", + "tariffs": "Seznam podporovan\u00fdch tarif\u016f, pokud je pot\u0159eba pouze jeden tarif, nechte pr\u00e1zdn\u00e9." + }, + "description": "Vytvo\u0159\u00ed senzor, kter\u00fd sleduje spot\u0159ebu r\u016fzn\u00fdch zdroj\u016f (nap\u0159. energie, plynu, vody, vyt\u00e1p\u011bn\u00ed) za nastaven\u00e9 \u010dasov\u00e9 obdob\u00ed, obvykle m\u011bs\u00ed\u010dn\u011b. Senzor m\u011b\u0159i\u010de m\u00e9di\u00ed voliteln\u011b podporuje rozd\u011blen\u00ed spot\u0159eby podle tarif\u016f, v takov\u00e9m p\u0159\u00edpad\u011b se vytvo\u0159\u00ed jeden senzor pro ka\u017ed\u00fd tarif a tak\u00e9 v\u00fdb\u011brov\u00e1 entita pro v\u00fdb\u011br aktu\u00e1ln\u00edho tarifu.", + "title": "P\u0159idat m\u011b\u0159i\u010d" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "source": "Vstupn\u00ed senzor" + } + } + } + }, + "title": "M\u011b\u0159i\u010d" +} \ No newline at end of file diff --git a/homeassistant/components/utility_meter/translations/de.json b/homeassistant/components/utility_meter/translations/de.json new file mode 100644 index 00000000000..870772e0dbe --- /dev/null +++ b/homeassistant/components/utility_meter/translations/de.json @@ -0,0 +1,35 @@ +{ + "config": { + "step": { + "user": { + "data": { + "cycle": "Z\u00e4hler-Reset-Zyklus", + "delta_values": "Delta-Werte", + "name": "Name", + "net_consumption": "Netzverbrauch", + "offset": "Z\u00e4hler-Reset-Offset", + "source": "Eingangssensor", + "tariffs": "Unterst\u00fctzte Tarife" + }, + "data_description": { + "delta_values": "Aktiviere diese Option, wenn die Quellwerte Deltawerte seit dem letzten Lesen anstelle von absoluten Werten sind.", + "net_consumption": "Aktiviere diese Option, wenn die Quelle ein Nettoz\u00e4hler ist, was bedeutet, dass sie sowohl steigen als auch fallen kann.", + "offset": "Versetzen des Tages einer monatlichen Z\u00e4hlerr\u00fccksetzung.", + "tariffs": "Eine Liste der unterst\u00fctzten Tarife; leer lassen, wenn nur ein einziger Tarif ben\u00f6tigt wird." + }, + "description": "Erstelle einen Sensor, der den Verbrauch verschiedener Versorgungsleistungen (z. B. Energie, Gas, Wasser, Heizung) \u00fcber einen konfigurierten Zeitraum, in der Regel monatlich, erfasst. Der Sensor f\u00fcr den Verbrauchsz\u00e4hler unterst\u00fctzt optional die Aufteilung des Verbrauchs nach Tarifen. In diesem Fall wird ein Sensor f\u00fcr jeden Tarif sowie eine Auswahlm\u00f6glichkeit zur Auswahl des aktuellen Tarifs erstellt.", + "title": "Verbrauchsz\u00e4hler hinzuf\u00fcgen" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "source": "Eingangssensor" + } + } + } + }, + "title": "Verbrauchsz\u00e4hler" +} \ No newline at end of file diff --git a/homeassistant/components/utility_meter/translations/el.json b/homeassistant/components/utility_meter/translations/el.json new file mode 100644 index 00000000000..3264503bab9 --- /dev/null +++ b/homeassistant/components/utility_meter/translations/el.json @@ -0,0 +1,35 @@ +{ + "config": { + "step": { + "user": { + "data": { + "cycle": "\u039a\u03cd\u03ba\u03bb\u03bf\u03c2 \u03b5\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac\u03c2 \u03bc\u03b5\u03c4\u03c1\u03b7\u03c4\u03ae", + "delta_values": "\u03a4\u03b9\u03bc\u03ad\u03c2 \u0394\u03ad\u03bb\u03c4\u03b1", + "name": "\u038c\u03bd\u03bf\u03bc\u03b1", + "net_consumption": "\u039a\u03b1\u03b8\u03b1\u03c1\u03ae \u03ba\u03b1\u03c4\u03b1\u03bd\u03ac\u03bb\u03c9\u03c3\u03b7", + "offset": "\u039c\u03b5\u03c4\u03b1\u03c4\u03cc\u03c0\u03b9\u03c3\u03b7 \u03b5\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac\u03c2 \u03bc\u03b5\u03c4\u03c1\u03b7\u03c4\u03ae", + "source": "\u0391\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5", + "tariffs": "\u03a5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03b9\u03b6\u03cc\u03bc\u03b5\u03bd\u03b1 \u03c4\u03b9\u03bc\u03bf\u03bb\u03cc\u03b3\u03b9\u03b1" + }, + "data_description": { + "delta_values": "\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03b5\u03ac\u03bd \u03bf\u03b9 \u03c4\u03b9\u03bc\u03ad\u03c2 \u03c0\u03b7\u03b3\u03ae\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03b9\u03bc\u03ad\u03c2 \u03b4\u03ad\u03bb\u03c4\u03b1 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03c4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b1 \u03b1\u03bd\u03ac\u03b3\u03bd\u03c9\u03c3\u03b7 \u03b1\u03bd\u03c4\u03af \u03b3\u03b9\u03b1 \u03b1\u03c0\u03cc\u03bb\u03c5\u03c4\u03b5\u03c2 \u03c4\u03b9\u03bc\u03ad\u03c2.", + "net_consumption": "\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03b5\u03ac\u03bd \u03b7 \u03c0\u03b7\u03b3\u03ae \u03b5\u03af\u03bd\u03b1\u03b9 \u03ba\u03b1\u03b8\u03b1\u03c1\u03cc\u03c2 \u03bc\u03b5\u03c4\u03c1\u03b7\u03c4\u03ae\u03c2, \u03b4\u03b7\u03bb\u03b1\u03b4\u03ae \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03c4\u03cc\u03c3\u03bf \u03bd\u03b1 \u03b1\u03c5\u03be\u03ac\u03bd\u03b5\u03c4\u03b1\u03b9 \u03cc\u03c3\u03bf \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03bc\u03b5\u03b9\u03ce\u03bd\u03b5\u03c4\u03b1\u03b9.", + "offset": "\u0391\u03bd\u03c4\u03b9\u03c3\u03c4\u03ac\u03b8\u03bc\u03b9\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03b7\u03bc\u03ad\u03c1\u03b1\u03c2 \u03bc\u03b7\u03bd\u03b9\u03b1\u03af\u03b1\u03c2 \u03b5\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac\u03c2 \u03c4\u03bf\u03c5 \u03bc\u03b5\u03c4\u03c1\u03b7\u03c4\u03ae.", + "tariffs": "\u039c\u03b9\u03b1 \u03bb\u03af\u03c3\u03c4\u03b1 \u03bc\u03b5 \u03c4\u03b1 \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03b9\u03b6\u03cc\u03bc\u03b5\u03bd\u03b1 \u03c4\u03b9\u03bc\u03bf\u03bb\u03cc\u03b3\u03b9\u03b1, \u03b1\u03c6\u03ae\u03c3\u03c4\u03b5 \u03ba\u03b5\u03bd\u03ae \u03b5\u03ac\u03bd \u03c7\u03c1\u03b5\u03b9\u03ac\u03b6\u03b5\u03c4\u03b1\u03b9 \u03bc\u03cc\u03bd\u03bf \u03ad\u03bd\u03b1 \u03c4\u03b9\u03bc\u03bf\u03bb\u03cc\u03b3\u03b9\u03bf." + }, + "description": "\u039f \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2 \u03bc\u03b5\u03c4\u03c1\u03b7\u03c4\u03ae \u03ba\u03bf\u03b9\u03bd\u03ae\u03c2 \u03c9\u03c6\u03ad\u03bb\u03b5\u03b9\u03b1\u03c2 \u03c0\u03b1\u03c1\u03ad\u03c7\u03b5\u03b9 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03c0\u03b1\u03c1\u03b1\u03ba\u03bf\u03bb\u03bf\u03cd\u03b8\u03b7\u03c3\u03b7\u03c2 \u03c4\u03c9\u03bd \u03ba\u03b1\u03c4\u03b1\u03bd\u03b1\u03bb\u03ce\u03c3\u03b5\u03c9\u03bd \u03b4\u03b9\u03b1\u03c6\u03cc\u03c1\u03c9\u03bd \u03b2\u03bf\u03b7\u03b8\u03b7\u03c4\u03b9\u03ba\u03ce\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd (\u03c0.\u03c7. \u03b5\u03bd\u03ad\u03c1\u03b3\u03b5\u03b9\u03b1, \u03c6\u03c5\u03c3\u03b9\u03ba\u03cc \u03b1\u03ad\u03c1\u03b9\u03bf, \u03bd\u03b5\u03c1\u03cc, \u03b8\u03ad\u03c1\u03bc\u03b1\u03bd\u03c3\u03b7) \u03c3\u03b5 \u03bc\u03b9\u03b1 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03bc\u03ad\u03bd\u03b7 \u03c7\u03c1\u03bf\u03bd\u03b9\u03ba\u03ae \u03c0\u03b5\u03c1\u03af\u03bf\u03b4\u03bf, \u03c3\u03c5\u03bd\u03ae\u03b8\u03c9\u03c2 \u03bc\u03b7\u03bd\u03b9\u03b1\u03af\u03b1. \u039f \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2 \u03c4\u03bf\u03c5 \u03b2\u03bf\u03b7\u03b8\u03b7\u03c4\u03b9\u03ba\u03bf\u03cd \u03bc\u03b5\u03c4\u03c1\u03b7\u03c4\u03ae \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03b9 \u03b5\u03c0\u03af\u03c3\u03b7\u03c2 \u03b4\u03b9\u03b1\u03c7\u03c9\u03c1\u03b9\u03c3\u03bc\u03cc \u03c4\u03b7\u03c2 \u03ba\u03b1\u03c4\u03b1\u03bd\u03ac\u03bb\u03c9\u03c3\u03b7\u03c2 \u03b1\u03bd\u03ac \u03c4\u03b9\u03bc\u03bf\u03bb\u03cc\u03b3\u03b9\u03b1.\n \u0397 \u03bc\u03b5\u03c4\u03b1\u03c4\u03cc\u03c0\u03b9\u03c3\u03b7 \u03b5\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac\u03c2 \u03bc\u03b5\u03c4\u03c1\u03b7\u03c4\u03ae \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03b9 \u03c4\u03b7 \u03bc\u03b5\u03c4\u03b1\u03c4\u03cc\u03c0\u03b9\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03b7\u03bc\u03ad\u03c1\u03b1\u03c2 \u03c4\u03b7\u03c2 \u03bc\u03b7\u03bd\u03b9\u03b1\u03af\u03b1\u03c2 \u03b5\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac\u03c2 \u03c4\u03bf\u03c5 \u03bc\u03b5\u03c4\u03c1\u03b7\u03c4\u03ae.\n \u03a4\u03b1 \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03b9\u03b6\u03cc\u03bc\u03b5\u03bd\u03b1 \u03c4\u03b9\u03bc\u03bf\u03bb\u03cc\u03b3\u03b9\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03bc\u03b9\u03b1 \u03bb\u03af\u03c3\u03c4\u03b1 \u03bc\u03b5 \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03b9\u03b6\u03cc\u03bc\u03b5\u03bd\u03b1 \u03c4\u03b9\u03bc\u03bf\u03bb\u03cc\u03b3\u03b9\u03b1 \u03b4\u03b9\u03b1\u03c7\u03c9\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03b1 \u03bc\u03b5 \u03ba\u03cc\u03bc\u03bc\u03b1\u03c4\u03b1, \u03b1\u03c6\u03ae\u03c3\u03c4\u03b5 \u03ba\u03b5\u03bd\u03ae \u03b5\u03ac\u03bd \u03c7\u03c1\u03b5\u03b9\u03ac\u03b6\u03b5\u03c4\u03b1\u03b9 \u03bc\u03cc\u03bd\u03bf \u03ad\u03bd\u03b1 \u03c4\u03b9\u03bc\u03bf\u03bb\u03cc\u03b3\u03b9\u03bf.", + "title": "\u039d\u03ad\u03bf\u03c2 \u03b2\u03bf\u03b7\u03b8\u03b7\u03c4\u03b9\u03ba\u03cc\u03c2 \u03bc\u03b5\u03c4\u03c1\u03b7\u03c4\u03ae\u03c2" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "source": "\u0391\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03b1\u03c2 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5" + } + } + } + }, + "title": "\u039c\u03b5\u03c4\u03c1\u03b7\u03c4\u03ae\u03c2 \u03ba\u03bf\u03b9\u03bd\u03ae\u03c2 \u03c9\u03c6\u03ad\u03bb\u03b5\u03b9\u03b1\u03c2" +} \ No newline at end of file diff --git a/homeassistant/components/utility_meter/translations/et.json b/homeassistant/components/utility_meter/translations/et.json new file mode 100644 index 00000000000..579933130fb --- /dev/null +++ b/homeassistant/components/utility_meter/translations/et.json @@ -0,0 +1,35 @@ +{ + "config": { + "step": { + "user": { + "data": { + "cycle": "M\u00f5\u00f5turi l\u00e4htestamise ts\u00fckkel", + "delta_values": "Delta v\u00e4\u00e4rtused", + "name": "Nimi", + "net_consumption": "Netotarbimine", + "offset": "Arvesti l\u00e4htestamise nihe", + "source": "Sisendandur", + "tariffs": "Toetatud tariifid" + }, + "data_description": { + "delta_values": "Luba kui l\u00e4htev\u00e4\u00e4rtused on absoluutv\u00e4\u00e4rtuste asemel delta v\u00e4\u00e4rtused alates viimasest lugemisest.", + "net_consumption": "Luba, kui allikaks on netoarvesti, mis t\u00e4hendab, et see v\u00f5ib nii suureneda kui ka v\u00e4heneda.", + "offset": "Arvesti igakuise l\u00e4htestamise p\u00e4eva nihutamine.", + "tariffs": "Toetatud tariifide loend, j\u00e4ta t\u00fchjaks kui vajad ainult \u00fchte tariifi." + }, + "description": "Loo andur mis j\u00e4lgib erinevate kommunaalteenuste (nt energia, gaas, vesi, k\u00fcte) tarbimist seadistatud aja jooksul, tavaliselt kord kuus. Kommunaalarvesti andur toetab valikuliselt tarbimise jagamist tariifide kaupa, sellisel juhul luuakse iga tariifi kohta \u00fcks andur ning ka valitud olem kehtiva tariifi valimiseks.", + "title": "Lisa kommunaalm\u00f5\u00f5tja" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "source": "Sisendandur" + } + } + } + }, + "title": "Kommunaalarvesti" +} \ No newline at end of file diff --git a/homeassistant/components/utility_meter/translations/fr.json b/homeassistant/components/utility_meter/translations/fr.json new file mode 100644 index 00000000000..9659cf413bb --- /dev/null +++ b/homeassistant/components/utility_meter/translations/fr.json @@ -0,0 +1,35 @@ +{ + "config": { + "step": { + "user": { + "data": { + "cycle": "Cycle de remise \u00e0 z\u00e9ro du compteur", + "delta_values": "Valeurs delta", + "name": "Nom", + "net_consumption": "Consommation nette", + "offset": "D\u00e9calage de la remise \u00e0 z\u00e9ro du compteur", + "source": "Capteur d'entr\u00e9e", + "tariffs": "Tarifs pris en charge" + }, + "data_description": { + "delta_values": "Activer si les valeurs de la source sont des valeurs delta depuis la derni\u00e8re lecture au lieu de valeurs absolues.", + "net_consumption": "Activer si la source est un compteur net, c'est-\u00e0-dire qu'il peut \u00e0 la fois augmenter et diminuer.", + "offset": "D\u00e9calage du jour de r\u00e9initialisation mensuelle du compteur.", + "tariffs": "Liste des tarifs pris en charge\u00a0; laisser vide si un seul tarif est n\u00e9cessaire." + }, + "description": "Cr\u00e9ez un capteur permettant de suivre les consommations de divers services publics (comme l'\u00e9nergie, le gaz, l'eau ou le chauffage) sur une p\u00e9riode configur\u00e9e, g\u00e9n\u00e9ralement mensuelle. Le capteur de compteur de services publics peut, si n\u00e9cessaire, r\u00e9partir la consommation par tarifs, auquel cas un capteur sera cr\u00e9\u00e9 pour chaque tarif ainsi qu'une entit\u00e9 de s\u00e9lection permettant de choisir le tarif actuel.", + "title": "Ajouter un compteur de services publics (eau, gaz, \u00e9lectricit\u00e9\u2026)" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "source": "Capteur d'entr\u00e9e" + } + } + } + }, + "title": "Compteur de services publics (eau, gaz, \u00e9lectricit\u00e9\u2026)" +} \ No newline at end of file diff --git a/homeassistant/components/utility_meter/translations/hu.json b/homeassistant/components/utility_meter/translations/hu.json new file mode 100644 index 00000000000..646517cfd24 --- /dev/null +++ b/homeassistant/components/utility_meter/translations/hu.json @@ -0,0 +1,35 @@ +{ + "config": { + "step": { + "user": { + "data": { + "cycle": "M\u00e9r\u0151 null\u00e1z\u00e1si ciklusa", + "delta_values": "Delta \u00e9rt\u00e9kek", + "name": "Elnevez\u00e9s", + "net_consumption": "Nett\u00f3 fogyaszt\u00e1s", + "offset": "M\u00e9r\u0151 null\u00e1z\u00e1s\u00e1nak eltol\u00e1sa", + "source": "Forr\u00e1s \u00e9rz\u00e9kel\u0151", + "tariffs": "T\u00e1mogatott tarif\u00e1k" + }, + "data_description": { + "delta_values": "Akkor kapcsolja be, ha az \u00e9rt\u00e9kek az utols\u00f3 olvasat \u00f3ta k\u00fcl\u00f6nb\u00f6zeti \u00e9rt\u00e9kek, nem pedig abszol\u00fat \u00e9rt\u00e9kek.", + "net_consumption": "Enged\u00e9lyezze, ha a forr\u00e1s nett\u00f3 m\u00e9r\u0151, ami azt jelenti, hogy n\u00f6vekedhet \u00e9s cs\u00f6kkenhet is.", + "offset": "A havi m\u00e9r\u0151-vissza\u00e1ll\u00edt\u00e1s napj\u00e1nak eltol\u00e1sa.", + "tariffs": "A t\u00e1mogatott tarif\u00e1k list\u00e1ja, hagyja \u00fcresen, ha csak egyetlen tarif\u00e1ra van sz\u00fcks\u00e9g." + }, + "description": "A k\u00f6z\u00fczemi fogyaszt\u00e1sm\u00e9r\u0151 \u00e9rz\u00e9kel\u0151 lehet\u0151s\u00e9get ad a k\u00fcl\u00f6nf\u00e9le k\u00f6zm\u0171vek (pl. energia, g\u00e1z, v\u00edz, f\u0171t\u00e9s) fogyaszt\u00e1s\u00e1nak nyomon k\u00f6vet\u00e9s\u00e9re egy konfigur\u00e1lt id\u0151tartamon kereszt\u00fcl, jellemz\u0151en havonta. Az \u00e9rz\u00e9kel\u0151 a fogyaszt\u00e1s tarif\u00e1k szerinti megoszt\u00e1s\u00e1t is t\u00e1mogatja.", + "title": "\u00daj k\u00f6z\u00fczemi m\u00e9r\u0151" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "source": "Forr\u00e1s \u00e9rz\u00e9kel\u0151" + } + } + } + }, + "title": "K\u00f6z\u00fczemi fogyaszt\u00e1sm\u00e9r\u0151" +} \ No newline at end of file diff --git a/homeassistant/components/utility_meter/translations/id.json b/homeassistant/components/utility_meter/translations/id.json new file mode 100644 index 00000000000..d2f9bab72c5 --- /dev/null +++ b/homeassistant/components/utility_meter/translations/id.json @@ -0,0 +1,35 @@ +{ + "config": { + "step": { + "user": { + "data": { + "cycle": "Siklus setel ulang meter", + "delta_values": "Nilai delta", + "name": "Nama", + "net_consumption": "Konsumsi netto", + "offset": "Offset setel ulang meter", + "source": "Sensor input", + "tariffs": "Tarif yang didukung" + }, + "data_description": { + "delta_values": "Aktifkan jika nilai sumber adalah nilai delta sejak pembacaan terakhir, bukan nilai absolut.", + "net_consumption": "Aktifkan jika sumbernya adalah ukuran netto, artinya bisa bertambah dan berkurang.", + "offset": "Ofset hari setelah penyetelan ulang bulanan", + "tariffs": "Daftar tarif yang didukung, kosongkan jika hanya diperlukan satu tarif." + }, + "description": "Buat sensor yang melacak konsumsi berbagai utilitas (misalnya, energi, gas, air, pemanas) selama periode waktu yang dikonfigurasi, biasanya bulanan. Sensor meter utilitas secara opsional mendukung pemisahan konsumsi berdasarkan tarif, dalam hal ini satu sensor untuk setiap tarif dibuat serta entitas terpilih untuk memilih tarif saat ini.", + "title": "Tambahkan Meter Utilitas" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "source": "Sensor Input" + } + } + } + }, + "title": "Meter Utilitas" +} \ No newline at end of file diff --git a/homeassistant/components/utility_meter/translations/it.json b/homeassistant/components/utility_meter/translations/it.json new file mode 100644 index 00000000000..03512cc0b7a --- /dev/null +++ b/homeassistant/components/utility_meter/translations/it.json @@ -0,0 +1,35 @@ +{ + "config": { + "step": { + "user": { + "data": { + "cycle": "Ciclo di ripristino del contatore", + "delta_values": "Valori delta", + "name": "Nome", + "net_consumption": "Consumo netto", + "offset": "Offset azzeramento contatore", + "source": "Sensore di ingresso", + "tariffs": "Tariffe supportate" + }, + "data_description": { + "delta_values": "Abilita se i valori di origine sono valori delta dall'ultima lettura anzich\u00e9 valori assoluti.", + "net_consumption": "Abilita se la sorgente \u00e8 un contatore netto, il che significa che pu\u00f2 sia aumentare che diminuire.", + "offset": "Offset del giorno di un ripristino mensile del contatore.", + "tariffs": "Un elenco di tariffe supportate, lascia vuoto se \u00e8 necessaria una sola tariffa." + }, + "description": "Crea un sensore che tenga traccia del consumo di varie utenze (ad es. energia, gas, acqua, riscaldamento) in un periodo di tempo configurato, generalmente mensile. Il sensore del contatore di utenze supporta opzionalmente la suddivisione del consumo per tariffe, in tal caso viene creato un sensore per ciascuna tariffa e un'entit\u00e0 selezionata per scegliere la tariffa corrente.", + "title": "Aggiungi misuratore di utilit\u00e0" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "source": "Sensore di ingresso" + } + } + } + }, + "title": "Misuratore di utilit\u00e0" +} \ No newline at end of file diff --git a/homeassistant/components/utility_meter/translations/ja.json b/homeassistant/components/utility_meter/translations/ja.json new file mode 100644 index 00000000000..90c175f16ec --- /dev/null +++ b/homeassistant/components/utility_meter/translations/ja.json @@ -0,0 +1,35 @@ +{ + "config": { + "step": { + "user": { + "data": { + "cycle": "\u30e1\u30fc\u30bf\u30fc\u30ea\u30bb\u30c3\u30c8\u306e\u30b5\u30a4\u30af\u30eb", + "delta_values": "\u30c7\u30eb\u30bf\u5024", + "name": "\u540d\u524d", + "net_consumption": "\u7d14\u6d88\u8cbb\u91cf", + "offset": "\u30e1\u30fc\u30bf\u30fc\u30ea\u30bb\u30c3\u30c8\u30aa\u30d5\u30bb\u30c3\u30c8", + "source": "\u5165\u529b\u30bb\u30f3\u30b5\u30fc", + "tariffs": "\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u95a2\u7a0e(Tariffs)" + }, + "data_description": { + "delta_values": "\u30bd\u30fc\u30b9\u5024\u304c\u7d76\u5bfe\u5024\u3067\u306f\u306a\u304f\u3001\u6700\u5f8c\u306e\u8aad\u307f\u53d6\u308a\u4ee5\u964d\u304c\u30c7\u30eb\u30bf\u5024\u3067\u3042\u308b\u5834\u5408\u306f\u3001\u6709\u52b9\u306b\u3057\u307e\u3059\u3002", + "net_consumption": "\u30bd\u30fc\u30b9\u304c\u30cd\u30c3\u30c8\u30e1\u30fc\u30bf(net meter)\u3001\u3064\u307e\u308a\u5897\u52a0\u3082\u3059\u308b\u3057\u6e1b\u5c11\u3082\u3059\u308b\u5834\u5408\u306f\u3001\u6709\u52b9\u306b\u3057\u307e\u3059\u3002", + "offset": "\u6bce\u6708\u306e\u30e1\u30fc\u30bf\u30fc\u30ea\u30bb\u30c3\u30c8\u306e\u65e5\u3092\u30aa\u30d5\u30bb\u30c3\u30c8\u3057\u307e\u3059\u3002", + "tariffs": "\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u6599\u91d1(Tariff)\u306e\u30ea\u30b9\u30c8\u3002\u5358\u4e00\u306e\u6599\u91d1\u8868\u306e\u307f\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u7a7a\u306e\u307e\u307e\u306b\u3057\u307e\u3059\u3002" + }, + "description": "\u8a2d\u5b9a\u3055\u308c\u305f\u671f\u9593\u3001\u901a\u5e38\u306f\u6bce\u6708\u3001\u69d8\u3005\u306a\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3(\u30a8\u30cd\u30eb\u30ae\u30fc\u3001\u30ac\u30b9\u3001\u6c34\u3001\u6696\u623f\u306a\u3069)\u306e\u6d88\u8cbb\u91cf\u3092\u8ffd\u8de1\u3059\u308b\u30bb\u30f3\u30b5\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30bb\u30f3\u30b5\u30fc\u306f\u3001\u30aa\u30d7\u30b7\u30e7\u30f3\u3068\u3057\u3066\u3001\u6599\u91d1\u8868\u306b\u3088\u308b\u6d88\u8cbb\u91cf\u306e\u5206\u5272\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u5404\u6599\u91d1\u8868\u306e\u305f\u3081\u306e1\u3064\u306e\u30bb\u30f3\u30b5\u30fc\u3068\u3001\u73fe\u5728\u306e\u6599\u91d1(Tariff)\u3092\u9078\u629e\u3059\u308b\u305f\u3081\u306e\u9078\u629e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002", + "title": "\u65b0\u3057\u3044\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30e1\u30fc\u30bf\u30fc" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "source": "\u5165\u529b\u30bb\u30f3\u30b5\u30fc" + } + } + } + }, + "title": "\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30e1\u30fc\u30bf\u30fc" +} \ No newline at end of file diff --git a/homeassistant/components/utility_meter/translations/nl.json b/homeassistant/components/utility_meter/translations/nl.json new file mode 100644 index 00000000000..8e1d986ac6b --- /dev/null +++ b/homeassistant/components/utility_meter/translations/nl.json @@ -0,0 +1,35 @@ +{ + "config": { + "step": { + "user": { + "data": { + "cycle": "Meter reset cyclus", + "delta_values": "Deltawaarden", + "name": "Name", + "net_consumption": "Netto verbruik", + "offset": "Meter reset offset", + "source": "Invoer sensor", + "tariffs": "Ondersteunde tarieven" + }, + "data_description": { + "delta_values": "Schakel in als de bronwaarden deltawaarden zijn sinds de laatste meting in plaats van absolute waarden.", + "net_consumption": "Schakel in als de bron een nettometer is, wat betekent dat deze zowel kan toenemen als afnemen.", + "offset": "Compenseer de dag van een maandelijkse meterreset.", + "tariffs": "Een lijst met ondersteunde tarieven, laat leeg als er maar \u00e9\u00e9n tarief nodig is." + }, + "description": "Cre\u00eber een sensor die het verbruik van verschillende nutsvoorzieningen (bv. energie, gas, water, verwarming) over een geconfigureerde tijdsperiode bijhoudt, meestal maandelijks. De sensor voor de meter voor nutsvoorzieningen ondersteunt optioneel het opsplitsen van het verbruik in tarieven, in dat geval wordt een sensor voor elk tarief aangemaakt, evenals een selectie-entiteit om het huidige tarief te kiezen.", + "title": "Nutsmeter toevoegen" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "source": "Invoer sensor" + } + } + } + }, + "title": "Nutsmeter" +} \ No newline at end of file diff --git a/homeassistant/components/utility_meter/translations/no.json b/homeassistant/components/utility_meter/translations/no.json new file mode 100644 index 00000000000..05218c7010b --- /dev/null +++ b/homeassistant/components/utility_meter/translations/no.json @@ -0,0 +1,35 @@ +{ + "config": { + "step": { + "user": { + "data": { + "cycle": "Syklus for tilbakestilling av m\u00e5ler", + "delta_values": "Delta-verdier", + "name": "Navn", + "net_consumption": "Netto forbruk", + "offset": "Forskyvning for tilbakestilling av meter", + "source": "Inngangssensor", + "tariffs": "St\u00f8ttede tariffer" + }, + "data_description": { + "delta_values": "Aktiver hvis kildeverdiene er deltaverdier siden siste lesing i stedet for absolutte verdier.", + "net_consumption": "Aktiver hvis kilden er en nettom\u00e5ler, noe som betyr at den b\u00e5de kan \u00f8ke og redusere.", + "offset": "Forskyv dagen for en m\u00e5nedlig tilbakestilling av m\u00e5leren.", + "tariffs": "En liste over st\u00f8ttede tariffer, la st\u00e5 tom hvis bare en enkelt tariff er n\u00f8dvendig." + }, + "description": "Lag en sensor som sporer forbruket til ulike verkt\u00f8y (f.eks. energi, gass, vann, oppvarming) over en konfigurert tidsperiode, vanligvis m\u00e5nedlig. M\u00e5lersensoren st\u00f8tter valgfritt \u00e5 dele forbruket etter tariffer, i s\u00e5 fall opprettes en sensor for hver tariff samt en valgt enhet for \u00e5 velge gjeldende tariff.", + "title": "Legg til verkt\u00f8ym\u00e5ler" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "source": "Inngangssensor" + } + } + } + }, + "title": "Verkt\u00f8ym\u00e5ler" +} \ No newline at end of file diff --git a/homeassistant/components/utility_meter/translations/pl.json b/homeassistant/components/utility_meter/translations/pl.json new file mode 100644 index 00000000000..9be6f68384b --- /dev/null +++ b/homeassistant/components/utility_meter/translations/pl.json @@ -0,0 +1,35 @@ +{ + "config": { + "step": { + "user": { + "data": { + "cycle": "Cykl resetowania licznika", + "delta_values": "Warto\u015bci delta", + "name": "Nazwa", + "net_consumption": "Zu\u017cycie netto", + "offset": "Przesuni\u0119cie resetowania licznika", + "source": "Sensor wej\u015bciowy", + "tariffs": "Obs\u0142ugiwane taryfy" + }, + "data_description": { + "delta_values": "W\u0142\u0105cz, je\u015bli warto\u015bci \u017ar\u00f3d\u0142owe s\u0105 warto\u015bciami delta od ostatniego odczytu, a nie warto\u015bciami bezwzgl\u0119dnymi.", + "net_consumption": "W\u0142\u0105cz, je\u015bli \u017ar\u00f3d\u0142em jest licznik netto, co oznacza, \u017ce jego warto\u015bci mog\u0105 si\u0119 zar\u00f3wno zwi\u0119ksza\u0107 jak i zmniejsza\u0107.", + "offset": "Przesuni\u0119cie dnia miesi\u0119cznego zerowania licznika.", + "tariffs": "Lista obs\u0142ugiwanych taryf. Pozostaw puste, je\u015bli potrzebna jest tylko jedna taryfa." + }, + "description": "Utw\u00f3rz sensor, kt\u00f3ry \u015bledzi u\u017cycie r\u00f3\u017cnych medi\u00f3w (np. energii, gazu, wody, ogrzewania) przez skonfigurowany okres czasu, zwykle co miesi\u0105c. Sensor licznika medi\u00f3w opcjonalnie obs\u0142uguje podzia\u0142 u\u017cycia wed\u0142ug taryf, w takim przypadku tworzony jest jeden czujnik dla ka\u017cdej taryfy oraz encja do wyboru aktualnej taryfy.", + "title": "Dodaj licznik medi\u00f3w" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "source": "Sensor wej\u015bciowy" + } + } + } + }, + "title": "Licznik medi\u00f3w" +} \ No newline at end of file diff --git a/homeassistant/components/utility_meter/translations/pt-BR.json b/homeassistant/components/utility_meter/translations/pt-BR.json new file mode 100644 index 00000000000..856360b05b2 --- /dev/null +++ b/homeassistant/components/utility_meter/translations/pt-BR.json @@ -0,0 +1,35 @@ +{ + "config": { + "step": { + "user": { + "data": { + "cycle": "Ciclo de reinicializa\u00e7\u00e3o do medidor", + "delta_values": "Valores delta", + "name": "Nome", + "net_consumption": "Consumo l\u00edquido", + "offset": "Compensa\u00e7\u00e3o do reajuste do medidor", + "source": "Sensor de entrada", + "tariffs": "Tarifas compat\u00edveis" + }, + "data_description": { + "delta_values": "Habilite se os valores de origem forem valores delta desde a \u00faltima leitura em vez de valores absolutos.", + "net_consumption": "Ative se a fonte for um medidor de rede, o que significa que pode aumentar e diminuir.", + "offset": "Desloque o dia de uma reinicializa\u00e7\u00e3o mensal do medidor.", + "tariffs": "Uma lista de tarifas suportadas, deixe em branco se apenas uma \u00fanica tarifa for necess\u00e1ria." + }, + "description": "Crie um sensor que rastreie o consumo de v\u00e1rias utilidades (por exemplo, energia, g\u00e1s, \u00e1gua, aquecimento) durante um per\u00edodo de tempo configurado, normalmente mensalmente. O sensor do contador da concession\u00e1ria suporta opcionalmente a divis\u00e3o do consumo por tarif\u00e1rio, neste caso \u00e9 criado um sensor para cada tarif\u00e1rio e uma entidade seleccionada para escolher o tarif\u00e1rio atual.", + "title": "Adicionar medidor de utilidades" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "source": "Sensor de entrada" + } + } + } + }, + "title": "Medidor de utilidade" +} \ No newline at end of file diff --git a/homeassistant/components/utility_meter/translations/ru.json b/homeassistant/components/utility_meter/translations/ru.json new file mode 100644 index 00000000000..3eda01a8116 --- /dev/null +++ b/homeassistant/components/utility_meter/translations/ru.json @@ -0,0 +1,35 @@ +{ + "config": { + "step": { + "user": { + "data": { + "cycle": "\u0426\u0438\u043a\u043b \u0441\u0431\u0440\u043e\u0441\u0430 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430", + "delta_values": "\u0414\u0435\u043b\u044c\u0442\u0430-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f", + "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", + "net_consumption": "\u0427\u0438\u0441\u0442\u043e\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435", + "offset": "\u0421\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0441\u0431\u0440\u043e\u0441\u0430 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430", + "source": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0441\u0435\u043d\u0441\u043e\u0440", + "tariffs": "\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0442\u0430\u0440\u0438\u0444\u044b" + }, + "data_description": { + "delta_values": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435, \u0435\u0441\u043b\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0435\u043b\u044c\u0442\u0430-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f, \u0430 \u043d\u0435 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438.", + "net_consumption": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435, \u0435\u0441\u043b\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0442\u0442\u043e-\u0441\u0447\u0435\u0442\u0447\u0438\u043a\u043e\u043c, \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043a\u0430\u043a \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0442\u0430\u043a \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0442\u044c\u0441\u044f.", + "offset": "\u0421\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0434\u043d\u044f \u0435\u0436\u0435\u043c\u0435\u0441\u044f\u0447\u043d\u043e\u0433\u043e \u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u044f \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430.", + "tariffs": "\u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0442\u0430\u0440\u0438\u0444\u043e\u0432, \u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0443\u0441\u0442\u044b\u043c, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0442\u0430\u0440\u0438\u0444." + }, + "description": "\u0421\u0435\u043d\u0441\u043e\u0440 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043a\u043e\u043c\u043c\u0443\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u043b\u0443\u0433 (\u044d\u043d\u0435\u0440\u0433\u0438\u0438, \u0433\u0430\u0437\u0430, \u0432\u043e\u0434\u044b, \u043e\u0442\u043e\u043f\u043b\u0435\u043d\u0438\u044f) \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043e\u0431\u044b\u0447\u043d\u043e \u0435\u0436\u0435\u043c\u0435\u0441\u044f\u0447\u043d\u043e. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u0442\u0430\u0440\u0438\u0444\u0430\u043c, \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u043d\u0441\u043e\u0440 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0430\u0440\u0438\u0444\u0430, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0442\u0430\u0440\u0438\u0444\u0430.", + "title": "\u0421\u0447\u0435\u0442\u0447\u0438\u043a \u043a\u043e\u043c\u043c\u0443\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u043b\u0443\u0433" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "source": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0441\u0435\u043d\u0441\u043e\u0440" + } + } + } + }, + "title": "\u0421\u0447\u0435\u0442\u0447\u0438\u043a \u043a\u043e\u043c\u043c\u0443\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u043b\u0443\u0433" +} \ No newline at end of file diff --git a/homeassistant/components/utility_meter/translations/tr.json b/homeassistant/components/utility_meter/translations/tr.json new file mode 100644 index 00000000000..0eedf15d93e --- /dev/null +++ b/homeassistant/components/utility_meter/translations/tr.json @@ -0,0 +1,35 @@ +{ + "config": { + "step": { + "user": { + "data": { + "cycle": "Saya\u00e7 s\u0131f\u0131rlama d\u00f6ng\u00fcs\u00fc", + "delta_values": "Delta de\u011ferleri", + "name": "Ad", + "net_consumption": "Net t\u00fcketim", + "offset": "Saya\u00e7 s\u0131f\u0131rlama uzakl\u0131\u011f\u0131", + "source": "Giri\u015f sens\u00f6r\u00fc", + "tariffs": "Desteklenen tarifeler" + }, + "data_description": { + "delta_values": "Kaynak de\u011ferler, mutlak de\u011ferler yerine son okumadan itibaren delta de\u011ferler ise etkinle\u015ftirin.", + "net_consumption": "Kaynak bir net saya\u00e7 ise etkinle\u015ftirin, yani hem artabilir hem de azalabilir.", + "offset": "Ayl\u0131k saya\u00e7 s\u0131f\u0131rlama g\u00fcn\u00fcn\u00fc dengeleyin.", + "tariffs": "Desteklenen tarifelerin listesi, yaln\u0131zca tek bir tarife gerekiyorsa bo\u015f b\u0131rak\u0131n." + }, + "description": "\u00c7e\u015fitli hizmetlerin (\u00f6rn. enerji, gaz, su, \u0131s\u0131tma) t\u00fcketimini, yap\u0131land\u0131r\u0131lm\u0131\u015f bir s\u00fcre boyunca, genellikle ayl\u0131k olarak izleyen bir sens\u00f6r olu\u015fturun. \u015eebeke sayac\u0131 sens\u00f6r\u00fc iste\u011fe ba\u011fl\u0131 olarak t\u00fcketimin tarifelere g\u00f6re b\u00f6l\u00fcnmesini destekler, bu durumda her tarife i\u00e7in bir sens\u00f6r ve mevcut tarifeyi se\u00e7mek i\u00e7in se\u00e7ilen bir varl\u0131k olu\u015fturulur.", + "title": "Kullan\u0131m Sayac\u0131 Ekle" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "source": "Giri\u015f sens\u00f6r\u00fc" + } + } + } + }, + "title": "Yard\u0131mc\u0131 Saya\u00e7" +} \ No newline at end of file diff --git a/homeassistant/components/utility_meter/translations/zh-Hans.json b/homeassistant/components/utility_meter/translations/zh-Hans.json new file mode 100644 index 00000000000..a1db639adfb --- /dev/null +++ b/homeassistant/components/utility_meter/translations/zh-Hans.json @@ -0,0 +1,35 @@ +{ + "config": { + "step": { + "user": { + "data": { + "cycle": "\u8ba1\u91cf\u590d\u4f4d\u5468\u671f", + "delta_values": "\u8f93\u5165\u4e3a\u5dee\u503c", + "name": "\u540d\u79f0", + "net_consumption": "\u6570\u503c\u53ef\u56de\u9000", + "offset": "\u8ba1\u91cf\u590d\u4f4d\u504f\u79fb", + "source": "\u8f93\u5165\u4f20\u611f\u5668", + "tariffs": "\u652f\u6301\u7684\u8d39\u7387" + }, + "data_description": { + "delta_values": "\u5982\u679c\u6e90\u6570\u636e\u662f\u81ea\u4e0a\u6b21\u8bfb\u6570\u4ee5\u6765\u7684\u5dee\u503c\uff0c\u8bf7\u542f\u7528\u6b64\u9009\u9879\u3002", + "net_consumption": "\u5982\u679c\u6e90\u6570\u636e\u4e0d\u662f\u6301\u7eed\u589e\u957f\uff0c\u800c\u662f\u53ef\u4ee5\u964d\u4f4e\uff0c\u8bf7\u542f\u7528\u6b64\u9009\u9879\u3002", + "offset": "\u6309\u6708\u8ba1\u91cf\u65f6\u590d\u4f4d\u63a8\u8fdf\u7684\u5929\u6570\u3002", + "tariffs": "\u4ee5\u5217\u8868\u7684\u5f62\u5f0f\u5217\u51fa\u6240\u6709\u53ef\u80fd\u7684\u8d39\u7387\u3002\u5982\u679c\u8d39\u7387\u552f\u4e00\uff0c\u8bf7\u7559\u7a7a\u3002" + }, + "description": "\u521b\u5efa\u4f20\u611f\u5668\u6765\u5468\u671f\u6027\u5730\u76d1\u6d4b\u516c\u5171\u80fd\u6e90\uff08\u4f8b\u5982\u6c34\u3001\u7535\u3001\u71c3\u6c14\uff09\u7684\u6d88\u8017\u60c5\u51b5\u3002\u6b64\u7c7b\u4f20\u611f\u5668\u8fd8\u652f\u6301\u591a\u8d39\u7387\u5206\u522b\u7edf\u8ba1\uff08\u4f8b\u5982\u9636\u68af\u6c34\u4ef7\u3001\u5cf0\u8c37\u7535\u4ef7\uff09\uff0c\u4e3a\u6bcf\u79cd\u8d39\u7387\u5206\u522b\u521b\u5efa\u4e00\u4e2a\u4f20\u611f\u5668\uff0c\u5e76\u63d0\u4f9b\u4e00\u4e2a\u9009\u62e9\u5668\u5b9e\u4f53\u6765\u9009\u62e9\u5f53\u524d\u6267\u884c\u7684\u8d39\u7387\u3002", + "title": "\u6dfb\u52a0\u4eea\u8868\u7edf\u8ba1" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "source": "\u8f93\u5165\u4f20\u611f\u5668" + } + } + } + }, + "title": "\u4eea\u8868\u7edf\u8ba1" +} \ No newline at end of file diff --git a/homeassistant/components/utility_meter/translations/zh-Hant.json b/homeassistant/components/utility_meter/translations/zh-Hant.json new file mode 100644 index 00000000000..dc23f73a89e --- /dev/null +++ b/homeassistant/components/utility_meter/translations/zh-Hant.json @@ -0,0 +1,35 @@ +{ + "config": { + "step": { + "user": { + "data": { + "cycle": "\u529f\u8017\u8868\u91cd\u7f6e\u9031\u671f", + "delta_values": "\u589e\u91cf\u503c", + "name": "\u540d\u7a31", + "net_consumption": "\u6de8\u8017\u80fd", + "offset": "\u529f\u8017\u8868\u91cd\u7f6e\u504f\u79fb", + "source": "\u8f38\u5165\u611f\u6e2c\u5668", + "tariffs": "\u652f\u63f4\u5206\u5340\u9069\u7528\u8cbb\u7387" + }, + "data_description": { + "delta_values": "\u5047\u5982\u4f86\u6e90\u70ba\u4e0a\u6b21\u8b80\u53d6\u589e\u91cf\u503c\u3001\u800c\u975e\u7d55\u5c0d\u503c\u5247\u958b\u555f\u3002", + "net_consumption": "\u5047\u5982\u4f86\u6e90\u70ba\u6de8\u529f\u8017\u5247\u958b\u555f\u3001\u8868\u793a\u53ef\u540c\u6642\u589e\u52a0\u53ca\u6e1b\u5c11\u3002", + "offset": "\u6bcf\u6708\u529f\u8017\u91cd\u7f6e\u504f\u79fb\u5929\u6578\u3002", + "tariffs": "\u652f\u63f4\u5206\u5340\u9069\u7528\u8cbb\u7387\u5217\u8868\uff0c\u5047\u5982\u9700\u8981\u55ae\u4e00\u532f\u7387\u3001\u5247\u4fdd\u7559\u7a7a\u767d\u3002" + }, + "description": "\u65b0\u589e\u65bc\u8a2d\u5b9a\u9031\u671f\u6642\u9593\u5167\uff08\u901a\u5e38\u70ba\u6bcf\u6708\uff09\u8ddf\u8e2a\u5404\u7a2e\u516c\u7528\u4e8b\u696d\uff08\u4f8b\u5982\uff0c\u96fb\u529b\u3001\u5929\u7136\u6c23\u3001\u6c34\u3001\u4f9b\u6696\uff09\u8017\u80fd\u6578\u503c\u611f\u6e2c\u5668\u3002\u529f\u8017\u8868\u611f\u6e2c\u5668\u540c\u6642\u9078\u9805\u652f\u63f4\u5206\u5340\u9069\u7528\u8cbb\u7387\u8a08\u7b97\uff0c\u5728\u6b64\u60c5\u6cc1\u4e0b\u3001\u6bcf\u500b\u8cbb\u7387\u7686\u6703\u65b0\u589e\u611f\u6e2c\u5668\u3001\u53ca\u9078\u64c7\u5be6\u9ad4\u4ee5\u9078\u64c7\u76ee\u524d\u8cbb\u7387\u3002", + "title": "\u65b0\u589e\u529f\u8017\u8868" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "source": "\u8f38\u5165\u611f\u6e2c\u5668" + } + } + } + }, + "title": "\u529f\u8017\u8868" +} \ No newline at end of file diff --git a/homeassistant/components/vallox/translations/bg.json b/homeassistant/components/vallox/translations/bg.json index 1c2e0aee24c..ec27ad32d0b 100644 --- a/homeassistant/components/vallox/translations/bg.json +++ b/homeassistant/components/vallox/translations/bg.json @@ -14,10 +14,8 @@ "step": { "user": { "data": { - "host": "\u0425\u043e\u0441\u0442", - "name": "\u0418\u043c\u0435" - }, - "title": "Vallox" + "host": "\u0425\u043e\u0441\u0442" + } } } } diff --git a/homeassistant/components/vallox/translations/ca.json b/homeassistant/components/vallox/translations/ca.json index 7a92c24a558..ba8d6287ed4 100644 --- a/homeassistant/components/vallox/translations/ca.json +++ b/homeassistant/components/vallox/translations/ca.json @@ -14,11 +14,8 @@ "step": { "user": { "data": { - "host": "Amfitri\u00f3", - "name": "Nom" - }, - "description": "Configura la integraci\u00f3 Vallox. Si tens problemes amb la configuraci\u00f3, v\u00e9s a {integration_docs_url}.", - "title": "Vallox" + "host": "Amfitri\u00f3" + } } } } diff --git a/homeassistant/components/vallox/translations/cs.json b/homeassistant/components/vallox/translations/cs.json index 2a364830dbf..ffef74e8f9c 100644 --- a/homeassistant/components/vallox/translations/cs.json +++ b/homeassistant/components/vallox/translations/cs.json @@ -8,13 +8,6 @@ }, "error": { "unknown": "Neo\u010dek\u00e1van\u00e1 chyba" - }, - "step": { - "user": { - "data": { - "name": "Jm\u00e9no" - } - } } } } \ No newline at end of file diff --git a/homeassistant/components/vallox/translations/de.json b/homeassistant/components/vallox/translations/de.json index 661f45bdfcf..711ef828ad3 100644 --- a/homeassistant/components/vallox/translations/de.json +++ b/homeassistant/components/vallox/translations/de.json @@ -14,11 +14,8 @@ "step": { "user": { "data": { - "host": "Host", - "name": "Name" - }, - "description": "Richte die Vallox-Integration ein. Wenn du Probleme mit der Konfiguration hast, gehe zu {integration_docs_url} .", - "title": "Vallox" + "host": "Host" + } } } } diff --git a/homeassistant/components/vallox/translations/el.json b/homeassistant/components/vallox/translations/el.json index 4b15c926247..cab5c683ae5 100644 --- a/homeassistant/components/vallox/translations/el.json +++ b/homeassistant/components/vallox/translations/el.json @@ -14,11 +14,8 @@ "step": { "user": { "data": { - "host": "\u039a\u03b5\u03bd\u03c4\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae\u03c2", - "name": "\u038c\u03bd\u03bf\u03bc\u03b1" - }, - "description": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5 Vallox. \u0395\u03ac\u03bd \u03ad\u03c7\u03b5\u03c4\u03b5 \u03c0\u03c1\u03bf\u03b2\u03bb\u03ae\u03bc\u03b1\u03c4\u03b1 \u03bc\u03b5 \u03c4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03bc\u03b5\u03c4\u03b1\u03b2\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 {integration_docs_url}.", - "title": "Vallox" + "host": "\u039a\u03b5\u03bd\u03c4\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae\u03c2" + } } } } diff --git a/homeassistant/components/vallox/translations/en.json b/homeassistant/components/vallox/translations/en.json index efa32604646..3390fd34854 100644 --- a/homeassistant/components/vallox/translations/en.json +++ b/homeassistant/components/vallox/translations/en.json @@ -14,11 +14,8 @@ "step": { "user": { "data": { - "host": "Host", - "name": "Name" - }, - "description": "Set up the Vallox integration. If you have problems with configuration go to {integration_docs_url}.", - "title": "Vallox" + "host": "Host" + } } } } diff --git a/homeassistant/components/vallox/translations/es.json b/homeassistant/components/vallox/translations/es.json index 3373f38a725..373ae333ec3 100644 --- a/homeassistant/components/vallox/translations/es.json +++ b/homeassistant/components/vallox/translations/es.json @@ -14,11 +14,8 @@ "step": { "user": { "data": { - "host": "Host", - "name": "Nombre" - }, - "description": "Configure la integraci\u00f3n de Vallox. Si tiene problemas con la configuraci\u00f3n, vaya a {integration_docs_url} .", - "title": "Vallox" + "host": "Host" + } } } } diff --git a/homeassistant/components/vallox/translations/et.json b/homeassistant/components/vallox/translations/et.json index 8f3a1c7cb3e..14f1854aded 100644 --- a/homeassistant/components/vallox/translations/et.json +++ b/homeassistant/components/vallox/translations/et.json @@ -14,11 +14,8 @@ "step": { "user": { "data": { - "host": "Host", - "name": "Nimi" - }, - "description": "Seadista Valloxi sidumine. Kui seadistamisega on probleeme, mine aadressile {integration_docs_url}.", - "title": "Vallox" + "host": "Host" + } } } } diff --git a/homeassistant/components/vallox/translations/fr.json b/homeassistant/components/vallox/translations/fr.json index c9823756185..c5db6b81e9e 100644 --- a/homeassistant/components/vallox/translations/fr.json +++ b/homeassistant/components/vallox/translations/fr.json @@ -14,11 +14,8 @@ "step": { "user": { "data": { - "host": "H\u00f4te", - "name": "Nom" - }, - "description": "Mettre en place l'int\u00e9gration Vallox. Si vous rencontrez des probl\u00e8mes de configuration, acc\u00e9dez \u00e0 {integration_docs_url} .", - "title": "Vallox" + "host": "H\u00f4te" + } } } } diff --git a/homeassistant/components/vallox/translations/he.json b/homeassistant/components/vallox/translations/he.json index ad8f603cb5a..067445268a8 100644 --- a/homeassistant/components/vallox/translations/he.json +++ b/homeassistant/components/vallox/translations/he.json @@ -14,8 +14,7 @@ "step": { "user": { "data": { - "host": "\u05de\u05d0\u05e8\u05d7", - "name": "\u05e9\u05dd" + "host": "\u05de\u05d0\u05e8\u05d7" } } } diff --git a/homeassistant/components/vallox/translations/hu.json b/homeassistant/components/vallox/translations/hu.json index 1b3366b5f0e..58404c9ad73 100644 --- a/homeassistant/components/vallox/translations/hu.json +++ b/homeassistant/components/vallox/translations/hu.json @@ -14,11 +14,8 @@ "step": { "user": { "data": { - "host": "C\u00edm", - "name": "N\u00e9v" - }, - "description": "A Vallox integr\u00e1ci\u00f3 be\u00e1ll\u00edt\u00e1sa. Ha probl\u00e9m\u00e1i vannak a konfigur\u00e1ci\u00f3val, l\u00e1togasson el a https://www.home-assistant.io/integrations/vallox oldalra.", - "title": "Vallox" + "host": "C\u00edm" + } } } } diff --git a/homeassistant/components/vallox/translations/id.json b/homeassistant/components/vallox/translations/id.json index 4f8fbbff6e9..90e7c60b49f 100644 --- a/homeassistant/components/vallox/translations/id.json +++ b/homeassistant/components/vallox/translations/id.json @@ -14,11 +14,8 @@ "step": { "user": { "data": { - "host": "Host", - "name": "Nama" - }, - "description": "Siapkan integrasi Vallox Jika Anda memiliki masalah dengan konfigurasi, buka {integration_docs_url}.", - "title": "Vallox" + "host": "Host" + } } } } diff --git a/homeassistant/components/vallox/translations/it.json b/homeassistant/components/vallox/translations/it.json index 9aa0e929c50..c82991be7e7 100644 --- a/homeassistant/components/vallox/translations/it.json +++ b/homeassistant/components/vallox/translations/it.json @@ -14,11 +14,8 @@ "step": { "user": { "data": { - "host": "Host", - "name": "Nome" - }, - "description": "Configura l'integrazione Vallox. Se hai problemi con la configurazione vai su {integration_docs_url}.", - "title": "Vallox" + "host": "Host" + } } } } diff --git a/homeassistant/components/vallox/translations/ja.json b/homeassistant/components/vallox/translations/ja.json index bac8c6a7732..a5467460d22 100644 --- a/homeassistant/components/vallox/translations/ja.json +++ b/homeassistant/components/vallox/translations/ja.json @@ -14,11 +14,8 @@ "step": { "user": { "data": { - "host": "\u30db\u30b9\u30c8", - "name": "\u540d\u524d" - }, - "description": "Vallox\u306e\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u307e\u3059\u3002\u8a2d\u5b9a\u306b\u95a2\u3057\u3066\u554f\u984c\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f\u3001https://www.home-assistant.io/integrations/vallox \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u304f\u3060\u3055\u3044\u3002", - "title": "Vallox" + "host": "\u30db\u30b9\u30c8" + } } } } diff --git a/homeassistant/components/vallox/translations/lv.json b/homeassistant/components/vallox/translations/lv.json deleted file mode 100644 index cee9047f155..00000000000 --- a/homeassistant/components/vallox/translations/lv.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "config": { - "step": { - "user": { - "title": "Vallox" - } - } - } -} \ No newline at end of file diff --git a/homeassistant/components/vallox/translations/nl.json b/homeassistant/components/vallox/translations/nl.json index 9cc6ea07a93..b8b5b6bdc57 100644 --- a/homeassistant/components/vallox/translations/nl.json +++ b/homeassistant/components/vallox/translations/nl.json @@ -14,11 +14,8 @@ "step": { "user": { "data": { - "host": "Host", - "name": "Naam" - }, - "description": "Stel de Vallox integratie in. Als u problemen heeft met de configuratie ga dan naar {integration_docs_url}", - "title": "Vallox" + "host": "Host" + } } } } diff --git a/homeassistant/components/vallox/translations/no.json b/homeassistant/components/vallox/translations/no.json index df8fd8e4535..4cc8f8321cb 100644 --- a/homeassistant/components/vallox/translations/no.json +++ b/homeassistant/components/vallox/translations/no.json @@ -14,11 +14,8 @@ "step": { "user": { "data": { - "host": "Vert", - "name": "Navn" - }, - "description": "Sett opp Vallox-integrasjonen. Hvis du har problemer med konfigurasjonen, g\u00e5 til {integration_docs_url} .", - "title": "Vallox" + "host": "Vert" + } } } } diff --git a/homeassistant/components/vallox/translations/pl.json b/homeassistant/components/vallox/translations/pl.json index f96481eba82..b608d4f8e0b 100644 --- a/homeassistant/components/vallox/translations/pl.json +++ b/homeassistant/components/vallox/translations/pl.json @@ -14,11 +14,8 @@ "step": { "user": { "data": { - "host": "Nazwa hosta lub adres IP", - "name": "Nazwa" - }, - "description": "Konfiguracja integracji Vallox. Je\u015bli masz problemy z konfiguracj\u0105 przejd\u017a do {integration_docs_url} .", - "title": "Vallox" + "host": "Nazwa hosta lub adres IP" + } } } } diff --git a/homeassistant/components/vallox/translations/pt-BR.json b/homeassistant/components/vallox/translations/pt-BR.json index 729e5257db8..cccafd932c8 100644 --- a/homeassistant/components/vallox/translations/pt-BR.json +++ b/homeassistant/components/vallox/translations/pt-BR.json @@ -14,11 +14,8 @@ "step": { "user": { "data": { - "host": "Nome do host", - "name": "Nome" - }, - "description": "Configure a integra\u00e7\u00e3o Vallox. Se voc\u00ea tiver problemas com a configura\u00e7\u00e3o, v\u00e1 para {integration_docs_url} .", - "title": "Vallox" + "host": "Nome do host" + } } } } diff --git a/homeassistant/components/vallox/translations/ru.json b/homeassistant/components/vallox/translations/ru.json index 70e9551ae11..a1165b287d1 100644 --- a/homeassistant/components/vallox/translations/ru.json +++ b/homeassistant/components/vallox/translations/ru.json @@ -14,11 +14,8 @@ "step": { "user": { "data": { - "host": "\u0425\u043e\u0441\u0442", - "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435" - }, - "description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 Home Assistant \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 Vallox. \u0415\u0441\u043b\u0438 \u0443 \u0412\u0430\u0441 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439: {integration_docs_url}.", - "title": "Vallox" + "host": "\u0425\u043e\u0441\u0442" + } } } } diff --git a/homeassistant/components/vallox/translations/tr.json b/homeassistant/components/vallox/translations/tr.json index 1958a0535b6..8d5780d2019 100644 --- a/homeassistant/components/vallox/translations/tr.json +++ b/homeassistant/components/vallox/translations/tr.json @@ -14,11 +14,8 @@ "step": { "user": { "data": { - "host": "Sunucu", - "name": "Ad" - }, - "description": "Vallox entegrasyonunu ayarlay\u0131n. Yap\u0131land\u0131rmayla ilgili sorunlar\u0131n\u0131z varsa {integration_docs_url} adresine gidin.", - "title": "Vallox" + "host": "Sunucu" + } } } } diff --git a/homeassistant/components/vallox/translations/zh-Hant.json b/homeassistant/components/vallox/translations/zh-Hant.json index c9f1d13fa08..d9e2150dce9 100644 --- a/homeassistant/components/vallox/translations/zh-Hant.json +++ b/homeassistant/components/vallox/translations/zh-Hant.json @@ -14,11 +14,8 @@ "step": { "user": { "data": { - "host": "\u4e3b\u6a5f\u7aef", - "name": "\u540d\u7a31" - }, - "description": "\u8a2d\u5b9a Vallox \u6574\u5408\u3002\u5047\u5982\u9700\u8981\u5354\u52a9\uff0c\u8acb\u53c3\u8003\uff1a{integration_docs_url}\u3002", - "title": "Vallox" + "host": "\u4e3b\u6a5f\u7aef" + } } } } diff --git a/homeassistant/components/venstar/translations/pl.json b/homeassistant/components/venstar/translations/pl.json index ad0e76435dc..fdaf30ead9f 100644 --- a/homeassistant/components/venstar/translations/pl.json +++ b/homeassistant/components/venstar/translations/pl.json @@ -16,7 +16,7 @@ "ssl": "Certyfikat SSL", "username": "Nazwa u\u017cytkownika" }, - "title": "Po\u0142\u0105cz z termostatem Venstar" + "title": "Po\u0142\u0105czenie z termostatem Venstar" } } } diff --git a/homeassistant/components/vera/translations/ca.json b/homeassistant/components/vera/translations/ca.json index 13a889cb7db..6aa7cd8292d 100644 --- a/homeassistant/components/vera/translations/ca.json +++ b/homeassistant/components/vera/translations/ca.json @@ -10,8 +10,9 @@ "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 ser similar al seg\u00fcent: http://192.168.1.161:3480.", - "title": "Configuraci\u00f3 del controlador Vera" + "data_description": { + "vera_controller_url": "Hauria de tenir aquest aspecte: http://192.168.1.161:3480" + } } } }, diff --git a/homeassistant/components/vera/translations/cs.json b/homeassistant/components/vera/translations/cs.json index df93575a945..33b7cbf6625 100644 --- a/homeassistant/components/vera/translations/cs.json +++ b/homeassistant/components/vera/translations/cs.json @@ -9,9 +9,7 @@ "exclude": "ID za\u0159\u00edzen\u00ed Vera, kter\u00e1 chcete vylou\u010dit z Home Assistant.", "lights": "ID za\u0159\u00edzen\u00ed Vera, se kter\u00fdmi m\u00e1 Home Assistant zach\u00e1zet jako se sv\u011btly.", "vera_controller_url": "URL adresa ovlada\u010de" - }, - "description": "N\u00ed\u017ee zadejte adresu URL odvlada\u010de Vera. M\u011blo by to vypadat takto: http://192.168.1.161:3480.", - "title": "Nastaven\u00ed ovlada\u010de Vera" + } } } }, diff --git a/homeassistant/components/vera/translations/de.json b/homeassistant/components/vera/translations/de.json index 999dfc8213f..f13e347ffd9 100644 --- a/homeassistant/components/vera/translations/de.json +++ b/homeassistant/components/vera/translations/de.json @@ -10,8 +10,9 @@ "lights": "Vera Switch-Ger\u00e4te-IDs, die im Home Assistant als Lichter behandelt werden sollen.", "vera_controller_url": "Controller-URL" }, - "description": "Stelle unten eine Vera-Controller-URL zur Verf\u00fcgung. Sie sollte wie folgt aussehen: http://192.168.1.161:3480.", - "title": "Richte den Vera-Controller ein" + "data_description": { + "vera_controller_url": "Sie sollte wie folgt aussehen: http://192.168.1.161:3480" + } } } }, diff --git a/homeassistant/components/vera/translations/el.json b/homeassistant/components/vera/translations/el.json index 1039fb01ccd..bb667455132 100644 --- a/homeassistant/components/vera/translations/el.json +++ b/homeassistant/components/vera/translations/el.json @@ -10,8 +10,9 @@ "lights": "\u0391\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03ac \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2 \u03bc\u03b5\u03c4\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2 Vera \u03b3\u03b9\u03b1 \u03c7\u03c1\u03ae\u03c3\u03b7 \u03c9\u03c2 \u03c6\u03ce\u03c4\u03b1 \u03c3\u03c4\u03bf Home Assistant.", "vera_controller_url": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03b5\u03bb\u03b5\u03b3\u03ba\u03c4\u03ae" }, - "description": "\u0394\u03ce\u03c3\u03c4\u03b5 \u03bc\u03b9\u03b1 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03c4\u03bf\u03c5 \u03b5\u03bb\u03b5\u03b3\u03ba\u03c4\u03ae Vera \u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9. \u0398\u03b1 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03bc\u03bf\u03b9\u03ac\u03b6\u03b5\u03b9 \u03bc\u03b5 \u03b1\u03c5\u03c4\u03cc: http://192.168.1.161:3480.", - "title": "\u03a1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 \u03b5\u03bb\u03b5\u03b3\u03ba\u03c4\u03ae Vera" + "data_description": { + "vera_controller_url": "\u0398\u03b1 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03bc\u03bf\u03b9\u03ac\u03b6\u03b5\u03b9 \u03bc\u03b5 \u03b1\u03c5\u03c4\u03cc: http://192.168.1.161:3480" + } } } }, diff --git a/homeassistant/components/vera/translations/en.json b/homeassistant/components/vera/translations/en.json index 94f490d71ee..53c60e39c01 100644 --- a/homeassistant/components/vera/translations/en.json +++ b/homeassistant/components/vera/translations/en.json @@ -10,8 +10,9 @@ "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" + "data_description": { + "vera_controller_url": "It should look like this: http://192.168.1.161:3480" + } } } }, diff --git a/homeassistant/components/vera/translations/es-419.json b/homeassistant/components/vera/translations/es-419.json index 834c74b7ed3..40b78726144 100644 --- a/homeassistant/components/vera/translations/es-419.json +++ b/homeassistant/components/vera/translations/es-419.json @@ -9,9 +9,7 @@ "exclude": "Identificadores de dispositivo de Vera para excluir de Home Assistant.", "lights": "Vera cambia los identificadores del dispositivo para tratarlos como luces en Home Assistant.", "vera_controller_url": "URL del controlador" - }, - "description": "Proporcione una URL del controlador Vera a continuaci\u00f3n. Deber\u00eda verse as\u00ed: http://192.168.1.161:3480.", - "title": "Configurar el controlador Vera" + } } } }, diff --git a/homeassistant/components/vera/translations/es.json b/homeassistant/components/vera/translations/es.json index d34e106e9eb..0cccacaa88f 100644 --- a/homeassistant/components/vera/translations/es.json +++ b/homeassistant/components/vera/translations/es.json @@ -9,9 +9,7 @@ "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" + } } } }, diff --git a/homeassistant/components/vera/translations/et.json b/homeassistant/components/vera/translations/et.json index 4afb098caa6..36d2cae71bf 100644 --- a/homeassistant/components/vera/translations/et.json +++ b/homeassistant/components/vera/translations/et.json @@ -10,8 +10,9 @@ "lights": "Vera l\u00fclitite ID'd mida neid k\u00e4sitleda Home Assistantis tuledena.", "vera_controller_url": "Kontrolleri URL" }, - "description": "Esita allpool Vera kontrolleri URL. See peaks v\u00e4lja n\u00e4gema selline: http://192.168.1.161:3480.", - "title": "Seadista Vera kontroller" + "data_description": { + "vera_controller_url": "See peaks v\u00e4lja n\u00e4gema selline: http://192.168.1.161:3480" + } } } }, diff --git a/homeassistant/components/vera/translations/fr.json b/homeassistant/components/vera/translations/fr.json index 133319c552d..f57145a9a24 100644 --- a/homeassistant/components/vera/translations/fr.json +++ b/homeassistant/components/vera/translations/fr.json @@ -10,8 +10,9 @@ "lights": "Identifiants des interrupteurs vera \u00e0 traiter comme des lumi\u00e8res dans Home Assistant", "vera_controller_url": "URL du contr\u00f4leur" }, - "description": "Fournissez une URL de contr\u00f4leur Vera ci-dessous. Cela devrait ressembler \u00e0 ceci : http://192.168.1.161:3480.", - "title": "Configurer le contr\u00f4leur Vera" + "data_description": { + "vera_controller_url": "Cela devrait ressembler \u00e0 ceci\u00a0: http://192.168.1.161:3480" + } } } }, diff --git a/homeassistant/components/vera/translations/hu.json b/homeassistant/components/vera/translations/hu.json index d1d4910c97a..30cf7e5e7d1 100644 --- a/homeassistant/components/vera/translations/hu.json +++ b/homeassistant/components/vera/translations/hu.json @@ -10,8 +10,9 @@ "lights": "A Vera kapcsol\u00f3eszk\u00f6z-azonos\u00edt\u00f3k f\u00e9nyk\u00e9nt kezelhet\u0151k a Home Assistant alkalmaz\u00e1sban.", "vera_controller_url": "Vez\u00e9rl\u0151 URL" }, - "description": "Adja meg a Vera vez\u00e9rl\u0151 URL-j\u00e9t al\u00e1bb. Hasonl\u00f3k\u00e9ppen kell kin\u00e9znie: http://192.168.1.161:3480.", - "title": "Vera vez\u00e9rl\u0151 be\u00e1ll\u00edt\u00e1sa" + "data_description": { + "vera_controller_url": "\u00cdgy kell kin\u00e9znie: http://192.168.1.161:3480" + } } } }, diff --git a/homeassistant/components/vera/translations/id.json b/homeassistant/components/vera/translations/id.json index 435fc722dba..99422f10be6 100644 --- a/homeassistant/components/vera/translations/id.json +++ b/homeassistant/components/vera/translations/id.json @@ -10,8 +10,9 @@ "lights": "ID perangkat sakelar Vera yang diperlakukan sebagai lampu di Home Assistant", "vera_controller_url": "URL Pengontrol" }, - "description": "Tentukan URL pengontrol Vera di bawah. Ini akan terlihat seperti ini: http://192.168.1.161:3480.", - "title": "Siapkan pengontrol Vera" + "data_description": { + "vera_controller_url": "Seharusnya terlihat seperti ini: http://192.168.1.161:3480" + } } } }, diff --git a/homeassistant/components/vera/translations/it.json b/homeassistant/components/vera/translations/it.json index a3832914ac6..292e4048f0a 100644 --- a/homeassistant/components/vera/translations/it.json +++ b/homeassistant/components/vera/translations/it.json @@ -10,8 +10,9 @@ "lights": "Gli ID dei dispositivi switch Vera da trattare come luci in Home Assistant.", "vera_controller_url": "URL del controller" }, - "description": "Fornisci un URL controller Vera di seguito. Dovrebbe assomigliare a questo: http://192.168.1.161:3480.", - "title": "Configurazione controller Vera" + "data_description": { + "vera_controller_url": "Dovrebbe apparire cos\u00ec: http://192.168.1.161:3480" + } } } }, diff --git a/homeassistant/components/vera/translations/ja.json b/homeassistant/components/vera/translations/ja.json index 2f800ee7b83..83ca62f4abf 100644 --- a/homeassistant/components/vera/translations/ja.json +++ b/homeassistant/components/vera/translations/ja.json @@ -10,8 +10,9 @@ "lights": "Vera\u306f\u3001Home Assistant\u3067\u30e9\u30a4\u30c8\u3068\u3057\u3066\u6271\u3046\u30c7\u30d0\u30a4\u30b9ID\u3092\u5207\u308a\u66ff\u3048\u307e\u3059\u3002", "vera_controller_url": "\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306eURL" }, - "description": "Vera\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306eURL\u3092\u4ee5\u4e0b\u306b\u793a\u3057\u307e\u3059: http://192.168.1.161:3480 \u306e\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u308b\u306f\u305a\u3067\u3059\u3002", - "title": "Vera controller\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7" + "data_description": { + "vera_controller_url": "\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059: http://192.168.1.161:3480" + } } } }, diff --git a/homeassistant/components/vera/translations/ko.json b/homeassistant/components/vera/translations/ko.json index 0990435cb4a..430af1be385 100644 --- a/homeassistant/components/vera/translations/ko.json +++ b/homeassistant/components/vera/translations/ko.json @@ -9,9 +9,7 @@ "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 \uc8fc\uc18c\ub97c \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\ud558\uae30" + } } } }, diff --git a/homeassistant/components/vera/translations/lb.json b/homeassistant/components/vera/translations/lb.json index 0f3c8acc028..307218b2b23 100644 --- a/homeassistant/components/vera/translations/lb.json +++ b/homeassistant/components/vera/translations/lb.json @@ -9,9 +9,7 @@ "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" + } } } }, diff --git a/homeassistant/components/vera/translations/nl.json b/homeassistant/components/vera/translations/nl.json index b4aa4a1d7a3..bc81fa3563e 100644 --- a/homeassistant/components/vera/translations/nl.json +++ b/homeassistant/components/vera/translations/nl.json @@ -10,8 +10,9 @@ "lights": "Vera-schakelapparaat id's behandelen als lichten in Home Assistant.", "vera_controller_url": "Controller-URL" }, - "description": "Geef hieronder een URL voor de Vera-controller op. Het zou er zo uit moeten zien: http://192.168.1.161:3480.", - "title": "Stel Vera controller in" + "data_description": { + "vera_controller_url": "Het zou er zo uit moeten zien: http://192.168.1.161:3480" + } } } }, diff --git a/homeassistant/components/vera/translations/no.json b/homeassistant/components/vera/translations/no.json index f1454be6799..807b44dc84e 100644 --- a/homeassistant/components/vera/translations/no.json +++ b/homeassistant/components/vera/translations/no.json @@ -10,8 +10,9 @@ "lights": "Vera bytter enhets ID-er for \u00e5 behandle som lys i Home Assistant", "vera_controller_url": "URL-adresse for kontroller" }, - "description": "Gi en Vera-kontroller-URL nedenfor. Det skal se slik ut: http://192.168.1.161:3480.", - "title": "Oppsett Vera-kontroller" + "data_description": { + "vera_controller_url": "Det skal se slik ut: http://192.168.1.161:3480" + } } } }, diff --git a/homeassistant/components/vera/translations/pl.json b/homeassistant/components/vera/translations/pl.json index 5b7b6886085..5be37d2a571 100644 --- a/homeassistant/components/vera/translations/pl.json +++ b/homeassistant/components/vera/translations/pl.json @@ -10,8 +10,9 @@ "lights": "Identyfikatory prze\u0142\u0105cznik\u00f3w Vera, kt\u00f3re maj\u0105 by\u0107 traktowane jako \u015bwiat\u0142a w Home Assistant.", "vera_controller_url": "Adres URL kontrolera" }, - "description": "Podaj adres URL kontrolera Vera. Powinien on wygl\u0105da\u0107 tak: http://192.168.1.161:3480.", - "title": "Konfiguracja kontrolera Vera" + "data_description": { + "vera_controller_url": "Powinno to wygl\u0105da\u0107 tak: http://192.168.1.161:3480" + } } } }, diff --git a/homeassistant/components/vera/translations/pt-BR.json b/homeassistant/components/vera/translations/pt-BR.json index 361b0487617..b3c39d4cbd7 100644 --- a/homeassistant/components/vera/translations/pt-BR.json +++ b/homeassistant/components/vera/translations/pt-BR.json @@ -10,8 +10,9 @@ "lights": "Vera - alternar os IDs do dispositivo para tratar como luzes no Home Assistant.", "vera_controller_url": "URL do controlador" }, - "description": "Forne\u00e7a um URL do controlador Vera abaixo. Deve ficar assim: http://192.168.1.161:3480.", - "title": "Configurar controlador Vera" + "data_description": { + "vera_controller_url": "Deve ficar assim: http://192.168.1.161:3480" + } } } }, diff --git a/homeassistant/components/vera/translations/ru.json b/homeassistant/components/vera/translations/ru.json index 857ffaa5bf5..43dc0cfd168 100644 --- a/homeassistant/components/vera/translations/ru.json +++ b/homeassistant/components/vera/translations/ru.json @@ -10,8 +10,9 @@ "lights": "ID \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0435\u0439 Vera, \u0434\u043b\u044f \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0432 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435", "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 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 'address[:port]' (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: 'http://192.168.1.161:3480').", - "title": "Vera" + "data_description": { + "vera_controller_url": "\u0414\u043e\u043b\u0436\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a: http://192.168.1.161:3480" + } } } }, diff --git a/homeassistant/components/vera/translations/sl.json b/homeassistant/components/vera/translations/sl.json index 355c6353388..01b2f755ac5 100644 --- a/homeassistant/components/vera/translations/sl.json +++ b/homeassistant/components/vera/translations/sl.json @@ -9,9 +9,7 @@ "exclude": "ID-ji naprav Vera, ki jih \u017eelite izklju\u010diti iz programa Home Assistant.", "lights": "ID-ji stikal Vera, ki naj jih Home Assistant tretira kot lu\u010di.", "vera_controller_url": "URL krmilnika" - }, - "description": "Spodaj navedite URL krmilnika Vera. Izgledati bi moral takole: http://192.168.1.161:3480.", - "title": "Nastavite krmilnik Vera" + } } } }, diff --git a/homeassistant/components/vera/translations/tr.json b/homeassistant/components/vera/translations/tr.json index fa66c1c9806..465aed0cb90 100644 --- a/homeassistant/components/vera/translations/tr.json +++ b/homeassistant/components/vera/translations/tr.json @@ -10,8 +10,9 @@ "lights": "Vera, Home Assistant'ta \u0131\u015f\u0131k gibi davranmak i\u00e7in cihaz kimliklerini de\u011fi\u015ftirir.", "vera_controller_url": "Denetleyici URL'si" }, - "description": "A\u015fa\u011f\u0131da bir Vera denetleyici URL'si sa\u011flay\u0131n. \u015eu \u015fekilde g\u00f6r\u00fcnmelidir: http://192.168.1.161:3480.", - "title": "Vera denetleyicisini kurun" + "data_description": { + "vera_controller_url": "\u015eu \u015fekilde g\u00f6r\u00fcnmelidir: http://192.168.1.161:3480" + } } } }, diff --git a/homeassistant/components/vera/translations/uk.json b/homeassistant/components/vera/translations/uk.json index 8c591a1cc10..5042d04c26a 100644 --- a/homeassistant/components/vera/translations/uk.json +++ b/homeassistant/components/vera/translations/uk.json @@ -9,9 +9,7 @@ "exclude": "ID \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u0457\u0432 Vera, \u0434\u043b\u044f \u0432\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044f \u0437 Home Assistant", "lights": "ID \u0432\u0438\u043c\u0438\u043a\u0430\u0447\u0456\u0432 Vera, \u0434\u043b\u044f \u0456\u043c\u043f\u043e\u0440\u0442\u0443 \u0432 \u043e\u0441\u0432\u0456\u0442\u043b\u0435\u043d\u043d\u044f", "vera_controller_url": "URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440\u0430" - }, - "description": "\u0412\u043a\u0430\u0436\u0456\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0456 'address[:port]' (\u043d\u0430\u043f\u0440\u0438\u043a\u043b\u0430\u0434: 'http://192.168.1.161:3480').", - "title": "Vera" + } } } }, diff --git a/homeassistant/components/vera/translations/zh-Hant.json b/homeassistant/components/vera/translations/zh-Hant.json index b8d7031ee12..802ce7c97f1 100644 --- a/homeassistant/components/vera/translations/zh-Hant.json +++ b/homeassistant/components/vera/translations/zh-Hant.json @@ -10,8 +10,9 @@ "lights": "\u65bc Home Assistant \u4e2d\u8996\u70ba\u71c8\u5149\u7684 Vera \u958b\u95dc\u88dd\u7f6e 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" + "data_description": { + "vera_controller_url": "\u770b\u8d77\u4f86\u61c9\u8a72\u985e\u4f3c\uff1ahttp://192.168.1.161:3480" + } } } }, diff --git a/homeassistant/components/verisure/translations/hu.json b/homeassistant/components/verisure/translations/hu.json index 91c0292c3b8..324033b666a 100644 --- a/homeassistant/components/verisure/translations/hu.json +++ b/homeassistant/components/verisure/translations/hu.json @@ -17,14 +17,14 @@ }, "reauth_confirm": { "data": { - "description": "Hiteles\u00edts \u00fajra a Verisure My Pages fi\u00f3koddal.", + "description": "Hiteles\u00edtsen \u00fajra a Verisure My Pages fi\u00f3kj\u00e1val.", "email": "E-mail", "password": "Jelsz\u00f3" } }, "user": { "data": { - "description": "Jelentkezz be a Verisure My Pages fi\u00f3koddal.", + "description": "Jelentkezzen be a Verisure My Pages fi\u00f3kj\u00e1val.", "email": "E-mail", "password": "Jelsz\u00f3" } diff --git a/homeassistant/components/version/translations/he.json b/homeassistant/components/version/translations/he.json index cdb921611c4..c5508040834 100644 --- a/homeassistant/components/version/translations/he.json +++ b/homeassistant/components/version/translations/he.json @@ -2,6 +2,17 @@ "config": { "abort": { "already_configured": "\u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05d4\u05ea\u05e7\u05df \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4" + }, + "step": { + "user": { + "title": "\u05d1\u05d7\u05d9\u05e8\u05ea \u05e1\u05d5\u05d2 \u05d4\u05ea\u05e7\u05e0\u05d4" + }, + "version_source": { + "data": { + "beta": "\u05dc\u05db\u05dc\u05d5\u05dc \u05d2\u05e8\u05e1\u05d0\u05d5\u05ea \u05d1\u05d8\u05d0" + }, + "title": "\u05d4\u05d2\u05d3\u05e8\u05d4" + } } } } \ No newline at end of file diff --git a/homeassistant/components/vicare/translations/fr.json b/homeassistant/components/vicare/translations/fr.json index 260dbb25006..b3dce5ec826 100644 --- a/homeassistant/components/vicare/translations/fr.json +++ b/homeassistant/components/vicare/translations/fr.json @@ -18,7 +18,7 @@ "scan_interval": "Intervalle de balayage (secondes)", "username": "Courriel" }, - "description": "Configurer l'int\u00e9gration ViCare. Pour g\u00e9n\u00e9rer une cl\u00e9 API se rendre sur https://developer.viessmann.com", + "description": "Configurer l'int\u00e9gration ViCare. Pour g\u00e9n\u00e9rer une cl\u00e9 d'API, rendez-vous sur https://developer.viessmann.com", "title": "{name}" } } diff --git a/homeassistant/components/vicare/translations/hu.json b/homeassistant/components/vicare/translations/hu.json index 4dca080307d..0e69a395a90 100644 --- a/homeassistant/components/vicare/translations/hu.json +++ b/homeassistant/components/vicare/translations/hu.json @@ -13,7 +13,7 @@ "data": { "client_id": "API kulcs", "heating_type": "F\u0171t\u00e9s t\u00edpusa", - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "password": "Jelsz\u00f3", "scan_interval": "Beolvas\u00e1si id\u0151k\u00f6z (m\u00e1sodperc)", "username": "E-mail" diff --git a/homeassistant/components/vizio/translations/hu.json b/homeassistant/components/vizio/translations/hu.json index bb619e359c0..908dfad8f76 100644 --- a/homeassistant/components/vizio/translations/hu.json +++ b/homeassistant/components/vizio/translations/hu.json @@ -31,7 +31,7 @@ "access_token": "Hozz\u00e1f\u00e9r\u00e9si token", "device_class": "Eszk\u00f6zt\u00edpus", "host": "C\u00edm", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" }, "description": "A Hozz\u00e1f\u00e9r\u00e9si token csak t\u00e9v\u00e9khez sz\u00fcks\u00e9ges. Ha TV -t konfigur\u00e1l, \u00e9s m\u00e9g nincs Hozz\u00e1f\u00e9r\u00e9si token , hagyja \u00fcresen a p\u00e1ros\u00edt\u00e1si folyamathoz.", "title": "VIZIO SmartCast Eszk\u00f6z" diff --git a/homeassistant/components/vlc_telnet/translations/hu.json b/homeassistant/components/vlc_telnet/translations/hu.json index 0a76fc089ed..bac42b4d4c3 100644 --- a/homeassistant/components/vlc_telnet/translations/hu.json +++ b/homeassistant/components/vlc_telnet/translations/hu.json @@ -26,7 +26,7 @@ "user": { "data": { "host": "C\u00edm", - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "password": "Jelsz\u00f3", "port": "Port" } diff --git a/homeassistant/components/vulcan/translations/bg.json b/homeassistant/components/vulcan/translations/bg.json new file mode 100644 index 00000000000..27893871c14 --- /dev/null +++ b/homeassistant/components/vulcan/translations/bg.json @@ -0,0 +1,30 @@ +{ + "config": { + "abort": { + "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0442\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0432\u0430\u043d\u0435 \u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e" + }, + "error": { + "cannot_connect": "\u0413\u0440\u0435\u0448\u043a\u0430 \u043f\u0440\u0438 \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435\u0442\u043e - \u043c\u043e\u043b\u044f, \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u0442\u0435 \u0432\u0430\u0448\u0430\u0442\u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0432\u0440\u044a\u0437\u043a\u0430" + }, + "step": { + "select_saved_credentials": { + "data": { + "credentials": "\u0412\u0445\u043e\u0434" + } + } + } + }, + "options": { + "error": { + "error": "\u0412\u044a\u0437\u043d\u0438\u043a\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430" + }, + "step": { + "init": { + "data": { + "message_notify": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u0432\u0435\u0441\u0442\u0438\u044f \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u043d\u043e\u0432\u043e \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u0435", + "scan_interval": "\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043d\u0430 \u043e\u0431\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435 (\u0432 \u043c\u0438\u043d\u0443\u0442\u0438)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vulcan/translations/ca.json b/homeassistant/components/vulcan/translations/ca.json new file mode 100644 index 00000000000..505bcb1d326 --- /dev/null +++ b/homeassistant/components/vulcan/translations/ca.json @@ -0,0 +1,69 @@ +{ + "config": { + "abort": { + "all_student_already_configured": "Ja s'han afegit tots els alumnes.", + "already_configured": "Ja s'ha afegit aquest alumne.", + "reauth_successful": "Re-autenticaci\u00f3 exitosa" + }, + "error": { + "cannot_connect": "Error de connexi\u00f3, comprova la teva connexi\u00f3 a Internet", + "expired_credentials": "Credencials caducades, crea'n de noves a la p\u00e0gina de registre de l'aplicaci\u00f3 m\u00f2bil de Vulcan", + "expired_token": "Token caducat, genera un nou token", + "invalid_pin": "PIN inv\u00e0lid", + "invalid_symbol": "S\u00edmbol inv\u00e0lid", + "invalid_token": "Token inv\u00e0lid", + "unknown": "S'ha produ\u00eft un error desconegut" + }, + "step": { + "add_next_config_entry": { + "data": { + "use_saved_credentials": "Utilitza les credencials desades" + }, + "description": "Afegeix un altre alumne." + }, + "auth": { + "data": { + "pin": "PIN", + "region": "S\u00edmbol", + "token": "Token" + }, + "description": "Inicia sessi\u00f3 al teu compte de Vulcan mitjan\u00e7ant la p\u00e0gina de registre de l'aplicaci\u00f3 m\u00f2bil." + }, + "reauth": { + "data": { + "pin": "PIN", + "region": "S\u00edmbol", + "token": "Token" + }, + "description": "Inicia sessi\u00f3 al teu compte de Vulcan mitjan\u00e7ant la p\u00e0gina de registre de l'aplicaci\u00f3 m\u00f2bil." + }, + "select_saved_credentials": { + "data": { + "credentials": "Inici de sessi\u00f3" + }, + "description": "Selecciona credencials desades." + }, + "select_student": { + "data": { + "student_name": "Selecciona l'alumne" + }, + "description": "Selecciona l'alumne, pots afegir m\u00e9s alumnes tornant a afegir la integraci\u00f3 de nou." + } + } + }, + "options": { + "error": { + "error": "S'ha produ\u00eft un error" + }, + "step": { + "init": { + "data": { + "attendance_notify": "Mostra les notificacions sobre les darreres assist\u00e8ncies", + "grade_notify": "Mostra notificacions de les \u00faltimes qualificacions", + "message_notify": "Mostra notificacions quan es rebi un missatge nou", + "scan_interval": "Interval d'actualitzaci\u00f3 (minuts)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vulcan/translations/de.json b/homeassistant/components/vulcan/translations/de.json new file mode 100644 index 00000000000..23d5032f5fa --- /dev/null +++ b/homeassistant/components/vulcan/translations/de.json @@ -0,0 +1,69 @@ +{ + "config": { + "abort": { + "all_student_already_configured": "Alle Sch\u00fcler wurden bereits hinzugef\u00fcgt.", + "already_configured": "Dieser Sch\u00fcler wurde bereits hinzugef\u00fcgt.", + "reauth_successful": "Reauth erfolgreich" + }, + "error": { + "cannot_connect": "Verbindungsfehler - Bitte \u00fcberpr\u00fcfe deine Internetverbindung", + "expired_credentials": "Abgelaufene Anmeldedaten - bitte erstelle neue auf der Registrierungsseite der Vulcan Mobile App", + "expired_token": "Abgelaufener Token - bitte generiere einen neuen Token", + "invalid_pin": "Ung\u00fcltige PIN", + "invalid_symbol": "Ung\u00fcltiges Symbol", + "invalid_token": "Ung\u00fcltiges Token", + "unknown": "Unbekannter Fehler ist aufgetreten" + }, + "step": { + "add_next_config_entry": { + "data": { + "use_saved_credentials": "Gespeicherte Anmeldeinformationen verwenden" + }, + "description": "F\u00fcge einen weiteren Sch\u00fcler hinzu." + }, + "auth": { + "data": { + "pin": "PIN", + "region": "Symbol", + "token": "Token" + }, + "description": "Melde dich bei deinem Vulcan-Konto \u00fcber die Registrierungsseite der mobilen App an." + }, + "reauth": { + "data": { + "pin": "PIN", + "region": "Symbol", + "token": "Token" + }, + "description": "Melde dich bei deinem Vulcan-Konto \u00fcber die Registrierungsseite der mobilen App an." + }, + "select_saved_credentials": { + "data": { + "credentials": "Anmelden" + }, + "description": "W\u00e4hle gespeicherte Anmeldeinformationen aus." + }, + "select_student": { + "data": { + "student_name": "Sch\u00fcler ausw\u00e4hlen" + }, + "description": "W\u00e4hle Sch\u00fcler aus, Du kannst weitere Sch\u00fcler hinzuf\u00fcgen, indem du die Integration erneut hinzuf\u00fcgst." + } + } + }, + "options": { + "error": { + "error": "Ein Fehler ist aufgetreten" + }, + "step": { + "init": { + "data": { + "attendance_notify": "Benachrichtigungen \u00fcber die neuesten Anwesenheitseintr\u00e4ge anzeigen", + "grade_notify": "Benachrichtigungen \u00fcber die neuesten Noten anzeigen", + "message_notify": "Benachrichtigungen anzeigen, wenn eine neue Nachricht eingegangen ist", + "scan_interval": "Aktualisierungsintervall (in Minuten)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vulcan/translations/el.json b/homeassistant/components/vulcan/translations/el.json new file mode 100644 index 00000000000..bb77c88f8e5 --- /dev/null +++ b/homeassistant/components/vulcan/translations/el.json @@ -0,0 +1,69 @@ +{ + "config": { + "abort": { + "all_student_already_configured": "\u038c\u03bb\u03bf\u03b9 \u03bf\u03b9 \u03bc\u03b1\u03b8\u03b7\u03c4\u03ad\u03c2 \u03ad\u03c7\u03bf\u03c5\u03bd \u03ae\u03b4\u03b7 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b5\u03b8\u03b5\u03af.", + "already_configured": "\u0391\u03c5\u03c4\u03cc\u03c2 \u03bf \u03bc\u03b1\u03b8\u03b7\u03c4\u03ae\u03c2 \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b5\u03b8\u03b5\u03af.", + "reauth_successful": "\u039f \u03b5\u03ba \u03bd\u03ad\u03bf\u03c5 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03ae\u03c4\u03b1\u03bd \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03ae\u03c2" + }, + "error": { + "cannot_connect": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 - \u03b5\u03bb\u03ad\u03b3\u03be\u03c4\u03b5 \u03c4\u03b7 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03ae \u03c3\u03b1\u03c2 \u03c3\u03c4\u03bf \u0394\u03b9\u03b1\u03b4\u03af\u03ba\u03c4\u03c5\u03bf", + "expired_credentials": "\u039b\u03b7\u03b3\u03bc\u03ad\u03bd\u03b1 \u03b4\u03b9\u03b1\u03c0\u03b9\u03c3\u03c4\u03b5\u03c5\u03c4\u03ae\u03c1\u03b9\u03b1 - \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03ae\u03c3\u03c4\u03b5 \u03bd\u03ad\u03b1 \u03c3\u03c4\u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2 \u03c4\u03b7\u03c2 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae\u03c2 \u03b3\u03b9\u03b1 \u03ba\u03b9\u03bd\u03b7\u03c4\u03ac \u03c4\u03b7\u03c2 Vulcan", + "expired_token": "\u039b\u03b7\u03b3\u03bc\u03ad\u03bd\u03bf \u03b4\u03b9\u03b1\u03ba\u03c1\u03b9\u03c4\u03b9\u03ba\u03cc - \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03ae\u03c3\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03bd\u03ad\u03bf \u03b4\u03b9\u03b1\u03ba\u03c1\u03b9\u03c4\u03b9\u03ba\u03cc", + "invalid_pin": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf PIN", + "invalid_symbol": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03c3\u03cd\u03bc\u03b2\u03bf\u03bb\u03bf", + "invalid_token": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03b4\u03b9\u03b1\u03ba\u03c1\u03b9\u03c4\u03b9\u03ba\u03cc", + "unknown": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03ac\u03b3\u03bd\u03c9\u03c3\u03c4\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" + }, + "step": { + "add_next_config_entry": { + "data": { + "use_saved_credentials": "\u03a7\u03c1\u03ae\u03c3\u03b7 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03c9\u03bd \u03b4\u03b9\u03b1\u03c0\u03b9\u03c3\u03c4\u03b5\u03c5\u03c4\u03b7\u03c1\u03af\u03c9\u03bd" + }, + "description": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03ac\u03bb\u03bb\u03bf\u03c5 \u03bc\u03b1\u03b8\u03b7\u03c4\u03ae." + }, + "auth": { + "data": { + "pin": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 PIN", + "region": "\u03a3\u03cd\u03bc\u03b2\u03bf\u03bb\u03bf", + "token": "\u0394\u03b9\u03b1\u03ba\u03c1\u03b9\u03c4\u03b9\u03ba\u03cc" + }, + "description": "\u03a3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03bf\u03bd \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc \u03c3\u03b1\u03c2 Vulcan \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ce\u03bd\u03c4\u03b1\u03c2 \u03c4\u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae\u03c2 \u03b3\u03b9\u03b1 \u03ba\u03b9\u03bd\u03b7\u03c4\u03ac." + }, + "reauth": { + "data": { + "pin": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 PIN", + "region": "\u03a3\u03cd\u03bc\u03b2\u03bf\u03bb\u03bf", + "token": "\u0394\u03b9\u03b1\u03ba\u03c1\u03b9\u03c4\u03b9\u03ba\u03cc" + }, + "description": "\u03a3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03bf\u03bd \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc \u03c3\u03b1\u03c2 Vulcan \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ce\u03bd\u03c4\u03b1\u03c2 \u03c4\u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae\u03c2 \u03b3\u03b9\u03b1 \u03ba\u03b9\u03bd\u03b7\u03c4\u03ac." + }, + "select_saved_credentials": { + "data": { + "credentials": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7" + }, + "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03b1 \u03b4\u03b9\u03b1\u03c0\u03b9\u03c3\u03c4\u03b5\u03c5\u03c4\u03ae\u03c1\u03b9\u03b1." + }, + "select_student": { + "data": { + "student_name": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03bc\u03b1\u03b8\u03b7\u03c4\u03ae" + }, + "description": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03bc\u03b1\u03b8\u03b7\u03c4\u03ae, \u03bc\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03b5\u03c4\u03b5 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03bf\u03c5\u03c2 \u03bc\u03b1\u03b8\u03b7\u03c4\u03ad\u03c2 \u03c0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c4\u03bf\u03bd\u03c4\u03b1\u03c2 \u03be\u03b1\u03bd\u03ac \u03c4\u03b7\u03bd \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7." + } + } + }, + "options": { + "error": { + "error": "\u03a0\u03c1\u03bf\u03ad\u03ba\u03c5\u03c8\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" + }, + "step": { + "init": { + "data": { + "attendance_notify": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03b5\u03b9\u03b4\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c9\u03bd \u03c3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03c4\u03b9\u03c2 \u03c0\u03b9\u03bf \u03c0\u03c1\u03cc\u03c3\u03c6\u03b1\u03c4\u03b5\u03c2 \u03ba\u03b1\u03c4\u03b1\u03c7\u03c9\u03c1\u03ae\u03c3\u03b5\u03b9\u03c2 \u03c0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ce\u03bd", + "grade_notify": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03b5\u03b9\u03b4\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c9\u03bd \u03c3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03c4\u03bf\u03c5\u03c2 \u03c0\u03b9\u03bf \u03c0\u03c1\u03cc\u03c3\u03c6\u03b1\u03c4\u03bf\u03c5\u03c2 \u03b2\u03b1\u03b8\u03bc\u03bf\u03cd\u03c2", + "message_notify": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03b5\u03b9\u03b4\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c9\u03bd \u03cc\u03c4\u03b1\u03bd \u03bb\u03b1\u03bc\u03b2\u03ac\u03bd\u03b5\u03c4\u03b1\u03b9 \u03bd\u03ad\u03bf \u03bc\u03ae\u03bd\u03c5\u03bc\u03b1", + "scan_interval": "\u0394\u03b9\u03ac\u03c3\u03c4\u03b7\u03bc\u03b1 \u03b5\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7\u03c2 (\u03c3\u03b5 \u03bb\u03b5\u03c0\u03c4\u03ac)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vulcan/translations/en.json b/homeassistant/components/vulcan/translations/en.json index abb3dce7c7f..48c054d2c15 100644 --- a/homeassistant/components/vulcan/translations/en.json +++ b/homeassistant/components/vulcan/translations/en.json @@ -1,69 +1,69 @@ { - "config": { - "abort": { - "already_configured": "That student has already been added.", - "all_student_already_configured": "All students have already been added.", - "reauth_successful": "Reauth successful" + "config": { + "abort": { + "all_student_already_configured": "All students have already been added.", + "already_configured": "That student has already been added.", + "reauth_successful": "Reauth successful" + }, + "error": { + "cannot_connect": "Connection error - please check your internet connection", + "expired_credentials": "Expired credentials - please create new on Vulcan mobile app registration page", + "expired_token": "Expired token - please generate a new token", + "invalid_pin": "Invalid pin", + "invalid_symbol": "Invalid symbol", + "invalid_token": "Invalid token", + "unknown": "Unknown error occurred" + }, + "step": { + "add_next_config_entry": { + "data": { + "use_saved_credentials": "Use saved credentials" + }, + "description": "Add another student." + }, + "auth": { + "data": { + "pin": "Pin", + "region": "Symbol", + "token": "Token" + }, + "description": "Login to your Vulcan Account using mobile app registration page." + }, + "reauth": { + "data": { + "pin": "Pin", + "region": "Symbol", + "token": "Token" + }, + "description": "Login to your Vulcan Account using mobile app registration page." + }, + "select_saved_credentials": { + "data": { + "credentials": "Login" + }, + "description": "Select saved credentials." + }, + "select_student": { + "data": { + "student_name": "Select student" + }, + "description": "Select student, you can add more students by adding integration again." + } + } }, - "error": { - "unknown": "Unknown error occurred", - "invalid_token": "Invalid token", - "expired_token": "Expired token - please generate a new token", - "invalid_pin": "Invalid pin", - "invalid_symbol": "Invalid symbol", - "expired_credentials": "Expired credentials - please create new on Vulcan mobile app registration page", - "cannot_connect": "Connection error - please check your internet connection" - }, - "step": { - "auth": { - "description": "Login to your Vulcan Account using mobile app registration page.", - "data": { - "token": "Token", - "region": "Symbol", - "pin": "Pin" + "options": { + "error": { + "error": "Error occurred" + }, + "step": { + "init": { + "data": { + "attendance_notify": "Show notifications about the latest attendance entries", + "grade_notify": "Show notifications about the latest grades", + "message_notify": "Show notifications when new message received", + "scan_interval": "Update interval (in minutes)" + } + } } - }, - "reauth": { - "description": "Login to your Vulcan Account using mobile app registration page.", - "data": { - "token": "Token", - "region": "Symbol", - "pin": "Pin" - } - }, - "select_student": { - "description": "Select student, you can add more students by adding integration again.", - "data": { - "student_name": "Select student" - } - }, - "select_saved_credentials": { - "description": "Select saved credentials.", - "data": { - "credentials": "Login" - } - }, - "add_next_config_entry": { - "description": "Add another student.", - "data": { - "use_saved_credentials": "Use saved credentials" - } - } } - }, - "options": { - "error": { - "error": "Error occurred" - }, - "step": { - "init": { - "data": { - "message_notify": "Show notifications when new message received", - "attendance_notify": "Show notifications about the latest attendance entries", - "grade_notify": "Show notifications about the latest grades", - "scan_interval": "Update interval (in minutes)" - } - } - } - } -} +} \ No newline at end of file diff --git a/homeassistant/components/vulcan/translations/et.json b/homeassistant/components/vulcan/translations/et.json new file mode 100644 index 00000000000..ab3156cc676 --- /dev/null +++ b/homeassistant/components/vulcan/translations/et.json @@ -0,0 +1,69 @@ +{ + "config": { + "abort": { + "all_student_already_configured": "K\u00f5ik \u00f5pilased on juba lisatud.", + "already_configured": "See \u00f5pilane on juba lisatud.", + "reauth_successful": "Taastuvastamine \u00f5nnestus" + }, + "error": { + "cannot_connect": "\u00dchendusviga - kontrolli oma interneti\u00fchendust", + "expired_credentials": "Aegunud mandaat \u2013 loo Vulcani mobiilirakenduse registreerimislehel uued", + "expired_token": "Token on aegunud - loo uus token.", + "invalid_pin": "Vigane PIN kood", + "invalid_symbol": "Vigane s\u00fcmbol", + "invalid_token": "Vigane token", + "unknown": "Ilmnes ootamatu t\u00f5rge" + }, + "step": { + "add_next_config_entry": { + "data": { + "use_saved_credentials": "Salvestatud identimisteabe kasutamine" + }, + "description": "Lisa veel \u00fcks \u00f5pilane." + }, + "auth": { + "data": { + "pin": "PIN kood", + "region": "S\u00fcmbol", + "token": "Token" + }, + "description": "Logi Vulcani kontole sisse mobiilirakenduse registreerimislehe kaudu." + }, + "reauth": { + "data": { + "pin": "PIN kood", + "region": "S\u00fcmbol", + "token": "Token" + }, + "description": "Logi Vulcani kontole sisse mobiilirakenduse registreerimislehe kaudu." + }, + "select_saved_credentials": { + "data": { + "credentials": "Sisselogimine" + }, + "description": "Vali salvestatud identimisteave." + }, + "select_student": { + "data": { + "student_name": "Vali \u00f5pilane" + }, + "description": "Vali \u00f5pilane, saad lisada rohkem \u00f5pilasi lisades sidumise veelkord." + } + } + }, + "options": { + "error": { + "error": "Ilmnes t\u00f5rge" + }, + "step": { + "init": { + "data": { + "attendance_notify": "Kuva m\u00e4rguanded viimaste osalemiskirjete kohta", + "grade_notify": "Kuva m\u00e4rguanded viimaste hinnete kohta", + "message_notify": "Kuva teated uue s\u00f5numi saabumisel", + "scan_interval": "V\u00e4rskendamise intervall (minutites)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vulcan/translations/fr.json b/homeassistant/components/vulcan/translations/fr.json new file mode 100644 index 00000000000..812c069223e --- /dev/null +++ b/homeassistant/components/vulcan/translations/fr.json @@ -0,0 +1,69 @@ +{ + "config": { + "abort": { + "all_student_already_configured": "Tous les \u00e9tudiants ont d\u00e9j\u00e0 \u00e9t\u00e9 ajout\u00e9s.", + "already_configured": "Cet \u00e9tudiant a d\u00e9j\u00e0 \u00e9t\u00e9 ajout\u00e9.", + "reauth_successful": "R\u00e9-authentification r\u00e9ussie" + }, + "error": { + "cannot_connect": "Erreur de connexion\u00a0; veuillez v\u00e9rifier votre connexion Internet", + "expired_credentials": "Identifiants expir\u00e9s\u00a0; veuillez en cr\u00e9er des nouveaux sur la page d'inscription de l'application mobile Vulcan", + "expired_token": "Jeton expir\u00e9\u00a0; veuillez g\u00e9n\u00e9rer un nouveau jeton", + "invalid_pin": "PIN non valide", + "invalid_symbol": "Symbole non valide", + "invalid_token": "Jeton non valide", + "unknown": "Une erreur inconnue est survenue" + }, + "step": { + "add_next_config_entry": { + "data": { + "use_saved_credentials": "Utiliser les informations d'identification enregistr\u00e9es" + }, + "description": "Ajoutez un autre \u00e9tudiant." + }, + "auth": { + "data": { + "pin": "PIN", + "region": "Symbole", + "token": "Jeton" + }, + "description": "Connectez-vous \u00e0 votre compte Vulcan en utilisant la page d'inscription de l'application mobile." + }, + "reauth": { + "data": { + "pin": "PIN", + "region": "Symbole", + "token": "Jeton" + }, + "description": "Connectez-vous \u00e0 votre compte Vulcan en utilisant la page d'inscription de l'application mobile." + }, + "select_saved_credentials": { + "data": { + "credentials": "Connexion" + }, + "description": "S\u00e9lectionnez les informations d'identification enregistr\u00e9es." + }, + "select_student": { + "data": { + "student_name": "S\u00e9lectionner un \u00e9tudiant" + }, + "description": "S\u00e9lectionnez l'\u00e9tudiant\u00a0; vous pouvez ajouter d'autres \u00e9tudiants en ajoutant \u00e0 nouveau l'int\u00e9gration." + } + } + }, + "options": { + "error": { + "error": "Une erreur est survenue" + }, + "step": { + "init": { + "data": { + "attendance_notify": "Afficher les notifications au sujet des derni\u00e8res entr\u00e9es de pr\u00e9sence", + "grade_notify": "Afficher les notifications au sujet des derni\u00e8res notes", + "message_notify": "Afficher les notifications lors de la r\u00e9ception d'un nouveau message", + "scan_interval": "Intervalle de mise \u00e0 jour (en minutes)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vulcan/translations/hu.json b/homeassistant/components/vulcan/translations/hu.json new file mode 100644 index 00000000000..9e138254ebe --- /dev/null +++ b/homeassistant/components/vulcan/translations/hu.json @@ -0,0 +1,69 @@ +{ + "config": { + "abort": { + "all_student_already_configured": "M\u00e1r minden tanul\u00f3 hozz\u00e1adva.", + "already_configured": "Ezt a tanul\u00f3t m\u00e1r hozz\u00e1adt\u00e1k.", + "reauth_successful": "Az \u00fajrahiteles\u00edt\u00e9s sikeres" + }, + "error": { + "cannot_connect": "Csatlakoz\u00e1si hiba \u2013 ellen\u0151rizze az internetkapcsolatot", + "expired_credentials": "Lej\u00e1rt hiteles\u00edt\u0151 adatok - k\u00e9rj\u00fck, hozzon l\u00e9tre \u00fajakat a Vulcan mobilalkalmaz\u00e1s regisztr\u00e1ci\u00f3s oldal\u00e1n.", + "expired_token": "Lej\u00e1rt token \u2013 k\u00e9rj\u00fck, hozzon l\u00e9tre egy \u00fajat", + "invalid_pin": "\u00c9rv\u00e9nytelen PIN-k\u00f3d", + "invalid_symbol": "\u00c9rv\u00e9nytelen szimb\u00f3lum", + "invalid_token": "\u00c9rv\u00e9nytelen token", + "unknown": "Ismeretlen hiba t\u00f6rt\u00e9nt" + }, + "step": { + "add_next_config_entry": { + "data": { + "use_saved_credentials": "Mentett hiteles\u00edt\u0151 adatok haszn\u00e1lata" + }, + "description": "Adjon hozz\u00e1 egy m\u00e1sik tanul\u00f3t." + }, + "auth": { + "data": { + "pin": "PIN", + "region": "Szimb\u00f3lum", + "token": "Token" + }, + "description": "Jelentkezzen be Vulcan fi\u00f3kj\u00e1ba a mobilalkalmaz\u00e1s regisztr\u00e1ci\u00f3s oldal\u00e1n." + }, + "reauth": { + "data": { + "pin": "PIN", + "region": "Szimb\u00f3lum", + "token": "Token" + }, + "description": "Jelentkezzen be Vulcan fi\u00f3kj\u00e1ba a mobilalkalmaz\u00e1s regisztr\u00e1ci\u00f3s oldal\u00e1n." + }, + "select_saved_credentials": { + "data": { + "credentials": "Bejelentkez\u00e9s" + }, + "description": "V\u00e1lassza ki a mentett hiteles\u00edt\u0151 adatokat." + }, + "select_student": { + "data": { + "student_name": "Tanul\u00f3 kiv\u00e1laszt\u00e1sa" + }, + "description": "V\u00e1lassza ki a tanul\u00f3t, tov\u00e1bbi tanul\u00f3kat vehet fel az integr\u00e1ci\u00f3 \u00fajb\u00f3li hozz\u00e1ad\u00e1s\u00e1val." + } + } + }, + "options": { + "error": { + "error": "Hiba t\u00f6rt\u00e9nt" + }, + "step": { + "init": { + "data": { + "attendance_notify": "\u00c9rtes\u00edt\u00e9sek megjelen\u00edt\u00e9se a legut\u00f3bbi r\u00e9szv\u00e9teli bejegyz\u00e9sekr\u0151l", + "grade_notify": "\u00c9rtes\u00edt\u00e9sek megjelen\u00edt\u00e9se a leg\u00fajabb oszt\u00e1lyzatokr\u00f3l", + "message_notify": "\u00c9rtes\u00edt\u00e9sek megjelen\u00edt\u00e9se \u00faj \u00fczenet \u00e9rkez\u00e9sekor", + "scan_interval": "Friss\u00edt\u00e9si id\u0151k\u00f6z (percben)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vulcan/translations/id.json b/homeassistant/components/vulcan/translations/id.json new file mode 100644 index 00000000000..a15ed1772d2 --- /dev/null +++ b/homeassistant/components/vulcan/translations/id.json @@ -0,0 +1,69 @@ +{ + "config": { + "abort": { + "all_student_already_configured": "Semua siswa telah ditambahkan.", + "already_configured": "Siswa tersebut telah ditambahkan.", + "reauth_successful": "Otorisasi ulang berhasil" + }, + "error": { + "cannot_connect": "Kesalahan koneksi - periksa koneksi internet Anda", + "expired_credentials": "Kredensial kedaluwarsa - buat baru di halaman pendaftaran aplikasi seluler Vulcan", + "expired_token": "Token kedaluwarsa - buat token baru", + "invalid_pin": "PIN tidak valid", + "invalid_symbol": "Simbol tidak valid", + "invalid_token": "Token tidak valid", + "unknown": "Kesalahan tidak dikenal terjadi." + }, + "step": { + "add_next_config_entry": { + "data": { + "use_saved_credentials": "Menggunakan kredensial yang disimpan" + }, + "description": "Tambahkan siswa lain." + }, + "auth": { + "data": { + "pin": "PIN", + "region": "Simbol", + "token": "Token" + }, + "description": "Masuk ke Akun Vulcan Anda menggunakan halaman pendaftaran aplikasi seluler." + }, + "reauth": { + "data": { + "pin": "PIN", + "region": "Simbol", + "token": "Token" + }, + "description": "Masuk ke Akun Vulcan Anda menggunakan halaman pendaftaran aplikasi seluler." + }, + "select_saved_credentials": { + "data": { + "credentials": "Masuk" + }, + "description": "Pilih kredensial yang disimpan." + }, + "select_student": { + "data": { + "student_name": "Pilih siswa" + }, + "description": "Pilih siswa, Anda dapat menambahkan lebih banyak siswa dengan menambahkan integrasi lagi." + } + } + }, + "options": { + "error": { + "error": "Terjadi kesalahan" + }, + "step": { + "init": { + "data": { + "attendance_notify": "Tampilkan notifikasi tentang entri kehadiran terbaru", + "grade_notify": "Tampilkan notifikasi tentang nilai terbaru", + "message_notify": "Tampilkan saat pesan baru diterima", + "scan_interval": "Interval pembaruan (dalam menit)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vulcan/translations/it.json b/homeassistant/components/vulcan/translations/it.json new file mode 100644 index 00000000000..72bb696a909 --- /dev/null +++ b/homeassistant/components/vulcan/translations/it.json @@ -0,0 +1,69 @@ +{ + "config": { + "abort": { + "all_student_already_configured": "Tutti gli studenti sono gi\u00e0 stati aggiunti.", + "already_configured": "Quello studente \u00e8 gi\u00e0 stato aggiunto.", + "reauth_successful": "Nuova autenticazione avvenuta" + }, + "error": { + "cannot_connect": "Errore di connessione: controlla la tua connessione Internet", + "expired_credentials": "Credenziali scadute: creane una nuova nella pagina di registrazione dell'applicazione mobile Vulcan", + "expired_token": "Token scaduto: genera un nuovo token", + "invalid_pin": "Pin non valido", + "invalid_symbol": "Simbolo non valido", + "invalid_token": "Token non valido", + "unknown": "Si \u00e8 verificato un errore sconosciuto" + }, + "step": { + "add_next_config_entry": { + "data": { + "use_saved_credentials": "Usa le credenziali salvate" + }, + "description": "Aggiungi un altro studente." + }, + "auth": { + "data": { + "pin": "PIN", + "region": "Simbolo", + "token": "Token" + }, + "description": "Accedi al tuo account Vulcan utilizzando la pagina di registrazione dell'applicazione mobile." + }, + "reauth": { + "data": { + "pin": "PIN", + "region": "Simbolo", + "token": "Token" + }, + "description": "Accedi al tuo account Vulcan utilizzando la pagina di registrazione dell'applicazione mobile." + }, + "select_saved_credentials": { + "data": { + "credentials": "Accesso" + }, + "description": "Seleziona le credenziali salvate." + }, + "select_student": { + "data": { + "student_name": "Seleziona studente" + }, + "description": "Seleziona studente, puoi aggiungere pi\u00f9 studenti aggiungendo nuovamente l'integrazione." + } + } + }, + "options": { + "error": { + "error": "Si \u00e8 verificato un errore" + }, + "step": { + "init": { + "data": { + "attendance_notify": "Mostra le notifiche sulle ultime voci di partecipazione", + "grade_notify": "Mostra le notifiche sugli ultimi voti", + "message_notify": "Mostra le notifiche quando viene ricevuto un nuovo messaggio", + "scan_interval": "Intervallo di aggiornamento (in minuti)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vulcan/translations/ja.json b/homeassistant/components/vulcan/translations/ja.json new file mode 100644 index 00000000000..98363f12f13 --- /dev/null +++ b/homeassistant/components/vulcan/translations/ja.json @@ -0,0 +1,69 @@ +{ + "config": { + "abort": { + "all_student_already_configured": "\u3059\u3079\u3066\u306e\u751f\u5f92\u306f\u3059\u3067\u306b\u8ffd\u52a0\u3055\u308c\u3066\u3044\u307e\u3059\u3002", + "already_configured": "\u305d\u306e\u5b66\u751f\u306f\u3059\u3067\u306b\u8ffd\u52a0\u3055\u308c\u3066\u3044\u307e\u3059\u3002", + "reauth_successful": "\u518d\u8a8d\u8a3c\u306b\u6210\u529f" + }, + "error": { + "cannot_connect": "\u63a5\u7d9a\u30a8\u30e9\u30fc - \u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u63a5\u7d9a\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044", + "expired_credentials": "\u6709\u52b9\u671f\u9650\u304c\u5207\u308c\u305f\u8a8d\u8a3c\u60c5\u5831 - Vulcan\u30e2\u30d0\u30a4\u30eb\u30a2\u30d7\u30ea\u306e\u767b\u9332\u30da\u30fc\u30b8\u3067\u65b0\u898f\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002", + "expired_token": "\u6709\u52b9\u671f\u9650\u5207\u308c\u306e\u30c8\u30fc\u30af\u30f3 - \u65b0\u3057\u3044\u30c8\u30fc\u30af\u30f3\u3092\u751f\u6210\u3057\u3066\u304f\u3060\u3055\u3044", + "invalid_pin": "\u7121\u52b9\u306a\u30d4\u30f3", + "invalid_symbol": "\u7121\u52b9\u306a\u30b7\u30f3\u30dc\u30eb", + "invalid_token": "\u7121\u52b9\u306a\u30c8\u30fc\u30af\u30f3", + "unknown": "\u4e0d\u660e\u306a\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f" + }, + "step": { + "add_next_config_entry": { + "data": { + "use_saved_credentials": "\u4fdd\u5b58\u3055\u308c\u305f\u8cc7\u683c\u60c5\u5831\u3092\u4f7f\u7528\u3059\u308b" + }, + "description": "\u5225\u306e\u751f\u5f92\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002" + }, + "auth": { + "data": { + "pin": "\u30d4\u30f3", + "region": "\u30b7\u30f3\u30dc\u30eb", + "token": "\u30c8\u30fc\u30af\u30f3" + }, + "description": "\u30e2\u30d0\u30a4\u30eb\u30a2\u30d7\u30ea\u767b\u9332\u30da\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u3066\u3001Vulcan\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u30ed\u30b0\u30a4\u30f3\u3057\u307e\u3059\u3002" + }, + "reauth": { + "data": { + "pin": "\u30d4\u30f3", + "region": "\u30b7\u30f3\u30dc\u30eb", + "token": "\u30c8\u30fc\u30af\u30f3" + }, + "description": "\u30e2\u30d0\u30a4\u30eb\u30a2\u30d7\u30ea\u767b\u9332\u30da\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u3066\u3001Vulcan\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u30ed\u30b0\u30a4\u30f3\u3057\u307e\u3059\u3002" + }, + "select_saved_credentials": { + "data": { + "credentials": "\u30ed\u30b0\u30a4\u30f3" + }, + "description": "\u4fdd\u5b58\u3055\u308c\u305f\u8cc7\u683c\u60c5\u5831\u3092\u9078\u629e\u3057\u307e\u3059\u3002" + }, + "select_student": { + "data": { + "student_name": "\u751f\u5f92\u3092\u9078\u629e(Select student)" + }, + "description": "\u751f\u5f92\u3092\u9078\u629e\u3057\u307e\u3059(Select student)\u3002\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u518d\u5ea6\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u591a\u304f\u306e\u751f\u5f92\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002" + } + } + }, + "options": { + "error": { + "error": "\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f" + }, + "step": { + "init": { + "data": { + "attendance_notify": "\u6700\u65b0\u306e\u51fa\u5e2d\u30a8\u30f3\u30c8\u30ea\u306b\u95a2\u3059\u308b\u901a\u77e5\u3092\u8868\u793a\u3059\u308b", + "grade_notify": "\u6700\u65b0\u306e\u6210\u7e3e\u306b\u95a2\u3059\u308b\u901a\u77e5\u3092\u8868\u793a\u3059\u308b", + "message_notify": "\u65b0\u3057\u3044\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u53d7\u4fe1\u6642\u306b\u901a\u77e5\u3092\u8868\u793a\u3059\u308b", + "scan_interval": "\u66f4\u65b0\u9593\u9694(\u5206\u5358\u4f4d)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vulcan/translations/nl.json b/homeassistant/components/vulcan/translations/nl.json new file mode 100644 index 00000000000..b05b32937c0 --- /dev/null +++ b/homeassistant/components/vulcan/translations/nl.json @@ -0,0 +1,69 @@ +{ + "config": { + "abort": { + "all_student_already_configured": "Alle studenten zijn al toegevoegd.", + "already_configured": "Die student is al toegevoegd.", + "reauth_successful": "Opnieuw verifi\u00ebren gelukt" + }, + "error": { + "cannot_connect": "Verbindingsfout - controleer uw internetverbinding", + "expired_credentials": "Verlopen inloggegevens - maak een nieuwe aan op de Vulcan mobiele app registratiepagina", + "expired_token": "Verlopen token - genereer een nieuw token", + "invalid_pin": "Ongeldige pin", + "invalid_symbol": "Ongeldig symbool", + "invalid_token": "Ongeldige Token", + "unknown": "Onbekende fout opgetreden" + }, + "step": { + "add_next_config_entry": { + "data": { + "use_saved_credentials": "Gebruik opgeslagen referenties" + }, + "description": "Voeg nog een student toe." + }, + "auth": { + "data": { + "pin": "Pin", + "region": "Symbool", + "token": "Token" + }, + "description": "Log in op uw Vulcan-account via de registratiepagina voor mobiele apps." + }, + "reauth": { + "data": { + "pin": "Pin", + "region": "Symbool", + "token": "Token" + }, + "description": "Log in op uw Vulcan-account via de registratiepagina voor mobiele apps." + }, + "select_saved_credentials": { + "data": { + "credentials": "Inloggen" + }, + "description": "Selecteer opgeslagen referenties." + }, + "select_student": { + "data": { + "student_name": "Selecteer student" + }, + "description": "Selecteer student, u kunt meer studenten toevoegen door integratie opnieuw toe te voegen." + } + } + }, + "options": { + "error": { + "error": "Er is een fout opgetreden." + }, + "step": { + "init": { + "data": { + "attendance_notify": "Toon meldingen over de laatste aanwezigheidsgegevens", + "grade_notify": "Toon meldingen over de laatste cijfers", + "message_notify": "Meldingen weergeven wanneer een nieuw bericht is ontvangen", + "scan_interval": "Update-interval (in minuten)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vulcan/translations/no.json b/homeassistant/components/vulcan/translations/no.json new file mode 100644 index 00000000000..7cb8b68fa63 --- /dev/null +++ b/homeassistant/components/vulcan/translations/no.json @@ -0,0 +1,69 @@ +{ + "config": { + "abort": { + "all_student_already_configured": "Alle elever er allerede lagt til.", + "already_configured": "Den studenten er allerede lagt til.", + "reauth_successful": "Reauth vellykket" + }, + "error": { + "cannot_connect": "Tilkoblingsfeil - sjekk internettforbindelsen din", + "expired_credentials": "Utl\u00f8pt p\u00e5loggingsinformasjon - vennligst opprett ny p\u00e5 registreringssiden for Vulcan-mobilappen", + "expired_token": "Utl\u00f8pt token - generer et nytt token", + "invalid_pin": "Ugyldig pinkode", + "invalid_symbol": "Ugyldig symbol", + "invalid_token": "Ugyldig token", + "unknown": "Ukjent feil oppstod" + }, + "step": { + "add_next_config_entry": { + "data": { + "use_saved_credentials": "Bruk lagret legitimasjon" + }, + "description": "Legg til en annen student." + }, + "auth": { + "data": { + "pin": "Pin", + "region": "Symbol", + "token": "Token" + }, + "description": "Logg p\u00e5 Vulcan-kontoen din ved \u00e5 bruke registreringssiden for mobilappen." + }, + "reauth": { + "data": { + "pin": "Pin", + "region": "Symbol", + "token": "Token" + }, + "description": "Logg p\u00e5 Vulcan-kontoen din ved \u00e5 bruke registreringssiden for mobilappen." + }, + "select_saved_credentials": { + "data": { + "credentials": "P\u00e5logging" + }, + "description": "Velg lagret legitimasjon." + }, + "select_student": { + "data": { + "student_name": "Velg elev" + }, + "description": "Velg student, du kan legge til flere studenter ved \u00e5 legge til integrering p\u00e5 nytt." + } + } + }, + "options": { + "error": { + "error": "Det oppstod en feil" + }, + "step": { + "init": { + "data": { + "attendance_notify": "Vis varsler om de siste fremm\u00f8teoppf\u00f8ringene", + "grade_notify": "Vis varsler om de nyeste vurderingene", + "message_notify": "Vis varsler n\u00e5r ny melding mottas", + "scan_interval": "Oppdateringsintervall (i minutter)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vulcan/translations/pl.json b/homeassistant/components/vulcan/translations/pl.json new file mode 100644 index 00000000000..acbc51c6754 --- /dev/null +++ b/homeassistant/components/vulcan/translations/pl.json @@ -0,0 +1,69 @@ +{ + "config": { + "abort": { + "all_student_already_configured": "Wszyscy uczniowie zostali ju\u017c dodani.", + "already_configured": "Ten ucze\u0144 zosta\u0142 ju\u017c dodany.", + "reauth_successful": "Ponowne uwierzytelnienie powiod\u0142o si\u0119" + }, + "error": { + "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", + "expired_credentials": "Dane uwierzytelniaj\u0105ce wygas\u0142y \u2014 utw\u00f3rz nowe na stronie rejestracji aplikacji mobilnej Vulcan", + "expired_token": "Token wygas\u0142, wygeneruj nowy", + "invalid_pin": "Nieprawid\u0142owy kod PIN", + "invalid_symbol": "Nieprawid\u0142owy symbol", + "invalid_token": "Nieprawid\u0142owy token", + "unknown": "Nieoczekiwany b\u0142\u0105d" + }, + "step": { + "add_next_config_entry": { + "data": { + "use_saved_credentials": "U\u017cyj zapisanych danych uwierzytelniaj\u0105cych" + }, + "description": "Dodaj kolejnego ucznia." + }, + "auth": { + "data": { + "pin": "Kod pin", + "region": "Symbol", + "token": "Token" + }, + "description": "Zaloguj si\u0119 do swojego konta Vulcan za pomoc\u0105 strony rejestracji aplikacji mobilnej." + }, + "reauth": { + "data": { + "pin": "Kod pin", + "region": "Symbol", + "token": "Token" + }, + "description": "Zaloguj si\u0119 do swojego konta Vulcan za pomoc\u0105 strony rejestracji aplikacji mobilnej." + }, + "select_saved_credentials": { + "data": { + "credentials": "Login" + }, + "description": "Wybierz zapisane dane uwierzytelniaj\u0105ce." + }, + "select_student": { + "data": { + "student_name": "Wybierz ucznia" + }, + "description": "Wybierz ucznia. Mo\u017cesz doda\u0107 wi\u0119cej uczni\u00f3w, ponownie dodaj\u0105c integracj\u0119." + } + } + }, + "options": { + "error": { + "error": "Wyst\u0105pi\u0142 b\u0142\u0105d" + }, + "step": { + "init": { + "data": { + "attendance_notify": "Poka\u017c powiadomienia o najnowszych wpisach o obecno\u015bci", + "grade_notify": "Poka\u017c powiadomienia o najnowszych ocenach", + "message_notify": "Pokazuj powiadomienia po otrzymaniu nowej wiadomo\u015bci", + "scan_interval": "Cz\u0119stotliwo\u015b\u0107 aktualizacji (w minutach)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vulcan/translations/pt-BR.json b/homeassistant/components/vulcan/translations/pt-BR.json new file mode 100644 index 00000000000..ecef34ff96b --- /dev/null +++ b/homeassistant/components/vulcan/translations/pt-BR.json @@ -0,0 +1,69 @@ +{ + "config": { + "abort": { + "all_student_already_configured": "Todos os alunos j\u00e1 foram adicionados.", + "already_configured": "Esse aluno j\u00e1 foi adicionado.", + "reauth_successful": "Autentica\u00e7\u00e3o bem-sucedida" + }, + "error": { + "cannot_connect": "Erro de conex\u00e3o - verifique sua conex\u00e3o com a Internet", + "expired_credentials": "Credenciais expiradas - crie uma nova na p\u00e1gina de registro do aplicativo m\u00f3vel Vulcan", + "expired_token": "Token expirado - gere um novo token", + "invalid_pin": "Pin inv\u00e1lido", + "invalid_symbol": "S\u00edmbolo inv\u00e1lido", + "invalid_token": "Token inv\u00e1lido", + "unknown": "Ocorreu um erro desconhecido" + }, + "step": { + "add_next_config_entry": { + "data": { + "use_saved_credentials": "Usar credenciais salvas" + }, + "description": "Adicione outro aluno." + }, + "auth": { + "data": { + "pin": "Pin", + "region": "S\u00edmbolo", + "token": "Token" + }, + "description": "Fa\u00e7a login na sua conta Vulcan usando a p\u00e1gina de registro do aplicativo m\u00f3vel." + }, + "reauth": { + "data": { + "pin": "Pin", + "region": "S\u00edmbolo", + "token": "Token" + }, + "description": "Fa\u00e7a login na sua conta Vulcan usando a p\u00e1gina de registro do aplicativo m\u00f3vel." + }, + "select_saved_credentials": { + "data": { + "credentials": "Login" + }, + "description": "Selecione as credenciais salvas." + }, + "select_student": { + "data": { + "student_name": "Selecionar aluno" + }, + "description": "Selecione aluno, voc\u00ea pode adicionar mais alunos adicionando integra\u00e7\u00e3o novamente." + } + } + }, + "options": { + "error": { + "error": "Ocorreu um erro" + }, + "step": { + "init": { + "data": { + "attendance_notify": "Mostrar notifica\u00e7\u00f5es sobre as entradas de participa\u00e7\u00e3o mais recentes", + "grade_notify": "Mostrar notifica\u00e7\u00f5es sobre as notas mais recentes", + "message_notify": "Mostrar notifica\u00e7\u00f5es quando uma nova mensagem for recebida", + "scan_interval": "Intervalo de atualiza\u00e7\u00e3o (em minutos)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vulcan/translations/ru.json b/homeassistant/components/vulcan/translations/ru.json new file mode 100644 index 00000000000..88e64d9ca79 --- /dev/null +++ b/homeassistant/components/vulcan/translations/ru.json @@ -0,0 +1,69 @@ +{ + "config": { + "abort": { + "all_student_already_configured": "\u0412\u0441\u0435 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u044b \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b.", + "already_configured": "\u042d\u0442\u043e\u0442 \u0441\u0442\u0443\u0434\u0435\u043d\u0442 \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d.", + "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e." + }, + "error": { + "cannot_connect": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443.", + "expired_credentials": "\u0423\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u0438\u0441\u0442\u0435\u043a\u0448\u0438\u043c \u0441\u0440\u043e\u043a\u043e\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Vulcan.", + "expired_token": "\u0421\u0440\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0442\u043e\u043a\u0435\u043d\u0430 \u0438\u0441\u0442\u0435\u043a. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u0442\u043e\u043a\u0435\u043d.", + "invalid_pin": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 PIN-\u043a\u043e\u0434.", + "invalid_symbol": "\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b.", + "invalid_token": "\u041d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d.", + "unknown": "\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." + }, + "step": { + "add_next_config_entry": { + "data": { + "use_saved_credentials": "\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435" + }, + "description": "\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0435\u0449\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430." + }, + "auth": { + "data": { + "pin": "PIN-\u043a\u043e\u0434", + "region": "\u0421\u0438\u043c\u0432\u043e\u043b", + "token": "\u0422\u043e\u043a\u0435\u043d" + }, + "description": "\u0412\u043e\u0439\u0434\u0438\u0442\u0435 \u0432 \u0441\u0432\u043e\u044e \u0443\u0447\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c Vulcan, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f." + }, + "reauth": { + "data": { + "pin": "PIN-\u043a\u043e\u0434", + "region": "\u0421\u0438\u043c\u0432\u043e\u043b", + "token": "\u0422\u043e\u043a\u0435\u043d" + }, + "description": "\u0412\u043e\u0439\u0434\u0438\u0442\u0435 \u0432 \u0441\u0432\u043e\u044e \u0443\u0447\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c Vulcan, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f." + }, + "select_saved_credentials": { + "data": { + "credentials": "\u041b\u043e\u0433\u0438\u043d" + }, + "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435." + }, + "select_student": { + "data": { + "student_name": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430" + }, + "description": "\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432, \u0441\u043d\u043e\u0432\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e." + } + } + }, + "options": { + "error": { + "error": "\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430." + }, + "step": { + "init": { + "data": { + "attendance_notify": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u044f\u0445 \u043e \u043f\u043e\u0441\u0435\u0449\u0430\u0435\u043c\u043e\u0441\u0442\u0438", + "grade_notify": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u043e\u0446\u0435\u043d\u043a\u0430\u0445", + "message_notify": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f", + "scan_interval": "\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f (\u0432 \u043c\u0438\u043d\u0443\u0442\u0430\u0445)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vulcan/translations/tr.json b/homeassistant/components/vulcan/translations/tr.json new file mode 100644 index 00000000000..9f4324dfbcc --- /dev/null +++ b/homeassistant/components/vulcan/translations/tr.json @@ -0,0 +1,69 @@ +{ + "config": { + "abort": { + "all_student_already_configured": "T\u00fcm \u00f6\u011frenciler zaten eklendi.", + "already_configured": "Bu \u00f6\u011frenci zaten eklendi.", + "reauth_successful": "Yeniden yetkilendirme ba\u015far\u0131l\u0131" + }, + "error": { + "cannot_connect": "Ba\u011flant\u0131 hatas\u0131 - l\u00fctfen internet ba\u011flant\u0131n\u0131z\u0131 kontrol edin", + "expired_credentials": "S\u00fcresi dolmu\u015f kimlik bilgileri - l\u00fctfen Vulcan mobil uygulama kay\u0131t sayfas\u0131nda yeni olu\u015fturun", + "expired_token": "S\u00fcresi dolmu\u015f anahtar - l\u00fctfen yeni bir anahtar olu\u015fturun", + "invalid_pin": "Ge\u00e7ersiz PIN", + "invalid_symbol": "Ge\u00e7ersiz sembol", + "invalid_token": "Ge\u00e7ersiz anahtar", + "unknown": "Bilinmeyen hata olu\u015ftu" + }, + "step": { + "add_next_config_entry": { + "data": { + "use_saved_credentials": "Kaydedilmi\u015f kimlik bilgilerini kullan" + }, + "description": "Ba\u015fka bir \u00f6\u011frenci ekleyin." + }, + "auth": { + "data": { + "pin": "Pin", + "region": "Sembol", + "token": "Anahtar" + }, + "description": "Mobil uygulama kay\u0131t sayfas\u0131n\u0131 kullanarak Vulcan Hesab\u0131n\u0131za giri\u015f yap\u0131n." + }, + "reauth": { + "data": { + "pin": "Pin", + "region": "Sembol", + "token": "Anahtar" + }, + "description": "Mobil uygulama kay\u0131t sayfas\u0131n\u0131 kullanarak Vulcan Hesab\u0131n\u0131za giri\u015f yap\u0131n." + }, + "select_saved_credentials": { + "data": { + "credentials": "Oturum a\u00e7" + }, + "description": "Kaydedilmi\u015f kimlik bilgilerini se\u00e7in." + }, + "select_student": { + "data": { + "student_name": "\u00d6\u011frenci se\u00e7" + }, + "description": "\u00d6\u011frenciyi se\u00e7in, yeniden t\u00fcmle\u015ftirme ekleyerek daha fazla \u00f6\u011frenci ekleyebilirsiniz." + } + } + }, + "options": { + "error": { + "error": "Hata olu\u015ftu" + }, + "step": { + "init": { + "data": { + "attendance_notify": "En son kat\u0131l\u0131m giri\u015fleriyle ilgili bildirimleri g\u00f6ster", + "grade_notify": "En son notlarla ilgili bildirimleri g\u00f6ster", + "message_notify": "Yeni mesaj al\u0131nd\u0131\u011f\u0131nda bildirimleri g\u00f6ster", + "scan_interval": "G\u00fcncelleme aral\u0131\u011f\u0131 (dakika olarak)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vulcan/translations/zh-Hant.json b/homeassistant/components/vulcan/translations/zh-Hant.json new file mode 100644 index 00000000000..3a1c06ce5ad --- /dev/null +++ b/homeassistant/components/vulcan/translations/zh-Hant.json @@ -0,0 +1,69 @@ +{ + "config": { + "abort": { + "all_student_already_configured": "\u6240\u6709\u5b78\u751f\u90fd\u5df2\u7d93\u65b0\u589e\u3002", + "already_configured": "\u8a72\u5b78\u751f\u5df2\u7d93\u65b0\u589e\u3002", + "reauth_successful": "\u91cd\u65b0\u8a8d\u8b49\u6210\u529f" + }, + "error": { + "cannot_connect": "\u9023\u7dda\u932f\u8aa4 - \u8acb\u6aa2\u5bdf\u7db2\u8def\u9023\u7dda", + "expired_credentials": "\u6191\u8b49\u904e\u671f - \u8acb\u900f\u904e Vulcan \u884c\u52d5 App \u8a3b\u518a\u9801\u9762\u91cd\u65b0\u65b0\u589e", + "expired_token": "\u6b0a\u6756\u5df2\u904e\u671f - \u8acb\u7522\u751f\u65b0\u6b0a\u6756", + "invalid_pin": "Pin \u7121\u6548", + "invalid_symbol": "\u7b26\u865f\u7121\u6548", + "invalid_token": "\u6b0a\u6756\u7121\u6548", + "unknown": "\u767c\u751f\u672a\u77e5\u932f\u8aa4" + }, + "step": { + "add_next_config_entry": { + "data": { + "use_saved_credentials": "\u4f7f\u7528\u5132\u5b58\u6191\u8b49" + }, + "description": "\u65b0\u589e\u5176\u4ed6\u5b78\u751f\u3002" + }, + "auth": { + "data": { + "pin": "Pin", + "region": "\u7b26\u865f", + "token": "\u6b0a\u6756" + }, + "description": "\u4f7f\u7528\u884c\u52d5 App \u8a3b\u518a\u9801\u9762\u767b\u5165 Vulcan \u5e33\u865f\u3002" + }, + "reauth": { + "data": { + "pin": "Pin", + "region": "\u7b26\u865f", + "token": "\u6b0a\u6756" + }, + "description": "\u4f7f\u7528\u884c\u52d5 App \u8a3b\u518a\u9801\u9762\u767b\u5165 Vulcan \u5e33\u865f\u3002" + }, + "select_saved_credentials": { + "data": { + "credentials": "\u767b\u5165" + }, + "description": "\u9078\u64c7\u5132\u5b58\u6191\u8b49\u3002" + }, + "select_student": { + "data": { + "student_name": "\u9078\u64c7\u5b78\u751f" + }, + "description": "\u9078\u64c7\u5b78\u751f\u3001\u53ef\u4ee5\u518d\u900f\u904e\u65b0\u589e\u6574\u5408\u65b0\u589e\u5176\u4ed6\u5b78\u751f\u3002" + } + } + }, + "options": { + "error": { + "error": "\u767c\u751f\u932f\u8aa4" + }, + "step": { + "init": { + "data": { + "attendance_notify": "\u95dc\u65bc\u6700\u65b0\u51fa\u52e4\u5be6\u9ad4\u986f\u793a\u901a\u77e5", + "grade_notify": "\u95dc\u65bc\u6700\u65b0\u6210\u7e3e\u986f\u793a\u901a\u77e5", + "message_notify": "\u7576\u6536\u5230\u65b0\u8a0a\u606f\u6642\u986f\u793a\u901a\u77e5", + "scan_interval": "\u66f4\u65b0\u983b\u7387\uff08\u5206\uff09" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/wallbox/translations/bg.json b/homeassistant/components/wallbox/translations/bg.json index 25f3bb50845..cc0ea3ece2d 100644 --- a/homeassistant/components/wallbox/translations/bg.json +++ b/homeassistant/components/wallbox/translations/bg.json @@ -24,6 +24,5 @@ } } } - }, - "title": "Wallbox" + } } \ No newline at end of file diff --git a/homeassistant/components/wallbox/translations/ca.json b/homeassistant/components/wallbox/translations/ca.json index b6a10e16e2a..6d76243a479 100644 --- a/homeassistant/components/wallbox/translations/ca.json +++ b/homeassistant/components/wallbox/translations/ca.json @@ -25,6 +25,5 @@ } } } - }, - "title": "Wallbox" + } } \ No newline at end of file diff --git a/homeassistant/components/wallbox/translations/de.json b/homeassistant/components/wallbox/translations/de.json index d415b4f9e7a..2aa206d1b7e 100644 --- a/homeassistant/components/wallbox/translations/de.json +++ b/homeassistant/components/wallbox/translations/de.json @@ -25,6 +25,5 @@ } } } - }, - "title": "Wallbox" + } } \ No newline at end of file diff --git a/homeassistant/components/wallbox/translations/el.json b/homeassistant/components/wallbox/translations/el.json index dd95266866f..48443b1b45f 100644 --- a/homeassistant/components/wallbox/translations/el.json +++ b/homeassistant/components/wallbox/translations/el.json @@ -25,6 +25,5 @@ } } } - }, - "title": "Wallbox" + } } \ No newline at end of file diff --git a/homeassistant/components/wallbox/translations/en.json b/homeassistant/components/wallbox/translations/en.json index 28ec5d08235..f32c7b7b481 100644 --- a/homeassistant/components/wallbox/translations/en.json +++ b/homeassistant/components/wallbox/translations/en.json @@ -25,6 +25,5 @@ } } } - }, - "title": "Wallbox" + } } \ No newline at end of file diff --git a/homeassistant/components/wallbox/translations/es.json b/homeassistant/components/wallbox/translations/es.json index 72c7b0587d6..1c5315d6745 100644 --- a/homeassistant/components/wallbox/translations/es.json +++ b/homeassistant/components/wallbox/translations/es.json @@ -25,6 +25,5 @@ } } } - }, - "title": "Wallbox" + } } \ No newline at end of file diff --git a/homeassistant/components/wallbox/translations/et.json b/homeassistant/components/wallbox/translations/et.json index f5d3b3aac73..cfe0720616a 100644 --- a/homeassistant/components/wallbox/translations/et.json +++ b/homeassistant/components/wallbox/translations/et.json @@ -25,6 +25,5 @@ } } } - }, - "title": "Wallbox" + } } \ No newline at end of file diff --git a/homeassistant/components/wallbox/translations/fr.json b/homeassistant/components/wallbox/translations/fr.json index b9499f72b15..e918573e13b 100644 --- a/homeassistant/components/wallbox/translations/fr.json +++ b/homeassistant/components/wallbox/translations/fr.json @@ -25,6 +25,5 @@ } } } - }, - "title": "Wallbox" + } } \ No newline at end of file diff --git a/homeassistant/components/wallbox/translations/he.json b/homeassistant/components/wallbox/translations/he.json index 6109bb22195..06a2f86efa9 100644 --- a/homeassistant/components/wallbox/translations/he.json +++ b/homeassistant/components/wallbox/translations/he.json @@ -23,6 +23,5 @@ } } } - }, - "title": "\u05ea\u05d9\u05d1\u05ea \u05e7\u05d9\u05e8" + } } \ No newline at end of file diff --git a/homeassistant/components/wallbox/translations/hu.json b/homeassistant/components/wallbox/translations/hu.json index 5579da0fe88..d6d0c4837d4 100644 --- a/homeassistant/components/wallbox/translations/hu.json +++ b/homeassistant/components/wallbox/translations/hu.json @@ -25,6 +25,5 @@ } } } - }, - "title": "Wallbox" + } } \ No newline at end of file diff --git a/homeassistant/components/wallbox/translations/id.json b/homeassistant/components/wallbox/translations/id.json index 08611ab3c2e..430a0eac114 100644 --- a/homeassistant/components/wallbox/translations/id.json +++ b/homeassistant/components/wallbox/translations/id.json @@ -25,6 +25,5 @@ } } } - }, - "title": "Wallbox" + } } \ No newline at end of file diff --git a/homeassistant/components/wallbox/translations/it.json b/homeassistant/components/wallbox/translations/it.json index ce4bdef9d95..726a77396e2 100644 --- a/homeassistant/components/wallbox/translations/it.json +++ b/homeassistant/components/wallbox/translations/it.json @@ -25,6 +25,5 @@ } } } - }, - "title": "Wallbox" + } } \ No newline at end of file diff --git a/homeassistant/components/wallbox/translations/ja.json b/homeassistant/components/wallbox/translations/ja.json index 8924bf891b9..4aa79afcb22 100644 --- a/homeassistant/components/wallbox/translations/ja.json +++ b/homeassistant/components/wallbox/translations/ja.json @@ -25,6 +25,5 @@ } } } - }, - "title": "Wallbox" + } } \ No newline at end of file diff --git a/homeassistant/components/wallbox/translations/nl.json b/homeassistant/components/wallbox/translations/nl.json index dbe8bd91f72..5cde7830b85 100644 --- a/homeassistant/components/wallbox/translations/nl.json +++ b/homeassistant/components/wallbox/translations/nl.json @@ -25,6 +25,5 @@ } } } - }, - "title": "Wallbox" + } } \ No newline at end of file diff --git a/homeassistant/components/wallbox/translations/no.json b/homeassistant/components/wallbox/translations/no.json index 74bbb1f39d5..498362fad1d 100644 --- a/homeassistant/components/wallbox/translations/no.json +++ b/homeassistant/components/wallbox/translations/no.json @@ -25,6 +25,5 @@ } } } - }, - "title": "Wallbox" + } } \ No newline at end of file diff --git a/homeassistant/components/wallbox/translations/pl.json b/homeassistant/components/wallbox/translations/pl.json index 51180d4c68e..369049c3812 100644 --- a/homeassistant/components/wallbox/translations/pl.json +++ b/homeassistant/components/wallbox/translations/pl.json @@ -25,6 +25,5 @@ } } } - }, - "title": "Wallbox" + } } \ No newline at end of file diff --git a/homeassistant/components/wallbox/translations/pt-BR.json b/homeassistant/components/wallbox/translations/pt-BR.json index 3fb6428603a..ea7b6c899ed 100644 --- a/homeassistant/components/wallbox/translations/pt-BR.json +++ b/homeassistant/components/wallbox/translations/pt-BR.json @@ -25,6 +25,5 @@ } } } - }, - "title": "Wallbox" + } } \ No newline at end of file diff --git a/homeassistant/components/wallbox/translations/ru.json b/homeassistant/components/wallbox/translations/ru.json index 426c07c9423..e35de176bf9 100644 --- a/homeassistant/components/wallbox/translations/ru.json +++ b/homeassistant/components/wallbox/translations/ru.json @@ -25,6 +25,5 @@ } } } - }, - "title": "Wallbox" + } } \ No newline at end of file diff --git a/homeassistant/components/wallbox/translations/tr.json b/homeassistant/components/wallbox/translations/tr.json index 1bee24a696d..a1c69aea28d 100644 --- a/homeassistant/components/wallbox/translations/tr.json +++ b/homeassistant/components/wallbox/translations/tr.json @@ -25,6 +25,5 @@ } } } - }, - "title": "Wallbox" + } } \ No newline at end of file diff --git a/homeassistant/components/wallbox/translations/zh-Hant.json b/homeassistant/components/wallbox/translations/zh-Hant.json index 3f282cda1f9..2688a050ce0 100644 --- a/homeassistant/components/wallbox/translations/zh-Hant.json +++ b/homeassistant/components/wallbox/translations/zh-Hant.json @@ -25,6 +25,5 @@ } } } - }, - "title": "Wallbox" + } } \ No newline at end of file diff --git a/homeassistant/components/waze_travel_time/translations/hu.json b/homeassistant/components/waze_travel_time/translations/hu.json index 401eb3c814c..75bc311d814 100644 --- a/homeassistant/components/waze_travel_time/translations/hu.json +++ b/homeassistant/components/waze_travel_time/translations/hu.json @@ -10,7 +10,7 @@ "user": { "data": { "destination": "\u00c9rkez\u00e9s helye", - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "origin": "Indul\u00e1s helye", "region": "R\u00e9gi\u00f3" }, diff --git a/homeassistant/components/webostv/translations/hu.json b/homeassistant/components/webostv/translations/hu.json new file mode 100644 index 00000000000..de3f59d8c90 --- /dev/null +++ b/homeassistant/components/webostv/translations/hu.json @@ -0,0 +1,47 @@ +{ + "config": { + "abort": { + "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", + "error_pairing": "Csatlakozva az LG webOS TV-hez, de a p\u00e1ros\u00edt\u00e1s nem siker\u00fclt" + }, + "error": { + "cannot_connect": "Nem siker\u00fclt csatlakozni, k\u00e9rj\u00fck, kapcsolja be a TV-t vagy ellen\u0151rizze az ip-c\u00edmet." + }, + "flow_title": "LG webOS Smart TV", + "step": { + "pairing": { + "description": "K\u00fcldje el a k\u00e9r\u00e9st, \u00e9s fogadja el a p\u00e1ros\u00edt\u00e1si k\u00e9relmet a t\u00e9v\u00e9n. \n\n ![Image](/static/images/config_webos.png)", + "title": "webOS TV p\u00e1ros\u00edt\u00e1s" + }, + "user": { + "data": { + "host": "C\u00edm", + "name": "Elnevez\u00e9s" + }, + "description": "Kapcsolja be a TV-t, t\u00f6ltse ki a k\u00f6vetkez\u0151 mez\u0151ket, ut\u00e1na folytassa", + "title": "Csatlakoz\u00e1s a webOS TV-hez" + } + } + }, + "device_automation": { + "trigger_type": { + "webostv.turn_on": "Az eszk\u00f6znek be kell lennie kapcsolva" + } + }, + "options": { + "error": { + "cannot_retrieve": "Nem siker\u00fclt lek\u00e9rni a forr\u00e1sok list\u00e1j\u00e1t. Gy\u0151z\u0151dj\u00f6n meg r\u00f3la, hogy a k\u00e9sz\u00fcl\u00e9k be van kapcsolva", + "script_not_found": "A szkript nem tal\u00e1lhat\u00f3" + }, + "step": { + "init": { + "data": { + "sources": "Forr\u00e1sok list\u00e1ja" + }, + "description": "Enged\u00e9lyezett forr\u00e1sok kiv\u00e1laszt\u00e1sa", + "title": "A webOS Smart TV be\u00e1ll\u00edt\u00e1sai" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/wilight/translations/ca.json b/homeassistant/components/wilight/translations/ca.json index 0ace653e050..22044549b0c 100644 --- a/homeassistant/components/wilight/translations/ca.json +++ b/homeassistant/components/wilight/translations/ca.json @@ -8,7 +8,7 @@ "flow_title": "{name}", "step": { "confirm": { - "description": "Voleu configurar el WiLight {name}? \n\n Admet: {components}", + "description": "S'admeten els seg\u00fcents components: {components}", "title": "WiLight" } } diff --git a/homeassistant/components/wilight/translations/de.json b/homeassistant/components/wilight/translations/de.json index 546f8cec7b5..27d48a90e58 100644 --- a/homeassistant/components/wilight/translations/de.json +++ b/homeassistant/components/wilight/translations/de.json @@ -8,7 +8,7 @@ "flow_title": "{name}", "step": { "confirm": { - "description": "M\u00f6chtest du WiLight {name} einrichten? \n\n Es unterst\u00fctzt: {components}", + "description": "Die folgenden Komponenten werden unterst\u00fctzt: {components}", "title": "WiLight" } } diff --git a/homeassistant/components/wilight/translations/en.json b/homeassistant/components/wilight/translations/en.json index 3d3a83a0270..1f0733d28f3 100644 --- a/homeassistant/components/wilight/translations/en.json +++ b/homeassistant/components/wilight/translations/en.json @@ -8,7 +8,7 @@ "flow_title": "{name}", "step": { "confirm": { - "description": "Do you want to set up WiLight {name}?\n\n It supports: {components}", + "description": "The following components are supported: {components}", "title": "WiLight" } } diff --git a/homeassistant/components/wilight/translations/et.json b/homeassistant/components/wilight/translations/et.json index 1be23313837..dae085d1084 100644 --- a/homeassistant/components/wilight/translations/et.json +++ b/homeassistant/components/wilight/translations/et.json @@ -8,7 +8,7 @@ "flow_title": "{name}", "step": { "confirm": { - "description": "Kas soovid seadistada WiLight'i {name} ?\n\n See toetab: {components}", + "description": "Toetatud on j\u00e4rgmised komponendid: {components}", "title": "" } } diff --git a/homeassistant/components/wilight/translations/fr.json b/homeassistant/components/wilight/translations/fr.json index 0a3851bb816..ddd85a5cc04 100644 --- a/homeassistant/components/wilight/translations/fr.json +++ b/homeassistant/components/wilight/translations/fr.json @@ -8,7 +8,7 @@ "flow_title": "{name}", "step": { "confirm": { - "description": "Voulez-vous configurer la WiLight {name}\u00a0?\n\n Elle prend en charge\u00a0: {components}", + "description": "Les composants suivants sont pris en charge\u00a0: {components}", "title": "WiLight" } } diff --git a/homeassistant/components/wilight/translations/hu.json b/homeassistant/components/wilight/translations/hu.json index 9ef669f1ed3..02db2f1b7df 100644 --- a/homeassistant/components/wilight/translations/hu.json +++ b/homeassistant/components/wilight/translations/hu.json @@ -8,7 +8,7 @@ "flow_title": "{name}", "step": { "confirm": { - "description": "Szeretn\u00e9 be\u00e1ll\u00edtani a WiLight {name}-t ? \n\nT\u00e1mogatja: {components}", + "description": "A k\u00f6vetkez\u0151 komponensek t\u00e1mogatottak: {components}", "title": "WiLight" } } diff --git a/homeassistant/components/wilight/translations/id.json b/homeassistant/components/wilight/translations/id.json index 06616b29e35..0489a0e96bb 100644 --- a/homeassistant/components/wilight/translations/id.json +++ b/homeassistant/components/wilight/translations/id.json @@ -8,7 +8,7 @@ "flow_title": "{name}", "step": { "confirm": { - "description": "Apakah Anda ingin menyiapkan WiLight {name}?\n\nIni mendukung: {components}", + "description": "Komponen berikut didukung: {components}", "title": "WiLight" } } diff --git a/homeassistant/components/wilight/translations/it.json b/homeassistant/components/wilight/translations/it.json index 84b323a0000..7b560b7bfdb 100644 --- a/homeassistant/components/wilight/translations/it.json +++ b/homeassistant/components/wilight/translations/it.json @@ -8,7 +8,7 @@ "flow_title": "{name}", "step": { "confirm": { - "description": "Vuoi configurare WiLight {name}? \n\nSupporta: {components}", + "description": "Sono supportati i seguenti componenti: {components}", "title": "WiLight" } } diff --git a/homeassistant/components/wilight/translations/nl.json b/homeassistant/components/wilight/translations/nl.json index c2820f0ed6e..51cefe8ce28 100644 --- a/homeassistant/components/wilight/translations/nl.json +++ b/homeassistant/components/wilight/translations/nl.json @@ -8,7 +8,7 @@ "flow_title": "{name}", "step": { "confirm": { - "description": "Wil je WiLight {name} ? \n\n Het ondersteunt: {components}", + "description": "De volgende componenten worden ondersteund: {components}", "title": "WiLight" } } diff --git a/homeassistant/components/wilight/translations/no.json b/homeassistant/components/wilight/translations/no.json index 170739145da..582b2289a32 100644 --- a/homeassistant/components/wilight/translations/no.json +++ b/homeassistant/components/wilight/translations/no.json @@ -8,7 +8,7 @@ "flow_title": "{name}", "step": { "confirm": { - "description": "Vil du konfigurere WiLight {name} ? \n\n Den st\u00f8tter: {components}", + "description": "F\u00f8lgende komponenter st\u00f8ttes: {components}", "title": "" } } diff --git a/homeassistant/components/wilight/translations/pl.json b/homeassistant/components/wilight/translations/pl.json index 93957d016f5..c1f636b9d80 100644 --- a/homeassistant/components/wilight/translations/pl.json +++ b/homeassistant/components/wilight/translations/pl.json @@ -8,7 +8,7 @@ "flow_title": "{name}", "step": { "confirm": { - "description": "Czy chcesz skonfigurowa\u0107 WiLight {name}?\n\nObs\u0142uguje: {components}", + "description": "Obs\u0142ugiwane s\u0105 nast\u0119puj\u0105ce komponenty: {components}", "title": "WiLight" } } diff --git a/homeassistant/components/wilight/translations/pt-BR.json b/homeassistant/components/wilight/translations/pt-BR.json index 5da689b9b74..e70a286e812 100644 --- a/homeassistant/components/wilight/translations/pt-BR.json +++ b/homeassistant/components/wilight/translations/pt-BR.json @@ -8,7 +8,7 @@ "flow_title": "{name}", "step": { "confirm": { - "description": "Voc\u00ea deseja configurar WiLight {name}?\n\nEle suporta: {components}", + "description": "Os seguintes componentes s\u00e3o compat\u00edveis: {components}", "title": "WiLight" } } diff --git a/homeassistant/components/wilight/translations/ru.json b/homeassistant/components/wilight/translations/ru.json index 7d04a13518d..7873b8ca326 100644 --- a/homeassistant/components/wilight/translations/ru.json +++ b/homeassistant/components/wilight/translations/ru.json @@ -8,7 +8,7 @@ "flow_title": "{name}", "step": { "confirm": { - "description": "\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c WiLight {name}? \n\n\u042d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442: {components}", + "description": "\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b: {components}.", "title": "WiLight" } } diff --git a/homeassistant/components/wilight/translations/tr.json b/homeassistant/components/wilight/translations/tr.json index 446504f49d7..4762a678254 100644 --- a/homeassistant/components/wilight/translations/tr.json +++ b/homeassistant/components/wilight/translations/tr.json @@ -8,7 +8,7 @@ "flow_title": "{name}", "step": { "confirm": { - "description": "{name} kurmak istiyor musunuz? \n\n \u015eunlar\u0131 destekler: {components}", + "description": "A\u015fa\u011f\u0131daki bile\u015fenler desteklenir: {components}", "title": "WiLight" } } diff --git a/homeassistant/components/wilight/translations/zh-Hant.json b/homeassistant/components/wilight/translations/zh-Hant.json index fe6c36f21d2..70a9bff0550 100644 --- a/homeassistant/components/wilight/translations/zh-Hant.json +++ b/homeassistant/components/wilight/translations/zh-Hant.json @@ -8,7 +8,7 @@ "flow_title": "{name}", "step": { "confirm": { - "description": "\u662f\u5426\u8981\u8a2d\u5b9a WiLight {name}\uff1f\n\n\u652f\u63f4\uff1a{components}", + "description": "\u652f\u63f4\u4ee5\u4e0b\u5143\u4ef6\uff1a{components}", "title": "WiLight" } } diff --git a/homeassistant/components/withings/translations/hu.json b/homeassistant/components/withings/translations/hu.json index 1a64a95de5e..7504c36c58e 100644 --- a/homeassistant/components/withings/translations/hu.json +++ b/homeassistant/components/withings/translations/hu.json @@ -4,7 +4,7 @@ "already_configured": "A profil konfigur\u00e1ci\u00f3ja friss\u00edtve.", "authorize_url_timeout": "Id\u0151t\u00fall\u00e9p\u00e9s a hiteles\u00edt\u00e9si URL gener\u00e1l\u00e1sa sor\u00e1n.", "missing_configuration": "A komponens nincs konfigur\u00e1lva. K\u00e9rem, k\u00f6vesse a dokument\u00e1ci\u00f3t.", - "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3t [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lsz." + "no_url_available": "Nincs el\u00e9rhet\u0151 URL. A hib\u00e1r\u00f3l tov\u00e1bbi inform\u00e1ci\u00f3 [a s\u00fag\u00f3ban]({docs_url}) tal\u00e1lhat\u00f3." }, "create_entry": { "default": "A Withings sikeresen hiteles\u00edtett." @@ -15,7 +15,7 @@ "flow_title": "{profile}", "step": { "pick_implementation": { - "title": "V\u00e1lassz hiteles\u00edt\u00e9si m\u00f3dszert" + "title": "V\u00e1lasszon egy hiteles\u00edt\u00e9si m\u00f3dszert" }, "profile": { "data": { diff --git a/homeassistant/components/withings/translations/it.json b/homeassistant/components/withings/translations/it.json index f97933593a0..079acb0b503 100644 --- a/homeassistant/components/withings/translations/it.json +++ b/homeassistant/components/withings/translations/it.json @@ -3,7 +3,7 @@ "abort": { "already_configured": "Configurazione aggiornata per il profilo.", "authorize_url_timeout": "Tempo scaduto nel generare l'URL di autorizzazione.", - "missing_configuration": "Il componente non \u00e8 configurato. Si prega di seguire la documentazione.", + "missing_configuration": "Il componente non \u00e8 configurato. Segui la documentazione.", "no_url_available": "Nessun URL disponibile. Per informazioni su questo errore, [controlla la sezione della guida]({docs_url})" }, "create_entry": { diff --git a/homeassistant/components/wiz/translations/hu.json b/homeassistant/components/wiz/translations/hu.json index 7c99571a9ae..63ae8479bb9 100644 --- a/homeassistant/components/wiz/translations/hu.json +++ b/homeassistant/components/wiz/translations/hu.json @@ -28,7 +28,7 @@ "user": { "data": { "host": "IP c\u00edm", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" }, "description": "Ha az IP-c\u00edmet \u00fcresen hagyja, akkor az eszk\u00f6z\u00f6k keres\u00e9se a felder\u00edt\u00e9ssel t\u00f6rt\u00e9nik." } diff --git a/homeassistant/components/wolflink/translations/sensor.hu.json b/homeassistant/components/wolflink/translations/sensor.hu.json index 0a257e570cf..71e8f1e42ca 100644 --- a/homeassistant/components/wolflink/translations/sensor.hu.json +++ b/homeassistant/components/wolflink/translations/sensor.hu.json @@ -65,7 +65,7 @@ "sparen": "Gazdas\u00e1gos", "spreizung_hoch": "dT t\u00fal sz\u00e9les", "spreizung_kf": "Spread KF", - "stabilisierung": "Stabiliz\u00e1ci\u00f3", + "stabilisierung": "Stabiliz\u00e1l\u00e1s", "standby": "K\u00e9szenl\u00e9t", "start": "Indul\u00e1s", "storung": "Hiba", diff --git a/homeassistant/components/xbox/translations/hu.json b/homeassistant/components/xbox/translations/hu.json index 24c46bb8ab0..fc8428b3101 100644 --- a/homeassistant/components/xbox/translations/hu.json +++ b/homeassistant/components/xbox/translations/hu.json @@ -10,7 +10,7 @@ }, "step": { "pick_implementation": { - "title": "V\u00e1lassz hiteles\u00edt\u00e9si m\u00f3dszert" + "title": "V\u00e1lasszon egy hiteles\u00edt\u00e9si m\u00f3dszert" } } } diff --git a/homeassistant/components/xbox/translations/it.json b/homeassistant/components/xbox/translations/it.json index 010baad571e..e60c37c9e5f 100644 --- a/homeassistant/components/xbox/translations/it.json +++ b/homeassistant/components/xbox/translations/it.json @@ -2,7 +2,7 @@ "config": { "abort": { "authorize_url_timeout": "Tempo scaduto nel generare l'URL di autorizzazione.", - "missing_configuration": "Il componente non \u00e8 configurato. Si prega di seguire la documentazione.", + "missing_configuration": "Il componente non \u00e8 configurato. Segui la documentazione.", "single_instance_allowed": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione." }, "create_entry": { diff --git a/homeassistant/components/xiaomi_aqara/translations/ca.json b/homeassistant/components/xiaomi_aqara/translations/ca.json index 46037fa5eea..78f5affd556 100644 --- a/homeassistant/components/xiaomi_aqara/translations/ca.json +++ b/homeassistant/components/xiaomi_aqara/translations/ca.json @@ -18,7 +18,7 @@ "data": { "select_ip": "Adre\u00e7a IP" }, - "description": "Torna a executar la configuraci\u00f3 si vols connectar passarel\u00b7les addicionals", + "description": "Selecciona la passarel\u00b7la Xiaomi Aqara a la qual connectar-te", "title": "Selecciona la passarel\u00b7la Xiaomi Aqara a la qual connectar-te" }, "settings": { @@ -27,7 +27,7 @@ "name": "Nom de la passarel\u00b7la" }, "description": "La clau (contrasenya) es pot obtenir mitjan\u00e7ant aquest tutorial: https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz. Si no es proporciona la clau, nom\u00e9s seran accessibles els sensors", - "title": "Passarel\u00b7la Xiaomi Aqara, configuraci\u00f3 opcional" + "title": "Configuracions opcionals" }, "user": { "data": { @@ -35,7 +35,7 @@ "interface": "Interf\u00edcie de xarxa a utilitzar", "mac": "Adre\u00e7a MAC (opcional)" }, - "description": "Connecta't a la teva passarel\u00b7la Xiaomi Aqara, si les adreces IP i MAC es deixen buides s'utilitzar\u00e0 els descobriment autom\u00e0tic", + "description": "Si les adreces IP i MAC es deixen buides s'utilitzar\u00e0 el descobriment autom\u00e0tic", "title": "Passarel\u00b7la Xiaomi Aqara" } } diff --git a/homeassistant/components/xiaomi_aqara/translations/de.json b/homeassistant/components/xiaomi_aqara/translations/de.json index 469fa14bcc1..170442fc856 100644 --- a/homeassistant/components/xiaomi_aqara/translations/de.json +++ b/homeassistant/components/xiaomi_aqara/translations/de.json @@ -18,7 +18,7 @@ "data": { "select_ip": "IP-Adresse" }, - "description": "F\u00fchre das Setup erneut aus, wenn du zus\u00e4tzliche Gateways verbinden m\u00f6chtest", + "description": "W\u00e4hle das Xiaomi Aqara Gateway, das du verbinden m\u00f6chtest", "title": "W\u00e4hle das Xiaomi Aqara Gateway, das du verbinden m\u00f6chtest" }, "settings": { @@ -27,7 +27,7 @@ "name": "Name des Gateways" }, "description": "Der Schl\u00fcssel (das Passwort) kann mithilfe dieser Anleitung abgerufen werden: https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz. Wenn der Schl\u00fcssel nicht angegeben wird, sind nur die Sensoren zug\u00e4nglich", - "title": "Xiaomi Aqara Gateway, optionale Einstellungen" + "title": "Optionale Einstellungen" }, "user": { "data": { @@ -35,7 +35,7 @@ "interface": "Die zu verwendende Netzwerkschnittstelle", "mac": "MAC-Adresse (optional)" }, - "description": "Stelle eine Verbindung zu deinem Xiaomi Aqara Gateway her. Wenn die IP- und MAC-Adressen leer bleiben, wird die automatische Erkennung verwendet", + "description": "Wenn die IP- und MAC-Adressen leer gelassen werden, wird die automatische Erkennung verwendet", "title": "Xiaomi Aqara Gateway" } } diff --git a/homeassistant/components/xiaomi_aqara/translations/en.json b/homeassistant/components/xiaomi_aqara/translations/en.json index 53776111d37..72949820bc0 100644 --- a/homeassistant/components/xiaomi_aqara/translations/en.json +++ b/homeassistant/components/xiaomi_aqara/translations/en.json @@ -18,7 +18,7 @@ "data": { "select_ip": "IP Address" }, - "description": "Run the setup again if you want to connect additional gateways", + "description": "Select the Xiaomi Aqara Gateway that you wish to connect", "title": "Select the Xiaomi Aqara Gateway that you wish to connect" }, "settings": { @@ -27,7 +27,7 @@ "name": "Name of the Gateway" }, "description": "The key (password) can be retrieved using this tutorial: https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz. If the key is not provided only sensors will be accessible", - "title": "Xiaomi Aqara Gateway, optional settings" + "title": "Optional settings" }, "user": { "data": { @@ -35,7 +35,7 @@ "interface": "The network interface to use", "mac": "Mac Address (optional)" }, - "description": "Connect to your Xiaomi Aqara Gateway, if the IP and MAC addresses are left empty, auto-discovery is used", + "description": "If the IP and MAC addresses are left empty, auto-discovery is used", "title": "Xiaomi Aqara Gateway" } } diff --git a/homeassistant/components/xiaomi_aqara/translations/et.json b/homeassistant/components/xiaomi_aqara/translations/et.json index cc94b0e9b95..087c59dd2e2 100644 --- a/homeassistant/components/xiaomi_aqara/translations/et.json +++ b/homeassistant/components/xiaomi_aqara/translations/et.json @@ -18,7 +18,7 @@ "data": { "select_ip": "L\u00fc\u00fcsi IP aadress" }, - "description": "K\u00e4ivita seadistamine uuesti kui soovid \u00fchendada t\u00e4iendavaid l\u00fc\u00fcse", + "description": "Vali Xiaomi Aqara Gateway mida soovid \u00fchendada.", "title": "Vali Xiaomi Aqara l\u00fc\u00fcs mida soovid \u00fchendada" }, "settings": { @@ -27,7 +27,7 @@ "name": "L\u00fc\u00fcsi nimi" }, "description": "V\u00f5tme (parooli) saab hankida selle \u00f5petuse abil: https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz. Kui v\u00f5ti puudub on ligip\u00e4\u00e4s ainult anduritele", - "title": "Xiaomi Aqara Gateway, valikulised s\u00e4tted" + "title": "Valikulised s\u00e4tted" }, "user": { "data": { @@ -35,7 +35,7 @@ "interface": "Kasutatav v\u00f5rguliides", "mac": "MAC aadress (valikuline)" }, - "description": "\u00dchendu oma Xiaomi Aqara Gatewayga. Kui IP- ja MAC-aadressid j\u00e4etakse t\u00fchjaks, kasutatakse automaatset avastamist", + "description": "Kui IP- ja MAC-aadressid j\u00e4etakse t\u00fchjaks, kasutatakse automaatset avastamist", "title": "" } } diff --git a/homeassistant/components/xiaomi_aqara/translations/fr.json b/homeassistant/components/xiaomi_aqara/translations/fr.json index 04be4e35e2f..ab042cb5f0e 100644 --- a/homeassistant/components/xiaomi_aqara/translations/fr.json +++ b/homeassistant/components/xiaomi_aqara/translations/fr.json @@ -18,7 +18,7 @@ "data": { "select_ip": "Adresse IP" }, - "description": "Ex\u00e9cutez \u00e0 nouveau la configuration si vous souhaitez connecter des passerelles suppl\u00e9mentaires", + "description": "S\u00e9lectionnez la passerelle Xiaomi Aqara que vous souhaitez connecter", "title": "S\u00e9lectionnez la passerelle Xiaomi Aqara que vous souhaitez connecter" }, "settings": { @@ -27,7 +27,7 @@ "name": "Nom de la passerelle" }, "description": "La cl\u00e9 (mot de passe) peut \u00eatre r\u00e9cup\u00e9r\u00e9e \u00e0 l'aide de ce tutoriel: https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz. Si la cl\u00e9 n'est pas fournie, seuls les capteurs seront accessibles", - "title": "Passerelle Xiaomi Aqara, param\u00e8tres optionnels" + "title": "Param\u00e8tres optionnels" }, "user": { "data": { @@ -35,7 +35,7 @@ "interface": "Interface r\u00e9seau \u00e0 utiliser", "mac": "Adresse MAC (facultatif)" }, - "description": "Connectez-vous \u00e0 votre passerelle Xiaomi Aqara, si les adresses IP et mac sont laiss\u00e9es vides, la d\u00e9tection automatique est utilis\u00e9e", + "description": "Si les adresses IP et MAC sont laiss\u00e9es vides, la d\u00e9couverte automatique sera utilis\u00e9e", "title": "Passerelle Xiaomi Aqara" } } diff --git a/homeassistant/components/xiaomi_aqara/translations/he.json b/homeassistant/components/xiaomi_aqara/translations/he.json index 7450bbd463c..ea6cd8e278b 100644 --- a/homeassistant/components/xiaomi_aqara/translations/he.json +++ b/homeassistant/components/xiaomi_aqara/translations/he.json @@ -27,7 +27,7 @@ "name": "\u05e9\u05dd \u05d4\u05e9\u05e2\u05e8" }, "description": "\u05e0\u05d9\u05ea\u05df \u05dc\u05d0\u05d7\u05d6\u05e8 \u05d0\u05ea \u05d4\u05de\u05e4\u05ea\u05d7 (\u05e1\u05d9\u05e1\u05de\u05d4) \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea \u05d4\u05d3\u05e8\u05db\u05d4 \u05d6\u05d5: https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz. \u05d0\u05dd \u05d4\u05de\u05e4\u05ea\u05d7 \u05d0\u05d9\u05e0\u05d5 \u05de\u05e1\u05d5\u05e4\u05e7, \u05e8\u05e7 \u05d7\u05d9\u05d9\u05e9\u05e0\u05d9\u05dd \u05d9\u05d4\u05d9\u05d5 \u05e0\u05d2\u05d9\u05e9\u05d9\u05dd", - "title": "\u05e9\u05e2\u05e8 \u05e9\u05d9\u05d0\u05d5\u05de\u05d9 \u05d0\u05e7\u05d0\u05e8\u05d4, \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05d0\u05d5\u05e4\u05e6\u05d9\u05d5\u05e0\u05dc\u05d9\u05d5\u05ea" + "title": "\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05d0\u05d5\u05e4\u05e6\u05d9\u05d5\u05e0\u05dc\u05d9\u05d5\u05ea" }, "user": { "data": { @@ -35,7 +35,7 @@ "interface": "\u05de\u05de\u05e9\u05e7 \u05d4\u05e8\u05e9\u05ea \u05d1\u05d5 \u05d9\u05e9 \u05dc\u05d4\u05e9\u05ea\u05de\u05e9", "mac": "\u05db\u05ea\u05d5\u05d1\u05ea Mac (\u05d0\u05d5\u05e4\u05e6\u05d9\u05d5\u05e0\u05dc\u05d9)" }, - "description": "\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05dc\u05e9\u05e2\u05e8 \u05e9\u05d9\u05d5\u05d0\u05de\u05d9 \u05d0\u05e7\u05d0\u05e8\u05d4 \u05e9\u05dc\u05da, \u05d0\u05dd \u05db\u05ea\u05d5\u05d1\u05d5\u05ea \u05d4-IP \u05d5\u05d4-MAC \u05d9\u05d5\u05d5\u05ea\u05e8\u05d5 \u05e8\u05d9\u05e7\u05d5\u05ea, \u05e0\u05e2\u05e9\u05d4 \u05e9\u05d9\u05de\u05d5\u05e9 \u05d1\u05d2\u05d9\u05dc\u05d5\u05d9 \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9", + "description": "\u05d0\u05dd \u05db\u05ea\u05d5\u05d1\u05d5\u05ea \u05d4-IP \u05d5\u05d4-MAC \u05e0\u05d5\u05ea\u05e8\u05d5\u05ea \u05e8\u05d9\u05e7\u05d5\u05ea, \u05e0\u05e2\u05e9\u05d4 \u05e9\u05d9\u05de\u05d5\u05e9 \u05d1\u05d2\u05d9\u05dc\u05d5\u05d9 \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9", "title": "\u05e9\u05e2\u05e8 \u05e9\u05d9\u05d0\u05d5\u05de\u05d9 \u05d0\u05e7\u05d0\u05e8\u05d4" } } diff --git a/homeassistant/components/xiaomi_aqara/translations/hu.json b/homeassistant/components/xiaomi_aqara/translations/hu.json index e38bebefe19..f0a1b076750 100644 --- a/homeassistant/components/xiaomi_aqara/translations/hu.json +++ b/homeassistant/components/xiaomi_aqara/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "not_xiaomi_aqara": "Nem egy Xiaomi Aqara Gateway, a felfedezett eszk\u00f6z nem egyezett az ismert \u00e1tj\u00e1r\u00f3kkal" }, "error": { @@ -18,7 +18,7 @@ "data": { "select_ip": "IP c\u00edm" }, - "description": "Futtassa \u00fajra a be\u00e1ll\u00edt\u00e1st, ha egy m\u00e1sik k\u00f6zponti egys\u00e9get szeretne csatlakoztatni", + "description": "V\u00e1lassza ki a csatlakoztatni k\u00edv\u00e1nt Xiaomi Aqara K\u00f6zponti egys\u00e9get", "title": "V\u00e1lassza ki a csatlakoztatni k\u00edv\u00e1nt Xiaomi Aqara K\u00f6zponti egys\u00e9get" }, "settings": { @@ -27,7 +27,7 @@ "name": "K\u00f6zponti egys\u00e9g neve" }, "description": "A kulcs (jelsz\u00f3) az al\u00e1bbi oktat\u00f3anyag seg\u00edts\u00e9g\u00e9vel t\u00f6lthet\u0151 le: https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz. Ha a kulcs nincs megadva, csak az \u00e9rz\u00e9kel\u0151k lesznek hozz\u00e1f\u00e9rhet\u0151k", - "title": "Xiaomi Aqara k\u00f6zponti egys\u00e9g, opcion\u00e1lis be\u00e1ll\u00edt\u00e1sok" + "title": "Opcion\u00e1lis be\u00e1ll\u00edt\u00e1sok" }, "user": { "data": { @@ -35,7 +35,7 @@ "interface": "A haszn\u00e1lni k\u00edv\u00e1nt h\u00e1l\u00f3zati interf\u00e9sz", "mac": "Mac-c\u00edm (opcion\u00e1lis)" }, - "description": "Csatlakozzon a Xiaomi Aqara k\u00f6zponti egys\u00e9ghez, ha az IP- \u00e9s a MAC-c\u00edm \u00fcresen marad, akkor az automatikus felder\u00edt\u00e9st haszn\u00e1lja", + "description": "Ha az IP- \u00e9s MAC-c\u00edm mez\u0151ket \u00fcresen hagyja, akkor az automatikus felder\u00edt\u00e9s ker\u00fcl alkalmaz\u00e1sra.", "title": "Xiaomi Aqara k\u00f6zponti egys\u00e9g" } } diff --git a/homeassistant/components/xiaomi_aqara/translations/id.json b/homeassistant/components/xiaomi_aqara/translations/id.json index eeab548f681..2b33af8237f 100644 --- a/homeassistant/components/xiaomi_aqara/translations/id.json +++ b/homeassistant/components/xiaomi_aqara/translations/id.json @@ -18,7 +18,7 @@ "data": { "select_ip": "Alamat IP" }, - "description": "Jalankan penyiapan lagi jika Anda ingin menghubungkan gateway lainnya", + "description": "Pilih Gateway Xiaomi Aqara yang ingin disambungkan", "title": "Pilih Gateway Xiaomi Aqara yang ingin dihubungkan" }, "settings": { @@ -27,7 +27,7 @@ "name": "Nama Gateway" }, "description": "Kunci (kata sandi) dapat diambil menggunakan tutorial ini: https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz. Jika kunci tidak disediakan, hanya sensor yang akan dapat diakses", - "title": "Xiaomi Aqara Gateway, pengaturan opsional" + "title": "Pengaturan opsional" }, "user": { "data": { @@ -35,7 +35,7 @@ "interface": "Antarmuka jaringan yang akan digunakan", "mac": "Alamat MAC (opsional)" }, - "description": "Hubungkan ke Xiaomi Aqara Gateway Anda, jika alamat IP dan MAC dibiarkan kosong, penemuan otomatis digunakan", + "description": "Jika alamat IP dan MAC dikosongkan, penemuan otomatis digunakan", "title": "Xiaomi Aqara Gateway" } } diff --git a/homeassistant/components/xiaomi_aqara/translations/it.json b/homeassistant/components/xiaomi_aqara/translations/it.json index 319a33f3964..ac5eff78190 100644 --- a/homeassistant/components/xiaomi_aqara/translations/it.json +++ b/homeassistant/components/xiaomi_aqara/translations/it.json @@ -18,7 +18,7 @@ "data": { "select_ip": "Indirizzo IP" }, - "description": "Esegui di nuovo la configurazione se desideri connettere gateway aggiuntivi", + "description": "Seleziona lo Xiaomi Aqara Gateway che desideri connettere", "title": "Seleziona il Gateway Xiaomi Aqara che si desidera collegare" }, "settings": { @@ -27,7 +27,7 @@ "name": "Nome del Gateway" }, "description": "La chiave (password) pu\u00f2 essere recuperata utilizzando questo tutorial: https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz. Se la chiave non viene fornita, saranno accessibili solo i sensori", - "title": "Xiaomi Aqara Gateway, impostazioni opzionali" + "title": "Impostazioni facoltative" }, "user": { "data": { @@ -35,7 +35,7 @@ "interface": "L'interfaccia di rete da utilizzare", "mac": "Indirizzo Mac (opzionale)" }, - "description": "Connettiti al tuo Xiaomi Aqara Gateway, se gli indirizzi IP e MAC sono lasciati vuoti, sar\u00e0 utilizzato il rilevamento automatico", + "description": "Se gli indirizzi IP e MAC vengono lasciati vuoti, viene utilizzato il rilevamento automatico", "title": "Xiaomi Aqara Gateway" } } diff --git a/homeassistant/components/xiaomi_aqara/translations/nl.json b/homeassistant/components/xiaomi_aqara/translations/nl.json index 9ef660a8e7f..c2042850fdb 100644 --- a/homeassistant/components/xiaomi_aqara/translations/nl.json +++ b/homeassistant/components/xiaomi_aqara/translations/nl.json @@ -18,7 +18,7 @@ "data": { "select_ip": "IP-adres" }, - "description": "Voer de installatie opnieuw uit als u extra gateways wilt aansluiten", + "description": "Selecteer de Xiaomi Aqara Gateway die u wilt verbinden", "title": "Selecteer de Xiaomi Aqara Gateway waarmee u verbinding wilt maken" }, "settings": { @@ -27,7 +27,7 @@ "name": "Naam van de Gateway" }, "description": "De sleutel (wachtwoord) kan worden opgehaald met behulp van deze tutorial: https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz. Als de sleutel niet wordt meegeleverd, zijn alleen sensoren toegankelijk", - "title": "Xiaomi Aqara Gateway, optionele instellingen" + "title": "Optionele instellingen" }, "user": { "data": { @@ -35,7 +35,7 @@ "interface": "De netwerkinterface die moet worden gebruikt", "mac": "MAC-adres (optioneel)" }, - "description": "Maak verbinding met uw Xiaomi Aqara Gateway, als de IP- en mac-adressen leeg worden gelaten, wordt automatische detectie gebruikt", + "description": "Als de IP- en MAC-adressen leeg worden gelaten, wordt auto-discovery gebruikt", "title": "Xiaomi Aqara Gateway" } } diff --git a/homeassistant/components/xiaomi_aqara/translations/no.json b/homeassistant/components/xiaomi_aqara/translations/no.json index 081b0e5e990..c325886dd22 100644 --- a/homeassistant/components/xiaomi_aqara/translations/no.json +++ b/homeassistant/components/xiaomi_aqara/translations/no.json @@ -18,7 +18,7 @@ "data": { "select_ip": "IP adresse" }, - "description": "Kj\u00f8r oppsettet p\u00e5 nytt hvis du vil koble til flere gatewayer", + "description": "Velg Xiaomi Aqara Gateway som du \u00f8nsker \u00e5 koble til", "title": "Velg Xiaomi Aqara Gateway som du \u00f8nsker \u00e5 koble til" }, "settings": { @@ -27,7 +27,7 @@ "name": "Navnet p\u00e5 gatewayen" }, "description": "N\u00f8kkelen (passordet) kan hentes ved hjelp av denne veiviseren: [https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz](https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz). Hvis n\u00f8kkelen ikke oppgis, vil bare sensorer bli tilgjengelige", - "title": "Xiaomi Aqara Gateway, valgfrie innstillinger" + "title": "Valgfrie innstillinger" }, "user": { "data": { @@ -35,7 +35,7 @@ "interface": "Nettverksgrensesnittet som skal brukes", "mac": "MAC-adresse (valgfritt)" }, - "description": "Koble til Xiaomi Aqara Gateway, hvis IP- og MAC-adressene blir tomme, brukes automatisk oppdagelse", + "description": "Hvis IP- og MAC-adressene er tomme, brukes automatisk oppdagelse", "title": "" } } diff --git a/homeassistant/components/xiaomi_aqara/translations/pl.json b/homeassistant/components/xiaomi_aqara/translations/pl.json index da8a803d81f..e680415320c 100644 --- a/homeassistant/components/xiaomi_aqara/translations/pl.json +++ b/homeassistant/components/xiaomi_aqara/translations/pl.json @@ -18,7 +18,7 @@ "data": { "select_ip": "Adres IP" }, - "description": "Uruchom konfiguracj\u0119 ponownie, je\u015bli chcesz pod\u0142\u0105czy\u0107 dodatkowe bramki", + "description": "Wybierz bramk\u0119 Xiaomi Aqara, z kt\u00f3r\u0105 chcesz si\u0119 po\u0142\u0105czy\u0107", "title": "Wybierz bramk\u0119 Xiaomi Aqara, z kt\u00f3r\u0105 chcesz si\u0119 po\u0142\u0105czy\u0107" }, "settings": { @@ -27,7 +27,7 @@ "name": "Nazwa bramki" }, "description": "Klucz (has\u0142o) mo\u017cna uzyska\u0107 za pomoc\u0105 tej instrukcji: https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz. Je\u015bli klucz nie zostanie podany, dost\u0119pne b\u0119d\u0105 tylko sensory.", - "title": "Brama Xiaomi Aqara, ustawienia opcjonalne" + "title": "Ustawienia opcjonalne" }, "user": { "data": { @@ -35,7 +35,7 @@ "interface": "Interfejs sieciowy", "mac": "Adres MAC (opcjonalnie)" }, - "description": "Po\u0142\u0105cz si\u0119 z bramk\u0105 Xiaomi Aqara, je\u015bli zostawisz Adres IP oraz MAC puste to bramka zostanie automatycznie wykryta.", + "description": "Je\u015bli zostawisz Adres IP oraz MAC puste to bramka zostanie automatycznie wykryta.", "title": "Bramka Xiaomi Aqara" } } diff --git a/homeassistant/components/xiaomi_aqara/translations/pt-BR.json b/homeassistant/components/xiaomi_aqara/translations/pt-BR.json index 5e188e54565..62deb3ba97c 100644 --- a/homeassistant/components/xiaomi_aqara/translations/pt-BR.json +++ b/homeassistant/components/xiaomi_aqara/translations/pt-BR.json @@ -18,7 +18,7 @@ "data": { "select_ip": "Endere\u00e7o IP" }, - "description": "Execute a configura\u00e7\u00e3o novamente se quiser conectar gateways adicionais", + "description": "Selecione o Xiaomi Aqara Gateway que voc\u00ea deseja conectar", "title": "Selecione o Xiaomi Aqara Gateway que voc\u00ea deseja conectar" }, "settings": { @@ -27,15 +27,15 @@ "name": "Nome do Gateway" }, "description": "A chave (senha) pode ser recuperada usando este tutorial: https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz. Se a chave n\u00e3o for fornecida, apenas os sensores estar\u00e3o acess\u00edveis", - "title": "Xiaomi Aqara Gateway, configura\u00e7\u00f5es opcionais" + "title": "Configura\u00e7\u00f5es opcionais" }, "user": { "data": { - "host": "Endere\u00e7o IP", + "host": "Endere\u00e7o IP (opcional)", "interface": "A interface de rede a ser usada", "mac": "Endere\u00e7o Mac (opcional)" }, - "description": "Conecte-se ao seu Xiaomi Aqara Gateway, se os endere\u00e7os IP e MAC ficarem vazios, a descoberta autom\u00e1tica \u00e9 usada", + "description": "Se os endere\u00e7os IP e MAC forem deixados vazios, a descoberta autom\u00e1tica \u00e9 usada", "title": "Gateway Xiaomi Aqara" } } diff --git a/homeassistant/components/xiaomi_aqara/translations/ru.json b/homeassistant/components/xiaomi_aqara/translations/ru.json index aa18808d222..499837889df 100644 --- a/homeassistant/components/xiaomi_aqara/translations/ru.json +++ b/homeassistant/components/xiaomi_aqara/translations/ru.json @@ -18,7 +18,7 @@ "data": { "select_ip": "IP-\u0430\u0434\u0440\u0435\u0441" }, - "description": "\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0435\u0449\u0451 \u0440\u0430\u0437, \u0435\u0441\u043b\u0438 \u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0448\u043b\u044e\u0437.", + "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0448\u043b\u044e\u0437 Xiaomi Aqara.", "title": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0448\u043b\u044e\u0437 Xiaomi Aqara" }, "settings": { @@ -27,7 +27,7 @@ "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435" }, "description": "\u041a\u043b\u044e\u0447 (\u043f\u0430\u0440\u043e\u043b\u044c) \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430: https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz. \u0415\u0441\u043b\u0438 \u043a\u043b\u044e\u0447 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d, \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u0442\u0447\u0438\u043a\u0438.", - "title": "\u0428\u043b\u044e\u0437 Xiaomi Aqara" + "title": "\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438" }, "user": { "data": { @@ -35,7 +35,7 @@ "interface": "\u0421\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441", "mac": "MAC-\u0430\u0434\u0440\u0435\u0441 (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)" }, - "description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Home Assistant \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441\u043e \u0448\u043b\u044e\u0437\u043e\u043c Xiaomi Aqara. \u0414\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0448\u043b\u044e\u0437\u0430, \u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u043e\u043b\u044f IP \u0438 MAC \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u043f\u0443\u0441\u0442\u044b\u043c\u0438.", + "description": "\u0414\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0448\u043b\u044e\u0437\u0430, \u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u043e\u043b\u044f IP \u0438 MAC \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u043f\u0443\u0441\u0442\u044b\u043c\u0438.", "title": "\u0428\u043b\u044e\u0437 Xiaomi Aqara" } } diff --git a/homeassistant/components/xiaomi_aqara/translations/tr.json b/homeassistant/components/xiaomi_aqara/translations/tr.json index 6281b7a397e..0c961a34a3c 100644 --- a/homeassistant/components/xiaomi_aqara/translations/tr.json +++ b/homeassistant/components/xiaomi_aqara/translations/tr.json @@ -18,7 +18,7 @@ "data": { "select_ip": "IP Adresi" }, - "description": "Ek a\u011f ge\u00e7itlerini ba\u011flamak istiyorsan\u0131z kurulumu tekrar \u00e7al\u0131\u015ft\u0131r\u0131n.", + "description": "Ba\u011flamak istedi\u011finiz Xiaomi Aqara A\u011f Ge\u00e7idini se\u00e7in", "title": "Ba\u011flamak istedi\u011finiz Xiaomi Aqara A\u011f Ge\u00e7idini se\u00e7in" }, "settings": { @@ -27,7 +27,7 @@ "name": "A\u011f Ge\u00e7idinin Ad\u0131" }, "description": "Anahtar (parola) bu \u00f6\u011fretici kullan\u0131larak al\u0131nabilir: https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz. Anahtar sa\u011flanmazsa, yaln\u0131zca sens\u00f6rlere eri\u015filebilir", - "title": "Xiaomi Aqara A\u011f Ge\u00e7idi, iste\u011fe ba\u011fl\u0131 ayarlar" + "title": "\u0130ste\u011fe ba\u011fl\u0131 ayarlar" }, "user": { "data": { @@ -35,7 +35,7 @@ "interface": "Kullan\u0131lacak a\u011f aray\u00fcz\u00fc", "mac": "Mac Adresi (iste\u011fe ba\u011fl\u0131)" }, - "description": "Xiaomi Aqara Gateway'inize ba\u011flan\u0131n, IP ve MAC adresleri bo\u015f b\u0131rak\u0131l\u0131rsa otomatik ke\u015fif kullan\u0131l\u0131r", + "description": "IP ve MAC adresleri bo\u015f b\u0131rak\u0131l\u0131rsa otomatik ke\u015fif kullan\u0131l\u0131r", "title": "Xiaomi Aqara A\u011f Ge\u00e7idi" } } diff --git a/homeassistant/components/xiaomi_aqara/translations/zh-Hant.json b/homeassistant/components/xiaomi_aqara/translations/zh-Hant.json index 058efd39631..5ffe34d5d39 100644 --- a/homeassistant/components/xiaomi_aqara/translations/zh-Hant.json +++ b/homeassistant/components/xiaomi_aqara/translations/zh-Hant.json @@ -18,7 +18,7 @@ "data": { "select_ip": "IP \u4f4d\u5740" }, - "description": "\u5982\u679c\u9084\u9700\u8981\u9023\u7dda\u81f3\u5176\u4ed6\u7db2\u95dc\uff0c\u8acb\u518d\u57f7\u884c\u4e00\u6b21\u8a2d\u5b9a", + "description": "\u5982\u679c\u6240\u8981\u9023\u7dda\u7684\u5c0f\u7c73 Aqara \u7db2\u95dc", "title": "\u9078\u64c7\u6240\u8981\u9023\u7dda\u7684\u5c0f\u7c73 Aqara \u7db2\u95dc" }, "settings": { @@ -27,7 +27,7 @@ "name": "\u7db2\u95dc\u540d\u7a31" }, "description": "\u91d1\u9470\uff08\u5bc6\u78bc\uff09\u53d6\u5f97\u8acb\u53c3\u8003\u4e0b\u65b9\u6559\u5b78\uff1ahttps://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz\u3002\u5047\u5982\u672a\u63d0\u4f9b\u91d1\u9470\u3001\u5247\u50c5\u6703\u6536\u5230\u611f\u6e2c\u5668\u88dd\u7f6e\u7684\u8cc7\u8a0a", - "title": "\u5c0f\u7c73 Aqara \u7db2\u95dc\u9078\u9805\u8a2d\u5b9a" + "title": "\u9078\u9805\u8a2d\u5b9a" }, "user": { "data": { @@ -35,7 +35,7 @@ "interface": "\u4f7f\u7528\u7684\u7db2\u8def\u4ecb\u9762", "mac": "Mac \u4f4d\u5740\uff08\u9078\u9805\uff09" }, - "description": "\u9023\u7dda\u81f3\u5c0f\u7c73 Aqara \u7db2\u95dc\uff0c\u5047\u5982 IP \u6216 Mac \u4f4d\u5740\u70ba\u7a7a\u767d\u3001\u5c07\u9032\u884c\u81ea\u52d5\u641c\u7d22", + "description": "\u5047\u5982 IP \u6216 Mac \u4f4d\u5740\u70ba\u7a7a\u767d\u3001\u5c07\u9032\u884c\u81ea\u52d5\u641c\u7d22", "title": "\u5c0f\u7c73 Aqara \u7db2\u95dc" } } diff --git a/homeassistant/components/xiaomi_miio/translations/he.json b/homeassistant/components/xiaomi_miio/translations/he.json index 4bb0251d6cb..db0cee16884 100644 --- a/homeassistant/components/xiaomi_miio/translations/he.json +++ b/homeassistant/components/xiaomi_miio/translations/he.json @@ -51,7 +51,7 @@ "name": "\u05e9\u05dd \u05d4\u05e9\u05e2\u05e8", "token": "\u05d0\u05e1\u05d9\u05de\u05d5\u05df API" }, - "description": "\u05d0\u05ea\u05d4 \u05d6\u05e7\u05d5\u05e7 \u05dc-32 \u05ea\u05d5\u05d5\u05d9 \u05d4\u05d0\u05e1\u05d9\u05de\u05d5\u05df API , \u05e8\u05d0\u05d4 https://www.home-assistant.io/integrations/vacuum.xiaomi_miio/#retrieving-the-access-token \u05dc\u05d4\u05d5\u05e8\u05d0\u05d5\u05ea. \u05e9\u05d9\u05dd \u05dc\u05d1, \u05db\u05d9 \u05d0\u05e1\u05d9\u05de\u05d5\u05df API \u05e9\u05d5\u05e0\u05d4 \u05de\u05d4\u05de\u05e4\u05ea\u05d7 \u05d4\u05de\u05e9\u05de\u05e9 \u05d0\u05ea \u05e9\u05d9\u05dc\u05d5\u05d1 Xiaomi Aqara.", + "description": "\u05e0\u05d3\u05e8\u05e9\u05d9\u05dd 32 \u05ea\u05d5\u05d5\u05d9 \u05d4\u05d0\u05e1\u05d9\u05de\u05d5\u05df API, \u05e8\u05d0\u05d4 https://www.home-assistant.io/integrations/vacuum.xiaomi_miio/#retrieving-the-access-token \u05dc\u05d4\u05d5\u05e8\u05d0\u05d5\u05ea. \u05e9\u05d9\u05dd \u05dc\u05d1, \u05db\u05d9 \u05d0\u05e1\u05d9\u05de\u05d5\u05df API \u05e9\u05d5\u05e0\u05d4 \u05de\u05d4\u05de\u05e4\u05ea\u05d7 \u05d4\u05de\u05e9\u05de\u05e9 \u05d0\u05ea \u05e9\u05d9\u05dc\u05d5\u05d1 Xiaomi Aqara.", "title": "\u05d4\u05ea\u05d7\u05d1\u05e8 \u05dc\u05e9\u05e2\u05e8 \u05e9\u05d9\u05d0\u05d5\u05de\u05d9" }, "manual": { diff --git a/homeassistant/components/xiaomi_miio/translations/hu.json b/homeassistant/components/xiaomi_miio/translations/hu.json index 8d2340988dd..189e9906e24 100644 --- a/homeassistant/components/xiaomi_miio/translations/hu.json +++ b/homeassistant/components/xiaomi_miio/translations/hu.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "incomplete_info": "Az eszk\u00f6z be\u00e1ll\u00edt\u00e1s\u00e1hoz sz\u00fcks\u00e9ges inform\u00e1ci\u00f3k hi\u00e1nyosak, nincs megadva \u00e1llom\u00e1s vagy token.", "not_xiaomi_miio": "Az eszk\u00f6zt (m\u00e9g) nem t\u00e1mogatja a Xiaomi Miio integr\u00e1ci\u00f3.", "reauth_successful": "Az \u00fajrahiteles\u00edt\u00e9s sikeres volt." diff --git a/homeassistant/components/xiaomi_miio/translations/pt-BR.json b/homeassistant/components/xiaomi_miio/translations/pt-BR.json index 9e966a541d5..1116de258fa 100644 --- a/homeassistant/components/xiaomi_miio/translations/pt-BR.json +++ b/homeassistant/components/xiaomi_miio/translations/pt-BR.json @@ -25,7 +25,7 @@ "cloud_username": "Usu\u00e1rio da Cloud", "manual": "Configurar manualmente (n\u00e3o recomendado)" }, - "description": "Fa\u00e7a login na Cloud Xiaomi Miio, consulte https://www.openhab.org/addons/bindings/miio/#country-servers para o servidor em cloud usar.", + "description": "Coloque o login da Cloud Xiaomi Miio e consulte https://www.openhab.org/addons/bindings/miio/#country-servers para saber qual servidor cloud usar.", "title": "Conecte-se a um dispositivo Xiaomi Miio ou Xiaomi Gateway" }, "connect": { diff --git a/homeassistant/components/yale_smart_alarm/translations/hu.json b/homeassistant/components/yale_smart_alarm/translations/hu.json index 028f2cd6f0f..a18480fcac0 100644 --- a/homeassistant/components/yale_smart_alarm/translations/hu.json +++ b/homeassistant/components/yale_smart_alarm/translations/hu.json @@ -12,7 +12,7 @@ "reauth_confirm": { "data": { "area_id": "Ter\u00fclet ID", - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "password": "Jelsz\u00f3", "username": "Felhaszn\u00e1l\u00f3n\u00e9v" } @@ -20,7 +20,7 @@ "user": { "data": { "area_id": "Ter\u00fclet ID", - "name": "N\u00e9v", + "name": "Elnevez\u00e9s", "password": "Jelsz\u00f3", "username": "Felhaszn\u00e1l\u00f3n\u00e9v" } diff --git a/homeassistant/components/yeelight/translations/cs.json b/homeassistant/components/yeelight/translations/cs.json index adc42efddb7..2a3084fd3eb 100644 --- a/homeassistant/components/yeelight/translations/cs.json +++ b/homeassistant/components/yeelight/translations/cs.json @@ -27,7 +27,7 @@ "init": { "data": { "model": "Model (voliteln\u00fd)", - "nightlight_switch": "Pou\u017e\u00edt p\u0159ep\u00edna\u010d no\u010dn\u00edho osv\u011btlen\u00ed", + "nightlight_switch": "Pou\u017e\u00edt vyp\u00edna\u010d no\u010dn\u00edho osv\u011btlen\u00ed", "save_on_change": "Ulo\u017eit stav p\u0159i zm\u011bn\u011b", "transition": "\u010cas p\u0159echodu (v ms)", "use_music_mode": "Povolit hudebn\u00ed re\u017eim" diff --git a/homeassistant/components/yeelight/translations/fr.json b/homeassistant/components/yeelight/translations/fr.json index b2153e6aec0..a319f15e36a 100644 --- a/homeassistant/components/yeelight/translations/fr.json +++ b/homeassistant/components/yeelight/translations/fr.json @@ -32,7 +32,7 @@ "model": "Mod\u00e8le", "nightlight_switch": "Utiliser le commutateur de veilleuse", "save_on_change": "Enregistrer l'\u00e9tat lors d'un changement", - "transition": "Dur\u00e9e de transition (en millisecondes)", + "transition": "Dur\u00e9e de la transition (en millisecondes)", "use_music_mode": "Activer le mode musique" }, "description": "Si vous ne pr\u00e9cisez pas le mod\u00e8le, il sera automatiquement d\u00e9tect\u00e9." diff --git a/homeassistant/components/youless/translations/hu.json b/homeassistant/components/youless/translations/hu.json index 31913b7fa6f..415753be254 100644 --- a/homeassistant/components/youless/translations/hu.json +++ b/homeassistant/components/youless/translations/hu.json @@ -7,7 +7,7 @@ "user": { "data": { "host": "C\u00edm", - "name": "N\u00e9v" + "name": "Elnevez\u00e9s" } } } diff --git a/homeassistant/components/zha/translations/cs.json b/homeassistant/components/zha/translations/cs.json index 6a7d4aa17ea..de16e3bd387 100644 --- a/homeassistant/components/zha/translations/cs.json +++ b/homeassistant/components/zha/translations/cs.json @@ -35,7 +35,7 @@ "button_6": "\u0160est\u00e9 tla\u010d\u00edtko", "close": "Zav\u0159\u00edt", "dim_down": "ztmavit", - "dim_up": "ro\u017ehnout", + "dim_up": "rozjasnit", "face_1": "aktivov\u00e1no tv\u00e1\u0159\u00ed 1", "face_2": "aktivov\u00e1no tv\u00e1\u0159\u00ed 2", "face_3": "aktivov\u00e1no tv\u00e1\u0159\u00ed 3", diff --git a/homeassistant/components/zwave_js/translations/bg.json b/homeassistant/components/zwave_js/translations/bg.json index bdae86569ac..59fcf968740 100644 --- a/homeassistant/components/zwave_js/translations/bg.json +++ b/homeassistant/components/zwave_js/translations/bg.json @@ -17,6 +17,9 @@ "data": { "url": "URL" } + }, + "zeroconf_confirm": { + "title": "\u041e\u0442\u043a\u0440\u0438\u0442 Z-Wave JS \u0441\u044a\u0440\u0432\u044a\u0440" } } }, diff --git a/homeassistant/components/zwave_js/translations/ca.json b/homeassistant/components/zwave_js/translations/ca.json index 5e0f834ef19..6691894b79d 100644 --- a/homeassistant/components/zwave_js/translations/ca.json +++ b/homeassistant/components/zwave_js/translations/ca.json @@ -59,6 +59,10 @@ }, "usb_confirm": { "description": "Vols configurar {name} amb el complement Z-Wave JS?" + }, + "zeroconf_confirm": { + "description": "Vols afegir el servidor Z-Wave JS amb ID {home_id} que es troba a {url} a Home Assistant?", + "title": "Servidor Z-Wave JS descobert" } } }, diff --git a/homeassistant/components/zwave_js/translations/de.json b/homeassistant/components/zwave_js/translations/de.json index 4900c9055d9..02418f44306 100644 --- a/homeassistant/components/zwave_js/translations/de.json +++ b/homeassistant/components/zwave_js/translations/de.json @@ -59,6 +59,10 @@ }, "usb_confirm": { "description": "M\u00f6chtest du {name} mit dem Z-Wave JS Add-on einrichten?" + }, + "zeroconf_confirm": { + "description": "M\u00f6chtest du den Z-Wave JS-Server mit der Home-ID {home_id} , gefunden unter {url} , zu Home Assistant hinzuf\u00fcgen?", + "title": "Z-Wave JS-Server entdeckt" } } }, diff --git a/homeassistant/components/zwave_js/translations/el.json b/homeassistant/components/zwave_js/translations/el.json index 2a4a519369a..66330206b60 100644 --- a/homeassistant/components/zwave_js/translations/el.json +++ b/homeassistant/components/zwave_js/translations/el.json @@ -59,6 +59,10 @@ }, "usb_confirm": { "description": "\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf {name} \u03bc\u03b5 \u03c4\u03bf \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03bf Z-Wave JS;" + }, + "zeroconf_confirm": { + "description": "\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf\u03bd \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae Z-Wave JS Server \u03bc\u03b5 \u03b1\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c3\u03c0\u03b9\u03c4\u03b9\u03bf\u03cd {home_id} \u03c0\u03bf\u03c5 \u03b2\u03c1\u03af\u03c3\u03ba\u03b5\u03c4\u03b1\u03b9 \u03c3\u03c4\u03bf {url} \u03c3\u03c4\u03bf Home Assistant;", + "title": "\u0391\u03bd\u03b1\u03ba\u03b1\u03bb\u03cd\u03c6\u03b8\u03b7\u03ba\u03b5 \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae\u03c2 Z-Wave JS" } } }, diff --git a/homeassistant/components/zwave_js/translations/en.json b/homeassistant/components/zwave_js/translations/en.json index 843f2aaf284..fa9794ed847 100644 --- a/homeassistant/components/zwave_js/translations/en.json +++ b/homeassistant/components/zwave_js/translations/en.json @@ -26,6 +26,7 @@ "step": { "configure_addon": { "data": { + "network_key": "Network Key", "s0_legacy_key": "S0 Key (Legacy)", "s2_access_control_key": "S2 Access Control Key", "s2_authenticated_key": "S2 Authenticated Key", @@ -116,6 +117,7 @@ "data": { "emulate_hardware": "Emulate Hardware", "log_level": "Log level", + "network_key": "Network Key", "s0_legacy_key": "S0 Key (Legacy)", "s2_access_control_key": "S2 Access Control Key", "s2_authenticated_key": "S2 Authenticated Key", @@ -144,5 +146,6 @@ "title": "The Z-Wave JS add-on is starting." } } - } + }, + "title": "Z-Wave JS" } \ No newline at end of file diff --git a/homeassistant/components/zwave_js/translations/et.json b/homeassistant/components/zwave_js/translations/et.json index c6c5db1ebd7..29f50ccb290 100644 --- a/homeassistant/components/zwave_js/translations/et.json +++ b/homeassistant/components/zwave_js/translations/et.json @@ -59,6 +59,10 @@ }, "usb_confirm": { "description": "Kas seadistada Z-Wave JS lisandmoodul {name}?" + }, + "zeroconf_confirm": { + "description": "Kas lisada Z-Wave JS-server, mille ID {home_id} on leitud aadressil {url}, Home Assistant'ile?", + "title": "Avastatud Z-Wave JS Server" } } }, diff --git a/homeassistant/components/zwave_js/translations/fr.json b/homeassistant/components/zwave_js/translations/fr.json index 2645e573b6d..22e8ed19e32 100644 --- a/homeassistant/components/zwave_js/translations/fr.json +++ b/homeassistant/components/zwave_js/translations/fr.json @@ -59,6 +59,10 @@ }, "usb_confirm": { "description": "Voulez-vous configurer {name} avec le plugin Z-Wave JS ?" + }, + "zeroconf_confirm": { + "description": "Voulez-vous ajouter le serveur Z-Wave\u00a0JS portant l'ID {home_id} et trouv\u00e9 sur {url} \u00e0 Home Assistant\u00a0?", + "title": "Serveur Z-Wave\u00a0JS d\u00e9couvert" } } }, diff --git a/homeassistant/components/zwave_js/translations/hu.json b/homeassistant/components/zwave_js/translations/hu.json index 1803cfa4a26..07dbb93b703 100644 --- a/homeassistant/components/zwave_js/translations/hu.json +++ b/homeassistant/components/zwave_js/translations/hu.json @@ -7,7 +7,7 @@ "addon_set_config_failed": "Nem siker\u00fclt be\u00e1ll\u00edtani a Z-Wave JS konfigur\u00e1ci\u00f3t.", "addon_start_failed": "Nem siker\u00fclt elind\u00edtani a Z-Wave JS b\u0151v\u00edtm\u00e9nyt.", "already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van", - "already_in_progress": "A konfigur\u00e1l\u00e1s m\u00e1r folyamatban van", + "already_in_progress": "A be\u00e1ll\u00edt\u00e1si folyamat m\u00e1r el lett kezdve", "cannot_connect": "Sikertelen csatlakoz\u00e1s", "discovery_requires_supervisor": "A felfedez\u00e9shez a fel\u00fcgyel\u0151re van sz\u00fcks\u00e9g.", "not_zwave_device": "A felfedezett eszk\u00f6z nem Z-Wave eszk\u00f6z." @@ -59,6 +59,10 @@ }, "usb_confirm": { "description": "Szeretn\u00e9 be\u00e1ll\u00edtani {name} alkalmaz\u00e1st a Z-Wave JS b\u0151v\u00edtm\u00e9nnyel?" + }, + "zeroconf_confirm": { + "description": "Szeretn\u00e9 hozz\u00e1adni a {url} c\u00edmen tal\u00e1lhat\u00f3 {home_id} azonos\u00edt\u00f3val rendelkez\u0151 Z-Wave JS szervert a Home Assistanthoz?", + "title": "Felfedezett Z-Wave JS szerver" } } }, diff --git a/homeassistant/components/zwave_js/translations/id.json b/homeassistant/components/zwave_js/translations/id.json index 7ffb9d7b713..ef14a550210 100644 --- a/homeassistant/components/zwave_js/translations/id.json +++ b/homeassistant/components/zwave_js/translations/id.json @@ -10,7 +10,7 @@ "already_in_progress": "Alur konfigurasi sedang berlangsung", "cannot_connect": "Gagal terhubung", "discovery_requires_supervisor": "Fitur penemuan membutuhkan supervisor.", - "not_zwave_device": "Perangkat yang ditemukan bukanperangkat Z-Wave." + "not_zwave_device": "Perangkat yang ditemukan bukan perangkat Z-Wave." }, "error": { "addon_start_failed": "Gagal memulai add-on Z-Wave JS. Periksa konfigurasi.", @@ -59,6 +59,10 @@ }, "usb_confirm": { "description": "Ingin menyiapkan {name} dengan add-on Z-Wave JS?" + }, + "zeroconf_confirm": { + "description": "Apakah Anda ingin menambahkan Server Z-Wave JS dengan ID rumah {home_id} di {url} ke Home Assistant?", + "title": "Server Z-Wave JS yang Ditemukan" } } }, diff --git a/homeassistant/components/zwave_js/translations/it.json b/homeassistant/components/zwave_js/translations/it.json index d455b7befe6..5922601921a 100644 --- a/homeassistant/components/zwave_js/translations/it.json +++ b/homeassistant/components/zwave_js/translations/it.json @@ -59,6 +59,10 @@ }, "usb_confirm": { "description": "Vuoi configurare {name} con il componente aggiuntivo JS Z-Wave?" + }, + "zeroconf_confirm": { + "description": "Vuoi aggiungere il server Z-Wave JS con l'ID casa {home_id} trovato in {url} a Home Assistant?", + "title": "Server JS Z-Wave rilevato" } } }, diff --git a/homeassistant/components/zwave_js/translations/ja.json b/homeassistant/components/zwave_js/translations/ja.json index c85025c1394..6df591dd0ab 100644 --- a/homeassistant/components/zwave_js/translations/ja.json +++ b/homeassistant/components/zwave_js/translations/ja.json @@ -59,6 +59,10 @@ }, "usb_confirm": { "description": "Z-Wave JS\u30a2\u30c9\u30aa\u30f3\u3067 {name} \u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u307e\u3059\u304b\uff1f" + }, + "zeroconf_confirm": { + "description": "{url} \u306b\u3042\u308b\u30db\u30fc\u30e0ID {home_id} \u306eZ-Wave JS\u30b5\u30fc\u30d0\u30fc\u3092Home Assistant\u306b\u8ffd\u52a0\u3057\u307e\u3059\u304b\uff1f", + "title": "Z-Wave JS\u30b5\u30fc\u30d0\u30fc\u3092\u767a\u898b" } } }, diff --git a/homeassistant/components/zwave_js/translations/nl.json b/homeassistant/components/zwave_js/translations/nl.json index 1f99373c18f..2d3ce5421ed 100644 --- a/homeassistant/components/zwave_js/translations/nl.json +++ b/homeassistant/components/zwave_js/translations/nl.json @@ -59,6 +59,10 @@ }, "usb_confirm": { "description": "Wilt u {name} instellen met de Z-Wave JS add-on?" + }, + "zeroconf_confirm": { + "description": "Wilt u de Z-Wave JS Server met home ID {home_id} gevonden op {url} toevoegen aan Home Assistant?", + "title": "Ontdekt Z-Wave JS Server" } } }, diff --git a/homeassistant/components/zwave_js/translations/no.json b/homeassistant/components/zwave_js/translations/no.json index 24efdf1c573..854bd307abc 100644 --- a/homeassistant/components/zwave_js/translations/no.json +++ b/homeassistant/components/zwave_js/translations/no.json @@ -59,6 +59,10 @@ }, "usb_confirm": { "description": "Vil du konfigurere {name} med Z-Wave JS-tillegget?" + }, + "zeroconf_confirm": { + "description": "Vil du legge til Z-Wave JS Server med hjemme-ID {home_id} funnet p\u00e5 {url} til Home Assistant?", + "title": "Oppdaget Z-Wave JS Server" } } }, diff --git a/homeassistant/components/zwave_js/translations/pl.json b/homeassistant/components/zwave_js/translations/pl.json index 68dd6555552..2edb9fd8c1f 100644 --- a/homeassistant/components/zwave_js/translations/pl.json +++ b/homeassistant/components/zwave_js/translations/pl.json @@ -59,6 +59,10 @@ }, "usb_confirm": { "description": "Czy chcesz skonfigurowa\u0107 {name} z dodatkiem Z-Wave JS?" + }, + "zeroconf_confirm": { + "description": "Czy chcesz doda\u0107 do Home Assistanta serwer Z-Wave JS z identyfikatorem {home_id} znalezionym pod {url}?", + "title": "Wykryty serwer Z-Wave JS" } } }, diff --git a/homeassistant/components/zwave_js/translations/pt-BR.json b/homeassistant/components/zwave_js/translations/pt-BR.json index b8fadd65089..5e1e8610fc7 100644 --- a/homeassistant/components/zwave_js/translations/pt-BR.json +++ b/homeassistant/components/zwave_js/translations/pt-BR.json @@ -59,6 +59,10 @@ }, "usb_confirm": { "description": "Deseja configurar o {name} com o add-on Z-Wave JS?" + }, + "zeroconf_confirm": { + "description": "Deseja adicionar o servidor Z-Wave JS com o ID inicial {home_id} encontrado em {url} ao Home Assistant?", + "title": "Servidor Z-Wave JS descoberto" } } }, diff --git a/homeassistant/components/zwave_js/translations/ru.json b/homeassistant/components/zwave_js/translations/ru.json index bc1d3e2cbd4..14011c78517 100644 --- a/homeassistant/components/zwave_js/translations/ru.json +++ b/homeassistant/components/zwave_js/translations/ru.json @@ -59,6 +59,10 @@ }, "usb_confirm": { "description": "\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c {name} \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f Z-Wave JS?" + }, + "zeroconf_confirm": { + "description": "\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 Z-Wave JS \u0441 home ID {home_id}, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u043c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 {url}?", + "title": "\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d \u0441\u0435\u0440\u0432\u0435\u0440 Z-Wave JS" } } }, diff --git a/homeassistant/components/zwave_js/translations/tr.json b/homeassistant/components/zwave_js/translations/tr.json index efaa87cc48d..a3b5f6fb9f4 100644 --- a/homeassistant/components/zwave_js/translations/tr.json +++ b/homeassistant/components/zwave_js/translations/tr.json @@ -59,6 +59,10 @@ }, "usb_confirm": { "description": "{name} Z-Wave JS eklentisiyle kurmak istiyor musunuz?" + }, + "zeroconf_confirm": { + "description": "{url} adresinde bulunan {home_id} ev kimli\u011fine sahip Z-Wave JS Sunucusunu Home Assistant'a eklemek istiyor musunuz?", + "title": "Ke\u015ffedilen Z-Wave JS Sunucusu" } } }, diff --git a/homeassistant/components/zwave_js/translations/zh-Hant.json b/homeassistant/components/zwave_js/translations/zh-Hant.json index 664cd6b48d9..2ea728a591e 100644 --- a/homeassistant/components/zwave_js/translations/zh-Hant.json +++ b/homeassistant/components/zwave_js/translations/zh-Hant.json @@ -59,6 +59,10 @@ }, "usb_confirm": { "description": "\u662f\u5426\u8981\u8a2d\u5b9a\u540d\u70ba {name} \u7684 Z-Wave JS \u9644\u52a0\u5143\u4ef6\uff1f" + }, + "zeroconf_confirm": { + "description": "\u662f\u5426\u8981\u65b0\u589e\u65bc {url} \u6240\u627e\u5230\u4e4b ID \u70ba {home_id} \u4e4b Z-Wave JS \u4f3a\u670d\u5668\u81f3 Home Assistant\uff1f", + "title": "\u6240\u767c\u73fe\u7684 Z-Wave JS \u4f3a\u670d\u5668" } } }, diff --git a/homeassistant/components/zwave_me/translations/ca.json b/homeassistant/components/zwave_me/translations/ca.json index a382cef5494..abd616b1ed5 100644 --- a/homeassistant/components/zwave_me/translations/ca.json +++ b/homeassistant/components/zwave_me/translations/ca.json @@ -10,10 +10,10 @@ "step": { "user": { "data": { - "token": "Token", + "token": "Token d'API", "url": "URL" }, - "description": "Introdueix l'adre\u00e7a IP del servidor Z-Way i el 'token' d'acc\u00e9s Z-Way. Si s'utilitza HTTPS en lloc d'HTTP, l'adre\u00e7a IP es pot prefixar amb wss://. Per obtenir el 'token', v\u00e9s a la interf\u00edcie d'usuari de Z-Way > Men\u00fa > Configuraci\u00f3 > Usuari > Token API. Es recomana crear un nou usuari de Home Assistant i concedir-li acc\u00e9s als dispositius que necessitis controlar des de Home Assistant. Tamb\u00e9 \u00e9s possible utilitzar l'acc\u00e9s remot a trav\u00e9s de find.z-wave.me per connectar amb un Z-Way remot. Introdueix wss://find.z-wave.me al camp d'IP i copia el 'token' d'\u00e0mbit global (inicia sessi\u00f3 a Z-Way mitjan\u00e7ant find.z-wave.me)." + "description": "Introdueix l'adre\u00e7a IP del servidor Z-Way i el 'token' d'acc\u00e9s Z-Way. Per obtenir el 'token', v\u00e9s a la interf\u00edcie d'usuari de Z-Way Smart Home UI > Men\u00fa > Configuraci\u00f3 > Usuaris > Administrador > Token API.\n\nExemple de connexi\u00f3 a Z-Way en una xarxa local:\nURL: {local_url}\nToken: {local_token}\n\nExemple de connexi\u00f3 a Z-Way a trav\u00e9s de l'acc\u00e9s remot find.z-wave.me:\nURL: {find_url}\nToken: {find_token}\n\nExemple de connexi\u00f3 a Z-Way amb una adre\u00e7a IP p\u00fablica:\nURL: {remote_url}\nToken: {local_token}\n\nSi et connectes a trav\u00e9s de find.z-wave.me, has d'utilitzar un 'token' d'abast global (inicia sessi\u00f3 a Z-Way via find.z-wave.me per fer-ho)." } } } diff --git a/homeassistant/components/zwave_me/translations/de.json b/homeassistant/components/zwave_me/translations/de.json index 5afd788a3fb..747ccf0c9c8 100644 --- a/homeassistant/components/zwave_me/translations/de.json +++ b/homeassistant/components/zwave_me/translations/de.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "Ger\u00e4t ist bereits eingerichtet", + "already_configured": "Ger\u00e4t ist bereits konfiguriert", "no_valid_uuid_set": "Keine g\u00fcltige UUID gesetzt" }, "error": { @@ -10,10 +10,10 @@ "step": { "user": { "data": { - "token": "Token", + "token": "API-Token", "url": "URL" }, - "description": "Gib die IP-Adresse des Z-Way-Servers und das Z-Way-Zugangs-Token ein. Der IP-Adresse kann wss:// vorangestellt werden, wenn HTTPS anstelle von HTTP verwendet werden soll. Um das Token zu erhalten, gehe auf Z-Way-Benutzeroberfl\u00e4che > Men\u00fc > Einstellungen > Benutzer > API-Token. Es wird empfohlen, einen neuen Benutzer f\u00fcr Home Assistant zu erstellen und den Ger\u00e4ten, die du \u00fcber den Home Assistant steuern m\u00f6chtest, Zugriff zu gew\u00e4hren. Es ist auch m\u00f6glich, den Fernzugriff \u00fcber find.z-wave.me zu nutzen, um ein entferntes Z-Way zu verbinden. Gib wss://find.z-wave.me in das IP-Feld ein und kopiere das Token mit globalem Geltungsbereich (logge dich dazu \u00fcber find.z-wave.me bei Z-Way ein)." + "description": "Gib die IP-Adresse mit Port und Zugangs-Token des Z-Way-Servers ein. Um das Token zu erhalten, gehe zur Z-Way-Benutzeroberfl\u00e4che Smart Home UI > Men\u00fc > Einstellungen > Benutzer > Administrator > API-Token.\n\nBeispiel f\u00fcr die Verbindung zu Z-Way im lokalen Netzwerk:\nURL: {local_url}\nToken: {local_token}\n\nBeispiel f\u00fcr die Verbindung zu Z-Way \u00fcber den Fernzugriff find.z-wave.me:\nURL: {find_url}\nToken: {find_token}\n\nBeispiel f\u00fcr eine Verbindung zu Z-Way mit einer statischen \u00f6ffentlichen IP-Adresse:\nURL: {remote_url}\nToken: {local_token}\n\nWenn du dich \u00fcber find.z-wave.me verbindest, musst du ein Token mit globalem Geltungsbereich verwenden (logge dich dazu \u00fcber find.z-wave.me bei Z-Way ein)." } } } diff --git a/homeassistant/components/zwave_me/translations/en.json b/homeassistant/components/zwave_me/translations/en.json index 81d09d5c350..0ad88764806 100644 --- a/homeassistant/components/zwave_me/translations/en.json +++ b/homeassistant/components/zwave_me/translations/en.json @@ -10,10 +10,10 @@ "step": { "user": { "data": { - "token": "Token", + "token": "API Token", "url": "URL" }, - "description": "Input IP address of Z-Way server and Z-Way access token. IP address can be prefixed with wss:// if HTTPS should be used instead of HTTP. To get the token go to the Z-Way user interface > Menu > Settings > User > API token. It is suggested to create a new user for Home Assistant and grant access to devices you need to control from Home Assistant. It is also possible to use remote access via find.z-wave.me to connect a remote Z-Way. Input wss://find.z-wave.me in IP field and copy the token with Global scope (log-in to Z-Way via find.z-wave.me for this)." + "description": "Input IP address with port and access token of Z-Way server. To get the token go to the Z-Way user interface Smart Home UI > Menu > Settings > Users > Administrator > API token.\n\nExample of connecting to Z-Way in the local network:\nURL: {local_url}\nToken: {local_token}\n\nExample of connecting to Z-Way via remote access find.z-wave.me:\nURL: {find_url}\nToken: {find_token}\n\nExample of connecting to Z-Way with a static public IP address:\nURL: {remote_url}\nToken: {local_token}\n\nWhen connecting via find.z-wave.me you need to use a token with a global scope (log-in to Z-Way via find.z-wave.me for this)." } } } diff --git a/homeassistant/components/zwave_me/translations/et.json b/homeassistant/components/zwave_me/translations/et.json index c07b4b2b5f8..1969e86fc4a 100644 --- a/homeassistant/components/zwave_me/translations/et.json +++ b/homeassistant/components/zwave_me/translations/et.json @@ -10,10 +10,10 @@ "step": { "user": { "data": { - "token": "Token", + "token": "API v\u00f5ti", "url": "URL" }, - "description": "Sisesta Z-Way serveri IP-aadress ja Z-Way juurdep\u00e4\u00e4suluba. Kui HTTP asemel tuleks kasutada HTTPS-i, v\u00f5ib IP-aadressile lisada eesliite wss://. Tokeni hankimiseks mine Z-Way kasutajaliidesesse > Men\u00fc\u00fc > Seaded > Kasutaja > API tunnus. Soovitatav on luua Home Assistantile uus kasutaja ja anda juurdep\u00e4\u00e4s seadmetele mida pead Home Assistandi abil juhtima. Kaug-Z-Way \u00fchendamiseks on v\u00f5imalik kasutada ka kaugjuurdep\u00e4\u00e4su l\u00e4bi find.z-wave.me. Sisesta IP v\u00e4ljale wss://find.z-wave.me ja kopeeri globaalse ulatusega luba (selleks logi Z-Waysse sisse saidi find.z-wave.me kaudu)." + "description": "Sisesta IP-aadress koos pordi ja Z-Way serveri juurdep\u00e4\u00e4suv\u00f5tmega. Tokeni hankimiseks ava Z-Way kasutajaliides Smart Home UI > Men\u00fc\u00fc > Seaded > Kasutajad > Administraator > API luba. \n\n N\u00e4ide kohalikus v\u00f5rgus Z-Wayga \u00fchenduse loomisest:\n URL: {local_url}\n Token: {local_token} \n\n N\u00e4ide Z-Wayga \u00fchenduse loomisest kaugjuurdep\u00e4\u00e4su kaudu find.z-wave.me:\n URL: {find_url}\n Token: {find_token} \n\n N\u00e4ide Z-Wayga \u00fchenduse loomisest staatilise avaliku IP-aadressiga:\n URL: {remote_url}\n Token: {local_token} \n\n Kui \u00fchendud saidi find.z-wave.me kaudu, pead kasutama globaalse ulatusega luba (selleks logi Z-Waysse sisse saidi find.z-wave.me kaudu)." } } } diff --git a/homeassistant/components/zwave_me/translations/fr.json b/homeassistant/components/zwave_me/translations/fr.json index 1705796cf77..b53964d96ff 100644 --- a/homeassistant/components/zwave_me/translations/fr.json +++ b/homeassistant/components/zwave_me/translations/fr.json @@ -10,10 +10,10 @@ "step": { "user": { "data": { - "token": "Jeton", + "token": "Jeton d'API", "url": "URL" }, - "description": "Entrez l'adresse IP du serveur Z-Way et le jeton d'acc\u00e8s Z-Way. L'adresse IP peut \u00eatre pr\u00e9c\u00e9d\u00e9e de wss:// si HTTPS doit \u00eatre utilis\u00e9 \u00e0 la place de HTTP. Pour obtenir le jeton, acc\u00e9dez \u00e0 l'interface utilisateur Z-Way > Menu > Param\u00e8tres > Utilisateur > Jeton API. Il est sugg\u00e9r\u00e9 de cr\u00e9er un nouvel utilisateur pour Home Assistant et d'accorder l'acc\u00e8s aux appareils que vous devez contr\u00f4ler \u00e0 partir de Home Assistant. Il est \u00e9galement possible d'utiliser l'acc\u00e8s \u00e0 distance via find.z-wave.me pour connecter un Z-Way distant. Entrez wss://find.z-wave.me dans le champ IP et copiez le jeton avec la port\u00e9e globale (connectez-vous \u00e0 Z-Way via find.z-wave.me pour cela)." + "description": "Saisissez l'adresse IP avec le port ainsi que le jeton d'acc\u00e8s au serveur Z-Way. Pour obtenir le jeton, acc\u00e9dez \u00e0 l'interface utilisateur Z-Way Smart Home UI > Menu > Param\u00e8tres > Utilisateurs > Administrateur > jeton d'API.\n\nExemple de connexion \u00e0 Z-Way sur le r\u00e9seau local\u00a0:\nURL\u00a0: {local_url}\nJeton\u00a0: {local_token}\n\nExemple de connexion \u00e0 Z-Way via l'acc\u00e8s \u00e0 distance find.z-wave.me\u00a0:\nURL\u00a0: {find_url}\nJeton\u00a0: {find_token}\n\nExemple de connexion \u00e0 Z-Way avec une adresse IP publique statique\u00a0:\nURL\u00a0: {remote_url}\nJeton\u00a0: {local_token}\n\nLorsque vous vous connectez via find.z-wave.me, vous devez utiliser un jeton avec une port\u00e9e globale (pour cela, connectez-vous \u00e0 Z-Way via find.z-wave.me)." } } } diff --git a/homeassistant/components/zwave_me/translations/he.json b/homeassistant/components/zwave_me/translations/he.json index 5689db627e2..ad8b69eaee6 100644 --- a/homeassistant/components/zwave_me/translations/he.json +++ b/homeassistant/components/zwave_me/translations/he.json @@ -6,7 +6,7 @@ "step": { "user": { "data": { - "token": "\u05d0\u05e1\u05d9\u05de\u05d5\u05df", + "token": "\u05d0\u05e1\u05d9\u05de\u05d5\u05df API", "url": "\u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05ea\u05e8" } } diff --git a/homeassistant/components/zwave_me/translations/hu.json b/homeassistant/components/zwave_me/translations/hu.json index 679604d6cfa..21ed9026feb 100644 --- a/homeassistant/components/zwave_me/translations/hu.json +++ b/homeassistant/components/zwave_me/translations/hu.json @@ -10,10 +10,10 @@ "step": { "user": { "data": { - "token": "Token", + "token": "API Token", "url": "URL" }, - "description": "Adja meg a Z-Way szerver IP-c\u00edm\u00e9t \u00e9s a Z-Way hozz\u00e1f\u00e9r\u00e9si tokent. Az IP-c\u00edm el\u00e9 wss:// el\u0151tagot lehet tenni, ha HTTP helyett HTTPS-t kell haszn\u00e1lni. A token megszerz\u00e9s\u00e9hez l\u00e9pjen a Z-Way felhaszn\u00e1l\u00f3i fel\u00fcletre > Men\u00fc > Be\u00e1ll\u00edt\u00e1sok > Felhaszn\u00e1l\u00f3 > API token men\u00fcpontba. Javasoljuk, hogy hozzon l\u00e9tre egy \u00faj felhaszn\u00e1l\u00f3t a Home Assistanthoz, \u00e9s adjon hozz\u00e1f\u00e9r\u00e9st azoknak az eszk\u00f6z\u00f6knek, amelyeket a Home Assistantb\u00f3l kell vez\u00e9relnie. A t\u00e1voli Z-Way csatlakoztat\u00e1s\u00e1hoz a find.z-wave.me oldalon kereszt\u00fcl t\u00e1voli hozz\u00e1f\u00e9r\u00e9st is haszn\u00e1lhat. \u00cdrja be az IP mez\u0151be a wss://find.z-wave.me c\u00edmet, \u00e9s m\u00e1solja be a tokent glob\u00e1lis hat\u00f3k\u00f6rrel (ehhez jelentkezzen be a Z-Way-be a find.z-wave.me oldalon kereszt\u00fcl)." + "description": "Adja meg a Z-Way szerver IP-c\u00edm\u00e9t, portj\u00e1t \u00e9s hozz\u00e1f\u00e9r\u00e9si jel\u00e9t. A token megszerz\u00e9s\u00e9hez n\u00e9zze meg a Z-Way felhaszn\u00e1l\u00f3i fel\u00fclet\u00e9n a Smart Home UI > Menu > Settings > Users > Administrator > API token men\u00fcpontot.\n\nP\u00e9lda a Z-Wayhez val\u00f3 csatlakoz\u00e1sra a helyi h\u00e1l\u00f3zaton:\nURL: {local_url}\nToken: {local_token}\n\nP\u00e9lda a Z-Wayhez t\u00e1voli el\u00e9r\u00e9ssel t\u00f6rt\u00e9n\u0151 csatlakoz\u00e1sra find.z-wave.me:\nURL: {find_url}\nToken: {find_token}\n\nP\u00e9lda a Z-Wayhez val\u00f3 csatlakoz\u00e1sra statikus nyilv\u00e1nos IP-c\u00edmmel:\nURL: {remote_url}\nToken: {local_token}\n\nA find.z-wave.me oldalon kereszt\u00fcl t\u00f6rt\u00e9n\u0151 csatlakoz\u00e1skor glob\u00e1lis hat\u00f3k\u00f6r\u0171 tokent kell haszn\u00e1lnia (ehhez a find.z-wave.me oldalon kereszt\u00fcl kell bejelentkeznie a Z-Way-be)." } } } diff --git a/homeassistant/components/zwave_me/translations/id.json b/homeassistant/components/zwave_me/translations/id.json index da9ddeb6d67..7e934a6c258 100644 --- a/homeassistant/components/zwave_me/translations/id.json +++ b/homeassistant/components/zwave_me/translations/id.json @@ -10,10 +10,10 @@ "step": { "user": { "data": { - "token": "Token", + "token": "Token API", "url": "URL" }, - "description": "Masukkan alamat IP server Z-Way dan token akses Z-Way. Alamat IP dapat diawali dengan wss:// jika HTTPS harus digunakan sebagai pengganti HTTP. Untuk mendapatkan token, buka antarmuka pengguna Z-Way > Menu > Pengaturan > Token API > Pengguna. Disarankan untuk membuat pengguna baru untuk Home Assistant dan memberikan akses ke perangkat yang perlu Anda kontrol dari Home Assistant. Dimungkinkan juga untuk menggunakan akses jarak jauh melalui find.z-wave.me untuk menghubungkan Z-Way jarak jauh. Masukkan wss://find.z-wave.me di bidang IP dan salin token dengan cakupan Global (masuk ke Z-Way melalui find.z-wave.me untuk ini)." + "description": "Masukkan alamat IP dengan port dan token akses server Z-Way. Untuk mendapatkan token, buka antarmuka pengguna Z-Way Smart Home UI > Menu > Settings > Users > Administrator > API token.\n\nContoh menghubungkan ke Z-Way di jaringan lokal:\nURL: {local_url}\nToken: {local_token}\n\nContoh menghubungkan ke Z-Way melalui akses jarak jauh find.z-wave.me:\nURL: {find_url}\nToken: {find_token}\n\nContoh menghubungkan ke Z-Way dengan alamat IP publik statis:\nURL: {remote_url}\nToken: {local_token}\n\nSaat terhubung melalui find.z-wave.me Anda perlu menggunakan token dengan cakupan global (masuk ke Z-Way melalui find.z-wave.me untuk hal ini)." } } } diff --git a/homeassistant/components/zwave_me/translations/it.json b/homeassistant/components/zwave_me/translations/it.json index d60ac60d899..048312af73e 100644 --- a/homeassistant/components/zwave_me/translations/it.json +++ b/homeassistant/components/zwave_me/translations/it.json @@ -10,10 +10,10 @@ "step": { "user": { "data": { - "token": "Token", + "token": "Token API", "url": "URL" }, - "description": "Digita l'indirizzo IP del server Z-Way e il token di accesso Z-Way. L'indirizzo IP pu\u00f2 essere preceduto da wss:// se si deve utilizzare HTTPS invece di HTTP. Per ottenere il token, vai all'interfaccia utente di Z-Way > Menu > Impostazioni > Utente > Token API. Si consiglia di creare un nuovo utente per Home Assistant e concedere l'accesso ai dispositivi che devi controllare da Home Assistant. \u00c8 anche possibile utilizzare l'accesso remoto tramite find.z-wave.me per connettere uno Z-Way remoto. Inserisci wss://find.z-wave.me nel campo IP e copia il token con ambito globale (accedi a Z-Way tramite find.z-wave.me per questo)." + "description": "Digita l'indirizzo IP con la porta e il token di accesso del server Z-Way. Per ottenere il token, vai all'interfaccia utente di Z-Way Smart Home UI > Menu > Impostazioni > Utenti > Amministratore > API token. \n\nEsempio di connessione a Z-Way nella rete locale:\nURL: {local_url}\nToken: {local_token} \n\nEsempio di connessione a Z-Way tramite accesso remoto find.z-wave.me:\nURL: {find_url}\nToken: {find_token} \n\nEsempio di connessione a Z-Way con un indirizzo IP pubblico statico:\nURL: {remote_url}\nToken: {local_token} \n\nQuando ti connetti tramite find.z-wave.me devi usare un token con un ambito globale (accedi a Z-Way tramite find.z-wave.me per questo)." } } } diff --git a/homeassistant/components/zwave_me/translations/nl.json b/homeassistant/components/zwave_me/translations/nl.json index a2356ed1035..04692559e81 100644 --- a/homeassistant/components/zwave_me/translations/nl.json +++ b/homeassistant/components/zwave_me/translations/nl.json @@ -10,10 +10,10 @@ "step": { "user": { "data": { - "token": "Token", + "token": "API-token", "url": "URL" }, - "description": "Voer het IP-adres van de Z-Way server en het Z-Way toegangstoken in. Het IP adres kan voorafgegaan worden door wss:// indien HTTPS gebruikt moet worden in plaats van HTTP. Om het token te verkrijgen gaat u naar de Z-Way gebruikersinterface > Menu > Instellingen > Gebruiker > API token. Het is aanbevolen om een nieuwe gebruiker voor Home Assistant aan te maken en toegang te verlenen aan apparaten die u wilt bedienen vanuit Home Assistant. Het is ook mogelijk om toegang op afstand te gebruiken via find.z-wave.me om een Z-Way op afstand te verbinden. Voer wss://find.z-wave.me in het IP veld in en kopieer het token met Global scope (log hiervoor in op Z-Way via find.z-wave.me)." + "description": "Voer IP adres met poort en toegangstoken van Z-Way server in. Om het token te verkrijgen gaat u naar de Z-Way gebruikersinterface Smart Home UI > Menu > Instellingen > Gebruikers > Beheerder > API token.\n\nVoorbeeld van verbinding met Z-Way in het lokale netwerk:\nURL: {local_url}\nToken: {local_token}\n\nVoorbeeld van verbinding maken met Z-Way via remote access find.z-wave.me:\nURL: {find_url}\nToken: {find_token}\n\nVoorbeeld van een verbinding met Z-Way met een statisch publiek IP-adres:\nURL: {remote_url}\nToken: {local_token}\n\nWanneer je verbinding maakt via find.z-wave.me moet je een token gebruiken met een globale scope (log hiervoor in op Z-Way via find.z-wave.me)." } } } diff --git a/homeassistant/components/zwave_me/translations/no.json b/homeassistant/components/zwave_me/translations/no.json index 8a9a6928e93..266f74fdb61 100644 --- a/homeassistant/components/zwave_me/translations/no.json +++ b/homeassistant/components/zwave_me/translations/no.json @@ -10,10 +10,10 @@ "step": { "user": { "data": { - "token": "Token", + "token": "API-token", "url": "URL" }, - "description": "Skriv inn IP-adressen til Z-Way-serveren og Z-Way-tilgangstoken. IP-adressen kan settes foran med wss:// hvis HTTPS skal brukes i stedet for HTTP. For \u00e5 f\u00e5 tokenet, g\u00e5 til Z-Way-brukergrensesnittet > Meny > Innstillinger > Bruker > API-token. Det foresl\u00e5s \u00e5 opprette en ny bruker for Home Assistant og gi tilgang til enheter du m\u00e5 kontrollere fra Home Assistant. Det er ogs\u00e5 mulig \u00e5 bruke ekstern tilgang via find.z-wave.me for \u00e5 koble til en ekstern Z-Way. Skriv inn wss://find.z-wave.me i IP-feltet og kopier token med Global scope (logg inn p\u00e5 Z-Way via find.z-wave.me for dette)." + "description": "Skriv inn IP-adresse med port og tilgangstoken til Z-Way-serveren. For \u00e5 f\u00e5 tokenet, g\u00e5 til Z-Way-brukergrensesnittet Smart Home UI > Meny > Innstillinger > Brukere > Administrator > API-token. \n\n Eksempel p\u00e5 tilkobling til Z-Way i det lokale nettverket:\n URL: {local_url}\n Token: {local_token} \n\n Eksempel p\u00e5 tilkobling til Z-Way via fjerntilgang find.z-wave.me:\n URL: {find_url}\n Token: {find_token} \n\n Eksempel p\u00e5 tilkobling til Z-Way med en statisk offentlig IP-adresse:\n URL: {remote_url}\n Token: {local_token} \n\n N\u00e5r du kobler til via find.z-wave.me m\u00e5 du bruke en token med et globalt omfang (logg inn p\u00e5 Z-Way via find.z-wave.me for dette)." } } } diff --git a/homeassistant/components/zwave_me/translations/pl.json b/homeassistant/components/zwave_me/translations/pl.json index d75251367cd..bc9d43bed0d 100644 --- a/homeassistant/components/zwave_me/translations/pl.json +++ b/homeassistant/components/zwave_me/translations/pl.json @@ -10,10 +10,10 @@ "step": { "user": { "data": { - "token": "Token", + "token": "Token API", "url": "URL" }, - "description": "Wprowad\u017a adres IP serwera Z-Way i token dost\u0119pu Z-Way. Adres IP mo\u017ce by\u0107 poprzedzony wss://, je\u015bli zamiast HTTP powinien by\u0107 u\u017cywany HTTPS. Aby uzyska\u0107 token, przejd\u017a do interfejsu u\u017cytkownika Z-Way > Menu > Ustawienia > U\u017cytkownik > Token API. Sugeruje si\u0119 utworzenie nowego u\u017cytkownika Home Assistant i przyznanie dost\u0119pu do urz\u0105dze\u0144, kt\u00f3rymi chcesz sterowa\u0107 z Home Assistant. Mo\u017cliwe jest r\u00f3wnie\u017c u\u017cycie zdalnego dost\u0119pu za po\u015brednictwem find.z-wave.me, aby po\u0142\u0105czy\u0107 si\u0119 ze zdalnym Z-Way. Wpisz wss://find.z-wave.me w polu IP i skopiuj token z zakresem globalnym (w tym celu zaloguj si\u0119 do Z-Way przez find.z-wave.me)." + "description": "Wprowad\u017a adres IP z portem i tokenem dost\u0119pu serwera Z-Way. Aby uzyska\u0107 token, przejd\u017a do interfejsu u\u017cytkownika Z-Way Smart Home UI > Menu > Ustawienia > U\u017cytkownicy > Administrator > Token API. \n\nPrzyk\u0142ad po\u0142\u0105czenia z Z-Way w sieci lokalnej:\nURL: {local_url}\nToken: {local_token} \n\nPrzyk\u0142ad po\u0142\u0105czenia z Z-Way przez zdalny dost\u0119p find.z-wave.me:\nURL: {find_url}\nToken: {find_token} \n\nPrzyk\u0142ad po\u0142\u0105czenia z Z-Way za pomoc\u0105 statycznego publicznego adresu IP:\nURL: {remote_url}\nToken: {local_token} \n\n\u0141\u0105cz\u0105c si\u0119 przez find.z-wave.me, musisz u\u017cy\u0107 tokena o zasi\u0119gu globalnym (w tym celu zaloguj si\u0119 do Z-Way przez find.z-wave.me)." } } } diff --git a/homeassistant/components/zwave_me/translations/pt-BR.json b/homeassistant/components/zwave_me/translations/pt-BR.json index 4a7be43ddb7..23bdcd4ef9a 100644 --- a/homeassistant/components/zwave_me/translations/pt-BR.json +++ b/homeassistant/components/zwave_me/translations/pt-BR.json @@ -10,10 +10,10 @@ "step": { "user": { "data": { - "token": "Token", + "token": "Token da API", "url": "URL" }, - "description": "Insira o endere\u00e7o IP do servidor Z-Way e o token de acesso Z-Way. O endere\u00e7o IP pode ser prefixado com wss:// e o HTTPS deve ser usado em vez de HTTP. Para obter o token, v\u00e1 para a interface do usu\u00e1rio Z-Way > Menu > Configura\u00e7\u00f5es > Usu\u00e1rio > Token de API. Sugere-se criar um novo usu\u00e1rio para o Home Assistant e conceder acesso aos dispositivos que voc\u00ea quer controlar no Home Assistant. Tamb\u00e9m \u00e9 poss\u00edvel usar o acesso remoto via find.z-wave.me para conectar um Z-Way remoto. Insira wss://find.z-wave.me no campo IP e copie o token com escopo Global (fa\u00e7a login no Z-Way via find.z-wave.me para isso)." + "description": "Insira o endere\u00e7o IP com porta e token de acesso do servidor Z-Way. Para obter o token, v\u00e1 para a interface de usu\u00e1rio Z-Way Smart Home UI > Menu > Settings > Users > Administrator > API token. \n\n Exemplo de conex\u00e3o ao Z-Way na rede local:\n URL: {local_url}\n Token: {local_token} \n\n Exemplo de conex\u00e3o ao Z-Way via acesso remoto find.z-wave.me:\n URL: {find_url}\n Token: {find_token} \n\n Exemplo de conex\u00e3o ao Z-Way com um endere\u00e7o IP p\u00fablico est\u00e1tico:\n URL: {remote_url}\n Token: {local_token} \n\n Ao conectar via find.z-wave.me, voc\u00ea precisa usar um token com escopo global (fa\u00e7a login no Z-Way via find.z-wave.me para isso)." } } } diff --git a/homeassistant/components/zwave_me/translations/ru.json b/homeassistant/components/zwave_me/translations/ru.json index d24b2f7327a..f42a7fd20ca 100644 --- a/homeassistant/components/zwave_me/translations/ru.json +++ b/homeassistant/components/zwave_me/translations/ru.json @@ -10,10 +10,10 @@ "step": { "user": { "data": { - "token": "\u0422\u043e\u043a\u0435\u043d", + "token": "\u0422\u043e\u043a\u0435\u043d API", "url": "URL-\u0430\u0434\u0440\u0435\u0441" }, - "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 IP-\u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Z-Way \u0438 \u0442\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430 Z-Way. \u0415\u0441\u043b\u0438 \u0432\u043c\u0435\u0441\u0442\u043e HTTP \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c HTTPS, IP-\u0430\u0434\u0440\u0435\u0441 \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c 'wss://'. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u043a\u0435\u043d, \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Z-Way > \u041c\u0435\u043d\u044e > \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 > \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c > \u0422\u043e\u043a\u0435\u043d API. \u0417\u0430\u0442\u0435\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043b\u044f Home Assistant \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0412\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0437 Home Assistant. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0447\u0435\u0440\u0435\u0437 find.z-wave.me \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e Z-Way. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 wss://find.z-wave.me \u0432 \u043f\u043e\u043b\u0435 IP-\u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0442\u043e\u043a\u0435\u043d \u0441 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u044c\u044e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f (\u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0439\u0434\u0438\u0442\u0435 \u0432 Z-Way \u0447\u0435\u0440\u0435\u0437 find.z-wave.me)." + "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 IP-\u0430\u0434\u0440\u0435\u0441, \u043f\u043e\u0440\u0442 \u0438 \u0442\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 Z-Way. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u043a\u0435\u043d, \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Z-Way Smart Home UI > \u041c\u0435\u043d\u044e > \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 > \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 > \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 > \u0422\u043e\u043a\u0435\u043d API. \n\n\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a Z-Way \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438:\nURL-\u0430\u0434\u0440\u0435\u0441: {local_url}\n\u0422\u043e\u043a\u0435\u043d: {local_token} \n\n\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a Z-Way \u0447\u0435\u0440\u0435\u0437 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f find.z-wave.me:\nURL-\u0430\u0434\u0440\u0435\u0441: {find_url}\n\u0422\u043e\u043a\u0435\u043d: {find_token} \n\n\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a Z-Way \u0441\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u043c IP-\u0430\u0434\u0440\u0435\u0441\u043e\u043c:\nURL-\u0430\u0434\u0440\u0435\u0441: {remote_url}\n\u0422\u043e\u043a\u0435\u043d: {local_token} \n\n\u041f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 find.z-wave.me \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043a\u0435\u043d \u0441 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u044c\u044e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f (\u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u0432 Z-Way \u0447\u0435\u0440\u0435\u0437 find.z-wave.me)." } } } diff --git a/homeassistant/components/zwave_me/translations/tr.json b/homeassistant/components/zwave_me/translations/tr.json index 39d25423fab..90edc6bf4ff 100644 --- a/homeassistant/components/zwave_me/translations/tr.json +++ b/homeassistant/components/zwave_me/translations/tr.json @@ -10,10 +10,10 @@ "step": { "user": { "data": { - "token": "Anahtar", + "token": "API Anahtar\u0131", "url": "URL" }, - "description": "Z-Way sunucusunun ve Z-Way eri\u015fim belirtecinin IP adresini girin. HTTP yerine HTTPS kullan\u0131lmas\u0131 gerekiyorsa, IP adresinin \u00f6n\u00fcne wss:// eklenebilir. Belirteci almak i\u00e7in Z-Way kullan\u0131c\u0131 aray\u00fcz\u00fc > Men\u00fc > Ayarlar > Kullan\u0131c\u0131 > API belirtecine gidin. Home Assistant i\u00e7in yeni bir kullan\u0131c\u0131 olu\u015fturman\u0131z ve Home Assistant'tan kontrol etmeniz gereken cihazlara eri\u015fim izni vermeniz \u00f6nerilir. Uzak bir Z-Way'i ba\u011flamak i\u00e7in find.z-wave.me arac\u0131l\u0131\u011f\u0131yla uzaktan eri\u015fimi kullanmak da m\u00fcmk\u00fcnd\u00fcr. IP alan\u0131na wss://find.z-wave.me yaz\u0131n ve belirteci Global kapsamla kopyalay\u0131n (bunun i\u00e7in find.z-wave.me arac\u0131l\u0131\u011f\u0131yla Z-Way'de oturum a\u00e7\u0131n)." + "description": "Z-Way sunucusunun ba\u011flant\u0131 noktas\u0131 ve eri\u015fim anahtar\u0131 ile IP adresini girin. Simgeyi almak i\u00e7in Z-Way kullan\u0131c\u0131 aray\u00fcz\u00fc Smart Home UI > Men\u00fc > Ayarlar > Kullan\u0131c\u0131lar > Y\u00f6netici > API anahtar\u0131na gidin. \n\n Yerel a\u011fda Z-Way'e ba\u011flanma \u00f6rne\u011fi:\n URL: {local_url}\n Belirte\u00e7: {local_token} \n\n Z-Way'e uzaktan eri\u015fim find.z-wave.me arac\u0131l\u0131\u011f\u0131yla ba\u011flanma \u00f6rne\u011fi:\n URL: {find_url}\n Belirte\u00e7: {find_token} \n\n Statik bir genel IP adresiyle Z-Way'e ba\u011flanma \u00f6rne\u011fi:\n URL: {remote_url}\n Belirte\u00e7: {local_token} \n\n find.z-wave.me arac\u0131l\u0131\u011f\u0131yla ba\u011flan\u0131rken, k\u00fcresel kapsaml\u0131 bir anahtar kullanman\u0131z gerekir (bunun i\u00e7in Z-Way'de find.z-wave.me arac\u0131l\u0131\u011f\u0131yla oturum a\u00e7\u0131n)." } } } diff --git a/homeassistant/components/zwave_me/translations/zh-Hant.json b/homeassistant/components/zwave_me/translations/zh-Hant.json index ee6eb1e9ae7..9c1178b4063 100644 --- a/homeassistant/components/zwave_me/translations/zh-Hant.json +++ b/homeassistant/components/zwave_me/translations/zh-Hant.json @@ -10,10 +10,10 @@ "step": { "user": { "data": { - "token": "\u6b0a\u6756", + "token": "API \u6b0a\u6756", "url": "\u7db2\u5740" }, - "description": "\u8f38\u5165 Z-Way \u4f3a\u670d\u5668 IP \u4f4d\u5740\u8207 Z-Way \u5b58\u53d6\u6b0a\u6756\u3002\u5047\u5982\u4f7f\u7528 HTTPS \u800c\u975e HTTP\u3001IP \u4f4d\u5740\u524d\u7db4\u53ef\u80fd\u70ba wss://\u3002\u6b32\u53d6\u5f97\u6b0a\u6756\u3001\u8acb\u81f3 Z-Way \u4f7f\u7528\u8005\u4ecb\u9762 > \u9078\u55ae > \u8a2d\u5b9a > \u4f7f\u7528\u8005 > API \u6b0a\u6756\u7372\u5f97\u3002\u5efa\u8b70\u91dd\u5c0d Home Assistant \u65b0\u5275\u4f7f\u7528\u8005\u4e26\u7531 Home Assistant \u63a7\u5236\u53ef\u4ee5\u5b58\u53d6\u7684\u88dd\u7f6e\u3002\u53e6\u5916\u4e5f\u53ef\u4ee5\u900f\u904e find.z-wave.me \u9023\u7dda\u81f3\u9060\u7aef Z-Way \u4e26\u7372\u5f97\u9060\u7aef\u5b58\u53d6\u529f\u80fd\u3002\u65bc IP \u6b04\u4f4d\u8f38\u5165 wss://find.z-wave.me \u4e26\u7531 Global scope\uff08\u900f\u904e find.z-wave.me \u767b\u5165 Z-Way\uff09\u8907\u88fd\u6b0a\u6756\u3002" + "description": "\u8f38\u5165 Z-Way \u4f3a\u670d\u5668 IP \u4f4d\u5740\u901a\u4fe1\u57e0\u8207\u5b58\u53d6\u6b0a\u6756\u3002\u6b32\u53d6\u5f97\u6b0a\u6756\u3001\u8acb\u81f3 Z-Way \u4f7f\u7528\u8005 Smart Home \u4ecb\u9762 > \u9078\u55ae > \u8a2d\u5b9a > \u4f7f\u7528\u8005 > \u7ba1\u7406\u8005 > API \u6b0a\u6756\u7372\u5f97\u3002\n\n\u4ee5\u672c\u5730\u7aef\u9023\u7dda\u81f3 Z-Way \u7bc4\u4f8b\uff1a\nURL\uff1a{local_url}\n\u6b0a\u6756\uff1a{local_token}\n\n\u900f\u904e\u9060\u7aef\u5b58\u53d6 find.z-wave.me \u9023\u7dda\u81f3 Z-Way \u7bc4\u4f8b\uff1a\nURL\uff1a{find_url}\n\u6b0a\u6756\uff1a{find_token}\n\n\u4ee5\u975c\u614b\u516c\u773e IP \u4f4d\u5740\u9023\u7dda\u81f3 Z-Way \u7bc4\u4f8b\uff1a\nURL\uff1a{remote_url}\n\u6b0a\u6756\uff1a{local_token}\n\n\u7576\u900f\u904e find.z-wave.me \u9023\u7dda\u6642\u3001\u5c07\u9700\u8981\u4f7f\u7528\u4e00\u7d44\u5168\u7bc4\u570d\u91d1\u9470\uff08\u900f\u904e find.z-wave.me \u767b\u5165\u81f3 Z-Way \u4ee5\u53d6\u5f97\uff09\u3002" } } } From af0d61fb8dc254911a3d2929cdc9f0f95f10a9ee Mon Sep 17 00:00:00 2001 From: Tom Harris Date: Thu, 28 Apr 2022 15:35:43 -0400 Subject: [PATCH 016/151] Insteon Device Control Panel (#70834) Co-authored-by: Paulus Schoutsen --- homeassistant/components/insteon/__init__.py | 37 +- .../components/insteon/api/__init__.py | 45 +- .../components/insteon/api/device.py | 66 ++- .../components/insteon/api/properties.py | 340 ++++--------- homeassistant/components/insteon/climate.py | 2 +- homeassistant/components/insteon/const.py | 2 + .../components/insteon/insteon_entity.py | 2 +- homeassistant/components/insteon/light.py | 2 +- .../components/insteon/manifest.json | 8 +- homeassistant/components/insteon/schemas.py | 2 + homeassistant/components/insteon/utils.py | 7 +- requirements_all.txt | 5 +- requirements_test_all.txt | 5 +- .../insteon/fixtures/iolinc_properties.json | 18 + tests/components/insteon/mock_devices.py | 38 +- tests/components/insteon/test_api_device.py | 51 +- .../components/insteon/test_api_properties.py | 467 ++++++++++-------- tests/components/insteon/test_config_flow.py | 50 +- tests/components/insteon/test_init.py | 22 + 19 files changed, 650 insertions(+), 519 deletions(-) create mode 100644 tests/components/insteon/fixtures/iolinc_properties.json diff --git a/homeassistant/components/insteon/__init__.py b/homeassistant/components/insteon/__init__.py index 0f17e1231e4..15181cb827c 100644 --- a/homeassistant/components/insteon/__init__.py +++ b/homeassistant/components/insteon/__init__.py @@ -9,11 +9,13 @@ from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry from homeassistant.const import CONF_PLATFORM, EVENT_HOMEASSISTANT_STOP from homeassistant.core import HomeAssistant from homeassistant.exceptions import ConfigEntryNotReady +from homeassistant.helpers import device_registry as dr from homeassistant.helpers.typing import ConfigType from . import api from .const import ( CONF_CAT, + CONF_DEV_PATH, CONF_DIM_STEPS, CONF_HOUSECODE, CONF_OVERRIDE, @@ -74,13 +76,19 @@ async def close_insteon_connection(*args): async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: """Set up the Insteon platform.""" + hass.data[DOMAIN] = {} if DOMAIN not in config: return True - conf = config[DOMAIN] + conf = dict(config[DOMAIN]) + hass.data[DOMAIN][CONF_DEV_PATH] = conf.pop(CONF_DEV_PATH, None) + + if not conf: + return True + data, options = convert_yaml_to_config_flow(conf) + if options: - hass.data[DOMAIN] = {} hass.data[DOMAIN][OPTIONS] = options # Create a config entry with the connection data hass.async_create_task( @@ -154,23 +162,30 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: platforms = get_device_platforms(device) if ON_OFF_EVENTS in platforms: add_on_off_event_device(hass, device) + create_insteon_device(hass, device, entry.entry_id) _LOGGER.debug("Insteon device count: %s", len(devices)) register_new_device_callback(hass) async_register_services(hass) - device_registry = await hass.helpers.device_registry.async_get_registry() - device_registry.async_get_or_create( - config_entry_id=entry.entry_id, - identifiers={(DOMAIN, str(devices.modem.address))}, - manufacturer="Smart Home", - name=f"{devices.modem.description} {devices.modem.address}", - model=f"{devices.modem.model} ({devices.modem.cat!r}, 0x{devices.modem.subcat:02x})", - sw_version=f"{devices.modem.firmware:02x} Engine Version: {devices.modem.engine_version}", - ) + create_insteon_device(hass, devices.modem, entry.entry_id) api.async_load_api(hass) + await api.async_register_insteon_frontend(hass) asyncio.create_task(async_get_device_config(hass, entry)) return True + + +def create_insteon_device(hass, device, config_entry_id): + """Create an Insteon device.""" + device_registry = dr.async_get(hass) + device_registry.async_get_or_create( + config_entry_id=config_entry_id, # entry.entry_id, + identifiers={(DOMAIN, str(device.address))}, + manufacturer="SmartLabs, Inc", + name=f"{device.description} {device.address}", + model=f"{device.model} ({device.cat!r}, 0x{device.subcat:02x})", + sw_version=f"{device.firmware:02x} Engine Version: {device.engine_version}", + ) diff --git a/homeassistant/components/insteon/api/__init__.py b/homeassistant/components/insteon/api/__init__.py index 3b786a38343..71dd1a0463e 100644 --- a/homeassistant/components/insteon/api/__init__.py +++ b/homeassistant/components/insteon/api/__init__.py @@ -1,7 +1,10 @@ """Insteon API interface for the frontend.""" -from homeassistant.components import websocket_api -from homeassistant.core import callback +from insteon_frontend import get_build_id, locate_dir + +from homeassistant.components import panel_custom, websocket_api +from homeassistant.components.insteon.const import CONF_DEV_PATH, DOMAIN +from homeassistant.core import HomeAssistant, callback from .aldb import ( websocket_add_default_links, @@ -13,7 +16,11 @@ from .aldb import ( websocket_reset_aldb, websocket_write_aldb, ) -from .device import websocket_get_device +from .device import ( + websocket_add_device, + websocket_cancel_add_device, + websocket_get_device, +) from .properties import ( websocket_change_properties_record, websocket_get_properties, @@ -22,11 +29,15 @@ from .properties import ( websocket_write_properties, ) +URL_BASE = "/insteon_static" + @callback def async_load_api(hass): """Set up the web socket API.""" websocket_api.async_register_command(hass, websocket_get_device) + websocket_api.async_register_command(hass, websocket_add_device) + websocket_api.async_register_command(hass, websocket_cancel_add_device) websocket_api.async_register_command(hass, websocket_get_aldb) websocket_api.async_register_command(hass, websocket_change_aldb_record) @@ -42,3 +53,31 @@ def async_load_api(hass): websocket_api.async_register_command(hass, websocket_write_properties) websocket_api.async_register_command(hass, websocket_load_properties) websocket_api.async_register_command(hass, websocket_reset_properties) + + +def get_entrypoint(is_dev): + """Get the entry point for the frontend.""" + if is_dev: + return "entrypoint.js" + + +async def async_register_insteon_frontend(hass: HomeAssistant): + """Register the Insteon frontend configuration panel.""" + # Add to sidepanel if needed + if DOMAIN not in hass.data.get("frontend_panels", {}): + dev_path = hass.data.get(DOMAIN, {}).get(CONF_DEV_PATH) + is_dev = dev_path is not None + path = dev_path if dev_path else locate_dir() + build_id = get_build_id(is_dev) + hass.http.register_static_path(URL_BASE, path, cache_headers=not is_dev) + + await panel_custom.async_register_panel( + hass=hass, + frontend_url_path=DOMAIN, + webcomponent_name="insteon-frontend", + sidebar_title=DOMAIN.capitalize(), + sidebar_icon="mdi:power", + module_url=f"{URL_BASE}/entrypoint-{build_id}.js", + embed_iframe=True, + require_admin=True, + ) diff --git a/homeassistant/components/insteon/api/device.py b/homeassistant/components/insteon/api/device.py index 1071451876b..beef78394fa 100644 --- a/homeassistant/components/insteon/api/device.py +++ b/homeassistant/components/insteon/api/device.py @@ -1,17 +1,20 @@ """API interface to get an Insteon device.""" from pyinsteon import devices +from pyinsteon.constants import DeviceAction import voluptuous as vol from homeassistant.components import websocket_api -from homeassistant.core import HomeAssistant +from homeassistant.core import HomeAssistant, callback from ..const import ( + DEVICE_ADDRESS, DEVICE_ID, DOMAIN, HA_DEVICE_NOT_FOUND, ID, INSTEON_DEVICE_NOT_FOUND, + MULTIPLE, TYPE, ) @@ -21,6 +24,12 @@ def compute_device_name(ha_device): return ha_device.name_by_user if ha_device.name_by_user else ha_device.name +async def async_add_devices(address, multiple): + """Add one or more Insteon devices.""" + async for _ in devices.async_add_device(address=address, multiple=multiple): + pass + + def get_insteon_device_from_ha_device(ha_device): """Return the Insteon device from an HA device.""" for identifier in ha_device.identifiers: @@ -74,3 +83,58 @@ async def websocket_get_device( "aldb_status": str(device.aldb.status), } connection.send_result(msg[ID], device_info) + + +@websocket_api.websocket_command( + { + vol.Required(TYPE): "insteon/device/add", + vol.Required(MULTIPLE): bool, + vol.Optional(DEVICE_ADDRESS): str, + } +) +@websocket_api.require_admin +@websocket_api.async_response +async def websocket_add_device( + hass: HomeAssistant, + connection: websocket_api.connection.ActiveConnection, + msg: dict, +) -> None: + """Add one or more Insteon devices.""" + + @callback + def linking_complete(address: str, action: DeviceAction): + """Forward device events to websocket.""" + if action == DeviceAction.COMPLETED: + forward_data = {"type": "linking_stopped", "address": ""} + else: + return + connection.send_message(websocket_api.event_message(msg["id"], forward_data)) + + @callback + def async_cleanup() -> None: + """Remove signal listeners.""" + devices.unsubscribe(linking_complete) + + connection.subscriptions[msg["id"]] = async_cleanup + devices.subscribe(linking_complete) + + async for address in devices.async_add_device( + address=msg.get(DEVICE_ADDRESS), multiple=msg[MULTIPLE] + ): + forward_data = {"type": "device_added", "address": str(address)} + connection.send_message(websocket_api.event_message(msg["id"], forward_data)) + + connection.send_result(msg[ID]) + + +@websocket_api.websocket_command({vol.Required(TYPE): "insteon/device/add/cancel"}) +@websocket_api.require_admin +@websocket_api.async_response +async def websocket_cancel_add_device( + hass: HomeAssistant, + connection: websocket_api.connection.ActiveConnection, + msg: dict, +) -> None: + """Cancel the Insteon all-linking process.""" + await devices.async_cancel_all_linking() + connection.send_result(msg[ID]) diff --git a/homeassistant/components/insteon/api/properties.py b/homeassistant/components/insteon/api/properties.py index 6ec12a5fd89..47def71c1ab 100644 --- a/homeassistant/components/insteon/api/properties.py +++ b/homeassistant/components/insteon/api/properties.py @@ -1,17 +1,15 @@ """Property update methods and schemas.""" -from itertools import chain from pyinsteon import devices -from pyinsteon.constants import RAMP_RATES, ResponseStatus -from pyinsteon.device_types.device_base import Device -from pyinsteon.extended_property import ( - NON_TOGGLE_MASK, - NON_TOGGLE_ON_OFF_MASK, - OFF_MASK, - ON_MASK, - RAMP_RATE, +from pyinsteon.config import RADIO_BUTTON_GROUPS, RAMP_RATE_IN_SEC, get_usable_value +from pyinsteon.constants import ( + RAMP_RATES_SEC, + PropertyType, + RelayMode, + ResponseStatus, + ToggleMode, ) -from pyinsteon.utils import ramp_rate_to_seconds, seconds_to_ramp_rate +from pyinsteon.device_types.device_base import Device import voluptuous as vol import voluptuous_serialize @@ -29,19 +27,12 @@ from ..const import ( ) from .device import notify_device_not_found -TOGGLE_ON_OFF_MODE = "toggle_on_off_mode" -NON_TOGGLE_ON_MODE = "non_toggle_on_mode" -NON_TOGGLE_OFF_MODE = "non_toggle_off_mode" -RADIO_BUTTON_GROUP_PROP = "radio_button_group_" -TOGGLE_PROP = "toggle_" -RAMP_RATE_SECONDS = list(dict.fromkeys(RAMP_RATES.values())) +SHOW_ADVANCED = "show_advanced" +RAMP_RATE_SECONDS = list(dict.fromkeys(RAMP_RATES_SEC)) RAMP_RATE_SECONDS.sort() -TOGGLE_MODES = {TOGGLE_ON_OFF_MODE: 0, NON_TOGGLE_ON_MODE: 1, NON_TOGGLE_OFF_MODE: 2} -TOGGLE_MODES_SCHEMA = { - 0: TOGGLE_ON_OFF_MODE, - 1: NON_TOGGLE_ON_MODE, - 2: NON_TOGGLE_OFF_MODE, -} +RAMP_RATE_LIST = [str(seconds) for seconds in RAMP_RATE_SECONDS] +TOGGLE_MODES = [str(ToggleMode(v)).lower() for v in list(ToggleMode)] +RELAY_MODES = [str(RelayMode(v)).lower() for v in list(RelayMode)] def _bool_schema(name): @@ -52,239 +43,116 @@ def _byte_schema(name): return voluptuous_serialize.convert(vol.Schema({vol.Required(name): cv.byte}))[0] -def _ramp_rate_schema(name): +def _float_schema(name): + return voluptuous_serialize.convert(vol.Schema({vol.Required(name): float}))[0] + + +def _list_schema(name, values): return voluptuous_serialize.convert( - vol.Schema({vol.Required(name): vol.In(RAMP_RATE_SECONDS)}), + vol.Schema({vol.Required(name): vol.In(values)}), custom_serializer=cv.custom_serializer, )[0] -def get_properties(device: Device): +def _multi_select_schema(name, values): + return voluptuous_serialize.convert( + vol.Schema({vol.Optional(name): cv.multi_select(values)}), + custom_serializer=cv.custom_serializer, + )[0] + + +def _read_only_schema(name, value): + """Return a constant value schema.""" + return voluptuous_serialize.convert(vol.Schema({vol.Required(name): value}))[0] + + +def get_schema(prop, name, groups): + """Return the correct shema type.""" + if prop.is_read_only: + return _read_only_schema(name, prop.value) + if name == RAMP_RATE_IN_SEC: + return _list_schema(name, RAMP_RATE_LIST) + if name == RADIO_BUTTON_GROUPS: + button_list = {str(group): groups[group].name for group in groups if group != 1} + return _multi_select_schema(name, button_list) + if prop.value_type == bool: + return _bool_schema(name) + if prop.value_type == int: + return _byte_schema(name) + if prop.value_type == float: + return _float_schema(name) + if prop.value_type == ToggleMode: + return _list_schema(name, TOGGLE_MODES) + if prop.value_type == RelayMode: + return _list_schema(name, RELAY_MODES) + return None + + +def get_properties(device: Device, show_advanced=False): """Get the properties of an Insteon device and return the records and schema.""" properties = [] schema = {} - # Limit the properties we manage at this time. - for prop_name in device.operating_flags: - if not device.operating_flags[prop_name].is_read_only: - prop_dict, schema_dict = _get_property(device.operating_flags[prop_name]) - properties.append(prop_dict) - schema[prop_name] = schema_dict - - mask_found = False - for prop_name in device.properties: - if device.properties[prop_name].is_read_only: + for name, prop in device.configuration.items(): + if prop.is_read_only and not show_advanced: continue - if prop_name == RAMP_RATE: - rr_prop, rr_schema = _get_ramp_rate_property(device.properties[prop_name]) - properties.append(rr_prop) - schema[RAMP_RATE] = rr_schema + prop_schema = get_schema(prop, name, device.groups) + if name == "momentary_delay": + print(prop_schema) + if prop_schema is None: + continue + schema[name] = prop_schema + properties.append(property_to_dict(prop)) - elif not mask_found and "mask" in prop_name: - mask_found = True - toggle_props, toggle_schema = _get_toggle_properties(device) - properties.extend(toggle_props) - schema.update(toggle_schema) - - rb_props, rb_schema = _get_radio_button_properties(device) - properties.extend(rb_props) - schema.update(rb_schema) - else: - prop_dict, schema_dict = _get_property(device.properties[prop_name]) - properties.append(prop_dict) - schema[prop_name] = schema_dict + if show_advanced: + for name, prop in device.operating_flags.items(): + if prop.property_type != PropertyType.ADVANCED: + continue + prop_schema = get_schema(prop, name, device.groups) + if prop_schema is not None: + schema[name] = prop_schema + properties.append(property_to_dict(prop)) + for name, prop in device.properties.items(): + if prop.property_type != PropertyType.ADVANCED: + continue + prop_schema = get_schema(prop, name, device.groups) + if prop_schema is not None: + schema[name] = prop_schema + properties.append(property_to_dict(prop)) return properties, schema -def set_property(device, prop_name: str, value): - """Update a property value.""" - if isinstance(value, bool) and prop_name in device.operating_flags: - device.operating_flags[prop_name].new_value = value - - elif prop_name == RAMP_RATE: - device.properties[prop_name].new_value = seconds_to_ramp_rate(value) - - elif prop_name.startswith(RADIO_BUTTON_GROUP_PROP): - buttons = [int(button) for button in value] - rb_groups = _calc_radio_button_groups(device) - curr_group = int(prop_name[len(RADIO_BUTTON_GROUP_PROP) :]) - if len(rb_groups) > curr_group: - removed = [btn for btn in rb_groups[curr_group] if btn not in buttons] - if removed: - device.clear_radio_buttons(removed) - if buttons: - device.set_radio_buttons(buttons) - - elif prop_name.startswith(TOGGLE_PROP): - button_name = prop_name[len(TOGGLE_PROP) :] - for button in device.groups: - if device.groups[button].name == button_name: - device.set_toggle_mode(button, int(value)) - - else: - device.properties[prop_name].new_value = value - - -def _get_property(prop): +def property_to_dict(prop): """Return a property data row.""" - value, modified = _get_usable_value(prop) + value = get_usable_value(prop) + modified = value == prop.new_value + if prop.value_type in [ToggleMode, RelayMode] or prop.name == RAMP_RATE_IN_SEC: + value = str(value).lower() prop_dict = {"name": prop.name, "value": value, "modified": modified} - if isinstance(prop.value, bool): - schema = _bool_schema(prop.name) + return prop_dict + + +def update_property(device, prop_name, value): + """Update the value of a device property.""" + prop = device.configuration[prop_name] + if prop.value_type == ToggleMode: + toggle_mode = getattr(ToggleMode, value.upper()) + prop.new_value = toggle_mode + elif prop.value_type == RelayMode: + relay_mode = getattr(RelayMode, value.upper()) + prop.new_value = relay_mode else: - schema = _byte_schema(prop.name) - return prop_dict, {"name": prop.name, **schema} - - -def _get_toggle_properties(device): - """Generate the mask properties for a KPL device.""" - props = [] - schema = {} - toggle_prop = device.properties[NON_TOGGLE_MASK] - toggle_on_prop = device.properties[NON_TOGGLE_ON_OFF_MASK] - for button in device.groups: - name = f"{TOGGLE_PROP}{device.groups[button].name}" - value, modified = _toggle_button_value(toggle_prop, toggle_on_prop, button) - props.append({"name": name, "value": value, "modified": modified}) - toggle_schema = vol.Schema({vol.Required(name): vol.In(TOGGLE_MODES_SCHEMA)}) - toggle_schema_dict = voluptuous_serialize.convert( - toggle_schema, custom_serializer=cv.custom_serializer - ) - schema[name] = toggle_schema_dict[0] - return props, schema - - -def _toggle_button_value(non_toggle_prop, toggle_on_prop, button): - """Determine the toggle value of a button.""" - toggle_mask, toggle_modified = _get_usable_value(non_toggle_prop) - toggle_on_mask, toggle_on_modified = _get_usable_value(toggle_on_prop) - - bit = button - 1 - if not toggle_mask & 1 << bit: - value = 0 - else: - if toggle_on_mask & 1 << bit: - value = 1 - else: - value = 2 - - modified = False - if toggle_modified: - curr_bit = non_toggle_prop.value & 1 << bit - new_bit = non_toggle_prop.new_value & 1 << bit - modified = not curr_bit == new_bit - - if not modified and value != 0 and toggle_on_modified: - curr_bit = toggle_on_prop.value & 1 << bit - new_bit = toggle_on_prop.new_value & 1 << bit - modified = not curr_bit == new_bit - - return value, modified - - -def _get_radio_button_properties(device): - """Return the values and schema to set KPL buttons as radio buttons.""" - rb_groups = _calc_radio_button_groups(device) - props = [] - schema = {} - index = 0 - remaining_buttons = [] - - buttons_in_groups = list(chain.from_iterable(rb_groups)) - - # Identify buttons not belonging to any group - for button in device.groups: - if button not in buttons_in_groups: - remaining_buttons.append(button) - - for rb_group in rb_groups: - name = f"{RADIO_BUTTON_GROUP_PROP}{index}" - button_1 = rb_group[0] - button_str = f"_{button_1}" if button_1 != 1 else "" - on_mask = device.properties[f"{ON_MASK}{button_str}"] - off_mask = device.properties[f"{OFF_MASK}{button_str}"] - modified = on_mask.is_dirty or off_mask.is_dirty - - props.append( - { - "name": name, - "modified": modified, - "value": rb_group, - } - ) - - options = { - button: device.groups[button].name - for button in chain.from_iterable([rb_group, remaining_buttons]) - } - rb_schema = vol.Schema({vol.Optional(name): cv.multi_select(options)}) - - rb_schema_dict = voluptuous_serialize.convert( - rb_schema, custom_serializer=cv.custom_serializer - ) - schema[name] = rb_schema_dict[0] - - index += 1 - - if len(remaining_buttons) > 1: - name = f"{RADIO_BUTTON_GROUP_PROP}{index}" - - props.append( - { - "name": name, - "modified": False, - "value": [], - } - ) - - options = {button: device.groups[button].name for button in remaining_buttons} - rb_schema = vol.Schema({vol.Optional(name): cv.multi_select(options)}) - - rb_schema_dict = voluptuous_serialize.convert( - rb_schema, custom_serializer=cv.custom_serializer - ) - schema[name] = rb_schema_dict[0] - - return props, schema - - -def _calc_radio_button_groups(device): - """Return existing radio button groups.""" - rb_groups = [] - for button in device.groups: - if button not in list(chain.from_iterable(rb_groups)): - button_str = "" if button == 1 else f"_{button}" - on_mask, _ = _get_usable_value(device.properties[f"{ON_MASK}{button_str}"]) - if on_mask != 0: - rb_group = [button] - for bit in list(range(0, button - 1)) + list(range(button, 8)): - if on_mask & 1 << bit: - rb_group.append(bit + 1) - if len(rb_group) > 1: - rb_groups.append(rb_group) - return rb_groups - - -def _get_ramp_rate_property(prop): - """Return the value and schema of a ramp rate property.""" - rr_prop, _ = _get_property(prop) - rr_prop["value"] = ramp_rate_to_seconds(rr_prop["value"]) - return rr_prop, _ramp_rate_schema(prop.name) - - -def _get_usable_value(prop): - """Return the current or the modified value of a property.""" - value = prop.value if prop.new_value is None else prop.new_value - return value, prop.is_dirty + prop.new_value = value @websocket_api.websocket_command( { vol.Required(TYPE): "insteon/properties/get", vol.Required(DEVICE_ADDRESS): str, + vol.Required(SHOW_ADVANCED): bool, } ) @websocket_api.require_admin @@ -299,7 +167,7 @@ async def websocket_get_properties( notify_device_not_found(connection, msg, INSTEON_DEVICE_NOT_FOUND) return - properties, schema = get_properties(device) + properties, schema = get_properties(device, msg[SHOW_ADVANCED]) connection.send_result(msg[ID], {"properties": properties, "schema": schema}) @@ -324,7 +192,7 @@ async def websocket_change_properties_record( notify_device_not_found(connection, msg, INSTEON_DEVICE_NOT_FOUND) return - set_property(device, msg[PROPERTY_NAME], msg[PROPERTY_VALUE]) + update_property(device, msg[PROPERTY_NAME], msg[PROPERTY_VALUE]) connection.send_result(msg[ID]) @@ -346,10 +214,9 @@ async def websocket_write_properties( notify_device_not_found(connection, msg, INSTEON_DEVICE_NOT_FOUND) return - result1 = await device.async_write_op_flags() - result2 = await device.async_write_ext_properties() + result = await device.async_write_config() await devices.async_save(workdir=hass.config.config_dir) - if result1 != ResponseStatus.SUCCESS or result2 != ResponseStatus.SUCCESS: + if result != ResponseStatus.SUCCESS: connection.send_message( websocket_api.error_message( msg[ID], "write_failed", "properties not written to device" @@ -377,10 +244,9 @@ async def websocket_load_properties( notify_device_not_found(connection, msg, INSTEON_DEVICE_NOT_FOUND) return - result1 = await device.async_read_op_flags() - result2 = await device.async_read_ext_properties() + result, _ = await device.async_read_config(read_aldb=False) await devices.async_save(workdir=hass.config.config_dir) - if result1 != ResponseStatus.SUCCESS or result2 != ResponseStatus.SUCCESS: + if result != ResponseStatus.SUCCESS: connection.send_message( websocket_api.error_message( msg[ID], "load_failed", "properties not loaded from device" diff --git a/homeassistant/components/insteon/climate.py b/homeassistant/components/insteon/climate.py index e393c6eea0a..833180583e2 100644 --- a/homeassistant/components/insteon/climate.py +++ b/homeassistant/components/insteon/climate.py @@ -1,8 +1,8 @@ """Support for Insteon thermostat.""" from __future__ import annotations +from pyinsteon.config import CELSIUS from pyinsteon.constants import ThermostatMode -from pyinsteon.operating_flag import CELSIUS from homeassistant.components.climate import ClimateEntity from homeassistant.components.climate.const import ( diff --git a/homeassistant/components/insteon/const.py b/homeassistant/components/insteon/const.py index bc3eaf6234b..fb7b2387d73 100644 --- a/homeassistant/components/insteon/const.py +++ b/homeassistant/components/insteon/const.py @@ -70,6 +70,7 @@ CONF_DIM_STEPS = "dim_steps" CONF_X10_ALL_UNITS_OFF = "x10_all_units_off" CONF_X10_ALL_LIGHTS_ON = "x10_all_lights_on" CONF_X10_ALL_LIGHTS_OFF = "x10_all_lights_off" +CONF_DEV_PATH = "dev_path" PORT_HUB_V1 = 9761 PORT_HUB_V2 = 25105 @@ -172,5 +173,6 @@ PROPERTY_NAME = "name" PROPERTY_VALUE = "value" HA_DEVICE_NOT_FOUND = "ha_device_not_found" INSTEON_DEVICE_NOT_FOUND = "insteon_device_not_found" +MULTIPLE = "multiple" INSTEON_ADDR_REGEX = re.compile(r"([A-Fa-f0-9]{2}\.?[A-Fa-f0-9]{2}\.?[A-Fa-f0-9]{2})$") diff --git a/homeassistant/components/insteon/insteon_entity.py b/homeassistant/components/insteon/insteon_entity.py index d8fd9b2cbc9..60935f3f951 100644 --- a/homeassistant/components/insteon/insteon_entity.py +++ b/homeassistant/components/insteon/insteon_entity.py @@ -85,7 +85,7 @@ class InsteonEntity(Entity): """Return device information.""" return DeviceInfo( identifiers={(DOMAIN, str(self._insteon_device.address))}, - manufacturer="Smart Home", + manufacturer="SmartLabs, Inc", model=f"{self._insteon_device.model} ({self._insteon_device.cat!r}, 0x{self._insteon_device.subcat:02x})", name=f"{self._insteon_device.description} {self._insteon_device.address}", sw_version=f"{self._insteon_device.firmware:02x} Engine Version: {self._insteon_device.engine_version}", diff --git a/homeassistant/components/insteon/light.py b/homeassistant/components/insteon/light.py index 0b1fd2270e8..05ad9794042 100644 --- a/homeassistant/components/insteon/light.py +++ b/homeassistant/components/insteon/light.py @@ -1,5 +1,5 @@ """Support for Insteon lights via PowerLinc Modem.""" -from pyinsteon.extended_property import ON_LEVEL +from pyinsteon.config import ON_LEVEL from homeassistant.components.light import ( ATTR_BRIGHTNESS, diff --git a/homeassistant/components/insteon/manifest.json b/homeassistant/components/insteon/manifest.json index d9e1f1bfb18..ad5736f4d53 100644 --- a/homeassistant/components/insteon/manifest.json +++ b/homeassistant/components/insteon/manifest.json @@ -2,13 +2,17 @@ "domain": "insteon", "name": "Insteon", "documentation": "https://www.home-assistant.io/integrations/insteon", - "requirements": ["pyinsteon==1.0.13"], + "dependencies": ["http", "websocket_api"], + "requirements": [ + "pyinsteon==1.1.0b1", + "insteon-frontend-home-assistant==0.1.0" + ], "codeowners": ["@teharris1"], "dhcp": [{ "macaddress": "000EF3*" }, { "registered_devices": true }], "config_flow": true, "iot_class": "local_push", "loggers": ["pyinsteon", "pypubsub"], - "after_dependencies": ["usb"], + "after_dependencies": ["panel_custom", "usb"], "usb": [ { "vid": "10BF" diff --git a/homeassistant/components/insteon/schemas.py b/homeassistant/components/insteon/schemas.py index 09315919052..6bcde545e34 100644 --- a/homeassistant/components/insteon/schemas.py +++ b/homeassistant/components/insteon/schemas.py @@ -22,6 +22,7 @@ import homeassistant.helpers.config_validation as cv from .const import ( CONF_CAT, + CONF_DEV_PATH, CONF_DIM_STEPS, CONF_FIRMWARE, CONF_HOUSECODE, @@ -121,6 +122,7 @@ CONFIG_SCHEMA = vol.Schema( vol.Optional(CONF_X10): vol.All( cv.ensure_list_csv, [CONF_X10_SCHEMA] ), + vol.Optional(CONF_DEV_PATH): cv.string, }, extra=vol.ALLOW_EXTRA, required=True, diff --git a/homeassistant/components/insteon/utils.py b/homeassistant/components/insteon/utils.py index 1599975f462..03647559345 100644 --- a/homeassistant/components/insteon/utils.py +++ b/homeassistant/components/insteon/utils.py @@ -4,7 +4,7 @@ import logging from pyinsteon import devices from pyinsteon.address import Address -from pyinsteon.constants import ALDBStatus +from pyinsteon.constants import ALDBStatus, DeviceAction from pyinsteon.events import OFF_EVENT, OFF_FAST_EVENT, ON_EVENT, ON_FAST_EVENT from pyinsteon.managers.link_manager import ( async_enter_linking_mode, @@ -137,9 +137,10 @@ def register_new_device_callback(hass): """Register callback for new Insteon device.""" @callback - def async_new_insteon_device(address=None): + def async_new_insteon_device(address, action: DeviceAction): """Detect device from transport to be delegated to platform.""" - hass.async_create_task(async_create_new_entities(address)) + if action == DeviceAction.ADDED: + hass.async_create_task(async_create_new_entities(address)) async def async_create_new_entities(address): _LOGGER.debug( diff --git a/requirements_all.txt b/requirements_all.txt index df74fa12364..e950616865e 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -881,6 +881,9 @@ influxdb-client==1.24.0 # homeassistant.components.influxdb influxdb==5.3.1 +# homeassistant.components.insteon +insteon-frontend-home-assistant==0.1.0 + # homeassistant.components.intellifire intellifire4py==1.0.2 @@ -1544,7 +1547,7 @@ pyialarm==1.9.0 pyicloud==1.0.0 # homeassistant.components.insteon -pyinsteon==1.0.13 +pyinsteon==1.1.0b1 # homeassistant.components.intesishome pyintesishome==1.7.6 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index ec628688ad0..ccc958e2543 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -618,6 +618,9 @@ influxdb-client==1.24.0 # homeassistant.components.influxdb influxdb==5.3.1 +# homeassistant.components.insteon +insteon-frontend-home-assistant==0.1.0 + # homeassistant.components.intellifire intellifire4py==1.0.2 @@ -1026,7 +1029,7 @@ pyialarm==1.9.0 pyicloud==1.0.0 # homeassistant.components.insteon -pyinsteon==1.0.13 +pyinsteon==1.1.0b1 # homeassistant.components.ipma pyipma==2.0.5 diff --git a/tests/components/insteon/fixtures/iolinc_properties.json b/tests/components/insteon/fixtures/iolinc_properties.json new file mode 100644 index 00000000000..904ba054b7a --- /dev/null +++ b/tests/components/insteon/fixtures/iolinc_properties.json @@ -0,0 +1,18 @@ +{ + "operating_flags": { + "program_lock_on": false, + "blink_on_tx_on": true, + "relay_on_sense_on": false, + "momentary_on": true, + "momentary_on_off_trigger": false, + "x10_off": true, + "sense_sends_off": true, + "momentary_follow_sense": false + }, + "properties": { + "prescaler": 1, + "delay": 50, + "x10_house": 32, + "x10_unit": 0 + } +} diff --git a/tests/components/insteon/mock_devices.py b/tests/components/insteon/mock_devices.py index e28e25bf41b..6e6a8eccfcc 100644 --- a/tests/components/insteon/mock_devices.py +++ b/tests/components/insteon/mock_devices.py @@ -1,15 +1,20 @@ """Mock devices object to test Insteon.""" + +import asyncio from unittest.mock import AsyncMock, MagicMock from pyinsteon.address import Address from pyinsteon.constants import ALDBStatus, ResponseStatus from pyinsteon.device_types import ( DimmableLightingControl_KeypadLinc_8, - GeneralController, + GeneralController_RemoteLinc, Hub, + SensorsActuators_IOLink, SwitchedLightingControl_SwitchLinc, ) from pyinsteon.managers.saved_devices_manager import dict_to_aldb_record +from pyinsteon.topics import DEVICE_LIST_CHANGED +from pyinsteon.utils import subscribe_topic class MockSwitchLinc(SwitchedLightingControl_SwitchLinc): @@ -31,7 +36,10 @@ class MockDevices: self._connected = connected self.async_save = AsyncMock() self.add_x10_device = MagicMock() + self.async_read_config = AsyncMock() self.set_id = MagicMock() + self.async_add_device_called_with = {} + self.async_cancel_all_linking = AsyncMock() def __getitem__(self, address): """Return a a device from the device address.""" @@ -56,18 +64,24 @@ class MockDevices: addr1 = Address("11.11.11") addr2 = Address("22.22.22") addr3 = Address("33.33.33") + addr4 = Address("44.44.44") self._devices[addr0] = Hub(addr0, 0x03, 0x00, 0x00, "Hub AA.AA.AA", "0") self._devices[addr1] = MockSwitchLinc( addr1, 0x02, 0x00, 0x00, "Device 11.11.11", "1" ) - self._devices[addr2] = GeneralController( + self._devices[addr2] = GeneralController_RemoteLinc( addr2, 0x00, 0x00, 0x00, "Device 22.22.22", "2" ) self._devices[addr3] = DimmableLightingControl_KeypadLinc_8( addr3, 0x02, 0x00, 0x00, "Device 33.33.33", "3" ) + self._devices[addr4] = SensorsActuators_IOLink( + addr4, 0x07, 0x00, 0x00, "Device 44.44.44", "4" + ) - for device in [self._devices[addr] for addr in [addr1, addr2, addr3]]: + for device in [ + self._devices[addr] for addr in [addr1, addr2, addr3, addr4] + ]: device.async_read_config = AsyncMock() device.aldb.async_write = AsyncMock() device.aldb.async_load = AsyncMock() @@ -85,7 +99,7 @@ class MockDevices: return_value=ResponseStatus.SUCCESS ) - for device in [self._devices[addr] for addr in [addr2, addr3]]: + for device in [self._devices[addr] for addr in [addr2, addr3, addr4]]: device.async_status = AsyncMock() self._devices[addr1].async_status = AsyncMock(side_effect=AttributeError) self._devices[addr0].aldb.async_load = AsyncMock() @@ -104,6 +118,7 @@ class MockDevices: ) self.modem = self._devices[addr0] + self.modem.async_read_config = AsyncMock() def fill_aldb(self, address, records): """Fill the All-Link Database for a device.""" @@ -126,3 +141,18 @@ class MockDevices: value = properties[flag] if device.properties.get(flag): device.properties[flag].load(value) + + async def async_add_device(self, address=None, multiple=False): + """Mock the async_add_device method.""" + self.async_add_device_called_with = {"address": address, "multiple": multiple} + if multiple: + yield "aa.bb.cc" + await asyncio.sleep(0.01) + yield "bb.cc.dd" + if address: + yield address + await asyncio.sleep(0.01) + + def subscribe(self, listener): + """Mock the subscribe function.""" + subscribe_topic(listener, DEVICE_LIST_CHANGED) diff --git a/tests/components/insteon/test_api_device.py b/tests/components/insteon/test_api_device.py index 528d44cc691..49588c6ea8f 100644 --- a/tests/components/insteon/test_api_device.py +++ b/tests/components/insteon/test_api_device.py @@ -1,6 +1,11 @@ """Test the device level APIs.""" +import asyncio from unittest.mock import patch +from pyinsteon.constants import DeviceAction +from pyinsteon.topics import DEVICE_LIST_CHANGED +from pyinsteon.utils import publish_topic + from homeassistant.components import insteon from homeassistant.components.insteon.api import async_load_api from homeassistant.components.insteon.api.device import ( @@ -11,7 +16,7 @@ from homeassistant.components.insteon.api.device import ( TYPE, async_device_name, ) -from homeassistant.components.insteon.const import DOMAIN +from homeassistant.components.insteon.const import DOMAIN, MULTIPLE from homeassistant.helpers.device_registry import async_get_registry from .const import MOCK_USER_INPUT_PLM @@ -137,3 +142,47 @@ async def test_get_ha_device_name(hass, hass_ws_client): # Test no HA or Insteon device name = await async_device_name(device_reg, "BB.BB.BB") assert name == "" + + +async def test_add_device_api(hass, hass_ws_client): + """Test adding an Insteon device.""" + + ws_client, devices, _, _ = await _async_setup(hass, hass_ws_client) + with patch.object(insteon.api.device, "devices", devices): + await ws_client.send_json({ID: 2, TYPE: "insteon/device/add", MULTIPLE: True}) + + await asyncio.sleep(0.01) + assert devices.async_add_device_called_with.get("address") is None + assert devices.async_add_device_called_with["multiple"] is True + + msg = await ws_client.receive_json() + assert msg["event"]["type"] == "device_added" + assert msg["event"]["address"] == "aa.bb.cc" + + msg = await ws_client.receive_json() + assert msg["event"]["type"] == "device_added" + assert msg["event"]["address"] == "bb.cc.dd" + + publish_topic( + DEVICE_LIST_CHANGED, + address=None, + action=DeviceAction.COMPLETED, + ) + msg = await ws_client.receive_json() + assert msg["event"]["type"] == "linking_stopped" + + +async def test_cancel_add_device(hass, hass_ws_client): + """Test cancelling adding of a new device.""" + + ws_client, devices, _, _ = await _async_setup(hass, hass_ws_client) + + with patch.object(insteon.api.aldb, "devices", devices): + await ws_client.send_json( + { + ID: 2, + TYPE: "insteon/device/add/cancel", + } + ) + msg = await ws_client.receive_json() + assert msg["success"] diff --git a/tests/components/insteon/test_api_properties.py b/tests/components/insteon/test_api_properties.py index 683e687ec85..7211402e343 100644 --- a/tests/components/insteon/test_api_properties.py +++ b/tests/components/insteon/test_api_properties.py @@ -1,8 +1,11 @@ """Test the Insteon properties APIs.""" import json -from unittest.mock import patch +from unittest.mock import AsyncMock, patch +from pyinsteon.config import MOMENTARY_DELAY, RELAY_MODE, TOGGLE_BUTTON +from pyinsteon.config.extended_property import ExtendedProperty +from pyinsteon.constants import RelayMode, ToggleMode import pytest from homeassistant.components import insteon @@ -11,19 +14,12 @@ from homeassistant.components.insteon.api.device import INSTEON_DEVICE_NOT_FOUND from homeassistant.components.insteon.api.properties import ( DEVICE_ADDRESS, ID, - NON_TOGGLE_MASK, - NON_TOGGLE_OFF_MODE, - NON_TOGGLE_ON_MODE, - NON_TOGGLE_ON_OFF_MASK, PROPERTY_NAME, PROPERTY_VALUE, - RADIO_BUTTON_GROUP_PROP, - TOGGLE_MODES, - TOGGLE_ON_OFF_MODE, - TOGGLE_PROP, + RADIO_BUTTON_GROUPS, + RAMP_RATE_IN_SEC, + SHOW_ADVANCED, TYPE, - _get_radio_button_properties, - _get_toggle_properties, ) from .mock_devices import MockDevices @@ -31,43 +27,172 @@ from .mock_devices import MockDevices from tests.common import load_fixture -@pytest.fixture(name="properties_data", scope="session") -def aldb_data_fixture(): +@pytest.fixture(name="kpl_properties_data", scope="session") +def kpl_properties_data_fixture(): """Load the controller state fixture data.""" return json.loads(load_fixture("insteon/kpl_properties.json")) -async def _setup(hass, hass_ws_client, properties_data): +@pytest.fixture(name="iolinc_properties_data", scope="session") +def iolinc_properties_data_fixture(): + """Load the controller state fixture data.""" + return json.loads(load_fixture("insteon/iolinc_properties.json")) + + +async def _setup(hass, hass_ws_client, address, properties_data): """Set up tests.""" ws_client = await hass_ws_client(hass) devices = MockDevices() await devices.async_load() - devices.fill_properties("33.33.33", properties_data) + devices.fill_properties(address, properties_data) async_load_api(hass) return ws_client, devices -async def test_get_properties(hass, hass_ws_client, properties_data): +async def test_get_properties( + hass, hass_ws_client, kpl_properties_data, iolinc_properties_data +): """Test getting an Insteon device's properties.""" - ws_client, devices = await _setup(hass, hass_ws_client, properties_data) - - with patch.object(insteon.api.properties, "devices", devices): - await ws_client.send_json( - {ID: 2, TYPE: "insteon/properties/get", DEVICE_ADDRESS: "33.33.33"} - ) - msg = await ws_client.receive_json() - assert msg["success"] - assert len(msg["result"]["properties"]) == 54 - - -async def test_change_operating_flag(hass, hass_ws_client, properties_data): - """Test changing an Insteon device's properties.""" - ws_client, devices = await _setup(hass, hass_ws_client, properties_data) + ws_client, devices = await _setup( + hass, hass_ws_client, "33.33.33", kpl_properties_data + ) + devices.fill_properties("44.44.44", iolinc_properties_data) with patch.object(insteon.api.properties, "devices", devices): await ws_client.send_json( { ID: 2, + TYPE: "insteon/properties/get", + DEVICE_ADDRESS: "33.33.33", + SHOW_ADVANCED: False, + } + ) + msg = await ws_client.receive_json() + assert msg["success"] + assert len(msg["result"]["properties"]) == 18 + + await ws_client.send_json( + { + ID: 3, + TYPE: "insteon/properties/get", + DEVICE_ADDRESS: "44.44.44", + SHOW_ADVANCED: False, + } + ) + msg = await ws_client.receive_json() + assert msg["success"] + assert len(msg["result"]["properties"]) == 6 + + await ws_client.send_json( + { + ID: 4, + TYPE: "insteon/properties/get", + DEVICE_ADDRESS: "33.33.33", + SHOW_ADVANCED: True, + } + ) + msg = await ws_client.receive_json() + assert msg["success"] + assert len(msg["result"]["properties"]) == 69 + + await ws_client.send_json( + { + ID: 5, + TYPE: "insteon/properties/get", + DEVICE_ADDRESS: "44.44.44", + SHOW_ADVANCED: True, + } + ) + msg = await ws_client.receive_json() + assert msg["success"] + assert len(msg["result"]["properties"]) == 14 + + +async def test_get_read_only_properties(hass, hass_ws_client, iolinc_properties_data): + """Test getting an Insteon device's properties.""" + mock_read_only = ExtendedProperty( + "44.44.44", "mock_read_only", bool, is_read_only=True + ) + mock_read_only.load(False) + + ws_client, devices = await _setup( + hass, hass_ws_client, "44.44.44", iolinc_properties_data + ) + device = devices["44.44.44"] + device.configuration["mock_read_only"] = mock_read_only + with patch.object(insteon.api.properties, "devices", devices): + await ws_client.send_json( + { + ID: 2, + TYPE: "insteon/properties/get", + DEVICE_ADDRESS: "44.44.44", + SHOW_ADVANCED: False, + } + ) + msg = await ws_client.receive_json() + assert msg["success"] + assert len(msg["result"]["properties"]) == 6 + await ws_client.send_json( + { + ID: 3, + TYPE: "insteon/properties/get", + DEVICE_ADDRESS: "44.44.44", + SHOW_ADVANCED: True, + } + ) + msg = await ws_client.receive_json() + assert msg["success"] + assert len(msg["result"]["properties"]) == 15 + + +async def test_get_unknown_properties(hass, hass_ws_client, iolinc_properties_data): + """Test getting an Insteon device's properties.""" + + class UnknownType: + """Mock unknown data type.""" + + mock_unknown = ExtendedProperty("44.44.44", "mock_unknown", UnknownType) + + ws_client, devices = await _setup( + hass, hass_ws_client, "44.44.44", iolinc_properties_data + ) + device = devices["44.44.44"] + device.configuration["mock_unknown"] = mock_unknown + with patch.object(insteon.api.properties, "devices", devices): + await ws_client.send_json( + { + ID: 2, + TYPE: "insteon/properties/get", + DEVICE_ADDRESS: "44.44.44", + SHOW_ADVANCED: False, + } + ) + msg = await ws_client.receive_json() + assert msg["success"] + assert len(msg["result"]["properties"]) == 6 + await ws_client.send_json( + { + ID: 3, + TYPE: "insteon/properties/get", + DEVICE_ADDRESS: "44.44.44", + SHOW_ADVANCED: True, + } + ) + msg = await ws_client.receive_json() + assert msg["success"] + assert len(msg["result"]["properties"]) == 14 + + +async def test_change_bool_property(hass, hass_ws_client, kpl_properties_data): + """Test changing a bool type properties.""" + ws_client, devices = await _setup( + hass, hass_ws_client, "33.33.33", kpl_properties_data + ) + + with patch.object(insteon.api.properties, "devices", devices): + await ws_client.send_json( + { + ID: 3, TYPE: "insteon/properties/change", DEVICE_ADDRESS: "33.33.33", PROPERTY_NAME: "led_off", @@ -79,29 +204,33 @@ async def test_change_operating_flag(hass, hass_ws_client, properties_data): assert devices["33.33.33"].operating_flags["led_off"].is_dirty -async def test_change_property(hass, hass_ws_client, properties_data): - """Test changing an Insteon device's properties.""" - ws_client, devices = await _setup(hass, hass_ws_client, properties_data) +async def test_change_int_property(hass, hass_ws_client, kpl_properties_data): + """Test changing a int type properties.""" + ws_client, devices = await _setup( + hass, hass_ws_client, "33.33.33", kpl_properties_data + ) with patch.object(insteon.api.properties, "devices", devices): await ws_client.send_json( { - ID: 2, + ID: 4, TYPE: "insteon/properties/change", DEVICE_ADDRESS: "33.33.33", - PROPERTY_NAME: "on_mask", + PROPERTY_NAME: "led_dimming", PROPERTY_VALUE: 100, } ) msg = await ws_client.receive_json() assert msg["success"] - assert devices["33.33.33"].properties["on_mask"].new_value == 100 - assert devices["33.33.33"].properties["on_mask"].is_dirty + assert devices["33.33.33"].properties["led_dimming"].new_value == 100 + assert devices["33.33.33"].properties["led_dimming"].is_dirty -async def test_change_ramp_rate_property(hass, hass_ws_client, properties_data): - """Test changing an Insteon device's properties.""" - ws_client, devices = await _setup(hass, hass_ws_client, properties_data) +async def test_change_ramp_rate_property(hass, hass_ws_client, kpl_properties_data): + """Test changing an Insteon device's ramp rate properties.""" + ws_client, devices = await _setup( + hass, hass_ws_client, "33.33.33", kpl_properties_data + ) with patch.object(insteon.api.properties, "devices", devices): await ws_client.send_json( @@ -109,7 +238,7 @@ async def test_change_ramp_rate_property(hass, hass_ws_client, properties_data): ID: 2, TYPE: "insteon/properties/change", DEVICE_ADDRESS: "33.33.33", - PROPERTY_NAME: "ramp_rate", + PROPERTY_NAME: RAMP_RATE_IN_SEC, PROPERTY_VALUE: 4.5, } ) @@ -119,208 +248,126 @@ async def test_change_ramp_rate_property(hass, hass_ws_client, properties_data): assert devices["33.33.33"].properties["ramp_rate"].is_dirty -async def test_change_radio_button_group(hass, hass_ws_client, properties_data): +async def test_change_radio_button_group(hass, hass_ws_client, kpl_properties_data): """Test changing an Insteon device's properties.""" - ws_client, devices = await _setup(hass, hass_ws_client, properties_data) - rb_props, schema = _get_radio_button_properties(devices["33.33.33"]) + ws_client, devices = await _setup( + hass, hass_ws_client, "33.33.33", kpl_properties_data + ) + rb_groups = devices["33.33.33"].configuration[RADIO_BUTTON_GROUPS] # Make sure the baseline is correct - assert rb_props[0]["name"] == f"{RADIO_BUTTON_GROUP_PROP}0" - assert rb_props[0]["value"] == [4, 5] - assert rb_props[1]["value"] == [7, 8] - assert rb_props[2]["value"] == [] - assert schema[f"{RADIO_BUTTON_GROUP_PROP}0"]["options"].get(1) - assert schema[f"{RADIO_BUTTON_GROUP_PROP}1"]["options"].get(1) - assert devices["33.33.33"].properties["on_mask"].value == 0 - assert devices["33.33.33"].properties["off_mask"].value == 0 - assert not devices["33.33.33"].properties["on_mask"].is_dirty - assert not devices["33.33.33"].properties["off_mask"].is_dirty + assert rb_groups.value[0] == [4, 5] + assert rb_groups.value[1] == [7, 8] # Add button 1 to the group - rb_props[0]["value"].append(1) + new_groups_1 = [[1, 4, 5], [7, 8]] with patch.object(insteon.api.properties, "devices", devices): await ws_client.send_json( { ID: 2, TYPE: "insteon/properties/change", DEVICE_ADDRESS: "33.33.33", - PROPERTY_NAME: f"{RADIO_BUTTON_GROUP_PROP}0", - PROPERTY_VALUE: rb_props[0]["value"], + PROPERTY_NAME: RADIO_BUTTON_GROUPS, + PROPERTY_VALUE: new_groups_1, } ) msg = await ws_client.receive_json() assert msg["success"] + assert rb_groups.new_value[0] == [1, 4, 5] + assert rb_groups.new_value[1] == [7, 8] - new_rb_props, _ = _get_radio_button_properties(devices["33.33.33"]) - assert 1 in new_rb_props[0]["value"] - assert 4 in new_rb_props[0]["value"] - assert 5 in new_rb_props[0]["value"] - assert schema[f"{RADIO_BUTTON_GROUP_PROP}0"]["options"].get(1) - assert schema[f"{RADIO_BUTTON_GROUP_PROP}1"]["options"].get(1) - - assert devices["33.33.33"].properties["on_mask"].new_value == 0x18 - assert devices["33.33.33"].properties["off_mask"].new_value == 0x18 - assert devices["33.33.33"].properties["on_mask"].is_dirty - assert devices["33.33.33"].properties["off_mask"].is_dirty - - # Remove button 5 - rb_props[0]["value"].remove(5) + new_groups_2 = [[1, 4], [7, 8]] await ws_client.send_json( { ID: 3, TYPE: "insteon/properties/change", DEVICE_ADDRESS: "33.33.33", - PROPERTY_NAME: f"{RADIO_BUTTON_GROUP_PROP}0", - PROPERTY_VALUE: rb_props[0]["value"], + PROPERTY_NAME: RADIO_BUTTON_GROUPS, + PROPERTY_VALUE: new_groups_2, } ) msg = await ws_client.receive_json() assert msg["success"] - - new_rb_props, _ = _get_radio_button_properties(devices["33.33.33"]) - assert 1 in new_rb_props[0]["value"] - assert 4 in new_rb_props[0]["value"] - assert 5 not in new_rb_props[0]["value"] - assert schema[f"{RADIO_BUTTON_GROUP_PROP}0"]["options"].get(1) - assert schema[f"{RADIO_BUTTON_GROUP_PROP}1"]["options"].get(1) - - assert devices["33.33.33"].properties["on_mask"].new_value == 0x08 - assert devices["33.33.33"].properties["off_mask"].new_value == 0x08 - assert devices["33.33.33"].properties["on_mask"].is_dirty - assert devices["33.33.33"].properties["off_mask"].is_dirty - - # Remove button group 1 - rb_props[1]["value"] = [] - await ws_client.send_json( - { - ID: 5, - TYPE: "insteon/properties/change", - DEVICE_ADDRESS: "33.33.33", - PROPERTY_NAME: f"{RADIO_BUTTON_GROUP_PROP}1", - PROPERTY_VALUE: rb_props[1]["value"], - } - ) - msg = await ws_client.receive_json() - assert msg["success"] - - new_rb_props, _ = _get_radio_button_properties(devices["33.33.33"]) - assert len(new_rb_props) == 2 - assert new_rb_props[0]["value"] == [1, 4] - assert new_rb_props[1]["value"] == [] + assert rb_groups.new_value[0] == [1, 4] + assert rb_groups.new_value[1] == [7, 8] -async def test_create_radio_button_group(hass, hass_ws_client, properties_data): - """Test changing an Insteon device's properties.""" - ws_client, devices = await _setup(hass, hass_ws_client, properties_data) - rb_props, _ = _get_radio_button_properties(devices["33.33.33"]) - - # Make sure the baseline is correct - assert len(rb_props) == 3 - - rb_props[0]["value"].append("1") - - with patch.object(insteon.api.properties, "devices", devices): - await ws_client.send_json( - { - ID: 2, - TYPE: "insteon/properties/change", - DEVICE_ADDRESS: "33.33.33", - PROPERTY_NAME: f"{RADIO_BUTTON_GROUP_PROP}2", - PROPERTY_VALUE: ["1", "3"], - } - ) - msg = await ws_client.receive_json() - assert msg["success"] - - new_rb_props, new_schema = _get_radio_button_properties(devices["33.33.33"]) - assert len(new_rb_props) == 4 - assert 1 in new_rb_props[0]["value"] - assert new_schema[f"{RADIO_BUTTON_GROUP_PROP}0"]["options"].get(1) - assert not new_schema[f"{RADIO_BUTTON_GROUP_PROP}1"]["options"].get(1) - - assert devices["33.33.33"].properties["on_mask"].new_value == 4 - assert devices["33.33.33"].properties["off_mask"].new_value == 4 - assert devices["33.33.33"].properties["on_mask"].is_dirty - assert devices["33.33.33"].properties["off_mask"].is_dirty - - -async def test_change_toggle_property(hass, hass_ws_client, properties_data): +async def test_change_toggle_property(hass, hass_ws_client, kpl_properties_data): """Update a button's toggle mode.""" - ws_client, devices = await _setup(hass, hass_ws_client, properties_data) + ws_client, devices = await _setup( + hass, hass_ws_client, "33.33.33", kpl_properties_data + ) device = devices["33.33.33"] - toggle_props, _ = _get_toggle_properties(devices["33.33.33"]) - - # Make sure the baseline is correct - assert toggle_props[0]["name"] == f"{TOGGLE_PROP}{device.groups[1].name}" - assert toggle_props[0]["value"] == TOGGLE_MODES[TOGGLE_ON_OFF_MODE] - assert toggle_props[1]["value"] == TOGGLE_MODES[NON_TOGGLE_ON_MODE] - assert device.properties[NON_TOGGLE_MASK].value == 2 - assert device.properties[NON_TOGGLE_ON_OFF_MASK].value == 2 - assert not device.properties[NON_TOGGLE_MASK].is_dirty - assert not device.properties[NON_TOGGLE_ON_OFF_MASK].is_dirty - + prop_name = f"{TOGGLE_BUTTON}_c" + toggle_prop = device.configuration[prop_name] + assert toggle_prop.value == ToggleMode.TOGGLE with patch.object(insteon.api.properties, "devices", devices): await ws_client.send_json( { ID: 2, TYPE: "insteon/properties/change", DEVICE_ADDRESS: "33.33.33", - PROPERTY_NAME: toggle_props[0]["name"], - PROPERTY_VALUE: 1, + PROPERTY_NAME: prop_name, + PROPERTY_VALUE: str(ToggleMode.ON_ONLY).lower(), } ) msg = await ws_client.receive_json() assert msg["success"] + assert toggle_prop.new_value == ToggleMode.ON_ONLY - new_toggle_props, _ = _get_toggle_properties(devices["33.33.33"]) - assert new_toggle_props[0]["value"] == TOGGLE_MODES[NON_TOGGLE_ON_MODE] - assert device.properties[NON_TOGGLE_MASK].new_value == 3 - assert device.properties[NON_TOGGLE_ON_OFF_MASK].new_value == 3 - assert device.properties[NON_TOGGLE_MASK].is_dirty - assert device.properties[NON_TOGGLE_ON_OFF_MASK].is_dirty +async def test_change_relay_mode(hass, hass_ws_client, iolinc_properties_data): + """Update a device's relay mode.""" + ws_client, devices = await _setup( + hass, hass_ws_client, "44.44.44", iolinc_properties_data + ) + device = devices["44.44.44"] + relay_prop = device.configuration[RELAY_MODE] + assert relay_prop.value == RelayMode.MOMENTARY_A + with patch.object(insteon.api.properties, "devices", devices): await ws_client.send_json( { - ID: 3, + ID: 2, TYPE: "insteon/properties/change", - DEVICE_ADDRESS: "33.33.33", - PROPERTY_NAME: toggle_props[0]["name"], - PROPERTY_VALUE: 2, + DEVICE_ADDRESS: "44.44.44", + PROPERTY_NAME: RELAY_MODE, + PROPERTY_VALUE: str(RelayMode.LATCHING).lower(), } ) msg = await ws_client.receive_json() assert msg["success"] + assert relay_prop.new_value == RelayMode.LATCHING - new_toggle_props, _ = _get_toggle_properties(devices["33.33.33"]) - assert new_toggle_props[0]["value"] == TOGGLE_MODES[NON_TOGGLE_OFF_MODE] - assert device.properties[NON_TOGGLE_MASK].new_value == 3 - assert device.properties[NON_TOGGLE_ON_OFF_MASK].new_value is None - assert device.properties[NON_TOGGLE_MASK].is_dirty - assert not device.properties[NON_TOGGLE_ON_OFF_MASK].is_dirty +async def test_change_float_property(hass, hass_ws_client, iolinc_properties_data): + """Update a float type property.""" + ws_client, devices = await _setup( + hass, hass_ws_client, "44.44.44", iolinc_properties_data + ) + device = devices["44.44.44"] + delay_prop = device.configuration[MOMENTARY_DELAY] + delay_prop.load(0) + with patch.object(insteon.api.properties, "devices", devices): await ws_client.send_json( { - ID: 4, + ID: 2, TYPE: "insteon/properties/change", - DEVICE_ADDRESS: "33.33.33", - PROPERTY_NAME: toggle_props[1]["name"], - PROPERTY_VALUE: 0, + DEVICE_ADDRESS: "44.44.44", + PROPERTY_NAME: MOMENTARY_DELAY, + PROPERTY_VALUE: 1.8, } ) msg = await ws_client.receive_json() assert msg["success"] - new_toggle_props, _ = _get_toggle_properties(devices["33.33.33"]) - assert new_toggle_props[1]["value"] == TOGGLE_MODES[TOGGLE_ON_OFF_MODE] - assert device.properties[NON_TOGGLE_MASK].new_value == 1 - assert device.properties[NON_TOGGLE_ON_OFF_MASK].new_value == 0 - assert device.properties[NON_TOGGLE_MASK].is_dirty - assert device.properties[NON_TOGGLE_ON_OFF_MASK].is_dirty + assert delay_prop.new_value == 1.8 -async def test_write_properties(hass, hass_ws_client, properties_data): +async def test_write_properties(hass, hass_ws_client, kpl_properties_data): """Test getting an Insteon device's properties.""" - ws_client, devices = await _setup(hass, hass_ws_client, properties_data) + ws_client, devices = await _setup( + hass, hass_ws_client, "33.33.33", kpl_properties_data + ) with patch.object(insteon.api.properties, "devices", devices): await ws_client.send_json( @@ -332,9 +379,11 @@ async def test_write_properties(hass, hass_ws_client, properties_data): assert devices["33.33.33"].async_write_ext_properties.call_count == 1 -async def test_write_properties_failure(hass, hass_ws_client, properties_data): +async def test_write_properties_failure(hass, hass_ws_client, kpl_properties_data): """Test getting an Insteon device's properties.""" - ws_client, devices = await _setup(hass, hass_ws_client, properties_data) + ws_client, devices = await _setup( + hass, hass_ws_client, "33.33.33", kpl_properties_data + ) with patch.object(insteon.api.properties, "devices", devices): await ws_client.send_json( @@ -345,39 +394,48 @@ async def test_write_properties_failure(hass, hass_ws_client, properties_data): assert msg["error"]["code"] == "write_failed" -async def test_load_properties(hass, hass_ws_client, properties_data): +async def test_load_properties(hass, hass_ws_client, kpl_properties_data): """Test getting an Insteon device's properties.""" - ws_client, devices = await _setup(hass, hass_ws_client, properties_data) + ws_client, devices = await _setup( + hass, hass_ws_client, "33.33.33", kpl_properties_data + ) + device = devices["33.33.33"] + device.async_read_config = AsyncMock(return_value=(1, 1)) with patch.object(insteon.api.properties, "devices", devices): await ws_client.send_json( {ID: 2, TYPE: "insteon/properties/load", DEVICE_ADDRESS: "33.33.33"} ) msg = await ws_client.receive_json() assert msg["success"] - assert devices["33.33.33"].async_read_op_flags.call_count == 1 - assert devices["33.33.33"].async_read_ext_properties.call_count == 1 + assert devices["33.33.33"].async_read_config.call_count == 1 -async def test_load_properties_failure(hass, hass_ws_client, properties_data): +async def test_load_properties_failure(hass, hass_ws_client, kpl_properties_data): """Test getting an Insteon device's properties.""" - ws_client, devices = await _setup(hass, hass_ws_client, properties_data) + ws_client, devices = await _setup( + hass, hass_ws_client, "33.33.33", kpl_properties_data + ) + device = devices["33.33.33"] + device.async_read_config = AsyncMock(return_value=(0, 0)) with patch.object(insteon.api.properties, "devices", devices): await ws_client.send_json( - {ID: 2, TYPE: "insteon/properties/load", DEVICE_ADDRESS: "22.22.22"} + {ID: 2, TYPE: "insteon/properties/load", DEVICE_ADDRESS: "33.33.33"} ) msg = await ws_client.receive_json() assert not msg["success"] assert msg["error"]["code"] == "load_failed" -async def test_reset_properties(hass, hass_ws_client, properties_data): +async def test_reset_properties(hass, hass_ws_client, kpl_properties_data): """Test getting an Insteon device's properties.""" - ws_client, devices = await _setup(hass, hass_ws_client, properties_data) + ws_client, devices = await _setup( + hass, hass_ws_client, "33.33.33", kpl_properties_data + ) device = devices["33.33.33"] - device.operating_flags["led_off"].new_value = True + device.configuration["led_off"].new_value = True device.properties["on_mask"].new_value = 100 assert device.operating_flags["led_off"].is_dirty assert device.properties["on_mask"].is_dirty @@ -391,20 +449,23 @@ async def test_reset_properties(hass, hass_ws_client, properties_data): assert not device.properties["on_mask"].is_dirty -async def test_bad_address(hass, hass_ws_client, properties_data): +async def test_bad_address(hass, hass_ws_client, kpl_properties_data): """Test for a bad Insteon address.""" - ws_client, _ = await _setup(hass, hass_ws_client, properties_data) + ws_client, devices = await _setup( + hass, hass_ws_client, "33.33.33", kpl_properties_data + ) ws_id = 0 for call in ["get", "write", "load", "reset"]: ws_id += 1 - await ws_client.send_json( - { - ID: ws_id, - TYPE: f"insteon/properties/{call}", - DEVICE_ADDRESS: "99.99.99", - } - ) + params = { + ID: ws_id, + TYPE: f"insteon/properties/{call}", + DEVICE_ADDRESS: "99.99.99", + } + if call == "get": + params[SHOW_ADVANCED] = False + await ws_client.send_json(params) msg = await ws_client.receive_json() assert not msg["success"] assert msg["error"]["message"] == INSTEON_DEVICE_NOT_FOUND diff --git a/tests/components/insteon/test_config_flow.py b/tests/components/insteon/test_config_flow.py index ce49f9df816..878b540b721 100644 --- a/tests/components/insteon/test_config_flow.py +++ b/tests/components/insteon/test_config_flow.py @@ -2,10 +2,8 @@ from unittest.mock import patch -import voluptuous_serialize - from homeassistant import config_entries, data_entry_flow -from homeassistant.components import dhcp, usb +from homeassistant.components import usb from homeassistant.components.insteon.config_flow import ( HUB1, HUB2, @@ -39,7 +37,6 @@ from homeassistant.const import ( CONF_USERNAME, ) from homeassistant.core import HomeAssistant -import homeassistant.helpers.config_validation as cv from .const import ( MOCK_HOSTNAME, @@ -651,48 +648,3 @@ async def test_discovery_via_usb_already_setup(hass): assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT assert result["reason"] == "single_instance_allowed" - - -async def test_discovery_via_dhcp_hubv1(hass): - """Test usb flow.""" - await _test_dhcp(hass, HUB1) - - -async def test_discovery_via_dhcp_hubv2(hass): - """Test usb flow.""" - await _test_dhcp(hass, HUB2) - - -async def _test_dhcp(hass, modem_type): - """Test the dhcp discovery for a moddem type.""" - discovery_info = dhcp.DhcpServiceInfo( - ip="11.22.33.44", hostname="", macaddress="00:0e:f3:aa:bb:cc" - ) - result = await hass.config_entries.flow.async_init( - "insteon", - context={"source": config_entries.SOURCE_DHCP}, - data=discovery_info, - ) - await hass.async_block_till_done() - assert result["type"] == data_entry_flow.RESULT_TYPE_FORM - assert result["step_id"] == "user" - - with patch("homeassistant.components.insteon.config_flow.async_connect"), patch( - "homeassistant.components.insteon.async_setup_entry", return_value=True - ): - result2 = await hass.config_entries.flow.async_configure( - result["flow_id"], user_input={"modem_type": modem_type} - ) - await hass.async_block_till_done() - - assert result2["type"] == data_entry_flow.RESULT_TYPE_FORM - assert result["step_id"] == "user" - - schema = voluptuous_serialize.convert( - result2["data_schema"], - custom_serializer=cv.custom_serializer, - ) - for field in schema: - if field["name"] == "host": - assert field.get("default") == "11.22.33.44" - break diff --git a/tests/components/insteon/test_init.py b/tests/components/insteon/test_init.py index ecd3dfc5620..eb821f15cb5 100644 --- a/tests/components/insteon/test_init.py +++ b/tests/components/insteon/test_init.py @@ -7,6 +7,7 @@ from pyinsteon.address import Address from homeassistant.components import insteon from homeassistant.components.insteon.const import ( CONF_CAT, + CONF_DEV_PATH, CONF_OVERRIDE, CONF_SUBCAT, CONF_X10, @@ -222,3 +223,24 @@ async def test_setup_entry_failed_connection(hass: HomeAssistant, caplog): {}, ) assert "Could not connect to Insteon modem" in caplog.text + + +async def test_import_frontend_dev_url(hass: HomeAssistant): + """Test importing a dev_url config entry.""" + config = {} + config[DOMAIN] = {CONF_DEV_PATH: "/some/path"} + + with patch.object( + insteon, "async_connect", new=mock_successful_connection + ), patch.object(insteon, "close_insteon_connection"), patch.object( + insteon, "devices", new=MockDevices() + ), patch( + PATCH_CONNECTION, new=mock_successful_connection + ): + assert await async_setup_component( + hass, + insteon.DOMAIN, + config, + ) + await hass.async_block_till_done() + await asyncio.sleep(0.01) From 250a2aa260cf840f8cfbc45fbdf0607066aa3947 Mon Sep 17 00:00:00 2001 From: jjlawren Date: Wed, 27 Apr 2022 11:59:05 -0500 Subject: [PATCH 017/151] Use standard attribute for Sonos group members (#70924) --- homeassistant/components/sonos/media_player.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/sonos/media_player.py b/homeassistant/components/sonos/media_player.py index 4b4dc99ad71..30fdb28b02f 100644 --- a/homeassistant/components/sonos/media_player.py +++ b/homeassistant/components/sonos/media_player.py @@ -76,8 +76,6 @@ REPEAT_TO_SONOS = { SONOS_TO_REPEAT = {meaning: mode for mode, meaning in REPEAT_TO_SONOS.items()} -ATTR_SONOS_GROUP = "sonos_group" - UPNP_ERRORS_TO_IGNORE = ["701", "711", "712"] SERVICE_JOIN = "join" @@ -265,6 +263,11 @@ class SonosMediaPlayerEntity(SonosEntity, MediaPlayerEntity): """Return the current coordinator SonosSpeaker.""" return self.speaker.coordinator or self.speaker + @property + def group_members(self) -> list[str] | None: + """List of entity_ids which are currently grouped together.""" + return self.speaker.sonos_group_entities + def __hash__(self) -> int: """Return a hash of self.""" return hash(self.unique_id) @@ -654,9 +657,7 @@ class SonosMediaPlayerEntity(SonosEntity, MediaPlayerEntity): @property def extra_state_attributes(self) -> dict[str, Any]: """Return entity specific state attributes.""" - attributes: dict[str, Any] = { - ATTR_SONOS_GROUP: self.speaker.sonos_group_entities - } + attributes: dict[str, Any] = {} if self.media.queue_position is not None: attributes[ATTR_QUEUE_POSITION] = self.media.queue_position From 7b69e20db7025c08401049db463b1aca2f749b5a Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 27 Apr 2022 22:32:13 -0700 Subject: [PATCH 018/151] Sync area changes to google (#70936) Co-authored-by: Martin Hjelmare --- .../components/cloud/google_config.py | 42 +++++++++++-- tests/components/cloud/test_google_config.py | 62 ++++++++++++++++++- 2 files changed, 98 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/cloud/google_config.py b/homeassistant/components/cloud/google_config.py index e2b21ffc56d..8f190103e87 100644 --- a/homeassistant/components/cloud/google_config.py +++ b/homeassistant/components/cloud/google_config.py @@ -9,8 +9,8 @@ from hass_nabucasa.google_report_state import ErrorResponse from homeassistant.components.google_assistant.const import DOMAIN as GOOGLE_DOMAIN from homeassistant.components.google_assistant.helpers import AbstractConfig from homeassistant.const import CLOUD_NEVER_EXPOSED_ENTITIES -from homeassistant.core import CoreState, split_entity_id -from homeassistant.helpers import entity_registry as er, start +from homeassistant.core import CoreState, Event, callback, split_entity_id +from homeassistant.helpers import device_registry as dr, entity_registry as er, start from homeassistant.setup import async_setup_component from .const import ( @@ -103,6 +103,10 @@ class CloudGoogleConfig(AbstractConfig): er.EVENT_ENTITY_REGISTRY_UPDATED, self._handle_entity_registry_updated, ) + self.hass.bus.async_listen( + dr.EVENT_DEVICE_REGISTRY_UPDATED, + self._handle_device_registry_updated, + ) def should_expose(self, state): """If a state object should be exposed.""" @@ -217,9 +221,14 @@ class CloudGoogleConfig(AbstractConfig): self._cur_entity_prefs = prefs.google_entity_configs self._cur_default_expose = prefs.google_default_expose - async def _handle_entity_registry_updated(self, event): + @callback + def _handle_entity_registry_updated(self, event: Event) -> None: """Handle when entity registry updated.""" - if not self.enabled or not self._cloud.is_logged_in: + if ( + not self.enabled + or not self._cloud.is_logged_in + or self.hass.state != CoreState.running + ): return # Only consider entity registry updates if info relevant for Google has changed @@ -233,7 +242,30 @@ class CloudGoogleConfig(AbstractConfig): if not self._should_expose_entity_id(entity_id): return - if self.hass.state != CoreState.running: + self.async_schedule_google_sync_all() + + @callback + def _handle_device_registry_updated(self, event: Event) -> None: + """Handle when device registry updated.""" + if ( + not self.enabled + or not self._cloud.is_logged_in + or self.hass.state != CoreState.running + ): + return + + # Device registry is only used for area changes. All other changes are ignored. + if event.data["action"] != "update" or "area_id" not in event.data["changes"]: + return + + # Check if any exposed entity uses the device area + if not any( + entity_entry.area_id is None + and self._should_expose_entity_id(entity_entry.entity_id) + for entity_entry in er.async_entries_for_device( + er.async_get(self.hass), event.data["device_id"] + ) + ): return self.async_schedule_google_sync_all() diff --git a/tests/components/cloud/test_google_config.py b/tests/components/cloud/test_google_config.py index 98674ff6c86..95746eb67ae 100644 --- a/tests/components/cloud/test_google_config.py +++ b/tests/components/cloud/test_google_config.py @@ -10,7 +10,7 @@ from homeassistant.components.cloud.google_config import CloudGoogleConfig from homeassistant.components.google_assistant import helpers as ga_helpers from homeassistant.const import EVENT_HOMEASSISTANT_STARTED from homeassistant.core import CoreState, State -from homeassistant.helpers import entity_registry as er +from homeassistant.helpers import device_registry as dr, entity_registry as er from homeassistant.helpers.entity import EntityCategory from homeassistant.util.dt import utcnow @@ -191,6 +191,66 @@ async def test_google_entity_registry_sync(hass, mock_cloud_login, cloud_prefs): assert len(mock_sync.mock_calls) == 3 +async def test_google_device_registry_sync(hass, mock_cloud_login, cloud_prefs): + """Test Google config responds to device registry.""" + config = CloudGoogleConfig( + hass, GACTIONS_SCHEMA({}), "mock-user-id", cloud_prefs, hass.data["cloud"] + ) + ent_reg = er.async_get(hass) + entity_entry = ent_reg.async_get_or_create( + "light", "hue", "1234", device_id="1234", area_id="ABCD" + ) + + with patch.object(config, "async_sync_entities_all"): + await config.async_initialize() + await hass.async_block_till_done() + await config.async_connect_agent_user("mock-user-id") + + with patch.object(config, "async_schedule_google_sync_all") as mock_sync: + # Device registry updated with non-relevant changes + hass.bus.async_fire( + dr.EVENT_DEVICE_REGISTRY_UPDATED, + { + "action": "update", + "device_id": "1234", + "changes": ["manufacturer"], + }, + ) + await hass.async_block_till_done() + + assert len(mock_sync.mock_calls) == 0 + + # Device registry updated with relevant changes + # but entity has area ID so not impacted + hass.bus.async_fire( + dr.EVENT_DEVICE_REGISTRY_UPDATED, + { + "action": "update", + "device_id": "1234", + "changes": ["area_id"], + }, + ) + await hass.async_block_till_done() + + assert len(mock_sync.mock_calls) == 0 + + ent_reg.async_update_entity(entity_entry.entity_id, area_id=None) + + # Device registry updated with relevant changes + # but entity has area ID so not impacted + hass.bus.async_fire( + dr.EVENT_DEVICE_REGISTRY_UPDATED, + { + "action": "update", + "device_id": "1234", + "changes": ["area_id"], + }, + ) + await hass.async_block_till_done() + + assert len(mock_sync.mock_calls) == 1 + + async def test_sync_google_when_started(hass, mock_cloud_login, cloud_prefs): """Test Google config syncs on init.""" config = CloudGoogleConfig( From 8f1df6b9173d93974dacea6330ea53b72fb63345 Mon Sep 17 00:00:00 2001 From: j-a-n Date: Thu, 28 Apr 2022 10:37:23 +0200 Subject: [PATCH 019/151] Add unique_id attribute to Alpha2Climate entity (#70964) Co-authored-by: Franck Nijhof --- homeassistant/components/moehlenhoff_alpha2/climate.py | 1 + 1 file changed, 1 insertion(+) diff --git a/homeassistant/components/moehlenhoff_alpha2/climate.py b/homeassistant/components/moehlenhoff_alpha2/climate.py index 71be199b622..225735293ca 100644 --- a/homeassistant/components/moehlenhoff_alpha2/climate.py +++ b/homeassistant/components/moehlenhoff_alpha2/climate.py @@ -50,6 +50,7 @@ class Alpha2Climate(CoordinatorEntity[Alpha2BaseCoordinator], ClimateEntity): """Initialize Alpha2 ClimateEntity.""" super().__init__(coordinator) self.heat_area_id = heat_area_id + self._attr_unique_id = heat_area_id @property def name(self) -> str: From 43b27de011fff84da80d0272ba5e5faf49ec5c6a Mon Sep 17 00:00:00 2001 From: Shai Ungar Date: Thu, 28 Apr 2022 23:25:17 +0300 Subject: [PATCH 020/151] Sabnzbd config flow improvments (#70981) Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> Co-authored-by: Martin Hjelmare --- homeassistant/components/sabnzbd/__init__.py | 158 ++++++++++++++---- .../components/sabnzbd/config_flow.py | 10 +- homeassistant/components/sabnzbd/const.py | 5 +- homeassistant/components/sabnzbd/errors.py | 10 -- homeassistant/components/sabnzbd/sensor.py | 7 +- .../components/sabnzbd/services.yaml | 20 +++ tests/components/sabnzbd/test_config_flow.py | 59 +++---- 7 files changed, 181 insertions(+), 88 deletions(-) delete mode 100644 homeassistant/components/sabnzbd/errors.py diff --git a/homeassistant/components/sabnzbd/__init__.py b/homeassistant/components/sabnzbd/__init__.py index bbbfbe18bc1..aca50e404a2 100644 --- a/homeassistant/components/sabnzbd/__init__.py +++ b/homeassistant/components/sabnzbd/__init__.py @@ -1,24 +1,39 @@ """Support for monitoring an SABnzbd NZB client.""" +from collections.abc import Callable import logging from pysabnzbd import SabnzbdApiException import voluptuous as vol -from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry -from homeassistant.const import CONF_API_KEY, CONF_NAME, CONF_PATH, CONF_URL -from homeassistant.core import HomeAssistant, ServiceCall -from homeassistant.exceptions import ConfigEntryNotReady +from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry, ConfigEntryState +from homeassistant.const import ( + CONF_API_KEY, + CONF_HOST, + CONF_NAME, + CONF_PATH, + CONF_PORT, + CONF_SENSORS, + CONF_SSL, + CONF_URL, +) +from homeassistant.core import HomeAssistant, ServiceCall, callback +from homeassistant.exceptions import ConfigEntryNotReady, HomeAssistantError import homeassistant.helpers.config_validation as cv from homeassistant.helpers.dispatcher import async_dispatcher_send from homeassistant.helpers.event import async_track_time_interval from homeassistant.helpers.typing import ConfigType from .const import ( + ATTR_API_KEY, ATTR_SPEED, + DEFAULT_HOST, DEFAULT_NAME, + DEFAULT_PORT, DEFAULT_SPEED_LIMIT, + DEFAULT_SSL, DOMAIN, KEY_API, + KEY_API_DATA, KEY_NAME, SERVICE_PAUSE, SERVICE_RESUME, @@ -27,23 +42,50 @@ from .const import ( UPDATE_INTERVAL, ) from .sab import get_client +from .sensor import SENSOR_KEYS PLATFORMS = ["sensor"] _LOGGER = logging.getLogger(__name__) -SPEED_LIMIT_SCHEMA = vol.Schema( - {vol.Optional(ATTR_SPEED, default=DEFAULT_SPEED_LIMIT): cv.string} +SERVICES = ( + SERVICE_PAUSE, + SERVICE_RESUME, + SERVICE_SET_SPEED, +) + +SERVICE_BASE_SCHEMA = vol.Schema( + { + vol.Required(ATTR_API_KEY): cv.string, + } +) + +SERVICE_SPEED_SCHEMA = SERVICE_BASE_SCHEMA.extend( + { + vol.Optional(ATTR_SPEED, default=DEFAULT_SPEED_LIMIT): cv.string, + } ) CONFIG_SCHEMA = vol.Schema( { DOMAIN: vol.Schema( - { - vol.Required(CONF_API_KEY): str, - vol.Optional(CONF_NAME, default=DEFAULT_NAME): str, - vol.Required(CONF_URL): str, - vol.Optional(CONF_PATH): str, - } + vol.All( + cv.deprecated(CONF_HOST), + cv.deprecated(CONF_PORT), + cv.deprecated(CONF_SENSORS), + cv.deprecated(CONF_SSL), + { + vol.Required(CONF_API_KEY): str, + vol.Optional(CONF_NAME, default=DEFAULT_NAME): str, + vol.Required(CONF_URL): str, + vol.Optional(CONF_PATH): str, + vol.Optional(CONF_HOST, default=DEFAULT_HOST): cv.string, + vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, + vol.Optional(CONF_SENSORS): vol.All( + cv.ensure_list, [vol.In(SENSOR_KEYS)] + ), + vol.Optional(CONF_SSL, default=DEFAULT_SSL): cv.boolean, + }, + ) ) }, extra=vol.ALLOW_EXTRA, @@ -69,42 +111,73 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: return True +@callback +def async_get_entry_id_for_service_call(hass: HomeAssistant, call: ServiceCall) -> str: + """Get the entry ID related to a service call (by device ID).""" + call_data_api_key = call.data[ATTR_API_KEY] + + for entry in hass.config_entries.async_entries(DOMAIN): + if entry.data[ATTR_API_KEY] == call_data_api_key: + return entry.entry_id + + raise ValueError(f"No api for API key: {call_data_api_key}") + + async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up the SabNzbd Component.""" sab_api = await get_client(hass, entry.data) if not sab_api: raise ConfigEntryNotReady + sab_api_data = SabnzbdApiData(sab_api) + hass.data.setdefault(DOMAIN, {})[entry.entry_id] = { KEY_API: sab_api, + KEY_API_DATA: sab_api_data, KEY_NAME: entry.data[CONF_NAME], } - hass.config_entries.async_setup_platforms(entry, PLATFORMS) + @callback + def extract_api(func: Callable) -> Callable: + """Define a decorator to get the correct api for a service call.""" - sab_api_data = SabnzbdApiData(sab_api) + async def wrapper(call: ServiceCall) -> None: + """Wrap the service function.""" + entry_id = async_get_entry_id_for_service_call(hass, call) + api_data = hass.data[DOMAIN][entry_id][KEY_API_DATA] - async def async_service_handler(service: ServiceCall) -> None: - """Handle service calls.""" - if service.service == SERVICE_PAUSE: - await sab_api_data.async_pause_queue() - elif service.service == SERVICE_RESUME: - await sab_api_data.async_resume_queue() - elif service.service == SERVICE_SET_SPEED: - speed = service.data.get(ATTR_SPEED) - await sab_api_data.async_set_queue_speed(speed) + try: + await func(call, api_data) + except Exception as err: + raise HomeAssistantError( + f"Error while executing {func.__name__}: {err}" + ) from err - hass.services.async_register( - DOMAIN, SERVICE_PAUSE, async_service_handler, schema=vol.Schema({}) - ) + return wrapper - hass.services.async_register( - DOMAIN, SERVICE_RESUME, async_service_handler, schema=vol.Schema({}) - ) + @extract_api + async def async_pause_queue(call: ServiceCall, api: SabnzbdApiData) -> None: + await api.async_pause_queue() - hass.services.async_register( - DOMAIN, SERVICE_SET_SPEED, async_service_handler, schema=SPEED_LIMIT_SCHEMA - ) + @extract_api + async def async_resume_queue(call: ServiceCall, api: SabnzbdApiData) -> None: + await api.async_resume_queue() + + @extract_api + async def async_set_queue_speed(call: ServiceCall, api: SabnzbdApiData) -> None: + speed = call.data.get(ATTR_SPEED) + await api.async_set_queue_speed(speed) + + for service, method, schema in ( + (SERVICE_PAUSE, async_pause_queue, SERVICE_BASE_SCHEMA), + (SERVICE_RESUME, async_resume_queue, SERVICE_BASE_SCHEMA), + (SERVICE_SET_SPEED, async_set_queue_speed, SERVICE_SPEED_SCHEMA), + ): + + if hass.services.has_service(DOMAIN, service): + continue + + hass.services.async_register(DOMAIN, service, method, schema=schema) async def async_update_sabnzbd(now): """Refresh SABnzbd queue data.""" @@ -115,10 +188,31 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: _LOGGER.error(err) async_track_time_interval(hass, async_update_sabnzbd, UPDATE_INTERVAL) + hass.config_entries.async_setup_platforms(entry, PLATFORMS) return True +async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: + """Unload a Sabnzbd config entry.""" + unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS) + if unload_ok: + hass.data[DOMAIN].pop(entry.entry_id) + + loaded_entries = [ + entry + for entry in hass.config_entries.async_entries(DOMAIN) + if entry.state == ConfigEntryState.LOADED + ] + if len(loaded_entries) == 1: + # If this is the last loaded instance of Sabnzbd, deregister any services + # defined during integration setup: + for service_name in SERVICES: + hass.services.async_remove(DOMAIN, service_name) + + return unload_ok + + class SabnzbdApiData: """Class for storing/refreshing sabnzbd api queue data.""" diff --git a/homeassistant/components/sabnzbd/config_flow.py b/homeassistant/components/sabnzbd/config_flow.py index 914b1febefc..7930363b2ac 100644 --- a/homeassistant/components/sabnzbd/config_flow.py +++ b/homeassistant/components/sabnzbd/config_flow.py @@ -70,10 +70,8 @@ class SABnzbdConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): async def async_step_import(self, import_data): """Import sabnzbd config from configuration.yaml.""" - import_data[CONF_URL] = ( - ("https://" if import_data[CONF_SSL] else "http://") - + import_data[CONF_HOST] - + ":" - + str(import_data[CONF_PORT]) - ) + protocol = "https://" if import_data[CONF_SSL] else "http://" + import_data[ + CONF_URL + ] = f"{protocol}{import_data[CONF_HOST]}:{import_data[CONF_PORT]}" return await self.async_step_user(import_data) diff --git a/homeassistant/components/sabnzbd/const.py b/homeassistant/components/sabnzbd/const.py index 9092b877b1b..8add1f61493 100644 --- a/homeassistant/components/sabnzbd/const.py +++ b/homeassistant/components/sabnzbd/const.py @@ -5,8 +5,8 @@ DOMAIN = "sabnzbd" DATA_SABNZBD = "sabnzbd" ATTR_SPEED = "speed" -BASE_URL_FORMAT = "{}://{}:{}/" -CONFIG_FILE = "sabnzbd.conf" +ATTR_API_KEY = "api_key" + DEFAULT_HOST = "localhost" DEFAULT_NAME = "SABnzbd" DEFAULT_PORT = 8080 @@ -22,4 +22,5 @@ SERVICE_SET_SPEED = "set_speed" SIGNAL_SABNZBD_UPDATED = "sabnzbd_updated" KEY_API = "api" +KEY_API_DATA = "api_data" KEY_NAME = "name" diff --git a/homeassistant/components/sabnzbd/errors.py b/homeassistant/components/sabnzbd/errors.py deleted file mode 100644 index a14a0af4775..00000000000 --- a/homeassistant/components/sabnzbd/errors.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Errors for the Sabnzbd component.""" -from homeassistant.exceptions import HomeAssistantError - - -class AuthenticationError(HomeAssistantError): - """Wrong Username or Password.""" - - -class UnknownError(HomeAssistantError): - """Unknown Error.""" diff --git a/homeassistant/components/sabnzbd/sensor.py b/homeassistant/components/sabnzbd/sensor.py index 293b14a604b..1d661d90848 100644 --- a/homeassistant/components/sabnzbd/sensor.py +++ b/homeassistant/components/sabnzbd/sensor.py @@ -10,12 +10,12 @@ from homeassistant.components.sensor import ( ) from homeassistant.helpers.dispatcher import async_dispatcher_connect -from . import DOMAIN, SIGNAL_SABNZBD_UPDATED, SabnzbdApiData +from . import DOMAIN, SIGNAL_SABNZBD_UPDATED from ...config_entries import ConfigEntry from ...const import DATA_GIGABYTES, DATA_MEGABYTES, DATA_RATE_MEGABYTES_PER_SECOND from ...core import HomeAssistant from ...helpers.entity_platform import AddEntitiesCallback -from .const import KEY_API, KEY_NAME +from .const import KEY_API_DATA, KEY_NAME @dataclass @@ -109,9 +109,8 @@ async def async_setup_entry( ) -> None: """Set up a Sabnzbd sensor entry.""" - sab_api = hass.data[DOMAIN][config_entry.entry_id][KEY_API] + sab_api_data = hass.data[DOMAIN][config_entry.entry_id][KEY_API_DATA] client_name = hass.data[DOMAIN][config_entry.entry_id][KEY_NAME] - sab_api_data = SabnzbdApiData(sab_api) async_add_entities( [SabnzbdSensor(sab_api_data, client_name, sensor) for sensor in SENSOR_TYPES] diff --git a/homeassistant/components/sabnzbd/services.yaml b/homeassistant/components/sabnzbd/services.yaml index 38f68bfe5dd..2221eed169f 100644 --- a/homeassistant/components/sabnzbd/services.yaml +++ b/homeassistant/components/sabnzbd/services.yaml @@ -1,13 +1,33 @@ pause: name: Pause description: Pauses downloads. + fields: + api_key: + name: Sabnzbd API key + description: The Sabnzbd API key to pause downloads + required: true + selector: + text: resume: name: Resume description: Resumes downloads. + fields: + api_key: + name: Sabnzbd API key + description: The Sabnzbd API key to resume downloads + required: true + selector: + text: set_speed: name: Set speed description: Sets the download speed limit. fields: + api_key: + name: Sabnzbd API key + description: The Sabnzbd API key to set speed limit + required: true + selector: + text: speed: name: Speed description: Speed limit. If specified as a number with no units, will be interpreted as a percent. If units are provided (e.g., 500K) will be interpreted absolutely. diff --git a/tests/components/sabnzbd/test_config_flow.py b/tests/components/sabnzbd/test_config_flow.py index 381928457d2..d04c5b18ab1 100644 --- a/tests/components/sabnzbd/test_config_flow.py +++ b/tests/components/sabnzbd/test_config_flow.py @@ -3,7 +3,7 @@ from unittest.mock import patch from pysabnzbd import SabnzbdApiException -from homeassistant import data_entry_flow +from homeassistant import config_entries, data_entry_flow from homeassistant.components.sabnzbd import DOMAIN from homeassistant.config_entries import SOURCE_IMPORT, SOURCE_USER from homeassistant.const import ( @@ -15,8 +15,7 @@ from homeassistant.const import ( CONF_SSL, CONF_URL, ) - -from tests.common import MockConfigEntry +from homeassistant.data_entry_flow import RESULT_TYPE_FORM VALID_CONFIG = { CONF_NAME: "Sabnzbd", @@ -37,21 +36,34 @@ VALID_CONFIG_OLD = { async def test_create_entry(hass): """Test that the user step works.""" + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": config_entries.SOURCE_USER} + ) + assert result["type"] == RESULT_TYPE_FORM + assert result["errors"] == {} + with patch( "homeassistant.components.sabnzbd.sab.SabnzbdApi.check_available", return_value=True, - ): - result = await hass.config_entries.flow.async_init( - DOMAIN, - context={"source": SOURCE_USER}, - data=VALID_CONFIG, + ), patch( + "homeassistant.components.sabnzbd.async_setup_entry", + return_value=True, + ) as mock_setup_entry: + result2 = await hass.config_entries.flow.async_configure( + result["flow_id"], + VALID_CONFIG, ) + await hass.async_block_till_done() - assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY - assert result["title"] == "edc3eee7330e" - assert result["data"][CONF_NAME] == "Sabnzbd" - assert result["data"][CONF_API_KEY] == "edc3eee7330e4fdda04489e3fbc283d0" - assert result["data"][CONF_PATH] == "" + assert result2["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY + assert result2["title"] == "edc3eee7330e" + assert result2["data"] == { + CONF_API_KEY: "edc3eee7330e4fdda04489e3fbc283d0", + CONF_NAME: "Sabnzbd", + CONF_PATH: "", + CONF_URL: "http://localhost:8080", + } + assert len(mock_setup_entry.mock_calls) == 1 async def test_auth_error(hass): @@ -69,27 +81,6 @@ async def test_auth_error(hass): assert result["errors"] == {"base": "cannot_connect"} -async def test_integration_already_exists(hass): - """Test we only allow a single config flow.""" - with patch( - "homeassistant.components.sabnzbd.sab.SabnzbdApi.check_available", - return_value=True, - ): - MockConfigEntry( - domain=DOMAIN, - unique_id="123456", - data=VALID_CONFIG, - ).add_to_hass(hass) - - result = await hass.config_entries.flow.async_init( - DOMAIN, - context={"source": SOURCE_USER}, - data=VALID_CONFIG, - ) - - assert result["type"] == "create_entry" - - async def test_import_flow(hass) -> None: """Test the import configuration flow.""" with patch( From dea9ff4f18786dd8334c2f5fc6b6b08316dec6a8 Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Thu, 28 Apr 2022 12:45:37 -0600 Subject: [PATCH 021/151] Ensure SimpliSafe re-auth only looks at SimpliSafe config entries (#71009) * Ensure SimpliSafe re-auth only looks at SimpliSafe config entries * Add a test * Trigger Build * Linting * Comment * Simplify test --- .../components/simplisafe/config_flow.py | 3 ++- .../components/simplisafe/test_config_flow.py | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/simplisafe/config_flow.py b/homeassistant/components/simplisafe/config_flow.py index 93a2e152ad8..ad9614c0546 100644 --- a/homeassistant/components/simplisafe/config_flow.py +++ b/homeassistant/components/simplisafe/config_flow.py @@ -126,7 +126,8 @@ class SimpliSafeFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): if existing_entries := [ entry for entry in self.hass.config_entries.async_entries() - if entry.unique_id in (self._username, user_id) + if entry.domain == DOMAIN + and entry.unique_id in (self._username, user_id) ]: existing_entry = existing_entries[0] self.hass.config_entries.async_update_entry( diff --git a/tests/components/simplisafe/test_config_flow.py b/tests/components/simplisafe/test_config_flow.py index 91274f8f0c5..a4ef98e0e09 100644 --- a/tests/components/simplisafe/test_config_flow.py +++ b/tests/components/simplisafe/test_config_flow.py @@ -12,6 +12,8 @@ from homeassistant.const import CONF_CODE, CONF_TOKEN, CONF_USERNAME from .common import REFRESH_TOKEN, USER_ID, USERNAME +from tests.common import MockConfigEntry + CONF_USER_ID = "user_id" @@ -57,9 +59,15 @@ async def test_options_flow(hass, config_entry): @pytest.mark.parametrize("unique_id", [USERNAME, USER_ID]) async def test_step_reauth( - hass, config, config_entry, reauth_config, setup_simplisafe, sms_config + hass, config, config_entry, reauth_config, setup_simplisafe, sms_config, unique_id ): """Test the re-auth step (testing both username and user ID as unique ID).""" + # Add a second config entry (tied to a random domain, but with the same unique ID + # that could exist in a SimpliSafe entry) to ensure that this reauth process only + # touches the SimpliSafe entry: + entry = MockConfigEntry(domain="random", unique_id=USERNAME, data={"some": "data"}) + entry.add_to_hass(hass) + result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": SOURCE_REAUTH}, data=config ) @@ -78,11 +86,17 @@ async def test_step_reauth( assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT assert result["reason"] == "reauth_successful" - assert len(hass.config_entries.async_entries()) == 1 + assert len(hass.config_entries.async_entries()) == 2 + + # Test that the SimpliSafe config flow is updated: [config_entry] = hass.config_entries.async_entries(DOMAIN) assert config_entry.unique_id == USER_ID assert config_entry.data == config + # Test that the non-SimpliSafe config flow remains the same: + [config_entry] = hass.config_entries.async_entries("random") + assert config_entry == entry + @pytest.mark.parametrize( "exc,error_string", From 53181b409fc79ab2ca4ba83611b65b4b7f9fabe2 Mon Sep 17 00:00:00 2001 From: "David F. Mulcahey" Date: Thu, 28 Apr 2022 14:57:26 -0400 Subject: [PATCH 022/151] Remove unnecessary update_before_add from ZHA (#71010) * Additional streamlining for ZHA entity init * fix tests --- homeassistant/components/zha/button.py | 1 - .../components/zha/core/discovery.py | 3 +- homeassistant/components/zha/entity.py | 1 + homeassistant/components/zha/fan.py | 1 - homeassistant/components/zha/number.py | 1 - homeassistant/components/zha/select.py | 13 +++- homeassistant/components/zha/sensor.py | 1 - homeassistant/components/zha/siren.py | 1 - tests/components/zha/test_cover.py | 8 +- tests/components/zha/test_device_tracker.py | 2 +- tests/components/zha/test_select.py | 76 +++++++++++++++++-- 11 files changed, 86 insertions(+), 22 deletions(-) diff --git a/homeassistant/components/zha/button.py b/homeassistant/components/zha/button.py index abfa94f5906..f130936df02 100644 --- a/homeassistant/components/zha/button.py +++ b/homeassistant/components/zha/button.py @@ -41,7 +41,6 @@ async def async_setup_entry( discovery.async_add_entities, async_add_entities, entities_to_create, - update_before_add=False, ), ) config_entry.async_on_unload(unsub) diff --git a/homeassistant/components/zha/core/discovery.py b/homeassistant/components/zha/core/discovery.py index 8d7d53468e2..cdad57834eb 100644 --- a/homeassistant/components/zha/core/discovery.py +++ b/homeassistant/components/zha/core/discovery.py @@ -54,14 +54,13 @@ async def async_add_entities( tuple[str, ZHADevice, list[base.ZigbeeChannel]], ] ], - update_before_add: bool = True, ) -> None: """Add entities helper.""" if not entities: return to_add = [ent_cls.create_entity(*args) for ent_cls, args in entities] entities_to_add = [entity for entity in to_add if entity is not None] - _async_add_entities(entities_to_add, update_before_add=update_before_add) + _async_add_entities(entities_to_add, update_before_add=False) entities.clear() diff --git a/homeassistant/components/zha/entity.py b/homeassistant/components/zha/entity.py index 13e43aa9ff0..50ffb8f4fcd 100644 --- a/homeassistant/components/zha/entity.py +++ b/homeassistant/components/zha/entity.py @@ -291,6 +291,7 @@ class ZhaGroupEntity(BaseZhaEntity): async def async_added_to_hass(self) -> None: """Register callbacks.""" await super().async_added_to_hass() + await self.async_update() self.async_accept_signal( None, diff --git a/homeassistant/components/zha/fan.py b/homeassistant/components/zha/fan.py index bad1d8e94f1..1c2f52c6038 100644 --- a/homeassistant/components/zha/fan.py +++ b/homeassistant/components/zha/fan.py @@ -67,7 +67,6 @@ async def async_setup_entry( discovery.async_add_entities, async_add_entities, entities_to_create, - update_before_add=False, ), ) config_entry.async_on_unload(unsub) diff --git a/homeassistant/components/zha/number.py b/homeassistant/components/zha/number.py index 3c5a374e588..e1191b4ece4 100644 --- a/homeassistant/components/zha/number.py +++ b/homeassistant/components/zha/number.py @@ -250,7 +250,6 @@ async def async_setup_entry( discovery.async_add_entities, async_add_entities, entities_to_create, - update_before_add=False, ), ) config_entry.async_on_unload(unsub) diff --git a/homeassistant/components/zha/select.py b/homeassistant/components/zha/select.py index 0a67f1eac5f..b9237e24eef 100644 --- a/homeassistant/components/zha/select.py +++ b/homeassistant/components/zha/select.py @@ -3,6 +3,7 @@ from __future__ import annotations from enum import Enum import functools +import logging from zigpy.zcl.clusters.general import OnOff from zigpy.zcl.clusters.security import IasWd @@ -30,6 +31,7 @@ from .entity import ZhaEntity CONFIG_DIAGNOSTIC_MATCH = functools.partial( ZHA_ENTITIES.config_diagnostic_match, Platform.SELECT ) +_LOGGER = logging.getLogger(__name__) async def async_setup_entry( @@ -47,7 +49,6 @@ async def async_setup_entry( discovery.async_add_entities, async_add_entities, entities_to_create, - update_before_add=False, ), ) config_entry.async_on_unload(unsub) @@ -163,7 +164,15 @@ class ZCLEnumSelectEntity(ZhaEntity, SelectEntity): Return entity if it is a supported configuration, otherwise return None """ channel = channels[0] - if cls._select_attr in channel.cluster.unsupported_attributes: + if ( + cls._select_attr in channel.cluster.unsupported_attributes + or channel.cluster.get(cls._select_attr) is None + ): + _LOGGER.debug( + "%s is not supported - skipping %s entity creation", + cls._select_attr, + cls.__name__, + ) return None return cls(unique_id, zha_device, channels, **kwargs) diff --git a/homeassistant/components/zha/sensor.py b/homeassistant/components/zha/sensor.py index f150304c33d..0a5fe204648 100644 --- a/homeassistant/components/zha/sensor.py +++ b/homeassistant/components/zha/sensor.py @@ -103,7 +103,6 @@ async def async_setup_entry( discovery.async_add_entities, async_add_entities, entities_to_create, - update_before_add=False, ), ) config_entry.async_on_unload(unsub) diff --git a/homeassistant/components/zha/siren.py b/homeassistant/components/zha/siren.py index 587efc49c9c..38b58b8dc54 100644 --- a/homeassistant/components/zha/siren.py +++ b/homeassistant/components/zha/siren.py @@ -60,7 +60,6 @@ async def async_setup_entry( discovery.async_add_entities, async_add_entities, entities_to_create, - update_before_add=False, ), ) config_entry.async_on_unload(unsub) diff --git a/tests/components/zha/test_cover.py b/tests/components/zha/test_cover.py index 60a4fab25be..3c00b5d3109 100644 --- a/tests/components/zha/test_cover.py +++ b/tests/components/zha/test_cover.py @@ -104,17 +104,14 @@ def zigpy_keen_vent(zigpy_device_mock): ) -@patch( - "homeassistant.components.zha.core.channels.closures.WindowCovering.async_initialize" -) -async def test_cover(m1, hass, zha_device_joined_restored, zigpy_cover_device): +async def test_cover(hass, zha_device_joined_restored, zigpy_cover_device): """Test zha cover platform.""" # load up cover domain cluster = zigpy_cover_device.endpoints.get(1).window_covering cluster.PLUGGED_ATTR_READS = {"current_position_lift_percentage": 100} zha_device = await zha_device_joined_restored(zigpy_cover_device) - assert cluster.read_attributes.call_count == 2 + assert cluster.read_attributes.call_count == 1 assert "current_position_lift_percentage" in cluster.read_attributes.call_args[0][0] entity_id = await find_entity_id(Platform.COVER, zha_device, hass) @@ -193,6 +190,7 @@ async def test_cover(m1, hass, zha_device_joined_restored, zigpy_cover_device): assert cluster.request.call_args[1]["expect_reply"] is True # test rejoin + cluster.PLUGGED_ATTR_READS = {"current_position_lift_percentage": 0} await async_test_rejoin(hass, zigpy_cover_device, [cluster], (1,)) assert hass.states.get(entity_id).state == STATE_OPEN diff --git a/tests/components/zha/test_device_tracker.py b/tests/components/zha/test_device_tracker.py index e345918179e..06caac91cb2 100644 --- a/tests/components/zha/test_device_tracker.py +++ b/tests/components/zha/test_device_tracker.py @@ -52,7 +52,7 @@ async def test_device_tracker(hass, zha_device_joined_restored, zigpy_device_dt) entity_id = await find_entity_id(Platform.DEVICE_TRACKER, zha_device, hass) assert entity_id is not None - assert hass.states.get(entity_id).state == STATE_HOME + assert hass.states.get(entity_id).state == STATE_NOT_HOME await async_enable_traffic(hass, [zha_device], enabled=False) # test that the device tracker was created and that it is unavailable assert hass.states.get(entity_id).state == STATE_UNAVAILABLE diff --git a/tests/components/zha/test_select.py b/tests/components/zha/test_select.py index 452939420bf..70b943d5ea2 100644 --- a/tests/components/zha/test_select.py +++ b/tests/components/zha/test_select.py @@ -1,5 +1,7 @@ """Test ZHA select entities.""" +from unittest.mock import call + import pytest from zigpy.const import SIG_EP_PROFILE import zigpy.profiles.zha as zha @@ -50,6 +52,7 @@ async def light(hass, zigpy_device_mock): SIG_EP_OUTPUT: [general.Ota.cluster_id], } }, + node_descriptor=b"\x02@\x84_\x11\x7fd\x00\x00,d\x00\x00", ) return zigpy_device @@ -173,15 +176,15 @@ async def test_select_restore_state( assert state.state == security.IasWd.Warning.WarningMode.Burglar.name -async def test_on_off_select(hass, light, zha_device_joined_restored): - """Test zha on off select.""" +async def test_on_off_select_new_join(hass, light, zha_device_joined): + """Test zha on off select - new join.""" entity_registry = er.async_get(hass) on_off_cluster = light.endpoints[1].on_off on_off_cluster.PLUGGED_ATTR_READS = { "start_up_on_off": general.OnOff.StartUpOnOff.On } - zha_device = await zha_device_joined_restored(light) + zha_device = await zha_device_joined(light) select_name = general.OnOff.StartUpOnOff.__name__ entity_id = await find_entity_id( Platform.SELECT, @@ -191,12 +194,19 @@ async def test_on_off_select(hass, light, zha_device_joined_restored): ) assert entity_id is not None + assert on_off_cluster.read_attributes.call_count == 2 + assert ( + call(["start_up_on_off"], allow_cache=True, only_cache=False, manufacturer=None) + in on_off_cluster.read_attributes.call_args_list + ) + assert ( + call(["on_off"], allow_cache=False, only_cache=False, manufacturer=None) + in on_off_cluster.read_attributes.call_args_list + ) + state = hass.states.get(entity_id) assert state - if zha_device_joined_restored.name == "zha_device_joined": - assert state.state == general.OnOff.StartUpOnOff.On.name - else: - assert state.state == STATE_UNKNOWN + assert state.state == general.OnOff.StartUpOnOff.On.name assert state.attributes["options"] == ["Off", "On", "Toggle", "PreviousValue"] @@ -225,6 +235,58 @@ async def test_on_off_select(hass, light, zha_device_joined_restored): assert state.state == general.OnOff.StartUpOnOff.Off.name +async def test_on_off_select_restored(hass, light, zha_device_restored): + """Test zha on off select - restored.""" + + entity_registry = er.async_get(hass) + on_off_cluster = light.endpoints[1].on_off + on_off_cluster.PLUGGED_ATTR_READS = { + "start_up_on_off": general.OnOff.StartUpOnOff.On + } + zha_device = await zha_device_restored(light) + + assert zha_device.is_mains_powered + + assert on_off_cluster.read_attributes.call_count == 4 + # first 2 calls hit cache only + assert ( + call(["start_up_on_off"], allow_cache=True, only_cache=True, manufacturer=None) + in on_off_cluster.read_attributes.call_args_list + ) + assert ( + call(["on_off"], allow_cache=True, only_cache=True, manufacturer=None) + in on_off_cluster.read_attributes.call_args_list + ) + + # 2nd set of calls can actually read from the device + assert ( + call(["start_up_on_off"], allow_cache=True, only_cache=False, manufacturer=None) + in on_off_cluster.read_attributes.call_args_list + ) + assert ( + call(["on_off"], allow_cache=False, only_cache=False, manufacturer=None) + in on_off_cluster.read_attributes.call_args_list + ) + + select_name = general.OnOff.StartUpOnOff.__name__ + entity_id = await find_entity_id( + Platform.SELECT, + zha_device, + hass, + qualifier=select_name.lower(), + ) + assert entity_id is not None + + state = hass.states.get(entity_id) + assert state + assert state.state == general.OnOff.StartUpOnOff.On.name + assert state.attributes["options"] == ["Off", "On", "Toggle", "PreviousValue"] + + entity_entry = entity_registry.async_get(entity_id) + assert entity_entry + assert entity_entry.entity_category == ENTITY_CATEGORY_CONFIG + + async def test_on_off_select_unsupported(hass, light, zha_device_joined_restored): """Test zha on off select unsupported.""" From e5797dff71924145882f1752f093d78fa0c8f787 Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Thu, 28 Apr 2022 15:05:55 -0600 Subject: [PATCH 023/151] Ensure that email-based 2FA in SimpliSafe shows the progress UI (#71021) --- .../components/simplisafe/config_flow.py | 92 ++++++++++++------- .../components/simplisafe/strings.json | 5 +- .../simplisafe/translations/en.json | 4 + tests/components/simplisafe/conftest.py | 2 + .../components/simplisafe/test_config_flow.py | 46 +++++----- 5 files changed, 95 insertions(+), 54 deletions(-) diff --git a/homeassistant/components/simplisafe/config_flow.py b/homeassistant/components/simplisafe/config_flow.py index ad9614c0546..926f904a912 100644 --- a/homeassistant/components/simplisafe/config_flow.py +++ b/homeassistant/components/simplisafe/config_flow.py @@ -49,13 +49,14 @@ class SimpliSafeFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): def __init__(self) -> None: """Initialize the config flow.""" + self._email_2fa_task: asyncio.Task | None = None self._password: str | None = None self._reauth: bool = False self._simplisafe: API | None = None self._username: str | None = None async def _async_authenticate( - self, error_step_id: str, error_schema: vol.Schema + self, originating_step_id: str, originating_step_schema: vol.Schema ) -> FlowResult: """Attempt to authenticate to the SimpliSafe API.""" assert self._password @@ -76,8 +77,8 @@ class SimpliSafeFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): if errors: return self.async_show_form( - step_id=error_step_id, - data_schema=error_schema, + step_id=originating_step_id, + data_schema=originating_step_schema, errors=errors, description_placeholders={CONF_USERNAME: self._username}, ) @@ -86,6 +87,31 @@ class SimpliSafeFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): if self._simplisafe.auth_state == AuthStates.PENDING_2FA_SMS: return await self.async_step_sms_2fa() + return await self.async_step_email_2fa() + + @staticmethod + @callback + def async_get_options_flow( + config_entry: ConfigEntry, + ) -> SimpliSafeOptionsFlowHandler: + """Define the config flow to handle options.""" + return SimpliSafeOptionsFlowHandler(config_entry) + + async def async_step_reauth(self, config: dict[str, Any]) -> FlowResult: + """Handle configuration by re-auth.""" + self._reauth = True + + if CONF_USERNAME not in config: + # Old versions of the config flow may not have the username by this point; + # in that case, we reauth them by making them go through the user flow: + return await self.async_step_user() + + self._username = config[CONF_USERNAME] + return await self.async_step_reauth_confirm() + + async def _async_get_email_2fa(self) -> None: + """Define a task to wait for email-based 2FA.""" + assert self._simplisafe try: async with async_timeout.timeout(DEFAULT_EMAIL_2FA_TIMEOUT): @@ -97,17 +123,39 @@ class SimpliSafeFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): await asyncio.sleep(DEFAULT_EMAIL_2FA_SLEEP) else: break - except asyncio.TimeoutError: - return self.async_show_form( - step_id="user", - data_schema=STEP_USER_SCHEMA, - errors={"base": "2fa_timed_out"}, + finally: + self.hass.async_create_task( + self.hass.config_entries.flow.async_configure(flow_id=self.flow_id) ) - return await self._async_finish_setup() + async def async_step_email_2fa( + self, user_input: dict[str, Any] | None = None + ) -> FlowResult: + """Handle email-based two-factor authentication.""" + if not self._email_2fa_task: + self._email_2fa_task = self.hass.async_create_task( + self._async_get_email_2fa() + ) + return self.async_show_progress( + step_id="email_2fa", progress_action="email_2fa" + ) - async def _async_finish_setup(self) -> FlowResult: - """Complete setup with an authenticated API object.""" + try: + await self._email_2fa_task + except asyncio.TimeoutError: + return self.async_show_progress_done(next_step_id="email_2fa_error") + return self.async_show_progress_done(next_step_id="finish") + + async def async_step_email_2fa_error( + self, user_input: dict[str, Any] | None = None + ) -> FlowResult: + """Handle an error during email-based two-factor authentication.""" + return self.async_abort(reason="email_2fa_timed_out") + + async def async_step_finish( + self, user_input: dict[str, Any] | None = None + ) -> FlowResult: + """Handle the final step.""" assert self._simplisafe assert self._username @@ -142,26 +190,6 @@ class SimpliSafeFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): self._abort_if_unique_id_configured() return self.async_create_entry(title=self._username, data=data) - @staticmethod - @callback - def async_get_options_flow( - config_entry: ConfigEntry, - ) -> SimpliSafeOptionsFlowHandler: - """Define the config flow to handle options.""" - return SimpliSafeOptionsFlowHandler(config_entry) - - async def async_step_reauth(self, config: dict[str, Any]) -> FlowResult: - """Handle configuration by re-auth.""" - self._reauth = True - - if CONF_USERNAME not in config: - # Old versions of the config flow may not have the username by this point; - # in that case, we reauth them by making them go through the user flow: - return await self.async_step_user() - - self._username = config[CONF_USERNAME] - return await self.async_step_reauth_confirm() - async def async_step_reauth_confirm( self, user_input: dict[str, Any] | None = None ) -> FlowResult: @@ -197,7 +225,7 @@ class SimpliSafeFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): errors={CONF_CODE: "invalid_auth"}, ) - return await self._async_finish_setup() + return await self.async_step_finish() async def async_step_user( self, user_input: dict[str, Any] | None = None diff --git a/homeassistant/components/simplisafe/strings.json b/homeassistant/components/simplisafe/strings.json index a5962a89abc..45e0ef84f5a 100644 --- a/homeassistant/components/simplisafe/strings.json +++ b/homeassistant/components/simplisafe/strings.json @@ -23,13 +23,16 @@ } }, "error": { - "2fa_timed_out": "Timed out while waiting for two-factor authentication", "invalid_auth": "[%key:common::config_flow::error::invalid_auth%]", "unknown": "[%key:common::config_flow::error::unknown%]" }, "abort": { "already_configured": "This SimpliSafe account is already in use.", + "email_2fa_timed_out": "Timed out while waiting for email-based two-factor authentication.", "reauth_successful": "[%key:common::config_flow::abort::reauth_successful%]" + }, + "progress": { + "email_2fa": "Input the two-factor authentication code\nsent to you via email." } }, "options": { diff --git a/homeassistant/components/simplisafe/translations/en.json b/homeassistant/components/simplisafe/translations/en.json index 5d8cc4b4e1c..a3bf0049681 100644 --- a/homeassistant/components/simplisafe/translations/en.json +++ b/homeassistant/components/simplisafe/translations/en.json @@ -2,6 +2,7 @@ "config": { "abort": { "already_configured": "This SimpliSafe account is already in use.", + "email_2fa_timed_out": "Timed out while waiting for email-based two-factor authentication.", "reauth_successful": "Re-authentication was successful", "wrong_account": "The user credentials provided do not match this SimpliSafe account." }, @@ -12,6 +13,9 @@ "still_awaiting_mfa": "Still awaiting MFA email click", "unknown": "Unexpected error" }, + "progress": { + "email_2fa": "Input the two-factor authentication code\nsent to you via email." + }, "step": { "mfa": { "title": "SimpliSafe Multi-Factor Authentication" diff --git a/tests/components/simplisafe/conftest.py b/tests/components/simplisafe/conftest.py index d3a07bd8fc8..56967ac24c5 100644 --- a/tests/components/simplisafe/conftest.py +++ b/tests/components/simplisafe/conftest.py @@ -102,6 +102,8 @@ def reauth_config_fixture(): async def setup_simplisafe_fixture(hass, api, config): """Define a fixture to set up SimpliSafe.""" with patch( + "homeassistant.components.simplisafe.config_flow.DEFAULT_EMAIL_2FA_SLEEP", 0 + ), patch( "homeassistant.components.simplisafe.config_flow.API.async_from_credentials", return_value=api, ), patch( diff --git a/tests/components/simplisafe/test_config_flow.py b/tests/components/simplisafe/test_config_flow.py index a4ef98e0e09..2e0b85bc6c6 100644 --- a/tests/components/simplisafe/test_config_flow.py +++ b/tests/components/simplisafe/test_config_flow.py @@ -118,6 +118,7 @@ async def test_step_reauth_errors(hass, config, error_string, exc, reauth_config result["flow_id"], user_input=reauth_config ) assert result["type"] == data_entry_flow.RESULT_TYPE_FORM + assert result["step_id"] == "reauth_confirm" assert result["errors"] == {"base": error_string} @@ -191,12 +192,13 @@ async def test_step_user_errors(hass, credentials_config, error_string, exc): result["flow_id"], user_input=credentials_config ) assert result["type"] == data_entry_flow.RESULT_TYPE_FORM + assert result["step_id"] == "user" assert result["errors"] == {"base": error_string} @pytest.mark.parametrize("api_auth_state", [AuthStates.PENDING_2FA_EMAIL]) async def test_step_user_email_2fa( - api, hass, config, credentials_config, setup_simplisafe + api, api_auth_state, hass, config, credentials_config, setup_simplisafe ): """Test the user step with email-based 2FA.""" result = await hass.config_entries.flow.async_init( @@ -208,14 +210,15 @@ async def test_step_user_email_2fa( # Patch API.async_verify_2fa_email to first return pending, then return all done: api.async_verify_2fa_email.side_effect = [Verify2FAPending, None] - # Patch the amount of time slept between calls so to not slow down this test: - with patch( - "homeassistant.components.simplisafe.config_flow.DEFAULT_EMAIL_2FA_SLEEP", 0 - ): - result = await hass.config_entries.flow.async_configure( - result["flow_id"], user_input=credentials_config - ) - assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY + result = await hass.config_entries.flow.async_configure( + result["flow_id"], user_input=credentials_config + ) + assert result["type"] == data_entry_flow.RESULT_TYPE_SHOW_PROGRESS + + result = await hass.config_entries.flow.async_configure(result["flow_id"]) + assert result["type"] == data_entry_flow.RESULT_TYPE_SHOW_PROGRESS_DONE + + result = await hass.config_entries.flow.async_configure(result["flow_id"]) assert len(hass.config_entries.async_entries()) == 1 [config_entry] = hass.config_entries.async_entries(DOMAIN) @@ -223,6 +226,7 @@ async def test_step_user_email_2fa( assert config_entry.data == config +@patch("homeassistant.components.simplisafe.config_flow.DEFAULT_EMAIL_2FA_TIMEOUT", 0) @pytest.mark.parametrize("api_auth_state", [AuthStates.PENDING_2FA_EMAIL]) async def test_step_user_email_2fa_timeout( api, hass, config, credentials_config, setup_simplisafe @@ -237,18 +241,18 @@ async def test_step_user_email_2fa_timeout( # Patch API.async_verify_2fa_email to return pending: api.async_verify_2fa_email.side_effect = Verify2FAPending - # Patch the amount of time slept between calls and the timeout duration so to not - # slow down this test: - with patch( - "homeassistant.components.simplisafe.config_flow.DEFAULT_EMAIL_2FA_SLEEP", 0 - ), patch( - "homeassistant.components.simplisafe.config_flow.DEFAULT_EMAIL_2FA_TIMEOUT", 0 - ): - result = await hass.config_entries.flow.async_configure( - result["flow_id"], user_input=credentials_config - ) - assert result["type"] == data_entry_flow.RESULT_TYPE_FORM - assert result["errors"] == {"base": "2fa_timed_out"} + result = await hass.config_entries.flow.async_configure( + result["flow_id"], user_input=credentials_config + ) + assert result["type"] == data_entry_flow.RESULT_TYPE_SHOW_PROGRESS + + result = await hass.config_entries.flow.async_configure(result["flow_id"]) + assert result["type"] == data_entry_flow.RESULT_TYPE_SHOW_PROGRESS_DONE + assert result["step_id"] == "email_2fa_error" + + result = await hass.config_entries.flow.async_configure(result["flow_id"]) + assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT + assert result["reason"] == "email_2fa_timed_out" async def test_step_user_sms_2fa( From e2b28082a3d414d07d1c0490a4c03bdff891393f Mon Sep 17 00:00:00 2001 From: jjlawren Date: Thu, 28 Apr 2022 16:26:29 -0500 Subject: [PATCH 024/151] Fix Sonos races related to grouping and startup (#71026) --- .../components/sonos/media_player.py | 9 ++++ homeassistant/components/sonos/speaker.py | 41 ++++++++++++++++--- tests/components/sonos/conftest.py | 1 + 3 files changed, 45 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/sonos/media_player.py b/homeassistant/components/sonos/media_player.py index 30fdb28b02f..f7f5e2722ff 100644 --- a/homeassistant/components/sonos/media_player.py +++ b/homeassistant/components/sonos/media_player.py @@ -258,6 +258,15 @@ class SonosMediaPlayerEntity(SonosEntity, MediaPlayerEntity): if self.coordinator.uid == uid: self.async_write_ha_state() + @property + def available(self) -> bool: + """Return if the media_player is available.""" + return ( + self.speaker.available + and self.speaker.sonos_group_entities + and self.media.playback_status + ) + @property def coordinator(self) -> SonosSpeaker: """Return the current coordinator SonosSpeaker.""" diff --git a/homeassistant/components/sonos/speaker.py b/homeassistant/components/sonos/speaker.py index 4435a65db3d..4e4661b389b 100644 --- a/homeassistant/components/sonos/speaker.py +++ b/homeassistant/components/sonos/speaker.py @@ -189,7 +189,12 @@ class SonosSpeaker: def setup(self, entry: ConfigEntry) -> None: """Run initial setup of the speaker.""" - self.set_basic_info() + self.media.play_mode = self.soco.play_mode + self.update_volume() + self.update_groups() + if self.is_coordinator: + self.media.poll_media() + future = asyncio.run_coroutine_threadsafe( self.async_setup_dispatchers(entry), self.hass.loop ) @@ -247,11 +252,6 @@ class SonosSpeaker: """Write states for associated SonosEntity instances.""" async_dispatcher_send(self.hass, f"{SONOS_STATE_UPDATED}-{self.soco.uid}") - def set_basic_info(self) -> None: - """Set basic information when speaker is reconnected.""" - self.media.play_mode = self.soco.play_mode - self.update_volume() - # # Properties # @@ -456,6 +456,34 @@ class SonosSpeaker: @callback def async_dispatch_media_update(self, event: SonosEvent) -> None: """Update information about currently playing media from an event.""" + # The new coordinator can be provided in a media update event but + # before the ZoneGroupState updates. If this happens the playback + # state will be incorrect and should be ignored. Switching to the + # new coordinator will use its media. The regrouping process will + # be completed during the next ZoneGroupState update. + av_transport_uri = event.variables.get("av_transport_uri", "") + current_track_uri = event.variables.get("current_track_uri", "") + if av_transport_uri == current_track_uri and av_transport_uri.startswith( + "x-rincon:" + ): + new_coordinator_uid = av_transport_uri.split(":")[-1] + if new_coordinator_speaker := self.hass.data[DATA_SONOS].discovered.get( + new_coordinator_uid + ): + _LOGGER.debug( + "Media update coordinator (%s) received for %s", + new_coordinator_speaker.zone_name, + self.zone_name, + ) + self.coordinator = new_coordinator_speaker + else: + _LOGGER.debug( + "Media update coordinator (%s) for %s not yet available", + new_coordinator_uid, + self.zone_name, + ) + return + if crossfade := event.variables.get("current_crossfade_mode"): self.cross_fade = bool(int(crossfade)) @@ -774,6 +802,7 @@ class SonosSpeaker: self.zone_name, uid, ) + return if self.sonos_group_entities == sonos_group_entities: # Useful in polling mode for speakers with stereo pairs or surrounds diff --git a/tests/components/sonos/conftest.py b/tests/components/sonos/conftest.py index d18a5eecc8a..8c804f466d4 100644 --- a/tests/components/sonos/conftest.py +++ b/tests/components/sonos/conftest.py @@ -120,6 +120,7 @@ def soco_fixture( mock_soco.get_battery_info.return_value = battery_info mock_soco.all_zones = {mock_soco} mock_soco.visible_zones = {mock_soco} + mock_soco.group.coordinator = mock_soco yield mock_soco From 16ce74348c9bf983bac27163f38499092e3b272e Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 28 Apr 2022 14:09:54 -0700 Subject: [PATCH 025/151] Add redirect for server controls (#71027) Co-authored-by: Zack Barett --- homeassistant/components/frontend/__init__.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/frontend/__init__.py b/homeassistant/components/frontend/__init__.py index 558b24f3286..55d745eb309 100644 --- a/homeassistant/components/frontend/__init__.py +++ b/homeassistant/components/frontend/__init__.py @@ -364,15 +364,8 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: async_register_built_in_panel(hass, "profile") - # To smooth transition to new urls, add redirects to new urls of dev tools - # Added June 27, 2019. Can be removed in 2021. - for panel in ("event", "service", "state", "template"): - hass.http.register_redirect(f"/dev-{panel}", f"/developer-tools/{panel}") - for panel in ("logs", "info", "mqtt"): - # Can be removed in 2021. - hass.http.register_redirect(f"/dev-{panel}", f"/config/{panel}") - # Added June 20 2020. Can be removed in 2022. - hass.http.register_redirect(f"/developer-tools/{panel}", f"/config/{panel}") + # Can be removed in 2023 + hass.http.register_redirect("/config/server_control", "/developer-tools/yaml") async_register_built_in_panel( hass, From 0db553d91cfa02abc5339714f45c30f928275f04 Mon Sep 17 00:00:00 2001 From: Zack Barett Date: Thu, 28 Apr 2022 16:24:04 -0500 Subject: [PATCH 026/151] Frontend Bump to 20220428.0 (#71029) --- 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 c622d930ab1..c806b21e723 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==20220427.0"], + "requirements": ["home-assistant-frontend==20220428.0"], "dependencies": [ "api", "auth", diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index f58eb91b087..9d258ddbd4a 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -15,7 +15,7 @@ ciso8601==2.2.0 cryptography==36.0.2 fnvhash==0.1.0 hass-nabucasa==0.54.0 -home-assistant-frontend==20220427.0 +home-assistant-frontend==20220428.0 httpx==0.22.0 ifaddr==0.1.7 jinja2==3.1.1 diff --git a/requirements_all.txt b/requirements_all.txt index e950616865e..bde13718ac9 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -819,7 +819,7 @@ hole==0.7.0 holidays==0.13 # homeassistant.components.frontend -home-assistant-frontend==20220427.0 +home-assistant-frontend==20220428.0 # homeassistant.components.home_connect homeconnect==0.7.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index ccc958e2543..7c4f147df7a 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -580,7 +580,7 @@ hole==0.7.0 holidays==0.13 # homeassistant.components.frontend -home-assistant-frontend==20220427.0 +home-assistant-frontend==20220428.0 # homeassistant.components.home_connect homeconnect==0.7.0 From 0fd4778462a6e08b545f2b248c77e48f86bf3cfc Mon Sep 17 00:00:00 2001 From: Robert Svensson Date: Thu, 28 Apr 2022 23:09:35 +0200 Subject: [PATCH 027/151] Bump pydeconz to v91 (#71030) --- homeassistant/components/deconz/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/deconz/manifest.json b/homeassistant/components/deconz/manifest.json index e26c659ff73..dee41435779 100644 --- a/homeassistant/components/deconz/manifest.json +++ b/homeassistant/components/deconz/manifest.json @@ -3,7 +3,7 @@ "name": "deCONZ", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/deconz", - "requirements": ["pydeconz==90"], + "requirements": ["pydeconz==91"], "ssdp": [ { "manufacturer": "Royal Philips Electronics" diff --git a/requirements_all.txt b/requirements_all.txt index bde13718ac9..2e107625169 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1432,7 +1432,7 @@ pydaikin==2.7.0 pydanfossair==0.1.0 # homeassistant.components.deconz -pydeconz==90 +pydeconz==91 # homeassistant.components.delijn pydelijn==1.0.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 7c4f147df7a..ad3cec937d1 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -953,7 +953,7 @@ pycoolmasternet-async==0.1.2 pydaikin==2.7.0 # homeassistant.components.deconz -pydeconz==90 +pydeconz==91 # homeassistant.components.dexcom pydexcom==0.2.3 From c52ad6e63c7a4b191262d2dbfda72ccb27ba809b Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 28 Apr 2022 15:14:47 -0700 Subject: [PATCH 028/151] Bumped version to 2022.5.0b2 --- homeassistant/const.py | 2 +- setup.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 17b38e7a566..35d82f64f93 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -7,7 +7,7 @@ from .backports.enum import StrEnum MAJOR_VERSION: Final = 2022 MINOR_VERSION: Final = 5 -PATCH_VERSION: Final = "0b1" +PATCH_VERSION: Final = "0b2" __short_version__: Final = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__: Final = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER: Final[tuple[int, int, int]] = (3, 9, 0) diff --git a/setup.cfg b/setup.cfg index 4775b35a195..2d916bfbeda 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = homeassistant -version = 2022.5.0b1 +version = 2022.5.0b2 author = The Home Assistant Authors author_email = hello@home-assistant.io license = Apache-2.0 From 0b144be61ce7b13ad10cc486b68d49c85f4c1801 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Fri, 29 Apr 2022 01:48:28 -0500 Subject: [PATCH 029/151] Prevent sqlalchemy Transparent SQL Compilation Caching from filling up during purge (#71015) --- homeassistant/components/recorder/purge.py | 261 +++++++++++++++++++-- 1 file changed, 246 insertions(+), 15 deletions(-) diff --git a/homeassistant/components/recorder/purge.py b/homeassistant/components/recorder/purge.py index e6f30b1c62d..d4061a69bab 100644 --- a/homeassistant/components/recorder/purge.py +++ b/homeassistant/components/recorder/purge.py @@ -3,12 +3,15 @@ from __future__ import annotations from collections.abc import Callable, Iterable from datetime import datetime +from itertools import zip_longest import logging from typing import TYPE_CHECKING -from sqlalchemy import column, func, select, union +from sqlalchemy import func, lambda_stmt, select, union_all from sqlalchemy.orm.session import Session from sqlalchemy.sql.expression import distinct +from sqlalchemy.sql.lambdas import StatementLambdaElement +from sqlalchemy.sql.selectable import Select from homeassistant.const import EVENT_STATE_CHANGED @@ -112,6 +115,223 @@ def _select_event_state_and_attributes_ids_to_purge( return event_ids, state_ids, attributes_ids +def _state_attrs_exist(attr: int | None) -> Select: + """Check if a state attributes id exists in the states table.""" + return select(func.min(States.attributes_id)).where(States.attributes_id == attr) + + +def _generate_find_attr_lambda( + attr1: int, + attr2: int | None, + attr3: int | None, + attr4: int | None, + attr5: int | None, + attr6: int | None, + attr7: int | None, + attr8: int | None, + attr9: int | None, + attr10: int | None, + attr11: int | None, + attr12: int | None, + attr13: int | None, + attr14: int | None, + attr15: int | None, + attr16: int | None, + attr17: int | None, + attr18: int | None, + attr19: int | None, + attr20: int | None, + attr21: int | None, + attr22: int | None, + attr23: int | None, + attr24: int | None, + attr25: int | None, + attr26: int | None, + attr27: int | None, + attr28: int | None, + attr29: int | None, + attr30: int | None, + attr31: int | None, + attr32: int | None, + attr33: int | None, + attr34: int | None, + attr35: int | None, + attr36: int | None, + attr37: int | None, + attr38: int | None, + attr39: int | None, + attr40: int | None, + attr41: int | None, + attr42: int | None, + attr43: int | None, + attr44: int | None, + attr45: int | None, + attr46: int | None, + attr47: int | None, + attr48: int | None, + attr49: int | None, + attr50: int | None, + attr51: int | None, + attr52: int | None, + attr53: int | None, + attr54: int | None, + attr55: int | None, + attr56: int | None, + attr57: int | None, + attr58: int | None, + attr59: int | None, + attr60: int | None, + attr61: int | None, + attr62: int | None, + attr63: int | None, + attr64: int | None, + attr65: int | None, + attr66: int | None, + attr67: int | None, + attr68: int | None, + attr69: int | None, + attr70: int | None, + attr71: int | None, + attr72: int | None, + attr73: int | None, + attr74: int | None, + attr75: int | None, + attr76: int | None, + attr77: int | None, + attr78: int | None, + attr79: int | None, + attr80: int | None, + attr81: int | None, + attr82: int | None, + attr83: int | None, + attr84: int | None, + attr85: int | None, + attr86: int | None, + attr87: int | None, + attr88: int | None, + attr89: int | None, + attr90: int | None, + attr91: int | None, + attr92: int | None, + attr93: int | None, + attr94: int | None, + attr95: int | None, + attr96: int | None, + attr97: int | None, + attr98: int | None, + attr99: int | None, + attr100: int | None, +) -> StatementLambdaElement: + """Generate the find attributes select only once. + + https://docs.sqlalchemy.org/en/14/core/connections.html#quick-guidelines-for-lambdas + """ + return lambda_stmt( + lambda: union_all( + _state_attrs_exist(attr1), + _state_attrs_exist(attr2), + _state_attrs_exist(attr3), + _state_attrs_exist(attr4), + _state_attrs_exist(attr5), + _state_attrs_exist(attr6), + _state_attrs_exist(attr7), + _state_attrs_exist(attr8), + _state_attrs_exist(attr9), + _state_attrs_exist(attr10), + _state_attrs_exist(attr11), + _state_attrs_exist(attr12), + _state_attrs_exist(attr13), + _state_attrs_exist(attr14), + _state_attrs_exist(attr15), + _state_attrs_exist(attr16), + _state_attrs_exist(attr17), + _state_attrs_exist(attr18), + _state_attrs_exist(attr19), + _state_attrs_exist(attr20), + _state_attrs_exist(attr21), + _state_attrs_exist(attr22), + _state_attrs_exist(attr23), + _state_attrs_exist(attr24), + _state_attrs_exist(attr25), + _state_attrs_exist(attr26), + _state_attrs_exist(attr27), + _state_attrs_exist(attr28), + _state_attrs_exist(attr29), + _state_attrs_exist(attr30), + _state_attrs_exist(attr31), + _state_attrs_exist(attr32), + _state_attrs_exist(attr33), + _state_attrs_exist(attr34), + _state_attrs_exist(attr35), + _state_attrs_exist(attr36), + _state_attrs_exist(attr37), + _state_attrs_exist(attr38), + _state_attrs_exist(attr39), + _state_attrs_exist(attr40), + _state_attrs_exist(attr41), + _state_attrs_exist(attr42), + _state_attrs_exist(attr43), + _state_attrs_exist(attr44), + _state_attrs_exist(attr45), + _state_attrs_exist(attr46), + _state_attrs_exist(attr47), + _state_attrs_exist(attr48), + _state_attrs_exist(attr49), + _state_attrs_exist(attr50), + _state_attrs_exist(attr51), + _state_attrs_exist(attr52), + _state_attrs_exist(attr53), + _state_attrs_exist(attr54), + _state_attrs_exist(attr55), + _state_attrs_exist(attr56), + _state_attrs_exist(attr57), + _state_attrs_exist(attr58), + _state_attrs_exist(attr59), + _state_attrs_exist(attr60), + _state_attrs_exist(attr61), + _state_attrs_exist(attr62), + _state_attrs_exist(attr63), + _state_attrs_exist(attr64), + _state_attrs_exist(attr65), + _state_attrs_exist(attr66), + _state_attrs_exist(attr67), + _state_attrs_exist(attr68), + _state_attrs_exist(attr69), + _state_attrs_exist(attr70), + _state_attrs_exist(attr71), + _state_attrs_exist(attr72), + _state_attrs_exist(attr73), + _state_attrs_exist(attr74), + _state_attrs_exist(attr75), + _state_attrs_exist(attr76), + _state_attrs_exist(attr77), + _state_attrs_exist(attr78), + _state_attrs_exist(attr79), + _state_attrs_exist(attr80), + _state_attrs_exist(attr81), + _state_attrs_exist(attr82), + _state_attrs_exist(attr83), + _state_attrs_exist(attr84), + _state_attrs_exist(attr85), + _state_attrs_exist(attr86), + _state_attrs_exist(attr87), + _state_attrs_exist(attr88), + _state_attrs_exist(attr89), + _state_attrs_exist(attr90), + _state_attrs_exist(attr91), + _state_attrs_exist(attr92), + _state_attrs_exist(attr93), + _state_attrs_exist(attr94), + _state_attrs_exist(attr95), + _state_attrs_exist(attr96), + _state_attrs_exist(attr97), + _state_attrs_exist(attr98), + _state_attrs_exist(attr99), + _state_attrs_exist(attr100), + ) + ) + + def _select_unused_attributes_ids( session: Session, attributes_ids: set[int], using_sqlite: bool ) -> set[int]: @@ -132,9 +352,12 @@ def _select_unused_attributes_ids( # > explain select distinct attributes_id from states where attributes_id in (136723); # ...Using index # - id_query = session.query(distinct(States.attributes_id)).filter( - States.attributes_id.in_(attributes_ids) - ) + seen_ids = { + state[0] + for state in session.query(distinct(States.attributes_id)) + .filter(States.attributes_id.in_(attributes_ids)) + .all() + } else: # # This branch is for DBMS that cannot optimize the distinct query well and has to examine @@ -151,17 +374,25 @@ def _select_unused_attributes_ids( # > explain select min(attributes_id) from states where attributes_id = 136723; # ...Select tables optimized away # - id_query = session.query(column("id")).from_statement( - union( - *[ - select(func.min(States.attributes_id).label("id")).where( - States.attributes_id == attributes_id - ) - for attributes_id in attributes_ids - ] - ) - ) - to_remove = attributes_ids - {state[0] for state in id_query.all()} + # We used to generate a query based on how many attribute_ids to find but + # that meant sqlalchemy Transparent SQL Compilation Caching was working against + # us by cached up to MAX_ROWS_TO_PURGE different statements which could be + # up to 500MB for large database due to the complexity of the ORM objects. + # + # We now break the query into groups of 100 and use a lambda_stmt to ensure + # that the query is only cached once. + # + seen_ids = set() + groups = [iter(attributes_ids)] * 100 + for attr_ids in zip_longest(*groups, fillvalue=None): + seen_ids |= { + state[0] + for state in session.execute( + _generate_find_attr_lambda(*attr_ids) + ).all() + if state[0] is not None + } + to_remove = attributes_ids - seen_ids _LOGGER.debug( "Selected %s shared attributes to remove", len(to_remove), From 3ffdbc454e26c611af395e971a8d6ca0eb948f2e Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Fri, 29 Apr 2022 18:06:21 +0200 Subject: [PATCH 030/151] Support shorthand logical operators in script sequences (#71022) --- homeassistant/helpers/config_validation.py | 2 +- tests/helpers/test_script.py | 117 +++++++++++++++++++++ 2 files changed, 118 insertions(+), 1 deletion(-) diff --git a/homeassistant/helpers/config_validation.py b/homeassistant/helpers/config_validation.py index bbf8475c539..f459d96040b 100644 --- a/homeassistant/helpers/config_validation.py +++ b/homeassistant/helpers/config_validation.py @@ -1599,7 +1599,7 @@ def determine_script_action(action: dict[str, Any]) -> str: if CONF_WAIT_TEMPLATE in action: return SCRIPT_ACTION_WAIT_TEMPLATE - if CONF_CONDITION in action: + if any(key in action for key in (CONF_CONDITION, "and", "or", "not")): return SCRIPT_ACTION_CHECK_CONDITION if CONF_EVENT in action: diff --git a/tests/helpers/test_script.py b/tests/helpers/test_script.py index 7f1b35e4e4a..fb3b021daec 100644 --- a/tests/helpers/test_script.py +++ b/tests/helpers/test_script.py @@ -4744,3 +4744,120 @@ async def test_disabled_actions( "3": [{"result": {"event": "test_event", "event_data": {}}}], }, ) + + +async def test_condition_and_shorthand(hass, caplog): + """Test if we can use the shorthand and conditions in a script.""" + events = async_capture_events(hass, "test_event") + sequence = cv.SCRIPT_SCHEMA( + [ + {"event": "test_event"}, + { + "alias": "shorthand and condition", + "and": [ + { + "condition": "template", + "value_template": "{{ states('test.entity') == 'hello' }}", + } + ], + }, + {"event": "test_event"}, + ] + ) + script_obj = script.Script(hass, sequence, "Test Name", "test_domain") + + hass.states.async_set("test.entity", "hello") + await script_obj.async_run(context=Context()) + await hass.async_block_till_done() + + assert "Test condition shorthand and condition: True" in caplog.text + assert len(events) == 2 + + assert_action_trace( + { + "0": [{"result": {"event": "test_event", "event_data": {}}}], + "1": [{"result": {"result": True}}], + "1/conditions/0": [ + {"result": {"entities": ["test.entity"], "result": True}} + ], + "2": [{"result": {"event": "test_event", "event_data": {}}}], + } + ) + + +async def test_condition_or_shorthand(hass, caplog): + """Test if we can use the shorthand or conditions in a script.""" + events = async_capture_events(hass, "test_event") + sequence = cv.SCRIPT_SCHEMA( + [ + {"event": "test_event"}, + { + "alias": "shorthand or condition", + "or": [ + { + "condition": "template", + "value_template": "{{ states('test.entity') == 'hello' }}", + } + ], + }, + {"event": "test_event"}, + ] + ) + script_obj = script.Script(hass, sequence, "Test Name", "test_domain") + + hass.states.async_set("test.entity", "hello") + await script_obj.async_run(context=Context()) + await hass.async_block_till_done() + + assert "Test condition shorthand or condition: True" in caplog.text + assert len(events) == 2 + + assert_action_trace( + { + "0": [{"result": {"event": "test_event", "event_data": {}}}], + "1": [{"result": {"result": True}}], + "1/conditions/0": [ + {"result": {"entities": ["test.entity"], "result": True}} + ], + "2": [{"result": {"event": "test_event", "event_data": {}}}], + } + ) + + +async def test_condition_not_shorthand(hass, caplog): + """Test if we can use the shorthand not conditions in a script.""" + events = async_capture_events(hass, "test_event") + sequence = cv.SCRIPT_SCHEMA( + [ + {"event": "test_event"}, + { + "alias": "shorthand not condition", + "not": [ + { + "condition": "template", + "value_template": "{{ states('test.entity') == 'hello' }}", + } + ], + }, + {"event": "test_event"}, + ] + ) + script_obj = script.Script(hass, sequence, "Test Name", "test_domain") + + hass.states.async_set("test.entity", "not hello") + await script_obj.async_run(context=Context()) + await hass.async_block_till_done() + + assert "Test condition shorthand not condition: True" in caplog.text + assert len(events) == 2 + + assert_action_trace( + { + "0": [{"result": {"event": "test_event", "event_data": {}}}], + "1": [{"result": {"result": True}}], + "1/conditions/0": [ + {"result": {"entities": ["test.entity"], "result": False}} + ], + "2": [{"result": {"event": "test_event", "event_data": {}}}], + } + ) From bff4c5f9d2692383938c3adc3e3079f476deabe9 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Fri, 29 Apr 2022 01:48:58 -0500 Subject: [PATCH 031/151] Fix history_stats for timezones with a positive offset from UTC (#71038) --- .../components/history_stats/data.py | 4 +- tests/components/history_stats/test_sensor.py | 81 +++++++++++++++++++ 2 files changed, 84 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/history_stats/data.py b/homeassistant/components/history_stats/data.py index c5d0ee0fb15..3f22f4cc32b 100644 --- a/homeassistant/components/history_stats/data.py +++ b/homeassistant/components/history_stats/data.py @@ -11,6 +11,8 @@ import homeassistant.util.dt as dt_util from .helpers import async_calculate_period, floored_timestamp +MIN_TIME_UTC = datetime.datetime.min.replace(tzinfo=dt_util.UTC) + @dataclass class HistoryStatsState: @@ -36,7 +38,7 @@ class HistoryStats: """Init the history stats manager.""" self.hass = hass self.entity_id = entity_id - self._period = (datetime.datetime.min, datetime.datetime.min) + self._period = (MIN_TIME_UTC, MIN_TIME_UTC) self._state: HistoryStatsState = HistoryStatsState(None, None, self._period) self._history_current_period: list[State] = [] self._previous_run_before_start = False diff --git a/tests/components/history_stats/test_sensor.py b/tests/components/history_stats/test_sensor.py index 40a13116026..bfa0c8f415e 100644 --- a/tests/components/history_stats/test_sensor.py +++ b/tests/components/history_stats/test_sensor.py @@ -1306,3 +1306,84 @@ async def test_measure_from_end_going_backwards(hass, recorder_mock): assert hass.states.get("sensor.sensor2").state == "0.83" assert hass.states.get("sensor.sensor3").state == "1" assert hass.states.get("sensor.sensor4").state == "83.3" + + +async def test_measure_cet(hass, recorder_mock): + """Test the history statistics sensor measure with a non-UTC timezone.""" + hass.config.set_time_zone("Europe/Berlin") + start_time = dt_util.utcnow() - timedelta(minutes=60) + t0 = start_time + timedelta(minutes=20) + t1 = t0 + timedelta(minutes=10) + t2 = t1 + timedelta(minutes=10) + + # Start t0 t1 t2 End + # |--20min--|--20min--|--10min--|--10min--| + # |---off---|---on----|---off---|---on----| + + def _fake_states(*args, **kwargs): + return { + "binary_sensor.test_id": [ + ha.State("binary_sensor.test_id", "on", last_changed=t0), + ha.State("binary_sensor.test_id", "off", last_changed=t1), + ha.State("binary_sensor.test_id", "on", last_changed=t2), + ] + } + + await async_setup_component( + hass, + "sensor", + { + "sensor": [ + { + "platform": "history_stats", + "entity_id": "binary_sensor.test_id", + "name": "sensor1", + "state": "on", + "start": "{{ as_timestamp(now()) - 3600 }}", + "end": "{{ now() }}", + "type": "time", + }, + { + "platform": "history_stats", + "entity_id": "binary_sensor.test_id", + "name": "sensor2", + "state": "on", + "start": "{{ as_timestamp(now()) - 3600 }}", + "end": "{{ now() }}", + "type": "time", + }, + { + "platform": "history_stats", + "entity_id": "binary_sensor.test_id", + "name": "sensor3", + "state": "on", + "start": "{{ as_timestamp(now()) - 3600 }}", + "end": "{{ now() }}", + "type": "count", + }, + { + "platform": "history_stats", + "entity_id": "binary_sensor.test_id", + "name": "sensor4", + "state": "on", + "start": "{{ as_timestamp(now()) - 3600 }}", + "end": "{{ now() }}", + "type": "ratio", + }, + ] + }, + ) + await hass.async_block_till_done() + + with patch( + "homeassistant.components.recorder.history.state_changes_during_period", + _fake_states, + ): + for i in range(1, 5): + await async_update_entity(hass, f"sensor.sensor{i}") + await hass.async_block_till_done() + + assert hass.states.get("sensor.sensor1").state == "0.83" + assert hass.states.get("sensor.sensor2").state == "0.83" + assert hass.states.get("sensor.sensor3").state == "1" + assert hass.states.get("sensor.sensor4").state == "83.3" From 7072509bde74d37613b2ad71e6073160541bdca4 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 28 Apr 2022 23:32:46 -0500 Subject: [PATCH 032/151] Bump sqlalchemy to 1.4.36 (#71039) --- homeassistant/components/recorder/manifest.json | 2 +- homeassistant/components/sql/manifest.json | 2 +- homeassistant/package_constraints.txt | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/recorder/manifest.json b/homeassistant/components/recorder/manifest.json index e0e4862c18c..0fb44f99ae2 100644 --- a/homeassistant/components/recorder/manifest.json +++ b/homeassistant/components/recorder/manifest.json @@ -2,7 +2,7 @@ "domain": "recorder", "name": "Recorder", "documentation": "https://www.home-assistant.io/integrations/recorder", - "requirements": ["sqlalchemy==1.4.35", "fnvhash==0.1.0", "lru-dict==1.1.7"], + "requirements": ["sqlalchemy==1.4.36", "fnvhash==0.1.0", "lru-dict==1.1.7"], "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "iot_class": "local_push" diff --git a/homeassistant/components/sql/manifest.json b/homeassistant/components/sql/manifest.json index 272a5d1f685..c779e4567cd 100644 --- a/homeassistant/components/sql/manifest.json +++ b/homeassistant/components/sql/manifest.json @@ -2,7 +2,7 @@ "domain": "sql", "name": "SQL", "documentation": "https://www.home-assistant.io/integrations/sql", - "requirements": ["sqlalchemy==1.4.35"], + "requirements": ["sqlalchemy==1.4.36"], "codeowners": ["@dgomes", "@gjohansson-ST"], "config_flow": true, "iot_class": "local_polling" diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index 9d258ddbd4a..bf6ad12b287 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -29,7 +29,7 @@ pyudev==0.22.0 pyyaml==6.0 requests==2.27.1 scapy==2.4.5 -sqlalchemy==1.4.35 +sqlalchemy==1.4.36 typing-extensions>=3.10.0.2,<5.0 voluptuous-serialize==2.5.0 voluptuous==0.13.1 diff --git a/requirements_all.txt b/requirements_all.txt index 2e107625169..da39ee6ce91 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2208,7 +2208,7 @@ spotipy==2.19.0 # homeassistant.components.recorder # homeassistant.components.sql -sqlalchemy==1.4.35 +sqlalchemy==1.4.36 # homeassistant.components.srp_energy srpenergy==1.3.6 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index ad3cec937d1..bb5f6f43234 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1444,7 +1444,7 @@ spotipy==2.19.0 # homeassistant.components.recorder # homeassistant.components.sql -sqlalchemy==1.4.35 +sqlalchemy==1.4.36 # homeassistant.components.srp_energy srpenergy==1.3.6 From 08def3c9339d4495c1b8b6198cf13b3ab0f67f81 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 28 Apr 2022 23:45:57 -0700 Subject: [PATCH 033/151] Fix race causing google config pre-init access (#71042) --- homeassistant/components/cloud/client.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/cloud/client.py b/homeassistant/components/cloud/client.py index ad34186b7df..c47544f9d99 100644 --- a/homeassistant/components/cloud/client.py +++ b/homeassistant/components/cloud/client.py @@ -118,14 +118,15 @@ class CloudClient(Interface): cloud_user = await self._prefs.get_cloud_user() - self._google_config = google_config.CloudGoogleConfig( + google_conf = google_config.CloudGoogleConfig( self._hass, self.google_user_config, cloud_user, self._prefs, self.cloud, ) - await self._google_config.async_initialize() + await google_conf.async_initialize() + self._google_config = google_conf return self._google_config From 28d864ea8d9b8a06ae30a8b0b2f4065fb92b3317 Mon Sep 17 00:00:00 2001 From: "David F. Mulcahey" Date: Fri, 29 Apr 2022 12:44:59 -0400 Subject: [PATCH 034/151] Update ZHA switch entities to leverage Zigpy cache appropriately (#71062) --- .../components/zha/core/channels/general.py | 21 ++-- homeassistant/components/zha/switch.py | 118 +++++++++--------- 2 files changed, 67 insertions(+), 72 deletions(-) diff --git a/homeassistant/components/zha/core/channels/general.py b/homeassistant/components/zha/core/channels/general.py index 81152bb8869..e6524c9aad1 100644 --- a/homeassistant/components/zha/core/channels/general.py +++ b/homeassistant/components/zha/core/channels/general.py @@ -6,6 +6,7 @@ from collections.abc import Coroutine from typing import Any import zigpy.exceptions +import zigpy.types as t from zigpy.zcl.clusters import general from zigpy.zcl.foundation import Status @@ -300,7 +301,6 @@ class OnOffChannel(ZigbeeChannel): ) -> None: """Initialize OnOffChannel.""" super().__init__(cluster, ch_pool) - self._state = None self._off_listener = None @property @@ -314,9 +314,9 @@ class OnOffChannel(ZigbeeChannel): cmd = parse_and_log_command(self, tsn, command_id, args) if cmd in ("off", "off_with_effect"): - self.attribute_updated(self.ON_OFF, False) + self.cluster.update_attribute(self.ON_OFF, t.Bool.false) elif cmd in ("on", "on_with_recall_global_scene"): - self.attribute_updated(self.ON_OFF, True) + self.cluster.update_attribute(self.ON_OFF, t.Bool.true) elif cmd == "on_with_timed_off": should_accept = args[0] on_time = args[1] @@ -325,7 +325,7 @@ class OnOffChannel(ZigbeeChannel): if self._off_listener is not None: self._off_listener() self._off_listener = None - self.attribute_updated(self.ON_OFF, True) + self.cluster.update_attribute(self.ON_OFF, t.Bool.true) if on_time > 0: self._off_listener = async_call_later( self._ch_pool.hass, @@ -333,13 +333,13 @@ class OnOffChannel(ZigbeeChannel): self.set_to_off, ) elif cmd == "toggle": - self.attribute_updated(self.ON_OFF, not bool(self._state)) + self.cluster.update_attribute(self.ON_OFF, not bool(self.on_off)) @callback def set_to_off(self, *_): """Set the state to off.""" self._off_listener = None - self.attribute_updated(self.ON_OFF, False) + self.cluster.update_attribute(self.ON_OFF, t.Bool.false) @callback def attribute_updated(self, attrid, value): @@ -348,11 +348,6 @@ class OnOffChannel(ZigbeeChannel): self.async_send_signal( f"{self.unique_id}_{SIGNAL_ATTR_UPDATED}", attrid, "on_off", value ) - self._state = bool(value) - - async def async_initialize_channel_specific(self, from_cache: bool) -> None: - """Initialize channel.""" - self._state = self.on_off async def async_update(self): """Initialize channel.""" @@ -360,9 +355,7 @@ class OnOffChannel(ZigbeeChannel): return from_cache = not self._ch_pool.is_mains_powered self.debug("attempting to update onoff state - from cache: %s", from_cache) - state = await self.get_attribute_value(self.ON_OFF, from_cache=from_cache) - if state is not None: - self._state = bool(state) + await self.get_attribute_value(self.ON_OFF, from_cache=from_cache) await super().async_update() diff --git a/homeassistant/components/zha/switch.py b/homeassistant/components/zha/switch.py index 87d2407c2dc..254e3691da1 100644 --- a/homeassistant/components/zha/switch.py +++ b/homeassistant/components/zha/switch.py @@ -46,21 +46,73 @@ async def async_setup_entry( config_entry.async_on_unload(unsub) -class BaseSwitch(SwitchEntity): - """Common base class for zha switches.""" +@STRICT_MATCH(channel_names=CHANNEL_ON_OFF) +class Switch(ZhaEntity, SwitchEntity): + """ZHA switch.""" - def __init__(self, *args, **kwargs): + def __init__(self, unique_id, zha_device, channels, **kwargs): """Initialize the ZHA switch.""" - self._on_off_channel = None - self._state = None - super().__init__(*args, **kwargs) + super().__init__(unique_id, zha_device, channels, **kwargs) + self._on_off_channel = self.cluster_channels.get(CHANNEL_ON_OFF) @property def is_on(self) -> bool: """Return if the switch is on based on the statemachine.""" - if self._state is None: + if self._on_off_channel.on_off is None: return False - return self._state + return self._on_off_channel.on_off + + async def async_turn_on(self, **kwargs) -> None: + """Turn the entity on.""" + result = await self._on_off_channel.on() + if isinstance(result, Exception) or result[1] is not Status.SUCCESS: + return + self.async_write_ha_state() + + async def async_turn_off(self, **kwargs) -> None: + """Turn the entity off.""" + result = await self._on_off_channel.off() + if isinstance(result, Exception) or result[1] is not Status.SUCCESS: + return + self.async_write_ha_state() + + @callback + def async_set_state(self, attr_id: int, attr_name: str, value: Any): + """Handle state update from channel.""" + self.async_write_ha_state() + + async def async_added_to_hass(self) -> None: + """Run when about to be added to hass.""" + await super().async_added_to_hass() + self.async_accept_signal( + self._on_off_channel, SIGNAL_ATTR_UPDATED, self.async_set_state + ) + + async def async_update(self) -> None: + """Attempt to retrieve on off state from the switch.""" + await super().async_update() + if self._on_off_channel: + await self._on_off_channel.get_attribute_value("on_off", from_cache=False) + + +@GROUP_MATCH() +class SwitchGroup(ZhaGroupEntity, SwitchEntity): + """Representation of a switch group.""" + + def __init__( + self, entity_ids: list[str], unique_id: str, group_id: int, zha_device, **kwargs + ) -> None: + """Initialize a switch group.""" + super().__init__(entity_ids, unique_id, group_id, zha_device, **kwargs) + self._available: bool + self._state: bool + group = self.zha_device.gateway.get_group(self._group_id) + self._on_off_channel = group.endpoint[OnOff.cluster_id] + + @property + def is_on(self) -> bool: + """Return if the switch is on based on the statemachine.""" + return bool(self._state) async def async_turn_on(self, **kwargs) -> None: """Turn the entity on.""" @@ -78,56 +130,6 @@ class BaseSwitch(SwitchEntity): self._state = False self.async_write_ha_state() - -@STRICT_MATCH(channel_names=CHANNEL_ON_OFF) -class Switch(BaseSwitch, ZhaEntity): - """ZHA switch.""" - - def __init__(self, unique_id, zha_device, channels, **kwargs): - """Initialize the ZHA switch.""" - super().__init__(unique_id, zha_device, channels, **kwargs) - self._on_off_channel = self.cluster_channels.get(CHANNEL_ON_OFF) - - @callback - def async_set_state(self, attr_id: int, attr_name: str, value: Any): - """Handle state update from channel.""" - self._state = bool(value) - self.async_write_ha_state() - - async def async_added_to_hass(self) -> None: - """Run when about to be added to hass.""" - await super().async_added_to_hass() - self.async_accept_signal( - self._on_off_channel, SIGNAL_ATTR_UPDATED, self.async_set_state - ) - - @callback - def async_restore_last_state(self, last_state) -> None: - """Restore previous state.""" - self._state = last_state.state == STATE_ON - - async def async_update(self) -> None: - """Attempt to retrieve on off state from the switch.""" - await super().async_update() - if self._on_off_channel: - state = await self._on_off_channel.get_attribute_value("on_off") - if state is not None: - self._state = state - - -@GROUP_MATCH() -class SwitchGroup(BaseSwitch, ZhaGroupEntity): - """Representation of a switch group.""" - - def __init__( - self, entity_ids: list[str], unique_id: str, group_id: int, zha_device, **kwargs - ) -> None: - """Initialize a switch group.""" - super().__init__(entity_ids, unique_id, group_id, zha_device, **kwargs) - self._available: bool = False - group = self.zha_device.gateway.get_group(self._group_id) - self._on_off_channel = group.endpoint[OnOff.cluster_id] - async def async_update(self) -> None: """Query all members and determine the light group state.""" all_states = [self.hass.states.get(x) for x in self._entity_ids] From 65c3ffd522345069e7a358641a3556e10be2f6e4 Mon Sep 17 00:00:00 2001 From: G Johansson Date: Fri, 29 Apr 2022 19:00:44 +0200 Subject: [PATCH 035/151] Fix sql integration issues 5.0 beta (#71063) Co-authored-by: Paulus Schoutsen --- homeassistant/components/sql/config_flow.py | 30 ++++++++----------- homeassistant/components/sql/strings.json | 4 +++ .../components/sql/translations/en.json | 4 +++ tests/components/sql/__init__.py | 12 +++++++- tests/components/sql/test_config_flow.py | 27 ++++++++++------- tests/components/sql/test_sensor.py | 2 +- 6 files changed, 48 insertions(+), 31 deletions(-) diff --git a/homeassistant/components/sql/config_flow.py b/homeassistant/components/sql/config_flow.py index 4bb9f6c724c..9150cb8f63d 100644 --- a/homeassistant/components/sql/config_flow.py +++ b/homeassistant/components/sql/config_flow.py @@ -23,17 +23,12 @@ _LOGGER = logging.getLogger(__name__) DATA_SCHEMA = vol.Schema( { - vol.Optional(CONF_DB_URL): selector.TextSelector(selector.TextSelectorConfig()), - vol.Required(CONF_COLUMN_NAME): selector.TextSelector( - selector.TextSelectorConfig() - ), - vol.Required(CONF_QUERY): selector.TextSelector(selector.TextSelectorConfig()), - vol.Optional(CONF_UNIT_OF_MEASUREMENT): selector.TextSelector( - selector.TextSelectorConfig() - ), - vol.Optional(CONF_VALUE_TEMPLATE): selector.TemplateSelector( - selector.TemplateSelectorConfig() - ), + vol.Required(CONF_NAME, default="Select SQL Query"): selector.TextSelector(), + vol.Optional(CONF_DB_URL): selector.TextSelector(), + vol.Required(CONF_COLUMN_NAME): selector.TextSelector(), + vol.Required(CONF_QUERY): selector.TextSelector(), + vol.Optional(CONF_UNIT_OF_MEASUREMENT): selector.TextSelector(), + vol.Optional(CONF_VALUE_TEMPLATE): selector.TemplateSelector(), } ) @@ -109,8 +104,7 @@ class SQLConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): column = user_input[CONF_COLUMN_NAME] uom = user_input.get(CONF_UNIT_OF_MEASUREMENT) value_template = user_input.get(CONF_VALUE_TEMPLATE) - - name = f"Select {column} SQL query" + name = user_input[CONF_NAME] try: validate_sql_select(query) @@ -182,17 +176,17 @@ class SQLOptionsFlowHandler(config_entries.OptionsFlow): description={ "suggested_value": self.entry.options[CONF_DB_URL] }, - ): selector.selector({"text": {}}), + ): selector.TextSelector(), vol.Required( CONF_QUERY, description={"suggested_value": self.entry.options[CONF_QUERY]}, - ): selector.selector({"text": {}}), + ): selector.TextSelector(), vol.Required( CONF_COLUMN_NAME, description={ "suggested_value": self.entry.options[CONF_COLUMN_NAME] }, - ): selector.selector({"text": {}}), + ): selector.TextSelector(), vol.Optional( CONF_UNIT_OF_MEASUREMENT, description={ @@ -200,7 +194,7 @@ class SQLOptionsFlowHandler(config_entries.OptionsFlow): CONF_UNIT_OF_MEASUREMENT ) }, - ): selector.selector({"text": {}}), + ): selector.TextSelector(), vol.Optional( CONF_VALUE_TEMPLATE, description={ @@ -208,7 +202,7 @@ class SQLOptionsFlowHandler(config_entries.OptionsFlow): CONF_VALUE_TEMPLATE ) }, - ): selector.selector({"text": {}}), + ): selector.TemplateSelector(), } ), errors=errors, diff --git a/homeassistant/components/sql/strings.json b/homeassistant/components/sql/strings.json index 0d174060d1b..8d3a194ac3e 100644 --- a/homeassistant/components/sql/strings.json +++ b/homeassistant/components/sql/strings.json @@ -12,6 +12,7 @@ "user": { "data": { "db_url": "Database URL", + "name": "[%key:common::config_flow::data::name%]", "query": "Select Query", "column": "Column", "unit_of_measurement": "Unit of Measure", @@ -19,6 +20,7 @@ }, "data_description": { "db_url": "Database URL, leave empty to use default HA database", + "name": "Name that will be used for Config Entry and also the Sensor", "query": "Query to run, needs to start with 'SELECT'", "column": "Column for returned query to present as state", "unit_of_measurement": "Unit of Measure (optional)", @@ -32,6 +34,7 @@ "init": { "data": { "db_url": "[%key:component::sql::config::step::user::data::db_url%]", + "name": "[%key:component::sql::config::step::user::data::name%]", "query": "[%key:component::sql::config::step::user::data::query%]", "column": "[%key:component::sql::config::step::user::data::column%]", "unit_of_measurement": "[%key:component::sql::config::step::user::data::unit_of_measurement%]", @@ -39,6 +42,7 @@ }, "data_description": { "db_url": "[%key:component::sql::config::step::user::data_description::db_url%]", + "name": "[%key:component::sql::config::step::user::data_description::name%]", "query": "[%key:component::sql::config::step::user::data_description::query%]", "column": "[%key:component::sql::config::step::user::data_description::column%]", "unit_of_measurement": "[%key:component::sql::config::step::user::data_description::unit_of_measurement%]", diff --git a/homeassistant/components/sql/translations/en.json b/homeassistant/components/sql/translations/en.json index 3b1fc223c00..4b72d024df4 100644 --- a/homeassistant/components/sql/translations/en.json +++ b/homeassistant/components/sql/translations/en.json @@ -13,6 +13,7 @@ "data": { "column": "Column", "db_url": "Database URL", + "name": "Name", "query": "Select Query", "unit_of_measurement": "Unit of Measure", "value_template": "Value Template" @@ -20,6 +21,7 @@ "data_description": { "column": "Column for returned query to present as state", "db_url": "Database URL, leave empty to use default HA database", + "name": "Name that will be used for Config Entry and also the Sensor", "query": "Query to run, needs to start with 'SELECT'", "unit_of_measurement": "Unit of Measure (optional)", "value_template": "Value Template (optional)" @@ -38,6 +40,7 @@ "data": { "column": "Column", "db_url": "Database URL", + "name": "Name", "query": "Select Query", "unit_of_measurement": "Unit of Measure", "value_template": "Value Template" @@ -45,6 +48,7 @@ "data_description": { "column": "Column for returned query to present as state", "db_url": "Database URL, leave empty to use default HA database", + "name": "Name that will be used for Config Entry and also the Sensor", "query": "Query to run, needs to start with 'SELECT'", "unit_of_measurement": "Unit of Measure (optional)", "value_template": "Value Template (optional)" diff --git a/tests/components/sql/__init__.py b/tests/components/sql/__init__.py index 7138a86a5d6..db65034bd11 100644 --- a/tests/components/sql/__init__.py +++ b/tests/components/sql/__init__.py @@ -6,19 +6,28 @@ from typing import Any from homeassistant.components.recorder import CONF_DB_URL from homeassistant.components.sql.const import CONF_COLUMN_NAME, CONF_QUERY, DOMAIN from homeassistant.config_entries import SOURCE_USER -from homeassistant.const import CONF_UNIT_OF_MEASUREMENT +from homeassistant.const import CONF_NAME, CONF_UNIT_OF_MEASUREMENT from homeassistant.core import HomeAssistant from tests.common import MockConfigEntry ENTRY_CONFIG = { CONF_DB_URL: "sqlite://", + CONF_NAME: "Get Value", CONF_QUERY: "SELECT 5 as value", CONF_COLUMN_NAME: "value", CONF_UNIT_OF_MEASUREMENT: "MiB", } ENTRY_CONFIG_INVALID_QUERY = { + CONF_DB_URL: "sqlite://", + CONF_NAME: "Get Value", + CONF_QUERY: "UPDATE 5 as value", + CONF_COLUMN_NAME: "size", + CONF_UNIT_OF_MEASUREMENT: "MiB", +} + +ENTRY_CONFIG_INVALID_QUERY_OPT = { CONF_DB_URL: "sqlite://", CONF_QUERY: "UPDATE 5 as value", CONF_COLUMN_NAME: "size", @@ -27,6 +36,7 @@ ENTRY_CONFIG_INVALID_QUERY = { ENTRY_CONFIG_NO_RESULTS = { CONF_DB_URL: "sqlite://", + CONF_NAME: "Get Value", CONF_QUERY: "SELECT kalle as value from no_table;", CONF_COLUMN_NAME: "value", CONF_UNIT_OF_MEASUREMENT: "MiB", diff --git a/tests/components/sql/test_config_flow.py b/tests/components/sql/test_config_flow.py index d38abce5da7..ec851b491b7 100644 --- a/tests/components/sql/test_config_flow.py +++ b/tests/components/sql/test_config_flow.py @@ -14,7 +14,12 @@ from homeassistant.data_entry_flow import ( RESULT_TYPE_FORM, ) -from . import ENTRY_CONFIG, ENTRY_CONFIG_INVALID_QUERY, ENTRY_CONFIG_NO_RESULTS +from . import ( + ENTRY_CONFIG, + ENTRY_CONFIG_INVALID_QUERY, + ENTRY_CONFIG_INVALID_QUERY_OPT, + ENTRY_CONFIG_NO_RESULTS, +) from tests.common import MockConfigEntry @@ -40,14 +45,14 @@ async def test_form(hass: HomeAssistant) -> None: print(ENTRY_CONFIG) assert result2["type"] == RESULT_TYPE_CREATE_ENTRY - assert result2["title"] == "Select value SQL query" + assert result2["title"] == "Get Value" assert result2["options"] == { "db_url": "sqlite://", + "name": "Get Value", "query": "SELECT 5 as value", "column": "value", "unit_of_measurement": "MiB", "value_template": None, - "name": "Select value SQL query", } assert len(mock_setup_entry.mock_calls) == 1 @@ -67,14 +72,14 @@ async def test_import_flow_success(hass: HomeAssistant) -> None: await hass.async_block_till_done() assert result2["type"] == RESULT_TYPE_CREATE_ENTRY - assert result2["title"] == "Select value SQL query" + assert result2["title"] == "Get Value" assert result2["options"] == { "db_url": "sqlite://", + "name": "Get Value", "query": "SELECT 5 as value", "column": "value", "unit_of_measurement": "MiB", "value_template": None, - "name": "Select value SQL query", } assert len(mock_setup_entry.mock_calls) == 1 @@ -158,14 +163,14 @@ async def test_flow_fails_invalid_query(hass: HomeAssistant) -> None: ) assert result5["type"] == RESULT_TYPE_CREATE_ENTRY - assert result5["title"] == "Select value SQL query" + assert result5["title"] == "Get Value" assert result5["options"] == { "db_url": "sqlite://", + "name": "Get Value", "query": "SELECT 5 as value", "column": "value", "unit_of_measurement": "MiB", "value_template": None, - "name": "Select value SQL query", } @@ -176,11 +181,11 @@ async def test_options_flow(hass: HomeAssistant) -> None: data={}, options={ "db_url": "sqlite://", + "name": "Get Value", "query": "SELECT 5 as value", "column": "value", "unit_of_measurement": "MiB", "value_template": None, - "name": "Select value SQL query", }, ) entry.add_to_hass(hass) @@ -223,11 +228,11 @@ async def test_options_flow_fails_db_url(hass: HomeAssistant) -> None: data={}, options={ "db_url": "sqlite://", + "name": "Get Value", "query": "SELECT 5 as value", "column": "value", "unit_of_measurement": "MiB", "value_template": None, - "name": "Select value SQL query", }, ) entry.add_to_hass(hass) @@ -267,11 +272,11 @@ async def test_options_flow_fails_invalid_query( data={}, options={ "db_url": "sqlite://", + "name": "Get Value", "query": "SELECT 5 as value", "column": "value", "unit_of_measurement": "MiB", "value_template": None, - "name": "Select size SQL query", }, ) entry.add_to_hass(hass) @@ -287,7 +292,7 @@ async def test_options_flow_fails_invalid_query( result2 = await hass.config_entries.options.async_configure( result["flow_id"], - user_input=ENTRY_CONFIG_INVALID_QUERY, + user_input=ENTRY_CONFIG_INVALID_QUERY_OPT, ) assert result2["type"] == RESULT_TYPE_FORM diff --git a/tests/components/sql/test_sensor.py b/tests/components/sql/test_sensor.py index 77717ec400c..0eb3bf70683 100644 --- a/tests/components/sql/test_sensor.py +++ b/tests/components/sql/test_sensor.py @@ -52,7 +52,7 @@ async def test_import_query(hass: HomeAssistant) -> None: assert hass.config_entries.async_entries(DOMAIN) options = hass.config_entries.async_entries(DOMAIN)[0].options - assert options[CONF_NAME] == "Select value SQL query" + assert options[CONF_NAME] == "count_tables" async def test_query_value_template(hass: HomeAssistant) -> None: From 5a777966e7f528a193733acfe96f42b1c138fd0b Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 29 Apr 2022 10:02:18 -0700 Subject: [PATCH 036/151] Bumped version to 2022.5.0b3 --- homeassistant/const.py | 2 +- setup.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 35d82f64f93..c22f8ddc4c0 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -7,7 +7,7 @@ from .backports.enum import StrEnum MAJOR_VERSION: Final = 2022 MINOR_VERSION: Final = 5 -PATCH_VERSION: Final = "0b2" +PATCH_VERSION: Final = "0b3" __short_version__: Final = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__: Final = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER: Final[tuple[int, int, int]] = (3, 9, 0) diff --git a/setup.cfg b/setup.cfg index 2d916bfbeda..3156fca93ec 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = homeassistant -version = 2022.5.0b2 +version = 2022.5.0b3 author = The Home Assistant Authors author_email = hello@home-assistant.io license = Apache-2.0 From b657a7d68b76909da336a4cfba1a0d5f6cfab0d6 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Fri, 29 Apr 2022 13:18:06 -0500 Subject: [PATCH 037/151] Fix unsafe websocket stop call in isy994 (#71071) Fixes ``` 2022-04-29 12:49:10 ERROR (MainThread) [homeassistant.config_entries] Error unloading entry Alexander (192.168.209.83) for isy994 Traceback (most recent call last): File "/Users/bdraco/home-assistant/homeassistant/config_entries.py", line 474, in async_unload result = await component.async_unload_entry(hass, self) File "/Users/bdraco/home-assistant/homeassistant/components/isy994/__init__.py", line 294, in async_unload_entry await hass.async_add_executor_job(_stop_auto_update) File "/opt/homebrew/Cellar/python@3.9/3.9.12/Frameworks/Python.framework/Versions/3.9/lib/python3.9/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) File "/Users/bdraco/home-assistant/homeassistant/components/isy994/__init__.py", line 292, in _stop_auto_update isy.websocket.stop() File "/Users/bdraco/home-assistant/venv/lib/python3.9/site-packages/pyisy/events/websocket.py", line 110, in stop self.websocket_task.cancel() File "/opt/homebrew/Cellar/python@3.9/3.9.12/Frameworks/Python.framework/Versions/3.9/lib/python3.9/asyncio/base_events.py", line 753, in call_soon self._check_thread() File "/opt/homebrew/Cellar/python@3.9/3.9.12/Frameworks/Python.framework/Versions/3.9/lib/python3.9/asyncio/base_events.py", line 790, in _check_thread raise RuntimeError( RuntimeError: Non-thread-safe operation invoked on an event loop other than the current one ``` --- homeassistant/components/isy994/__init__.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/homeassistant/components/isy994/__init__.py b/homeassistant/components/isy994/__init__.py index ba152c5d840..ae48fc18b5b 100644 --- a/homeassistant/components/isy994/__init__.py +++ b/homeassistant/components/isy994/__init__.py @@ -288,14 +288,10 @@ async def async_unload_entry( hass_isy_data = hass.data[DOMAIN][entry.entry_id] - isy = hass_isy_data[ISY994_ISY] + isy: ISY = hass_isy_data[ISY994_ISY] - def _stop_auto_update() -> None: - """Stop the isy auto update.""" - _LOGGER.debug("ISY Stopping Event Stream and automatic updates") - isy.websocket.stop() - - await hass.async_add_executor_job(_stop_auto_update) + _LOGGER.debug("ISY Stopping Event Stream and automatic updates") + isy.websocket.stop() if unload_ok: hass.data[DOMAIN].pop(entry.entry_id) From cc174022e4403a68f930d861c51996581ee25637 Mon Sep 17 00:00:00 2001 From: Robert Svensson Date: Fri, 29 Apr 2022 22:55:55 +0200 Subject: [PATCH 038/151] Pydeconz raise ResponseError when deCONZ Rest API Plugin is not yet ready (#71078) --- homeassistant/components/deconz/gateway.py | 2 +- tests/components/deconz/test_gateway.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/deconz/gateway.py b/homeassistant/components/deconz/gateway.py index ef07a97ad8f..f54cd4076d3 100644 --- a/homeassistant/components/deconz/gateway.py +++ b/homeassistant/components/deconz/gateway.py @@ -289,6 +289,6 @@ async def get_deconz_session( LOGGER.warning("Invalid key for deCONZ at %s", config[CONF_HOST]) raise AuthenticationRequired from err - except (asyncio.TimeoutError, errors.RequestError) as err: + except (asyncio.TimeoutError, errors.RequestError, errors.ResponseError) as err: LOGGER.error("Error connecting to deCONZ gateway at %s", config[CONF_HOST]) raise CannotConnect from err diff --git a/tests/components/deconz/test_gateway.py b/tests/components/deconz/test_gateway.py index 3a4f6b907af..e6ded3981c4 100644 --- a/tests/components/deconz/test_gateway.py +++ b/tests/components/deconz/test_gateway.py @@ -286,6 +286,7 @@ async def test_get_deconz_session(hass): [ (asyncio.TimeoutError, CannotConnect), (pydeconz.RequestError, CannotConnect), + (pydeconz.ResponseError, CannotConnect), (pydeconz.Unauthorized, AuthenticationRequired), ], ) From b5808a7b4abaa6f82193beb85921fe9bdca803aa Mon Sep 17 00:00:00 2001 From: Robert Svensson Date: Fri, 29 Apr 2022 22:57:38 +0200 Subject: [PATCH 039/151] Don't rely on deCONZ gateway object in config options flow (#71079) --- .../components/deconz/config_flow.py | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/homeassistant/components/deconz/config_flow.py b/homeassistant/components/deconz/config_flow.py index fcfea60533f..806ac72c973 100644 --- a/homeassistant/components/deconz/config_flow.py +++ b/homeassistant/components/deconz/config_flow.py @@ -31,12 +31,15 @@ from .const import ( CONF_ALLOW_CLIP_SENSOR, CONF_ALLOW_DECONZ_GROUPS, CONF_ALLOW_NEW_DEVICES, + DEFAULT_ALLOW_CLIP_SENSOR, + DEFAULT_ALLOW_DECONZ_GROUPS, + DEFAULT_ALLOW_NEW_DEVICES, DEFAULT_PORT, DOMAIN, HASSIO_CONFIGURATION_URL, LOGGER, ) -from .gateway import DeconzGateway, get_gateway_from_config_entry +from .gateway import DeconzGateway DECONZ_MANUFACTURERURL = "http://www.dresden-elektronik.de" CONF_SERIAL = "serial" @@ -298,7 +301,6 @@ class DeconzOptionsFlowHandler(OptionsFlow): self, user_input: dict[str, Any] | None = None ) -> FlowResult: """Manage the deCONZ options.""" - self.gateway = get_gateway_from_config_entry(self.hass, self.config_entry) return await self.async_step_deconz_devices() async def async_step_deconz_devices( @@ -309,22 +311,20 @@ class DeconzOptionsFlowHandler(OptionsFlow): self.options.update(user_input) return self.async_create_entry(title="", data=self.options) + schema_options = {} + for option, default in ( + (CONF_ALLOW_CLIP_SENSOR, DEFAULT_ALLOW_CLIP_SENSOR), + (CONF_ALLOW_DECONZ_GROUPS, DEFAULT_ALLOW_DECONZ_GROUPS), + (CONF_ALLOW_NEW_DEVICES, DEFAULT_ALLOW_NEW_DEVICES), + ): + schema_options[ + vol.Optional( + option, + default=self.config_entry.options.get(option, default), + ) + ] = bool + return self.async_show_form( step_id="deconz_devices", - data_schema=vol.Schema( - { - vol.Optional( - CONF_ALLOW_CLIP_SENSOR, - default=self.gateway.option_allow_clip_sensor, - ): bool, - vol.Optional( - CONF_ALLOW_DECONZ_GROUPS, - default=self.gateway.option_allow_deconz_groups, - ): bool, - vol.Optional( - CONF_ALLOW_NEW_DEVICES, - default=self.gateway.option_allow_new_devices, - ): bool, - } - ), + data_schema=vol.Schema(schema_options), ) From b3e97577fd5634a9e871f491be9f0a7aa32cc5a9 Mon Sep 17 00:00:00 2001 From: Tom Harris Date: Fri, 29 Apr 2022 19:09:21 -0400 Subject: [PATCH 040/151] Patch Insteon Hub connectivity issues (#71081) --- homeassistant/components/insteon/manifest.json | 11 +++++++++-- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/insteon/manifest.json b/homeassistant/components/insteon/manifest.json index ad5736f4d53..fc8ade1ba4d 100644 --- a/homeassistant/components/insteon/manifest.json +++ b/homeassistant/components/insteon/manifest.json @@ -4,11 +4,18 @@ "documentation": "https://www.home-assistant.io/integrations/insteon", "dependencies": ["http", "websocket_api"], "requirements": [ - "pyinsteon==1.1.0b1", + "pyinsteon==1.1.0b3", "insteon-frontend-home-assistant==0.1.0" ], "codeowners": ["@teharris1"], - "dhcp": [{ "macaddress": "000EF3*" }, { "registered_devices": true }], + "dhcp": [ + { + "macaddress": "000EF3*" + }, + { + "registered_devices": true + } + ], "config_flow": true, "iot_class": "local_push", "loggers": ["pyinsteon", "pypubsub"], diff --git a/requirements_all.txt b/requirements_all.txt index da39ee6ce91..bccbb32b0fb 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1547,7 +1547,7 @@ pyialarm==1.9.0 pyicloud==1.0.0 # homeassistant.components.insteon -pyinsteon==1.1.0b1 +pyinsteon==1.1.0b3 # homeassistant.components.intesishome pyintesishome==1.7.6 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index bb5f6f43234..3d7f9acc0a4 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1029,7 +1029,7 @@ pyialarm==1.9.0 pyicloud==1.0.0 # homeassistant.components.insteon -pyinsteon==1.1.0b1 +pyinsteon==1.1.0b3 # homeassistant.components.ipma pyipma==2.0.5 From 05d3ca7e02b950ddfb6d3f3cb0f75fcf475fded5 Mon Sep 17 00:00:00 2001 From: Robert Svensson Date: Sat, 30 Apr 2022 00:34:33 +0200 Subject: [PATCH 041/151] Fix linking issue when deCONZ gateway is not unlocked (#71082) --- homeassistant/components/deconz/config_flow.py | 5 ++++- homeassistant/components/deconz/strings.json | 1 + .../components/deconz/translations/en.json | 1 + tests/components/deconz/test_config_flow.py | 16 +++++++++++++--- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/deconz/config_flow.py b/homeassistant/components/deconz/config_flow.py index 806ac72c973..af37ee96878 100644 --- a/homeassistant/components/deconz/config_flow.py +++ b/homeassistant/components/deconz/config_flow.py @@ -8,7 +8,7 @@ from typing import Any, cast from urllib.parse import urlparse import async_timeout -from pydeconz.errors import RequestError, ResponseError +from pydeconz.errors import LinkButtonNotPressed, RequestError, ResponseError from pydeconz.gateway import DeconzSession from pydeconz.utils import ( DiscoveredBridge, @@ -160,6 +160,9 @@ class DeconzFlowHandler(ConfigFlow, domain=DOMAIN): async with async_timeout.timeout(10): api_key = await deconz_session.get_api_key() + except LinkButtonNotPressed: + errors["base"] = "linking_not_possible" + except (ResponseError, RequestError, asyncio.TimeoutError): errors["base"] = "no_key" diff --git a/homeassistant/components/deconz/strings.json b/homeassistant/components/deconz/strings.json index 0fa929f9e63..4098951d714 100644 --- a/homeassistant/components/deconz/strings.json +++ b/homeassistant/components/deconz/strings.json @@ -23,6 +23,7 @@ } }, "error": { + "linking_not_possible": "Couldn't link with the gateway", "no_key": "Couldn't get an API key" }, "abort": { diff --git a/homeassistant/components/deconz/translations/en.json b/homeassistant/components/deconz/translations/en.json index a8e09fd20d7..16034e12414 100644 --- a/homeassistant/components/deconz/translations/en.json +++ b/homeassistant/components/deconz/translations/en.json @@ -9,6 +9,7 @@ "updated_instance": "Updated deCONZ instance with new host address" }, "error": { + "linking_not_possible": "Couldn't link with the gateway", "no_key": "Couldn't get an API key" }, "flow_title": "{host}", diff --git a/tests/components/deconz/test_config_flow.py b/tests/components/deconz/test_config_flow.py index 8ed1e348fee..97b2f7ee164 100644 --- a/tests/components/deconz/test_config_flow.py +++ b/tests/components/deconz/test_config_flow.py @@ -4,6 +4,7 @@ import asyncio from unittest.mock import patch import pydeconz +import pytest from homeassistant.components import ssdp from homeassistant.components.deconz.config_flow import ( @@ -341,7 +342,16 @@ async def test_manual_configuration_timeout_get_bridge(hass, aioclient_mock): assert result["reason"] == "no_bridges" -async def test_link_get_api_key_ResponseError(hass, aioclient_mock): +@pytest.mark.parametrize( + "raised_error, error_string", + [ + (pydeconz.errors.LinkButtonNotPressed, "linking_not_possible"), + (asyncio.TimeoutError, "no_key"), + (pydeconz.errors.ResponseError, "no_key"), + (pydeconz.errors.RequestError, "no_key"), + ], +) +async def test_link_step_fails(hass, aioclient_mock, raised_error, error_string): """Test config flow should abort if no API key was possible to retrieve.""" aioclient_mock.get( pydeconz.utils.URL_DISCOVER, @@ -360,7 +370,7 @@ async def test_link_get_api_key_ResponseError(hass, aioclient_mock): assert result["type"] == RESULT_TYPE_FORM assert result["step_id"] == "link" - aioclient_mock.post("http://1.2.3.4:80/api", exc=pydeconz.errors.ResponseError) + aioclient_mock.post("http://1.2.3.4:80/api", exc=raised_error) result = await hass.config_entries.flow.async_configure( result["flow_id"], user_input={} @@ -368,7 +378,7 @@ async def test_link_get_api_key_ResponseError(hass, aioclient_mock): assert result["type"] == RESULT_TYPE_FORM assert result["step_id"] == "link" - assert result["errors"] == {"base": "no_key"} + assert result["errors"] == {"base": error_string} async def test_reauth_flow_update_configuration(hass, aioclient_mock): From 4b860452565012cb4d7dc5903537d1b472d813a4 Mon Sep 17 00:00:00 2001 From: "David F. Mulcahey" Date: Fri, 29 Apr 2022 18:35:53 -0400 Subject: [PATCH 042/151] Fix ZHA cover initial state (#71083) --- .../components/zha/core/channels/security.py | 12 ++++++------ homeassistant/components/zha/core/gateway.py | 4 ++-- homeassistant/components/zha/entity.py | 6 ++---- homeassistant/components/zha/select.py | 6 ------ 4 files changed, 10 insertions(+), 18 deletions(-) diff --git a/homeassistant/components/zha/core/channels/security.py b/homeassistant/components/zha/core/channels/security.py index 19be861178f..0e1e0f8e8a3 100644 --- a/homeassistant/components/zha/core/channels/security.py +++ b/homeassistant/components/zha/core/channels/security.py @@ -84,7 +84,7 @@ class IasAce(ZigbeeChannel): @callback def cluster_command(self, tsn, command_id, args) -> None: """Handle commands received to this cluster.""" - self.warning( + self.debug( "received command %s", self._cluster.server_commands[command_id].name ) self.command_map[command_id](*args) @@ -120,7 +120,7 @@ class IasAce(ZigbeeChannel): code != self.panel_code and self.armed_state != AceCluster.PanelStatus.Panel_Disarmed ): - self.warning("Invalid code supplied to IAS ACE") + self.debug("Invalid code supplied to IAS ACE") self.invalid_tries += 1 zigbee_reply = self.arm_response( AceCluster.ArmNotification.Invalid_Arm_Disarm_Code @@ -131,12 +131,12 @@ class IasAce(ZigbeeChannel): self.armed_state == AceCluster.PanelStatus.Panel_Disarmed and self.alarm_status == AceCluster.AlarmStatus.No_Alarm ): - self.warning("IAS ACE already disarmed") + self.debug("IAS ACE already disarmed") zigbee_reply = self.arm_response( AceCluster.ArmNotification.Already_Disarmed ) else: - self.warning("Disarming all IAS ACE zones") + self.debug("Disarming all IAS ACE zones") zigbee_reply = self.arm_response( AceCluster.ArmNotification.All_Zones_Disarmed ) @@ -177,12 +177,12 @@ class IasAce(ZigbeeChannel): ) -> None: """Arm the panel with the specified statuses.""" if self.code_required_arm_actions and code != self.panel_code: - self.warning("Invalid code supplied to IAS ACE") + self.debug("Invalid code supplied to IAS ACE") zigbee_reply = self.arm_response( AceCluster.ArmNotification.Invalid_Arm_Disarm_Code ) else: - self.warning("Arming all IAS ACE zones") + self.debug("Arming all IAS ACE zones") self.armed_state = panel_status zigbee_reply = self.arm_response(armed_type) return zigbee_reply diff --git a/homeassistant/components/zha/core/gateway.py b/homeassistant/components/zha/core/gateway.py index 1280f3defe3..0ba375362f7 100644 --- a/homeassistant/components/zha/core/gateway.py +++ b/homeassistant/components/zha/core/gateway.py @@ -240,14 +240,14 @@ class ZHAGateway: async def async_initialize_devices_and_entities(self) -> None: """Initialize devices and load entities.""" - _LOGGER.warning("Loading all devices") + _LOGGER.debug("Loading all devices") await asyncio.gather( *(dev.async_initialize(from_cache=True) for dev in self.devices.values()) ) async def fetch_updated_state() -> None: """Fetch updated state for mains powered devices.""" - _LOGGER.warning("Fetching current state for mains powered devices") + _LOGGER.debug("Fetching current state for mains powered devices") await asyncio.gather( *( dev.async_initialize(from_cache=False) diff --git a/homeassistant/components/zha/entity.py b/homeassistant/components/zha/entity.py index 50ffb8f4fcd..e9ea9ee871a 100644 --- a/homeassistant/components/zha/entity.py +++ b/homeassistant/components/zha/entity.py @@ -206,10 +206,8 @@ class ZhaEntity(BaseZhaEntity, RestoreEntity): signal_override=True, ) - if not self.zha_device.is_mains_powered: - # mains powered devices will get real time state - if last_state := await self.async_get_last_state(): - self.async_restore_last_state(last_state) + if last_state := await self.async_get_last_state(): + self.async_restore_last_state(last_state) self.async_accept_signal( None, diff --git a/homeassistant/components/zha/select.py b/homeassistant/components/zha/select.py index b9237e24eef..afa2ee18da9 100644 --- a/homeassistant/components/zha/select.py +++ b/homeassistant/components/zha/select.py @@ -86,12 +86,6 @@ class ZHAEnumSelectEntity(ZhaEntity, SelectEntity): self._channel.data_cache[self._attr_name] = self._enum[option.replace(" ", "_")] self.async_write_ha_state() - async def async_added_to_hass(self) -> None: - """Run when about to be added to hass.""" - await super().async_added_to_hass() - if last_state := await self.async_get_last_state(): - self.async_restore_last_state(last_state) - @callback def async_restore_last_state(self, last_state) -> None: """Restore previous state.""" From 2ab19464e54af012772689379558d33dde0ef9aa Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 29 Apr 2022 16:09:38 -0700 Subject: [PATCH 043/151] Fix /config/server_control redirect (#71084) --- homeassistant/components/frontend/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/frontend/__init__.py b/homeassistant/components/frontend/__init__.py index 55d745eb309..0c540a477ef 100644 --- a/homeassistant/components/frontend/__init__.py +++ b/homeassistant/components/frontend/__init__.py @@ -360,13 +360,13 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: if os.path.isdir(local): hass.http.register_static_path("/local", local, not is_dev) + # Can be removed in 2023 + hass.http.register_redirect("/config/server_control", "/developer-tools/yaml") + hass.http.app.router.register_resource(IndexView(repo_path, hass)) async_register_built_in_panel(hass, "profile") - # Can be removed in 2023 - hass.http.register_redirect("/config/server_control", "/developer-tools/yaml") - async_register_built_in_panel( hass, "developer-tools", From e72b53371cfb923cd3b9eb719245d62741dc9d8f Mon Sep 17 00:00:00 2001 From: Zack Barett Date: Fri, 29 Apr 2022 18:09:08 -0500 Subject: [PATCH 044/151] Frontend bump 20220429.0 (#71085) --- 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 c806b21e723..e57f06827a5 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==20220428.0"], + "requirements": ["home-assistant-frontend==20220429.0"], "dependencies": [ "api", "auth", diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index bf6ad12b287..0cb893be99d 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -15,7 +15,7 @@ ciso8601==2.2.0 cryptography==36.0.2 fnvhash==0.1.0 hass-nabucasa==0.54.0 -home-assistant-frontend==20220428.0 +home-assistant-frontend==20220429.0 httpx==0.22.0 ifaddr==0.1.7 jinja2==3.1.1 diff --git a/requirements_all.txt b/requirements_all.txt index bccbb32b0fb..d2de6e8e19b 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -819,7 +819,7 @@ hole==0.7.0 holidays==0.13 # homeassistant.components.frontend -home-assistant-frontend==20220428.0 +home-assistant-frontend==20220429.0 # homeassistant.components.home_connect homeconnect==0.7.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 3d7f9acc0a4..e9592a41271 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -580,7 +580,7 @@ hole==0.7.0 holidays==0.13 # homeassistant.components.frontend -home-assistant-frontend==20220428.0 +home-assistant-frontend==20220429.0 # homeassistant.components.home_connect homeconnect==0.7.0 From 1c6e5ea844cb8cf8349b64ffe0198360b1da96ce Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 29 Apr 2022 16:10:40 -0700 Subject: [PATCH 045/151] Bumped version to 2022.5.0b4 --- homeassistant/const.py | 2 +- setup.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index c22f8ddc4c0..a5db224ee60 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -7,7 +7,7 @@ from .backports.enum import StrEnum MAJOR_VERSION: Final = 2022 MINOR_VERSION: Final = 5 -PATCH_VERSION: Final = "0b3" +PATCH_VERSION: Final = "0b4" __short_version__: Final = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__: Final = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER: Final[tuple[int, int, int]] = (3, 9, 0) diff --git a/setup.cfg b/setup.cfg index 3156fca93ec..03b13f004eb 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = homeassistant -version = 2022.5.0b3 +version = 2022.5.0b4 author = The Home Assistant Authors author_email = hello@home-assistant.io license = Apache-2.0 From 205a8fc752f6ae6fd34543372ddfde4cfeaf57d2 Mon Sep 17 00:00:00 2001 From: Diogo Gomes Date: Sat, 30 Apr 2022 00:16:05 +0100 Subject: [PATCH 046/151] update unit_of_measurement even if unit_of_measurement is known (#69699) --- homeassistant/components/integration/sensor.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/integration/sensor.py b/homeassistant/components/integration/sensor.py index 40229404288..8cf5da5bc7c 100644 --- a/homeassistant/components/integration/sensor.py +++ b/homeassistant/components/integration/sensor.py @@ -196,10 +196,11 @@ class IntegrationSensor(RestoreEntity, SensorEntity): # or device_class. update_state = False - if self._unit_of_measurement is None: - unit = new_state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) - if unit is not None: - self._unit_of_measurement = self._unit_template.format(unit) + unit = new_state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) + if unit is not None: + new_unit_of_measurement = self._unit_template.format(unit) + if self._unit_of_measurement != new_unit_of_measurement: + self._unit_of_measurement = new_unit_of_measurement update_state = True if ( From 51aa070e19408e59b3da795c29b546bbe5d0e721 Mon Sep 17 00:00:00 2001 From: Michael <35783820+mib1185@users.noreply.github.com> Date: Fri, 29 Apr 2022 21:29:06 +0200 Subject: [PATCH 047/151] Fix "station is open" binary sensor in Tankerkoenig (#70928) --- homeassistant/components/tankerkoenig/binary_sensor.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/tankerkoenig/binary_sensor.py b/homeassistant/components/tankerkoenig/binary_sensor.py index 4b58ea26703..9a2b048e0b8 100644 --- a/homeassistant/components/tankerkoenig/binary_sensor.py +++ b/homeassistant/components/tankerkoenig/binary_sensor.py @@ -74,5 +74,5 @@ class StationOpenBinarySensorEntity(CoordinatorEntity, BinarySensorEntity): @property def is_on(self) -> bool | None: """Return true if the station is open.""" - data = self.coordinator.data[self._station_id] - return data is not None and "status" in data + data: dict = self.coordinator.data[self._station_id] + return data is not None and data.get("status") == "open" From 5d37cfc61e684cbd7908db8247bbedbc9a9c2849 Mon Sep 17 00:00:00 2001 From: Dave T <17680170+davet2001@users.noreply.github.com> Date: Mon, 2 May 2022 00:13:21 +0100 Subject: [PATCH 048/151] Generic camera handle template adjacent to portnumber (#71031) --- .../components/generic/config_flow.py | 30 ++++++++----- tests/components/generic/test_config_flow.py | 42 +++++++++++++++++++ 2 files changed, 62 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/generic/config_flow.py b/homeassistant/components/generic/config_flow.py index 4298b473681..086262aa0a1 100644 --- a/homeassistant/components/generic/config_flow.py +++ b/homeassistant/components/generic/config_flow.py @@ -130,10 +130,9 @@ async def async_test_still(hass, info) -> tuple[dict[str, str], str | None]: fmt = None if not (url := info.get(CONF_STILL_IMAGE_URL)): return {}, info.get(CONF_CONTENT_TYPE, "image/jpeg") - if not isinstance(url, template_helper.Template) and url: - url = cv.template(url) - url.hass = hass try: + if not isinstance(url, template_helper.Template): + url = template_helper.Template(url, hass) url = url.async_render(parse_result=False) except TemplateError as err: _LOGGER.warning("Problem rendering template %s: %s", url, err) @@ -168,11 +167,20 @@ async def async_test_still(hass, info) -> tuple[dict[str, str], str | None]: return {}, f"image/{fmt}" -def slug_url(url) -> str | None: +def slug(hass, template) -> str | None: """Convert a camera url into a string suitable for a camera name.""" - if not url: + if not template: return None - return slugify(yarl.URL(url).host) + if not isinstance(template, template_helper.Template): + template = template_helper.Template(template, hass) + try: + url = template.async_render(parse_result=False) + return slugify(yarl.URL(url).host) + except TemplateError as err: + _LOGGER.error("Syntax error in '%s': %s", template.template, err) + except (ValueError, TypeError) as err: + _LOGGER.error("Syntax error in '%s': %s", url, err) + return None async def async_test_stream(hass, info) -> dict[str, str]: @@ -252,6 +260,7 @@ class GenericIPCamConfigFlow(ConfigFlow, domain=DOMAIN): ) -> FlowResult: """Handle the start of the config flow.""" errors = {} + hass = self.hass if user_input: # Secondary validation because serialised vol can't seem to handle this complexity: if not user_input.get(CONF_STILL_IMAGE_URL) and not user_input.get( @@ -263,8 +272,7 @@ class GenericIPCamConfigFlow(ConfigFlow, domain=DOMAIN): errors = errors | await async_test_stream(self.hass, user_input) still_url = user_input.get(CONF_STILL_IMAGE_URL) stream_url = user_input.get(CONF_STREAM_SOURCE) - name = slug_url(still_url) or slug_url(stream_url) or DEFAULT_NAME - + name = slug(hass, still_url) or slug(hass, stream_url) or DEFAULT_NAME if not errors: user_input[CONF_CONTENT_TYPE] = still_format user_input[CONF_LIMIT_REFETCH_TO_URL_CHANGE] = False @@ -295,7 +303,8 @@ class GenericIPCamConfigFlow(ConfigFlow, domain=DOMAIN): still_url = import_config.get(CONF_STILL_IMAGE_URL) stream_url = import_config.get(CONF_STREAM_SOURCE) name = import_config.get( - CONF_NAME, slug_url(still_url) or slug_url(stream_url) or DEFAULT_NAME + CONF_NAME, + slug(self.hass, still_url) or slug(self.hass, stream_url) or DEFAULT_NAME, ) if CONF_LIMIT_REFETCH_TO_URL_CHANGE not in import_config: import_config[CONF_LIMIT_REFETCH_TO_URL_CHANGE] = False @@ -318,6 +327,7 @@ class GenericOptionsFlowHandler(OptionsFlow): ) -> FlowResult: """Manage Generic IP Camera options.""" errors: dict[str, str] = {} + hass = self.hass if user_input is not None: errors, still_format = await async_test_still( @@ -327,7 +337,7 @@ class GenericOptionsFlowHandler(OptionsFlow): still_url = user_input.get(CONF_STILL_IMAGE_URL) stream_url = user_input.get(CONF_STREAM_SOURCE) if not errors: - title = slug_url(still_url) or slug_url(stream_url) or DEFAULT_NAME + title = slug(hass, still_url) or slug(hass, stream_url) or DEFAULT_NAME if still_url is None: # If user didn't specify a still image URL, # The automatically generated still image that stream generates diff --git a/tests/components/generic/test_config_flow.py b/tests/components/generic/test_config_flow.py index f5411ed3ea0..457cac26aa5 100644 --- a/tests/components/generic/test_config_flow.py +++ b/tests/components/generic/test_config_flow.py @@ -165,6 +165,48 @@ async def test_form_only_still_sample(hass, user_flow, image_file): assert result2["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY +@respx.mock +@pytest.mark.parametrize( + ("template", "url", "expected_result"), + [ + # Test we can handle templates in strange parts of the url, #70961. + ( + "http://localhost:812{{3}}/static/icons/favicon-apple-180x180.png", + "http://localhost:8123/static/icons/favicon-apple-180x180.png", + data_entry_flow.RESULT_TYPE_CREATE_ENTRY, + ), + ( + "{% if 1 %}https://bla{% else %}https://yo{% endif %}", + "https://bla/", + data_entry_flow.RESULT_TYPE_CREATE_ENTRY, + ), + ( + "http://{{example.org", + "http://example.org", + data_entry_flow.RESULT_TYPE_FORM, + ), + ( + "invalid1://invalid:4\\1", + "invalid1://invalid:4%5c1", + data_entry_flow.RESULT_TYPE_CREATE_ENTRY, + ), + ], +) +async def test_still_template( + hass, user_flow, fakeimgbytes_png, template, url, expected_result +) -> None: + """Test we can handle various templates.""" + respx.get(url).respond(stream=fakeimgbytes_png) + data = TESTDATA.copy() + data.pop(CONF_STREAM_SOURCE) + data[CONF_STILL_IMAGE_URL] = template + result2 = await hass.config_entries.flow.async_configure( + user_flow["flow_id"], + data, + ) + assert result2["type"] == expected_result + + @respx.mock async def test_form_rtsp_mode(hass, fakeimg_png, mock_av_open, user_flow): """Test we complete ok if the user enters a stream url.""" From 26b6952c06fe6fb4c6b436d83aa0da52d1467cdb Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Fri, 29 Apr 2022 23:24:26 -0500 Subject: [PATCH 049/151] Reduce calls to asyncio.iscoroutine (#71090) --- homeassistant/core.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/homeassistant/core.py b/homeassistant/core.py index 69e776a1dcd..7245dad7864 100644 --- a/homeassistant/core.py +++ b/homeassistant/core.py @@ -192,18 +192,15 @@ class HassJob(Generic[_R_co]): def __init__(self, target: Callable[..., _R_co]) -> None: """Create a job object.""" - if asyncio.iscoroutine(target): - raise ValueError("Coroutine not allowed to be passed to HassJob") - self.target = target - self.job_type = _get_callable_job_type(target) + self.job_type = _get_hassjob_callable_job_type(target) def __repr__(self) -> str: """Return the job.""" return f"" -def _get_callable_job_type(target: Callable[..., Any]) -> HassJobType: +def _get_hassjob_callable_job_type(target: Callable[..., Any]) -> HassJobType: """Determine the job type from the callable.""" # Check for partials to properly determine if coroutine function check_target = target @@ -214,6 +211,8 @@ def _get_callable_job_type(target: Callable[..., Any]) -> HassJobType: return HassJobType.Coroutinefunction if is_callback(check_target): return HassJobType.Callback + if asyncio.iscoroutine(check_target): + raise ValueError("Coroutine not allowed to be passed to HassJob") return HassJobType.Executor From 4c7c7b72b7bfe69db102f8c8c8b5721f4aa99078 Mon Sep 17 00:00:00 2001 From: Robert Hillis Date: Sat, 30 Apr 2022 11:40:57 -0400 Subject: [PATCH 050/151] Clean up Steam integration (#71091) * Clean up Steam * uno mas * uno mas * uno mas --- .../components/steam_online/config_flow.py | 79 ++++++++----------- .../components/steam_online/const.py | 9 ++- .../components/steam_online/coordinator.py | 9 +-- .../components/steam_online/sensor.py | 6 +- .../components/steam_online/strings.json | 4 +- .../steam_online/translations/en.json | 4 +- tests/components/steam_online/__init__.py | 31 ++------ .../steam_online/test_config_flow.py | 7 +- 8 files changed, 58 insertions(+), 91 deletions(-) diff --git a/homeassistant/components/steam_online/config_flow.py b/homeassistant/components/steam_online/config_flow.py index cfac20da11b..246d54c0bff 100644 --- a/homeassistant/components/steam_online/config_flow.py +++ b/homeassistant/components/steam_online/config_flow.py @@ -13,7 +13,14 @@ from homeassistant.data_entry_flow import FlowResult from homeassistant.helpers import config_validation as cv, entity_registry as er from homeassistant.helpers.typing import ConfigType -from .const import CONF_ACCOUNT, CONF_ACCOUNTS, DEFAULT_NAME, DOMAIN, LOGGER +from .const import ( + CONF_ACCOUNT, + CONF_ACCOUNTS, + DEFAULT_NAME, + DOMAIN, + LOGGER, + PLACEHOLDERS, +) def validate_input(user_input: dict[str, str | int]) -> list[dict[str, str | int]]: @@ -52,14 +59,14 @@ class SteamFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): if res[0] is not None: name = str(res[0]["personaname"]) else: - errors = {"base": "invalid_account"} + errors["base"] = "invalid_account" except (steam.api.HTTPError, steam.api.HTTPTimeoutError) as ex: - errors = {"base": "cannot_connect"} + errors["base"] = "cannot_connect" if "403" in str(ex): - errors = {"base": "invalid_auth"} + errors["base"] = "invalid_auth" except Exception as ex: # pylint:disable=broad-except LOGGER.exception("Unknown exception: %s", ex) - errors = {"base": "unknown"} + errors["base"] = "unknown" if not errors: entry = await self.async_set_unique_id(user_input[CONF_ACCOUNT]) if entry and self.source == config_entries.SOURCE_REAUTH: @@ -70,20 +77,12 @@ class SteamFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): if self.source == config_entries.SOURCE_IMPORT: accounts_data = { CONF_ACCOUNTS: { - acc["steamid"]: { - "name": acc["personaname"], - "enabled": True, - } - for acc in res + acc["steamid"]: acc["personaname"] for acc in res } } user_input.pop(CONF_ACCOUNTS) else: - accounts_data = { - CONF_ACCOUNTS: { - user_input[CONF_ACCOUNT]: {"name": name, "enabled": True} - } - } + accounts_data = {CONF_ACCOUNTS: {user_input[CONF_ACCOUNT]: name}} return self.async_create_entry( title=name or DEFAULT_NAME, data=user_input, @@ -103,6 +102,7 @@ class SteamFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): } ), errors=errors, + description_placeholders=PLACEHOLDERS, ) async def async_step_import(self, import_config: ConfigType) -> FlowResult: @@ -111,7 +111,7 @@ class SteamFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): if entry.data[CONF_API_KEY] == import_config[CONF_API_KEY]: return self.async_abort(reason="already_configured") LOGGER.warning( - "Steam yaml config in now deprecated and has been imported. " + "Steam yaml config is now deprecated and has been imported. " "Please remove it from your config" ) import_config[CONF_ACCOUNT] = import_config[CONF_ACCOUNTS][0] @@ -131,7 +131,9 @@ class SteamFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): return await self.async_step_user() self._set_confirm_only() - return self.async_show_form(step_id="reauth_confirm") + return self.async_show_form( + step_id="reauth_confirm", description_placeholders=PLACEHOLDERS + ) class SteamOptionsFlowHandler(config_entries.OptionsFlow): @@ -148,56 +150,38 @@ class SteamOptionsFlowHandler(config_entries.OptionsFlow): """Manage Steam options.""" if user_input is not None: await self.hass.config_entries.async_unload(self.entry.entry_id) - for k in self.options[CONF_ACCOUNTS]: - if ( - self.options[CONF_ACCOUNTS][k]["enabled"] - and k not in user_input[CONF_ACCOUNTS] - and ( - entity_id := er.async_get(self.hass).async_get_entity_id( - Platform.SENSOR, DOMAIN, f"sensor.steam_{k}" - ) + for _id in self.options[CONF_ACCOUNTS]: + if _id not in user_input[CONF_ACCOUNTS] and ( + entity_id := er.async_get(self.hass).async_get_entity_id( + Platform.SENSOR, DOMAIN, f"sensor.steam_{_id}" ) ): er.async_get(self.hass).async_remove(entity_id) channel_data = { CONF_ACCOUNTS: { - k: { - "name": v["name"], - "enabled": k in user_input[CONF_ACCOUNTS], - } - for k, v in self.options[CONF_ACCOUNTS].items() - if k in user_input[CONF_ACCOUNTS] + _id: name + for _id, name in self.options[CONF_ACCOUNTS].items() + if _id in user_input[CONF_ACCOUNTS] } } await self.hass.config_entries.async_reload(self.entry.entry_id) return self.async_create_entry(title="", data=channel_data) try: users = { - name["steamid"]: {"name": name["personaname"], "enabled": False} + name["steamid"]: name["personaname"] for name in await self.hass.async_add_executor_job(self.get_accounts) } except steam.api.HTTPTimeoutError: users = self.options[CONF_ACCOUNTS] - _users = users | self.options[CONF_ACCOUNTS] - self.options[CONF_ACCOUNTS] = { - k: v - for k, v in _users.items() - if k in users or self.options[CONF_ACCOUNTS][k]["enabled"] - } options = { vol.Required( CONF_ACCOUNTS, - default={ - k - for k in self.options[CONF_ACCOUNTS] - if self.options[CONF_ACCOUNTS][k]["enabled"] - }, - ): cv.multi_select( - {k: v["name"] for k, v in self.options[CONF_ACCOUNTS].items()} - ), + default=set(self.options[CONF_ACCOUNTS]), + ): cv.multi_select(users | self.options[CONF_ACCOUNTS]), } + self.options[CONF_ACCOUNTS] = users | self.options[CONF_ACCOUNTS] return self.async_show_form(step_id="init", data_schema=vol.Schema(options)) @@ -205,7 +189,6 @@ class SteamOptionsFlowHandler(config_entries.OptionsFlow): """Get accounts.""" interface = steam.api.interface("ISteamUser") friends = interface.GetFriendList(steamid=self.entry.data[CONF_ACCOUNT]) - friends = friends["friendslist"]["friends"] - _users_str = [user["steamid"] for user in friends] + _users_str = [user["steamid"] for user in friends["friendslist"]["friends"]] names = interface.GetPlayerSummaries(steamids=_users_str) return names["response"]["players"]["player"] diff --git a/homeassistant/components/steam_online/const.py b/homeassistant/components/steam_online/const.py index 63206230073..01f4410a7c9 100644 --- a/homeassistant/components/steam_online/const.py +++ b/homeassistant/components/steam_online/const.py @@ -11,6 +11,11 @@ DOMAIN: Final = "steam_online" LOGGER = logging.getLogger(__package__) +PLACEHOLDERS = { + "api_key_url": "https://steamcommunity.com/dev/apikey", + "account_id_url": "https://steamid.io", +} + STATE_OFFLINE = "offline" STATE_ONLINE = "online" STATE_BUSY = "busy" @@ -30,6 +35,4 @@ STEAM_STATUSES = { STEAM_API_URL = "https://steamcdn-a.akamaihd.net/steam/apps/" STEAM_HEADER_IMAGE_FILE = "header.jpg" STEAM_MAIN_IMAGE_FILE = "capsule_616x353.jpg" -STEAM_ICON_URL = ( - "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/apps/%d/%s.jpg" -) +STEAM_ICON_URL = "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/apps/" diff --git a/homeassistant/components/steam_online/coordinator.py b/homeassistant/components/steam_online/coordinator.py index 8f535999247..78c850b0ac9 100644 --- a/homeassistant/components/steam_online/coordinator.py +++ b/homeassistant/components/steam_online/coordinator.py @@ -28,7 +28,7 @@ class SteamDataUpdateCoordinator(DataUpdateCoordinator): name=DOMAIN, update_interval=timedelta(seconds=30), ) - self.game_icons: dict = {} + self.game_icons: dict[int, str] = {} self.player_interface: INTMethod = None self.user_interface: INTMethod = None steam.api.key.set(self.config_entry.data[CONF_API_KEY]) @@ -36,7 +36,7 @@ class SteamDataUpdateCoordinator(DataUpdateCoordinator): def _update(self) -> dict[str, dict[str, str | int]]: """Fetch data from API endpoint.""" accounts = self.config_entry.options[CONF_ACCOUNTS] - _ids = [k for k in accounts if accounts[k]["enabled"]] + _ids = list(accounts) if not self.user_interface or not self.player_interface: self.user_interface = steam.api.interface("ISteamUser") self.player_interface = steam.api.interface("IPlayerService") @@ -46,7 +46,7 @@ class SteamDataUpdateCoordinator(DataUpdateCoordinator): steamid=_id, include_appinfo=1 )["response"] self.game_icons = self.game_icons | { - game["appid"]: game["img_icon_url"] for game in res.get("games", {}) + game["appid"]: game["img_icon_url"] for game in res.get("games", []) } response = self.user_interface.GetPlayerSummaries(steamids=_ids) players = { @@ -56,8 +56,7 @@ class SteamDataUpdateCoordinator(DataUpdateCoordinator): } for k in players: data = self.player_interface.GetSteamLevel(steamid=players[k]["steamid"]) - data = data["response"] - players[k]["level"] = data["player_level"] + players[k]["level"] = data["response"]["player_level"] return players async def _async_update_data(self) -> dict[str, dict[str, str | int]]: diff --git a/homeassistant/components/steam_online/sensor.py b/homeassistant/components/steam_online/sensor.py index 466bd46f38f..be175b41b66 100644 --- a/homeassistant/components/steam_online/sensor.py +++ b/homeassistant/components/steam_online/sensor.py @@ -65,7 +65,6 @@ async def async_setup_entry( async_add_entities( SteamSensor(hass.data[DOMAIN][entry.entry_id], account) for account in entry.options[CONF_ACCOUNTS] - if entry.options[CONF_ACCOUNTS][account]["enabled"] ) @@ -106,10 +105,7 @@ class SteamSensor(SteamEntity, SensorEntity): attrs["game_image_header"] = f"{game_url}{STEAM_HEADER_IMAGE_FILE}" attrs["game_image_main"] = f"{game_url}{STEAM_MAIN_IMAGE_FILE}" if info := self._get_game_icon(player): - attrs["game_icon"] = STEAM_ICON_URL % ( - game_id, - info, - ) + attrs["game_icon"] = f"{STEAM_ICON_URL}{game_id}/{info}.jpg" self._attr_name = player["personaname"] self._attr_entity_picture = player["avatarmedium"] if last_online := player.get("lastlogoff"): diff --git a/homeassistant/components/steam_online/strings.json b/homeassistant/components/steam_online/strings.json index 67484f0276b..6d80bb77f1b 100644 --- a/homeassistant/components/steam_online/strings.json +++ b/homeassistant/components/steam_online/strings.json @@ -2,7 +2,7 @@ "config": { "step": { "user": { - "description": "Use https://steamid.io to find your Steam account ID", + "description": "Use {account_id_url} to find your Steam account ID", "data": { "api_key": "[%key:common::config_flow::data::api_key%]", "account": "Steam account ID" @@ -10,7 +10,7 @@ }, "reauth_confirm": { "title": "[%key:common::config_flow::title::reauth%]", - "description": "The Steam integration needs to be manually re-authenticated\n\nYou can find your key here: https://steamcommunity.com/dev/apikey" + "description": "The Steam integration needs to be manually re-authenticated\n\nYou can find your key here: {api_key_url}" } }, "error": { diff --git a/homeassistant/components/steam_online/translations/en.json b/homeassistant/components/steam_online/translations/en.json index 8b34a85922d..990a33dbeff 100644 --- a/homeassistant/components/steam_online/translations/en.json +++ b/homeassistant/components/steam_online/translations/en.json @@ -12,7 +12,7 @@ }, "step": { "reauth_confirm": { - "description": "The Steam integration needs to be manually re-authenticated\n\nYou can find your key here: https://steamcommunity.com/dev/apikey", + "description": "The Steam integration needs to be manually re-authenticated\n\nYou can find your key here: {api_key_url}", "title": "Reauthenticate Integration" }, "user": { @@ -20,7 +20,7 @@ "account": "Steam account ID", "api_key": "API Key" }, - "description": "Use https://steamid.io to find your Steam account ID" + "description": "Use {account_id_url} to find your Steam account ID" } } }, diff --git a/tests/components/steam_online/__init__.py b/tests/components/steam_online/__init__.py index 729877e58bc..27958b76576 100644 --- a/tests/components/steam_online/__init__.py +++ b/tests/components/steam_online/__init__.py @@ -3,7 +3,7 @@ from unittest.mock import patch from homeassistant.components.steam_online import DOMAIN from homeassistant.components.steam_online.const import CONF_ACCOUNT, CONF_ACCOUNTS -from homeassistant.const import CONF_API_KEY, CONF_NAME +from homeassistant.const import CONF_API_KEY from homeassistant.core import HomeAssistant from tests.common import MockConfigEntry @@ -19,38 +19,19 @@ CONF_DATA = { CONF_ACCOUNT: ACCOUNT_1, } -CONF_OPTIONS = { - CONF_ACCOUNTS: { - ACCOUNT_1: { - CONF_NAME: ACCOUNT_NAME_1, - "enabled": True, - } - } -} +CONF_OPTIONS = {CONF_ACCOUNTS: {ACCOUNT_1: ACCOUNT_NAME_1}} CONF_OPTIONS_2 = { CONF_ACCOUNTS: { - ACCOUNT_1: { - CONF_NAME: ACCOUNT_NAME_1, - "enabled": True, - }, - ACCOUNT_2: { - CONF_NAME: ACCOUNT_NAME_2, - "enabled": True, - }, + ACCOUNT_1: ACCOUNT_NAME_1, + ACCOUNT_2: ACCOUNT_NAME_2, } } CONF_IMPORT_OPTIONS = { CONF_ACCOUNTS: { - ACCOUNT_1: { - CONF_NAME: ACCOUNT_NAME_1, - "enabled": True, - }, - ACCOUNT_2: { - CONF_NAME: ACCOUNT_NAME_2, - "enabled": True, - }, + ACCOUNT_1: ACCOUNT_NAME_1, + ACCOUNT_2: ACCOUNT_NAME_2, } } diff --git a/tests/components/steam_online/test_config_flow.py b/tests/components/steam_online/test_config_flow.py index 68b7612f049..6d8a16f35f7 100644 --- a/tests/components/steam_online/test_config_flow.py +++ b/tests/components/steam_online/test_config_flow.py @@ -1,4 +1,6 @@ """Test Steam config flow.""" +from unittest.mock import patch + import steam from homeassistant import data_entry_flow @@ -25,7 +27,10 @@ from . import ( async def test_flow_user(hass: HomeAssistant) -> None: """Test user initialized flow.""" - with patch_interface(): + with patch_interface(), patch( + "homeassistant.components.steam_online.async_setup_entry", + return_value=True, + ): result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": SOURCE_USER}, From 4346d8cc2f2ac71fd9900cafb7bbad4310a01a44 Mon Sep 17 00:00:00 2001 From: Tom Harris Date: Sat, 30 Apr 2022 00:26:27 -0400 Subject: [PATCH 051/151] Fix Insteon tests (#71092) --- .../insteon/fixtures/kpl_properties.json | 2 +- tests/components/insteon/mock_devices.py | 20 ++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/tests/components/insteon/fixtures/kpl_properties.json b/tests/components/insteon/fixtures/kpl_properties.json index 725432dbedc..db694e4a7eb 100644 --- a/tests/components/insteon/fixtures/kpl_properties.json +++ b/tests/components/insteon/fixtures/kpl_properties.json @@ -3,7 +3,7 @@ "program_lock_on": false, "blink_on_tx_on": false, "resume_dim_on": false, - "led_on": false, + "led_off": false, "key_beep_on": false, "rf_disable_on": false, "powerline_disable_on": false, diff --git a/tests/components/insteon/mock_devices.py b/tests/components/insteon/mock_devices.py index 6e6a8eccfcc..ef64b1e0969 100644 --- a/tests/components/insteon/mock_devices.py +++ b/tests/components/insteon/mock_devices.py @@ -1,7 +1,7 @@ """Mock devices object to test Insteon.""" import asyncio -from unittest.mock import AsyncMock, MagicMock +from unittest.mock import AsyncMock, MagicMock, patch from pyinsteon.address import Address from pyinsteon.constants import ALDBStatus, ResponseStatus @@ -129,18 +129,20 @@ class MockDevices: def fill_properties(self, address, props_dict): """Fill the operating flags and extended properties of a device.""" + device = self._devices[Address(address)] operating_flags = props_dict.get("operating_flags", {}) properties = props_dict.get("properties", {}) - for flag in operating_flags: - value = operating_flags[flag] - if device.operating_flags.get(flag): - device.operating_flags[flag].load(value) - for flag in properties: - value = properties[flag] - if device.properties.get(flag): - device.properties[flag].load(value) + with patch("pyinsteon.subscriber_base.publish_topic", MagicMock()): + for flag in operating_flags: + value = operating_flags[flag] + if device.operating_flags.get(flag): + device.operating_flags[flag].load(value) + for flag in properties: + value = properties[flag] + if device.properties.get(flag): + device.properties[flag].load(value) async def async_add_device(self, address=None, multiple=False): """Mock the async_add_device method.""" From c0b6d6a44e0093d147f5791092bfaf83bc45337b Mon Sep 17 00:00:00 2001 From: Raman Gupta <7243222+raman325@users.noreply.github.com> Date: Sat, 30 Apr 2022 02:59:39 -0400 Subject: [PATCH 052/151] Bump zwave-js-server-python to 0.36.1 (#71096) --- homeassistant/components/zwave_js/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/zwave_js/manifest.json b/homeassistant/components/zwave_js/manifest.json index c9edf28bd93..934c3f9a3f5 100644 --- a/homeassistant/components/zwave_js/manifest.json +++ b/homeassistant/components/zwave_js/manifest.json @@ -3,7 +3,7 @@ "name": "Z-Wave JS", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/zwave_js", - "requirements": ["zwave-js-server-python==0.36.0"], + "requirements": ["zwave-js-server-python==0.36.1"], "codeowners": ["@home-assistant/z-wave"], "dependencies": ["usb", "http", "websocket_api"], "iot_class": "local_push", diff --git a/requirements_all.txt b/requirements_all.txt index d2de6e8e19b..f1f8b5425ed 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2510,7 +2510,7 @@ zigpy==0.45.1 zm-py==0.5.2 # homeassistant.components.zwave_js -zwave-js-server-python==0.36.0 +zwave-js-server-python==0.36.1 # homeassistant.components.zwave_me zwave_me_ws==0.2.4 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index e9592a41271..09a496e774b 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1641,7 +1641,7 @@ zigpy-znp==0.7.0 zigpy==0.45.1 # homeassistant.components.zwave_js -zwave-js-server-python==0.36.0 +zwave-js-server-python==0.36.1 # homeassistant.components.zwave_me zwave_me_ws==0.2.4 From 4f784c42ab9babef0df9269791873a78c2c2c73c Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Mon, 2 May 2022 06:49:50 +0200 Subject: [PATCH 053/151] Fix missing device & entity references in automations (#71103) --- .../components/automation/__init__.py | 33 +++++++--- tests/components/automation/test_init.py | 60 ++++++++++++++++--- 2 files changed, 77 insertions(+), 16 deletions(-) diff --git a/homeassistant/components/automation/__init__.py b/homeassistant/components/automation/__init__.py index 857d2d4b49f..c743e1f83fd 100644 --- a/homeassistant/components/automation/__init__.py +++ b/homeassistant/components/automation/__init__.py @@ -17,6 +17,7 @@ from homeassistant.const import ( CONF_CONDITION, CONF_DEVICE_ID, CONF_ENTITY_ID, + CONF_EVENT_DATA, CONF_ID, CONF_MODE, CONF_PLATFORM, @@ -360,9 +361,7 @@ class AutomationEntity(ToggleEntity, RestoreEntity): referenced |= condition.async_extract_devices(conf) for conf in self._trigger_config: - device = _trigger_extract_device(conf) - if device is not None: - referenced.add(device) + referenced |= set(_trigger_extract_device(conf)) self._referenced_devices = referenced return referenced @@ -764,12 +763,22 @@ async def _async_process_if(hass, name, config, p_config): @callback -def _trigger_extract_device(trigger_conf: dict) -> str | None: +def _trigger_extract_device(trigger_conf: dict) -> list[str]: """Extract devices from a trigger config.""" - if trigger_conf[CONF_PLATFORM] != "device": - return None + if trigger_conf[CONF_PLATFORM] == "device": + return [trigger_conf[CONF_DEVICE_ID]] - return trigger_conf[CONF_DEVICE_ID] + if ( + trigger_conf[CONF_PLATFORM] == "event" + and CONF_EVENT_DATA in trigger_conf + and CONF_DEVICE_ID in trigger_conf[CONF_EVENT_DATA] + ): + return [trigger_conf[CONF_EVENT_DATA][CONF_DEVICE_ID]] + + if trigger_conf[CONF_PLATFORM] == "tag" and CONF_DEVICE_ID in trigger_conf: + return trigger_conf[CONF_DEVICE_ID] + + return [] @callback @@ -778,6 +787,9 @@ def _trigger_extract_entities(trigger_conf: dict) -> list[str]: if trigger_conf[CONF_PLATFORM] in ("state", "numeric_state"): return trigger_conf[CONF_ENTITY_ID] + if trigger_conf[CONF_PLATFORM] == "calendar": + return [trigger_conf[CONF_ENTITY_ID]] + if trigger_conf[CONF_PLATFORM] == "zone": return trigger_conf[CONF_ENTITY_ID] + [trigger_conf[CONF_ZONE]] @@ -787,4 +799,11 @@ def _trigger_extract_entities(trigger_conf: dict) -> list[str]: if trigger_conf[CONF_PLATFORM] == "sun": return ["sun.sun"] + if ( + trigger_conf[CONF_PLATFORM] == "event" + and CONF_EVENT_DATA in trigger_conf + and CONF_ENTITY_ID in trigger_conf[CONF_EVENT_DATA] + ): + return [trigger_conf[CONF_EVENT_DATA][CONF_ENTITY_ID]] + return [] diff --git a/tests/components/automation/test_init.py b/tests/components/automation/test_init.py index 1c90abe72ca..ccb508c6acc 100644 --- a/tests/components/automation/test_init.py +++ b/tests/components/automation/test_init.py @@ -1079,6 +1079,7 @@ async def test_automation_restore_last_triggered_with_initial_state(hass): async def test_extraction_functions(hass): """Test extraction functions.""" + await async_setup_component(hass, "calendar", {"calendar": {"platform": "demo"}}) assert await async_setup_component( hass, DOMAIN, @@ -1086,7 +1087,24 @@ async def test_extraction_functions(hass): DOMAIN: [ { "alias": "test1", - "trigger": {"platform": "state", "entity_id": "sensor.trigger_1"}, + "trigger": [ + {"platform": "state", "entity_id": "sensor.trigger_state"}, + { + "platform": "numeric_state", + "entity_id": "sensor.trigger_numeric_state", + "above": 10, + }, + { + "platform": "calendar", + "entity_id": "calendar.trigger_calendar", + "event": "start", + }, + { + "platform": "event", + "event_type": "state_changed", + "event_data": {"entity_id": "sensor.trigger_event"}, + }, + ], "condition": { "condition": "state", "entity_id": "light.condition_state", @@ -1111,13 +1129,30 @@ async def test_extraction_functions(hass): }, { "alias": "test2", - "trigger": { - "platform": "device", - "domain": "light", - "type": "turned_on", - "entity_id": "light.trigger_2", - "device_id": "trigger-device-2", - }, + "trigger": [ + { + "platform": "device", + "domain": "light", + "type": "turned_on", + "entity_id": "light.trigger_2", + "device_id": "trigger-device-2", + }, + { + "platform": "tag", + "tag_id": "1234", + "device_id": "device-trigger-tag1", + }, + { + "platform": "tag", + "tag_id": "1234", + "device_id": ["device-trigger-tag2", "device-trigger-tag3"], + }, + { + "platform": "event", + "event_type": "esphome.button_pressed", + "event_data": {"device_id": "device-trigger-event"}, + }, + ], "condition": { "condition": "device", "device_id": "condition-device", @@ -1159,7 +1194,10 @@ async def test_extraction_functions(hass): "automation.test2", } assert set(automation.entities_in_automation(hass, "automation.test1")) == { - "sensor.trigger_1", + "calendar.trigger_calendar", + "sensor.trigger_state", + "sensor.trigger_numeric_state", + "sensor.trigger_event", "light.condition_state", "light.in_both", "light.in_first", @@ -1173,6 +1211,10 @@ async def test_extraction_functions(hass): "condition-device", "device-in-both", "device-in-last", + "device-trigger-event", + "device-trigger-tag1", + "device-trigger-tag2", + "device-trigger-tag3", } From ce73b517b8185ec26101d06cd0bce9e1a6403ce2 Mon Sep 17 00:00:00 2001 From: G Johansson Date: Sat, 30 Apr 2022 13:59:59 +0200 Subject: [PATCH 054/151] Bump pysensibo to 1.0.13 (#71105) --- homeassistant/components/sensibo/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/sensibo/manifest.json b/homeassistant/components/sensibo/manifest.json index 122fea51d6a..535824aaa19 100644 --- a/homeassistant/components/sensibo/manifest.json +++ b/homeassistant/components/sensibo/manifest.json @@ -2,7 +2,7 @@ "domain": "sensibo", "name": "Sensibo", "documentation": "https://www.home-assistant.io/integrations/sensibo", - "requirements": ["pysensibo==1.0.12"], + "requirements": ["pysensibo==1.0.13"], "config_flow": true, "codeowners": ["@andrey-git", "@gjohansson-ST"], "iot_class": "cloud_polling", diff --git a/requirements_all.txt b/requirements_all.txt index f1f8b5425ed..95c1140ffcd 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1783,7 +1783,7 @@ pysaj==0.0.16 pysdcp==1 # homeassistant.components.sensibo -pysensibo==1.0.12 +pysensibo==1.0.13 # homeassistant.components.serial # homeassistant.components.zha diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 09a496e774b..9838a151c0f 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1196,7 +1196,7 @@ pyruckus==0.12 pysabnzbd==1.1.1 # homeassistant.components.sensibo -pysensibo==1.0.12 +pysensibo==1.0.13 # homeassistant.components.serial # homeassistant.components.zha From 3ce531e2f18ac775366f9b81ff45e79b10956c50 Mon Sep 17 00:00:00 2001 From: G Johansson Date: Sat, 30 Apr 2022 18:28:47 +0200 Subject: [PATCH 055/151] Sensibo bugfix device on (#71106) Co-authored-by: J. Nick Koston --- homeassistant/components/sensibo/climate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/sensibo/climate.py b/homeassistant/components/sensibo/climate.py index 3ab6f06c4fb..907105b5384 100644 --- a/homeassistant/components/sensibo/climate.py +++ b/homeassistant/components/sensibo/climate.py @@ -45,7 +45,7 @@ HA_TO_SENSIBO = {value: key for key, value in SENSIBO_TO_HA.items()} AC_STATE_TO_DATA = { "targetTemperature": "target_temp", "fanLevel": "fan_mode", - "on": "on", + "on": "device_on", "mode": "hvac_mode", "swing": "swing_mode", } From 6a110e5a7760fc02b0c01db3d34eb44b72ac5053 Mon Sep 17 00:00:00 2001 From: Shay Levy Date: Sat, 30 Apr 2022 19:24:24 +0300 Subject: [PATCH 056/151] Add entity id to template error logging (#71107) * Add entity id to template error logging * Increase coverage --- .../template/alarm_control_panel.py | 3 +- homeassistant/components/template/cover.py | 3 +- homeassistant/components/template/fan.py | 30 ++++++++++++++----- homeassistant/components/template/light.py | 30 +++++++++++++------ homeassistant/components/template/vacuum.py | 13 +++++--- tests/components/template/test_light.py | 1 + 6 files changed, 57 insertions(+), 23 deletions(-) diff --git a/homeassistant/components/template/alarm_control_panel.py b/homeassistant/components/template/alarm_control_panel.py index 07610a59457..9d81dce28fe 100644 --- a/homeassistant/components/template/alarm_control_panel.py +++ b/homeassistant/components/template/alarm_control_panel.py @@ -207,8 +207,9 @@ class AlarmControlPanelTemplate(TemplateEntity, AlarmControlPanelEntity): return _LOGGER.error( - "Received invalid alarm panel state: %s. Expected: %s", + "Received invalid alarm panel state: %s for entity %s. Expected: %s", result, + self.entity_id, ", ".join(_VALID_STATES), ) self._state = None diff --git a/homeassistant/components/template/cover.py b/homeassistant/components/template/cover.py index 7a05f9445f9..e1df61bf4a2 100644 --- a/homeassistant/components/template/cover.py +++ b/homeassistant/components/template/cover.py @@ -222,8 +222,9 @@ class CoverTemplate(TemplateEntity, CoverEntity): self._is_closing = state == STATE_CLOSING else: _LOGGER.error( - "Received invalid cover is_on state: %s. Expected: %s", + "Received invalid cover is_on state: %s for entity %s. Expected: %s", state, + self.entity_id, ", ".join(_VALID_STATES), ) if not self._position_template: diff --git a/homeassistant/components/template/fan.py b/homeassistant/components/template/fan.py index 2ee63e7e318..6b0fdefc2f9 100644 --- a/homeassistant/components/template/fan.py +++ b/homeassistant/components/template/fan.py @@ -285,8 +285,9 @@ class TemplateFan(TemplateEntity, FanEntity): """Set the preset_mode of the fan.""" if self.preset_modes and preset_mode not in self.preset_modes: _LOGGER.error( - "Received invalid preset_mode: %s. Expected: %s", + "Received invalid preset_mode: %s for entity %s. Expected: %s", preset_mode, + self.entity_id, self.preset_modes, ) return @@ -322,8 +323,9 @@ class TemplateFan(TemplateEntity, FanEntity): ) else: _LOGGER.error( - "Received invalid direction: %s. Expected: %s", + "Received invalid direction: %s for entity %s. Expected: %s", direction, + self.entity_id, ", ".join(_VALID_DIRECTIONS), ) @@ -341,8 +343,9 @@ class TemplateFan(TemplateEntity, FanEntity): self._state = None else: _LOGGER.error( - "Received invalid fan is_on state: %s. Expected: %s", + "Received invalid fan is_on state: %s for entity %s. Expected: %s", result, + self.entity_id, ", ".join(_VALID_STATES), ) self._state = None @@ -390,7 +393,11 @@ class TemplateFan(TemplateEntity, FanEntity): try: percentage = int(float(percentage)) except ValueError: - _LOGGER.error("Received invalid percentage: %s", percentage) + _LOGGER.error( + "Received invalid percentage: %s for entity %s", + percentage, + self.entity_id, + ) self._percentage = 0 self._preset_mode = None return @@ -399,7 +406,11 @@ class TemplateFan(TemplateEntity, FanEntity): self._percentage = percentage self._preset_mode = None else: - _LOGGER.error("Received invalid percentage: %s", percentage) + _LOGGER.error( + "Received invalid percentage: %s for entity %s", + percentage, + self.entity_id, + ) self._percentage = 0 self._preset_mode = None @@ -416,8 +427,9 @@ class TemplateFan(TemplateEntity, FanEntity): self._preset_mode = None else: _LOGGER.error( - "Received invalid preset_mode: %s. Expected: %s", + "Received invalid preset_mode: %s for entity %s. Expected: %s", preset_mode, + self.entity_id, self.preset_mode, ) self._percentage = None @@ -434,8 +446,9 @@ class TemplateFan(TemplateEntity, FanEntity): self._oscillating = None else: _LOGGER.error( - "Received invalid oscillating: %s. Expected: True/False", + "Received invalid oscillating: %s for entity %s. Expected: True/False", oscillating, + self.entity_id, ) self._oscillating = None @@ -448,8 +461,9 @@ class TemplateFan(TemplateEntity, FanEntity): self._direction = None else: _LOGGER.error( - "Received invalid direction: %s. Expected: %s", + "Received invalid direction: %s for entity %s. Expected: %s", direction, + self.entity_id, ", ".join(_VALID_DIRECTIONS), ) self._direction = None diff --git a/homeassistant/components/template/light.py b/homeassistant/components/template/light.py index d2260aa10dc..5a79b3db8fc 100644 --- a/homeassistant/components/template/light.py +++ b/homeassistant/components/template/light.py @@ -393,8 +393,9 @@ class LightTemplate(TemplateEntity, LightEntity): effect = kwargs[ATTR_EFFECT] if effect not in self._effect_list: _LOGGER.error( - "Received invalid effect: %s. Expected one of: %s", + "Received invalid effect: %s for entity %s. Expected one of: %s", effect, + self.entity_id, self._effect_list, exc_info=True, ) @@ -443,7 +444,9 @@ class LightTemplate(TemplateEntity, LightEntity): self._brightness = int(brightness) else: _LOGGER.error( - "Received invalid brightness : %s. Expected: 0-255", brightness + "Received invalid brightness : %s for entity %s. Expected: 0-255", + brightness, + self.entity_id, ) self._brightness = None except ValueError: @@ -464,7 +467,9 @@ class LightTemplate(TemplateEntity, LightEntity): self._white_value = int(white_value) else: _LOGGER.error( - "Received invalid white value: %s. Expected: 0-255", white_value + "Received invalid white value: %s for entity %s. Expected: 0-255", + white_value, + self.entity_id, ) self._white_value = None except ValueError: @@ -483,8 +488,9 @@ class LightTemplate(TemplateEntity, LightEntity): if not isinstance(effect_list, list): _LOGGER.error( - "Received invalid effect list: %s. Expected list of strings", + "Received invalid effect list: %s for entity %s. Expected list of strings", effect_list, + self.entity_id, ) self._effect_list = None return @@ -504,8 +510,9 @@ class LightTemplate(TemplateEntity, LightEntity): if effect not in self._effect_list: _LOGGER.error( - "Received invalid effect: %s. Expected one of: %s", + "Received invalid effect: %s for entity %s. Expected one of: %s", effect, + self.entity_id, self._effect_list, ) self._effect = None @@ -533,8 +540,9 @@ class LightTemplate(TemplateEntity, LightEntity): return _LOGGER.error( - "Received invalid light is_on state: %s. Expected: %s", + "Received invalid light is_on state: %s for entity %s. Expected: %s", state, + self.entity_id, ", ".join(_VALID_STATES), ) self._state = None @@ -551,8 +559,9 @@ class LightTemplate(TemplateEntity, LightEntity): self._temperature = temperature else: _LOGGER.error( - "Received invalid color temperature : %s. Expected: %s-%s", + "Received invalid color temperature : %s for entity %s. Expected: %s-%s", temperature, + self.entity_id, self.min_mireds, self.max_mireds, ) @@ -591,13 +600,16 @@ class LightTemplate(TemplateEntity, LightEntity): self._color = (h_str, s_str) elif h_str is not None and s_str is not None: _LOGGER.error( - "Received invalid hs_color : (%s, %s). Expected: (0-360, 0-100)", + "Received invalid hs_color : (%s, %s) for entity %s. Expected: (0-360, 0-100)", h_str, s_str, + self.entity_id, ) self._color = None else: - _LOGGER.error("Received invalid hs_color : (%s)", render) + _LOGGER.error( + "Received invalid hs_color : (%s) for entity %s", render, self.entity_id + ) self._color = None @callback diff --git a/homeassistant/components/template/vacuum.py b/homeassistant/components/template/vacuum.py index 2a004eabc9a..1d350d120c7 100644 --- a/homeassistant/components/template/vacuum.py +++ b/homeassistant/components/template/vacuum.py @@ -253,8 +253,9 @@ class TemplateVacuum(TemplateEntity, StateVacuumEntity): ) else: _LOGGER.error( - "Received invalid fan speed: %s. Expected: %s", + "Received invalid fan speed: %s for entity %s. Expected: %s", fan_speed, + self.entity_id, self._attr_fan_speed_list, ) @@ -298,8 +299,9 @@ class TemplateVacuum(TemplateEntity, StateVacuumEntity): self._state = None else: _LOGGER.error( - "Received invalid vacuum state: %s. Expected: %s", + "Received invalid vacuum state: %s for entity %s. Expected: %s", result, + self.entity_id, ", ".join(_VALID_STATES), ) self._state = None @@ -312,7 +314,9 @@ class TemplateVacuum(TemplateEntity, StateVacuumEntity): raise ValueError except ValueError: _LOGGER.error( - "Received invalid battery level: %s. Expected: 0-100", battery_level + "Received invalid battery level: %s for entity %s. Expected: 0-100", + battery_level, + self.entity_id, ) self._attr_battery_level = None return @@ -333,8 +337,9 @@ class TemplateVacuum(TemplateEntity, StateVacuumEntity): self._attr_fan_speed = None else: _LOGGER.error( - "Received invalid fan speed: %s. Expected: %s", + "Received invalid fan speed: %s for entity %s. Expected: %s", fan_speed, + self.entity_id, self._attr_fan_speed_list, ) self._attr_fan_speed = None diff --git a/tests/components/template/test_light.py b/tests/components/template/test_light.py index 2b877c52c4f..642fa5601cf 100644 --- a/tests/components/template/test_light.py +++ b/tests/components/template/test_light.py @@ -1025,6 +1025,7 @@ async def test_color_action_no_template(hass, start_ha, calls): ((359.9, 99.9), {"replace6": '"{{(359.9, 99.9)}}"'}), (None, {"replace6": '"{{(361, 100)}}"'}), (None, {"replace6": '"{{(360, 101)}}"'}), + (None, {"replace6": '"[{{(360)}},{{null}}]"'}), (None, {"replace6": '"{{x - 12}}"'}), (None, {"replace6": '""'}), (None, {"replace6": '"{{ none }}"'}), From adc2f3d16951578078e1c3b6605ec3c7cc5b02a1 Mon Sep 17 00:00:00 2001 From: Matthias Alphart Date: Sat, 30 Apr 2022 15:25:41 +0200 Subject: [PATCH 057/151] Update xknx to 0.21.0 (#71108) --- homeassistant/components/knx/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/knx/manifest.json b/homeassistant/components/knx/manifest.json index 06ccba386d8..f5b1bdc6206 100644 --- a/homeassistant/components/knx/manifest.json +++ b/homeassistant/components/knx/manifest.json @@ -3,7 +3,7 @@ "name": "KNX", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/knx", - "requirements": ["xknx==0.20.4"], + "requirements": ["xknx==0.21.0"], "codeowners": ["@Julius2342", "@farmio", "@marvin-w"], "quality_scale": "platinum", "iot_class": "local_push", diff --git a/requirements_all.txt b/requirements_all.txt index 95c1140ffcd..f2ed9354f40 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2445,7 +2445,7 @@ xbox-webapi==2.0.11 xboxapi==2.0.1 # homeassistant.components.knx -xknx==0.20.4 +xknx==0.21.0 # homeassistant.components.bluesound # homeassistant.components.fritz diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 9838a151c0f..df6be01b0ce 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1597,7 +1597,7 @@ wolf_smartset==0.1.11 xbox-webapi==2.0.11 # homeassistant.components.knx -xknx==0.20.4 +xknx==0.21.0 # homeassistant.components.bluesound # homeassistant.components.fritz From c1bbcfd275da71b2322fa886adbd543e6fd66e24 Mon Sep 17 00:00:00 2001 From: Allen Porter Date: Sat, 30 Apr 2022 09:33:30 -0700 Subject: [PATCH 058/151] Bump gcal_sync to 0.7.0 (#71116) --- homeassistant/components/google/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/google/manifest.json b/homeassistant/components/google/manifest.json index 0e9a2fe7ddb..46c5844819a 100644 --- a/homeassistant/components/google/manifest.json +++ b/homeassistant/components/google/manifest.json @@ -4,7 +4,7 @@ "config_flow": true, "dependencies": ["auth"], "documentation": "https://www.home-assistant.io/integrations/calendar.google/", - "requirements": ["gcal-sync==0.6.3", "oauth2client==4.1.3"], + "requirements": ["gcal-sync==0.7.0", "oauth2client==4.1.3"], "codeowners": ["@allenporter"], "iot_class": "cloud_polling", "loggers": ["googleapiclient"] diff --git a/requirements_all.txt b/requirements_all.txt index f2ed9354f40..bc6f24cd830 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -689,7 +689,7 @@ gTTS==2.2.4 garages-amsterdam==3.0.0 # homeassistant.components.google -gcal-sync==0.6.3 +gcal-sync==0.7.0 # homeassistant.components.geniushub geniushub-client==0.6.30 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index df6be01b0ce..3ddba1992a0 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -486,7 +486,7 @@ gTTS==2.2.4 garages-amsterdam==3.0.0 # homeassistant.components.google -gcal-sync==0.6.3 +gcal-sync==0.7.0 # homeassistant.components.usgs_earthquakes_feed geojson_client==0.6 From 47d19b3967566a5efbed8673754aa240b1457364 Mon Sep 17 00:00:00 2001 From: Robert Svensson Date: Sat, 30 Apr 2022 18:26:14 +0200 Subject: [PATCH 059/151] Fix copy paste issue leaving one device trigger with a wrong subtype (#71121) --- homeassistant/components/deconz/device_trigger.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/deconz/device_trigger.py b/homeassistant/components/deconz/device_trigger.py index c76aaf481bf..c92ad7f46dc 100644 --- a/homeassistant/components/deconz/device_trigger.py +++ b/homeassistant/components/deconz/device_trigger.py @@ -403,7 +403,7 @@ AQARA_OPPLE_4_BUTTONS = { AQARA_OPPLE_6_BUTTONS_MODEL = "lumi.remote.b686opcn01" AQARA_OPPLE_6_BUTTONS = { **AQARA_OPPLE_4_BUTTONS, - (CONF_LONG_PRESS, CONF_DIM_DOWN): {CONF_EVENT: 5001}, + (CONF_LONG_PRESS, CONF_LEFT): {CONF_EVENT: 5001}, (CONF_SHORT_RELEASE, CONF_LEFT): {CONF_EVENT: 5002}, (CONF_LONG_RELEASE, CONF_LEFT): {CONF_EVENT: 5003}, (CONF_DOUBLE_PRESS, CONF_LEFT): {CONF_EVENT: 5004}, From 475135663855b15e787548430f5e3bd75e8d9ebf Mon Sep 17 00:00:00 2001 From: Robert Svensson Date: Sat, 30 Apr 2022 19:33:47 +0200 Subject: [PATCH 060/151] Make deCONZ SSDP discovery more strict by matching on manufacturerURL (#71124) --- homeassistant/components/deconz/config_flow.py | 6 ------ homeassistant/components/deconz/manifest.json | 3 ++- homeassistant/components/deconz/strings.json | 1 - homeassistant/generated/ssdp.py | 3 ++- tests/components/deconz/test_config_flow.py | 16 ---------------- 5 files changed, 4 insertions(+), 25 deletions(-) diff --git a/homeassistant/components/deconz/config_flow.py b/homeassistant/components/deconz/config_flow.py index af37ee96878..28205a7382d 100644 --- a/homeassistant/components/deconz/config_flow.py +++ b/homeassistant/components/deconz/config_flow.py @@ -215,12 +215,6 @@ class DeconzFlowHandler(ConfigFlow, domain=DOMAIN): async def async_step_ssdp(self, discovery_info: ssdp.SsdpServiceInfo) -> FlowResult: """Handle a discovered deCONZ bridge.""" - if ( - discovery_info.upnp.get(ssdp.ATTR_UPNP_MANUFACTURER_URL) - != DECONZ_MANUFACTURERURL - ): - return self.async_abort(reason="not_deconz_bridge") - LOGGER.debug("deCONZ SSDP discovery %s", pformat(discovery_info)) self.bridge_id = normalize_bridge_id(discovery_info.upnp[ssdp.ATTR_UPNP_SERIAL]) diff --git a/homeassistant/components/deconz/manifest.json b/homeassistant/components/deconz/manifest.json index dee41435779..1ce3477db70 100644 --- a/homeassistant/components/deconz/manifest.json +++ b/homeassistant/components/deconz/manifest.json @@ -6,7 +6,8 @@ "requirements": ["pydeconz==91"], "ssdp": [ { - "manufacturer": "Royal Philips Electronics" + "manufacturer": "Royal Philips Electronics", + "manufacturerURL": "http://www.dresden-elektronik.de" } ], "codeowners": ["@Kane610"], diff --git a/homeassistant/components/deconz/strings.json b/homeassistant/components/deconz/strings.json index 4098951d714..55bb86d03f6 100644 --- a/homeassistant/components/deconz/strings.json +++ b/homeassistant/components/deconz/strings.json @@ -31,7 +31,6 @@ "already_in_progress": "[%key:common::config_flow::abort::already_in_progress%]", "no_bridges": "No deCONZ bridges discovered", "no_hardware_available": "No radio hardware connected to deCONZ", - "not_deconz_bridge": "Not a deCONZ bridge", "updated_instance": "Updated deCONZ instance with new host address" } }, diff --git a/homeassistant/generated/ssdp.py b/homeassistant/generated/ssdp.py index 1c0876cd791..851d9b0fd10 100644 --- a/homeassistant/generated/ssdp.py +++ b/homeassistant/generated/ssdp.py @@ -24,7 +24,8 @@ SSDP = { ], "deconz": [ { - "manufacturer": "Royal Philips Electronics" + "manufacturer": "Royal Philips Electronics", + "manufacturerURL": "http://www.dresden-elektronik.de" } ], "denonavr": [ diff --git a/tests/components/deconz/test_config_flow.py b/tests/components/deconz/test_config_flow.py index 97b2f7ee164..1a7031a0fd6 100644 --- a/tests/components/deconz/test_config_flow.py +++ b/tests/components/deconz/test_config_flow.py @@ -459,22 +459,6 @@ async def test_flow_ssdp_discovery(hass, aioclient_mock): } -async def test_flow_ssdp_bad_discovery(hass, aioclient_mock): - """Test that SSDP discovery aborts if manufacturer URL is wrong.""" - result = await hass.config_entries.flow.async_init( - DECONZ_DOMAIN, - data=ssdp.SsdpServiceInfo( - ssdp_usn="mock_usn", - ssdp_st="mock_st", - upnp={ATTR_UPNP_MANUFACTURER_URL: "other"}, - ), - context={"source": SOURCE_SSDP}, - ) - - assert result["type"] == RESULT_TYPE_ABORT - assert result["reason"] == "not_deconz_bridge" - - async def test_ssdp_discovery_update_configuration(hass, aioclient_mock): """Test if a discovered bridge is configured but updates with new attributes.""" config_entry = await setup_deconz_integration(hass, aioclient_mock) From 174717dd85a2dd11cbea680520510b0dad175ec4 Mon Sep 17 00:00:00 2001 From: Robert Svensson Date: Sun, 1 May 2022 21:00:38 +0200 Subject: [PATCH 061/151] Abort UniFi Network options flow if integration is not setup (#71128) --- homeassistant/components/unifi/config_flow.py | 2 ++ homeassistant/components/unifi/strings.json | 5 ++++- homeassistant/components/unifi/translations/en.json | 3 +++ tests/components/unifi/test_config_flow.py | 11 +++++++++++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/unifi/config_flow.py b/homeassistant/components/unifi/config_flow.py index 6e40798fb7a..d02f3f49a5e 100644 --- a/homeassistant/components/unifi/config_flow.py +++ b/homeassistant/components/unifi/config_flow.py @@ -256,6 +256,8 @@ class UnifiOptionsFlowHandler(config_entries.OptionsFlow): async def async_step_init(self, user_input=None): """Manage the UniFi Network options.""" + if self.config_entry.entry_id not in self.hass.data[UNIFI_DOMAIN]: + return self.async_abort(reason="integration_not_setup") self.controller = self.hass.data[UNIFI_DOMAIN][self.config_entry.entry_id] self.options[CONF_BLOCK_CLIENT] = self.controller.option_block_clients diff --git a/homeassistant/components/unifi/strings.json b/homeassistant/components/unifi/strings.json index 476a0bfdd61..8d6df90b704 100644 --- a/homeassistant/components/unifi/strings.json +++ b/homeassistant/components/unifi/strings.json @@ -21,11 +21,14 @@ }, "abort": { "already_configured": "UniFi Network site is already configured", - "configuration_updated": "Configuration updated.", + "configuration_updated": "Configuration updated", "reauth_successful": "[%key:common::config_flow::abort::reauth_successful%]" } }, "options": { + "abort": { + "integration_not_setup": "UniFi integration is not setup" + }, "step": { "device_tracker": { "data": { diff --git a/homeassistant/components/unifi/translations/en.json b/homeassistant/components/unifi/translations/en.json index 5d08c8b816d..2a1c17cb6e3 100644 --- a/homeassistant/components/unifi/translations/en.json +++ b/homeassistant/components/unifi/translations/en.json @@ -26,6 +26,9 @@ } }, "options": { + "abort": { + "integration_not_setup": "UniFi integration is not setup" + }, "step": { "client_control": { "data": { diff --git a/tests/components/unifi/test_config_flow.py b/tests/components/unifi/test_config_flow.py index 4c4ff7006fd..321cbdfd9e8 100644 --- a/tests/components/unifi/test_config_flow.py +++ b/tests/components/unifi/test_config_flow.py @@ -542,6 +542,17 @@ async def test_simple_option_flow(hass, aioclient_mock): } +async def test_option_flow_integration_not_setup(hass, aioclient_mock): + """Test advanced config flow options.""" + config_entry = await setup_unifi_integration(hass, aioclient_mock) + + hass.data[UNIFI_DOMAIN].pop(config_entry.entry_id) + result = await hass.config_entries.options.async_init(config_entry.entry_id) + + assert result["type"] == "abort" + assert result["reason"] == "integration_not_setup" + + async def test_form_ssdp(hass): """Test we get the form with ssdp source.""" From 01b096bb093165971025a8b99f83f11e69302c5d Mon Sep 17 00:00:00 2001 From: Kuba Wolanin Date: Mon, 2 May 2022 01:14:30 +0200 Subject: [PATCH 062/151] Add Show logs URL to integration errors notification (#71142) --- homeassistant/config.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/homeassistant/config.py b/homeassistant/config.py index d5f9eb91b62..5c870918231 100644 --- a/homeassistant/config.py +++ b/homeassistant/config.py @@ -951,8 +951,9 @@ def async_notify_setup_error( message = "The following integrations and platforms could not be set up:\n\n" for name, link in errors.items(): + show_logs = f"[Show logs](/config/logs?filter={name})" part = f"[{name}]({link})" if link else name - message += f" - {part}\n" + message += f" - {part} ({show_logs})\n" message += "\nPlease check your config and [logs](/config/logs)." From 79cc21632736697052201ae43a853fc1891d42a9 Mon Sep 17 00:00:00 2001 From: Marvin Wichmann Date: Sun, 1 May 2022 11:00:37 +0200 Subject: [PATCH 063/151] Update xknx to 0.21.1 (#71144) --- homeassistant/components/knx/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/knx/manifest.json b/homeassistant/components/knx/manifest.json index f5b1bdc6206..a000261ec3a 100644 --- a/homeassistant/components/knx/manifest.json +++ b/homeassistant/components/knx/manifest.json @@ -3,7 +3,7 @@ "name": "KNX", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/knx", - "requirements": ["xknx==0.21.0"], + "requirements": ["xknx==0.21.1"], "codeowners": ["@Julius2342", "@farmio", "@marvin-w"], "quality_scale": "platinum", "iot_class": "local_push", diff --git a/requirements_all.txt b/requirements_all.txt index bc6f24cd830..a1e05d47565 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2445,7 +2445,7 @@ xbox-webapi==2.0.11 xboxapi==2.0.1 # homeassistant.components.knx -xknx==0.21.0 +xknx==0.21.1 # homeassistant.components.bluesound # homeassistant.components.fritz diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 3ddba1992a0..2b4c66e6c5d 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1597,7 +1597,7 @@ wolf_smartset==0.1.11 xbox-webapi==2.0.11 # homeassistant.components.knx -xknx==0.21.0 +xknx==0.21.1 # homeassistant.components.bluesound # homeassistant.components.fritz From e7bcf839ace2e578b87d6e5a8b808b151d24ae11 Mon Sep 17 00:00:00 2001 From: G Johansson Date: Sun, 1 May 2022 15:39:33 +0200 Subject: [PATCH 064/151] Bump pysensibo 1.0.14 (#71150) --- homeassistant/components/sensibo/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/sensibo/manifest.json b/homeassistant/components/sensibo/manifest.json index 535824aaa19..308d991e675 100644 --- a/homeassistant/components/sensibo/manifest.json +++ b/homeassistant/components/sensibo/manifest.json @@ -2,7 +2,7 @@ "domain": "sensibo", "name": "Sensibo", "documentation": "https://www.home-assistant.io/integrations/sensibo", - "requirements": ["pysensibo==1.0.13"], + "requirements": ["pysensibo==1.0.14"], "config_flow": true, "codeowners": ["@andrey-git", "@gjohansson-ST"], "iot_class": "cloud_polling", diff --git a/requirements_all.txt b/requirements_all.txt index a1e05d47565..7856ed8d550 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1783,7 +1783,7 @@ pysaj==0.0.16 pysdcp==1 # homeassistant.components.sensibo -pysensibo==1.0.13 +pysensibo==1.0.14 # homeassistant.components.serial # homeassistant.components.zha diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 2b4c66e6c5d..cdd024d0da9 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1196,7 +1196,7 @@ pyruckus==0.12 pysabnzbd==1.1.1 # homeassistant.components.sensibo -pysensibo==1.0.13 +pysensibo==1.0.14 # homeassistant.components.serial # homeassistant.components.zha From db53b3cbe0c54014cbf0e2a336f1414a8c53071c Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sun, 1 May 2022 12:00:15 -0500 Subject: [PATCH 065/151] Fix missing device info in lutron_caseta (#71156) - There was a missing return due to a bad merge conflict resolution - Fixes #71154 --- .../components/lutron_caseta/__init__.py | 35 ++++++++----------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/homeassistant/components/lutron_caseta/__init__.py b/homeassistant/components/lutron_caseta/__init__.py index d0561bc47ab..bb8f94f3abe 100644 --- a/homeassistant/components/lutron_caseta/__init__.py +++ b/homeassistant/components/lutron_caseta/__init__.py @@ -294,6 +294,8 @@ async def async_unload_entry( class LutronCasetaDevice(Entity): """Common base class for all Lutron Caseta devices.""" + _attr_should_poll = False + def __init__(self, device, bridge, bridge_device): """Set up the base class. @@ -304,6 +306,18 @@ class LutronCasetaDevice(Entity): self._device = device self._smartbridge = bridge self._bridge_device = bridge_device + info = DeviceInfo( + identifiers={(DOMAIN, self.serial)}, + manufacturer=MANUFACTURER, + model=f"{device['model']} ({device['type']})", + name=self.name, + via_device=(DOMAIN, self._bridge_device["serial"]), + configuration_url="https://device-login.lutron.com", + ) + area, _ = _area_and_name_from_name(device["name"]) + if area != UNASSIGNED_AREA: + info[ATTR_SUGGESTED_AREA] = area + self._attr_device_info = info async def async_added_to_hass(self): """Register callbacks.""" @@ -329,28 +343,7 @@ class LutronCasetaDevice(Entity): """Return the unique ID of the device (serial).""" return str(self.serial) - @property - def device_info(self) -> DeviceInfo: - """Return the device info.""" - device = self._device - info = DeviceInfo( - identifiers={(DOMAIN, self.serial)}, - manufacturer=MANUFACTURER, - model=f"{device['model']} ({device['type']})", - name=self.name, - via_device=(DOMAIN, self._bridge_device["serial"]), - configuration_url="https://device-login.lutron.com", - ) - area, _ = _area_and_name_from_name(device["name"]) - if area != UNASSIGNED_AREA: - info[ATTR_SUGGESTED_AREA] = area - @property def extra_state_attributes(self): """Return the state attributes.""" return {"device_id": self.device_id, "zone_id": self._device["zone"]} - - @property - def should_poll(self): - """No polling needed.""" - return False From 1f912e9c98bd8127545f09f46980d208ff98bc5c Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sun, 1 May 2022 12:49:17 -0500 Subject: [PATCH 066/151] Bump zeroconf to 0.38.5 (#71160) --- 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 dc4c7c001ae..e1ea2c82b1f 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.38.4"], + "requirements": ["zeroconf==0.38.5"], "dependencies": ["network", "api"], "codeowners": ["@bdraco"], "quality_scale": "internal", diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index 0cb893be99d..6dd904c858f 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -34,7 +34,7 @@ typing-extensions>=3.10.0.2,<5.0 voluptuous-serialize==2.5.0 voluptuous==0.13.1 yarl==1.7.2 -zeroconf==0.38.4 +zeroconf==0.38.5 # Constrain pycryptodome to avoid vulnerability # see https://github.com/home-assistant/core/pull/16238 diff --git a/requirements_all.txt b/requirements_all.txt index 7856ed8d550..b1c1023c177 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2480,7 +2480,7 @@ youtube_dl==2021.12.17 zengge==0.2 # homeassistant.components.zeroconf -zeroconf==0.38.4 +zeroconf==0.38.5 # homeassistant.components.zha zha-quirks==0.0.73 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index cdd024d0da9..8ff4285c366 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1620,7 +1620,7 @@ yeelight==0.7.10 youless-api==0.16 # homeassistant.components.zeroconf -zeroconf==0.38.4 +zeroconf==0.38.5 # homeassistant.components.zha zha-quirks==0.0.73 From 0d4947a2d339354e528d6ef7e823d32a03a98f33 Mon Sep 17 00:00:00 2001 From: Matt Zimmerman Date: Sun, 1 May 2022 13:36:13 -0700 Subject: [PATCH 067/151] update python-smarttub to 0.0.32 (#71164) --- homeassistant/components/smarttub/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/smarttub/manifest.json b/homeassistant/components/smarttub/manifest.json index 94e8185bb7d..1d7500b9185 100644 --- a/homeassistant/components/smarttub/manifest.json +++ b/homeassistant/components/smarttub/manifest.json @@ -5,7 +5,7 @@ "documentation": "https://www.home-assistant.io/integrations/smarttub", "dependencies": [], "codeowners": ["@mdz"], - "requirements": ["python-smarttub==0.0.31"], + "requirements": ["python-smarttub==0.0.32"], "quality_scale": "platinum", "iot_class": "cloud_polling", "loggers": ["smarttub"] diff --git a/requirements_all.txt b/requirements_all.txt index b1c1023c177..2311d648ada 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1934,7 +1934,7 @@ python-qbittorrent==0.4.2 python-ripple-api==0.0.3 # homeassistant.components.smarttub -python-smarttub==0.0.31 +python-smarttub==0.0.32 # homeassistant.components.songpal python-songpal==0.14.1 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 8ff4285c366..1d633f3e664 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1269,7 +1269,7 @@ python-nest==4.2.0 python-picnic-api==1.1.0 # homeassistant.components.smarttub -python-smarttub==0.0.31 +python-smarttub==0.0.32 # homeassistant.components.songpal python-songpal==0.14.1 From c791c52d2813e01e18ff745bce33a707f50b98af Mon Sep 17 00:00:00 2001 From: G Johansson Date: Sun, 1 May 2022 22:04:03 +0200 Subject: [PATCH 068/151] Fix template error in sql (#71169) --- homeassistant/components/sql/sensor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/sql/sensor.py b/homeassistant/components/sql/sensor.py index 2ae626c67fa..5e748bed55e 100644 --- a/homeassistant/components/sql/sensor.py +++ b/homeassistant/components/sql/sensor.py @@ -42,7 +42,7 @@ _QUERY_SCHEME = vol.Schema( vol.Required(CONF_NAME): cv.string, vol.Required(CONF_QUERY): cv.string, vol.Optional(CONF_UNIT_OF_MEASUREMENT): cv.string, - vol.Optional(CONF_VALUE_TEMPLATE): cv.template, + vol.Optional(CONF_VALUE_TEMPLATE): cv.string, } ) From 5c4861011baa3bb1c45606086c28020bd773f408 Mon Sep 17 00:00:00 2001 From: Allen Porter Date: Sun, 1 May 2022 14:20:44 -0700 Subject: [PATCH 069/151] Bump gcal_sync to 0.7.1 to fix calendar API timezone handling (#71173) --- homeassistant/components/google/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/google/manifest.json b/homeassistant/components/google/manifest.json index 46c5844819a..2cf852fc6af 100644 --- a/homeassistant/components/google/manifest.json +++ b/homeassistant/components/google/manifest.json @@ -4,7 +4,7 @@ "config_flow": true, "dependencies": ["auth"], "documentation": "https://www.home-assistant.io/integrations/calendar.google/", - "requirements": ["gcal-sync==0.7.0", "oauth2client==4.1.3"], + "requirements": ["gcal-sync==0.7.1", "oauth2client==4.1.3"], "codeowners": ["@allenporter"], "iot_class": "cloud_polling", "loggers": ["googleapiclient"] diff --git a/requirements_all.txt b/requirements_all.txt index 2311d648ada..389712286f7 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -689,7 +689,7 @@ gTTS==2.2.4 garages-amsterdam==3.0.0 # homeassistant.components.google -gcal-sync==0.7.0 +gcal-sync==0.7.1 # homeassistant.components.geniushub geniushub-client==0.6.30 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 1d633f3e664..cfdfb1d6d3c 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -486,7 +486,7 @@ gTTS==2.2.4 garages-amsterdam==3.0.0 # homeassistant.components.google -gcal-sync==0.7.0 +gcal-sync==0.7.1 # homeassistant.components.usgs_earthquakes_feed geojson_client==0.6 From d4780ac43c1e6bc93a339172d7c2960139c3434a Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Sun, 1 May 2022 22:50:39 -0600 Subject: [PATCH 070/151] Fix issues with SimpliSafe email-based 2FA (#71180) * FIx issues with email-based SimpliSafe 2FA * Bump --- .../components/simplisafe/manifest.json | 2 +- homeassistant/components/simplisafe/strings.json | 2 +- .../components/simplisafe/translations/en.json | 16 +++------------- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 5 files changed, 7 insertions(+), 17 deletions(-) diff --git a/homeassistant/components/simplisafe/manifest.json b/homeassistant/components/simplisafe/manifest.json index 8e4c1f5d82b..804523b3390 100644 --- a/homeassistant/components/simplisafe/manifest.json +++ b/homeassistant/components/simplisafe/manifest.json @@ -3,7 +3,7 @@ "name": "SimpliSafe", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/simplisafe", - "requirements": ["simplisafe-python==2022.04.1"], + "requirements": ["simplisafe-python==2022.05.0"], "codeowners": ["@bachya"], "iot_class": "cloud_polling", "dhcp": [ diff --git a/homeassistant/components/simplisafe/strings.json b/homeassistant/components/simplisafe/strings.json index 45e0ef84f5a..85e579fd455 100644 --- a/homeassistant/components/simplisafe/strings.json +++ b/homeassistant/components/simplisafe/strings.json @@ -32,7 +32,7 @@ "reauth_successful": "[%key:common::config_flow::abort::reauth_successful%]" }, "progress": { - "email_2fa": "Input the two-factor authentication code\nsent to you via email." + "email_2fa": "Check your email for a verification link from Simplisafe." } }, "options": { diff --git a/homeassistant/components/simplisafe/translations/en.json b/homeassistant/components/simplisafe/translations/en.json index a3bf0049681..0da6f6442e4 100644 --- a/homeassistant/components/simplisafe/translations/en.json +++ b/homeassistant/components/simplisafe/translations/en.json @@ -3,23 +3,16 @@ "abort": { "already_configured": "This SimpliSafe account is already in use.", "email_2fa_timed_out": "Timed out while waiting for email-based two-factor authentication.", - "reauth_successful": "Re-authentication was successful", - "wrong_account": "The user credentials provided do not match this SimpliSafe account." + "reauth_successful": "Re-authentication was successful" }, "error": { - "2fa_timed_out": "Timed out while waiting for two-factor authentication", - "identifier_exists": "Account already registered", "invalid_auth": "Invalid authentication", - "still_awaiting_mfa": "Still awaiting MFA email click", "unknown": "Unexpected error" }, "progress": { - "email_2fa": "Input the two-factor authentication code\nsent to you via email." + "email_2fa": "Check your email for a verification link from Simplisafe." }, "step": { - "mfa": { - "title": "SimpliSafe Multi-Factor Authentication" - }, "reauth_confirm": { "data": { "password": "Password" @@ -35,13 +28,10 @@ }, "user": { "data": { - "auth_code": "Authorization Code", - "code": "Code (used in Home Assistant UI)", "password": "Password", "username": "Username" }, - "description": "Input your username and password.", - "title": "Fill in your information." + "description": "Input your username and password." } } }, diff --git a/requirements_all.txt b/requirements_all.txt index 389712286f7..f50196895c8 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2153,7 +2153,7 @@ simplehound==0.3 simplepush==1.1.4 # homeassistant.components.simplisafe -simplisafe-python==2022.04.1 +simplisafe-python==2022.05.0 # homeassistant.components.sisyphus sisyphus-control==3.1.2 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index cfdfb1d6d3c..ce65bd2814f 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1404,7 +1404,7 @@ sharkiq==0.0.1 simplehound==0.3 # homeassistant.components.simplisafe -simplisafe-python==2022.04.1 +simplisafe-python==2022.05.0 # homeassistant.components.slack slackclient==2.5.0 From 78439eebb9ecc105629e6f080ece48849cde0558 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 1 May 2022 21:53:15 -0700 Subject: [PATCH 071/151] Bumped version to 2022.5.0b5 --- homeassistant/const.py | 2 +- setup.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index a5db224ee60..e8e281adde2 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -7,7 +7,7 @@ from .backports.enum import StrEnum MAJOR_VERSION: Final = 2022 MINOR_VERSION: Final = 5 -PATCH_VERSION: Final = "0b4" +PATCH_VERSION: Final = "0b5" __short_version__: Final = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__: Final = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER: Final[tuple[int, int, int]] = (3, 9, 0) diff --git a/setup.cfg b/setup.cfg index 03b13f004eb..16fb8c94692 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = homeassistant -version = 2022.5.0b4 +version = 2022.5.0b5 author = The Home Assistant Authors author_email = hello@home-assistant.io license = Apache-2.0 From 0ec29711e1204dc8e431937fa198dbeeaef60b75 Mon Sep 17 00:00:00 2001 From: stegm Date: Mon, 2 May 2022 11:42:18 +0200 Subject: [PATCH 072/151] Handle missing kostal plenticore battery option (#65237) Co-authored-by: Martin Hjelmare --- .../components/kostal_plenticore/select.py | 45 +++++++++----- .../components/kostal_plenticore/conftest.py | 61 ++++++++----------- .../kostal_plenticore/test_diagnostics.py | 31 +++++++++- .../kostal_plenticore/test_select.py | 45 ++++++++++++++ 4 files changed, 130 insertions(+), 52 deletions(-) create mode 100644 tests/components/kostal_plenticore/test_select.py diff --git a/homeassistant/components/kostal_plenticore/select.py b/homeassistant/components/kostal_plenticore/select.py index 1844f0894a5..7ac06f2ebef 100644 --- a/homeassistant/components/kostal_plenticore/select.py +++ b/homeassistant/components/kostal_plenticore/select.py @@ -24,6 +24,8 @@ async def async_setup_entry( ) -> None: """Add kostal plenticore Select widget.""" plenticore: Plenticore = hass.data[DOMAIN][entry.entry_id] + + available_settings_data = await plenticore.client.get_settings() select_data_update_coordinator = SelectDataUpdateCoordinator( hass, _LOGGER, @@ -32,23 +34,34 @@ async def async_setup_entry( plenticore, ) - async_add_entities( - PlenticoreDataSelect( - select_data_update_coordinator, - entry_id=entry.entry_id, - platform_name=entry.title, - device_class="kostal_plenticore__battery", - module_id=select.module_id, - data_id=select.data_id, - name=select.name, - current_option="None", - options=select.options, - is_on=select.is_on, - device_info=plenticore.device_info, - unique_id=f"{entry.entry_id}_{select.module_id}", + entities = [] + for select in SELECT_SETTINGS_DATA: + if select.module_id not in available_settings_data: + continue + needed_data_ids = {data_id for data_id in select.options if data_id != "None"} + available_data_ids = { + setting.id for setting in available_settings_data[select.module_id] + } + if not needed_data_ids <= available_data_ids: + continue + entities.append( + PlenticoreDataSelect( + select_data_update_coordinator, + entry_id=entry.entry_id, + platform_name=entry.title, + device_class="kostal_plenticore__battery", + module_id=select.module_id, + data_id=select.data_id, + name=select.name, + current_option="None", + options=select.options, + is_on=select.is_on, + device_info=plenticore.device_info, + unique_id=f"{entry.entry_id}_{select.module_id}", + ) ) - for select in SELECT_SETTINGS_DATA - ) + + async_add_entities(entities) class PlenticoreDataSelect(CoordinatorEntity, SelectEntity, ABC): diff --git a/tests/components/kostal_plenticore/conftest.py b/tests/components/kostal_plenticore/conftest.py index c3ed1b45592..4e789a34198 100644 --- a/tests/components/kostal_plenticore/conftest.py +++ b/tests/components/kostal_plenticore/conftest.py @@ -4,9 +4,10 @@ from __future__ import annotations from collections.abc import Generator from unittest.mock import AsyncMock, MagicMock, patch -from kostal.plenticore import MeData, SettingsData, VersionData +from kostal.plenticore import MeData, VersionData import pytest +from homeassistant.components.kostal_plenticore.helper import Plenticore from homeassistant.core import HomeAssistant from homeassistant.helpers.entity import DeviceInfo @@ -14,10 +15,19 @@ from tests.common import MockConfigEntry @pytest.fixture -async def init_integration( - hass: HomeAssistant, -) -> Generator[None, MockConfigEntry, None]: - """Set up Kostal Plenticore integration for testing.""" +def mock_config_entry() -> MockConfigEntry: + """Return a mocked ConfigEntry for testing.""" + return MockConfigEntry( + entry_id="2ab8dd92a62787ddfe213a67e09406bd", + title="scb", + domain="kostal_plenticore", + data={"host": "192.168.1.2", "password": "SecretPassword"}, + ) + + +@pytest.fixture +def mock_plenticore() -> Generator[Plenticore, None, None]: + """Set up a Plenticore mock with some default values.""" with patch( "homeassistant.components.kostal_plenticore.Plenticore", autospec=True ) as mock_api_class: @@ -60,37 +70,20 @@ async def init_integration( ) plenticore.client.get_process_data = AsyncMock() - plenticore.client.get_process_data.return_value = { - "devices:local": ["HomeGrid_P", "HomePv_P"] - } - plenticore.client.get_settings = AsyncMock() - plenticore.client.get_settings.return_value = { - "devices:local": [ - SettingsData( - { - "id": "Battery:MinSoc", - "unit": "%", - "default": "None", - "min": 5, - "max": 100, - "type": "byte", - "access": "readwrite", - } - ) - ] - } - mock_config_entry = MockConfigEntry( - entry_id="2ab8dd92a62787ddfe213a67e09406bd", - title="scb", - domain="kostal_plenticore", - data={"host": "192.168.1.2", "password": "SecretPassword"}, - ) + yield plenticore - mock_config_entry.add_to_hass(hass) - await hass.config_entries.async_setup(mock_config_entry.entry_id) - await hass.async_block_till_done() +@pytest.fixture +async def init_integration( + hass: HomeAssistant, mock_config_entry: MockConfigEntry +) -> MockConfigEntry: + """Set up Kostal Plenticore integration for testing.""" - yield mock_config_entry + mock_config_entry.add_to_hass(hass) + + await hass.config_entries.async_setup(mock_config_entry.entry_id) + await hass.async_block_till_done() + + return mock_config_entry diff --git a/tests/components/kostal_plenticore/test_diagnostics.py b/tests/components/kostal_plenticore/test_diagnostics.py index 56af8bafe06..1f249aa3798 100644 --- a/tests/components/kostal_plenticore/test_diagnostics.py +++ b/tests/components/kostal_plenticore/test_diagnostics.py @@ -1,7 +1,9 @@ """Test Kostal Plenticore diagnostics.""" from aiohttp import ClientSession +from kostal.plenticore import SettingsData from homeassistant.components.diagnostics import REDACTED +from homeassistant.components.kostal_plenticore.helper import Plenticore from homeassistant.core import HomeAssistant from tests.common import MockConfigEntry @@ -9,9 +11,34 @@ from tests.components.diagnostics import get_diagnostics_for_config_entry async def test_entry_diagnostics( - hass: HomeAssistant, hass_client: ClientSession, init_integration: MockConfigEntry -): + hass: HomeAssistant, + hass_client: ClientSession, + mock_plenticore: Plenticore, + init_integration: MockConfigEntry, +) -> None: """Test config entry diagnostics.""" + + # set some test process and settings data for the diagnostics output + mock_plenticore.client.get_process_data.return_value = { + "devices:local": ["HomeGrid_P", "HomePv_P"] + } + + mock_plenticore.client.get_settings.return_value = { + "devices:local": [ + SettingsData( + { + "id": "Battery:MinSoc", + "unit": "%", + "default": "None", + "min": 5, + "max": 100, + "type": "byte", + "access": "readwrite", + } + ) + ] + } + assert await get_diagnostics_for_config_entry( hass, hass_client, init_integration ) == { diff --git a/tests/components/kostal_plenticore/test_select.py b/tests/components/kostal_plenticore/test_select.py new file mode 100644 index 00000000000..6023b015483 --- /dev/null +++ b/tests/components/kostal_plenticore/test_select.py @@ -0,0 +1,45 @@ +"""Test the Kostal Plenticore Solar Inverter select platform.""" +from kostal.plenticore import SettingsData + +from homeassistant.components.kostal_plenticore.helper import Plenticore +from homeassistant.core import HomeAssistant +from homeassistant.helpers import entity_registry + +from tests.common import MockConfigEntry + + +async def test_select_battery_charging_usage_available( + hass: HomeAssistant, mock_plenticore: Plenticore, mock_config_entry: MockConfigEntry +) -> None: + """Test that the battery charging usage select entity is added if the settings are available.""" + + mock_plenticore.client.get_settings.return_value = { + "devices:local": [ + SettingsData({"id": "Battery:SmartBatteryControl:Enable"}), + SettingsData({"id": "Battery:TimeControl:Enable"}), + ] + } + + mock_config_entry.add_to_hass(hass) + + await hass.config_entries.async_setup(mock_config_entry.entry_id) + await hass.async_block_till_done() + + assert entity_registry.async_get(hass).async_is_registered( + "select.battery_charging_usage_mode" + ) + + +async def test_select_battery_charging_usage_not_available( + hass: HomeAssistant, mock_plenticore: Plenticore, mock_config_entry: MockConfigEntry +) -> None: + """Test that the battery charging usage select entity is not added if the settings are unavailable.""" + + mock_config_entry.add_to_hass(hass) + + await hass.config_entries.async_setup(mock_config_entry.entry_id) + await hass.async_block_till_done() + + assert not entity_registry.async_get(hass).async_is_registered( + "select.battery_charging_usage_mode" + ) From 494902e1852debf18bad2a95e616f9216367683b Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Mon, 2 May 2022 18:33:16 +0200 Subject: [PATCH 073/151] Remove entity category system in favor of hidden_by (#68550) --- homeassistant/const.py | 2 -- homeassistant/helpers/entity.py | 3 -- homeassistant/helpers/entity_platform.py | 2 +- tests/components/alexa/test_entities.py | 10 +----- tests/components/cloud/test_alexa_config.py | 12 +------ tests/components/cloud/test_google_config.py | 17 ++-------- tests/components/energy/test_sensor.py | 34 +++++++++++++++++++ .../google_assistant/test_google_assistant.py | 10 +----- tests/helpers/test_entity.py | 3 +- 9 files changed, 42 insertions(+), 51 deletions(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index e8e281adde2..22ee6c30e88 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -764,11 +764,9 @@ CLOUD_NEVER_EXPOSED_ENTITIES: Final[list[str]] = ["group.all_locks"] # use the EntityCategory enum instead. ENTITY_CATEGORY_CONFIG: Final = "config" ENTITY_CATEGORY_DIAGNOSTIC: Final = "diagnostic" -ENTITY_CATEGORY_SYSTEM: Final = "system" ENTITY_CATEGORIES: Final[list[str]] = [ ENTITY_CATEGORY_CONFIG, ENTITY_CATEGORY_DIAGNOSTIC, - ENTITY_CATEGORY_SYSTEM, ] # The ID of the Home Assistant Media Player Cast App diff --git a/homeassistant/helpers/entity.py b/homeassistant/helpers/entity.py index 791a80f7731..32163c4498a 100644 --- a/homeassistant/helpers/entity.py +++ b/homeassistant/helpers/entity.py @@ -200,9 +200,6 @@ class EntityCategory(StrEnum): # Diagnostic: An entity exposing some configuration parameter or diagnostics of a device DIAGNOSTIC = "diagnostic" - # System: An entity which is not useful for the user to interact with - SYSTEM = "system" - ENTITY_CATEGORIES_SCHEMA: Final = vol.Coerce(EntityCategory) diff --git a/homeassistant/helpers/entity_platform.py b/homeassistant/helpers/entity_platform.py index 6972dbf7c16..3d57a9c3dc0 100644 --- a/homeassistant/helpers/entity_platform.py +++ b/homeassistant/helpers/entity_platform.py @@ -519,8 +519,8 @@ class EntityPlatform: config_entry=self.config_entry, device_id=device_id, disabled_by=disabled_by, - hidden_by=hidden_by, entity_category=entity.entity_category, + hidden_by=hidden_by, known_object_ids=self.entities.keys(), original_device_class=entity.device_class, original_icon=entity.icon, diff --git a/tests/components/alexa/test_entities.py b/tests/components/alexa/test_entities.py index 5f64879b535..fb364dbf14e 100644 --- a/tests/components/alexa/test_entities.py +++ b/tests/components/alexa/test_entities.py @@ -43,20 +43,13 @@ async def test_categorized_hidden_entities(hass): entity_category=EntityCategory.DIAGNOSTIC, ) entity_entry3 = entity_registry.async_get_or_create( - "switch", - "test", - "switch_system_id", - suggested_object_id="system_switch", - entity_category=EntityCategory.SYSTEM, - ) - entity_entry4 = entity_registry.async_get_or_create( "switch", "test", "switch_hidden_integration_id", suggested_object_id="hidden_integration_switch", hidden_by=er.RegistryEntryHider.INTEGRATION, ) - entity_entry5 = entity_registry.async_get_or_create( + entity_entry4 = entity_registry.async_get_or_create( "switch", "test", "switch_hidden_user_id", @@ -69,7 +62,6 @@ async def test_categorized_hidden_entities(hass): hass.states.async_set(entity_entry2.entity_id, "something_else") hass.states.async_set(entity_entry3.entity_id, "blah") hass.states.async_set(entity_entry4.entity_id, "foo") - hass.states.async_set(entity_entry5.entity_id, "bar") msg = await smart_home.async_handle_message(hass, get_default_config(hass), request) diff --git a/tests/components/cloud/test_alexa_config.py b/tests/components/cloud/test_alexa_config.py index 115d39d3aeb..465ff7dd3d4 100644 --- a/tests/components/cloud/test_alexa_config.py +++ b/tests/components/cloud/test_alexa_config.py @@ -39,20 +39,13 @@ async def test_alexa_config_expose_entity_prefs(hass, cloud_prefs, cloud_stub): entity_category=EntityCategory.DIAGNOSTIC, ) entity_entry3 = entity_registry.async_get_or_create( - "light", - "test", - "light_system_id", - suggested_object_id="system_light", - entity_category=EntityCategory.SYSTEM, - ) - entity_entry4 = entity_registry.async_get_or_create( "light", "test", "light_hidden_integration_id", suggested_object_id="hidden_integration_light", hidden_by=er.RegistryEntryHider.INTEGRATION, ) - entity_entry5 = entity_registry.async_get_or_create( + entity_entry4 = entity_registry.async_get_or_create( "light", "test", "light_hidden_user_id", @@ -77,7 +70,6 @@ async def test_alexa_config_expose_entity_prefs(hass, cloud_prefs, cloud_stub): assert not conf.should_expose(entity_entry2.entity_id) assert not conf.should_expose(entity_entry3.entity_id) assert not conf.should_expose(entity_entry4.entity_id) - assert not conf.should_expose(entity_entry5.entity_id) entity_conf["should_expose"] = True assert conf.should_expose("light.kitchen") @@ -86,7 +78,6 @@ async def test_alexa_config_expose_entity_prefs(hass, cloud_prefs, cloud_stub): assert not conf.should_expose(entity_entry2.entity_id) assert not conf.should_expose(entity_entry3.entity_id) assert not conf.should_expose(entity_entry4.entity_id) - assert not conf.should_expose(entity_entry5.entity_id) entity_conf["should_expose"] = None assert conf.should_expose("light.kitchen") @@ -95,7 +86,6 @@ async def test_alexa_config_expose_entity_prefs(hass, cloud_prefs, cloud_stub): assert not conf.should_expose(entity_entry2.entity_id) assert not conf.should_expose(entity_entry3.entity_id) assert not conf.should_expose(entity_entry4.entity_id) - assert not conf.should_expose(entity_entry5.entity_id) assert "alexa" not in hass.config.components await cloud_prefs.async_update( diff --git a/tests/components/cloud/test_google_config.py b/tests/components/cloud/test_google_config.py index 95746eb67ae..a86f1f3cf8a 100644 --- a/tests/components/cloud/test_google_config.py +++ b/tests/components/cloud/test_google_config.py @@ -298,20 +298,13 @@ async def test_google_config_expose_entity_prefs(hass, mock_conf, cloud_prefs): entity_category=EntityCategory.DIAGNOSTIC, ) entity_entry3 = entity_registry.async_get_or_create( - "light", - "test", - "light_system_id", - suggested_object_id="system_light", - entity_category=EntityCategory.SYSTEM, - ) - entity_entry4 = entity_registry.async_get_or_create( "light", "test", "light_hidden_integration_id", suggested_object_id="hidden_integration_light", hidden_by=er.RegistryEntryHider.INTEGRATION, ) - entity_entry5 = entity_registry.async_get_or_create( + entity_entry4 = entity_registry.async_get_or_create( "light", "test", "light_hidden_user_id", @@ -328,14 +321,12 @@ async def test_google_config_expose_entity_prefs(hass, mock_conf, cloud_prefs): state = State("light.kitchen", "on") state_config = State(entity_entry1.entity_id, "on") state_diagnostic = State(entity_entry2.entity_id, "on") - state_system = State(entity_entry3.entity_id, "on") - state_hidden_integration = State(entity_entry4.entity_id, "on") - state_hidden_user = State(entity_entry5.entity_id, "on") + state_hidden_integration = State(entity_entry3.entity_id, "on") + state_hidden_user = State(entity_entry4.entity_id, "on") assert not mock_conf.should_expose(state) assert not mock_conf.should_expose(state_config) assert not mock_conf.should_expose(state_diagnostic) - assert not mock_conf.should_expose(state_system) assert not mock_conf.should_expose(state_hidden_integration) assert not mock_conf.should_expose(state_hidden_user) @@ -344,7 +335,6 @@ async def test_google_config_expose_entity_prefs(hass, mock_conf, cloud_prefs): # categorized and hidden entities should not be exposed assert not mock_conf.should_expose(state_config) assert not mock_conf.should_expose(state_diagnostic) - assert not mock_conf.should_expose(state_system) assert not mock_conf.should_expose(state_hidden_integration) assert not mock_conf.should_expose(state_hidden_user) @@ -353,7 +343,6 @@ async def test_google_config_expose_entity_prefs(hass, mock_conf, cloud_prefs): # categorized and hidden entities should not be exposed assert not mock_conf.should_expose(state_config) assert not mock_conf.should_expose(state_diagnostic) - assert not mock_conf.should_expose(state_system) assert not mock_conf.should_expose(state_hidden_integration) assert not mock_conf.should_expose(state_hidden_user) diff --git a/tests/components/energy/test_sensor.py b/tests/components/energy/test_sensor.py index 913a2f44d93..997f60a8899 100644 --- a/tests/components/energy/test_sensor.py +++ b/tests/components/energy/test_sensor.py @@ -75,6 +75,40 @@ async def test_cost_sensor_no_states(hass, hass_storage, setup_integration) -> N # TODO: No states, should the cost entity refuse to setup? +async def test_cost_sensor_attributes(hass, hass_storage, setup_integration) -> None: + """Test sensor attributes.""" + energy_data = data.EnergyManager.default_preferences() + energy_data["energy_sources"].append( + { + "type": "grid", + "flow_from": [ + { + "stat_energy_from": "sensor.energy_consumption", + "entity_energy_from": "sensor.energy_consumption", + "stat_cost": None, + "entity_energy_price": None, + "number_energy_price": 1, + } + ], + "flow_to": [], + "cost_adjustment_day": 0, + } + ) + + hass_storage[data.STORAGE_KEY] = { + "version": 1, + "data": energy_data, + } + await setup_integration(hass) + + registry = er.async_get(hass) + cost_sensor_entity_id = "sensor.energy_consumption_cost" + entry = registry.async_get(cost_sensor_entity_id) + assert entry.entity_category is None + assert entry.disabled_by is None + assert entry.hidden_by == er.RegistryEntryHider.INTEGRATION + + @pytest.mark.parametrize("initial_energy,initial_cost", [(0, "0.0"), (None, "unknown")]) @pytest.mark.parametrize( "price_entity,fixed_price", [("sensor.energy_price", None), (None, 1)] diff --git a/tests/components/google_assistant/test_google_assistant.py b/tests/components/google_assistant/test_google_assistant.py index 642ef15451a..8bf0e5573b2 100644 --- a/tests/components/google_assistant/test_google_assistant.py +++ b/tests/components/google_assistant/test_google_assistant.py @@ -147,20 +147,13 @@ async def test_sync_request(hass_fixture, assistant_client, auth_header): entity_category=EntityCategory.DIAGNOSTIC, ) entity_entry3 = entity_registry.async_get_or_create( - "switch", - "test", - "switch_system_id", - suggested_object_id="system_switch", - entity_category=EntityCategory.SYSTEM, - ) - entity_entry4 = entity_registry.async_get_or_create( "switch", "test", "switch_hidden_integration_id", suggested_object_id="hidden_integration_switch", hidden_by=er.RegistryEntryHider.INTEGRATION, ) - entity_entry5 = entity_registry.async_get_or_create( + entity_entry4 = entity_registry.async_get_or_create( "switch", "test", "switch_hidden_user_id", @@ -173,7 +166,6 @@ async def test_sync_request(hass_fixture, assistant_client, auth_header): hass_fixture.states.async_set(entity_entry2.entity_id, "something_else") hass_fixture.states.async_set(entity_entry3.entity_id, "blah") hass_fixture.states.async_set(entity_entry4.entity_id, "foo") - hass_fixture.states.async_set(entity_entry5.entity_id, "bar") reqid = "5711642932632160983" data = {"requestId": reqid, "inputs": [{"intent": "action.devices.SYNC"}]} diff --git a/tests/helpers/test_entity.py b/tests/helpers/test_entity.py index 34cb68403f4..e345d7d7258 100644 --- a/tests/helpers/test_entity.py +++ b/tests/helpers/test_entity.py @@ -913,7 +913,6 @@ async def test_entity_category_property(hass): ( ("config", entity.EntityCategory.CONFIG), ("diagnostic", entity.EntityCategory.DIAGNOSTIC), - ("system", entity.EntityCategory.SYSTEM), ), ) def test_entity_category_schema(value, expected): @@ -930,7 +929,7 @@ def test_entity_category_schema_error(value): schema = vol.Schema(entity.ENTITY_CATEGORIES_SCHEMA) with pytest.raises( vol.Invalid, - match=r"expected EntityCategory or one of 'config', 'diagnostic', 'system'", + match=r"expected EntityCategory or one of 'config', 'diagnostic'", ): schema(value) From 72eb963c7ac3b721a91519e0ac3abd9b1ef304ba Mon Sep 17 00:00:00 2001 From: Robert Svensson Date: Thu, 28 Apr 2022 20:36:52 +0200 Subject: [PATCH 074/151] Handle situation where mac might not exist in clients (#71016) --- homeassistant/components/unifi/device_tracker.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/unifi/device_tracker.py b/homeassistant/components/unifi/device_tracker.py index 0ad1c920fa7..2ae8eb2e32b 100644 --- a/homeassistant/components/unifi/device_tracker.py +++ b/homeassistant/components/unifi/device_tracker.py @@ -107,11 +107,11 @@ def add_client_entities(controller, async_add_entities, clients): trackers = [] for mac in clients: - if mac in controller.entities[DOMAIN][UniFiClientTracker.TYPE]: + if mac in controller.entities[DOMAIN][UniFiClientTracker.TYPE] or not ( + client := controller.api.clients.get(mac) + ): continue - client = controller.api.clients[mac] - if mac not in controller.wireless_clients: if not controller.option_track_wired_clients: continue From b8e0066ec2790b8608572867f6606861009d7313 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20T=C3=B3th?= <42900504+toth2zoltan@users.noreply.github.com> Date: Mon, 2 May 2022 16:42:23 +0200 Subject: [PATCH 075/151] Fix SAJ Solar inverter RecursionError (#71157) --- homeassistant/components/saj/sensor.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/saj/sensor.py b/homeassistant/components/saj/sensor.py index 2fb3729d0a8..818ce7ea57a 100644 --- a/homeassistant/components/saj/sensor.py +++ b/homeassistant/components/saj/sensor.py @@ -209,14 +209,11 @@ class SAJsensor(SensorEntity): @property def device_class(self): """Return the device class the sensor belongs to.""" - if self.unit_of_measurement == POWER_WATT: + if self.native_unit_of_measurement == POWER_WATT: return SensorDeviceClass.POWER - if self.unit_of_measurement == ENERGY_KILO_WATT_HOUR: + if self.native_unit_of_measurement == ENERGY_KILO_WATT_HOUR: return SensorDeviceClass.ENERGY - if ( - self.unit_of_measurement == TEMP_CELSIUS - or self._sensor.unit == TEMP_FAHRENHEIT - ): + if self.native_unit_of_measurement in (TEMP_CELSIUS, TEMP_FAHRENHEIT): return SensorDeviceClass.TEMPERATURE @property From 6bb3957730dcd8226b855bde185a6ed230a61604 Mon Sep 17 00:00:00 2001 From: Tom Harris Date: Mon, 2 May 2022 10:42:47 -0400 Subject: [PATCH 076/151] Fix Insteon thermostats and reduce logging (#71179) * Bump pyinsteon to 1.1.0 * Load modem aldb if read write mode is unkwown * Correct reference to read_write_mode --- homeassistant/components/insteon/__init__.py | 4 +++- homeassistant/components/insteon/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/insteon/__init__.py b/homeassistant/components/insteon/__init__.py index 15181cb827c..94c18df9a33 100644 --- a/homeassistant/components/insteon/__init__.py +++ b/homeassistant/components/insteon/__init__.py @@ -4,6 +4,7 @@ from contextlib import suppress import logging from pyinsteon import async_close, async_connect, devices +from pyinsteon.constants import ReadWriteMode from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry from homeassistant.const import CONF_PLATFORM, EVENT_HOMEASSISTANT_STOP @@ -48,7 +49,8 @@ async def async_get_device_config(hass, config_entry): with suppress(AttributeError): await devices[address].async_status() - await devices.async_load(id_devices=1) + load_aldb = devices.modem.aldb.read_write_mode == ReadWriteMode.UNKNOWN + await devices.async_load(id_devices=1, load_modem_aldb=load_aldb) for addr in devices: device = devices[addr] flags = True diff --git a/homeassistant/components/insteon/manifest.json b/homeassistant/components/insteon/manifest.json index fc8ade1ba4d..c69f4f2cdf5 100644 --- a/homeassistant/components/insteon/manifest.json +++ b/homeassistant/components/insteon/manifest.json @@ -4,7 +4,7 @@ "documentation": "https://www.home-assistant.io/integrations/insteon", "dependencies": ["http", "websocket_api"], "requirements": [ - "pyinsteon==1.1.0b3", + "pyinsteon==1.1.0", "insteon-frontend-home-assistant==0.1.0" ], "codeowners": ["@teharris1"], diff --git a/requirements_all.txt b/requirements_all.txt index f50196895c8..914c06f40e2 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1547,7 +1547,7 @@ pyialarm==1.9.0 pyicloud==1.0.0 # homeassistant.components.insteon -pyinsteon==1.1.0b3 +pyinsteon==1.1.0 # homeassistant.components.intesishome pyintesishome==1.7.6 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index ce65bd2814f..70d3ab4a700 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1029,7 +1029,7 @@ pyialarm==1.9.0 pyicloud==1.0.0 # homeassistant.components.insteon -pyinsteon==1.1.0b3 +pyinsteon==1.1.0 # homeassistant.components.ipma pyipma==2.0.5 From b558425333311bcd3ea005da826fab03bd0e99ce Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 2 May 2022 04:35:19 -0700 Subject: [PATCH 077/151] Offer visit device for Squeezelite32 devices (#71181) --- homeassistant/components/slimproto/media_player.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/slimproto/media_player.py b/homeassistant/components/slimproto/media_player.py index af3eb693478..d41d10432db 100644 --- a/homeassistant/components/slimproto/media_player.py +++ b/homeassistant/components/slimproto/media_player.py @@ -100,8 +100,8 @@ class SlimProtoPlayer(MediaPlayerEntity): name=self.player.name, hw_version=self.player.firmware, ) - # PiCore player has web interface - if "-pCP" in self.player.firmware: + # PiCore + SqueezeESP32 player has web interface + if "-pCP" in self.player.firmware or self.player.device_model == "SqueezeESP32": self._attr_device_info[ "configuration_url" ] = f"http://{self.player.device_address}" From c07e36283bcf927c5b88b7176ee9a2664e8f75b9 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 2 May 2022 06:09:49 -0700 Subject: [PATCH 078/151] Add media source support to AppleTV (#71185) --- .../components/apple_tv/browse_media.py | 2 +- .../components/apple_tv/media_player.py | 54 +++++++++++++++++-- 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/apple_tv/browse_media.py b/homeassistant/components/apple_tv/browse_media.py index 3c0eee8b6ad..8d0a94ca858 100644 --- a/homeassistant/components/apple_tv/browse_media.py +++ b/homeassistant/components/apple_tv/browse_media.py @@ -18,7 +18,7 @@ def build_app_list(app_list): return BrowseMedia( media_class=MEDIA_CLASS_DIRECTORY, - media_content_id=None, + media_content_id="apps", media_content_type=MEDIA_TYPE_APPS, title="Apps", can_play=True, diff --git a/homeassistant/components/apple_tv/media_player.py b/homeassistant/components/apple_tv/media_player.py index cadf84e8b31..02919043bb2 100644 --- a/homeassistant/components/apple_tv/media_player.py +++ b/homeassistant/components/apple_tv/media_player.py @@ -13,11 +13,15 @@ from pyatv.const import ( ) from pyatv.helpers import is_streamable +from homeassistant.components import media_source from homeassistant.components.media_player import ( BrowseMedia, MediaPlayerEntity, MediaPlayerEntityFeature, ) +from homeassistant.components.media_player.browse_media import ( + async_process_play_media_url, +) from homeassistant.components.media_player.const import ( MEDIA_TYPE_APP, MEDIA_TYPE_MUSIC, @@ -73,7 +77,8 @@ SUPPORT_APPLE_TV = ( # Map features in pyatv to Home Assistant SUPPORT_FEATURE_MAPPING = { - FeatureName.PlayUrl: MediaPlayerEntityFeature.PLAY_MEDIA, + FeatureName.PlayUrl: MediaPlayerEntityFeature.BROWSE_MEDIA + | MediaPlayerEntityFeature.PLAY_MEDIA, FeatureName.StreamFile: MediaPlayerEntityFeature.PLAY_MEDIA, FeatureName.Pause: MediaPlayerEntityFeature.PAUSE, FeatureName.Play: MediaPlayerEntityFeature.PLAY, @@ -276,12 +281,24 @@ class AppleTvMediaPlayer(AppleTVEntity, MediaPlayerEntity): # RAOP. Otherwise try to play it with regular AirPlay. if media_type == MEDIA_TYPE_APP: await self.atv.apps.launch_app(media_id) - elif self._is_feature_available(FeatureName.StreamFile) and ( - await is_streamable(media_id) or media_type == MEDIA_TYPE_MUSIC + + is_media_source_id = media_source.is_media_source_id(media_id) + + if ( + not is_media_source_id + and self._is_feature_available(FeatureName.StreamFile) + and (await is_streamable(media_id) or media_type == MEDIA_TYPE_MUSIC) ): _LOGGER.debug("Streaming %s via RAOP", media_id) await self.atv.stream.stream_file(media_id) - elif self._is_feature_available(FeatureName.PlayUrl): + + if self._is_feature_available(FeatureName.PlayUrl): + if is_media_source_id: + play_item = await media_source.async_resolve_media(self.hass, media_id) + media_id = play_item.url + + media_id = async_process_play_media_url(self.hass, media_id) + _LOGGER.debug("Playing %s via AirPlay", media_id) await self.atv.stream.play_url(media_id) else: @@ -380,7 +397,34 @@ class AppleTvMediaPlayer(AppleTVEntity, MediaPlayerEntity): media_content_id=None, ) -> BrowseMedia: """Implement the websocket media browsing helper.""" - return build_app_list(self._app_list) + # If we can't stream URLs, we can't browse media. + # In that case the `BROWSE_MEDIA` feature was added because of AppList/LaunchApp + if not self._is_feature_available(FeatureName.PlayUrl): + return build_app_list(self._app_list) + + if self._app_list: + kwargs = {} + else: + # If it has no apps, assume it has no display + kwargs = { + "content_filter": lambda item: item.media_content_type.startswith( + "audio/" + ), + } + + cur_item = await media_source.async_browse_media( + self.hass, media_content_id, **kwargs + ) + + # If media content id is not None, we're browsing into a media source + if media_content_id is not None: + return cur_item + + # Add app item if we have one + if self._app_list and cur_item.children: + cur_item.children.insert(0, build_app_list(self._app_list)) + + return cur_item async def async_turn_on(self): """Turn the media player on.""" From d97bce2d9da30733672212f81817938961193e87 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Mon, 2 May 2022 08:12:32 +0200 Subject: [PATCH 079/151] Fix Renault diagnostics (#71186) --- homeassistant/components/renault/diagnostics.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/renault/diagnostics.py b/homeassistant/components/renault/diagnostics.py index f8b0a0d926e..2029ef989d6 100644 --- a/homeassistant/components/renault/diagnostics.py +++ b/homeassistant/components/renault/diagnostics.py @@ -59,7 +59,9 @@ def _get_vehicle_diagnostics(vehicle: RenaultVehicleProxy) -> dict[str, Any]: return { "details": async_redact_data(vehicle.details.raw_data, TO_REDACT), "data": { - key: async_redact_data(coordinator.data.raw_data, TO_REDACT) + key: async_redact_data( + coordinator.data.raw_data if coordinator.data else None, TO_REDACT + ) for key, coordinator in vehicle.coordinators.items() }, } From 35bc81239766590ea33c0ea87197f5dee13d9575 Mon Sep 17 00:00:00 2001 From: Robert Svensson Date: Mon, 2 May 2022 09:51:19 +0200 Subject: [PATCH 080/151] Make sure sensor state value is not None prior to trying to used the scaled value (#71189) --- homeassistant/components/deconz/sensor.py | 8 +++--- tests/components/deconz/test_sensor.py | 30 +++++++++++++++++++++++ 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/deconz/sensor.py b/homeassistant/components/deconz/sensor.py index a4dcaed8f18..d3a20fad522 100644 --- a/homeassistant/components/deconz/sensor.py +++ b/homeassistant/components/deconz/sensor.py @@ -112,7 +112,7 @@ ENTITY_DESCRIPTIONS = { DeconzSensorDescription( key="consumption", value_fn=lambda device: device.scaled_consumption - if isinstance(device, Consumption) + if isinstance(device, Consumption) and isinstance(device.consumption, int) else None, update_key="consumption", device_class=SensorDeviceClass.ENERGY, @@ -144,7 +144,7 @@ ENTITY_DESCRIPTIONS = { DeconzSensorDescription( key="humidity", value_fn=lambda device: device.scaled_humidity - if isinstance(device, Humidity) + if isinstance(device, Humidity) and isinstance(device.humidity, int) else None, update_key="humidity", device_class=SensorDeviceClass.HUMIDITY, @@ -156,7 +156,7 @@ ENTITY_DESCRIPTIONS = { DeconzSensorDescription( key="light_level", value_fn=lambda device: device.scaled_light_level - if isinstance(device, LightLevel) + if isinstance(device, LightLevel) and isinstance(device.light_level, int) else None, update_key="lightlevel", device_class=SensorDeviceClass.ILLUMINANCE, @@ -189,7 +189,7 @@ ENTITY_DESCRIPTIONS = { DeconzSensorDescription( key="temperature", value_fn=lambda device: device.scaled_temperature - if isinstance(device, Temperature) + if isinstance(device, Temperature) and isinstance(device.temperature, int) else None, update_key="temperature", device_class=SensorDeviceClass.TEMPERATURE, diff --git a/tests/components/deconz/test_sensor.py b/tests/components/deconz/test_sensor.py index bd51bab44e4..590ccee25d5 100644 --- a/tests/components/deconz/test_sensor.py +++ b/tests/components/deconz/test_sensor.py @@ -785,6 +785,36 @@ async def test_add_new_sensor(hass, aioclient_mock, mock_deconz_websocket): assert hass.states.get("sensor.light_level_sensor").state == "999.8" +BAD_SENSOR_DATA = [ + ("ZHAConsumption", "consumption"), + ("ZHAHumidity", "humidity"), + ("ZHALightLevel", "lightlevel"), + ("ZHATemperature", "temperature"), +] + + +@pytest.mark.parametrize("sensor_type, sensor_property", BAD_SENSOR_DATA) +async def test_dont_add_sensor_if_state_is_none( + hass, aioclient_mock, sensor_type, sensor_property +): + """Test sensor with scaled data is not created if state is None.""" + data = { + "sensors": { + "1": { + "name": "Sensor 1", + "type": sensor_type, + "state": {sensor_property: None}, + "config": {}, + "uniqueid": "00:00:00:00:00:00:00:00-00", + } + } + } + with patch.dict(DECONZ_WEB_REQUEST, data): + await setup_deconz_integration(hass, aioclient_mock) + + assert len(hass.states.async_all()) == 0 + + async def test_add_battery_later(hass, aioclient_mock, mock_deconz_websocket): """Test that a sensor without an initial battery state creates a battery sensor once state exist.""" data = { From c37fec67a120b5ada715556e7880431cb1207799 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Mon, 2 May 2022 13:15:19 +0200 Subject: [PATCH 081/151] Remove entity registry entries when script is removed (#71193) --- homeassistant/components/config/automation.py | 2 +- homeassistant/components/config/scene.py | 2 +- homeassistant/components/config/script.py | 16 ++++++++++++++-- tests/components/config/test_script.py | 19 +++++++++++++++++-- 4 files changed, 33 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/config/automation.py b/homeassistant/components/config/automation.py index f1a2d9aab84..5a39b786e27 100644 --- a/homeassistant/components/config/automation.py +++ b/homeassistant/components/config/automation.py @@ -23,7 +23,7 @@ async def async_setup(hass): if action != ACTION_DELETE: return - ent_reg = await entity_registry.async_get_registry(hass) + ent_reg = entity_registry.async_get(hass) entity_id = ent_reg.async_get_entity_id(DOMAIN, DOMAIN, config_key) diff --git a/homeassistant/components/config/scene.py b/homeassistant/components/config/scene.py index 6523ff84158..862c8c46f4d 100644 --- a/homeassistant/components/config/scene.py +++ b/homeassistant/components/config/scene.py @@ -20,7 +20,7 @@ async def async_setup(hass): if action != ACTION_DELETE: return - ent_reg = await entity_registry.async_get_registry(hass) + ent_reg = entity_registry.async_get(hass) entity_id = ent_reg.async_get_entity_id(DOMAIN, HA_DOMAIN, config_key) diff --git a/homeassistant/components/config/script.py b/homeassistant/components/config/script.py index 7adc766a1ab..45a7a6dc227 100644 --- a/homeassistant/components/config/script.py +++ b/homeassistant/components/config/script.py @@ -6,9 +6,9 @@ from homeassistant.components.script.config import ( ) from homeassistant.config import SCRIPT_CONFIG_PATH from homeassistant.const import SERVICE_RELOAD -import homeassistant.helpers.config_validation as cv +from homeassistant.helpers import config_validation as cv, entity_registry as er -from . import EditKeyBasedConfigView +from . import ACTION_DELETE, EditKeyBasedConfigView async def async_setup(hass): @@ -18,6 +18,18 @@ async def async_setup(hass): """post_write_hook for Config View that reloads scripts.""" await hass.services.async_call(DOMAIN, SERVICE_RELOAD) + if action != ACTION_DELETE: + return + + ent_reg = er.async_get(hass) + + entity_id = ent_reg.async_get_entity_id(DOMAIN, DOMAIN, config_key) + + if entity_id is None: + return + + ent_reg.async_remove(entity_id) + hass.http.register_view( EditScriptConfigView( DOMAIN, diff --git a/tests/components/config/test_script.py b/tests/components/config/test_script.py index dca9a8aa8a7..4b6ca1bdc8f 100644 --- a/tests/components/config/test_script.py +++ b/tests/components/config/test_script.py @@ -6,21 +6,34 @@ import pytest from homeassistant.bootstrap import async_setup_component from homeassistant.components import config +from homeassistant.helpers import entity_registry as er from tests.components.blueprint.conftest import stub_blueprint_populate # noqa: F401 @pytest.fixture(autouse=True) -async def setup_script(hass, stub_blueprint_populate): # noqa: F811 +async def setup_script(hass, script_config, stub_blueprint_populate): # noqa: F811 """Set up script integration.""" - assert await async_setup_component(hass, "script", {}) + assert await async_setup_component(hass, "script", {"script": script_config}) +@pytest.mark.parametrize( + "script_config", + ( + { + "one": {"alias": "Light on", "sequence": []}, + "two": {"alias": "Light off", "sequence": []}, + }, + ), +) async def test_delete_script(hass, hass_client): """Test deleting a script.""" with patch.object(config, "SECTIONS", ["script"]): await async_setup_component(hass, "config", {}) + ent_reg = er.async_get(hass) + assert len(ent_reg.entities) == 2 + client = await hass_client() orig_data = {"one": {}, "two": {}} @@ -46,3 +59,5 @@ async def test_delete_script(hass, hass_client): assert len(written) == 1 assert written[0] == {"one": {}} + + assert len(ent_reg.entities) == 1 From fed4d0a38d3f90753a7aa03dcae485e6ea37d108 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Mon, 2 May 2022 14:59:58 +0200 Subject: [PATCH 082/151] Stop script if sub-script stops or aborts (#71195) --- homeassistant/helpers/script.py | 10 ++++-- tests/helpers/test_script.py | 61 ++++++++++++++++++++++++++++++++- 2 files changed, 68 insertions(+), 3 deletions(-) diff --git a/homeassistant/helpers/script.py b/homeassistant/helpers/script.py index 70f73f065ab..d988b0edd81 100644 --- a/homeassistant/helpers/script.py +++ b/homeassistant/helpers/script.py @@ -395,8 +395,14 @@ class _ScriptRun: script_execution_set("finished") except _StopScript: script_execution_set("finished") + # Let the _StopScript bubble up if this is a sub-script + if not self._script.top_level: + raise except _AbortScript: script_execution_set("aborted") + # Let the _AbortScript bubble up if this is a sub-script + if not self._script.top_level: + raise except Exception: script_execution_set("error") raise @@ -1143,7 +1149,7 @@ class Script: hass.bus.async_listen_once( EVENT_HOMEASSISTANT_STOP, partial(_async_stop_scripts_at_shutdown, hass) ) - self._top_level = top_level + self.top_level = top_level if top_level: all_scripts.append( {"instance": self, "started_before_shutdown": not hass.is_stopping} @@ -1431,7 +1437,7 @@ class Script: # If this is a top level Script then make a copy of the variables in case they # are read-only, but more importantly, so as not to leak any variables created # during the run back to the caller. - if self._top_level: + if self.top_level: if self.variables: try: variables = self.variables.async_render( diff --git a/tests/helpers/test_script.py b/tests/helpers/test_script.py index fb3b021daec..b9c968838c9 100644 --- a/tests/helpers/test_script.py +++ b/tests/helpers/test_script.py @@ -94,7 +94,7 @@ def assert_element(trace_element, expected_element, path): # Check for unexpected items in trace_element assert not set(trace_element._result or {}) - set(expected_result) - if "error_type" in expected_element: + if "error_type" in expected_element and expected_element["error_type"] is not None: assert isinstance(trace_element._error, expected_element["error_type"]) else: assert trace_element._error is None @@ -4485,6 +4485,65 @@ async def test_stop_action(hass, caplog): ) +@pytest.mark.parametrize( + "error,error_type,logmsg,script_execution", + ( + (True, script._AbortScript, "Error", "aborted"), + (False, None, "Stop", "finished"), + ), +) +async def test_stop_action_subscript( + hass, caplog, error, error_type, logmsg, script_execution +): + """Test if automation stops on calling the stop action from a sub-script.""" + event = "test_event" + events = async_capture_events(hass, event) + + alias = "stop step" + sequence = cv.SCRIPT_SCHEMA( + [ + {"event": event}, + { + "if": { + "alias": "if condition", + "condition": "template", + "value_template": "{{ 1 == 1 }}", + }, + "then": { + "alias": alias, + "stop": "In the name of love", + "error": error, + }, + }, + {"event": event}, + ] + ) + script_obj = script.Script(hass, sequence, "Test Name", "test_domain") + + await script_obj.async_run(context=Context()) + await hass.async_block_till_done() + + assert f"{logmsg} script sequence: In the name of love" in caplog.text + caplog.clear() + assert len(events) == 1 + + assert_action_trace( + { + "0": [{"result": {"event": "test_event", "event_data": {}}}], + "1": [{"error_type": error_type, "result": {"choice": "then"}}], + "1/if": [{"result": {"result": True}}], + "1/if/condition/0": [{"result": {"result": True, "entities": []}}], + "1/then/0": [ + { + "error_type": error_type, + "result": {"stop": "In the name of love", "error": error}, + } + ], + }, + expected_script_execution=script_execution, + ) + + async def test_stop_action_with_error(hass, caplog): """Test if automation fails on calling the error action.""" event = "test_event" From 4dfcc9dcf9f06ff8eaac0688916e3ba720432d10 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Mon, 2 May 2022 16:41:14 +0200 Subject: [PATCH 083/151] Allow cancelling async_at_start helper (#71196) --- homeassistant/helpers/start.py | 15 +++++++-- tests/helpers/test_start.py | 61 +++++++++++++++++++++++++++++++--- 2 files changed, 69 insertions(+), 7 deletions(-) diff --git a/homeassistant/helpers/start.py b/homeassistant/helpers/start.py index 7f919f5351d..6c17ae5be3a 100644 --- a/homeassistant/helpers/start.py +++ b/homeassistant/helpers/start.py @@ -20,8 +20,19 @@ def async_at_start( hass.async_run_hass_job(at_start_job, hass) return lambda: None - async def _matched_event(event: Event) -> None: + unsub: None | CALLBACK_TYPE = None + + @callback + def _matched_event(event: Event) -> None: """Call the callback when Home Assistant started.""" hass.async_run_hass_job(at_start_job, hass) + nonlocal unsub + unsub = None - return hass.bus.async_listen_once(EVENT_HOMEASSISTANT_START, _matched_event) + @callback + def cancel() -> None: + if unsub: + unsub() + + unsub = hass.bus.async_listen_once(EVENT_HOMEASSISTANT_START, _matched_event) + return cancel diff --git a/tests/helpers/test_start.py b/tests/helpers/test_start.py index 55f98cf60eb..bc32ffa35fd 100644 --- a/tests/helpers/test_start.py +++ b/tests/helpers/test_start.py @@ -27,7 +27,7 @@ async def test_at_start_when_running_awaitable(hass): assert len(calls) == 2 -async def test_at_start_when_running_callback(hass): +async def test_at_start_when_running_callback(hass, caplog): """Test at start when already running.""" assert hass.state == core.CoreState.running assert hass.is_running @@ -39,15 +39,19 @@ async def test_at_start_when_running_callback(hass): """Home Assistant is started.""" calls.append(1) - start.async_at_start(hass, cb_at_start) + start.async_at_start(hass, cb_at_start)() assert len(calls) == 1 hass.state = core.CoreState.starting assert hass.is_running - start.async_at_start(hass, cb_at_start) + start.async_at_start(hass, cb_at_start)() assert len(calls) == 2 + # Check the unnecessary cancel did not generate warnings or errors + for record in caplog.records: + assert record.levelname in ("DEBUG", "INFO") + async def test_at_start_when_starting_awaitable(hass): """Test at start when yet to start.""" @@ -69,7 +73,7 @@ async def test_at_start_when_starting_awaitable(hass): assert len(calls) == 1 -async def test_at_start_when_starting_callback(hass): +async def test_at_start_when_starting_callback(hass, caplog): """Test at start when yet to start.""" hass.state = core.CoreState.not_running assert not hass.is_running @@ -81,10 +85,57 @@ async def test_at_start_when_starting_callback(hass): """Home Assistant is started.""" calls.append(1) - start.async_at_start(hass, cb_at_start) + cancel = start.async_at_start(hass, cb_at_start) await hass.async_block_till_done() assert len(calls) == 0 hass.bus.async_fire(EVENT_HOMEASSISTANT_START) await hass.async_block_till_done() assert len(calls) == 1 + + cancel() + + # Check the unnecessary cancel did not generate warnings or errors + for record in caplog.records: + assert record.levelname in ("DEBUG", "INFO") + + +async def test_cancelling_when_running(hass, caplog): + """Test cancelling at start when already running.""" + assert hass.state == core.CoreState.running + assert hass.is_running + + calls = [] + + async def cb_at_start(hass): + """Home Assistant is started.""" + calls.append(1) + + start.async_at_start(hass, cb_at_start)() + await hass.async_block_till_done() + assert len(calls) == 1 + + # Check the unnecessary cancel did not generate warnings or errors + for record in caplog.records: + assert record.levelname in ("DEBUG", "INFO") + + +async def test_cancelling_when_starting(hass): + """Test cancelling at start when yet to start.""" + hass.state = core.CoreState.not_running + assert not hass.is_running + + calls = [] + + @core.callback + def cb_at_start(hass): + """Home Assistant is started.""" + calls.append(1) + + start.async_at_start(hass, cb_at_start)() + await hass.async_block_till_done() + assert len(calls) == 0 + + hass.bus.async_fire(EVENT_HOMEASSISTANT_START) + await hass.async_block_till_done() + assert len(calls) == 0 From 2b87e03fac61942b2fc0b9a74d6840e98032c21b Mon Sep 17 00:00:00 2001 From: "David F. Mulcahey" Date: Mon, 2 May 2022 09:23:17 -0400 Subject: [PATCH 084/151] Fix bad ZHA _attr definitions (#71198) --- homeassistant/components/zha/sensor.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/zha/sensor.py b/homeassistant/components/zha/sensor.py index 0a5fe204648..249034ef068 100644 --- a/homeassistant/components/zha/sensor.py +++ b/homeassistant/components/zha/sensor.py @@ -345,7 +345,7 @@ class ElectricalMeasurementFrequency(ElectricalMeasurement, id_suffix="ac_freque """Frequency measurement.""" SENSOR_ATTR = "ac_frequency" - _device_class: SensorDeviceClass = SensorDeviceClass.FREQUENCY + _attr_device_class: SensorDeviceClass = SensorDeviceClass.FREQUENCY _unit = FREQUENCY_HERTZ _div_mul_prefix = "ac_frequency" @@ -360,7 +360,7 @@ class ElectricalMeasurementPowerFactor(ElectricalMeasurement, id_suffix="power_f """Frequency measurement.""" SENSOR_ATTR = "power_factor" - _device_class: SensorDeviceClass = SensorDeviceClass.POWER_FACTOR + _attr_device_class: SensorDeviceClass = SensorDeviceClass.POWER_FACTOR _unit = PERCENTAGE @property @@ -718,8 +718,8 @@ class SinopeHVACAction(ThermostatHVACAction): class RSSISensor(Sensor, id_suffix="rssi"): """RSSI sensor for a device.""" - _state_class: SensorStateClass = SensorStateClass.MEASUREMENT - _device_class: SensorDeviceClass = SensorDeviceClass.SIGNAL_STRENGTH + _attr_state_class: SensorStateClass = SensorStateClass.MEASUREMENT + _attr_device_class: SensorDeviceClass = SensorDeviceClass.SIGNAL_STRENGTH _attr_entity_category = EntityCategory.DIAGNOSTIC _attr_entity_registry_enabled_default = False From 71506bd02bba8a30bb6c697d69859459e85aa7f1 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Mon, 2 May 2022 17:35:37 +0200 Subject: [PATCH 085/151] Adjust version number in template default deprecation warning (#71203) --- homeassistant/helpers/template.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/helpers/template.py b/homeassistant/helpers/template.py index bded5ab933c..dbc82ce6902 100644 --- a/homeassistant/helpers/template.py +++ b/homeassistant/helpers/template.py @@ -1331,7 +1331,7 @@ def warn_no_default(function, value, default): ( "Template warning: '%s' got invalid input '%s' when %s template '%s' " "but no default was specified. Currently '%s' will return '%s', however this template will fail " - "to render in Home Assistant core 2022.1" + "to render in Home Assistant core 2022.6" ), function, value, From 6cac24887c24e9ea1aac0d4fdb13ccce2c1d20d8 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 2 May 2022 10:51:13 -0700 Subject: [PATCH 086/151] Skip signing URL that we know requires no auth (#71208) --- .../components/media_player/browse_media.py | 7 +++++++ tests/components/media_player/test_browse_media.py | 12 ++++++++++++ 2 files changed, 19 insertions(+) diff --git a/homeassistant/components/media_player/browse_media.py b/homeassistant/components/media_player/browse_media.py index 60234cd1b38..9327bf68f9f 100644 --- a/homeassistant/components/media_player/browse_media.py +++ b/homeassistant/components/media_player/browse_media.py @@ -20,6 +20,9 @@ from homeassistant.helpers.network import ( from .const import CONTENT_AUTH_EXPIRY_TIME, MEDIA_CLASS_DIRECTORY +# Paths that we don't need to sign +PATHS_WITHOUT_AUTH = ("/api/tts_proxy/",) + @callback def async_process_play_media_url( @@ -46,6 +49,10 @@ def async_process_play_media_url( logging.getLogger(__name__).debug( "Not signing path for content with query param" ) + elif parsed.path.startswith(PATHS_WITHOUT_AUTH): + # We don't sign this path if it doesn't need auth. Although signing itself can't hurt, + # some devices are unable to handle long URLs and the auth signature might push it over. + pass else: signed_path = async_sign_path( hass, diff --git a/tests/components/media_player/test_browse_media.py b/tests/components/media_player/test_browse_media.py index ea1e3b4fc36..58081c7b3b1 100644 --- a/tests/components/media_player/test_browse_media.py +++ b/tests/components/media_player/test_browse_media.py @@ -73,6 +73,18 @@ async def test_process_play_media_url(hass, mock_sign_path): == "http://192.168.123.123:8123/path?hello=world" ) + # Test skip signing URLs if they are known to require no auth + assert ( + async_process_play_media_url(hass, "/api/tts_proxy/bla") + == "http://example.local:8123/api/tts_proxy/bla" + ) + assert ( + async_process_play_media_url( + hass, "http://example.local:8123/api/tts_proxy/bla" + ) + == "http://example.local:8123/api/tts_proxy/bla" + ) + with pytest.raises(ValueError): async_process_play_media_url(hass, "hello") From d213cc3c8ecc0d22648eac797e5ee3082eeea951 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 2 May 2022 11:02:20 -0700 Subject: [PATCH 087/151] Add media source support to Bose Soundtouch (#71209) --- .../components/soundtouch/media_player.py | 20 +++++++++++++++++++ .../soundtouch/test_media_player.py | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/soundtouch/media_player.py b/homeassistant/components/soundtouch/media_player.py index 7081f4a3a0f..3172eb4aed6 100644 --- a/homeassistant/components/soundtouch/media_player.py +++ b/homeassistant/components/soundtouch/media_player.py @@ -1,6 +1,7 @@ """Support for interface with a Bose Soundtouch.""" from __future__ import annotations +from functools import partial import logging import re @@ -8,11 +9,15 @@ from libsoundtouch import soundtouch_device from libsoundtouch.utils import Source import voluptuous as vol +from homeassistant.components import media_source from homeassistant.components.media_player import ( PLATFORM_SCHEMA, MediaPlayerEntity, MediaPlayerEntityFeature, ) +from homeassistant.components.media_player.browse_media import ( + async_process_play_media_url, +) from homeassistant.const import ( CONF_HOST, CONF_NAME, @@ -190,6 +195,7 @@ class SoundTouchDevice(MediaPlayerEntity): | MediaPlayerEntityFeature.PLAY | MediaPlayerEntityFeature.PLAY_MEDIA | MediaPlayerEntityFeature.SELECT_SOURCE + | MediaPlayerEntityFeature.BROWSE_MEDIA ) def __init__(self, name, config): @@ -348,6 +354,16 @@ class SoundTouchDevice(MediaPlayerEntity): EVENT_HOMEASSISTANT_START, async_update_on_start ) + async def async_play_media(self, media_type, media_id, **kwargs): + """Play a piece of media.""" + if media_source.is_media_source_id(media_id): + play_item = await media_source.async_resolve_media(self.hass, media_id) + media_id = async_process_play_media_url(self.hass, play_item.url) + + await self.hass.async_add_executor_job( + partial(self.play_media, media_type, media_id, **kwargs) + ) + def play_media(self, media_type, media_id, **kwargs): """Play a piece of media.""" _LOGGER.debug("Starting media with media_id: %s", media_id) @@ -450,6 +466,10 @@ class SoundTouchDevice(MediaPlayerEntity): return attributes + async def async_browse_media(self, media_content_type=None, media_content_id=None): + """Implement the websocket media browsing helper.""" + return await media_source.async_browse_media(self.hass, media_content_id) + def get_zone_info(self): """Return the current zone info.""" zone_status = self._device.zone_status() diff --git a/tests/components/soundtouch/test_media_player.py b/tests/components/soundtouch/test_media_player.py index 4ed8a648c77..797b5b440d1 100644 --- a/tests/components/soundtouch/test_media_player.py +++ b/tests/components/soundtouch/test_media_player.py @@ -488,7 +488,7 @@ async def test_media_commands(mocked_status, mocked_volume, hass, one_device): assert mocked_volume.call_count == 2 entity_1_state = hass.states.get("media_player.soundtouch_1") - assert entity_1_state.attributes["supported_features"] == 20413 + assert entity_1_state.attributes["supported_features"] == 151485 @patch("libsoundtouch.device.SoundTouchDevice.power_off") From 06f939b0ac4584dc0a4025d278bf45e28ab2e782 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 2 May 2022 15:39:05 -0700 Subject: [PATCH 088/151] Bump frontend to 20220502.0 (#71221) --- 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 e57f06827a5..18e2fc6ed8f 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==20220429.0"], + "requirements": ["home-assistant-frontend==20220502.0"], "dependencies": [ "api", "auth", diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index 6dd904c858f..f328394b9c1 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -15,7 +15,7 @@ ciso8601==2.2.0 cryptography==36.0.2 fnvhash==0.1.0 hass-nabucasa==0.54.0 -home-assistant-frontend==20220429.0 +home-assistant-frontend==20220502.0 httpx==0.22.0 ifaddr==0.1.7 jinja2==3.1.1 diff --git a/requirements_all.txt b/requirements_all.txt index 914c06f40e2..2a776b4d883 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -819,7 +819,7 @@ hole==0.7.0 holidays==0.13 # homeassistant.components.frontend -home-assistant-frontend==20220429.0 +home-assistant-frontend==20220502.0 # homeassistant.components.home_connect homeconnect==0.7.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 70d3ab4a700..3ce220105eb 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -580,7 +580,7 @@ hole==0.7.0 holidays==0.13 # homeassistant.components.frontend -home-assistant-frontend==20220429.0 +home-assistant-frontend==20220502.0 # homeassistant.components.home_connect homeconnect==0.7.0 From 8ac5dd32a8add0bc0766d444da102f728b3472f0 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 2 May 2022 15:40:51 -0700 Subject: [PATCH 089/151] Bumped version to 2022.5.0b6 --- homeassistant/const.py | 2 +- setup.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 22ee6c30e88..a3647a3a27c 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -7,7 +7,7 @@ from .backports.enum import StrEnum MAJOR_VERSION: Final = 2022 MINOR_VERSION: Final = 5 -PATCH_VERSION: Final = "0b5" +PATCH_VERSION: Final = "0b6" __short_version__: Final = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__: Final = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER: Final[tuple[int, int, int]] = (3, 9, 0) diff --git a/setup.cfg b/setup.cfg index 16fb8c94692..84275aca14f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = homeassistant -version = 2022.5.0b5 +version = 2022.5.0b6 author = The Home Assistant Authors author_email = hello@home-assistant.io license = Apache-2.0 From 19bff3543797684c9974717e05fe8c43add15c39 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Tue, 3 May 2022 16:43:44 +0200 Subject: [PATCH 090/151] Ensure 'this' variable is always defined for template entities (#70911) --- .../components/template/template_entity.py | 30 ++++- homeassistant/helpers/template.py | 3 +- tests/components/template/test_sensor.py | 114 ++++++++++++++++++ 3 files changed, 140 insertions(+), 7 deletions(-) diff --git a/homeassistant/components/template/template_entity.py b/homeassistant/components/template/template_entity.py index d7d6ab46c62..a6d1cba78e1 100644 --- a/homeassistant/components/template/template_entity.py +++ b/homeassistant/components/template/template_entity.py @@ -17,8 +17,9 @@ from homeassistant.const import ( CONF_ICON_TEMPLATE, CONF_NAME, EVENT_HOMEASSISTANT_START, + STATE_UNKNOWN, ) -from homeassistant.core import CoreState, Event, callback +from homeassistant.core import CoreState, Event, State, callback from homeassistant.exceptions import TemplateError import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity import Entity @@ -251,13 +252,28 @@ class TemplateEntity(Entity): self._entity_picture_template = config.get(CONF_PICTURE) self._friendly_name_template = config.get(CONF_NAME) + class DummyState(State): + """None-state for template entities not yet added to the state machine.""" + + def __init__(self) -> None: + """Initialize a new state.""" + super().__init__("unknown.unknown", STATE_UNKNOWN) + self.entity_id = None # type: ignore[assignment] + + @property + def name(self) -> str: + """Name of this state.""" + return "" + + variables = {"this": DummyState()} + # Try to render the name as it can influence the entity ID self._attr_name = fallback_name if self._friendly_name_template: self._friendly_name_template.hass = hass with contextlib.suppress(TemplateError): self._attr_name = self._friendly_name_template.async_render( - parse_result=False + variables=variables, parse_result=False ) # Templates will not render while the entity is unavailable, try to render the @@ -266,13 +282,15 @@ class TemplateEntity(Entity): self._entity_picture_template.hass = hass with contextlib.suppress(TemplateError): self._attr_entity_picture = self._entity_picture_template.async_render( - parse_result=False + variables=variables, parse_result=False ) if self._icon_template: self._icon_template.hass = hass with contextlib.suppress(TemplateError): - self._attr_icon = self._icon_template.async_render(parse_result=False) + self._attr_icon = self._icon_template.async_render( + variables=variables, parse_result=False + ) @callback def _update_available(self, result): @@ -373,10 +391,10 @@ class TemplateEntity(Entity): template_var_tups: list[TrackTemplate] = [] has_availability_template = False - values = {"this": TemplateStateFromEntityId(self.hass, self.entity_id)} + variables = {"this": TemplateStateFromEntityId(self.hass, self.entity_id)} for template, attributes in self._template_attrs.items(): - template_var_tup = TrackTemplate(template, values) + template_var_tup = TrackTemplate(template, variables) is_availability_template = False for attribute in attributes: # pylint: disable-next=protected-access diff --git a/homeassistant/helpers/template.py b/homeassistant/helpers/template.py index dbc82ce6902..3f084674a1b 100644 --- a/homeassistant/helpers/template.py +++ b/homeassistant/helpers/template.py @@ -850,7 +850,8 @@ class TemplateStateFromEntityId(TemplateStateBase): @property def _state(self) -> State: # type: ignore[override] # mypy issue 4125 state = self._hass.states.get(self._entity_id) - assert state + if not state: + state = State(self._entity_id, STATE_UNKNOWN) return state def __repr__(self) -> str: diff --git a/tests/components/template/test_sensor.py b/tests/components/template/test_sensor.py index 297008e77bb..ddf13c2015b 100644 --- a/tests/components/template/test_sensor.py +++ b/tests/components/template/test_sensor.py @@ -653,6 +653,120 @@ async def test_this_variable(hass, start_ha): assert hass.states.get(TEST_NAME).state == "It Works: " + TEST_NAME +@pytest.mark.parametrize("count,domain", [(1, "template")]) +@pytest.mark.parametrize( + "config", + [ + { + "template": { + "sensor": { + "state": "{{ this.attributes.get('test', 'no-test!') }}: {{ this.entity_id }}", + "icon": "mdi:{% if this.entity_id in states and 'friendly_name' in this.attributes %} {{this.attributes['friendly_name']}} {% else %}{{this.entity_id}}:{{this.entity_id in states}}{% endif %}", + "name": "{% if this.entity_id in states and 'friendly_name' in this.attributes %} {{this.attributes['friendly_name']}} {% else %}{{this.entity_id}}:{{this.entity_id in states}}{% endif %}", + "picture": "{% if this.entity_id in states and 'entity_picture' in this.attributes %} {{this.attributes['entity_picture']}} {% else %}{{this.entity_id}}:{{this.entity_id in states}}{% endif %}", + "attributes": {"test": "{{ this.entity_id }}"}, + }, + }, + }, + ], +) +async def test_this_variable_early_hass_not_running(hass, config, count, domain): + """Test referencing 'this' variable before the entity is in the state machine. + + Hass is not yet started when the entity is added. + Icon, name and picture templates are rendered once in the constructor. + """ + entity_id = "sensor.none_false" + + hass.state = CoreState.not_running + + # Setup template + with assert_setup_component(count, domain): + assert await async_setup_component( + hass, + domain, + config, + ) + await hass.async_block_till_done() + await hass.async_block_till_done() + + # Sensor state not rendered, icon, name and picture + # templates rendered in constructor with entity_id set to None + state = hass.states.get(entity_id) + assert state.state == "unknown" + assert state.attributes == { + "entity_picture": "None:False", + "friendly_name": "None:False", + "icon": "mdi:None:False", + } + + # Signal hass started + hass.bus.async_fire(EVENT_HOMEASSISTANT_START) + await hass.async_block_till_done() + + # Re-render icon, name, pciture + other templates now rendered + state = hass.states.get(entity_id) + assert state.state == "sensor.none_false: sensor.none_false" + assert state.attributes == { + "entity_picture": "sensor.none_false:False", + "friendly_name": "sensor.none_false:False", + "icon": "mdi:sensor.none_false:False", + "test": "sensor.none_false", + } + + +@pytest.mark.parametrize("count,domain", [(1, "template")]) +@pytest.mark.parametrize( + "config", + [ + { + "template": { + "sensor": { + "state": "{{ this.attributes.get('test', 'no-test!') }}: {{ this.entity_id }}", + "icon": "mdi:{% if this.entity_id in states and 'friendly_name' in this.attributes %} {{this.attributes['friendly_name']}} {% else %}{{this.entity_id}}:{{this.entity_id in states}}{% endif %}", + "name": "{% if this.entity_id in states and 'friendly_name' in this.attributes %} {{this.attributes['friendly_name']}} {% else %}{{this.entity_id}}:{{this.entity_id in states}}{% endif %}", + "picture": "{% if this.entity_id in states and 'entity_picture' in this.attributes %} {{this.attributes['entity_picture']}} {% else %}{{this.entity_id}}:{{this.entity_id in states}}{% endif %}", + "attributes": {"test": "{{ this.entity_id }}"}, + }, + }, + }, + ], +) +async def test_this_variable_early_hass_running(hass, config, count, domain): + """Test referencing 'this' variable before the entity is in the state machine. + + Hass is already started when the entity is added. + Icon, name and picture templates are rendered in the constructor, and again + before the entity is added to hass. + """ + + # Start hass + assert hass.state == CoreState.running + await hass.async_start() + await hass.async_block_till_done() + + # Setup template + with assert_setup_component(count, domain): + assert await async_setup_component( + hass, + domain, + config, + ) + await hass.async_block_till_done() + await hass.async_block_till_done() + + entity_id = "sensor.none_false" + # All templated rendered + state = hass.states.get(entity_id) + assert state.state == "sensor.none_false: sensor.none_false" + assert state.attributes == { + "entity_picture": "sensor.none_false:False", + "friendly_name": "sensor.none_false:False", + "icon": "mdi:sensor.none_false:False", + "test": "sensor.none_false", + } + + @pytest.mark.parametrize("count,domain", [(1, sensor.DOMAIN)]) @pytest.mark.parametrize( "config", From 1a2a061c193eaf09c8763fc459c4166bfb94a450 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 3 May 2022 07:42:06 -0700 Subject: [PATCH 091/151] Fix homepod streaming and browsing apps (#71230) --- .../components/apple_tv/media_player.py | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/homeassistant/components/apple_tv/media_player.py b/homeassistant/components/apple_tv/media_player.py index 02919043bb2..6c1b35f70f8 100644 --- a/homeassistant/components/apple_tv/media_player.py +++ b/homeassistant/components/apple_tv/media_player.py @@ -79,7 +79,8 @@ SUPPORT_APPLE_TV = ( SUPPORT_FEATURE_MAPPING = { FeatureName.PlayUrl: MediaPlayerEntityFeature.BROWSE_MEDIA | MediaPlayerEntityFeature.PLAY_MEDIA, - FeatureName.StreamFile: MediaPlayerEntityFeature.PLAY_MEDIA, + FeatureName.StreamFile: MediaPlayerEntityFeature.BROWSE_MEDIA + | MediaPlayerEntityFeature.PLAY_MEDIA, FeatureName.Pause: MediaPlayerEntityFeature.PAUSE, FeatureName.Play: MediaPlayerEntityFeature.PLAY, FeatureName.SetPosition: MediaPlayerEntityFeature.SEEK, @@ -282,23 +283,20 @@ class AppleTvMediaPlayer(AppleTVEntity, MediaPlayerEntity): if media_type == MEDIA_TYPE_APP: await self.atv.apps.launch_app(media_id) - is_media_source_id = media_source.is_media_source_id(media_id) + if media_source.is_media_source_id(media_id): + play_item = await media_source.async_resolve_media(self.hass, media_id) + media_id = play_item.url + media_type = MEDIA_TYPE_MUSIC - if ( - not is_media_source_id - and self._is_feature_available(FeatureName.StreamFile) - and (await is_streamable(media_id) or media_type == MEDIA_TYPE_MUSIC) + media_id = async_process_play_media_url(self.hass, media_id) + + if self._is_feature_available(FeatureName.StreamFile) and ( + media_type == MEDIA_TYPE_MUSIC or await is_streamable(media_id) ): _LOGGER.debug("Streaming %s via RAOP", media_id) await self.atv.stream.stream_file(media_id) if self._is_feature_available(FeatureName.PlayUrl): - if is_media_source_id: - play_item = await media_source.async_resolve_media(self.hass, media_id) - media_id = play_item.url - - media_id = async_process_play_media_url(self.hass, media_id) - _LOGGER.debug("Playing %s via AirPlay", media_id) await self.atv.stream.play_url(media_id) else: @@ -397,9 +395,12 @@ class AppleTvMediaPlayer(AppleTVEntity, MediaPlayerEntity): media_content_id=None, ) -> BrowseMedia: """Implement the websocket media browsing helper.""" - # If we can't stream URLs, we can't browse media. - # In that case the `BROWSE_MEDIA` feature was added because of AppList/LaunchApp - if not self._is_feature_available(FeatureName.PlayUrl): + if media_content_id == "apps" or ( + # If we can't stream files or URLs, we can't browse media. + # In that case the `BROWSE_MEDIA` feature was added because of AppList/LaunchApp + not self._is_feature_available(FeatureName.PlayUrl) + and not self._is_feature_available(FeatureName.StreamFile) + ): return build_app_list(self._app_list) if self._app_list: From 1f4e9effd8610ccfd5c4030bc51d6ee7d51a92c2 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 3 May 2022 00:34:04 -0700 Subject: [PATCH 092/151] Bump aioslimproto to 1.0.2 (#71231) --- homeassistant/components/slimproto/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/slimproto/manifest.json b/homeassistant/components/slimproto/manifest.json index b8e00eb3f99..557428919a4 100644 --- a/homeassistant/components/slimproto/manifest.json +++ b/homeassistant/components/slimproto/manifest.json @@ -4,7 +4,7 @@ "config_flow": true, "iot_class": "local_push", "documentation": "https://www.home-assistant.io/integrations/slimproto", - "requirements": ["aioslimproto==1.0.0"], + "requirements": ["aioslimproto==1.0.2"], "codeowners": ["@marcelveldt"], "after_dependencies": ["media_source"] } diff --git a/requirements_all.txt b/requirements_all.txt index 2a776b4d883..2cbc7fa8134 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -244,7 +244,7 @@ aiosenz==1.0.0 aioshelly==2.0.0 # homeassistant.components.slimproto -aioslimproto==1.0.0 +aioslimproto==1.0.2 # homeassistant.components.steamist aiosteamist==0.3.1 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 3ce220105eb..e824051d07a 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -210,7 +210,7 @@ aiosenz==1.0.0 aioshelly==2.0.0 # homeassistant.components.slimproto -aioslimproto==1.0.0 +aioslimproto==1.0.2 # homeassistant.components.steamist aiosteamist==0.3.1 From 8252ba82d113e42a7483e8a69e48565c778a0c8e Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Tue, 3 May 2022 10:36:58 +0200 Subject: [PATCH 093/151] Isolate parallel subscripts (#71233) --- homeassistant/helpers/script.py | 18 ++-- tests/helpers/test_script.py | 146 +++++++++++++++++++++++++++++++- 2 files changed, 157 insertions(+), 7 deletions(-) diff --git a/homeassistant/helpers/script.py b/homeassistant/helpers/script.py index d988b0edd81..3d43e03ddce 100644 --- a/homeassistant/helpers/script.py +++ b/homeassistant/helpers/script.py @@ -1133,13 +1133,14 @@ class Script: domain: str, *, # Used in "Running " log message - running_description: str | None = None, change_listener: Callable[..., Any] | None = None, - script_mode: str = DEFAULT_SCRIPT_MODE, - max_runs: int = DEFAULT_MAX, - max_exceeded: str = DEFAULT_MAX_EXCEEDED, - logger: logging.Logger | None = None, + copy_variables: bool = False, log_exceptions: bool = True, + logger: logging.Logger | None = None, + max_exceeded: str = DEFAULT_MAX_EXCEEDED, + max_runs: int = DEFAULT_MAX, + running_description: str | None = None, + script_mode: str = DEFAULT_SCRIPT_MODE, top_level: bool = True, variables: ScriptVariables | None = None, ) -> None: @@ -1192,6 +1193,7 @@ class Script: self._variables_dynamic = template.is_complex(variables) if self._variables_dynamic: template.attach(hass, variables) + self._copy_variables_on_run = copy_variables @property def change_listener(self) -> Callable[..., Any] | None: @@ -1454,7 +1456,10 @@ class Script: variables["context"] = context else: - variables = cast(dict, run_variables) + if self._copy_variables_on_run: + variables = cast(dict, copy(run_variables)) + else: + variables = cast(dict, run_variables) # Prevent non-allowed recursive calls which will cause deadlocks when we try to # stop (restart) or wait for (queued) our own script run. @@ -1671,6 +1676,7 @@ class Script: max_runs=self.max_runs, logger=self._logger, top_level=False, + copy_variables=True, ) parallel_script.change_listener = partial( self._chain_change_listener, parallel_script diff --git a/tests/helpers/test_script.py b/tests/helpers/test_script.py index b9c968838c9..4791dd84cc4 100644 --- a/tests/helpers/test_script.py +++ b/tests/helpers/test_script.py @@ -3027,7 +3027,7 @@ async def test_parallel(hass: HomeAssistant, caplog: pytest.LogCaptureFixture) - ], "0/parallel/1/sequence/0": [ { - "variables": {"wait": {"remaining": None}}, + "variables": {}, "result": { "event": "test_event", "event_data": {"hello": "from action 2", "what": "world"}, @@ -3047,6 +3047,150 @@ async def test_parallel(hass: HomeAssistant, caplog: pytest.LogCaptureFixture) - assert_action_trace(expected_trace) +async def test_parallel_loop( + hass: HomeAssistant, caplog: pytest.LogCaptureFixture +) -> None: + """Test parallel loops do not affect each other.""" + events_loop1 = async_capture_events(hass, "loop1") + events_loop2 = async_capture_events(hass, "loop2") + hass.states.async_set("switch.trigger", "off") + + sequence = cv.SCRIPT_SCHEMA( + { + "parallel": [ + { + "alias": "Loop1", + "sequence": [ + { + "repeat": { + "for_each": ["loop1_a", "loop1_b", "loop1_c"], + "sequence": [ + { + "event": "loop1", + "event_data": {"hello1": "{{ repeat.item }}"}, + } + ], + }, + }, + ], + }, + { + "alias": "Loop2", + "sequence": [ + { + "repeat": { + "for_each": ["loop2_a", "loop2_b", "loop2_c"], + "sequence": [ + { + "event": "loop2", + "event_data": {"hello2": "{{ repeat.item }}"}, + } + ], + }, + }, + ], + }, + ] + } + ) + + script_obj = script.Script(hass, sequence, "Test Name", "test_domain") + + hass.async_create_task( + script_obj.async_run(MappingProxyType({"what": "world"}), Context()) + ) + await hass.async_block_till_done() + + assert len(events_loop1) == 3 + assert events_loop1[0].data["hello1"] == "loop1_a" + assert events_loop1[1].data["hello1"] == "loop1_b" + assert events_loop1[2].data["hello1"] == "loop1_c" + assert events_loop2[0].data["hello2"] == "loop2_a" + assert events_loop2[1].data["hello2"] == "loop2_b" + assert events_loop2[2].data["hello2"] == "loop2_c" + + expected_trace = { + "0": [{"result": {}}], + "0/parallel/0/sequence/0": [{"result": {}}], + "0/parallel/1/sequence/0": [ + { + "result": {}, + } + ], + "0/parallel/0/sequence/0/repeat/sequence/0": [ + { + "variables": { + "repeat": { + "first": True, + "index": 1, + "last": False, + "item": "loop1_a", + } + }, + "result": {"event": "loop1", "event_data": {"hello1": "loop1_a"}}, + }, + { + "variables": { + "repeat": { + "first": False, + "index": 2, + "last": False, + "item": "loop1_b", + } + }, + "result": {"event": "loop1", "event_data": {"hello1": "loop1_b"}}, + }, + { + "variables": { + "repeat": { + "first": False, + "index": 3, + "last": True, + "item": "loop1_c", + } + }, + "result": {"event": "loop1", "event_data": {"hello1": "loop1_c"}}, + }, + ], + "0/parallel/1/sequence/0/repeat/sequence/0": [ + { + "variables": { + "repeat": { + "first": True, + "index": 1, + "last": False, + "item": "loop2_a", + } + }, + "result": {"event": "loop2", "event_data": {"hello2": "loop2_a"}}, + }, + { + "variables": { + "repeat": { + "first": False, + "index": 2, + "last": False, + "item": "loop2_b", + } + }, + "result": {"event": "loop2", "event_data": {"hello2": "loop2_b"}}, + }, + { + "variables": { + "repeat": { + "first": False, + "index": 3, + "last": True, + "item": "loop2_c", + } + }, + "result": {"event": "loop2", "event_data": {"hello2": "loop2_c"}}, + }, + ], + } + assert_action_trace(expected_trace) + + async def test_parallel_error( hass: HomeAssistant, caplog: pytest.LogCaptureFixture ) -> None: From 6301873d8928d43bdfd66412757b22fa6fd91b9a Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Tue, 3 May 2022 11:28:08 +0200 Subject: [PATCH 094/151] Fix script conditions (#71235) --- homeassistant/helpers/script.py | 32 +++++++++++++++++++++++--------- tests/helpers/test_script.py | 5 +---- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/homeassistant/helpers/script.py b/homeassistant/helpers/script.py index 3d43e03ddce..0b755ae0032 100644 --- a/homeassistant/helpers/script.py +++ b/homeassistant/helpers/script.py @@ -205,6 +205,10 @@ async def trace_action(hass, script_run, stop, variables): except _AbortScript as ex: trace_element.set_error(ex.__cause__ or ex) raise ex + except _ConditionFail as ex: + # Clear errors which may have been set when evaluating the condition + trace_element.set_error(None) + raise ex except _StopScript as ex: raise ex except Exception as ex: @@ -325,11 +329,19 @@ async def async_validate_action_config( return config -class _AbortScript(Exception): +class _HaltScript(Exception): + """Throw if script needs to stop executing.""" + + +class _AbortScript(_HaltScript): """Throw if script needs to abort because of an unexpected error.""" -class _StopScript(Exception): +class _ConditionFail(_HaltScript): + """Throw if script needs to stop because a condition evaluated to False.""" + + +class _StopScript(_HaltScript): """Throw if script needs to stop.""" @@ -393,16 +405,18 @@ class _ScriptRun: await self._async_step(log_exceptions=False) else: script_execution_set("finished") - except _StopScript: - script_execution_set("finished") - # Let the _StopScript bubble up if this is a sub-script - if not self._script.top_level: - raise except _AbortScript: script_execution_set("aborted") # Let the _AbortScript bubble up if this is a sub-script if not self._script.top_level: raise + except _ConditionFail: + script_execution_set("aborted") + except _StopScript: + script_execution_set("finished") + # Let the _StopScript bubble up if this is a sub-script + if not self._script.top_level: + raise except Exception: script_execution_set("error") raise @@ -450,7 +464,7 @@ class _ScriptRun: def _handle_exception( self, exception: Exception, continue_on_error: bool, log_exceptions: bool ) -> None: - if not isinstance(exception, (_AbortScript, _StopScript)) and log_exceptions: + if not isinstance(exception, _HaltScript) and log_exceptions: self._log_exception(exception) if not continue_on_error: @@ -726,7 +740,7 @@ class _ScriptRun: self._log("Test condition %s: %s", self._script.last_action, check) trace_update_result(result=check) if not check: - raise _AbortScript + raise _ConditionFail def _test_conditions(self, conditions, name, condition_path=None): if condition_path is None: diff --git a/tests/helpers/test_script.py b/tests/helpers/test_script.py index 4791dd84cc4..c01f086a12a 100644 --- a/tests/helpers/test_script.py +++ b/tests/helpers/test_script.py @@ -1445,7 +1445,7 @@ async def test_condition_warning(hass, caplog): assert_action_trace( { "0": [{"result": {"event": "test_event", "event_data": {}}}], - "1": [{"error_type": script._AbortScript, "result": {"result": False}}], + "1": [{"result": {"result": False}}], "1/entity_id/0": [{"error_type": ConditionError}], }, expected_script_execution="aborted", @@ -1499,7 +1499,6 @@ async def test_condition_basic(hass, caplog): "0": [{"result": {"event": "test_event", "event_data": {}}}], "1": [ { - "error_type": script._AbortScript, "result": {"entities": ["test.entity"], "result": False}, } ], @@ -1590,7 +1589,6 @@ async def test_shorthand_template_condition(hass, caplog): "0": [{"result": {"event": "test_event", "event_data": {}}}], "1": [ { - "error_type": script._AbortScript, "result": {"entities": ["test.entity"], "result": False}, } ], @@ -1656,7 +1654,6 @@ async def test_condition_validation(hass, caplog): "0": [{"result": {"event": "test_event", "event_data": {}}}], "1": [ { - "error_type": script._AbortScript, "result": {"result": False}, } ], From d69a08bdf9b45a8c202b6496f1882379d0c81ae7 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 3 May 2022 13:04:59 +0200 Subject: [PATCH 095/151] Indicate disabled steps in script trace (#71237) --- homeassistant/helpers/script.py | 1 + tests/helpers/test_script.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/homeassistant/helpers/script.py b/homeassistant/helpers/script.py index 0b755ae0032..54ae4f456ab 100644 --- a/homeassistant/helpers/script.py +++ b/homeassistant/helpers/script.py @@ -439,6 +439,7 @@ class _ScriptRun: self._log( "Skipped disabled step %s", self._action.get(CONF_ALIAS, action) ) + trace_set_result(enabled=False) return try: diff --git a/tests/helpers/test_script.py b/tests/helpers/test_script.py index c01f086a12a..136729e62fc 100644 --- a/tests/helpers/test_script.py +++ b/tests/helpers/test_script.py @@ -4939,8 +4939,8 @@ async def test_disabled_actions( assert_action_trace( { "0": [{"result": {"event": "test_event", "event_data": {}}}], - "1": [{}], - "2": [{}], + "1": [{"result": {"enabled": False}}], + "2": [{"result": {"enabled": False}}], "3": [{"result": {"event": "test_event", "event_data": {}}}], }, ) From f4f5ba93b5a1bf7887b8fa5e2a46859de6399a41 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Tue, 3 May 2022 13:06:13 +0200 Subject: [PATCH 096/151] Add test for failing conditions in sub scripts (#71238) --- tests/helpers/test_script.py | 49 ++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/tests/helpers/test_script.py b/tests/helpers/test_script.py index 136729e62fc..519498f2e08 100644 --- a/tests/helpers/test_script.py +++ b/tests/helpers/test_script.py @@ -1507,6 +1507,55 @@ async def test_condition_basic(hass, caplog): ) +async def test_condition_subscript(hass, caplog): + """Test failing conditions in a subscript don't stop the parent script.""" + event = "test_event" + events = async_capture_events(hass, event) + sequence = cv.SCRIPT_SCHEMA( + [ + {"event": event}, + { + "repeat": { + "until": "{{ 1 == 1 }}", + "sequence": [ + {"condition": "{{ 1 == 2 }}"}, + ], + } + }, + {"event": event}, + ] + ) + script_obj = script.Script(hass, sequence, "Test Name", "test_domain") + + hass.states.async_set("test.entity", "hello") + await script_obj.async_run(context=Context()) + await hass.async_block_till_done() + + caplog.clear() + assert len(events) == 2 + + assert_action_trace( + { + "0": [{"result": {"event": "test_event", "event_data": {}}}], + "1": [{"result": {}}], + "1/repeat/sequence/0": [ + { + "variables": {"repeat": {"first": True, "index": 1}}, + "result": {"entities": [], "result": False}, + } + ], + "1/repeat": [ + { + "variables": {"repeat": {"first": True, "index": 1}}, + "result": {"result": True}, + } + ], + "1/repeat/until/0": [{"result": {"entities": [], "result": True}}], + "2": [{"result": {"event": "test_event", "event_data": {}}}], + } + ) + + async def test_and_default_condition(hass, caplog): """Test that a list of conditions evaluates as AND.""" alias = "condition step" From 989fa4274bd9256bf66cd70f5e218688c93691bb Mon Sep 17 00:00:00 2001 From: starkillerOG Date: Tue, 3 May 2022 19:38:20 +0200 Subject: [PATCH 097/151] Prevent Netgear SSDP from updating host (#71240) --- homeassistant/components/netgear/config_flow.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/homeassistant/components/netgear/config_flow.py b/homeassistant/components/netgear/config_flow.py index 85c206ce463..79053c712fc 100644 --- a/homeassistant/components/netgear/config_flow.py +++ b/homeassistant/components/netgear/config_flow.py @@ -19,6 +19,7 @@ from homeassistant.const import ( ) from homeassistant.core import callback from homeassistant.data_entry_flow import FlowResult +from homeassistant.util.network import is_ipv4_address from .const import ( CONF_CONSIDER_HOME, @@ -129,6 +130,9 @@ class NetgearFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): hostname = cast(str, hostname) updated_data[CONF_HOST] = hostname + if not is_ipv4_address(str(hostname)): + return self.async_abort(reason="not_ipv4_address") + _LOGGER.debug("Netgear ssdp discovery info: %s", discovery_info) await self.async_set_unique_id(discovery_info.upnp[ssdp.ATTR_UPNP_SERIAL]) From c9eca4033669133ed8e01135f2b963be062f3acb Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 3 May 2022 11:47:13 -0500 Subject: [PATCH 098/151] Allow hidden entities to be selected in homekit include mode (#71250) --- .../components/homekit/config_flow.py | 10 ++++--- tests/components/homekit/test_config_flow.py | 28 +++++++++++-------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/homeassistant/components/homekit/config_flow.py b/homeassistant/components/homekit/config_flow.py index b7a00bc3ade..5f142fdb0fe 100644 --- a/homeassistant/components/homekit/config_flow.py +++ b/homeassistant/components/homekit/config_flow.py @@ -467,7 +467,7 @@ class OptionsFlowHandler(config_entries.OptionsFlow): entity_filter = self.hk_options.get(CONF_FILTER, {}) entities = entity_filter.get(CONF_INCLUDE_ENTITIES, []) all_supported_entities = _async_get_matching_entities( - self.hass, domains, include_entity_category=True + self.hass, domains, include_entity_category=True, include_hidden=True ) # In accessory mode we can only have one default_value = next( @@ -508,7 +508,7 @@ class OptionsFlowHandler(config_entries.OptionsFlow): entities = entity_filter.get(CONF_INCLUDE_ENTITIES, []) all_supported_entities = _async_get_matching_entities( - self.hass, domains, include_entity_category=True + self.hass, domains, include_entity_category=True, include_hidden=True ) if not entities: entities = entity_filter.get(CONF_EXCLUDE_ENTITIES, []) @@ -646,12 +646,13 @@ def _exclude_by_entity_registry( ent_reg: entity_registry.EntityRegistry, entity_id: str, include_entity_category: bool, + include_hidden: bool, ) -> bool: """Filter out hidden entities and ones with entity category (unless specified).""" return bool( (entry := ent_reg.async_get(entity_id)) and ( - entry.hidden_by is not None + (not include_hidden and entry.hidden_by is not None) or (not include_entity_category and entry.entity_category is not None) ) ) @@ -661,6 +662,7 @@ def _async_get_matching_entities( hass: HomeAssistant, domains: list[str] | None = None, include_entity_category: bool = False, + include_hidden: bool = False, ) -> dict[str, str]: """Fetch all entities or entities in the given domains.""" ent_reg = entity_registry.async_get(hass) @@ -671,7 +673,7 @@ def _async_get_matching_entities( key=lambda item: item.entity_id, ) if not _exclude_by_entity_registry( - ent_reg, state.entity_id, include_entity_category + ent_reg, state.entity_id, include_entity_category, include_hidden ) } diff --git a/tests/components/homekit/test_config_flow.py b/tests/components/homekit/test_config_flow.py index 42ce6779528..ce0bed0ff52 100644 --- a/tests/components/homekit/test_config_flow.py +++ b/tests/components/homekit/test_config_flow.py @@ -1504,7 +1504,7 @@ async def test_options_flow_exclude_mode_skips_hidden_entities( @patch(f"{PATH_HOMEKIT}.async_port_is_available", return_value=True) -async def test_options_flow_include_mode_skips_hidden_entities( +async def test_options_flow_include_mode_allows_hidden_entities( port_mock, hass, mock_get_source_ip, hk_driver, mock_async_zeroconf, entity_reg ): """Ensure include mode does not offer hidden entities.""" @@ -1558,24 +1558,28 @@ async def test_options_flow_include_mode_skips_hidden_entities( assert _get_schema_default(result2["data_schema"].schema, "entities") == [] # sonos_hidden_switch.entity_id is a hidden entity - # so it should not be selectable since it will always be excluded - with pytest.raises(voluptuous.error.MultipleInvalid): - await hass.config_entries.options.async_configure( - result2["flow_id"], - user_input={"entities": [sonos_hidden_switch.entity_id]}, - ) - - result4 = await hass.config_entries.options.async_configure( + # we allow it to be selected in include mode only + result3 = await hass.config_entries.options.async_configure( result2["flow_id"], - user_input={"entities": ["media_player.tv", "switch.other"]}, + user_input={ + "entities": [ + sonos_hidden_switch.entity_id, + "media_player.tv", + "switch.other", + ] + }, ) - assert result4["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY + assert result3["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY assert config_entry.options == { "mode": "bridge", "filter": { "exclude_domains": [], "exclude_entities": [], "include_domains": [], - "include_entities": ["media_player.tv", "switch.other"], + "include_entities": [ + sonos_hidden_switch.entity_id, + "media_player.tv", + "switch.other", + ], }, } From 707aa5f684f8d4865fd49fd80c0821f364e47934 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 3 May 2022 13:35:38 -0500 Subject: [PATCH 099/151] Fix oncue not logging back in when the session expires (#71258) --- homeassistant/components/oncue/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/oncue/manifest.json b/homeassistant/components/oncue/manifest.json index 9991d35ed18..e0533129d94 100644 --- a/homeassistant/components/oncue/manifest.json +++ b/homeassistant/components/oncue/manifest.json @@ -9,7 +9,7 @@ } ], "documentation": "https://www.home-assistant.io/integrations/oncue", - "requirements": ["aiooncue==0.3.2"], + "requirements": ["aiooncue==0.3.4"], "codeowners": ["@bdraco"], "iot_class": "cloud_polling", "loggers": ["aiooncue"] diff --git a/requirements_all.txt b/requirements_all.txt index 2cbc7fa8134..9429d4be32e 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -211,7 +211,7 @@ aionotify==0.2.0 aionotion==3.0.2 # homeassistant.components.oncue -aiooncue==0.3.2 +aiooncue==0.3.4 # homeassistant.components.acmeda aiopulse==0.4.3 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index e824051d07a..3db81fe8524 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -177,7 +177,7 @@ aionanoleaf==0.2.0 aionotion==3.0.2 # homeassistant.components.oncue -aiooncue==0.3.2 +aiooncue==0.3.4 # homeassistant.components.acmeda aiopulse==0.4.3 From 9aed63f2d80801d2a55262002ffeb684b83b6e4c Mon Sep 17 00:00:00 2001 From: James Szalay Date: Tue, 3 May 2022 15:17:27 -0400 Subject: [PATCH 100/151] Updated vesync component fans list to handle alt ids for models. (#71259) * Updated vesync component fans list to handle alt ids for models. * Lint Co-authored-by: Paulus Schoutsen --- homeassistant/components/vesync/fan.py | 30 ++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/homeassistant/components/vesync/fan.py b/homeassistant/components/vesync/fan.py index 41ed6109be2..e37a6c8893e 100644 --- a/homeassistant/components/vesync/fan.py +++ b/homeassistant/components/vesync/fan.py @@ -20,10 +20,20 @@ _LOGGER = logging.getLogger(__name__) DEV_TYPE_TO_HA = { "LV-PUR131S": "fan", + "LV-RH131S": "fan", # Alt ID Model LV-PUR131S "Core200S": "fan", + "LAP-C201S-AUSR": "fan", # Alt ID Model Core200S + "LAP-C202S-WUSR": "fan", # Alt ID Model Core200S "Core300S": "fan", + "LAP-C301S-WJP": "fan", # Alt ID Model Core300S "Core400S": "fan", + "LAP-C401S-WJP": "fan", # Alt ID Model Core400S + "LAP-C401S-WUSR": "fan", # Alt ID Model Core400S + "LAP-C401S-WAAA": "fan", # Alt ID Model Core400S "Core600S": "fan", + "LAP-C601S-WUS": "fan", # Alt ID Model Core600S + "LAP-C601S-WUSR": "fan", # Alt ID Model Core600S + "LAP-C601S-WEU": "fan", # Alt ID Model Core600S } FAN_MODE_AUTO = "auto" @@ -31,17 +41,37 @@ FAN_MODE_SLEEP = "sleep" PRESET_MODES = { "LV-PUR131S": [FAN_MODE_AUTO, FAN_MODE_SLEEP], + "LV-RH131S": [FAN_MODE_AUTO, FAN_MODE_SLEEP], # Alt ID Model LV-PUR131S "Core200S": [FAN_MODE_SLEEP], + "LAP-C201S-AUSR": [FAN_MODE_SLEEP], # Alt ID Model Core200S + "LAP-C202S-WUSR": [FAN_MODE_SLEEP], # Alt ID Model Core200S "Core300S": [FAN_MODE_AUTO, FAN_MODE_SLEEP], + "LAP-C301S-WJP": [FAN_MODE_AUTO, FAN_MODE_SLEEP], # Alt ID Model Core300S "Core400S": [FAN_MODE_AUTO, FAN_MODE_SLEEP], + "LAP-C401S-WJP": [FAN_MODE_AUTO, FAN_MODE_SLEEP], # Alt ID Model Core400S + "LAP-C401S-WUSR": [FAN_MODE_AUTO, FAN_MODE_SLEEP], # Alt ID Model Core400S + "LAP-C401S-WAAA": [FAN_MODE_AUTO, FAN_MODE_SLEEP], # Alt ID Model Core400S "Core600S": [FAN_MODE_AUTO, FAN_MODE_SLEEP], + "LAP-C601S-WUS": [FAN_MODE_AUTO, FAN_MODE_SLEEP], # Alt ID Model Core600S + "LAP-C601S-WUSR": [FAN_MODE_AUTO, FAN_MODE_SLEEP], # Alt ID Model Core600S + "LAP-C601S-WEU": [FAN_MODE_AUTO, FAN_MODE_SLEEP], # Alt ID Model Core600S } SPEED_RANGE = { # off is not included "LV-PUR131S": (1, 3), + "LV-RH131S": (1, 3), # ALt ID Model LV-PUR131S "Core200S": (1, 3), + "LAP-C201S-AUSR": (1, 3), # ALt ID Model Core200S + "LAP-C202S-WUSR": (1, 3), # ALt ID Model Core200S "Core300S": (1, 3), + "LAP-C301S-WJP": (1, 3), # ALt ID Model Core300S "Core400S": (1, 4), + "LAP-C401S-WJP": (1, 4), # ALt ID Model Core400S + "LAP-C401S-WUSR": (1, 4), # ALt ID Model Core400S + "LAP-C401S-WAAA": (1, 4), # ALt ID Model Core400S "Core600S": (1, 4), + "LAP-C601S-WUS": (1, 4), # ALt ID Model Core600S + "LAP-C601S-WUSR": (1, 4), # ALt ID Model Core600S + "LAP-C601S-WEU": (1, 4), # ALt ID Model Core600S } From a175943187d759c1b80b38a570f09ab27077c399 Mon Sep 17 00:00:00 2001 From: Tom Harris Date: Tue, 3 May 2022 14:34:20 -0400 Subject: [PATCH 101/151] Load Insteon modem database on startup if needed (#71261) --- homeassistant/components/insteon/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/insteon/__init__.py b/homeassistant/components/insteon/__init__.py index 94c18df9a33..e2bebf0bb7f 100644 --- a/homeassistant/components/insteon/__init__.py +++ b/homeassistant/components/insteon/__init__.py @@ -49,7 +49,7 @@ async def async_get_device_config(hass, config_entry): with suppress(AttributeError): await devices[address].async_status() - load_aldb = devices.modem.aldb.read_write_mode == ReadWriteMode.UNKNOWN + load_aldb = 2 if devices.modem.aldb.read_write_mode == ReadWriteMode.UNKNOWN else 1 await devices.async_load(id_devices=1, load_modem_aldb=load_aldb) for addr in devices: device = devices[addr] From ad5c2cdf8f09149b9b9edbe10e6cfa26eec2da1c Mon Sep 17 00:00:00 2001 From: Zack Barett Date: Tue, 3 May 2022 13:51:07 -0500 Subject: [PATCH 102/151] Bump frontend to 20220503.0 (#71262) --- 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 18e2fc6ed8f..89dd75fa96c 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==20220502.0"], + "requirements": ["home-assistant-frontend==20220503.0"], "dependencies": [ "api", "auth", diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index f328394b9c1..fcb63a9426c 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -15,7 +15,7 @@ ciso8601==2.2.0 cryptography==36.0.2 fnvhash==0.1.0 hass-nabucasa==0.54.0 -home-assistant-frontend==20220502.0 +home-assistant-frontend==20220503.0 httpx==0.22.0 ifaddr==0.1.7 jinja2==3.1.1 diff --git a/requirements_all.txt b/requirements_all.txt index 9429d4be32e..900e4047c6d 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -819,7 +819,7 @@ hole==0.7.0 holidays==0.13 # homeassistant.components.frontend -home-assistant-frontend==20220502.0 +home-assistant-frontend==20220503.0 # homeassistant.components.home_connect homeconnect==0.7.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 3db81fe8524..b30a5105fff 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -580,7 +580,7 @@ hole==0.7.0 holidays==0.13 # homeassistant.components.frontend -home-assistant-frontend==20220502.0 +home-assistant-frontend==20220503.0 # homeassistant.components.home_connect homeconnect==0.7.0 From 23738d5e91a94e1a00a9ea5dcf9733a68278761d Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Tue, 3 May 2022 21:19:43 +0200 Subject: [PATCH 103/151] Reject MQTT topics which include control- or non-characters (#71263) --- homeassistant/components/mqtt/util.py | 9 +++++++++ tests/components/mqtt/test_init.py | 28 ++++++++++++++++++++++----- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/mqtt/util.py b/homeassistant/components/mqtt/util.py index b8fca50a153..66eec1bdfe8 100644 --- a/homeassistant/components/mqtt/util.py +++ b/homeassistant/components/mqtt/util.py @@ -31,6 +31,15 @@ def valid_topic(value: Any) -> str: ) if "\0" in value: raise vol.Invalid("MQTT topic name/filter must not contain null character.") + if any(char <= "\u001F" for char in value): + raise vol.Invalid("MQTT topic name/filter must not contain control characters.") + if any("\u007f" <= char <= "\u009F" for char in value): + raise vol.Invalid("MQTT topic name/filter must not contain control characters.") + if any("\ufdd0" <= char <= "\ufdef" for char in value): + raise vol.Invalid("MQTT topic name/filter must not contain non-characters.") + if any((ord(char) & 0xFFFF) in (0xFFFE, 0xFFFF) for char in value): + raise vol.Invalid("MQTT topic name/filter must not contain noncharacters.") + return value diff --git a/tests/components/mqtt/test_init.py b/tests/components/mqtt/test_init.py index 03874ed331e..763cbfc1b71 100644 --- a/tests/components/mqtt/test_init.py +++ b/tests/components/mqtt/test_init.py @@ -522,11 +522,29 @@ def test_validate_topic(): # Topics "SHOULD NOT" include these special characters # (not MUST NOT, RFC2119). The receiver MAY close the connection. - mqtt.util.valid_topic("\u0001") - mqtt.util.valid_topic("\u001F") - mqtt.util.valid_topic("\u009F") - mqtt.util.valid_topic("\u009F") - mqtt.util.valid_topic("\uffff") + # We enforce this because mosquitto does: https://github.com/eclipse/mosquitto/commit/94fdc9cb44c829ff79c74e1daa6f7d04283dfffd + with pytest.raises(vol.Invalid): + mqtt.util.valid_topic("\u0001") + with pytest.raises(vol.Invalid): + mqtt.util.valid_topic("\u001F") + with pytest.raises(vol.Invalid): + mqtt.util.valid_topic("\u007F") + with pytest.raises(vol.Invalid): + mqtt.util.valid_topic("\u009F") + with pytest.raises(vol.Invalid): + mqtt.util.valid_topic("\ufdd0") + with pytest.raises(vol.Invalid): + mqtt.util.valid_topic("\ufdef") + with pytest.raises(vol.Invalid): + mqtt.util.valid_topic("\ufffe") + with pytest.raises(vol.Invalid): + mqtt.util.valid_topic("\ufffe") + with pytest.raises(vol.Invalid): + mqtt.util.valid_topic("\uffff") + with pytest.raises(vol.Invalid): + mqtt.util.valid_topic("\U0001fffe") + with pytest.raises(vol.Invalid): + mqtt.util.valid_topic("\U0001ffff") def test_validate_subscribe_topic(): From 269c71d2fbb59f0d6c118416b02f1487052c9229 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 3 May 2022 12:16:57 -0700 Subject: [PATCH 104/151] Bump aioslimproto to 2.0.0 (#71265) --- homeassistant/components/slimproto/manifest.json | 2 +- homeassistant/components/slimproto/media_player.py | 4 ++-- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/slimproto/manifest.json b/homeassistant/components/slimproto/manifest.json index 557428919a4..eb4ab00f18d 100644 --- a/homeassistant/components/slimproto/manifest.json +++ b/homeassistant/components/slimproto/manifest.json @@ -4,7 +4,7 @@ "config_flow": true, "iot_class": "local_push", "documentation": "https://www.home-assistant.io/integrations/slimproto", - "requirements": ["aioslimproto==1.0.2"], + "requirements": ["aioslimproto==2.0.0"], "codeowners": ["@marcelveldt"], "after_dependencies": ["media_source"] } diff --git a/homeassistant/components/slimproto/media_player.py b/homeassistant/components/slimproto/media_player.py index d41d10432db..6b1989830e2 100644 --- a/homeassistant/components/slimproto/media_player.py +++ b/homeassistant/components/slimproto/media_player.py @@ -118,7 +118,7 @@ class SlimProtoPlayer(MediaPlayerEntity): EventType.PLAYER_CONNECTED, EventType.PLAYER_DISCONNECTED, EventType.PLAYER_NAME_RECEIVED, - EventType.PLAYER_RPC_EVENT, + EventType.PLAYER_CLI_EVENT, ), player_filter=self.player.player_id, ) @@ -205,7 +205,7 @@ class SlimProtoPlayer(MediaPlayerEntity): if event.type == EventType.PLAYER_CONNECTED: # player reconnected, update our player object self.player = self.slimserver.get_player(event.player_id) - if event.type == EventType.PLAYER_RPC_EVENT: + if event.type == EventType.PLAYER_CLI_EVENT: # rpc event from player such as a button press, # forward on the eventbus for others to handle dev_id = self.registry_entry.device_id if self.registry_entry else None diff --git a/requirements_all.txt b/requirements_all.txt index 900e4047c6d..32caea924ed 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -244,7 +244,7 @@ aiosenz==1.0.0 aioshelly==2.0.0 # homeassistant.components.slimproto -aioslimproto==1.0.2 +aioslimproto==2.0.0 # homeassistant.components.steamist aiosteamist==0.3.1 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index b30a5105fff..40e1252b848 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -210,7 +210,7 @@ aiosenz==1.0.0 aioshelly==2.0.0 # homeassistant.components.slimproto -aioslimproto==1.0.2 +aioslimproto==2.0.0 # homeassistant.components.steamist aiosteamist==0.3.1 From 461ebcc83543602615c4f02ec9e3cb139b63c4e1 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 3 May 2022 12:21:11 -0700 Subject: [PATCH 105/151] Bumped version to 2022.5.0b7 --- homeassistant/const.py | 2 +- setup.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index a3647a3a27c..5312d175858 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -7,7 +7,7 @@ from .backports.enum import StrEnum MAJOR_VERSION: Final = 2022 MINOR_VERSION: Final = 5 -PATCH_VERSION: Final = "0b6" +PATCH_VERSION: Final = "0b7" __short_version__: Final = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__: Final = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER: Final[tuple[int, int, int]] = (3, 9, 0) diff --git a/setup.cfg b/setup.cfg index 84275aca14f..7115459d9ff 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = homeassistant -version = 2022.5.0b6 +version = 2022.5.0b7 author = The Home Assistant Authors author_email = hello@home-assistant.io license = Apache-2.0 From 0890f4e51481f44a53e41acc58680f7a408c601e Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 4 May 2022 10:44:20 -0500 Subject: [PATCH 106/151] Fix history using pre v25 queries during v26 migration (#71294) --- homeassistant/components/recorder/__init__.py | 5 +++++ homeassistant/components/recorder/history.py | 4 ++-- tests/components/recorder/test_history.py | 6 +++--- tests/components/recorder/test_init.py | 7 +++++++ tests/components/recorder/test_migrate.py | 7 ++++++- 5 files changed, 23 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/recorder/__init__.py b/homeassistant/components/recorder/__init__.py index a0d2f1c8702..1ff7c886c35 100644 --- a/homeassistant/components/recorder/__init__.py +++ b/homeassistant/components/recorder/__init__.py @@ -79,6 +79,7 @@ from .const import ( ) from .executor import DBInterruptibleThreadPoolExecutor from .models import ( + SCHEMA_VERSION, Base, Events, StateAttributes, @@ -634,6 +635,7 @@ class Recorder(threading.Thread): self.entity_filter = entity_filter self.exclude_t = exclude_t + self.schema_version = 0 self._commits_without_expire = 0 self._old_states: dict[str, States] = {} self._state_attributes_ids: LRU = LRU(STATE_ATTRIBUTES_ID_CACHE_SIZE) @@ -973,6 +975,8 @@ class Recorder(threading.Thread): self.hass.add_job(self.async_connection_failed) return + self.schema_version = current_version + schema_is_current = migration.schema_is_current(current_version) if schema_is_current: self._setup_run() @@ -994,6 +998,7 @@ class Recorder(threading.Thread): # with startup which is also cpu intensive if not schema_is_current: if self._migrate_schema_and_setup_run(current_version): + self.schema_version = SCHEMA_VERSION if not self._event_listener: # If the schema migration takes so long that the end # queue watcher safety kicks in because MAX_QUEUE_BACKLOG diff --git a/homeassistant/components/recorder/history.py b/homeassistant/components/recorder/history.py index 24fe21f101c..d221ced3a84 100644 --- a/homeassistant/components/recorder/history.py +++ b/homeassistant/components/recorder/history.py @@ -116,7 +116,7 @@ def query_and_join_attributes( # If we in the process of migrating schema we do # not want to join the state_attributes table as we # do not know if it will be there yet - if recorder.get_instance(hass).migration_in_progress: + if recorder.get_instance(hass).schema_version < 25: return QUERY_STATES_PRE_SCHEMA_25, False # Finally if no migration is in progress and no_attributes # was not requested, we query both attributes columns and @@ -146,7 +146,7 @@ def bake_query_and_join_attributes( # If we in the process of migrating schema we do # not want to join the state_attributes table as we # do not know if it will be there yet - if recorder.get_instance(hass).migration_in_progress: + if recorder.get_instance(hass).schema_version < 25: if include_last_updated: return ( bakery(lambda session: session.query(*QUERY_STATES_PRE_SCHEMA_25)), diff --git a/tests/components/recorder/test_history.py b/tests/components/recorder/test_history.py index 8f22447cd8e..c4952d8355b 100644 --- a/tests/components/recorder/test_history.py +++ b/tests/components/recorder/test_history.py @@ -628,7 +628,7 @@ async def test_state_changes_during_period_query_during_migration_to_schema_25( conn.execute(text("drop table state_attributes;")) conn.commit() - with patch.object(instance, "migration_in_progress", True): + with patch.object(instance, "schema_version", 24): no_attributes = True hist = history.state_changes_during_period( hass, start, end, entity_id, no_attributes, include_start_time_state=False @@ -674,7 +674,7 @@ async def test_get_states_query_during_migration_to_schema_25( conn.execute(text("drop table state_attributes;")) conn.commit() - with patch.object(instance, "migration_in_progress", True): + with patch.object(instance, "schema_version", 24): no_attributes = True hist = await _async_get_states( hass, end, [entity_id], no_attributes=no_attributes @@ -723,7 +723,7 @@ async def test_get_states_query_during_migration_to_schema_25_multiple_entities( conn.execute(text("drop table state_attributes;")) conn.commit() - with patch.object(instance, "migration_in_progress", True): + with patch.object(instance, "schema_version", 24): no_attributes = True hist = await _async_get_states( hass, end, entity_ids, no_attributes=no_attributes diff --git a/tests/components/recorder/test_init.py b/tests/components/recorder/test_init.py index 77bd3992e72..0a0194f4ddf 100644 --- a/tests/components/recorder/test_init.py +++ b/tests/components/recorder/test_init.py @@ -31,6 +31,7 @@ from homeassistant.components.recorder import ( ) from homeassistant.components.recorder.const import DATA_INSTANCE from homeassistant.components.recorder.models import ( + SCHEMA_VERSION, Events, RecorderRuns, StateAttributes, @@ -438,6 +439,12 @@ def _state_empty_context(hass, entity_id): return state +def test_setup_without_migration(hass_recorder): + """Verify the schema version without a migration.""" + hass = hass_recorder() + assert recorder.get_instance(hass).schema_version == SCHEMA_VERSION + + # pylint: disable=redefined-outer-name,invalid-name def test_saving_state_include_domains(hass_recorder): """Test saving and restoring a state.""" diff --git a/tests/components/recorder/test_migrate.py b/tests/components/recorder/test_migrate.py index 6b963941263..464c3a8b4a3 100644 --- a/tests/components/recorder/test_migrate.py +++ b/tests/components/recorder/test_migrate.py @@ -22,7 +22,11 @@ from homeassistant.bootstrap import async_setup_component from homeassistant.components import persistent_notification as pn, recorder from homeassistant.components.recorder import migration, models from homeassistant.components.recorder.const import DATA_INSTANCE -from homeassistant.components.recorder.models import RecorderRuns, States +from homeassistant.components.recorder.models import ( + SCHEMA_VERSION, + RecorderRuns, + States, +) from homeassistant.components.recorder.util import session_scope import homeassistant.util.dt as dt_util @@ -79,6 +83,7 @@ async def test_migration_in_progress(hass): await async_wait_recording_done(hass) assert recorder.util.async_migration_in_progress(hass) is False + assert recorder.get_instance(hass).schema_version == SCHEMA_VERSION async def test_database_migration_failed(hass): From aa0335408aa676ba67caefe937f81a8c9784e6a9 Mon Sep 17 00:00:00 2001 From: Sean Vig Date: Wed, 4 May 2022 11:15:52 -0400 Subject: [PATCH 107/151] Change Amcrest event monitor to non-async (#69640) --- homeassistant/components/amcrest/__init__.py | 128 ++++++++++++------- 1 file changed, 84 insertions(+), 44 deletions(-) diff --git a/homeassistant/components/amcrest/__init__.py b/homeassistant/components/amcrest/__init__.py index f2472575259..e3f48263e8b 100644 --- a/homeassistant/components/amcrest/__init__.py +++ b/homeassistant/components/amcrest/__init__.py @@ -7,6 +7,7 @@ from contextlib import asynccontextmanager, suppress from dataclasses import dataclass from datetime import datetime, timedelta import logging +import threading from typing import Any import aiohttp @@ -30,15 +31,14 @@ from homeassistant.const import ( CONF_USERNAME, ENTITY_MATCH_ALL, ENTITY_MATCH_NONE, - EVENT_HOMEASSISTANT_STOP, HTTP_BASIC_AUTHENTICATION, Platform, ) -from homeassistant.core import Event, HomeAssistant, ServiceCall, callback +from homeassistant.core import HomeAssistant, ServiceCall from homeassistant.exceptions import Unauthorized, UnknownUser from homeassistant.helpers import discovery import homeassistant.helpers.config_validation as cv -from homeassistant.helpers.dispatcher import async_dispatcher_send +from homeassistant.helpers.dispatcher import async_dispatcher_send, dispatcher_send from homeassistant.helpers.event import async_track_time_interval from homeassistant.helpers.service import async_extract_entity_ids from homeassistant.helpers.typing import ConfigType @@ -144,10 +144,13 @@ class AmcrestChecker(ApiWrapper): self._hass = hass self._wrap_name = name self._wrap_errors = 0 - self._wrap_lock = asyncio.Lock() + self._wrap_lock = threading.Lock() + self._async_wrap_lock = asyncio.Lock() self._wrap_login_err = False - self._wrap_event_flag = asyncio.Event() + self._wrap_event_flag = threading.Event() self._wrap_event_flag.set() + self._async_wrap_event_flag = asyncio.Event() + self._async_wrap_event_flag.set() self._unsub_recheck: Callable[[], None] | None = None super().__init__( host, @@ -164,12 +167,18 @@ class AmcrestChecker(ApiWrapper): return self._wrap_errors <= MAX_ERRORS and not self._wrap_login_err @property - def available_flag(self) -> asyncio.Event: + def available_flag(self) -> threading.Event: """Return event flag that indicates if camera's API is responding.""" return self._wrap_event_flag + @property + def async_available_flag(self) -> asyncio.Event: + """Return event flag that indicates if camera's API is responding.""" + return self._async_wrap_event_flag + def _start_recovery(self) -> None: - self._wrap_event_flag.clear() + self.available_flag.clear() + self.async_available_flag.clear() async_dispatcher_send( self._hass, service_signal(SERVICE_UPDATE, self._wrap_name) ) @@ -177,9 +186,22 @@ class AmcrestChecker(ApiWrapper): self._hass, self._wrap_test_online, RECHECK_INTERVAL ) + def command(self, *args: Any, **kwargs: Any) -> Any: + """amcrest.ApiWrapper.command wrapper to catch errors.""" + try: + ret = super().command(*args, **kwargs) + except LoginError as ex: + self._handle_offline(ex) + raise + except AmcrestError: + self._handle_error() + raise + self._set_online() + return ret + async def async_command(self, *args: Any, **kwargs: Any) -> httpx.Response: """amcrest.ApiWrapper.command wrapper to catch errors.""" - async with self._command_wrapper(): + async with self._async_command_wrapper(): ret = await super().async_command(*args, **kwargs) return ret @@ -188,35 +210,47 @@ class AmcrestChecker(ApiWrapper): self, *args: Any, **kwargs: Any ) -> AsyncIterator[httpx.Response]: """amcrest.ApiWrapper.command wrapper to catch errors.""" - async with self._command_wrapper(): + async with self._async_command_wrapper(): async with super().async_stream_command(*args, **kwargs) as ret: yield ret @asynccontextmanager - async def _command_wrapper(self) -> AsyncIterator[None]: + async def _async_command_wrapper(self) -> AsyncIterator[None]: try: yield except LoginError as ex: - async with self._wrap_lock: - was_online = self.available - was_login_err = self._wrap_login_err - self._wrap_login_err = True - if not was_login_err: - _LOGGER.error("%s camera offline: Login error: %s", self._wrap_name, ex) - if was_online: - self._start_recovery() + async with self._async_wrap_lock: + self._handle_offline(ex) raise except AmcrestError: - async with self._wrap_lock: - was_online = self.available - errs = self._wrap_errors = self._wrap_errors + 1 - offline = not self.available - _LOGGER.debug("%s camera errs: %i", self._wrap_name, errs) - if was_online and offline: - _LOGGER.error("%s camera offline: Too many errors", self._wrap_name) - self._start_recovery() + async with self._async_wrap_lock: + self._handle_error() raise - async with self._wrap_lock: + async with self._async_wrap_lock: + self._set_online() + + def _handle_offline(self, ex: Exception) -> None: + with self._wrap_lock: + was_online = self.available + was_login_err = self._wrap_login_err + self._wrap_login_err = True + if not was_login_err: + _LOGGER.error("%s camera offline: Login error: %s", self._wrap_name, ex) + if was_online: + self._start_recovery() + + def _handle_error(self) -> None: + with self._wrap_lock: + was_online = self.available + errs = self._wrap_errors = self._wrap_errors + 1 + offline = not self.available + _LOGGER.debug("%s camera errs: %i", self._wrap_name, errs) + if was_online and offline: + _LOGGER.error("%s camera offline: Too many errors", self._wrap_name) + self._start_recovery() + + def _set_online(self) -> None: + with self._wrap_lock: was_offline = not self.available self._wrap_errors = 0 self._wrap_login_err = False @@ -225,7 +259,8 @@ class AmcrestChecker(ApiWrapper): self._unsub_recheck() self._unsub_recheck = None _LOGGER.error("%s camera back online", self._wrap_name) - self._wrap_event_flag.set() + self.available_flag.set() + self.async_available_flag.set() async_dispatcher_send( self._hass, service_signal(SERVICE_UPDATE, self._wrap_name) ) @@ -237,18 +272,18 @@ class AmcrestChecker(ApiWrapper): await self.async_current_time -async def _monitor_events( +def _monitor_events( hass: HomeAssistant, name: str, api: AmcrestChecker, event_codes: set[str], ) -> None: while True: - await api.available_flag.wait() + api.available_flag.wait() try: - async for code, payload in api.async_event_actions("All"): + for code, payload in api.event_actions("All"): event_data = {"camera": name, "event": code, "payload": payload} - hass.bus.async_fire("amcrest", event_data) + hass.bus.fire("amcrest", event_data) if code in event_codes: signal = service_signal(SERVICE_EVENT, name, code) start = any( @@ -256,18 +291,32 @@ async def _monitor_events( for key, val in payload.items() ) _LOGGER.debug("Sending signal: '%s': %s", signal, start) - async_dispatcher_send(hass, signal, start) + dispatcher_send(hass, signal, start) except AmcrestError as error: _LOGGER.warning( "Error while processing events from %s camera: %r", name, error ) +def _start_event_monitor( + hass: HomeAssistant, + name: str, + api: AmcrestChecker, + event_codes: set[str], +) -> None: + thread = threading.Thread( + target=_monitor_events, + name=f"Amcrest {name}", + args=(hass, name, api, event_codes), + daemon=True, + ) + thread.start() + + async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: """Set up the Amcrest IP Camera component.""" hass.data.setdefault(DATA_AMCREST, {DEVICES: {}, CAMERAS: []}) - monitor_tasks = [] for device in config[DOMAIN]: name: str = device[CONF_NAME] username: str = device[CONF_USERNAME] @@ -328,9 +377,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: and sensor.event_code is not None } - monitor_tasks.append( - asyncio.create_task(_monitor_events(hass, name, api, event_codes)) - ) + _start_event_monitor(hass, name, api, event_codes) if sensors: hass.async_create_task( @@ -354,13 +401,6 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ) ) - @callback - def cancel_monitors(event: Event) -> None: - for monitor_task in monitor_tasks: - monitor_task.cancel() - - hass.bus.async_listen(EVENT_HOMEASSISTANT_STOP, cancel_monitors) - if not hass.data[DATA_AMCREST][DEVICES]: return False From 444a56341b86531c647fdb658acc1c0f91fabddb Mon Sep 17 00:00:00 2001 From: starkillerOG Date: Wed, 4 May 2022 09:22:30 +0200 Subject: [PATCH 108/151] Bump pynetgear to 0.10.0 (#71251) --- homeassistant/components/netgear/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/netgear/manifest.json b/homeassistant/components/netgear/manifest.json index a5374f4c315..ae0824c82a5 100644 --- a/homeassistant/components/netgear/manifest.json +++ b/homeassistant/components/netgear/manifest.json @@ -2,7 +2,7 @@ "domain": "netgear", "name": "NETGEAR", "documentation": "https://www.home-assistant.io/integrations/netgear", - "requirements": ["pynetgear==0.9.4"], + "requirements": ["pynetgear==0.10.0"], "codeowners": ["@hacf-fr", "@Quentame", "@starkillerOG"], "iot_class": "local_polling", "config_flow": true, diff --git a/requirements_all.txt b/requirements_all.txt index 32caea924ed..fd940f1f02c 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1664,7 +1664,7 @@ pymyq==3.1.4 pymysensors==0.22.1 # homeassistant.components.netgear -pynetgear==0.9.4 +pynetgear==0.10.0 # homeassistant.components.netio pynetio==0.1.9.1 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 40e1252b848..f1f64b63f06 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1116,7 +1116,7 @@ pymyq==3.1.4 pymysensors==0.22.1 # homeassistant.components.netgear -pynetgear==0.9.4 +pynetgear==0.10.0 # homeassistant.components.nina pynina==0.1.8 From d525aad87ee1c7b8bfdaeaa12f51b3e96ac196ec Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 3 May 2022 14:09:35 -0700 Subject: [PATCH 109/151] Fix homekit tests in beta (#71268) --- tests/components/homekit/test_accessories.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/components/homekit/test_accessories.py b/tests/components/homekit/test_accessories.py index 704bb368d64..6d7de6eb696 100644 --- a/tests/components/homekit/test_accessories.py +++ b/tests/components/homekit/test_accessories.py @@ -30,6 +30,7 @@ from homeassistant.components.homekit.const import ( MANUFACTURER, SERV_ACCESSORY_INFO, ) +from homeassistant.components.homekit.util import format_version from homeassistant.const import ( ATTR_BATTERY_CHARGING, ATTR_BATTERY_LEVEL, @@ -165,7 +166,7 @@ async def test_home_accessory(hass, hk_driver): serv.get_characteristic(CHAR_SERIAL_NUMBER).value == "light.accessory_that_exceeds_the_maximum_maximum_maximum_maximum" ) - assert hass_version.startswith( + assert format_version(hass_version).startswith( serv.get_characteristic(CHAR_FIRMWARE_REVISION).value ) @@ -217,7 +218,7 @@ async def test_accessory_with_missing_basic_service_info(hass, hk_driver): assert serv.get_characteristic(CHAR_MANUFACTURER).value == "Home Assistant Sensor" assert serv.get_characteristic(CHAR_MODEL).value == "Sensor" assert serv.get_characteristic(CHAR_SERIAL_NUMBER).value == entity_id - assert hass_version.startswith( + assert format_version(hass_version).startswith( serv.get_characteristic(CHAR_FIRMWARE_REVISION).value ) assert isinstance(acc.to_HAP(), dict) @@ -247,7 +248,7 @@ async def test_accessory_with_hardware_revision(hass, hk_driver): assert serv.get_characteristic(CHAR_MANUFACTURER).value == "Home Assistant Sensor" assert serv.get_characteristic(CHAR_MODEL).value == "Sensor" assert serv.get_characteristic(CHAR_SERIAL_NUMBER).value == entity_id - assert hass_version.startswith( + assert format_version(hass_version).startswith( serv.get_characteristic(CHAR_FIRMWARE_REVISION).value ) assert serv.get_characteristic(CHAR_HARDWARE_REVISION).value == "1.2.3" @@ -692,7 +693,7 @@ def test_home_bridge(hk_driver): serv = bridge.services[0] # SERV_ACCESSORY_INFO assert serv.display_name == SERV_ACCESSORY_INFO assert serv.get_characteristic(CHAR_NAME).value == BRIDGE_NAME - assert hass_version.startswith( + assert format_version(hass_version).startswith( serv.get_characteristic(CHAR_FIRMWARE_REVISION).value ) assert serv.get_characteristic(CHAR_MANUFACTURER).value == MANUFACTURER From bf17bd55fde24d1134aa2444c6d3c5691c3b013b Mon Sep 17 00:00:00 2001 From: Marvin Wichmann Date: Wed, 4 May 2022 06:14:56 +0200 Subject: [PATCH 110/151] Update xknx to 0.21.2 (#71271) --- homeassistant/components/knx/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/knx/manifest.json b/homeassistant/components/knx/manifest.json index a000261ec3a..00b4c6cdc5f 100644 --- a/homeassistant/components/knx/manifest.json +++ b/homeassistant/components/knx/manifest.json @@ -3,7 +3,7 @@ "name": "KNX", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/knx", - "requirements": ["xknx==0.21.1"], + "requirements": ["xknx==0.21.2"], "codeowners": ["@Julius2342", "@farmio", "@marvin-w"], "quality_scale": "platinum", "iot_class": "local_push", diff --git a/requirements_all.txt b/requirements_all.txt index fd940f1f02c..30114cda0e4 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2445,7 +2445,7 @@ xbox-webapi==2.0.11 xboxapi==2.0.1 # homeassistant.components.knx -xknx==0.21.1 +xknx==0.21.2 # homeassistant.components.bluesound # homeassistant.components.fritz diff --git a/requirements_test_all.txt b/requirements_test_all.txt index f1f64b63f06..9d643da34db 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1597,7 +1597,7 @@ wolf_smartset==0.1.11 xbox-webapi==2.0.11 # homeassistant.components.knx -xknx==0.21.1 +xknx==0.21.2 # homeassistant.components.bluesound # homeassistant.components.fritz From 44d17a80c33492d484ee47355a78208c8742f80c Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Wed, 4 May 2022 16:13:09 +0200 Subject: [PATCH 111/151] Fix meater sensor (#71283) * Fix meater sensor * Cleanup MeaterEntityDescription * Apply suggestions from code review Co-authored-by: Martin Hjelmare * Update sensor.py Co-authored-by: Martin Hjelmare --- homeassistant/components/meater/sensor.py | 29 +++++++++++++---------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/homeassistant/components/meater/sensor.py b/homeassistant/components/meater/sensor.py index 70582f39d9e..17e8db9e473 100644 --- a/homeassistant/components/meater/sensor.py +++ b/homeassistant/components/meater/sensor.py @@ -27,15 +27,18 @@ from .const import DOMAIN @dataclass -class MeaterSensorEntityDescription(SensorEntityDescription): - """Describes meater sensor entity.""" +class MeaterSensorEntityDescriptionMixin: + """Mixin for MeaterSensorEntityDescription.""" - available: Callable[ - [MeaterProbe | None], bool | type[NotImplementedError] - ] = lambda x: NotImplementedError - value: Callable[ - [MeaterProbe], datetime | float | str | None | type[NotImplementedError] - ] = lambda x: NotImplementedError + available: Callable[[MeaterProbe | None], bool] + value: Callable[[MeaterProbe], datetime | float | str | None] + + +@dataclass +class MeaterSensorEntityDescription( + SensorEntityDescription, MeaterSensorEntityDescriptionMixin +): + """Describes meater sensor entity.""" def _elapsed_time_to_timestamp(probe: MeaterProbe) -> datetime | None: @@ -108,7 +111,8 @@ SENSOR_TYPES = ( available=lambda probe: probe is not None and probe.cook is not None, value=lambda probe: probe.cook.peak_temperature if probe.cook else None, ), - # Time since the start of cook in seconds. Default: 0. + # Remaining time in seconds. When unknown/calculating default is used. Default: -1 + # Exposed as a TIMESTAMP sensor where the timestamp is current time + remaining time. MeaterSensorEntityDescription( key="cook_time_remaining", device_class=SensorDeviceClass.TIMESTAMP, @@ -116,7 +120,8 @@ SENSOR_TYPES = ( available=lambda probe: probe is not None and probe.cook is not None, value=_remaining_time_to_timestamp, ), - # Remaining time in seconds. When unknown/calculating default is used. Default: -1 + # Time since the start of cook in seconds. Default: 0. Exposed as a TIMESTAMP sensor + # where the timestamp is current time - elapsed time. MeaterSensorEntityDescription( key="cook_time_elapsed", device_class=SensorDeviceClass.TIMESTAMP, @@ -147,7 +152,7 @@ async def async_setup_entry( # Add entities for temperature probes which we've not yet seen for dev in devices: - if dev in known_probes: + if dev.id in known_probes: continue entities.extend( @@ -156,7 +161,7 @@ async def async_setup_entry( for sensor_description in SENSOR_TYPES ] ) - known_probes.add(dev) + known_probes.add(dev.id) async_add_entities(entities) From d6e3325ea7fbe024057b3a74872d4abf72bc6d3f Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Wed, 4 May 2022 14:19:16 +0200 Subject: [PATCH 112/151] Update frontend to 20220504.0 (#71284) --- 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 89dd75fa96c..b51219c4f19 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==20220503.0"], + "requirements": ["home-assistant-frontend==20220504.0"], "dependencies": [ "api", "auth", diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index fcb63a9426c..a3dec49ddb9 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -15,7 +15,7 @@ ciso8601==2.2.0 cryptography==36.0.2 fnvhash==0.1.0 hass-nabucasa==0.54.0 -home-assistant-frontend==20220503.0 +home-assistant-frontend==20220504.0 httpx==0.22.0 ifaddr==0.1.7 jinja2==3.1.1 diff --git a/requirements_all.txt b/requirements_all.txt index 30114cda0e4..794797c760d 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -819,7 +819,7 @@ hole==0.7.0 holidays==0.13 # homeassistant.components.frontend -home-assistant-frontend==20220503.0 +home-assistant-frontend==20220504.0 # homeassistant.components.home_connect homeconnect==0.7.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 9d643da34db..a817eb3f43d 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -580,7 +580,7 @@ hole==0.7.0 holidays==0.13 # homeassistant.components.frontend -home-assistant-frontend==20220503.0 +home-assistant-frontend==20220504.0 # homeassistant.components.home_connect homeconnect==0.7.0 From efa931f6980ce61119f0841702f6eed9a273a5bf Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Wed, 4 May 2022 16:38:11 +0200 Subject: [PATCH 113/151] Bump aioslimproto to 2.0.1 (#71285) --- homeassistant/components/slimproto/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/slimproto/manifest.json b/homeassistant/components/slimproto/manifest.json index eb4ab00f18d..23b3198d7e4 100644 --- a/homeassistant/components/slimproto/manifest.json +++ b/homeassistant/components/slimproto/manifest.json @@ -4,7 +4,7 @@ "config_flow": true, "iot_class": "local_push", "documentation": "https://www.home-assistant.io/integrations/slimproto", - "requirements": ["aioslimproto==2.0.0"], + "requirements": ["aioslimproto==2.0.1"], "codeowners": ["@marcelveldt"], "after_dependencies": ["media_source"] } diff --git a/requirements_all.txt b/requirements_all.txt index 794797c760d..787e4546b0b 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -244,7 +244,7 @@ aiosenz==1.0.0 aioshelly==2.0.0 # homeassistant.components.slimproto -aioslimproto==2.0.0 +aioslimproto==2.0.1 # homeassistant.components.steamist aiosteamist==0.3.1 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index a817eb3f43d..4f9f4b59b0e 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -210,7 +210,7 @@ aiosenz==1.0.0 aioshelly==2.0.0 # homeassistant.components.slimproto -aioslimproto==2.0.0 +aioslimproto==2.0.1 # homeassistant.components.steamist aiosteamist==0.3.1 From deec879a4b4118620e45efa1f83a2c973dfdbe6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Wed, 4 May 2022 15:47:24 +0200 Subject: [PATCH 114/151] Remove more info links for hassio system health (#71286) --- homeassistant/components/hassio/system_health.py | 3 --- tests/components/hassio/test_system_health.py | 3 --- 2 files changed, 6 deletions(-) diff --git a/homeassistant/components/hassio/system_health.py b/homeassistant/components/hassio/system_health.py index 4be94f89218..5ce38b0e121 100644 --- a/homeassistant/components/hassio/system_health.py +++ b/homeassistant/components/hassio/system_health.py @@ -30,7 +30,6 @@ async def system_health_info(hass: HomeAssistant): healthy = { "type": "failed", "error": "Unhealthy", - "more_info": "/hassio/system", } if supervisor_info.get("supported"): @@ -39,7 +38,6 @@ async def system_health_info(hass: HomeAssistant): supported = { "type": "failed", "error": "Unsupported", - "more_info": "/hassio/system", } information = { @@ -63,7 +61,6 @@ async def system_health_info(hass: HomeAssistant): information["version_api"] = system_health.async_check_can_reach_url( hass, f"https://version.home-assistant.io/{info.get('channel')}.json", - "/hassio/system", ) information["installed_addons"] = ", ".join( diff --git a/tests/components/hassio/test_system_health.py b/tests/components/hassio/test_system_health.py index 8fa610b5442..dcf18f7bc13 100644 --- a/tests/components/hassio/test_system_health.py +++ b/tests/components/hassio/test_system_health.py @@ -98,16 +98,13 @@ async def test_hassio_system_health_with_issues(hass, aioclient_mock): assert info["healthy"] == { "error": "Unhealthy", - "more_info": "/hassio/system", "type": "failed", } assert info["supported"] == { "error": "Unsupported", - "more_info": "/hassio/system", "type": "failed", } assert info["version_api"] == { "error": "unreachable", - "more_info": "/hassio/system", "type": "failed", } From 4e331c331f6fca00d2c9d5c87a5545513c02334a Mon Sep 17 00:00:00 2001 From: Guido Schmitz Date: Wed, 4 May 2022 15:51:21 +0200 Subject: [PATCH 115/151] Handle empty zeroconf properties in devolo_home_network (#71288) * Handle empty zeroconf properties in devolo_home_network * Change approach * Restore test data --- homeassistant/components/devolo_home_network/manifest.json | 4 +++- homeassistant/generated/zeroconf.py | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/devolo_home_network/manifest.json b/homeassistant/components/devolo_home_network/manifest.json index a514606a322..445a383ea14 100644 --- a/homeassistant/components/devolo_home_network/manifest.json +++ b/homeassistant/components/devolo_home_network/manifest.json @@ -4,7 +4,9 @@ "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/devolo_home_network", "requirements": ["devolo-plc-api==0.7.1"], - "zeroconf": ["_dvl-deviceapi._tcp.local."], + "zeroconf": [ + { "type": "_dvl-deviceapi._tcp.local.", "properties": { "MT": "*" } } + ], "codeowners": ["@2Fake", "@Shutgun"], "quality_scale": "platinum", "iot_class": "local_polling", diff --git a/homeassistant/generated/zeroconf.py b/homeassistant/generated/zeroconf.py index 34e24e51fc9..b93d7249211 100644 --- a/homeassistant/generated/zeroconf.py +++ b/homeassistant/generated/zeroconf.py @@ -103,7 +103,10 @@ ZEROCONF = { "domain": "devolo_home_control" }, { - "domain": "devolo_home_network" + "domain": "devolo_home_network", + "properties": { + "MT": "*" + } } ], "_easylink._tcp.local.": [ From 87a8a82040f6da790633bae61df91d4de9ee0972 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Wed, 4 May 2022 15:54:37 +0200 Subject: [PATCH 116/151] Allow scripts to turn themselves on (#71289) --- homeassistant/components/script/__init__.py | 9 ++- tests/components/automation/test_init.py | 6 -- tests/components/script/test_init.py | 89 ++++++++++++++++++++- 3 files changed, 95 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/script/__init__.py b/homeassistant/components/script/__init__.py index 660e7233b33..efad242fbd0 100644 --- a/homeassistant/components/script/__init__.py +++ b/homeassistant/components/script/__init__.py @@ -42,6 +42,7 @@ from homeassistant.helpers.script import ( CONF_MAX, CONF_MAX_EXCEEDED, Script, + script_stack_cv, ) from homeassistant.helpers.service import async_set_service_schema from homeassistant.helpers.trace import trace_get, trace_path @@ -398,10 +399,14 @@ class ScriptEntity(ToggleEntity, RestoreEntity): return # Caller does not want to wait for called script to finish so let script run in - # separate Task. However, wait for first state change so we can guarantee that - # it is written to the State Machine before we return. + # separate Task. Make a new empty script stack; scripts are allowed to + # recursively turn themselves on when not waiting. + script_stack_cv.set([]) + self._changed.clear() self.hass.async_create_task(coro) + # Wait for first state change so we can guarantee that + # it is written to the State Machine before we return. await self._changed.wait() async def _async_run(self, variables, context): diff --git a/tests/components/automation/test_init.py b/tests/components/automation/test_init.py index ccb508c6acc..dbc8f0fc346 100644 --- a/tests/components/automation/test_init.py +++ b/tests/components/automation/test_init.py @@ -1791,18 +1791,12 @@ async def test_recursive_automation(hass: HomeAssistant, automation_mode, caplog ) service_called = asyncio.Event() - service_called_late = [] async def async_service_handler(service): if service.service == "automation_done": service_called.set() - if service.service == "automation_started_late": - service_called_late.append(service) hass.services.async_register("test", "automation_done", async_service_handler) - hass.services.async_register( - "test", "automation_started_late", async_service_handler - ) hass.bus.async_fire("trigger_automation") await asyncio.wait_for(service_called.wait(), 1) diff --git a/tests/components/script/test_init.py b/tests/components/script/test_init.py index 8a5297786f5..ca0cdb97592 100644 --- a/tests/components/script/test_init.py +++ b/tests/components/script/test_init.py @@ -1,6 +1,7 @@ """The tests for the Script component.""" # pylint: disable=protected-access import asyncio +from datetime import timedelta from unittest.mock import Mock, patch import pytest @@ -33,12 +34,13 @@ from homeassistant.helpers.script import ( SCRIPT_MODE_QUEUED, SCRIPT_MODE_RESTART, SCRIPT_MODE_SINGLE, + _async_stop_scripts_at_shutdown, ) from homeassistant.helpers.service import async_get_all_descriptions from homeassistant.setup import async_setup_component import homeassistant.util.dt as dt_util -from tests.common import async_mock_service, mock_restore_cache +from tests.common import async_fire_time_changed, async_mock_service, mock_restore_cache from tests.components.logbook.test_init import MockLazyEventPartialState ENTITY_ID = "script.test" @@ -919,6 +921,91 @@ async def test_recursive_script_indirect(hass, script_mode, warning_msg, caplog) assert warning_msg in caplog.text +@pytest.mark.parametrize( + "script_mode", [SCRIPT_MODE_PARALLEL, SCRIPT_MODE_QUEUED, SCRIPT_MODE_RESTART] +) +async def test_recursive_script_turn_on(hass: HomeAssistant, script_mode, caplog): + """Test script turning itself on. + + - Illegal recursion detection should not be triggered + - Home Assistant should not hang on shut down + - SCRIPT_MODE_SINGLE is not relevant because suca script can't turn itself on + """ + # Make sure we cover all script modes + assert SCRIPT_MODE_CHOICES == [ + SCRIPT_MODE_PARALLEL, + SCRIPT_MODE_QUEUED, + SCRIPT_MODE_RESTART, + SCRIPT_MODE_SINGLE, + ] + stop_scripts_at_shutdown_called = asyncio.Event() + real_stop_scripts_at_shutdown = _async_stop_scripts_at_shutdown + + async def stop_scripts_at_shutdown(*args): + await real_stop_scripts_at_shutdown(*args) + stop_scripts_at_shutdown_called.set() + + with patch( + "homeassistant.helpers.script._async_stop_scripts_at_shutdown", + wraps=stop_scripts_at_shutdown, + ): + assert await async_setup_component( + hass, + script.DOMAIN, + { + script.DOMAIN: { + "script1": { + "mode": script_mode, + "sequence": [ + { + "choose": { + "conditions": { + "condition": "template", + "value_template": "{{ request == 'step_2' }}", + }, + "sequence": {"service": "test.script_done"}, + }, + "default": { + "service": "script.turn_on", + "data": { + "entity_id": "script.script1", + "variables": {"request": "step_2"}, + }, + }, + }, + { + "service": "script.turn_on", + "data": {"entity_id": "script.script1"}, + }, + ], + } + } + }, + ) + + service_called = asyncio.Event() + + async def async_service_handler(service): + if service.service == "script_done": + service_called.set() + + hass.services.async_register("test", "script_done", async_service_handler) + + await hass.services.async_call("script", "script1") + await asyncio.wait_for(service_called.wait(), 1) + + # Trigger 1st stage script shutdown + hass.state = CoreState.stopping + hass.bus.async_fire("homeassistant_stop") + await asyncio.wait_for(stop_scripts_at_shutdown_called.wait(), 1) + + # Trigger 2nd stage script shutdown + async_fire_time_changed(hass, dt_util.utcnow() + timedelta(seconds=90)) + await hass.async_block_till_done() + + assert "Disallowed recursion detected" not in caplog.text + + async def test_setup_with_duplicate_scripts( hass: HomeAssistant, caplog: pytest.LogCaptureFixture ) -> None: From 4e431274ea6f60dfe34b01dd7423598c6eaaca9a Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 May 2022 16:56:29 +0200 Subject: [PATCH 117/151] Pin grpcio-status to 1.45.0 (#71293) --- homeassistant/package_constraints.txt | 1 + script/gen_requirements_all.py | 1 + 2 files changed, 2 insertions(+) diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index a3dec49ddb9..0a2846a44ad 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -51,6 +51,7 @@ httplib2>=0.19.0 # upgrades intentionally. It is a large package to build from source and we # want to ensure we have wheels built. grpcio==1.45.0 +grpcio-status==1.45.0 # libcst >=0.4.0 requires a newer Rust than we currently have available, # thus our wheels builds fail. This pins it to the last working version, diff --git a/script/gen_requirements_all.py b/script/gen_requirements_all.py index ef2b67f3657..1e93b8bba35 100755 --- a/script/gen_requirements_all.py +++ b/script/gen_requirements_all.py @@ -68,6 +68,7 @@ httplib2>=0.19.0 # upgrades intentionally. It is a large package to build from source and we # want to ensure we have wheels built. grpcio==1.45.0 +grpcio-status==1.45.0 # libcst >=0.4.0 requires a newer Rust than we currently have available, # thus our wheels builds fail. This pins it to the last working version, From d458ac023998f870ae4f249278a0c096e581c75e Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 May 2022 17:48:27 +0200 Subject: [PATCH 118/151] Bumped version to 2022.5.0 --- homeassistant/const.py | 2 +- setup.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 5312d175858..5c7b28e1156 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -7,7 +7,7 @@ from .backports.enum import StrEnum MAJOR_VERSION: Final = 2022 MINOR_VERSION: Final = 5 -PATCH_VERSION: Final = "0b7" +PATCH_VERSION: Final = "0" __short_version__: Final = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__: Final = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER: Final[tuple[int, int, int]] = (3, 9, 0) diff --git a/setup.cfg b/setup.cfg index 7115459d9ff..beab88224e5 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = homeassistant -version = 2022.5.0b7 +version = 2022.5.0 author = The Home Assistant Authors author_email = hello@home-assistant.io license = Apache-2.0 From 0bac48864f691b4c883cdbb25228cae321500edf Mon Sep 17 00:00:00 2001 From: Markus Bong Date: Thu, 5 May 2022 11:36:00 +0200 Subject: [PATCH 119/151] fix reading of battery messages (#70659) --- .../components/devolo_home_control/devolo_device.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/devolo_home_control/devolo_device.py b/homeassistant/components/devolo_home_control/devolo_device.py index b3cb68098e1..6087e07799d 100644 --- a/homeassistant/components/devolo_home_control/devolo_device.py +++ b/homeassistant/components/devolo_home_control/devolo_device.py @@ -7,6 +7,7 @@ from urllib.parse import urlparse from devolo_home_control_api.devices.zwave import Zwave from devolo_home_control_api.homecontrol import HomeControl +from homeassistant.components.sensor import SensorDeviceClass from homeassistant.helpers.entity import DeviceInfo, Entity from .const import DOMAIN @@ -71,7 +72,11 @@ class DevoloDeviceEntity(Entity): def _generic_message(self, message: tuple) -> None: """Handle generic messages.""" - if len(message) == 3 and message[2] == "battery_level": + if ( + len(message) == 3 + and message[2] == "battery_level" + and self.device_class == SensorDeviceClass.BATTERY + ): self._value = message[1] elif len(message) == 3 and message[2] == "status": # Maybe the API wants to tell us, that the device went on- or offline. From 52333bb7203e87ebbe7fefb11d766973a9d16d67 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Thu, 5 May 2022 07:15:24 +0200 Subject: [PATCH 120/151] Only test for EncryptedBridge in Samsung J/H models (#71291) --- .../components/samsungtv/__init__.py | 14 +++++----- homeassistant/components/samsungtv/bridge.py | 27 ++++++++++++------- tests/components/samsungtv/conftest.py | 4 +-- .../components/samsungtv/test_config_flow.py | 24 ++++++++--------- 4 files changed, 38 insertions(+), 31 deletions(-) diff --git a/homeassistant/components/samsungtv/__init__.py b/homeassistant/components/samsungtv/__init__.py index dae4033ad4c..a7b8f7d1aec 100644 --- a/homeassistant/components/samsungtv/__init__.py +++ b/homeassistant/components/samsungtv/__init__.py @@ -30,7 +30,12 @@ import homeassistant.helpers.config_validation as cv from homeassistant.helpers.debounce import Debouncer from homeassistant.helpers.typing import ConfigType -from .bridge import SamsungTVBridge, async_get_device_info, mac_from_device_info +from .bridge import ( + SamsungTVBridge, + async_get_device_info, + mac_from_device_info, + model_requires_encryption, +) from .const import ( CONF_ON_ACTION, CONF_SESSION_ID, @@ -214,11 +219,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: return True -def _model_requires_encryption(model: str | None) -> bool: - """H and J models need pairing with PIN.""" - return model is not None and len(model) > 4 and model[4] in ("H", "J") - - async def _async_create_bridge_with_updated_data( hass: HomeAssistant, entry: ConfigEntry ) -> SamsungTVBridge: @@ -279,7 +279,7 @@ async def _async_create_bridge_with_updated_data( LOGGER.info("Updated model to %s for %s", model, host) updated_data[CONF_MODEL] = model - if _model_requires_encryption(model) and method != METHOD_ENCRYPTED_WEBSOCKET: + if model_requires_encryption(model) and method != METHOD_ENCRYPTED_WEBSOCKET: LOGGER.info( "Detected model %s for %s. Some televisions from H and J series use " "an encrypted protocol but you are using %s which may not be supported", diff --git a/homeassistant/components/samsungtv/bridge.py b/homeassistant/components/samsungtv/bridge.py index 52ab86337dd..c3201a493eb 100644 --- a/homeassistant/components/samsungtv/bridge.py +++ b/homeassistant/components/samsungtv/bridge.py @@ -85,6 +85,11 @@ def mac_from_device_info(info: dict[str, Any]) -> str | None: return None +def model_requires_encryption(model: str | None) -> bool: + """H and J models need pairing with PIN.""" + return model is not None and len(model) > 4 and model[4] in ("H", "J") + + async def async_get_device_info( hass: HomeAssistant, host: str, @@ -99,17 +104,19 @@ async def async_get_device_info( port, info, ) - encrypted_bridge = SamsungTVEncryptedBridge( - hass, METHOD_ENCRYPTED_WEBSOCKET, host, ENCRYPTED_WEBSOCKET_PORT - ) - result = await encrypted_bridge.async_try_connect() - if result != RESULT_CANNOT_CONNECT: - return ( - result, - ENCRYPTED_WEBSOCKET_PORT, - METHOD_ENCRYPTED_WEBSOCKET, - info, + # Check the encrypted port if the model requires encryption + if model_requires_encryption(info.get("device", {}).get("modelName")): + encrypted_bridge = SamsungTVEncryptedBridge( + hass, METHOD_ENCRYPTED_WEBSOCKET, host, ENCRYPTED_WEBSOCKET_PORT ) + result = await encrypted_bridge.async_try_connect() + if result != RESULT_CANNOT_CONNECT: + return ( + result, + ENCRYPTED_WEBSOCKET_PORT, + METHOD_ENCRYPTED_WEBSOCKET, + info, + ) return RESULT_SUCCESS, port, METHOD_WEBSOCKET, info # Try legacy port diff --git a/tests/components/samsungtv/conftest.py b/tests/components/samsungtv/conftest.py index d7f8ed0d1a1..764022f3501 100644 --- a/tests/components/samsungtv/conftest.py +++ b/tests/components/samsungtv/conftest.py @@ -22,7 +22,7 @@ from samsungtvws.remote import ChannelEmitCommand from homeassistant.components.samsungtv.const import WEBSOCKET_SSL_PORT import homeassistant.util.dt as dt_util -from .const import SAMPLE_DEVICE_INFO_WIFI +from .const import SAMPLE_DEVICE_INFO_UE48JU6400, SAMPLE_DEVICE_INFO_WIFI @pytest.fixture(autouse=True) @@ -177,7 +177,7 @@ def rest_api_fixture_non_ssl_only() -> Mock: """Mock rest_device_info to fail for ssl and work for non-ssl.""" if self.port == WEBSOCKET_SSL_PORT: raise ResponseError - return SAMPLE_DEVICE_INFO_WIFI + return SAMPLE_DEVICE_INFO_UE48JU6400 with patch( "homeassistant.components.samsungtv.bridge.SamsungTVAsyncRest", diff --git a/tests/components/samsungtv/test_config_flow.py b/tests/components/samsungtv/test_config_flow.py index d2a9d10caf2..40397a68d7d 100644 --- a/tests/components/samsungtv/test_config_flow.py +++ b/tests/components/samsungtv/test_config_flow.py @@ -340,16 +340,16 @@ async def test_user_encrypted_websocket( ) assert result4["type"] == "create_entry" - assert result4["title"] == "Living Room (82GXARRS)" + assert result4["title"] == "TV-UE48JU6470 (UE48JU6400)" assert result4["data"][CONF_HOST] == "fake_host" - assert result4["data"][CONF_NAME] == "Living Room" + assert result4["data"][CONF_NAME] == "TV-UE48JU6470" assert result4["data"][CONF_MAC] == "aa:bb:ww:ii:ff:ii" assert result4["data"][CONF_MANUFACTURER] == "Samsung" - assert result4["data"][CONF_MODEL] == "82GXARRS" + assert result4["data"][CONF_MODEL] == "UE48JU6400" assert result4["data"][CONF_SSDP_RENDERING_CONTROL_LOCATION] is None assert result4["data"][CONF_TOKEN] == "037739871315caef138547b03e348b72" assert result4["data"][CONF_SESSION_ID] == "1" - assert result4["result"].unique_id == "be9554b9-c9fb-41f4-8920-22da015376a4" + assert result4["result"].unique_id == "223da676-497a-4e06-9507-5e27ec4f0fb3" @pytest.mark.usefixtures("rest_api_failing") @@ -714,19 +714,19 @@ async def test_ssdp_encrypted_websocket_success_populates_mac_address_and_ssdp_l ) assert result4["type"] == "create_entry" - assert result4["title"] == "Living Room (82GXARRS)" + assert result4["title"] == "TV-UE48JU6470 (UE48JU6400)" assert result4["data"][CONF_HOST] == "fake_host" - assert result4["data"][CONF_NAME] == "Living Room" + assert result4["data"][CONF_NAME] == "TV-UE48JU6470" assert result4["data"][CONF_MAC] == "aa:bb:ww:ii:ff:ii" assert result4["data"][CONF_MANUFACTURER] == "Samsung fake_manufacturer" - assert result4["data"][CONF_MODEL] == "82GXARRS" + assert result4["data"][CONF_MODEL] == "UE48JU6400" assert ( result4["data"][CONF_SSDP_RENDERING_CONTROL_LOCATION] == "https://fake_host:12345/test" ) assert result4["data"][CONF_TOKEN] == "037739871315caef138547b03e348b72" assert result4["data"][CONF_SESSION_ID] == "1" - assert result4["result"].unique_id == "be9554b9-c9fb-41f4-8920-22da015376a4" + assert result4["result"].unique_id == "223da676-497a-4e06-9507-5e27ec4f0fb3" @pytest.mark.usefixtures("rest_api_non_ssl_only") @@ -1036,13 +1036,13 @@ async def test_dhcp_wireless(hass: HomeAssistant) -> None: result["flow_id"], user_input="whatever" ) assert result["type"] == "create_entry" - assert result["title"] == "Living Room (82GXARRS)" + assert result["title"] == "TV-UE48JU6470 (UE48JU6400)" assert result["data"][CONF_HOST] == "fake_host" - assert result["data"][CONF_NAME] == "Living Room" + assert result["data"][CONF_NAME] == "TV-UE48JU6470" assert result["data"][CONF_MAC] == "aa:bb:ww:ii:ff:ii" assert result["data"][CONF_MANUFACTURER] == "Samsung" - assert result["data"][CONF_MODEL] == "82GXARRS" - assert result["result"].unique_id == "be9554b9-c9fb-41f4-8920-22da015376a4" + assert result["data"][CONF_MODEL] == "UE48JU6400" + assert result["result"].unique_id == "223da676-497a-4e06-9507-5e27ec4f0fb3" @pytest.mark.usefixtures("remotews", "rest_api", "remoteencws_failing") From 5a5cde690fdc61d63bcf9e09914f4c5a9368877d Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 5 May 2022 01:13:23 -0400 Subject: [PATCH 121/151] Ensure rachio retries setup later when cloud service is broken (#71300) --- homeassistant/components/rachio/__init__.py | 6 +++++- homeassistant/components/rachio/device.py | 19 +++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/rachio/__init__.py b/homeassistant/components/rachio/__init__.py index ea8b8fe59cb..e75d7117d73 100644 --- a/homeassistant/components/rachio/__init__.py +++ b/homeassistant/components/rachio/__init__.py @@ -9,7 +9,7 @@ from homeassistant.components import cloud from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_API_KEY, Platform from homeassistant.core import HomeAssistant -from homeassistant.exceptions import ConfigEntryNotReady +from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady from homeassistant.helpers import config_validation as cv from .const import CONF_CLOUDHOOK_URL, CONF_MANUAL_RUN_MINS, CONF_WEBHOOK_ID, DOMAIN @@ -73,6 +73,10 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: # Get the API user try: await person.async_setup(hass) + except ConfigEntryAuthFailed as error: + # Reauth is not yet implemented + _LOGGER.error("Authentication failed: %s", error) + return False except ConnectTimeout as error: _LOGGER.error("Could not reach the Rachio API: %s", error) raise ConfigEntryNotReady from error diff --git a/homeassistant/components/rachio/device.py b/homeassistant/components/rachio/device.py index ff7c0535295..911049883d9 100644 --- a/homeassistant/components/rachio/device.py +++ b/homeassistant/components/rachio/device.py @@ -8,6 +8,7 @@ import voluptuous as vol from homeassistant.const import EVENT_HOMEASSISTANT_STOP from homeassistant.core import ServiceCall +from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady from homeassistant.helpers import config_validation as cv from .const import ( @@ -125,12 +126,18 @@ class RachioPerson: rachio = self.rachio response = rachio.person.info() - assert int(response[0][KEY_STATUS]) == HTTPStatus.OK, "API key error" + if is_invalid_auth_code(int(response[0][KEY_STATUS])): + raise ConfigEntryAuthFailed(f"API key error: {response}") + if int(response[0][KEY_STATUS]) != HTTPStatus.OK: + raise ConfigEntryNotReady(f"API Error: {response}") self._id = response[1][KEY_ID] # Use user ID to get user data data = rachio.person.get(self._id) - assert int(data[0][KEY_STATUS]) == HTTPStatus.OK, "User ID error" + if is_invalid_auth_code(int(data[0][KEY_STATUS])): + raise ConfigEntryAuthFailed(f"User ID error: {data}") + if int(data[0][KEY_STATUS]) != HTTPStatus.OK: + raise ConfigEntryNotReady(f"API Error: {data}") self.username = data[1][KEY_USERNAME] devices = data[1][KEY_DEVICES] for controller in devices: @@ -297,3 +304,11 @@ class RachioIro: """Resume paused watering on this controller.""" self.rachio.device.resume_zone_run(self.controller_id) _LOGGER.debug("Resuming watering on %s", self) + + +def is_invalid_auth_code(http_status_code): + """HTTP status codes that mean invalid auth.""" + if http_status_code in (HTTPStatus.UNAUTHORIZED, HTTPStatus.FORBIDDEN): + return True + + return False From 7be5eed25cf4134111f5ab1b2c81bc89f4896b0a Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 5 May 2022 01:10:27 -0400 Subject: [PATCH 122/151] Fix lutron caseta occupancy sensors (#71309) * Fix lutron_caseta occupancy sensors * Fix lutron_caseta occupancy sensors * Make as service since its a group * merge * Revert "merge" This reverts commit 69d19dc0088bd1b3483cfc481ed2f72e49599cf8. * model and type not present --- .../components/lutron_caseta/__init__.py | 5 ++- .../components/lutron_caseta/binary_sensor.py | 34 ++++++++++++------- .../components/lutron_caseta/const.py | 2 ++ 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/homeassistant/components/lutron_caseta/__init__.py b/homeassistant/components/lutron_caseta/__init__.py index bb8f94f3abe..3d9e07519a8 100644 --- a/homeassistant/components/lutron_caseta/__init__.py +++ b/homeassistant/components/lutron_caseta/__init__.py @@ -38,6 +38,7 @@ from .const import ( CONF_CA_CERTS, CONF_CERTFILE, CONF_KEYFILE, + CONFIG_URL, DOMAIN, LUTRON_CASETA_BUTTON_EVENT, MANUFACTURER, @@ -306,13 +307,15 @@ class LutronCasetaDevice(Entity): self._device = device self._smartbridge = bridge self._bridge_device = bridge_device + if "serial" not in self._device: + return info = DeviceInfo( identifiers={(DOMAIN, self.serial)}, manufacturer=MANUFACTURER, model=f"{device['model']} ({device['type']})", name=self.name, via_device=(DOMAIN, self._bridge_device["serial"]), - configuration_url="https://device-login.lutron.com", + configuration_url=CONFIG_URL, ) area, _ = _area_and_name_from_name(device["name"]) if area != UNASSIGNED_AREA: diff --git a/homeassistant/components/lutron_caseta/binary_sensor.py b/homeassistant/components/lutron_caseta/binary_sensor.py index 788702f9353..f61e644a331 100644 --- a/homeassistant/components/lutron_caseta/binary_sensor.py +++ b/homeassistant/components/lutron_caseta/binary_sensor.py @@ -6,11 +6,14 @@ from homeassistant.components.binary_sensor import ( BinarySensorEntity, ) from homeassistant.config_entries import ConfigEntry +from homeassistant.const import ATTR_SUGGESTED_AREA from homeassistant.core import HomeAssistant +from homeassistant.helpers.device_registry import DeviceEntryType +from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import DOMAIN as CASETA_DOMAIN, LutronCasetaDevice -from .const import BRIDGE_DEVICE, BRIDGE_LEAP +from . import DOMAIN as CASETA_DOMAIN, LutronCasetaDevice, _area_and_name_from_name +from .const import BRIDGE_DEVICE, BRIDGE_LEAP, CONFIG_URL, MANUFACTURER, UNASSIGNED_AREA async def async_setup_entry( @@ -39,6 +42,23 @@ async def async_setup_entry( class LutronOccupancySensor(LutronCasetaDevice, BinarySensorEntity): """Representation of a Lutron occupancy group.""" + def __init__(self, device, bridge, bridge_device): + """Init an occupancy sensor.""" + super().__init__(device, bridge, bridge_device) + info = DeviceInfo( + identifiers={(CASETA_DOMAIN, self.unique_id)}, + manufacturer=MANUFACTURER, + model="Lutron Occupancy", + name=self.name, + via_device=(CASETA_DOMAIN, self._bridge_device["serial"]), + configuration_url=CONFIG_URL, + entry_type=DeviceEntryType.SERVICE, + ) + area, _ = _area_and_name_from_name(device["name"]) + if area != UNASSIGNED_AREA: + info[ATTR_SUGGESTED_AREA] = area + self._attr_device_info = info + @property def device_class(self): """Flag supported features.""" @@ -65,16 +85,6 @@ class LutronOccupancySensor(LutronCasetaDevice, BinarySensorEntity): """Return a unique identifier.""" return f"occupancygroup_{self.device_id}" - @property - def device_info(self): - """Return the device info. - - Sensor entities are aggregated from one or more physical - sensors by each room. Therefore, there shouldn't be devices - related to any sensor entities. - """ - return None - @property def extra_state_attributes(self): """Return the state attributes.""" diff --git a/homeassistant/components/lutron_caseta/const.py b/homeassistant/components/lutron_caseta/const.py index 56a3821dd64..71d686ba2c8 100644 --- a/homeassistant/components/lutron_caseta/const.py +++ b/homeassistant/components/lutron_caseta/const.py @@ -35,3 +35,5 @@ CONF_SUBTYPE = "subtype" BRIDGE_TIMEOUT = 35 UNASSIGNED_AREA = "Unassigned" + +CONFIG_URL = "https://device-login.lutron.com" From 61a6d13d7965cfe6e4d9d7b2edee2dbc0edc494e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Thu, 5 May 2022 09:06:23 +0200 Subject: [PATCH 123/151] Update aioairzone to v0.4.3 (#71312) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update aioairzone to v0.4.3 Fixes exception on older local API. Signed-off-by: Álvaro Fernández Rojas * airzone: switch to set_hvac_parameters function Fixes failing airzone tests. Signed-off-by: Álvaro Fernández Rojas --- homeassistant/components/airzone/climate.py | 2 +- homeassistant/components/airzone/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- tests/components/airzone/test_climate.py | 12 ++++++------ 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/airzone/climate.py b/homeassistant/components/airzone/climate.py index 1ec7dfabcfa..9cff1ff393d 100644 --- a/homeassistant/components/airzone/climate.py +++ b/homeassistant/components/airzone/climate.py @@ -123,7 +123,7 @@ class AirzoneClimate(AirzoneZoneEntity, ClimateEntity): } _LOGGER.debug("update_hvac_params=%s", _params) try: - await self.coordinator.airzone.put_hvac(_params) + await self.coordinator.airzone.set_hvac_parameters(_params) except AirzoneError as error: raise HomeAssistantError( f"Failed to set zone {self.name}: {error}" diff --git a/homeassistant/components/airzone/manifest.json b/homeassistant/components/airzone/manifest.json index a6ea814fe9c..7a04b3a78b3 100644 --- a/homeassistant/components/airzone/manifest.json +++ b/homeassistant/components/airzone/manifest.json @@ -3,7 +3,7 @@ "name": "Airzone", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/airzone", - "requirements": ["aioairzone==0.4.2"], + "requirements": ["aioairzone==0.4.3"], "codeowners": ["@Noltari"], "iot_class": "local_polling", "loggers": ["aioairzone"] diff --git a/requirements_all.txt b/requirements_all.txt index 787e4546b0b..46c06635925 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -110,7 +110,7 @@ aio_geojson_nsw_rfs_incidents==0.4 aio_georss_gdacs==0.7 # homeassistant.components.airzone -aioairzone==0.4.2 +aioairzone==0.4.3 # homeassistant.components.ambient_station aioambient==2021.11.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 4f9f4b59b0e..eb8475ab64f 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -94,7 +94,7 @@ aio_geojson_nsw_rfs_incidents==0.4 aio_georss_gdacs==0.7 # homeassistant.components.airzone -aioairzone==0.4.2 +aioairzone==0.4.3 # homeassistant.components.ambient_station aioambient==2021.11.0 diff --git a/tests/components/airzone/test_climate.py b/tests/components/airzone/test_climate.py index 2128d2818e7..dcb493351ba 100644 --- a/tests/components/airzone/test_climate.py +++ b/tests/components/airzone/test_climate.py @@ -147,7 +147,7 @@ async def test_airzone_climate_turn_on_off(hass: HomeAssistant) -> None: ] } with patch( - "homeassistant.components.airzone.AirzoneLocalApi.http_request", + "homeassistant.components.airzone.AirzoneLocalApi.put_hvac", return_value=HVAC_MOCK, ): await hass.services.async_call( @@ -172,7 +172,7 @@ async def test_airzone_climate_turn_on_off(hass: HomeAssistant) -> None: ] } with patch( - "homeassistant.components.airzone.AirzoneLocalApi.http_request", + "homeassistant.components.airzone.AirzoneLocalApi.put_hvac", return_value=HVAC_MOCK, ): await hass.services.async_call( @@ -204,7 +204,7 @@ async def test_airzone_climate_set_hvac_mode(hass: HomeAssistant) -> None: ] } with patch( - "homeassistant.components.airzone.AirzoneLocalApi.http_request", + "homeassistant.components.airzone.AirzoneLocalApi.put_hvac", return_value=HVAC_MOCK, ): await hass.services.async_call( @@ -230,7 +230,7 @@ async def test_airzone_climate_set_hvac_mode(hass: HomeAssistant) -> None: ] } with patch( - "homeassistant.components.airzone.AirzoneLocalApi.http_request", + "homeassistant.components.airzone.AirzoneLocalApi.put_hvac", return_value=HVAC_MOCK_2, ): await hass.services.async_call( @@ -263,7 +263,7 @@ async def test_airzone_climate_set_hvac_slave_error(hass: HomeAssistant) -> None await async_init_integration(hass) with patch( - "homeassistant.components.airzone.AirzoneLocalApi.http_request", + "homeassistant.components.airzone.AirzoneLocalApi.put_hvac", return_value=HVAC_MOCK, ), pytest.raises(HomeAssistantError): await hass.services.async_call( @@ -296,7 +296,7 @@ async def test_airzone_climate_set_temp(hass: HomeAssistant) -> None: await async_init_integration(hass) with patch( - "homeassistant.components.airzone.AirzoneLocalApi.http_request", + "homeassistant.components.airzone.AirzoneLocalApi.put_hvac", return_value=HVAC_MOCK, ): await hass.services.async_call( From c7b24c45ba31701f0145110db35d19e9708d414a Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 4 May 2022 23:52:00 -0700 Subject: [PATCH 124/151] Fix apple tv warning (#71321) --- homeassistant/components/apple_tv/media_player.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/apple_tv/media_player.py b/homeassistant/components/apple_tv/media_player.py index 6c1b35f70f8..5a7298dcbee 100644 --- a/homeassistant/components/apple_tv/media_player.py +++ b/homeassistant/components/apple_tv/media_player.py @@ -296,7 +296,7 @@ class AppleTvMediaPlayer(AppleTVEntity, MediaPlayerEntity): _LOGGER.debug("Streaming %s via RAOP", media_id) await self.atv.stream.stream_file(media_id) - if self._is_feature_available(FeatureName.PlayUrl): + elif self._is_feature_available(FeatureName.PlayUrl): _LOGGER.debug("Playing %s via AirPlay", media_id) await self.atv.stream.play_url(media_id) else: From 6ccd707a652ae827004e919f75bbb8887ae4d243 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Thu, 5 May 2022 08:52:20 +0200 Subject: [PATCH 125/151] Fix Meater (#71324) --- homeassistant/components/meater/sensor.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/meater/sensor.py b/homeassistant/components/meater/sensor.py index 17e8db9e473..8c719d588d8 100644 --- a/homeassistant/components/meater/sensor.py +++ b/homeassistant/components/meater/sensor.py @@ -146,13 +146,13 @@ async def async_setup_entry( if not coordinator.last_update_success: return - devices = coordinator.data + devices: dict[str, MeaterProbe] = coordinator.data entities = [] known_probes: set = hass.data[DOMAIN]["known_probes"] # Add entities for temperature probes which we've not yet seen for dev in devices: - if dev.id in known_probes: + if dev in known_probes: continue entities.extend( @@ -161,7 +161,7 @@ async def async_setup_entry( for sensor_description in SENSOR_TYPES ] ) - known_probes.add(dev.id) + known_probes.add(dev) async_add_entities(entities) From b8dccbbbf37fe1d95ee1c742148f792ab4dfb12c Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 5 May 2022 10:12:39 +0200 Subject: [PATCH 126/151] Bump numpy to 1.21.6 (#71325) --- homeassistant/components/compensation/manifest.json | 2 +- homeassistant/components/iqvia/manifest.json | 2 +- homeassistant/components/opencv/manifest.json | 2 +- homeassistant/components/tensorflow/manifest.json | 2 +- homeassistant/components/trend/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/homeassistant/components/compensation/manifest.json b/homeassistant/components/compensation/manifest.json index 315d1b705df..213e8888e23 100644 --- a/homeassistant/components/compensation/manifest.json +++ b/homeassistant/components/compensation/manifest.json @@ -2,7 +2,7 @@ "domain": "compensation", "name": "Compensation", "documentation": "https://www.home-assistant.io/integrations/compensation", - "requirements": ["numpy==1.21.4"], + "requirements": ["numpy==1.21.6"], "codeowners": ["@Petro31"], "iot_class": "calculated" } diff --git a/homeassistant/components/iqvia/manifest.json b/homeassistant/components/iqvia/manifest.json index 50ddeb3bba7..9bb07157b54 100644 --- a/homeassistant/components/iqvia/manifest.json +++ b/homeassistant/components/iqvia/manifest.json @@ -3,7 +3,7 @@ "name": "IQVIA", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/iqvia", - "requirements": ["numpy==1.21.4", "pyiqvia==2022.04.0"], + "requirements": ["numpy==1.21.6", "pyiqvia==2022.04.0"], "codeowners": ["@bachya"], "iot_class": "cloud_polling", "loggers": ["pyiqvia"] diff --git a/homeassistant/components/opencv/manifest.json b/homeassistant/components/opencv/manifest.json index 9c1f51c4933..504b83bdaf9 100644 --- a/homeassistant/components/opencv/manifest.json +++ b/homeassistant/components/opencv/manifest.json @@ -2,7 +2,7 @@ "domain": "opencv", "name": "OpenCV", "documentation": "https://www.home-assistant.io/integrations/opencv", - "requirements": ["numpy==1.21.4", "opencv-python-headless==4.5.2.54"], + "requirements": ["numpy==1.21.6", "opencv-python-headless==4.5.2.54"], "codeowners": [], "iot_class": "local_push" } diff --git a/homeassistant/components/tensorflow/manifest.json b/homeassistant/components/tensorflow/manifest.json index 5f1ac406b70..0f53dd61cb4 100644 --- a/homeassistant/components/tensorflow/manifest.json +++ b/homeassistant/components/tensorflow/manifest.json @@ -6,7 +6,7 @@ "tensorflow==2.5.0", "tf-models-official==2.5.0", "pycocotools==2.0.1", - "numpy==1.21.4", + "numpy==1.21.6", "pillow==9.1.0" ], "codeowners": [], diff --git a/homeassistant/components/trend/manifest.json b/homeassistant/components/trend/manifest.json index 831e97aed3d..aaae8f7cc54 100644 --- a/homeassistant/components/trend/manifest.json +++ b/homeassistant/components/trend/manifest.json @@ -2,7 +2,7 @@ "domain": "trend", "name": "Trend", "documentation": "https://www.home-assistant.io/integrations/trend", - "requirements": ["numpy==1.21.4"], + "requirements": ["numpy==1.21.6"], "codeowners": [], "quality_scale": "internal", "iot_class": "local_push" diff --git a/requirements_all.txt b/requirements_all.txt index 46c06635925..5efd953ff3c 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1111,7 +1111,7 @@ numato-gpio==0.10.0 # homeassistant.components.opencv # homeassistant.components.tensorflow # homeassistant.components.trend -numpy==1.21.4 +numpy==1.21.6 # homeassistant.components.oasa_telematics oasatelematics==0.3 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index eb8475ab64f..aedb93f2d37 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -755,7 +755,7 @@ numato-gpio==0.10.0 # homeassistant.components.opencv # homeassistant.components.tensorflow # homeassistant.components.trend -numpy==1.21.4 +numpy==1.21.6 # homeassistant.components.google oauth2client==4.1.3 From f2a07254a4b49def9712f8aef2115bf9ed1a16bf Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Thu, 5 May 2022 20:04:00 +0200 Subject: [PATCH 127/151] Only lookup unknown Google Cast models once (#71348) Co-authored-by: Paulus Schoutsen --- homeassistant/components/cast/__init__.py | 4 +- homeassistant/components/cast/discovery.py | 2 +- homeassistant/components/cast/helpers.py | 47 +++++++- homeassistant/components/cast/manifest.json | 2 +- homeassistant/components/cast/media_player.py | 6 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- tests/components/cast/conftest.py | 11 ++ tests/components/cast/test_media_player.py | 109 +++++++++++++++++- 9 files changed, 166 insertions(+), 19 deletions(-) diff --git a/homeassistant/components/cast/__init__.py b/homeassistant/components/cast/__init__.py index d0b7cfc4158..63f0693b01a 100644 --- a/homeassistant/components/cast/__init__.py +++ b/homeassistant/components/cast/__init__.py @@ -58,7 +58,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up Cast from a config entry.""" await home_assistant_cast.async_setup_ha_cast(hass, entry) hass.config_entries.async_setup_platforms(entry, PLATFORMS) - hass.data[DOMAIN] = {} + hass.data[DOMAIN] = {"cast_platform": {}, "unknown_models": {}} await async_process_integration_platforms(hass, DOMAIN, _register_cast_platform) return True @@ -107,7 +107,7 @@ async def _register_cast_platform( or not hasattr(platform, "async_play_media") ): raise HomeAssistantError(f"Invalid cast platform {platform}") - hass.data[DOMAIN][integration_domain] = platform + hass.data[DOMAIN]["cast_platform"][integration_domain] = platform async def async_remove_entry(hass: HomeAssistant, entry: ConfigEntry) -> None: diff --git a/homeassistant/components/cast/discovery.py b/homeassistant/components/cast/discovery.py index bc0f1435f8b..485d2888a41 100644 --- a/homeassistant/components/cast/discovery.py +++ b/homeassistant/components/cast/discovery.py @@ -34,7 +34,7 @@ def discover_chromecast( _LOGGER.error("Discovered chromecast without uuid %s", info) return - info = info.fill_out_missing_chromecast_info() + info = info.fill_out_missing_chromecast_info(hass) _LOGGER.debug("Discovered new or updated chromecast %s", info) dispatcher_send(hass, SIGNAL_CAST_DISCOVERED, info) diff --git a/homeassistant/components/cast/helpers.py b/homeassistant/components/cast/helpers.py index 5c6f0fee62a..dd98a2bc051 100644 --- a/homeassistant/components/cast/helpers.py +++ b/homeassistant/components/cast/helpers.py @@ -15,8 +15,11 @@ from pychromecast import dial from pychromecast.const import CAST_TYPE_GROUP from pychromecast.models import CastInfo +from homeassistant.core import HomeAssistant from homeassistant.helpers import aiohttp_client +from .const import DOMAIN + _LOGGER = logging.getLogger(__name__) _PLS_SECTION_PLAYLIST = "playlist" @@ -47,18 +50,50 @@ class ChromecastInfo: """Return the UUID.""" return self.cast_info.uuid - def fill_out_missing_chromecast_info(self) -> ChromecastInfo: + def fill_out_missing_chromecast_info(self, hass: HomeAssistant) -> ChromecastInfo: """Return a new ChromecastInfo object with missing attributes filled in. Uses blocking HTTP / HTTPS. """ cast_info = self.cast_info if self.cast_info.cast_type is None or self.cast_info.manufacturer is None: - # Manufacturer and cast type is not available in mDNS data, get it over http - cast_info = dial.get_cast_type( - cast_info, - zconf=ChromeCastZeroconf.get_zeroconf(), - ) + unknown_models = hass.data[DOMAIN]["unknown_models"] + if self.cast_info.model_name not in unknown_models: + # Manufacturer and cast type is not available in mDNS data, get it over http + cast_info = dial.get_cast_type( + cast_info, + zconf=ChromeCastZeroconf.get_zeroconf(), + ) + unknown_models[self.cast_info.model_name] = ( + cast_info.cast_type, + cast_info.manufacturer, + ) + + report_issue = ( + "create a bug report at " + "https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue" + "+label%3A%22integration%3A+cast%22" + ) + + _LOGGER.info( + "Fetched cast details for unknown model '%s' manufacturer: '%s', type: '%s'. Please %s", + cast_info.model_name, + cast_info.manufacturer, + cast_info.cast_type, + report_issue, + ) + else: + cast_type, manufacturer = unknown_models[self.cast_info.model_name] + cast_info = CastInfo( + cast_info.services, + cast_info.uuid, + cast_info.model_name, + cast_info.friendly_name, + cast_info.host, + cast_info.port, + cast_type, + manufacturer, + ) if not self.is_audio_group or self.is_dynamic_group is not None: # We have all information, no need to check HTTP API. diff --git a/homeassistant/components/cast/manifest.json b/homeassistant/components/cast/manifest.json index 389b837f200..7144a3872f5 100644 --- a/homeassistant/components/cast/manifest.json +++ b/homeassistant/components/cast/manifest.json @@ -3,7 +3,7 @@ "name": "Google Cast", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/cast", - "requirements": ["pychromecast==12.0.0"], + "requirements": ["pychromecast==12.1.0"], "after_dependencies": [ "cloud", "http", diff --git a/homeassistant/components/cast/media_player.py b/homeassistant/components/cast/media_player.py index e63fedd3598..b64c3372c15 100644 --- a/homeassistant/components/cast/media_player.py +++ b/homeassistant/components/cast/media_player.py @@ -535,7 +535,7 @@ class CastMediaPlayerEntity(CastDevice, MediaPlayerEntity): """Generate root node.""" children = [] # Add media browsers - for platform in self.hass.data[CAST_DOMAIN].values(): + for platform in self.hass.data[CAST_DOMAIN]["cast_platform"].values(): children.extend( await platform.async_get_media_browser_root_object( self.hass, self._chromecast.cast_type @@ -587,7 +587,7 @@ class CastMediaPlayerEntity(CastDevice, MediaPlayerEntity): if media_content_id is None: return await self._async_root_payload(content_filter) - for platform in self.hass.data[CAST_DOMAIN].values(): + for platform in self.hass.data[CAST_DOMAIN]["cast_platform"].values(): browse_media = await platform.async_browse_media( self.hass, media_content_type, @@ -646,7 +646,7 @@ class CastMediaPlayerEntity(CastDevice, MediaPlayerEntity): return # Try the cast platforms - for platform in self.hass.data[CAST_DOMAIN].values(): + for platform in self.hass.data[CAST_DOMAIN]["cast_platform"].values(): result = await platform.async_play_media( self.hass, self.entity_id, self._chromecast, media_type, media_id ) diff --git a/requirements_all.txt b/requirements_all.txt index 5efd953ff3c..77bedaa4984 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1399,7 +1399,7 @@ pycfdns==1.2.2 pychannels==1.0.0 # homeassistant.components.cast -pychromecast==12.0.0 +pychromecast==12.1.0 # homeassistant.components.pocketcasts pycketcasts==1.0.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index aedb93f2d37..39f7642ea06 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -938,7 +938,7 @@ pybotvac==0.0.23 pycfdns==1.2.2 # homeassistant.components.cast -pychromecast==12.0.0 +pychromecast==12.1.0 # homeassistant.components.climacell pyclimacell==0.18.2 diff --git a/tests/components/cast/conftest.py b/tests/components/cast/conftest.py index 3b96f378906..52152b4a718 100644 --- a/tests/components/cast/conftest.py +++ b/tests/components/cast/conftest.py @@ -14,6 +14,13 @@ def get_multizone_status_mock(): return mock +@pytest.fixture() +def get_cast_type_mock(): + """Mock pychromecast dial.""" + mock = MagicMock(spec_set=pychromecast.dial.get_cast_type) + return mock + + @pytest.fixture() def castbrowser_mock(): """Mock pychromecast CastBrowser.""" @@ -43,6 +50,7 @@ def cast_mock( mz_mock, quick_play_mock, castbrowser_mock, + get_cast_type_mock, get_chromecast_mock, get_multizone_status_mock, ): @@ -52,6 +60,9 @@ def cast_mock( with patch( "homeassistant.components.cast.discovery.pychromecast.discovery.CastBrowser", castbrowser_mock, + ), patch( + "homeassistant.components.cast.helpers.dial.get_cast_type", + get_cast_type_mock, ), patch( "homeassistant.components.cast.helpers.dial.get_multizone_status", get_multizone_status_mock, diff --git a/tests/components/cast/test_media_player.py b/tests/components/cast/test_media_player.py index 88cf281c8a5..e4df84f6443 100644 --- a/tests/components/cast/test_media_player.py +++ b/tests/components/cast/test_media_player.py @@ -64,6 +64,8 @@ FAKE_MDNS_SERVICE = pychromecast.discovery.ServiceInfo( pychromecast.const.SERVICE_TYPE_MDNS, "the-service" ) +UNDEFINED = object() + def get_fake_chromecast(info: ChromecastInfo): """Generate a Fake Chromecast object with the specified arguments.""" @@ -74,7 +76,14 @@ def get_fake_chromecast(info: ChromecastInfo): def get_fake_chromecast_info( - host="192.168.178.42", port=8009, service=None, uuid: UUID | None = FakeUUID + *, + host="192.168.178.42", + port=8009, + service=None, + uuid: UUID | None = FakeUUID, + cast_type=UNDEFINED, + manufacturer=UNDEFINED, + model_name=UNDEFINED, ): """Generate a Fake ChromecastInfo with the specified arguments.""" @@ -82,16 +91,22 @@ def get_fake_chromecast_info( service = pychromecast.discovery.ServiceInfo( pychromecast.const.SERVICE_TYPE_HOST, (host, port) ) + if cast_type is UNDEFINED: + cast_type = CAST_TYPE_GROUP if port != 8009 else CAST_TYPE_CHROMECAST + if manufacturer is UNDEFINED: + manufacturer = "Nabu Casa" + if model_name is UNDEFINED: + model_name = "Chromecast" return ChromecastInfo( cast_info=pychromecast.models.CastInfo( services={service}, uuid=uuid, - model_name="Chromecast", + model_name=model_name, friendly_name="Speaker", host=host, port=port, - cast_type=CAST_TYPE_GROUP if port != 8009 else CAST_TYPE_CHROMECAST, - manufacturer="Nabu Casa", + cast_type=cast_type, + manufacturer=manufacturer, ) ) @@ -342,6 +357,92 @@ async def test_internal_discovery_callback_fill_out_group( get_multizone_status_mock.assert_called_once() +async def test_internal_discovery_callback_fill_out_cast_type_manufacturer( + hass, get_cast_type_mock, caplog +): + """Test internal discovery automatically filling out information.""" + discover_cast, _, _ = await async_setup_cast_internal_discovery(hass) + info = get_fake_chromecast_info( + host="host1", + port=8009, + service=FAKE_MDNS_SERVICE, + cast_type=None, + manufacturer=None, + ) + info2 = get_fake_chromecast_info( + host="host1", + port=8009, + service=FAKE_MDNS_SERVICE, + cast_type=None, + manufacturer=None, + model_name="Model 101", + ) + zconf = get_fake_zconf(host="host1", port=8009) + full_info = attr.evolve( + info, + cast_info=pychromecast.discovery.CastInfo( + services=info.cast_info.services, + uuid=FakeUUID, + model_name="Chromecast", + friendly_name="Speaker", + host=info.cast_info.host, + port=info.cast_info.port, + cast_type="audio", + manufacturer="TrollTech", + ), + is_dynamic_group=None, + ) + full_info2 = attr.evolve( + info2, + cast_info=pychromecast.discovery.CastInfo( + services=info.cast_info.services, + uuid=FakeUUID, + model_name="Model 101", + friendly_name="Speaker", + host=info.cast_info.host, + port=info.cast_info.port, + cast_type="cast", + manufacturer="Cyberdyne Systems", + ), + is_dynamic_group=None, + ) + + get_cast_type_mock.assert_not_called() + get_cast_type_mock.return_value = full_info.cast_info + + with patch( + "homeassistant.components.cast.discovery.ChromeCastZeroconf.get_zeroconf", + return_value=zconf, + ): + signal = MagicMock() + + async_dispatcher_connect(hass, "cast_discovered", signal) + discover_cast(FAKE_MDNS_SERVICE, info) + await hass.async_block_till_done() + + # when called with incomplete info, it should use HTTP to get missing + get_cast_type_mock.assert_called_once() + assert get_cast_type_mock.call_count == 1 + discover = signal.mock_calls[0][1][0] + assert discover == full_info + assert "Fetched cast details for unknown model 'Chromecast'" in caplog.text + + # Call again, the model name should be fetched from cache + discover_cast(FAKE_MDNS_SERVICE, info) + await hass.async_block_till_done() + assert get_cast_type_mock.call_count == 1 # No additional calls + discover = signal.mock_calls[1][1][0] + assert discover == full_info + + # Call for another model, need to call HTTP again + get_cast_type_mock.return_value = full_info2.cast_info + discover_cast(FAKE_MDNS_SERVICE, info2) + await hass.async_block_till_done() + assert get_cast_type_mock.call_count == 2 + discover = signal.mock_calls[2][1][0] + assert discover == full_info2 + + async def test_stop_discovery_called_on_stop(hass, castbrowser_mock): """Test pychromecast.stop_discovery called on shutdown.""" # start_discovery should be called with empty config From aa69e7646f6c52b9b99216f03f624c6e40f01721 Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Thu, 5 May 2022 17:40:56 +0200 Subject: [PATCH 128/151] Bump library version (#71349) --- homeassistant/components/nam/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/nam/manifest.json b/homeassistant/components/nam/manifest.json index 2b62500f23b..16231ef0b88 100644 --- a/homeassistant/components/nam/manifest.json +++ b/homeassistant/components/nam/manifest.json @@ -3,7 +3,7 @@ "name": "Nettigo Air Monitor", "documentation": "https://www.home-assistant.io/integrations/nam", "codeowners": ["@bieniu"], - "requirements": ["nettigo-air-monitor==1.2.2"], + "requirements": ["nettigo-air-monitor==1.2.3"], "zeroconf": [ { "type": "_http._tcp.local.", diff --git a/requirements_all.txt b/requirements_all.txt index 77bedaa4984..268ef409400 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1065,7 +1065,7 @@ netdisco==3.0.0 netmap==0.7.0.2 # homeassistant.components.nam -nettigo-air-monitor==1.2.2 +nettigo-air-monitor==1.2.3 # homeassistant.components.neurio_energy neurio==0.3.1 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 39f7642ea06..aaf2d8217c9 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -727,7 +727,7 @@ netdisco==3.0.0 netmap==0.7.0.2 # homeassistant.components.nam -nettigo-air-monitor==1.2.2 +nettigo-air-monitor==1.2.3 # homeassistant.components.nexia nexia==0.9.13 From 9f8111cabe0ea85664f8520f58333052b59d7c6e Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 5 May 2022 14:33:37 -0700 Subject: [PATCH 129/151] Ignore loading system entity category (#71361) --- homeassistant/helpers/entity_registry.py | 4 ++++ tests/helpers/test_entity_registry.py | 13 ++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/homeassistant/helpers/entity_registry.py b/homeassistant/helpers/entity_registry.py index b4dd0820d8c..64ab0323f6c 100644 --- a/homeassistant/helpers/entity_registry.py +++ b/homeassistant/helpers/entity_registry.py @@ -711,6 +711,10 @@ class EntityRegistry: if not valid_entity_id(entity["entity_id"]): continue + # We removed this in 2022.5. Remove this check in 2023.1. + if entity["entity_category"] == "system": + entity["entity_category"] = None + entities[entity["entity_id"]] = RegistryEntry( area_id=entity["area_id"], capabilities=entity["capabilities"], diff --git a/tests/helpers/test_entity_registry.py b/tests/helpers/test_entity_registry.py index 41ac7412d9c..21d29736bd0 100644 --- a/tests/helpers/test_entity_registry.py +++ b/tests/helpers/test_entity_registry.py @@ -297,6 +297,12 @@ async def test_loading_extra_values(hass, hass_storage): "unique_id": "invalid-hass", "disabled_by": er.RegistryEntryDisabler.HASS, }, + { + "entity_id": "test.system_entity", + "platform": "super_platform", + "unique_id": "system-entity", + "entity_category": "system", + }, ] }, } @@ -304,7 +310,7 @@ async def test_loading_extra_values(hass, hass_storage): await er.async_load(hass) registry = er.async_get(hass) - assert len(registry.entities) == 4 + assert len(registry.entities) == 5 entry_with_name = registry.async_get_or_create( "test", "super_platform", "with-name" @@ -327,6 +333,11 @@ async def test_loading_extra_values(hass, hass_storage): assert entry_disabled_user.disabled assert entry_disabled_user.disabled_by is er.RegistryEntryDisabler.USER + entry_system_category = registry.async_get_or_create( + "test", "system_entity", "system-entity" + ) + assert entry_system_category.entity_category is None + def test_async_get_entity_id(registry): """Test that entity_id is returned.""" From 61a3873d096fd228fa929371ac126c458511f232 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 5 May 2022 14:33:17 -0700 Subject: [PATCH 130/151] Fix importing blueprints (#71365) Co-authored-by: Shay Levy --- homeassistant/helpers/selector.py | 23 ++++++++++++++++++- tests/components/blueprint/test_importer.py | 2 +- .../blueprint/test_websocket_api.py | 12 +++++++--- tests/helpers/test_config_validation.py | 13 ++++++++++- tests/helpers/test_selector.py | 18 ++++++++++----- .../automation/test_event_service.yaml | 2 ++ 6 files changed, 58 insertions(+), 12 deletions(-) diff --git a/homeassistant/helpers/selector.py b/homeassistant/helpers/selector.py index eecc66c8332..afe74a4d7af 100644 --- a/homeassistant/helpers/selector.py +++ b/homeassistant/helpers/selector.py @@ -5,11 +5,13 @@ from collections.abc import Callable, Sequence from typing import Any, TypedDict, cast import voluptuous as vol +import yaml from homeassistant.backports.enum import StrEnum from homeassistant.const import CONF_MODE, CONF_UNIT_OF_MEASUREMENT from homeassistant.core import split_entity_id, valid_entity_id from homeassistant.util import decorator +from homeassistant.util.yaml.dumper import represent_odict from . import config_validation as cv @@ -71,7 +73,11 @@ class Selector: def serialize(self) -> Any: """Serialize Selector for voluptuous_serialize.""" - return {"selector": {self.selector_type: self.config}} + return {"selector": {self.selector_type: self.serialize_config()}} + + def serialize_config(self) -> Any: + """Serialize config.""" + return self.config SINGLE_ENTITY_SELECTOR_CONFIG_SCHEMA = vol.Schema( @@ -623,6 +629,13 @@ class NumberSelector(Selector): """Instantiate a selector.""" super().__init__(config) + def serialize_config(self) -> Any: + """Serialize the selector config.""" + return { + **self.config, + "mode": self.config["mode"].value, + } + def __call__(self, data: Any) -> float: """Validate the passed selection.""" value: float = vol.Coerce(float)(data) @@ -881,3 +894,11 @@ class TimeSelector(Selector): """Validate the passed selection.""" cv.time(data) return cast(str, data) + + +yaml.SafeDumper.add_representer( + Selector, + lambda dumper, value: represent_odict( + dumper, "tag:yaml.org,2002:map", value.serialize() + ), +) diff --git a/tests/components/blueprint/test_importer.py b/tests/components/blueprint/test_importer.py index 0e1e66405e6..806cdb2cb8d 100644 --- a/tests/components/blueprint/test_importer.py +++ b/tests/components/blueprint/test_importer.py @@ -198,7 +198,7 @@ async def test_fetch_blueprint_from_github_url(hass, aioclient_mock, url): assert imported_blueprint.blueprint.domain == "automation" assert imported_blueprint.blueprint.inputs == { "service_to_call": None, - "trigger_event": None, + "trigger_event": {"selector": {"text": {}}}, } assert imported_blueprint.suggested_filename == "balloob/motion_light" assert imported_blueprint.blueprint.metadata["source_url"] == url diff --git a/tests/components/blueprint/test_websocket_api.py b/tests/components/blueprint/test_websocket_api.py index 51b8184354a..40f24d98016 100644 --- a/tests/components/blueprint/test_websocket_api.py +++ b/tests/components/blueprint/test_websocket_api.py @@ -30,7 +30,10 @@ async def test_list_blueprints(hass, hass_ws_client): "test_event_service.yaml": { "metadata": { "domain": "automation", - "input": {"service_to_call": None, "trigger_event": None}, + "input": { + "service_to_call": None, + "trigger_event": {"selector": {"text": {}}}, + }, "name": "Call service based on event", }, }, @@ -89,7 +92,10 @@ async def test_import_blueprint(hass, aioclient_mock, hass_ws_client): "blueprint": { "metadata": { "domain": "automation", - "input": {"service_to_call": None, "trigger_event": None}, + "input": { + "service_to_call": None, + "trigger_event": {"selector": {"text": {}}}, + }, "name": "Call service based on event", "source_url": "https://github.com/balloob/home-assistant-config/blob/main/blueprints/automation/motion_light.yaml", }, @@ -123,7 +129,7 @@ async def test_save_blueprint(hass, aioclient_mock, hass_ws_client): assert msg["success"] assert write_mock.mock_calls assert write_mock.call_args[0] == ( - "blueprint:\n name: Call service based on event\n domain: automation\n input:\n trigger_event:\n service_to_call:\n source_url: https://github.com/balloob/home-assistant-config/blob/main/blueprints/automation/motion_light.yaml\ntrigger:\n platform: event\n event_type: !input 'trigger_event'\naction:\n service: !input 'service_to_call'\n entity_id: light.kitchen\n", + "blueprint:\n name: Call service based on event\n domain: automation\n input:\n trigger_event:\n selector:\n text: {}\n service_to_call:\n source_url: https://github.com/balloob/home-assistant-config/blob/main/blueprints/automation/motion_light.yaml\ntrigger:\n platform: event\n event_type: !input 'trigger_event'\naction:\n service: !input 'service_to_call'\n entity_id: light.kitchen\n", ) diff --git a/tests/helpers/test_config_validation.py b/tests/helpers/test_config_validation.py index 64c838e6c02..a5d2223a3d2 100644 --- a/tests/helpers/test_config_validation.py +++ b/tests/helpers/test_config_validation.py @@ -11,7 +11,7 @@ import pytest import voluptuous as vol import homeassistant -from homeassistant.helpers import config_validation as cv, template +from homeassistant.helpers import config_validation as cv, selector, template def test_boolean(): @@ -720,6 +720,17 @@ def test_string_in_serializer(): } +def test_selector_in_serializer(): + """Test selector with custom_serializer.""" + assert cv.custom_serializer(selector.selector({"text": {}})) == { + "selector": { + "text": { + "multiline": False, + } + } + } + + def test_positive_time_period_dict_in_serializer(): """Test positive_time_period_dict with custom_serializer.""" assert cv.custom_serializer(cv.positive_time_period_dict) == { diff --git a/tests/helpers/test_selector.py b/tests/helpers/test_selector.py index cb0ad95eb6b..8c94e3d3c56 100644 --- a/tests/helpers/test_selector.py +++ b/tests/helpers/test_selector.py @@ -2,7 +2,8 @@ import pytest import voluptuous as vol -from homeassistant.helpers import config_validation as cv, selector +from homeassistant.helpers import selector +from homeassistant.util import yaml FAKE_UUID = "a266a680b608c32770e6c45bfe6b8411" @@ -48,10 +49,12 @@ def _test_selector( converter = default_converter # Validate selector configuration - selector.validate_selector({selector_type: schema}) + config = {selector_type: schema} + selector.validate_selector(config) + selector_instance = selector.selector(config) # Use selector in schema and validate - vol_schema = vol.Schema({"selection": selector.selector({selector_type: schema})}) + vol_schema = vol.Schema({"selection": selector_instance}) for selection in valid_selections: assert vol_schema({"selection": selection}) == { "selection": converter(selection) @@ -62,9 +65,12 @@ def _test_selector( # Serialize selector selector_instance = selector.selector({selector_type: schema}) - assert cv.custom_serializer(selector_instance) == { - "selector": {selector_type: selector_instance.config} - } + assert ( + selector.selector(selector_instance.serialize()["selector"]).config + == selector_instance.config + ) + # Test serialized selector can be dumped to YAML + yaml.dump(selector_instance.serialize()) @pytest.mark.parametrize( diff --git a/tests/testing_config/blueprints/automation/test_event_service.yaml b/tests/testing_config/blueprints/automation/test_event_service.yaml index ab067b004ac..648cef39b96 100644 --- a/tests/testing_config/blueprints/automation/test_event_service.yaml +++ b/tests/testing_config/blueprints/automation/test_event_service.yaml @@ -3,6 +3,8 @@ blueprint: domain: automation input: trigger_event: + selector: + text: service_to_call: trigger: platform: event From 9a4ce19aff6cb179b6e1549b98f1274d0b912887 Mon Sep 17 00:00:00 2001 From: Shai Ungar Date: Fri, 6 May 2022 00:34:30 +0300 Subject: [PATCH 131/151] Add unique ids to sensors (#71367) --- homeassistant/components/sabnzbd/manifest.json | 2 -- homeassistant/components/sabnzbd/sensor.py | 11 ++++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/sabnzbd/manifest.json b/homeassistant/components/sabnzbd/manifest.json index 0702446d217..f112893b5e1 100644 --- a/homeassistant/components/sabnzbd/manifest.json +++ b/homeassistant/components/sabnzbd/manifest.json @@ -3,8 +3,6 @@ "name": "SABnzbd", "documentation": "https://www.home-assistant.io/integrations/sabnzbd", "requirements": ["pysabnzbd==1.1.1"], - "dependencies": ["configurator"], - "after_dependencies": ["discovery"], "codeowners": ["@shaiu"], "iot_class": "local_polling", "config_flow": true, diff --git a/homeassistant/components/sabnzbd/sensor.py b/homeassistant/components/sabnzbd/sensor.py index 1d661d90848..dee80945e9d 100644 --- a/homeassistant/components/sabnzbd/sensor.py +++ b/homeassistant/components/sabnzbd/sensor.py @@ -14,8 +14,10 @@ from . import DOMAIN, SIGNAL_SABNZBD_UPDATED from ...config_entries import ConfigEntry from ...const import DATA_GIGABYTES, DATA_MEGABYTES, DATA_RATE_MEGABYTES_PER_SECOND from ...core import HomeAssistant +from ...helpers.device_registry import DeviceEntryType +from ...helpers.entity import DeviceInfo from ...helpers.entity_platform import AddEntitiesCallback -from .const import KEY_API_DATA, KEY_NAME +from .const import DEFAULT_NAME, KEY_API_DATA, KEY_NAME @dataclass @@ -127,9 +129,16 @@ class SabnzbdSensor(SensorEntity): self, sabnzbd_api_data, client_name, description: SabnzbdSensorEntityDescription ): """Initialize the sensor.""" + unique_id = description.key + self._attr_unique_id = unique_id self.entity_description = description self._sabnzbd_api = sabnzbd_api_data self._attr_name = f"{client_name} {description.name}" + self._attr_device_info = DeviceInfo( + entry_type=DeviceEntryType.SERVICE, + identifiers={(DOMAIN, DOMAIN)}, + name=DEFAULT_NAME, + ) async def async_added_to_hass(self): """Call when entity about to be added to hass.""" From e2ae62ea9579bf91798716d9fd6fa16b6da15a19 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 5 May 2022 14:43:44 -0700 Subject: [PATCH 132/151] Bumped version to 2022.5.1 --- homeassistant/const.py | 2 +- setup.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 5c7b28e1156..c2cb8119602 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -7,7 +7,7 @@ from .backports.enum import StrEnum MAJOR_VERSION: Final = 2022 MINOR_VERSION: Final = 5 -PATCH_VERSION: Final = "0" +PATCH_VERSION: Final = "1" __short_version__: Final = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__: Final = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER: Final[tuple[int, int, int]] = (3, 9, 0) diff --git a/setup.cfg b/setup.cfg index beab88224e5..04a68db8ca6 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = homeassistant -version = 2022.5.0 +version = 2022.5.1 author = The Home Assistant Authors author_email = hello@home-assistant.io license = Apache-2.0 From 4ae596fef296c6db241065a7f034ea499e89bf62 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 5 May 2022 15:01:25 -0700 Subject: [PATCH 133/151] Bump pychromecast to 12.1.1 (#71377) --- homeassistant/components/cast/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/cast/manifest.json b/homeassistant/components/cast/manifest.json index 7144a3872f5..cee46913937 100644 --- a/homeassistant/components/cast/manifest.json +++ b/homeassistant/components/cast/manifest.json @@ -3,7 +3,7 @@ "name": "Google Cast", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/cast", - "requirements": ["pychromecast==12.1.0"], + "requirements": ["pychromecast==12.1.1"], "after_dependencies": [ "cloud", "http", diff --git a/requirements_all.txt b/requirements_all.txt index 268ef409400..b6d512d97be 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1399,7 +1399,7 @@ pycfdns==1.2.2 pychannels==1.0.0 # homeassistant.components.cast -pychromecast==12.1.0 +pychromecast==12.1.1 # homeassistant.components.pocketcasts pycketcasts==1.0.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index aaf2d8217c9..6f93d8c5e82 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -938,7 +938,7 @@ pybotvac==0.0.23 pycfdns==1.2.2 # homeassistant.components.cast -pychromecast==12.1.0 +pychromecast==12.1.1 # homeassistant.components.climacell pyclimacell==0.18.2 From c54e236416173192d853b89da734fe48bebfb59e Mon Sep 17 00:00:00 2001 From: Alessandro Di Felice Date: Fri, 6 May 2022 02:27:46 -0500 Subject: [PATCH 134/151] Upgrade glances_api to 0.3.5 (#71243) --- homeassistant/components/glances/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/glances/manifest.json b/homeassistant/components/glances/manifest.json index 73f4d2f333f..3c2906f9fd6 100644 --- a/homeassistant/components/glances/manifest.json +++ b/homeassistant/components/glances/manifest.json @@ -3,7 +3,7 @@ "name": "Glances", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/glances", - "requirements": ["glances_api==0.3.4"], + "requirements": ["glances_api==0.3.5"], "codeowners": ["@engrbm87"], "iot_class": "local_polling", "loggers": ["glances_api"] diff --git a/requirements_all.txt b/requirements_all.txt index b6d512d97be..f5c09da8eeb 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -723,7 +723,7 @@ gios==2.1.0 gitterpy==0.1.7 # homeassistant.components.glances -glances_api==0.3.4 +glances_api==0.3.5 # homeassistant.components.goalzero goalzero==0.2.1 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 6f93d8c5e82..302e90b5648 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -514,7 +514,7 @@ getmac==0.8.2 gios==2.1.0 # homeassistant.components.glances -glances_api==0.3.4 +glances_api==0.3.5 # homeassistant.components.goalzero goalzero==0.2.1 From 46a36adf268442f55266b069db22bacac81c29fd Mon Sep 17 00:00:00 2001 From: 0bmay <57501269+0bmay@users.noreply.github.com> Date: Fri, 6 May 2022 08:00:48 -0700 Subject: [PATCH 135/151] Fix Canary camera stream blocking call (#71369) * fix: Canary stream camera, fix blocker fixes a "detected blocking call to putrequest inside the event loop. This is causing stability issues. Please report issue for canary doing blocking calls at homeassistant/components/canary/camera.py, line 149: self._live_stream_session.live_stream_url, extra_cmd=self._ffmpeg_arguments" from log file. * refactor: black formatting changes tsia --- homeassistant/components/canary/camera.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/canary/camera.py b/homeassistant/components/canary/camera.py index 46826d80291..5caae6f5cc5 100644 --- a/homeassistant/components/canary/camera.py +++ b/homeassistant/components/canary/camera.py @@ -144,10 +144,11 @@ class CanaryCamera(CoordinatorEntity[CanaryDataUpdateCoordinator], Camera): if self._live_stream_session is None: return None - stream = CameraMjpeg(self._ffmpeg.binary) - await stream.open_camera( - self._live_stream_session.live_stream_url, extra_cmd=self._ffmpeg_arguments + live_stream_url = await self.hass.async_add_executor_job( + getattr, self._live_stream_session, "live_stream_url" ) + stream = CameraMjpeg(self._ffmpeg.binary) + await stream.open_camera(live_stream_url, extra_cmd=self._ffmpeg_arguments) try: stream_reader = await stream.get_reader() From 2fffac02a3b6fffa51c1618d0ddc6c04aebe7130 Mon Sep 17 00:00:00 2001 From: "David F. Mulcahey" Date: Fri, 6 May 2022 10:24:08 -0400 Subject: [PATCH 136/151] Update Zigpy attribute cache for switch devices that do not report state (#71417) * fix devices that do not report state * whoops --- .../components/zha/core/channels/general.py | 16 ++++++++++++++++ homeassistant/components/zha/switch.py | 8 ++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/zha/core/channels/general.py b/homeassistant/components/zha/core/channels/general.py index e6524c9aad1..2e6093dd4f7 100644 --- a/homeassistant/components/zha/core/channels/general.py +++ b/homeassistant/components/zha/core/channels/general.py @@ -308,6 +308,22 @@ class OnOffChannel(ZigbeeChannel): """Return cached value of on/off attribute.""" return self.cluster.get("on_off") + async def turn_on(self) -> bool: + """Turn the on off cluster on.""" + result = await self.on() + if isinstance(result, Exception) or result[1] is not Status.SUCCESS: + return False + self.cluster.update_attribute(self.ON_OFF, t.Bool.true) + return True + + async def turn_off(self) -> bool: + """Turn the on off cluster off.""" + result = await self.off() + if isinstance(result, Exception) or result[1] is not Status.SUCCESS: + return False + self.cluster.update_attribute(self.ON_OFF, t.Bool.false) + return True + @callback def cluster_command(self, tsn, command_id, args): """Handle commands received to this cluster.""" diff --git a/homeassistant/components/zha/switch.py b/homeassistant/components/zha/switch.py index 254e3691da1..76c41093ed6 100644 --- a/homeassistant/components/zha/switch.py +++ b/homeassistant/components/zha/switch.py @@ -64,15 +64,15 @@ class Switch(ZhaEntity, SwitchEntity): async def async_turn_on(self, **kwargs) -> None: """Turn the entity on.""" - result = await self._on_off_channel.on() - if isinstance(result, Exception) or result[1] is not Status.SUCCESS: + result = await self._on_off_channel.turn_on() + if not result: return self.async_write_ha_state() async def async_turn_off(self, **kwargs) -> None: """Turn the entity off.""" - result = await self._on_off_channel.off() - if isinstance(result, Exception) or result[1] is not Status.SUCCESS: + result = await self._on_off_channel.turn_off() + if not result: return self.async_write_ha_state() From dc3e421b3be033c347b0e69cbc5cd55046d297e0 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 6 May 2022 11:25:01 -0700 Subject: [PATCH 137/151] Stringify enums in selectors (#71441) --- homeassistant/helpers/selector.py | 17 +++-------------- tests/components/automation/test_init.py | 2 ++ tests/components/blueprint/test_importer.py | 1 + .../components/blueprint/test_websocket_api.py | 4 +++- tests/components/trace/test_websocket_api.py | 1 + tests/helpers/test_selector.py | 4 ++++ .../automation/test_event_service.yaml | 4 ++++ 7 files changed, 18 insertions(+), 15 deletions(-) diff --git a/homeassistant/helpers/selector.py b/homeassistant/helpers/selector.py index afe74a4d7af..1ae0082c06f 100644 --- a/homeassistant/helpers/selector.py +++ b/homeassistant/helpers/selector.py @@ -73,11 +73,7 @@ class Selector: def serialize(self) -> Any: """Serialize Selector for voluptuous_serialize.""" - return {"selector": {self.selector_type: self.serialize_config()}} - - def serialize_config(self) -> Any: - """Serialize config.""" - return self.config + return {"selector": {self.selector_type: self.config}} SINGLE_ENTITY_SELECTOR_CONFIG_SCHEMA = vol.Schema( @@ -617,8 +613,8 @@ class NumberSelector(Selector): vol.Coerce(float), vol.Range(min=1e-3) ), vol.Optional(CONF_UNIT_OF_MEASUREMENT): str, - vol.Optional(CONF_MODE, default=NumberSelectorMode.SLIDER): vol.Coerce( - NumberSelectorMode + vol.Optional(CONF_MODE, default=NumberSelectorMode.SLIDER): vol.All( + vol.Coerce(NumberSelectorMode), lambda val: val.value ), } ), @@ -629,13 +625,6 @@ class NumberSelector(Selector): """Instantiate a selector.""" super().__init__(config) - def serialize_config(self) -> Any: - """Serialize the selector config.""" - return { - **self.config, - "mode": self.config["mode"].value, - } - def __call__(self, data: Any) -> float: """Validate the passed selection.""" value: float = vol.Coerce(float)(data) diff --git a/tests/components/automation/test_init.py b/tests/components/automation/test_init.py index dbc8f0fc346..45f719a326f 100644 --- a/tests/components/automation/test_init.py +++ b/tests/components/automation/test_init.py @@ -1474,6 +1474,7 @@ async def test_blueprint_automation(hass, calls): "input": { "trigger_event": "blueprint_event", "service_to_call": "test.automation", + "a_number": 5, }, } } @@ -1499,6 +1500,7 @@ async def test_blueprint_automation_bad_config(hass, caplog): "input": { "trigger_event": "blueprint_event", "service_to_call": {"dict": "not allowed"}, + "a_number": 5, }, } } diff --git a/tests/components/blueprint/test_importer.py b/tests/components/blueprint/test_importer.py index 806cdb2cb8d..46a98840a80 100644 --- a/tests/components/blueprint/test_importer.py +++ b/tests/components/blueprint/test_importer.py @@ -199,6 +199,7 @@ async def test_fetch_blueprint_from_github_url(hass, aioclient_mock, url): assert imported_blueprint.blueprint.inputs == { "service_to_call": None, "trigger_event": {"selector": {"text": {}}}, + "a_number": {"selector": {"number": {"mode": "box", "step": 1.0}}}, } assert imported_blueprint.suggested_filename == "balloob/motion_light" assert imported_blueprint.blueprint.metadata["source_url"] == url diff --git a/tests/components/blueprint/test_websocket_api.py b/tests/components/blueprint/test_websocket_api.py index 40f24d98016..9376710abee 100644 --- a/tests/components/blueprint/test_websocket_api.py +++ b/tests/components/blueprint/test_websocket_api.py @@ -33,6 +33,7 @@ async def test_list_blueprints(hass, hass_ws_client): "input": { "service_to_call": None, "trigger_event": {"selector": {"text": {}}}, + "a_number": {"selector": {"number": {"mode": "box", "step": 1.0}}}, }, "name": "Call service based on event", }, @@ -95,6 +96,7 @@ async def test_import_blueprint(hass, aioclient_mock, hass_ws_client): "input": { "service_to_call": None, "trigger_event": {"selector": {"text": {}}}, + "a_number": {"selector": {"number": {"mode": "box", "step": 1.0}}}, }, "name": "Call service based on event", "source_url": "https://github.com/balloob/home-assistant-config/blob/main/blueprints/automation/motion_light.yaml", @@ -129,7 +131,7 @@ async def test_save_blueprint(hass, aioclient_mock, hass_ws_client): assert msg["success"] assert write_mock.mock_calls assert write_mock.call_args[0] == ( - "blueprint:\n name: Call service based on event\n domain: automation\n input:\n trigger_event:\n selector:\n text: {}\n service_to_call:\n source_url: https://github.com/balloob/home-assistant-config/blob/main/blueprints/automation/motion_light.yaml\ntrigger:\n platform: event\n event_type: !input 'trigger_event'\naction:\n service: !input 'service_to_call'\n entity_id: light.kitchen\n", + "blueprint:\n name: Call service based on event\n domain: automation\n input:\n trigger_event:\n selector:\n text: {}\n service_to_call:\n a_number:\n selector:\n number:\n mode: box\n step: 1.0\n source_url: https://github.com/balloob/home-assistant-config/blob/main/blueprints/automation/motion_light.yaml\ntrigger:\n platform: event\n event_type: !input 'trigger_event'\naction:\n service: !input 'service_to_call'\n entity_id: light.kitchen\n", ) diff --git a/tests/components/trace/test_websocket_api.py b/tests/components/trace/test_websocket_api.py index f55999a1e48..21eefb14c1b 100644 --- a/tests/components/trace/test_websocket_api.py +++ b/tests/components/trace/test_websocket_api.py @@ -1539,6 +1539,7 @@ async def test_trace_blueprint_automation( "input": { "trigger_event": "blueprint_event", "service_to_call": "test.automation", + "a_number": 5, }, }, } diff --git a/tests/helpers/test_selector.py b/tests/helpers/test_selector.py index 8c94e3d3c56..ed831026065 100644 --- a/tests/helpers/test_selector.py +++ b/tests/helpers/test_selector.py @@ -1,4 +1,6 @@ """Test selectors.""" +from enum import Enum + import pytest import voluptuous as vol @@ -52,6 +54,8 @@ def _test_selector( config = {selector_type: schema} selector.validate_selector(config) selector_instance = selector.selector(config) + # We do not allow enums in the config, as they cannot serialize + assert not any(isinstance(val, Enum) for val in selector_instance.config.values()) # Use selector in schema and validate vol_schema = vol.Schema({"selection": selector_instance}) diff --git a/tests/testing_config/blueprints/automation/test_event_service.yaml b/tests/testing_config/blueprints/automation/test_event_service.yaml index 648cef39b96..ba7462ed2e0 100644 --- a/tests/testing_config/blueprints/automation/test_event_service.yaml +++ b/tests/testing_config/blueprints/automation/test_event_service.yaml @@ -6,6 +6,10 @@ blueprint: selector: text: service_to_call: + a_number: + selector: + number: + mode: "box" trigger: platform: event event_type: !input trigger_event From 4a7710572c2e92ed9ef60ca428c786de4bec403f Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 6 May 2022 11:25:53 -0700 Subject: [PATCH 138/151] Bumped version to 2022.5.2 --- homeassistant/const.py | 2 +- setup.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index c2cb8119602..5aed0cdaae9 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -7,7 +7,7 @@ from .backports.enum import StrEnum MAJOR_VERSION: Final = 2022 MINOR_VERSION: Final = 5 -PATCH_VERSION: Final = "1" +PATCH_VERSION: Final = "2" __short_version__: Final = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__: Final = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER: Final[tuple[int, int, int]] = (3, 9, 0) diff --git a/setup.cfg b/setup.cfg index 04a68db8ca6..6d41c8526db 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = homeassistant -version = 2022.5.1 +version = 2022.5.2 author = The Home Assistant Authors author_email = hello@home-assistant.io license = Apache-2.0 From 6abc51b363f9cef2bfd21249b78e905e6b3b0cc7 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 7 May 2022 14:19:23 -0700 Subject: [PATCH 139/151] Move flexit climate to HVAC action (#71443) --- homeassistant/components/flexit/climate.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/flexit/climate.py b/homeassistant/components/flexit/climate.py index c24acf78221..1c9f752c15b 100644 --- a/homeassistant/components/flexit/climate.py +++ b/homeassistant/components/flexit/climate.py @@ -6,7 +6,11 @@ import logging import voluptuous as vol from homeassistant.components.climate import PLATFORM_SCHEMA, ClimateEntity -from homeassistant.components.climate.const import ClimateEntityFeature, HVACMode +from homeassistant.components.climate.const import ( + ClimateEntityFeature, + HVACAction, + HVACMode, +) from homeassistant.components.modbus import get_hub from homeassistant.components.modbus.const import ( CALL_TYPE_REGISTER_HOLDING, @@ -69,9 +73,7 @@ class Flexit(ClimateEntity): self._target_temperature = None self._current_temperature = None self._current_fan_mode = None - self._current_operation = None self._fan_modes = ["Off", "Low", "Medium", "High"] - self._current_operation = None self._filter_hours = None self._filter_alarm = None self._heat_recovery = None @@ -124,15 +126,15 @@ class Flexit(ClimateEntity): ) if self._heating: - self._current_operation = "Heating" + self._attr_hvac_action = HVACAction.HEATING elif self._cooling: - self._current_operation = "Cooling" + self._attr_hvac_action = HVACAction.COOLING elif self._heat_recovery: - self._current_operation = "Recovering" + self._attr_hvac_action = HVACAction.IDLE elif actual_air_speed: - self._current_operation = "Fan Only" + self._attr_hvac_action = HVACAction.FAN else: - self._current_operation = "Off" + self._attr_hvac_action = HVACAction.OFF @property def extra_state_attributes(self): @@ -175,7 +177,7 @@ class Flexit(ClimateEntity): @property def hvac_mode(self): """Return current operation ie. heat, cool, idle.""" - return self._current_operation + return HVACMode.COOL @property def hvac_modes(self) -> list[str]: From b18d64fdac38732e26bf15aed94e3885d232112b Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 7 May 2022 16:19:01 -0500 Subject: [PATCH 140/151] Fix display of multiline queries in sql config flow (#71450) --- homeassistant/components/sql/config_flow.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/sql/config_flow.py b/homeassistant/components/sql/config_flow.py index 9150cb8f63d..b18ea406618 100644 --- a/homeassistant/components/sql/config_flow.py +++ b/homeassistant/components/sql/config_flow.py @@ -26,7 +26,9 @@ DATA_SCHEMA = vol.Schema( vol.Required(CONF_NAME, default="Select SQL Query"): selector.TextSelector(), vol.Optional(CONF_DB_URL): selector.TextSelector(), vol.Required(CONF_COLUMN_NAME): selector.TextSelector(), - vol.Required(CONF_QUERY): selector.TextSelector(), + vol.Required(CONF_QUERY): selector.TextSelector( + selector.TextSelectorConfig(multiline=True) + ), vol.Optional(CONF_UNIT_OF_MEASUREMENT): selector.TextSelector(), vol.Optional(CONF_VALUE_TEMPLATE): selector.TemplateSelector(), } @@ -180,7 +182,9 @@ class SQLOptionsFlowHandler(config_entries.OptionsFlow): vol.Required( CONF_QUERY, description={"suggested_value": self.entry.options[CONF_QUERY]}, - ): selector.TextSelector(), + ): selector.TextSelector( + selector.TextSelectorConfig(multiline=True) + ), vol.Required( CONF_COLUMN_NAME, description={ From b2721d659676859e6a7207c930f444eb3cf4e208 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 7 May 2022 16:18:40 -0500 Subject: [PATCH 141/151] Ensure sql sensors keep working after using the options flow (#71453) * Ensure sql sensors keep working after using the options flow Fixes ``` 2022-05-06 16:17:57 ERROR (MainThread) [homeassistant.components.sensor] Error while setting up sql platform for sensor Traceback (most recent call last): File "/Users/bdraco/home-assistant/homeassistant/helpers/entity_platform.py", line 249, in _async_setup_platform await asyncio.shield(task) File "/Users/bdraco/home-assistant/homeassistant/components/sql/sensor.py", line 97, in async_setup_entry name: str = entry.options[CONF_NAME] KeyError: name ``` * ensure saving the options flow fixes the broken config entry * ensure options changes take effect right away * Add cover to validate the reload --- homeassistant/components/sql/__init__.py | 6 +++ homeassistant/components/sql/config_flow.py | 9 +++- tests/components/sql/test_config_flow.py | 55 +++++++++++++++++++++ 3 files changed, 69 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/sql/__init__.py b/homeassistant/components/sql/__init__.py index 3c83b01b284..2917056b5d4 100644 --- a/homeassistant/components/sql/__init__.py +++ b/homeassistant/components/sql/__init__.py @@ -7,8 +7,14 @@ from homeassistant.core import HomeAssistant from .const import PLATFORMS +async def async_update_listener(hass: HomeAssistant, entry: ConfigEntry) -> None: + """Update listener for options.""" + await hass.config_entries.async_reload(entry.entry_id) + + async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up SQL from a config entry.""" + entry.async_on_unload(entry.add_update_listener(async_update_listener)) hass.config_entries.async_setup_platforms(entry, PLATFORMS) diff --git a/homeassistant/components/sql/config_flow.py b/homeassistant/components/sql/config_flow.py index b18ea406618..ba9a5f7e4dd 100644 --- a/homeassistant/components/sql/config_flow.py +++ b/homeassistant/components/sql/config_flow.py @@ -167,7 +167,14 @@ class SQLOptionsFlowHandler(config_entries.OptionsFlow): except ValueError: errors["query"] = "query_invalid" else: - return self.async_create_entry(title="", data=user_input) + return self.async_create_entry( + title="", + data={ + CONF_NAME: self.entry.title, + **self.entry.options, + **user_input, + }, + ) return self.async_show_form( step_id="init", diff --git a/tests/components/sql/test_config_flow.py b/tests/components/sql/test_config_flow.py index ec851b491b7..3e065df0ebd 100644 --- a/tests/components/sql/test_config_flow.py +++ b/tests/components/sql/test_config_flow.py @@ -214,9 +214,62 @@ async def test_options_flow(hass: HomeAssistant) -> None: assert result["type"] == RESULT_TYPE_CREATE_ENTRY assert result["data"] == { + "name": "Get Value", "db_url": "sqlite://", "query": "SELECT 5 as size", "column": "size", + "value_template": None, + "unit_of_measurement": "MiB", + } + + +async def test_options_flow_name_previously_removed(hass: HomeAssistant) -> None: + """Test options config flow where the name was missing.""" + entry = MockConfigEntry( + domain=DOMAIN, + data={}, + options={ + "db_url": "sqlite://", + "query": "SELECT 5 as value", + "column": "value", + "unit_of_measurement": "MiB", + "value_template": None, + }, + title="Get Value Title", + ) + entry.add_to_hass(hass) + + assert await hass.config_entries.async_setup(entry.entry_id) + await hass.async_block_till_done() + + result = await hass.config_entries.options.async_init(entry.entry_id) + + assert result["type"] == RESULT_TYPE_FORM + assert result["step_id"] == "init" + + with patch( + "homeassistant.components.sql.async_setup_entry", + return_value=True, + ) as mock_setup_entry: + result = await hass.config_entries.options.async_configure( + result["flow_id"], + user_input={ + "db_url": "sqlite://", + "query": "SELECT 5 as size", + "column": "size", + "unit_of_measurement": "MiB", + }, + ) + await hass.async_block_till_done() + + assert len(mock_setup_entry.mock_calls) == 1 + assert result["type"] == RESULT_TYPE_CREATE_ENTRY + assert result["data"] == { + "name": "Get Value Title", + "db_url": "sqlite://", + "query": "SELECT 5 as size", + "column": "size", + "value_template": None, "unit_of_measurement": "MiB", } @@ -312,6 +365,8 @@ async def test_options_flow_fails_invalid_query( assert result4["type"] == RESULT_TYPE_CREATE_ENTRY assert result4["data"] == { + "name": "Get Value", + "value_template": None, "db_url": "sqlite://", "query": "SELECT 5 as size", "column": "size", From 5b4764351dc614c478d59282c70ecb25bcc5cf38 Mon Sep 17 00:00:00 2001 From: rappenze Date: Sat, 7 May 2022 22:22:41 +0200 Subject: [PATCH 142/151] Fix rgb conversion in fibaro light (#71476) --- homeassistant/components/fibaro/light.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/fibaro/light.py b/homeassistant/components/fibaro/light.py index ad41b2aaed6..9d0309bc4ee 100644 --- a/homeassistant/components/fibaro/light.py +++ b/homeassistant/components/fibaro/light.py @@ -185,6 +185,6 @@ class FibaroLight(FibaroDevice, LightEntity): rgbw_list = [int(i) for i in rgbw_s.split(",")][:4] if self._attr_color_mode == ColorMode.RGB: - self._attr_rgb_color = tuple(*rgbw_list[:3]) + self._attr_rgb_color = tuple(rgbw_list[:3]) else: self._attr_rgbw_color = tuple(rgbw_list) From 34cbf26e2fed42102eb9dbc7d720da947dd24de3 Mon Sep 17 00:00:00 2001 From: rappenze Date: Sat, 7 May 2022 22:20:30 +0200 Subject: [PATCH 143/151] Revert usage of Fibaro Client V5 as it has too many errors (#71477) --- homeassistant/components/fibaro/__init__.py | 23 +++++++-------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/homeassistant/components/fibaro/__init__.py b/homeassistant/components/fibaro/__init__.py index d5a8f94970d..c9b0cb345e1 100644 --- a/homeassistant/components/fibaro/__init__.py +++ b/homeassistant/components/fibaro/__init__.py @@ -10,10 +10,7 @@ from fiblary3.client.v4.client import ( Client as FibaroClientV4, StateHandler as StateHandlerV4, ) -from fiblary3.client.v5.client import ( - Client as FibaroClientV5, - StateHandler as StateHandlerV5, -) +from fiblary3.client.v5.client import StateHandler as StateHandlerV5 from fiblary3.common.exceptions import HTTPException import voluptuous as vol @@ -141,18 +138,12 @@ class FibaroController: should do that only when you use the FibaroController for login test as only the login and info API's are equal throughout the different versions. """ - if ( - serial_number is None - or serial_number.upper().startswith("HC2") - or serial_number.upper().startswith("HCL") - ): - self._client = FibaroClientV4( - config[CONF_URL], config[CONF_USERNAME], config[CONF_PASSWORD] - ) - else: - self._client = FibaroClientV5( - config[CONF_URL], config[CONF_USERNAME], config[CONF_PASSWORD] - ) + + # Only use V4 API as it works better even for HC3, after the library is fixed, we should + # add here support for the newer library version V5 again. + self._client = FibaroClientV4( + config[CONF_URL], config[CONF_USERNAME], config[CONF_PASSWORD] + ) self._scene_map = None # Whether to import devices from plugins From fccad81227dcb5d9b6a353ab44dc750bada09704 Mon Sep 17 00:00:00 2001 From: 0bmay <57501269+0bmay@users.noreply.github.com> Date: Sat, 7 May 2022 13:28:05 -0700 Subject: [PATCH 144/151] Update py-canary to 0.5.2 (#71489) Update py-canary from 0.5.1 to 0.5.2 Github issue #71052 Github Issue #44830 --- homeassistant/components/canary/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/canary/manifest.json b/homeassistant/components/canary/manifest.json index 12b4d54b391..fdae5c83d7b 100644 --- a/homeassistant/components/canary/manifest.json +++ b/homeassistant/components/canary/manifest.json @@ -2,7 +2,7 @@ "domain": "canary", "name": "Canary", "documentation": "https://www.home-assistant.io/integrations/canary", - "requirements": ["py-canary==0.5.1"], + "requirements": ["py-canary==0.5.2"], "dependencies": ["ffmpeg"], "codeowners": [], "config_flow": true, diff --git a/requirements_all.txt b/requirements_all.txt index f5c09da8eeb..c7820675fff 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1287,7 +1287,7 @@ pushover_complete==1.1.1 pvo==0.2.2 # homeassistant.components.canary -py-canary==0.5.1 +py-canary==0.5.2 # homeassistant.components.cpuspeed py-cpuinfo==8.0.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 302e90b5648..45f81154a6d 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -865,7 +865,7 @@ pushbullet.py==0.11.0 pvo==0.2.2 # homeassistant.components.canary -py-canary==0.5.1 +py-canary==0.5.2 # homeassistant.components.cpuspeed py-cpuinfo==8.0.0 From f817caa7fc15fe597ae0eb658913d3c9221a17a7 Mon Sep 17 00:00:00 2001 From: Austin Mroczek Date: Sat, 7 May 2022 13:30:36 -0700 Subject: [PATCH 145/151] bump total_connect_client to 2022.5 (#71493) --- homeassistant/components/totalconnect/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/totalconnect/manifest.json b/homeassistant/components/totalconnect/manifest.json index bc62a5b17af..461bff0cfd0 100644 --- a/homeassistant/components/totalconnect/manifest.json +++ b/homeassistant/components/totalconnect/manifest.json @@ -2,7 +2,7 @@ "domain": "totalconnect", "name": "Total Connect", "documentation": "https://www.home-assistant.io/integrations/totalconnect", - "requirements": ["total_connect_client==2022.3"], + "requirements": ["total_connect_client==2022.5"], "dependencies": [], "codeowners": ["@austinmroczek"], "config_flow": true, diff --git a/requirements_all.txt b/requirements_all.txt index c7820675fff..fd1224ee1c8 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2316,7 +2316,7 @@ tololib==0.1.0b3 toonapi==0.2.1 # homeassistant.components.totalconnect -total_connect_client==2022.3 +total_connect_client==2022.5 # homeassistant.components.tplink_lte tp-connected==0.0.4 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 45f81154a6d..9a7f419419c 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1501,7 +1501,7 @@ tololib==0.1.0b3 toonapi==0.2.1 # homeassistant.components.totalconnect -total_connect_client==2022.3 +total_connect_client==2022.5 # homeassistant.components.transmission transmissionrpc==0.11 From 51ba02f14171e875065eee9fec3db146b0c35da5 Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Sat, 7 May 2022 22:08:20 +0200 Subject: [PATCH 146/151] Add timeout (#71499) --- homeassistant/components/brother/__init__.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/brother/__init__.py b/homeassistant/components/brother/__init__.py index ce715e991b0..96e2ad069ce 100644 --- a/homeassistant/components/brother/__init__.py +++ b/homeassistant/components/brother/__init__.py @@ -4,6 +4,7 @@ from __future__ import annotations from datetime import timedelta import logging +import async_timeout from brother import Brother, DictToObj, SnmpError, UnsupportedModel import pysnmp.hlapi.asyncio as SnmpEngine @@ -76,7 +77,8 @@ class BrotherDataUpdateCoordinator(DataUpdateCoordinator): async def _async_update_data(self) -> DictToObj: """Update data via library.""" try: - data = await self.brother.async_update() + async with async_timeout.timeout(20): + data = await self.brother.async_update() except (ConnectionError, SnmpError, UnsupportedModel) as error: raise UpdateFailed(error) from error return data From 9f1d996d9547d8adaaffcda265d8b28ffcaeb829 Mon Sep 17 00:00:00 2001 From: Paul Annekov Date: Sun, 8 May 2022 18:22:20 +0300 Subject: [PATCH 147/151] Add Ukraine Alarm integration (#71501) Co-authored-by: J. Nick Koston Co-authored-by: Paulus Schoutsen Co-authored-by: Martin Hjelmare Co-authored-by: Paulus Schoutsen --- .coveragerc | 3 + CODEOWNERS | 2 + .../components/ukraine_alarm/__init__.py | 79 ++++ .../components/ukraine_alarm/binary_sensor.py | 106 ++++++ .../components/ukraine_alarm/config_flow.py | 154 ++++++++ .../components/ukraine_alarm/const.py | 19 + .../components/ukraine_alarm/manifest.json | 9 + .../components/ukraine_alarm/strings.json | 39 ++ .../ukraine_alarm/translations/en.json | 28 ++ .../ukraine_alarm/translations/ru.json | 28 ++ .../ukraine_alarm/translations/uk.json | 28 ++ homeassistant/generated/config_flows.py | 1 + requirements_all.txt | 3 + requirements_test_all.txt | 3 + tests/components/ukraine_alarm/__init__.py | 1 + .../ukraine_alarm/test_config_flow.py | 354 ++++++++++++++++++ 16 files changed, 857 insertions(+) create mode 100644 homeassistant/components/ukraine_alarm/__init__.py create mode 100644 homeassistant/components/ukraine_alarm/binary_sensor.py create mode 100644 homeassistant/components/ukraine_alarm/config_flow.py create mode 100644 homeassistant/components/ukraine_alarm/const.py create mode 100644 homeassistant/components/ukraine_alarm/manifest.json create mode 100644 homeassistant/components/ukraine_alarm/strings.json create mode 100644 homeassistant/components/ukraine_alarm/translations/en.json create mode 100644 homeassistant/components/ukraine_alarm/translations/ru.json create mode 100644 homeassistant/components/ukraine_alarm/translations/uk.json create mode 100644 tests/components/ukraine_alarm/__init__.py create mode 100644 tests/components/ukraine_alarm/test_config_flow.py diff --git a/.coveragerc b/.coveragerc index b7433ecf58a..dc7143aa867 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1320,6 +1320,9 @@ omit = homeassistant/components/twitter/notify.py homeassistant/components/ubus/device_tracker.py homeassistant/components/ue_smart_radio/media_player.py + homeassistant/components/ukraine_alarm/__init__.py + homeassistant/components/ukraine_alarm/const.py + homeassistant/components/ukraine_alarm/binary_sensor.py homeassistant/components/unifiled/* homeassistant/components/upb/__init__.py homeassistant/components/upb/const.py diff --git a/CODEOWNERS b/CODEOWNERS index c3405001f23..8731f2860ce 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1070,6 +1070,8 @@ build.json @home-assistant/supervisor /tests/components/twentemilieu/ @frenck /homeassistant/components/twinkly/ @dr1rrb @Robbie1221 /tests/components/twinkly/ @dr1rrb @Robbie1221 +/homeassistant/components/ukraine_alarm/ @PaulAnnekov +/tests/components/ukraine_alarm/ @PaulAnnekov /homeassistant/components/unifi/ @Kane610 /tests/components/unifi/ @Kane610 /homeassistant/components/unifiled/ @florisvdk diff --git a/homeassistant/components/ukraine_alarm/__init__.py b/homeassistant/components/ukraine_alarm/__init__.py new file mode 100644 index 00000000000..b2b2ff4162f --- /dev/null +++ b/homeassistant/components/ukraine_alarm/__init__.py @@ -0,0 +1,79 @@ +"""The ukraine_alarm component.""" +from __future__ import annotations + +from datetime import timedelta +import logging +from typing import Any + +import aiohttp +from aiohttp import ClientSession +from ukrainealarm.client import Client + +from homeassistant.config_entries import ConfigEntry +from homeassistant.const import CONF_API_KEY, CONF_REGION +from homeassistant.core import HomeAssistant +from homeassistant.helpers.aiohttp_client import async_get_clientsession +from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed + +from .const import ALERT_TYPES, DOMAIN, PLATFORMS + +_LOGGER = logging.getLogger(__name__) + +UPDATE_INTERVAL = timedelta(seconds=10) + + +async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: + """Set up Ukraine Alarm as config entry.""" + api_key = entry.data[CONF_API_KEY] + region_id = entry.data[CONF_REGION] + + websession = async_get_clientsession(hass) + + coordinator = UkraineAlarmDataUpdateCoordinator( + hass, websession, api_key, region_id + ) + await coordinator.async_config_entry_first_refresh() + + hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator + + hass.config_entries.async_setup_platforms(entry, PLATFORMS) + + return True + + +async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: + """Unload a config entry.""" + if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS): + hass.data[DOMAIN].pop(entry.entry_id) + + return unload_ok + + +class UkraineAlarmDataUpdateCoordinator(DataUpdateCoordinator[dict[str, Any]]): + """Class to manage fetching Ukraine Alarm API.""" + + def __init__( + self, + hass: HomeAssistant, + session: ClientSession, + api_key: str, + region_id: str, + ) -> None: + """Initialize.""" + self.region_id = region_id + self.ukrainealarm = Client(session, api_key) + + super().__init__(hass, _LOGGER, name=DOMAIN, update_interval=UPDATE_INTERVAL) + + async def _async_update_data(self) -> dict[str, Any]: + """Update data via library.""" + try: + res = await self.ukrainealarm.get_alerts(self.region_id) + except aiohttp.ClientError as error: + raise UpdateFailed(f"Error fetching alerts from API: {error}") from error + + current = {alert_type: False for alert_type in ALERT_TYPES} + for alert in res[0]["activeAlerts"]: + current[alert["type"]] = True + + return current diff --git a/homeassistant/components/ukraine_alarm/binary_sensor.py b/homeassistant/components/ukraine_alarm/binary_sensor.py new file mode 100644 index 00000000000..b98add95e03 --- /dev/null +++ b/homeassistant/components/ukraine_alarm/binary_sensor.py @@ -0,0 +1,106 @@ +"""binary sensors for Ukraine Alarm integration.""" +from __future__ import annotations + +from homeassistant.components.binary_sensor import ( + BinarySensorDeviceClass, + BinarySensorEntity, + BinarySensorEntityDescription, +) +from homeassistant.config_entries import ConfigEntry +from homeassistant.const import CONF_NAME +from homeassistant.core import HomeAssistant +from homeassistant.helpers.device_registry import DeviceEntryType +from homeassistant.helpers.entity import DeviceInfo +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.update_coordinator import CoordinatorEntity + +from . import UkraineAlarmDataUpdateCoordinator +from .const import ( + ALERT_TYPE_AIR, + ALERT_TYPE_ARTILLERY, + ALERT_TYPE_UNKNOWN, + ALERT_TYPE_URBAN_FIGHTS, + ATTRIBUTION, + DOMAIN, + MANUFACTURER, +) + +BINARY_SENSOR_TYPES: tuple[BinarySensorEntityDescription, ...] = ( + BinarySensorEntityDescription( + key=ALERT_TYPE_UNKNOWN, + name="Unknown", + device_class=BinarySensorDeviceClass.SAFETY, + ), + BinarySensorEntityDescription( + key=ALERT_TYPE_AIR, + name="Air", + device_class=BinarySensorDeviceClass.SAFETY, + icon="mdi:cloud", + ), + BinarySensorEntityDescription( + key=ALERT_TYPE_URBAN_FIGHTS, + name="Urban Fights", + device_class=BinarySensorDeviceClass.SAFETY, + icon="mdi:pistol", + ), + BinarySensorEntityDescription( + key=ALERT_TYPE_ARTILLERY, + name="Artillery", + device_class=BinarySensorDeviceClass.SAFETY, + icon="mdi:tank", + ), +) + + +async def async_setup_entry( + hass: HomeAssistant, + config_entry: ConfigEntry, + async_add_entities: AddEntitiesCallback, +) -> None: + """Set up Ukraine Alarm binary sensor entities based on a config entry.""" + name = config_entry.data[CONF_NAME] + coordinator = hass.data[DOMAIN][config_entry.entry_id] + + async_add_entities( + UkraineAlarmSensor( + name, + config_entry.unique_id, + description, + coordinator, + ) + for description in BINARY_SENSOR_TYPES + ) + + +class UkraineAlarmSensor( + CoordinatorEntity[UkraineAlarmDataUpdateCoordinator], BinarySensorEntity +): + """Class for a Ukraine Alarm binary sensor.""" + + _attr_attribution = ATTRIBUTION + + def __init__( + self, + name, + unique_id, + description: BinarySensorEntityDescription, + coordinator: UkraineAlarmDataUpdateCoordinator, + ) -> None: + """Initialize the sensor.""" + super().__init__(coordinator) + + self.entity_description = description + + self._attr_name = f"{name} {description.name}" + self._attr_unique_id = f"{unique_id}-{description.key}".lower() + self._attr_device_info = DeviceInfo( + entry_type=DeviceEntryType.SERVICE, + identifiers={(DOMAIN, unique_id)}, + manufacturer=MANUFACTURER, + name=name, + ) + + @property + def is_on(self) -> bool | None: + """Return true if the binary sensor is on.""" + return self.coordinator.data.get(self.entity_description.key, None) diff --git a/homeassistant/components/ukraine_alarm/config_flow.py b/homeassistant/components/ukraine_alarm/config_flow.py new file mode 100644 index 00000000000..dcf41658dfb --- /dev/null +++ b/homeassistant/components/ukraine_alarm/config_flow.py @@ -0,0 +1,154 @@ +"""Config flow for Ukraine Alarm.""" +from __future__ import annotations + +import asyncio + +import aiohttp +from ukrainealarm.client import Client +import voluptuous as vol + +from homeassistant import config_entries +from homeassistant.const import CONF_API_KEY, CONF_NAME, CONF_REGION +from homeassistant.helpers.aiohttp_client import async_get_clientsession + +from .const import DOMAIN + + +class UkraineAlarmConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): + """Config flow for Ukraine Alarm.""" + + VERSION = 1 + + def __init__(self): + """Initialize a new UkraineAlarmConfigFlow.""" + self.api_key = None + self.states = None + self.selected_region = None + + async def async_step_user(self, user_input=None): + """Handle a flow initialized by the user.""" + errors = {} + + if user_input is not None: + websession = async_get_clientsession(self.hass) + try: + regions = await Client( + websession, user_input[CONF_API_KEY] + ).get_regions() + except aiohttp.ClientResponseError as ex: + errors["base"] = "invalid_api_key" if ex.status == 401 else "unknown" + except aiohttp.ClientConnectionError: + errors["base"] = "cannot_connect" + except aiohttp.ClientError: + errors["base"] = "unknown" + except asyncio.TimeoutError: + errors["base"] = "timeout" + + if not errors and not regions: + errors["base"] = "unknown" + + if not errors: + self.api_key = user_input[CONF_API_KEY] + self.states = regions["states"] + return await self.async_step_state() + + schema = vol.Schema( + { + vol.Required(CONF_API_KEY): str, + } + ) + + return self.async_show_form( + step_id="user", + data_schema=schema, + description_placeholders={"api_url": "https://api.ukrainealarm.com/"}, + errors=errors, + last_step=False, + ) + + async def async_step_state(self, user_input=None): + """Handle user-chosen state.""" + return await self._handle_pick_region("state", "district", user_input) + + async def async_step_district(self, user_input=None): + """Handle user-chosen district.""" + return await self._handle_pick_region("district", "community", user_input) + + async def async_step_community(self, user_input=None): + """Handle user-chosen community.""" + return await self._handle_pick_region("community", None, user_input, True) + + async def _handle_pick_region( + self, step_id: str, next_step: str | None, user_input, last_step=False + ): + """Handle picking a (sub)region.""" + if self.selected_region: + source = self.selected_region["regionChildIds"] + else: + source = self.states + + if user_input is not None: + # Only offer to browse subchildren if picked region wasn't the previously picked one + if ( + not self.selected_region + or user_input[CONF_REGION] != self.selected_region["regionId"] + ): + self.selected_region = _find(source, user_input[CONF_REGION]) + + if next_step and self.selected_region["regionChildIds"]: + return await getattr(self, f"async_step_{next_step}")() + + return await self._async_finish_flow() + + regions = {} + if self.selected_region: + regions[self.selected_region["regionId"]] = self.selected_region[ + "regionName" + ] + + regions.update(_make_regions_object(source)) + + schema = vol.Schema( + { + vol.Required(CONF_REGION): vol.In(regions), + } + ) + + return self.async_show_form( + step_id=step_id, data_schema=schema, last_step=last_step + ) + + async def _async_finish_flow(self): + """Finish the setup.""" + await self.async_set_unique_id(self.selected_region["regionId"]) + self._abort_if_unique_id_configured() + + return self.async_create_entry( + title=self.selected_region["regionName"], + data={ + CONF_API_KEY: self.api_key, + CONF_REGION: self.selected_region["regionId"], + CONF_NAME: self.selected_region["regionName"], + }, + ) + + +def _find(regions, region_id): + return next((region for region in regions if region["regionId"] == region_id), None) + + +def _make_regions_object(regions): + regions_list = [] + for region in regions: + regions_list.append( + { + "id": region["regionId"], + "name": region["regionName"], + } + ) + regions_list = sorted(regions_list, key=lambda region: region["name"].lower()) + regions_object = {} + for region in regions_list: + regions_object[region["id"]] = region["name"] + + return regions_object diff --git a/homeassistant/components/ukraine_alarm/const.py b/homeassistant/components/ukraine_alarm/const.py new file mode 100644 index 00000000000..cc1ae352967 --- /dev/null +++ b/homeassistant/components/ukraine_alarm/const.py @@ -0,0 +1,19 @@ +"""Consts for the Ukraine Alarm.""" +from __future__ import annotations + +from homeassistant.const import Platform + +DOMAIN = "ukraine_alarm" +ATTRIBUTION = "Data provided by Ukraine Alarm" +MANUFACTURER = "Ukraine Alarm" +ALERT_TYPE_UNKNOWN = "UNKNOWN" +ALERT_TYPE_AIR = "AIR" +ALERT_TYPE_ARTILLERY = "ARTILLERY" +ALERT_TYPE_URBAN_FIGHTS = "URBAN_FIGHTS" +ALERT_TYPES = { + ALERT_TYPE_UNKNOWN, + ALERT_TYPE_AIR, + ALERT_TYPE_ARTILLERY, + ALERT_TYPE_URBAN_FIGHTS, +} +PLATFORMS = [Platform.BINARY_SENSOR] diff --git a/homeassistant/components/ukraine_alarm/manifest.json b/homeassistant/components/ukraine_alarm/manifest.json new file mode 100644 index 00000000000..08dad9960b5 --- /dev/null +++ b/homeassistant/components/ukraine_alarm/manifest.json @@ -0,0 +1,9 @@ +{ + "domain": "ukraine_alarm", + "name": "Ukraine Alarm", + "config_flow": true, + "documentation": "https://www.home-assistant.io/integrations/ukraine_alarm", + "requirements": ["ukrainealarm==0.0.1"], + "codeowners": ["@PaulAnnekov"], + "iot_class": "cloud_polling" +} diff --git a/homeassistant/components/ukraine_alarm/strings.json b/homeassistant/components/ukraine_alarm/strings.json new file mode 100644 index 00000000000..79f81e71b08 --- /dev/null +++ b/homeassistant/components/ukraine_alarm/strings.json @@ -0,0 +1,39 @@ +{ + "config": { + "abort": { + "already_configured": "[%key:common::config_flow::abort::already_configured_location%]" + }, + "error": { + "invalid_api_key": "[%key:common::config_flow::error::invalid_api_key%]", + "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]", + "unknown": "[%key:common::config_flow::error::unknown%]", + "timeout": "[%key:common::config_flow::error::timeout_connect%]" + }, + "step": { + "user": { + "data": { + "api_key": "[%key:common::config_flow::data::api_key%]" + }, + "description": "Set up the Ukraine Alarm integration. To generate an API key go to {api_url}" + }, + "state": { + "data": { + "region": "Region" + }, + "description": "Choose state to monitor" + }, + "district": { + "data": { + "region": "[%key:component::ukraine_alarm::config::step::state::data::region%]" + }, + "description": "If you want to monitor not only state, choose its specific district" + }, + "community": { + "data": { + "region": "[%key:component::ukraine_alarm::config::step::state::data::region%]" + }, + "description": "If you want to monitor not only state and district, choose its specific community" + } + } + } +} diff --git a/homeassistant/components/ukraine_alarm/translations/en.json b/homeassistant/components/ukraine_alarm/translations/en.json new file mode 100644 index 00000000000..2c39945cb87 --- /dev/null +++ b/homeassistant/components/ukraine_alarm/translations/en.json @@ -0,0 +1,28 @@ +{ + "config": { + "step": { + "user": { + "description": "Set up the Ukraine Alarm integration. To generate an API key go to {api_url}", + "title": "Ukraine Alarm" + }, + "state": { + "data": { + "region": "Region" + }, + "description": "Choose state to monitor" + }, + "district": { + "data": { + "region": "Region" + }, + "description": "If you want to monitor not only state, choose its specific district" + }, + "community": { + "data": { + "region": "Region" + }, + "description": "If you want to monitor not only state and district, choose its specific community" + } + } + } +} diff --git a/homeassistant/components/ukraine_alarm/translations/ru.json b/homeassistant/components/ukraine_alarm/translations/ru.json new file mode 100644 index 00000000000..89c9eb1670a --- /dev/null +++ b/homeassistant/components/ukraine_alarm/translations/ru.json @@ -0,0 +1,28 @@ +{ + "config": { + "step": { + "user": { + "description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Home Assistant \u0434\u043b\u044f\u0020\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438\u0020\u0441 Ukraine Alarm. \u0414\u043b\u044f\u0020\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f\u0020\u043a\u043b\u044e\u0447\u0430 API, \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435\u0020\u043d\u0430 {api_url}.", + "title": "Ukraine Alarm" + }, + "state": { + "data": { + "region": "\u0420\u0435\u0433\u0438\u043e\u043d" + }, + "description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435\u0020\u043e\u0431\u043b\u0430\u0441\u0442\u044c\u0020\u0434\u043b\u044f\u0020\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430" + }, + "district": { + "data": { + "region": "\u0420\u0435\u0433\u0438\u043e\u043d" + }, + "description": "\u0415\u0441\u043b\u0438\u0020\u0432\u044b\u0020\u0436\u0435\u043b\u0430\u0435\u0442\u0435\u0020\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u0442\u044c\u0020\u043d\u0435\u0020\u0442\u043e\u043b\u044c\u043a\u043e\u0020\u043e\u0431\u043b\u0430\u0441\u0442\u044c\u002c\u0020\u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435\u0020\u0435\u0451\u0020\u0440\u0430\u0439\u043e\u043d" + }, + "community": { + "data": { + "region": "\u0420\u0435\u0433\u0438\u043e\u043d" + }, + "description": "\u0415\u0441\u043b\u0438\u0020\u0432\u044b\u0020\u0436\u0435\u043b\u0430\u0435\u0442\u0435\u0020\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u0442\u044c\u0020\u043d\u0435\u0020\u0442\u043e\u043b\u044c\u043a\u043e\u0020\u043e\u0431\u043b\u0430\u0441\u0442\u044c\u0020\u0438\u0020\u0440\u0430\u0439\u043e\u043d\u002c\u0020\u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435\u0020\u0435\u0451\u0020\u0433\u0440\u043e\u043c\u0430\u0434\u0443" + } + } + } +} diff --git a/homeassistant/components/ukraine_alarm/translations/uk.json b/homeassistant/components/ukraine_alarm/translations/uk.json new file mode 100644 index 00000000000..2eed983f34f --- /dev/null +++ b/homeassistant/components/ukraine_alarm/translations/uk.json @@ -0,0 +1,28 @@ +{ + "config": { + "step": { + "user": { + "description": "\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0439\u0442\u0435 Home Assistant \u0434\u043b\u044f\u0020\u0456\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0456\u0457\u0020\u0437 Ukraine Alarm. \u0414\u043b\u044f\u0020\u043e\u0442\u0440\u0438\u043c\u0430\u043d\u043d\u044f\u0020\u043a\u043b\u044e\u0447\u0430 API, \u043f\u0435\u0440\u0435\u0439\u0434\u0456\u0442\u044c\u0020\u043d\u0430 {api_url}.", + "title": "Ukraine Alarm" + }, + "state": { + "data": { + "region": "\u0420\u0435\u0433\u0456\u043e\u043d" + }, + "description": "\u041e\u0431\u0435\u0440\u0456\u0442\u044c\u0020\u043e\u0431\u043b\u0430\u0441\u0442\u044c\u0020\u0434\u043b\u044f\u0020\u043c\u043e\u043d\u0456\u0442\u043e\u0440\u0438\u043d\u0433\u0443" + }, + "district": { + "data": { + "region": "\u0420\u0435\u0433\u0456\u043e\u043d" + }, + "description": "\u042f\u043a\u0449\u043e\u0020\u0432\u0438\u0020\u0431\u0430\u0436\u0430\u0454\u0442\u0435\u0020\u043c\u043e\u043d\u0456\u0442\u043e\u0440\u0438\u0442\u0438\u0020\u043d\u0435\u0020\u043b\u0438\u0448\u0435\u0020\u043e\u0431\u043b\u0430\u0441\u0442\u044c\u002c\u0020\u043e\u0431\u0435\u0440\u0456\u0442\u044c\u0020\u0457\u0457\u0020\u0440\u0430\u0439\u043e\u043d" + }, + "community": { + "data": { + "region": "\u0420\u0435\u0433\u0456\u043e\u043d" + }, + "description": "\u042f\u043a\u0449\u043e\u0020\u0432\u0438\u0020\u0431\u0430\u0436\u0430\u0454\u0442\u0435\u0020\u043c\u043e\u043d\u0456\u0442\u043e\u0440\u0438\u0442\u0438\u0020\u043d\u0435\u0020\u0442\u0456\u043b\u044c\u043a\u0438\u0020\u043e\u0431\u043b\u0430\u0441\u0442\u044c\u0020\u0442\u0430\u0020\u0440\u0430\u0439\u043e\u043d\u002c\u0020\u043e\u0431\u0435\u0440\u0456\u0442\u044c\u0020\u0457\u0457\u0020\u0433\u0440\u043e\u043c\u0430\u0434\u0443" + } + } + } +} diff --git a/homeassistant/generated/config_flows.py b/homeassistant/generated/config_flows.py index 710d97f3c34..510adc74e61 100644 --- a/homeassistant/generated/config_flows.py +++ b/homeassistant/generated/config_flows.py @@ -366,6 +366,7 @@ FLOWS = { "twentemilieu", "twilio", "twinkly", + "ukraine_alarm", "unifi", "unifiprotect", "upb", diff --git a/requirements_all.txt b/requirements_all.txt index fd1224ee1c8..783c475e7e3 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2342,6 +2342,9 @@ twitchAPI==2.5.2 # homeassistant.components.rainforest_eagle uEagle==0.0.2 +# homeassistant.components.ukraine_alarm +ukrainealarm==0.0.1 + # homeassistant.components.unifiprotect unifi-discovery==1.1.2 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 9a7f419419c..c8ad86f64dc 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1524,6 +1524,9 @@ twitchAPI==2.5.2 # homeassistant.components.rainforest_eagle uEagle==0.0.2 +# homeassistant.components.ukraine_alarm +ukrainealarm==0.0.1 + # homeassistant.components.unifiprotect unifi-discovery==1.1.2 diff --git a/tests/components/ukraine_alarm/__init__.py b/tests/components/ukraine_alarm/__init__.py new file mode 100644 index 00000000000..228594b3d0c --- /dev/null +++ b/tests/components/ukraine_alarm/__init__.py @@ -0,0 +1 @@ +"""Tests for the Ukraine Alarm integration.""" diff --git a/tests/components/ukraine_alarm/test_config_flow.py b/tests/components/ukraine_alarm/test_config_flow.py new file mode 100644 index 00000000000..3832e6a9fb6 --- /dev/null +++ b/tests/components/ukraine_alarm/test_config_flow.py @@ -0,0 +1,354 @@ +"""Test the Ukraine Alarm config flow.""" +import asyncio +from collections.abc import Generator +from unittest.mock import AsyncMock, patch + +from aiohttp import ClientConnectionError, ClientError, ClientResponseError +import pytest + +from homeassistant import config_entries +from homeassistant.components.ukraine_alarm.const import DOMAIN +from homeassistant.core import HomeAssistant +from homeassistant.data_entry_flow import RESULT_TYPE_CREATE_ENTRY, RESULT_TYPE_FORM + +MOCK_API_KEY = "mock-api-key" + + +def _region(rid, recurse=0, depth=0): + if depth == 0: + name_prefix = "State" + elif depth == 1: + name_prefix = "District" + else: + name_prefix = "Community" + + name = f"{name_prefix} {rid}" + region = {"regionId": rid, "regionName": name, "regionChildIds": []} + + if not recurse: + return region + + for i in range(1, 4): + region["regionChildIds"].append(_region(f"{rid}.{i}", recurse - 1, depth + 1)) + + return region + + +REGIONS = { + "states": [_region(f"{i}", i - 1) for i in range(1, 4)], +} + + +@pytest.fixture(autouse=True) +def mock_get_regions() -> Generator[None, AsyncMock, None]: + """Mock the get_regions method.""" + + with patch( + "homeassistant.components.ukraine_alarm.config_flow.Client.get_regions", + return_value=REGIONS, + ) as mock_get: + yield mock_get + + +async def test_state(hass: HomeAssistant) -> None: + """Test we can create entry for state.""" + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": config_entries.SOURCE_USER} + ) + assert result["type"] == RESULT_TYPE_FORM + + result2 = await hass.config_entries.flow.async_configure( + result["flow_id"], + { + "api_key": MOCK_API_KEY, + }, + ) + assert result2["type"] == RESULT_TYPE_FORM + + with patch( + "homeassistant.components.ukraine_alarm.async_setup_entry", + return_value=True, + ) as mock_setup_entry: + result3 = await hass.config_entries.flow.async_configure( + result["flow_id"], + { + "region": "1", + }, + ) + await hass.async_block_till_done() + + assert result3["type"] == RESULT_TYPE_CREATE_ENTRY + assert result3["title"] == "State 1" + assert result3["data"] == { + "api_key": MOCK_API_KEY, + "region": "1", + "name": result3["title"], + } + assert len(mock_setup_entry.mock_calls) == 1 + + +async def test_state_district(hass: HomeAssistant) -> None: + """Test we can create entry for state + district.""" + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": config_entries.SOURCE_USER} + ) + assert result["type"] == RESULT_TYPE_FORM + + result2 = await hass.config_entries.flow.async_configure( + result["flow_id"], + { + "api_key": MOCK_API_KEY, + }, + ) + assert result2["type"] == RESULT_TYPE_FORM + + result3 = await hass.config_entries.flow.async_configure( + result["flow_id"], + { + "region": "2", + }, + ) + assert result3["type"] == RESULT_TYPE_FORM + + with patch( + "homeassistant.components.ukraine_alarm.async_setup_entry", + return_value=True, + ) as mock_setup_entry: + result4 = await hass.config_entries.flow.async_configure( + result["flow_id"], + { + "region": "2.2", + }, + ) + await hass.async_block_till_done() + + assert result4["type"] == RESULT_TYPE_CREATE_ENTRY + assert result4["title"] == "District 2.2" + assert result4["data"] == { + "api_key": MOCK_API_KEY, + "region": "2.2", + "name": result4["title"], + } + assert len(mock_setup_entry.mock_calls) == 1 + + +async def test_state_district_pick_region(hass: HomeAssistant) -> None: + """Test we can create entry for region which has districts.""" + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": config_entries.SOURCE_USER} + ) + assert result["type"] == RESULT_TYPE_FORM + + result2 = await hass.config_entries.flow.async_configure( + result["flow_id"], + { + "api_key": MOCK_API_KEY, + }, + ) + assert result2["type"] == RESULT_TYPE_FORM + + result3 = await hass.config_entries.flow.async_configure( + result["flow_id"], + { + "region": "2", + }, + ) + assert result3["type"] == RESULT_TYPE_FORM + + with patch( + "homeassistant.components.ukraine_alarm.async_setup_entry", + return_value=True, + ) as mock_setup_entry: + result4 = await hass.config_entries.flow.async_configure( + result["flow_id"], + { + "region": "2", + }, + ) + await hass.async_block_till_done() + + assert result4["type"] == RESULT_TYPE_CREATE_ENTRY + assert result4["title"] == "State 2" + assert result4["data"] == { + "api_key": MOCK_API_KEY, + "region": "2", + "name": result4["title"], + } + assert len(mock_setup_entry.mock_calls) == 1 + + +async def test_state_district_community(hass: HomeAssistant) -> None: + """Test we can create entry for state + district + community.""" + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": config_entries.SOURCE_USER} + ) + assert result["type"] == RESULT_TYPE_FORM + + result2 = await hass.config_entries.flow.async_configure( + result["flow_id"], + { + "api_key": MOCK_API_KEY, + }, + ) + assert result2["type"] == RESULT_TYPE_FORM + + result3 = await hass.config_entries.flow.async_configure( + result["flow_id"], + { + "region": "3", + }, + ) + assert result3["type"] == RESULT_TYPE_FORM + + result4 = await hass.config_entries.flow.async_configure( + result["flow_id"], + { + "region": "3.2", + }, + ) + assert result4["type"] == RESULT_TYPE_FORM + + with patch( + "homeassistant.components.ukraine_alarm.async_setup_entry", + return_value=True, + ) as mock_setup_entry: + result5 = await hass.config_entries.flow.async_configure( + result["flow_id"], + { + "region": "3.2.1", + }, + ) + await hass.async_block_till_done() + + assert result5["type"] == RESULT_TYPE_CREATE_ENTRY + assert result5["title"] == "Community 3.2.1" + assert result5["data"] == { + "api_key": MOCK_API_KEY, + "region": "3.2.1", + "name": result5["title"], + } + assert len(mock_setup_entry.mock_calls) == 1 + + +async def test_invalid_api(hass: HomeAssistant, mock_get_regions: AsyncMock) -> None: + """Test we can create entry for just region.""" + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": config_entries.SOURCE_USER} + ) + assert result["type"] == RESULT_TYPE_FORM + + mock_get_regions.side_effect = ClientResponseError(None, None, status=401) + + result2 = await hass.config_entries.flow.async_configure( + result["flow_id"], + { + "api_key": MOCK_API_KEY, + }, + ) + assert result2["type"] == RESULT_TYPE_FORM + assert result2["step_id"] == "user" + assert result2["errors"] == {"base": "invalid_api_key"} + + +async def test_server_error(hass: HomeAssistant, mock_get_regions) -> None: + """Test we can create entry for just region.""" + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": config_entries.SOURCE_USER} + ) + assert result["type"] == RESULT_TYPE_FORM + + mock_get_regions.side_effect = ClientResponseError(None, None, status=500) + + result2 = await hass.config_entries.flow.async_configure( + result["flow_id"], + { + "api_key": MOCK_API_KEY, + }, + ) + assert result2["type"] == RESULT_TYPE_FORM + assert result2["step_id"] == "user" + assert result2["errors"] == {"base": "unknown"} + + +async def test_cannot_connect(hass: HomeAssistant, mock_get_regions: AsyncMock) -> None: + """Test we can create entry for just region.""" + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": config_entries.SOURCE_USER} + ) + assert result["type"] == RESULT_TYPE_FORM + + mock_get_regions.side_effect = ClientConnectionError + + result2 = await hass.config_entries.flow.async_configure( + result["flow_id"], + { + "api_key": MOCK_API_KEY, + }, + ) + assert result2["type"] == RESULT_TYPE_FORM + assert result2["step_id"] == "user" + assert result2["errors"] == {"base": "cannot_connect"} + + +async def test_unknown_client_error( + hass: HomeAssistant, mock_get_regions: AsyncMock +) -> None: + """Test we can create entry for just region.""" + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": config_entries.SOURCE_USER} + ) + assert result["type"] == RESULT_TYPE_FORM + + mock_get_regions.side_effect = ClientError + + result2 = await hass.config_entries.flow.async_configure( + result["flow_id"], + { + "api_key": MOCK_API_KEY, + }, + ) + assert result2["type"] == RESULT_TYPE_FORM + assert result2["step_id"] == "user" + assert result2["errors"] == {"base": "unknown"} + + +async def test_timeout_error(hass: HomeAssistant, mock_get_regions: AsyncMock) -> None: + """Test we can create entry for just region.""" + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": config_entries.SOURCE_USER} + ) + assert result["type"] == RESULT_TYPE_FORM + + mock_get_regions.side_effect = asyncio.TimeoutError + + result2 = await hass.config_entries.flow.async_configure( + result["flow_id"], + { + "api_key": MOCK_API_KEY, + }, + ) + assert result2["type"] == RESULT_TYPE_FORM + assert result2["step_id"] == "user" + assert result2["errors"] == {"base": "timeout"} + + +async def test_no_regions_returned( + hass: HomeAssistant, mock_get_regions: AsyncMock +) -> None: + """Test we can create entry for just region.""" + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": config_entries.SOURCE_USER} + ) + assert result["type"] == RESULT_TYPE_FORM + + mock_get_regions.return_value = {} + + result2 = await hass.config_entries.flow.async_configure( + result["flow_id"], + { + "api_key": MOCK_API_KEY, + }, + ) + assert result2["type"] == RESULT_TYPE_FORM + assert result2["step_id"] == "user" + assert result2["errors"] == {"base": "unknown"} From 3ee32e22c153fe4545b2ff5e61cfd3417e5b008d Mon Sep 17 00:00:00 2001 From: Shai Ungar Date: Sat, 7 May 2022 23:16:51 +0300 Subject: [PATCH 148/151] fix speed sensor wrong number (#71502) --- homeassistant/components/sabnzbd/sensor.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/sabnzbd/sensor.py b/homeassistant/components/sabnzbd/sensor.py index dee80945e9d..539eaa4f097 100644 --- a/homeassistant/components/sabnzbd/sensor.py +++ b/homeassistant/components/sabnzbd/sensor.py @@ -32,13 +32,15 @@ class SabnzbdSensorEntityDescription(SensorEntityDescription, SabnzbdRequiredKey """Describes Sabnzbd sensor entity.""" +SPEED_KEY = "kbpersec" + SENSOR_TYPES: tuple[SabnzbdSensorEntityDescription, ...] = ( SabnzbdSensorEntityDescription( key="status", name="Status", ), SabnzbdSensorEntityDescription( - key="kbpersec", + key=SPEED_KEY, name="Speed", native_unit_of_measurement=DATA_RATE_MEGABYTES_PER_SECOND, state_class=SensorStateClass.MEASUREMENT, @@ -154,7 +156,7 @@ class SabnzbdSensor(SensorEntity): self.entity_description.key ) - if self.entity_description.key == "speed": + if self.entity_description.key == SPEED_KEY: self._attr_native_value = round(float(self._attr_native_value) / 1024, 1) elif "size" in self.entity_description.key: self._attr_native_value = round(float(self._attr_native_value), 2) From f88c643e1cd743814fb777918d2361557d0006ab Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 7 May 2022 20:57:57 -0700 Subject: [PATCH 149/151] Bump frontend to 20220504.1 (#71504) --- 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 b51219c4f19..8c475d51abb 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==20220504.0"], + "requirements": ["home-assistant-frontend==20220504.1"], "dependencies": [ "api", "auth", diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index 0a2846a44ad..43c0d2ad4c4 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -15,7 +15,7 @@ ciso8601==2.2.0 cryptography==36.0.2 fnvhash==0.1.0 hass-nabucasa==0.54.0 -home-assistant-frontend==20220504.0 +home-assistant-frontend==20220504.1 httpx==0.22.0 ifaddr==0.1.7 jinja2==3.1.1 diff --git a/requirements_all.txt b/requirements_all.txt index 783c475e7e3..15ce8f1c8ce 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -819,7 +819,7 @@ hole==0.7.0 holidays==0.13 # homeassistant.components.frontend -home-assistant-frontend==20220504.0 +home-assistant-frontend==20220504.1 # homeassistant.components.home_connect homeconnect==0.7.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index c8ad86f64dc..eeb9f18fbfa 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -580,7 +580,7 @@ hole==0.7.0 holidays==0.13 # homeassistant.components.frontend -home-assistant-frontend==20220504.0 +home-assistant-frontend==20220504.1 # homeassistant.components.home_connect homeconnect==0.7.0 From d477546e7602598d5de5302fe0e0a7c12b28e750 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 7 May 2022 20:57:48 -0700 Subject: [PATCH 150/151] Fix other enums in helpers (#71505) --- homeassistant/helpers/selector.py | 8 ++++++-- tests/helpers/test_selector.py | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/homeassistant/helpers/selector.py b/homeassistant/helpers/selector.py index 1ae0082c06f..87574949f4e 100644 --- a/homeassistant/helpers/selector.py +++ b/homeassistant/helpers/selector.py @@ -704,7 +704,9 @@ class SelectSelector(Selector): vol.Required("options"): vol.All(vol.Any([str], [select_option])), vol.Optional("multiple", default=False): cv.boolean, vol.Optional("custom_value", default=False): cv.boolean, - vol.Optional("mode"): vol.Coerce(SelectSelectorMode), + vol.Optional("mode"): vol.All( + vol.Coerce(SelectSelectorMode), lambda val: val.value + ), } ) @@ -827,7 +829,9 @@ class TextSelector(Selector): vol.Optional("suffix"): str, # The "type" controls the input field in the browser, the resulting # data can be any string so we don't validate it. - vol.Optional("type"): vol.Coerce(TextSelectorType), + vol.Optional("type"): vol.All( + vol.Coerce(TextSelectorType), lambda val: val.value + ), } ) diff --git a/tests/helpers/test_selector.py b/tests/helpers/test_selector.py index ed831026065..4cb924a520e 100644 --- a/tests/helpers/test_selector.py +++ b/tests/helpers/test_selector.py @@ -351,7 +351,7 @@ def test_object_selector_schema(schema, valid_selections, invalid_selections): ( ({}, ("abc123",), (None,)), ({"multiline": True}, (), ()), - ({"multiline": False}, (), ()), + ({"multiline": False, "type": "email"}, (), ()), ), ) def test_text_selector_schema(schema, valid_selections, invalid_selections): @@ -402,7 +402,7 @@ def test_text_selector_schema(schema, valid_selections, invalid_selections): (0, None, ["red"]), ), ( - {"options": [], "custom_value": True, "multiple": True}, + {"options": [], "custom_value": True, "multiple": True, "mode": "list"}, (["red"], ["green", "blue"], []), (0, None, "red"), ), From 534eef0b766e500aa3c683804291500bbe00137d Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 8 May 2022 08:23:26 -0700 Subject: [PATCH 151/151] Bumped version to 2022.5.3 --- homeassistant/const.py | 2 +- setup.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 5aed0cdaae9..569c121f909 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -7,7 +7,7 @@ from .backports.enum import StrEnum MAJOR_VERSION: Final = 2022 MINOR_VERSION: Final = 5 -PATCH_VERSION: Final = "2" +PATCH_VERSION: Final = "3" __short_version__: Final = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__: Final = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER: Final[tuple[int, int, int]] = (3, 9, 0) diff --git a/setup.cfg b/setup.cfg index 6d41c8526db..2ec80dd2855 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = homeassistant -version = 2022.5.2 +version = 2022.5.3 author = The Home Assistant Authors author_email = hello@home-assistant.io license = Apache-2.0