From f05288b5976d76730ff4ef32cc4d063c07833001 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 11 Jun 2020 10:15:19 -0700 Subject: [PATCH 01/34] Update translations --- .../components/abode/translations/lb.json | 2 +- .../components/acmeda/translations/de.json | 3 +- .../components/acmeda/translations/fr.json | 6 +- .../components/adguard/translations/pt.json | 1 + .../components/agent_dvr/translations/pt.json | 11 ++++ .../components/airly/translations/de.json | 2 +- .../components/airly/translations/lb.json | 2 +- .../components/airly/translations/pt.json | 1 + .../components/airvisual/translations/de.json | 2 +- .../components/airvisual/translations/lb.json | 4 +- .../ambiclimate/translations/lb.json | 2 +- .../ambient_station/translations/de.json | 2 +- .../components/arcam_fmj/translations/ca.json | 20 +++++++ .../components/arcam_fmj/translations/de.json | 14 +++++ .../components/arcam_fmj/translations/en.json | 20 +++++++ .../components/arcam_fmj/translations/es.json | 20 +++++++ .../components/arcam_fmj/translations/fr.json | 6 +- .../components/arcam_fmj/translations/it.json | 24 ++++++++ .../components/arcam_fmj/translations/ko.json | 20 +++++++ .../components/arcam_fmj/translations/lb.json | 20 +++++++ .../components/arcam_fmj/translations/no.json | 16 +++++ .../components/arcam_fmj/translations/pt.json | 12 ++++ .../components/arcam_fmj/translations/ru.json | 20 +++++++ .../arcam_fmj/translations/zh-Hant.json | 20 +++++++ .../components/atag/translations/de.json | 2 +- .../components/atag/translations/fr.json | 3 +- .../components/atag/translations/ko.json | 2 +- .../components/atag/translations/lb.json | 4 +- .../components/atag/translations/pt.json | 11 ++++ .../components/avri/translations/ca.json | 24 ++++++++ .../components/avri/translations/de.json | 18 ++++++ .../components/avri/translations/en.json | 24 ++++++++ .../components/avri/translations/es.json | 24 ++++++++ .../components/avri/translations/fr.json | 20 +++++++ .../components/avri/translations/it.json | 24 ++++++++ .../components/avri/translations/ko.json | 24 ++++++++ .../components/avri/translations/lb.json | 22 +++++++ .../components/avri/translations/no.json | 24 ++++++++ .../components/avri/translations/ru.json | 24 ++++++++ .../components/avri/translations/zh-Hant.json | 24 ++++++++ .../components/axis/translations/fr.json | 10 ++++ .../components/axis/translations/it.json | 10 ++++ .../components/axis/translations/ko.json | 10 ++++ .../components/axis/translations/lb.json | 10 ++++ .../components/axis/translations/pl.json | 10 ++++ .../binary_sensor/translations/lb.json | 4 -- .../components/blebox/translations/pt.json | 11 ++++ .../components/blink/translations/ca.json | 9 +++ .../components/blink/translations/en.json | 11 ++++ .../components/blink/translations/es.json | 11 ++++ .../components/blink/translations/fr.json | 7 ++- .../components/blink/translations/it.json | 11 ++++ .../components/blink/translations/ko.json | 11 ++++ .../components/blink/translations/no.json | 11 ++++ .../components/blink/translations/ru.json | 11 ++++ .../blink/translations/zh-Hant.json | 11 ++++ .../components/braviatv/translations/de.json | 2 +- .../components/braviatv/translations/fr.json | 3 +- .../components/braviatv/translations/lb.json | 2 +- .../components/braviatv/translations/pt.json | 2 +- .../components/brother/translations/de.json | 2 +- .../components/brother/translations/lb.json | 2 +- .../components/brother/translations/pt.json | 1 + .../components/bsblan/translations/de.json | 3 +- .../components/bsblan/translations/fr.json | 1 + .../components/bsblan/translations/lb.json | 4 +- .../components/bsblan/translations/pt.json | 11 ++++ .../cert_expiry/translations/de.json | 4 +- .../cert_expiry/translations/lb.json | 4 +- .../cert_expiry/translations/pt.json | 14 +++++ .../components/climate/translations/pt.json | 5 ++ .../coolmaster/translations/pt.json | 11 ++++ .../components/cover/translations/pt.json | 8 +++ .../components/daikin/translations/de.json | 2 +- .../components/daikin/translations/lb.json | 6 +- .../components/demo/translations/lb.json | 6 -- .../devolo_home_control/translations/lb.json | 4 +- .../devolo_home_control/translations/no.json | 2 +- .../components/directv/translations/de.json | 6 +- .../components/directv/translations/lb.json | 10 +--- .../components/directv/translations/pt.json | 11 ++++ .../components/doorbird/translations/de.json | 2 +- .../components/doorbird/translations/lb.json | 4 +- .../components/doorbird/translations/pt.json | 1 + .../components/dunehd/translations/ca.json | 21 +++++++ .../components/dunehd/translations/de.json | 20 +++++++ .../components/dunehd/translations/en.json | 21 +++++++ .../components/dunehd/translations/es.json | 21 +++++++ .../components/dunehd/translations/fr.json | 21 +++++++ .../components/dunehd/translations/it.json | 21 +++++++ .../components/dunehd/translations/ko.json | 21 +++++++ .../components/dunehd/translations/lb.json | 21 +++++++ .../components/dunehd/translations/no.json | 13 +++++ .../components/dunehd/translations/pl.json | 21 +++++++ .../components/dunehd/translations/pt.json | 11 ++++ .../components/dunehd/translations/ru.json | 21 +++++++ .../dunehd/translations/zh-Hant.json | 21 +++++++ .../components/ecobee/translations/de.json | 2 +- .../components/elgato/translations/de.json | 4 +- .../components/elgato/translations/lb.json | 4 +- .../components/elkm1/translations/de.json | 4 +- .../components/elkm1/translations/lb.json | 4 +- .../flick_electric/translations/fr.json | 6 +- .../forked_daapd/translations/fr.json | 36 ++++++++++++ .../forked_daapd/translations/pt.json | 11 ++++ .../components/freebox/translations/pt.json | 15 +++++ .../components/fritzbox/translations/de.json | 2 +- .../components/fritzbox/translations/lb.json | 2 +- .../components/fritzbox/translations/pt.json | 1 + .../garmin_connect/translations/lb.json | 2 +- .../components/glances/translations/pt.json | 7 +++ .../components/gogogate2/translations/fr.json | 22 +++++++ .../components/group/translations/lb.json | 2 - .../components/guardian/translations/de.json | 16 +++++ .../components/guardian/translations/fr.json | 22 +++++++ .../components/hangouts/translations/lb.json | 2 +- .../components/hangouts/translations/pt.json | 2 +- .../components/harmony/translations/de.json | 2 +- .../components/harmony/translations/lb.json | 2 +- .../components/harmony/translations/pt.json | 11 ++++ .../components/homekit/translations/lb.json | 9 ++- .../homekit/translations/zh-Hans.json | 11 ++++ .../translations/zh-Hans.json | 4 +- .../translations/pt.json | 11 ++++ .../components/iaqualink/translations/de.json | 2 +- .../components/iaqualink/translations/lb.json | 2 +- .../components/ipma/translations/pt.json | 1 + .../components/ipp/translations/de.json | 8 +-- .../components/ipp/translations/fr.json | 3 +- .../components/ipp/translations/lb.json | 10 ++-- .../components/ipp/translations/pt.json | 7 +++ .../components/isy994/translations/de.json | 7 +++ .../components/isy994/translations/fr.json | 1 + .../components/konnected/translations/de.json | 4 +- .../components/konnected/translations/lb.json | 4 +- .../components/konnected/translations/pt.json | 11 ++++ .../components/linky/translations/de.json | 2 +- .../logi_circle/translations/lb.json | 2 +- .../components/melcloud/translations/de.json | 4 +- .../components/melcloud/translations/lb.json | 4 +- .../components/mikrotik/translations/pt.json | 1 + .../components/mill/translations/de.json | 18 ++++++ .../minecraft_server/translations/pt.json | 4 ++ .../components/monoprice/translations/de.json | 2 +- .../components/monoprice/translations/lb.json | 2 +- .../moon/translations/sensor.pt.json | 6 +- .../components/mqtt/translations/pt.json | 12 ++++ .../components/netatmo/translations/es.json | 2 +- .../components/netatmo/translations/lb.json | 4 +- .../components/notion/translations/de.json | 2 +- .../components/notion/translations/lb.json | 2 +- .../components/nws/translations/de.json | 2 +- .../components/nws/translations/lb.json | 2 +- .../components/onvif/translations/fr.json | 1 + .../components/onvif/translations/pt.json | 58 +++++++++++++++++++ .../components/openuv/translations/de.json | 5 +- .../components/openuv/translations/fr.json | 3 + .../components/openuv/translations/ko.json | 2 +- .../components/openuv/translations/lb.json | 2 +- .../components/owntracks/translations/ca.json | 2 +- .../components/owntracks/translations/en.json | 2 +- .../components/pi_hole/translations/pt.json | 11 ++++ .../components/plex/translations/de.json | 2 +- .../components/plex/translations/fr.json | 1 + .../components/plex/translations/lb.json | 6 +- .../components/plex/translations/pt.json | 5 ++ .../components/plugwise/translations/de.json | 18 ++++++ .../components/plugwise/translations/fr.json | 22 +++++++ .../components/plugwise/translations/it.json | 2 +- .../components/plugwise/translations/lb.json | 22 +++++++ .../components/plugwise/translations/ru.json | 2 +- .../components/point/translations/de.json | 2 +- .../components/point/translations/lb.json | 10 ++-- .../components/ps4/translations/pt.json | 1 + .../components/rachio/translations/de.json | 2 +- .../components/rachio/translations/lb.json | 2 +- .../components/roku/translations/de.json | 6 +- .../components/roku/translations/lb.json | 10 +--- .../components/roku/translations/pt.json | 11 ++++ .../components/roomba/translations/de.json | 2 +- .../components/roomba/translations/lb.json | 2 +- .../components/roomba/translations/pt.json | 2 +- .../components/samsungtv/translations/de.json | 2 +- .../components/samsungtv/translations/lb.json | 2 +- .../components/samsungtv/translations/pt.json | 1 + .../shopping_list/translations/pt.json | 14 +++++ .../simplisafe/translations/lb.json | 2 +- .../simplisafe/translations/pt.json | 2 +- .../components/solaredge/translations/de.json | 2 +- .../components/solaredge/translations/lb.json | 2 +- .../components/solarlog/translations/de.json | 2 +- .../components/solarlog/translations/lb.json | 2 +- .../components/solarlog/translations/pt.json | 11 ++++ .../components/sonarr/translations/de.json | 23 ++++++++ .../components/sonarr/translations/fr.json | 34 +++++++++++ .../components/sonarr/translations/it.json | 37 ++++++++++++ .../components/sonarr/translations/lb.json | 37 ++++++++++++ .../components/sonarr/translations/pt.json | 11 ++++ .../speedtestdotnet/translations/ca.json | 11 ++++ .../speedtestdotnet/translations/de.json | 19 ++++++ .../speedtestdotnet/translations/en.json | 28 +++++++++ .../speedtestdotnet/translations/es.json | 28 +++++++++ .../speedtestdotnet/translations/it.json | 28 +++++++++ .../speedtestdotnet/translations/ko.json | 28 +++++++++ .../speedtestdotnet/translations/no.json | 28 +++++++++ .../speedtestdotnet/translations/ru.json | 28 +++++++++ .../speedtestdotnet/translations/zh-Hant.json | 28 +++++++++ .../components/starline/translations/lb.json | 2 +- .../synology_dsm/translations/de.json | 4 +- .../synology_dsm/translations/lb.json | 4 +- .../components/tesla/translations/lb.json | 2 +- .../components/tibber/translations/pt.json | 13 +++++ .../components/tile/translations/ca.json | 29 ++++++++++ .../components/tile/translations/de.json | 12 ++++ .../components/tile/translations/en.json | 29 ++++++++++ .../components/tile/translations/es.json | 29 ++++++++++ .../components/tile/translations/fr.json | 19 ++++++ .../components/tile/translations/it.json | 29 ++++++++++ .../components/tile/translations/ko.json | 29 ++++++++++ .../components/tile/translations/lb.json | 29 ++++++++++ .../components/tile/translations/no.json | 25 ++++++++ .../components/tile/translations/pt.json | 13 +++++ .../components/tile/translations/ru.json | 29 ++++++++++ .../components/tile/translations/zh-Hant.json | 29 ++++++++++ .../transmission/translations/lb.json | 2 +- .../components/tuya/translations/de.json | 18 ++++++ .../components/unifi/translations/de.json | 2 +- .../components/unifi/translations/lb.json | 10 +--- .../components/upnp/translations/fr.json | 2 + .../components/upnp/translations/pt.json | 11 ++++ .../components/vacuum/translations/pt.json | 3 +- .../components/vesync/translations/lb.json | 2 +- .../components/vilfo/translations/de.json | 4 +- .../components/vilfo/translations/lb.json | 4 +- .../components/vilfo/translations/pt.json | 11 ++++ .../components/vizio/translations/de.json | 3 +- .../components/vizio/translations/fr.json | 2 + .../components/vizio/translations/it.json | 2 +- .../components/vizio/translations/ko.json | 10 ++-- .../components/vizio/translations/lb.json | 4 +- .../components/vizio/translations/pt.json | 5 ++ .../components/wiffi/translations/fr.json | 25 ++++++++ .../components/wled/translations/de.json | 2 +- .../components/wled/translations/fr.json | 11 +++- .../components/wled/translations/lb.json | 2 +- .../xiaomi_miio/translations/en.json | 3 +- .../xiaomi_miio/translations/lb.json | 2 +- .../xiaomi_miio/translations/pt.json | 11 ++++ .../xiaomi_miio/translations/zh-Hans.json | 7 ++- .../components/zerproc/translations/fr.json | 3 + .../components/zwave/translations/de.json | 4 +- .../components/zwave/translations/lb.json | 2 +- 252 files changed, 2340 insertions(+), 195 deletions(-) create mode 100644 homeassistant/components/agent_dvr/translations/pt.json create mode 100644 homeassistant/components/arcam_fmj/translations/pt.json create mode 100644 homeassistant/components/atag/translations/pt.json create mode 100644 homeassistant/components/avri/translations/ca.json create mode 100644 homeassistant/components/avri/translations/de.json create mode 100644 homeassistant/components/avri/translations/en.json create mode 100644 homeassistant/components/avri/translations/es.json create mode 100644 homeassistant/components/avri/translations/fr.json create mode 100644 homeassistant/components/avri/translations/it.json create mode 100644 homeassistant/components/avri/translations/ko.json create mode 100644 homeassistant/components/avri/translations/lb.json create mode 100644 homeassistant/components/avri/translations/no.json create mode 100644 homeassistant/components/avri/translations/ru.json create mode 100644 homeassistant/components/avri/translations/zh-Hant.json create mode 100644 homeassistant/components/blebox/translations/pt.json create mode 100644 homeassistant/components/bsblan/translations/pt.json create mode 100644 homeassistant/components/cert_expiry/translations/pt.json create mode 100644 homeassistant/components/coolmaster/translations/pt.json create mode 100644 homeassistant/components/directv/translations/pt.json create mode 100644 homeassistant/components/dunehd/translations/ca.json create mode 100644 homeassistant/components/dunehd/translations/de.json create mode 100644 homeassistant/components/dunehd/translations/en.json create mode 100644 homeassistant/components/dunehd/translations/es.json create mode 100644 homeassistant/components/dunehd/translations/fr.json create mode 100644 homeassistant/components/dunehd/translations/it.json create mode 100644 homeassistant/components/dunehd/translations/ko.json create mode 100644 homeassistant/components/dunehd/translations/lb.json create mode 100644 homeassistant/components/dunehd/translations/no.json create mode 100644 homeassistant/components/dunehd/translations/pl.json create mode 100644 homeassistant/components/dunehd/translations/pt.json create mode 100644 homeassistant/components/dunehd/translations/ru.json create mode 100644 homeassistant/components/dunehd/translations/zh-Hant.json create mode 100644 homeassistant/components/forked_daapd/translations/fr.json create mode 100644 homeassistant/components/forked_daapd/translations/pt.json create mode 100644 homeassistant/components/freebox/translations/pt.json create mode 100644 homeassistant/components/gogogate2/translations/fr.json create mode 100644 homeassistant/components/guardian/translations/de.json create mode 100644 homeassistant/components/guardian/translations/fr.json create mode 100644 homeassistant/components/harmony/translations/pt.json create mode 100644 homeassistant/components/hunterdouglas_powerview/translations/pt.json create mode 100644 homeassistant/components/konnected/translations/pt.json create mode 100644 homeassistant/components/mill/translations/de.json create mode 100644 homeassistant/components/onvif/translations/pt.json create mode 100644 homeassistant/components/pi_hole/translations/pt.json create mode 100644 homeassistant/components/plugwise/translations/de.json create mode 100644 homeassistant/components/plugwise/translations/fr.json create mode 100644 homeassistant/components/plugwise/translations/lb.json create mode 100644 homeassistant/components/roku/translations/pt.json create mode 100644 homeassistant/components/shopping_list/translations/pt.json create mode 100644 homeassistant/components/solarlog/translations/pt.json create mode 100644 homeassistant/components/sonarr/translations/de.json create mode 100644 homeassistant/components/sonarr/translations/it.json create mode 100644 homeassistant/components/sonarr/translations/lb.json create mode 100644 homeassistant/components/sonarr/translations/pt.json create mode 100644 homeassistant/components/speedtestdotnet/translations/ca.json create mode 100644 homeassistant/components/speedtestdotnet/translations/de.json create mode 100644 homeassistant/components/speedtestdotnet/translations/en.json create mode 100644 homeassistant/components/speedtestdotnet/translations/es.json create mode 100644 homeassistant/components/speedtestdotnet/translations/it.json create mode 100644 homeassistant/components/speedtestdotnet/translations/ko.json create mode 100644 homeassistant/components/speedtestdotnet/translations/no.json create mode 100644 homeassistant/components/speedtestdotnet/translations/ru.json create mode 100644 homeassistant/components/speedtestdotnet/translations/zh-Hant.json create mode 100644 homeassistant/components/tibber/translations/pt.json create mode 100644 homeassistant/components/tile/translations/ca.json create mode 100644 homeassistant/components/tile/translations/de.json create mode 100644 homeassistant/components/tile/translations/en.json create mode 100644 homeassistant/components/tile/translations/es.json create mode 100644 homeassistant/components/tile/translations/fr.json create mode 100644 homeassistant/components/tile/translations/it.json create mode 100644 homeassistant/components/tile/translations/ko.json create mode 100644 homeassistant/components/tile/translations/lb.json create mode 100644 homeassistant/components/tile/translations/no.json create mode 100644 homeassistant/components/tile/translations/pt.json create mode 100644 homeassistant/components/tile/translations/ru.json create mode 100644 homeassistant/components/tile/translations/zh-Hant.json create mode 100644 homeassistant/components/tuya/translations/de.json create mode 100644 homeassistant/components/vilfo/translations/pt.json create mode 100644 homeassistant/components/wiffi/translations/fr.json create mode 100644 homeassistant/components/xiaomi_miio/translations/pt.json create mode 100644 homeassistant/components/zerproc/translations/fr.json diff --git a/homeassistant/components/abode/translations/lb.json b/homeassistant/components/abode/translations/lb.json index 4e8f6084b54..fffbe4b1a9a 100644 --- a/homeassistant/components/abode/translations/lb.json +++ b/homeassistant/components/abode/translations/lb.json @@ -12,7 +12,7 @@ "user": { "data": { "password": "Passwuert", - "username": "E-Mail Adress" + "username": "E-Mail" }, "title": "F\u00ebllt \u00e4r Abode Login Informatiounen aus." } diff --git a/homeassistant/components/acmeda/translations/de.json b/homeassistant/components/acmeda/translations/de.json index bef1c5e9e99..86b22e47cda 100644 --- a/homeassistant/components/acmeda/translations/de.json +++ b/homeassistant/components/acmeda/translations/de.json @@ -4,7 +4,8 @@ "user": { "data": { "id": "Host-ID" - } + }, + "title": "W\u00e4hlen Sie einen Hub zum Hinzuf\u00fcgen aus" } } } diff --git a/homeassistant/components/acmeda/translations/fr.json b/homeassistant/components/acmeda/translations/fr.json index 03798dc33b7..a60d52ac6f4 100644 --- a/homeassistant/components/acmeda/translations/fr.json +++ b/homeassistant/components/acmeda/translations/fr.json @@ -1,5 +1,8 @@ { "config": { + "abort": { + "all_configured": "Aucun nouveau hub Pulse n'a \u00e9t\u00e9 d\u00e9couvert." + }, "step": { "user": { "data": { @@ -8,5 +11,6 @@ "title": "Choisissez un hub \u00e0 ajouter" } } - } + }, + "title": "Rollease Acmeda Automate" } \ No newline at end of file diff --git a/homeassistant/components/adguard/translations/pt.json b/homeassistant/components/adguard/translations/pt.json index b4642359973..e34c9db39f6 100644 --- a/homeassistant/components/adguard/translations/pt.json +++ b/homeassistant/components/adguard/translations/pt.json @@ -3,6 +3,7 @@ "step": { "user": { "data": { + "host": "Servidor", "password": "Palavra-passe", "username": "Nome de Utilizador" } diff --git a/homeassistant/components/agent_dvr/translations/pt.json b/homeassistant/components/agent_dvr/translations/pt.json new file mode 100644 index 00000000000..ce7cbc3f548 --- /dev/null +++ b/homeassistant/components/agent_dvr/translations/pt.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "user": { + "data": { + "host": "Servidor" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/airly/translations/de.json b/homeassistant/components/airly/translations/de.json index 551c5cd294d..9816ec75537 100644 --- a/homeassistant/components/airly/translations/de.json +++ b/homeassistant/components/airly/translations/de.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "api_key": "Airly API-Schl\u00fcssel", + "api_key": "API-Schl\u00fcssel", "latitude": "Breitengrad", "longitude": "L\u00e4ngengrad", "name": "Name der Integration" diff --git a/homeassistant/components/airly/translations/lb.json b/homeassistant/components/airly/translations/lb.json index 9a935079d99..b6d0ea03569 100644 --- a/homeassistant/components/airly/translations/lb.json +++ b/homeassistant/components/airly/translations/lb.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "api_key": "Airly API Schl\u00ebssel", + "api_key": "API Schl\u00ebssel", "latitude": "Breedegrad", "longitude": "L\u00e4ngegrad", "name": "Numm vun der Installatioun" diff --git a/homeassistant/components/airly/translations/pt.json b/homeassistant/components/airly/translations/pt.json index 971b4653be3..ae35beabf6b 100644 --- a/homeassistant/components/airly/translations/pt.json +++ b/homeassistant/components/airly/translations/pt.json @@ -3,6 +3,7 @@ "step": { "user": { "data": { + "api_key": "", "latitude": "Latitude", "longitude": "Longitude" }, diff --git a/homeassistant/components/airvisual/translations/de.json b/homeassistant/components/airvisual/translations/de.json index e25cfe805ed..1994239f243 100644 --- a/homeassistant/components/airvisual/translations/de.json +++ b/homeassistant/components/airvisual/translations/de.json @@ -20,7 +20,7 @@ "node_pro": { "data": { "ip_address": "IP-Adresse/Hostname des Ger\u00e4ts", - "password": "Ger\u00e4tekennwort" + "password": "Passwort" }, "description": "\u00dcberwachen Sie eine pers\u00f6nliche AirVisual-Einheit. Das Passwort kann von der Benutzeroberfl\u00e4che des Ger\u00e4ts abgerufen werden.", "title": "Konfigurieren Sie einen AirVisual Node/Pro" diff --git a/homeassistant/components/airvisual/translations/lb.json b/homeassistant/components/airvisual/translations/lb.json index a9645c6e3b7..d0cffc8ec2d 100644 --- a/homeassistant/components/airvisual/translations/lb.json +++ b/homeassistant/components/airvisual/translations/lb.json @@ -21,7 +21,7 @@ "node_pro": { "data": { "ip_address": "IP Adresse / Numm vun der Unit\u00e9it", - "password": "Passwuert vun der Unit\u00e9it" + "password": "Passwuert" }, "description": "Pers\u00e9inlech Airvisual Unit\u00e9it iwwerwaachen. Passwuert kann vum UI vum Apparat ausgelies ginn.", "title": "Airvisual Node/Pro ariichten" @@ -32,7 +32,7 @@ "node_pro": "Airvisual Node Pro", "type": "Typ vun der Integratioun" }, - "description": "Loft Qualit\u00e9it an enger geografescher Lag iwwerwaachen.", + "description": "Typ vun Airvisual Donn\u00e9\u00eb fir d'Iwwerwachung auswielen.", "title": "AirVisual konfigur\u00e9ieren" } } diff --git a/homeassistant/components/ambiclimate/translations/lb.json b/homeassistant/components/ambiclimate/translations/lb.json index 3d2b56ba466..dc663cbf42e 100644 --- a/homeassistant/components/ambiclimate/translations/lb.json +++ b/homeassistant/components/ambiclimate/translations/lb.json @@ -14,7 +14,7 @@ }, "step": { "auth": { - "description": "Follegt d\u00ebsem [Link]({authorization_url}) an erlaabtt den Acc\u00e8s zu \u00e4rem Ambiclimate Kont , a kommt dann zer\u00e9ck heihin an dr\u00e9ck op ofsch\u00e9cken hei \u00ebnnen.\n(Stellt s\u00e9cher dass den Type vun Callback {cb_url} ass.)", + "description": "Follegt d\u00ebsem [Link]({authorization_url}) an ***erlaabt** den Acc\u00e8s zu \u00e4rem Ambiclimate Kont , a kommt dann zer\u00e9ck heihin an dr\u00e9ck op **ofsch\u00e9cken** hei \u00ebnnen.\n(Stellt s\u00e9cher dass den Type vun Callback {cb_url} ass.)", "title": "Ambiclimate authentifiz\u00e9ieren" } } diff --git a/homeassistant/components/ambient_station/translations/de.json b/homeassistant/components/ambient_station/translations/de.json index ae4fbe36505..53e6b1f69d6 100644 --- a/homeassistant/components/ambient_station/translations/de.json +++ b/homeassistant/components/ambient_station/translations/de.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "api_key": "API Key", + "api_key": "API Schl\u00fcssel", "app_key": "Anwendungsschl\u00fcssel" }, "title": "Gib deine Informationen ein" diff --git a/homeassistant/components/arcam_fmj/translations/ca.json b/homeassistant/components/arcam_fmj/translations/ca.json index 33af7b119be..28149d5e06e 100644 --- a/homeassistant/components/arcam_fmj/translations/ca.json +++ b/homeassistant/components/arcam_fmj/translations/ca.json @@ -1,4 +1,24 @@ { + "config": { + "abort": { + "already_configured": "El dispositiu ja s'ha configurat.", + "already_in_progress": "El flux de dades de configuraci\u00f3 pel dispositiu ja est\u00e0 en curs.", + "unable_to_connect": "No es pot connectar amb el dispositiu." + }, + "flow_title": "Arcam FMJ a {host}", + "step": { + "confirm": { + "description": "Vols afegir l'Arcam FMJ `{host}` a Home Assistant?" + }, + "user": { + "data": { + "host": "Amfitri\u00f3", + "port": "Port" + }, + "description": "Introdueix el nom de l'amfitri\u00f3 o l'adre\u00e7a IP del dispositiu." + } + } + }, "device_automation": { "trigger_type": { "turn_on": "S'ha sol\u00b7licitat l'activaci\u00f3 de {entity_name}" diff --git a/homeassistant/components/arcam_fmj/translations/de.json b/homeassistant/components/arcam_fmj/translations/de.json index 85032362472..55a8df9d8f7 100644 --- a/homeassistant/components/arcam_fmj/translations/de.json +++ b/homeassistant/components/arcam_fmj/translations/de.json @@ -1,4 +1,18 @@ { + "config": { + "abort": { + "unable_to_connect": "Es konnte keine Verbindung mit dem Ger\u00e4t hergestellt werden." + }, + "step": { + "user": { + "data": { + "host": "Host", + "port": "Port" + }, + "description": "Bitte gib den Hostnamen oder die IP-Adresse des Ger\u00e4ts ein." + } + } + }, "device_automation": { "trigger_type": { "turn_on": "{entity_name} wurde zum Einschalten aufgefordert" diff --git a/homeassistant/components/arcam_fmj/translations/en.json b/homeassistant/components/arcam_fmj/translations/en.json index 6f60c9e2471..b22ed592f69 100644 --- a/homeassistant/components/arcam_fmj/translations/en.json +++ b/homeassistant/components/arcam_fmj/translations/en.json @@ -1,4 +1,24 @@ { + "config": { + "abort": { + "already_configured": "Device was already setup.", + "already_in_progress": "Config flow for device is already in progress.", + "unable_to_connect": "Unable to connect to device." + }, + "flow_title": "Arcam FMJ on {host}", + "step": { + "confirm": { + "description": "Do you want to add Arcam FMJ on `{host}` to Home Assistant?" + }, + "user": { + "data": { + "host": "Host", + "port": "Port" + }, + "description": "Please enter the host name or IP address of device." + } + } + }, "device_automation": { "trigger_type": { "turn_on": "{entity_name} was requested to turn on" diff --git a/homeassistant/components/arcam_fmj/translations/es.json b/homeassistant/components/arcam_fmj/translations/es.json index 87a165511cc..2766e90cbb5 100644 --- a/homeassistant/components/arcam_fmj/translations/es.json +++ b/homeassistant/components/arcam_fmj/translations/es.json @@ -1,4 +1,24 @@ { + "config": { + "abort": { + "already_configured": "El dispositivo ya est\u00e1 configurado.", + "already_in_progress": "La configuraci\u00f3n del flujo para el dispositivo ya est\u00e1 en marcha.", + "unable_to_connect": "No se puede conectar con el dispositivo." + }, + "flow_title": "Arcam FMJ en {host}", + "step": { + "confirm": { + "description": "\u00bfQuieres a\u00f1adir el Arcam FMJ en `{host}` a Home Assistant?" + }, + "user": { + "data": { + "host": "Host", + "port": "Puerto" + }, + "description": "Por favor, introduce el nombre del host o la direcci\u00f3n IP del dispositivo." + } + } + }, "device_automation": { "trigger_type": { "turn_on": "Se solicit\u00f3 encender {entity_name}" diff --git a/homeassistant/components/arcam_fmj/translations/fr.json b/homeassistant/components/arcam_fmj/translations/fr.json index b78b8cbaa7b..99c938108e1 100644 --- a/homeassistant/components/arcam_fmj/translations/fr.json +++ b/homeassistant/components/arcam_fmj/translations/fr.json @@ -1,3 +1,7 @@ { - "title": "Arcam FMJ" + "device_automation": { + "trigger_type": { + "turn_on": "Il a \u00e9t\u00e9 demand\u00e9 \u00e0 {nom_de_l'entit\u00e9} de s'allumer" + } + } } \ No newline at end of file diff --git a/homeassistant/components/arcam_fmj/translations/it.json b/homeassistant/components/arcam_fmj/translations/it.json index 71deb04fd1e..61f3dd6fc47 100644 --- a/homeassistant/components/arcam_fmj/translations/it.json +++ b/homeassistant/components/arcam_fmj/translations/it.json @@ -1,4 +1,28 @@ { + "config": { + "abort": { + "already_configured": "Il dispositivo era gi\u00e0 configurato.", + "already_in_progress": "Il flusso di configurazione per il dispositivo \u00e8 gi\u00e0 in corso.", + "unable_to_connect": "Impossibile connettersi al dispositivo." + }, + "error": { + "one": "uno", + "other": "altri" + }, + "flow_title": "Arcam FMJ su {host}", + "step": { + "confirm": { + "description": "Vuoi aggiungere Arcam FMJ su `{host}` a Home Assistant?" + }, + "user": { + "data": { + "host": "Host", + "port": "Porta" + }, + "description": "Inserisci il nome host o l'indirizzo IP del dispositivo." + } + } + }, "device_automation": { "trigger_type": { "turn_on": "\u00c8 stato richiesto di attivare {entity_name}" diff --git a/homeassistant/components/arcam_fmj/translations/ko.json b/homeassistant/components/arcam_fmj/translations/ko.json index 7a2005017af..3ff4c6d3811 100644 --- a/homeassistant/components/arcam_fmj/translations/ko.json +++ b/homeassistant/components/arcam_fmj/translations/ko.json @@ -1,4 +1,24 @@ { + "config": { + "abort": { + "already_configured": "\uae30\uae30\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4", + "already_in_progress": "\uae30\uae30 \uad6c\uc131\uc774 \uc774\ubbf8 \uc9c4\ud589 \uc911\uc785\ub2c8\ub2e4.", + "unable_to_connect": "\uae30\uae30\uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4." + }, + "flow_title": "Arcam FMJ: {host}", + "step": { + "confirm": { + "description": "Home Assistant \uc5d0 Arcam FMJ `{host}` \uc744(\ub97c) \ucd94\uac00\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?" + }, + "user": { + "data": { + "host": "\ud638\uc2a4\ud2b8", + "port": "\ud3ec\ud2b8" + }, + "description": "\uae30\uae30\uc758 \ud638\uc2a4\ud2b8 \uc774\ub984 \ub610\ub294 IP \uc8fc\uc18c\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694." + } + } + }, "device_automation": { "trigger_type": { "turn_on": "{entity_name} \uc774(\uac00) \ucf1c\uc9c0\ub3c4\ub85d \uc694\uccad\ub418\uc5c8\uc744 \ub54c" diff --git a/homeassistant/components/arcam_fmj/translations/lb.json b/homeassistant/components/arcam_fmj/translations/lb.json index a057827bb6f..1e0702886a3 100644 --- a/homeassistant/components/arcam_fmj/translations/lb.json +++ b/homeassistant/components/arcam_fmj/translations/lb.json @@ -1,4 +1,24 @@ { + "config": { + "abort": { + "already_configured": "Apparat ass scho konfigur\u00e9iert", + "already_in_progress": "Konfiguratioun's Oflaf fir den Apparat ass schonn am gaangen.", + "unable_to_connect": "Keng Verbindung mam Apparat m\u00e9iglech." + }, + "flow_title": "Arcam FMJ um {host}", + "step": { + "confirm": { + "description": "Soll den Arcam FMJ um `{host}` am Home Assistant dob\u00e4i gesaat ginn?" + }, + "user": { + "data": { + "host": "Host", + "port": "Port" + }, + "description": "G\u00ebff den Numm oder IP-Adress vum Apparat un." + } + } + }, "device_automation": { "trigger_type": { "turn_on": "{entity_name} soll ugeschalt ginn" diff --git a/homeassistant/components/arcam_fmj/translations/no.json b/homeassistant/components/arcam_fmj/translations/no.json index 81404be2ace..f52ef426bee 100644 --- a/homeassistant/components/arcam_fmj/translations/no.json +++ b/homeassistant/components/arcam_fmj/translations/no.json @@ -1,4 +1,20 @@ { + "config": { + "abort": { + "already_configured": "Enheten var allerede konfigurert.", + "already_in_progress": "Konfigurasjonsflyt for enhet p\u00e5g\u00e5r allerede.", + "unable_to_connect": "Kan ikke koble til enheten." + }, + "flow_title": "Arcam FMJ p\u00e5 {host}", + "step": { + "confirm": { + "description": "Vil du legge Arcam FMJ p\u00e5 ` {host} ` til Home Assistant? " + }, + "user": { + "description": "Vennligst skriv inn vertsnavnet eller IP-adressen til enheten." + } + } + }, "device_automation": { "trigger_type": { "turn_on": "{entity_name} ble bedt om \u00e5 sl\u00e5 p\u00e5" diff --git a/homeassistant/components/arcam_fmj/translations/pt.json b/homeassistant/components/arcam_fmj/translations/pt.json new file mode 100644 index 00000000000..d086a929d34 --- /dev/null +++ b/homeassistant/components/arcam_fmj/translations/pt.json @@ -0,0 +1,12 @@ +{ + "config": { + "step": { + "user": { + "data": { + "host": "Servidor", + "port": "Porto" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/arcam_fmj/translations/ru.json b/homeassistant/components/arcam_fmj/translations/ru.json index 58f4fd5ea3b..b02c482c438 100644 --- a/homeassistant/components/arcam_fmj/translations/ru.json +++ b/homeassistant/components/arcam_fmj/translations/ru.json @@ -1,4 +1,24 @@ { + "config": { + "abort": { + "already_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.", + "already_in_progress": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f.", + "unable_to_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443." + }, + "flow_title": "Arcam FMJ {host}", + "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 Arcam FMJ `{host}`?" + }, + "user": { + "data": { + "host": "\u0425\u043e\u0441\u0442", + "port": "\u041f\u043e\u0440\u0442" + }, + "description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u043c\u044f \u0445\u043e\u0441\u0442\u0430 \u0438\u043b\u0438 IP-\u0430\u0434\u0440\u0435\u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430." + } + } + }, "device_automation": { "trigger_type": { "turn_on": "\u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 {entity_name}" diff --git a/homeassistant/components/arcam_fmj/translations/zh-Hant.json b/homeassistant/components/arcam_fmj/translations/zh-Hant.json index 18ea7d22eb1..f25906f0d81 100644 --- a/homeassistant/components/arcam_fmj/translations/zh-Hant.json +++ b/homeassistant/components/arcam_fmj/translations/zh-Hant.json @@ -1,4 +1,24 @@ { + "config": { + "abort": { + "already_configured": "\u8a2d\u5099\u5df2\u8a2d\u5b9a\u3002", + "already_in_progress": "\u8a2d\u5099\u8a2d\u5b9a\u5df2\u7d93\u9032\u884c\u4e2d\u3002", + "unable_to_connect": "\u7121\u6cd5\u9023\u7dda\u81f3\u8a2d\u5099\u3002" + }, + "flow_title": "Arcam FMJ \uff08{host}\uff09", + "step": { + "confirm": { + "description": "\u662f\u5426\u8981\u5c07 Arcam FMJ `{host}` \u65b0\u589e\u81f3 Home Assistant\uff1f" + }, + "user": { + "data": { + "host": "\u4e3b\u6a5f\u7aef", + "port": "\u901a\u8a0a\u57e0" + }, + "description": "\u8acb\u8f38\u5165\u4e3b\u6a5f\u7aef\u540d\u7a31\u6216 Heos \u8a2d\u5099 IP \u4f4d\u5740\u3002" + } + } + }, "device_automation": { "trigger_type": { "turn_on": "{entity_name} \u4f9d\u9700\u6c42\u958b\u555f" diff --git a/homeassistant/components/atag/translations/de.json b/homeassistant/components/atag/translations/de.json index cf133aef758..1b2b1324864 100644 --- a/homeassistant/components/atag/translations/de.json +++ b/homeassistant/components/atag/translations/de.json @@ -11,7 +11,7 @@ "data": { "email": "Email (Optional)", "host": "Host", - "port": "Port (10000)" + "port": "Port" }, "title": "Stellen Sie eine Verbindung zum Ger\u00e4t her" } diff --git a/homeassistant/components/atag/translations/fr.json b/homeassistant/components/atag/translations/fr.json index 1972bd10da4..48a87dd3621 100644 --- a/homeassistant/components/atag/translations/fr.json +++ b/homeassistant/components/atag/translations/fr.json @@ -4,7 +4,8 @@ "already_configured": "Un seul appareil Atag peut \u00eatre ajout\u00e9 \u00e0 Home Assistant" }, "error": { - "connection_error": "Impossible de se connecter, veuillez r\u00e9essayer" + "connection_error": "Impossible de se connecter, veuillez r\u00e9essayer", + "unauthorized": "Pairage refus\u00e9, v\u00e9rifiez la demande d'authentification de l'appareil" }, "step": { "user": { diff --git a/homeassistant/components/atag/translations/ko.json b/homeassistant/components/atag/translations/ko.json index 3ca689a488c..064770fac5f 100644 --- a/homeassistant/components/atag/translations/ko.json +++ b/homeassistant/components/atag/translations/ko.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "Home Assistant \uc5d0\ub294 \ud558\ub098\uc758 Atag \uae30\uae30\ub9cc \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4" + "already_configured": "\uae30\uae30\uac00 \uc774\ubbf8 HomeAssistant \uc5d0 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4" }, "error": { "connection_error": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \uc2dc\ub3c4\ud574\uc8fc\uc138\uc694.", diff --git a/homeassistant/components/atag/translations/lb.json b/homeassistant/components/atag/translations/lb.json index 72f5820e2d3..7474d99de62 100644 --- a/homeassistant/components/atag/translations/lb.json +++ b/homeassistant/components/atag/translations/lb.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "N\u00ebmmen 1 Atag Apparat kann am Home Assistant dob\u00e4igesat ginn" + "already_configured": "D\u00ebsen Apparat ass schonn am Home Assistant dob\u00e4igesat ginn" }, "error": { "connection_error": "Feeler beim verbannen, prob\u00e9ier w.e.g. nach emol.", @@ -12,7 +12,7 @@ "data": { "email": "E-Mail (Optionell)", "host": "Apparat", - "port": "Port (10000)" + "port": "Port" }, "title": "Mam Apparat verbannen" } diff --git a/homeassistant/components/atag/translations/pt.json b/homeassistant/components/atag/translations/pt.json new file mode 100644 index 00000000000..ce7cbc3f548 --- /dev/null +++ b/homeassistant/components/atag/translations/pt.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "user": { + "data": { + "host": "Servidor" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/avri/translations/ca.json b/homeassistant/components/avri/translations/ca.json new file mode 100644 index 00000000000..3e575942e96 --- /dev/null +++ b/homeassistant/components/avri/translations/ca.json @@ -0,0 +1,24 @@ +{ + "config": { + "abort": { + "already_configured": "Aquesta adre\u00e7a ja est\u00e0 configurada." + }, + "error": { + "invalid_country_code": "Codi de pa\u00eds desconegut.", + "invalid_house_number": "N\u00famero de casa no v\u00e0lid." + }, + "step": { + "user": { + "data": { + "country_code": "Codi de pa\u00eds de 2 lletres", + "house_number": "N\u00famero de casa", + "house_number_extension": "Ampliaci\u00f3 de n\u00famero de casa", + "zip_code": "Codi postal" + }, + "description": "Introdueix la teva adre\u00e7a", + "title": "Avri" + } + } + }, + "title": "Avri" +} \ No newline at end of file diff --git a/homeassistant/components/avri/translations/de.json b/homeassistant/components/avri/translations/de.json new file mode 100644 index 00000000000..94a3034adad --- /dev/null +++ b/homeassistant/components/avri/translations/de.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "invalid_house_number": "Ung\u00fcltige Hausnummer" + }, + "step": { + "user": { + "data": { + "house_number": "Hausnummer", + "zip_code": "Postleitzahl" + }, + "description": "Gibt deine Adresse ein", + "title": "Avri" + } + } + }, + "title": "Avri" +} \ No newline at end of file diff --git a/homeassistant/components/avri/translations/en.json b/homeassistant/components/avri/translations/en.json new file mode 100644 index 00000000000..83cd4232d42 --- /dev/null +++ b/homeassistant/components/avri/translations/en.json @@ -0,0 +1,24 @@ +{ + "config": { + "abort": { + "already_configured": "This address is already configured." + }, + "error": { + "invalid_country_code": "Unknown 2 letter country code.", + "invalid_house_number": "Invalid house number." + }, + "step": { + "user": { + "data": { + "country_code": "2 Letter country code", + "house_number": "House number", + "house_number_extension": "House number extension", + "zip_code": "Zip code" + }, + "description": "Enter your address", + "title": "Avri" + } + } + }, + "title": "Avri" +} \ No newline at end of file diff --git a/homeassistant/components/avri/translations/es.json b/homeassistant/components/avri/translations/es.json new file mode 100644 index 00000000000..72babfb71a0 --- /dev/null +++ b/homeassistant/components/avri/translations/es.json @@ -0,0 +1,24 @@ +{ + "config": { + "abort": { + "already_configured": "Esta direcci\u00f3n ya est\u00e1 configurada." + }, + "error": { + "invalid_country_code": "C\u00f3digo de pa\u00eds de 2 letras desconocido.", + "invalid_house_number": "N\u00famero de casa no v\u00e1lido." + }, + "step": { + "user": { + "data": { + "country_code": "C\u00f3digo de pa\u00eds de 2 letras", + "house_number": "N\u00famero de casa", + "house_number_extension": "Extensi\u00f3n del n\u00famero de casa", + "zip_code": "C\u00f3digo postal" + }, + "description": "Introduce tu direccion", + "title": "Avri" + } + } + }, + "title": "Avri" +} \ No newline at end of file diff --git a/homeassistant/components/avri/translations/fr.json b/homeassistant/components/avri/translations/fr.json new file mode 100644 index 00000000000..1c4a5d48b06 --- /dev/null +++ b/homeassistant/components/avri/translations/fr.json @@ -0,0 +1,20 @@ +{ + "config": { + "error": { + "invalid_house_number": "Num\u00e9ro de maison invalide." + }, + "step": { + "user": { + "data": { + "country_code": "Code pays \u00e0 2 lettres", + "house_number": "Num\u00e9ro de maison", + "house_number_extension": "Extension de num\u00e9ro de maison", + "zip_code": "Code postal" + }, + "description": "Entrez votre adresse", + "title": "Avri" + } + } + }, + "title": "Avri" +} \ No newline at end of file diff --git a/homeassistant/components/avri/translations/it.json b/homeassistant/components/avri/translations/it.json new file mode 100644 index 00000000000..de0164665a2 --- /dev/null +++ b/homeassistant/components/avri/translations/it.json @@ -0,0 +1,24 @@ +{ + "config": { + "abort": { + "already_configured": "Questo indirizzo \u00e8 gi\u00e0 configurato." + }, + "error": { + "invalid_country_code": "Codice paese di 2 lettere sconosciuto.", + "invalid_house_number": "Numero civico non valido." + }, + "step": { + "user": { + "data": { + "country_code": "Codice paese di 2 lettere", + "house_number": "Numero civico", + "house_number_extension": "Estensione del numero civico", + "zip_code": "Codice di avviamento postale" + }, + "description": "Inserisci il tuo indirizzo", + "title": "Avri" + } + } + }, + "title": "Avri" +} \ No newline at end of file diff --git a/homeassistant/components/avri/translations/ko.json b/homeassistant/components/avri/translations/ko.json new file mode 100644 index 00000000000..db2cec3fb16 --- /dev/null +++ b/homeassistant/components/avri/translations/ko.json @@ -0,0 +1,24 @@ +{ + "config": { + "abort": { + "already_configured": "\uc774 \uc8fc\uc18c\ub294 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4." + }, + "error": { + "invalid_country_code": "\uc54c \uc218 \uc5c6\ub294 \uad6d\uac00\ucf54\ub4dc\uc785\ub2c8\ub2e4.", + "invalid_house_number": "\uc9d1 \ubc88\ud638\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4" + }, + "step": { + "user": { + "data": { + "country_code": "2 \ubb38\uc790 \uad6d\uac00\ucf54\ub4dc", + "house_number": "\uc9d1 \ubc88\ud638", + "house_number_extension": "\uc9d1 \ubc88\ud638 \ucd94\uac00\uc815\ubcf4", + "zip_code": "\uc6b0\ud3b8 \ubc88\ud638" + }, + "description": "\uc8fc\uc18c\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694", + "title": "Avri" + } + } + }, + "title": "Avri" +} \ No newline at end of file diff --git a/homeassistant/components/avri/translations/lb.json b/homeassistant/components/avri/translations/lb.json new file mode 100644 index 00000000000..b54cb6c2cc2 --- /dev/null +++ b/homeassistant/components/avri/translations/lb.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "already_configured": "D\u00ebs Adress ass scho konfigur\u00e9iert." + }, + "error": { + "invalid_house_number": "Ong\u00eblteg Haus Nummer" + }, + "step": { + "user": { + "data": { + "house_number": "Haus Nummer", + "house_number_extension": "Haus Nummer Extensioun", + "zip_code": "Postleitzuel" + }, + "description": "G\u00ebff deng Adresse un", + "title": "Avri" + } + } + }, + "title": "Avri" +} \ No newline at end of file diff --git a/homeassistant/components/avri/translations/no.json b/homeassistant/components/avri/translations/no.json new file mode 100644 index 00000000000..5d7f77113b9 --- /dev/null +++ b/homeassistant/components/avri/translations/no.json @@ -0,0 +1,24 @@ +{ + "config": { + "abort": { + "already_configured": "Denne adressen er allerede konfigurert." + }, + "error": { + "invalid_country_code": "Ukjent landskode p\u00e5 2 bokstaver.", + "invalid_house_number": "Ugyldig husnummer." + }, + "step": { + "user": { + "data": { + "country_code": "2 Bokstavs landskode", + "house_number": "Husnummer", + "house_number_extension": "Utvidelse av husnummer", + "zip_code": "Postnummer" + }, + "description": "Skriv inn adressen din", + "title": "" + } + } + }, + "title": "" +} \ No newline at end of file diff --git a/homeassistant/components/avri/translations/ru.json b/homeassistant/components/avri/translations/ru.json new file mode 100644 index 00000000000..6685a4cda47 --- /dev/null +++ b/homeassistant/components/avri/translations/ru.json @@ -0,0 +1,24 @@ +{ + "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." + }, + "error": { + "invalid_country_code": "\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0434\u0432\u0443\u0445\u0431\u0443\u043a\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441\u0442\u0440\u0430\u043d\u044b.", + "invalid_house_number": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0434\u043e\u043c\u0430." + }, + "step": { + "user": { + "data": { + "country_code": "\u0414\u0432\u0443\u0445\u0431\u0443\u043a\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441\u0442\u0440\u0430\u043d\u044b", + "house_number": "\u041d\u043e\u043c\u0435\u0440 \u0434\u043e\u043c\u0430", + "house_number_extension": "\u041b\u0438\u0442\u0435\u0440 \u0434\u043e\u043c\u0430 / \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435", + "zip_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 Home Assistant \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 Avri.", + "title": "Avri" + } + } + }, + "title": "Avri" +} \ No newline at end of file diff --git a/homeassistant/components/avri/translations/zh-Hant.json b/homeassistant/components/avri/translations/zh-Hant.json new file mode 100644 index 00000000000..ef229b5b2d1 --- /dev/null +++ b/homeassistant/components/avri/translations/zh-Hant.json @@ -0,0 +1,24 @@ +{ + "config": { + "abort": { + "already_configured": "\u6b64\u5730\u5740\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210\u3002" + }, + "error": { + "invalid_country_code": "\u672a\u77e5\u570b\u78bc\uff08\u5169\u5b57\u6bcd\uff09\u3002", + "invalid_house_number": "\u9580\u724c\u865f\u78bc\u932f\u8aa4\u3002" + }, + "step": { + "user": { + "data": { + "country_code": "\u570b\u78bc\uff08\u5169\u5b57\u6bcd\uff09", + "house_number": "\u9580\u724c\u865f\u78bc", + "house_number_extension": "\u9580\u724c\u865f\u78bc\u5206\u865f", + "zip_code": "\u90f5\u905e\u5340\u865f" + }, + "description": "\u8f38\u5165\u5730\u5740", + "title": "Avri" + } + } + }, + "title": "Avri" +} \ No newline at end of file diff --git a/homeassistant/components/axis/translations/fr.json b/homeassistant/components/axis/translations/fr.json index 2b5d1b24ef7..a60358139b2 100644 --- a/homeassistant/components/axis/translations/fr.json +++ b/homeassistant/components/axis/translations/fr.json @@ -24,5 +24,15 @@ "title": "Configurer l'appareil Axis" } } + }, + "options": { + "step": { + "configure_stream": { + "data": { + "stream_profile": "S\u00e9lectionnez le profil de flux \u00e0 utiliser" + }, + "title": "Options de flux vid\u00e9o du p\u00e9riph\u00e9rique Axis" + } + } } } \ No newline at end of file diff --git a/homeassistant/components/axis/translations/it.json b/homeassistant/components/axis/translations/it.json index b771c6069bf..1ad2baddb85 100644 --- a/homeassistant/components/axis/translations/it.json +++ b/homeassistant/components/axis/translations/it.json @@ -24,5 +24,15 @@ "title": "Impostazione del dispositivo Axis" } } + }, + "options": { + "step": { + "configure_stream": { + "data": { + "stream_profile": "Selezionare il profilo di flusso da utilizzare" + }, + "title": "Opzioni del flusso video del dispositivo Axis" + } + } } } \ No newline at end of file diff --git a/homeassistant/components/axis/translations/ko.json b/homeassistant/components/axis/translations/ko.json index 45adcca576f..fc2b00a16bb 100644 --- a/homeassistant/components/axis/translations/ko.json +++ b/homeassistant/components/axis/translations/ko.json @@ -24,5 +24,15 @@ "title": "Axis \uae30\uae30 \uc124\uc815\ud558\uae30" } } + }, + "options": { + "step": { + "configure_stream": { + "data": { + "stream_profile": "\uc0ac\uc6a9\ud560 \uc2a4\ud2b8\ub9bc \ud504\ub85c\ud30c\uc77c\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694" + }, + "title": "Axis \uae30\uae30 \ube44\ub514\uc624 \uc2a4\ud2b8\ub9bc \uc635\uc158" + } + } } } \ No newline at end of file diff --git a/homeassistant/components/axis/translations/lb.json b/homeassistant/components/axis/translations/lb.json index d73489f6a43..6de6b7044f8 100644 --- a/homeassistant/components/axis/translations/lb.json +++ b/homeassistant/components/axis/translations/lb.json @@ -24,5 +24,15 @@ "title": "Axis Apparat ariichten" } } + }, + "options": { + "step": { + "configure_stream": { + "data": { + "stream_profile": "Stream Profile auswielen" + }, + "title": "Axis Apparat Video Stream Optiounen" + } + } } } \ No newline at end of file diff --git a/homeassistant/components/axis/translations/pl.json b/homeassistant/components/axis/translations/pl.json index 9b4d27f6205..e6d55f5a579 100644 --- a/homeassistant/components/axis/translations/pl.json +++ b/homeassistant/components/axis/translations/pl.json @@ -24,5 +24,15 @@ "title": "Konfiguracja urz\u0105dzenia Axis" } } + }, + "options": { + "step": { + "configure_stream": { + "data": { + "stream_profile": "Wybierz profil strumienia do u\u017cycia" + }, + "title": "Opcje strumienia wideo urz\u0105dzenia Axis" + } + } } } \ No newline at end of file diff --git a/homeassistant/components/binary_sensor/translations/lb.json b/homeassistant/components/binary_sensor/translations/lb.json index fc29c0e67a8..4c816d6424a 100644 --- a/homeassistant/components/binary_sensor/translations/lb.json +++ b/homeassistant/components/binary_sensor/translations/lb.json @@ -142,10 +142,6 @@ "off": "Zou", "on": "Op" }, - "presence": { - "off": "\u00cbnnerwee", - "on": "Doheem" - }, "problem": { "off": "OK", "on": "Problem" diff --git a/homeassistant/components/blebox/translations/pt.json b/homeassistant/components/blebox/translations/pt.json new file mode 100644 index 00000000000..f7dc708a2d6 --- /dev/null +++ b/homeassistant/components/blebox/translations/pt.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "user": { + "data": { + "host": "Endere\u00e7o IP" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/blink/translations/ca.json b/homeassistant/components/blink/translations/ca.json index afaacd63793..01dac3598a3 100644 --- a/homeassistant/components/blink/translations/ca.json +++ b/homeassistant/components/blink/translations/ca.json @@ -23,5 +23,14 @@ "title": "Inici de sessi\u00f3 amb Blink" } } + }, + "options": { + "step": { + "simple_options": { + "data": { + "scan_interval": "Interval d'escaneig (segons)" + } + } + } } } \ No newline at end of file diff --git a/homeassistant/components/blink/translations/en.json b/homeassistant/components/blink/translations/en.json index 2187e91f09e..415bc3dd1c9 100644 --- a/homeassistant/components/blink/translations/en.json +++ b/homeassistant/components/blink/translations/en.json @@ -23,5 +23,16 @@ "title": "Sign-in with Blink account" } } + }, + "options": { + "step": { + "simple_options": { + "data": { + "scan_interval": "Scan Interval (seconds)" + }, + "description": "Configure Blink integration", + "title": "Blink options" + } + } } } \ No newline at end of file diff --git a/homeassistant/components/blink/translations/es.json b/homeassistant/components/blink/translations/es.json index 0606a28ee1f..91975d48d1f 100644 --- a/homeassistant/components/blink/translations/es.json +++ b/homeassistant/components/blink/translations/es.json @@ -23,5 +23,16 @@ "title": "Iniciar sesi\u00f3n con cuenta Blink" } } + }, + "options": { + "step": { + "simple_options": { + "data": { + "scan_interval": "Intervalo de escaneo (segundos)" + }, + "description": "Configurar la integraci\u00f3n de Blink", + "title": "Opciones de Blink" + } + } } } \ No newline at end of file diff --git a/homeassistant/components/blink/translations/fr.json b/homeassistant/components/blink/translations/fr.json index c0283817e60..9be94a60a3e 100644 --- a/homeassistant/components/blink/translations/fr.json +++ b/homeassistant/components/blink/translations/fr.json @@ -6,13 +6,18 @@ }, "step": { "2fa": { + "data": { + "2fa": "Code \u00e0 deux facteurs" + }, + "description": "Saisissez le code envoy\u00e9 \u00e0 votre adresse \u00e9lectronique. Si l'e-mail ne contient pas de code PIN, laissez vide", "title": "Authentification \u00e0 deux facteurs" }, "user": { "data": { "password": "Mot de passe", "username": "Identifiant" - } + }, + "title": "Connectez-vous avec un compte Blink" } } } diff --git a/homeassistant/components/blink/translations/it.json b/homeassistant/components/blink/translations/it.json index 47099ed8611..e7311549fae 100644 --- a/homeassistant/components/blink/translations/it.json +++ b/homeassistant/components/blink/translations/it.json @@ -23,5 +23,16 @@ "title": "Accedi con l'account Blink" } } + }, + "options": { + "step": { + "simple_options": { + "data": { + "scan_interval": "Intervallo di scansione (secondi)" + }, + "description": "Configurare l'integrazione di Blink", + "title": "Opzioni di Blink" + } + } } } \ No newline at end of file diff --git a/homeassistant/components/blink/translations/ko.json b/homeassistant/components/blink/translations/ko.json index 0ac9092c723..fb26625c7e3 100644 --- a/homeassistant/components/blink/translations/ko.json +++ b/homeassistant/components/blink/translations/ko.json @@ -23,5 +23,16 @@ "title": "Blink \uacc4\uc815\uc73c\ub85c \ub85c\uadf8\uc778\ud558\uae30" } } + }, + "options": { + "step": { + "simple_options": { + "data": { + "scan_interval": "\uc2a4\uce94 \uac04\uaca9 (\ucd08)" + }, + "description": "Blink \ud1b5\ud569 \uad6c\uc131\uc694\uc18c \uad6c\uc131", + "title": "Blink \uc635\uc158" + } + } } } \ No newline at end of file diff --git a/homeassistant/components/blink/translations/no.json b/homeassistant/components/blink/translations/no.json index 910a401b0be..fcfee086fb2 100644 --- a/homeassistant/components/blink/translations/no.json +++ b/homeassistant/components/blink/translations/no.json @@ -23,5 +23,16 @@ "title": "Logg p\u00e5 med Blink-konto" } } + }, + "options": { + "step": { + "simple_options": { + "data": { + "scan_interval": "Skanneintervall (sekunder)" + }, + "description": "Konfigurer Blink-integrasjon", + "title": "Alternativer for Blink" + } + } } } \ No newline at end of file diff --git a/homeassistant/components/blink/translations/ru.json b/homeassistant/components/blink/translations/ru.json index 70f828d2f7f..ea95319f856 100644 --- a/homeassistant/components/blink/translations/ru.json +++ b/homeassistant/components/blink/translations/ru.json @@ -23,5 +23,16 @@ "title": "Blink" } } + }, + "options": { + "step": { + "simple_options": { + "data": { + "scan_interval": "\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445)" + }, + "description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 Blink", + "title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Blink" + } + } } } \ No newline at end of file diff --git a/homeassistant/components/blink/translations/zh-Hant.json b/homeassistant/components/blink/translations/zh-Hant.json index f1e24cf7c7c..67234dc8841 100644 --- a/homeassistant/components/blink/translations/zh-Hant.json +++ b/homeassistant/components/blink/translations/zh-Hant.json @@ -23,5 +23,16 @@ "title": "\u4ee5 Blink \u5e33\u865f\u767b\u5165" } } + }, + "options": { + "step": { + "simple_options": { + "data": { + "scan_interval": "\u6383\u63cf\u9593\u8ddd\uff08\u79d2\uff09" + }, + "description": "\u8a2d\u5b9a Blink \u6574\u5408", + "title": "Blink \u9078\u9805" + } + } } } \ No newline at end of file diff --git a/homeassistant/components/braviatv/translations/de.json b/homeassistant/components/braviatv/translations/de.json index f46ff584d6c..39ce34c16a9 100644 --- a/homeassistant/components/braviatv/translations/de.json +++ b/homeassistant/components/braviatv/translations/de.json @@ -18,7 +18,7 @@ }, "user": { "data": { - "host": "TV-Hostname oder IP-Adresse" + "host": "Host" }, "description": "Richten Sie die Sony Bravia TV-Integration ein. Wenn Sie Probleme mit der Konfiguration haben, gehen Sie zu: https://www.home-assistant.io/integrations/braviatv \n\n Stellen Sie sicher, dass Ihr Fernseher eingeschaltet ist.", "title": "Sony Bravia TV" diff --git a/homeassistant/components/braviatv/translations/fr.json b/homeassistant/components/braviatv/translations/fr.json index 787d53b90a3..31d2cf0a042 100644 --- a/homeassistant/components/braviatv/translations/fr.json +++ b/homeassistant/components/braviatv/translations/fr.json @@ -1,7 +1,8 @@ { "config": { "abort": { - "already_configured": "Ce t\u00e9l\u00e9viseur est d\u00e9j\u00e0 configur\u00e9." + "already_configured": "Ce t\u00e9l\u00e9viseur est d\u00e9j\u00e0 configur\u00e9.", + "no_ip_control": "Le contr\u00f4le IP est d\u00e9sactiv\u00e9 sur votre t\u00e9l\u00e9viseur ou le t\u00e9l\u00e9viseur n'est pas pris en charge." }, "error": { "cannot_connect": "\u00c9chec de connexion, h\u00f4te ou code PIN non valide.", diff --git a/homeassistant/components/braviatv/translations/lb.json b/homeassistant/components/braviatv/translations/lb.json index 7a00464bc3a..9eb3bc0aa22 100644 --- a/homeassistant/components/braviatv/translations/lb.json +++ b/homeassistant/components/braviatv/translations/lb.json @@ -19,7 +19,7 @@ }, "user": { "data": { - "host": "TV Host Numm oder IP Adresse" + "host": "Host" }, "description": "Sony Bravia TV Integratioun ariichten. Falls et Problemer mat der Konfiguratioun g\u00ebtt g\u00e9i op:\nhttps://www.home-assistant.io/integrations/braviatv\nStell s\u00e9cher dass d\u00e4in Fernseh un ass.", "title": "Sony Bravia TV" diff --git a/homeassistant/components/braviatv/translations/pt.json b/homeassistant/components/braviatv/translations/pt.json index d818bda11ff..5e5f1367f58 100644 --- a/homeassistant/components/braviatv/translations/pt.json +++ b/homeassistant/components/braviatv/translations/pt.json @@ -18,7 +18,7 @@ }, "user": { "data": { - "host": "Nome do host da TV ou endere\u00e7o IP" + "host": "Servidor" }, "title": "TV Sony Bravia" } diff --git a/homeassistant/components/brother/translations/de.json b/homeassistant/components/brother/translations/de.json index 42d92777699..78f2dd882bd 100644 --- a/homeassistant/components/brother/translations/de.json +++ b/homeassistant/components/brother/translations/de.json @@ -13,7 +13,7 @@ "step": { "user": { "data": { - "host": "Drucker Hostname oder IP-Adresse", + "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" diff --git a/homeassistant/components/brother/translations/lb.json b/homeassistant/components/brother/translations/lb.json index 12a92518e88..8e329f99811 100644 --- a/homeassistant/components/brother/translations/lb.json +++ b/homeassistant/components/brother/translations/lb.json @@ -13,7 +13,7 @@ "step": { "user": { "data": { - "host": "Printer Numm oder IP Adresse", + "host": "Host", "type": "Typ vum Printer" }, "description": "Brother Printer Integratioun ariichten. Am Fall vun Problemer kuckt op: https://www.home-assistant.io/integrations/brother" diff --git a/homeassistant/components/brother/translations/pt.json b/homeassistant/components/brother/translations/pt.json index 4f76c66c4f6..9ac9357b9b4 100644 --- a/homeassistant/components/brother/translations/pt.json +++ b/homeassistant/components/brother/translations/pt.json @@ -3,6 +3,7 @@ "step": { "user": { "data": { + "host": "Servidor", "type": "Tipo de impressora" } } diff --git a/homeassistant/components/bsblan/translations/de.json b/homeassistant/components/bsblan/translations/de.json index 39be96b84d5..3d31a23d69d 100644 --- a/homeassistant/components/bsblan/translations/de.json +++ b/homeassistant/components/bsblan/translations/de.json @@ -11,5 +11,6 @@ } } } - } + }, + "title": "BSB-Lan" } \ No newline at end of file diff --git a/homeassistant/components/bsblan/translations/fr.json b/homeassistant/components/bsblan/translations/fr.json index 5a89dc38022..7589129bf4e 100644 --- a/homeassistant/components/bsblan/translations/fr.json +++ b/homeassistant/components/bsblan/translations/fr.json @@ -7,6 +7,7 @@ "user": { "data": { "host": "H\u00f4te ou adresse IP", + "passkey": "Cha\u00eene de cl\u00e9 d'acc\u00e8s", "port": "Num\u00e9ro de port" } } diff --git a/homeassistant/components/bsblan/translations/lb.json b/homeassistant/components/bsblan/translations/lb.json index ef5e25a1d08..d0558a112ae 100644 --- a/homeassistant/components/bsblan/translations/lb.json +++ b/homeassistant/components/bsblan/translations/lb.json @@ -10,9 +10,9 @@ "step": { "user": { "data": { - "host": "Numm oder IP Adresse", + "host": "Host", "passkey": "Passkey Zeechefolleg", - "port": "Port Nummer" + "port": "Port" }, "description": "BSB-Lan Apparat ariichten fir d'Integratioun mam Home Assistant.", "title": "Mam BSB-Lan Apparat verbannen" diff --git a/homeassistant/components/bsblan/translations/pt.json b/homeassistant/components/bsblan/translations/pt.json new file mode 100644 index 00000000000..ce7cbc3f548 --- /dev/null +++ b/homeassistant/components/bsblan/translations/pt.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "user": { + "data": { + "host": "Servidor" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/cert_expiry/translations/de.json b/homeassistant/components/cert_expiry/translations/de.json index e3733a4fcf1..2c01c9f71a6 100644 --- a/homeassistant/components/cert_expiry/translations/de.json +++ b/homeassistant/components/cert_expiry/translations/de.json @@ -12,9 +12,9 @@ "step": { "user": { "data": { - "host": "Der Hostname des Zertifikats", + "host": "Host", "name": "Der Name des Zertifikats", - "port": "Der Port des Zertifikats" + "port": "Port" }, "title": "Definiere das zu testende Zertifikat" } diff --git a/homeassistant/components/cert_expiry/translations/lb.json b/homeassistant/components/cert_expiry/translations/lb.json index db6d5c7ccb0..679220898cc 100644 --- a/homeassistant/components/cert_expiry/translations/lb.json +++ b/homeassistant/components/cert_expiry/translations/lb.json @@ -12,9 +12,9 @@ "step": { "user": { "data": { - "host": "Den Hostnumm vum Zertifikat", + "host": "Host", "name": "De Numm vum Zertifikat", - "port": "De Port vum Zertifikat" + "port": "Port" }, "title": "W\u00e9ieen Zertifikat soll getest ginn" } diff --git a/homeassistant/components/cert_expiry/translations/pt.json b/homeassistant/components/cert_expiry/translations/pt.json new file mode 100644 index 00000000000..9c6541c1bd4 --- /dev/null +++ b/homeassistant/components/cert_expiry/translations/pt.json @@ -0,0 +1,14 @@ +{ + "config": { + "error": { + "resolve_failed": "N\u00e3o \u00e9 possivel resolver o servidor" + }, + "step": { + "user": { + "data": { + "host": "Servidor" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/climate/translations/pt.json b/homeassistant/components/climate/translations/pt.json index 5acd785c644..5e986f04b02 100644 --- a/homeassistant/components/climate/translations/pt.json +++ b/homeassistant/components/climate/translations/pt.json @@ -1,4 +1,9 @@ { + "device_automation": { + "condition_type": { + "is_hvac_mode": "{entity_name} est\u00e1 definido com um modo HVAC espec\u00edfico" + } + }, "state": { "_": { "auto": "Auto", diff --git a/homeassistant/components/coolmaster/translations/pt.json b/homeassistant/components/coolmaster/translations/pt.json new file mode 100644 index 00000000000..ce7cbc3f548 --- /dev/null +++ b/homeassistant/components/coolmaster/translations/pt.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "user": { + "data": { + "host": "Servidor" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/cover/translations/pt.json b/homeassistant/components/cover/translations/pt.json index 7c50b7a63cd..5308b77ef43 100644 --- a/homeassistant/components/cover/translations/pt.json +++ b/homeassistant/components/cover/translations/pt.json @@ -1,5 +1,13 @@ { "device_automation": { + "action_type": { + "close": "Fechar {entity_name}", + "close_tilt": "Fechar a inclina\u00e7\u00e3o da {entity_name}", + "open": "Abrir {entity_name}", + "open_tilt": "Abra a inclina\u00e7\u00e3o da {entity_name}", + "set_position": "Definir posi\u00e7\u00e3o de {entity_name}", + "set_tilt_position": "Definir a posi\u00e7\u00e3o de inclina\u00e7\u00e3o de {entity_name}" + }, "condition_type": { "is_closed": "{entity_name} est\u00e1 fechada", "is_closing": "{entity_name} est\u00e1 a fechar", diff --git a/homeassistant/components/daikin/translations/de.json b/homeassistant/components/daikin/translations/de.json index e8e3cd0bf6a..b3b1b10d77a 100644 --- a/homeassistant/components/daikin/translations/de.json +++ b/homeassistant/components/daikin/translations/de.json @@ -11,7 +11,7 @@ "data": { "host": "Host", "key": "Authentifizierungsschl\u00fcssel (wird nur von BRP072C / Zena-Ger\u00e4ten verwendet)", - "password": "Ger\u00e4tekennwort (wird nur von SKYFi-Ger\u00e4ten verwendet)" + "password": "Passwort" }, "description": "Gib die IP-Adresse deiner Daikin AC ein.", "title": "Daikin AC konfigurieren" diff --git a/homeassistant/components/daikin/translations/lb.json b/homeassistant/components/daikin/translations/lb.json index 16d7caf4b37..97c9d3a19dc 100644 --- a/homeassistant/components/daikin/translations/lb.json +++ b/homeassistant/components/daikin/translations/lb.json @@ -12,10 +12,10 @@ "user": { "data": { "host": "Apparat", - "key": "Authentifikatiouns Schl\u00ebssel (n\u00ebmme vu BRP072C/Zena Apparater benotzt)", - "password": "Passwuert vum Apparat (n\u00ebmme vun SKYFi Apparater benotzt)" + "key": "API Schl\u00ebssel", + "password": "Passwuert" }, - "description": "Gitt d'IP Adresse vum Daikin AC an:", + "description": "Gitt d'IP Adresse vum Daikin AC an.\n\nRemarque: API Schl\u00ebssel a Passwuert gi vu BRP072Cxx a SKYFi Apparater respektiv benotzt.", "title": "Daikin AC konfigur\u00e9ieren" } } diff --git a/homeassistant/components/demo/translations/lb.json b/homeassistant/components/demo/translations/lb.json index 864a3603f3d..e138b7d7fa4 100644 --- a/homeassistant/components/demo/translations/lb.json +++ b/homeassistant/components/demo/translations/lb.json @@ -1,12 +1,6 @@ { "options": { "step": { - "init": { - "data": { - "one": "Een", - "other": "M\u00e9i" - } - }, "options_1": { "data": { "bool": "Optionelle Boolean", diff --git a/homeassistant/components/devolo_home_control/translations/lb.json b/homeassistant/components/devolo_home_control/translations/lb.json index 1976e953f8a..f071087dba5 100644 --- a/homeassistant/components/devolo_home_control/translations/lb.json +++ b/homeassistant/components/devolo_home_control/translations/lb.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "D\u00ebs Home Control Zentrale ass scho konfigur\u00e9iert." + "already_configured": "D\u00ebs Home Control Zentrale g\u00ebtt scho benotzt." }, "error": { "invalid_credentials": "Ong\u00ebltege Benotzernumm an/oder Passwuert" @@ -12,7 +12,7 @@ "home_control_url": "Home Control URL", "mydevolo_url": "mydevolo URL", "password": "Passwuert", - "username": "Benotzernumm" + "username": "E-Mail-Address / devolo ID" }, "title": "devolo Home Control" } diff --git a/homeassistant/components/devolo_home_control/translations/no.json b/homeassistant/components/devolo_home_control/translations/no.json index 5bf7990ff59..19c8d2653c1 100644 --- a/homeassistant/components/devolo_home_control/translations/no.json +++ b/homeassistant/components/devolo_home_control/translations/no.json @@ -12,7 +12,7 @@ "home_control_url": "Home Control URL", "mydevolo_url": "mydevolo URL", "password": "Passord", - "username": "Brukernavn" + "username": "E-postadresse / devolo-ID" }, "title": "" } diff --git a/homeassistant/components/directv/translations/de.json b/homeassistant/components/directv/translations/de.json index 57d3c41b9d1..95bd807c048 100644 --- a/homeassistant/components/directv/translations/de.json +++ b/homeassistant/components/directv/translations/de.json @@ -1,11 +1,11 @@ { "config": { "abort": { - "already_configured": "Der DirecTV-Empf\u00e4nger ist bereits konfiguriert", + "already_configured": "Das Ger\u00e4t ist bereits konfiguriert.", "unknown": "Unerwarteter Fehler" }, "error": { - "cannot_connect": "Verbindung fehlgeschlagen, versuchen Sie es erneut" + "cannot_connect": "Verbindung fehlgeschlagen" }, "flow_title": "DirecTV: {name}", "step": { @@ -18,7 +18,7 @@ }, "user": { "data": { - "host": "Host oder IP-Adresse" + "host": "Host" } } } diff --git a/homeassistant/components/directv/translations/lb.json b/homeassistant/components/directv/translations/lb.json index cc54cfc9567..3e6ff88138c 100644 --- a/homeassistant/components/directv/translations/lb.json +++ b/homeassistant/components/directv/translations/lb.json @@ -1,24 +1,20 @@ { "config": { "abort": { - "already_configured": "DirecTV ass scho konfigur\u00e9iert", + "already_configured": "Apparat ass scho konfigur\u00e9iert", "unknown": "Onerwaarte Feeler" }, "error": { - "cannot_connect": "Feeler beim verbannen, prob\u00e9ier w.e.g. nach emol." + "cannot_connect": "Feeler beim verbannen" }, "flow_title": "DirecTV: {name}", "step": { "ssdp_confirm": { - "data": { - "one": "Een", - "other": "Aner" - }, "description": "Soll {name} konfigur\u00e9iert ginn?" }, "user": { "data": { - "host": "Numm oder IP Adresse" + "host": "Host" } } } diff --git a/homeassistant/components/directv/translations/pt.json b/homeassistant/components/directv/translations/pt.json new file mode 100644 index 00000000000..ce7cbc3f548 --- /dev/null +++ b/homeassistant/components/directv/translations/pt.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "user": { + "data": { + "host": "Servidor" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/doorbird/translations/de.json b/homeassistant/components/doorbird/translations/de.json index 0544374ea0f..62bb11d6a8c 100644 --- a/homeassistant/components/doorbird/translations/de.json +++ b/homeassistant/components/doorbird/translations/de.json @@ -14,7 +14,7 @@ "step": { "user": { "data": { - "host": "Host (IP-Adresse)", + "host": "Host", "name": "Ger\u00e4tename", "password": "Passwort", "username": "Benutzername" diff --git a/homeassistant/components/doorbird/translations/lb.json b/homeassistant/components/doorbird/translations/lb.json index b41931be828..d7ffd9577dd 100644 --- a/homeassistant/components/doorbird/translations/lb.json +++ b/homeassistant/components/doorbird/translations/lb.json @@ -6,7 +6,7 @@ "not_doorbird_device": "D\u00ebsen Apparat ass kee DoorBird" }, "error": { - "cannot_connect": "Feeler beim verbannen, prob\u00e9ier w.e.g. nach emol.", + "cannot_connect": "Feeler beim verbannen", "invalid_auth": "Ong\u00eblteg Authentifikatioun", "unknown": "Onerwaarte Feeler" }, @@ -14,7 +14,7 @@ "step": { "user": { "data": { - "host": "Numm (IP Adresse)", + "host": "Host", "name": "Numm vum Apparat", "password": "Passwuert", "username": "Benotzernumm" diff --git a/homeassistant/components/doorbird/translations/pt.json b/homeassistant/components/doorbird/translations/pt.json index 343bf7fe5a5..f30ea68010b 100644 --- a/homeassistant/components/doorbird/translations/pt.json +++ b/homeassistant/components/doorbird/translations/pt.json @@ -3,6 +3,7 @@ "step": { "user": { "data": { + "host": "Servidor", "name": "Nome do dispositivo" } } diff --git a/homeassistant/components/dunehd/translations/ca.json b/homeassistant/components/dunehd/translations/ca.json new file mode 100644 index 00000000000..b1679a414c0 --- /dev/null +++ b/homeassistant/components/dunehd/translations/ca.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "El dispositiu ja est\u00e0 configurat" + }, + "error": { + "already_configured": "El dispositiu ja est\u00e0 configurat", + "cannot_connect": "No s'ha pogut connectar", + "invalid_host": "Nom de l'amfitri\u00f3 o l'adre\u00e7a IP inv\u00e0lids." + }, + "step": { + "user": { + "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.", + "title": "Dune HD" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/dunehd/translations/de.json b/homeassistant/components/dunehd/translations/de.json new file mode 100644 index 00000000000..57856b68421 --- /dev/null +++ b/homeassistant/components/dunehd/translations/de.json @@ -0,0 +1,20 @@ +{ + "config": { + "abort": { + "already_configured": "Ger\u00e4t ist bereits konfiguriert" + }, + "error": { + "already_configured": "Ger\u00e4t ist bereits konfiguriert", + "cannot_connect": "Verbindung fehlgeschlagen", + "invalid_host": "Ung\u00fcltiger Hostname oder IP-Adresse." + }, + "step": { + "user": { + "data": { + "host": "Host" + }, + "title": "Dune HD" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/dunehd/translations/en.json b/homeassistant/components/dunehd/translations/en.json new file mode 100644 index 00000000000..6bf0cf23e37 --- /dev/null +++ b/homeassistant/components/dunehd/translations/en.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "Device is already configured" + }, + "error": { + "already_configured": "Device is already configured", + "cannot_connect": "Failed to connect", + "invalid_host": "Invalid hostname or IP address." + }, + "step": { + "user": { + "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.", + "title": "Dune HD" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/dunehd/translations/es.json b/homeassistant/components/dunehd/translations/es.json new file mode 100644 index 00000000000..f0ae577f649 --- /dev/null +++ b/homeassistant/components/dunehd/translations/es.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "El dispositivo ya est\u00e1 configurado" + }, + "error": { + "already_configured": "El dispositivo ya est\u00e1 configurado", + "cannot_connect": "No se pudo conectar", + "invalid_host": "Nombre del host o direcci\u00f3n IP no v\u00e1lidos." + }, + "step": { + "user": { + "data": { + "host": "Host" + }, + "description": "Configura la integraci\u00f3n de Dune HD. Si tienes problemas con la configuraci\u00f3n, ve a: https://www.home-assistant.io/integrations/dunehd \n\n Aseg\u00farate de que tu reproductor est\u00e1 encendido.", + "title": "Dune HD" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/dunehd/translations/fr.json b/homeassistant/components/dunehd/translations/fr.json new file mode 100644 index 00000000000..7547ceadb72 --- /dev/null +++ b/homeassistant/components/dunehd/translations/fr.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "L'appareil est d\u00e9j\u00e0 configur\u00e9" + }, + "error": { + "already_configured": "L'appareil est d\u00e9j\u00e0 configur\u00e9", + "cannot_connect": "\u00c9chec de connexion", + "invalid_host": "Nom d'h\u00f4te ou adresse IP invalide." + }, + "step": { + "user": { + "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.", + "title": "Dune HD" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/dunehd/translations/it.json b/homeassistant/components/dunehd/translations/it.json new file mode 100644 index 00000000000..34086229986 --- /dev/null +++ b/homeassistant/components/dunehd/translations/it.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "Il dispositivo \u00e8 gi\u00e0 configurato" + }, + "error": { + "already_configured": "Il dispositivo \u00e8 gi\u00e0 configurato", + "cannot_connect": "Impossibile connettersi", + "invalid_host": "Nome host o indirizzo IP non valido." + }, + "step": { + "user": { + "data": { + "host": "Host" + }, + "description": "Configurare l'integrazione Dune HD. In caso di problemi con la configurazione, visitare: https://www.home-assistant.io/integrations/dunehd \n\n Assicurati che il tuo lettore sia acceso.", + "title": "Dune HD" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/dunehd/translations/ko.json b/homeassistant/components/dunehd/translations/ko.json new file mode 100644 index 00000000000..1ddcadf8350 --- /dev/null +++ b/homeassistant/components/dunehd/translations/ko.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "\uae30\uae30\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4" + }, + "error": { + "already_configured": "\uae30\uae30\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4", + "cannot_connect": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4", + "invalid_host": "\ud638\uc2a4\ud2b8 \uc774\ub984 \ub610\ub294 IP \uc8fc\uc18c\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4." + }, + "step": { + "user": { + "data": { + "host": "\ud638\uc2a4\ud2b8" + }, + "description": "Dune HD \ud1b5\ud569 \uad6c\uc131\uc694\uc18c\ub97c \uc124\uc815\ud574\uc8fc\uc138\uc694. \uad6c\uc131\uc5d0 \ubb38\uc81c\uac00 \uc788\ub294 \uacbd\uc6b0 https://www.home-assistant.io/integrations/dunehd \ub97c \ucc38\uace0\ud574\uc8fc\uc138\uc694.\n\n\uae30\uae30\uac00 \ucf1c\uc838 \uc788\ub294\uc9c0 \ud655\uc778\ud574\uc8fc\uc138\uc694.", + "title": "Dune HD" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/dunehd/translations/lb.json b/homeassistant/components/dunehd/translations/lb.json new file mode 100644 index 00000000000..035bd24f6b3 --- /dev/null +++ b/homeassistant/components/dunehd/translations/lb.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "Apparat ass scho konfigur\u00e9iert" + }, + "error": { + "already_configured": "Apparat ass scho konfigur\u00e9iert", + "cannot_connect": "Feeler beim verbannen", + "invalid_host": "Ong\u00ebltege Numm oder IP Adresse." + }, + "step": { + "user": { + "data": { + "host": "Host" + }, + "description": "Dune HD Integratioun ariichten. Falls et Problemer mat der Konfiguratioun g\u00ebtt g\u00e9i op:\nhttps://www.home-assistant.io/integrations/dunehd \nStell s\u00e9cher dass d\u00e4in Ofspiller un ass.", + "title": "Dune HD" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/dunehd/translations/no.json b/homeassistant/components/dunehd/translations/no.json new file mode 100644 index 00000000000..061809a1c30 --- /dev/null +++ b/homeassistant/components/dunehd/translations/no.json @@ -0,0 +1,13 @@ +{ + "config": { + "error": { + "invalid_host": "Ugyldig vertsnavn eller IP-adresse." + }, + "step": { + "user": { + "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.", + "title": "" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/dunehd/translations/pl.json b/homeassistant/components/dunehd/translations/pl.json new file mode 100644 index 00000000000..2e0e2b352ca --- /dev/null +++ b/homeassistant/components/dunehd/translations/pl.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "Urz\u0105dzenie jest ju\u017c skonfigurowane." + }, + "error": { + "already_configured": "Urz\u0105dzenie jest ju\u017c skonfigurowane.", + "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia.", + "invalid_host": "Nieprawid\u0142owa nazwa hosta lub adres IP." + }, + "step": { + "user": { + "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.", + "title": "Dune HD" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/dunehd/translations/pt.json b/homeassistant/components/dunehd/translations/pt.json new file mode 100644 index 00000000000..ce7cbc3f548 --- /dev/null +++ b/homeassistant/components/dunehd/translations/pt.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "user": { + "data": { + "host": "Servidor" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/dunehd/translations/ru.json b/homeassistant/components/dunehd/translations/ru.json new file mode 100644 index 00000000000..04f2dc6dd0f --- /dev/null +++ b/homeassistant/components/dunehd/translations/ru.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430." + }, + "error": { + "already_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.", + "cannot_connect": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.", + "invalid_host": "\u041d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u0438\u043b\u0438 IP-\u0430\u0434\u0440\u0435\u0441." + }, + "step": { + "user": { + "data": { + "host": "\u0425\u043e\u0441\u0442" + }, + "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 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.", + "title": "Dune HD" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/dunehd/translations/zh-Hant.json b/homeassistant/components/dunehd/translations/zh-Hant.json new file mode 100644 index 00000000000..2370ebaf6b1 --- /dev/null +++ b/homeassistant/components/dunehd/translations/zh-Hant.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "\u8a2d\u5099\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210" + }, + "error": { + "already_configured": "\u8a2d\u5099\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210", + "cannot_connect": "\u9023\u7dda\u5931\u6557", + "invalid_host": "\u7121\u6548\u4e3b\u6a5f\u540d\u6216 IP \u4f4d\u5740" + }, + "step": { + "user": { + "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", + "title": "Dune HD" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/ecobee/translations/de.json b/homeassistant/components/ecobee/translations/de.json index d0be33847c2..2348edc9182 100644 --- a/homeassistant/components/ecobee/translations/de.json +++ b/homeassistant/components/ecobee/translations/de.json @@ -14,7 +14,7 @@ }, "user": { "data": { - "api_key": "API Key" + "api_key": "API Schl\u00fcssel" }, "description": "Bitte gib den von ecobee.com erhaltenen API-Schl\u00fcssel ein.", "title": "ecobee API-Schl\u00fcssel" diff --git a/homeassistant/components/elgato/translations/de.json b/homeassistant/components/elgato/translations/de.json index 8387f51e79f..1ceac4a246c 100644 --- a/homeassistant/components/elgato/translations/de.json +++ b/homeassistant/components/elgato/translations/de.json @@ -11,8 +11,8 @@ "step": { "user": { "data": { - "host": "Host oder IP-Adresse", - "port": "Port-Nummer" + "host": "Host", + "port": "Port" }, "description": "Richten dein Elgato Key Light f\u00fcr die Integration mit Home Assistant ein." }, diff --git a/homeassistant/components/elgato/translations/lb.json b/homeassistant/components/elgato/translations/lb.json index 02056dda421..4afde6d8798 100644 --- a/homeassistant/components/elgato/translations/lb.json +++ b/homeassistant/components/elgato/translations/lb.json @@ -11,8 +11,8 @@ "step": { "user": { "data": { - "host": "Numm oder IP Adresse", - "port": "Port Nummer" + "host": "Host", + "port": "Port" }, "description": "\u00c4ren Elgator Key Light als Integratioun mam Home Assistant ariichten." }, diff --git a/homeassistant/components/elkm1/translations/de.json b/homeassistant/components/elkm1/translations/de.json index 1574af9fa6c..8c562a75026 100644 --- a/homeassistant/components/elkm1/translations/de.json +++ b/homeassistant/components/elkm1/translations/de.json @@ -13,11 +13,11 @@ "user": { "data": { "address": "Die IP-Adresse, die Domain oder der serielle Port bei einer seriellen Verbindung.", - "password": "Passwort (Nur sicher).", + "password": "Passwort", "prefix": "Ein eindeutiges Pr\u00e4fix (leer lassen, wenn Sie nur einen ElkM1 haben).", "protocol": "Protokoll", "temperature_unit": "Die von ElkM1 verwendete Temperatureinheit.", - "username": "Benutzername (Nur sicher)." + "username": "Benutzername" }, "description": "Die Adresszeichenfolge muss in der Form 'adresse[:port]' f\u00fcr 'sicher' und 'nicht sicher' vorliegen. Beispiel: '192.168.1.1'. Der Port ist optional und standardm\u00e4\u00dfig 2101 f\u00fcr \"nicht sicher\" und 2601 f\u00fcr \"sicher\". F\u00fcr das serielle Protokoll muss die Adresse die Form 'tty[:baud]' haben. Beispiel: '/dev/ttyS1'. Der Baudrate ist optional und standardm\u00e4\u00dfig 115200.", "title": "Stellen Sie eine Verbindung zur Elk-M1-Steuerung her" diff --git a/homeassistant/components/elkm1/translations/lb.json b/homeassistant/components/elkm1/translations/lb.json index 0579e1474f6..e6bbb060152 100644 --- a/homeassistant/components/elkm1/translations/lb.json +++ b/homeassistant/components/elkm1/translations/lb.json @@ -13,11 +13,11 @@ "user": { "data": { "address": "IP Adress oder Domain oder Serielle Port falls d'Verbindung seriell ass.", - "password": "Passwuert (n\u00ebmmen ges\u00e9chert)", + "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 (n\u00ebmmen ges\u00e9chert)" + "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/flick_electric/translations/fr.json b/homeassistant/components/flick_electric/translations/fr.json index be2135d1e86..a11882e7dcc 100644 --- a/homeassistant/components/flick_electric/translations/fr.json +++ b/homeassistant/components/flick_electric/translations/fr.json @@ -1,15 +1,19 @@ { "config": { "error": { + "invalid_auth": "Authentification non valide", "unknown": "Erreur inattendue" }, "step": { "user": { "data": { + "client_id": "ID client (facultatif)", + "client_secret": "Secret client (facultatif)", "password": "Mot de passe", "username": "Nom d'utilisateur" } } } - } + }, + "title": "Flick Electric" } \ No newline at end of file diff --git a/homeassistant/components/forked_daapd/translations/fr.json b/homeassistant/components/forked_daapd/translations/fr.json new file mode 100644 index 00000000000..f3586bb49bb --- /dev/null +++ b/homeassistant/components/forked_daapd/translations/fr.json @@ -0,0 +1,36 @@ +{ + "config": { + "abort": { + "already_configured": "Le p\u00e9riph\u00e9rique est d\u00e9j\u00e0 configur\u00e9.", + "not_forked_daapd": "Le p\u00e9riph\u00e9rique n'est pas un serveur forked-daapd." + }, + "error": { + "unknown_error": "Erreur inconnue", + "websocket_not_enabled": "le socket web du serveur forked-daapd n'est pas activ\u00e9.", + "wrong_host_or_port": "Impossible de se connecter. Veuillez v\u00e9rifier l'h\u00f4te et le port.", + "wrong_password": "Mot de passe incorrect.", + "wrong_server_type": "L'int\u00e9gration forked-daapd n\u00e9cessite un serveur forked-daapd avec la version > = 27.0." + }, + "flow_title": "serveur forked-daapd: {name} ( {host} )", + "step": { + "user": { + "data": { + "host": "H\u00f4te", + "name": "Nom familier", + "password": "Mot de passe API (laissez vide si aucun mot de passe)", + "port": "Port API" + }, + "title": "Configurer le p\u00e9riph\u00e9rique forked-daapd" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "max_playlists": "Nombre maximal de listes de lecture utilis\u00e9es comme sources" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/forked_daapd/translations/pt.json b/homeassistant/components/forked_daapd/translations/pt.json new file mode 100644 index 00000000000..ce7cbc3f548 --- /dev/null +++ b/homeassistant/components/forked_daapd/translations/pt.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "user": { + "data": { + "host": "Servidor" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/freebox/translations/pt.json b/homeassistant/components/freebox/translations/pt.json new file mode 100644 index 00000000000..09e13bc2007 --- /dev/null +++ b/homeassistant/components/freebox/translations/pt.json @@ -0,0 +1,15 @@ +{ + "config": { + "abort": { + "already_configured": "Servidor j\u00e1 configurado" + }, + "step": { + "user": { + "data": { + "host": "Servidor", + "port": "Porta" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/fritzbox/translations/de.json b/homeassistant/components/fritzbox/translations/de.json index e6e485497a3..ac2f4b2d401 100644 --- a/homeassistant/components/fritzbox/translations/de.json +++ b/homeassistant/components/fritzbox/translations/de.json @@ -20,7 +20,7 @@ }, "user": { "data": { - "host": "Host oder IP-Adresse", + "host": "Host", "password": "Passwort", "username": "Benutzername" }, diff --git a/homeassistant/components/fritzbox/translations/lb.json b/homeassistant/components/fritzbox/translations/lb.json index 12ff01c1306..bfbbeb22605 100644 --- a/homeassistant/components/fritzbox/translations/lb.json +++ b/homeassistant/components/fritzbox/translations/lb.json @@ -20,7 +20,7 @@ }, "user": { "data": { - "host": "Numm oder IP Adresse", + "host": "Host", "password": "Passwuert", "username": "Benotzernumm" }, diff --git a/homeassistant/components/fritzbox/translations/pt.json b/homeassistant/components/fritzbox/translations/pt.json index bd20deada06..4743c909f2e 100644 --- a/homeassistant/components/fritzbox/translations/pt.json +++ b/homeassistant/components/fritzbox/translations/pt.json @@ -12,6 +12,7 @@ }, "user": { "data": { + "host": "Servidor", "password": "Palavra-passe", "username": "Nome de Utilizador" } diff --git a/homeassistant/components/garmin_connect/translations/lb.json b/homeassistant/components/garmin_connect/translations/lb.json index 6a5b859c3e1..136f2bff5d3 100644 --- a/homeassistant/components/garmin_connect/translations/lb.json +++ b/homeassistant/components/garmin_connect/translations/lb.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured": "D\u00ebse Kont ass scho konfigur\u00e9iert" + "already_configured": "Kont ass scho konfigur\u00e9iert" }, "error": { "cannot_connect": "Feeler beim verbannen, prob\u00e9iert w.e.g. nach emol.", diff --git a/homeassistant/components/glances/translations/pt.json b/homeassistant/components/glances/translations/pt.json index b4642359973..0a25252f553 100644 --- a/homeassistant/components/glances/translations/pt.json +++ b/homeassistant/components/glances/translations/pt.json @@ -1,8 +1,15 @@ { "config": { + "abort": { + "already_configured": "Servidor j\u00e1 configurado" + }, + "error": { + "cannot_connect": "N\u00e3o \u00e9 poss\u00edvel ligar ao servidor." + }, "step": { "user": { "data": { + "host": "Servidor", "password": "Palavra-passe", "username": "Nome de Utilizador" } diff --git a/homeassistant/components/gogogate2/translations/fr.json b/homeassistant/components/gogogate2/translations/fr.json new file mode 100644 index 00000000000..478e7e8ccf8 --- /dev/null +++ b/homeassistant/components/gogogate2/translations/fr.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "cannot_connect": "\u00c9chec de connexion" + }, + "error": { + "cannot_connect": "\u00c9chec de connexion", + "invalid_auth": "Authentification invalide" + }, + "step": { + "user": { + "data": { + "ip_address": "Adresse IP", + "password": "Mot de passe", + "username": "Nom d'utilisateur" + }, + "description": "Fournissez les informations requises ci-dessous.", + "title": "Configurer GogoGate2" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/group/translations/lb.json b/homeassistant/components/group/translations/lb.json index aaa9e7b9d81..0bc6111dc96 100644 --- a/homeassistant/components/group/translations/lb.json +++ b/homeassistant/components/group/translations/lb.json @@ -2,9 +2,7 @@ "state": { "_": { "closed": "Zou", - "home": "Doheem", "locked": "Gespaart", - "not_home": "\u00cbnnerwee", "off": "Aus", "ok": "OK", "on": "Un", diff --git a/homeassistant/components/guardian/translations/de.json b/homeassistant/components/guardian/translations/de.json new file mode 100644 index 00000000000..d148ab8c382 --- /dev/null +++ b/homeassistant/components/guardian/translations/de.json @@ -0,0 +1,16 @@ +{ + "config": { + "abort": { + "connection_error": "Verbindung zum Guardian-Ger\u00e4t fehlgeschlagen." + }, + "step": { + "user": { + "data": { + "ip_address": "IP-Adresse", + "port": "Port" + } + } + } + }, + "title": "Elexa Guardian" +} \ No newline at end of file diff --git a/homeassistant/components/guardian/translations/fr.json b/homeassistant/components/guardian/translations/fr.json new file mode 100644 index 00000000000..52742b4e816 --- /dev/null +++ b/homeassistant/components/guardian/translations/fr.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "already_configured": "Ce p\u00e9riph\u00e9rique Guardian a d\u00e9j\u00e0 \u00e9t\u00e9 configur\u00e9.", + "already_in_progress": "La configuration de l'appareil Guardian est d\u00e9j\u00e0 en cours.", + "connection_error": "Impossible de se connecter au p\u00e9riph\u00e9rique Guardian." + }, + "step": { + "user": { + "data": { + "ip_address": "Adresse IP", + "port": "Port" + }, + "description": "Configurez un appareil Elexa Guardian local." + }, + "zeroconf_confirm": { + "description": "Voulez-vous configurer cet appareil Guardian?" + } + } + }, + "title": "Elexa Guardian" +} \ No newline at end of file diff --git a/homeassistant/components/hangouts/translations/lb.json b/homeassistant/components/hangouts/translations/lb.json index fa146adde23..de50fda49a1 100644 --- a/homeassistant/components/hangouts/translations/lb.json +++ b/homeassistant/components/hangouts/translations/lb.json @@ -20,7 +20,7 @@ "user": { "data": { "authorization_code": "Autorisatioun's Code (n\u00e9ideg fir eng manuell Authentifikatioun)", - "email": "E-Mail Adress", + "email": "E-Mail", "password": "Passwuert" }, "description": "Eidel", diff --git a/homeassistant/components/hangouts/translations/pt.json b/homeassistant/components/hangouts/translations/pt.json index d85caeb2bbb..093deaecc15 100644 --- a/homeassistant/components/hangouts/translations/pt.json +++ b/homeassistant/components/hangouts/translations/pt.json @@ -19,7 +19,7 @@ }, "user": { "data": { - "email": "Endere\u00e7o de e-mail", + "email": "E-mail", "password": "Palavra-passe" }, "description": "Vazio", diff --git a/homeassistant/components/harmony/translations/de.json b/homeassistant/components/harmony/translations/de.json index ae640f12870..f10dfe1432c 100644 --- a/homeassistant/components/harmony/translations/de.json +++ b/homeassistant/components/harmony/translations/de.json @@ -15,7 +15,7 @@ }, "user": { "data": { - "host": "Hostname oder IP-Adresse", + "host": "Host", "name": "Hub-Name" }, "title": "Richten Sie den Logitech Harmony Hub ein" diff --git a/homeassistant/components/harmony/translations/lb.json b/homeassistant/components/harmony/translations/lb.json index abcc0948835..91932fa3a04 100644 --- a/homeassistant/components/harmony/translations/lb.json +++ b/homeassistant/components/harmony/translations/lb.json @@ -15,7 +15,7 @@ }, "user": { "data": { - "host": "Host Numm oder IP Adresse", + "host": "Host", "name": "Numm vum Hub" }, "title": "Logitech Harmony Hub ariichten" diff --git a/homeassistant/components/harmony/translations/pt.json b/homeassistant/components/harmony/translations/pt.json new file mode 100644 index 00000000000..ce7cbc3f548 --- /dev/null +++ b/homeassistant/components/harmony/translations/pt.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "user": { + "data": { + "host": "Servidor" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/homekit/translations/lb.json b/homeassistant/components/homekit/translations/lb.json index 85a578ec567..14c385f213b 100644 --- a/homeassistant/components/homekit/translations/lb.json +++ b/homeassistant/components/homekit/translations/lb.json @@ -23,8 +23,10 @@ "advanced": { "data": { "auto_start": "Autostart (d\u00e9aktiv\u00e9ier falls Z-Wave oder een aanere verz\u00f6gerte Start System benotzt g\u00ebtt)", - "safe_mode": "Safe Mode (n\u00ebmmen aktiv\u00e9ieren wann Kopplung net geht)" + "safe_mode": "Safe Mode (n\u00ebmmen aktiv\u00e9ieren wann Kopplung net geht)", + "zeroconf_default_interface": "Standard Zeroconf Interface benotzen (aktiv\u00e9ieren falls d'Bridge net an der Home App fonnt g\u00ebtt)" }, + "description": "D\u00ebs Astellungen brauche n\u00ebmmen ajust\u00e9iert ze ginn fals d'HomeKit Bridge net funktion\u00e9iert.", "title": "Erweidert Konfiguratioun" }, "cameras": { @@ -37,12 +39,15 @@ "exclude": { "data": { "exclude_entities": "Entit\u00e9iten d\u00e9i ausgeschloss solle ginn" - } + }, + "description": "Wiel d'Entit\u00e9iten aus d\u00e9i NET sollen iwwerbr\u00e9ckt ginn.", + "title": "Entit\u00e9iten aus den ausgewielten Domaine vun der Bridge ausschl\u00e9issen" }, "init": { "data": { "include_domains": "Domaine d\u00e9i solle ageschloss ginn" }, + "description": "Entit\u00e9iten an den \"Domaine fir anzeschl\u00e9issen\" ginn op HomeKit iwwerbr\u00e9ckt. Am n\u00e4chste Schr\u00ebtt k\u00ebnnen d'Entit\u00e9iten ausgewielt ginn d\u00e9i sollen vun d\u00ebser L\u00ebscht ausgeschloss ginn.", "title": "Domaine auswielen fir an d'Bridge" }, "yaml": { diff --git a/homeassistant/components/homekit/translations/zh-Hans.json b/homeassistant/components/homekit/translations/zh-Hans.json index c47a6fe104f..24d263657af 100644 --- a/homeassistant/components/homekit/translations/zh-Hans.json +++ b/homeassistant/components/homekit/translations/zh-Hans.json @@ -29,6 +29,13 @@ "description": "\u8fd9\u4e9b\u8bbe\u7f6e\u53ea\u6709\u5f53 HomeKit \u6865\u63a5\u5668\u529f\u80fd\u4e0d\u6b63\u5e38\u65f6\u624d\u9700\u8981\u8c03\u6574\u3002", "title": "\u9ad8\u7ea7\u914d\u7f6e" }, + "cameras": { + "data": { + "camera_copy": "\u652f\u6301\u539f\u751f H.264 \u63a8\u6d41\u7684\u6444\u50cf\u673a" + }, + "description": "\u67e5\u627e\u6240\u6709\u652f\u6301\u539f\u751f H.264 \u63a8\u6d41\u7684\u6444\u50cf\u673a\u3002\u5982\u679c\u6444\u50cf\u673a\u8f93\u51fa\u7684\u4e0d\u662f H.264 \u6d41\uff0c\u7cfb\u7edf\u4f1a\u5c06\u89c6\u9891\u8f6c\u7801\u4e3a H.264 \u4ee5\u4f9b HomeKit \u4f7f\u7528\u3002\u8f6c\u7801\u9700\u8981\u9ad8\u6027\u80fd\u7684 CPU\uff0c\u56e0\u6b64\u5728\u5f00\u53d1\u677f\u8ba1\u7b97\u673a\u4e0a\u5f88\u96be\u5b8c\u6210\u3002", + "title": "\u8bf7\u9009\u62e9\u6444\u50cf\u673a\u7684\u89c6\u9891\u7f16\u7801\u3002" + }, "exclude": { "data": { "exclude_entities": "\u8981\u6392\u9664\u7684\u5b9e\u4f53" @@ -42,6 +49,10 @@ }, "description": "\u201c\u8981\u5305\u542b\u7684\u57df\u201d\u4e2d\u7684\u5b9e\u4f53\u5c06\u88ab\u6865\u63a5\u5230 HomeKit\u3002\u5728\u4e0b\u4e00\u9875\u53ef\u4ee5\u9009\u62e9\u8981\u6392\u9664\u5176\u4e2d\u7684\u54ea\u4e9b\u5b9e\u4f53\u3002", "title": "\u9009\u62e9\u8981\u6865\u63a5\u7684\u57df\u3002" + }, + "yaml": { + "description": "\u8be5\u6761\u76ee\u662f\u901a\u8fc7 YAML \u63a7\u5236\u7684", + "title": "\u8c03\u6574 HomeKit \u6865\u63a5\u5668\u9009\u9879" } } }, diff --git a/homeassistant/components/homekit_controller/translations/zh-Hans.json b/homeassistant/components/homekit_controller/translations/zh-Hans.json index a8360161c6a..56ba2c948a4 100644 --- a/homeassistant/components/homekit_controller/translations/zh-Hans.json +++ b/homeassistant/components/homekit_controller/translations/zh-Hans.json @@ -24,7 +24,7 @@ "data": { "pairing_code": "\u914d\u5bf9\u4ee3\u7801" }, - "description": "\u8f93\u5165\u60a8\u7684HomeKit\u914d\u5bf9\u4ee3\u7801\uff08\u683c\u5f0f\u4e3aXXX-XX-XXX\uff09\u4ee5\u4f7f\u7528\u6b64\u914d\u4ef6", + "description": "\u8f93\u5165\u60a8\u7684 HomeKit \u914d\u5bf9\u4ee3\u7801\uff08\u683c\u5f0f\u4e3a XXX-XX-XXX\uff09\u4ee5\u4f7f\u7528\u6b64\u914d\u4ef6", "title": "\u4e0e HomeKit \u914d\u4ef6\u914d\u5bf9" }, "user": { @@ -36,5 +36,5 @@ } } }, - "title": "HomeKit \u914d\u4ef6" + "title": "HomeKit \u63a7\u5236\u5668" } \ No newline at end of file diff --git a/homeassistant/components/hunterdouglas_powerview/translations/pt.json b/homeassistant/components/hunterdouglas_powerview/translations/pt.json new file mode 100644 index 00000000000..f7dc708a2d6 --- /dev/null +++ b/homeassistant/components/hunterdouglas_powerview/translations/pt.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "user": { + "data": { + "host": "Endere\u00e7o IP" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/iaqualink/translations/de.json b/homeassistant/components/iaqualink/translations/de.json index 2b9e1068b60..619609c3ac7 100644 --- a/homeassistant/components/iaqualink/translations/de.json +++ b/homeassistant/components/iaqualink/translations/de.json @@ -10,7 +10,7 @@ "user": { "data": { "password": "Passwort", - "username": "Benutzername/E-Mail-Adresse" + "username": "Benutzername" }, "description": "Bitte gib den Benutzernamen und das Passwort f\u00fcr dein iAqualink-Konto ein.", "title": "Mit iAqualink verbinden" diff --git a/homeassistant/components/iaqualink/translations/lb.json b/homeassistant/components/iaqualink/translations/lb.json index b0d193254fa..5af83e1da82 100644 --- a/homeassistant/components/iaqualink/translations/lb.json +++ b/homeassistant/components/iaqualink/translations/lb.json @@ -10,7 +10,7 @@ "user": { "data": { "password": "Passwuert", - "username": "Benotzernumm / E-Mail Adresse" + "username": "Benotzernumm" }, "description": "Gitt den Benotzernumm an d'Passwuert fir \u00e4ren iAqualink Kont un.", "title": "Mat iAqualink verbannen" diff --git a/homeassistant/components/ipma/translations/pt.json b/homeassistant/components/ipma/translations/pt.json index 2e67da76241..3f25486c6a4 100644 --- a/homeassistant/components/ipma/translations/pt.json +++ b/homeassistant/components/ipma/translations/pt.json @@ -8,6 +8,7 @@ "data": { "latitude": "Latitude", "longitude": "Longitude", + "mode": "Modo", "name": "Nome" }, "description": "Instituto Portugu\u00eas do Mar e Atmosfera", diff --git a/homeassistant/components/ipp/translations/de.json b/homeassistant/components/ipp/translations/de.json index 3ee2f2159b9..07d681f4172 100644 --- a/homeassistant/components/ipp/translations/de.json +++ b/homeassistant/components/ipp/translations/de.json @@ -1,8 +1,8 @@ { "config": { "abort": { - "already_configured": "Dieser Drucker ist bereits konfiguriert", - "connection_error": "Verbindung zum Drucker fehlgeschlagen.", + "already_configured": "Ger\u00e4t ist bereits konfiguriert", + "connection_error": "Verbindung fehlgeschlagen.", "connection_upgrade": "Verbindung zum Drucker fehlgeschlagen, da ein Verbindungsupgrade erforderlich ist.", "ipp_error": "IPP-Fehler festgestellt.", "ipp_version_error": "IPP-Version wird vom Drucker nicht unterst\u00fctzt.", @@ -10,7 +10,7 @@ "unique_id_required": "Ger\u00e4t fehlt die f\u00fcr die Entdeckung erforderliche eindeutige Identifizierung." }, "error": { - "connection_error": "Verbindung zum Drucker fehlgeschlagen.", + "connection_error": "Verbindung fehlgeschlagen", "connection_upgrade": "Verbindung zum Drucker fehlgeschlagen. Bitte versuchen Sie es erneut mit aktivierter SSL / TLS-Option." }, "flow_title": "Drucker: {name}", @@ -18,7 +18,7 @@ "user": { "data": { "base_path": "Relativer Pfad zum Drucker", - "host": "Host oder IP-Adresse", + "host": "Host", "port": "Port", "ssl": "Der Drucker unterst\u00fctzt die Kommunikation \u00fcber SSL / TLS", "verify_ssl": "Der Drucker verwendet ein ordnungsgem\u00e4\u00dfes SSL-Zertifikat" diff --git a/homeassistant/components/ipp/translations/fr.json b/homeassistant/components/ipp/translations/fr.json index b1833e6d557..caea4893062 100644 --- a/homeassistant/components/ipp/translations/fr.json +++ b/homeassistant/components/ipp/translations/fr.json @@ -6,7 +6,8 @@ "connection_upgrade": "Impossible de se connecter \u00e0 l'imprimante parce qu'une mise \u00e0 niveau de la connexion est n\u00e9cessaire.", "ipp_error": "Erreur IPP rencontr\u00e9e.", "ipp_version_error": "Version d'IPP non prise en charge par l'imprimante.", - "parse_error": "Impossible d'analyser la r\u00e9ponse de l'imprimante." + "parse_error": "Impossible d'analyser la r\u00e9ponse de l'imprimante.", + "unique_id_required": "Dispositif ne portant pas l'identification unique requise pour la d\u00e9couverte." }, "error": { "connection_error": "Impossible de se connecter \u00e0 l'imprimante.", diff --git a/homeassistant/components/ipp/translations/lb.json b/homeassistant/components/ipp/translations/lb.json index 5e5c9306061..0752e9ca64d 100644 --- a/homeassistant/components/ipp/translations/lb.json +++ b/homeassistant/components/ipp/translations/lb.json @@ -1,8 +1,8 @@ { "config": { "abort": { - "already_configured": "D\u00ebse Printer ass scho konfigur\u00e9iert.", - "connection_error": "Feeler beim verbannen mam Printer.", + "already_configured": "Apparat ass scho konfigur\u00e9iert.", + "connection_error": "Feeler beim verbannen", "connection_upgrade": "Feeler beim verbannen mam Printer well eng Aktualis\u00e9ierung vun der Verbindung erfuerderlech ass.", "ipp_error": "IPP Feeler opgetrueden.", "ipp_version_error": "IPP Versioun net vum Printer \u00ebnnerst\u00ebtzt.", @@ -10,7 +10,7 @@ "unique_id_required": "Dem Apparat feelt eng eenzegarteg Identifikatioun d\u00e9i ben\u00e9idegt ass fir d'Entdeckung." }, "error": { - "connection_error": "Feeler beim verbannen mam Printer.", + "connection_error": "Feeler beim verbannen", "connection_upgrade": "Feeler beim verbannen, prob\u00e9ier w.e.g. nach emol mat aktiv\u00e9ierter SSL/TLS Optioun." }, "flow_title": "Printer: {name}", @@ -18,7 +18,7 @@ "user": { "data": { "base_path": "Relative Pad zum Printer", - "host": "Numm oder IP Adresse", + "host": "Host", "port": "Port", "ssl": "Printer \u00ebnnerst\u00ebtze Kommunikatioun iwwer SSL/TLS", "verify_ssl": "Printer benotzt ee g\u00ebltegen SSL Zertifikat" @@ -27,7 +27,7 @@ "title": "\u00c4re Printer verbannen" }, "zeroconf_confirm": { - "description": "W\u00ebllt dir de Printer mam Numm `{name}` am Home Assistant dob\u00e4isetzen?", + "description": "Soll {name} konfigur\u00e9iert ginn?", "title": "Entdeckte Printer" } } diff --git a/homeassistant/components/ipp/translations/pt.json b/homeassistant/components/ipp/translations/pt.json index 742dd8621ec..260c0f9e357 100644 --- a/homeassistant/components/ipp/translations/pt.json +++ b/homeassistant/components/ipp/translations/pt.json @@ -3,6 +3,13 @@ "abort": { "ipp_error": "Erro IPP encontrado.", "ipp_version_error": "Vers\u00e3o IPP n\u00e3o suportada pela impressora." + }, + "step": { + "user": { + "data": { + "host": "Servidor" + } + } } } } \ No newline at end of file diff --git a/homeassistant/components/isy994/translations/de.json b/homeassistant/components/isy994/translations/de.json index a40ab60cd1e..b9c3362c488 100644 --- a/homeassistant/components/isy994/translations/de.json +++ b/homeassistant/components/isy994/translations/de.json @@ -1,5 +1,12 @@ { "config": { + "abort": { + "already_configured": "Ger\u00e4t ist bereits konfiguriert" + }, + "error": { + "cannot_connect": "Verbindung fehlgeschlagen", + "unknown": "Unerwarteter Fehler" + }, "step": { "user": { "data": { diff --git a/homeassistant/components/isy994/translations/fr.json b/homeassistant/components/isy994/translations/fr.json index d075764a7c5..a412420a915 100644 --- a/homeassistant/components/isy994/translations/fr.json +++ b/homeassistant/components/isy994/translations/fr.json @@ -1,5 +1,6 @@ { "config": { + "flow_title": "Appareils universels ISY994 {name} ( {host} )", "step": { "user": { "data": { diff --git a/homeassistant/components/konnected/translations/de.json b/homeassistant/components/konnected/translations/de.json index 3fd857851fb..ad2ed659522 100644 --- a/homeassistant/components/konnected/translations/de.json +++ b/homeassistant/components/konnected/translations/de.json @@ -20,8 +20,8 @@ }, "user": { "data": { - "host": "Konnected Ger\u00e4t IP-Adresse", - "port": "Konnected Device Port" + "host": "IP-Adresse", + "port": "Port" }, "description": "Bitte geben Sie die Hostinformationen f\u00fcr Ihr Konnected Panel ein." } diff --git a/homeassistant/components/konnected/translations/lb.json b/homeassistant/components/konnected/translations/lb.json index 1ef36601d04..8d0272a1ab5 100644 --- a/homeassistant/components/konnected/translations/lb.json +++ b/homeassistant/components/konnected/translations/lb.json @@ -20,8 +20,8 @@ }, "user": { "data": { - "host": "Konnected Apparat IP Adress", - "port": "Konnected Apparat Port" + "host": "IP Adress", + "port": "Port" }, "description": "Informatioune vum Konnected Panel aginn." } diff --git a/homeassistant/components/konnected/translations/pt.json b/homeassistant/components/konnected/translations/pt.json new file mode 100644 index 00000000000..f7dc708a2d6 --- /dev/null +++ b/homeassistant/components/konnected/translations/pt.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "user": { + "data": { + "host": "Endere\u00e7o IP" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/linky/translations/de.json b/homeassistant/components/linky/translations/de.json index c1f06d34a8f..c915ddf0881 100644 --- a/homeassistant/components/linky/translations/de.json +++ b/homeassistant/components/linky/translations/de.json @@ -13,7 +13,7 @@ "user": { "data": { "password": "Passwort", - "username": "E-Mail" + "username": "E-Mail-Adresse" }, "description": "Gib deine Zugangsdaten ein", "title": "Linky" diff --git a/homeassistant/components/logi_circle/translations/lb.json b/homeassistant/components/logi_circle/translations/lb.json index 1d19cb32b8c..dfa829ba8cd 100644 --- a/homeassistant/components/logi_circle/translations/lb.json +++ b/homeassistant/components/logi_circle/translations/lb.json @@ -16,7 +16,7 @@ }, "step": { "auth": { - "description": "Follegt dem Link \u00ebnnendr\u00ebnner an accept\u00e9iert den Acc\u00e8s zu \u00e4rem Logi Circle Kont , a kommt dann zer\u00e9ck heihin an dr\u00e9ck op ofsch\u00e9cken hei \u00ebnnen.\n\n[Link]({authorization_url})", + "description": "Follegt dem Link \u00ebnnendr\u00ebnner an **accept\u00e9iert** den Acc\u00e8s zu \u00e4rem Logi Circle Kont , a kommt dann zer\u00e9ck heihin an dr\u00e9ck op **ofsch\u00e9cken** hei \u00ebnnen.\n\n[Link]({authorization_url})", "title": "Mat Logi Circle authentifiz\u00e9ieren" }, "user": { diff --git a/homeassistant/components/melcloud/translations/de.json b/homeassistant/components/melcloud/translations/de.json index 2b4cf1316f3..640c96e47c4 100644 --- a/homeassistant/components/melcloud/translations/de.json +++ b/homeassistant/components/melcloud/translations/de.json @@ -11,8 +11,8 @@ "step": { "user": { "data": { - "password": "MELCloud Passwort.", - "username": "E-Mail-Adresse f\u00fcr die Anmeldung bei MELCloud." + "password": "Passwort", + "username": "E-Mail-Adresse" }, "description": "Verbinden Sie sich mit Ihrem MELCloud-Konto.", "title": "Stellen Sie eine Verbindung zu MELCloud her" diff --git a/homeassistant/components/melcloud/translations/lb.json b/homeassistant/components/melcloud/translations/lb.json index 9bcf41c23af..0abdc2b9187 100644 --- a/homeassistant/components/melcloud/translations/lb.json +++ b/homeassistant/components/melcloud/translations/lb.json @@ -11,8 +11,8 @@ "step": { "user": { "data": { - "password": "MELCloud Passwuert", - "username": "Email d\u00e9i benotz g\u00ebtt fir sech mat MELCloud ze verbannen" + "password": "Passwuert", + "username": "E-Mail" }, "description": "Verbann dech mat dengem MElCloud Kont.", "title": "Mat MELCloud verbannen" diff --git a/homeassistant/components/mikrotik/translations/pt.json b/homeassistant/components/mikrotik/translations/pt.json index b4642359973..e34c9db39f6 100644 --- a/homeassistant/components/mikrotik/translations/pt.json +++ b/homeassistant/components/mikrotik/translations/pt.json @@ -3,6 +3,7 @@ "step": { "user": { "data": { + "host": "Servidor", "password": "Palavra-passe", "username": "Nome de Utilizador" } diff --git a/homeassistant/components/mill/translations/de.json b/homeassistant/components/mill/translations/de.json new file mode 100644 index 00000000000..ad183cc2b8b --- /dev/null +++ b/homeassistant/components/mill/translations/de.json @@ -0,0 +1,18 @@ +{ + "config": { + "abort": { + "already_configured": "Account ist bereits konfiguriert" + }, + "error": { + "connection_error": "Verbindung fehlgeschlagen" + }, + "step": { + "user": { + "data": { + "password": "Passwort", + "username": "Benutzername" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/minecraft_server/translations/pt.json b/homeassistant/components/minecraft_server/translations/pt.json index 286cd58dd89..c7734c97b8f 100644 --- a/homeassistant/components/minecraft_server/translations/pt.json +++ b/homeassistant/components/minecraft_server/translations/pt.json @@ -1,8 +1,12 @@ { "config": { + "abort": { + "already_configured": "Servidor j\u00e1 configurado" + }, "step": { "user": { "data": { + "host": "Servidor", "name": "Nome" } } diff --git a/homeassistant/components/monoprice/translations/de.json b/homeassistant/components/monoprice/translations/de.json index 4c76920226e..820d3a972d3 100644 --- a/homeassistant/components/monoprice/translations/de.json +++ b/homeassistant/components/monoprice/translations/de.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "port": "Serielle Schnittstelle", + "port": "Port", "source_1": "Name der Quelle #1", "source_2": "Name der Quelle #2", "source_3": "Name der Quelle #3", diff --git a/homeassistant/components/monoprice/translations/lb.json b/homeassistant/components/monoprice/translations/lb.json index 6f530fa8a80..3482610e0b4 100644 --- a/homeassistant/components/monoprice/translations/lb.json +++ b/homeassistant/components/monoprice/translations/lb.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "port": "Serielle Port", + "port": "Port", "source_1": "Numm vun der Quell #1", "source_2": "Numm vun der Quell #2", "source_3": "Numm vun der Quell #3", diff --git a/homeassistant/components/moon/translations/sensor.pt.json b/homeassistant/components/moon/translations/sensor.pt.json index 99fb4be1f08..da84cfd744e 100644 --- a/homeassistant/components/moon/translations/sensor.pt.json +++ b/homeassistant/components/moon/translations/sensor.pt.json @@ -3,7 +3,11 @@ "moon__phase": { "first_quarter": "Quarto crescente", "full_moon": "Lua cheia", - "new_moon": "Lua nova" + "new_moon": "Lua nova", + "waning_crescent": "Minguante", + "waning_gibbous": "Minguante convexa", + "waxing_crescent": "Crescente", + "waxing_gibbous": "Crescente convexa" } } } \ No newline at end of file diff --git a/homeassistant/components/mqtt/translations/pt.json b/homeassistant/components/mqtt/translations/pt.json index 7fa10a5592b..70221342358 100644 --- a/homeassistant/components/mqtt/translations/pt.json +++ b/homeassistant/components/mqtt/translations/pt.json @@ -25,5 +25,17 @@ "title": "MQTT Broker atrav\u00e9s do add-on Hass.io" } } + }, + "device_automation": { + "trigger_subtype": { + "button_1": "Primeiro bot\u00e3o", + "button_2": "Segundo bot\u00e3o", + "button_3": "Terceiro bot\u00e3o", + "button_4": "Quarto bot\u00e3o", + "button_5": "Quinto bot\u00e3o", + "button_6": "Sexto bot\u00e3o", + "turn_off": "Desligar", + "turn_on": "Ligar" + } } } \ No newline at end of file diff --git a/homeassistant/components/netatmo/translations/es.json b/homeassistant/components/netatmo/translations/es.json index 566225c9a9c..2530af7c6c7 100644 --- a/homeassistant/components/netatmo/translations/es.json +++ b/homeassistant/components/netatmo/translations/es.json @@ -10,7 +10,7 @@ }, "step": { "pick_implementation": { - "title": "Seleccione un m\u00e9todo de autenticaci\u00f3n" + "title": "Selecciona un m\u00e9todo de autenticaci\u00f3n" } } } diff --git a/homeassistant/components/netatmo/translations/lb.json b/homeassistant/components/netatmo/translations/lb.json index 696844f79ae..3605a76b372 100644 --- a/homeassistant/components/netatmo/translations/lb.json +++ b/homeassistant/components/netatmo/translations/lb.json @@ -1,12 +1,12 @@ { "config": { "abort": { - "already_setup": "Dir k\u00ebnnt n\u00ebmmen een eenzegen Netatmo Kont konfigur\u00e9ieren.", + "already_setup": "Scho konfigur\u00e9iert. N\u00ebmmen eng Konfiguratioun ass m\u00e9iglech.", "authorize_url_timeout": "Z\u00e4itiwwerschreidung beim erstellen vun der Authorisatiouns URL", "missing_configuration": "D\u00ebs Komponent ass net konfigur\u00e9iert. Folleg w.e.g der Dokumentatioun." }, "create_entry": { - "default": "Erfollegr\u00e4ich mat Netatmo authentifiz\u00e9iert." + "default": "Erfollegr\u00e4ich authentifiz\u00e9iert." }, "step": { "pick_implementation": { diff --git a/homeassistant/components/notion/translations/de.json b/homeassistant/components/notion/translations/de.json index 4d587ba2e55..c9a3e9bd5a4 100644 --- a/homeassistant/components/notion/translations/de.json +++ b/homeassistant/components/notion/translations/de.json @@ -11,7 +11,7 @@ "user": { "data": { "password": "Passwort", - "username": "Benutzername/E-Mail-Adresse" + "username": "Benutzername" }, "title": "Informationen eingeben" } diff --git a/homeassistant/components/notion/translations/lb.json b/homeassistant/components/notion/translations/lb.json index c19a53619fe..5746e428ab7 100644 --- a/homeassistant/components/notion/translations/lb.json +++ b/homeassistant/components/notion/translations/lb.json @@ -11,7 +11,7 @@ "user": { "data": { "password": "Passwuert", - "username": "Benotzernumm/Email Adresse" + "username": "Benotzernumm" }, "title": "F\u00ebllt \u00e4r Informatiounen aus" } diff --git a/homeassistant/components/nws/translations/de.json b/homeassistant/components/nws/translations/de.json index 4acc4c1a3b6..1461d86b2e5 100644 --- a/homeassistant/components/nws/translations/de.json +++ b/homeassistant/components/nws/translations/de.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "api_key": "API-Schl\u00fcssel (E-Mail)", + "api_key": "API-Schl\u00fcssel", "latitude": "Breitengrad", "longitude": "L\u00e4ngengrad", "station": "METAR Stationscode" diff --git a/homeassistant/components/nws/translations/lb.json b/homeassistant/components/nws/translations/lb.json index 054e3bf9642..5b03ce5af1b 100644 --- a/homeassistant/components/nws/translations/lb.json +++ b/homeassistant/components/nws/translations/lb.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "api_key": "API Schl\u00ebssel (E-Mail)", + "api_key": "API Schl\u00ebssel", "latitude": "Breedegrad", "longitude": "L\u00e4ngegrad", "station": "METAR Statioun's Code" diff --git a/homeassistant/components/onvif/translations/fr.json b/homeassistant/components/onvif/translations/fr.json index b383aad3532..87b54bbeb97 100644 --- a/homeassistant/components/onvif/translations/fr.json +++ b/homeassistant/components/onvif/translations/fr.json @@ -33,6 +33,7 @@ "manual_input": { "data": { "host": "H\u00f4te", + "name": "Nom", "port": "Port" }, "title": "Configurer l\u2019appareil ONVIF" diff --git a/homeassistant/components/onvif/translations/pt.json b/homeassistant/components/onvif/translations/pt.json new file mode 100644 index 00000000000..a40bdf292ad --- /dev/null +++ b/homeassistant/components/onvif/translations/pt.json @@ -0,0 +1,58 @@ +{ + "config": { + "abort": { + "already_configured": "O dispositivo ONVIF j\u00e1 est\u00e1 configurado.", + "already_in_progress": "O fluxo de configura\u00e7\u00e3o para o dispositivo ONVIF j\u00e1 est\u00e1 em andamento.", + "no_h264": "N\u00e3o existem fluxos H264 dispon\u00edveis. Verifique a configura\u00e7\u00e3o de perfil no seu dispositivo.", + "no_mac": "N\u00e3o foi poss\u00edvel configurar o ID unico para o dispositivo ONVIF.", + "onvif_error": "Erro ao configurar o dispositivo ONVIF. Verifique os logs para obter mais informa\u00e7\u00f5es." + }, + "error": { + "connection_failed": "N\u00e3o foi poss\u00edvel ligar ao servi\u00e7o ONVIF com as credenciais fornecidas." + }, + "step": { + "auth": { + "data": { + "password": "Palavra-passe", + "username": "Utilizador" + }, + "title": "Configurar autentica\u00e7\u00e3o" + }, + "configure_profile": { + "data": { + "include": "Criar entidade da c\u00e2mara" + }, + "description": "Criar entidade de c\u00e2mera para {profile} com resolu\u00e7\u00e3o {resolution} ?", + "title": "Configurar Perfis" + }, + "device": { + "data": { + "host": "Selecione o dispositivo ONVIF descoberto" + }, + "title": "Selecione o dispositivo ONVIF" + }, + "manual_input": { + "data": { + "host": "Servidor", + "port": "Porta" + }, + "title": "Configurar dispositivo ONVIF" + }, + "user": { + "description": "Ao clickar submeter, iremos procurar na sua rede por dispositivos ONVIF que suportem o Perfil S.\n\nAlguns fabricantes come\u00e7aram a desabilitar o ONVIF por omiss\u00e3o. Por favor verifique que o ONVIF est\u00e1 activo na configura\u00e7\u00e3o da sua c\u00e2mara.", + "title": "Configura\u00e7\u00e3o do dispositivo ONVIF" + } + } + }, + "options": { + "step": { + "onvif_devices": { + "data": { + "extra_arguments": "Argumentos FFMPEG extras", + "rtsp_transport": "Mecanismo de transporte RTSP" + }, + "title": "Op\u00e7\u00f5es do dispositivo ONVIF" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/openuv/translations/de.json b/homeassistant/components/openuv/translations/de.json index d26ca0726b7..497955f9001 100644 --- a/homeassistant/components/openuv/translations/de.json +++ b/homeassistant/components/openuv/translations/de.json @@ -1,5 +1,8 @@ { "config": { + "abort": { + "already_configured": "Diese Koordinaten sind bereits registriert." + }, "error": { "identifier_exists": "Koordinaten existieren bereits", "invalid_api_key": "Ung\u00fcltiger API-Schl\u00fcssel" @@ -7,7 +10,7 @@ "step": { "user": { "data": { - "api_key": "OpenUV API-Schl\u00fcssel", + "api_key": "API-Schl\u00fcssel", "elevation": "H\u00f6he", "latitude": "Breitengrad", "longitude": "L\u00e4ngengrad" diff --git a/homeassistant/components/openuv/translations/fr.json b/homeassistant/components/openuv/translations/fr.json index a22b01f9488..f376898b9be 100644 --- a/homeassistant/components/openuv/translations/fr.json +++ b/homeassistant/components/openuv/translations/fr.json @@ -1,5 +1,8 @@ { "config": { + "abort": { + "already_configured": "Coordonn\u00e9es d\u00e9j\u00e0 enregistr\u00e9es" + }, "error": { "identifier_exists": "Coordonn\u00e9es d\u00e9j\u00e0 enregistr\u00e9es", "invalid_api_key": "Cl\u00e9 d'API invalide" diff --git a/homeassistant/components/openuv/translations/ko.json b/homeassistant/components/openuv/translations/ko.json index 9d252f9a945..d9cb9ec33d7 100644 --- a/homeassistant/components/openuv/translations/ko.json +++ b/homeassistant/components/openuv/translations/ko.json @@ -5,7 +5,7 @@ }, "error": { "identifier_exists": "\uc88c\ud45c\uac12\uc774 \uc774\ubbf8 \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4", - "invalid_api_key": "\uc798\ubabb\ub41c API \ud0a4" + "invalid_api_key": "API \ud0a4\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4" }, "step": { "user": { diff --git a/homeassistant/components/openuv/translations/lb.json b/homeassistant/components/openuv/translations/lb.json index 7ca44391875..b8916bbed9e 100644 --- a/homeassistant/components/openuv/translations/lb.json +++ b/homeassistant/components/openuv/translations/lb.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "api_key": "OpenUV API Schl\u00ebssel", + "api_key": "API Schl\u00ebssel", "elevation": "H\u00e9icht", "latitude": "Breedegrad", "longitude": "L\u00e4ngegrad" diff --git a/homeassistant/components/owntracks/translations/ca.json b/homeassistant/components/owntracks/translations/ca.json index 4082c2a24ab..6979bcb31a8 100644 --- a/homeassistant/components/owntracks/translations/ca.json +++ b/homeassistant/components/owntracks/translations/ca.json @@ -4,7 +4,7 @@ "one_instance_allowed": "Nom\u00e9s cal una sola inst\u00e0ncia." }, "create_entry": { - "default": "\n\nPer Android: obre [l'app d'OwnTracks]({android_url}), ves a prefer\u00e8ncies -> connexi\u00f3, i posa els par\u00e0metres seguents:\n - Mode: Private HTTP\n - Host: {webhook_url}\n - Identification:\n - Username: ``\n - Device ID: ``\n\nPer iOS: obre [l'app d'OwnTracks]({ios_url}), clica l'icona (i) a dalt a l'esquerra -> configuraci\u00f3 (settings), i posa els par\u00e0metres seg\u00fcents:\n - Mode: HTTP\n - URL: {webhook_url}\n - Turn on authentication\n - UserID: ``\n\n{secret}\n\nConsulta [la documentaci\u00f3]({docs_url}) per a m\u00e9s informaci\u00f3." + "default": "\n\nPer Android: obre [l'app d'OwnTracks]({android_url}), ves a prefer\u00e8ncies -> connexi\u00f3. Canvia els par\u00e0metres seguents:\n - Mode: Private HTTP\n - Host: {webhook_url}\n - Identification:\n - Username: `''`\n - Device ID: `''`\n\nPer iOS: obre [l'app d'OwnTracks]({ios_url}), clica l'icona (i) a dalt a l'esquerra -> configuraci\u00f3 (settings). Canvia els par\u00e0metres seg\u00fcents:\n - Mode: HTTP\n - URL: {webhook_url}\n - Turn on authentication\n - UserID: `''`\n\n{secret}\n\nConsulta [la documentaci\u00f3]({docs_url}) per a m\u00e9s informaci\u00f3." }, "step": { "user": { diff --git a/homeassistant/components/owntracks/translations/en.json b/homeassistant/components/owntracks/translations/en.json index 25dd4fab31f..a1cf38a91a2 100644 --- a/homeassistant/components/owntracks/translations/en.json +++ b/homeassistant/components/owntracks/translations/en.json @@ -4,7 +4,7 @@ "one_instance_allowed": "Only a single instance is necessary." }, "create_entry": { - "default": "\n\nOn Android, open [the OwnTracks app]({android_url}), go to preferences -> connection. Change the following settings:\n - Mode: Private HTTP\n - Host: {webhook_url}\n - Identification:\n - Username: ``\n - Device ID: ``\n\nOn iOS, open [the OwnTracks app]({ios_url}), tap (i) icon in top left -> settings. Change the following settings:\n - Mode: HTTP\n - URL: {webhook_url}\n - Turn on authentication\n - UserID: ``\n\n{secret}\n\nSee [the documentation]({docs_url}) for more information." + "default": "\n\nOn Android, open [the OwnTracks app]({android_url}), go to preferences -> connection. Change the following settings:\n - Mode: Private HTTP\n - Host: {webhook_url}\n - Identification:\n - Username: `''`\n - Device ID: `''`\n\nOn iOS, open [the OwnTracks app]({ios_url}), tap (i) icon in top left -> settings. Change the following settings:\n - Mode: HTTP\n - URL: {webhook_url}\n - Turn on authentication\n - UserID: `''`\n\n{secret}\n\nSee [the documentation]({docs_url}) for more information." }, "step": { "user": { diff --git a/homeassistant/components/pi_hole/translations/pt.json b/homeassistant/components/pi_hole/translations/pt.json new file mode 100644 index 00000000000..ce7cbc3f548 --- /dev/null +++ b/homeassistant/components/pi_hole/translations/pt.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "user": { + "data": { + "host": "Servidor" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/plex/translations/de.json b/homeassistant/components/plex/translations/de.json index 4208e9a528b..a762d7b3ab8 100644 --- a/homeassistant/components/plex/translations/de.json +++ b/homeassistant/components/plex/translations/de.json @@ -19,7 +19,7 @@ "step": { "manual_setup": { "data": { - "host": "Host (Optional, wenn Token bereitgestellt)", + "host": "Host", "port": "Port", "ssl": "SSL verwenden", "token": "Token (optional)", diff --git a/homeassistant/components/plex/translations/fr.json b/homeassistant/components/plex/translations/fr.json index b27d648a911..ac27fb432f0 100644 --- a/homeassistant/components/plex/translations/fr.json +++ b/homeassistant/components/plex/translations/fr.json @@ -15,6 +15,7 @@ "not_found": "Serveur Plex introuvable", "ssl_error": "Probl\u00e8me de certificat SSL" }, + "flow_title": "{name} ( {host} )", "step": { "manual_setup": { "data": { diff --git a/homeassistant/components/plex/translations/lb.json b/homeassistant/components/plex/translations/lb.json index 155fd66f90b..aab4c8b061e 100644 --- a/homeassistant/components/plex/translations/lb.json +++ b/homeassistant/components/plex/translations/lb.json @@ -10,9 +10,9 @@ "unknown": "Onbekannte Feeler opgetrueden" }, "error": { - "faulty_credentials": "Feeler beider Autorisatioun", + "faulty_credentials": "Feeler bei der Autorisatioun, iwwerpr\u00e9if de Jeton", "host_or_token": "Op manst een Apparat oder Jeton muss ugi sinn.", - "no_servers": "Kee Server as mam Kont verbonnen", + "no_servers": "Kee Server as mam Plex Kont verbonnen", "not_found": "Kee Plex Server fonnt", "ssl_error": "SSL Zertifikat Problem" }, @@ -20,7 +20,7 @@ "step": { "manual_setup": { "data": { - "host": "Apparat (Optionell)", + "host": "Apparat", "port": "Port", "ssl": "SSL benotzen", "token": "Jeton (Optionell)", diff --git a/homeassistant/components/plex/translations/pt.json b/homeassistant/components/plex/translations/pt.json index ebf1df9c18f..a8a4bd3f8e5 100644 --- a/homeassistant/components/plex/translations/pt.json +++ b/homeassistant/components/plex/translations/pt.json @@ -1,6 +1,11 @@ { "config": { "step": { + "manual_setup": { + "data": { + "host": "Servidor" + } + }, "select_server": { "data": { "server": "Servidor" diff --git a/homeassistant/components/plugwise/translations/de.json b/homeassistant/components/plugwise/translations/de.json new file mode 100644 index 00000000000..7ee92b1ead5 --- /dev/null +++ b/homeassistant/components/plugwise/translations/de.json @@ -0,0 +1,18 @@ +{ + "config": { + "error": { + "cannot_connect": "Verbindung fehlgeschlagen, versuchen Sie es erneut", + "unknown": "Unerwarteter Fehler" + }, + "step": { + "user": { + "data": { + "host": "Smile IP-Adresse", + "password": "Smile ID" + }, + "description": "Details", + "title": "Stellen Sie eine Verbindung zu Smile her" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/plugwise/translations/fr.json b/homeassistant/components/plugwise/translations/fr.json new file mode 100644 index 00000000000..04c38b501fb --- /dev/null +++ b/homeassistant/components/plugwise/translations/fr.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "already_configured": "Ce Smile est d\u00e9j\u00e0 configur\u00e9" + }, + "error": { + "cannot_connect": "Impossible de se connecter, veuillez r\u00e9essayer", + "invalid_auth": "Authentification invalide, v\u00e9rifiez les 8 caract\u00e8res de votre ID Smile", + "unknown": "Erreur inattendue" + }, + "step": { + "user": { + "data": { + "host": "Adresse IP de Smile", + "password": "ID Smile" + }, + "description": "D\u00e9tails", + "title": "Se connecter \u00e0 Smile" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/plugwise/translations/it.json b/homeassistant/components/plugwise/translations/it.json index 96eceaaf7b2..5421ab67b27 100644 --- a/homeassistant/components/plugwise/translations/it.json +++ b/homeassistant/components/plugwise/translations/it.json @@ -5,7 +5,7 @@ }, "error": { "cannot_connect": "Impossibile connettersi, si prega di riprovare", - "invalid_auth": "Autenticazione non valida. Controllare gli 8 caratterei dell'ID Smile", + "invalid_auth": "Autenticazione non valida. Controllare gli 8 caratteri dell'ID Smile", "unknown": "Errore imprevisto" }, "step": { diff --git a/homeassistant/components/plugwise/translations/lb.json b/homeassistant/components/plugwise/translations/lb.json new file mode 100644 index 00000000000..ea9785d2039 --- /dev/null +++ b/homeassistant/components/plugwise/translations/lb.json @@ -0,0 +1,22 @@ +{ + "config": { + "abort": { + "already_configured": "D\u00ebse Smile ass scho konfigur\u00e9iert" + }, + "error": { + "cannot_connect": "Feeler beim verbannen, prob\u00e9ier w.e.g. nach emol.", + "invalid_auth": "Ong\u00eblteg Authentifikatioun, iwwerpr\u00e9if d\u00e9i 8 Charakteren vun denger Smile ID", + "unknown": "Onerwaarte Feeler" + }, + "step": { + "user": { + "data": { + "host": "Smile IP Adresse", + "password": "Smile ID" + }, + "description": "Detailler", + "title": "Mat Smile verbannen" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/plugwise/translations/ru.json b/homeassistant/components/plugwise/translations/ru.json index b500247cfdf..5ae4da64a76 100644 --- a/homeassistant/components/plugwise/translations/ru.json +++ b/homeassistant/components/plugwise/translations/ru.json @@ -14,7 +14,7 @@ "host": "IP-\u0430\u0434\u0440\u0435\u0441", "password": "ID \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430" }, - "description": "\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438", + "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 Plugwise.", "title": "\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443" } } diff --git a/homeassistant/components/point/translations/de.json b/homeassistant/components/point/translations/de.json index b505df4ec25..bc2e346b007 100644 --- a/homeassistant/components/point/translations/de.json +++ b/homeassistant/components/point/translations/de.json @@ -8,7 +8,7 @@ "no_flows": "Du m\u00fcsst Point konfigurieren, bevor du dich damit authentifizieren kannst. [Bitte lese die Anweisungen] (https://www.home-assistant.io/components/point/)." }, "create_entry": { - "default": "Mit Minut erfolgreich f\u00fcr Ihre Point-Ger\u00e4te authentifiziert" + "default": "Erfolgreich authentifiziert" }, "error": { "follow_link": "Bitte folgen dem Link und authentifiziere dich, bevor du auf Senden klickst", diff --git a/homeassistant/components/point/translations/lb.json b/homeassistant/components/point/translations/lb.json index 9262a271fb1..c2059f2d94f 100644 --- a/homeassistant/components/point/translations/lb.json +++ b/homeassistant/components/point/translations/lb.json @@ -8,23 +8,23 @@ "no_flows": "Dir musst Point konfigur\u00e9ieren, ier Dir d\u00ebs Authentifiz\u00e9ierung k\u00ebnnt benotzen.[Liest w.e.g. d'Instruktioune](https://www.home-assistant.io/components/point/)." }, "create_entry": { - "default": "Erfollegr\u00e4ich mat Minut authentifiz\u00e9iert fir \u00e4r Point Apparater" + "default": "Erfollegr\u00e4ich authentifiz\u00e9iert" }, "error": { "follow_link": "Follegt w.e.g dem Link an authentifiz\u00e9iert iech ier de op Ofsch\u00e9cken dr\u00e9ckt", - "no_token": "Net mat Minut authentifiz\u00e9iert" + "no_token": "Ong\u00ebltegen Acc\u00e8s Jeton" }, "step": { "auth": { - "description": "Follegt dem Link \u00ebnnendr\u00ebnner an accept\u00e9iert den Acc\u00e8s zu \u00e4rem Minut Kont , a kommt dann zer\u00e9ck heihin an dr\u00e9ck op ofsch\u00e9cken hei \u00ebnnen.\n\n[Link]({authorization_url})", + "description": "Follegt dem Link \u00ebnnendr\u00ebnner an **accept\u00e9iert** den Acc\u00e8s zu \u00e4rem Minut Kont , a kommt dann zer\u00e9ck heihin an dr\u00e9ck op **ofsch\u00e9cken** hei \u00ebnnen.\n\n[Link]({authorization_url})", "title": "Point authentifiz\u00e9ieren" }, "user": { "data": { "flow_impl": "Ubidder" }, - "description": "Wielt den Authentifikatioun Ubidder deen sech mat Point verbanne soll.", - "title": "Authentifikatioun Ubidder" + "description": "Soll d'Konfiguration gestart ginn?", + "title": "Authentifikatioun Method auswielen" } } } diff --git a/homeassistant/components/ps4/translations/pt.json b/homeassistant/components/ps4/translations/pt.json index 9250f5a3756..a0f57953df5 100644 --- a/homeassistant/components/ps4/translations/pt.json +++ b/homeassistant/components/ps4/translations/pt.json @@ -1,6 +1,7 @@ { "config": { "abort": { + "credential_error": "Erro ao obter credenciais.", "devices_configured": "Todos os dispositivos encontrados j\u00e1 est\u00e3o configurados.", "no_devices_found": "N\u00e3o foram encontrados dispositivos PlayStation 4 na rede." }, diff --git a/homeassistant/components/rachio/translations/de.json b/homeassistant/components/rachio/translations/de.json index f3545c119a1..e6a4d73cde1 100644 --- a/homeassistant/components/rachio/translations/de.json +++ b/homeassistant/components/rachio/translations/de.json @@ -11,7 +11,7 @@ "step": { "user": { "data": { - "api_key": "Der API-Schl\u00fcssel f\u00fcr das Rachio-Konto." + "api_key": "API-Schl\u00fcssel" }, "description": "Sie ben\u00f6tigen den API-Schl\u00fcssel von https://app.rach.io/. W\u00e4hlen Sie \"Kontoeinstellungen\" und klicken Sie dann auf \"API-SCHL\u00dcSSEL ERHALTEN\".", "title": "Stellen Sie eine Verbindung zu Ihrem Rachio-Ger\u00e4t her" diff --git a/homeassistant/components/rachio/translations/lb.json b/homeassistant/components/rachio/translations/lb.json index 1fbe2c7c154..23f95ee9e52 100644 --- a/homeassistant/components/rachio/translations/lb.json +++ b/homeassistant/components/rachio/translations/lb.json @@ -11,7 +11,7 @@ "step": { "user": { "data": { - "api_key": "API Schl\u00ebssel fir den Racchio Kont." + "api_key": "API Schl\u00ebssel" }, "description": "Du brauchs een API Schl\u00ebssel vun https://app.rach.io/. Wiel 'Account Settings', a klick dann op 'GET API KEY'.", "title": "Mam Rachio Apparat verbannen" diff --git a/homeassistant/components/roku/translations/de.json b/homeassistant/components/roku/translations/de.json index 45693f05f88..9899aeba427 100644 --- a/homeassistant/components/roku/translations/de.json +++ b/homeassistant/components/roku/translations/de.json @@ -1,11 +1,11 @@ { "config": { "abort": { - "already_configured": "Das Roku-Ger\u00e4t ist bereits konfiguriert", + "already_configured": "Das Ger\u00e4t ist bereits konfiguriert", "unknown": "Unerwarteter Fehler" }, "error": { - "cannot_connect": "Verbindung fehlgeschlagen, versuchen Sie es erneut" + "cannot_connect": "Verbindung fehlgeschlagen" }, "flow_title": "Roku: {name}", "step": { @@ -19,7 +19,7 @@ }, "user": { "data": { - "host": "Host oder IP-Adresse" + "host": "Host" }, "description": "Geben Sie Ihre Roku-Informationen ein." } diff --git a/homeassistant/components/roku/translations/lb.json b/homeassistant/components/roku/translations/lb.json index 896efe8b2fa..3aa8e5fa642 100644 --- a/homeassistant/components/roku/translations/lb.json +++ b/homeassistant/components/roku/translations/lb.json @@ -1,25 +1,21 @@ { "config": { "abort": { - "already_configured": "Roku Apparat ass scho konfigur\u00e9iert", + "already_configured": "Apparat ass scho konfigur\u00e9iert", "unknown": "Onerwaarte Feeler" }, "error": { - "cannot_connect": "Feeler beim verbannen, prob\u00e9ier w.e.g. nach emol." + "cannot_connect": "Feeler beim verbannen" }, "flow_title": "Roku: {name}", "step": { "ssdp_confirm": { - "data": { - "one": "Een", - "other": "Aaner" - }, "description": "Soll {name} konfigur\u00e9iert ginn?", "title": "Roku" }, "user": { "data": { - "host": "Numm oder IP Adresse" + "host": "Host" }, "description": "F\u00ebll d\u00e9ng Roku Informatiounen aus." } diff --git a/homeassistant/components/roku/translations/pt.json b/homeassistant/components/roku/translations/pt.json new file mode 100644 index 00000000000..ce7cbc3f548 --- /dev/null +++ b/homeassistant/components/roku/translations/pt.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "user": { + "data": { + "host": "Servidor" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/roomba/translations/de.json b/homeassistant/components/roomba/translations/de.json index 667f68c454c..2f6ef37d13c 100644 --- a/homeassistant/components/roomba/translations/de.json +++ b/homeassistant/components/roomba/translations/de.json @@ -9,7 +9,7 @@ "blid": "BLID", "continuous": "Kontinuierlich", "delay": "Verz\u00f6gerung", - "host": "Hostname oder IP-Adresse", + "host": "Host", "password": "Passwort" }, "description": "Das Abrufen der BLID und des Kennworts erfolgt manuell. Befolgen Sie die in der Dokumentation beschriebenen Schritte unter: https://www.home-assistant.io/integrations/roomba/#retrieving-your-credentials", diff --git a/homeassistant/components/roomba/translations/lb.json b/homeassistant/components/roomba/translations/lb.json index 9898d7fbd04..9b811774f6e 100644 --- a/homeassistant/components/roomba/translations/lb.json +++ b/homeassistant/components/roomba/translations/lb.json @@ -9,7 +9,7 @@ "blid": "BLID", "continuous": "Kontinu\u00e9ierlech", "delay": "Delai", - "host": "Host Numm oder IP Adresse", + "host": "Host", "password": "Passwuert" }, "description": "De Prozess fir BLID an Passwuert opzeruffen ass fir de Moment manuell. Folleg w.e.g. de Schr\u00ebtt d\u00e9i an der Dokumentatioun op https://www.home-assistant.io/integrations/roomba/#retrieving-your-credentials beschriwwe sinn.", diff --git a/homeassistant/components/roomba/translations/pt.json b/homeassistant/components/roomba/translations/pt.json index 559712b7e9b..0156fd48a62 100644 --- a/homeassistant/components/roomba/translations/pt.json +++ b/homeassistant/components/roomba/translations/pt.json @@ -8,7 +8,7 @@ "data": { "continuous": "Cont\u00ednuo", "delay": "Atraso", - "host": "Nome servidor ou endere\u00e7o IP", + "host": "Servidor", "password": "Palavra-passe" }, "title": "Conectar ao dispositivo" diff --git a/homeassistant/components/samsungtv/translations/de.json b/homeassistant/components/samsungtv/translations/de.json index dff4f98a438..38d6365205b 100644 --- a/homeassistant/components/samsungtv/translations/de.json +++ b/homeassistant/components/samsungtv/translations/de.json @@ -15,7 +15,7 @@ }, "user": { "data": { - "host": "Host oder IP-Adresse", + "host": "Host", "name": "Name" }, "description": "Gib deine Samsung TV-Informationen ein. Wenn du noch nie eine Verbindung zum Home Assistant hergestellt hast, solltest du ein Popup-Fenster auf deinem Fernseher sehen, das nach einer Authentifizierung fragt." diff --git a/homeassistant/components/samsungtv/translations/lb.json b/homeassistant/components/samsungtv/translations/lb.json index 1fd1ce67f27..2fe31838257 100644 --- a/homeassistant/components/samsungtv/translations/lb.json +++ b/homeassistant/components/samsungtv/translations/lb.json @@ -15,7 +15,7 @@ }, "user": { "data": { - "host": "Numm oder IP Adresse", + "host": "Host", "name": "Numm" }, "description": "Gitt \u00e4r Samsung TV Informatiounen un. Falls dir Home Assistant nach ni domat verbonnen hutt misst den TV eng Meldung mat enger Authentifiz\u00e9ierung uweisen." diff --git a/homeassistant/components/samsungtv/translations/pt.json b/homeassistant/components/samsungtv/translations/pt.json index 286cd58dd89..b74b0fd7de5 100644 --- a/homeassistant/components/samsungtv/translations/pt.json +++ b/homeassistant/components/samsungtv/translations/pt.json @@ -3,6 +3,7 @@ "step": { "user": { "data": { + "host": "", "name": "Nome" } } diff --git a/homeassistant/components/shopping_list/translations/pt.json b/homeassistant/components/shopping_list/translations/pt.json new file mode 100644 index 00000000000..9e8b24efa29 --- /dev/null +++ b/homeassistant/components/shopping_list/translations/pt.json @@ -0,0 +1,14 @@ +{ + "config": { + "abort": { + "already_configured": "A lista de compras j\u00e1 est\u00e1 configurada." + }, + "step": { + "user": { + "description": "Deseja configurar a lista de compras?", + "title": "Lista de compras" + } + } + }, + "title": "Lista de compras" +} \ No newline at end of file diff --git a/homeassistant/components/simplisafe/translations/lb.json b/homeassistant/components/simplisafe/translations/lb.json index 0f1962c529c..e6e2f760a8d 100644 --- a/homeassistant/components/simplisafe/translations/lb.json +++ b/homeassistant/components/simplisafe/translations/lb.json @@ -12,7 +12,7 @@ "data": { "code": "Code (benotzt am Home Assistant Benotzer Interface)", "password": "Passwuert", - "username": "E-Mail Adress" + "username": "E-Mail" }, "title": "F\u00ebllt \u00e4r Informatiounen aus" } diff --git a/homeassistant/components/simplisafe/translations/pt.json b/homeassistant/components/simplisafe/translations/pt.json index 731ab4ad9a0..ab54288d91a 100644 --- a/homeassistant/components/simplisafe/translations/pt.json +++ b/homeassistant/components/simplisafe/translations/pt.json @@ -8,7 +8,7 @@ "user": { "data": { "password": "Palavra-passe", - "username": "Endere\u00e7o de correio eletr\u00f3nico" + "username": "Email" }, "title": "Preencha as suas informa\u00e7\u00f5es" } diff --git a/homeassistant/components/solaredge/translations/de.json b/homeassistant/components/solaredge/translations/de.json index 236ff724a06..d3fe05bce10 100644 --- a/homeassistant/components/solaredge/translations/de.json +++ b/homeassistant/components/solaredge/translations/de.json @@ -9,7 +9,7 @@ "step": { "user": { "data": { - "api_key": "Der API-Schl\u00fcssel f\u00fcr diese Site", + "api_key": "API-Schl\u00fcssel", "name": "Der Name dieser Installation", "site_id": "Die SolarEdge-Site-ID" }, diff --git a/homeassistant/components/solaredge/translations/lb.json b/homeassistant/components/solaredge/translations/lb.json index eec29815f64..4f2f698a6ca 100644 --- a/homeassistant/components/solaredge/translations/lb.json +++ b/homeassistant/components/solaredge/translations/lb.json @@ -9,7 +9,7 @@ "step": { "user": { "data": { - "api_key": "API Schl\u00ebssel fir d\u00ebsen Site", + "api_key": "API Schl\u00ebssel", "name": "Numm vun d\u00ebser Installatioun", "site_id": "SolarEdge site-ID" }, diff --git a/homeassistant/components/solarlog/translations/de.json b/homeassistant/components/solarlog/translations/de.json index 8b10d00e538..58e691b733d 100644 --- a/homeassistant/components/solarlog/translations/de.json +++ b/homeassistant/components/solarlog/translations/de.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "host": "Der Hostname oder die IP-Adresse Ihres Solar-Log-Ger\u00e4ts", + "host": "Host", "name": "Das Pr\u00e4fix, das f\u00fcr Ihre Solar-Log-Sensoren verwendet werden soll" }, "title": "Definiere deine Solar-Log-Verbindung" diff --git a/homeassistant/components/solarlog/translations/lb.json b/homeassistant/components/solarlog/translations/lb.json index e0008dcb4cd..153aa3dcf67 100644 --- a/homeassistant/components/solarlog/translations/lb.json +++ b/homeassistant/components/solarlog/translations/lb.json @@ -10,7 +10,7 @@ "step": { "user": { "data": { - "host": "De Numm oder IP Adresse vun \u00e4rem Solar-Log Apparat", + "host": "Host", "name": "Prefix dee fir \u00e4r Solar-Log Sensoren soll benotz ginn" }, "title": "D\u00e9fin\u00e9iert \u00e4r Solar-Log Verbindung" diff --git a/homeassistant/components/solarlog/translations/pt.json b/homeassistant/components/solarlog/translations/pt.json new file mode 100644 index 00000000000..5411372ce26 --- /dev/null +++ b/homeassistant/components/solarlog/translations/pt.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "user": { + "data": { + "host": "" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/sonarr/translations/de.json b/homeassistant/components/sonarr/translations/de.json new file mode 100644 index 00000000000..358da02bc20 --- /dev/null +++ b/homeassistant/components/sonarr/translations/de.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "unknown": "Unerwateter Fehler" + }, + "error": { + "cannot_connect": "Verbindung fehlgeschlagen" + }, + "flow_title": "Sonarr: {name}", + "step": { + "user": { + "data": { + "api_key": "API Schl\u00fcssel", + "base_path": "Pfad zur API", + "host": "Host", + "port": "Port" + }, + "title": "Mit Sonarr verbinden" + } + } + }, + "title": "Sonarr" +} \ No newline at end of file diff --git a/homeassistant/components/sonarr/translations/fr.json b/homeassistant/components/sonarr/translations/fr.json index f613debcfbc..0b35d915f2b 100644 --- a/homeassistant/components/sonarr/translations/fr.json +++ b/homeassistant/components/sonarr/translations/fr.json @@ -1,3 +1,37 @@ { + "config": { + "abort": { + "already_configured": "Le service est d\u00e9j\u00e0 configur\u00e9", + "unknown": "Erreur innatendue" + }, + "error": { + "cannot_connect": "\u00c9chec de connexion", + "invalid_auth": "Authentification invalide" + }, + "flow_title": "Sonarr: {name}", + "step": { + "user": { + "data": { + "api_key": "Cl\u00e9 API", + "base_path": "Chemin vers l'API", + "host": "H\u00f4te", + "port": "Port", + "ssl": "Sonarr utilise un certificat SSL", + "verify_ssl": "Sonarr utilise un certificat appropri\u00e9" + }, + "title": "Se connecter \u00e0 Sonarr" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "upcoming_days": "Nombre de jours \u00e0 venir \u00e0 afficher", + "wanted_max_items": "Nombre maximum d'objets \u00e0 afficher" + } + } + } + }, "title": "Sonarr" } \ No newline at end of file diff --git a/homeassistant/components/sonarr/translations/it.json b/homeassistant/components/sonarr/translations/it.json new file mode 100644 index 00000000000..ae6774db11d --- /dev/null +++ b/homeassistant/components/sonarr/translations/it.json @@ -0,0 +1,37 @@ +{ + "config": { + "abort": { + "already_configured": "Il servizio \u00e8 gi\u00e0 configurato", + "unknown": "Errore imprevisto" + }, + "error": { + "cannot_connect": "Impossibile connettersi", + "invalid_auth": "Autenticazione non valida" + }, + "flow_title": "Sonarr: {name}", + "step": { + "user": { + "data": { + "api_key": "Chiave API", + "base_path": "Percorso dell'API", + "host": "Host", + "port": "Porta", + "ssl": "Sonarr utilizza un certificato SSL", + "verify_ssl": "Sonarr utilizza un certificato adeguato" + }, + "title": "Connettiti a Sonarr" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "upcoming_days": "Numero dei prossimi giorni da visualizzare", + "wanted_max_items": "Numero massimo di elementi desiderati da visualizzare" + } + } + } + }, + "title": "Sonarr" +} \ No newline at end of file diff --git a/homeassistant/components/sonarr/translations/lb.json b/homeassistant/components/sonarr/translations/lb.json new file mode 100644 index 00000000000..23c8116498c --- /dev/null +++ b/homeassistant/components/sonarr/translations/lb.json @@ -0,0 +1,37 @@ +{ + "config": { + "abort": { + "already_configured": "Service ass scho konfigur\u00e9iert", + "unknown": "Onerwaarte Feeler" + }, + "error": { + "cannot_connect": "Feeler beim verbannen", + "invalid_auth": "Ong\u00eblteg Authentifikatioun" + }, + "flow_title": "Sonarr: {name}", + "step": { + "user": { + "data": { + "api_key": "API Schl\u00ebssel", + "base_path": "Pad zur API", + "host": "Host", + "port": "Port", + "ssl": "Sonarr benotzt een SSL Zertifikat", + "verify_ssl": "Sonarr benotzt ee g\u00ebltegen SSL Zertifikat" + }, + "title": "Mat Sonarr verbannen" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "upcoming_days": "Unzuel vun kommenden Deeg d\u00e9i sollen ugewise ginn", + "wanted_max_items": "Max Unzuel vun gew\u00ebnschten Artikelen d\u00e9i solle ugewise ginn" + } + } + } + }, + "title": "Sonarr" +} \ No newline at end of file diff --git a/homeassistant/components/sonarr/translations/pt.json b/homeassistant/components/sonarr/translations/pt.json new file mode 100644 index 00000000000..ce7cbc3f548 --- /dev/null +++ b/homeassistant/components/sonarr/translations/pt.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "user": { + "data": { + "host": "Servidor" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/speedtestdotnet/translations/ca.json b/homeassistant/components/speedtestdotnet/translations/ca.json new file mode 100644 index 00000000000..7af50becd61 --- /dev/null +++ b/homeassistant/components/speedtestdotnet/translations/ca.json @@ -0,0 +1,11 @@ +{ + "options": { + "step": { + "init": { + "data": { + "scan_interval": "Freq\u00fc\u00e8ncia d'actualitzaci\u00f3 (minuts)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/speedtestdotnet/translations/de.json b/homeassistant/components/speedtestdotnet/translations/de.json new file mode 100644 index 00000000000..186cd5b080e --- /dev/null +++ b/homeassistant/components/speedtestdotnet/translations/de.json @@ -0,0 +1,19 @@ +{ + "config": { + "abort": { + "wrong_server_id": "Server ID ist ung\u00fcltig" + } + }, + "options": { + "error": { + "retrive_error": "Fehler beim Abrufen der Serverliste" + }, + "step": { + "init": { + "data": { + "manual": "Automatische Updates deaktivieren" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/speedtestdotnet/translations/en.json b/homeassistant/components/speedtestdotnet/translations/en.json new file mode 100644 index 00000000000..203640d350b --- /dev/null +++ b/homeassistant/components/speedtestdotnet/translations/en.json @@ -0,0 +1,28 @@ +{ + "config": { + "abort": { + "one_instance_allowed": "Only a single instance is necessary.", + "wrong_server_id": "Server id is not valid" + }, + "step": { + "user": { + "description": "Are you sure you want to set up SpeedTest?", + "title": "Set up SpeedTest" + } + } + }, + "options": { + "error": { + "retrive_error": "Error retriving servers list" + }, + "step": { + "init": { + "data": { + "manual": "Disable auto update", + "scan_interval": "Update frequency (minutes)", + "server_name": "Select test server" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/speedtestdotnet/translations/es.json b/homeassistant/components/speedtestdotnet/translations/es.json new file mode 100644 index 00000000000..9c21c8e29a8 --- /dev/null +++ b/homeassistant/components/speedtestdotnet/translations/es.json @@ -0,0 +1,28 @@ +{ + "config": { + "abort": { + "one_instance_allowed": "Solo se necesita una instancia.", + "wrong_server_id": "Id del servidor no v\u00e1lido" + }, + "step": { + "user": { + "description": "\u00bfEst\u00e1s seguro de que quieres configurar SpeedTest?", + "title": "Configurar SpeedTest" + } + } + }, + "options": { + "error": { + "retrive_error": "Error al recuperar la lista de servidores" + }, + "step": { + "init": { + "data": { + "manual": "Desactivar actualizaci\u00f3n autom\u00e1tica", + "scan_interval": "Frecuencia de actualizaci\u00f3n (minutos)", + "server_name": "Seleccione el servidor de prueba" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/speedtestdotnet/translations/it.json b/homeassistant/components/speedtestdotnet/translations/it.json new file mode 100644 index 00000000000..3ac6b03183c --- /dev/null +++ b/homeassistant/components/speedtestdotnet/translations/it.json @@ -0,0 +1,28 @@ +{ + "config": { + "abort": { + "one_instance_allowed": "\u00c8 necessaria solo una singola istanza.", + "wrong_server_id": "L'ID del server non \u00e8 valido" + }, + "step": { + "user": { + "description": "Sei sicuro di voler configurare SpeedTest?", + "title": "Configurare SpeedTest" + } + } + }, + "options": { + "error": { + "retrive_error": "Errore nel recuperare l'elenco dei server" + }, + "step": { + "init": { + "data": { + "manual": "Disabilitare l'aggiornamento automatico", + "scan_interval": "Frequenza di aggiornamento (minuti)", + "server_name": "Selezionare il server di prova" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/speedtestdotnet/translations/ko.json b/homeassistant/components/speedtestdotnet/translations/ko.json new file mode 100644 index 00000000000..a3b1ed02ae6 --- /dev/null +++ b/homeassistant/components/speedtestdotnet/translations/ko.json @@ -0,0 +1,28 @@ +{ + "config": { + "abort": { + "one_instance_allowed": "\ud558\ub098\uc758 \uc778\uc2a4\ud134\uc2a4\ub9cc \ud544\uc694\ud569\ub2c8\ub2e4.", + "wrong_server_id": "\uc11c\ubc84 ID \uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4" + }, + "step": { + "user": { + "description": "SpeedTest \ub97c \uc124\uc815\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?", + "title": "SpeedTest \uc124\uc815\ud558\uae30" + } + } + }, + "options": { + "error": { + "retrive_error": "\uc11c\ubc84 \ubaa9\ub85d\uc744 \uac80\uc0c9\ud558\ub294 \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4" + }, + "step": { + "init": { + "data": { + "manual": "\uc790\ub3d9 \uc5c5\ub370\uc774\ud2b8 \ube44\ud65c\uc131\ud654", + "scan_interval": "\uc5c5\ub370\uc774\ud2b8 \ube48\ub3c4 (\ubd84)", + "server_name": "\ud14c\uc2a4\ud2b8 \uc11c\ubc84 \uc120\ud0dd" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/speedtestdotnet/translations/no.json b/homeassistant/components/speedtestdotnet/translations/no.json new file mode 100644 index 00000000000..da2945b2985 --- /dev/null +++ b/homeassistant/components/speedtestdotnet/translations/no.json @@ -0,0 +1,28 @@ +{ + "config": { + "abort": { + "one_instance_allowed": "Kun en enkelt forekomst er n\u00f8dvendig.", + "wrong_server_id": "Server-ID er ikke gyldig" + }, + "step": { + "user": { + "description": "Er du sikker p\u00e5 at du vil konfigurere SpeedTest?", + "title": "Konfigurere SpeedTest" + } + } + }, + "options": { + "error": { + "retrive_error": "Feil ved henting av serverlisten" + }, + "step": { + "init": { + "data": { + "manual": "Deaktiver automatisk oppdatering", + "scan_interval": "Oppdateringsfrekvens (minutter)", + "server_name": "Velg testserver" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/speedtestdotnet/translations/ru.json b/homeassistant/components/speedtestdotnet/translations/ru.json new file mode 100644 index 00000000000..fe5cbc1d890 --- /dev/null +++ b/homeassistant/components/speedtestdotnet/translations/ru.json @@ -0,0 +1,28 @@ +{ + "config": { + "abort": { + "one_instance_allowed": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.", + "wrong_server_id": "\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u0435\u043d." + }, + "step": { + "user": { + "description": "\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c SpeedTest?", + "title": "SpeedTest" + } + } + }, + "options": { + "error": { + "retrive_error": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432." + }, + "step": { + "init": { + "data": { + "manual": "\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435", + "scan_interval": "\u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f (\u0432 \u043c\u0438\u043d\u0443\u0442\u0430\u0445)", + "server_name": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/speedtestdotnet/translations/zh-Hant.json b/homeassistant/components/speedtestdotnet/translations/zh-Hant.json new file mode 100644 index 00000000000..3f7df7d8ca1 --- /dev/null +++ b/homeassistant/components/speedtestdotnet/translations/zh-Hant.json @@ -0,0 +1,28 @@ +{ + "config": { + "abort": { + "one_instance_allowed": "\u50c5\u9700\u8a2d\u5b9a\u4e00\u7d44\u7269\u4ef6\u5373\u53ef\u3002", + "wrong_server_id": "\u4f3a\u670d\u5668 ID \u7121\u6548" + }, + "step": { + "user": { + "description": "\u662f\u5426\u8981\u8a2d\u5b9a SpeedTest\uff1f", + "title": "\u8a2d\u5b9a SpeedTest" + } + } + }, + "options": { + "error": { + "retrive_error": "\u63a5\u6536\u4f3a\u670d\u5668\u5217\u8868\u932f\u8aa4" + }, + "step": { + "init": { + "data": { + "manual": "\u95dc\u9589\u81ea\u52d5\u66f4\u65b0", + "scan_interval": "\u66f4\u65b0\u983b\u7387\uff08\u5206\u9418\uff09", + "server_name": "\u9078\u64c7\u6e2c\u8a66\u4f3a\u670d\u5668" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/starline/translations/lb.json b/homeassistant/components/starline/translations/lb.json index dce368d62d7..e38e2b7ff7e 100644 --- a/homeassistant/components/starline/translations/lb.json +++ b/homeassistant/components/starline/translations/lb.json @@ -11,7 +11,7 @@ "app_id": "App ID", "app_secret": "Schl\u00ebssel" }, - "description": "Applikatioun's ID an Schl\u00ebssel vum StarLine Developpeur's Kont", + "description": "Applikatioun's ID an Schl\u00ebssel vum [StarLine Developpeur's Kont](https://my.starline.ru/developer)", "title": "Login Informatioune vun der Applikatioun" }, "auth_captcha": { diff --git a/homeassistant/components/synology_dsm/translations/de.json b/homeassistant/components/synology_dsm/translations/de.json index b5e7064066c..f54a7e2a378 100644 --- a/homeassistant/components/synology_dsm/translations/de.json +++ b/homeassistant/components/synology_dsm/translations/de.json @@ -21,7 +21,7 @@ "link": { "data": { "password": "Passwort", - "port": "Port (optional)", + "port": "Port", "ssl": "Verwenden Sie SSL/TLS, um eine Verbindung zu Ihrem NAS herzustellen", "username": "Benutzername" }, @@ -32,7 +32,7 @@ "data": { "host": "Host", "password": "Passwort", - "port": "Port (optional)", + "port": "Port", "ssl": "Verwenden Sie SSL/TLS, um eine Verbindung zu Ihrem NAS herzustellen", "username": "Benutzername" }, diff --git a/homeassistant/components/synology_dsm/translations/lb.json b/homeassistant/components/synology_dsm/translations/lb.json index 0e3d8300248..9ca8d0cdfa5 100644 --- a/homeassistant/components/synology_dsm/translations/lb.json +++ b/homeassistant/components/synology_dsm/translations/lb.json @@ -21,7 +21,7 @@ "link": { "data": { "password": "Passwuert", - "port": "Port (Optionell)", + "port": "Port", "ssl": "Benotz SSL/TLS fir d'Verbindung mam NAS", "username": "Benotzernumm" }, @@ -32,7 +32,7 @@ "data": { "host": "Apparat", "password": "Passwuert", - "port": "Port (Optionell)", + "port": "Port", "ssl": "Benotzt SSL/TLS fir sech mam NAS ze verbannen", "username": "Benotzernumm" }, diff --git a/homeassistant/components/tesla/translations/lb.json b/homeassistant/components/tesla/translations/lb.json index 4d8fde97eaf..b23a02bbcf4 100644 --- a/homeassistant/components/tesla/translations/lb.json +++ b/homeassistant/components/tesla/translations/lb.json @@ -10,7 +10,7 @@ "user": { "data": { "password": "Passwuert", - "username": "E-Mail Adress" + "username": "E-Mail" }, "description": "F\u00ebllt \u00e4r Informatiounen aus.", "title": "Tesla - Konfiguratioun" diff --git a/homeassistant/components/tibber/translations/pt.json b/homeassistant/components/tibber/translations/pt.json new file mode 100644 index 00000000000..243987422dd --- /dev/null +++ b/homeassistant/components/tibber/translations/pt.json @@ -0,0 +1,13 @@ +{ + "config": { + "step": { + "user": { + "data": { + "access_token": "" + }, + "title": "" + } + } + }, + "title": "" +} \ No newline at end of file diff --git a/homeassistant/components/tile/translations/ca.json b/homeassistant/components/tile/translations/ca.json new file mode 100644 index 00000000000..5b9c954e249 --- /dev/null +++ b/homeassistant/components/tile/translations/ca.json @@ -0,0 +1,29 @@ +{ + "config": { + "abort": { + "already_configured": "Aquest compte de Tile ja est\u00e0 registrat." + }, + "error": { + "invalid_credentials": "Credencials de Tile inv\u00e0lides." + }, + "step": { + "user": { + "data": { + "password": "Contrasenya", + "username": "Correu electr\u00f2nic" + }, + "title": "Configura Tile" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "show_inactive": "Mostra 'Tiles' inactives" + }, + "title": "Configura Tile" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tile/translations/de.json b/homeassistant/components/tile/translations/de.json new file mode 100644 index 00000000000..b76312d957f --- /dev/null +++ b/homeassistant/components/tile/translations/de.json @@ -0,0 +1,12 @@ +{ + "config": { + "step": { + "user": { + "data": { + "password": "Passwort", + "username": "E-Mail Adresse" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tile/translations/en.json b/homeassistant/components/tile/translations/en.json new file mode 100644 index 00000000000..67985383979 --- /dev/null +++ b/homeassistant/components/tile/translations/en.json @@ -0,0 +1,29 @@ +{ + "config": { + "abort": { + "already_configured": "This Tile account is already registered." + }, + "error": { + "invalid_credentials": "Invalid Tile credentials provided." + }, + "step": { + "user": { + "data": { + "password": "Password", + "username": "Email" + }, + "title": "Configure Tile" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "show_inactive": "Show inactive Tiles" + }, + "title": "Configure Tile" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tile/translations/es.json b/homeassistant/components/tile/translations/es.json new file mode 100644 index 00000000000..d9433d87ad1 --- /dev/null +++ b/homeassistant/components/tile/translations/es.json @@ -0,0 +1,29 @@ +{ + "config": { + "abort": { + "already_configured": "Esta cuenta de Tile ya est\u00e1 registrada." + }, + "error": { + "invalid_credentials": "Credenciales de Tile no v\u00e1lidas" + }, + "step": { + "user": { + "data": { + "password": "Contrase\u00f1a", + "username": "Correo electr\u00f3nico" + }, + "title": "Configurar Tile" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "show_inactive": "Mostrar Tiles inactivos" + }, + "title": "Configurar Tile" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tile/translations/fr.json b/homeassistant/components/tile/translations/fr.json new file mode 100644 index 00000000000..3451efee63b --- /dev/null +++ b/homeassistant/components/tile/translations/fr.json @@ -0,0 +1,19 @@ +{ + "config": { + "step": { + "user": { + "title": "Configurer Tile" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "show_inactive": "Afficher les Tiles inactives" + }, + "title": "Configurer Tile" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tile/translations/it.json b/homeassistant/components/tile/translations/it.json new file mode 100644 index 00000000000..10017a9baee --- /dev/null +++ b/homeassistant/components/tile/translations/it.json @@ -0,0 +1,29 @@ +{ + "config": { + "abort": { + "already_configured": "Questo account Tile \u00e8 gi\u00e0 registrato." + }, + "error": { + "invalid_credentials": "Fornite credenziali di Tile non valide." + }, + "step": { + "user": { + "data": { + "password": "Password", + "username": "E-mail" + }, + "title": "Configura Tile" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "show_inactive": "Mostra Tile inattive" + }, + "title": "Configura Tile" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tile/translations/ko.json b/homeassistant/components/tile/translations/ko.json new file mode 100644 index 00000000000..4788269eab1 --- /dev/null +++ b/homeassistant/components/tile/translations/ko.json @@ -0,0 +1,29 @@ +{ + "config": { + "abort": { + "already_configured": "\uc774 Tile \uacc4\uc815\uc740 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4." + }, + "error": { + "invalid_credentials": "\uc774\uba54\uc77c \uc8fc\uc18c \ud639\uc740 \ube44\ubc00\ubc88\ud638\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4" + }, + "step": { + "user": { + "data": { + "password": "\ube44\ubc00\ubc88\ud638", + "username": "\uc774\uba54\uc77c" + }, + "title": "Tile \uad6c\uc131\ud558\uae30" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "show_inactive": "\ube44\ud65c\uc131 Tile \ud45c\uc2dc" + }, + "title": "Tile \uad6c\uc131\ud558\uae30" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tile/translations/lb.json b/homeassistant/components/tile/translations/lb.json new file mode 100644 index 00000000000..464b437b000 --- /dev/null +++ b/homeassistant/components/tile/translations/lb.json @@ -0,0 +1,29 @@ +{ + "config": { + "abort": { + "already_configured": "D\u00ebse Tile Kont ass scho registr\u00e9iert." + }, + "error": { + "invalid_credentials": "Ong\u00eblteg Tile Login Informatioune uginn." + }, + "step": { + "user": { + "data": { + "password": "Passwuert", + "username": "E-Mail" + }, + "title": "Tile konfigur\u00e9ieren" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "show_inactive": "Inaktiv Tiles uweisen" + }, + "title": "Tile konfigur\u00e9ieren" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tile/translations/no.json b/homeassistant/components/tile/translations/no.json new file mode 100644 index 00000000000..1185ebc2bdd --- /dev/null +++ b/homeassistant/components/tile/translations/no.json @@ -0,0 +1,25 @@ +{ + "config": { + "abort": { + "already_configured": "Denne Tile kontoen er allerede registrert." + }, + "error": { + "invalid_credentials": "Ugyldige Tile registreringsinformasjon gitt." + }, + "step": { + "user": { + "title": "Konfigurer Tile" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "show_inactive": "Vis inaktive Tiles" + }, + "title": "Konfigurer Tile" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tile/translations/pt.json b/homeassistant/components/tile/translations/pt.json new file mode 100644 index 00000000000..e266cf06266 --- /dev/null +++ b/homeassistant/components/tile/translations/pt.json @@ -0,0 +1,13 @@ +{ + "config": { + "step": { + "user": { + "data": { + "password": "Palavra-passe", + "username": "E-mail" + }, + "title": "Configurar Tile" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tile/translations/ru.json b/homeassistant/components/tile/translations/ru.json new file mode 100644 index 00000000000..f7019567bc9 --- /dev/null +++ b/homeassistant/components/tile/translations/ru.json @@ -0,0 +1,29 @@ +{ + "config": { + "abort": { + "already_configured": "\u0423\u0447\u0451\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u0436\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430." + }, + "error": { + "invalid_credentials": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0435 \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435." + }, + "step": { + "user": { + "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" + }, + "title": "Tile" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "show_inactive": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430" + }, + "title": "Tile" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/tile/translations/zh-Hant.json b/homeassistant/components/tile/translations/zh-Hant.json new file mode 100644 index 00000000000..41a9553e5f8 --- /dev/null +++ b/homeassistant/components/tile/translations/zh-Hant.json @@ -0,0 +1,29 @@ +{ + "config": { + "abort": { + "already_configured": "Tile \u5e33\u865f\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210" + }, + "error": { + "invalid_credentials": "\u6240\u63d0\u4f9b\u7684 Tile \u6191\u8b49\u7121\u6548\u3002" + }, + "step": { + "user": { + "data": { + "password": "\u5bc6\u78bc", + "username": "\u96fb\u5b50\u90f5\u4ef6" + }, + "title": "\u8a2d\u5b9a Tile" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "show_inactive": "\u986f\u793a\u7121\u4f5c\u7528 Tile" + }, + "title": "\u8a2d\u5b9a Tile" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/transmission/translations/lb.json b/homeassistant/components/transmission/translations/lb.json index e1301cd2df1..a98c41578fa 100644 --- a/homeassistant/components/transmission/translations/lb.json +++ b/homeassistant/components/transmission/translations/lb.json @@ -11,7 +11,7 @@ "step": { "user": { "data": { - "host": "Server", + "host": "Host", "name": "Numm", "password": "Passwuert", "port": "Port", diff --git a/homeassistant/components/tuya/translations/de.json b/homeassistant/components/tuya/translations/de.json new file mode 100644 index 00000000000..3108e34f11f --- /dev/null +++ b/homeassistant/components/tuya/translations/de.json @@ -0,0 +1,18 @@ +{ + "config": { + "abort": { + "conn_error": "Verbindung fehlgeschlagen" + }, + "flow_title": "Tuya Konfiguration", + "step": { + "user": { + "data": { + "password": "Passwort", + "username": "Benutzername" + }, + "description": "Geben Sie Ihre Tuya-Anmeldeinformationen ein.", + "title": "Tuya" + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/unifi/translations/de.json b/homeassistant/components/unifi/translations/de.json index 133a5355deb..626236792ea 100644 --- a/homeassistant/components/unifi/translations/de.json +++ b/homeassistant/components/unifi/translations/de.json @@ -5,7 +5,7 @@ }, "error": { "faulty_credentials": "Ung\u00fcltige Anmeldeinformationen", - "service_unavailable": "Kein Dienst verf\u00fcgbar", + "service_unavailable": "Verbindung fehlgeschlagen", "unknown_client_mac": "Unter dieser MAC-Adresse ist kein Client verf\u00fcgbar." }, "step": { diff --git a/homeassistant/components/unifi/translations/lb.json b/homeassistant/components/unifi/translations/lb.json index 83011f8cceb..5f7e7192bd9 100644 --- a/homeassistant/components/unifi/translations/lb.json +++ b/homeassistant/components/unifi/translations/lb.json @@ -4,8 +4,8 @@ "already_configured": "Kontroller Site ass scho konfigur\u00e9iert" }, "error": { - "faulty_credentials": "Ong\u00eblteg Login Informatioune", - "service_unavailable": "Keen Service disponibel", + "faulty_credentials": "Ong\u00eblteg Authentifikatioun", + "service_unavailable": "Feeler beim verbannen", "unknown_client_mac": "Kee Cliwent mat der MAC Adress disponibel" }, "step": { @@ -44,12 +44,6 @@ "description": "Apparate verfollegen ariichten", "title": "UniFi Optiounen 1/3" }, - "init": { - "data": { - "one": "Een", - "other": "M\u00e9i" - } - }, "simple_options": { "data": { "track_clients": "Reseau Cliente verfollegen", diff --git a/homeassistant/components/upnp/translations/fr.json b/homeassistant/components/upnp/translations/fr.json index e07bfbc6330..fd0a48c9d87 100644 --- a/homeassistant/components/upnp/translations/fr.json +++ b/homeassistant/components/upnp/translations/fr.json @@ -2,6 +2,7 @@ "config": { "abort": { "already_configured": "UPnP / IGD est d\u00e9j\u00e0 configur\u00e9", + "incomplete_discovery": "D\u00e9couverte incompl\u00e8te", "no_devices_discovered": "Aucun UPnP / IGD d\u00e9couvert", "no_devices_found": "Aucun p\u00e9riph\u00e9rique UPnP / IGD trouv\u00e9 sur le r\u00e9seau." }, @@ -16,6 +17,7 @@ }, "user": { "data": { + "scan_interval": "Intervalle de mise \u00e0 jour (secondes, minimum 30)", "usn": "Appareil" } } diff --git a/homeassistant/components/upnp/translations/pt.json b/homeassistant/components/upnp/translations/pt.json index cb08c0f52a6..1a80149483d 100644 --- a/homeassistant/components/upnp/translations/pt.json +++ b/homeassistant/components/upnp/translations/pt.json @@ -8,6 +8,17 @@ "error": { "one": "um", "other": "v\u00e1rios" + }, + "flow_title": "UPnP/IGD: {name}", + "step": { + "ssdp_confirm": { + "description": "Deseja configurar este dispositivo UPnP/IGD?" + }, + "user": { + "data": { + "usn": "Dispositivo" + } + } } } } \ No newline at end of file diff --git a/homeassistant/components/vacuum/translations/pt.json b/homeassistant/components/vacuum/translations/pt.json index ea5bf05dc9f..03e98390584 100644 --- a/homeassistant/components/vacuum/translations/pt.json +++ b/homeassistant/components/vacuum/translations/pt.json @@ -4,7 +4,8 @@ "clean": "Deixar {entity_name} limpar" }, "condition_type": { - "is_cleaning": "{entity_name} est\u00e1 a limpar" + "is_cleaning": "{entity_name} est\u00e1 a limpar", + "is_docked": "{entity_name} est\u00e1 ancorado" } }, "state": { diff --git a/homeassistant/components/vesync/translations/lb.json b/homeassistant/components/vesync/translations/lb.json index a3793c66f8d..73453c73d5a 100644 --- a/homeassistant/components/vesync/translations/lb.json +++ b/homeassistant/components/vesync/translations/lb.json @@ -10,7 +10,7 @@ "user": { "data": { "password": "Passwuert", - "username": "E-Mail Adresse" + "username": "E-Mail" }, "title": "Benotzernumm a Passwuert aginn" } diff --git a/homeassistant/components/vilfo/translations/de.json b/homeassistant/components/vilfo/translations/de.json index d4b68d04c93..4880154b58e 100644 --- a/homeassistant/components/vilfo/translations/de.json +++ b/homeassistant/components/vilfo/translations/de.json @@ -11,8 +11,8 @@ "step": { "user": { "data": { - "access_token": "Zugriffstoken f\u00fcr die Vilfo Router-API", - "host": "Router-Hostname oder IP" + "access_token": "Zugriffstoken", + "host": "Host" }, "description": "Richten Sie die Vilfo Router-Integration ein. Sie ben\u00f6tigen Ihren Vilfo Router-Hostnamen / Ihre IP-Adresse und ein API-Zugriffstoken. Weitere Informationen zu dieser Integration und wie Sie diese Details erhalten, finden Sie unter: https://www.home-assistant.io/integrations/vilfo", "title": "Stellen Sie eine Verbindung zum Vilfo Router her" diff --git a/homeassistant/components/vilfo/translations/lb.json b/homeassistant/components/vilfo/translations/lb.json index 88964aedc9b..68a501bd5e5 100644 --- a/homeassistant/components/vilfo/translations/lb.json +++ b/homeassistant/components/vilfo/translations/lb.json @@ -11,8 +11,8 @@ "step": { "user": { "data": { - "access_token": "Acc\u00e8s Jeton fir Vilfo Router API", - "host": "Router Numm oder IP" + "access_token": "Acc\u00e8s Jeton", + "host": "Host" }, "description": "Vilfo Router Integratioun ariichten. Dir braucht \u00e4re Vilfo Router Numm/IP an een API Acc\u00e8s Jeton. Fir weider Informatiounen zu d\u00ebser Integratioun a w\u00e9i een zu d\u00ebsen n\u00e9idegen Informatioune k\u00ebnnt, gitt op: https://www.home-assistant.io/integrations/vilfo", "title": "Mam Vilfo Router verbannen" diff --git a/homeassistant/components/vilfo/translations/pt.json b/homeassistant/components/vilfo/translations/pt.json new file mode 100644 index 00000000000..ce7cbc3f548 --- /dev/null +++ b/homeassistant/components/vilfo/translations/pt.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "user": { + "data": { + "host": "Servidor" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/vizio/translations/de.json b/homeassistant/components/vizio/translations/de.json index 28397d08b8f..1d723cb9482 100644 --- a/homeassistant/components/vizio/translations/de.json +++ b/homeassistant/components/vizio/translations/de.json @@ -4,6 +4,7 @@ "updated_entry": "Dieser Eintrag wurde bereits eingerichtet, aber der Name, die Apps und / oder die in der Konfiguration definierten Optionen stimmen nicht mit der zuvor importierten Konfiguration \u00fcberein, sodass der Konfigurationseintrag entsprechend aktualisiert wurde." }, "error": { + "cannot_connect": "Verbindung fehlgeschlagen", "host_exists": "VIZIO-Ger\u00e4t mit angegebenem Host bereits konfiguriert.", "name_exists": "VIZIO-Ger\u00e4t mit angegebenem Namen bereits konfiguriert." }, @@ -27,7 +28,7 @@ "data": { "access_token": "Zugangstoken", "device_class": "Ger\u00e4tetyp", - "host": ":", + "host": "Host", "name": "Name" }, "description": "Ein Zugriffstoken wird nur f\u00fcr Fernsehger\u00e4te ben\u00f6tigt. Wenn Sie ein Fernsehger\u00e4t konfigurieren und noch kein Zugriffstoken haben, lassen Sie es leer, um einen Pairing-Vorgang durchzuf\u00fchren.", diff --git a/homeassistant/components/vizio/translations/fr.json b/homeassistant/components/vizio/translations/fr.json index 906f1580c35..ab1c51ffb9f 100644 --- a/homeassistant/components/vizio/translations/fr.json +++ b/homeassistant/components/vizio/translations/fr.json @@ -1,9 +1,11 @@ { "config": { "abort": { + "already_configured_device": "L'appareil est d\u00e9j\u00e0 configur\u00e9", "updated_entry": "Cette entr\u00e9e a d\u00e9j\u00e0 \u00e9t\u00e9 configur\u00e9e mais le nom et/ou les options d\u00e9finis dans la configuration ne correspondent pas \u00e0 la configuration pr\u00e9c\u00e9demment import\u00e9e, de sorte que l'entr\u00e9e de configuration a \u00e9t\u00e9 mise \u00e0 jour en cons\u00e9quence." }, "error": { + "cannot_connect": "\u00c9chec de connexion", "host_exists": "H\u00f4te d\u00e9j\u00e0 configur\u00e9.", "name_exists": "Nom d\u00e9j\u00e0 configur\u00e9." }, diff --git a/homeassistant/components/vizio/translations/it.json b/homeassistant/components/vizio/translations/it.json index 64f3d8ddd93..3877d9458eb 100644 --- a/homeassistant/components/vizio/translations/it.json +++ b/homeassistant/components/vizio/translations/it.json @@ -1,7 +1,7 @@ { "config": { "abort": { - "already_configured_device": "Dispositivo gi\u00e0 configurato", + "already_configured_device": "Il dispositivo \u00e8 gi\u00e0 configurato", "updated_entry": "Questa voce \u00e8 gi\u00e0 stata configurata, ma il nome, le app e/o le opzioni definite nella configurazione non corrispondono alla configurazione importata in precedenza, pertanto la voce di configurazione \u00e8 stata aggiornata di conseguenza." }, "error": { diff --git a/homeassistant/components/vizio/translations/ko.json b/homeassistant/components/vizio/translations/ko.json index 8b84c96b102..c56171e9319 100644 --- a/homeassistant/components/vizio/translations/ko.json +++ b/homeassistant/components/vizio/translations/ko.json @@ -7,8 +7,8 @@ "error": { "cannot_connect": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4", "complete_pairing_failed": "\ud398\uc5b4\ub9c1\uc744 \uc644\ub8cc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \uc81c\ucd9c\ud558\uae30 \uc804\uc5d0 \uc785\ub825\ud55c PIN \uc774 \uc62c\ubc14\ub978\uc9c0, TV \uc758 \uc804\uc6d0\uc774 \ucf1c\uc838 \uc788\uace0 \ub124\ud2b8\uc6cc\ud06c\uc5d0 \uc5f0\uacb0\ub418\uc5b4 \uc788\ub294\uc9c0 \ud655\uc778\ud574\uc8fc\uc138\uc694.", - "host_exists": "\uc124\uc815\ub41c \ud638\uc2a4\ud2b8\uc758 VIZIO \uae30\uae30\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.", - "name_exists": "\uc124\uc815\ub41c \uc774\ub984\uc758 VIZIO \uae30\uae30\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4." + "host_exists": "\uc124\uc815\ub41c \ud638\uc2a4\ud2b8\uc758 VIZIO SmartCast \uae30\uae30\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.", + "name_exists": "\uc124\uc815\ub41c \uc774\ub984\uc758 VIZIO SmartCast \uae30\uae30\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4." }, "step": { "pair_tv": { @@ -23,7 +23,7 @@ "title": "\ud398\uc5b4\ub9c1 \uc644\ub8cc" }, "pairing_complete_import": { - "description": "VIZIO SmartCast TV \uac00 Home Assistant \uc5d0 \uc5f0\uacb0\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \n\n\uc561\uc138\uc2a4 \ud1a0\ud070\uc740 '**{access_token}**' \uc785\ub2c8\ub2e4.", + "description": "VIZIO SmartCast \uae30\uae30\uac00 Home Assistant \uc5d0 \uc5f0\uacb0\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \n\n\uc561\uc138\uc2a4 \ud1a0\ud070\uc740 '**{access_token}**' \uc785\ub2c8\ub2e4.", "title": "\ud398\uc5b4\ub9c1 \uc644\ub8cc" }, "user": { @@ -34,7 +34,7 @@ "name": "\uc774\ub984" }, "description": "\uc561\uc138\uc2a4 \ud1a0\ud070\uc740 TV \uc5d0\ub9cc \ud544\uc694\ud569\ub2c8\ub2e4. TV \ub97c \uad6c\uc131\ud558\uace0 \uc788\uace0 \uc544\uc9c1 \uc561\uc138\uc2a4 \ud1a0\ud070\uc774 \uc5c6\ub294 \uacbd\uc6b0 \ud398\uc5b4\ub9c1 \uacfc\uc815\uc744 \uc9c4\ud589\ud558\ub824\uba74 \ube44\uc6cc\ub450\uc138\uc694.", - "title": "VIZIO SmartCast \uae30\uae30 \uc124\uc815\ud558\uae30" + "title": "VIZIO SmartCast \uae30\uae30" } } }, @@ -47,7 +47,7 @@ "volume_step": "\ubcfc\ub968 \ub2e8\uacc4 \ud06c\uae30" }, "description": "\uc2a4\ub9c8\ud2b8 TV \uac00 \uc788\ub294 \uacbd\uc6b0 \uc120\ud0dd\uc0ac\ud56d\uc73c\ub85c \uc18c\uc2a4 \ubaa9\ub85d\uc5d0 \ud3ec\ud568 \ub610\ub294 \uc81c\uc678\ud560 \uc571\uc744 \uc120\ud0dd\ud558\uc5ec \uc18c\uc2a4 \ubaa9\ub85d\uc744 \ud544\ud130\ub9c1\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.", - "title": "VIZIO SmartCast \uc635\uc158 \uc5c5\ub370\uc774\ud2b8\ud558\uae30" + "title": "VIZIO SmartCast \uae30\uae30 \uc635\uc158 \uc5c5\ub370\uc774\ud2b8\ud558\uae30" } } } diff --git a/homeassistant/components/vizio/translations/lb.json b/homeassistant/components/vizio/translations/lb.json index 1fefd98f9f7..63160393165 100644 --- a/homeassistant/components/vizio/translations/lb.json +++ b/homeassistant/components/vizio/translations/lb.json @@ -30,11 +30,11 @@ "data": { "access_token": "Acc\u00e8ss Jeton", "device_class": "Typ vun Apparat", - "host": ":", + "host": "Host", "name": "Numm" }, "description": "Een Access Jeton g\u00ebtt nn\u00ebmme fir Fernseher gebraucht. Wann Dir e Fernseh konfigur\u00e9iert a keen Access Jeton hutt, da loosst et eidel fir duerch dee Pairing Prozess ze goen.", - "title": "VIZIO Smartcast Apparat ariichten" + "title": "VIZIO Smartcast Apparat" } } }, diff --git a/homeassistant/components/vizio/translations/pt.json b/homeassistant/components/vizio/translations/pt.json index 286cd58dd89..695ad541026 100644 --- a/homeassistant/components/vizio/translations/pt.json +++ b/homeassistant/components/vizio/translations/pt.json @@ -1,6 +1,11 @@ { "config": { "step": { + "pair_tv": { + "data": { + "pin": "PIN" + } + }, "user": { "data": { "name": "Nome" diff --git a/homeassistant/components/wiffi/translations/fr.json b/homeassistant/components/wiffi/translations/fr.json new file mode 100644 index 00000000000..599ea7a4b65 --- /dev/null +++ b/homeassistant/components/wiffi/translations/fr.json @@ -0,0 +1,25 @@ +{ + "config": { + "abort": { + "addr_in_use": "Port du serveur d\u00e9j\u00e0 utilis\u00e9.", + "start_server_failed": "\u00c9chec du d\u00e9marrage du serveur." + }, + "step": { + "user": { + "data": { + "port": "Port de serveur" + }, + "title": "Configurer le serveur TCP pour les appareils WIFFI" + } + } + }, + "options": { + "step": { + "init": { + "data": { + "timeout": "D\u00e9lai d'expiration (minutes)" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/wled/translations/de.json b/homeassistant/components/wled/translations/de.json index bfae4dd47da..8a6aa1af160 100644 --- a/homeassistant/components/wled/translations/de.json +++ b/homeassistant/components/wled/translations/de.json @@ -11,7 +11,7 @@ "step": { "user": { "data": { - "host": "Hostname oder IP-Adresse" + "host": "Host" }, "description": "Richten Sie Ihren WLED f\u00fcr die Integration mit Home Assistant ein." }, diff --git a/homeassistant/components/wled/translations/fr.json b/homeassistant/components/wled/translations/fr.json index 12e539cf755..2e29f1cd8c9 100644 --- a/homeassistant/components/wled/translations/fr.json +++ b/homeassistant/components/wled/translations/fr.json @@ -1,10 +1,19 @@ { "config": { + "abort": { + "already_configured": "Cet appareil WLED est d\u00e9j\u00e0 configur\u00e9.", + "connection_error": "Impossible de se connecter au p\u00e9riph\u00e9rique WLED." + }, + "error": { + "connection_error": "Impossible de se connecter au p\u00e9riph\u00e9rique WLED." + }, + "flow_title": "WLED: {name}", "step": { "user": { "data": { "host": "H\u00f4te ou adresse IP" - } + }, + "description": "Configurez votre WLED pour l'int\u00e9grer \u00e0 Home Assistant." } } } diff --git a/homeassistant/components/wled/translations/lb.json b/homeassistant/components/wled/translations/lb.json index 8a5069a0e1b..1490e62e068 100644 --- a/homeassistant/components/wled/translations/lb.json +++ b/homeassistant/components/wled/translations/lb.json @@ -11,7 +11,7 @@ "step": { "user": { "data": { - "host": "Numm oder IP Adresse" + "host": "Host" }, "description": "D\u00e4in WLED als Integratioun mam Home Assistant ariichten." }, diff --git a/homeassistant/components/xiaomi_miio/translations/en.json b/homeassistant/components/xiaomi_miio/translations/en.json index 49c5c683993..ce57c18f523 100644 --- a/homeassistant/components/xiaomi_miio/translations/en.json +++ b/homeassistant/components/xiaomi_miio/translations/en.json @@ -8,6 +8,7 @@ "connect_error": "Failed to connect", "no_device_selected": "No device selected, please select one device." }, + "flow_title": "Xiaomi Miio: {name}", "step": { "gateway": { "data": { @@ -15,7 +16,7 @@ "name": "Name of the Gateway", "token": "API Token" }, - "description": "You will need the API Token, see https://www.home-assistant.io/integrations/vacuum.xiaomi_miio/#retrieving-the-access-token for instructions.", + "description": "You will need the 32 character API Token, see https://www.home-assistant.io/integrations/vacuum.xiaomi_miio/#retrieving-the-access-token for instructions. Please note, that this token is different from the key used by the Xiaomi Aqara integration.", "title": "Connect to a Xiaomi Gateway" }, "user": { diff --git a/homeassistant/components/xiaomi_miio/translations/lb.json b/homeassistant/components/xiaomi_miio/translations/lb.json index 9be68bfd057..3a55f0d8a2d 100644 --- a/homeassistant/components/xiaomi_miio/translations/lb.json +++ b/homeassistant/components/xiaomi_miio/translations/lb.json @@ -5,7 +5,7 @@ "already_in_progress": "Konfiguratioun's Oflaf fir d\u00ebse Xiaomi Miio Apparat ass schonn am gaangen." }, "error": { - "connect_error": "Feeler beim verbannen, prob\u00e9ier w.e.g. nach emol.", + "connect_error": "Feeler beim verbannen", "no_device_selected": "Keen Apparat ausgewielt, wiel een Apparat aus w.e.g." }, "step": { diff --git a/homeassistant/components/xiaomi_miio/translations/pt.json b/homeassistant/components/xiaomi_miio/translations/pt.json new file mode 100644 index 00000000000..5c127b797e7 --- /dev/null +++ b/homeassistant/components/xiaomi_miio/translations/pt.json @@ -0,0 +1,11 @@ +{ + "config": { + "step": { + "gateway": { + "data": { + "host": "Endere\u00e7o IP" + } + } + } + } +} \ No newline at end of file diff --git a/homeassistant/components/xiaomi_miio/translations/zh-Hans.json b/homeassistant/components/xiaomi_miio/translations/zh-Hans.json index 9a7dfcb37cc..086f449e0ca 100644 --- a/homeassistant/components/xiaomi_miio/translations/zh-Hans.json +++ b/homeassistant/components/xiaomi_miio/translations/zh-Hans.json @@ -1,9 +1,14 @@ { "config": { + "abort": { + "already_configured": "\u8bbe\u5907\u5df2\u7ecf\u914d\u7f6e\u8fc7\u4e86", + "already_in_progress": "\u6b64\u5c0f\u7c73\u8bbe\u5907\u7684\u914d\u7f6e\u6d41\u7a0b\u5df2\u5728\u8fdb\u884c\u4e2d\u3002" + }, "error": { "connect_error": "\u8fde\u63a5\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5", "no_device_selected": "\u672a\u9009\u62e9\u8bbe\u5907\uff0c\u8bf7\u9009\u62e9\u4e00\u4e2a\u8bbe\u5907\u3002" }, + "flow_title": "\u5c0f\u7c73 Miio: {name}", "step": { "gateway": { "data": { @@ -11,7 +16,7 @@ "name": "\u7f51\u5173\u540d\u79f0", "token": "API Token" }, - "description": "\u60a8\u9700\u8981\u83b7\u53d6 API Token\u3002\u5982\u9700\u5e2e\u52a9\uff0c\u8bf7\u53c2\u9605\u4ee5\u4e0b\u94fe\u63a5\uff1ahttps://www.home-assistant.io/integrations/vacuum.xiaomi_miio/#retrieving-the-access-token", + "description": "\u60a8\u9700\u8981\u83b7\u53d6\u4e00\u4e2a 32 \u4f4d\u7684 API Token\u3002\u5982\u9700\u5e2e\u52a9\uff0c\u8bf7\u53c2\u9605\u4ee5\u4e0b\u94fe\u63a5: https://www.home-assistant.io/integrations/vacuum.xiaomi_miio/#retrieving-the-access-token \u3002\u8bf7\u6ce8\u610f\u6b64 token \u4e0d\u540c\u4e8e\u201cXiaomi Aqara\u201d\u96c6\u6210\u6240\u9700\u7684 key\u3002", "title": "\u8fde\u63a5\u5230\u5c0f\u7c73\u7f51\u5173" }, "user": { diff --git a/homeassistant/components/zerproc/translations/fr.json b/homeassistant/components/zerproc/translations/fr.json new file mode 100644 index 00000000000..cdfd3890fb8 --- /dev/null +++ b/homeassistant/components/zerproc/translations/fr.json @@ -0,0 +1,3 @@ +{ + "title": "Zerproc" +} \ No newline at end of file diff --git a/homeassistant/components/zwave/translations/de.json b/homeassistant/components/zwave/translations/de.json index 2c2850c1fd5..876cdf42921 100644 --- a/homeassistant/components/zwave/translations/de.json +++ b/homeassistant/components/zwave/translations/de.json @@ -11,7 +11,7 @@ "user": { "data": { "network_key": "Netzwerkschl\u00fcssel (leer lassen, um automatisch zu generieren)", - "usb_path": "USB-Pfad" + "usb_path": "USB-Ger\u00e4t Pfad" }, "description": "Informationen zu den Konfigurationsvariablen findest du unter https://www.home-assistant.io/docs/z-wave/installation/", "title": "Z-Wave einrichten" @@ -27,7 +27,7 @@ }, "query_stage": { "dead": "Nicht erreichbar ({query_stage})", - "initializing": "Initialisiere ({query_stage})" + "initializing": "Initialisiere" } } } \ No newline at end of file diff --git a/homeassistant/components/zwave/translations/lb.json b/homeassistant/components/zwave/translations/lb.json index 7abe764c2a1..4b2caf08ad9 100644 --- a/homeassistant/components/zwave/translations/lb.json +++ b/homeassistant/components/zwave/translations/lb.json @@ -11,7 +11,7 @@ "user": { "data": { "network_key": "Netzwierk Schl\u00ebssel (eidel loossen fir een automatesch z'erstellen)", - "usb_path": "USB Pad" + "usb_path": "Pad zum USB Apparat" }, "description": "Lies op https://www.home-assistant.io/docs/z-wave/installation/ fir weider Informatiounen iwwert d'Konfiguratioun vun den Variabelen", "title": "Z-Wave konfigur\u00e9ieren" From 4bccb6e72b9dd9b582e2d0a9555df037e2f444d1 Mon Sep 17 00:00:00 2001 From: Xiaonan Shen Date: Wed, 10 Jun 2020 09:31:59 -0700 Subject: [PATCH 02/34] Fix command line sensors removing quotes with template (#35559) Co-authored-by: Martin Hjelmare --- homeassistant/components/command_line/sensor.py | 3 +-- tests/components/command_line/test_sensor.py | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/command_line/sensor.py b/homeassistant/components/command_line/sensor.py index f7ae21ab704..feb63e18443 100644 --- a/homeassistant/components/command_line/sensor.py +++ b/homeassistant/components/command_line/sensor.py @@ -3,7 +3,6 @@ from collections.abc import Mapping from datetime import timedelta import json import logging -import shlex import subprocess import voluptuous as vol @@ -171,7 +170,7 @@ class CommandSensorData: pass else: # Template used. Construct the string used in the shell - command = str(" ".join([prog] + shlex.split(rendered_args))) + command = f"{prog} {rendered_args}" try: _LOGGER.debug("Running command: %s", command) return_value = subprocess.check_output( diff --git a/tests/components/command_line/test_sensor.py b/tests/components/command_line/test_sensor.py index bbf69dc73a0..d48f5789fb3 100644 --- a/tests/components/command_line/test_sensor.py +++ b/tests/components/command_line/test_sensor.py @@ -73,6 +73,23 @@ class TestCommandSensorSensor(unittest.TestCase): assert data.value == "Works" + def test_template_render_with_quote(self): + """Ensure command with templates and quotes get rendered properly.""" + self.hass.states.set("sensor.test_state", "Works 2") + with patch( + "homeassistant.components.command_line.sensor.subprocess.check_output", + return_value=b"Works\n", + ) as check_output: + data = command_line.CommandSensorData( + self.hass, 'echo "{{ states.sensor.test_state.state }}" "3 4"', 15, + ) + data.update() + + assert data.value == "Works" + check_output.assert_called_once_with( + 'echo "Works 2" "3 4"', shell=True, timeout=15 # nosec # shell by design + ) + def test_bad_command(self): """Test bad command.""" data = command_line.CommandSensorData(self.hass, "asdfasdf", 15) From 4c139076ef7f3ccbbb2f6af705817dacca650d5a Mon Sep 17 00:00:00 2001 From: Fredrik Erlandsson Date: Wed, 10 Jun 2020 15:04:59 +0200 Subject: [PATCH 03/34] Fix Daikin config flow for zeroconf devices (#36571) --- homeassistant/components/daikin/config_flow.py | 4 ++-- tests/components/daikin/test_config_flow.py | 16 +++++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/homeassistant/components/daikin/config_flow.py b/homeassistant/components/daikin/config_flow.py index 5f2a8a0c0b1..9d236610361 100644 --- a/homeassistant/components/daikin/config_flow.py +++ b/homeassistant/components/daikin/config_flow.py @@ -40,8 +40,8 @@ class FlowHandler(config_entries.ConfigFlow): async def _create_entry(self, host, mac, key=None, uuid=None, password=None): """Register new entry.""" - # Check if mac already is registered - await self.async_set_unique_id(mac) + if not self.unique_id: + await self.async_set_unique_id(mac) self._abort_if_unique_id_configured() return self.async_create_entry( diff --git a/tests/components/daikin/test_config_flow.py b/tests/components/daikin/test_config_flow.py index 67affc3d501..8d7c99b795e 100644 --- a/tests/components/daikin/test_config_flow.py +++ b/tests/components/daikin/test_config_flow.py @@ -25,6 +25,7 @@ from tests.common import MockConfigEntry MAC = "AABBCCDDEEFF" HOST = "127.0.0.1" +HOSTNAME = "DaikinUNIQUE.local" @pytest.fixture @@ -112,11 +113,7 @@ async def test_device_abort(hass, mock_daikin, s_effect, reason): "source, data, unique_id", [ (SOURCE_DISCOVERY, {KEY_IP: HOST, KEY_MAC: MAC}, MAC), - ( - SOURCE_ZEROCONF, - {CONF_HOST: HOST, KEY_HOSTNAME: "DaikinUNIQE.local"}, - "DaikinUNIQE.local", - ), + (SOURCE_ZEROCONF, {CONF_HOST: HOST, KEY_HOSTNAME: HOSTNAME}, HOSTNAME), ], ) async def test_discovery_zeroconf(hass, mock_daikin, source, data, unique_id): @@ -128,6 +125,15 @@ async def test_discovery_zeroconf(hass, mock_daikin, source, data, unique_id): assert result["step_id"] == "user" MockConfigEntry(domain="daikin", unique_id=unique_id).add_to_hass(hass) + result = await hass.config_entries.flow.async_init( + "daikin", + context={"source": SOURCE_USER, "unique_id": unique_id}, + data={CONF_HOST: HOST}, + ) + + assert result["type"] == RESULT_TYPE_ABORT + assert result["reason"] == "already_configured" + result = await hass.config_entries.flow.async_init( "daikin", context={"source": source}, data=data, ) From c2a261370eb36b029fdeec422fced5578684a7f4 Mon Sep 17 00:00:00 2001 From: starkillerOG Date: Thu, 11 Jun 2020 17:12:19 +0200 Subject: [PATCH 04/34] Xiaomi Miio gateway: add ip to zeroconf discovery title (#36653) * add ip to discovery title of xiaomi miio gateway * add flow title to identify multiple gateways by IP * clearify gateway token * black formatting * grammer improvements Co-authored-by: Franck Nijhof * grammer improvements Co-authored-by: Franck Nijhof Co-authored-by: Franck Nijhof --- homeassistant/components/xiaomi_miio/config_flow.py | 5 +++++ homeassistant/components/xiaomi_miio/strings.json | 3 ++- homeassistant/components/xiaomi_miio/translations/en.json | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/xiaomi_miio/config_flow.py b/homeassistant/components/xiaomi_miio/config_flow.py index e35aa0c8b10..7de55835916 100644 --- a/homeassistant/components/xiaomi_miio/config_flow.py +++ b/homeassistant/components/xiaomi_miio/config_flow.py @@ -66,6 +66,11 @@ class XiaomiMiioFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): await self.async_set_unique_id(unique_id) self._abort_if_unique_id_configured({CONF_HOST: self.host}) + # pylint: disable=no-member # https://github.com/PyCQA/pylint/issues/3167 + self.context.update( + {"title_placeholders": {"name": f"Gateway {self.host}"}} + ) + return await self.async_step_gateway() # Discovered device is not yet supported diff --git a/homeassistant/components/xiaomi_miio/strings.json b/homeassistant/components/xiaomi_miio/strings.json index 0024ffdfe9b..171e358c90e 100644 --- a/homeassistant/components/xiaomi_miio/strings.json +++ b/homeassistant/components/xiaomi_miio/strings.json @@ -1,5 +1,6 @@ { "config": { + "flow_title": "Xiaomi Miio: {name}", "step": { "user": { "title": "Xiaomi Miio", @@ -10,7 +11,7 @@ }, "gateway": { "title": "Connect to a Xiaomi Gateway", - "description": "You will need the API Token, see https://www.home-assistant.io/integrations/vacuum.xiaomi_miio/#retrieving-the-access-token for instructions.", + "description": "You will need the 32 character API Token, see https://www.home-assistant.io/integrations/vacuum.xiaomi_miio/#retrieving-the-access-token for instructions. Please note, that this token is different from the key used by the Xiaomi Aqara integration.", "data": { "host": "[%key:common::config_flow::data::ip%]", "token": "API Token", diff --git a/homeassistant/components/xiaomi_miio/translations/en.json b/homeassistant/components/xiaomi_miio/translations/en.json index ce57c18f523..dc271b1030b 100644 --- a/homeassistant/components/xiaomi_miio/translations/en.json +++ b/homeassistant/components/xiaomi_miio/translations/en.json @@ -1,5 +1,6 @@ { "config": { + "flow_title": "Xiaomi Miio: {name}", "abort": { "already_configured": "Device is already configured", "already_in_progress": "Config flow for this Xiaomi Miio device is already in progress." @@ -28,4 +29,4 @@ } } } -} \ No newline at end of file +} From c5972690accaa1045793d7716bb0a3ed5febcd2e Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 11 Jun 2020 10:40:51 -0500 Subject: [PATCH 05/34] Update pymyq for latest api requirements (#36666) --- homeassistant/components/myq/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/myq/manifest.json b/homeassistant/components/myq/manifest.json index 8a68eae03ea..10107967056 100644 --- a/homeassistant/components/myq/manifest.json +++ b/homeassistant/components/myq/manifest.json @@ -2,7 +2,7 @@ "domain": "myq", "name": "MyQ", "documentation": "https://www.home-assistant.io/integrations/myq", - "requirements": ["pymyq==2.0.3"], + "requirements": ["pymyq==2.0.4"], "codeowners": ["@bdraco"], "config_flow": true, "homekit": { diff --git a/requirements_all.txt b/requirements_all.txt index 728e70634cf..214594fe812 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1468,7 +1468,7 @@ pymsteams==0.1.12 pymusiccast==0.1.6 # homeassistant.components.myq -pymyq==2.0.3 +pymyq==2.0.4 # homeassistant.components.mysensors pymysensors==0.18.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index c576dd99695..e8838533578 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -639,7 +639,7 @@ pymodbus==2.3.0 pymonoprice==0.3 # homeassistant.components.myq -pymyq==2.0.3 +pymyq==2.0.4 # homeassistant.components.nut pynut2==2.1.2 From c9c8e8160f61777b68610c4080109b5aea8e4698 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 11 Jun 2020 12:15:02 -0500 Subject: [PATCH 06/34] Remove powerwall attributes no longer present in latest firmware (#36667) --- homeassistant/components/powerwall/binary_sensor.py | 12 ------------ homeassistant/components/powerwall/const.py | 3 --- tests/components/powerwall/test_binary_sensor.py | 3 --- 3 files changed, 18 deletions(-) diff --git a/homeassistant/components/powerwall/binary_sensor.py b/homeassistant/components/powerwall/binary_sensor.py index 160a62a2029..b3fe9d977d3 100644 --- a/homeassistant/components/powerwall/binary_sensor.py +++ b/homeassistant/components/powerwall/binary_sensor.py @@ -11,9 +11,6 @@ from homeassistant.components.binary_sensor import ( from homeassistant.const import DEVICE_CLASS_POWER from .const import ( - ATTR_GRID_CODE, - ATTR_NOMINAL_SYSTEM_POWER, - ATTR_REGION, DOMAIN, POWERWALL_API_DEVICE_TYPE, POWERWALL_API_GRID_STATUS, @@ -79,15 +76,6 @@ class PowerWallRunningSensor(PowerWallEntity, BinarySensorEntity): """Get the powerwall running state.""" return self._coordinator.data[POWERWALL_API_SITEMASTER].running - @property - def device_state_attributes(self): - """Return the device specific state attributes.""" - return { - ATTR_REGION: self._site_info.region, - ATTR_GRID_CODE: self._site_info.grid_code, - ATTR_NOMINAL_SYSTEM_POWER: self._site_info.nominal_system_power_kW, - } - class PowerWallConnectedSensor(PowerWallEntity, BinarySensorEntity): """Representation of an Powerwall connected sensor.""" diff --git a/homeassistant/components/powerwall/const.py b/homeassistant/components/powerwall/const.py index 5f0e9ae3b35..caf08679652 100644 --- a/homeassistant/components/powerwall/const.py +++ b/homeassistant/components/powerwall/const.py @@ -8,13 +8,10 @@ POWERWALL_API_CHANGED = "api_changed" UPDATE_INTERVAL = 30 -ATTR_REGION = "region" -ATTR_GRID_CODE = "grid_code" ATTR_FREQUENCY = "frequency" ATTR_ENERGY_EXPORTED = "energy_exported_(in_kW)" ATTR_ENERGY_IMPORTED = "energy_imported_(in_kW)" ATTR_INSTANT_AVERAGE_VOLTAGE = "instant_average_voltage" -ATTR_NOMINAL_SYSTEM_POWER = "nominal_system_power_kW" ATTR_IS_ACTIVE = "is_active" STATUS_VERSION = "version" diff --git a/tests/components/powerwall/test_binary_sensor.py b/tests/components/powerwall/test_binary_sensor.py index fcca7fb34ab..1cdda033c12 100644 --- a/tests/components/powerwall/test_binary_sensor.py +++ b/tests/components/powerwall/test_binary_sensor.py @@ -33,9 +33,6 @@ async def test_sensors(hass): state = hass.states.get("binary_sensor.powerwall_status") assert state.state == STATE_ON expected_attributes = { - "region": "IEEE1547a:2014", - "grid_code": "60Hz_240V_s_IEEE1547a_2014", - "nominal_system_power_kW": 25, "friendly_name": "Powerwall Status", "device_class": "power", } From e2c9af42e8417716a2189f0ed9e545f977ca6b8b Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 11 Jun 2020 10:15:52 -0700 Subject: [PATCH 07/34] Bumped version to 0.111.1 --- homeassistant/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 67ad32d392b..76b6c8125cf 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -1,7 +1,7 @@ """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 MINOR_VERSION = 111 -PATCH_VERSION = "0" +PATCH_VERSION = "1" __short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__ = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER = (3, 7, 0) From aac7cf129d36f5f83fa3b9b7cd6d4a353dfaa521 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Thu, 11 Jun 2020 19:59:52 +0200 Subject: [PATCH 08/34] Fix packages when config schema is fully deprecated (#36674) Co-authored-by: Paulus Schoutsen --- homeassistant/config.py | 3 +++ tests/test_config.py | 2 ++ 2 files changed, 5 insertions(+) diff --git a/homeassistant/config.py b/homeassistant/config.py index dd5e16f42de..2d90838cb9d 100644 --- a/homeassistant/config.py +++ b/homeassistant/config.py @@ -559,6 +559,9 @@ def _log_pkg_error(package: str, component: str, config: Dict, message: str) -> def _identify_config_schema(module: ModuleType) -> Optional[str]: """Extract the schema and identify list or dict based.""" + if not isinstance(module.CONFIG_SCHEMA, vol.Schema): # type: ignore + return None + schema = module.CONFIG_SCHEMA.schema # type: ignore if isinstance(schema, vol.All): diff --git a/tests/test_config.py b/tests/test_config.py index ab9eeb639e6..e374ab3ae69 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -28,6 +28,7 @@ from homeassistant.const import ( __version__, ) from homeassistant.core import SOURCE_STORAGE, HomeAssistantError +from homeassistant.helpers import config_validation as cv import homeassistant.helpers.check_config as check_config from homeassistant.helpers.entity import Entity from homeassistant.loader import async_get_integration @@ -1029,6 +1030,7 @@ async def test_component_config_exceptions(hass, caplog): ("non_existing", vol.Schema({"zone": int}), None), ("zone", vol.Schema({}), None), ("plex", vol.Schema(vol.All({"plex": {"host": str}})), "dict"), + ("openuv", cv.deprecated("openuv", invalidation_version="0.115"), None), ], ) def test_identify_config_schema(domain, schema, expected): From 504cb263293f3daa011f4d87de3ef1fb0ccb4bc6 Mon Sep 17 00:00:00 2001 From: zewelor Date: Fri, 12 Jun 2020 00:46:00 +0200 Subject: [PATCH 09/34] Fix nightlight support detection (#36656) --- homeassistant/components/yeelight/__init__.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/yeelight/__init__.py b/homeassistant/components/yeelight/__init__.py index c36c7be00fa..b0413599fe3 100644 --- a/homeassistant/components/yeelight/__init__.py +++ b/homeassistant/components/yeelight/__init__.py @@ -239,11 +239,12 @@ class YeelightDevice: @property def is_nightlight_supported(self) -> bool: - """Return true / false if nightlight is supported.""" - if self.model: - return self.bulb.get_model_specs().get("night_light", False) + """ + Return true / false if nightlight is supported. + + Uses brightness as it appears to be supported in both ceiling and other lights. + """ - # It should support both ceiling and other lights return self._nightlight_brightness is not None @property @@ -333,6 +334,12 @@ class YeelightDevice: """Request device capabilities.""" try: self.bulb.get_capabilities() + _LOGGER.debug( + "Device %s, %s capabilities: %s", + self.ipaddr, + self.name, + self.bulb.capabilities, + ) except BulbException as ex: _LOGGER.error( "Unable to get device capabilities %s, %s: %s", From 9e73853d650522e1b7ab4554b8c11f689f306c71 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 12 Jun 2020 09:27:51 -0700 Subject: [PATCH 10/34] Guard OwnTracks writing state before hass available (#36680) --- homeassistant/components/owntracks/device_tracker.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/owntracks/device_tracker.py b/homeassistant/components/owntracks/device_tracker.py index 89312f96c68..b1204082887 100644 --- a/homeassistant/components/owntracks/device_tracker.py +++ b/homeassistant/components/owntracks/device_tracker.py @@ -154,4 +154,5 @@ class OwnTracksEntity(TrackerEntity, RestoreEntity): def update_data(self, data): """Mark the device as seen.""" self._data = data - self.async_write_ha_state() + if self.hass: + self.async_write_ha_state() From ad7edb4abe4cc4a2195aecae271ee019ff74a9d0 Mon Sep 17 00:00:00 2001 From: jjlawren Date: Thu, 11 Jun 2020 17:45:00 -0500 Subject: [PATCH 11/34] Fix missing options in Plex config entry (#36683) --- homeassistant/components/plex/__init__.py | 6 +++ tests/components/plex/test_config_flow.py | 50 +++++++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/homeassistant/components/plex/__init__.py b/homeassistant/components/plex/__init__.py index e460115ef0b..89a3570dd10 100644 --- a/homeassistant/components/plex/__init__.py +++ b/homeassistant/components/plex/__init__.py @@ -9,6 +9,7 @@ from plexwebsocket import PlexWebsocket import requests.exceptions import voluptuous as vol +from homeassistant.components.media_player import DOMAIN as MP_DOMAIN from homeassistant.components.media_player.const import ( ATTR_MEDIA_CONTENT_ID, ATTR_MEDIA_CONTENT_TYPE, @@ -65,6 +66,11 @@ async def async_setup_entry(hass, entry): entry, unique_id=entry.data[CONF_SERVER_IDENTIFIER] ) + if MP_DOMAIN not in entry.options: + options = dict(entry.options) + options.setdefault(MP_DOMAIN, {}) + hass.config_entries.async_update_entry(entry, options=options) + plex_server = PlexServer( hass, server_config, entry.data[CONF_SERVER_IDENTIFIER], entry.options ) diff --git a/tests/components/plex/test_config_flow.py b/tests/components/plex/test_config_flow.py index c51c0670525..4ffea576514 100644 --- a/tests/components/plex/test_config_flow.py +++ b/tests/components/plex/test_config_flow.py @@ -405,6 +405,56 @@ async def test_option_flow(hass): } +async def test_missing_option_flow(hass): + """Test config options flow selection when no options stored.""" + mock_plex_server = MockPlexServer() + + entry = MockConfigEntry( + domain=DOMAIN, + data=DEFAULT_DATA, + options=None, + unique_id=DEFAULT_DATA["server_id"], + ) + + with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch( + "homeassistant.components.plex.PlexWebsocket.listen" + ) as mock_listen: + entry.add_to_hass(hass) + assert await hass.config_entries.async_setup(entry.entry_id) + await hass.async_block_till_done() + + assert mock_listen.called + + assert len(hass.config_entries.async_entries(DOMAIN)) == 1 + assert entry.state == ENTRY_STATE_LOADED + + result = await hass.config_entries.options.async_init( + entry.entry_id, context={"source": "test"}, data=None + ) + assert result["type"] == "form" + assert result["step_id"] == "plex_mp_settings" + + result = await hass.config_entries.options.async_configure( + result["flow_id"], + user_input={ + CONF_USE_EPISODE_ART: True, + CONF_IGNORE_NEW_SHARED_USERS: True, + CONF_MONITORED_USERS: list(mock_plex_server.accounts), + }, + ) + assert result["type"] == "create_entry" + assert result["data"] == { + MP_DOMAIN: { + CONF_USE_EPISODE_ART: True, + CONF_IGNORE_NEW_SHARED_USERS: True, + CONF_MONITORED_USERS: { + user: {"enabled": True} for user in mock_plex_server.accounts + }, + CONF_IGNORE_PLEX_WEB_CLIENTS: False, + } + } + + async def test_option_flow_new_users_available(hass, caplog): """Test config options multiselect defaults when new Plex users are seen.""" From 2594f11b343dd23b8fb4d12a59501dfe3840c83f Mon Sep 17 00:00:00 2001 From: Alexei Chetroi Date: Thu, 11 Jun 2020 22:37:07 -0400 Subject: [PATCH 12/34] Fix ZHA Metering channel formatting method (#36697) Since zigpy change to support bitmap classes, formatting string was incorrectly generated for the newly joined devices with SmartEnergy metering clusters. --- homeassistant/components/zha/core/channels/smartenergy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/zha/core/channels/smartenergy.py b/homeassistant/components/zha/core/channels/smartenergy.py index 58a394e7c80..b6a631308ee 100644 --- a/homeassistant/components/zha/core/channels/smartenergy.py +++ b/homeassistant/components/zha/core/channels/smartenergy.py @@ -128,7 +128,7 @@ class Metering(ZigbeeChannel): "demand_formatting", 0xF9 ) # 1 digit to the right, 15 digits to the left - r_digits = fmting & 0x07 # digits to the right of decimal point + r_digits = int(fmting & 0x07) # digits to the right of decimal point l_digits = (fmting >> 3) & 0x0F # digits to the left of decimal point if l_digits == 0: l_digits = 15 From 599288dae2d1118a8b96a29554e3aa8867a742c4 Mon Sep 17 00:00:00 2001 From: Fredrik Erlandsson Date: Fri, 12 Jun 2020 17:25:18 +0200 Subject: [PATCH 13/34] Fix Daikin discovery (#36704) --- homeassistant/components/daikin/__init__.py | 2 ++ .../components/daikin/config_flow.py | 6 ++++-- homeassistant/components/daikin/const.py | 1 - homeassistant/components/daikin/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- tests/components/daikin/test_config_flow.py | 19 +++++++++++++++---- 7 files changed, 24 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/daikin/__init__.py b/homeassistant/components/daikin/__init__.py index 35ea9ff6f35..49a939b8c72 100644 --- a/homeassistant/components/daikin/__init__.py +++ b/homeassistant/components/daikin/__init__.py @@ -72,6 +72,8 @@ async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry): # For backwards compat, set unique ID if entry.unique_id is None: hass.config_entries.async_update_entry(entry, unique_id=conf[KEY_MAC]) + elif ".local" in entry.unique_id: + hass.config_entries.async_update_entry(entry, unique_id=conf[KEY_MAC]) daikin_api = await daikin_api_setup( hass, conf[CONF_HOST], diff --git a/homeassistant/components/daikin/config_flow.py b/homeassistant/components/daikin/config_flow.py index 9d236610361..67411bfdff0 100644 --- a/homeassistant/components/daikin/config_flow.py +++ b/homeassistant/components/daikin/config_flow.py @@ -6,12 +6,13 @@ from uuid import uuid4 from aiohttp import ClientError, web_exceptions from async_timeout import timeout from pydaikin.daikin_base import Appliance +from pydaikin.discovery import Discovery import voluptuous as vol from homeassistant import config_entries from homeassistant.const import CONF_HOST, CONF_PASSWORD -from .const import CONF_KEY, CONF_UUID, KEY_HOSTNAME, KEY_IP, KEY_MAC, TIMEOUT +from .const import CONF_KEY, CONF_UUID, KEY_IP, KEY_MAC, TIMEOUT _LOGGER = logging.getLogger(__name__) @@ -128,7 +129,8 @@ class FlowHandler(config_entries.ConfigFlow): async def async_step_zeroconf(self, discovery_info): """Prepare configuration for a discovered Daikin device.""" _LOGGER.debug("Zeroconf discovery_info: %s", discovery_info) - await self.async_set_unique_id(discovery_info[KEY_HOSTNAME]) + devices = Discovery.poll(discovery_info[CONF_HOST]) + await self.async_set_unique_id(next(iter(devices.values()))[KEY_MAC]) self._abort_if_unique_id_configured() self.host = discovery_info[CONF_HOST] return await self.async_step_user() diff --git a/homeassistant/components/daikin/const.py b/homeassistant/components/daikin/const.py index 3e24325e5b1..30d34b898d3 100644 --- a/homeassistant/components/daikin/const.py +++ b/homeassistant/components/daikin/const.py @@ -64,6 +64,5 @@ CONF_UUID = "uuid" KEY_MAC = "mac" KEY_IP = "ip" -KEY_HOSTNAME = "hostname" TIMEOUT = 60 diff --git a/homeassistant/components/daikin/manifest.json b/homeassistant/components/daikin/manifest.json index f555174494b..1a180aa5ab6 100644 --- a/homeassistant/components/daikin/manifest.json +++ b/homeassistant/components/daikin/manifest.json @@ -3,7 +3,7 @@ "name": "Daikin AC", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/daikin", - "requirements": ["pydaikin==2.1.1"], + "requirements": ["pydaikin==2.1.2"], "codeowners": ["@fredrike"], "zeroconf": ["_dkapi._tcp.local."], "quality_scale": "platinum" diff --git a/requirements_all.txt b/requirements_all.txt index 214594fe812..0a5bc621a4c 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1263,7 +1263,7 @@ pycsspeechtts==1.0.3 # pycups==1.9.73 # homeassistant.components.daikin -pydaikin==2.1.1 +pydaikin==2.1.2 # homeassistant.components.danfoss_air pydanfossair==0.1.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index e8838533578..ea7555942c6 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -545,7 +545,7 @@ pychromecast==6.0.0 pycoolmasternet==0.0.4 # homeassistant.components.daikin -pydaikin==2.1.1 +pydaikin==2.1.2 # homeassistant.components.deconz pydeconz==71 diff --git a/tests/components/daikin/test_config_flow.py b/tests/components/daikin/test_config_flow.py index 8d7c99b795e..9702e5ad2c7 100644 --- a/tests/components/daikin/test_config_flow.py +++ b/tests/components/daikin/test_config_flow.py @@ -6,7 +6,7 @@ from aiohttp import ClientError from aiohttp.web_exceptions import HTTPForbidden import pytest -from homeassistant.components.daikin.const import KEY_HOSTNAME, KEY_IP, KEY_MAC +from homeassistant.components.daikin.const import KEY_IP, KEY_MAC from homeassistant.config_entries import ( SOURCE_DISCOVERY, SOURCE_IMPORT, @@ -25,7 +25,6 @@ from tests.common import MockConfigEntry MAC = "AABBCCDDEEFF" HOST = "127.0.0.1" -HOSTNAME = "DaikinUNIQUE.local" @pytest.fixture @@ -42,6 +41,16 @@ def mock_daikin(): yield Appliance +@pytest.fixture +def mock_daikin_discovery(): + """Mock pydaikin Discovery.""" + with patch("homeassistant.components.daikin.config_flow.Discovery") as Discovery: + Discovery.poll = PropertyMock( + return_value={"127.0.01": {"mac": "AABBCCDDEEFF", "id": "test"}} + ) + yield Discovery + + async def test_user(hass, mock_daikin): """Test user config.""" result = await hass.config_entries.flow.async_init( @@ -113,10 +122,12 @@ async def test_device_abort(hass, mock_daikin, s_effect, reason): "source, data, unique_id", [ (SOURCE_DISCOVERY, {KEY_IP: HOST, KEY_MAC: MAC}, MAC), - (SOURCE_ZEROCONF, {CONF_HOST: HOST, KEY_HOSTNAME: HOSTNAME}, HOSTNAME), + (SOURCE_ZEROCONF, {CONF_HOST: HOST}, MAC), ], ) -async def test_discovery_zeroconf(hass, mock_daikin, source, data, unique_id): +async def test_discovery_zeroconf( + hass, mock_daikin, mock_daikin_discovery, source, data, unique_id +): """Test discovery/zeroconf step.""" result = await hass.config_entries.flow.async_init( "daikin", context={"source": source}, data=data, From 66ad69bff3b37db468568e50d5834c47cde20a2f Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Fri, 12 Jun 2020 20:45:17 +0200 Subject: [PATCH 14/34] Fix logbook filtering for described events (#36727) --- homeassistant/components/logbook/__init__.py | 16 ++--- tests/components/logbook/test_init.py | 65 ++++++++++++++++++++ 2 files changed, 73 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/logbook/__init__.py b/homeassistant/components/logbook/__init__.py index 82506c35b3b..d9310da23fd 100644 --- a/homeassistant/components/logbook/__init__.py +++ b/homeassistant/components/logbook/__init__.py @@ -331,7 +331,7 @@ def _get_related_entity_ids(session, entity_filter): query = session.query(States).with_entities(States.entity_id).distinct() - for tryno in range(0, RETRIES): + for tryno in range(RETRIES): try: result = [row.entity_id for row in query if entity_filter(row.entity_id)] @@ -410,11 +410,12 @@ def _get_events(hass, config, start_day, end_day, entity_id=None): def _keep_event(hass, event, entities_filter): - domain, entity_id = None, None + domain = event.data.get(ATTR_DOMAIN) + entity_id = event.data.get("entity_id") + if entity_id: + domain = split_entity_id(entity_id)[0] if event.event_type == EVENT_STATE_CHANGED: - entity_id = event.data.get("entity_id") - if entity_id is None: return False @@ -432,7 +433,6 @@ def _keep_event(hass, event, entities_filter): if new_state.get("state") == old_state.get("state"): return False - domain = split_entity_id(entity_id)[0] attributes = new_state.get("attributes", {}) # Also filter auto groups. @@ -446,13 +446,13 @@ def _keep_event(hass, event, entities_filter): elif event.event_type == EVENT_LOGBOOK_ENTRY: domain = event.data.get(ATTR_DOMAIN) - entity_id = event.data.get(ATTR_ENTITY_ID) elif event.event_type == EVENT_SCRIPT_STARTED: domain = "script" - entity_id = event.data.get(ATTR_ENTITY_ID) - elif event.event_type in hass.data.get(DOMAIN, {}): + elif not entity_id and event.event_type in hass.data.get(DOMAIN, {}): + # If the entity_id isn't described, use the domain that describes + # the event for filtering. domain = hass.data[DOMAIN][event.event_type][0] if not entity_id and domain: diff --git a/tests/components/logbook/test_init.py b/tests/components/logbook/test_init.py index e1341e64e92..660d3182f42 100644 --- a/tests/components/logbook/test_init.py +++ b/tests/components/logbook/test_init.py @@ -1353,3 +1353,68 @@ async def test_logbook_describe_event(hass, hass_client): assert event["name"] == "Test Name" assert event["message"] == "tested a message" assert event["domain"] == "test_domain" + + +async def test_exclude_described_event(hass, hass_client): + """Test exclusions of events that are described by another integration.""" + name = "My Automation Rule" + entity_id = "automation.excluded_rule" + entity_id2 = "automation.included_rule" + entity_id3 = "sensor.excluded_domain" + + await hass.async_add_executor_job(init_recorder_component, hass) + assert await async_setup_component( + hass, + logbook.DOMAIN, + { + logbook.DOMAIN: { + logbook.CONF_EXCLUDE: { + logbook.CONF_DOMAINS: ["sensor"], + logbook.CONF_ENTITIES: [entity_id], + } + } + }, + ) + + with patch( + "homeassistant.util.dt.utcnow", + return_value=dt_util.utcnow() - timedelta(seconds=5), + ): + hass.bus.async_fire( + "some_automation_event", + {logbook.ATTR_NAME: name, logbook.ATTR_ENTITY_ID: entity_id}, + ) + hass.bus.async_fire( + "some_automation_event", + {logbook.ATTR_NAME: name, logbook.ATTR_ENTITY_ID: entity_id2}, + ) + hass.bus.async_fire( + "some_event", {logbook.ATTR_NAME: name, logbook.ATTR_ENTITY_ID: entity_id3} + ) + await hass.async_block_till_done() + await hass.async_add_executor_job( + hass.data[recorder.DATA_INSTANCE].block_till_done + ) + + def _describe(event): + """Describe an event.""" + return { + "name": "Test Name", + "message": "tested a message", + "entity_id": event.data.get(ATTR_ENTITY_ID), + } + + hass.components.logbook.async_describe_event( + "automation", "some_automation_event", _describe + ) + hass.components.logbook.async_describe_event("sensor", "some_event", _describe) + + client = await hass_client() + response = await client.get("/api/logbook") + results = await response.json() + assert len(results) == 1 + event = results[0] + assert event["name"] == "Test Name" + assert event["message"] == "tested a message" + assert event["domain"] == "automation" + assert event["entity_id"] == "automation.included_rule" From 16d045aa9fc2b4ce3aafd1b53061a4f9cda40afe Mon Sep 17 00:00:00 2001 From: Robert Svensson Date: Sat, 13 Jun 2020 12:35:52 +0200 Subject: [PATCH 15/34] Make Axis non-privileged users work again (#36731) --- homeassistant/components/axis/device.py | 11 ++++++++--- homeassistant/components/axis/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/axis/device.py b/homeassistant/components/axis/device.py index 69cab856516..bf1639559f2 100644 --- a/homeassistant/components/axis/device.py +++ b/homeassistant/components/axis/device.py @@ -5,6 +5,7 @@ import asyncio import async_timeout import axis from axis.configuration import Configuration +from axis.errors import Unauthorized from axis.event_stream import OPERATION_INITIALIZED from axis.mqtt import mqtt_json_to_event from axis.streammanager import SIGNAL_PLAYING, STATE_STOPPED @@ -160,9 +161,13 @@ class AxisNetworkDevice: async def use_mqtt(self, hass: HomeAssistant, component: str) -> None: """Set up to use MQTT.""" - status = await hass.async_add_executor_job( - self.api.vapix.mqtt.get_client_status - ) + try: + status = await hass.async_add_executor_job( + self.api.vapix.mqtt.get_client_status + ) + except Unauthorized: + # This means the user has too low privileges + status = {} if status.get("data", {}).get("status", {}).get("state") == "active": self.listeners.append( diff --git a/homeassistant/components/axis/manifest.json b/homeassistant/components/axis/manifest.json index f0d33fb4159..0bc6afd292f 100644 --- a/homeassistant/components/axis/manifest.json +++ b/homeassistant/components/axis/manifest.json @@ -3,7 +3,7 @@ "name": "Axis", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/axis", - "requirements": ["axis==29"], + "requirements": ["axis==30"], "zeroconf": ["_axis-video._tcp.local."], "after_dependencies": ["mqtt"], "codeowners": ["@Kane610"] diff --git a/requirements_all.txt b/requirements_all.txt index 0a5bc621a4c..f4987fbc255 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -306,7 +306,7 @@ avea==1.4 avri-api==0.1.7 # homeassistant.components.axis -axis==29 +axis==30 # homeassistant.components.azure_event_hub azure-eventhub==5.1.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index ea7555942c6..599332d07ba 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -147,7 +147,7 @@ async-upnp-client==0.14.13 av==8.0.2 # homeassistant.components.axis -axis==29 +axis==30 # homeassistant.components.homekit base36==0.1.1 From 48b6f410486f21a47f8b6471e4121a4732bfea07 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 13 Jun 2020 05:32:01 -0500 Subject: [PATCH 16/34] Fix history timezone with postgres and other dbs (#36746) --- homeassistant/components/history/__init__.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/history/__init__.py b/homeassistant/components/history/__init__.py index 4933b00ffde..43ae21fea50 100644 --- a/homeassistant/components/history/__init__.py +++ b/homeassistant/components/history/__init__.py @@ -12,7 +12,11 @@ import voluptuous as vol from homeassistant.components import recorder from homeassistant.components.http import HomeAssistantView -from homeassistant.components.recorder.models import DB_TIMEZONE, States +from homeassistant.components.recorder.models import ( + DB_TIMEZONE, + States, + process_timestamp, +) from homeassistant.components.recorder.util import execute, session_scope from homeassistant.const import ( ATTR_HIDDEN, @@ -304,6 +308,10 @@ def _sorted_states_to_json( elapsed = time.perf_counter() - timer_start _LOGGER.debug("getting %d first datapoints took %fs", len(result), elapsed) + # Called in a tight loop so cache the function + # here + _process_timestamp = process_timestamp + # Append all changes to it for ent_id, group in groupby(states, lambda state: state.entity_id): domain = split_entity_id(ent_id)[0] @@ -347,7 +355,7 @@ def _sorted_states_to_json( ent_results.append( { STATE_KEY: db_state.state, - LAST_CHANGED_KEY: f"{str(db_state.last_changed).replace(' ','T').split('.')[0]}{DB_TIMEZONE}", + LAST_CHANGED_KEY: f"{str(_process_timestamp(db_state.last_changed)).replace(' ','T').split('.')[0]}{DB_TIMEZONE}", } ) prev_state = db_state From 5eb7f5fcf3a7821defd91e9010634e8269d7492b Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Sat, 13 Jun 2020 12:36:16 +0200 Subject: [PATCH 17/34] Update frontend to 20200603.3 (#36751) --- 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 682c3e9b62f..5a0078b8c42 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==20200603.2"], + "requirements": ["home-assistant-frontend==20200603.3"], "dependencies": [ "api", "auth", diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index 1f971ecda57..73c62bfab2c 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -12,7 +12,7 @@ cryptography==2.9.2 defusedxml==0.6.0 distro==1.5.0 hass-nabucasa==0.34.6 -home-assistant-frontend==20200603.2 +home-assistant-frontend==20200603.3 importlib-metadata==1.6.0 jinja2>=2.11.1 netdisco==2.7.0 diff --git a/requirements_all.txt b/requirements_all.txt index f4987fbc255..cbe56487d0a 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -734,7 +734,7 @@ hole==0.5.1 holidays==0.10.2 # homeassistant.components.frontend -home-assistant-frontend==20200603.2 +home-assistant-frontend==20200603.3 # homeassistant.components.zwave homeassistant-pyozw==0.1.10 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 599332d07ba..13311b31fa6 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -321,7 +321,7 @@ hole==0.5.1 holidays==0.10.2 # homeassistant.components.frontend -home-assistant-frontend==20200603.2 +home-assistant-frontend==20200603.3 # homeassistant.components.zwave homeassistant-pyozw==0.1.10 From 12c649ba273fbb7d99bcca74c4005599b9e353a2 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Sat, 13 Jun 2020 12:49:19 +0200 Subject: [PATCH 18/34] Bumped version to 0.111.2 --- homeassistant/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 76b6c8125cf..5ad0c8f3808 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -1,7 +1,7 @@ """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 MINOR_VERSION = 111 -PATCH_VERSION = "1" +PATCH_VERSION = "2" __short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__ = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER = (3, 7, 0) From c37cd835b9a219aa695a941e8f1fbc816ce5d91c Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sun, 14 Jun 2020 07:29:33 +0200 Subject: [PATCH 19/34] Upgrade wled 0.4.3 (#36760) --- homeassistant/components/wled/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/wled/manifest.json b/homeassistant/components/wled/manifest.json index 1653ecf1365..e7cc99813cb 100644 --- a/homeassistant/components/wled/manifest.json +++ b/homeassistant/components/wled/manifest.json @@ -3,7 +3,7 @@ "name": "WLED", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/wled", - "requirements": ["wled==0.4.2"], + "requirements": ["wled==0.4.3"], "zeroconf": ["_wled._tcp.local."], "codeowners": ["@frenck"], "quality_scale": "platinum" diff --git a/requirements_all.txt b/requirements_all.txt index cbe56487d0a..dfb1a8c069c 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2195,7 +2195,7 @@ wirelesstagpy==0.4.0 withings-api==2.1.3 # homeassistant.components.wled -wled==0.4.2 +wled==0.4.3 # homeassistant.components.xbee xbee-helper==0.0.7 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 13311b31fa6..e2995912dd4 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -901,7 +901,7 @@ wiffi==1.0.0 withings-api==2.1.3 # homeassistant.components.wled -wled==0.4.2 +wled==0.4.3 # homeassistant.components.bluesound # homeassistant.components.rest From d0ca8e62a4c37bfa1ed434ceadcae984a76e37c0 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 13 Jun 2020 23:22:16 -0500 Subject: [PATCH 20/34] Fix history graphs with mysql/mariadb (#36769) --- homeassistant/components/history/__init__.py | 10 ++++------ tests/components/history/test_init.py | 5 +---- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/history/__init__.py b/homeassistant/components/history/__init__.py index 43ae21fea50..06b26cce362 100644 --- a/homeassistant/components/history/__init__.py +++ b/homeassistant/components/history/__init__.py @@ -12,11 +12,7 @@ import voluptuous as vol from homeassistant.components import recorder from homeassistant.components.http import HomeAssistantView -from homeassistant.components.recorder.models import ( - DB_TIMEZONE, - States, - process_timestamp, -) +from homeassistant.components.recorder.models import States, process_timestamp from homeassistant.components.recorder.util import execute, session_scope from homeassistant.const import ( ATTR_HIDDEN, @@ -355,7 +351,9 @@ def _sorted_states_to_json( ent_results.append( { STATE_KEY: db_state.state, - LAST_CHANGED_KEY: f"{str(_process_timestamp(db_state.last_changed)).replace(' ','T').split('.')[0]}{DB_TIMEZONE}", + LAST_CHANGED_KEY: _process_timestamp( + db_state.last_changed + ).isoformat(), } ) prev_state = db_state diff --git a/tests/components/history/test_init.py b/tests/components/history/test_init.py index ba0e0b9f1c0..de449b02c74 100644 --- a/tests/components/history/test_init.py +++ b/tests/components/history/test_init.py @@ -222,11 +222,8 @@ class TestComponentHistory(unittest.TestCase): # will happen with encoding a native state input_state = states["media_player.test"][1] orig_last_changed = json.dumps( - process_timestamp(input_state.last_changed.replace(microsecond=0)), - cls=JSONEncoder, + process_timestamp(input_state.last_changed), cls=JSONEncoder, ).replace('"', "") - if orig_last_changed.endswith("+00:00"): - orig_last_changed = f"{orig_last_changed[:-6]}{recorder.models.DB_TIMEZONE}" orig_state = input_state.state states["media_player.test"][1] = { "last_changed": orig_last_changed, From 12781bf8428fa2250acf945622af07a96f93e468 Mon Sep 17 00:00:00 2001 From: N1c093 <59510296+N1c093@users.noreply.github.com> Date: Mon, 15 Jun 2020 18:17:54 +0200 Subject: [PATCH 21/34] Fix nanoleaf attribute when running an effect (#36794) --- homeassistant/components/nanoleaf/light.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/nanoleaf/light.py b/homeassistant/components/nanoleaf/light.py index a7bf75a15d2..ed1e4877a31 100644 --- a/homeassistant/components/nanoleaf/light.py +++ b/homeassistant/components/nanoleaf/light.py @@ -230,7 +230,6 @@ class NanoleafLight(LightEntity): try: self._available = self._light.available self._brightness = self._light.brightness - self._color_temp = self._light.color_temperature self._effects_list = self._light.effects # Nanoleaf api returns non-existent effect named "*Solid*" when light set to solid color. # This causes various issues with scening (see https://github.com/home-assistant/core/issues/36359). @@ -238,7 +237,12 @@ class NanoleafLight(LightEntity): self._effect = ( self._light.effect if self._light.effect in self._effects_list else None ) - self._hs_color = self._light.hue, self._light.saturation + if self._effect is None: + self._color_temp = self._light.color_temperature + self._hs_color = self._light.hue, self._light.saturation + else: + self._color_temp = None + self._hs_color = None self._state = self._light.on except Unavailable as err: _LOGGER.error("Could not update status for %s (%s)", self.name, err) From b45e49902c13623d590cdbe3d13a525cf67c9487 Mon Sep 17 00:00:00 2001 From: "David F. Mulcahey" Date: Sun, 14 Jun 2020 14:47:36 -0400 Subject: [PATCH 22/34] Bump ZHA quirks (#36797) --- homeassistant/components/zha/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/zha/manifest.json b/homeassistant/components/zha/manifest.json index 63a87932ba9..421162eb9dd 100644 --- a/homeassistant/components/zha/manifest.json +++ b/homeassistant/components/zha/manifest.json @@ -6,7 +6,7 @@ "requirements": [ "bellows==0.16.2", "pyserial==3.4", - "zha-quirks==0.0.39", + "zha-quirks==0.0.40", "zigpy-cc==0.4.4", "zigpy-deconz==0.9.2", "zigpy==0.20.4", diff --git a/requirements_all.txt b/requirements_all.txt index dfb1a8c069c..44d991e5923 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2242,7 +2242,7 @@ zengge==0.2 zeroconf==0.27.1 # homeassistant.components.zha -zha-quirks==0.0.39 +zha-quirks==0.0.40 # homeassistant.components.zhong_hong zhong_hong_hvac==1.0.9 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index e2995912dd4..f069566d7c0 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -918,7 +918,7 @@ ya_ma==0.3.8 zeroconf==0.27.1 # homeassistant.components.zha -zha-quirks==0.0.39 +zha-quirks==0.0.40 # homeassistant.components.zha zigpy-cc==0.4.4 From ec65ebacd3641ce0d5106e364128d65314bbc78f Mon Sep 17 00:00:00 2001 From: Tom Harris Date: Mon, 15 Jun 2020 07:49:39 -0400 Subject: [PATCH 23/34] Fix X10 devices and adding default links (#36807) --- homeassistant/components/insteon/insteon_entity.py | 2 +- homeassistant/components/insteon/manifest.json | 2 +- requirements_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/insteon/insteon_entity.py b/homeassistant/components/insteon/insteon_entity.py index 787c64ec841..1626482a80e 100644 --- a/homeassistant/components/insteon/insteon_entity.py +++ b/homeassistant/components/insteon/insteon_entity.py @@ -124,4 +124,4 @@ class InsteonEntity(Entity): async def _async_add_default_links(self): """Add default links between the device and the modem.""" - await self._insteon_device.async_add_default_links(self.address) + await self._insteon_device.async_add_default_links() diff --git a/homeassistant/components/insteon/manifest.json b/homeassistant/components/insteon/manifest.json index 63c258d5f58..70a7375d51f 100644 --- a/homeassistant/components/insteon/manifest.json +++ b/homeassistant/components/insteon/manifest.json @@ -2,6 +2,6 @@ "domain": "insteon", "name": "Insteon", "documentation": "https://www.home-assistant.io/integrations/insteon", - "requirements": ["pyinsteon==1.0.3"], + "requirements": ["pyinsteon==1.0.4"], "codeowners": ["@teharris1"] } \ No newline at end of file diff --git a/requirements_all.txt b/requirements_all.txt index 44d991e5923..8bcacf7330b 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1375,7 +1375,7 @@ pyialarm==0.3 pyicloud==0.9.7 # homeassistant.components.insteon -pyinsteon==1.0.3 +pyinsteon==1.0.4 # homeassistant.components.intesishome pyintesishome==1.7.4 From 3a2138131c1026c54e15c4f125192ad2a1002677 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 15 Jun 2020 15:22:53 -0700 Subject: [PATCH 24/34] Fire config changed event during start (#36812) --- homeassistant/components/hassio/__init__.py | 12 +++++++- homeassistant/core.py | 9 +++--- tests/components/hassio/test_discovery.py | 2 +- tests/test_core.py | 34 +++++++++++++++++++++ 4 files changed, 51 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/hassio/__init__.py b/homeassistant/components/hassio/__init__.py index 0bd766589a1..6939c1f7073 100644 --- a/homeassistant/components/hassio/__init__.py +++ b/homeassistant/components/hassio/__init__.py @@ -249,9 +249,19 @@ async def async_setup(hass, config): await hassio.update_hass_api(config.get("http", {}), refresh_token) + last_timezone = None + async def push_config(_): """Push core config to Hass.io.""" - await hassio.update_hass_timezone(str(hass.config.time_zone)) + nonlocal last_timezone + + new_timezone = str(hass.config.time_zone) + + if new_timezone == last_timezone: + return + + last_timezone = new_timezone + await hassio.update_hass_timezone(new_timezone) hass.bus.async_listen(EVENT_CORE_CONFIG_UPDATE, push_config) diff --git a/homeassistant/core.py b/homeassistant/core.py index eb7457daecb..2350c9a8102 100644 --- a/homeassistant/core.py +++ b/homeassistant/core.py @@ -261,11 +261,11 @@ class HomeAssistant: This method is a coroutine. """ _LOGGER.info("Starting Home Assistant") - self.state = CoreState.starting - setattr(self.loop, "_thread_ident", threading.get_ident()) - self.bus.async_fire(EVENT_HOMEASSISTANT_START) + + self.state = CoreState.starting self.bus.async_fire(EVENT_CORE_CONFIG_UPDATE) + self.bus.async_fire(EVENT_HOMEASSISTANT_START) try: # Only block for EVENT_HOMEASSISTANT_START listener @@ -291,8 +291,9 @@ class HomeAssistant: return self.state = CoreState.running - _async_create_timer(self) + self.bus.async_fire(EVENT_CORE_CONFIG_UPDATE) self.bus.async_fire(EVENT_HOMEASSISTANT_STARTED) + _async_create_timer(self) def add_job(self, target: Callable[..., Any], *args: Any) -> None: """Add job to the executor pool. diff --git a/tests/components/hassio/test_discovery.py b/tests/components/hassio/test_discovery.py index 9d148745f18..1cfb5ed9f7b 100644 --- a/tests/components/hassio/test_discovery.py +++ b/tests/components/hassio/test_discovery.py @@ -104,7 +104,7 @@ async def test_hassio_discovery_startup_done(hass, aioclient_mock, hassio_client await async_setup_component(hass, "hassio", {}) await hass.async_block_till_done() - assert aioclient_mock.call_count == 3 + assert aioclient_mock.call_count == 2 assert mock_mqtt.called mock_mqtt.assert_called_with( { diff --git a/tests/test_core.py b/tests/test_core.py index 9fc257eaf2d..c4079328f1f 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -22,12 +22,14 @@ from homeassistant.const import ( EVENT_HOMEASSISTANT_CLOSE, EVENT_HOMEASSISTANT_FINAL_WRITE, EVENT_HOMEASSISTANT_START, + EVENT_HOMEASSISTANT_STARTED, EVENT_HOMEASSISTANT_STOP, EVENT_SERVICE_REGISTERED, EVENT_SERVICE_REMOVED, EVENT_STATE_CHANGED, EVENT_TIME_CHANGED, EVENT_TIMER_OUT_OF_SYNC, + MATCH_ALL, __version__, ) import homeassistant.core as ha @@ -1333,3 +1335,35 @@ async def test_additional_data_in_core_config(hass, hass_storage): } await config.async_load() assert config.location_name == "Test Name" + + +async def test_start_events(hass): + """Test events fired when starting Home Assistant.""" + hass.state = ha.CoreState.not_running + + all_events = [] + + @ha.callback + def capture_events(ev): + all_events.append(ev.event_type) + + hass.bus.async_listen(MATCH_ALL, capture_events) + + core_states = [] + + @ha.callback + def capture_core_state(_): + core_states.append(hass.state) + + hass.bus.async_listen(EVENT_CORE_CONFIG_UPDATE, capture_core_state) + + await hass.async_start() + await hass.async_block_till_done() + + assert all_events == [ + EVENT_CORE_CONFIG_UPDATE, + EVENT_HOMEASSISTANT_START, + EVENT_CORE_CONFIG_UPDATE, + EVENT_HOMEASSISTANT_STARTED, + ] + assert core_states == [ha.CoreState.starting, ha.CoreState.running] From 61d6bd0cb58204bb1c18229db3016c1d3cb03f95 Mon Sep 17 00:00:00 2001 From: kennedyshead Date: Mon, 15 Jun 2020 14:14:48 +0200 Subject: [PATCH 25/34] Bump aioasuswrt to 1.2.6 (#36820) Co-authored-by: magnusknutas --- homeassistant/components/asuswrt/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/asuswrt/manifest.json b/homeassistant/components/asuswrt/manifest.json index 274060404b7..b7fe1054ffc 100644 --- a/homeassistant/components/asuswrt/manifest.json +++ b/homeassistant/components/asuswrt/manifest.json @@ -2,6 +2,6 @@ "domain": "asuswrt", "name": "ASUSWRT", "documentation": "https://www.home-assistant.io/integrations/asuswrt", - "requirements": ["aioasuswrt==1.2.5"], + "requirements": ["aioasuswrt==1.2.6"], "codeowners": ["@kennedyshead"] } diff --git a/requirements_all.txt b/requirements_all.txt index 8bcacf7330b..9c4ada0268e 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -156,7 +156,7 @@ aio_georss_gdacs==0.3 aioambient==1.1.1 # homeassistant.components.asuswrt -aioasuswrt==1.2.5 +aioasuswrt==1.2.6 # homeassistant.components.aws aiobotocore==0.11.1 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index f069566d7c0..7dd4eea8262 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -66,7 +66,7 @@ aio_georss_gdacs==0.3 aioambient==1.1.1 # homeassistant.components.asuswrt -aioasuswrt==1.2.5 +aioasuswrt==1.2.6 # homeassistant.components.aws aiobotocore==0.11.1 From 108082fd076620071ce846eeeb981cf314955424 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 15 Jun 2020 16:30:40 -0700 Subject: [PATCH 26/34] Fix cloudhooks coming in for non existing webhooks (#36836) * Fix cloudhooks coming in for non existing webhooks * Fix tests" --- homeassistant/components/cloud/client.py | 3 +- homeassistant/components/webhook/__init__.py | 11 ++++-- homeassistant/util/aiohttp.py | 24 +++++++++++++ .../ambiclimate/test_config_flow.py | 6 ++-- tests/components/cloud/test_client.py | 36 +++++++++++++++++-- tests/util/test_aiohttp.py | 6 ++-- 6 files changed, 76 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/cloud/client.py b/homeassistant/components/cloud/client.py index a17f536db72..5a70948555d 100644 --- a/homeassistant/components/cloud/client.py +++ b/homeassistant/components/cloud/client.py @@ -19,7 +19,7 @@ from homeassistant.helpers.typing import HomeAssistantType from homeassistant.util.aiohttp import MockRequest from . import alexa_config, google_config, utils -from .const import DISPATCHER_REMOTE_UPDATE +from .const import DISPATCHER_REMOTE_UPDATE, DOMAIN from .prefs import CloudPreferences _LOGGER = logging.getLogger(__name__) @@ -182,6 +182,7 @@ class CloudClient(Interface): headers=payload["headers"], method=payload["method"], query_string=payload["query"], + mock_source=DOMAIN, ) response = await self._hass.components.webhook.async_handle_webhook( diff --git a/homeassistant/components/webhook/__init__.py b/homeassistant/components/webhook/__init__.py index 47358d5008e..99226cabaa7 100644 --- a/homeassistant/components/webhook/__init__.py +++ b/homeassistant/components/webhook/__init__.py @@ -12,6 +12,7 @@ from homeassistant.const import HTTP_OK from homeassistant.core import callback from homeassistant.helpers.network import get_url from homeassistant.loader import bind_hass +from homeassistant.util.aiohttp import MockRequest _LOGGER = logging.getLogger(__name__) @@ -76,9 +77,15 @@ async def async_handle_webhook(hass, webhook_id, request): # Always respond successfully to not give away if a hook exists or not. if webhook is None: - peer_ip = request[KEY_REAL_IP] + if isinstance(request, MockRequest): + received_from = request.mock_source + else: + received_from = request[KEY_REAL_IP] + _LOGGER.warning( - "Received message for unregistered webhook %s from %s", webhook_id, peer_ip + "Received message for unregistered webhook %s from %s", + webhook_id, + received_from, ) # Look at content to provide some context for received webhook # Limit to 64 chars to avoid flooding the log diff --git a/homeassistant/util/aiohttp.py b/homeassistant/util/aiohttp.py index d43929dd777..36cdc0f25e2 100644 --- a/homeassistant/util/aiohttp.py +++ b/homeassistant/util/aiohttp.py @@ -1,4 +1,5 @@ """Utilities to help with aiohttp.""" +import io import json from typing import Any, Dict, Optional from urllib.parse import parse_qsl @@ -8,12 +9,29 @@ from multidict import CIMultiDict, MultiDict from homeassistant.const import HTTP_OK +class MockStreamReader: + """Small mock to imitate stream reader.""" + + def __init__(self, content: bytes) -> None: + """Initialize mock stream reader.""" + self._content = io.BytesIO(content) + + async def read(self, byte_count: int = -1) -> bytes: + """Read bytes.""" + if byte_count == -1: + return self._content.read() + return self._content.read(byte_count) + + class MockRequest: """Mock an aiohttp request.""" + mock_source: Optional[str] = None + def __init__( self, content: bytes, + mock_source: str, method: str = "GET", status: int = HTTP_OK, headers: Optional[Dict[str, str]] = None, @@ -27,6 +45,7 @@ class MockRequest: self.headers: CIMultiDict[str] = CIMultiDict(headers or {}) self.query_string = query_string or "" self._content = content + self.mock_source = mock_source @property def query(self) -> "MultiDict[str]": @@ -38,6 +57,11 @@ class MockRequest: """Return the body as text.""" return self._content.decode("utf-8") + @property + def content(self) -> MockStreamReader: + """Return the body as text.""" + return MockStreamReader(self._content) + async def json(self) -> Any: """Return the body as JSON.""" return json.loads(self._text) diff --git a/tests/components/ambiclimate/test_config_flow.py b/tests/components/ambiclimate/test_config_flow.py index 2ff7942f8dd..35c2ef69bb3 100644 --- a/tests/components/ambiclimate/test_config_flow.py +++ b/tests/components/ambiclimate/test_config_flow.py @@ -114,12 +114,14 @@ async def test_view(hass): """Test view.""" hass.config_entries.flow.async_init = AsyncMock() - request = aiohttp.MockRequest(b"", query_string="code=test_code") + request = aiohttp.MockRequest( + b"", query_string="code=test_code", mock_source="test" + ) request.app = {"hass": hass} view = config_flow.AmbiclimateAuthCallbackView() assert await view.get(request) == "OK!" - request = aiohttp.MockRequest(b"", query_string="") + request = aiohttp.MockRequest(b"", query_string="", mock_source="test") request.app = {"hass": hass} view = config_flow.AmbiclimateAuthCallbackView() assert await view.get(request) == "No code" diff --git a/tests/components/cloud/test_client.py b/tests/components/cloud/test_client.py index 21eb59ddc03..d0d9c4b25b7 100644 --- a/tests/components/cloud/test_client.py +++ b/tests/components/cloud/test_client.py @@ -141,7 +141,7 @@ async def test_handler_google_actions_disabled(hass, mock_cloud_fixture): assert resp["payload"]["errorCode"] == "deviceTurnedOff" -async def test_webhook_msg(hass): +async def test_webhook_msg(hass, caplog): """Test webhook msg.""" with patch("hass_nabucasa.Cloud.start"): setup = await async_setup_component(hass, "cloud", {"cloud": {}}) @@ -151,7 +151,14 @@ async def test_webhook_msg(hass): await cloud.client.prefs.async_initialize() await cloud.client.prefs.async_update( cloudhooks={ - "hello": {"webhook_id": "mock-webhook-id", "cloudhook_id": "mock-cloud-id"} + "mock-webhook-id": { + "webhook_id": "mock-webhook-id", + "cloudhook_id": "mock-cloud-id", + }, + "no-longere-existing": { + "webhook_id": "no-longere-existing", + "cloudhook_id": "mock-nonexisting-id", + }, } ) @@ -183,6 +190,31 @@ async def test_webhook_msg(hass): assert len(received) == 1 assert await received[0].json() == {"hello": "world"} + # Non existing webhook + caplog.clear() + + response = await cloud.client.async_webhook_message( + { + "cloudhook_id": "mock-nonexisting-id", + "body": '{"nonexisting": "payload"}', + "headers": {"content-type": "application/json"}, + "method": "POST", + "query": None, + } + ) + + assert response == { + "status": 200, + "body": None, + "headers": {"Content-Type": "application/octet-stream"}, + } + + assert ( + "Received message for unregistered webhook no-longere-existing from cloud" + in caplog.text + ) + assert '{"nonexisting": "payload"}' in caplog.text + async def test_google_config_expose_entity(hass, mock_cloud_setup, mock_cloud_login): """Test Google config exposing entity method uses latest config.""" diff --git a/tests/util/test_aiohttp.py b/tests/util/test_aiohttp.py index 870ed81c2e2..e7b5ef73c32 100644 --- a/tests/util/test_aiohttp.py +++ b/tests/util/test_aiohttp.py @@ -5,14 +5,14 @@ from homeassistant.util import aiohttp async def test_request_json(): """Test a JSON request.""" - request = aiohttp.MockRequest(b'{"hello": 2}') + request = aiohttp.MockRequest(b'{"hello": 2}', mock_source="test") assert request.status == 200 assert await request.json() == {"hello": 2} async def test_request_text(): """Test a JSON request.""" - request = aiohttp.MockRequest(b"hello", status=201) + request = aiohttp.MockRequest(b"hello", status=201, mock_source="test") assert request.status == 201 assert await request.text() == "hello" @@ -20,7 +20,7 @@ async def test_request_text(): async def test_request_post_query(): """Test a JSON request.""" request = aiohttp.MockRequest( - b"hello=2&post=true", query_string="get=true", method="POST" + b"hello=2&post=true", query_string="get=true", method="POST", mock_source="test" ) assert request.method == "POST" assert await request.post() == {"hello": "2", "post": "true"} From 0127974f09fbf3c5dd62069544ab35fd4e42dfba Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 15 Jun 2020 16:35:41 -0700 Subject: [PATCH 27/34] Bumped version to 0.111.3 --- homeassistant/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 5ad0c8f3808..093b39d6d1b 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -1,7 +1,7 @@ """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 MINOR_VERSION = 111 -PATCH_VERSION = "2" +PATCH_VERSION = "3" __short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__ = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER = (3, 7, 0) From f823afeadc38473218ec475393e455d2e3c8c760 Mon Sep 17 00:00:00 2001 From: fb22 <4872297+fb22@users.noreply.github.com> Date: Tue, 16 Jun 2020 12:42:12 +0200 Subject: [PATCH 28/34] Fix llamalab_automate notify priority (#36845) --- homeassistant/components/llamalab_automate/notify.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/llamalab_automate/notify.py b/homeassistant/components/llamalab_automate/notify.py index b4ed9a4e628..b94ffa099be 100644 --- a/homeassistant/components/llamalab_automate/notify.py +++ b/homeassistant/components/llamalab_automate/notify.py @@ -51,7 +51,7 @@ class AutomateNotificationService(BaseNotificationService): # Extract params from data dict data = dict(kwargs.get(ATTR_DATA) or {}) - priority = data.get(ATTR_PRIORITY, "Normal") + priority = data.get(ATTR_PRIORITY, "normal").lower() _LOGGER.debug( "Sending to: %s, %s, prio: %s", self._recipient, str(self._device), priority From ec69edcb7993635da10c1fc1416665f126f9436a Mon Sep 17 00:00:00 2001 From: Robert Svensson Date: Wed, 17 Jun 2020 20:07:19 +0200 Subject: [PATCH 29/34] Bump Axis dependency to fix issue where ports dont initialize (#36860) --- homeassistant/components/axis/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/axis/manifest.json b/homeassistant/components/axis/manifest.json index 0bc6afd292f..ea5b024e8fb 100644 --- a/homeassistant/components/axis/manifest.json +++ b/homeassistant/components/axis/manifest.json @@ -3,7 +3,7 @@ "name": "Axis", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/axis", - "requirements": ["axis==30"], + "requirements": ["axis==31"], "zeroconf": ["_axis-video._tcp.local."], "after_dependencies": ["mqtt"], "codeowners": ["@Kane610"] diff --git a/requirements_all.txt b/requirements_all.txt index 9c4ada0268e..e1c732d6cc9 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -306,7 +306,7 @@ avea==1.4 avri-api==0.1.7 # homeassistant.components.axis -axis==30 +axis==31 # homeassistant.components.azure_event_hub azure-eventhub==5.1.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 7dd4eea8262..df92f752097 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -147,7 +147,7 @@ async-upnp-client==0.14.13 av==8.0.2 # homeassistant.components.axis -axis==30 +axis==31 # homeassistant.components.homekit base36==0.1.1 From 625c2aa19d1fa49baf1f201ae3bd0b25e154df86 Mon Sep 17 00:00:00 2001 From: Fredrik Erlandsson Date: Wed, 17 Jun 2020 16:53:29 +0200 Subject: [PATCH 30/34] Fix Daikin zeroconf discovery flow error (#36868) --- homeassistant/components/daikin/config_flow.py | 2 +- tests/components/daikin/test_config_flow.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/daikin/config_flow.py b/homeassistant/components/daikin/config_flow.py index 67411bfdff0..a26e2e1c05b 100644 --- a/homeassistant/components/daikin/config_flow.py +++ b/homeassistant/components/daikin/config_flow.py @@ -128,7 +128,7 @@ class FlowHandler(config_entries.ConfigFlow): async def async_step_zeroconf(self, discovery_info): """Prepare configuration for a discovered Daikin device.""" - _LOGGER.debug("Zeroconf discovery_info: %s", discovery_info) + _LOGGER.debug("Zeroconf user_input: %s", discovery_info) devices = Discovery.poll(discovery_info[CONF_HOST]) await self.async_set_unique_id(next(iter(devices.values()))[KEY_MAC]) self._abort_if_unique_id_configured() diff --git a/tests/components/daikin/test_config_flow.py b/tests/components/daikin/test_config_flow.py index 9702e5ad2c7..f8d13bdd355 100644 --- a/tests/components/daikin/test_config_flow.py +++ b/tests/components/daikin/test_config_flow.py @@ -45,9 +45,9 @@ def mock_daikin(): def mock_daikin_discovery(): """Mock pydaikin Discovery.""" with patch("homeassistant.components.daikin.config_flow.Discovery") as Discovery: - Discovery.poll = PropertyMock( - return_value={"127.0.01": {"mac": "AABBCCDDEEFF", "id": "test"}} - ) + Discovery().poll.return_value = { + "127.0.01": {"mac": "AABBCCDDEEFF", "id": "test"} + } yield Discovery From 7547a924794a08213d929fa26121a2ed62cfb9dd Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 17 Jun 2020 12:12:50 -0700 Subject: [PATCH 31/34] Upgrade pymetno (#36880) --- homeassistant/components/met/manifest.json | 2 +- homeassistant/components/norway_air/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/met/manifest.json b/homeassistant/components/met/manifest.json index baf2c1b7e3e..f4f32a5097f 100644 --- a/homeassistant/components/met/manifest.json +++ b/homeassistant/components/met/manifest.json @@ -3,6 +3,6 @@ "name": "Meteorologisk institutt (Met.no)", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/met", - "requirements": ["pyMetno==0.4.6"], + "requirements": ["pyMetno==0.5.1"], "codeowners": ["@danielhiversen"] } diff --git a/homeassistant/components/norway_air/manifest.json b/homeassistant/components/norway_air/manifest.json index 515d4eea6bb..d815482c3f0 100644 --- a/homeassistant/components/norway_air/manifest.json +++ b/homeassistant/components/norway_air/manifest.json @@ -2,6 +2,6 @@ "domain": "norway_air", "name": "Om Luftkvalitet i Norge (Norway Air)", "documentation": "https://www.home-assistant.io/integrations/norway_air", - "requirements": ["pyMetno==0.4.6"], + "requirements": ["pyMetno==0.5.1"], "codeowners": [] } diff --git a/requirements_all.txt b/requirements_all.txt index e1c732d6cc9..a0adb50f656 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1170,7 +1170,7 @@ pyHS100==0.3.5 # homeassistant.components.met # homeassistant.components.norway_air -pyMetno==0.4.6 +pyMetno==0.5.1 # homeassistant.components.rfxtrx pyRFXtrx==0.25 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index df92f752097..c932bc872d1 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -503,7 +503,7 @@ pyHS100==0.3.5 # homeassistant.components.met # homeassistant.components.norway_air -pyMetno==0.4.6 +pyMetno==0.5.1 # homeassistant.components.rfxtrx pyRFXtrx==0.25 From 3e14b2dc612d6d08322d3862dcd8cf465e3286c8 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 17 Jun 2020 12:53:30 -0700 Subject: [PATCH 32/34] Bumped version to 0.111.4 --- homeassistant/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 093b39d6d1b..d73e7139ff6 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -1,7 +1,7 @@ """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 MINOR_VERSION = 111 -PATCH_VERSION = "3" +PATCH_VERSION = "4" __short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__ = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER = (3, 7, 0) From 098d82f4d3a6f51250402a8c1bb671e5c9002bbc Mon Sep 17 00:00:00 2001 From: Phil Bruckner Date: Wed, 17 Jun 2020 15:40:04 -0500 Subject: [PATCH 33/34] Fix yr HTTP error handling (#36889) --- homeassistant/components/yr/sensor.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/yr/sensor.py b/homeassistant/components/yr/sensor.py index 58a04ce62a6..8d7a91f24da 100644 --- a/homeassistant/components/yr/sensor.py +++ b/homeassistant/components/yr/sensor.py @@ -21,7 +21,7 @@ from homeassistant.const import ( DEVICE_CLASS_HUMIDITY, DEVICE_CLASS_PRESSURE, DEVICE_CLASS_TEMPERATURE, - HTTP_OK, + HTTP_BAD_REQUEST, PRESSURE_HPA, SPEED_METERS_PER_SECOND, TEMP_CELSIUS, @@ -187,7 +187,7 @@ class YrData: websession = async_get_clientsession(self.hass) with async_timeout.timeout(10): resp = await websession.get(self._url, params=self._urlparams) - if resp.status != HTTP_OK: + if resp.status >= HTTP_BAD_REQUEST: try_again(f"{resp.url} returned {resp.status}") return text = await resp.text() From b4b2302e04a0d31f8c443ef545fcd1ec0d3e6834 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 17 Jun 2020 16:23:10 -0700 Subject: [PATCH 34/34] Fix test --- homeassistant/components/daikin/config_flow.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/daikin/config_flow.py b/homeassistant/components/daikin/config_flow.py index a26e2e1c05b..70553df2d91 100644 --- a/homeassistant/components/daikin/config_flow.py +++ b/homeassistant/components/daikin/config_flow.py @@ -129,7 +129,7 @@ class FlowHandler(config_entries.ConfigFlow): async def async_step_zeroconf(self, discovery_info): """Prepare configuration for a discovered Daikin device.""" _LOGGER.debug("Zeroconf user_input: %s", discovery_info) - devices = Discovery.poll(discovery_info[CONF_HOST]) + devices = Discovery().poll(discovery_info[CONF_HOST]) await self.async_set_unique_id(next(iter(devices.values()))[KEY_MAC]) self._abort_if_unique_id_configured() self.host = discovery_info[CONF_HOST]